Программный интерфейс сервиса уведомлений участкового врача (далее - Сервис) построен на основе стандарта FHIR (Fast Healthcare Interoperability Resources), разработанного организацией HL7 (https://www.hl7.org/fhir/), и использует для передачи данных об уведомлении ресурс Flag (https://www.hl7.org/fhir/flag.html). Параметры ресурса Flag для каждого типа уведомления представлены в таблицах ниже:
Параметр |
Тип |
Кратность |
Описание |
---|---|---|---|
id |
Identifier |
1..1 |
Идентификатор уведомления |
meta.lastUpdated | dateTime | 0..1 | Дата последнего изменения уведомления |
Extension | 1..1 | Расширение ресурса, ссылка на сведения о пациенте в системе N3.Здравоохранение | |
extension.MisID | valueString | 1..1 | Идентификатор пациента в МИС |
extension.valueHumanName.family | valueString | 1..1 | Фамилия пациента |
extension.valueHumanName.given | valueString | 1..1 | Имя пациента |
extension.Birthdate | valueDate | 1..1 | Дата рождения пациента |
extension.OrgName | valueString | 1..1 | Наименование организации-источника случая обслуживания |
extension.PatientID | valueString | 1..1 | Идентификатор карточки пациента в сервисе Индекс пациента (MPI) |
extension.EncounterClass | CodeableConcept | 1..1 |
Тип случая обслуживания. Передается:
|
extention, где url = "MedResult" | uri | 0..1 | Всегда передается "MedResult". Расширение ресурса flag для передачи информации о результате вызова скорой помощи. Передается только для уведомлений типа Вызов скорой помощи (category =2), если у СМО, по которому формируется флаг, присутствует данная информация. |
Extension/valueCoding, где url = "MedResult" |
Coding | 1..1 | |
Extension/valueCoding/system, где url = "MedResult" |
uri | 1..1 | Всегда передается "urn:oid:1.2.643.2.69.1.1.1.105". |
Extension/valueCoding/code, где url = "MedResult" |
code | 1..1 | Код из Справочника OID 1.2.643.2.69.1.1.1.105. |
Extension/valueCoding/display, где url = "MedResult" |
string | 1..1 | Значение из Справочника OID 1.2.643.2.69.1.1.1.105. |
category | CodeableConcept | 1..1 | Категория флага. Указывается тип уведомления (Справочник OID: 1.2.643.2.69.1.1.1.135) |
status | Code | 1..1 |
Статус уведомления:
|
period.start | valueDate | 1..1 | Дата открытия СМО |
period.end | valueDate | 0..1 | Дата закрытия СМО |
subject |
Reference |
0..1 |
Идентификатор целевой организации случая обслуживания, либо СНИЛС врача |
encounter | Reference | 1..1 | Идентификатор случая обслуживания в сервисе ИЭМК, к которому относится уведомление |
author | Reference | 1..1 | Идентификатор организации - источника случая обслуживания |
code | CodeableConcept | 1..1 | Код диагноза (Справочник OID: 1.2.643.2.69.1.1.1.2) |
Параметр |
Тип |
Кратность |
Описание |
---|---|---|---|
id |
Identifier |
1..1 |
Идентификатор уведомления |
meta.lastUpdated | dateTime | 0..1 | Дата последнего изменения уведомления |
extension | 1..1 | Расширение ресурса, ссылка на сведения о пациенте в системе N3.Здравоохранение | |
extension.MisID | valueString | 1..1 | Идентификатор пациента в МИС |
extension.valueHumanName.family | valueString | 1..1 | Фамилия пациента |
extension.valueHumanName.given | valueString | 1..1 | Имя пациента |
extension.Birthdate | valueDate | 1..1 | Дата рождения пациента |
extension.OrgName | valueString | 1..1 | Наименование организации-источника случая обслуживания |
extension.PatientID | valueString | 1..1 | Идентификатор карточки пациента в сервисе Индекс пациента (MPI) |
extension.DiagnosticReportID | valueReference | 1..1 | Идентификатор ресурса DiagnosticReport в подсистеме ОДЛИ. |
category |
CodeableConcept |
1..1 |
Категория флага (Справочник OID: 1.2.643.2.69.1.1.1.135). Указывается тип уведомления - code, и его название - display. Для лабораторного исследования код "3" |
status |
Code |
1..1 |
Статус уведомления:
|
period.start | valueDate | 1..1 | Дата начала проведения исследования |
period.end | valueDate | 0..1 | Дата окончания исследования |
subject |
Reference | 1..1 |
Ссылка на врача - получателя уведомления в формате Practitioner/{СНИЛС врача} |
author |
Reference |
1..1 |
Ссылка на организацию, в которой проведено исследование в формате Organization/{IdLpu} |
сode.system |
CodeableConcept |
1..1 |
Передается пространство имен из справочника "Код услуги заявки" OID:1.2.643.2.69.1.1.1.31. Берется из DiagnosticReportCode |
Параметр |
Тип |
Кратность |
Описание |
---|---|---|---|
id |
Identifier |
1..1 |
Идентификатор уведомления |
meta.lastUpdated | dateTime | 0..1 | Дата последнего изменения уведомления |
extension | 1..1 | Расширение ресурса, ссылка на сведения о пациенте в системе N3.Здравоохранение | |
extension.MisID | valueString | 1..1 | Идентификатор пациента в МИС |
extension.valueHumanName.family | valueString | 1..1 | Фамилия пациента |
extension.valueHumanName.given | valueString | 1..1 | Имя пациента |
extension.Birthdate | valueDate | 1..1 | Дата рождения пациента |
extension.OrgName | valueString | 1..1 | Наименование организации-источника случая обслуживания |
extension.PatientID | valueString | 1..1 | Идентификатор карточки пациента в сервисе Индекс пациента (MPI) |
extension.EncounterClass | CodeableConcept | 1..1 | Тип случая обслуживания. Для уведомления о смерти пациента передается заглушка "other" |
status |
Code |
1..1 |
Статус уведомления:
Для присвоения статуса, выполняется поиск пациента в MPI по PatientId |
period.start | valueDate | 1..1 | Дата СМО |
category |
CodeableConcept |
1..1 |
Категория флага. Указывается тип уведомления (Справочник OID: 1.2.643.2.69.1.1.1.135) |
subject | Reference | 1..1 |
Ссылка на врача - получателя уведомления в формате Practitioner/{СНИЛС врача} |
encounter | Reference | 1..1 | Ссылка на случай обслуживания в БД ИЭМК |
author | Reference | 1..1 | Ссылка на медицинскую организацию, от которой получено уведомление |
code |
CodeableConcept |
1..1 |
Причина смерти. Передается код заболевания по МКБ-10 из справочника OID:1.2.643.2.69.1.1.1.2. Причина смерти. Берется из поля DeathReason таблицы DeathCertificare БД ИЭМК |
С общей информацией о стандарте FHIR и ресурсе Flag можно ознакомиться по следующим ссылкам:
http://hl7.org/fhir/summary.html
http://fhir-ru.github.io/summary.html (перевод на русский язык)
https://www.hl7.org/fhir/flag.html (описание fhir-ресурса Flag)
В качестве протокола взаимодействия используется REST (подробнее см. http://fhir-ru.github.io/http.html).
Далее в качестве обозначения адреса публикации Сервиса будет использована текстовая константа [patientnotes].
Авторизационный ключ к Сервису выдается администратором интеграционной платформы. Значение полученного ключа указывается в заголовке REST-сообщения в следующем формате:
Authorization: N3[пробел][GUID передающей системы]
В качестве формата обмена требуется указать значение
Content-Type: application/json
Сервис поддерживает следующие операции с уведомлениями:
1. Обновление
Информационная система, работающая с Сервисом может изменить уведомление, например, пометить как прочитанное (обработанное).
2. Поиск
Информационная система имеет возможность получать массив уведомлений из Сервиса, отфильтрованный по различным параметрам.
3. Удаление
Информационная система, работающая с Сервисом может удалить уведомление. Удаление флага эквивалентно созданию особого вида записи, которая не имеет содержимого и помечена как удаленная.
Обновление уведомления происходит с помощью метода PUT. Тело запроса должно содержать заполненный ресурс Flag всеми необходимыми параметрами, кроме параметра lastUpdated. В качестве адреса указывается URL в формате:
[patientnotes]/Flag/[идентификатор уведомления]
Поиск уведомления производится согласно требованиям стандарта FHIR к операции поиска (см. http://fhir-ru.github.io/search.html). В текущей реализации Сервиса операция поиска поддерживается с использованием метода GET и POST. Для запроса в качестве адреса должен быть указан URL в формате:
[patientnotes]/Flag?[параметр поиска = {значение параметра поиска}]
Операция поиска проходит по существующим ресурсам, отфильтровывая их в соответствии с параметрами, переданными операции поиска. В текущей реализации Сервиса поддержаны следующие параметры поиска:
_count - размер массива результатов
Важно
Параметры
author
subject
encounter
относятся к параметрам типа Reference (см. http://hl7.org/fhir/DSTU2/search.html#reference)
В запросах, где один из данных параметров предполагает хранение только одного типа ресурса (например,Encounter), можно использовать значение для поиска вида
[parameter]=[id] или [parameter]=[type]/[id]:
GET [patientnotes]/Flag?encounter=124729 GET [patientnotes]Flag?encounter=Encounter/124729
В запросах, где один из данных параметров предполагает хранение разных типов ресурсов (например, Subject), используется значение для поиска вида [parameter]=[type]/[id]:
GET [patientnotes]/Flag?subject=Practitioner/60748222690
Удаление уведомления производится согласно требованиям стандарта FHIR к операции удаления (см. http://fhir-ru.github.io/http.html#delete) с помощью метода DELETE. Для DELETE - запроса в качестве адреса должен быть указан URL в формате:Удаление уведомлений
[patientnotes]/Flag/[идентификатор флага]
При этом в ответе отдаётся Status 204 NoContent
Status 204 NoContent
Если не был найден флаг для удаления, сервис вернет ошибку вида:
Status 404 NotFound Ошибка: { "resourceType": "OperationOutcome", "issue": [ { "diagnostics": "Flag not found" } ] }
Для перечисленных ниже параметров (см. http://hl7.org/fhir/DSTU2/search.html#token) в поисковых запросах для отрицания условия поддержано использование модификатора :not:
category
code
patient
id
status
POST [patientnotes]/Flag/_search?_format=json { "resourceType": "Parameters", "parameter": [{ "name": "status:not", "valueString": "entered-in-error" }] }
GET [patientnotes]/Flag?_id=0261bb58-ff32-42cd-883e-25bb1ce95a5b или [patientnotes]/Flag/0261bb58-ff32-42cd-883e-25bb1ce95a5b
Запрос вида [patientnotes]/Flag?_id=0261bb58-ff32-42cd-883e-25bb1ce95a5b строится и использованием fhir_search, поэтому, если запрашиваемый ресурс не найден, в ответе в resourceType отдается Bundle.
POST [patientnotes]/Flag/_search?_format=json { "resourceType": "Parameters", "parameter": [{ "name": "status", "valueString": "active" }] }
GET [patientnotes]/Flag?date=ge2017-11-17&date=le2017-11-17
GET [patientnotes]/Flag?date=ge2018-03-01&date=le2018-03-13&_count=2&_page=3
GET [patientnotes]/Flag?date=ge2018-01-01&date=le2018-02-26&_count=15
GET [patientnotes]/Flag?date=eq2017-11-16
Важно
При указании параметра date вида 2017-11-16 происходит поиск по периоду: DataFrom 2010-02-10 00:00:00 - 2010-02-11 00:00:00 (не включительно)
Логика указания даты:
date=le2020-06-07 - period.end <= date
date=ge2020-06-07 - period.start => date
date=eq2020-06-07 - period.start => date && period.end < date+1
GET [patientnotes]/Flag?subject=Organization/0261bb58-ff32-42cd-883e-25bb1ce95a5b
GET patientnotes]/Flag?subject=practitioner/10458631041
Метод позволяет осуществлять поиск уведомлений по параметру _lastUpdated GET и POST-запросом, с указанием даты, с точностью до дня { "name": "lastUpdated", "valueString": "2020-06-08"}, или указанием периода, в который должна попадать дата последнего обновления (см. пример), аналогично как для поиска по дате открытия и закрытия СМО, поддержанному для Поиск за период.
Если уведомление было создано и не подвергалось изменениям, значение даты изменения уведомления передается идентичное значению даты создания уведомления.
Использование/присутствие параметра _lastUpdated в методах и запросах/ответах:
Метод | Добавление | Обновление | Получение | Удаление |
---|---|---|---|---|
Запрос | отсутствует | отсутствует | присутствует | отсутствует |
Ответ | присутствует | присутствует | присутствует | отсутствует |
В POST запросе, помимо параметра lastUpdated, могут передаваться дополнительные параметры фильтрации при поиске, которые используются с уcловием "И":
GET-запрос:
-- c указанием конкретного дня обновления GET [patientnotes]/Flag?_lastUpdated=eq2017-11-16 --с указанием периода дат обновления GET [patientnotes]/Flag?_lastUpdated=ge2017-11-17&_lastUpdated=le2017-11-17 -- с указанием условий постраничного вывода и количества GET [patientnotes]/Flag?_lastUpdated=ge2018-03-01&_lastUpdated=le2018-03-13&_count=2&_page=3
POST-запрос:
POST [base]/Flag/_search?_format=json
В ответе метода выводится массив ресурсов Flag, отфильтрованный по заданным в запросе параметрам.
Если в запросе передан параметр _summary со значением count, не должны передаваться параметры _count и _page. При передаче параметра _summary со значением count, в ответе метода выводится количество уведомлений, по заданным параметрам за период, указанный в _lastUpdated