Package com.pixelmed.network

## Class MoveSOPClassSCU

- java.lang.Object
- - com.pixelmed.dicom.SOPClass
  - - com.pixelmed.network.MoveSOPClassSCU

-     public class MoveSOPClassSCU
      extends SOPClass

  This class implements the SCU role of C-MOVE SOP Classes.

  The class has no methods other than the constructor (and a main method for testing). The constructor establishes an association, sends the C-MOVE request, and releases the association.

  Debugging messages with a varying degree of verbosity can be activated.

  For example, to have MOVESCU command MOVESCP to move a single image instance to STORESCP:

      try {
          AttributeList identifier = new AttributeList();
          { AttributeTag t = TagFromName.QueryRetrieveLevel; Attribute a = new CodeStringAttribute(t); a.addValue("IMAGE"); identifier.put(t,a); }
          { AttributeTag t = TagFromName.StudyInstanceUID; Attribute a = new UniqueIdentifierAttribute(t); a.addValue("1.3.6.1.4.1.5962.1.2.0.1064923879.2077.3232235877"); identifier.put(t,a); }
          { AttributeTag t = TagFromName.SeriesInstanceUID; Attribute a = new UniqueIdentifierAttribute(t); a.addValue("1.3.6.1.4.1.5962.1.3.0.0.1064923879.2077.3232235877"); identifier.put(t,a); }
          { AttributeTag t = TagFromName.SOPInstanceUID; Attribute a = new UniqueIdentifierAttribute(t); a.addValue("1.3.6.1.4.1.5962.1.1.0.0.0.1064923879.2077.3232235877"); identifier.put(t,a); }
          new MoveSOPClassSCU("theirhost","104","MOVESCP","MOVESCU","STORESCP",SOPClass.StudyRootQueryRetrieveInformationModelMove,identifier,0);
      }
      catch (Exception e) {
          e.printStackTrace(System.err);
      }

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `protected class` | `MoveSOPClassSCU.CMoveResponseHandler` |

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected int` | `debugLevel` |
    `protected MoveSOPClassSCU.CMoveResponseHandler` | `responseHandler` |

    - ### Fields inherited from class com.pixelmed.dicom.SOPClass

      `AcquisitionContextSRStorage, AmbulatoryECGStorage, arrayOfQuerySOPClasses, arrayOfRetrieveWithGetSOPClasses, arrayOfRetrieveWithMoveSOPClasses, arrayOfStorageSOPClasses, ArterialPulseWaveformStorage, AudioSRStorageTrialRetired, AutorefractionMeasurementsStorage, BasicStructuredDisplayStorage, BasicTextSRStorage, BasicVoiceStorage, BlendingSoftcopyPresentationStateStorage, BreastProjectionXRayImageStorageForPresentation, BreastProjectionXRayImageStorageForProcessing, BreastTomosynthesisImageStorage, CardiacElectrophysiologyWaveformStorage, ChestCADSRStorage, ColonCADSRStorage, ColorPaletteInformationModelFind, ColorPaletteInformationModelGet, ColorPaletteInformationModelMove, ColorPaletteStorage, ColorSoftcopyPresentationStateStorage, CompositingPlanarMPRVolumetricPresentationStateStorage, Comprehensive3DSRStorage, ComprehensiveSRStorage, ComprehensiveSRStorageTrialRetired, ComputedRadiographyImageStorage, CornealTopographyMapStorage, CTImageStorage, DeformableSpatialRegistrationStorage, DetailSRStorageTrialRetired, DICONDEEddyCurrentImageStorage, DICONDEEddyCurrentMultiframeImageStorage, DICOS2DAITStorage, DICOS3DAITStorage, DICOSCTImageStorage, DICOSDigitalXRayImageStorageForPresentation, DICOSDigitalXRayImageStorageForProcessing, DICOSQuadrupoleResonanceStorage, DICOSThreatDetectionReportStorage, DigitalIntraoralXRayImageStorageForPresentation, DigitalIntraoralXRayImageStorageForProcessing, DigitalMammographyXRayImageStorageForPresentation, DigitalMammographyXRayImageStorageForProcessing, DigitalXRayImageStorageForPresentation, DigitalXRayImageStorageForProcessing, EncapsulatedCDAStorage, EncapsulatedPDFStorage, EnhancedCTImageStorage, EnhancedMRColorImageStorage, EnhancedMRImageStorage, EnhancedPETImageStorage, EnhancedSRStorage, EnhancedUSVolumeStorage, EnhancedXAImageStorage, EnhancedXRFImageStorage, ExtensibleSRStorage, GeneralAudioWaveformStorage, GeneralECGStorage, GenericImplantTemplateStorage, GrayscalePlanarMPRVolumetricPresentationStateStorage, GrayscaleSoftcopyPresentationStateStorage, HemodynamicWaveformStorage, ImplantAssemblyTemplateStorage, ImplantationPlanSRStorage, ImplantTemplateGroupStorage, IntraocularLensCalculationsStorage, IVOCTImageStorageForPresentation, IVOCTImageStorageForProcessing, KeratometryMeasurementsStorage, KeyObjectSelectionDocumentStorage, LegacyConvertedEnhancedCTImageStorage, LegacyConvertedEnhancedMRImageStorage, LegacyConvertedEnhancedPETImageStorage, LensometryMeasurementsStorage, MacularGridThicknessAndVolumeReportStorage, MammographyCADSRStorage, MediaStorageDirectoryStorage, MRImageStorage, MRSpectroscopyStorage, MultiframeGrayscaleByteSecondaryCaptureImageStorage, MultiframeGrayscaleWordSecondaryCaptureImageStorage, MultiframeSingleBitSecondaryCaptureImageStorage, MultiframeTrueColorSecondaryCaptureImageStorage, NuclearMedicineImageStorage, NuclearMedicineImageStorageRetired, OphthalmicAxialMeasurementsStorage, OphthalmicPhotography16BitImageStorage, OphthalmicPhotography8BitImageStorage, OphthalmicThicknessMapStorage, OphthalmicTomographyImageStorage, OphthalmicVisualFieldStaticPerimetryMeasurementsStorage, ParametricMapStorage, PatientRootQueryRetrieveInformationModelFind, PatientRootQueryRetrieveInformationModelGet, PatientRootQueryRetrieveInformationModelMove, PatientStudyOnlyQueryRetrieveInformationModelFind, PatientStudyOnlyQueryRetrieveInformationModelGet, PatientStudyOnlyQueryRetrieveInformationModelMove, PETImageStorage, PrivateAcusonStructuredReportDetailStorage, PrivateERADPracticeBuilderReportDictationStorage, PrivateERADPracticeBuilderReportTextStorage, PrivateFujiCRImageStorage, PrivateGE3DModelStorage, PrivateGECollageStorage, PrivateGEDicomCTImageInfoObject, PrivateGEDicomDisplayImageInfoObject, PrivateGEDicomMRImageInfoObject, PrivateGEeNTEGRAProtocolOrNMGenieStorage, PrivateGEPETRawDataStorage, PrivateGERTPlanStorage, PrivatePhilips3DObject2Storage, PrivatePhilips3DObjectStorage, PrivatePhilips3DPresentationStateStorage, PrivatePhilipsCompositeObjectStorage, PrivatePhilipsCTSyntheticImageStorage, PrivatePhilipsCXImageStorage, PrivatePhilipsCXSyntheticImageStorage, PrivatePhilipsHPLive3D01Storage, PrivatePhilipsHPLive3D02Storage, PrivatePhilipsLiveRunStorage, PrivatePhilipsMRCardio2Storage, PrivatePhilipsMRCardioAnalysis2Storage, PrivatePhilipsMRCardioAnalysisStorage, PrivatePhilipsMRCardioProfileStorage, PrivatePhilipsMRCardioStorage, PrivatePhilipsMRColorImageStorage, PrivatePhilipsMRExamcardStorage, PrivatePhilipsMRSeriesDataStorage, PrivatePhilipsMRSpectrumStorage, PrivatePhilipsMRSyntheticImageStorage, PrivatePhilipsPerfusionImageStorage, PrivatePhilipsPerfusionStorage, PrivatePhilipsReconstructionStorage, PrivatePhilipsRunStorage, PrivatePhilipsSpecialisedXAStorage, PrivatePhilipsSurface2Storage, PrivatePhilipsSurfaceStorage, PrivatePhilipsVolume2Storage, PrivatePhilipsVolumeSetStorage, PrivatePhilipsVolumeStorage, PrivatePhilipsVRMLStorage, PrivatePhilipsXRayMFStorage, PrivatePixelMedFloatingPointImageStorage, PrivatePixelMedLegacyConvertedEnhancedCTImageStorage, PrivatePixelMedLegacyConvertedEnhancedMRImageStorage, PrivatePixelMedLegacyConvertedEnhancedPETImageStorage, PrivatePMODMultiframeImageStorage, PrivateSiemensAXFrameSetsStorage, PrivateSiemensCSANonImageStorage, PrivateSiemensCTMRVolumeStorage, PrivateTomTecAnnotationStorage, PrivateToshibaUSImageStorage, ProcedureLogStorage, PseudoColorSoftcopyPresentationStateStorage, RadiopharmaceuticalRadiationDoseSRStorage, RawDataStorage, RealWorldValueMappingStorage, RespiratoryWaveformStorage, RTBeamsDeliveryInstructionStorage, RTBeamsDeliveryInstructionStorageTrial, RTBeamsTreatmentRecordStorage, RTBrachyTreatmentRecordStorage, RTDoseStorage, RTImageStorage, RTIonBeamsTreatmentRecordStorage, RTIonPlanStorage, RTPlanStorage, RTStructureSetStorage, RTTreatmentSummaryRecordStorage, SecondaryCaptureImageStorage, SegmentationStorage, SpatialFiducialsStorage, SpatialRegistrationStorage, SpectaclePrescriptionReportStorage, StandaloneCurveStorage, StandaloneModalityLUTStorage, StandaloneOverlayStorage, StandalonePETCurveStorage, StandaloneVOILUTStorage, StereometricRelationshipStorage, StudyRootQueryRetrieveInformationModelFind, StudyRootQueryRetrieveInformationModelGet, StudyRootQueryRetrieveInformationModelMove, SubjectiveRefractionMeasurementsStorage, SurfaceScanMeshStorage, SurfaceScanPointCloudStorage, SurfaceSegmentationStorage, TextSRStorageTrialRetired, TractographyResultsStorage, TwelveLeadECGStorage, UltrasoundImageStorage, UltrasoundImageStorageRetired, UltrasoundMultiframeImageStorage, UltrasoundMultiframeImageStorageRetired, Verification, VideoEndoscopicImageStorage, VideoMicroscopicImageStorage, VideoPhotographicImageStorage, VisibleLightDraftImageStorage, VisibleLightEndoscopicImageStorage, VisibleLightMicroscopicImageStorage, VisibleLightMultiFrameDraftImageStorage, VisibleLightPhotographicImageStorage, VisibleLightSlideCoordinatesMicroscopicImageStorage, VisualAcuityMeasurementsStorage, VLWholeSlideMicroscopyImageStorage, XAXRFGrayscaleSoftcopyPresentationStateStorage, XRay3DAngiographicImageStorage, XRay3DCraniofacialImageStorage, XRayAngiographicBiplaneImageStorage, XRayAngiographicImageStorage, XRayRadiationDoseSRStorage, XRayRadioFlouroscopicImageStorage`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `MoveSOPClassSCU​(Association association, java.lang.String moveDestination, java.lang.String affectedSOPClass, AttributeList identifier, int debugLevel)` |
    `MoveSOPClassSCU​(java.lang.String hostname, int port, java.lang.String calledAETitle, java.lang.String callingAETitle, java.lang.String moveDestination, java.lang.String affectedSOPClass, AttributeList identifier, int debugLevel)` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `int` | `getStatus()` |
    `static Association` | `getSuitableAssociation​(java.lang.String hostname, int port, java.lang.String calledAETitle, java.lang.String callingAETitle, java.lang.String affectedSOPClass, int debugLevel)` |
    `static void` | `main​(java.lang.String[] arg)` | For testing, establish an association to the specified AE and perform a retrieval using a C-MOVE request.
    `void` | `performMove​(Association association, java.lang.String moveDestination, java.lang.String affectedSOPClass, AttributeList identifier)` |

    - ### Methods inherited from class com.pixelmed.dicom.SOPClass

      `getPlausibleStandardSOPClassUIDsForModality, getSetOfStorageSOPClasses, isCompositeInstanceQuery, isCompositeInstanceRetrieve, isCompositeInstanceRetrieveWithGet, isCompositeInstanceRetrieveWithMove, isDICONDEImageStorage, isDICOSImageStorage, isDICOSNonImageStorage, isDirectory, isEncapsulatedDocument, isEnhancedMultiframeImageStorage, isEnhancedMultiframeImageWithPlanePositionOrientationAndMeasuresStorage, isImageStorage, isKeyObjectSelectionDocument, isMiscellaneousCompositeNonImageStorage, isMiscellaneousNonCompositeStorage, isMultiframeSecondaryCaptureImageStorage, isNonImageStorage, isOphthalmicMeasurementStorage, isPatientRootCompositeInstanceQuery, isPatientRootCompositeInstanceRetrieve, isPatientRootCompositeInstanceRetrieveWithGet, isPatientRootCompositeInstanceRetrieveWithMove, isPatientStudyOnlyCompositeInstanceQuery, isPatientStudyOnlyCompositeInstanceRetrieve, isPatientStudyOnlyCompositeInstanceRetrieveWithGet, isPatientStudyOnlyCompositeInstanceRetrieveWithMove, isPresentationState, isPrivateImageStorage, isPrivateNonImageStorage, isRadiotherapy, isRawData, isSecondaryCaptureImageStorage, isSpectroscopy, isStandalone, isStandardImageStorage, isStorage, isStructuredReport, isStudyRootCompositeInstanceQuery, isStudyRootCompositeInstanceRetrieve, isStudyRootCompositeInstanceRetrieveWithGet, isStudyRootCompositeInstanceRetrieveWithMove, isTrialRetiredStructuredReport, isVerification, isWaveform`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### debugLevel

          protected int debugLevel

    - #### responseHandler

          protected MoveSOPClassSCU.CMoveResponseHandler responseHandler

  - ### Constructor Detail

    - #### MoveSOPClassSCU

          public MoveSOPClassSCU​(Association association,
                                 java.lang.String moveDestination,
                                 java.lang.String affectedSOPClass,
                                 AttributeList identifier,
                                 int debugLevel)
                          throws DicomNetworkException,
                                 DicomException,
                                 java.io.IOException

      Parameters:
        `association` - the already established Association to use
        `moveDestination` - the AE Title of the Storage AE to which the instances are to be sent
        `affectedSOPClass` - the SOP Class defining which retrieve model, e.g. `SOPClass.StudyRootQueryRetrieveInformationModelMove`
        `identifier` - the list of unique keys and move level
        `debugLevel` - zero for no debugging messages, higher values more verbose messages
      Throws:
        `java.io.IOException`
        `DicomException`
        `DicomNetworkException`

    - #### MoveSOPClassSCU

          public MoveSOPClassSCU​(java.lang.String hostname,
                                 int port,
                                 java.lang.String calledAETitle,
                                 java.lang.String callingAETitle,
                                 java.lang.String moveDestination,
                                 java.lang.String affectedSOPClass,
                                 AttributeList identifier,
                                 int debugLevel)
                          throws DicomNetworkException,
                                 DicomException,
                                 java.io.IOException

      Parameters:
        `hostname` - their hostname or IP address
        `port` - their port
        `calledAETitle` - their AE Title
        `callingAETitle` - our AE Title
        `moveDestination` - the AE Title of the Storage AE to which the instances are to be sent
        `affectedSOPClass` - the SOP Class defining which retrieve model, e.g. `SOPClass.StudyRootQueryRetrieveInformationModelMove`
        `identifier` - the list of unique keys and move level
        `debugLevel` - zero for no debugging messages, higher values more verbose messages
      Throws:
        `java.io.IOException`
        `DicomException`
        `DicomNetworkException`

  - ### Method Detail

    - #### getStatus

          public int getStatus()

    - #### getSuitableAssociation

          public static Association getSuitableAssociation​(java.lang.String hostname,
                                                           int port,
                                                           java.lang.String calledAETitle,
                                                           java.lang.String callingAETitle,
                                                           java.lang.String affectedSOPClass,
                                                           int debugLevel)
                                                    throws DicomNetworkException,
                                                           DicomException,
                                                           java.io.IOException

      Parameters:
        `hostname` - their hostname or IP address
        `port` - their port
        `calledAETitle` - their AE Title
        `callingAETitle` - our AE Title
        `affectedSOPClass` - the SOP Class defining which retrieve model, e.g. `SOPClass.StudyRootQueryRetrieveInformationModelMove`
        `debugLevel` - zero for no debugging messages, higher values more verbose messages
      Throws:
        `java.io.IOException`
        `DicomException`
        `DicomNetworkException`

    - #### performMove

          public void performMove​(Association association,
                                  java.lang.String moveDestination,
                                  java.lang.String affectedSOPClass,
                                  AttributeList identifier)
                           throws DicomNetworkException,
                                  DicomException,
                                  java.io.IOException,
                                  AReleaseException

      Parameters:
        `association` - the already established Association to use
        `moveDestination` - the AE Title of the Storage AE to which the instances are to be sent
        `affectedSOPClass` - the SOP Class defining which retrieve model, e.g. `SOPClass.StudyRootQueryRetrieveInformationModelMove`
        `identifier` - the list of matching and return keys
      Throws:
        `java.io.IOException`
        `DicomException`
        `DicomNetworkException`
        `AReleaseException`

    - #### main

          public static void main​(java.lang.String[] arg)

      For testing, establish an association to the specified AE and perform a retrieval using a C-MOVE request.

      Parameters:
        `arg` - array of seven, eight or nine strings - their hostname, their port, their AE Title, our AE Title, the destination AE, the move level (STUDY, SERIES or IMAGE), then the Study Instance UID, optionally the Series Instance UID (if SERIES) and optionally the SOP Instance UID (if IMAGE)