Implementing reporting workflow with DCM4CHEE, how to manage the reporting worklist?

709 views
Skip to first unread message

Pablo Pazos

unread,
Oct 8, 2015, 12:20:27 PM10/8/15
to dcm4che

I'm investigating about the services / communications needed for creating worklists for radiologists to report studies, let them query items from the WL, and change the status of the items with procedure steps. I never worked with this workflow and I want to create a small proof of concept app to understand it better, maybe you can help me out.

I found the General Purpose Work List article from 2006 (http://www.dcm4che.org/confluence/display/ee2/GPWL+Explained), that has a diagram including: query, list of available items, lock items and unlock items. That makes perfect sense. The only thing I don't see is how the feed of the "reporting" worklists should be done. Does DCM4CHEE have an HL7 service like the one to fill the Modality Worklist from ORM messages?

I want to test the reporting workflow using the DCM4CHE Toolkit. There are two commands that might help: dcgpwl and dcmups. (please let me know if these aren't the correct commands). It seems with dcmgpwl I can query / list items like the dcmmwl. 

What I don't understand is how two use those commands to feed (if no HL7 service exists), and lock / unlock items from the reporting worklist. Can you give me any pointers on how to do the reporting WL feed and lock/unlock?

Thanks a lot!
Pablo.

fleetwoodfc

unread,
Oct 8, 2015, 1:37:10 PM10/8/15
to dcm4che
This will help: http://www.dcm4che.org/confluence/display/d2/dcmups
Also dcm4chee provides the UPSFeed service that can create UPS work items from MPPS objects - there is GPWLFeed and GPWLFeed2 if you want to use GPWL instead of UPS.

Pablo Pazos

unread,
Oct 8, 2015, 1:58:25 PM10/8/15
to dcm4che
Good info, will test the feed.

About dcmups, does that support lock / unlock of items for reporting? I think the use case for this is where there are 2 radiologists creating reports, and one takes an item from the reporting WL, so it needs to be locked so the other radiologist do not take it and create another report for the same study.

The only ref to a "lock" is the dellock (I assume this has nothing to do with the lock / unlock from GPWL).

Thanks again!

fleetwoodfc

unread,
Oct 9, 2015, 6:32:28 AM10/9/15
to dcm4che

Pablo Pazos

unread,
Oct 18, 2015, 10:28:05 PM10/18/15
to dcm4che
Thanks, that seems to have all I need.

About the creation of UPS items: the example for create uses an XML that I don't have and I can't find on the confluence wiki:

dcmups create DCM4CHEE@localhost:11112 -f dcm4che-2.0.24/etc/dcmups/ncreate.xml

Is there any sample XML or DCM files with UPS data? Or any open source app I can use to generate those?

Thanks.

fleetwoodfc

unread,
Oct 19, 2015, 7:10:41 AM10/19/15
to dcm4che
If you have downloaded the dcm4che2 toolkit then ncreate.xml  is in the etc/dcmups folder. 

Pablo Pazos

unread,
Oct 23, 2015, 9:05:15 AM10/23/15
to dcm4che
Got it, thanks!


Reviewing the ncreate.xml format, it seems a Procedure Step can be assigned to a specific person on "Scheduled Human Performers Sequence".

Is there a way to assign the Procedure Step to a group? For example, a hospital can have 3 radiologists to interpret MRIs, so any of them on that "group" can report a study referenced in one Procedure Step.

Thanks!

fleetwoodfc

unread,
Oct 23, 2015, 9:35:51 AM10/23/15
to dcm4che
Do not see any reason why not - you can define your own coding scheme so create a code/meaning for each group. 

Pablo Pazos

unread,
Oct 23, 2015, 10:07:43 AM10/23/15
to dcm...@googlegroups.com
Perfect. So I just add another attr tag in the UPS XML? 

I couldn't find a DICOM tag that matches the concept of "interpreters group", do you know if there is something similar or should I create a custom tag/code?

Also form what you said, I guess the " "Scheduled Human Performers Sequence" element is not mandatory in the UPS XML. Is that correct?

Thanks again!

--
You received this message because you are subscribed to a topic in the Google Groups "dcm4che" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dcm4che/a6Hc8Hg4idU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dcm4che+u...@googlegroups.com.
To post to this group, send email to dcm...@googlegroups.com.
Visit this group at http://groups.google.com/group/dcm4che.
For more options, visit https://groups.google.com/d/optout.



--
Ing. Pablo Pazos Gutiérrez
Cel:(00598) 99 043 145
Skype: cabolabs

http://www.cabolabs.com
pablo...@cabolabs.com

Pablo Pazos

unread,
Oct 23, 2015, 7:36:15 PM10/23/15
to dcm4che, pablo...@cabolabs.com
I tried this with the original ncreate.xml:


dcmups create DCM4CHEE@localhost:11112 -f dcm4che-2.0.24/etc/dcmups/ncreate.xml


And I got this error:

21:12:59,000 ERROR - 1.2.840.10008.5.1.4.34.6.1/Unified Procedure Step - Push SOP Class not supported by DCM4CHEE
org.dcm4che2.net.NoPresentationContextException: 1.2.840.10008.5.1.4.34.6.1/Unified Procedure Step - Push SOP Class not supported by DCM4CHEE
at org.dcm4che2.tool.dcmups.DcmUPS.selectTransferSyntax(DcmUPS.java:578)
at org.dcm4che2.tool.dcmups.DcmUPS.create(DcmUPS.java:584)
at org.dcm4che2.tool.dcmups.DcmUPS$Operation$1.execute(DcmUPS.java:179)
at org.dcm4che2.tool.dcmups.DcmUPS.main(DcmUPS.java:901)


I modified the ncreate.xml to have a valid study instance UID and patient data, and I got the same error.

I'm using DCM4CHEE 2.17.3 and Toolkit 2.0.29

fleetwoodfc

unread,
Oct 24, 2015, 8:20:14 AM10/24/15
to dcm4che, pablo...@cabolabs.com
After dcm4che2 2.0.25 the SOP Class UIDs changed but DCM4CHEE only supports the original (TrialRetired version) - so use the dcm4che-2.0.25 toolkit for UPS.

UIDs changed from:

<uid uid="1.2.840.10008.5.1.4.34.4.1" keyword="UnifiedProcedureStepPushSOPClassTrialRetired" type="SOP Class">Unified Procedure Step - Push SOP Class - Trial (Retired)</uid>

<uid uid="1.2.840.10008.5.1.4.34.4.2" keyword="UnifiedProcedureStepWatchSOPClassTrialRetired" type="SOP Class">Unified Procedure Step - Watch SOP Class - Trial (Retired)</uid>

<uid uid="1.2.840.10008.5.1.4.34.4.3" keyword="UnifiedProcedureStepPullSOPClassTrialRetired" type="SOP Class">Unified Procedure Step - Pull SOP Class - Trial (Retired)</uid>

<uid uid="1.2.840.10008.5.1.4.34.4.4" keyword="UnifiedProcedureStepEventSOPClassTrialRetired" type="SOP Class">Unified Procedure Step - Event SOP Class - Trial (Retired)</uid>


To:

<uid uid="1.2.840.10008.5.1.4.34.5" keyword="UnifiedWorklistAndProcedureStepSOPInstance" type="Well-known SOP Instance">Unified Worklist and Procedure Step SOP Instance</uid>

<uid uid="1.2.840.10008.5.1.4.34.6" keyword="UnifiedWorklistAndProcedureStepServiceClass" type="Service Class">Unified Worklist and Procedure Step Service Class</uid>

<uid uid="1.2.840.10008.5.1.4.34.6.1" keyword="UnifiedProcedureStepPushSOPClass" type="SOP Class">Unified Procedure Step - Push SOP Class</uid>

<uid uid="1.2.840.10008.5.1.4.34.6.2" keyword="UnifiedProcedureStepWatchSOPClass" type="SOP Class">Unified Procedure Step - Watch SOP Class</uid>

<uid uid="1.2.840.10008.5.1.4.34.6.3" keyword="UnifiedProcedureStepPullSOPClass" type="SOP Class">Unified Procedure Step - Pull SOP Class</uid>

<uid uid="1.2.840.10008.5.1.4.34.6.4" keyword="UnifiedProcedureStepEventSOPClass" type="SOP Class">Unified Procedure Step - Event SOP Class</uid>

Reply all
Reply to author
Forward
0 new messages