Performing Basic Print Management Example for VB.NET
Private Sub PerformBasicPM()
Dim objPrintSCU As New LTDICPRNSCULib.LEADDicomPrintSCU
objPrintSCU.Timeout
= 60 ' 60 seconds
objPrintSCU.EnableMethodErrors
= False
' Establish the Association
Dim nRet As Short
nRet = objPrintSCU.Associate("10.0.2.20",
7104, "PrintSCP", "PrintSCU", LTDICPRNSCULib.DicomClassEnum.PRNSCU_BASIC_GRAYSCALE_PM_META_SOP_CLASS
+ LTDICPRNSCULib.DicomClassEnum.PRNSCU_BASIC_COLOR_PM_META_SOP_CLASS +
LTDICPRNSCULib.DicomClassEnum.PRNSCU_BASIC_ANNOTATION_BOX_SOP_CLASS +
LTDICPRNSCULib.DicomClassEnum.PRNSCU_BASIC_PRINT_IMAGE_OVERLAY_BOX_SOP_CLASS
+ LTDICPRNSCULib.DicomClassEnum.PRNSCU_PRESENTATION_LUT_SOP_CLASS + LTDICPRNSCULib.DicomClassEnum.PRNSCU_PRINT_JOB_SOP_CLASS
+ LTDICPRNSCULib.DicomClassEnum.PRNSCU_PRINTER_CONFIGURATION_RETRIEVAL_SOP_CLASS)
If nRet = LTDicomKernelLib.DicomErrorCodes.DICOM_ERROR_PRINTSCU_ASSOCIATE_RQ_REJECTED
Then
MessageBox.Show("Source = "
& objPrintSCU.AssociateRejectSource
& ", " & "Reason = " & objPrintSCU.AssociateRejectReason,
"Association Request was Rejected")
Exit Sub
ElseIf nRet <> LTDicomKernelLib.DicomErrorCodes.DICOM_SUCCESS
Then
MessageBox.Show("Error code: "
& nRet, "Failed to Establish the Association")
Exit Sub
End If
' 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 And objPrintSCU.IsClassSupported(LTDICPRNSCULib.DicomClassEnum.PRNSCU_BASIC_COLOR_PM_META_SOP_CLASS)
= False Then
objPrintSCU.AbortAssociation()
Exit Sub
End If
' Display some printer info
'GetPrinterInfo objPrintSCU
' Display some printer configuration info
'GetPrinterConfigInfo objPrintSCU
' Create a Film Session
With objPrintSCU.FilmSession
.IncludedParameters
= 0
.Create()
MessageBox.Show(.SOPInstanceUID, "Film
Session SOP Instance UID")
End With
' Update the Number of Copies and Print Priority of the
Film Session
With objPrintSCU.FilmSession
.IncludedParameters = LTDICPRNSCULib.FilmSessionParameterEnum.FS_NUMBER_OF_COPIES
+ LTDICPRNSCULib.FilmSessionParameterEnum.FS_PRINT_PRIORITY
.NumberOfCopies
= 1
.PrintPriority
= "MED"
.Update()
End With
With objPrintSCU.FilmBox
.IncludedParameters
= 0
If .MainObject.IsClassSupported(LTDICPRNSCULib.DicomClassEnum.PRNSCU_BASIC_ANNOTATION_BOX_SOP_CLASS)
Then
.IncludedParameters
= .IncludedParameters + LTDICPRNSCULib.FilmBoxParameterEnum.FB_ANNOTATION_DISPLAY_FORMAT_ID
.AnnotationDisplayFormatID
= "SomeID"
End If
' Create a Film Box
.Create()
MessageBox.Show(.SOPInstanceUID, "Film
Box SOP Instance UID")
End With
Dim sPresLUTInstanceUID As String
' Create a Presentation LUT
With objPrintSCU.PresentationLUT
If .MainObject.IsClassSupported(LTDICPRNSCULib.DicomClassEnum.PRNSCU_PRESENTATION_LUT_SOP_CLASS)
Then
If .Create("C:\PresLUT.dic")
= LTDicomKernelLib.DicomErrorCodes.DICOM_SUCCESS Then
sPresLUTInstanceUID
= .GetSOPInstanceUID()
MessageBox.Show(sPresLUTInstanceUID,
"Pres LUT SOP Instance UID")
End If
End If
End With
If Len(sPresLUTInstanceUID) Then
' Update the Film Box to reference
the Presentation LUT we just created
With objPrintSCU.FilmBox
.IncludedParameters
= LTDICPRNSCULib.FilmBoxParameterEnum.FB_REF_PRES_LUT_INSTANCE_UID
.RefPresLUTInstanceUID
= sPresLUTInstanceUID
.Update()
End With
End If
Dim sOverlayBoxInstanceUID As String
' Create an Image Overlay Box
With objPrintSCU.ImageOverlayBox
If .MainObject.IsClassSupported(LTDICPRNSCULib.DicomClassEnum.PRNSCU_BASIC_PRINT_IMAGE_OVERLAY_BOX_SOP_CLASS)
Then
.OverlayOriginRow
= 1
.OverlayOriginColumn
= 1
.IncludedParameters
= 0
If .Create("C:\Overlay.dic")
= LTDicomKernelLib.DicomErrorCodes.DICOM_SUCCESS Then
sOverlayBoxInstanceUID
= .GetSOPInstanceUID()
MessageBox.Show(sOverlayBoxInstanceUID,
"Image Overlay Box SOP Instance UID")
End If
End If
End With
' 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
Then
With objPrintSCU.ImageBoxes.Item(0)
MessageBox.Show(.SOPInstanceUID,
"Image Box SOP Instance UID")
.IncludedParameters
= 0
If Len(sOverlayBoxInstanceUID)
Then
.IncludedParameters
= .IncludedParameters + LTDICPRNSCULib.ImageBoxParameterEnum.IB_REF_IMAGE_OVERLAY_BOX_INSTANCE_UID
.RefImageOverlayBoxInstanceUID
= sOverlayBoxInstanceUID
End If
.Update("C:\Image.dic")
End With
End If
' Update the Annotation Boxes (if there are any)
Dim AnnBox As LTDICPRNSCULib.LAnnotationBox
For Each AnnBox In objPrintSCU.AnnotationBoxes
AnnBox.TextString
= "Some Text"
AnnBox.Update()
Next AnnBox
' Change the Overlay Origin of the Image Overlay Box
referenced by the
' Image Box
If Len(sOverlayBoxInstanceUID) Then
With objPrintSCU.ImageOverlayBox
.IncludedParameters
= LTDICPRNSCULib.OverlayBoxParameterEnum.OB_OVERLAY_ORIGIN
.OverlayOriginRow
= 10
.OverlayOriginColumn
= 10
.Update(sOverlayBoxInstanceUID)
End With
End If
Dim sPrintJobInstanceUID As String
' 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 Then
With objPrintSCU.FilmSession
.PrintSession()
sPrintJobInstanceUID
= .PrintJobSOPInstanceUID
End With
Else
With objPrintSCU.FilmBox
.PrintBox()
sPrintJobInstanceUID
= .PrintJobSOPInstanceUID
End With
End If
' Display some info about the Print Job
If (objPrintSCU.IsClassSupported(LTDICPRNSCULib.DicomClassEnum.PRNSCU_PRINT_JOB_SOP_CLASS))
Then
'GetPrintJobInfo objPrintSCU, sPrintJobInstanceUID
End If
' 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 Len(sPresLUTInstanceUID) Then
objPrintSCU.PresentationLUT.Delete(sPresLUTInstanceUID)
End If
' Delete the Image Overlay Box
If Len(sOverlayBoxInstanceUID) Then
objPrintSCU.ImageOverlayBox.Delete(sOverlayBoxInstanceUID)
End If
' Release the Association and close the connection
objPrintSCU.ReleaseAssociation()
End Sub