Package com.pixelmed.network

# Class FindSOPClassSCU

java.lang.Object
com.pixelmed.dicom.SOPClass
com.pixelmed.network.FindSOPClassSCU

public class FindSOPClassSCU extends SOPClass

This class implements the SCU role of C-FIND 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-FIND request, and releases the association. Any identifiers received are handled by the supplied `IdentifierHandler`.

Debugging messages with a varying degree of verbosity can be activated by using SLF4J properties.

For example:

    try {
        SpecificCharacterSet specificCharacterSet = new SpecificCharacterSet((String[])null);
        AttributeList identifier = new AttributeList();
        { AttributeTag t = TagFromName.QueryRetrieveLevel; Attribute a = new CodeStringAttribute(t); a.addValue("STUDY"); identifier.put(t,a); }
        { AttributeTag t = TagFromName.PatientID; Attribute a = new LongStringAttribute(t,specificCharacterSet); a.addValue(""); identifier.put(t,a); }
        { AttributeTag t = TagFromName.StudyInstanceUID; Attribute a = new UniqueIdentifierAttribute(t); a.addValue(""); identifier.put(t,a); }
        new FindSOPClassSCU("theirhost","104","FINDSCP","FINDSCU",SOPClass.StudyRootQueryRetrieveInformationModelFind,identifier,new IdentifierHandler(),1);
    }
    catch (Exception e) {
        slf4jlogger.error("",e);
    }

See Also:
  - `IdentifierHandler`

## Field Summary

### 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
`FindSOPClassSCU(Association association, String affectedSOPClass, AttributeList identifier, IdentifierHandler identifierHandler)`
`FindSOPClassSCU(Association association, String affectedSOPClass, AttributeList identifier, IdentifierHandler identifierHandler, int debugLevel)`
`FindSOPClassSCU(String hostname, int port, String calledAETitle, String callingAETitle, String affectedSOPClass, AttributeList identifier, IdentifierHandler identifierHandler)`
`FindSOPClassSCU(String hostname, int port, String calledAETitle, String callingAETitle, String affectedSOPClass, AttributeList identifier, IdentifierHandler identifierHandler, int debugLevel)`

## Method Summary

Modifier and Type
Method
Description
`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 study root query (send a C-FIND request), for all studies.
`void`
`performFind(Association association, 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`

## Constructor Details

### FindSOPClassSCU

public FindSOPClassSCU(Association association, String affectedSOPClass, AttributeList identifier, IdentifierHandler identifierHandler, int debugLevel) throws DicomNetworkException, DicomException, IOException

Parameters:
  `association` - the already established Association to use
  `affectedSOPClass` - the SOP Class defining which query model, e.g. `SOPClass.StudyRootQueryRetrieveInformationModelFind`
  `identifier` - the list of matching and return keys
  `identifierHandler` - the handler to use for each returned identifier
  `debugLevel` - ignored
Throws:
  `IOException`
  `DicomException`
  `DicomNetworkException`

### FindSOPClassSCU

public FindSOPClassSCU(Association association, String affectedSOPClass, AttributeList identifier, IdentifierHandler identifierHandler) throws DicomNetworkException, DicomException, IOException

Parameters:
  `association` - the already established Association to use
  `affectedSOPClass` - the SOP Class defining which query model, e.g. `SOPClass.StudyRootQueryRetrieveInformationModelFind`
  `identifier` - the list of matching and return keys
  `identifierHandler` - the handler to use for each returned identifier
Throws:
  `IOException`
  `DicomException`
  `DicomNetworkException`

### FindSOPClassSCU

public FindSOPClassSCU(String hostname, int port, String calledAETitle, String callingAETitle, String affectedSOPClass, AttributeList identifier, IdentifierHandler identifierHandler, 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 query model, e.g. `SOPClass.StudyRootQueryRetrieveInformationModelFind`
  `identifier` - the list of matching and return keys
  `identifierHandler` - the handler to use for each returned identifier
  `debugLevel` - ignored
Throws:
  `IOException`
  `DicomException`
  `DicomNetworkException`

### FindSOPClassSCU

public FindSOPClassSCU(String hostname, int port, String calledAETitle, String callingAETitle, String affectedSOPClass, AttributeList identifier, IdentifierHandler identifierHandler) 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 query model, e.g. `SOPClass.StudyRootQueryRetrieveInformationModelFind`
  `identifier` - the list of matching and return keys
  `identifierHandler` - the handler to use for each returned identifier
Throws:
  `IOException`
  `DicomException`
  `DicomNetworkException`

## Method Details

### 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 query model, e.g. `SOPClass.StudyRootQueryRetrieveInformationModelFind`
  `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 query model, e.g. `SOPClass.StudyRootQueryRetrieveInformationModelFind`
Throws:
  `IOException`
  `DicomException`
  `DicomNetworkException`

### performFind

public void performFind(Association association, String affectedSOPClass, AttributeList identifier) throws DicomNetworkException, DicomException, IOException, AReleaseException

Parameters:
  `association` - the already established Association to use
  `affectedSOPClass` - the SOP Class defining which query model, e.g. `SOPClass.StudyRootQueryRetrieveInformationModelFind`
  `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 study root query (send a C-FIND request), for all studies.

Parameters:
  `arg` - array of four strings - their hostname, their port, their AE Title, our AE Title