Double Reading UPS - dcm4che/dcm4chee-arc-light GitHub Wiki
In a healthcare there could be certain workflows where more than one radiologist shall work on a single type of UPS record, only after which shall the next step in UPS workflow processing be executed. In such scenarios it becomes necessary to provide a mechanism by which a new UPS record is created on completion of previous UPS records.
In below flow diagram / configuration / tests, a UPS workflow processing has been explained for 2 human performers working on a single type of UPS record assigned to each one of them. When both of them complete their work on their assigned UPS records, a new UPS record is created based on the configured rule (optionally with certain attributes derived from previous UPS record)
- Create two UPS On Store rules, to create UPS records for each of the two human performers.
- Ensure to set code for
Scheduled Human Performer Code
in each of them corresponding to the codes of the human performers supposed to work on the UPS records created by each of these rules. Optionally set values for
Scheduled Human Performer Name
andScheduled Human Performer Organization
in each of them corresponding to the names of the human performers and organizations they belong to. Eg.(RADIOLOGIST_1, 99DCM4CHEE, "HumanPerformer1")
,HumanPerformer1
andInstitution1
. This is useful later in searching for the individual UPS records. - In order that 2 UPS records get created in the archive, set
UPS Instance UID based on name
as1-{StudyInstanceUID}
and2-{StudyInstanceUID}
respectively. -
Worklist Label
andConditions
may be set as required. -
Scheduled Procedure Step Start DateTime Delay
may not be necessary as each of the human performers shall claim and work on their respective UPS records. - Set a common workitem code for
Scheduled Workitem Code
in each of the two rules. This shall be useful later to be used as query parameter when new UPS record has to be created based on completion of previous UPS records. For eg.(EMERGENCY_MR, 99DCM4CHEE, "High Priority MR")
- Set
UPS Include Patient
toTrue
. This shall be useful as patient attributes of the received study shall be included in the created UPS records - also useful when UPS records are queried for in terms of debugging. - Set
Include Study Instance UID
andInclude Referenced Request
toTrue
. This is necessary as theStudy Instance UID
in theReferenced Request Sequence
is used to query for the other UPS records based on the query parameters set inRequires Other UPS Completed
as mentioned below.
- Ensure to set code for
- Refer UPS On UPS Completed for base configurations.
- Set two query parameters for
Requires Other UPS Completed
each corresponding to values ofScheduledWorkitemCodeSequence.CodeValue
andScheduledWorkitemCodeSequence.CodingSchemeDesignator
of theScheduled Workitem Code
set in UPS On Store rule configurations. For eg.ScheduledWorkitemCodeSequence.CodeValue=EMERGENCY_MR
ScheduledWorkitemCodeSequence.CodingSchemeDesignator=99DCM4CHEE
- Default value of
Include Input Information
isCOPY_OUTPUT
. Set it toCOPY_INPUT
as in the tests below, we assume that the two human performers do not update the UPS records withOutput Information Sequence
. - Set
Conditions
with configured code corresponding toScheduled Workitem Code
set in UPS On Store rule. This shall ensure that this rule is picked only for the UPS records created with the givenScheduled Workitem Code
. For eg.ScheduledWorkitemCodeSequence=(EMERGENCY_MR, 99DCM4CHEE, "High Priority MR")
- Set
Include Study Instance UID
toTrue
. - Optionally, set values for
Scheduled Human Performer Name
andScheduled Workitem Code
, as required. This could be beneficial in the next step processing of the new created UPS record. - Additionally,
Include Referenced Request
maybe set toTrue
, if the new created UPS record shall contain the information of theReferenced Request Sequence
as in the previous UPS records.
- Set two query parameters for
-
Store a study to archive using storescu tool.
storescu -c DCM4CHEE@localhost:11112 /path-to-study
-
Verify in archive UI, that 2 UPS records (with
SCHEDULED
state) are created for the stored study. -
Simulating the case where human performers search / claim / change state for UPS records using dcm4che tools.
- Use findscu tool to search for UPS records assigned to specific human performer.
findscu -c DCM4CHEE@localhost:11112 -M UPSQuery -r SOPInstanceUID -r ProcedureStepLabel -r WorklistLabel -m ScheduledHumanPerformersSequence/HumanPerformerCodeSequence/CodeValue=RADIOLOGIST_1 -m ScheduledHumanPerformersSequence/HumanPerformerName=HumanPerformer1
- This should result in
.......... 12:15:54,281 DEBUG - FINDSCU->DCM4CHEE(1) >> 1:C-FIND-RSP Dataset: (0008,0018) UI [2.25.78067660710700553277138239369269507261] SOPInstanceUID (0040,4034) SQ [1 Items] ScheduledHumanPerformersSequence >Item #1 >(0040,4009) SQ [1 Items] HumanPerformerCodeSequence >>Item #1 >>(0008,0100) SH [RADIOLOGIST_1] CodeValue >(0040,4037) PN [HumanPerformer1] HumanPerformerName (0074,1202) LO [UPS1-Processing] WorklistLabel (0074,1204) LO [UPS1-Processing] ProcedureStepLabel ..........
- Claim the workitem by setting the state to
IN PROGRESS
and providing aTransaction UID
using the upsscu tool
upsscu -c DCM4CHEE@localhost:11112 -O changeState -P 1.2.3.4.5.6.7.8.9.10.1 -u 2.25.78067660710700553277138239369269507261
.......... 12:23:23,541 DEBUG - UPSSCU->DCM4CHEE(1) << 1:N-ACTION-RQ Dataset: (0008,1195) UI [=1.2.3.4.5.6.7.8.9.10.1] TransactionUID (0074,1000) CS [IN PROGRESS] ProcedureStepState 12:23:23,564 INFO - UPSSCU->DCM4CHEE(1) >> 1:N-ACTION-RSP[pcid=3, status=0H cuid=1.2.840.10008.5.1.4.34.6.1 - Unified Procedure Step - Push SOP Class iuid=2.25.78067660710700553277138239369269507261 - ? tsuid=1.2.840.10008.1.2 - Implicit VR Little Endian] 12:23:23,564 DEBUG - UPSSCU->DCM4CHEE(1) >> 1:N-ACTION-RSP Command: (0000,0002) UI [1.2.840.10008.5.1.4.34.6.1] AffectedSOPClassUID (0000,0100) US [33072] CommandField (0000,0120) US [1] MessageIDBeingRespondedTo (0000,0800) US [257] CommandDataSetType (0000,0900) US [0] Status (0000,1000) UI [2.25.78067660710700553277138239369269507261] AffectedSOPInstan ..........
- Verify in archive UI that the state of the UPS record is changed from
SCHEDULED
toIN PROGRESS
- Work on the UPS record and update it in the archive. Ensure that updated attributes contain
Unified Procedure Step Performed Procedure Sequence
which shall includeTransaction UID
,Performed Procedure Step Start DateTime
,Performed Procedure Step End DateTime
,Performed Station Name Code Sequence
andPerformed Workitem Code Sequence
. Other optional attributes as per Request Type N-SET in UPS SOP Class attributes may be sent as well. See sample updateUPS
upsscu -c DCM4CHEE@localhost:11112 -O update -u 2.25.78067660710700553277138239369269507261 -- updateUPS.xml
.......... 14:32:55,421 DEBUG - UPSSCU->DCM4CHEE(1) << 1:N-SET-RQ Dataset: (0008,1195) UI [=1.2.3.4.5.6.7.8.9.10.1] TransactionUID (0074,1216) SQ [1 Items] UnifiedProcedureStepPerformedProcedureSequence >Item #1 >(0040,4019) SQ [1 Items] PerformedWorkitemCodeSequence >>Item #1 >>(0008,0100) SH [MR_INTERPRETATION] CodeValue >>(0008,0102) SH [99DCM4CHEE] CodingSchemeDesignator >>(0008,0104) LO [MR studies interpretation] CodeMeaning >(0040,4028) SQ [1 Items] PerformedStationNameCodeSequence >>Item #1 >>(0008,0100) SH [RADIOLOGY_MR] CodeValue >>(0008,0102) SH [99DCM4CHEE] CodingSchemeDesignator >>(0008,0104) LO [MR department] CodeMeaning >(0040,4050) DT [20201029010101] PerformedProcedureStepStartDateTime >(0040,4051) DT [20201029020202] PerformedProcedureStepEndDateTime 14:32:55,465 INFO - UPSSCU->DCM4CHEE(1) >> 1:N-SET-RSP[pcid=3, status=0H cuid=1.2.840.10008.5.1.4.34.6.1 - Unified Procedure Step - Push SOP Class iuid=2.25.78067660710700553277138239369269507261 - ? tsuid=1.2.840.10008.1.2 - Implicit VR Little Endian] 14:32:55,465 DEBUG - UPSSCU->DCM4CHEE(1) >> 1:N-SET-RSP Command: (0000,0002) UI [1.2.840.10008.5.1.4.34.6.1] AffectedSOPClassUID (0000,0100) US [33056] CommandField (0000,0120) US [1] MessageIDBeingRespondedTo (0000,0800) US [257] CommandDataSetType (0000,0900) US [0] Status (0000,1000) UI [2.25.78067660710700553277138239369269507261] AffectedSOPInstan ..........
- Change UPS record state from
IN PROGRESS
toCOMPLETED
upsscu -c DCM4CHEE@localhost:11112 -O changeState -C 1.2.3.4.5.6.7.8.9.10.1 -u 2.25.78067660710700553277138239369269507261
.......... 14:34:22,382 DEBUG - UPSSCU->DCM4CHEE(1) << 1:N-ACTION-RQ Dataset: (0008,1195) UI [=1.2.3.4.5.6.7.8.9.10.1] TransactionUID (0074,1000) CS [COMPLETED] ProcedureStepState 14:34:22,477 INFO - UPSSCU->DCM4CHEE(1) >> 1:N-ACTION-RSP[pcid=3, status=0H cuid=1.2.840.10008.5.1.4.34.6.1 - Unified Procedure Step - Push SOP Class iuid=2.25.78067660710700553277138239369269507261 - ? tsuid=1.2.840.10008.1.2 - Implicit VR Little Endian] 14:34:22,478 DEBUG - UPSSCU->DCM4CHEE(1) >> 1:N-ACTION-RSP Command: (0000,0002) UI [1.2.840.10008.5.1.4.34.6.1] AffectedSOPClassUID (0000,0100) US [33072] CommandField (0000,0120) US [1] MessageIDBeingRespondedTo (0000,0800) US [257] CommandDataSetType (0000,0900) US [0] Status (0000,1000) UI [2.25.78067660710700553277138239369269507261] AffectedSOPInstan ..........
- Repeat the above steps as / for second human performer
- Search
findscu -c DCM4CHEE@localhost:11112 -M UPSQuery -r SOPInstanceUID -r ProcedureStepLabel -r WorklistLabel -m ScheduledHumanPerformersSequence/HumanPerformerCodeSequence/CodeValue=RADIOLOGIST_2 -m ScheduledHumanPerformersSequence/HumanPerformerName=HumanPerformer2
.......... 12:16:35,206 DEBUG - FINDSCU->DCM4CHEE(1) >> 1:C-FIND-RSP Dataset: (0008,0018) UI [2.25.119510196879599731106227382995922197744] SOPInstanceUID (0040,4034) SQ [1 Items] ScheduledHumanPerformersSequence >Item #1 >(0040,4009) SQ [1 Items] HumanPerformerCodeSequence >>Item #1 >>(0008,0100) SH [RADIOLOGIST_2] CodeValue >(0040,4037) PN [HumanPerformer2] HumanPerformerName (0074,1202) LO [UPS2-Processing] WorklistLabel (0074,1204) LO [UPS2-Processing] ProcedureStepLabel ..........
- Claim to
IN PROGRESS
upsscu -c DCM4CHEE@localhost:11112 -O changeState -P 1.2.3.4.5.6.7.8.9.10.2 -u 2.25.119510196879599731106227382995922197744
.......... 14:44:18,436 DEBUG - UPSSCU->DCM4CHEE(1) << 1:N-ACTION-RQ Dataset: (0008,1195) UI [1.2.3.4.5.6.7.8.9.10.2] TransactionUID (0074,1000) CS [IN PROGRESS] ProcedureStepState 14:44:18,468 INFO - UPSSCU->DCM4CHEE(1) >> 1:N-ACTION-RSP[pcid=3, status=0H cuid=1.2.840.10008.5.1.4.34.6.1 - Unified Procedure Step - Push SOP Class iuid=2.25.119510196879599731106227382995922197744 - ? tsuid=1.2.840.10008.1.2 - Implicit VR Little Endian] 14:44:18,469 DEBUG - UPSSCU->DCM4CHEE(1) >> 1:N-ACTION-RSP Command: (0000,0002) UI [1.2.840.10008.5.1.4.34.6.1] AffectedSOPClassUID (0000,0100) US [33072] CommandField (0000,0120) US [1] MessageIDBeingRespondedTo (0000,0800) US [257] CommandDataSetType (0000,0900) US [0] Status (0000,1000) UI [2.25.119510196879599731106227382995922197744] AffectedSOPInsta ..........
- Verify in archive UI of state change of this UPS record to
IN PROGRESS
- Work on it and update the UPS record. Ensure the required attributes are present in the updated attributes (See
update UPS step for first human performer)
upsscu -c DCM4CHEE@localhost:11112 -O update -u 2.25.119510196879599731106227382995922197744 -- updateUPS.xml
.......... 14:49:44,515 DEBUG - UPSSCU->DCM4CHEE(1) << 1:N-SET-RQ Dataset: (0008,1195) UI [1.2.3.4.5.6.7.8.9.10.2] TransactionUID (0074,1216) SQ [1 Items] UnifiedProcedureStepPerformedProcedureSequence >Item #1 >(0040,4019) SQ [1 Items] PerformedWorkitemCodeSequence >>Item #1 >>(0008,0100) SH [MR_INTERPRETATION] CodeValue >>(0008,0102) SH [99DCM4CHEE] CodingSchemeDesignator >>(0008,0104) LO [MR studies interpretation] CodeMeaning >(0040,4028) SQ [1 Items] PerformedStationNameCodeSequence >>Item #1 >>(0008,0100) SH [RADIOLOGY_MR] CodeValue >>(0008,0102) SH [99DCM4CHEE] CodingSchemeDesignator >>(0008,0104) LO [MR department] CodeMeaning >(0040,4050) DT [20201029010101] PerformedProcedureStepStartDateTime >(0040,4051) DT [20201029020202] PerformedProcedureStepEndDateTime 14:49:44,566 INFO - UPSSCU->DCM4CHEE(1) >> 1:N-SET-RSP[pcid=3, status=0H cuid=1.2.840.10008.5.1.4.34.6.1 - Unified Procedure Step - Push SOP Class iuid=2.25.119510196879599731106227382995922197744 - ? tsuid=1.2.840.10008.1.2 - Implicit VR Little Endian] 14:49:44,566 DEBUG - UPSSCU->DCM4CHEE(1) >> 1:N-SET-RSP Command: (0000,0002) UI [1.2.840.10008.5.1.4.34.6.1] AffectedSOPClassUID (0000,0100) US [33056] CommandField (0000,0120) US [1] MessageIDBeingRespondedTo (0000,0800) US [257] CommandDataSetType (0000,0900) US [0] Status (0000,1000) UI [2.25.119510196879599731106227382995922197744] AffectedSOPInsta ..........
- Set state to
COMPLETED
upsscu -c DCM4CHEE@localhost:11112 -O changeState -C 1.2.3.4.5.6.7.8.9.10.1 -u 2.25.78067660710700553277138239369269507261
.......... 14:34:22,382 DEBUG - UPSSCU->DCM4CHEE(1) << 1:N-ACTION-RQ Dataset: (0008,1195) UI [=1.2.3.4.5.6.7.8.9.10.1] TransactionUID (0074,1000) CS [COMPLETED] ProcedureStepState 14:34:22,477 INFO - UPSSCU->DCM4CHEE(1) >> 1:N-ACTION-RSP[pcid=3, status=0H cuid=1.2.840.10008.5.1.4.34.6.1 - Unified Procedure Step - Push SOP Class iuid=2.25.78067660710700553277138239369269507261 - ? tsuid=1.2.840.10008.1.2 - Implicit VR Little Endian] 14:34:22,478 DEBUG - UPSSCU->DCM4CHEE(1) >> 1:N-ACTION-RSP Command: (0000,0002) UI [1.2.840.10008.5.1.4.34.6.1] AffectedSOPClassUID (0000,0100) US [33072] CommandField (0000,0120) US [1] MessageIDBeingRespondedTo (0000,0800) US [257] CommandDataSetType (0000,0900) US [0] Status (0000,1000) UI [2.25.78067660710700553277138239369269507261] AffectedSOPInstan ..........
- Search
-
Now verify in the archive UI that on completion of both the UPS records, third UPS record (eg. for Verification by a senior Radiologist) gets created, with
Procedure Step State
set toSCHEDULED
.