Описание интеграции на стороне ЛИС
Подготовка подключения ЛИС к системе
- Лаборатория заключает контракт с заказчиком (может быть заключено несколько контрактов с разной номенклатурой).
- Лаборатория заводится как организация в Medlinx API.
- Лаборатория создает API, соответствующее требованиям интеграции.
- Лаборатория получает логин/пароль для работы с Medlinx API.
- Лаборатория подключает модуль интеграции с Medlinx API в информационную систему.
Повседневное использование
Лаборатория должна уметь выполнять два типа задач:
- Предоставлять данные для формирования корзины исследований.
- Забирать заявки на исследования и загружать результаты.
Для формирования корзины исследований необходимо предоставить методы:
- Получения номенклатуры выполняемыx исследований.
- Получение времени выполнения исследований.
- Получение опросника обязательных полей (дополнительная информация, необходимая лаборатории).
- Получение преаналитики (контейнеры, объемы)
Данные методы лаборатория реализует на своей стороне в виде WebAPI.
Забор заявок и выгрузка результатов происходят по стандарту FHIR STU3 (RESTApi), сервером выступает Medlinx API.
Запросы от контрагентов по работе с корзиной приходят в Medlinx API, а Medlinx API транслирует их в лабораторию. Это упрощает работу контрагентам, создавая единую точку входа.
Контракты взаимодействия
По умолчанию все запросы должны выполняться через HTTPS.
Сервисы формирования корзины должны быть опубликованы по публично доступному адресу. Адрес заносится в карточку контрагента в Medlinx API, все запросы формирования корзины будут перенаправляться на него со стороны Medlinx API.
Запросы для получения заявок и выгрузки результатов происходят на адреса Medlinx API в зависимости от окруждения:
Окружение | Endpoint | Тип |
---|---|---|
Stage | https://api-stage.medlinx.online/ | api |
Stage | https://auth-stage.medlinx.online/ | auth |
Prod | https://api.medlinx.online/ | api |
Prod | https://auth.medlinx.online/ | auth |
Все взаимодействие происходит в формате JSON.
Сервер поддерживает методы сonditional create, conditional update с использованием Etag. Подробнее смотри Fhir
Авторизация на WebApi лаборатории
Способ авторизации выбирается лабораторией. Авторизация не должна требовать участия человека.
Авторизация в Medlinx API
Описана подробно в Контракты взаимодействия
API формирования корзины
Получение номенклатуры
Должно соответствовать Контракты взаимодействия
Получение времени выполнения исследований
Должно соответствовать Контракты взаимодействия
Получение опросника обязательных рекомендуемых полей
Должно соответствовать Контракты взаимодействия
Если лаборатория не требует дополнительных данных, то в ответ должен формироваться пустой опросник.
{
"resourceType" : "Questionnaire",
"status" : "active"
}
Получение данных ПРИС
Должно соответствовать Контракты взаимодействия
Получение заявок и формирование результатов
Получение заказа
При создании заявки на лабораторное исследование клиенты создают набор ресурсов, необходимых для выполнения заявки, и дают лаборатории необходимые права доступа к ресурсам. Клиент создает ресурсы в соответствии с ответами сервиса преаналитики и требований стандарта FHIR STU3.
Клиент создает следующие типы ресурсов:
Тип | Размерность | Описание |
---|---|---|
Patient | 1..1 | Описывает пациента. Обязано содержать только пол и дату рождения. ФИО может быть не заполнено. |
Task | 2..* | Ресурс для управления жизненным циклом заказа и его частей |
ProcedureRequest | 1..* | Описывает товарную позицию в заказе |
Specimen | 1..* | Описывает контейнер с БМ |
QuestionnaireResponse | 0..* | Содержит ответы на вопросы лаборатории (Обязательные/рекомендуемые поля) |
Главным объектом заказа является Task с типом OrderProcessingTask
. Подробное описание см в описанни ресурса Task.
У всех новых заказов поле status ресурса Task равно requested
.
Лаборатория должна регулярно опрашивать Medlinx API, запрашивая Task в статусе requested
. По полученным Task, в соответствии со схемой забирать остальные ресурсы.
Примеры запросов для получения данных по заказам
Получение всех новых ресурсов типа Task уровня заказа:
GET /fhir/task?status=requested&code=OrderProcessingTask
По id Task уровня заказа можно получить все ресурсы типа Task уровня ProcedureRequest данного заказа:
GET /fhir/task?part-of=task/<id Task уровня заказа>
Task уровня ProcedureRequest содержит ссылку на ProcedureRequest в поле basedOn
"basedOn": [
{
"reference": "procedurerequest/<id procedurerequest>"
}
],
Получение ресурса ProcedureRequest:
GET /fhir/procedurerequest/<id procedurerequest>
Ресурс ProcedureRequest описывает одну товарную позицию в заказе и содержит ссылки на пациента (поле subject
), массив ссылок на образцы (поле specimen
) из которых должно быть сделано исследование и другую информацию. Подробное описание см в описанни ресурса ProcedureRequest.
По ссылке в поле subject
можно получить ресурс Patient с данными о пациенте. Подробное описание см в описанни ресурса Patient.
"subject": {
"reference": "patient/<id patient>"
},
GET /fhir/patient/<patient id>
По ссылкам в поле specimen
можно получить ресурсы Specimen. Подробное описание см в описанни ресурса Specimen.
"specimen": [
{
"reference": "specimen/<id 1>"
},
{
"reference": "specimen/<id 2>"
}
...
],
GET /fhir/specimen/<id specimen>
После забора ресурсов, лаборатория выполняет валидацию полученных данных и меняет статус ресурса Task в соответствии с жизненным циклом ресурса Task.
Загрузка результатов
Загрузка результатов описана в разделе забор результатов МО. Всем выгружаемым ресурсам должны быть выданы права на чтение контрагенту. У соответствующих ресурсов Task должны измениться статусы на cancelled
или completed
.