Create UPS for Failed UPS Processing - dcm4che/dcm4chee-arc-light GitHub Wiki

Overview

UPS records which failed in their processing can be rescheduled automatically. If the maximum retries to reschedule the failed UPS processing is reached or if auto rescheduling is not configured at all, then the failed UPS records are no longer retried to be processed, and their status is set to CANCELED.

In these two cases, if one wants to actively take appropriate action on such failed UPS records, then one may configure this feature which creates new UPS records referring to the previous failed UPS processing records (which are no longer retried to be processed).

Configuration

Use Case

For the sake of testing this feature, a very simple use case for UPS records processing failed is explained below w.r.t the feature Export received DICOM instances. Configure everything except the destination storescp tool.

If no auto rescheduling is configured for this pre-configured DICOM_EXPORT UPS Processing Rule or if max retries to reschedule has been reached, then on failure to process the UPS record, a new UPS record shall be created with SCHEDULED status.

Test

  • Do not start storescp which acts as a destination.

  • Store studies to archive using storescu tool.

    storescu -c <AET>@<archive-host>:<dicom-port> /path-to-study.dcm
    
  • Verify in Navigation page -> UWL tab for created UPS records. Verify the UIDs of SOP Instances in the Input Information Sequence of the created UPS records.

  • Once the delay and polling intervals are reached, verify the Procedure Step State of the UPS record (changed from SCHEDULED to CANCELED)

  • Assuming not auto rescheduling has been configured for this processor, verify the new created UPS record which references the previous UPS record in its Replaced Procedure Step Sequence

createUPSOnCancel.png

canceledUPSIUID.png

canceledUPSIUID-in-ReplacedProcedureStepSeq.png

  • This can also be verified from the server logs as
2020-09-02 16:42:01,560 INFO  [org.dcm4chee.arc.ups.impl.UPSServiceEJB] (EE-ManagedExecutorService-default-Thread-143) DCM4CHEE<-STORESCU(2): Create UPS[pk=309167, uid=2.25.231406933419414761065920802553045330855, state=SCHEDULED]
...................
2020-09-02 16:43:08,975 INFO  [org.dcm4chee.arc.ups.impl.UPSServiceEJB] (EE-ManagedExecutorService-default-Thread-151) DCM4CHEE: Update UPS[pk=309167, uid=2.25.231406933419414761065920802553045330855, state=IN PROGRESS]
...................
2020-09-02 16:43:09,049 INFO  [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-151) Initiate connection from /0.0.0.0:0 to localhost:11115
2020-09-02 16:43:09,050 WARN  [org.dcm4chee.arc.ups.process.AbstractUPSProcessor] (EE-ManagedExecutorService-default-Thread-151) Failed to process UPS[uid=2.25.231406933419414761065920802553045330855]:
: org.dcm4chee.arc.ups.process.UPSProcessorException: org.dcm4che3.net.service.DicomServiceException: java.net.ConnectException: Connection refused
	at deployment.dcm4chee-arc-ear-5.22.5-psql.ear//org.dcm4chee.arc.ups.process.AbstractUPSProcessor.process(AbstractUPSProcessor.java:142)
	at deployment.dcm4chee-arc-ear-5.22.5-psql.ear//org.dcm4chee.arc.ups.process.impl.UPSProcessingScheduler$ProcessWorkitems.processMatching(UPSProcessingScheduler.java:207)
	at deployment.dcm4chee-arc-ear-5.22.5-psql.ear//org.dcm4chee.arc.ups.process.impl.UPSProcessingScheduler$ProcessWorkitems.run(UPSProcessingScheduler.java:172)
	at [email protected]//org.jboss.as.ee.concurrent.ControlPointUtils$ControlledRunnable.run(ControlPointUtils.java:105)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at org.glassfish.javax.enterprise.concurrent//org.glassfish.enterprise.concurrent.internal.ManagedFutureTask.run(ManagedFutureTask.java:117)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:830)
	at org.glassfish.javax.enterprise.concurrent//org.glassfish.enterprise.concurrent.ManagedThreadFactoryImpl$ManagedThread.run(ManagedThreadFactoryImpl.java:227)
Caused by: org.dcm4che3.net.service.DicomServiceException: java.net.ConnectException: Connection refused
	at deployment.dcm4chee-arc-ear-5.22.5-psql.ear//org.dcm4chee.arc.store.scu.impl.CStoreSCUImpl.openAssociation(CStoreSCUImpl.java:103)
	at deployment.dcm4chee-arc-ear-5.22.5-psql.ear//org.dcm4chee.arc.store.scu.impl.CStoreSCUImpl.openMultipleAssocations(CStoreSCUImpl.java:190)
	at deployment.dcm4chee-arc-ear-5.22.5-psql.ear//org.dcm4chee.arc.store.scu.impl.CStoreSCUImpl.newRetrieveTaskSTORE(CStoreSCUImpl.java:176)
	at deployment.dcm4chee-arc-ear-5.22.5-psql.ear//org.dcm4chee.arc.store.scu.impl.CStoreSCUImpl$Proxy$_$$_WeldClientProxy.newRetrieveTaskSTORE(Unknown Source)
	at deployment.dcm4chee-arc-ear-5.22.5-psql.ear//org.dcm4chee.arc.ups.storescu.UPSStoreSCU.processA(UPSStoreSCU.java:88)
	at deployment.dcm4chee-arc-ear-5.22.5-psql.ear//org.dcm4chee.arc.ups.process.AbstractUPSProcessor.process(AbstractUPSProcessor.java:140)
	... 10 more
Caused by: java.net.ConnectException: Connection refused
	at java.base/sun.nio.ch.Net.connect0(Native Method)
	at java.base/sun.nio.ch.Net.connect(Net.java:493)
	at java.base/sun.nio.ch.Net.connect(Net.java:482)
	at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
	at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:339)
	at java.base/java.net.Socket.connect(Socket.java:603)
	at [email protected]//org.dcm4che3.net.Connection.connect(Connection.java:1047)
	at [email protected]//org.dcm4che3.net.ApplicationEntity.connect(ApplicationEntity.java:629)
	at [email protected]//org.dcm4che3.net.ApplicationEntity.connect(ApplicationEntity.java:677)
	at deployment.dcm4chee-arc-ear-5.22.5-psql.ear//org.dcm4chee.arc.store.scu.impl.CStoreSCUImpl.openAssociation(CStoreSCUImpl.java:90)
	... 15 more
...................
2020-09-02 16:43:09,081 INFO  [org.dcm4chee.arc.ups.impl.UPSServiceEJB] (EE-ManagedExecutorService-default-Thread-151) DCM4CHEE: Update UPS[pk=309167, uid=2.25.231406933419414761065920802553045330855, state=CANCELED]
...................
2020-09-02 16:43:09,060 INFO  [org.dcm4chee.arc.ups.impl.UPSServiceEJB] (EE-ManagedExecutorService-default-Thread-151) DCM4CHEE: Create UPS[pk=309168, uid=2.25.162456303411205275260854693124956179625, state=SCHEDULED]
...................
⚠️ **GitHub.com Fallback** ⚠️