Руководство к использованию стандарта FHIR в ЦИСЗ
0.2.6803 - ci-build
Методы создания и отмены бронирования.
Создание бронирования:
Метод создания бронирования предназначен для записи пациента на определенную медицинскую услугу в конкретный промежуток времени или в очередь (бронирование слота в расписании).
Последовательность действий для создания бронирования слота:
Клиент получает ресурс Slot и на основе информации из полученного ресурса формирует ресурс Appointment;
Клиент вызывает метод создания бронирования в ЦИСЗ и в теле запроса передает сформированный ресурс Appointment, а в заголовках запроса устанавливается тип передаваемого контента (content-type) в application/json.
ЦИСЗ может принимать только ресурс Appointment, соответствующий профилю “Бронирование слота” (AppointmentBy), при этом используемые справочные данные должны соответствовать значениям справочников ЦИСЗ.
Метод осуществляет проверку:
• входящего ресурса на соответствие профилю “Бронирование слота” (AppointmentBy);
• справочных данных пакета медицинских данных на соответствие значениям справочников ЦИСЗ.
Программные интерфейсы ЦИСЗ защищены сервером авторизации с использованием технологии OAuth 2.0 (см. вкладку “Авторизация в ЦИСЗ”). При каждом вызове метода клиентское приложение (МИС) должно передавать токен доступа (токен медицинского работника или пациента) в заголовке запроса.
Вызов метода осуществляется с помощью HTTP POST команды:
POST [FHIR_BASE]/Appointment/
HEADERS: content-type:application/json
Входные данные метода:
| Название | Профиль | Описание |
|---|---|---|
| appintment | Бронирование слота | Бронирование на слот, формируемое клиентом на слот |
Выходные данные метода:
| Название | Профиль | Описание |
|---|---|---|
| result | OperationOutcome | В случае, если входящий ресурс не прошел валидацию, возвращается ресурс OperationOutcome с HTTP кодом 400 (BadRequest) |
| resource | Бронирование слота | В случае, если входящий ресурс прошел валидацию, возвращается ресурс Бронирование слота с HTTP кодом 200 (OK) и статусом booked |
Ресурс OperationOutcome состоит из следующих параметров:
| Название | Дочерний элемент | Описание |
|---|---|---|
| issue | - | Проблема, корневой элемент |
| severity | Важность | |
| code | Код ошибки, предупреждения или информационный | |
| diagnostics | Дополнительная текстовая информация |
Метод возвращает:
| код HTTP | OperationOutcome.issue.diagnostics | Примечания | |
|---|---|---|---|
| 200 | - | ||
| 400 | Невозможно забронировать слот. Дата и время окончания приема не должны быть меньше текущей даты и времени. Дата окончания приема: {appointment.End}, время запроса: время_запроса__” | Возникает при попытке создания бронирования на прошедшую дату | |
| 400 | Слот недоступен для бронирования, выберите другой слот. Статус слота: {status} | Возникает при попытке создания бронирования на слот, который имеет статус, отличный от free | |
| 400 | Значение поля Specialty в Appointment {Appointment_Specialty} не соответствует значению поля specialty в выбранном слоте {Sloty_Specialty} | ||
| 400 | Значение поля ServiceCategory в Appointment {Appointment_ServiceCategory} не соответствует значению поля serviceCategory в выбранном слоте {Sloty_ServiceCategory} | ||
| 400 | Значение поля ServiceType в Appointment {Appointment_ServiceType} не соответствует значению поля serviceType в выбранном слоте {Sloty_ServiceType} | ||
| 400 | Значение поля AppointmentType в Appointment {Appointment_AppointmentType} не соответствует значению поля appointmentType в выбранном слоте {Sloty_AppointmentType} | ||
| 400 | Дата и время приема, указанные в слоте и бронировании, должны совпадать. Время приема из слота: время_слота_ | ||
| 400 | Роль медицинского работника, указанная в бронировании, не соответствует роли медицинского работника в слоте | ||
| 400 | Структурное подразделение, указанное в бронировании, не соответствует структурному подразделению в слоте | ||
| 400 | Бронирование возможно только с направлением | Если в слоте указано обязательное наличие направления на услугу, у пациента должно быть активное направление, совпадающее по параметрам со слотом и использующееся для бронирования в расширении extension:serviceRequestAppointed | |
| 400 | Значение поля ServiceCategory в Appointment {Appointment_ServiceCategory} не соответствует значению поля ServiceCategory в направлении {ServiceRequest_Category} | ||
| 400 | Значение поля ServiceType в Appointment {Appointment_ServiceType} не соответствует значению поля ServiceType в направлении {ServiceRequest_ServiceType} | ||
| 400 | Значение поля Specialty в Appointment {Appointment_Specialty} не соответствует значению Specialty в направлении {ServiceRequest_Specialty} | ||
| 400 | Дата и время приема, указанные в направлении и бронировании, должны совпадать. Время приема из направления: время_направления_ или период_направления__ | В направлении в элементе occurenceDate или occurencePeriod указаны даты или период, когда может создаваться Appointment | |
| 400 | Пациент уже имеет бронирование на данное расписание в этот день. Расписание: {Schedule_Reference} | Если пациент уже имеет активное бронирование в расписании, для него невозможно создать еще одно на этот день | |
| 400 | Создание нового бронирования возможно только со статусом pending | Если в создаваемом ресурсе указан статус, отличный от pending |
Пример запроса на бронирование слота в ЦИСЗ:
Пример ответа в случае успешного бронирования в ЦИСЗ:
Пример ответа в случае неудачи при бронировании слота в ЦИСЗ:
Отмена бронирования:
Метод отмены бронирования предназначен для отмены записи пациента на определенную медицинскую услугу в конкретный промежуток времени или в очередь (отмена бронирования слота в расписании).
Последовательность действий для отмены бронирования:
Клиент получает ресурс Appointment, который требуется отменить с помощью метода Получение заданной медицинской информации о пациенте;
Клиент передает id ресурса Appointment в url;
Клиент вызывает метод отмены бронирования в ЦИСЗ и в теле запроса передает ресурс Parameters, заполняет перечень параметров (указывает код причины отмены по справочнику Причины отмены бронирования и, при необходимости, заполняет текстовое поле причины), а в заголовках запроса устанавливается тип передаваемого контента (content-type) в application/json.
Метод осуществляет проверку:
• входящего ресурса на соответствие заполненных параметров;
• справочных данных пакета медицинских данных на соответствие значениям справочников ЦИСЗ.
Программные интерфейсы ЦИСЗ защищены сервером авторизации с использованием технологии OAuth 2.0 (см. вкладку “Авторизация в ЦИСЗ”). При каждом вызове метода клиентское приложение (МИС) должно передавать токен доступа (токен медицинского работника или пациента) в заголовке запроса.
Вызов метода осуществляется с помощью HTTP POST команды:
POST [FHIR_BASE]/Patient/[patient_id]/Appointment/[appointment_id]/$cancel
HEADERS: content-type:application/json
Входные данные метода:
| Название | Профиль | Описание |
|---|---|---|
| parameters | Parameters | Ресурс, передающий параметры операции |
| Название | Тип | Описание | |
|---|---|---|---|
| cancellation-reason | valueCoding | Концепт причины отмены бронирования по справочнику Причины отмены бронирования | Обязательный |
| notes | valueString | Текстовое представление причины бронирования | Необязательный |
Выходные данные метода:
| Название | Профиль | Описание |
|---|---|---|
| result | OperationOutcome | В случае, если входящий ресурс не прошел валидацию, возвращается ресурс OperationOutcome с HTTP кодом 400 (BadRequest) |
| resource | Бронирование слота | В случае, если входящий ресурс прошел валидацию, возвращается ресурс Бронирование слота с HTTP кодом 200 (OK) и статусом cancelled |
Ресурс OperationOutcome состоит из следующих параметров:
| Название | Дочерний элемент | Описание |
|---|---|---|
| issue | - | Проблема, корневой элемент |
| severity | Важность | |
| code | Код ошибки, предупреждения или информационный | |
| diagnostics | Дополнительная текстовая информация |
Метод возвращает:
| код HTTP | OperationOutcome.issue.diagnostics | Примечания |
|---|---|---|
| 200 | - | |
| 400 | Должен быть передан код и справочник для параметра ‘cancellation-reason’ | Не передан параметр cancellation-reason |
| 400 | Параметр ‘cancellation-reason’ не должен быть пустым | |
| 400 | Указан неверный параметр в запросе | |
| 400 | Справочник {System} с кодом {Code} не найден | Как правило, если в парметре cancellation-reason.coding.system указан неверный url справочника |
| 400 | Не удалось найти ресурс ‘Appointment’ c id ‘{Appointment_Id}’ | Указан неверный id в url запроса |
Пример запроса на отмену бронирования слота в ЦИСЗ:
Пример ответа в случае успешной отмены бронирования в ЦИСЗ:
Пример ответа в случае неудачи при отмене бронировании слота в ЦИСЗ: