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) {
        slf4jlogger.error("",e);
    }

## Nested Class Summary

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

## Field Summary

Fields
Modifier and Type
Field
Description
`protected MoveSOPClassSCU.CMoveResponseHandler`
`responseHandler`

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

`AcquisitionContextSRStorage, AdvancedBlendingPresentationStateStorage, AmbulatoryECGStorage, arrayOfQuerySOPClasses, arrayOfRetrieveWithGetSOPClasses, arrayOfRetrieveWithMoveSOPClasses, arrayOfStorageSOPClasses, ArterialPulseWaveformStorage, AudioSRStorageTrialRetired, AutorefractionMeasurementsStorage, BasicStructuredDisplayStorage, BasicTextSRStorage, BasicVoiceStorage, BlendingSoftcopyPresentationStateStorage, BodyPositionWaveformStorage, BreastProjectionXRayImageStorageForPresentation, BreastProjectionXRayImageStorageForProcessing, BreastTomosynthesisImageStorage, CardiacElectrophysiologyWaveformStorage, CArmPhotonElectronRadiationRecordStorage, CArmPhotonElectronRadiationStorage, ChestCADSRStorage, ColonCADSRStorage, ColorPaletteInformationModelFind, ColorPaletteInformationModelGet, ColorPaletteInformationModelMove, ColorPaletteStorage, ColorSoftcopyPresentationStateStorage, CompositingPlanarMPRVolumetricPresentationStateStorage, Comprehensive3DSRStorage, ComprehensiveSRStorage, ComprehensiveSRStorageTrialRetired, ComputedRadiographyImageStorage, CornealTopographyMapStorage, CTImageStorage, DeformableSpatialRegistrationStorage, DermoscopicPhotographyImageStorage, DetailSRStorageTrialRetired, DICONDEEddyCurrentImageStorage, DICONDEEddyCurrentMultiframeImageStorage, DICOS2DAITStorage, DICOS3DAITStorage, DICOSCTImageStorage, DICOSDigitalXRayImageStorageForPresentation, DICOSDigitalXRayImageStorageForProcessing, DICOSQuadrupoleResonanceStorage, DICOSThreatDetectionReportStorage, DigitalIntraoralXRayImageStorageForPresentation, DigitalIntraoralXRayImageStorageForProcessing, DigitalMammographyXRayImageStorageForPresentation, DigitalMammographyXRayImageStorageForProcessing, DigitalXRayImageStorageForPresentation, DigitalXRayImageStorageForProcessing, ElectromyogramWaveformStorage, ElectrooculogramWaveformStorage, EncapsulatedCDAStorage, EncapsulatedPDFStorage, EncapsulatedSTLStorage, 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, MultichannelRespiratoryWaveformStorage, MultiframeGrayscaleByteSecondaryCaptureImageStorage, MultiframeGrayscaleWordSecondaryCaptureImageStorage, MultiframeSingleBitSecondaryCaptureImageStorage, MultiframeTrueColorSecondaryCaptureImageStorage, MultipleVolumeRenderingVolumetricPresentationStateStorage, NuclearMedicineImageStorage, NuclearMedicineImageStorageRetired, OphthalmicAxialMeasurementsStorage, OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage, OphthalmicOpticalCoherenceTomographyEnFaceImageStorage, OphthalmicPhotography16BitImageStorage, OphthalmicPhotography8BitImageStorage, OphthalmicThicknessMapStorage, OphthalmicTomographyImageStorage, OphthalmicVisualFieldStaticPerimetryMeasurementsStorage, ParametricMapStorage, PatientRadiationDoseSRStorage, PatientRootQueryRetrieveInformationModelFind, PatientRootQueryRetrieveInformationModelGet, PatientRootQueryRetrieveInformationModelMove, PatientStudyOnlyQueryRetrieveInformationModelFind, PatientStudyOnlyQueryRetrieveInformationModelGet, PatientStudyOnlyQueryRetrieveInformationModelMove, PETImageStorage, PrivateAcusonStructuredReportDetailStorage, PrivateAgfaBasicAttributePresentationStateStorage, PrivateDcm4cheEncapsulatedDocumentStorage, PrivateDcm4cheUpgradedCTImageStorage, PrivateDcm4cheUpgradedMRImageStorage, PrivateDcm4cheUpgradedPETImageStorage, PrivateERADPracticeBuilderReportDictationStorage, PrivateERADPracticeBuilderReportTextStorage, PrivateFujiCRImageStorage, PrivateGE3DModelStorage, PrivateGECollageStorage, PrivateGEDicomCTImageInfoObject, PrivateGEDicomDisplayImageInfoObject, PrivateGEDicomMRImageInfoObject, PrivateGEeNTEGRAProtocolOrNMGenieStorage, PrivateGEPETRawDataStorage, PrivateGERTPlanStorage, PrivateMedicalInsight3DSoftcopyPresentationStateStorage, 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, RoboticArmRadiationStorage, RoboticRadiationRecordStorage, RoutineScalpElectroencephalogramWaveformStorage, RTBeamsDeliveryInstructionStorage, RTBeamsDeliveryInstructionStorageTrial, RTBeamsTreatmentRecordStorage, RTBrachyTreatmentRecordStorage, RTDoseStorage, RTImageStorage, RTIonBeamsTreatmentRecordStorage, RTIonPlanStorage, RTPhysicianIntentStorage, RTPlanStorage, RTRadiationRecordSetStorage, RTRadiationSalvageRecordStorage, RTRadiationSetStorage, RTSegmentAnnotationStorage, RTStructureSetStorage, RTTreatmentSummaryRecordStorage, SecondaryCaptureImageStorage, SegmentationStorage, SegmentedVolumeRenderingVolumetricPresentationStateStorage, SimplifiedAdultEchoSRStorage, SleepElectroencephalogramWaveformStorage, SpatialFiducialsStorage, SpatialRegistrationStorage, SpectaclePrescriptionReportStorage, StandaloneCurveStorage, StandaloneModalityLUTStorage, StandaloneOverlayStorage, StandalonePETCurveStorage, StandaloneVOILUTStorage, StereometricRelationshipStorage, StudyRootQueryRetrieveInformationModelFind, StudyRootQueryRetrieveInformationModelGet, StudyRootQueryRetrieveInformationModelMove, SubjectiveRefractionMeasurementsStorage, SurfaceScanMeshStorage, SurfaceScanPointCloudStorage, SurfaceSegmentationStorage, TextSRStorageTrialRetired, TomotherapeuticRadiationRecordStorage, TomotherapeuticRadiationStorage, TractographyResultsStorage, TwelveLeadECGStorage, UltrasoundImageStorage, UltrasoundImageStorageRetired, UltrasoundMultiframeImageStorage, UltrasoundMultiframeImageStorageRetired, Verification, VideoEndoscopicImageStorage, VideoMicroscopicImageStorage, VideoPhotographicImageStorage, VisibleLightDraftImageStorage, VisibleLightEndoscopicImageStorage, VisibleLightMicroscopicImageStorage, VisibleLightMultiFrameDraftImageStorage, VisibleLightPhotographicImageStorage, VisibleLightSlideCoordinatesMicroscopicImageStorage, VisualAcuityMeasurementsStorage, VLWholeSlideMicroscopyImageStorage, VolumeRenderingVolumetricPresentationStateStorage, WideFieldOphthalmicPhotography3DCoordinatesImageStorage, WideFieldOphthalmicPhotographyStereographicProjectionImageStorage, XAXRFGrayscaleSoftcopyPresentationStateStorage, XRay3DAngiographicImageStorage, XRay3DCraniofacialImageStorage, XRayAngiographicBiplaneImageStorage, XRayAngiographicImageStorage, XRayRadiationDoseSRStorage, XRayRadioFlouroscopicImageStorage`

