Системные уведомления
Справочник открывается по кнопке Справочники на панели инструментов стартового меню программы, пункт меню: Системные справочники > Системные уведомления.
Доступ к справочнику регламентируется правом доступа: Системные уведомления.
Механизм системных уведомлений используется для создания пользовательских проверок вводимых данных. Например:
- проверка на наличие какого-либо документа по пациенту (договора, согласия на мед. вмешательство);
- проверка на заполнение какого-либо реквизита в карточке, записи на прием, приеме и т.д.;
- проверка на допустимое количество каких-либо единиц в системе, например, плановых или внеплановых записях на прием.
Эту функциональность рекомендуется использовать в тех случаях, когда бизнес-процесс является специфичным, а доработки системы по его автоматизации нецелесообразны.

Окно состоит из панели инструментов, панели фильтров, таблицы уведомлений, блока вкладок в правой части формы: Типы уведомлений, Параметры уведомлений и Параметры действий, блока вкладок Запрос, Описание и Запрос для выполнения в фоновом процессе в нижней части окна и панели подсказки.
Кнопки панели инструментов:
-
Обновить – обновляет таблицу системных уведомлений.
-
Добавить – варианты выбора:
- Добавить системное уведомление – добавляет новое уведомление в таблицу системных уведомлений. Возможно множественное добавление уведомлений.
- Добавить системную блокировку – добавляет новую системную блокировку.
-
Удалить – удаляет выбранное уведомление из таблицы.
-
Сохранить – сохраняет внесенные изменения.
-
Отменить – отменяет внесенные изменения.
-
Справочник системных уведомлений – кнопка отображается, если право доступа Системные уведомления в положении "Редактирование". По кнопке открывается Справочник типов уведомлений. Это системный справочник, который содержит список всех типов уведомлений.
-
Выход.
Элементы панели фильтров:
- Филиал, где добавлено событие – по кнопке "..." открывается диалоговое окно для выбора филиала.
- Тип уведомления – по кнопке "..." открывается диалоговое окно со списком имеющихся в системе типов уведомлений.
- Наименование – поле для ввода значения вручную. Поиск по колонке Наименование.
- Запрос – поле для ввода значения вручную. Поиск по вкладке Запрос.
Колонки таблицы системных уведомлений:
| Реквизит | Описание |
|---|---|
| Наименование | Наименование уведомления. |
| Используется | Флаг, активирующий уведомление. |
| Выполнение запроса в write транзакции | Флаг должен быть установлен, если в процессе работы запроса системного уведомления необходимо записывать данные в БД (например, регистрировать событие в системный журнал). |
| Выполненять в ЦБД | Флаг должен быть установлен, если запрос системного уведомления должен выполняться по ЦБД. В случае, если в справочнике филиалов нет БД с признаком "ЦБД", при выполнении запроса выводится сообщение об ошибке. В случае, если отключена синхронизация с ЦБД, при выполнении запроса выводится сообщение об ошибке. Если нет доступа к ЦБД, выводится сообщение об ошибке и текст, заданный в справочнике. |
| Текст ошибки | Поле для ввода значения вручную. |
| Управление действием в событии | Регламентирует работу со Стандартными действиями, заданными в одноименной колонке. Варианты выбора: ; "Управление действием в событии" – при срабатывании системного уведомления выводится диалоговое окно с сообщением о необходимости выполнения действия. Если в колонке Возможность отмены при предупреждении установлен флаг и системное уведомление вернуло checkcode=1, пользователь может как выбрать исполнение действия "Да", так и отказаться от выполнения действия. В зависимости от выбора пользователя система работает следующим образом: ; "Да" – выполняется стандартное действие, затем продолжается основное;; "Нет" – стандартное действие пропускается, продолжается основное. Если в запросе использован параметр actres, переданный в составе checktext, в зависимости от значения параметра система работает следующим образом: ; actres=0 (по умолчанию) – основное действие продолжается без сохранения сущности, использованной в стандартном действии (карточки регистрации, свободного протокола).; actres=1 – основное действие не продолжается, если не было сохранения сущности, использованной в стандартном действии (карточки регистрации, свободного протокола). ; "Всегда предупреждать" – сначала выполняется действие, привязанное к уведомлению, после чего продолжается основное действие. После закрытия сущности, с которой связано уведомление, действие продолжается. Если в колонке Возможность отмены при предупреждении установлен флаг и системное уведомление вернуло checkcode=1, пользователь может как выбрать исполнение действия "Да", так и отказаться от выполнения действия. В зависимости от выбора пользователя система работает следующим образом: ; "Да" – выполняется стандартное действие, затем продолжается основное;; "Нет" – стандартное действие не выполняется, основное действие блокируется. Если в запросе использован параметр actres, переданный в составе checktext, в зависимости от значения параметра система работает следующим образом: ; actres=0 (по умолчанию) – основное действие продолжается без сохранения сущности, использованной в стандартном действии (карточки регистрации, свободного протокола).; actres=1 – основное действие не продолжается, если не было сохранения сущности, использованной в стандартном действии (карточки регистрации, свободного протокола). ; "Всегда блокировать". Обратите внимание: ; Системное уведомление простое и связанное с действием работают одинаково.; Параметры для стандартного действия всегда передаются в checktext. Пример запроса для системного уведомления с привязанным действием "Свободный протокол для пациента из картотеки" mractiontype.actid = 23 select 'Для исполнения прививки необходимо заполнить протокол «Осмотр врача перед вакцинацией». Перейти к заполнению протокола?##placeid=910000010##pol=1##PCODE=60042351##actres=1' CHECKTEXT, 1 CHECKCODE from dual |
| Филиал | Филиал создания уведомления. Колонка недоступна для редактирования. |
| Возможность отмены при предупреждении | Если при выполнении пользовательского системного уведомления появится ошибка с кодом (1) ("проверка не прошла") и флаг установлен, выводится сообщение с двумя альтернативами: "продолжить работу" или "отменить действие". |
| Выполнить запрос в фоновом процессе | Регламентирует возможность выполнения запросов в фоне. Варианты выбора: ; "Не выполнять" – уведомление не работает в фоновом режиме.; "С уведомлением перед выполнением" – выполнение фонового запроса выполняется отдельным консольным приложением CheckExecute.exe. Перед запуском приложения выводится информационное сообщение.; "Без уведомления перед выполнением" – выполнение фонового запроса выполняется отдельным консольным приложением CheckExecute.exe. |
| Стандартное действие | По кнопке "..." открывается диалоговое окно со списком предусмотренных в системе стандартных действий. Для работы с системными уведомлениями доступны следующие действия: ; "Карта вызова ПНД" – открывает карточку вызова ПНД. ; "Пациент" – открывает карточку регистрации пациента.; "Создать направление" – открывает форму создания направления.; "Свободные протокол для пациента из картотеки" – создает свободный протокол ИБ. Действие будет выполнено автоматически при срабатывании системного уведомления. Если срабатывают несколько системных уведомлений, подразумевающие несколько действий, эти действия будут выполнены последовательно. |
| Выполнять обособленно | Флаг, при установке флага уведомление выполняется обособленно. |
| Порядок сортировки | Колонка для ввода числового значения. Уведомления обрабатываются по-очереди, согласно указанной сортировке. Уведомления с незаполненной колонкой проверяются последними. |
| Вид системного уведомления | Варианты выбора: ; "Системное уведомление";; "Системная блокировка". |
Вкладка "Типы уведомлений"
На вкладке Типы уведомлений настраиваются контрольные точки: точки программы, в которых должен выполняться запрос.

