Учет движения коечного фонда

Сервис учета движения коечного фонда предназначен для обмена данными о текущем состоянии коечного фонда медицинских организаций.

Описание решения

Сервис обеспечивает:

  • прием и хранение информации о состоянии коечного фонда;
  • поиск актуальной информации о койках по профилю;
  • поиск актуальной информации о койках в разрезе МО.

Обмен данными между сервисами осуществляется в рамках следующих сценариев:

  1. Передача сведений о сводках коечного фонда из МИС МО.
  2. Поиск данных о состоянии коечного фонда по параметрам: в разрезе профилей, в разрезе МО и кадендарных дат.

Описание сценария «Передача сведений о состоянии коечного фонда»

Базовый сценарий «Передача сведений о состоянии коечного фонда» представляет собой следующую последовательность шагов:

  • Шаг первый: МИС передает сведения о движении коечного фонда за временной период методом 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.

Состав методов сервиса

Функциональность сервиса УКФ обеспечивается следующими методами:

  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"

            }

Обработка ошибок

При обработке любого метода в сервисе УКФ выполняется проверка всех параметров. При отрицательном результате выполнения проверки переданных параметров выходные данные будут содержать массив элементов обо всех обнаруженных ошибках. Типизированный сценарий обработки ошибки предполагает вывод кода из стандартного набора системных кодов.