Руководство к использованию стандарта FHIR в ЦИСЗ
0.2.7245 - ci-build
ServiceRequestImaging и направляет в ЦИСЗ. ServiceRequestImaging создается со статусом status = active;ServiceRequestImaging в контексте пациента;active свидетельствует о том, что исследование по этому направлению еще не проводилось. Рекомендуется брать в работу только их, чтобы лишний раз не облучать пациента;PatientID указывать карточку пациента в МИС;ImagingStudyBasic. Рекомендуется делать запрос в контексте организации с указанием даты исследования и PatientID;ImagingStudyBy с статусом registered на основании списка ImagingStudyBasic по выбранному исследованию и направляет в ЦИСЗ;ServiceRequestImaging, на который ссылается созданный ImagingStudyBy, меняет статус на status = on-hold;ImagingStudyBy со статусом status = registered;ImagingDiagnosticReport в ЦИСЗ. Если врач-диагност запросил второе мнение, то созданный ImagingDiagnosticReport должен иметь статус status = preliminary. В ином случае ImagingDiagnosticReport должен иметь статус status = final;ServiceRequestImaging на значение status = completed в тот момент, когда создается ресурс ImagingDiagnosticReport со статусом status = final со сылкой на этот ресурс;ServiceRequestImaging и направляет в ЦИСЗ. ServiceRequestImaging создается со статусом status = active;ServiceRequestImaging в контексте пациента;active сведетельствует о том, что исследование по этому направлению еще не проводилось. Рекомендуется брать в работу только их, чтобы лишний раз не облучать пациента;ImagingStudyBy со статусом registered на загруженные исследования и направляет в ЦИСЗ;ServiceRequestImaging, на который ссылается созданный ImagingStudyBy, меняет статус на значение status = on-hold;ImagingStudyBy со статусом status = registered;ImagingDiagnosticReport в ЦИСЗ. Если врач-диагност запросил второе мнение, созданный ImagingDiagnosticReport должен иметь статус status = preliminary. В ином случае ImagingDiagnosticReport должен иметь статус status = final;ServiceRequestImaging на значение status = completed в тот момент, когда создается ресурс ImagingDiagnosticReport со статусом status = final со сылкой на этот ресурс.Создание ресурсов:
Для добавления нового устройства в ЦИСЗ администратору ОЗ необходимо предоставить весь необходимый для создания ресурса Device набор данных. При необходимости добавления DICOM-принтера также необходимо указать значения для создания DeviceDefinition.
DeviceDefinition по своей организации;DeviceDefinition с нужными параметрами – используется его ссылка, если нет – администратор ОЗ создает новый DeviceDefinition.Device в ЦИСЗ. Если к Device был создан DeviceDefinition – ссылка на ресурс указывается в Device.Использование Device:
ImagingStudy как устройство, на котором было произведено исследование.ImagingStudy МИС опрашивает ЦИСЗ на получение ресурса Device по организации и AETitle устройства. Если устройство не найдено, МИС необоходимо сообщить об этой ошибке врачу, описывающему ImagingStudy.Device;Device нужный;DeviceDefinition для выбранного Device;DeviceDefinition и отправляет на печать.Примечание:
При передаче DICOM-ов в центральный PACS по TCP в DICOM в теге (0008,0080) LO Institution Name необходимо передавать OrganizationID из НСИ. Для этого необходимо вызвать инженера, обслуживающего локальный PACS или диагностический аппарат, и попросить его установить значение этого тэга.
sequenceDiagram
participant P as Пациент
participant D as Врач
participant M as МИС
participant C as ЦИСЗ
participant L as Лаборант
participant PAC as PACS
participant PCIS as PACS-ЦИСЗ
participant VD as Врач-диагност
participant DV as DICOM Viewer
participant VD2 as Врач-диагност
(второе мнение)
Note over P,VD: 1. Инициация обследования
P->>D: Обращается за помощью
D->>M: Открывает карточку пациента
D->>M: Создает направление на исследование
M->>C: Формирует ServiceRequestImaging (status: active)
Note over P,VD: 2. Подготовка к обследованию
P->>L: Приходит в мед. учреждение
L->>M: Открывает карточку пациента
L->>M: Запрашивает список направлений пациента
M->>C: Запрашивает ServiceRequestImaging
C-->>M: Возвращает список направлений с статусами
M->>L: Показывает список направления пациента
L->>M: Берет в работу направление
Note over P,VD: 3. Проведение исследования
L->>PAC: Проводит диагностическое исследование
Note right of L: PatientID = карточка МИС
PAC->>PCIS: Загружает исследование в PACS-ЦИСЗ
PCIS-->>C: Отправляет на сохранение метадату исследования
C->>C: Сохраняет метадату в ресурс ImagingStudyBasic
Note over P,VD: 4. Обработка результатов
L->>M: Запрашивает список загруженных исследований
M->>C: Поиск ImagingStudyBasic (по assigner, created, patient-id)
C-->>M: Возвращает список ImagingStudyBasic
M->>L: Показывает список непривязанных исследований по запросу
L->>M: Выбирает исследование пациента
Note over P,VD: 5. Создание и регистрация
M->>C: Формирует ImagingStudyBy
C->>C: Изменяет ServiceRequestImaging (status: on-hold)
Note over P,VD: 6. Диагностическое описание
P->>C: Просматривает список исследований в ЛКП, может скачать свое
VD->>M: Открывает список исследований (status: registered)
M->>C: Поиск ImagingStudyBy (status: registered)
C-->>M: Возвращает список исследований
VD->>M: Выбирает исследование
M->>DV: Открывает DICOM Viewer
Note over P,VD: 7. Формирование заключения
VD->>DV: Просматривает и анализирует изображения
VD->>DV: Сохраняет аннотации (опционально)
VD->>M: Создает ImagingDiagnosticReport
Note over VD,VD: Запрашивает второе мнение (опционально)
Note over P,VD: 8. Финальная обработка
alt Второе мнение запрошено
M->>C: Создает ImagingDiagnosticReport (status: preliminary)
Note over VD2,VD2: ПОВТОРЕНИЕ ШАГОВ 6-8
для второго мнения
VD2->>M: Создает ImagingDiagnosticReport (второе мнение)
M->>C: Создает ImagingDiagnosticReport (status: final)
else Второе мнение не запрошено
M->>C: Создает ImagingDiagnosticReport (status: final)
end
C->>C: ServiceRequestImaging (status: completed)
ImagingStudyBy (status: available)
Note over P,VD: Завершение процесса
P->>C: Просматривает список заключений в ЛКП
sequenceDiagram
alt При необходимости создания DeviceDefinition
Администратор ОЗ->>ЦИСЗ: Запрашивает список DeviceDefinition
Администратор ОЗ->>ЦИСЗ: Создает DeviceDefinition(если нет нужного)
end
Администратор ОЗ->>ЦИСЗ: Создает Device
opt Создание ImagingStudy
МИС->>ЦИСЗ: Запрашивает Device по организации и AETitle
ЦИСЗ->>МИС: Отдает Device
МИС->>ЦИСЗ: Ссылается на конкретный Device при создании ImagingStudy
end
opt Печать на DICOM-принтере
DICOM Viewer->>ЦИСЗ: Запрашивает список Device
ЦИСЗ->>DICOM Viewer: Отдает список Device
DICOM Viewer->>ЦИСЗ: Запрашивает DeviceDefinition по Device
ЦИСЗ->>DICOM Viewer: Отдает DeviceDefinition
DICOM Viewer->>DICOM-принтер: Отправляет на печать DeviceImagingStudy
end
sequenceDiagram
participant Пациент
participant Врач
participant МИС
participant ЦИСЗ
participant DICOM Viewer
Пациент->>Врач: Пришел на прием
Врач->>МИС: Открыть карточку пациента
МИС->>ЦИСЗ: Запросить список исследований пациента
ЦИСЗ-->>МИС: Список исследований
МИС->>Врач: Отобразить список исследований
Врач->>МИС: Выбрать исследование и нажать "открыть"
МИС->>DICOM Viewer: Открыть исследование в новой вкладке
DICOM Viewer->>Врач: Отобразить исследование
Метод: POST
URL: [FHIR_BASE]/{compartmentType}/{compartmentResourceId}/ServiceRequest/{id}/$set-status
Авторизация: Bearer <access_token>
Описание: Операция позволяет изменить статус ресурса ServiceRequestImaging. Может выполняться в контексте организации. При переводе статуса в revoked (отмена направления) обязательно передаётся параметр declineReason с причиной отмены.
Тело запроса передаётся в виде ресурса Parameters. Входные параметры (path):
| № | Обозначение | Тип данных | Обязательность | Наименование | Пример |
|---|---|---|---|---|---|
| 1 | compartmentType | string | 1..1 | Тип контекста (Organization) | “Organization” |
| 2 | compartmentResourceId | string | 1..1 | Идентификатор контекста | “a1a103d1-bf02-4c95-818a-3e3bc32cabe0” |
| 3 | id | string | 1..1 | Идентификатор ресурса ServiceRequestImaging | “mi-6f7e619e-b4a6-11f0-9a35-6655202d800b” |
Пример запроса на изменение статуса:
Body:
{
"resourceType": "Parameters",
"parameter": [
{
"name": "status",
"valueCode": "[status_code]"
}
]
}
Пример запроса на отмену:
Body:
{
"resourceType": "Parameters",
"parameter": [
{
"name": "status",
"valueCode": "revoked"
},
{
"name": "declineReason",
"valueCode": "refusal"
}
]
}
Выходные параметры:
| № | Обозначение | Тип данных | Наименование |
|---|---|---|---|
| 1 | return | OperationOutcome | Операция возвращает ресурс OperationOutcome, который может содержать информацию об успешном выполнении операции или перечень ошибок, которые возникли при получении запроса на выполнение операции или в результате ее выполнения |
Результат выполнения:
Пример успешного выполнения изменения статуса:
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "success",
"code": "success",
"details": {
"text": "Статус ресурса {ServiceRequest_Id} успешно изменен на {status_code}"
}
}
]
}
Пример изменения статуса с информацией об ошибке (при отмене отсутствует declineReason):
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "invalid",
"details": {
"text": "При установки статуса 'revoked', должен быть указан единственный name = 'declineReason'."
},
"diagnostics": "При обработке запроса произошла ошибка на стороне МИС."
}
]
}
Автоматические изменения статусов:
| № п/п | Ситуация | Текст сообщения об ошибке для технических специалистов | Текст сообщения об ошибке в человекочитаемом формате | error/warning |
|---|---|---|---|---|
| 1 | При вызове api/metadata/Get, значение Conditions пустое. | Не заданы параметры поиска. | Не заданы параметры поиска. | error |
| 2 | Создание ImagingStudy c status != registered. | Запрещено создание ImagingStudy.status != ‘registered’. | Набор изображений исследования должен быть в статусе ‘изображения загружены, заключение ещё не сформировано’. | error |
| 3 | Создание ServiceRequest c status != active. | Запрещено создание ServiceRequest.status != ‘active’. | Направление на визуальное исследование должно быть в статусе ‘не производилось исследование’. | error |
| 4 | Создание DiagnosticReport.status != (preliminary or final). | DiagnosticReport должен иметь статус preliminary или final. | Статус в заключении диагностического исследования должен быть ‘в работе, требует подтверждения’ или ‘окончательное заключение’. | error |
| 5 | Создание ServiceRequest.priority != (routine or urgent). | ServiceRequest.priority должен быть либо ‘Routine’ либо ‘Urgent’. | Приоритет выполнения в направлении на визуальное исследование должен быть ‘плановый’ или ‘срочный’. | error |
| 6 | При обращении: Device/$set-status не в контексте organization ServiceRequest/$set-status не в контексте organization |
Установка статуса доступна только в контексте организации. | При обработке запроса произошла ошибка на стороне МИС. | error |
| 7 | Во время создания ImagingStudy, не были найдены метаданные | Изображения с dicomIds = [ {notLoadedDicomIds} ] не загружены. | Произошла ошибка. Изображения не загружены. | error |
| 8 | При создании ImagingStudy, если ImagingStudy.basedOn (ServiceRequest).status = completed. |
Не удается добавить ImagingStudy, поскольку ServiceRequest.id = ‘{serviceRequestId}’ имеет status = ‘completed’. | Не удается добавить набор изображений исследования, поскольку направление на визуальное исследование имеет статус ‘проведено исследование и готово заключение’. | error |
| 9 | При вызове Meta/Add, basic уже существует (по study-instance-uid, series-instance-uid, sop-instance-uid). | Basic c такими свойствами уже существует. | Метаданные переданных медицинских изображений с такими свойствами уже существует. | error |
| 10 | При вызове ImagingStudy/{id}/$updateState, Parameters.parameter.count = 0 | Не указаны параметры. | Не указаны параметры. | error |
| 11 | ImagingStudy/{id}/$updateState Device/{id}/$set-status ServiceRequest/{id}/$set-status |
Ресурс {resourceType}/{id} не найден. | ServiceRequest: Направление на визуальное исследование не найдено. Device: DICOM-устройство не найдено. ImagingStudy: Набор изображений исследования не найдено Basic: Метаданные переданных медицинских изображений не найдены. DeviceDefinition: Описание DICOM принтера не найдено. DiagnosticReport: Заключение диагностического исследования не найдено. other: Ресурс не найден. |
error |
| 12 | Если в area несколько профилей ServiceRequest/Device, а set-status ограничен определенными профилями | $set-status доступен для {profile}. | При обработке запроса произошла ошибка на стороне МИС. | error |
| 13 | При вызове Device/{id}/$set-status, где status != (active or inactive) | Нельзя сменить на статус ‘{status}’. Разрешено изменять на статусы ‘active’ и ‘inactive’. | Разрешено изменять на статусы ‘активный’ и ‘неактивный’. | error |
| 14 | При вызове: ServiceRequest/{id}/$set-status - контекст организации не совпадает с departmentIds Device/{id}/$set-status Контекст организации не совпадает с departmentIds device.owner не совпадает с контекстом организации |
Изменение статуса ServiceRequest разрешено только в рамках своей организации. | При обработке запроса произошла ошибка на стороне МИС. | error |
| 15 | При вызове Meta/Add Один из: modality series-instance-uid sop-instance-uid sop-class-uid patient-id study-instance-uid institution-id |
Отсутствуют обязательные данные: {requiredParams}. | Отсутствуют обязательные данные: {requiredParams}. | error |
| 16 | Было указано >1 или не указан name в Parameters.parameter ImagingStudy/{id}/$updateState → imageState Device/{id}/$set-status → status ServiceRequest/{id}/$set-status → status, declineReason |
Parameters.parameter должен содержать единственный parameter.name = ‘{name}’. | При обработке запроса произошла ошибка на стороне МИС. | error |
| 17 | Указан не верный тип value ImagingStudy/{id}/$updateState → imageState Device/{id}/$set-status → device ServiceRequest/{id}/$set-status → status, declineReason |
Значение в name = ‘{name}’, должно быть указано в valueCode. | При обработке запроса произошла ошибка на стороне МИС. | error |
| 18 | При установке статуса ServiceRequest ‘revoked’ не указан единственный параметр ‘declineReason’. | При установки статуса ‘revoked’, должен быть указан единственный name = ‘declineReason’. | При обработке запроса произошла ошибка на стороне МИС. | error |
| 19 | Значение не по справочнику ImagingStudy/{id}/$updateState → imageState Device/{id}/$set-status → status ServiceRequest/{id}/$set-status → status, declineReason |
Неизвестное значение valueCode = ‘{code}’. | При обработке запроса произошла ошибка на стороне МИС. | error |
| 20 | В Parameters.parameter передано не верное кол-во parameter ImagingStudy/{id}/$updateState Device/{id}/$set-status ServiceRequest/{id}/$set-status |
Задано неверное количество Parameters.parameter ({parameterCount}), ожидалось {expectedParameters}. | При обработке запроса произошла ошибка на стороне МИС. | error |
| 21 | ServiceRequest/{id}/$set-status status должен быть только revoked. | ServiceRequest.status нельзя изменить на ‘{status}’. Ожидается ‘revoked’. | Изменять статус в направлении на визуальное исследование можно только на ‘отменено’. | error |
| 22 | Установка статуса не соответствует типу ресурса ServiceRequest или Device. | $set-status для ‘{resourceType}’ не поддерживается. | При обработке запроса произошла ошибка на стороне МИС. | error |