Вкладка состоит из панели инструментов, таблицы типов уведомлений и панели комментария.
Кнопки панели инструментов:
- Добавить – добавляет новый тип уведомления из Справочник типов уведомлений. Справочник типов уведомлений является системным, редактировать его невозможно.
- Удалить – удаляет выбранное уведомление из таблицы.
Колонки таблицы типов уведомлений:
- Тип уведомления – наименование типа уведомления.
- Уведомление обрабатывается в write-транзакции – при установке флага уведомление обрабатывается в write-транзакции.
Вкладка "Параметры уведомлений"
На вкладке содержатся параметры, используемые для выбранных типов уведомлений. Параметры добавляются автоматически при выборе типа уведомления.
Всегда передаются следующие параметры:
- CHECKTYPE и ADATE – передаются всегда, но могут принимать разные значения в зависимости от контрольной точки. CHECKTYPE может использоваться для определения места возникновения события на уровне запроса уведомления (если запрос универсальный и используется в разных точках).
- PASSWORD – передается пароль к базе данных. Потребуется для подключения к БД других филиалов
- CDBSTATUS, LASTCONNECT – передает статус подключения к ЦБД. CDBSTATUS может принимать следующие значения:
- -1 – не филиальная структура или текущий филиал является ЦБД;
- -2 – отключена синхронизация с ЦБД;
- 0 – связи с ЦБД нет;
- 1 – успешное подключение к ЦБД.
Для CDBSTATUS со статусом -2, 0 и 1 в LASTCONNECT передается дата и время последнего успешного подключения к ЦБД (для CDBSTATUS со значением -1 в LASTCONNECT передается значение NULL).
Вкладка "Параметры действий"
На вкладке отображаются все параметры действий, связанные с выбранным стандартным действием.
Вкладка "Запрос"
Вкладка Запрос содержит текст SQL запроса, который должен вернуть результат проверки.