## Constructor Summary

Constructors
Constructor
Description
`MoveSOPClassSCU(Association association, String moveDestination, String affectedSOPClass, AttributeList identifier)`
`MoveSOPClassSCU(Association association, String moveDestination, String affectedSOPClass, AttributeList identifier, int debugLevel)`
`MoveSOPClassSCU(String hostname, int port, String calledAETitle, String callingAETitle, String moveDestination, String affectedSOPClass, AttributeList identifier)`
`MoveSOPClassSCU(String hostname, int port, String calledAETitle, String callingAETitle, String moveDestination, String affectedSOPClass, AttributeList identifier, int debugLevel)`

## Method Summary

Modifier and Type
Method
Description
`int`
`getStatus()`
`static Association`
`getSuitableAssociation(String hostname, int port, String calledAETitle, String callingAETitle, String affectedSOPClass)`
`static Association`
`getSuitableAssociation(String hostname, int port, String calledAETitle, String callingAETitle, String affectedSOPClass, int debugLevel)`
`static void`
`main(String[] arg)`
For testing, establish an association to the specified AE and perform a retrieval using a C-MOVE request.
`void`
`performMove(Association association, String moveDestination, 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, isImageWithFrameOfReferenceStorage, isImageWithSynchronizationStorage, isKeyObjectSelectionDocument, isLegacyConvertedEnhancedImageStorage, isMiscellaneousCompositeNonImageStorage, isMiscellaneousNonCompositeStorage, isMultiframeImageStorage, 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, isTiledImageStorage, isTrialRetiredStructuredReport, isVerification, isWaveform, selectModalityForSOPClass`

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

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

