Описание объектов

Программный интерфейс сервиса уведомлений участкового врача (далее - Сервис) построен на основе стандарта 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

Тип случая обслуживания. Передается:

  • ambulatory - амбулаторный;
  • inpatient (outpatient) - стационарный;
  • daytime - диспансеризация;
  • emergency - скорая помощь;
  • virtual- телемедицинская консультация (ТМК)
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

Статус уведомления:

  • active - активный;

  • inactive - неактивный;

  • entered - in - error - ошибочный.

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)
{
      "resource": {
        "resourceType": "Flag",
        "id": "1d0f7776-3ffb-4e6b-87da-e8f8820438f9",
		"meta": { 
			"lastUpdated" : "2020-06-08T09:57:34" 
		}
        "extension": [
          {
            "url": "http://patient.n3zdrav",
            "extension": [
              {
                "url": "MisId",
                "valueString": "Identificator14.02.2020_12:48:4590"
              },
              {
                "url": "Name",
                "valueHumanName": {
                  "family": [
                    "Максимов",
                    "Максимов"
                  ],
                  "given": [
                    "Дмитрий"
                  ]
                }
              },
              {
                "url": "Birthdate",
                "valueString": "1986-06-07"
              }
            ]
          },
          {
            "url": "OrgName",
            "valueString": "СПб ГБУЗ \"Городская наркологическая больница\""
          },
          {
            "url": "PatientId",
            "valueString": "bef89aba-d277-4803-b03f-f59285065ac9"
          },
          {
            "url": "EncounterClass",
            "valueString": "ambulatory"
          }
        ],
        "category": {
          "coding": [
            {
              "system": "urn:oid:1.2.643.2.69.1.1.1.135",
              "code": "1",
              "display": "Случай обслуживания"
            }
          ]
        },
        "status": "inactive",
        "period": {
          "start": "2020-02-01T00:00:00+03:00",
          "end": "2020-02-05T00:00:00+03:00"
        },
        "subject": {
          "reference": "Patient/bef89aba-d277-4803-b03f-f59285065ac9"
        },
        "encounter": {
          "reference": "Encounter/156845"
        },
        "author": {
          "reference": "Organization/20dfadd0-c709-43b0-a130-5a16301b0217"
        },
        "code": {
          "coding": [
            {
              "system": "urn:oid:1.2.643.2.69.1.1.1.2",
              "code": "T66"
            }
          ]
        }
      }
    },

Информация о результатах лабораторного исследования

Параметр

Тип

Кратность

Описание

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

Статус уведомления:

  • active - активный;
  • inactive - неактивный;
  • entered - in - error - ошибочный.


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


{
  "resourceType": "Bundle",
  "type": "searchset",
  "total": 30891,
  "entry": [
    {
      "resource": {
        "resourceType": "Flag",
        "id": "11f9b2c7-d578-43ae-9570-5467f94e7d02",
		"meta": {
			"lastUpdated" : "2020-06-08T09:57:34"
		}
        "extension": [
          {
            "url": "http://patient.n3zdrav",
            "extension": [
              {
                "url": "MisId",
                "valueString": "a46a4b4d-d1bd-495a-bb02-ec3ab55a623c"
              },
              {
                "url": "Name",
                "valueHumanName": {
                  "family": [
                    "ОГНЕВ",
                    "АРТЕМЬЕВИЧ"
                  ],
                  "given": [
                    "АНАТОЛИЙ"
                  ]
                }
              },
              {
                "url": "Birthdate",
                "valueString": "1974-09-15"
              }
            ]
          },
          {
            "url": "OrgName",
            "valueString": "ГОБУЗ \"МОКБ им П. А. Баяндина\""
          },
          {
            "url": "PatientId",
            "valueString": "a46a4b4d-d1bd-495a-bb02-ec3ab55a623c"
          },
          {
            "url": "DiagnosticReportId"
          }
        ],
        "category": {
          "coding": [
            {
              "system": "urn:oid:1.2.643.2.69.1.1.1.135",
              "code": "3",
              "display": "Информация о результатах лабораторного исследования"
            }
          ]
        },
        "status": "active",
        "period": {
          "start": "2019-06-27T20:49:29+03:00"
        },
        "subject": {
          "reference": "Practitioner/14110066185"
        },
        "author": {
          "reference": "Organization/93a2f92d-6cc4-41e5-bfef-e9429e70b07b"
        },
        "code": {
          "coding": [
            {
              "system": "urn:oid:1.2.643.2.69.1.1.1.31",
              "code": "B03.016.006"
            }
          ]
        }
      }
    }
  ]
}

Уведомление о факте смерти пациента

Параметр

Тип

Кратность

Описание

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

Статус уведомления:

  • active - активный;

  • inactive - неактивный;

  • entered - in - error - ошибочный.

Для присвоения статуса, выполняется  поиск пациента в 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 БД ИЭМК


