Предоставление информации о наличии сведений о пациенте в МИС
ValidatePerson
Этап идентификации данных пациента
Пациент, с помощью ЕПГУ, вводит первичные данные для записи и КУ ФЭР отправляет запрос о доступности услуг пациенту в центральную базу РМИС.
Входные данные:
Patient_Data - данные пациента (номер полиса ОМС, серия полиса ОМС, СНИЛС, ФИО, дата рождения, пол)
Session_ID - идентификатор сессии
Pass_referral - признак необходимости возврата перечня направлений гражданина
Patient_Info_Kind - тип запрашиваемой информации о пациенте (ATTACHMENT – сведения о лечащих врачах, D_OBSERVATION – сведения о диспансерном наблюдении, REFERRAL – сведения о направлениях гражданина)
В центральной базе РМИС происходит попытка поиска данных о пациенте в системе при помощи получаемых обязательных параметров и идентификатора сессии.
Информация
Пациент должен быть прикреплен к какой-либо организации, поэтому перед записью требуется получить ответ от места прикрепления. Прикрепления проверяются по регистру сведений "тмб_ПрикрепленияПациентовКМО".
Если пациент не найден ни в одной из МИС, то возвращается ошибка PATIENT_NOT_FOUND с сообщением "Пациент не найден."
Если пациент найден, в ответе возвращаются выходные данные о нем
Если попытка поиска оказалась неудачной, то выдается исключение о внутренней ошибке системы INTERNAL_ERROR
Предоставление данных о направлении пациента по номеру направления
Referral
Этап выбора направления
2
GetMOInfoExtended
Предоставление списка подразделений МО, в которые пациенту доступна запись к специалистам
MO
Этап получения списка медицинских организаций
КУ ФЭР отправляет запрос о доступных МО и их подразделений по прикреплению пациента в центральную базу РМИС.
Входные данные:
Session_ID - идентификатор сессии
Patient_Id - идентификатор пациента в РМИС
Service_Posts - список должностей
Booking_Type - тип планирования (один из {APPOINTMENT, DISPENSARY(ADVANCED), VACCINATION(COVID)}
Центральная база РМИС по идентификатору сессии определяет пациента.
При помощи идентификатора и РС ФедеральныеВебСервисыЗаписьНаПриемСессии запрашиваются данные о сессии по ее идентификатору, если сессия истекла в ответе возвращается ошибка SESSION_TIMED_OUT с сообщением "Истекло время ожидания в рамках сессии"
По указанным должностным кодам составляется список всех должностей
Если переданы должности и включена настройка "ИспользоватьПолучениеПодразделенийВМОПрикрепления", то центральная база обращается к подразделениям с фильтрацией по должностям, иначе отбор по должностям действовать не будет - поиск будет происходить по всем должностям
Далее, в зависимости от настройки организации "ИспользоватьПолучениеПодразделенийВМОПрикрепления" формируется список доступных подразделений:
Если значение настройки = Нет, то список формируется в центральной базе (справочник "тмб_ОрганизацииУзлаОбменаСМИС"). Если передан список должностей, то производится сопоставление по табличной части «Должности подразделения» справочника «Организации узла обмена с МИС. Если для подразделения не указаны должности, то отбор по должности на подразделение не действует, т.е. выводится всегда. Если был передан параметр "Booking_Type", то дополнительно осуществляется подбор по меткам "Appointment, Dispensary, Vaccination" справочника "тмб_ОрганизацииУзлаОбменаСМИС"
Если значение настройки = Да и был передан список должностей, то запрос перенаправляется в МИСы прикреплений. В МИСе происходит поиск подразделений, в которых есть доступные слоты. Полученный список передается обратно в центр, где формируется общий ответ для КУ ФЭР. Отбор по должностям осуществляет по указанной должности врача (справочник "Сотрудники")
Если в служебной переменной количество доступных подразделение равно нулю, выводится ошибка NO_DATA_FOUND с сообщением "По запросу данных не найдено"
В случае если в МИС пациент не был найден, выдается исключение NO_DATA_FOUND с сообщением "По запросу данных не найдено"
Происходит отбор по должностям и возвращаются только те подразделения, в которых присутствуют свободные слоты
Если подразделений не найдено, то также возвращается исключение NO_DATA_FOUND
В случае если попытка запроса оказалась неудачной, выдается исключение с ошибкой INTERNAL_ERROR и сообщением "Внутренняя ошибка системы"
Выходные данные:
Session_ID - идентификатор сессии NO_DATA_FOUND
MO_List - список МО
Error - ошибка (NO_DATA_FOUND - по запросу данных не найдено, INTERNAL_ERROR - внутренняя ошибка системы, SESSION_TIMED_OUT - истекло время ожидания в рамках сессии)
3
GetServicePostSpecsInfo
Предоставление списка должностей медицинских специалистов, доступных пациенту в выбранном подразделении МО
ServiceOrSpecs
Этап получения списка должностей по медицинской организации
Пациент выбирает необходимое подразделение и КУ ФЭР отправляет запрос в центральную базу РМИС о доступных мед. специальностях.
Входные данные:
Session_ID - идентификатор сессии
MO_Id - идентификатор подразделения МО
В центральной базе создаются запросы для извлечения параметров операции SOAP в строковом виде по идентификаторам сессии и подразделения.
Центральная база РМИС, в зависимости от выбранного подразделения МО, перенаправляет запрос в периферийную базу.
Если узел обмена с МИС не был найден, то выдается ошибка NO_DATA_FOUND с сообщением "По запросу данных не найдено". Получаются данные сессии из РС ФедеральныеВебСервисыЗаписьНаПриемСессии по идентификатору
Если сессия не найдена, то выдается ошибка SESSION_TIMED_OUT с сообщением "Сессия не найдена"
Запрос перенаправляется в МИС, проверяется подразделение по указанному УИД, если оно не найдено возвращается ошибка по запросу данных
Если пациент или соглашение из РС ПолисыСтрахованияПациентов не были найдены, выдается ошибка NO_DATA_FOUND с сообщением "По запросу данных не найдено"
Отбираются рабочие места и специальности
Отбираются и заполняются специальности в зависимости от прикрепления, если таблица оказалась пустой, выводится соответствующая ошибка, иначе заполнение из выходных данных
В случае если попытка запроса оказалась неудачной, выдается исключение с ошибкой INTERNAL_ERROR и сообщением "Внутренняя ошибка системы"
Подключение к периферийной базе осуществляется под пользователем, под которым произведено подключение в центральной базе (WEBEMP_FWS_FER, WEBEMP_FWS_FER_OKAS, WEBEMP_FWS_FER_TM). Для успешной авторизации, необходимо чтобы в центральной базе в безопасном хранилище были записаны пароли от этих учетных записей.
Выходные данные:
Session_ID - идентификатор сессии
Service_Post_Specs - список должностей (специальностей) и медицинских услуг
Error - ошибка (NO_DATA_FOUND - по запросу данных не найдено, INTERNAL_ERROR - внутренняя ошибка системы, SESSION_TIMED_OUT - истекло время ожидания в рамках сессии)
4
GetMOResourceInfo
Предоставление сведений о подразделении МО и медицинских специалистах (или кабинетах)
В <GetScheduleInfoResponse/> выводятся не все слоты.
Раскрыть
title
Подробнее...
Есть формула, по которой определяется шаг приращения по умолчанию:
Этап получения списка медицинских ресурсов по медицинской должности
Пациент выбирает необходимую должность или медицинскую услугу и КУ ФЭР отправляет запрос списка доступных специалистов в центральную базу РМИС.
Входные данные:
Session_ID - идентификатор сессии
Service_Posts - информация о должности и услуге
MO_OID_List - перечень МО/СП МО
Start_Date_Range - дата начала периода предоставления информации о наличии/отсутствии свободных слотов
End_Date_Range - дата окончания периода предоставления информации о наличии/отсутствии свободных слотов
В центральной базе РМИС в зависимости от выбранного подразделения МО, перенаправляет запрос в периферийную базу МО. Доступные специалисты (или кабинеты) определяются по доступным медицинским рабочим местам. В центральной базе создаются запросы для извлечения параметров операции SOAP в строковом виде по идентификаторам сессии и подразделения.
При помощи идентификатора и РС ФедеральныеВебСервисыЗаписьНаПриемСессии запрашиваются данные о сессии по ее идентификатору, если сессия истекла в ответе возвращается ошибка SESSION_TIMED_OUT с сообщением "Сессия не найдена"
Если OID MO заполнено, то используя Справочники.НаправившаяОрганизация.ПолучитьНаправившуюОрганизациюПоОИД формируется узел обмена с МИС из РС сшпАдресаНаправившихОрганизаций и идентификатор МО.
Если в данных сессии отсутствует узел обмена, то выдается ошибка NO_DATA_FOUND с сообщением "По запросу данных не найдено"
Запрос перенаправляется в МИС и получает данные сессии, если сессия ранее не была создана, то функция "GetMOResourceInfo" вызвана сразу после функции "GetPatientInfo", создается сессия по переданным параметрам
Если по указанным данным не удалось найти организацию или подразделения, то возвращается исключение NO_DATA_FOUND с сообщением "По запросу данных не найдено"
Если пациент или соглашение не были найдены, то аналогично возвращается NO_DATA_FOUND
Осуществляется получение доступных рабочих мест. Функция принимает на вход: дата приема, сотрудник, подразделение, адрес подразделения, рабочее место, специальность, НМУ. Полученная таблица сортируется по врачу и рабочему месту по колонкам с удалением всех дубликатов
Если рабочие места не найдены, то возвращается исключение NO_DATA_FOUND с сообщением "Данные не найдены"
Осуществляется получение доступных слотов. Функция принимает на вход необходимые даты и возвращает слоты в общем виде по тегам рабочего места, даты, идентификатора слота, а также кабинет
Если при получении данных ресурса равно нулю, то возвращается исключение NO_DATA_FOUND, иначе заполнение из выходных данных
В случае если попытка запроса оказалась неудачной, выдается исключение с ошибкой INTERNAL_ERROR и сообщением "Внутренняя ошибка системы"
Информация
title
Примечание
При этом также возвращаются рабочие места, у которых есть слоты Первичного приема, но они все заняты другими пациентами. В таком случае выводится тег, но вместо <Available_Dates> выводится блок <No_Schedule_Reason> с причиной "NO_AVAILABLE_SLOTS". Если есть хотя бы один свободный слот, то расписание выводится стандартным способом
Выходные данные:
Session_ID - идентификатор сессии
MO_Resource_List - информация о доступных МО/СП МО и ресурса
Error - ошибка (NO_DATA_FOUND - по запросу данных не найдено, INTERNAL_ERROR - внутренняя ошибка системы, SESSION_TIMED_OUT - истекло время ожидания в рамках сессии)
Пациент выбирает специалиста (или кабинет) и КУ ФЭР отправляет запрос расписания приема выбранного специалиста (или кабинета)
Входные данные:
Session_ID - идентификатор сессии
Specialist_SNILS - СНИЛС специалиста
Room_OID - OID кабинета
Room_Id - идентифиатор кабинета в МИС
MO_OID - OID СП МО
Service_Post - информация о должности и услуге
Start_Date_Range - дата, с которой необходимо начать формировать расписание
End_Date_Range - дата, до которой необходимо формировать расписание
Start_Time_Range - время, с которого необходимо начать формировать расписание на день
End_Time_Range - время, до которого необходимо формировать расписание на день
Центральная база РМИС в зависимости от выбранного подразделения МО, перенаправляет запрос в периферийную базу МО.
По идентификатору ресурса определяется рабочее место, при отсутствии идентификатора выдается ошибка "Идентификатор не найден"
Данные сессии получаются из РС ФедеральныеВебСервисыЗаписьНаПриемСессии, в случае ее отсутствия в центральную базу возвращается ошибка выдается сообщение "Сессия не найдена".
Если рабочие места не найдены, то возвращается исключение NO_DATA_FOUND с сообщением "Данные не найдены"
Осуществляется получение доступных слотов. Функция принимает на вход необходимые даты и возвращает слоты в общем виде по тегам рабочего места, даты, идентификатора слота, а также кабинет
Если массив равен нулю, то в центральную базу аналогично возвращается соответствующее сообщение
В случае если попытка запроса оказалась неудачной, возвращается ошибка INTERNAL_ERROR и выдается сообщение "Внутренняя ошибка системы"
Выходные данные:
Session_ID - идентификатор сессии
Schedule - расписание ресурса
Error - ошибка (NO_DATA_FOUND - по запросу данных не найдено, INTERNAL_ERROR - внутренняя ошибка системы, SESSION_TIMED_OUT - истекло время ожидания в рамках сессии)
6
CreateAppointment
Создание записи на приём к медицинскому специалисту с указанием даты и времени приёма
Book
Этап записи на получение услуги
Пациент выбирает дату и время приема, КУ ФЭР отправляет запрос на запись пациента к указанному специалисту на выбранные дату и время.
Входные данные:
Session_ID - идентификатор сессии
Slot_Id - идентификатор слота
Центральная база РМИС в зависимости от выбранного подразделения МО, перенаправляет запрос в периферийную базу.
В МИС проверяется актуальность сессии, и в случае ее окончания выводит соответствующие исключения
Если дата приема меньше чем дата сеанса, то возвращается исключение APPOINT_VISIT_TIME_HAS_PASSED с сообщением "Извините, запись невозможна. Время начала приема уже прошло. Выберите другое время"
Формируется запись на прием. Функция принимает на вход пациента, организацию, рабочее место, должность, дату записи, ТекстОшибки
Если в процессе формирования возникла ошибка, то исключения INTERNAL_ERROR выдаются в зависимости от причины ошибки.
В случае, если время занято возвращается исключение APPOINT_TIME_IS_BUSY
В случае, если пациент уже записан возвращается исключение APPOINT_PATIENT_REGISTERED_SPECIALIST
В случае, если уже записан на это время в другое место возвращается исключение APPOINT_PATIENT_REGISTERED_OTHER_SPECIALIST
Если записи выполнена успешно, в ответе возвращаются соответствующие данные со статусом SUCCESS
В центральной базе создаются запросы для извлечения параметров операции SOAP в строковом виде по идентификаторам сессии, записи, слоту, и планируемому времени
РС ФедеральныеВебСервисыЗаписьНаПриемСессии формирует данные сессии, если сессия истекла, возвращается соответствующая ошибка INTERNAL_ERROR с сообщением "Сессия не найдена"
Если идентификатор записи пустой, значит запись не заполнена, выдается исключение INTERNAL_ERROR
Запись сохраняется,
Если заполнен идентификатор направления, тогда запись регистрируется по направлению
В случае если попытка запроса оказалась неудачной, возвращается ошибка INTERNAL_ERROR и выдается сообщение "Внутренняя ошибка системы"
Выходные данные:
Session_ID - идентификатор сессии
Book_Id_Mis - идентификатор записи на прием в ИС Поставщика
Status - информация о статусе записи (SUCCESS - успешное завершение операции, INTERNAL_ERROR - внутренняя ошибка системы, APPOINT_TIME_IS_BUSY - извините, запись невозможна. Время уже занято другим пациентом. Выберите другое время, APPOINT_PATIENT_REGISTERED_SPECIALIST - извините, запись невозможна. Пациент уже записан к врачу <ФИО врача> в кабинет <название кабинета> на услугу <название услуги> в этот день: <дата записи в формате дд.мм.гггг чч:мм>. Полную информацию об этой записи Вы можете посмотреть в Личном кабинете, APPOINT_PATIENT_REGISTERED_OTHER_SPECIALIST - извините, запись невозможна. Пациент уже записан на это время к другому специалисту. Выберите другое время)
ReferralAppointmentInformation
Передача сведений о регистрации записи на прием к врачу по направлению
CancelAppointment
Отмена ранее созданной Пользователем записи на прием к врачу
В центральной базе создаются запросы для извлечения параметров операции SOAP в строковом виде по идентификаторам записи
Если не заполнен идентификатор записи, то выдается ошибка INTERNAL_ERROR с сообщением "Не заполнен тег <Book_Id_Mis>."
Если значение узла обмена не заполнено, выдается ошибка INTERNAL_ERROR с сообщением "Не найдена МИС, в которой была произведена запись на прием."
Запрос передается в подразделение и если услуга уже была оказана, то отменить ее не получится, возврат ошибки с сообщением "Услуга уже оказана.", иначе с помощью ФедеральныеВебСервисыЗаписьНаПрием происходит отмена услуги, в том числе если она была по направлению
В случае если попытка запроса оказалась неудачной, возвращается ошибка INTERNAL_ERROR и выдается сообщение "Внутренняя ошибка системы"
Входные данные:
Book_Id_Mis - идентификатор записи на прием в ИС Поставщика
Canceled_Reason - причина отмены записи (CANCELED_BY_PATIENT — отмена записи Пользователем, ERROR_DATA_MIS – отмена записи в связи с некорректно переданной информацией в ответе от ИС Поставщика, RECORD_NOT_CREATED_AT_EPGU — запись не создана в ИС Пользователя (ошибка создания записи), DATA_TRANSFER_ERROR_AT_EPGU — ошибка передачи данных о записи на ЕПГУ), Error_Data_Parameters - наименование параметров при записи, в которых обнаружены ошибки ИС Поставщика
Выходные данные:
Book_Id_Mis - идентификатор записи на прием в ИС Поставщика
Status_Code - код статуса отмены (SUCCESS - успешное завершение операции, INTERNAL_ERROR - внутренняя ошибка системы, RECORD_CANNOT_CANCELED - запись на прием не может быть отменена, RECORD_NOT_FOUND - запись не найдена в ИС)
Comment - состояние статуса отмены
Блок кода
ШагПриращения_ = Цел(4 * (КоличествоНайденныхСлотовНаДату + 4) / 40);
Если ШагПриращения_ = 0
Тогда ШагПриращения_ = 1;
КонецЕсли;
Шаг приращения - это то число, которое определяет с каким шагом нужно выводить слоты.
Например: есть 10 слотов, ШагПриращения = 3. Следовательно, выводится будет каждый 3 слот.
Пример расчета:
Image Removed
Также формула может быть задана в константе: Формула шага приращения для записи на прием