Создание предзаказа
Работа со справочниками
Создание предзаказа имеет много общего с созданием заявки на лабораторное исследование. Для создания предзаказа на лабораторное исследование необходимо:
- Получить доступную номенклатуру для предзаказа
- Сформировать заявку на создание предзаказа
- Выдать права информационной системе, которая создает предзаказ
- Забрать результаты по предзаказу
Получение номенклатуры
Получение номенклатуры подробно описано в разделе создание заявки на лабораторное исследование
Формирование заявки на создание предзаказа
POST fhir/$CreateDiagnosticRequest
Имя | Location | Описание |
---|---|---|
Authorization | Header | см. Авторизация |
Bundle | object | Объект Bundle в спецификации FHIR. Тип Bundle должен быть "collection". Bundle содержит набор сущностей необходимых для создания предзаказа (описано ниже) |
Bundle должен включать набор ресурсов необходимых для создания предзаказа в лаборатории, ресурсы задаются как массив Entity в Bundle
Обязательные ресурсы для создания предзаказа включают в себя:
- ProcedureRequest (описывает каждое отдельное исследование в заказе)
- Task (для управления жизненным циклом)
- Specimen (для задания типа биоматериала) (некоторые лаборатории разрешают опускать этот ресурс)
- Patient (информация о пациенте)
- Contract (информация о контракте или ссылка на существующий контракт)
Для ресурса ProcedureRequest и Task действуют те же ограничения, что описаны в разделе создание заявки на лабораторное исследование.
Для ресурса Specimen должны быть заполнены поля type.coding
, subject.reference
и container.type.coding
. Пример:
{
"fullUrl": "urn:uuid:6ff6bb51-3706-4a0f-9bb8-d6669ff6c981",
"resource": {
"resourceType": "Specimen",
"meta": {
"security": [{
"system": "read",
"code": "9bce8a66-4d0d-4f85-b527-e8cd3e1f3739"
}
]
},
"type": {
"coding": [{
"system": "https://api.medlinx.online/terminology/specimen-type",
"code": "122555007"
}
]
},
"subject": {
"reference": "patient/77998442-34b2-4207-8616-3c685344bdd9"
},
"container": [{
"type": {
"coding": [{
"system": "https://api.medlinx.online/terminology/specimen_type",
"code": "ВПЖЕЛТГЕЛЬ"
}
]
}
}
],
"collection": {
"collectedDateTime": "2019-08-16T06:40:17Z"
}
}
}
У всех ProcedureRequest в поле SupportingInfo должна быть ссылка на контракт по которому создается заявка. Все ProcedureRequest в рамках одного предзаказа должны ссылаться на один и тот же Contract. Найти нужный контракт можно через поиск, например:
GET fhir/Contract?identifier=http://helix.ru/codes/contract|CXXXXXXXXX
Схема связей ProcedureRequest и Task
Task уровня заказа должен иметь поле code с указанием типа события вида:
{
"system": "https://api.medlinx.online/terminology/task_type",
"code": "DraftOrderProcessingTask"
}
Ответ
Код успешного ответа: 200
Код не успешного ответа: >=400, так же в теле ответа будет представлена расширенная информация
{
"resourceType" : "OperationOutcome",
"issue" : [{
"severity" : "<code>", // fatal | error | warning | information
"code" : "<code>", // Error or warning code
"diagnostics" : "<string>", // Additional diagnostic information about the issue
}]
}
Выставление прав
По умолчанию у контрагента нет доступа к созданным ресурсам. Права нужно явно выдать либо при создании ресурса, либо через механизм $meta-add
. Подробнее смотри Права доступа. Для получения всех данных, кроме Task
, контрагенту нужны права read
. В ресурс Task
записывается статус выполнения и ошибки, если они есть, поэтому ресурсу Task
нужно выставить права уровня и read
и updatebody
.
Получить список guid контрагентов для выставления прав можно при подключении к платформе medlinx.online
Обработка предзаказа лабораторией
- В ресурс Task предзаказа выставляется номер (для некоторых потребителей - номер и префикс), предзаказа в поле
identifier
- Статус Task изменяется на Accepted
- В момент создания заказа по предзаказу лаборатория выгружает заказ на сервер и выставляет создателю предзаказа права на чтение
- При выполнении заказа на него выгружаются результаты и создателю предзаказа проставляются права на чтение
В случае ошибки текст ошибки записывается в поле Output
.
Забор результатов по предзаказам
Получение релультатов подробно описано в разделе создание заявки на лабораторное исследование