МИС ОЗ вызывает метод импорта пакета данных организации здравоохранения в ЦИСЗ и в теле запроса передает сформированный ресурс Bundle, а в заголовках запроса устанавливается тип передаваемого контента (content-type) в application/json.
Транзакция (transaction) – действие, которое необходимо произвести над ресурсом.
Доступны следующие типы транзакций:
создание (POST);
обновление (PUT).
Тип транзакции задается в элементе Bundle.entry.request профиля Пакет информации в контексте организации. Ресурс Bundle типа transaction представляет собой ресурсы, размещенные в Bundle, с указанием действий (типов транзакций), которые необходимо произвести над каждым ресурсом в рамках одного HTTP запроса.
Особенности метода:
метод позволяет в составе Bundle одновременно импортировать несколько ресурсов одного профиля с указанием действий, которые необходимо выполнить над этими ресурсами: создание (POST), обновление (PUT).
для каждого ресурса, содержащегося в Bundle типа transaction, в элементе Bundle.entry.request должно быть задано действие (тип транзакции), которое нужно произвести над ресурсом.
ресурсов входящего пакета данных организации здравоохранения на соответствие профилям ЦИСЗ;
справочных данных пакета данных организации здравоохранения на соответствие значениям справочников ЦИСЗ.
Подробное описание профилей ЦИСЗ размещено по адресу: Профили ЦИСЗ.
Программные интерфейсы ЦИСЗ защищены сервером авторизации с использованием технологии OAuth 2.0: авторизация в ЦИСЗ. При каждом вызове метода клиентское приложение (МИС) должно передавать токен доступа (токен организации) в заголовке запроса.
Импорт пакета данных организации здравоохранения производится в виде JSON без подписи со стороны медицинского работника (в заголовках запроса устанавливается тип передаваемого контента (content-type) в application/json).
Вызов метода осуществляется с помощью HTTP POST команды:
POST [FHIR_BASE]/Bundle/$import
Правила обработки транзакций:
каждому ресурсу в рамках одной транзакции типа POST присваивается уникальный идентификатор;
для каждого ресурса в рамках одной транзакции типа PUT изначально производится поиск в ЦИСЗ переданного идентификатора ресурса. Если ресурс с таким идентификатором уже существует в ЦИСЗ – используется уже существующий идентификатор, если ресурс с таким идентификатором отсутствует в ЦИСЗ – то переданному в методе ресурсу присваивается уникальный идентификатор;
результат выполнения транзакции не зависит от уникального идентификатора ресурса, присвоенного ресурсу в рамках транзакции;
транзакция считается успешно выполненной только в том случае, если все ресурсы в рамках транзакции прошли валидацию на соответствие профилям ЦИСЗ;
пакет данных считается успешно обработанным только в том случае, если все транзакции пакета выполнены успешно.
В случае, если входящий пакет данных является валидным, то возвращается тип операции Parameters. В противном случае возвращается тип операции OperationOutcome с HTTP статусом 400 (BadRequest)
Тип операции Parameters состоит из следующих параметров:
Название
Описание
ProcessingStatus
Статус обработки добавления пакета данных. При успешном выполнении операции будет иметь значение Pending
Идентификатор ресурса, по которому можно получить статус операции, проводящейся с данным ресурсом
ResourceType
Тип ресурса
Метод возвращает:
HTTP статус 202 (Accepted): валидация входящего пакета данных на соответствие профилю пакета данных прошла успешно, запрос на импорт пакета принят в обработку, но обработка запроса еще не завершена;
HTTP статус серии 4xx: операция импорта не выполнена. К сбою операции импорта могут привести ошибки в контенте (например, неверный набор символов, неверный JSON и т. д.).
В случае успешного выполнения проверки метод возвращает НТТР статус операции импорта и набор параметров, по которым в последующем можно запросить в ЦИСЗ добавленный пакет данных.
Пример запроса на импорт пакета ресурсов расписаний со слотами в ЦИСЗ: