В этой статье мы рассмотрим раздел «Уведомления о событиях» в системе, для чего он нужен и как с его помощью вы можете интегрировать клинику с внешними сервисами.
Когда в МИС происходит важное событие (например, создание визита или регистрация пациента), эта информация может автоматически отправляться во внешний сервис в виде webhook-запроса. Это позволяет:
- Сократить ручной труд. Например, данные о новом пациенте или визите не нужно вручную переносить в CRM
- Поддерживать синхронность между системами. Все связанные платформы получают актуальные данные в режиме реального времени
- Автоматизировать внутренние процессы. Например, по событию «готовность лабораторных анализов» можно запускать автоматическую отправку уведомлений пациенту или врачу
- Повысить скорость обработки данных. Вся цепочка действий запускается мгновенно, без задержек
Основные элементы
Кнопка «Новое уведомление»
Позволяет добавить новое уведомление. При нажатии откроется форма:
- Событие — тип события (например, «Создание визита»)
- Адрес обращения (куда отправлять уведомление) — внешний URL, куда будут отправляться данные при наступлении события
- Название уведомления
Все блоки обязательны для заполнения.
Таблица уведомлений
Отображает список всех активных уведомлений. Таблица содержит следующие столбцы:
- # — порядковый номер
- Название — название уведомления
- Событие — событие в системе, при котором будет срабатывать уведомление
- Адрес обращения — URL, на который будет отправлен webhook
- Добавлено — дата добавления уведомления
- 🗑️ — кнопка удаления уведомления
Когда в системе происходит событие, вызывается метод, который:
- получает тип события и его параметры (например, id пациента)
- проверяет, есть ли подходящее уведомление в настройках
- формирует данные и ставит задачу в очередь на отправку webhook-запроса
В разных частях системы добавлены вызовы этого метода, например:
- Создание пациента — в Patient::afterSave() (с проверкой, что это не обновление)
- Создание визита — в Appointment::createAppointment() (в конце метода)
- Отмена визита — в Appointment::setStatus() (в блоке обработки отмены)
Какие данные отправляются
В webhook передаются следующие поля:
{ "event": "create_patient", "date": "2025-06-23T12:00:00+03:00", "data": { /* структура аналогична ответу метода API */ } }
- event — код события
- date — точное время события
- data — результат вызова соответствующего API-метода
— для пациента — getPatient
— для визита — getAppointments
Таким образом, вы получаете полную и актуальную информацию в структурированном виде.