Руководство к использованию стандарта FHIR в ЦИСЗ
0.2.6803 - ci-build
Участники:
| № п/п | Описание кейса | Перечень основных передаваемых ресурсов | Примечания |
|---|---|---|---|
| 1 | Создание заявки на активный визит | ||
| 1.1 | В УЗ “А” создан и импортирован в ЦИСЗ ресурс “Вызов врача на дом” | ServiceRequestHomeVisit | MedicationDocument |
| 1.2 | Медицинских работник (регистратор) УЗ “В” производит поиск ресурсов “Вызов врача на дом” в контексте организации | ||
| 1.3 | Врач (медицинская сестра) после выполнения визита к пациенту получает в контексте пациента ресурс “Вызов врача на дом” | ||
| 1.4 | Врач (медицинская сестра) после выполнения визита к пациенту импортирует сведения о визите в ЦИСЗ | EncounterGeneral ObservationSubjective VitalSignsBy FinalDiagnosis |
MedicationDocument ServiceRequestHomeVisit.status=completed |
| 2 | Отмена активного визита, который был создан медицинским работником | ||
| 2.1 | В УЗ “А” создан и импортирован в ЦИСЗ ресурс “Вызов врача на дом” | ServiceRequestHomeVisit | MedicationDocument |
| 2.2 | Врач (медицинская сестра) УЗ “В” получает в контексте пациента ресурс “Вызов врача на дом” | ||
| 2.3 | Врач (медицинская сестра) УЗ “В” отменяет активный визит с указание причины отмены | RejectionBy | MedicationDocument ServiceRequestHomeVisit.status=revoked |
Участники:
| № п/п | Описание кейса | Перечень основных передаваемых ресурсов | Примечания |
|---|---|---|---|
| 3 | Манипуляции с расписанием и слотами | ||
| 3.1 | Медицинский работник формирует в МИС и импортирует в ЦИСЗ график (расписание) приема врачей или работы кабинетов вместе со слотами | ScheduleBy Schedule.active=true SlotBy Slot.status = free |
OrganizationBundle {Schedule} entry.request.method = “POST” {Slot} entry.request.method = “POST” |
| 3.2 | Медицинский работник редактирует расписание + слоты | ScheduleBy Schedule.active=true SlotBy Slot.status = free |
OrganizationBundle {Schedule} entry.request.method = “PUT” {Slot} entry.request.method = “PUT” |
| 3.3 | Медицинский работник редактирует только слоты: | ||
| 3.3.1 | изменяет значение элементов слота | SlotBy Slot.status = free |
OrganizationBundle {Slot} entry.request.method = “PUT” |
| 3.3.2 | закрывает слот (изменяет статус с free на busy-unavailable) | SlotBy Slot.status = busy-unavailable |
OrganizationBundle {Slot} entry.request.method = “PUT” |
| 3.3.3 | добавляет новые свободные слоты в расписание | SlotBy Slot.status = free |
OrganizationBundle {Slot} entry.request.method = “POST” |
| 3.4 | Медицинский работник удаляет расписание | ScheduleBy Schedule.active=false |
OrganizationBundle {Schedule} entry.request.method = “PUT” Slot.status → ‘busy-unavailable’ |
Участники:
| № п/п | Описание кейса | Перечень основных передаваемых ресурсов | Примечания |
|---|---|---|---|
| 0 | Предварительные условия | ||
| 0.1 | Создание направления на исследование | ServiceRequest | MedicationDocument |
| 0.2 | Медицинский работник формирует в МИС и импортирует в ЦИСЗ график (расписание) приема врачей или работы кабинетов вместе со слотами | ScheduleBy Schedule.active=true SlotBy Slot.status = free |
OrganizationBundle {Schedule} entry.request.method = “POST” {Slot} entry.request.method = “POST” |
| 1 | Бронирование слотов без направления | ||
| 1.1 | Получение слотов, соответствующих специализации и типу услуги | ||
| 1.2 | Бронирование слота | AppointmentBy | Метод создания бронирования: POST [FHIR_BASE]/Appointment/ |
| 2 | Бронирование слотов с направлением | ||
| 2.1 | Получение направления | ||
| 2.2 | Получение слотов, соответствующих специализации и типу услуги, указанному в направлении | ||
| 2.3 | Бронирование слота | AppointmentBy | Метод создания бронирования: POST [FHIR_BASE]/Appointment/ |
| 3 | Отмена бронирования слотов | ||
| 3.1 | Получение забронированных слотов в контексте пациента | ||
| 3.2 | Отмена бронирования | Parameters | Метод отмены бронирования: POST [FHIR_BASE]/Patient/[patient_id]/Appointment/[appointment_id]/$cancel |
| 4 | Оказание услуги с формированием Encounter | ||
| 4.1 | Медицинский работник получает информацию о бронировании слота на оказываемую услугу | ||
| 4.2 | Медицинский работник формирует в МИС Encounter, другие необходимые ресурсы и импортирует пакет медицинской информации в ЦИСЗ | EncounterGeneral Encounter.status=completed Encounter.appointment |
MedicationDocument Appointment.status → fulfilled |
| Тип слота | Статус | Особенности формирования значений элементов ресурса | Использование в бизнес-процессе УЗ | Примечание |
|---|---|---|---|---|
| Свободные слоты (для записи пациентов на медицинские услуги, оказываемые на внебюджетной основе) | free | extension[reserve] = false extension[fromOrganization] - 0..0 extension[withServiceRequest] = false|true extension[paid] != free |
Появляются в ЦИСЗ: 1. после создания и импорта МИС; 2. после отмены бронирования. Доступны для записи: 1. через регистратуру (регистратором); 2. медицинским работником (врачом, фельдшером, медицинской сестрой); 3. пациентом из ЛКП или портал записи. |
|
| Свободные слоты (для записи на медицинские услуги пациентов, прикрепленных к организации, в которой эти услуги оказываются) | free | extension[reserve] = false extension[fromOrganization] - 0..1 extension[withServiceRequest] = false extension[paid] = free |
Появляются в ЦИСЗ: 1. после создания и импорта МИС; 2. после отмены бронирования. Доступны для записи: 1. через регистратуру (регистратором); 2. медицинским работником (врачом, фельдшером, медицинской сестрой); 3. пациентом из ЛКП или портал записи. |
Запись пациента на медицинскую услугу, которая может быть оказана без направления в организации здравоохранения, за которой закреплен пациент (например, запись на прием к врачу общей практики, запись на вакцинацию и др.) |
| Свободные слоты (для записи на медицинские услуги пациентов, прикрепленных к УЗ, указанным в extension[fromOrganization]) | free | extension[reserve] = false extension[fromOrganization] - 1..* extension[withServiceRequest] = true extension[paid] - любое значение |
Появляются в ЦИСЗ: 1. после создания и импорта МИС; 2. после отмены бронирования. Доступны для записи: 1. через регистратуру (регистратором); 2. медицинским работником (врачом, фельдшером, медицинской сестрой); 3. пациентом из ЛКП или портал записи. |
Запись пациента на медицинскую услугу воможна только по направлению из организаии, которая указана в расширении extension[fromOrganization] |
| Свободные слоты (для записи на медицинские услуги пациентов, прикрепленных к УЗ, указанным в extension[fromOrganization]) | free | extension[reserve] = true extension[fromOrganization] - 1..* extension[withServiceRequest] = true extension[paid] = free |
Появляются в ЦИСЗ: 1. после создания и импорта МИС; 2. после отмены бронирования. Доступны для записи: 1. через регистратуру (регистратором); 2. медицинским работником (врачом, фельдшером, медицинской сестрой). |
Запись пациента на медицинскую услугу воможна только по направлению из организаии, которая указана в расширении extension[fromOrganization] |
| Забронированные слоты | busy | Изменение статуса с free на busy происходит на стороне ЦИСЗ при успешном бронировании свободного слота | МИС не может импортировать в ЦИСЗ слоты со статусом busy! | |
| Слоты закрыты для бронирования | busy-unavailable | extension[cancellationReason] - 1..1 comment - 1..1 |
Появляются в ЦИСЗ: 1. в результате изменения статуса слота медицинским работником; 2. после отмены расписания, с которым связаны слоты. |
Слоты закрываются для бронирования в случаях, когда они были созданы по ошибке, или когда медицинская услуга по каким-либо причинам не может быть оказана. МИС не может импортировать в ЦИСЗ слоты со статусом busy! Изменение статуса busy-unavailable невозможно! |
| Исходное значение | Целевое значение | Механизмы изменения статусов |
|---|---|---|
free |
busy |
Реализовано на стороне ЦИСЗ при успешном бронировании |
free |
busy-unavailable |
1. Изменение статуса медицинским работником 2. Реализовано на стороне ЦИСЗ при удалении расписания |
busy |
free |
Реализовано на стороне ЦИСЗ при успешной отмене бронирования |
busy |
busy-unavailable |
1. Изменение статуса медицинским работником 2. Реализовано на стороне ЦИСЗ при удалении расписания |
| Исходное значение | Целевое значение | Механизмы изменения статусов |
|---|---|---|
pending |
booked |
Реализовано на стороне ЦИСЗ при успешном бронировании |
booked |
fulfilled |
Реализовано на стороне ЦИСЗ при оказании услуги, формировании и импорте Encounter со ссылкой на Appointment |
booked |
cancelled |
Реализовано на стороне ЦИСЗ: 1. при отмене расписания, 2. при изменении медицинским работником статуса слота, на который ссылается Appointment, с busy на busy-unavailable |
sequenceDiagram
participant mis01 as "МИС-1"
participant cish as "ЦИСЗ"
participant mis02 as "МИС-2"
autonumber
Note over mis01,cish: Оформление активного визита
loop Количество заявок = n
mis01 ->> mis01: Create ServiceRequestHomeVisin
mis01 ->> cish: POST[FHIR BASE]/Bundle/$import/MedicationDocument + Patient + ServiceRequestHomeVisin.status=active
cish -->> mis01: 200 OK/Bundle status 'successed'
end
Note over cish,mis02: Получение информации о заявках на визиты
loop С периодичностью, установленной правилами УЗ
mis02 ->> cish: GET[FHIR BASE]/Organization/[OrganizationId]/ServiceRequestBy?_profile=https://fhir.by/StructureDefinition/ServiceRequestHomeVisit&status=active
cish -->> mis02: 200 OK/total=n/[ServiceRequestHomeVisit]
mis02 ->> mis02: Распределение визитов
end
Note over cish,mis02: Результаты визита
mis02 ->> cish: GET [FHIR BASE]/Patient/[patientId]/ServiceRequest?_profile=https://fhir.by/StructureDefinition/ServiceRequestHomeVisit&status=active
cish -->> mis02: 200 OK/total=1/[ServiceRequestHomeVisit]
alt Визит выполнен
mis02 ->> mis02: Create EncounterGeneral and other resources
mis02 ->> cish: POST[FHIR BASE]/Bundle/$import/MedicationDocument + Patient + EmcounterGeneral.basedOn=Reference(ServiceRequestHomeVisit)
cish ->> cish: ServiceRequestHomeVisit.status=completed
cish -->> mis02: 200 OK/Bundle status 'successed'
else Отмена визита
mis02 ->> mis02: Create RejectionBy
mis02 ->> cish: POST[FHIR BASE]/Bundle/$import/MedicationDocument + Patient + RejectionBy.topicReference=Reference(ServiceRequestHomeVisit)
cish ->> cish: ServiceRequestHomeVisit.status=revoked
cish -->> mis02: 200 OK/Bundle status 'successed'
end
На диаграмме представлены кейсы, связанные с назначением активных визитов одним учраждением здравоохранения другому. Если назначение визита медицинского работника на дом к пациенту выполняется в рамках МИС одного учреждения здравоохранения, то импортировать эти ресурсы ServiceRequestHomeVisit в ЦИСЗ не целесообразно.
Заявки на визит на дом в адрес учреждений здравоохранения будут поступать также из личных кабинетов пациентов (ЛКП) и портала записи на медицинские услуги.
Порядок действий:
sequenceDiagram
participant mis as "МИС"
participant cish as "ЦИСЗ"
autonumber
Note over mis,cish: Формление графика (расписания)
mis ->> mis: Create ScheduleBy and SlotBy
mis ->> cish: POST[FHIR BASE]/Bundle/$import/OrganizationBundle + ScheduleBy.active=true + SlotBy.status=free
cish -->> mis: 200 OK/Bundle status 'successed'
Note over cish,mis: Редактирование расписания
mis ->> cish: GET[FHIR BASE]/Organization/[OrganizationId]/Schedule?_profile=https://fhir.by/StructureDefinition/ScheduleBy&[params]
cish -->> mis: 200 OK/total=1/[ScheduleBy_01]
mis ->> mis: Update ScheduleBy_01
mis ->> cish: POST[FHIR BASE]/Bundle/$import/OrganizationBundle + ScheduleBy_01 [entry.request.method = "PUT"]
cish ->> cish: Update ScheduleBy_01
cish -->> mis: 200 OK/Bundle status 'successed'
Note over cish,mis: Изменение слота
mis ->> cish: GET[FHIR BASE]/Organization/[OrganizationId]/Schedule?_profile=https://fhir.by/StructureDefinition/ScheduleBy&[params]
cish -->> mis: 200 OK/total=1/[ScheduleBy_01]
mis ->> cish: GET[FHIR BASE]/Organization/[OrganizationId]/Slot?_profile=https://fhir.by/StructureDefinition/SlotBy&[params]
cish -->> mis: 200 OK/total=n/[SlotBy_N]
par Меняем значение элементов слота (кроме status)
mis ->> mis: Update Slot_01, Slot_02 ...
mis ->> cish: POST[FHIR BASE]/Bundle/$import/OrganizationBundle + SlotBy_01 + SlotBy_02 + ... [entry.request.method = "PUT"]
cish ->> cish: Update SlotBy_01, Slot_02 ...
cish -->> mis: 200 OK/Bundle status 'successed'
and Закрываем слот для записи
mis ->> mis: Update SlotBy_02.status=busy-unavailable
mis ->> cish: POST[FHIR BASE]/Bundle/$import/OrganizationBundle + SlotBy_02 [entry.request.method = "PUT"]
cish ->> cish: Update SlotBy_02
cish -->> mis: 200 OK/Bundle status 'successed'
and Добавляем в расписание новые слоты
mis ->> mis: Create Slot_04, Slot_05 ...
mis ->> cish: POST[FHIR BASE]/Bundle/$import/OrganizationBundle + SlotBy_04 + SlotBy_05 + ... [entry.request.method = "POST"]
cish ->> cish: Create SlotBy_04, Slot_05 ...
cish -->> mis: 200 OK/Bundle status 'successed'
end
Note over cish,mis: Удаление расписания
mis ->> cish: GET[FHIR BASE]/Organization/[OrganizationId]/Schedule?_profile=https://fhir.by/StructureDefinition/ScheduleBy&[params]
cish -->> mis: 200 OK/total=1/[ScheduleBy_01]
mis ->> mis: Update ScheduleBy_01
mis ->> cish: POST[FHIR BASE]/Bundle/$import/OrganizationBundle + ScheduleBy_01.active=false [entry.request.method = "PUT"]
cish ->> cish: Update ScheduleBy_01 and slots related ones
cish -->> mis: 200 OK/Bundle status 'successed'
Важно! Операция отмены импорта бандла после удаления расписания не проводится, а вместо этого создается новое расписание.
Порядок действий
sequenceDiagram
participant mis as "МИС"
participant cish as "ЦИСЗ"
autonumber
Note over mis,cish: Бронирование слотов
mis ->> cish: GET[FHIR BASE]/Organization/[OrganizationId]/Slot?_profile=https://fhir.by/StructureDefinition/SlotBy&[params]
cish -->> mis: 200 OK/total=N/[SlotBy_N]
opt
mis ->> cish: GET[FHIR BASE]/Patient/[PatientId]/Appointment?_profile=https://fhir.by/StructureDefinition/AppointmentBy&status=booked
cish -->> mis: 200 OK/total=N/[AppointmentBy_N]
end
mis ->> mis: Create AppoitmentBy_01
mis ->> cish: POST[FHIR BASE]/Appointment [Body: AppointmentBy_01.status=pending]
alt Бронирование прошло успешно
cish -->> mis: 200 OK/AppointmentBy_01.status=booked
else Не удалось бронировать слот
cish -->> mis: 400 Bad Request/OperationOutcome
end
Note over cish,mis: Отмена бронирования
mis ->> cish: GET[FHIR BASE]/Patient/[PatientId]/Appointment?_profile=https://fhir.by/StructureDefinition/AppointmentBy&status=booked
cish -->> mis: 200 OK/total=N/[AppointmentBy_N]
mis ->> cish: POST[FHIR BASE]/Appointment/[Appointment_01Id]/$cancel [Body: Parameters.cancellation-reason]
alt Отмена прошла успешно
cish -->> mis: 200/AppointmentBy_01.status=cancelled
else Не удалось отменить слот
cish -->> mis: 400 Bad Request/OperationOutcome
end
Note over cish,mis: Оказание услуги
mis ->> cish: GET[FHIR BASE]/Patient/[PatientId]/Appointment?_profile=https://fhir.by/StructureDefinition/AppointmentBy&status=booked
cish -->> mis: 200 OK/total=1/[AppointmentBy_01]
mis ->> mis: Create EnconterGeneral and other
mis ->> cish: POST[FHIR BASE]/Bundle/$import/MedicationDocument + EncounterGeneral.appointment=Reference(AppointmentBy_01)
cish ->> cish: Update Appointment_01.status=fulfilled
cish -->> mis: 200 OK/Bundle status 'successed'
На диаграмме представлены кейсы, связанные с записью на медицинские услуги, которые выполняют медицинские работники учраждений здравоохранения (врачи, фельдшеры, медицинские сестры, регистраторы).
Запись на медицинские услуги будет проводиться также из личных кабинетов пациентов (ЛКП) и портала записи на медицинские услуги.
Порядок действий:
| № п/п | Кейсы | Текст сообщения об ошибке для технических специалистов | Текст сообщения об ошибке в человекочитаемом формате | Описано в IG? |
|---|---|---|---|---|
| Визит медицинского работника на дом | ||||
| 1 | При попытке в составе пакета медицинской информации о пациенте импортировать ресурс Encounter, который ссылается на ресурс ServiceRequestHomeVisit со статусом != active, будет возвращена следующая ошибка | В Encounter.basedOn должна быть указана ссылка на ServiceRequest со статусом ‘active’. | Сведения об оказании медицинской помощи на дому ссылаются либо на отмененный вызов врача на дом, либо на вызов врача на дом, который уже был выполнен. | error |
| 2 | При попытке в составе пакета медицинской информации о пациенте импортировать ресурс RejectionHomeVisit, который ссылается на ресурс ServiceRequestHomeVisit со статусом completed, будет возвращена следующая ошибка | Невозможно создать отказ от направления, которое было исполнено. | Невозможно создать отказ от направления, которое было исполнено. | error |
| 3 | При попытке в составе пакета медицинской информации о пациенте импортировать ресурс RejectionHomeVisit, который ссылается на ресурс ServiceRequestHomeVisit со статусом revoked, будет возвращена следующая ошибка | Невозможно создать отказ от направления, которое было отменено. | Невозможно создать отказ от направления, которое было отменено. | error |
| Формирование графика (расписания) работы врачей и кабинетов УЗ | ||||
| 4 | При попытке создать или обновить расписание с горизонтом планирования, в котором дата начала не указана, система выдаст ошибку | Невозможно {actionText} расписание. Ошибка получения даты начала расписания {schedule.PlanningHorizon.Start}. | Расписание должно содержать дату начала периода, на который оно было составлено. | error |
| 5 | При попытке создать или обновить расписание с горизонтом планирования, в котором дата окончания не указана, система выдаст ошибку | Невозможно {actionText} расписание. Ошибка получения даты окончания расписания {schedule.PlanningHorizon.End}. | Расписание должно содержать дату окончания периода, на который оно было составлено. | error |
| 6 | При попытке создать или обновить расписание с горизонтом планирования, в котором дата окончания меньше текущей даты, система выдаст ошибку | Невозможно {actionText} расписание. Дата окончания расписания {schedule.PlanningHorizon.End} не должна быть меньше текущей даты {now}. | Дата окончания периода, на который составлено расписания, должна быть больше текущей даты. | error |
| 7 | При попытке создать или обновить расписание с горизонтом планирования, в котором дата окончания меньше даты начала, система выдаст ошибку | Невозможно {actionText} расписание. Дата начала расписания {schedule.PlanningHorizon.Start} не должна быть больше даты окончания расписания {schedule.PlanningHorizon.End}. | Дата окончания периода, на который составлено расписания, должна быть больше даты начала. | error |
| 8 | При попытке создать или обновить расписание, которое пересекается с другим расписанием по конкретным услугам, врачу и времени, система выдаст ошибку | Невозможно {actionText} расписание, т.к. оно пересекается с другим расписанием {savedSchedule.Id}. По услуге: {savedSchedule.serviceCategory.coding.code.intersect(schedule.ServiceCategory.coding.code)}, врачу {savedSchedule.actor.reference.intersect(schedule.actor.reference)} и времени приема. {schedule.planningHorizon.start} - {schedule.planningHorizon.end} попадает в диапазон {savedSchedule.planningHorizon.start} - {savedSchedule.planningHorizon.end}. | Расписание с такими значениями видов услуг, исполнителей и периода уже создано ранее. | error |
| 9 | При попытке обновить расписание (либо создать или обновить слот в рамках данного расписания) новыми значениями для ServiceType в случае, если новые значения не соответствуют сохраненным для данного расписания слотам | Невозможно {actionText} расписание, конфликт значений в сохраненном слоте {slot.Id}: значение поля ServiceType {slot.serviceType.concept.coding.code} в слоте не соответствуют значению ServiceType {schedule.serviceType.concept.coding.code} в расписании. Невозможно {actionText} слот, т.к. значение поля ServiceType {slot.serviceType.concept.coding.code} в слоте не соответствуют значению ServiceType {schedule.serviceType.concept.coding.code} в расписании. |
Медицинские услуги, указанные в расписании, должны соответствовать значениям медицинских услуг в связанных с этим расписанием слотах. | error |
| 10 | При попытке обновить расписание (либо создать или обновить слот в рамках данного расписания) новыми значениями для ServiceCategory в случае, если новые значения не соответствуют сохраненным для данного расписания слотам | Невозможно {actionText} расписание, конфликт значений в сохраненном слоте {slot.Id}: значение поля ServiceCategory {slot.serviceCategory.coding.code} должно соответствовать значению поля ServiceCategory в расписании {schedule.serviceCategory.coding.code}. Невозможно {actionText} слот, т.к. значение поля ServiceCategory {slot.serviceCategory.coding.code} должно соответствовать значению поля ServiceCategory в расписании {schedule.serviceCategory.coding.code}. |
Категории медицинских услуг, указанные в расписании, должны соответствовать значениям категорий медицинских услуг в связанных с этим расписанием слотах. | error |
| 11 | При попытке обновить расписание (либо создать или обновить слот в рамках данного расписания) новыми значениями для Speciality в случае, если новые значения не соответствуют сохраненным для данного расписания слотам | Невозможно {actionText} расписание, конфликт значений в сохраненном слоте {slot.Id}: значение поля Specialty {slot.specialty.coding.code} должно соответствовать значению поля Specialty в расписании {schedule.specialty.coding.code}. Невозможно {actionText} слот, т.к. значение поля Specialty {slot.specialty.coding.code} должно соответствовать значению поля Specialty в расписании {schedule.specialty.coding.code}. |
Значения специализации медицинской помощи, указанные в расписании, должны соответствовать значениям специализации медицинской помощи в связанных с этим расписанием слотах. | error |
| 12 | При попытке обновить расписание (либо создать или обновить слот в рамках данного расписания) новыми значениями для PractitionerRole в случае, если новые значения не соответствуют сохраненным для данного расписания слотам | Невозможно {actionText} расписание, конфликт значений в сохраненном слоте {slot.Id}: значение поля PractitionerRoleReference в слоте {slot.extension(“https://fhir.by/StructureDefinition/PractitionerRoleReference”).value.reference} должно соответствовать значению поля Actor в расписании {schedule.actor.reference}. Невозможно {actionText} слот, т.к. значение поля PractitionerRoleReference в слоте {slot.extension(“https://fhir.by/StructureDefinition/PractitionerRoleReference”).value.reference} должно соответствовать значению поля Actor в расписании {schedule.actor.reference}. |
Медицинский работник, оказывающий услугу должен, должен присутствовать в списке медицинских работников, указанном в расписании. | error |
| 13 | При попытке обновить расписание (либо создать или обновить слот в рамках данного расписания) новыми значениями для даты начала расписания в случае, если новые значения не соответствуют сохраненным для данного расписания слотам | Невозможно {actionText} расписание, конфликт значений в сохраненном слоте {slot.Id}: дата начала слота {slot.start} должна попадать в диапазон расписания {schedule.planningHorizon.start} - {schedule.planningHorizon.end}. Невозможно {actionText} слот, т.к. дата начала слота {slot.Start} должна попадать в диапазон расписания {schedule.planningHorizon.start} - {schedule.planningHorizon.end}. |
Все даты начала оказания медицинской услуги должны находиться в пределах периода, на который составлено расписание. | error |
| 14 | При попытке обновить расписание (либо создать или обновить слот в рамках данного расписания) новыми значениями для даты окончания расписания в случае, если новые значения не соответствуют сохраненным для данного расписания слотам | Невозможно {actionText} расписание, конфликт значений в сохраненном слоте {slot.Id}: дата окончания слота {slot.end} должна попадать в диапазон расписания {schedule.planningHorizon.start} - {schedule.planningHorizon.end}. Невозможно {actionText} слот, т.к. дата окончания слота {slot.end} должна попадать в диапазон расписания {schedule.planningHorizon.start} - {schedule.planningHorizon.end}. |
Все даты окончания оказания медицинской услуги должны находиться в пределах периода, на который составлено расписание. | error |
| 15 | При попытке создать или обновить экстренный слот с датой начала или окончания действия слота, отличной от текущей, система выдаст ошибку | Невозможно {actionText} экстренный слот на дату, отличающуюся от текущей - {now}. | Дата оказания медицинской помощи по экстренным показаниям должна соответствовать текущей дате. | error |
| 16 | При попытке создать слот со статусом, отличным от ‘free’, система выдаст ошибку | Создание слота возможно только со статусом ‘free’. | Разрешено импортировать только слоты открытые для записи. | error |
| 17 | При попытке создать слот с датой начала меньше текущей, система выдаст ошибку | Невозможно {actionText} слот. Дата начала слота {slot.start} не должна быть меньше текущей даты {now}. | Начало оказания медицинской услуги должна быть не раньше текущей даты. | error |
| 18 | При попытке создать слот с датой окончания меньше текущей, система выдаст ошибку | Невозможно {actionText} слот. Дата окончания слота {slot.end} не должна быть меньше текущей даты {now}. | Окончание оказания медицинской услуги должна быть не раньше текущей даты. | error |
| 19 | При попытке создать слот с датой начала больше либо равной дате окончания, система выдаст ошибку | Невозможно {actionText} слот. Дата начала слота {slot.start} должна быть меньше даты окончания слота {slot.end}. | Окончание оказания медицинской услуги должна быть позже начала. | error |
| 20 | При попытке создать платный слот с ценой меньше 0, система выдаст ошибку | Сумма платной услуги должна быть больше 0. | Предварительная стоимость платной услуги должна быть представлена положительным числом. | error |
| 21 | При попытке создать слот, ссылающийся на расписание, которое будет удалено в рамках текущей операции, система выдаст ошибку | Невозможно {actionText} слот. Слот ссылается на расписание, которое будет удалено в рамках текущей транзакции. {deletedSchedule.fullUrl} - {slot.schedule.reference}. | Попытка запланировать оказание медицинской услуги в рамках расписания, которое будет удалено. | error |
| 22 | При попытке создать слот, ссылающийся на расписание, которое не существует, система выдаст ошибку | Невозможно найти расписание для выбранного слота. ScheduleId: {slot.schedule.reference}. | Попытка запланировать оказание медицинской услуги в рамках отсутствующего расписания. | error |
| 23 | При попытке обновить слот со статусом ‘busy-unavailable’ или ‘entered-in-error’, система выдаст ошибку | Изменение слота {resource.Id} со статусом {slotFromDb.status} => {slot.status} запрещено. | Невозможно обновить статус медицинской услуги. Изменение статуса услуги, введенной по ошибке, запрещено. | error |
| 24 | При попытке обновить слот c изменением статуса с ‘free’ на ‘busy’ или с ‘busy’ на ‘free’, система выдаст ошибку | Невозможно обновить слот {slot.id} со статусом {slotFromDb.status} => {slot.status}. Изменение статуса происходит автоматически при {statusView}. statusView: slotDbStatus == free => “бронировании” else “отмене бронирования” |
Невозможно обновить статус медицинской услуги. Изменение статуса медицинской услуги происходит автоматически при записи или отмене записи на услугу. | error |
| 25 | При попытке создать или обновить слот, который пересекается с другим слотом по услуге, врачу и времени приема, система выдаст ошибку | Невозможно {actionText} слот, т.к. он пересекается с другим слотом по услуге, врачу и времени приема. {slot.start}-{slot.end} попадает в диапазон {savedSlot.start} - {savedSlot.end}. Пересекается со слотом {savedSlot.id}. | У одного медицинского работника, оказывающего медицинскую услугу, не должны совпадать значения типа медицинской услуги, дата и время оказания медицинской услуги. | error |
| 26 | Если указан slot.extension(RequestFromOrganization).value.reference и slot.extension(WithServiceRequest) = false или отсутствует | Невозможно {actionText} слот. Слот для приема из других организаций возможен только с направлением. | Медицинская услуга может быть оказана только при наличии направления. | error |
| Запись на медицинские услуги | ||||
| 27 | При попытке создать новое бронирование со статусом, отличным от ‘pending’, система выдаст ошибку | Создание нового бронирования возможно только со статусом ‘pending’. | Создание нового бронирования возможно только со статусом “в ожидании”. | error |
| 28 | При попытке обновить бронирование со статусом ‘pending’ на статус ‘booked’ или ‘entered-in-error’, система выдаст ошибку | Невозможно изменить статус бронирования {from} => {to}: нет подтверждения о бронировании (‘booked’). | Невозможно изменить статус бронирования с “в ожидании” на “забронировано”. Операция выполняется при успешном бронировании автоматически на стороне ЦИСЗ. | error |
| 29 | При попытке обновить бронирование со статусом ‘booked’ на статус ‘pending’, система выдаст ошибку | Невозможно изменить статус бронирования {from} => {to}: бронирование было подтверждено статусом ‘booked’. | Невозможно изменить статус бронирования с “забронировано” на “в ожидании”. Операция недопустима. | error |
| 30 | При попытке забронировать экстренный слот на дату, отличающуюся от текущей, система выдаст ошибку | Невозможно забронировать экстренный слот на дату, отличающуюся от текущей - {now}. | Бронирование экстренного слота возможно только в день оказания услуги. | error |
| 31 | При попытке забронировать слот в случае, если дата окончания приема меньше текущей даты и времени, система выдаст ошибку | Невозможно забронировать слот. Дата и время окончания приема не должны быть меньше текущей даты и времени. Дата окончания приема: {appointment.end}, время запроса: {now}. | Бронирование медицинской услуги с истекшей датой окончания приема недопустимо. | error |
| 32 | При попытке создать или обновить бронирование со ссылкой на слот со статусом, отличным от ‘free’, система выдаст ошибку | Слот недоступен для бронирования, выберите другой слот. Статус слота: {slot.status}. | В настоящее время медицинская услуга не доступна для бронирования. | error |
| 33 | При попытке создать или обновить бронирование со ссылкой на слот в случае, если бронирование включает одно или несколько значений для Speciality, отличных от значений Speciality у слота | Значение поля Specialty в Appointment {appointment.specialty.except(slot.specialty).coding.code} не соответствует значению поля Specialty в выбранном слоте {slot.specialty.coding.code}. | Специализация, указанная при бронировании, не соответствует ни одной из специализаций медицинской услуги. | error |
| 34 | При попытке создать или обновить бронирование со ссылкой на слот в случае, если бронирование включает одно или несколько значений для ServiceCategory, отличных от значений ServiceCategory у слота | Значение поля ServiceCategory в Appointment {appointment.serviceCategory.except(slot.serviceCategory).coding.code} не соответствует значению поля ServiceCategory в выбранном слоте {slot.serviceCategory.coding.code}. | Категория услуг, указанная при бронировании, не соответствует ни одной из категорий услуг медицинской услуги. | error |
| 35 | При попытке создать или обновить бронирование со ссылкой на слот в случае, если бронирование включает одно или несколько значений для ServiceType, отличных от значений ServiceType у слота | Значение поля ServiceType в Appointment {appointment.serviceType.except(slot.serviceType).concept.coding.code} не соответствует значению поля ServiceType в выбранном слоте {slot.serviceType.concept.coding.code}. | Типы услуг, указанные при бронировании, не соответствуют типам медицинской услуги. | error |
| 36 | При попытке создать или обновить бронирование для слота в случае, если тип бронирования отличается от типов бронирования, доступных для данного слота | Значение поля AppointmentType {appointment.appointmentType.coding.code} в Appointment не соответствует значению поля AppointmentType в выбранном слоте {slot.appointmentType.coding.code}. | Тип бронирования не соответствует ни одному из типов бронирования медицинской услуги. | error |
| 37 | При попытке создать или обновить бронирование для слота в случае, если дата и время, указанное в бронировании, не соответствуют слоту | Дата и время приема, указанные в слоте и бронировании должны совпадать. Время приема из слота: {slot.start} - {slot.end}. | Дата и время начала и окончания приема, указанные при бронировании, не соответствуют дате и времени начала и окончания действия медицинской услуги соответственно. | error |
| 38 | При попытке создать или обновить бронирование для слота в случае, если роль медицинского работника, указанная в бронировании, не соответствует роли медицинского работника в слоте | Роль медицинского работника указанная в бронировании не соответствует роли медицинского работника в слоте. | Роль медицинского работника указанная в бронировании не соответствует роли медицинского работника, оказывающего медицинскую услугу. | error |
| 39 | При попытке создать или обновить бронирование для слота в случае, если структурное подразделение, указанное в бронировании, не соответствует структурному подразделению в слоте | Структурное подразделение указанное в бронировании не соответствует структурному подразделению в слоте. | Структурное подразделение указанное в бронировании не соответствует структурному подразделению, где оказывается медицинская услуга. | error |
| 40 | При попытке создать или обновить бронирование для слота в случае, если форма оказания медицинских услуг в бронировании не соответствует форме оказания медицинских услуг в слоте | Форма оказания медицинских услуг в бронировании не соответствует форме оказания медицинских услуг в слоте. | Форма оказания медицинских услуг, указанная при бронировании, не соответствует форме оказания медицинской услуги. | error |
| 41 | При попытке создать экстренное бронирование для слота, не являющимся экстренным, система выдаст ошибку | Невозможно создать экстренную бронь на слот, не являющийся экстренным. | Невозможно создать экстренное бронирование медицинской услуги, не являющейся экстренной. | error |
| 42 | При попытке создать или обновить бронирование для слота, бронирование которого допускается только с направлением, в случае отсутствия направления | Бронирование возможно только с направлением. | Бронирование медицинской услуги возможно только при наличии направления. | error |
| 43 | При попытке создать или обновить бронирование с направлением в случае, если код категории из бронирования не соответствует направлению | Значение поля ServiceCategory в Appointment {appointment.serviceCategory.except(serviceRequest.category).coding.code} не соответствует значению поля ServiceCategory в направлении {serviceRequest.category.coding.code}. | Категория услуг, указанная при бронировании, не соответствует ни одной из категорий услуг, указанных в направлении. | error |
| 44 | При попытке создать или обновить бронирование с направлением в случае, если код сервиса из бронирования не соответствует направлению | Значение поля ServiceType в Appointment {slot.ServiceType.first(concept.coding.system = “https://fhir.by/ValueSet/MedicalServiceType”).concept.coding.code} не соответствует значению поля Code в направлении {serviceRequest.code.concept.coding.code}. | Типы услуг, указанные при бронировании, не соответствуют типу услуги в направлении. | error |
| 45 | При попытке создать или обновить бронирование с направлением в случае, если код специализации из бронирования не соответствует направлению | Значение поля Specialty в Appointment {appointment.specialty.except(serviceRequest.extension(“https://fhir.by/StructureDefinition/SpecialtyCode”).value).coding.code} не соответствует значению поля specialty в направлении {serviceRequest.extension(“https://fhir.by/StructureDefinition/SpecialtyCode”).value.coding.code}. | Специализация, указанная при бронировании, не соответствует специализации направления. | error |
| 46 | Указан serviceRequest.Occurrence FhirDateTime: appointment.start > serviceRequest.occurrence or appointment.end < serviceRequest.occurrence | Дата и время приема, указанные в направлении и бронировании должны совпадать. Время приема из направления: {serviceRequest.occurrence}. | Вы пытаетесь записаться на медицинскую услугу по направлению, срок действия которого уже истек. | error |
| 47 | Указан serviceRequest.Occurrence Period: appointment.start > serviceRequest.occurrence.start or appointment.end < serviceRequest.occurrence.end | Дата и время приема, указанные в направлении и бронировании должны совпадать. Время приема из направления: {serviceRequest.occurrence.start} - {serviceRequest.occurrence.end}. | Вы пытаетесь записаться на медицинскую услугу по направлению, срок действия которого уже истек. | error |
| 48 | При попытке создать или обновить бронирование для пациента, у которого уже имеется бронирование на данное расписание в этот день | Пациент уже имеет бронирование на данное расписание в этот день. Расписание: {slot.schedule.reference}. | Вы пытаетесь забронировать более одной услуги для пациента на один день из одного и того же расписания. | error |
| 49 | При попытке создать или обновить бронирование для слота, который не найден | Отсутствует информация о слоте. SlotId: {appointment.slot.reference}. | Вы пытаетесь забронировать слот, который отсутствует в системе. | error |
| 50 | Если savedAppointment.status != appointment.status И savedAppointment.status != pending and savedAppointment.status != booked | Невозможно изменить статус бронирования {savedAppointment.status} => {appointment.status}: {denyReason}. denyReason = savedAppointment.status switch |
Невозможно изменить статус бронирования, соответствующий следующим значениям: прием или оказание услуги было успешно начато, бронирование было отменено, пациент не явился на прием, бронирование было создано по ошибке. | error |
| 51 | Если есть slot.extension(“RequestFromOrganization”).reference и ни одно значение не совпало с serviceRequest.extension(“RequestFromOrganization”).reference | Направление, указанное в бронировании, выписанной организацией, которая не может бронировать этот слот. | Медицинская услуга не может быть оказана по направлению, созданному в этой организации. | error |