MPPS before Store IAN - dcm4che/dcm4chee-arc-light GitHub Wiki
Modality Performed Procedure Step may be received by archive from a modality even before 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 have been received by the archive.
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.
-
Send MPPS request for a study
mppsscu -c DCM4CHEE@localhost:11112 /pathToStudy
-
Start IANSCP
ianscp -b IANSCP:11117
-
Store all objects of that study on archive
storescu -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.
-
Send MPPS request for a study
mppsscu -c DCM4CHEE@localhost:11112 /pathToStudy
-
Start IANSCP
ianscp -b IANSCP:11117
-
Store only some objects of that study on archive
storescu -c DCM4CHEE@localhost:11112 /pathToStudy-some-objects
After the configured polling interval and IAN timeout have been reached, check in the ianscp
tool window that the
Instance Availability Notification has been received. Also in the logs on archive side, a WARN
message can be seen as
17:19:31,023 WARN [org.dcm4chee.arc.ian.scu.IANScheduler] (EE-ManagedScheduledExecutorService-default-Thread-7) Timeout
for IanTask[pk=7, deviceName=dcm4chee-arc, mppsInstanceUID=2.25.252633828717293194269690210345411940655, scheduledTime=2020-03-09 17:19:06.409]
exceeded - schedule IAN for available instances
-
Send MPPS request for a study
mppsscu -c DCM4CHEE@localhost:11112 /pathToStudy
-
Start IANSCP
ianscp -b IANSCP:11117
-
Store all objects of that study on archive
storescu -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:12:09,023 INFO [org.dcm4chee.arc.ian.scu.IANScheduler] (EE-ManagedExecutorService-default-Thread-5) DCM4CHEE<-MPPSSCU(1):
Created IanTask[pk=9, deviceName=dcm4chee-arc, mppsInstanceUID=2.25.316612971090743533821318144748315192179,
scheduledTime=Tue Mar 10 11:13:09 CET 2020]
..............
..............
11:13:04,527 INFO [org.dcm4chee.arc.ian.scu.IANScheduler] (EE-ManagedScheduledExecutorService-default-Thread-9) start
IANScheduler.execute()
11:13:04,578 INFO [org.dcm4chee.arc.ian.scu.IANScheduler] (EE-ManagedScheduledExecutorService-default-Thread-9) Check
availability of MPPS[pk=39, uid=2.25.316612971090743533821318144748315192179, studyInstanceUID=1.2.840.113674.1335.106.200,
status=COMPLETED]
11:13:04,599 INFO [org.dcm4chee.arc.ian.scu.IANScheduler] (EE-ManagedScheduledExecutorService-default-Thread-9) Schedule
IanTask[pk=9, deviceName=dcm4chee-arc, mppsInstanceUID=2.25.316612971090743533821318144748315192179,
scheduledTime=2020-03-10 11:13:09.015]
11:13:04,710 INFO [org.dcm4chee.arc.qmgt.impl.QueueManagerEJB] (EE-ManagedScheduledExecutorService-default-Thread-9)
Schedule Task[id=ID:bb2c6efa-62b7-11ea-a51c-c465169b5497] at Queue IANSCU
11:13:04,764 INFO [org.dcm4chee.arc.ian.scu.IANScheduler] (EE-ManagedScheduledExecutorService-default-Thread-9)
finished IANScheduler.execute()
11:13:04,801 INFO [org.dcm4chee.arc.qmgt.impl.QueueManagerEJB] (Thread-12 (ActiveMQ-client-global-threads)) Start
processing Task[id=ID:bb2c6efa-62b7-11ea-a51c-c465169b5497] from Queue IANSCU with Status: SCHEDULED
11:13:04,815 INFO [org.dcm4che3.net.Connection] (Thread-12 (ActiveMQ-client-global-threads)) Initiate connection from
/0.0.0.0:0 to localhost:11117
11:13:04,816 INFO [org.dcm4che3.net.Connection] (Thread-12 (ActiveMQ-client-global-threads)) Established connection
Socket[addr=localhost/127.0.0.1,port=11117,localport=51565]
11:13:04,817 INFO [org.dcm4che3.net.Association] (Thread-12 (ActiveMQ-client-global-threads)) DCM4CHEE->IANSCP(3) << A-ASSOCIATE-RQ
11:13:04,863 INFO [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-7) DCM4CHEE->IANSCP(3) >> A-ASSOCIATE-AC
11:13:04,864 INFO [org.dcm4che3.net.Dimse] (Thread-12 (ActiveMQ-client-global-threads)) DCM4CHEE->IANSCP(3) << 1:N-CREATE-RQ[pcid=1
cuid=1.2.840.10008.5.1.4.33 - Instance Availability Notification SOP Class
iuid=2.25.334780248116221015257243059289974336611 - ?
tsuid=1.2.840.10008.1.2 - Implicit VR Little Endian]
11:13:04,920 INFO [org.dcm4che3.net.Dimse] (EE-ManagedExecutorService-default-Thread-7) DCM4CHEE->IANSCP(3) >> 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.334780248116221015257243059289974336611 - ?
tsuid=1.2.840.10008.1.2 - Implicit VR Little Endian]
11:13:04,920 INFO [org.dcm4che3.net.Association] (Thread-12 (ActiveMQ-client-global-threads)) DCM4CHEE->IANSCP(3) << A-RELEASE-RQ
11:13:04,921 INFO [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-7) DCM4CHEE->IANSCP(3) >> A-RELEASE-RP
11:13:04,921 INFO [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-7) DCM4CHEE->IANSCP(3): close
Socket[addr=localhost/127.0.0.1,port=11117,localport=51565]
11:13:04,927 INFO [org.dcm4chee.arc.qmgt.impl.QueueManagerEJB] (Thread-12 (ActiveMQ-client-global-threads)) Finished
processing of Task[id=ID:bb2c6efa-62b7-11ea-a51c-c465169b5497] at Queue IANSCU with Status COMPLETED