Описание решения
Описание процесса обмена данными
Выгрузка СЭМД из медицинских информационных систем медицинских организаций (далее МИС МО) в сервис регистрации электронных рецептов ЕМИАС осуществляется при помощи использования стандартных методов сервиса «ИЭМК». Все дальнейшие манипуляции с выгруженными рецептами из МИС МО осуществляются через обращение к методам API «Сервиса взаимодействия с ЕМИАС в части регистрации электронных рецептов», реализованного с использованием архитектуры REST. Процесс обмена данными о выданных рецептах в рамках типового решения, поддерживает выполнение следующих действий:
- Создание и редактирование записи пациента, на которого оформлен электронный рецепт.
- Формирование содержимого СЭМД с информацией о выданном рецепте и выгрузка его в подсистему «ИЭМК».
- Получение информации о текущем статусе СЭМД с информацией о выданном рецепте в подсистеме ЕМИАС.
- Отмена регистрации в подсистеме ЕМИАС ранее выгруженного из МИС МО электронного рецепта.
Описание базового сценария обмена
Обмен данными между МИС МО и сервисом регистрации электронных рецептов ЕМИАС осуществляется в результате выполнения шагов следующего базового сценария:
- МИС МО: Создать запись пациента в сервисе MPI.
- МИС МО: Выгрузить содержимое СЭМД с информацией о выданном рецепте в сервис «ИЭМК».
- ИЭМК: Отправить СЭМД с информацией о выданном рецепте в сервис регистрации электронных рецептов ЕМИАС.
- Сервис ЕМИАС: Подтвердить регистрацию рецепта, либо вернуть информацию об ошибках в содержимом СЭМД, не позволяющих произвести его успешную регистрацию в системе электронных рецептов.
- МИС МО: Запросить текущий статус СЭМД с информацией о выданном рецепте в сервисе регистрации электронных рецептов ЕМИАС при помощи обращения к API «Сервиса взаимодействия с ЕМИАС в части регистрации электронных рецептов».
Настоящий документ описывает требования, необходимые для выполнения на стороне МИС МО.
Рисунок 1. Схема базового сценария взаимодействия
Предварительные условия. Доступ участнику информационного обмена. Токены авторизации
Для взаимодействия с сервисом «ИЭМК» требуется получить
у администраторов сервиса следующие данные
- GUID – авторизационный токен. Выдается разработчику МИС МО.
- IdLPU – идентификатор МО, от имени которой передается\запрашивается информация в\из сервиса «ИЭМК». Используется значение поля code регионального справочника МО (urn:oid:1.2.643.2.69.1.1.1.64).
Для взаимодействия с сервисом регистрации электронных рецептов ЕМИАС требуется получить у администратора сервиса следующие данные:
- Клиентский сертификат, выдаваемый службой технической поддержки ЕМИАС.
- ident - уникальный идентификатор медицинской организации, выданный при регистрации в системе информационной обмена с ЕМИАС.
Для взаимодействия с API «Сервиса взаимодействия с ЕМИАС в части регистрации электронных рецептов» требуется получить у администратора сервиса следующие данные
- Адрес (BaseUrl) размещения серверных методов TakePrescriptionStatus и CancelPrescription, токен доступа к этим методам будет совпадать с GUID к сервису «ИЭМК».
Данное ОИП предполагает, что руководства по взаимодействию МИС МО с сервисом «ИЭМК» содержатся в иных документах. Дальнейшие требования относятся к описанию API «Сервиса взаимодействия с ЕМИАС в части регистрации электронных рецептов».
Авторизация в сервисе взаимодействия с ЕМИАС в части регистрации электронных рецептов и адрес сервиса
Адрес сервиса. Пример:
В зависимости от метода, в адресную строку POST-запроса добавляется соответствующий тип:
- TakePrescriptionStatus - для получения текущего статуса выгрузки рецепта в ЕМИАС
- MakeCancelPrescription - для отмены рецепта в ЕМИАС
Пример:
Авторизация осуществляется посредством передачи авторизационного ключа, значение которого соответствует значению авторизационного ключа Сервиса ИЭМК. Ключ выдается администратором интеграционной платформы. Авторизационные данные указывается в заголовке REST-сообщения в следующем формате:
Authorization:N3[пробел][GUID передающей МИС] |
Проводимые проверки на стороне сервиса
На стороне сервиса последовательно осуществляются проверки:
- Базовая, первичная проверка токенов и связок:
а) проверка авторизационного токена – проверяется факт передачи авторизационного токена в заголовке запроса, а также его корректность. Если переданный токен некорректный, то выводится ошибка c кодом 401.
Пример ответа:
{
"Message":[
"Неправильный идентификатор системы"
]
}
б) проверка наличия связки МИС-МО – проверяется, что МИС (вычисляется по авторизационному токену) привязана к МО из тела запроса (указана в поле Organization). Если связка отсутствует, выводится ошибка c кодом 401
Пример ответа:
{
"Message":[
"Неправильный идентификатор системы"
]
}
Доступные методы
Получение текущего статуса СЭМД с информацией о выданном рецепте в подсистеме ЕМИАС (TakePrescriptionStatus)
POST /TakePrescriptionStatus header 'Authorization: N3 token'
Запрос
Параметры тела запроса
# |
Название |
Тип |
Кард. |
Описание |
1. |
Organization |
Uuid |
1..1 |
Идентификатор МО-отправителя данных ( поле "Код" по справочнику 1.2.643.2.69.1.1.1.64) - головная МО или СП МО |
2. |
IdSourceMis |
string |
1..1 |
Идентификатор IdDocumentMis СЭМД с информацией о выданном рецепте в МИС. |
3. |
IdDataSource |
int |
1..1 |
Источник данных документа (для сервиса «ИЭМК» необходимо заполнять значение «1») |
Пример запроса:
{
"Organization": "4b16aaaf-c80b-4d27-bfcb-a7f87c1eace7",
"IdSourceMis": "idDocumentMis_2125630",
"IdDataSource":"1",
}
Ответ
Описание выходных параметров
# |
Название |
Тип |
Кард. |
Описание |
1. |
StatusDate |
datetime |
1..1 |
Успешность обработки Дата последней попытки выгрузки СЭМД с информацией о выданном рецепте в ЕМИАС. |
2. |
IdSourceMis |
string |
1..1 |
Идентификатор источника данных в МИС (соответствует переданным в запросе данным) |
3. |
IdSource |
string |
1..1 |
Идентификатор ЭМД в РМИС |
4. |
Lpu |
uuid |
1..1 |
Идентификатор МО-отправителя данных (соответствует переданным в запросе данным Organization) |
5. |
Status |
string |
1..1 |
Статус · Success – успешная обработка; (для current_status=0, 1, 4 (включая 6,7,8,9,10,11,12)) · Failed – при обработке возникли ошибки. (для current_status=2, 3, 5) |
6. |
StatusNumber |
string |
1..1 |
Числовое значение статуса выгрузки (0-3, 4 (включая 6,7,8,9,10,11,12),5) |
7. |
Message |
string |
1..1 |
Информационное сообщение о результате регистрации СЭМД с информацией о выданном рецепте в ЕМИАС (соответствует реальному статусу) |
8. |
IdRequestGuid |
uuid |
0..1 |
Идентификатор запроса на регистрацию СЭМД с информацией о выданном рецепте в ЕМИАС |
9. |
ExternalNumber |
string |
0..1 |
Регистрационный номер СЭМД с информацией о выданном рецепте в ЕМИАС |
Пример ответа
[ { "StatusDate": "2022-05-14 13:50:52.328766", "IdSourceMis": "idDocumentMis_2125630", "IdSource": "1053", "Lpu": "4b16aaaf-c80b-4d27-bfcb-a7f87c1eace7", "Status": "Success", "StatusNumber": 4, "Message": "Получены данные о регистрации ЭМД", "IdRequestGuid": "30023175-5a2c-4a34-b77d-980b4cc01c38", "ExternalNumber": "00Д4519390763" }]
В случае, если запрашиваемым условиям (IdSourceMis+Organization) соответствует несколько записей в таблице выгрузки, то в ответе будет представлен массив отобранных записей.
Проверки на стороне сервиса
- Проверяется, заполнены ли все обязательные входные параметры в запросе. Если отсутствует/некорректно заполнен хотя бы один из них, выводится ошибка с кодом 400.
Пример ответа:
а) Не заполнен параметр:
{
"Message":[
"Поле {Имя параметра} не может быть пустым",
"Поле {Имя параметра} не может быть пустым"
]
}
б) Некорректно заполнен параметр:
{
"Message":[
"Поле {Имя параметра} заполнено некорректно",
"Поле {Имя параметра} заполнено некорректно"
]
}
- Код в Organization проверяется по справочнику 1.2.643.2.69.1.1.1.64 (Organization=code в НСИ). При отсутствии значения в справочнике, выводится ошибка с кодом 400.
Пример ответа
{
«Message»:
[
«В справочнике МО 1.2.643.2.69.1.1.1.64 отсутствует код со значением со значением {Organization}»
]
}
- Если по входным данным запроса не найдена запись в БД о выгрузке, выводится ответ с кодом 400.
Пример ответа:
{
«Message»:[
«По указанным в запросе данным, не найдена запись о выгрузке документа»
]
}
Отмена регистрации в подсистеме ЕМИАС ранее выгруженного из МИС МО электронного рецепта (CancelPrescription)
POST /CancelPrescription header ‘Authorization: N3 token’
Запрос
Параметры тела запроса
# |
Название |
Тип |
Кард. |
Описание |
1. |
Organization |
uuid |
1..1 |
Идентификатор МО-отправителя данных ( поле «Код» по справочнику 1.2.643.2.69.1.1.1.64) – головная МО или СП МО |
2. |
IdSourceMis |
string |
1..1 |
Идентификатор IdDocumentMis СЭМД с информацией о выданном рецепте в МИС. |
3. |
IdDataSource |
int |
1..1 |
Источник данных документа (для сервиса «ИЭМК» необходимо заполнять значение «1») |
Пример запроса:
{
“Organization”: “4b16aaaf-c80b-4d27-bfcb-a7f87c1eace7”,
“IdSourceMis”: “idDocumentMis_2125630”,
“IdDataSource”:”1”,
}
Ответ
Описание выходных параметров
# |
Название |
Тип |
Кард. |
Описание |
1. |
Message |
string |
1..1 |
Информационное сообщение о результате выполнения запроса отмены регистрации СЭМД с информацией о выданном рецепте в ЕМИАС |
Пример ответа:
{
"Message":[
"Рецепт с идентификатором {IdSourceMis} поставлен в очередь на аннулирование"
]
}
Рисунок 2. Схема базового сценария взаимодействия для метода CancelPrescription
Результатом успешного выполнения запроса будет отправка СЭМД с заданными параметрами в очередь на аннулирование. Подтвердить факт успешной отмены рецепта в системе ЕМИАС можно выполнив запрос TakePrescriptionStatus позднее.
Проверки на стороне сервиса
- Если в таблице выгрузки у записи с искомым IdSourceMis установлен статус «аннулирован», то выводится ответ с кодом 400
Пример ответа:
{
"Message":[
"Документ с идентификатором {IdSourceMis} отменен ранее"
]
}
- Если во время взаимодействия с API произошла иная ошибка, например сетевого взаимодействия, то выводится ответ с кодом 400
Пример ответа:
{
"Message":[
"Техническая ошибка"
]
}
- Если в таблице выгрузки отсутствует запись с заданным IdSourceMis и установленным флагом активности, то выводится ответ с кодом 400
Пример ответа:
{
"Message":[
"Активный документ с идентификатором {IdSourceMis} не найден"
]
}
- Если в таблице выгрузки у записи с искомым IdSourceMis не заполнено поле external_number, то выводится ответ с кодом 400
Пример ответа:
{
"Message":[
"Документ с идентификатором {IdSourceMis} не загружен в ЕМИАС"
]
}
- Если в таблице выгрузки найдено 2 и более записи с искомым IdSourceMis и установленным флагом активности, то выводится ответ с кодом 400
Пример ответа:
{
"Message":[
"Невозможно однозначно определить активный документ с идентификатором {IdSourceMis}"
]
}