Multiple Archives with Direct Attached Storage sharing one DB - dcm4che/dcm4chee-arc-light GitHub Wiki

Configuration

On Application Entity level of 1st Archive - dcmAltCMoveSCP attribute needs to be created and set to DCM4CHEE2 which is the AE Title of 2nd Archive. When images or studies are stored on the 1st archive, it is also available on 2nd archive because both archives are sharing the same database.

One may either

  • create a LDIF file (e.g.):

      version: 1
      dn: dicomAETitle=DCM4CHEE1,dicomDeviceName=dcm4chee-arc1,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
      changetype: modify
      add: dcmAltCMoveSCP
      dcmAltCMoveSCP: DCM4CHEE2
      -
    

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

  • or use the Add Attribute... and Add Value... function of Apache Directory Studio to add attributes on Application Entity Level (e.g: dicomAETitle=DCM4CHEE1) in the Archive Configuration.

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

On Application Entity level of 2nd Archive - dcmAltCMoveSCP attribute needs to be created and set to DCM4CHEE1 which is the AE Title of 1st Archive. When images or studies are stored on the 2nd archive, it is also available on 1st archive because both archives are sharing the same database.

One may either

  • create a LDIF file (e.g.):

      version: 1
      dn: dicomAETitle=DCM4CHEE2,dicomDeviceName=dcm4chee-arc2,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
      changetype: modify
      add: dcmAltCMoveSCP
      dcmAltCMoveSCP: DCM4CHEE1
      -
    

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

  • or use the Add Attribute... and Add Value... function of Apache Directory Studio to add attributes on Application Entity Level (e.g: dicomAETitle=DCM4CHEE2) in the Archive Configuration.

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

One may refer to Archive Network AE to understand the description of attributes.

Note : The dcmAltCMoveSCP attribute can be added also on device level, but by doing so one will not be able to achieve consistency specific to Application Entity level for the MOVESCU requests. Hence in above configuration it is added at Application Entity level.

Verification

Required dcm4che Tools

  • storescu simulating the external object source (e.g. modality) STORESCU, from which objects are being received
  • storescp simulating the external object destination (e.g. workstation) STORESCP, to which received objects are forwarded
  • movescu implements both an SCU for the Query/Retrieve Service Class and an SCP for the Storage Service Class

Procedure

  • Remote application entity STORESCP needs to be configured because it acts as a destination for MOVESCU requests. Refer Remote Application Entity