{
  "resourceType": "Bundle",
  "type": "searchset",
  "total": 70548,
  "entry": [
    {
      "resource": {
        "resourceType": "Flag",
        "id": "42c34229-c97b-4274-ad73-6220e9829318",
		"meta": {
			"lastUpdated" : "2020-06-08T09:57:34"
		}
        "extension": [
          {
            "url": "http://patient.n3zdrav",
            "extension": [
              {
                "url": "MisId",
                "valueString": "Identificator15.10.2019_11:32:48983"
              },
              {
                "url": "Name",
                "valueHumanName": {
                  "family": [
                    "ОГНЕВ",
                    "АРТЕМЬЕВИЧ"
                  ],
                  "given": [
                    "АНАТОЛИЙ"
                  ]
                }
              },
              {
                "url": "Birthdate",
                "valueString": "1974-09-15"
              }
            ]
          },
          {
            "url": "OrgName",
            "valueString": "Наркологический реабилитационный центр №5"
          },
          {
            "url": "PatientId",
            "valueString": "9786e1c4-3ce8-487a-aac9-62a91cf74e3e"
          },
          {
            "url": "EncounterClass",
            "valueString": "other"
          }
        ],
        "category": {
          "coding": [
            {
              "system": "urn:oid:1.2.643.2.69.1.1.1.135",
              "code": "4",
              "display": "Сведения о смерти"
            }
          ]
        },
        "status": "inactive",
        "period": {
          "start": "2019-10-15T11:33:02+03:00"
        },
        "subject": {
          "reference": "Practitioner/60748222690"
        },
        "encounter": {
          "reference": "Encounter/36096"
        },
        "author": {
          "reference": "Organization/874f7758-2f74-4813-a285-7fbdc4b7b96e"
        },
        "code": {
          "coding": [
            {
              "system": "urn:oid:1.2.643.2.69.1.1.1.2",
              "code": "Z59.8"
            }
          ]
        }
      }
    }
  ]
}

Описание протокола взаимодействия

Общая информация

С общей информацией о стандарте 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. Удаление
Информационная система, работающая с Сервисом может удалить уведомление. Удаление флага эквивалентно созданию особого вида записи, которая не имеет содержимого и помечена как удаленная.

1. Обновление уведомлений

Обновление уведомления происходит с помощью метода PUT. Тело запроса должно содержать заполненный ресурс Flag всеми необходимыми параметрами, кроме параметра lastUpdated. В качестве адреса указывается URL в формате: 

[patientnotes]/Flag/[идентификатор уведомления]

{
    "resourceType": "Flag",
    "id": "586559d3-f37d-4a62-891a-a986e79ec55e",
    "category": {
        "coding": [{
            "system": "urn:oid:1.2.643.2.69.1.1.1.35",
            "code": "3",
            "display": "Госпитализация"
        }]
    },
    "status": "active",
    "period": {
        "start": "2017-10-30T16:33:57+03:00",
        "end": "2018-01-31T16:33:57+03:00"
    },
    "subject": {
        "reference": "Patient/01152a8b-c68f-4635-9e11-a51dc39d30cb"
    },
    "encounter": {
        "reference": "Encounter/102816"
    },
    "code": {
        "coding": [{
            "system": "urn:oid:1.2.643.2.69.1.1.1.2"
        }]
    }
}

2. Поиск уведомления 

Поиск уведомления производится согласно требованиям стандарта FHIR к операции поиска (см. http://fhir-ru.github.io/search.html). В текущей реализации Сервиса операция поиска поддерживается с использованием метода GET и POST. Для запроса в качестве адреса должен быть указан URL в формате:

[patientnotes]/Flag?[параметр поиска = {значение параметра поиска}]

Операция поиска проходит по существующим ресурсам, отфильтровывая их в соответствии с параметрами, переданными операции поиска. В текущей реализации Сервиса поддержаны следующие параметры поиска:

  • class - тип случая обслуживания;
               ambulatory - амбулаторный;
               inpatient - стационарный;
               daytime - диспансеризация;
               emergency - скорая помощь.
  • category - тип уведомления (Справочник OID: 1.2.643.2.69.1.1.1.135);
  • status - статус уведомления:
                 active - активный;
                 inactive - неактивный;
                 entered - in - error - ошибочный.

Важно

Параметры 

    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
Операция поиска является регистрозависимой, поэтому для корректного отображения результатов поиска следует использовать нижний регистр для параметров поиска.

3. Удаление уведомления 

Удаление уведомления производится согласно требованиям стандарта 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"
        }
    ]
}

Примеры поисковых запросов в Сервис

Поиск по параметрам, поддерживающим использование модификатора :not

Для перечисленных ниже параметров (см. 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.

{
    "resourceType": "Bundle",
    "type": "searchset",
    "total": 0
}

Запрос вида [patientnotes]/Flag/0261bb58-ff32-42cd-883e-25bb1ce95a5b осуществляет прямой доступ к ресурсу, поэтому он возвращает 400 ошибку, в случае, если указанный ресурс не найден.

Поиск уведомлений по их статусу

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ловием "И":

  • status - статус уведомления;
  • class - тип случая обслуживания;
  • date - дата или период выборки по дате открытия и закрытия СМО (period.start, period.end)
  • count - размер массива результатов;
  • page - номер страницы при постраничном выводе данных;
  • _summary cо значением count.

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


{
	"resourceType": "Parameters",
	"parameter": [
		{
		 "name": "_lastUpdated",
		 "valueString": "ge2020-06-08"
		},
		{
		 "name": "_lastUpdated",
		 "valueString": "le2020-08-08"
		},
		{
		 "name": "class",
		 "valueString": "inpatient"
		},
		{
		 "name": "status",
		 "valueString": "active"
		},
		{
		 "name": "_count",
		 "valueString": "20"
		},
		{
		 "name": "_page",
		 "valueString": "3"
		}
	]
}


В ответе метода выводится массив ресурсов Flag, отфильтрованный по заданным в запросе параметрам.

Если в запросе передан  параметр _summary со значением count, не должны передаваться параметры _count и _page. При передаче параметра _summary со значением count, в ответе метода выводится количество уведомлений, по заданным параметрам за период, указанный в  _lastUpdated

Наверх