Performing Basic Print Management Example for C#
//Performing Basic Print Management Example
private void PerformBasicPM()
{
LTDICPRNSCULib.LEADDicomPrintSCU objPrintSCU = new LTDICPRNSCULib.LEADDicomPrintSCU();
objPrintSCU.Timeout
= 60; // 60 seconds
objPrintSCU.EnableMethodErrors
= false;
// Establish the Association short
nRet = 0;
nRet = objPrintSCU.Associate("10.0.2.20",
7104, "PrintSCP", "PrintSCU", (LTDICPRNSCULib.DicomClassEnum)
( (short)LTDICPRNSCULib.DicomClassEnum.PRNSCU_BASIC_GRAYSCALE_PM_META_SOP_CLASS
+ (short)LTDICPRNSCULib.DicomClassEnum.PRNSCU_BASIC_COLOR_PM_META_SOP_CLASS
+ (short)LTDICPRNSCULib.DicomClassEnum.PRNSCU_BASIC_ANNOTATION_BOX_SOP_CLASS
+ (short)LTDICPRNSCULib.DicomClassEnum.PRNSCU_BASIC_PRINT_IMAGE_OVERLAY_BOX_SOP_CLASS
+ (short)LTDICPRNSCULib.DicomClassEnum.PRNSCU_PRESENTATION_LUT_SOP_CLASS
+ (short)LTDICPRNSCULib.DicomClassEnum.PRNSCU_PRINT_JOB_SOP_CLASS + (short)LTDICPRNSCULib.DicomClassEnum.PRNSCU_PRINTER_CONFIGURATION_RETRIEVAL_SOP_CLASS));
if (nRet == (short)LTDicomKernelLib.DicomErrorCodes.DICOM_ERROR_PRINTSCU_ASSOCIATE_RQ_REJECTED)
{
MessageBox.Show("Source = "
+ objPrintSCU.AssociateRejectSource
+ ", " + "Reason = " + objPrintSCU.AssociateRejectReason,
"Association Request was Rejected");
return;
}
else
if (nRet != (short)LTDicomKernelLib.DicomErrorCodes.DICOM_SUCCESS)
{
MessageBox.Show("Error code: "
+ nRet, "Failed to Establish the Association");
return;
}
// Abort the Association if none of the Basic Print Management
Meta SOP Classes
// is supported on the Association
if (objPrintSCU.IsClassSupported(LTDICPRNSCULib.DicomClassEnum.PRNSCU_BASIC_GRAYSCALE_PM_META_SOP_CLASS)
== false & objPrintSCU.IsClassSupported(LTDICPRNSCULib.DicomClassEnum.PRNSCU_BASIC_COLOR_PM_META_SOP_CLASS)
== false)
{
objPrintSCU.AbortAssociation();
return;
}
// Display some printer info
//GetPrinterInfo objPrintSCU
// Display some printer configuration info
//GetPrinterConfigInfo objPrintSCU
// Create a Film Session
objPrintSCU.FilmSession.IncludedParameters
= 0;
objPrintSCU.FilmSession.Create(false);
MessageBox.Show(objPrintSCU.FilmSession.SOPInstanceUID,
"Film Session SOP Instance UID");
// Update the Number of Copies and Print Priority of
the Film Session
objPrintSCU.FilmSession.IncludedParameters
= (LTDICPRNSCULib.FilmSessionParameterEnum)((short)LTDICPRNSCULib.FilmSessionParameterEnum.FS_NUMBER_OF_COPIES
+ (short)LTDICPRNSCULib.FilmSessionParameterEnum.FS_PRINT_PRIORITY);
objPrintSCU.FilmSession.NumberOfCopies
= 1;
objPrintSCU.FilmSession.PrintPriority
= "MED";
objPrintSCU.FilmSession.Update();
objPrintSCU.FilmBox.IncludedParameters
= 0;
if (objPrintSCU.FilmBox.MainObject.IsClassSupported(LTDICPRNSCULib.DicomClassEnum.PRNSCU_BASIC_ANNOTATION_BOX_SOP_CLASS))
{
objPrintSCU.FilmBox.IncludedParameters
= (LTDICPRNSCULib.FilmBoxParameterEnum)((short)objPrintSCU.FilmBox.IncludedParameters
+ (short)LTDICPRNSCULib.FilmBoxParameterEnum.FB_ANNOTATION_DISPLAY_FORMAT_ID);
objPrintSCU.FilmBox.AnnotationDisplayFormatID
= "SomeID";
}
// Create a Film Box
objPrintSCU.FilmBox.Create("STANDARD\\1,1");
MessageBox.Show(objPrintSCU.FilmBox.SOPInstanceUID,
"Film Box SOP Instance UID");
string sPresLUTInstanceUID = null;
// Create a Presentation LUT
if (objPrintSCU.PresentationLUT.MainObject.IsClassSupported(LTDICPRNSCULib.DicomClassEnum.PRNSCU_PRESENTATION_LUT_SOP_CLASS))
{
if (objPrintSCU.PresentationLUT.Create("C:\\PresLUT.dic","IDENTITY")
== (short)LTDicomKernelLib.DicomErrorCodes.DICOM_SUCCESS)
{
sPresLUTInstanceUID
= objPrintSCU.PresentationLUT.GetSOPInstanceUID();
MessageBox.Show(sPresLUTInstanceUID,
"Pres LUT SOP Instance UID");
}
}
if (sPresLUTInstanceUID.Length!= 0)
{
// Update the Film Box to reference
the Presentation LUT we just created
objPrintSCU.FilmBox.IncludedParameters
= LTDICPRNSCULib.FilmBoxParameterEnum.FB_REF_PRES_LUT_INSTANCE_UID;
objPrintSCU.FilmBox.RefPresLUTInstanceUID
= sPresLUTInstanceUID;
objPrintSCU.FilmBox.Update();
}
string sOverlayBoxInstanceUID = null;
// Create an Image Overlay Box
if (objPrintSCU.ImageOverlayBox.MainObject.IsClassSupported(LTDICPRNSCULib.DicomClassEnum.PRNSCU_BASIC_PRINT_IMAGE_OVERLAY_BOX_SOP_CLASS))
{
objPrintSCU.ImageOverlayBox.OverlayOriginRow =
1;
objPrintSCU.ImageOverlayBox.OverlayOriginColumn
= 1;
objPrintSCU.ImageOverlayBox.IncludedParameters
= 0;
if (objPrintSCU.ImageOverlayBox.Create("C:\\Overlay.dic")
== (short)LTDicomKernelLib.DicomErrorCodes.DICOM_SUCCESS)
{
sOverlayBoxInstanceUID
= objPrintSCU.ImageOverlayBox.GetSOPInstanceUID();
MessageBox.Show(sOverlayBoxInstanceUID,
"Image Overlay Box SOP Instance UID");
}
}
// Update the Image Box. Since the Image Display Format
of the Film Box was
// set to "STANDARD\1,1", then we are supposed
to have one Image Box created
// by the Print SCP.
if (objPrintSCU.ImageBoxes.Count
!= 0)
{
MessageBox.Show(objPrintSCU.ImageBoxes.Item(0).SOPInstanceUID,
"Image Box SOP Instance UID");
objPrintSCU.ImageBoxes.Item(0).IncludedParameters
= 0;
if (sOverlayBoxInstanceUID.Length !=
0)
{
objPrintSCU.ImageBoxes.Item(0).IncludedParameters
= (LTDICPRNSCULib.ImageBoxParameterEnum)((short)objPrintSCU.ImageBoxes.Item(0).IncludedParameters
+ (short)LTDICPRNSCULib.ImageBoxParameterEnum.IB_REF_IMAGE_OVERLAY_BOX_INSTANCE_UID);
objPrintSCU.ImageBoxes.Item(0).RefImageOverlayBoxInstanceUID
= sOverlayBoxInstanceUID;
}
objPrintSCU.ImageBoxes.Item(0).Update("C:\\Image.dic");
}
// Update the Annotation Boxes (if there are any)
foreach (LTDICPRNSCULib.LAnnotationBox AnnBox in objPrintSCU.AnnotationBoxes)
{
AnnBox.TextString
= "Some Text";
AnnBox.Update(true);
}
// Change the Overlay Origin of the Image Overlay Box
referenced by the
// Image Box
if (sOverlayBoxInstanceUID.Length != 0 )
{
objPrintSCU.ImageOverlayBox.IncludedParameters
= LTDICPRNSCULib.OverlayBoxParameterEnum.OB_OVERLAY_ORIGIN;
objPrintSCU.ImageOverlayBox.OverlayOriginRow =
10;
objPrintSCU.ImageOverlayBox.OverlayOriginColumn
= 10;
objPrintSCU.ImageOverlayBox.Update(sOverlayBoxInstanceUID,
null);
}
string sPrintJobInstanceUID = null;
// Print the Film Session (or the Film Box; there is
no difference since we
// have a single Film Box in the Film Session)
if (true)
{
objPrintSCU.FilmSession.PrintSession();
sPrintJobInstanceUID = objPrintSCU.FilmSession.PrintJobSOPInstanceUID;
}
else
{
objPrintSCU.FilmBox.PrintBox();
sPrintJobInstanceUID = objPrintSCU.FilmBox.PrintJobSOPInstanceUID;
}
// Display some info about the Print Job
if (objPrintSCU.IsClassSupported(LTDICPRNSCULib.DicomClassEnum.PRNSCU_PRINT_JOB_SOP_CLASS))
{
//GetPrintJobInfo objPrintSCU, sPrintJobInstanceUID
}
// Delete the Film Box (anyway, it would be deleted when
the Film Session
// is deleted)
objPrintSCU.FilmBox.Delete();
// Delete the Film Session
objPrintSCU.FilmSession.Delete();
// Delete the Presentation LUT
if (sPresLUTInstanceUID.Length != 0 )
objPrintSCU.PresentationLUT.Delete(sPresLUTInstanceUID);
// Delete the Image Overlay Box
if (sOverlayBoxInstanceUID.Length != 0)
objPrintSCU.ImageOverlayBox.Delete(sOverlayBoxInstanceUID);
// Release the Association and close the connection
objPrintSCU.ReleaseAssociation();
}