## Field Details

### responseHandler

protected MoveSOPClassSCU.CMoveResponseHandler responseHandler

## Constructor Details

### MoveSOPClassSCU

public MoveSOPClassSCU(Association association, String moveDestination, String affectedSOPClass, AttributeList identifier, int debugLevel) throws DicomNetworkException, DicomException, 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` - ignored
Throws:
  `IOException`
  `DicomException`
  `DicomNetworkException`

### MoveSOPClassSCU

public MoveSOPClassSCU(Association association, String moveDestination, String affectedSOPClass, AttributeList identifier) throws DicomNetworkException, DicomException, 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
Throws:
  `IOException`
  `DicomException`
  `DicomNetworkException`

### MoveSOPClassSCU

public MoveSOPClassSCU(String hostname, int port, String calledAETitle, String callingAETitle, String moveDestination, String affectedSOPClass, AttributeList identifier, int debugLevel) throws DicomNetworkException, DicomException, 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` - ignored
Throws:
  `IOException`
  `DicomException`
  `DicomNetworkException`

### MoveSOPClassSCU

public MoveSOPClassSCU(String hostname, int port, String calledAETitle, String callingAETitle, String moveDestination, String affectedSOPClass, AttributeList identifier) throws DicomNetworkException, DicomException, 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
Throws:
  `IOException`
  `DicomException`
  `DicomNetworkException`

## Method Details

### getStatus

public int getStatus()

### getSuitableAssociation

public static Association getSuitableAssociation(String hostname, int port, String calledAETitle, String callingAETitle, String affectedSOPClass, int debugLevel) throws DicomNetworkException, DicomException, 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` - ignored
Throws:
  `IOException`
  `DicomException`
  `DicomNetworkException`

### getSuitableAssociation

public static Association getSuitableAssociation(String hostname, int port, String calledAETitle, String callingAETitle, String affectedSOPClass) throws DicomNetworkException, DicomException, 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`
Throws:
  `IOException`
  `DicomException`
  `DicomNetworkException`

### performMove

public void performMove(Association association, String moveDestination, String affectedSOPClass, AttributeList identifier) throws DicomNetworkException, DicomException, 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:
  `IOException`
  `DicomException`
  `DicomNetworkException`
  `AReleaseException`

### main

public static void main(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)