MPPS after Store IAN - dcm4che/dcm4chee-arc-light GitHub Wiki

Overview

Modality Performed Procedure Step may be received by archive from a modality after objects are stored to the archive. In such case, Instance Availability Notification may be sent out from the archive once all objects of the study are referenced in the MPPS.

Optionally if an IAN Timeout has been additionally configured to wait and check for completeness of instances received in MPPS and all instances referenced in MPPS have been received, then this timer shall be stopped and Instance Availability Notification is sent out.

Configuration

Use Case : Only some objects referenced in MPPS

  • Using Archive UI - Can be configured either on :
    • Archive Device level (Send IAN for instances received by any Application Entity of the Archive) :

      Go upto archive device extension level Configuration page -> Devices tab -> dcm4chee-arc -> Device Extension -> Archive Device Extension. Configure IAN Timeout and set IAN On Timeout to True and Save.

    • Archive Application Extension level (Send IAN for instances received by this Application Entity of the Archive) :

      Go upto archive AE extension level Configuration page -> Devices tab -> dcm4chee-arc -> Child Objects Network AEs -> Network AE Extension -> Archive Network AE Extension. Configure IAN Timeout and set IAN On Timeout to True and Save.

OR

  • Using LDAP - One may either create a LDIF file to add attributes either on :

    • Archive Device level (e.g.):

        version: 1
        dn: dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
        changetype: modify
        add: dcmIanTimeout
        dcmIanTimeout: PT5M
      
        dn: dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
        changetype: modify
        add: dcmIanOnTimeout
        dcmIanOnTimeout: TRUE        
      

    OR

    • Archive AE level (e.g.):

        version: 1        
        dn: dicomAETitle=DCM4CHEE,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
        changetype: modify
        add: dcmIanTimeout
        dcmIanTimeout: PT5M
      
        dn: dicomAETitle=DCM4CHEE,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
        changetype: modify
        add: dcmIanOnTimeout
        dcmIanOnTimeout: TRUE
      

    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 Device Level (e.g.: dicomDeviceName=dcm4chee-arc) or on Application Entity Level (e.g: dicomAETitle=DCM4CHEE) of the Archive Configuration.

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

Refer ISO-8601 Duration format for more know-how on Durations.

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

Testing

Required dcm4che Tools

  • storescu simulating the external object source (e.g. modality) STORESCU, from which objects are being received.
  • mppsscu simulating Service Class User (SCU) for the Modality Performed Procedure Step (MPPS) SOP Class and for the Verification SOP Class.

Verification

All objects referenced in MPPS

  1. Start IANSCP

       ianscp -b IANSCP:11117
    
  2. Store all objects of that study on archive

       storescu -c DCM4CHEE@localhost:11112 /pathToStudy
    
  3. Send MPPS request referencing all objects of that study

       mppsscu -c DCM4CHEE@localhost:11112 /pathToStudy
    

After the configured polling interval is reached, check in the ianscp tool window that the Instance Availability Notification has been received.

Only some objects referenced in MPPS

  1. Start IANSCP

       ianscp -b IANSCP:11117
    
  2. Store all objects of that study on archive

       storescu -c DCM4CHEE@localhost:11112 /pathToStudy
    
  3. Send MPPS request referencing only some objects of that study

       mppsscu -c DCM4CHEE@localhost:11112 /pathToStudy-some-objects
    

After the configured polling interval is reached, check in the ianscp tool window that the Instance Availability Notification has been received only for the referenced objects in MPPS.

All objects referenced in MPPS before IAN Timeout is reached

  1. Start IANSCP

       ianscp -b IANSCP:11117
    
  2. Store all objects of that study on archive

       storescu -c DCM4CHEE@localhost:11112 /pathToStudy
    
  3. Send MPPS request referencing all objects of that study

       mppsscu -c DCM4CHEE@localhost:11112 /pathToStudy
    

Once the configured polling interval is reached, scheduler checks completeness of MPPS and sends out IAN. This can be verified by scheduled time of IAN task and start of IAN scheduler and time when corresponding IAN that is sent out. Check in the ianscp tool window that the Instance Availability Notification has been received. Sample logs on archive side for this use case

