SendCMoveRequest Example for VB.NET

'LEADDICOMNet1 is a predefined LEADDicomNet object
'LEADDICOM1 is a DICOM Dataset defined outside this method
'This example uses the predefined variable "gszGetFile" of type "String"
Private Sub TestSendCMoveRequest ( )
Const UID_NM_IMAGE_STORAGE As String = "1.2.840.10008.5.1.4.1.1.20"
   ' Nuclear Medicine Image Storage
   Dim nRet As Short
   Dim szClassUID As String
   Dim nVR As Short
   Dim hPDU As Integer
   Dim nID As Short
   'send a Move Request to the server
   'gszGetFile is a predefined variable that will be used when we get
   'the C-STORE-RQ event to store the file
   gszGetFile = InputBox("Select filename for retrieved data set", "Move Request", "d:\temp\move_request.dic")
   If (Len(gszGetFile) < 1) Then Exit Sub
   szClassUID = InputBox("What class do you wish to move?", "Move Request", UID_NM_IMAGE_STORAGE)
   If (Len(szClassUID) < 1) Then Exit Sub
   'create the data set that encodes the identifier to be matched
   LEADDICOM1.InitDS(LTDICLib.DicomClassConstants.DICOM_CLASS_UNKNOWN, 0)
   'add the required elements
   LEADDICOM1.FindTag(LTDICLib.DicomDataSetTagConstants1.TAG_QUERY_RETRIEVE_LEVEL)
   nVR = LEADDICOM1.CurrentTag.VR
   LEADDICOM1.InsertElement(False, LTDICLib.DicomDataSetTagConstants1.TAG_QUERY_RETRIEVE_LEVEL, nVR, False, 0)
   LEADDICOM1.StringValueCount = 1
   LEADDICOM1.StringValues(0) = "PATIENT" LEADDICOM1.SetStringValue(1)
   LEADDICOM1.FindTag(LTDICLib.DicomDataSetTagConstants2.TAG_PATIENT_NAME)
   LEADDICOM1.InsertElement(False, LTDICLib.DicomDataSetTagConstants2.TAG_PATIENT_NAME, LEADDICOM1.CurrentTag.VR, False, 0)
   'add the optional fields that we want returned
   LEADDICOM1.FindTag(LTDICLib.DicomDataSetTagConstants2.TAG_PATIENT_ID)
   LEADDICOM1.InsertElement(False, LTDICLib.DicomDataSetTagConstants2.TAG_PATIENT_ID, LEADDICOM1.CurrentTag.VR, False, 0)
   LEADDICOM1.FindTag(LTDICLib.DicomDataSetTagConstants2.TAG_PATIENT_BIRTH_DATE)
   nVR = LEADDICOM1.CurrentTag.VR
   LEADDICOM1.InsertElement(False, LTDICLib.DicomDataSetTagConstants2.TAG_PATIENT_BIRTH_DATE, nVR, False, 0)
   LEADDICOM1.FindTag(LTDICLib.DicomDataSetTagConstants2.TAG_PATIENT_SEX)
   nVR = LEADDICOM1.CurrentTag.VR
   LEADDICOM1.InsertElement(False,     LTDICLib.DicomDataSetTagConstants2.TAG_PATIENT_SEX, nVR, False, 0)
   LEADDICOM1.FindTag(LTDICLib.DicomDataSetTagConstants5.TAG_NUMBER_OF_PATIENT_RELATED_INSTANCES)
   nVR = LEADDICOM1.CurrentTag.VR
   LEADDICOM1.InsertElement(False, LTDICLib.DicomDataSetTagConstants5.TAG_NUMBER_OF_PATIENT_RELATED_INSTANCES, nVR, False, 0)
   hPDU = LEADDICOMNet1.GetAssociate(LEADDICOMNet1.hNet)
   'now, send a request
   nID = LEADDICOMNet1.FindPresentationAbstract(hPDU, szClassUID)
   If (nID = 0) Then
      nRet = LEADDICOM1.FindUID(szClassUID)
      If (nRet = 0) Then
         MessageBox.Show("Abstract Syntax, " & LEADDICOM1.CurrentUID.Name & ", Not Supported by Association!")
      Else
         MessageBox.Show("Abstract Syntax, " & szClassUID & ", Not Supported by Association!")
      End If
      Exit Sub
   End If
   'we are asking the Called AE to move the SOP Instance to ourselves
   LEADDICOMNet1.SendCMoveRequest(LEADDICOMNet1.hNet, nID, 1, szClassUID, LTDICLib.DicomCommandSetMessagePriorities.COMMAND_PRIORITY_MEDIUM, "MI_TEST", LEADDICOM1.hDicomDS)
   'we now must wait for the response and for the C-STORE sub-operations
End Sub