How to run multiple Archive nodes with Direct Attached Storage sharing one DB

vrindanayak edited this page Oct 11, 2016 · 9 revisions
Clone this wiki locally

shared-db-direct-attached-storage

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.

You 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.

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.

You 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.

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

Note : The dcmAltCMoveSCP attribute can be added on device level as well, but by doing so we 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 getting 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

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