В здравоохранении могут быть рабочие процессы, в которых над записями одного типа UPS работают несколько рентгенологов, и только после этого выполняется следующий этап обработки рабочего процесса UPS. В таких сценариях необходимо предусмотреть механизм, при котором новая запись UPS создаётся по завершении предыдущих записей UPS.
На приведённой ниже блок-схеме / конфигурации / тестах описана обработка рабочего процесса UPS для двух исполнителей (людей), работающих с одним типом записей UPS, назначенным каждому из них. Когда оба завершают работу над назначенными им записями UPS, создаётся новая запись UPS на основе настроенного правила (опционально — с определёнными атрибутами, производными от предыдущей записи UPS).
Scheduled Human Performer Code в каждом из них, соответствующий кодам исполнителей,
которые должны работать над записями UPS, создаваемыми каждым из этих правил. При необходимости задайте значения для
Scheduled Human Performer Name и Scheduled Human Performer Organization в каждом из них, соответствующие именам
исполнителей и организациям, к которым они относятся.
Напр. (RADIOLOGIST_1, 99DCM4CHEE, "HumanPerformer1"), HumanPerformer1 и Institution1.
Это полезно в дальнейшем при поиске отдельных записей UPS.UPS Instance UID based on name как 1-{StudyInstanceUID}
и 2-{StudyInstanceUID} соответственно.Worklist Label и Conditions можно задать по мере необходимости.Scheduled Procedure Step Start DateTime Delay может не потребоваться, так как каждый из исполнителей сам затребует
и будет работать над своими записями UPS.Scheduled Workitem Code в каждом из двух правил. Это будет полезно далее
как параметр запроса, когда потребуется создать новую запись UPS по завершении предыдущих записей UPS. Напр.
(EMERGENCY_MR, 99DCM4CHEE, "High Priority MR")UPS Include Patient в True. Это полезно, поскольку атрибуты пациента полученного исследования будут
включены в создаваемые записи UPS — также полезно при отладке запросов к записям UPS.Include Study Instance UID и Include Referenced Request в True. Это необходимо, так как
Study Instance UID в Referenced Request Sequence используется для запроса других записей UPS на основе параметров
запроса, заданных в Requires Other UPS Completed, как указано ниже.Requires Other UPS Completed, каждый из которых соответствует значениям
ScheduledWorkitemCodeSequence.CodeValue и ScheduledWorkitemCodeSequence.CodingSchemeDesignator из
Scheduled Workitem Code, заданного в конфигурациях правила UPS On Store. Напр.ScheduledWorkitemCodeSequence.CodeValue=EMERGENCY_MRScheduledWorkitemCodeSequence.CodingSchemeDesignator=99DCM4CHEEInclude Input Information — COPY_OUTPUT. Установите его в COPY_INPUT, так как в
приведённых ниже тестах предполагается, что два исполнителя не обновляют записи UPS с помощью Output Information Sequence.Conditions с настроенным кодом, соответствующим Scheduled Workitem Code, заданному в правиле
UPS On Store. Это гарантирует, что это правило будет выбрано только для записей UPS, созданных с заданным
Scheduled Workitem Code. Напр.
ScheduledWorkitemCodeSequence=(EMERGENCY_MR, 99DCM4CHEE, "High Priority MR")Include Study Instance UID в True.Scheduled Human Performer Name и Scheduled Workitem Code. Это может быть
полезно на следующем этапе обработки новой созданной записи UPS.Include Referenced Request можно установить в True, если новая созданная запись UPS должна
содержать информацию Referenced Request Sequence, как в предыдущих записях UPS.Сохраните исследование в архив с помощью инструмента storescu.
storescu -c DCM4CHEE@localhost:11112 /path-to-study
Проверьте в UI архива, что для сохранённого исследования созданы 2 записи UPS (в состоянии SCHEDULED).
Имитация сценария, в котором исполнители ищут / затребуют / изменяют состояние записей UPS с помощью инструментов dcm4che.
Используйте инструмент findscu
для поиска записей UPS, назначенных конкретному исполнителю.
findscu -c DCM4CHEE@localhost:11112 -M UPSQuery -r SOPInstanceUID -r ProcedureStepLabel -r WorklistLabel -m ScheduledHumanPerformersSequence/HumanPerformerCodeSequence/CodeValue=RADIOLOGIST_1 -m ScheduledHumanPerformersSequence/HumanPerformerName=HumanPerformer1
Результат должен быть ```` .......... 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 .......... ````
IN PROGRESS и предоставив Transaction UID с помощью инструмента
upsscu
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] ProcedureStepState12: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
..........
- Проверьте в UI архива, что состояние записи UPS изменилось с `SCHEDULED` на `IN PROGRESS`
- Поработайте над записью UPS и обновите её в архиве. Убедитесь, что обновлённые атрибуты содержат
`Unified Procedure Step Performed Procedure Sequence`, который *должен* включать `Transaction UID`,
`Performed Procedure Step Start DateTime`, `Performed Procedure Step End DateTime`,
`Performed Station Name Code Sequence` и `Performed Workitem Code Sequence`. Другие необязательные атрибуты согласно
[Request Type N-SET в атрибутах UPS SOP Class](http://dicom.nema.org/medical/dicom/current/output/html/part04.html#sect_CC.2.5.1.3)
также могут быть отправлены. См. пример [updateUPS](https://raw.githubusercontent.com/wiki/dcm4che/dcm4chee-arc-light/data/updateUPS.xml)
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
..........
- Измените состояние записи UPS с `IN PROGRESS` на `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
..........
- Повторите описанные выше шаги для второго исполнителя
- Поиск
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
..........
- Затребуйте в `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
..........
````
- Проверьте в UI архива изменение состояния этой записи UPS на `IN PROGRESS`
- Поработайте над ней и обновите запись UPS. Убедитесь, что обязательные атрибуты присутствуют среди обновлённых
атрибутов (см. шаг update UPS для первого исполнителя)
````
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
..........
````
- Установите состояние в `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
..........
````
Procedure Step State, установленным в SCHEDULED.