Запрос должен быть построен таким образом чтобы возвращать два поля:
CheckText. Текстовое сообщение о результате проверки.CheckCode. Код результата проверки:
-
Проверка прошла успешно. Сообщения не выдаются
-
Проверка не прошла, выдается только предупреждение из
CHECKTEXT -
Проверка не прошла, сообщение
CHECKTEXTи блокировка следующего действия.
В случае если для контрольной точки настроено несколько запросов, то результатом считается MAX(CheckCode).
Если Max(CheckCode) =1, сообщение будет сформировано из CheckText ВСЕХ запросов, которые выполнялись в контрольной точке.
Возможна настройка уведомления с пользовательским текстом и вариантами выбора. Такие уведомления возможны при наличии в check_text следующих управляющих конструкций:
Button1=– заменять лейбл кнопки "Ок" на значение, указанное в Button1.Button2=– заменять лейбл кнопки "Отмена" на значение, указанное в Button2.FormName=– заменять заголовок формы на значение, указанное в FormName.
Все управляющие конструкции отделяются друг от друга последовательностью ##, например, check_text может выглядеть так:
Документ нельзя будет изменить никогда!##Button1=Продолжить##Button2=ОТМЕНА##FormName=Заголовок формы диалога
textПример вида запроса
Контрольная точка: "Открытие карточки"
select case
when coalesce(c.nationalid, 0) > 0 then 0 else 1 end checkcode,
case when coalesce(c.nationalid,0) > 0 then ''
else ' Укажите гражданство ' end checktext
from clients c where c.pcode = :pcode
sqlВкладка "Описание"
Вкладка Описание предназначена для ручного ввода описания работы конкретного уведомления.
Вкладка "Запрос для выполнения в фоновом процессе"
Вкладка предназначена для ручного ввода запроса. Подсказка для написания запроса расположена в нижней части вкладки на желтом поле.
Системная блокировка
Механизм системных блокировок используется для блокировки конкретных действий при соблюдении определенных условий.
При выполнении конкретных действий пользователем, система выполняет следующие действия:
- Существует ли в справочнике системное уведомление, для которого в колонке Вид системного уведомления установлено значение "Системная блокировка".
- Для этого типа системного уведомления добавлено ли на вкладку Типы уведомлений действие, выполняемое пользователем.
- Если проверки пройдены успешно, выполняется запрос на вкладке Запрос.
- Если запрос вернул checkcode = 2, то действие пользователя выполняется в режиме "Только чтение": все поля формы будут заблокированы от редактирования, все кнопки будут не активны.
Типы уведомлений, для которых доступна системная блокировка:
| Тип уведомления | Поведение системы при системной блокировке |
|---|---|
| Открытие лечения (приема) | Если запрос системного уведомления вернул checkcode = 2, то прием будет открываться в режиме "Только чтение" (все поля заблокирована от редактирования, все кнопки не активны). |