Сервис учета движения коечного фонда предназначен для обмена данными о текущем состоянии коечного фонда медицинских организаций.
Описание решения
Сервис обеспечивает:
- прием и хранение информации о состоянии коечного фонда;
- поиск актуальной информации о койках по профилю;
- поиск актуальной информации о койках в разрезе МО.
Обмен данными между сервисами осуществляется в рамках следующих сценариев:
- Передача сведений о сводках коечного фонда из МИС МО.
- Поиск данных о состоянии коечного фонда по параметрам: в разрезе профилей, в разрезе МО и кадендарных дат.
Описание сценария «Передача сведений о состоянии коечного фонда»
Базовый сценарий «Передача сведений о состоянии коечного фонда» представляет собой следующую последовательность шагов:
- Шаг первый: МИС передает сведения о движении коечного фонда за временной период методом POST:/base/api/bundle.
- Шаг второй: Сервис УКФ обрабатывает вызов метода POST:/base/api/bundle, запрашивает справочные данные в подсистеме УНСИ и после проверки на валидность и актуальность справочников, сохраняет и присваивает объекту уникальный идентификатор.
- Шаг третий: Сервис УКФ в ответе на вызов метода возвращает результат проверки и идентификатор объекта, подтверждая успешный прием сведений. Идентификатор объекта из ответа может быть сохранен на стороне МИС.
Описание сценария «Поиск данных о движении коечного фонда по параметрам»
Схема информационного взаимодействия в рамках сценария «Поиск данных о движении коечного фонда по параметрам» - по профилю медицинской помощи, по идентификатору МО на рисунке Рисунок 2.
Рисунок 2 Схема информационного взаимодействия в рамках сценария «Поиск данных о движении коечного фонда по параметрам»
Базовый сценарий «Поиск данных о движении коечного фонда по параметрам» представляет собой следующую последовательность шагов:
- Шаг первый: Сервис УКФ получает запрос на поиск сведений о движении коечного фонда по параметрам: по профилю медицинской помощи или по идентификатору МО методом GET:/base/api/HealthcareService/{id} или методом POST: /base/api/ HealthcareService/search с указанием параметров.
- Шаг второй: Сервис УКФ выполняет поиск данных, формирует и предоставляет ответ.
Описание протокола взаимодействия
Инициатором взаимодействия с сервисом УКФ выступают МИС медицинских организаций и ИС других заинтересованных сторон. Наименования методов определены с позиции МИС медицинских организаций как инициаторов взаимодействия.
Требования к авторизации и формату обмена
Токен авторизации - параметр authorization.
Формат обмена данными: Content-Type: application/fhir+json.
Информационный обмен осуществляется в соответствии со стандартом FHIR® (Fast Healthcare Interoperability Resources), разработанным организацией HL7. Используемая версия FHIR DSTU2, 1.0.2. Подробное описание стандарта доступно по следующим ссылкам:
- http://hl7.org/fhir/DSTU2/index.html
- http://fhir-ru.github.io/summary.html (перевод)
В качестве протокола взаимодействия используется RESTful AP (использование REST-протокола в FHIR® – см. http://fhir-ru.github.io/http.html).
Передающая система должна быть зарегистрована в Справочнике Участники информационного обмена N3.Здравоохранение - OID 1.2.643.2.69.1.2.
Состав методов сервиса
Функциональность сервиса УКФ обеспечивается следующими методами:
- Передача в сервис УКФ сведений о движении коечного фонда МО.
- Поиск сведений о движении коечного фонда МО.
Организация работы со справочниками
Процессы консолидации, первичной обработки и ведения нормативно-справочной информации обеспечиваются «Сервисом НСИ».
Описание «Сервиса НСИ» и правила взаимодействия с ним приведены в соответствующем регламенте (регламент доступен по ссылке: http://api.netrika.ru/docs.php?article=Terminology). Полный набор справочников «Сервиса Терминологии» приведен в соответствующем разделе регламента (который доступен по ссылке: http://api.netrika.ru/docs.php?article=Terminology#dictionary.
Используемые сервисом обмена УКФ справочники:
- Справочник МО - OID 1.2.643.2.69.1.1.1.64.
- Справочник Номенклатура коечного фонда медицинской организации - OID 1.2.643.5.1.13.2.1.1.221
- Справочник Участники информационного обмена N3.Здравоохранение - OID 1.2.643.2.69.1.2.
Описание методов взаимодействия
Передача в сервис УКФ сведений о движении коечного фонда МО
Метод предназначен для передачи в сервис УКФ сведений о движении коечного фонда МО за временной период. При положительном результате проверок входных данных и обработки метода будет сформирован и передан в составе выходных параметров уникальный идентификатор объекта. В обмене ожидаются сведения по всем активным профилям МО.
Описание параметров
В таблице представлено описание параметров ресурса HealthcareService.
Параметр |
Тип |
Обяза-тельность[1] |
Описание |
resourceType |
HealthcareService |
1..1 |
Тип ресурса |
id |
guid |
0..1 |
Идентификатор ресурса (заполняется сервисом при приеме данных) |
providedBy |
Reference(Organization) |
1..1 |
Ссылка на объект типа Organization c указанием идентификатора МО, передающей сведения, по справочнику НСИ 1.2.643.2.69.1.1.1.64 |
characteristic |
valueCodeableConcept |
1..1 |
Код профиля койки по справочнику НСИ 1.2.643.5.1.13.2.1.1.221 |
extension |
valueInteger |
0..* |
Расширение для передачи значений количества коек |
TotalBedCount |
valueInteger |
0..1 |
Общее количество коек, при приеме данных выполняется проверка условия - значения передаваемое в параметре должно быть больше либо равно сумме значений из параметров BedCountOnRepair, OccupiedBedCount, FreeBedCount |
BedCountOnRepair |
valueInteger |
0..1 |
Количество закрытых на ремонт коек |
PrevDayOccupiedBedCount |
valueInteger |
0..1 |
Количество занятых коек на начало истекших суток |
OccupiedBedCount |
valueInteger |
0..1 |
Количество занятых коек на начало текущих суток |
AccompPersonCount |
valueInteger |
0..1 |
Количество сопровождающих при больных детях |
FreeBedCount |
valueInteger |
0..1 |
Количество свободных коек |
FreeBedCountMale |
valueInteger |
0..1 |
Количество свободных коек мужских |
FreeBedCountFemale |
valueInteger |
0..1 |
Количество свободных коек женских |
FreeBedCountChild |
valueInteger |
0..1 |
Количество свободных коек детских |
ActualOn |
valuePeriod |
1..1 |
Период отчета, даты в периоде не должны быть в будущем, и не должны быть в прошлом более чем на одни календарные сутки |
start |
valueDatetime |
1..1 |
Дата и время начала периода в формате по стандарту ISO8601 с указанием таймзоны (YYYYMMDDThhmmss±hhmm или YYYYMMDDThhmmssZ) |
end |
valueDatetime |
0..1 |
Дата и время конца периода в формате по стандарту ISO8601 с указанием таймзоны (YYYYMMDDThhmmss±hhmm или YYYYMMDDThhmmssZ) |
Для передачи нескольких ресурсов с данными о движении коек разного профиля должен использоваться Bundle типа транзакция.
В ответ метод вернет структуру объекта из запроса, расширив ее уникальным идентификатором (id). Описание обработки ошибок приведено в разделе 8.
[1] «Обязательность» означает количество возможных значений реквизита в контейнере:
0..1 – означает, что реквизит необязательный, максимальное количество экземпляров 1;
0..* – реквизит необязательный, максимальное количество экземпляров не ограничено;
1..1 – реквизит обязательный, экземпляр один;
1..* – реквизит обязательный, максимальное количество экземпляров не ограничено.
Поиск сведений о движении коечного фонда МО
Метод предназначен для поиска сведений о движении коечного фонда в базе данных сервиса УКФ по параметрам.
Описание параметров
В таблице представлено описание параметров ресурса Parameters, используемого для запроса метода поиска.
Параметр |
Тип |
Обяза-тельность[1] |
Описание |
resourceType |
Parameters |
|
Тип ресурса |
parameter |
|
0..* |
Параметры поиска, один или несколько |
name |
valueString/ valueDate |
0..1 |
Наименование параметра поиска, здесь может быть код МО, код профиля койки, период отчета |
В ответ метод вернет найденные объекты (структура параметров в объекте описана в пункте 5.1). Описание обработки ошибок приведено в разделе 6.
[1] «Обязательность» означает количество возможных значений реквизита в контейнере:
0..1 – означает, что реквизит необязательный, максимальное количество экземпляров 1;
0..* – реквизит необязательный, максимальное количество экземпляров не ограничено;
1..1 – реквизит обязательный, экземпляр один;
1..* – реквизит обязательный, максимальное количество экземпляров не ограничено.
Порядок приема и обновления данных
Система поддерживает хранение только актуальных данных из последней передачи в обмене. При приеме данных на хранение или обновление выполняется проверка наличия ранее переданных данных.
При передаче на хранение или обновление должно соблюдаться условие - данные в пакете Bundle только от одной МО.
При передаче на хранение или обновление пакет Bundle может содержать данные о нескольких профилях коек.
В случае, если данные об одном из профилей койки раннее передавались, то сервис обновляет запись на актуальную.
В случае, если данные от МО по профилю койки не обнаружены, сервис добавляет новую запись для этой МО и профиле койки и присваивает идентификатор.
При передаче данных на обновление дата в параметре "start" (значение начала периода в контейнере параметров "ActualOn" запроса с Bundle) не должна быть меньше той, что передавалась в ранее отправленном пакете.
Пример запроса |
Пример ответа |
В запросе данные от одной МО на обновление по профилю койки 219 и на добавление данных нового профиля койки 202. { "resourceType": "Bundle", "type": "transaction", "entry": [ { "resource": { "resourceType": "HealthcareService", "id":"00e1d604-dec7-4c69-ad5c-7a8225ace006", "extension": [ { "url": "AccompPersonCount", "valueInteger": 1 }, { "url": "BedCountOnRepair", "valueInteger": 2 }, { "url": "FreeBedCount", "valueInteger": 3 }, { "url": "FreeBedCountChild", "valueInteger": 4 }, { "url": "FreeBedCountFemale", "valueInteger": 5 }, { "url": "FreeBedCountMale", "valueInteger": 6 }, { "url": "OccupiedBedCount", "valueInteger": 7 }, { "url": "PrevDayOccupiedBedCount", "valueInteger": 8 }, { "url": "TotalBedCount", "valueInteger": 9 }, { "url": "ActualOn", "valuePeriod": { "start": "2020-07-17T12:00:00Z", "end": "2020-07-17T15:00:00Z" } } ], "providedBy": { "reference": "Organization/874f7758-2f74-4813-a285-7fbdc4b7b96e" }, "characteristic": [ { "coding": [ { "system": "urn:oid:1.2.643.5.1.13.2.1.1.221", "version": "2", "code": "219" } ] } ] } }, { "resource": { "resourceType": "HealthcareService", "extension": [ { "url": "AccompPersonCount", "valueInteger": 0 }, { "url": "BedCountOnRepair", "valueInteger": 0 }, { "url": "FreeBedCount", "valueInteger": 2 }, { "url": "FreeBedCountChild", "valueInteger": 0 }, { "url": "FreeBedCountFemale", "valueInteger": 0 }, { "url": "FreeBedCountMale", "valueInteger": 0 }, { "url": "OccupiedBedCount", "valueInteger": 0 }, { "url": "PrevDayOccupiedBedCount", "valueInteger": 0 }, { "url": "TotalBedCount", "valueInteger": 2 }, { "url": "ActualOn", "valuePeriod": { "start": "2020-07-16T12:00:00Z", "end": "2020-07-16T15:00:00Z" } } ], "providedBy": { "reference": "Organization/874f7758-2f74-4813-a285-7fbdc4b7b96e" }, "characteristic": [ { "coding": [ { "system": "urn:oid:1.2.643.5.1.13.2.1.1.221", "version": "2", "code": "202" } ] } ] } } ] } |
В ответе обновленные данные объекта id:"00e1d604-dec7-4c69-ad5c-7a8225ace006" и данные с идентификатором нового объекта: { "resourceType": "Bundle", "type": "transaction", "entry": [ { "resource": { "resourceType": "HealthcareService", "id": "00e1d604-dec7-4c69-ad5c-7a8225ace006", "extension": [ { "url": "AccompPersonCount", "valueInteger": 1 }, { "url": "BedCountOnRepair", "valueInteger": 2 }, { "url": "FreeBedCount", "valueInteger": 3 }, { "url": "FreeBedCountChild", "valueInteger": 4 }, { "url": "FreeBedCountFemale", "valueInteger": 5 }, { "url": "FreeBedCountMale", "valueInteger": 6 }, { "url": "OccupiedBedCount", "valueInteger": 7 }, { "url": "PrevDayOccupiedBedCount", "valueInteger": 8 }, { "url": "TotalBedCount", "valueInteger": 9 }, { "url": "ActualOn", "valuePeriod": { "start": "2020-07-17T12:00:00Z", "end": "2020-07-17T15:00:00Z" } } ], "providedBy": { "reference": "Organization/874f7758-2f74-4813-a285-7fbdc4b7b96e" }, "characteristic": [ { "coding": [ { "system": "urn:oid:1.2.643.5.1.13.2.1.1.221", "version": "2", "code": "219" } ] } ] } }, { "resource": { "resourceType": "HealthcareService", "id":"88223fbe-ecdb-4951-9ab7-4113121dfafb", "extension": [ { "url": "AccompPersonCount", "valueInteger": 0 }, { "url": "BedCountOnRepair", "valueInteger": 0 }, { "url": "FreeBedCount", "valueInteger": 2 }, { "url": "FreeBedCountChild", "valueInteger": 0 }, { "url": "FreeBedCountFemale", "valueInteger": 0 }, { "url": "FreeBedCountMale", "valueInteger": 0 }, { "url": "OccupiedBedCount", "valueInteger": 0 }, { "url": "PrevDayOccupiedBedCount", "valueInteger": 0 }, { "url": "TotalBedCount", "valueInteger": 2 }, { "url": "ActualOn", "valuePeriod": { "start": "2020-07-16T12:00:00Z", "end": "2020-07-16T15:00:00Z" } } ], "providedBy": { "reference": "Organization/874f7758-2f74-4813-a285-7fbdc4b7b96e" }, "characteristic": [ { "coding": [ { "system": "urn:oid:1.2.643.5.1.13.2.1.1.221", "version": "2", "code": "202" } ] } ] } } ] } |
Обработка даты в сервисе
При приеме сведений в сервис данные, содержащие дату и время обрабатываются по стандарту ISO8601 (по UTC) c учетом таймзоны. Время в параметрах с датой из запроса может быть указано как в виде YYYYMMDDThhmmss±hhmm, так и YYYYMMDDThhmmssZ. Описание ответа представлено в таблице, и в том и в другом случае сохраниться один и тот же момент времени, переданный в запросе.
Пример из запроса |
Пример из ответа |
Вариант передачи 1: в виде YYYYMMDDThhmmss±hhmm
"url": "ActualOn", "valuePeriod": { "start": "2020-07-16T10:32:00+03:00", "end": "2020-07-16T10:33:00+03:00" } |
Вариант ответа 1: в виде YYYYMMDDThhmmssZ (что равнозначно виду YYYYMMDDThhmmss±00:00) "url": "ActualOn", "valuePeriod": { "start": "2020-07-16T07:32:00Z", "end": "2020-07-16T07:33:00Z" } |
Вариант передачи 2: в виде YYYYMMDDThhmmssZ "url": "ActualOn", valuePeriod": { "start": "2020-07-16T10:32:00Z", "end": "2020-07-16T10:33:00Z" } |
Вариант ответа 2: в виде YYYYMMDDThhmmssZ "url": "ActualOn", "valuePeriod": { "start": "2020-07-16T10:32:00Z", "end": "2020-07-16T10:33:00Z" } |
Обработка ошибок
При обработке любого метода в сервисе УКФ выполняется проверка всех параметров. При отрицательном результате выполнения проверки переданных параметров выходные данные будут содержать массив элементов обо всех обнаруженных ошибках. Типизированный сценарий обработки ошибки предполагает вывод кода из стандартного набора системных кодов.