MPPS after Store IAN - dcm4che/dcm4chee-arc-light GitHub Wiki
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.
- 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
. ConfigureIAN Timeout
and setIAN On Timeout
toTrue
andSave
. -
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
. ConfigureIAN Timeout
and setIAN On Timeout
toTrue
andSave
.
-
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.
- 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.
-
Start IANSCP
ianscp -b IANSCP:11117
-
Store all objects of that study on archive
storescu -c DCM4CHEE@localhost:11112 /pathToStudy
-
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.
-
Start IANSCP
ianscp -b IANSCP:11117
-
Store all objects of that study on archive
storescu -c DCM4CHEE@localhost:11112 /pathToStudy
-
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.
-
Start IANSCP
ianscp -b IANSCP:11117
-
Store all objects of that study on archive
storescu -c DCM4CHEE@localhost:11112 /pathToStudy
-
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