Руководство к использованию стандарта FHIR в ЦИСЗ
0.2.6803 - ci-build
Метод создания и редактирования пациента предназначен для создания и редактирования ресурса Patient.
Правила формирования ресурса Patient:
Patient ДОЛЖЕН соответствовать профилю ЦИСЗ, описанному в настоящем руководстве по взаимодействию с ЦИСЗ (Пациент, Пациент без ИН, Анонимный пациент);Patient ДОЛЖЕН содержать минимум один идентификатор (identifier), соответствующий правилам уникальности ЦИСЗ: INP, UMD, IPA, UIP, ANO, FDN (указанный перечень может быть дополнен в будущем);Номер, присвоенный медицинской записи о пациенте, который не был идентифицирован (UIP), то ресурс Patient ДОЛЖЕН содержать фамилию и имя пациента (Patient.name.family и Patient.name.given);INP, UMD, FDN, ANO ДОЛЖНЫ быть уникальными в ЦИСЗ;identifier в профилях ресурсов);identifier (набор) пациента, полученный из ЦИСЗ, и ресурс должен иметь элемент active = true;versionId в ресурсе в теле запроса;INP, UMD, FDN, ANO нельзя редактировать;.coding.display будут модифицированы согласно актуальным значениям из НСИ.Программные интерфейсы ЦИСЗ защищены сервером авторизации с использованием технологии OAuth 2.0 (см. вкладку “Авторизация в ЦИСЗ”). При каждом вызове метода клиентское приложение (МИС) должно передавать токен доступа (токен медицинского работника) в заголовке запроса.
ЦИСЗ может принимать только ресурс Patient соответствующий профилю, описанному в настоящем руководстве по взаимодействию с ЦИСЗ (Пациент, Пациент без ИН, Анонимный пациент).
Метод осуществляет проверку:
Patient на соответствие профилю ЦИСЗ;Перед созданием ресурса Patient, для оптимизации работы и уменьшения количества ошибок, необходимо убедиться, что в ЦИСЗ ранее не создавался такой ресурс: предварительно выполнить поиск ресурса Patient по известному идентификатору или по ФИО и дате рождения:
GET [FHIR_BASE]/Patient?identifier=[идентификатор]
или
GET [FHIR_BASE]/Patient?name=[полное_ФИО]&birthdate=[дата_рождения]
Если ресурс ранее не создавался, то в ответ ЦИСЗ вернет Bundle типа searchSet, не содержащий ресурса Patient. В этом случае клиент может приступить к созданию нового ресурса Patient.
Если ЦИСЗ вернула Bundle типа searchSet с ресурсом Patient, необходимо сверить информацию, которую вводил пользователь на стороне клиента, с информацией, которую содержит найденный ресурс. В случае, если данные совпадают ПОЛНОСТЬЮ по идентификатору, ФИО и дате рождения, создание нового ресурса не требуется. Если данные не совпадают, необходимо исправить параметры поискового запроса и повторить поиск.
Вызов метода осуществляется с помощью HTTP POST команды:
POST [FHIR_BASE]/Patient
HEADERS: content-type:application/fhir+json
Body: ресурс Patient
| Название | Описание |
|---|---|
| patient | ресурс Patient в теле запроса |
Ресурс может не содержать элемента id, НО, ЕСЛИ id БУДЕТ УКАЗАН, сервер ЦИСЗ проигнорирует его.
Если тело запроса включает элемент meta, и в базе данных ЦИСЗ НЕТ ресурса с указанным identifier, то сервер ПРОИГНОРИРУЕТ существующие значения versionId и lastUpdated. Сервер ЗАПОЛНИТ id, meta.versionId и meta.lastUpdated новыми корректными значениями.
Сервер изменит или дополнит значения в элементах ресурса .coding.display согласно актуальной информации из справочников НСИ ЦИСЗ. Значения для .coding.display будут взяты из версии справочника, актуального на момент выполнения метода.
Успешный ответ:
| Название | Описание |
|---|---|
| result | ресурс Parameters в теле ответа |
Таблица статусов операции:
| Код | Описание статуса |
|---|---|
| Created | Ресурс успешно создан |
| Updated | Ресурс успешно отредактирован |
| Failed | Ошибка при создании или редактировании ресурса |
При создании ресурса будут проигнорированы следующие элементы:
id;meta.versionId;meta.lastUpdated;text;extension:archive;extension:personalDataVerified;generalPractitioner;link;.coding.display.Значения в этих элементах будут присвоены в ЦИСЗ.
В случае, если часть данных (например: адрес пациента) будет модифицирована в ЦИСЗ после верификации в интегрированных системах, ответ будет содержать предупреждения об изменении этой информации:
Важно!
Клиент должен обрабатывать ресурсы OperationOutcome при ответах ЦИСЗ с HTTP 201 Created для того, чтобы пользователи систем могли быть уведомлены об изменениях при создании ресурсов.
HTTP статус серии 4xx:
К сбою операции могут привести ошибки в контенте (например, неверный набор символов, неверный JSON и т. д.).
Когда синтаксис или данные ресурса некорректны или недействительны и не могут быть использованы для создания нового ресурса, сервер возвращает код состояния HTTP 400 Bad Request. В этом случае сервер возвращает тело ответа, содержащее OperationOutcome с подробными сообщениями об ошибке, описывающими причину сбоя.
Клиентам следует проверять все возвращенные данные, чтобы убедиться, что они соответствуют ожиданиям.
Распространенные коды состояния HTTP, возвращаемые при ошибках, связанных с FHIR (в дополнение к обычным HTTP-ошибкам, связанным с безопасностью, согласованием заголовков и типа содержимого):
400 Bad Request - ресурс не может быть обработан или не прошел базовые правила валидации FHIR, а также не соответствует профилю FHIR, указанному в Patient.meta.profile. Такой код также будут иметь ошибки, связанные с верификацией персональных данных в ГИС “Регистр населения”.Пример:
401 Unauthorised и 403 Forbidden - ошибки авторизации и аутентификации:
409 Conflict - в системе уже есть ресурс с таким же идентификатором (INP, UMD, FDN, ANO - необходимо соблюдение правила уникальности идентификатора).При редактировании ресурса Patient создается новая версия для существующего ресурса или, если ресурс с заданными meta.versionId и identifier еще не существует, создается начальная версия.
Для редактирования ресурса клиент обязан указать актуальный meta.versionId и ключевой identifier ресурса (INP, UMD, IPA, UIP, ANO, FDN, в зависимости от профиля пациента), полученный при предыдущем чтении. Для оптимизации работы и уменьшения количества ошибок, необходимо предварительно выполнить поиск ресурса Patient по идентификатору или по ФИО и дате рождения:
GET [FHIR_BASE]/Patient?identifier=[идентификатор]
или
GET [FHIR_BASE]/Patient?name=[полное_ФИО]&birthdate=[дата_рождения]
Если ожидается, что данный пациент уже есть в ЦИСЗ, но в ответ ЦИСЗ вернула Bundle типа searchSet, не содержащий искомого ресурса, то необходимо убедиться, что введенные при поиске данные не содержат ошибок.
Если поисковые параметры введены верно, то клиент должен считать, что ресурс пациента ранее не создавался в ЦИСЗ, и в этом случае может приступить к созданию нового ресурса Patient.
Поля в ресурсе, которые игнорируются при редактировании ресурса Пациент:
id;meta.lastUpdated;text;extension:archive;extension:personalDataVerified;identifier:PersonIdentifier - игнорируется при редактировании пациента - невозможно изменить;identifier:UnspecifiedMedicalDocumentNumber - игнорируется при редактировании пациента - невозможно изменить;.coding.display.Поля в ресурсе, которые игнорируются при создании и редактировании ресурса Пациент без ИН:
id;meta.lastUpdated;text;extension:archive;identifier:UnidentifiedPerson - игнорируется при редактировании пациента - невозможно изменить;identifier:UnspecifiedMedicalDocumentNumber - игнорируется при редактировании пациента - невозможно изменить;.coding.display.Поля в ресурсе, которые игнорируются при создании и редактировании ресурса Анонимный пациент:
id;meta.lastUpdated;text;extension:archive;identifier - игнорируется при редактировании пациента - невозможно изменить;.coding.display.Редактирование выполняется с помощью HTTP POST команды:
POST [FHIR_BASE]/Patient
HEADERS: content-type:application/fhir+json
Body: ресурс Patient (обязательно указание versionId и identifier)
Проверка версии: ЦИСЗ проверяет, есть ли в базе данных ресурс с указанным identifier. Если такой ресурс найден, выполняется проверка версии ресурса по значению meta.versionId в сравнении с текущей версией ресурса в системе.
Для элементов в meta сервер ПРОИГНОРИРУЕТ существующие значения lastUpdated. Сервер ЗАПОЛНИТ meta.versionId и meta.lastUpdated новыми корректными значениями.
Сервер изменит или дополнит значения в элементах .coding.display согласно актуальной информации из справочников НСИ ЦИСЗ.
Редактирование изменяет ВСЕ содержимое ресурса.
Если взаимодействие успешно и ресурс был отредактирован, сервер ВЕРНЕТ код состояния HTTP 200 OK.
Распространенные коды состояния HTTP, возвращаемые при ошибках, связанных с FHIR (в дополнение к обычным HTTP-ошибкам, связанным с безопасностью, согласованием заголовков и типа содержимого):
400 Bad Request — ресурс не может быть обработан или не прошел базовые правила валидации FHIR, а также не соответствует профилю FHIR, указанному в Patient.meta.profile. Такой код также будут иметь ошибки, связанные с верификацией персональных данных в ГИС “Регистр населения”;
401 Unauthorised и 403 Forbidden — ошибки авторизации и аутентификации:
404 Not Found — тип ресурса не поддерживается или происходит обращение в неверный эндпоинт;
409 Conflict — конфликт версий ресурса:
versionId;versionId не является актуальным, ресурс мог быть изменен до начала операции изменения ресурса.Каждая из этих ошибок сопровождается ресурсом OperationOutcome, предоставляющим дополнительные детали по проблеме.