Prefetch QIDO Responses - dcm4che/dcm4chee-arc-light GitHub Wiki

Overview

Enable this feature to allow pre-fetching QIDO response for Search of Study's Series or Instances by a proxy server. The responses of the following QIDO services

may be cached to allow faster searching of series or instances of a study by viewer systems.

Configuration

To simulate pre-fetching of QIDO responses locally, we shall configure storages to simulate storing of QIDO responses (normally stored at proxy server acting as cache).

For pre-fetching QIDO responses of above 3 services, we shall create

  • 2 Export Rules : One referencing exporters for Series of Study and Instances of Study, and the export shall be done on Study level. The second export rule shall reference Instances of Series exporter and the export shall be done on series level.
  • 3 exporters each for the 3 services
  • 3 storage descriptors for storing responses of each of the 3 servcies.

Using Archive UI

  • Go upto Child objects of archive device (Menu -> Configuration -> Devices -> dcm4chee-arc -> Device Extension -> Archive Device Extension -> Child Objects) and add Export Rule, Export Descriptor and Storage Descriptor with values as shown in below ldif configuration.
  • On archive device level (Menu -> Configuration -> Devices -> dcm4chee-arc -> Device Extension -> Archive Device Extension -> Attributes), configure Qido ETag as true

Using LDAP

Create a LDIF file (e.g.)

dn: dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
dcmQidoETag: TRUE

dn: cn=Forward to QIDO-JSON-InstancesOfSeries,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
dcmExporterID: QIDO-JSON-InstancesOfSeries
dcmDuration: PT1M
dcmEntity: Series
dcmProperty: SendingApplicationEntityTitle=QIDO_JSON
objectClass: dcmExportRule
cn: Forward to QIDO-JSON-InstancesOfSeries

dn: cn=Forward to QIDO-JSON-Study-SeriesInstances,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
dcmExporterID: QIDO-JSON-InstancesOfStudy
dcmExporterID: QIDO-JSON-SeriesOfStudy
dcmDuration: PT1M
dcmEntity: Study
dcmProperty: SendingApplicationEntityTitle=QIDO_JSON
objectClass: dcmExportRule
cn: Forward to QIDO-JSON-Study-SeriesInstances

dn: dcmExporterID=QIDO-JSON-SeriesOfStudy,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
dcmExporterID: QIDO-JSON-SeriesOfStudy
dicomDescription: Export to QIDO-JSON-SeriesOfStudy
dcmQueueName: Export2
dcmProperty: QidoService=/studies/[0]/series
dcmProperty: Accept=application/json
dcmProperty: StorageID=qido-json-seriesOfStudy
objectClass: dcmExporter
dicomAETitle: DCM4CHEE
dcmURI: wado:DCM4CHEE

dn: dcmExporterID=QIDO-JSON-InstancesOfStudy,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
dcmExporterID: QIDO-JSON-InstancesOfStudy
dcmQueueName: Export2
objectClass: dcmExporter
dicomAETitle: DCM4CHEE
dcmURI: wado:DCM4CHEE
dcmProperty: QidoService=/studies/[0]/instances
dcmProperty: Accept=application/json
dcmProperty: StorageID=qido-json-instancesOfStudy
dicomDescription: Export to QIDO-JSON-InstancesOfStudy

dn: dcmExporterID=QIDO-JSON-InstancesOfSeries,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
dcmExporterID: QIDO-JSON-InstancesOfSeries
dcmQueueName: Export2
objectClass: dcmExporter
dicomAETitle: DCM4CHEE
dcmURI: wado:DCM4CHEE
dcmProperty: QidoService=/studies/[0]/series/[1]/instances
dcmProperty: Accept=application/json
dcmProperty: StorageID=qido-json-instancesOfSeries
dicomDescription: Export to QIDO-JSON-InstancesOfSeries

dn: dcmStorageID=qido-json-instancesOfSeries,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
dcmProperty: pathFormat={0020000D}-{0020000E}.json
dcmProperty: checkMountFile=NO_MOUNT
objectClass: dcmStorage
dcmStorageID: qido-json-instancesOfSeries
dcmURI: ${jboss.server.data.url}/qido-instancesOfSeries/

dn: dcmStorageID=qido-json-seriesOfStudy,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
dcmProperty: pathFormat={0020000D}.json
dcmProperty: checkMountFile=NO_MOUNT
objectClass: dcmStorage
dcmStorageID: qido-json-seriesOfStudy
dcmURI: ${jboss.server.data.url}/qido-seriesOfStudy/

dn: dcmStorageID=qido-json-instancesOfStudy,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
dcmProperty: pathFormat={0020000D}.json
dcmProperty: checkMountFile=NO_MOUNT
objectClass: dcmStorage
dcmStorageID: qido-json-instancesOfStudy
dcmURI: ${jboss.server.data.url}/qido-instancesOfStudy/

and import it to the LDAP Server by using the ldapmodify command line utility.

Refer Export Rule, Exporter Descriptor and Storage Descriptor to understand the description of attributes.

Go to the Control tab on Configuration page in archive UI and reload the configuration.

Test and Verification

  • Store study to archive using storescu tool.

  • Verify in Monitoring - Export that the export tasks are created and slated for schedule (i.e. status = TO SCHEDULE)

  • Once the export task polling interval and export delays are reached, verify that the json responses have been stored in the storages, and the export tasks are set to COMPLETED

⚠️ **GitHub.com Fallback** ⚠️