Note : STORESCU is respective to the node, but MOVESCU is not. This implies that since the archives are sharing one DB, the images can be retrieved from any of the nodes irrespective of where it was stored.

  1. Store the images on archive1 using STORESCU tool as shown below
    storescu -c DCM4CHEE1@hostname:port1 /image1.dcm
    (image1.dcm StudyInstanceUID=1.2.3.4)
    Below is a snippet of Request - Response logs

        14:35:03,442 INFO  - STORESCU->DCM4CHEE1(1) << 1:C-STORE-RQ[pcid=7, prior=0
          cuid=1.2.840.10008.5.1.4.1.1.1 - Computed Radiography Image Storage
          iuid=1.3.51.0.7.1265535119.17104.33870.32953.8838.26602.20894 - ?
          tsuid=1.2.840.10008.1.2.4.80 - JPEG-LS Lossless Image Compression
    
        14:35:03,705 INFO  - STORESCU->DCM4CHEE1(1) >> 1:C-STORE-RSP[pcid=7, status=0H
          cuid=1.2.840.10008.5.1.4.1.1.1 - Computed Radiography Image Storage
          iuid=1.3.51.0.7.1265535119.17104.33870.32953.8838.26602.20894 - ?
          tsuid=1.2.840.10008.1.2.4.80 - JPEG-LS Lossless Image Compression
    
  2. Store the images on archive2 using STORESCU tool as shown below
    storescu -c DCM4CHEE2@hostname:port2 /image2.dcm
    (image2.dcm StudyInstanceUID=1.2.3.5)
    Below is a snippet of Request - Response logs

        14:36:25,965 INFO  - STORESCU->DCM4CHEE2(1) << 197:C-STORE-RQ[pcid=7, prior=0
          cuid=1.2.840.10008.5.1.4.1.1.2 - CT Image Storage
          iuid=1.3.12.2.1107.5.8.2.485251.834849.68674954.2000021711431873 - ?
          tsuid=1.2.840.10008.1.2.4.80 - JPEG-LS Lossless Image Compression
    
        14:36:27,146 INFO  - STORESCU->DCM4CHEE2(1) >> 197:C-STORE-RSP[pcid=7, status=0H
          cuid=1.2.840.10008.5.1.4.1.1.2 - CT Image Storage
          iuid=1.3.12.2.1107.5.8.2.485251.834849.68674954.2000021711431873 - ?
          tsuid=1.2.840.10008.1.2.4.80 - JPEG-LS Lossless Image Compression
    
  3. Start storescp using STORESCP tool as shown below

    storescp -b STORESCP:port                                   
    

    Below is a snippet for the same

        14:38:58,005 INFO  - Start TCP Listener on 0.0.0.0/0.0.0.0:104
    
  4. Retrieve the images stored on Archive1 using either of the AE titles
    movescu -c DCM4CHEE1@hostname1:port1 -m StudyInstanceUID=1.2.3.4 --dest STORESCP
    OR
    movescu -c DCM4CHEE2@hostname1:port1 -m StudyInstanceUID=1.2.3.4 --dest STORESCP
    Below is a snippet of Request - Response logs

        14:48:27,686 INFO  - MOVESCU->DCM4CHEE1(1) << 1:C-MOVE-RQ[pcid=1, prior=0
          cuid=1.2.840.10008.5.1.4.1.1.1 - Study Root Query/Retrieve Information Model - MOVE
          tsuid=1.2.840.10008.1.2.4.80 - Implicit VR Little Endian
    
        14:48:27,747 INFO  - MOVESCU->DCM4CHEE1(1) >> 1:C-MOVE-RSP[pcid=1, completed=1, failed=0, warning=0, status=0H
          cuid=1.2.840.10008.5.1.4.1.1.1 - Study Root Query/Retrieve Information Model - MOVE
          tsuid=1.2.840.10008.1.2.4.80 - Implicit VR Little Endian
    
  5. Snippet of Request - Response logs on storescp side

        14:48:47,730 INFO  - STORESCP<-DCMQRSCP(2) >> 1:C-STORE-RQ[pcid=1, prior=0
          orig=MOVESCU >> 1:C-MOVE-RQ
          cuid=1.2.840.10008.5.1.4.1.1.1 - Computed Radiography Image Storage
          iuid=1.3.51.0.7.1265535119.17104.33870.32953.8838.26602.20894 - ?
          tsuid=1.2.840.10008.1.2.4.80 - JPEG-LS Lossless Image Compression
    
        14:48:47,730 INFO  - STORESCP<-DCMQRSCP(2) << 1:C-STORE-RSP[pcid=1, status=0H
          cuid=1.2.840.10008.5.1.4.1.1.1 - Computed Radiography Image Storage
          iuid=1.3.51.0.7.1265535119.17104.33870.32953.8838.26602.20894 - ?
          tsuid=1.2.840.10008.1.2.4.80 - JPEG-LS Lossless Image Compression
    
  6. Retrieve the images stored on Archive2 using either of the AE titles movescu -c DCM4CHEE2@hostname2:port2 -m StudyInstanceUID=1.2.3.5 --dest STORESCP
    OR
    movescu -c DCM4CHEE1@hostname2:port2 -m StudyInstanceUID=1.2.3.5 --dest STORESCP
    Below is a snippet of Request - Response logs

        14:58:27,686 INFO  - MOVESCU->DCM4CHEE2(1) << 1:C-MOVE-RQ[pcid=1, prior=0
          cuid=1.2.840.10008.5.1.4.1.1.2 - Study Root Query/Retrieve Information Model - MOVE
          tsuid=1.2.840.10008.1.2.4.80 - Implicit VR Little Endian
    
        14:58:27,747 INFO  - MOVESCU->DCM4CHEE2(1) >> 1:C-MOVE-RSP[pcid=1, completed=1, failed=0, warning=0, status=0H
          cuid=1.2.840.10008.5.1.4.1.1.2 - Study Root Query/Retrieve Information Model - MOVE
          tsuid=1.2.840.10008.1.2.4.80 - Implicit VR Little Endian
    
  7. Snippet of Request - Response logs on storescp side

        14:58:47,730 INFO  - STORESCP<-DCMQRSCP(2) >> 1:C-STORE-RQ[pcid=1, prior=0
          orig=MOVESCU >> 1:C-MOVE-RQ
          cuid=1.2.840.10008.5.1.4.1.1.2 - CT Image Storage
          iuid=1.3.12.2.1107.5.8.2.485251.834849.68674954.2000021711431873 - ?
          tsuid=1.2.840.10008.1.2.4.80 - JPEG-LS Lossless Image Compression
    
        14:58:47,730 INFO  - STORESCP<-DCMQRSCP(2) << 1:C-STORE-RSP[pcid=1, status=0H
          cuid=1.2.840.10008.5.1.4.1.1.2 - CT Image Storage
          iuid=1.3.12.2.1107.5.8.2.485251.834849.68674954.2000021711431873 - ?
          tsuid=1.2.840.10008.1.2.4.80 - JPEG-LS Lossless Image Compression
    
⚠️ **GitHub.com Fallback** ⚠️