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

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static Association` | `getSuitableAssociation​(java.lang.String hostname, int port, java.lang.String calledAETitle, java.lang.String callingAETitle, java.lang.String affectedSOPClass)` |
    `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 study root query (send a C-FIND request), for all studies.
    `void` | `performFind​(Association association, 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, 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`

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

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

- - ### Constructor Detail

    - #### FindSOPClassSCU

          public FindSOPClassSCU​(Association association,
                                 java.lang.String affectedSOPClass,
                                 AttributeList identifier,
                                 IdentifierHandler identifierHandler,
                                 int debugLevel)
                          throws DicomNetworkException,
                                 DicomException,
                                 java.io.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:
        `java.io.IOException`
        `DicomException`
        `DicomNetworkException`

    - #### FindSOPClassSCU

          public FindSOPClassSCU​(Association association,
                                 java.lang.String affectedSOPClass,
                                 AttributeList identifier,
                                 IdentifierHandler identifierHandler)
                          throws DicomNetworkException,
                                 DicomException,
                                 java.io.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:
        `java.io.IOException`
        `DicomException`
        `DicomNetworkException`

    - #### FindSOPClassSCU

          public FindSOPClassSCU​(java.lang.String hostname,
                                 int port,
                                 java.lang.String calledAETitle,
                                 java.lang.String callingAETitle,
                                 java.lang.String affectedSOPClass,
                                 AttributeList identifier,
                                 IdentifierHandler identifierHandler,
                                 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 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:
        `java.io.IOException`
        `DicomException`
        `DicomNetworkException`

    - #### FindSOPClassSCU

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

  - ### Method Detail

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

    - #### getSuitableAssociation

          public static Association getSuitableAssociation​(java.lang.String hostname,
                                                           int port,
                                                           java.lang.String calledAETitle,
                                                           java.lang.String callingAETitle,
                                                           java.lang.String affectedSOPClass)
                                                    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 query model, e.g. `SOPClass.StudyRootQueryRetrieveInformationModelFind`
      Throws:
        `java.io.IOException`
        `DicomException`
        `DicomNetworkException`

    - #### performFind

          public void performFind​(Association association,
                                  java.lang.String affectedSOPClass,
                                  AttributeList identifier)
                           throws DicomNetworkException,
                                  DicomException,
                                  java.io.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:
        `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 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