Сервис интеграционной платформы N3 «Подсистемы Управление потоками» обеспечивает механизмы взаимодействия и обмена медицинскими данными между различными информационными системами, обслуживающими процесс передачи сведений о заявках в рамках конкретной бизнес-логики.
Ниже представлено описание регламента работы с сервисом. В состав описания включены схемы процессов, описание используемых технологий, методов, входных и выходных данных.
Описание решения
Описание процесса обмена данными о заявках
Подсистема УП предназначена для обмена информацией по заявкам в рамках указанного процесса. Для разных типов заявок МО может выступать как в роли направляющей МО, так и в роли целевой (консультирующей) МО.
Процесс обмена данными о заявках в рамках типового решения, реализуемый в УП, поддерживает выполнение следующих действий:
- Получение маршрутов прохождения заявок и описания операций, в рамках которых доступно право создавать заявки.
- Создание заявки по выбранному маршруту.
- Получение списка заявок, которые имеют операции доступные данному получателю.
- Получение списка заявок в статусах, которые доступны для просмотра и действия.
- Получение сведений заявки по её идентификатору.
- Получение набора данных (объекта контекста) собранного при работе с заявкой.
- Получение перечня переходов (операций), которые доступных в текущем состоянии заявки.
- Получение условий перехода (выполнения операций) к новому состоянию (статусу) заявки.
- Получение схемы данных (объекта контекста), необходимого для осуществления перехода к новому состоянию (статусу) заявки.
- Запрос перехода заявки в новое состояние согласно указанному правилу перехода.
УП предоставляет возможность реализации различных сценариев работы с заявками. Сценарии зависят от набора операций, доступных для заявки в рамках указанного процесса. Под операциями понимаются различные действия над заявкой, такие как распределение заявки врачу-консультанту, возврат заявки запрашивающему врачу на дополнение, отказ в консультации по заявке, дополнение заявки сведениями, формирование заключения по заявке и т.д.
Описание базового сценария обмена
Подсистема Управление потоками предназначена для получения, ведения, хранения, поиска и выдачи сведений о заявках согласно контексту бизнес-процесса.
Обмен данными между МИС МО и подсистемой Управление потоками осуществляется в результате выполнения шагов следующего базового сценария:
- Получить из подсистемы список маршрутов и операций, доступных для создания и продвижения заявки.
- Получить из системы по выбранному маршруту описания условий перехода к новому состоянию заявки.
- На основе полученных данных выполнить запрос схем передачи данных, необходимых для осуществления операции создания заявки: формат структуры данных передаваемых в заявку, используемых при описании характеристик пользователя.
- Создать заявку по указанному маршруту.
- Запросить список заявок, доступных для осуществления операций согласно их текущему состоянию. МИС МО запрашивает наличие заявок у подсистемы Управление потоками для последующих действий.
- Получить из системы контекст по заявке для принятия решения о последующем действии. МИС МО запрашивает объект контекста с содержанием заявки по ее идентификатору.
- Выполнить запрос на изменение заявки для перевода её в следующее состояние в рамках указанного процесса. Передача информации из МИС МО в подсистему УП об изменении состояния заявки и переходе к новому статусу. Выполнение производится до тех пор, пока заявка не будет приведена к конечному состоянию.
- Запросить список заявок доступных для просмотра. МИС МО запрашивает список заявок у подсистемы УП для просмотра изменений по заявкам.
- Получить из системы контекст по закрытой заявке для получения консультативного заключения.
Описание протокола взаимодействия
Общая информация о сервисе
В качестве протокола взаимодействия используется RESTful API. Данные необходимо передавать в формате JSON, должен присутствовать http заголовок content-type: application/json.
Информационный обмен может осуществляется в соответствии со стандартом FHIR® (Fast Healthcare Interoperability Resources), разработанным организацией HL7. Требуемая версия FHIR R4, 4.0.0. Подробное описание стандарта — http://hl7.org/FHIR/. Использование REST- протокола в FHIR® – см. http://FHIR-ru.github.io/http.html.
Использование справочников
Справочники, используемые в сервисе, опубликованы в «Сервисе Терминологии». Описание сервиса Терминологии и правила взаимодействия с ним приведены по ссылке: http://api.netrika.ru/docs.php?article=Terminology.
Для каждого использованного в обмене справочника в схеме данных указан OID (объектный идентификатор).
Параметры схемы, указывающие на значения справочников, представляются в следующей виде:
Раскрыть
{
"type": "string",
"title": "<Текстовое значение параметра>",
"description": "<Инструкции по заполнению с указанием источника - oid справочника>"
}
Роли пользователей передаются согласно справочнику НСИ: 1.2.643.5.1.13.2.1.1.734
Медицинские организации передаются согласно справочнику НСИ: 1.2.643.2.69.1.1.1.64
Полный перечень используемых сервисом справочников перечислен в описании параметров объектов.
Внутренняя логика сервиса
Описание данных
Структуры данных, которыми системы обмениваются в ходе работы с заявками, описываются с помощью json-схем. Идентификаторы схем содержатся в описании операций (переходов между статусами) над заявками.
Предметная область – сущность, объединяющая под собой описания данных и маршруты бизнес-процессов.
Общий набор данных - json-схема, описывающая все возможные поля и структуры данных, используемых в документообороте. Схемы, описанные ниже, должны быть сконструированы на основе общего набора данных. Это обеспечивает автоматизацию сбора, поиска и агрегации данных. Хранится одна схема на предметную область.
Метаданные маршрутов бизнес-процессов - json-схема описывающая краткий набор ключевых характеристик маршрута бизнес процесса в рамках предметной области. Позволяет выводить контекстную информацию о маршрутах в списке, строить по маршрутам форму фильтрации. Заявки также можно фильтровать по метаданным маршрутов. Хранится одна схема на предметную область.
Метаданные заявок - json-схема, описывающая краткий набор ключевых характеристик заявки. Позволяет выводить контекстную информацию о заявках в списке, строить по заявкам форму фильтрации. Хранится одна схема на предметную область.
Данные, используемые при операциях с заявками - json-схема, описывающая набор и структуру данных необходимых для передачи со стороны пользователя при совершении операции с заявкой. Можно создать в рамках предметной области столько, сколько требуется.
Роли - json-схема, описывающая набор и структуру данных необходимых для передачи информации о пользователе при проверке доступа к функциям системы. Можно создать в рамках предметной области столько, сколько требуется. Пользователь может на входе передавать несколько наборов присвоенных ему ролей. Например, пользователь может быть одновременно врачом в одной организации и административным руководителем в другой. Соответственно заявки и маршруты ему будут подбираться с учетом обеих его ролей.
Маршрут и его описание
Маршрут - описание порядка выполнения операций в ходе исполнения работ по заявкам.
Рисунок 2 Схема состояний и операций над заявкой
Маршрут описывается с помощью названия, описания и структуры метаданных. Суть маршрута заключается в наборе состояний и операций с заявками.
Состояния или статусы (1, 2, 3 на рисунке) - это контрольные точки в бизнес-процессе. Они создаются в рамках маршрута с указанием имени и правил доступа. Правило доступа описывает, какому пользователю может быть доступна заявка для просмотра в данном статусе.
Переходы (а, б, в, г, д, е на рисунке) - это операции над заявкой по данному маршруту.
Если стартовое состояние перехода не указано (а, б на рисунке), то он используется для создания заявки в том статусе, который указан как конечный. Операций создания заявки по маршруту может быть сколько угодно с любой логикой. Например, можно настроить создание заявки со статусом доступным исполнителю. Можно создать заявку в статусе “черновик”, доступным заявителю.
Если стартовое состояние указано тоже, что и конечное (е на рисунке), то операция не изменит статус заявки. Решает задачу редактирования данных заявки без необходимости изменения статуса.
При указании конечного состояния отличного от стартового - заявка меняет состояние (в, г, д на рисунке).
Для типового маршрута в подсистеме Управление потоками определен следующий набор состояний заявки:
- Черновик
- Направлено в МО
- Отклонено
- Передано врачу
- В листе ожидания
- Запрашивается дополнительная информация
- Подготовка заключения
- Заключение готово
- Организация консилиума
- Подготовка заключения консилиумом
- Подпись заключения участниками консилиума
- На подписи у председателя консилиума
- Заключение консилиума готово
Каждое из состояний заявки имеет свой уникальный идентификатор в системе.
Переходы и ролевой доступ к просмотру
Содержание правил перехода в рамках маршрута:
- Название операции или перехода.
- Начальное состояние. Не указывается, если операция предназначена для создания заявки.
- Итоговое состояние. Указывается обязательно.
- Набор данных, необходимых для осуществления операции.
- Проверки. Осуществляют проверки доступа к выполнению операции и другую бизнес-логику, необходимую для поддержки бизнес-процесса. Текстовое описание каждой проверки содержится в описаниях операций.
- Отклики. Уведомление внешнего сервиса о факте перехода конкретной заявки в определенный статус. Текстовое описание каждого отклика содержится в описаниях операций.
Для определения ролевого доступа к просмотру и работе с заявками используется «ролевой контекст». Например, для предметной области «Тестовая область» ролевой контекст определён набором json-схем. Основной ролевой схемой для работы пользователей МИС является данная схема:
Раскрыть
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema#",
"required": [
"organization",],
"properties": {
"organization": {
"type": "string",
"title": "Организация пользователя",
"examples": [
"Organization/a7ad714e-7c68-4950-ac7d-408bb68e23e9"
],
"description": "Заполняется согласно справочнику НСИ 1.2.643.2.69.1.1.1.64"
},
"SNILS": {
"type": "string",
"title": "СНИЛС",
"examples": [
"89322342342"
],
"description": "СНИЛС сотрудника заполняется без пробелов и тире"
}
}
}
Пример ролевого контекста согласно данной схеме:
Раскрыть
"roleContext": {
"5ff16ba7-9edd-41a4-bd06-2ee33cfd4597": {
"organization": "910bbc2e-e8c3-489d-aee4-5810797b212b",
"SNILS": "11122233344"
}
}
Так же идентификатор схемы ролевого контекста возможно получить при получении сведений о маршруте (getWorkflow) и операции над заявкой (getTransition). Саму схему в последствии можно запросить методом «getSchema».
"5ff16ba7-9edd-41a4-bd06-2ee33cfd4597" – в примере ролевого контекста должно являться идентификатором ролевой схемы соответствующей настройкам доступа на маршруте, смотрите приложение к регламенту.
Описание методов
Состав методов сервиса
Функциональность подсистемы Управление потоками обеспечивается следующими методами:
- Получение списка переходов доступных для создания заявки (GetAvailableTransitions)
- Получение маршрута обработки заявки по идентификатору (GetWorkflow)
- Получение схемы данных передаваемых при осуществлении перехода (GetSchema)
- Создание заявки (POST StartNewProcess)
- Редактирование/обновление заявки (POST MoveToStage)
- Получение списка доступных для действия заявок (POST //GetTransitionAvailableProcesses)
- Получение списка доступных для просмотра заявок (POST //GetReadAvailableProcesses)
- Получение описания правил перехода по его идентификатору (GetTransition)
- Получение объекта контекста заявки (POST //GetProcessContext)
- Передача файла вложения заявки (POST //api/Commands/xds)
- Вызов метода преобразования контекста заявки processContext (/api/debug/convertSimpleJsonToFHIRJson?FHIRType=QuestionnaireResponse) и сохранение результата.
- Вызов метода преобразования ролевого контекста roleContext (/api/debug/convertSimpleJsonToFHIRJson?FHIRType=Parameters) и сохранение результата.
- Описание метода создания заявки по стандарту FHIR (POST //api/FHIR/StartNewProcess)
- Описание метода редактирования/обновления заявки по стандарту FHIR (POST //api/FHIR/MoveToStage)
- Описание метода получения объекта контекста заявки по стандарту FHIR (POST //api/FHIR/ProcessContext)
Структура данных заявки
В методах сервиса для передачи набора данных заявки используется параметр типа «Object» - processContext.
В обмене для структуры данных о заявке используется несколько объектов. Перечень объектов и описание их назначения представлено в таблице ниже.
Данные в параметре типа «Object» - processContext могут быть описаны в формате стандарту FHIR.
Таблица 2 Описание объектов, входящих в состав типовой заявки
|
№ п/п |
Объект |
Назначение объекта по бизнес-логике |
Описание |
|
1 |
patient |
Пациент |
В объекте указывается информация о пациенте. |
|
2 |
requesterPractitioner |
Врач направляющей МО |
В объекте указывается информация о медицинском специалисте направляющей МО |
|
3 |
serviceRequest |
Параметры заявки |
В объекте указывается информация об общих параметрах заявки |
|
4 |
requesterCondition |
Состояние пациента от направляющей МО |
В объекте указывается информация о состоянии пациента со стороны направляющей МО |
|
5 |
diagnosticResults |
Результаты диагностических исследований |
В объекте указывается информация о результатах диагностических исследований пациента со стороны направляющей МО |
|
6 |
medication |
Лекарственные препараты |
В объекте указывается информация о принимаемых пациентом лекарственных препаратах |
|
7 |
observation |
Объективные данные осмотра |
В объекте указывается информация о состоянии пациента, объективные данные о состоянии пациента при осмотре |
|
8 |
attachedfiles |
Прикрепленные файлы |
В объекте указывается информация о прикрепленных файлах, в том числе откреплённых подписях к файлам |
|
9 |
communication |
Комментарий при отказе обработки заявки |
В объекте указывается информация комментарии при отказе обработки заявки |
|
10 |
appointment |
Бронирование времени обслуживания |
В объекте указывается информация о времени (фактическом, желаемом) обработки заявки |
|
11 |
performerPractitioner |
Врач целевой МО |
В объекте указывается информация о медицинском специалисте целевой МО, отвечающем за консультацию |
|
12 |
performerCondition |
Диагноз |
В объекте указывается информация об анамнезе и диагнозах установленных при осмотре пациента со стороны целевой МО. |
|
13 |
diagnosticReport |
Заключение |
В объекте указывается информация о параметрах заключения целевой организации |
|
14 |
presentedForm |
Консультативное заключение |
В объекте указывается информация о ссылке на файлы документа и подписи документа заключения |
|
15 |
council |
Состав консилиума |
В объекте указывается информация о составе консилиума и председателе консилиума |
Структура метаданных заявки
Использование метаданных заявок применяется для вывода контекстной информацию о заявках в списке, для построения форм фильтрации по заявкам. Это общая логика для всех заявок вне зависимости от методов работы с заявками.
В приведенном ниже примере описания структуры метаданных заявки описывается набор и структура формируемых параметров заявки и пути их нахождения в её контексте (наборе структурированных данных агрегированных по ходу заявки по маршруту).
Раскрыть
"schema":
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema#",
"properties": {
"patient": {
"selector": "$.patient.idMPI"
},
"performer": {
"selector": "$.serviceRequest.performerOrganization"
},
"requester": {
"selector": "$.serviceRequest.requesterOrganization"
},
"resultMedicalCare": {
"selector": "$.serviceRequest.resultMedicalCare"
},
"resultAmbulanceDepartureType": {
"selector": "$.serviceRequest.resultAmbulanceDepartureType"
}
}
}
Пример структуры метаданных конкретной заявки по схеме, приведенной выше:
"metadata":
{
"patient": "8ff30a0b-85c3-462c-aae1-3ec719b3c1a3",
"performer": "fc2c38ce-6599-4ff3-ae82-915b91a07db9",
"resultMedicalCare": "5",
"resultAmbulanceDepartureType": "3"
},
- Name - имя процесса или значение человек ориентированного идентификатора (поиск по неполному совпадению).
- Workflow - название маршрута или его идентификатор (точное совпадение).
- Metadata - фильтр по объекту метаданных процесса (правила сопоставления Json-объектов см ниже).
- Created - дата (или период) создания процесса (описание передачи дат см. ниже).
- Updated - дата (или период) обновления процесса (описание передачи дат см. ниже).
Описание принципа сопоставления Json-объектов при использовании в качестве фильтров метаданных маршрута или заявки:
В качестве фильтра принимается Json-объект, в котором путь к искомому значению будет таким же как в объекте, где производится поиск. Например, в метаданных процесса есть следующие данные в формате обмена:
Раскрыть
{
"patientName": "Alexander",
"diagnosis": {
"name": "some name",
"code": 315
},
"participant": {
"name": "Ivan",
"cpecialityCodes": [
103,
203,
304
]
}
}
В таком случае, для доступа к полю "code" в объекте "diagnosis" нужно повторить путь к полю:
Раскрыть
{
"diagnosis": {
"code": 315
}
}
Все выбранные данные в объекте в любом случае будут приведены к строке, и выбор сопоставление производится с помощью SQL-конструкции LIKE (поиск вхождения подстроки). То следующее выражение будет эквивалентно предыдущему:
Раскрыть
{
"diagnosis": {
"code": "315"
}
}
Для выбора нескольких значений, одного и того же поля можно использовать перечисление значений в массиве, однако в таком случае будет использовано полное совпадение:
Раскрыть
{
"diagnosis": {
"code": [
314,
315,
317
]
}
}
В случае, если в объекте фильтра будет несколько полей — итоговое выражение будет собираться с учётом того, что все выражения должны быть истиной.
Раскрыть
{
"patientName": [
"Alex",
"Sam"
],
"diagnosis": {
"name": "some name",
"code": [
314,
315,
317
]
}
}
Передача дат фильтрации:
Для передачи периода дат ожидается структура, представляющая собой массив дат, сериализованный в JSON:
Раскрыть
"created": [ "2020-12-17T11:58:30+03:00", "2020-12-18T13:58:30+03:00" ] или "updated": [ "2020-12-17T11:58:30+03:00", "2020-12-18T13:58:30+03:00" ]
В случае если в массиве одна дата, будут выбраны все данные, в которых искомая дата будет больше чем, переданная в дата массиве. В случае, если передано больше 2х дат — все кроме первых двух будут проигнорированы.
Параметры сортировки:
Для передачи сортировки необходимо передать имя из ответа в поле запроса orderingField. Поля доступные для передачи «Created», «Updated».
Для сортировки по убыванию в поле запроса descendingOrder нужно передать true.
Получение списка переходов доступных для создания заявки (GetAvailableTransitions)
Метод предоставляет перечень маршрутов и описания операций, в рамках которых возможно создавать заявки.
Описание параметров запроса и ответа
Описание параметров запроса метода в таблице ниже.
Таблица 3 Входные параметры метода POST GetAvailableTransitions
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
1 |
roleContext |
object |
1..1 |
Значение ролевого контекста пользователя |
|
2 |
WorkflowFilter |
object |
1..1 |
Значение фильтра (описание принципа работы фильтра в тексте ниже) |
|
3 |
Skip |
number |
0..1 |
Количество пропущенных элементов в выборке |
|
4 |
Take |
number |
0..1 |
Количество элементов в списке |
Фильтр
Объект для фильтрации по маршруту. Все поля являются опциональными (не обязательными). Пример конструкции фильтра:
"WorkflowFilter": {
"name": "",
"metadata": {},
}
-
Name - название маршрута (точное совпадение);
-
Metadata - фильтр по объекту метаданных маршрута (правила сопоставления Json-объектов описаны выше).
Метаданные маршрута описываются по соответствующей схеме и указываются при его создании или редактировании администратором системы.
Описание структуры ответа:
Таблица 4 Выходные параметры метода POST GetAvailableTransitions
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
1 |
roleContext |
object |
1..1 |
Значение ролевого контекста пользователя |
|
2 |
WorkflowFilter |
object |
1..1 |
Значение фильтра |
|
3 |
Skip |
number |
0..1 |
Количество пропущенных элементов в выборке |
|
4 |
Take |
number |
0..1 |
Количество элементов в списке |
|
5 |
roleContext |
object |
1..1 |
Значение ролевого контекста пользователя |
Пример запроса
Пример запроса
POST {{url}}/api/Queries/GetAvailableTransitions
authorization: N3[пробел][GUID передающей системы]
content-type: application/json
{
"RoleContext": {},
"WorkflowFilter":
{
"Organization": "dfe3eec2-8a79-4921-9b58-0ce03a5e6c10"
},
"Skip": 0,
"Take": 10 }
Получение маршрута обработки заявки по идентификатору (GetWorkflow)
Метод возвращает данные о статусах и операциях на маршруте по идентификатору. С помощью возвращаемых данных можно узнать все возможные состояния заявки, перечень возможных операций и переходов между статусами, выполняемые проверки при попытках выполнения переходов и условия доступности заявок на каждом из статусов.
Описание параметров запроса и ответа
В таблице ниже представлено описание параметров запроса метода.
Таблица 5 Входные параметры метода GET GetWorkflow
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
1 |
workflowId |
String |
1..1 |
Идентификатор маршрута |
Описание структуры ответа
Таблица 6 Выходные параметры метода GET GetWorkflow
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
1 |
ErrorCode |
string |
1..1 |
Код результата операции |
|
2 |
Message |
string |
1..1 |
Описание результата операции |
|
3 |
result.Id |
string |
1..1 |
Системный идентификатор маршрута |
|
4 |
result.Name |
string |
1…* |
Название маршрута |
|
5 |
result.Description |
string |
1..1 |
Описание маршрута |
|
6 |
result.IsContruction |
string |
1..1 |
Статус отладки. Если передано True, то маршрут является пилотным |
|
7 |
result.AreaId |
string |
1..1 |
Идентификатор предметной области, в рамках которой существует маршрут |
|
8 |
result.AreaName |
string |
1..1 |
Имя предметной области, в рамках которой существует маршрут |
|
9 |
result.MetadataID |
Array |
0..1 |
Идентификатор метаданных маршрута |
|
10 |
result.Metadata |
object |
0..1 |
Структура метаданных маршрута |
|
11 |
result.Stages |
Array |
0..* |
Статусы |
|
12 |
result.Stages.StageId |
object |
0..1 |
Статус |
|
13 |
result.Stages.StageId.Id |
string |
1..1 |
Идентификатор статуса |
|
14 |
result.Stages.StageId.Name |
string |
1..1 |
Название статуса |
|
15 |
result.Stages.StageId.Description |
string |
0..1 |
Описание статуса |
|
16 |
result.Stages.StageId.Validators |
Array |
0..1 |
Проверки, выполняемые для доступа к данным по заявке, когда она находится в данном статусе |
|
17 |
result.Stages.StageId.Validators.Id |
String |
1..1 |
Идентификатор проверки |
|
18 |
result.Stages.StageId.Validators.Name |
String |
1..1 |
Название проверки |
|
19 |
result.Stages.StageId.IsDisabled |
boolean |
1..1 |
Статус блокировки |
|
20 |
result.Stages.StageId.BusinessStatus |
Object |
0..1 |
Статус согласно справочнику НСИ |
|
21 |
result.Stages.StageId.BusinessStatus.System |
string |
0..1 |
OID справочника статусов |
|
22 |
result.Stages.StageId.BusinessStatus.Code |
string |
0..1 |
Код статуса |
|
23 |
result.Transitions |
Array |
0..1 |
Операции |
|
24 |
result.Transitions.TransitionId |
Object |
1..1 |
Операция (переход) |
|
25 |
result.Transitions.TransitionId.Id |
String |
1..1 |
Идентификатор операции (перехода) |
|
26 |
result.Transitions.TransitionId.Name |
String |
1..1 |
Название операции (перехода) |
|
27 |
result.Transitions.TransitionId.FromStageId |
String |
0..1 |
Идентификатор статуса заявки, в котором можно совершить операцию. Если передаётся «null», то операция используется для создания заявки |
|
28 |
result.Transitions.TransitionId.ToStageId |
String |
1..1 |
Идентификатор статуса заявки, в котором она окажется после осуществления операции (перехода) |
|
29 |
result.Transitions.TransitionId.SchemaId |
String |
0..1 |
Идентификатор схемы данных необходимых для выполнения операции |
|
30 |
result.Transitions.TransitionId.Validators |
Object |
1..* |
Проверки,выполняемые при попытке выполнении операции (перехода) |
|
31 |
result.Transitions.TransitionId.Validators.Id |
String |
1..1 |
Идентификатор проверки |
|
32 |
result.Transitions.TransitionId.Validators.Name |
String |
1..1 |
Описание проверки |
|
33 |
result.Transitions.TransitionId.Callbacks |
Object |
0..* |
Уведомления внешних систем |
|
34 |
result.Transitions.TransitionId.Callbacks.Id |
string |
1..1 |
Идентификатор уведомления |
|
35 |
result.Transitions.TransitionId.Callbacks.Name |
string |
1..1 |
Описание уведомления, которое уходит при успешном выполнении операции (перехода) |
|
36 |
result.IsDisabled |
boolean |
0..1 |
Свойство блокировки маршрута. Если маршрут заблокирован, то по нему будет невозможно создать новую заявку. |
Пример запроса
GET {{url}}/api/Queries/GetWorkflow/[id маршрута]
GET http://[hostname]/api/Queries/GetWorkflow/b3393395-06f7-4261-b403-5dc0dab1296b authorization: N3[пробел][GUID передающей системы]
content-type: application/json
Получение схемы данных передаваемых при осуществлении перехода (GetSchema)
Метод предназначен для получения схемы данных (объекта контекста), необходимого для осуществления перехода к новому состоянию заявки.
Описание параметров запроса и ответа
В таблице ниже представлено описание параметров запроса метода.
Таблица 7 Входные параметры для метода POST GetSchema
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
1 |
id |
String |
1..1 |
Идентификатор схемы |
Описание структуры ответа
В описании структур, передаваемых в ответе данных в формате json-схемы, содержится описания типов передаваемых данных, кратности и обязательности. Справочные материалы в обмене данными в заявках используются в рамках справочников НСИ. В случае использования справочника, в описании структуры данных "description" указывается код справочника.
Если в рамках заявки требуется передать информацию о пациенте, зарегистрированном в ГИС, случае ИЭМК, результатах лабораторных или инструментальных исследований, направлении на оказание медицинской помощи, то согласно схеме описания данных для осуществления операции над заявкой потребуется указать идентификаторы данных объектов из соответствующих сервисов: Индекс пациента, ИЭМК, ОДЛИ, ОДИИ, УО.
Пример запроса
GET {{url}}/api/Commands/GetSchema/[id схемы]
GET http://[hostname]/api/Queries/GetSchema/e57a49c0-717c-4d25-a045-114157567088
authorization: N3[пробел][GUID передающей системы]
content-type: application/json
Создание заявки (POST StartNewProcess)
Для создания заявки в сервисе используется метод POST StartNewProcess. Метод создаёт заявку по маршруту согласно переданному переходу.
Описание параметров запроса
В таблице ниже представлено описание параметров запроса метода.
Таблица 8 Входные параметры для метода POST StartNewProcess
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
1 |
workflowId |
String |
1..1 |
Идентификатор маршрута |
|
2 |
name |
String |
1..1 |
Название заявки |
|
3 |
initialTransitionId |
String |
1..1 |
Идентификатор перехода для создания заявки |
|
4 |
processContext |
Object |
1..1 |
Набор данных (структура, смотреть в контрольных примерах) |
|
5 |
roleContext |
Object |
1..1 |
Значение ролевого контекста пользователя |
Пример запроса
POST {{url}}/api/Commands/StartNewProcess
{
"workflowId": "b3393395-06f7-4261-b403-5dc0dab1296b",
"name": "Моя заявка",
"initialTransitionId": "e9b2cce6-93ec-4118-8728-1580af7b9e82",
"processContext": { <структура, смотреть в контрольных примерах> },
"roleContext": {}
}
Редактирование/обновление заявки (POST MoveToStage)
Для редактирования или обновления данных заявки в сервисе используется метод POST MoveToStage. В базовом назначении метод позволяет осуществить запрос перехода заявки в новое состояние согласно указанному правилу перехода. Далее представлены варианты использования запроса метода при которых происходит переход заявки в новое состояние.
Помимо редактирования заявки, запрос метода используется для обновления состояния заявки в любых других операциях доступных по заявке.
Описание параметров запроса
В таблице ниже представлено описание параметров запроса метода.
Таблица 9 Входные параметры для метода POST MoveToStage
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
1 |
processId |
String |
1..1 |
Идентификатор заявки |
|
2 |
transitionId |
String |
1..1 |
Идентификатор перехода |
|
3 |
processContext |
Object |
1..1 |
Набор данных (структура, смотреть в контрольных примерах) |
|
4 |
roleContext |
Object |
1..1 |
Значение ролевого контекста пользователя |
Пример запроса
POST {{url}}/api/Commands/MoveToStage
{
"processId": "b26c9527-c67b-4702-a525-df20a0645d23",
"transitionId": "6545013e-c9bc-4e35-b466-802769a394bc",
"processContext":{<структура, смотреть в контрольных примерах>},
"roleContext": {}
}
Получение списка доступных для действия заявок (POST //GetTransitionAvailableProcesses)
Для получения списка доступных для действия заявок в сервисе используется метод POST GetTransitionAvailableProcesses. Метод предназначен для получения списка заявок в статусах, которые имеют операции доступные для использования данному пользователю.
Описание параметров запроса
В таблице ниже представлено описание параметров запроса метода.
Таблица 10 Входные параметры для метода фильтрации
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
1 |
roleContext |
String |
1..1 |
Значение ролевого контекста пользователя. RoleContext – фильтрует заявки по правилам доступа. В результате отображаются все заявки, где нет ограничений по ролевому доступу (значение RoleContext игнорируется) и заявки где проверки данных ролевого контекста в текущем статусе позволяют пользователю выполнить операцию (значение RoleContext проверяются). |
|
2 |
workflowFilter |
Object |
0...1 |
Параметры фильтра по схеме описания метаданных маршрута. WorkflowFilter – фильтр заявок по атрибутам и метаданным маршрутов (workflows) по которым они движутся. Атрибуты и метаданные маршрута присваиваются ему при создании или редактировании администратором системы по соответствующей схеме (см. метод получения схем данных). • Name - название маршрута (Строка, точное совпадение) • Metadata - фильтр по объекту метаданных маршрута (Структура, правила сопоставления Json-объектов см. ниже под таблицей) |
|
3 |
processFilter |
Object |
0...1 |
Параметры фильтра по схеме описания метаданных заявки. ProcessFilter – фильтр заявок непосредственно по атрибутам и матаданным самой заявки. Атрибуты заявки присваиваются ей при создании и обновлении. Метаданные заявки генерируются при создании и каждом обновлении по соответствующей схеме (см. метод получения схем данных). |
|
4 |
StageFilter
|
Array |
0...1 |
Фильтр по идентификаторам текущих статусов заявок |
|
5 |
orderingField
|
String |
0...1 |
Поле сортировки |
|
6 |
descendingOrder
|
Boolean |
0...1 |
Направление сортировки |
|
7 |
Skip |
Number |
0..1 |
Количество пропущенных элементов в выборке |
|
5 |
Take |
Number |
0..1 |
Количество элементов в списке |
Подробное описание и примеры структуры схем метаданных для последующего использования в методах фильтрации заявок представлено в пункте 5.3.
Таблица 11 Выходные параметры для метода фильтрации
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
1 |
ErrorCode |
String |
1..1 |
Код результата операции |
|
2 |
Message |
String |
1..1 |
Описание результата операции |
|
3 |
Result.TransitionIds |
Array |
1..1 |
Идентификаторы переходов |
|
4 |
result.ProcessId |
String |
1..1 |
Системный идентификатор заявки |
|
5 |
result.ProcessHumanFriendlyId |
String |
1…* |
Человекоориентированный идентификатор заявки |
|
6 |
result.Metadata |
Object |
1..1 |
Метаданные маршрута |
|
7 |
result.CurrentStage |
String |
1..1 |
Текущий статус заявки |
|
8 |
result.WorkflowId |
String |
1..1 |
Идентификатор маршрута |
|
9 |
result.WorkflowName |
String |
1..1 |
Название маршрута |
|
10 |
result.ProcessName |
String |
1..1 |
Название заявки |
|
11 |
result.BusinessStatus |
Object |
0..1 |
Статус заявки |
|
12 |
result.BusinessStatus. System |
String |
0..1 |
Ссылка на справочник НСИ 1.2.643.2.69.1.1.1.148.2 |
|
13 |
result.BusinessStatus. Code |
string |
0..1 |
Код значения статуса. Код справочника НСИ |
Пример запроса
POST {{url}}/api/Queries/GetTransitionAvailableProcesses
{
"RoleContext": {
"5ff16ba7-9edd-41a4-bd06-2ee33cfd4597": {
"Role": "DEPCHIEF",
"Organization": "931a9317-586c-4dd5-bc32-cd8d3af78903"
}
},
"WorkflowFilter": {},
"ProcessFilter": {
"workflow": "b3393395-06f7-4261-b403-5dc0dab1296b",
"metadata": {
"resultMedicalCare": [
"3",
"5"
],
"resultAmbulanceDepartureType": [
"3",
"1"
]
},
"updated": [],
"created": [
"2020-12-17T11:58:30+03:00",
"2020-12-18T13:58:30+03:00"
]
},
"orderingField": "updated",
"descendingOrder": false,
"BusinessStatusCodes": [
"2"
],
"StageFilter": [],
"Skip": 0,
"Take": 10
}
Пример ответа
{
"result": {
"result": [
{
"transitionIds": [
"6545013e-c9bc-4e35-b466-802769a394bc",
"959450aa-a67d-45e7-b2ba-2f682959c12d"
],
"processId": "3c9b3659-b2b3-424a-ab87-cfde37f1196e",
"processHumanFriendlyId": "TMC122043OOX5",
"metadata": {
"patient": "8ff30a0b-85c3-462c-aae1-3ec719b3c1a3",
"performer": "fc2c38ce-6599-4ff3-ae82-915b91a07db9",
"resultMedicalCare": "5",
"resultAmbulanceDepartureType": "3"
},
"currentStageId": "d41a2f57-6c06-4f38-9982-ea1fc7730d01",
"currentStage": "Черновик",
"workflowId": "b3393395-06f7-4261-b403-5dc0dab1296b",
"workflowName": "Подсистемы Управление потоками_бп",
"processName": "Новая заявка ",
"created": "2020-12-17T13:33:18.966651+03:00",
"updated": "2020-12-17T13:33:18.966651+03:00",
"businessStatus": {
"system": "urn:oid:1.2.643.2.69.1.1.1.148.2",
"code": "2"
}
},
{
"transitionIds": [
"6545013e-c9bc-4e35-b466-802769a394bc",
"959450aa-a67d-45e7-b2ba-2f682959c12d"
],
"processId": "2806edea-0c7f-4f4f-9c01-faa4761eb286",
"processHumanFriendlyId": "TMC12200L75IN",
"metadata": {
"patient": "8ff30a0b-85c3-462c-aae1-3ec719b3c1a3",
"performer": "fc2c38ce-6599-4ff3-ae82-915b91a07db9",
"resultMedicalCare": "5",
"resultAmbulanceDepartureType": "3"
},
"currentStageId": "d41a2f57-6c06-4f38-9982-ea1fc7730d01",
"currentStage": "Черновик",
"workflowId": "b3393395-06f7-4261-b403-5dc0dab1296b",
"workflowName": "Подсистемы Управление потоками_бп",
"processName": "Новая заявка ",
"created": "2020-12-17T15:33:08.284762+03:00",
"updated": "2020-12-17T15:33:08.284762+03:00",
"businessStatus": {
"system": "urn:oid:1.2.643.2.69.1.1.1.148.2",
"code": "2"
}
},
{
"transitionIds": [
"6545013e-c9bc-4e35-b466-802769a394bc",
"959450aa-a67d-45e7-b2ba-2f682959c12d"
],
"processId": "5a6120a1-ceee-48c2-bd5c-a0c3cc83c980",
"processHumanFriendlyId": "TMC122094XD5X",
"metadata": {
"patient": "8ff30a0b-85c3-462c-aae1-3ec719b3c1a3",
"performer": "fc2c38ce-6599-4ff3-ae82-915b91a07db9",
"resultMedicalCare": "5",
"resultAmbulanceDepartureType": "3"
},
"currentStageId": "d41a2f57-6c06-4f38-9982-ea1fc7730d01",
"currentStage": "Черновик",
"workflowId": "b3393395-06f7-4261-b403-5dc0dab1296b",
"workflowName": "Подсистемы Управление потоками_бп",
"processName": "Новая заявка ",
"created": "2020-12-18T11:17:04.438225+03:00",
"updated": "2020-12-18T11:17:04.438225+03:00",
"businessStatus": {
"system": "urn:oid:1.2.643.2.69.1.1.1.148.2",
"code": "2"
}
},
{
"transitionIds": [
"6545013e-c9bc-4e35-b466-802769a394bc",
"959450aa-a67d-45e7-b2ba-2f682959c12d"
],
"processId": "e90d54af-c1e8-4127-bb4f-f573d7d3353d",
"processHumanFriendlyId": "TMC1220926SYY",
"metadata": {
"patient": "8ff30a0b-85c3-462c-aae1-3ec719b3c1a3",
"performer": "fc2c38ce-6599-4ff3-ae82-915b91a07db9",
"resultMedicalCare": "5",
"resultAmbulanceDepartureType": "3"
},
"currentStageId": "d41a2f57-6c06-4f38-9982-ea1fc7730d01",
"currentStage": "Черновик",
"workflowId": "b3393395-06f7-4261-b403-5dc0dab1296b",
"workflowName": "Подсистемы Управление потоками_бп",
"processName": "Новая заявка ",
"created": "2020-12-18T11:17:12.202303+03:00",
"updated": "2020-12-18T11:17:12.202303+03:00",
"businessStatus": {
"system": "urn:oid:1.2.643.2.69.1.1.1.148.2",
"code": "2"
}
},
{
"transitionIds": [
"6545013e-c9bc-4e35-b466-802769a394bc",
"959450aa-a67d-45e7-b2ba-2f682959c12d"
],
"processId": "4bf133a0-549f-4e28-b0e1-3a44c9b0bbde",
"processHumanFriendlyId": "TMC122052YL1B",
"metadata": {
"patient": "8ff30a0b-85c3-462c-aae1-3ec719b3c1a3",
"performer": "fc2c38ce-6599-4ff3-ae82-915b91a07db9",
"resultMedicalCare": "3",
"resultAmbulanceDepartureType": "3"
},
"currentStageId": "d41a2f57-6c06-4f38-9982-ea1fc7730d01",
"currentStage": "Черновик",
"workflowId": "b3393395-06f7-4261-b403-5dc0dab1296b",
"workflowName": "Подсистемы Управление потоками_бп",
"processName": "Новая заявка ",
"created": "2020-12-18T11:58:30.200089+03:00",
"updated": "2020-12-18T11:58:30.200089+03:00",
"businessStatus": {
"system": "urn:oid:1.2.643.2.69.1.1.1.148.2",
"code": "2"
}
},
{
"transitionIds": [
"6545013e-c9bc-4e35-b466-802769a394bc",
"959450aa-a67d-45e7-b2ba-2f682959c12d"
],
"processId": "727523ee-059e-40bf-a396-abcff9160287",
"processHumanFriendlyId": "TMC122055BU7D",
"metadata": {
"patient": "8ff30a0b-85c3-462c-aae1-3ec719b3c1a3",
"performer": "fc2c38ce-6599-4ff3-ae82-915b91a07db9",
"requester": "931a9317-586c-4dd5-bc32-cd8d3af78903",
"resultMedicalCare": "3",
"resultAmbulanceDepartureType": "3"
},
"currentStageId": "d41a2f57-6c06-4f38-9982-ea1fc7730d01",
"currentStage": "Черновик",
"workflowId": "b3393395-06f7-4261-b403-5dc0dab1296b",
"workflowName": "Подсистемы Управление потоками_бп",
"processName": "Новая заявка ",
"created": "2020-12-18T12:23:30.272053+03:00",
"updated": "2020-12-18T12:23:30.272053+03:00",
"businessStatus": {
"system": "urn:oid:1.2.643.2.69.1.1.1.148.2",
"code": "2"
}
}
],
"total": 6
},
"success": true,
"errorCode": 0,
"message": null,
"stackTrace": null
}
Получение списка доступных для просмотра заявок (POST //GetReadAvailableProcesses)
Для получения списка доступных для просмотра заявок в сервисе используется метод POST GetReadAvailableProcesses. Метод предназначен для получения списка заявок в статусах, которые доступны данному пользователю для просмотра и действия.
Описание параметров запроса
В таблице ниже представлено описание параметров запроса метода.
Таблица 12 Входные параметры для метода фильтрации
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
1 |
roleContext |
Object |
1..1 |
Значение ролевого контекста пользователя. RoleContext – фильтрует заявки по правилам доступа. В результате отображаются все заявки, где нет ограничений по ролевому доступу (значение RoleContext игнорируется) и заявки где проверки данных ролевого контекста в текущем статусе позволяют пользователю выполнить операцию (значение RoleContext проверяются). |
|
2 |
WorkflowFilter |
Object |
0...1 |
Параметры фильтра по схеме описания метаданных маршрута. WorkflowFilter – фильтр заявок по атрибутам и метаданным маршрутов (workflows) по которым они движутся. Атрибуты и метаданные маршрута присваиваются ему при создании или редактировании администратором системы по соответствующей схеме (см. метод получения схем данных). • Name - название маршрута (Строка, точное совпадение) • Metadata - фильтр по объекту метаданных маршрута (Структура, правила сопоставления Json-объектов см. ниже) |
|
3 |
ProcessFilter |
Object |
0...1 |
Параметры фильтра по схеме описания метаданных заявки. ProcessFilter – фильтр заявок непосредственно по атрибутам и матаданным самой заявки. Атрибуты заявки присваиваются ей при создании и обновлении. Метаданные заявки генерируются при создании и каждом обновлении по соответствующей схеме (см. метод получения схем данных). |
|
4 |
StageFilter |
Array |
0...1 |
Фильтр по идентификаторам текущих статусов заявок |
|
5 |
orderingField |
String |
0...1 |
Поле сортировки |
|
6 |
descendingOrder |
Boolean |
0...1 |
Направление сортировки. Для сортировки по убыванию в поле запроса descendingOrder нужно передать true. |
|
7 |
Skip |
Number |
0..1 |
Количество пропущенных элементов в выборке |
|
8 |
Take |
Number |
0..1 |
Количество элементов в списке |
Пример запроса
POST {{url}}/api/Queries/GetReadAvailableProcesses
{
"RoleContext": {
"5ff16ba7-9edd-41a4-bd06-2ee33cfd4597": {
"Role": "DEPCHIEF",
"Organization": "931a9317-586c-4dd5-bc32-cd8d3af78903"
}
},
"WorkflowFilter": {},
"ProcessFilter": {
"workflow": "b3393395-06f7-4261-b403-5dc0dab1296b",
"metadata": {
"resultMedicalCare": [
"3",
"5"
],
"resultAmbulanceDepartureType": [
"3",
"1"
]
},
"updated": [],
"created": [
"2020-12-17T11:58:30+03:00",
"2020-12-18T13:58:30+03:00"
]
},
"orderingField": "updated",
"descendingOrder": false,
"BusinessStatusCodes": [
"2"
],
"StageFilter": [],
"Skip": 0,
"Take": 10
}
Получение описания правил перехода по его идентификатору (GetTransition)
Метод возвращает описание условий перехода к новому состоянию заявки.
Описание параметров запроса и ответа
В таблице ниже представлено описание параметров запроса метода.
Таблица 13 Входные параметры для метода POST GetTransition
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
2 |
Id |
String |
1..1 |
Идентификатор перехода |
Описание структуры ответа
Таблица 14 Выходные параметры для метода POST GetTransition
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
1 |
ErrorCode |
string |
1..1 |
Код результата операции |
|
2 |
Message |
string |
1..1 |
Описание результата операции |
|
4 |
string |
1..1 |
Идентификатор перехода |
|
|
5 |
Result.Name |
string |
1..1 |
Название перехода |
|
6 |
Result.fromStageId |
string |
1..1 |
Стартовый статус |
|
7 |
Result.toStageId |
string |
1..1 |
Итоговый статус |
|
8 |
Result.schemaId |
string |
1..1 |
Идентификатор схемы данных необходимых для осуществления перехода |
Пример запроса
GET {{url}}/api/Queries/GetTransition/[id перехода]
GET http://[hostname]/api/Queries/GetTransition/e9b2cce6-93ec-4118-8728-1580af7b9e82
authorization: N3[пробел][GUID передающей системы]
content-type: application/json
Получение объекта контекста заявки (POST //GetProcessContext)
Для получения объекта контекста заявки в сервисе используется метод POST GetProcessContext. Метод предназначен для получения набора данных (объекта контекста), собранного при работе с заявкой.
Описание параметров запроса
В таблице ниже представлено описание параметров запроса метода.
Таблица 15 Входные параметры для метода POST GetProcessContext
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
1 |
RoleContext |
Object |
1..1 |
Структуры ролевого контекста согласно схемам предметной области |
|
2 |
ProcessId |
String |
1..1 |
Идентификатор процесса () |
Пример запроса
POST {{url}}/api/Queries/GetProcessContext
{
"RoleContext": {
"5ff16ba7-9edd-41a4-bd06-2ee33cfd4597": {
"Role": "DEPCHIEF",
"Organization": "931a9317-586c-4dd5-bc32-cd8d3af78903"
}
},
"ProcessId": "64f88f61-7747-402c-9e04-d93eaadc234f"
}
Редактирование маршрута (POST //UpdateProcess)
Для редактирования маршрута в сервисе используется метод POST UpdateProcess. Метод предназначен для внесения изменений в наименование маршрута.
Описание параметров запроса
В таблице ниже представлено описание параметров запроса метода.
Таблица 16 Входные параметры для метода POST UpdateProcess
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
1 |
ProcessId |
String |
1..1 |
Идентификатор процесса () |
|
2 |
Name |
String |
1..1 |
Наименование процесса |
Пример запроса
POST {{url}}/api/Commands/UpdateProcess
{
"ProcessId": "d7d7d4ae-a012-468c-b625-7fc4acb1e49a",
"Name": "Новая заявка"
}
Организация обмена файлами. Компонент XDS
Компонент XDS предназначен для распределенного хранения данных, поступающих в функциональные сервисы платформы N3. Компонент представляет собой REST-сервис и представляет собой сайт IIS. Компонент распространяется как самостоятельный компонент в виде nuget-пакета вида N3.XDS.0.1.0-unstable0030.nupkg.
В текущем решении реализованы следующие методы:
- Регистрация документа в XDS.
- Получение документа из XDS.
Передача файла вложения заявки (POST //api/Commands/xds)
Для передачи объекта файла вложения, прикрепленного к заявке (регистрация данных) в сервисе XDS используется метод POST {{url}}/api/Commands/xds, позволяющий загрузить файл и в результате получить ссылку (идентификатор) загруженного в ответ. Метод предназначен для отправки файлов, прикрепленных к заявке (например, результатов выполненных исследований).
Описание параметров запроса
В таблице ниже представлено описание параметров запроса метода.
Таблица 17 Входные параметры для метода POST //api/Commands/xds
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
1 |
formFile |
string |
0..1 |
Ссылка на файл, указывается для передачи расположение файла |
Пример запроса
POST {{url}}/api/Commands/xds
{
formFile
}
Получение файла вложения заявки (POST //xds)
Для получения объекта файла вложения, прикрепленного к заявке в сервисе, используется метод POST {{url}}/api/Queries/xds/{fileId}. Метод предназначен для получения файлов, прикрепленных к заявке (например, результатов выполненных исследований), при выполнении следующих условий:
- На входе передается идентификатор заявки, по которой необходимо получить файл, ссылку (идентификатор) на файл, ролевой контекст.
- Система проверяет ролевой контекст для текущего состояния заявки, наличие идентификатора файла в контексте заявки.
Если оба условия удовлетворены, то пользователю предоставляется возможность получить файл
Описание параметров запроса
В таблице ниже представлено описание параметров запроса метода.
Таблица 18 Входные параметры для метода POST //xds
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
1 |
fileId |
string |
0..1 |
Идентификатор файла, полученный в ответе при отправке. Идентификатор указывается в контексте заявки. |
|
2 |
RoleContext |
array |
0..1 |
Ролевой контекст для текущего состояния заявки в процессе |
Пример запроса
POST {{url}}/api/Queries/xds/{fileId}
{
"RoleContext": {
"5ff16ba7-9edd-41a4-bd06-2ee33cfd4597": {
"Role": "DEPCHIEF",
"Organization": "931a9317-586c-4dd5-bc32-cd8d3af78903"
}
},
"ProcessId": "b4fa714e-5d81-485a-bb22-16ae2b4ffe2f"
}
Организация поддержки FHIR-стандарта в методах сервиса
Сервис предоставляет возможность обмена данными по стандарту FHIR. С целью упрощения процесса интеграции с сервисом Подсистемы Управление потоками по стандарту FHIR реализовано два метода, позволяющие преобразовывать данные простого формата json к формату FHIR. Методы могут помочь при отладке в процессе интеграции. Использование методов преобразования не обязательно. Приведение к формату FHIR, если его применение предполагает обмен, можно выполнять самостоятельно.
Для конвертации данных в формат стандарта FHIR и обратно предназначены методы:
- /api/debug/convertSimpleJsonToFHIRJson - преобразование из простой структуры в FHIR;
- /api/debug/convertFHIRJsonToSimpleJson - обратное преобразование из FHIR в простую структуру.
Данный стандарт поддерживается для следующих методов обмена данными заявки /api/FHIR/StartNewProcess, /api/FHIR/MoveToStage, /api/FHIR/ProcessContext, /api/FHIR/Process/{processId}.
Общий принцип преобразования
При организации обмена по стандарту FHIR для указанных выше методов работы с заявкой происходит преобразование данных processContext и roleContext к формату ресурсов FHIR questionnaireresponse и parameters соответственно.
Для преобразования в формат FHIR в адресе запроса необходимо указать тип ресурса в формат которого конвертируются данные:
/api/debug/convertSimpleJsonToFHIRJson?FHIRType=QuestionnaireResponse
или
/api/debug/convertSimpleJsonToFHIRJson?FHIRType=Parameters.
При этом в теле запроса передаются данные processContext и roleContext в стандартном формате json.
Сценарий преобразования стандартного json в формат FHIR предполагает следующие шаги:
- Вызов метода преобразования контекста заявки processContext (/api/debug/convertSimpleJsonToFHIRJson?FHIRType=QuestionnaireResponse) и сохранение результата.
- Вызов метода преобразования ролевого контекста roleContext (/api/debug/convertSimpleJsonToFHIRJson?FHIRType=Parameters) и сохранение результата.
- Вызов метода обработки заявки FHIR (например, создания заявки POST /api/FHIR/StartNewProcess) и добавление в тело запроса результатов шагов 1 и 2.
- Получение результата создания заявки по стандарту FHIR.
Примеры полного преобразования тела запроса по созданию заявки в FHIR в тексте ниже.
Структуры данных заявки, ролевого контекста и метаданных приводятся к максимально утилитарному минималистичному формату json. Интерфейс на FHIR генерируется и интерпретируются автоматически. Данные передаваемые клиентскими системами при создании и изменении заявки интерпретируются как формы(анкеты), заполненные пользователем согласно формату ресурса questionnaireresponse стандарта FHIR и параметры пользователя для определения ролевого доступа – формат ресурса parameters стандарта FHIR.
Далее конвертированные результаты для processContext и roleContext можно использовать с методами обработки заявки по FHIR (См. описание в пунктах 5.15.4 - 5.15.8).
Для обратного преобразования предназначен метод /api/debug/convertFHIRJsonToSimpleJson, в теле запроса которого передаются данные processContext и roleContext в формате FHIR. В результате обработки будут получены объекты processContext и roleContext приведенные к простому виду json, которые можно применять со стандартными методами работы с заявкой.
Обработка данных из processContext в FHIR
При конвертации входящих данных из processContext к виду FHIR для методов startNewProcess и moveToStage преобразовываются структуры объекта "resourse", входящего в параметр запроса с именем "processContext" в структуры, которые хранятся физически.
Структура преобразовывается соответственно типам данных ресурса FHIR questionnaireresponse (подробное описание состава ресурса по ссылке http://FHIR-ru.github.io/questionnaireresponse.html).
- "valueString": "<string>" – строки;
- "valueBoolean": <boolean> – булевые;
- "valueInteger": <integer> – числа;
- "item": [{}] - вложенные сложные структуры, массивы, объекты.
Для разделения и преобразования объектов и массивов внутри processContext применяется следующая логика:
- Узел типа "object" и все элементы, которые содержит объект при конвертации приводятся к виду:
{
"linkId": "object",
"answer": [
{
"item": []
}
]
}
Объект FHIR "answer" - может содержать внутри элементы или item или value (), где item - object, value - примитивный тип (string, bool, interger, ...). Если указаны оба варианты, то выводится ошибка. Также, если в объекте FHIR item лежит другой item, это обозначает, что вложенный объект item – массив, все элементы внутри которого будут иметь вид, принятый для данного типа элементов.
- Узел типа "array" и все элементы, которые содержит объект при конвертации приводятся к виду:
{
"linkId": "array",
"item": []
}
Массив может состоять как из примитивных типов, так и из объектов, все элементы внутри которых будут иметь вид, принятый для данного типа элементов.
Например, узел «объект»:
Пример объекта
"patient": {
"patientIdMPI": "019802c4-7e56-4f60-a10b-34ba4b256219",
"patientName": "Гусев Евгений Викторович",
"patientemail": "89128329zxc813@mail.com"
}
Преобразовывается к виду:
Нажмите здесь для раскрытия...
{
"linkId": "patient",
"text": "object",
"item": [
{
"linkId": "patientIdMPI",
"answer": [
{
"valueString": "019802c4-7e56-4f60-a10b-34ba4b256219"
}
]
},
{
"linkId": "patientName",
"answer": [
{
"valueString": "Гусев Евгений Викторович"
}
]
},
{
"linkId": "patientemail",
"answer": [
{
"valueString": "89128329zxc813@mail.com"
}
]
}
]
}
Например, для узла «массив»:
Нажмите здесь для раскрытия...
"files": [
{
"id": "1",
"URL": "ya.ru",
"isDeleted": false
}
]
Преобразовывается к виду:
Пример запроса
{
"linkId": "files",
"item": [
{
"linkId": "0",
"answer": [
{
"item": [
{
"linkId": "id",
"answer": [
{
"valueString": "1"
}
]
},
{
"linkId": "URL",
"answer": [
{
"valueString": "ya.ru"
}
]
},
{
"linkId": "isDeleted",
"answer": [
{
"valueBoolean": false
}
]
}
]
}
]
}
]
}
Элементы массива нумеруются по порядку "linkId": "0", так как узел "linkId" в FHIR является обязательным.
В методах /api/FHIR/StartNewProcess и /api/FHIR/MoveToStage сервис поддерживает и обратное преобразование данных из переданных в по стандарту FHIR к внутреннему формату.
При работе с методом /api/FHIR/ProcessContext так же поддерживается преобразование в обратную сторону из структуры, хранящейся в системе к формату FHIR.
Пример стандартной структуры TMCore:
Нажмите здесь для раскрытия...
{
"patient": {
"idMPI": "8ff30a0b-85c3-462c-aae1-3ec719b3c1a3",
"identityDocument": [
{
"id": "1",
"system": "1.2.643.2.69.1.1.1.6.14",
"code": "0003123123"
},
{
"id": "2",
"system": "1.2.643.2.69.1.1.1.6.228",
"code": "7849500830000203"
}
],
"birthDate": "2002-11-14",
"gender": "male",
"social": {
"registration": "1",
"socialStatus": "1"
},
"placeOfWork": "Google",
"address": {
"district": "район",
"city": "город/село",
"line": "ул. Наименование улицы,д.№"
},
"fullName": "Вакуленко Борис Владимирович",
"contact": {
"name": "ФИО вызывавшего",
"telecom": "125-25-25"
}
}
}
Пример структуры FHIR преобразованной по структуре выше:
Нажмите здесь для раскрытия...
{
"resourceType": "QuestionnaireResponse",
"status": "completed",
"item": [
{
"linkId": "patient",
"answer": [
{
"item": [
{
"linkId": "idMPI",
"answer": [
{
"valueString": "8ff30a0b-85c3-462c-aae1-3ec719b3c1a3"
}
]
},
{
"linkId": "identityDocument",
"item": [
{
"linkId": "0",
"answer": [
{
"item": [
{
"linkId": "id",
"answer": [
{
"valueString": "1"
}
]
},
{
"linkId": "system",
"answer": [
{
"valueString": "1.2.643.2.69.1.1.1.6.14"
}
]
},
{
"linkId": "code",
"answer": [
{
"valueString": "0003123123"
}
]
}
]
}
]
},
{
"linkId": "1",
"answer": [
{
"item": [
{
"linkId": "id",
"answer": [
{
"valueString": "2"
}
]
},
{
"linkId": "system",
"answer": [
{
"valueString": "1.2.643.2.69.1.1.1.6.228"
}
]
},
{
"linkId": "code",
"answer": [
{
"valueString": "7849500830000203"
}
]
}
]
}
]
}
]
},
{
"linkId": "birthDate",
"answer": [
{
"valueString": "2002-11-14"
}
]
},
{
"linkId": "gender",
"answer": [
{
"valueString": "male"
}
]
},
{
"linkId": "social",
"answer": [
{
"item": [
{
"linkId": "registration",
"answer": [
{
"valueString": "1"
}
]
},
{
"linkId": "socialStatus",
"answer": [
{
"valueString": "1"
}
]
}
]
}
]
},
{
"linkId": "placeOfWork",
"answer": [
{
"valueString": "Google"
}
]
},
{
"linkId": "address",
"answer": [
{
"item": [
{
"linkId": "district",
"answer": [
{
"valueString": "район"
}
]
},
{
"linkId": "city",
"answer": [
{
"valueString": "город/село"
}
]
},
{
"linkId": "line",
"answer": [
{
"valueString": "ул. Наименование улицы,д.№"
}
]
}
]
}
]
},
{
"linkId": "fullName",
"answer": [
{
"valueString": "Вакуленко Борис Владимирович"
}
]
},
{
"linkId": "contact",
"answer": [
{
"item": [
{
"linkId": "name",
"answer": [
{
"valueString": "ФИО вызывавшего"
}
]
},
{
"linkId": "telecom",
"answer": [
{
"valueString": "125-25-25"
}
]
}
]
}
]
}
]
}
]
}
]
}
Обработка данных из roleContext в FHIR
При конвертации входящих данных из roleContext к виду FHIR для методов startNewProcess и moveToStage преобразовываются структуры объекта ролевого контекста в структуры, которые хранятся физически.
Структура преобразовываются в соответствии типов данных ресурса FHIR parameters (подробное описание состава ресурса по ссылке http://FHIR-ru.github.io/parameters.html).
Для разделения и преобразования объектов и массивов внутри roleContext применяется следующая логика:
- Узел типа "object" и все элементы, которые содержит объект при конвертации приводятся к виду:
Нажмите здесь для раскрытия...
{
"name": "object",
"resource": {
"resourceType": "Parameters",
"parameter": [
{
"name": "element",
"valueString": "value"
}
]
}
}
Объект FHIR "parameter" - может содержать внутри и элементы, и значения элементов value (), где value - примитивный тип (string, bool, interger, ...).
- Узел типа "array" и все элементы, которые содержит объект при конвертации приводятся к виду:
Нажмите здесь для раскрытия...
{
"name": "array",
"part": [
{
"name": "0",
"resource": {
"resourceType": "Parameters",
"parameter": [
{
"name": "Role",
"valueString": "DOCTOR"
}
]
}
]
}
Объект FHIR "part" - может содержать внутри объекты, все элементы внутри которых будут иметь вид, принятый для данного типа элементов.
Пример структуры ролевого контекста TMCore:
Нажмите здесь для раскрытия...
"RoleContext": {
"5ff16ba7-9edd-41a4-bd06-2ee33cfd4597": {
"organization": "910bbc2e-e8c3-489d-aee4-5810797b212b",
"SNILS": "11122233344"
}
}
Пример структуры ролевого контекста по FHIR преобразованной из структуры выше:
Нажмите здесь для раскрытия...
{
"resourceType": "Parameters",
"parameter": [
{
"name": "RoleContext",
"resource": {
"resourceType": "Parameters",
"parameter": [
{
"name": "5ff16ba7-9edd-41a4-bd06-2ee33cfd4597",
"resource": {
"resourceType": "Parameters",
"parameter": [
{
"name": "organization",
"valueString": "910bbc2e-e8c3-489d-aee4-5810797b212b"
},
{
"name": "SNILS",
"valueString": "11122233344"
}
]
}
}
]
}
}
]
}
Описание метода создания заявки по стандарту FHIR (POST //api/FHIR/StartNewProcess)
Метод предназначен для создания заявки по стандарту FHIR. В таблице ниже представлено описание параметров запроса метода.
Таблица 19 Входные параметры для метода POST /api/FHIR/StartNewProcess
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
1 |
workflowId |
String |
1..1 |
Идентификатор маршрута |
|
2 |
name |
String |
1..1 |
Название заявки |
|
3 |
initialTransitionId |
String |
1..1 |
Идентификатор перехода для создания заявки |
|
4 |
processContext |
Object |
1..1 |
Набор данных (структура, смотреть в контрольных примерах). Может быть получен в результате преобразования данных к формату FHIR |
|
5 |
roleContext |
Object |
1..1 |
Значение ролевого контекста пользователя. Может быть получен в результате преобразования данных к формату FHIR |
Пример формата запроса по стандарту FHIR
Пример запроса
{
"resourceType": "Parameters",
"parameter": [
{
"name": "workflowId",
"valueString": "00000000-0000-0000-0000-000000000000",
},
{
"name": "name",
"valueString": null,
},
{
"name": "initialTransitionId",
"valueString": null,
},
{
"name": "processContext",
"resource": {}
},
{
"name": "roleContext",
"part": "[{}]"
}
]
}
Полный пример запроса представлен в приложении с контрольными примерами.
Описание метода редактирования/обновления заявки по стандарту FHIR (POST //api/FHIR/MoveToStage)
Метод предназначен для редактирования и обновления заявки по маршруту по стандарту FHIR. В таблице ниже представлено описание параметров запроса метода.
Таблица 20 Входные параметры для метода POST /api/FHIR/MoveToStage
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
1 |
processId |
String |
1..1 |
Идентификатор заявки |
|
2 |
transitionId |
String |
1..1 |
Идентификатор перехода |
|
3 |
processContext |
Object |
1..1 |
Набор данных (структура, смотреть в контрольных примерах). Может быть получен в результате преобразования данных к формату FHIR |
|
4 |
roleContext |
Object |
1..1 |
Значение ролевого контекста пользователя. Может быть получен в результате преобразования данных к формату FHIR |
Пример формата запроса по стандарту FHIR
Пример запроса
{
"resourceType": "Parameters",
"parameter": [
{
"name": "processId",
"valueString": "00000000-0000-0000-0000-000000000000",
},
{
"name": "transitionId",
"valueString": "00000000-0000-0000-0000-000000000000",
},
{
"name": "processContext",
"resource": {}
},
{
"name": "roleContext",
"part": "{}",
}
]
}
Полный пример запроса представлен в приложении с контрольными примерами.
Описание метода получения объекта контекста заявки по стандарту FHIR (POST //api/FHIR/ProcessContext)
Метод предназначен для получения объекта контекста заявки по стандарту FHIR. В таблице ниже представлено описание параметров запроса метода.
Таблица 21 Входные параметры для метода POST //api/FHIR/ProcessContext
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
1 |
RoleContext |
Object |
1..1 |
Структуры ролевого контекста согласно схемам предметной области |
|
2 |
ProcessId |
String |
1..1 |
Идентификатор процесса |
Пример формата запроса по стандарту FHIR
Пример запроса
{
"resourceType": "Parameters",
"parameter": [
{
"name": "processId",
"valueString": "00000000-0000-0000-0000-000000000000",
},
{
"name": "roleContext",
"part": "{}",
}
]}
Полный пример запроса представлен в приложении с контрольными примерами.
Пример полного преобразования тела запроса по созданию заявки в FHIR
Пример запроса
{
"resourceType": "Parameters",
"parameter": [
{
"name": "workflowId",
"valueString": "b3393395-06f7-4261-b403-5dc0dab1296b"
},
{
"name": "name",
"valueUrl": "Sz-process6-FHIR"
},
{
"name": "initialTransitionId",
"valueUrl": "e9b2cce6-93ec-4118-8728-1580af7b9e82"
},
{
"name": "processContext",
"resource": {
"resourceType": "QuestionnaireResponse",
"status": "completed",
"item": [
{
"linkId": "patient",
"answer": [
{
"item": [
{
"linkId": "idMPI",
"answer": [
{
"valueString": "8ff30a0b-85c3-462c-aae1-3ec719b3c1a3"
}
]
},
{
"linkId": "identityDocument",
"item": [
{
"linkId": "0",
"answer": [
{
"item": [
{
"linkId": "id",
"answer": [
{
"valueString": "1"
}
]
},
{
"linkId": "system",
"answer": [
{
"valueString": "1.2.643.2.69.1.1.1.6.14"
}
]
},
{
"linkId": "code",
"answer": [
{
"valueString": "0003123123"
}
]
}
]
}
]
},
{
"linkId": "1",
"answer": [
{
"item": [
{
"linkId": "id",
"answer": [
{
"valueString": "2"
}
]
},
{
"linkId": "system",
"answer": [
{
"valueString": "1.2.643.2.69.1.1.1.6.228"
}
]
},
{
"linkId": "code",
"answer": [
{
"valueString": "7849500830000203"
}
]
}
]
}
]
}
]
},
{
"linkId": "birthDate",
"answer": [
{
"valueString": "2002-11-14"
}
]
},
{
"linkId": "gender",
"answer": [
{
"valueString": "male"
}
]
},
{
"linkId": "social",
"answer": [
{
"item": [
{
"linkId": "registration",
"answer": [
{
"valueString": "1"
}
]
},
{
"linkId": "socialStatus",
"answer": [
{
"valueString": "1"
}
]
}
]
}
]
},
{
"linkId": "placeOfWork",
"answer": [
{
"valueString": "Google"
}
]
},
{
"linkId": "address",
"answer": [
{
"item": [
{
"linkId": "district",
"answer": [
{
"valueString": "район"
}
]
},
{
"linkId": "city",
"answer": [
{
"valueString": "город/село"
}
]
},
{
"linkId": "line",
"answer": [
{
"valueString": "ул. Наименование улицы,д.№"
}
]
}
]
}
]
},
{
"linkId": "fullName",
"answer": [
{
"valueString": "Вакуленко Борис Владимирович"
}
]
},
{
"linkId": "contact",
"answer": [
{
"item": [
{
"linkId": "name",
"answer": [
{
"valueString": "ФИО вызывавшего"
}
]
},
{
"linkId": "telecom",
"answer": [
{
"valueString": "125-25-25"
}
]
}
]
}
]
}
]
}
]
},
{
"linkId": "dispatcherRole",
"answer": [
{
"item": [
{
"linkId": "identityDocument",
"answer": [
{
"item": [
{
"linkId": "system",
"answer": [
{
"valueString": "1.2.643.2.69.1.1.1.6.223"
}
]
},
{
"linkId": "code",
"answer": [
{
"valueString": "48835311311"
}
]
}
]
}
]
},
{
"linkId": "dispatcherNumber",
"answer": [
{
"valueString": "АБ-23"
}
]
},
{
"linkId": "organization",
"answer": [
{
"valueString": "931a9317-586c-4dd5-bc32-cd8d3af78903"
}
]
}
]
}
]
},
{
"linkId": "paramedicRole",
"answer": [
{
"item": [
{
"linkId": "identityDocument",
"answer": [
{
"item": [
{
"linkId": "system",
"answer": [
{
"valueString": "1.2.643.2.69.1.1.1.6.223"
}
]
},
{
"linkId": "code",
"answer": [
{
"valueString": "48835311311"
}
]
}
]
}
]
},
{
"linkId": "organization",
"answer": [
{
"valueString": "931a9317-586c-4dd5-bc32-cd8d3af78903"
}
]
}
]
}
]
},
{
"linkId": "seniorParamedicRole",
"answer": [
{
"item": [
{
"linkId": "identityDocument",
"answer": [
{
"item": [
{
"linkId": "system",
"answer": [
{
"valueString": "1.2.643.2.69.1.1.1.6.223"
}
]
},
{
"linkId": "code",
"answer": [
{
"valueString": "48835311311"
}
]
}
]
}
]
},
{
"linkId": "organization",
"answer": [
{
"valueString": "931a9317-586c-4dd5-bc32-cd8d3af78903"
}
]
}
]
}
]
},
{
"linkId": "depChiefRole",
"answer": [
{
"item": [
{
"linkId": "identityDocument",
"answer": [
{
"item": [
{
"linkId": "system",
"answer": [
{
"valueString": "1.2.643.2.69.1.1.1.6.223"
}
]
},
{
"linkId": "code",
"answer": [
{
"valueString": "48835311311"
}
]
}
]
}
]
},
{
"linkId": "organization",
"answer": [
{
"valueString": "931a9317-586c-4dd5-bc32-cd8d3af78903"
}
]
}
]
}
]
},
{
"linkId": "serviceRequest",
"answer": [
{
"item": [
{
"linkId": "reasonCallMedicalCare",
"answer": [
{
"valueString": "2"
}
]
},
{
"linkId": "territoryCode",
"answer": [
{
"valueString": "3"
}
]
},
{
"linkId": "requesterOrganization",
"answer": [
{
"valueString": "931a9317-586c-4dd5-bc32-cd8d3af78903"
}
]
},
{
"linkId": "brigadeNumber",
"answer": [
{
"valueString": "9317"
}
]
},
{
"linkId": "shiftNumber",
"answer": [
{
"valueString": "1"
}
]
},
{
"linkId": "placeCallReceived",
"answer": [
{
"valueString": "1"
}
]
},
{
"linkId": "reasonsBeingLate",
"answer": [
{
"valueString": "2"
}
]
},
{
"linkId": "ambulanceTeam",
"answer": [
{
"valueString": "3"
}
]
},
{
"linkId": "accidentCause",
"answer": [
{
"valueString": "3"
}
]
},
{
"linkId": "intoxication",
"answer": [
{
"valueBoolean": false
}
]
},
{
"linkId": "complaint",
"answer": [
{
"valueString": "жалобы"
}
]
},
{
"linkId": "complicationsExamination",
"answer": [
{
"item": [
{
"linkId": "complications",
"answer": [
{
"valueString": "2"
}
]
},
{
"linkId": "complicationsCodMKB",
"answer": [
{
"valueString": "T78.2"
}
]
},
{
"linkId": "effectivenessMeasures",
"answer": [
{
"valueString": "2"
}
]
},
{
"linkId": "assistanceProvidedLocationCallАmbulance",
"answer": [
{
"valueString": "оказанная помощь"
}
]
},
{
"linkId": "assistanceProvidedАmbulanceCar",
"answer": [
{
"valueString": "оказанная помощь в автомобиле скорой"
}
]
},
{
"linkId": "performanceIndicatorsEvents",
"answer": [
{
"item": [
{
"linkId": "bloodPressure",
"answer": [
{
"valueString": "120/80"
}
]
},
{
"linkId": "pulse",
"answer": [
{
"valueInteger": 60
}
]
},
{
"linkId": "heartRate",
"answer": [
{
"valueInteger": 30
}
]
},
{
"linkId": "respirationRate",
"answer": [
{
"valueInteger": 40
}
]
},
{
"linkId": "bodyHeat",
"answer": [
{
"valueString": "36.6"
}
]
},
{
"linkId": "pulseOximetry",
"answer": [
{
"valueString": "23.3"
}
]
},
{
"linkId": "glucose monitoring",
"answer": [
{
"item": [
{
"linkId": "bloodGlucoseLowerBound",
"answer": [
{
"valueString": "100.54"
}
]
},
{
"linkId": "bloodGlucoseUpperBound",
"answer": [
{
"valueString": "12.34"
}
]
}
]
}
]
}
]
}
]
}
]
}
]
},
{
"linkId": "deliveryMethodToCar",
"answer": [
{
"valueString": "1"
}
]
},
{
"linkId": "resultAmbulanceDepartureType",
"answer": [
{
"valueString": "3"
}
]
},
{
"linkId": "kilometers",
"answer": [
{
"valueString": "километраж"
}
]
},
{
"linkId": "time",
"answer": [
{
"item": [
{
"linkId": "receiveСallDateTime",
"answer": [
{
"valueDateTime": "2010-10-07T13:41:23+04:00"
}
]
},
{
"linkId": "callЕransferDateTime",
"answer": [
{
"valueDateTime": "2010-10-08T13:43:23+04:00"
}
]
},
{
"linkId": "checkoutTime",
"answer": [
{
"valueString": "hh:mm:ss"
}
]
},
{
"linkId": "arrivalTime",
"answer": [
{
"valueString": "hh:mm:ss"
}
]
},
{
"linkId": "startTimeTransportation",
"answer": [
{
"valueString": "hh:mm:ss"
}
]
},
{
"linkId": "arrivalTimeСlinic",
"answer": [
{
"valueString": "hh:mm:ss"
}
]
},
{
"linkId": "endTimeCall",
"answer": [
{
"valueString": "hh:mm:ss"
}
]
},
{
"linkId": "timeReturnToStation",
"answer": [
{
"valueString": "hh:mm:ss"
}
]
},
{
"linkId": "timeTakenComplete",
"answer": [
{
"valueString": "затраченное на вызов время"
}
]
}
]
}
]
},
{
"linkId": "ambulanceCallType",
"answer": [
{
"valueString": "1"
}
]
},
{
"linkId": "resultMedicalCare",
"answer": [
{
"valueString": "5"
}
]
},
{
"linkId": "performerOrganization",
"answer": [
{
"valueString": "fc2c38ce-6599-4ff3-ae82-915b91a07db9"
}
]
},
{
"linkId": "hospitalOrganization",
"answer": [
{
"valueString": "fc2c38ce-6599-4ff3-ae82-915b91a07db9"
}
]
},
{
"linkId": "idIEMK",
"answer": [
{
"valueString": "1110025"
}
]
},
{
"linkId": "consent",
"answer": [
{
"valueBoolean": true
}
]
},
{
"linkId": "comments",
"answer": [
{
"valueString": "доп.текст.инфа"
}
]
}
]
}
]
},
{
"linkId": "observation",
"answer": [
{
"item": [
{
"linkId": "generalCondition",
"answer": [
{
"valueString": "1"
}
]
},
{
"linkId": "behavior",
"answer": [
{
"valueString": "2"
}
]
},
{
"linkId": "consciousness",
"answer": [
{
"valueString": "2"
}
]
},
{
"linkId": "meningealSigns",
"answer": [
{
"valueString": "5"
}
]
},
{
"linkId": "eyes",
"answer": [
{
"item": [
{
"linkId": "pupils",
"answer": [
{
"valueString": "3"
}
]
},
{
"linkId": "anisocoria",
"answer": [
{
"valueString": "4"
}
]
},
{
"linkId": "nystagmus",
"answer": [
{
"valueString": "5"
}
]
},
{
"linkId": "lightResponse",
"answer": [
{
"valueString": "6"
}
]
}
]
}
]
},
{
"linkId": "skin",
"answer": [
{
"item": [
{
"linkId": "integument",
"answer": [
{
"valueString": "2"
}
]
},
{
"linkId": "acrocyanosis",
"answer": [
{
"valueString": "6"
}
]
},
{
"linkId": "marbling",
"answer": [
{
"valueString": "9"
}
]
},
{
"linkId": "edemas",
"answer": [
{
"valueString": "10"
}
]
},
{
"linkId": "localizationOfEdema",
"answer": [
{
"valueString": ""
}
]
},
{
"linkId": "rash",
"answer": [
{
"valueString": "13"
}
]
},
{
"linkId": "rashLocalization",
"answer": [
{
"valueString": ""
}
]
}
]
}
]
},
{
"linkId": "breathing",
"answer": [
{
"valueString": "2"
}
]
},
{
"linkId": "wheezing",
"answer": [
{
"valueString": "2"
}
]
},
{
"linkId": "shortnessOfBreath",
"answer": [
{
"valueString": "3"
}
]
},
{
"linkId": "organsCirculatorySystem",
"answer": [
{
"item": [
{
"linkId": "heartSounds",
"answer": [
{
"valueString": "2"
}
]
},
{
"linkId": "noise",
"answer": [
{
"valueString": "1"
}
]
},
{
"linkId": "pulseLike",
"answer": [
{
"valueString": "1"
}
]
}
]
}
]
},
{
"linkId": "digestiveOrgans",
"answer": [
{
"item": [
{
"linkId": "tongue",
"answer": [
{
"valueString": "1"
}
]
},
{
"linkId": "belly",
"answer": [
{
"valueString": "1"
}
]
},
{
"linkId": "bellyInActOfBreathing",
"answer": [
{
"valueString": "7"
}
]
},
{
"linkId": "peritonealIrritationSymptoms",
"answer": [
{
"valueString": "8"
}
]
},
{
"linkId": "enlargedLiver",
"answer": [
{
"valueString": "11"
}
]
}
]
}
]
},
{
"linkId": "urination",
"answer": [
{
"valueString": ""
}
]
},
{
"linkId": "feces",
"answer": [
{
"valueString": ""
}
]
},
{
"linkId": "otherSymptoms",
"answer": [
{
"valueString": ""
}
]
},
{
"linkId": "pressure",
"answer": [
{
"item": [
{
"linkId": "workingBloodPressure",
"answer": [
{
"valueString": "120/80"
}
]
},
{
"linkId": "bloodPressure",
"answer": [
{
"valueString": "120/80"
}
]
}
]
}
]
},
{
"linkId": "pulse",
"answer": [
{
"valueInteger": 60
}
]
},
{
"linkId": "heartRate",
"answer": [
{
"valueInteger": 30
}
]
},
{
"linkId": "respirationRate",
"answer": [
{
"valueInteger": 40
}
]
},
{
"linkId": "bodyHeat",
"answer": [
{
"valueString": "36.6"
}
]
},
{
"linkId": "pulseOximetry",
"answer": [
{
"valueString": "23.3"
}
]
},
{
"linkId": "glucose monitoring",
"answer": [
{
"item": [
{
"linkId": "bloodGlucoseLowerBound",
"answer": [
{
"valueString": "100.54"
}
]
},
{
"linkId": "bloodGlucoseUpperBound",
"answer": [
{
"valueString": "12.34"
}
]
}
]
}
]
},
{
"linkId": "additionalObjectiveData",
"answer": [
{
"valueString": ""
}
]
},
{
"linkId": "ECG",
"answer": [
{
"item": [
{
"linkId": "preMedicalCareECG",
"answer": [
{
"valueString": ""
}
]
},
{
"linkId": "preMedicalCareECGTime",
"answer": [
{
"valueString": "01:30:00"
}
]
},
{
"linkId": "postMedicalCareECG",
"answer": [
{
"valueString": ""
}
]
},
{
"linkId": "postMedicalCareECGTime",
"answer": [
{
"valueString": "01:30:00"
}
]
}
]
}
]
}
]
}
]
},
{
"linkId": "condition",
"answer": [
{
"item": [
{
"linkId": "codeMKB",
"answer": [
{
"valueString": "S72.1"
}
]
},
{
"linkId": "complaints",
"answer": [
{
"valueString": "Жалобы"
}
]
},
{
"linkId": "anamnesis",
"answer": [
{
"valueString": "Дополнительные сведения по анамнезу заболевания"
}
]
}
]
}
]
},
{
"linkId": "attachedfiles",
"item": [
{
"linkId": "0",
"answer": [
{
"item": [
{
"linkId": "id",
"answer": [
{
"valueString": "1"
}
]
},
{
"linkId": "fileURL",
"answer": [
{
"valueString": ""
}
]
},
{
"linkId": "signatureURL",
"answer": [
{
"valueString": ""
}
]
},
{
"linkId": "isBlocked",
"answer": [
{
"valueBoolean": false
}
]
}
]
}
]
},
{
"linkId": "1",
"answer": [
{
"item": [
{
"linkId": "id",
"answer": [
{
"valueString": "2"
}
]
},
{
"linkId": "fileURL",
"answer": [
{
"valueString": ""
}
]
},
{
"linkId": "signatureURL",
"answer": [
{
"valueString": ""
}
]
},
{
"linkId": "isBlocked",
"answer": [
{
"valueBoolean": false
}
]
}
]
}
]
}
]
},
{
"linkId": "110/u",
"answer": [
{
"item": [
{
"linkId": "fileURL",
"answer": [
{
"valueString": ""
}
]
},
{
"linkId": "signatureURL",
"answer": [
{
"valueString": ""
}
]
}
]
}
]
}
]
}
},
{
"name": "RoleContext",
"part": [
{
"name": "0",
"resource": {
"resourceType": "Parameters",
"parameter": [
{
"name": "Role",
"valueInteger": 0
},
{
"name": "Organization",
"valueInteger": 0
}
]
}
}
]
}
]
}
Организация взаимодействия с внешними подсистемами и сервисами
Программный интерфейс подсистемы УП предоставляет возможность организации обмена данными с внешними подсистемами и сервисами, входящими в РЕГИЗ.
Взаимодействие с файловым хранилищем портала Телемедицины
Подсистема УП предоставляет возможность организовать доступ к файловому хранилищу портала Телемедицины для использования в качестве хранилища данных.
Выгрузка файлов
Общий алгоритм работы с файлами:
1) Загрузить файлы в файловое хранилище организации (п.1.1). Доступна загрузка одного файла за раз.
2) В ответе возвращается ссылка на файл в download_url .
3) Ссылка вставляется в ProcessContext в необходимый параметр либо в /api/Commands/StartNewProcess, либо в /api/Commands/MoveToStage.
Конфигурируемые данные
Для отправки файла в хранилище организации следуют сформировать POST-запрос в следующем формате:
Пример:
[base_url]/api/orgs/files?org_id=[org_id]&apikey=[apiKey]&token=[token] form 'file=@/Путь к файлу'
Описание параметров запроса
Описание параметров:
|
№ п/п |
Параметр |
Тип |
Кратность |
Описание |
|
1 |
baseUrl |
string |
1..1 |
Адрес портала, обеспечивающего организацию доступа к мессенджеру |
|
2 |
apiKey |
string |
1..1 |
Региональный ключ к хранилищу |
|
3 |
org_id |
string |
1..1 |
Идентификатор МО согласно справочнику НСИ 1.2.643.2.69.1.1.1.64
|
|
4 |
token |
string |
1..1 |
Токен доступа для работы с подсистемой телемедицинских консультаций |
Пример ответа
Пример
{
"status": "ok",
"org_id": 670,
"org_external_id": "",
"endpoint": "orgs/files",
"name": "Медицинская Организация",
"info": {
"id": 9883,
"file_addr": "./upload/structureitems/670/d359bed08b463d644ea9eaa55c3f7f4b.jpg",
"file_key": "72a3779013bb900a1095696f5fc3bab9",
"description": "",
"title": "mrt-grudnoy-kletki-glav.jpg",
"ts": "1601034056",
"file_secondary_key": "480f687e8ef905ca7fb79b0638980d97",
"user_id": null,
"thread_id": null,
"deleted_at": "0",
"project_id": "0",
"thumbnail_url": "",
"updated_at": "0",
"broken_thumb_status": "0",
"template_signing_required": false,
"fullpath": "/srv/irida/irida.experimental/upload/structureitems/670/d359bed08b463d644ea9eaa55c3f7f4b.jpg",
"info": {
"basename": "d359bed08b463d644ea9eaa55c3f7f4b.jpg",
"extension": "jpg",
"filename": "d359bed08b463d644ea9eaa55c3f7f4b",
"collaborative": 0,
"collaborative_reviews": 0,
"url": "https://irida-vega.ru/experimental/upload/structureitems/670/d359bed08b463d644ea9eaa55c3f7f4b.jpg",
"icon": "https://irida-vega.ru/experimental/assets/images/fileicons/svg/jpg.svg",
"description": "",
"ts": 1601034056,
"fullpath": "./upload/structureitems/670/d359bed08b463d644ea9eaa55c3f7f4b.jpg",
"is_image": 1,
"filesize": 62.9,
"filesize_litera": "Кб",
"absolutePath": "/srv/irida/irida.experimental/upload/structureitems/670/d359bed08b463d644ea9eaa55c3f7f4b.jpg",
"thumburl": "https://irida-vega.ru/experimental/upload/thumbs/9883/d359bed08b463d644ea9eaa55c3f7f4b.jpg",
"gallery_type": "image",
"filesize_mb": 0.1,
"sign": false
},
"history": [],
"download_url": "https://irida-vega.ru/experimental/download?file=9883"
}
}
Использование данных ответа в телемедицинской заявке
В качестве ссылки а файл в телемедицинской заявке следует использовать абсолютный путь до файла, который в ответе лежит по адресу jsonpath: $.info.info.url
- Организация получения чата ВКС
После создания заявки на портале ТМК для нее генерируются чат и комната ВКС. Для получения ссылок необходимо получить токен доступа к порталу. Чтобы не генерировать дополнительные токены для МИС, сервис предоставляет возможность передавать данные с использованием его токена. Для чего реализован метод (проброс через сервис УП) для получения списка ссылок по заявке:
[base_url]/api/flows/process_links?process_id=[process_id]&apikey=[apiKey]
Более подробное описание правил взаимодействия представлено в описании профилей API портала Телемедицины (в том подробности о правилах организации чата и ВКС).
- Конфигурируемые данные
Для организации взаимодействия клиент-системы необходимо хранение конфигурируемых данных, к которым относятся следующие данные, определяемые провайдером:
- адрес портала, обеспечивающего организацию доступа к мессенджеру (baseUrl);
- ключ доступа к методам API (apiKey);
- идентификатор процесса в сервисе «Управление потоками».
Таблица 22 Входные параметры метода
|
№ п/п |
Параметр |
Тип |
Обязательность |
Описание |
|
1 |
baseUrl |
String |
1..1 |
Адрес портала, обеспечивающего организацию доступа к мессенджеру |
|
2 |
apiKey |
String |
1..1 |
Ключ доступа к методам |
|
3 |
process_id |
String |
1..1 |
Идентификатор процесса в сервисе «Сервис управления Маршрутами». Хранится в контексте заявки на портале Телемедицины |
Для получения ссылок на чат/комнату ВКС для каждого участника по заявке клиент-системой необходимо выполнить запросом с бэкэнда с помощью метода “api/flows/process_links” (GET).
- Пример запроса
[base_url]/api/flows/process_links?process_id=[process_id]&apikey=[apiKey]
Взаимодействие с подсистемой СЗПВ
Подсистема СЗПВ предоставляет возможность осуществлять запись на ТМК по схожему алгоритму взаимодействия с подсистемой УО (запись по направлению).
Для организации записи на ТМК в качестве аналога идентификатора направления в УО МИС МО необходимо получить и далее передавать идентификатор processHumanFriendlyId и метаданные заявки, которые формируется при регистрации заявки в подсистеме УП. Указанные данные можно получить с помощью метода
{{url}}/api/Queries/GetProcess/< processId>
где processId – идентификатор созданной заявки в подсистеме УП.
Более подробное описание правил взаимодействия представлено в описании профилей API подсистемы СЗПВ.
Пример запроса
{{url}}/api/Queries/GetProcess/521d041d-274c-47c3-a59c-010b10444225
Пример ответа
{
"result": {
"metadata": {
"id": "b6e53519-3b35-4fab-8740-99345eb719fb",
"processId": "521d041d-274c-47c3-a59c-010b10444225",
"metadata": {
"patient": "8ff30a0b-85c3-462c-aae1-3ec719b3c1a3",
"performer": "fc2c38ce-6599-4ff3-ae82-915b91a07db9",
"requester": "931a9317-586c-4dd5-bc32-cd8d3af78903",
"resultMedicalCare": "5",
"resultAmbulanceDepartureType": "3"
}
},
"id": "521d041d-274c-47c3-a59c-010b10444225",
"name": "Новая заявка. Активы",
"workflowId": "5fb7cefc-b7e0-467c-b79b-43f2859c95dc",
"metadataId": "b6e53519-3b35-4fab-8740-99345eb719fb",
"currentStageId": "617690fd-de03-41d6-b2df-793f765ef537",
"created": "2021-02-15T13:33:51.450247+03:00",
"updated": "2021-02-15T13:33:51.450247+03:00",
"businessStatus": {
"system": "urn:oid:1.2.643.2.69.1.1.1.148.2",
"code": "19"
},
"humanFriendlyId": "TMC0221X7S18Q"
},
"success": true,
"errorCode": 0,
"message": null,
"stackTrace": null
}
Взаимодействие с подсистемой «Индекс пациента» (сервис MPI)
Подсистема «Индекс пациента» предназначен для управления обменом идентификационными данными пациентов с внешними сервисами и системами для обеспечения: регистрации и хранения записей, содержащих идентификаторы субъектов ЭМК (пациентов МО), поддержки связей с внешними, находящимися на уровне медицинских организаций, реестрами идентификаторов пациентов МО, передачу отдельных карточек пациентов и их наборов во внешние системы, инициацию идентификации каждой новой карточки путем создания первичной связи patientlink.
Сервис TMCore предоставляет возможность организации информационного взаимодействия с сервисом MPI.
В программном интерфейсе TMCore для организации обмена данными с MPI поддержаны следующие методы:
- поставка данных пациента в MPI;
- методы поиска карточек: поиск мастер-карточки пациента по документу, поиск всех карточек по идентификатору карточки, Получение карточки пациента по идентификатору записи, получение карточки пациента по ФИО и Дате рождения.
Для передачи данных о пациентах (карточек пациентов) по правилам обмена сервиса MPI используется FHIR-ресурс «Patient».
Таблица 23 Описание параметров ресурса Patient
|
Имя параметра |
Кратность |
Тип данных (FHIR) |
Описание |
|
|
identifier |
1..1 |
где identifier.system = 1.2.643.5.1.13.2.7.100.5 (передающая ИС): |
||
|
value -идентификатор пациента в передающей ИС, должен заполняться автоматически формируемым значением [ТМК+слеш+IdPatientMis], (где IdPatientMis - идентификатор пациента в МИС МО); |
||||
|
+system - должен заполняться константой "urn:oid:1.2.643.5.1.13.2.7.100.5" |
||||
|
assigner.display - должен заполняться константой "urn:oid:1.2.643.2.69.1.2.116" (идентификатор передающей системы N3.Телемедицина по справочнику НСИ 1.2.643.2.69.1.2) |
||||
|
где identifier.system = 1.2.643.5.1.13.2.7.100.7 (первичная МИС МО) |
||||
|
value - идентификатор пациента в первичной системе(МИС МО первичная), должен заполняться идентификатором пациента из МИС МО {IdPatientMis} |
||||
|
system - заполнять константой "urn:oid:1.2.643.5.1.13.2.7.100.7" |
||||
|
assigner.display - заполнять кодом из справочника 1.2.643.2.69.1.2 для МИС МО |
||||
|
|
0..* |
Документы пациента. |
||
|
Для Identifier.system указывается тип документа по справочнику urn:oid:1.2.643.2.69.1.1.1.6 в формате {urn:oid:1.2.643.2.69.1.1.1.6}.{код записи} |
||||
|
name |
1..1 |
Имя, ассоциируемое с пациентом. |
||
|
1. family - Фамилия (кратность 1..1), отчество пациента (кратность 0..1) |
||||
|
gender |
0..1 |
Допустимые коды: |
||
|
male:1 |
||||
|
female:2 |
||||
|
unknown:3 |
||||
|
birthDate |
1..1 |
Дата рождения пациента |
||
|
0..* |
Адрес пациента: |
|||
|
temp = 8 по справочнику 1.2.643.2.69.1.1.1.28 (временный) |
||||
|
home = 2 (фактическое проживание) |
||||
|
work = 4 (служебный) |
||||
|
old = 1, 3, 5, 6, 7, 9 (регистрации, места рождения, почтовый и др.) |
||||
|
telecom |
0...* |
Контактные данные пациента (e-mail, phone) |
||
|
managingOrganization |
1..1 |
Reference(Organization) |
Организация, занимающаяся хранением записи пациента. Ссылка на managingOrganization должна указывать на объект типа Organization, хранящийся в сервисе Терминологии. Здесь указывается первичная организация пациента. Сведения об организации - отправителе определяются из авторизационного идентификатора (токена) сообщения и могут отличаться от первичной организации. Например: первичной организацией может быть поликлиника, где обслуживался пациент, а сообщение передано из сервиса ДЛИ, установленного в МИАЦ |
|
Поставка данных пациента в MPI
Программный интерфейс TMCore предоставляет возможность МИС МО поставлять данные пациента в сервис MPI. При поддержке метода поставки на стороне МИС МО необходимо обеспечить выполнение следующих общих условий:
- При передаче данных в сервис должен указываться токен TMCore. Токен указывается в адресной строке.
- На стороне TMCore выполняется поверка наличия и соответствия указанного токена. Если проверка токена успешна, то формируется запрос на перердачу данных в MPI. Если нет, то на сторону МИС МО передается сообщение об ошибке.
- После успешной проверки формируется и передается запрос в MPI в соответствии правил обмена.
- Передача данных пациента в объеме согласно требованиям сервиса MPI и по структуре ресурса Patient (стандарта FHIR).
- Выполнение условия для проверки на уникальность по параметрам: «identifier.system + identifier.value + managingOrganization»;
- Для этого во входных параметрах при запросе метода указываются две системы:
- первичная (пространство urn:oid:1.2.643.5.1.13.2.7.100.7) – для МИС МО;
- передающая (пространство urn:oid:1.2.643.5.1.13.2.7.100.5) – для Телемедицины (указывается по умолчанию, см. Таблица 23 Описание параметров ресурса Patient);
- для первичной в значении параметра identifier.value передается идентификатор пациента idPatientMis в МИС МО;
- для передающей в значении параметра identifier.value передается идентификатор пациента МИС МО по формату «TMC/ idPatientMis».
- Полученный ответ от MPI передается в ответе МИС МО.
Пример запроса
POST {{url}}/api/Regis/Mpi/SavePatient
authorization: N3[пробел][GUID передающей системы]
content-type: application/json
{
"resourceType": "Patient",
"identifier": [
{
"system": "urn:oid:1.2.643.5.1.13.2.7.100.5",
"value": "TMC/<idPatientMis>",
"assigner": {
"display": "1.2.643.2.69.1.2.116"
}
},
{
"system": "urn:oid:1.2.643.5.1.13.2.7.100.7",
"value": "<idPatientMis>",
"assigner": {
"display": "1.2.643.2.69.1.2.28"
}
},
{
"system": "urn:oid:1.2.643.2.69.1.1.1.6.223",
"value": "18477901518",
"assigner": {
"display": "ПФР"
}
}
],
"name": [
{
"family": [
"Андреев",
"Антонович"
],
"given": [
"Дмитрий"
]
}
],
"telecom": [
{
"system": "email",
"value": "+7-(989)1355987"
},
{
"system": "fax",
"value": "+7-(989)1355987"
},
{
"system": "other",
"value": "+7-(989)1355987"
},
{
"system": "pager",
"value": "+7-(989)1355987"
},
{
"system": "phone",
"value": "+7-(989)1355987"
}
],
"gender": "male",
"birthDate": "19-10-1995",
"address": [
{
"use": "home",
"text": "123456, г. Прегонь, ул. Северная, 4/2"
},
{
"use": "work",
"text": "123456, г. Прегонь, ул. Северная, 4/2"
},
{
"use": "old",
"text": "123456, г. Прегонь, ул. Северная, 4/2"
},
{
"use": "temp",
"text": "123456, г. Прегонь, ул. Северная, 4/2"
}
],
"managingOrganization": {
"reference": "Organization/3b4b37cd-ef0f-4017-9eb4-2fe49142f682"
}
}
Поиск данных пациента в MPI по документу
Программный интерфейс TMCore предоставляет возможность МИС МО выполнять поиск карточек в сервисе MPI. При поддержке метода поиска на стороне МИС МО необходимо обеспечить выполнение следующих общих условий:
- В запросе метода должен указываться токен TMCore. Токен указывается в адресной строке.
- На стороне TMCore выполняется поверка наличия и соответствия указанного токена. Если проверка токена успешна, то формируется запрос на передачу данных в MPI. Если нет, то на сторону МИС МО передается сообщение об ошибке.
- После успешной проверки формируется и передается запрос в MPI в соответствии правил обмена.
Предоставляемый метод поиска данных в MPI выполняется по следующему сценарию:
- Сервис TMCore получает запрос на поиск данных от МИС МО.
- Сервис TMCore проверяет выполнение условий, указанных выше и затем отправляет запросы в MPI.
- Сервис TMCore получает идентификатор карточки MPI.
- Ответы предыдущего шага передается в МИС МО.
Пример запроса
POST [base]/api/Regis/Mpi/GetMasterCardByDoc
authorization: N3[пробел][GUID передающей системы]
content-type: application/json
{
"resourceType": "Parameters",
"parameter": [{
"name": "docType",
"valueString": "urn:oid:1.2.643.2.69.1.1.1.6.223"
},
{
"name": "docNumber",
"valueString": "88950847590"
}]
}
Поиск данных пациента в MPI по идентификатору
Программный интерфейс TMCore предоставляет возможность МИС МО выполнять поиск карточек в сервисе MPI. При поддержке метода поиска на стороне МИС МО необходимо обеспечить выполнение следующих общих условий:
- В запросе метода должен указываться токен TMCore. Токен указывается в адресной строке.
- На стороне TMCore выполняется поверка наличия и соответствия указанного токена. Если проверка токена успешна, то формируется запрос на передачу данных в MPI. Если нет, то на сторону МИС МО передается сообщение об ошибке.
- После успешной проверки формируется и передается запрос в MPI в соответствии правил обмена.
Предоставляемый метод поиска данных в MPI выполняется по следующему сценарию:
- Сервис TMCore получает запрос на поиск данных от МИС МО.
- Сервис TMCore проверяет выполнение условий, указанных выше и затем отправляет запросы в MPI.
- Сервис TMCore получает список идентификаторов карточек MPI.
- По каждому идентификатору последовательно выполняется запрос карточки и получается ответ.
- Ответы предыдущего шага объединяются и общий результат обработки передается в МИС МО.
Пример запроса
GET [base]/api/Regis/Mpi/GetPatientCardById/[patientId] authorization: N3[пробел][GUID передающей системы]
Коды возвращаемых ошибок
|
Код |
Описание |
|
0 |
Ошибок не найдено |
|
1 |
Внутренняя ошибка приложения |
|
2 |
Ошибка валидации выполнения операции. Неверный код передаваемой сущности, отсутствие обязательных данных согласно спецификациям |
|
3 |
Множественный переход |
|
11 |
Указанный маршрут не найден |
|
12 |
Указанного статуса не существует |
|
14 |
Указанного валидатора не существует |
|
15 |
Указанного отклика не существует |
|
16 |
Заявка не найдена |
|
17 |
Указанной предметной области не существует |
|
18 |
Указанной схемы данных не существует |
|
19 |
Указанной операции (transition) не существует |
|
32 |
Нет данных ожидаемых для осуществления перехода или создания заявки |
|
33 |
Нет метаданных описания маршрута |
|
42 |
Данные расширения схемы не разрешены |
|
51 |
Метаданные маршрута не найдены |
|
52 |
Метаданные заявки не найдены |

