Double Reading UPS - dcm4che/dcm4chee-arc-light GitHub Wiki

Overview

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)

Configuration

  • 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 and Scheduled 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 and Institution1. 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 as 1-{StudyInstanceUID} and 2-{StudyInstanceUID} respectively.
    • Worklist Label and Conditions 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 to True. 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 and Include Referenced Request to True. This is necessary as the Study Instance UID in the Referenced Request Sequence is used to query for the other UPS records based on the query parameters set in Requires Other UPS Completed as mentioned below.
  • Refer UPS On UPS Completed for base configurations.
    • Set two query parameters for Requires Other UPS Completed each corresponding to values of ScheduledWorkitemCodeSequence.CodeValue and ScheduledWorkitemCodeSequence.CodingSchemeDesignator of the Scheduled Workitem Code set in UPS On Store rule configurations. For eg.
      • ScheduledWorkitemCodeSequence.CodeValue=EMERGENCY_MR
      • ScheduledWorkitemCodeSequence.CodingSchemeDesignator=99DCM4CHEE
    • Default value of Include Input Information is COPY_OUTPUT. Set it to COPY_INPUT as in the tests below, we assume that the two human performers do not update the UPS records with Output Information Sequence.
    • Set Conditions with configured code corresponding to Scheduled Workitem Code set in UPS On Store rule. This shall ensure that this rule is picked only for the UPS records created with the given Scheduled Workitem Code. For eg. ScheduledWorkitemCodeSequence=(EMERGENCY_MR, 99DCM4CHEE, "High Priority MR")
    • Set Include Study Instance UID to True.
    • Optionally, set values for Scheduled Human Performer Name and Scheduled 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 to True, if the new created UPS record shall contain the information of the Referenced Request Sequence as in the previous UPS records.

Verification & Tests

  • 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 a Transaction 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 to IN 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 include Transaction UID, Performed Procedure Step Start DateTime, Performed Procedure Step End DateTime, Performed Station Name Code Sequence and Performed 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 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
    ..........
    
    • 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
        ..........
        
  • 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 to SCHEDULED.

⚠️ **GitHub.com Fallback** ⚠️