11:30:51,867 INFO  [org.dcm4chee.arc.ian.scu.IANScheduler] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-MPPSSCU(5): 
Created IanTask[pk=10, deviceName=dcm4chee-arc, mppsInstanceUID=2.25.283448069981433108367525709744139201854, 
scheduledTime=Tue Mar 10 11:31:51 CET 2020]
..............
..............
11:31:04,971 INFO  [org.dcm4chee.arc.ian.scu.IANScheduler] (EE-ManagedScheduledExecutorService-default-Thread-3) start 
IANScheduler.execute()
11:31:04,995 INFO  [org.dcm4chee.arc.ian.scu.IANScheduler] (EE-ManagedScheduledExecutorService-default-Thread-3) Check 
availability of MPPS[pk=40, uid=2.25.283448069981433108367525709744139201854, studyInstanceUID=1.2.840.113674.1335.106.200, 
status=COMPLETED]
11:31:05,006 INFO  [org.dcm4chee.arc.ian.scu.IANScheduler] (EE-ManagedScheduledExecutorService-default-Thread-3) Schedule 
IanTask[pk=10, deviceName=dcm4chee-arc, mppsInstanceUID=2.25.283448069981433108367525709744139201854, 
scheduledTime=2020-03-10 11:31:51.859]
11:31:05,038 INFO  [org.dcm4chee.arc.qmgt.impl.QueueManagerEJB] (EE-ManagedScheduledExecutorService-default-Thread-3) 
Schedule Task[id=ID:3f198e8f-62ba-11ea-a51c-c465169b5497] at Queue IANSCU
11:31:05,114 INFO  [org.dcm4chee.arc.ian.scu.IANScheduler] (EE-ManagedScheduledExecutorService-default-Thread-3) finished 
IANScheduler.execute()
11:31:05,145 INFO  [org.dcm4chee.arc.qmgt.impl.QueueManagerEJB] (Thread-13 (ActiveMQ-client-global-threads)) Start 
processing Task[id=ID:3f198e8f-62ba-11ea-a51c-c465169b5497] from Queue IANSCU with Status: SCHEDULED
11:31:05,181 INFO  [org.dcm4che3.net.Connection] (Thread-13 (ActiveMQ-client-global-threads)) Initiate connection from 
/0.0.0.0:0 to localhost:11117
11:31:05,184 INFO  [org.dcm4che3.net.Connection] (Thread-13 (ActiveMQ-client-global-threads)) Established connection 
Socket[addr=localhost/127.0.0.1,port=11117,localport=58759]
11:31:05,184 INFO  [org.dcm4che3.net.Association] (Thread-13 (ActiveMQ-client-global-threads)) DCM4CHEE->IANSCP(6) << A-ASSOCIATE-RQ
11:31:05,251 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-9) DCM4CHEE->IANSCP(6) >> A-ASSOCIATE-AC
11:31:05,251 INFO  [org.dcm4che3.net.Dimse] (Thread-13 (ActiveMQ-client-global-threads)) DCM4CHEE->IANSCP(6) << 1:N-CREATE-RQ[pcid=1
  cuid=1.2.840.10008.5.1.4.33 - Instance Availability Notification SOP Class
  iuid=2.25.100257876498806151984262827556432404898 - ?
  tsuid=1.2.840.10008.1.2 - Implicit VR Little Endian]
11:31:05,360 INFO  [org.dcm4che3.net.Dimse] (EE-ManagedExecutorService-default-Thread-9) DCM4CHEE->IANSCP(6) >> 1:N-CREATE-RSP[pcid=1, status=0H
  cuid=1.2.840.10008.5.1.4.33 - Instance Availability Notification SOP Class
  iuid=2.25.100257876498806151984262827556432404898 - ?
  tsuid=1.2.840.10008.1.2 - Implicit VR Little Endian]
11:31:05,361 INFO  [org.dcm4che3.net.Association] (Thread-13 (ActiveMQ-client-global-threads)) DCM4CHEE->IANSCP(6) << A-RELEASE-RQ
11:31:05,362 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-9) DCM4CHEE->IANSCP(6) >> A-RELEASE-RP
11:31:05,362 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-9) DCM4CHEE->IANSCP(6): close 
Socket[addr=localhost/127.0.0.1,port=11117,localport=58759]
11:31:05,374 INFO  [org.dcm4chee.arc.qmgt.impl.QueueManagerEJB] (Thread-13 (ActiveMQ-client-global-threads)) Finished 
processing of Task[id=ID:3f198e8f-62ba-11ea-a51c-c465169b5497] at Queue IANSCU with Status COMPLETED
⚠️ **GitHub.com Fallback** ⚠️