Колл-центр клиники — узкое место и крупная статья расходов. Половина звонков — это запись, перенос или отмена, которые легко закрыть в чате. Бот в MAX берёт эту рутину на себя и снимает с регистратуры до 70% входящих, при этом не теряя сложные кейсы — их он передаёт оператору. Параллельно решается вторая задача: пациент остаётся в одном канале от первого касания до контрольного приёма через полгода, а маркетинг получает измеримые сценарии возврата вместо «обзвонили базу».
Ниже — практический разбор сценариев бота для частной медклиники в мессенджере MAX (российский мессенджер VK Tech, Bot API): что делать через бота, что не делать никогда, как интегрироваться с МИС и где проходит юридическая граница 152-ФЗ и 323-ФЗ.
Запись на приём
Сценарий записи — самый частый в медицинском боте. Пользователь выбирает: специалиста или направление, врача, филиал, дату, время. Слоты приходят из медицинской информационной системы (МИС): МедЭлемент, IDENT, Renovatio, Медиалог, qMS, MEDODS, 1С:Медицина, Инфоклиника. У большинства МИС есть REST API; если нет — забор через файловый обмен, прямой доступ к БД (с письменного согласия клиники) или через промежуточный слой типа N3.Health.
Шаги типичного сценария записи:
- Выбор «к врачу» / «на услугу» / «на чек-ап» / «на анализы».
- Если «на услугу» — фильтр по специальности, иначе — поиск по ФИО врача.
- Выбор филиала (если у клиники их несколько).
- Календарь со свободными слотами на 14 дней вперёд.
- Подтверждение: ФИО пациента, телефон, ИДС-предупреждение.
- Запись фиксируется в МИС, бот присылает карточку с QR-кодом для регистратуры.
Ключевая тонкость — актуальность слотов. Запись должна быть атомарной: пользователь нажал «забронировать», МИС либо подтвердила слот, либо вернула «уже занято». Без блокировки на стороне МИС пара пользователей запишется на один и тот же слот, и кто-то приедет к закрытым дверям кабинета.
# Псевдокод атомарного бронирования слота
async def book_slot(slot_id: int, patient_id: int, user_id: int):
async with mis_client.transaction() as tx:
slot = await tx.lock_slot(slot_id) # МИС-специфичный lock
if slot.status != "free":
raise SlotTaken(slot_id)
booking = await tx.create_booking(slot_id, patient_id)
await tx.commit()
await db.execute(
"INSERT INTO bookings(mis_id, user_id, slot_ts) VALUES($1,$2,$3)",
booking.id, user_id, slot.start_at,
)
return booking
Если МИС не поддерживает блокировку — компенсирующий механизм: после подтверждения у пользователя есть 30–60 секунд, в течение которых бот опрашивает слот; при коллизии присылает «слот только что заняли, выберите другой».
Подбор врача и квиз по симптомам
Пациент часто не знает, к кому идти: «болит спина — к неврологу или к ортопеду?». Бот закрывает это коротким квизом из 5–8 вопросов: локализация, давность, сопутствующие симптомы, был ли травма, есть ли температура. Результат — рекомендация специальности, не диагноз.
Жёсткое правило: бот никогда не пишет «у вас остеохондроз» или «скорее всего, это гастрит». Только «при таких симптомах обычно записываются к неврологу или травматологу-ортопеду — подобрать врача?». Формулировка важна и юридически (323-ФЗ запрещает медицинскую деятельность без лицензии и врача), и продуктово — пациент с неверным «диагнозом» от бота уйдёт лечиться народными методами и вернётся в худшем состоянии.
Триггер «красная зона»: если в ответах есть боль в груди, потеря сознания, кровотечение, температура 39+ у ребёнка, признаки инсульта (асимметрия лица, нарушение речи) — бот мгновенно выдаёт номер 103 и кнопку «Вызвать врача в клинику», не уводя в дальнейшие вопросы.
Напоминания и отмены
Напоминание о записи приходит за 24 часа и за 2 часа до приёма. Кнопки: «Подтвердить», «Перенести», «Отменить». Конверсия в подтверждение и снижение неявок (no-show) — главная экономика этого сценария: каждые 5% снижения неявок в средней клинике на 20 врачей дают 200–400 тыс. ₽ выручки в месяц.
Технически это отложенные задачи в очереди. Подходят несколько вариантов:
- cron с выборкой записей на ближайший час — просто, но коряво масштабируется.
- delayed jobs в Redis через RQ или Sidekiq — гибче.
- PostgreSQL
LISTEN/NOTIFY+ pg_cron — если уже есть Postgres. - Очередь типа NATS JetStream с TTL-сообщениями — для нагрузки 10k+ напоминаний в день.
Отмена за 24 часа должна автоматически освобождать слот в МИС, чтобы кто-то другой мог записаться. Поздняя отмена (менее чем за 2 часа) — это бизнес-правило клиники: где-то списывается с депозита, где-то просто фиксируется в карточке пациента, у кого-то блокирует онлайн-запись на N дней.
После приёма — короткая благодарность через 1–2 часа и просьба оценить визит (NPS 0–10) ещё через сутки. При оценке 9–10 — кнопка «Оставить отзыв на Яндекс.Картах / 2ГИС» с готовой ссылкой. При 0–6 — приватный канал к старшему администратору, ни в коем случае не наружу. Это базовая repu-механика, которая закрывает обе стороны: внешние отзывы растут, внутренние проблемы доходят до руководства.
Электронные результаты анализов
Самая чувствительная зона по 152-ФЗ. Результаты анализов — специальная категория ПДн «сведения о состоянии здоровья» (ст. 10 152-ФЗ), и для их обработки нужно отдельное письменное (или эквивалентное по юридической силе) согласие, а не просто галка «принимаю».
Что бот не делает никогда:
- Не отправляет PDF результатов в чат прямым сообщением.
- Не пишет в чат значения показателей и интерпретацию.
- Не пересылает результаты родственникам по их просьбе.
Что бот делает правильно:
- Уведомляет: «Результаты анализа от 03.04 готовы».
- Кнопка «Открыть» ведёт в личный кабинет с авторизацией (по СМС-коду или через Госуслуги).
- В личном кабинете — PDF с расшифровкой, выгрузка в МИС.
- Все обращения логируются (кто, когда, с какого IP) — для аудита и расследования утечек.
Скриншот чата с результатами анализов — это уже потенциальный инцидент: телефон может попасть к третьим лицам, чат может быть открыт на проекторе. Поэтому ссылка с одноразовым токеном и временем жизни 10–15 минут безопаснее, чем «вечная» кнопка в карточке.
Согласия, оферты и ИДС в электронном виде
Перед первой записью пациент подписывает в боте:
- Согласие на обработку ПДн (ст. 9 152-ФЗ).
- Отдельное согласие на обработку специальной категории ПДн — здоровье (ст. 10 152-ФЗ).
- Согласие на трансграничную передачу (если бот размещён в инфраструктуре, имеющей выход за пределы РФ — что для MAX в основном неактуально, но проверить нужно).
- ИДС — информированное добровольное согласие на медицинское вмешательство (приказ Минздрава №1051н). Электронная форма допускается с УКЭП или простой ЭП по соглашению сторон; на практике в боте — типовая оферта + явное «Принимаю».
- Согласие на получение рекламных сообщений (38-ФЗ) — отдельной галкой, не вшито в основное согласие.
Все согласия фиксируются с timestamp, версией документа и хешем подписанного текста. При спорной ситуации клиника должна предъявить: какой именно текст увидел пациент, когда и каким нажатием подтвердил. Версионирование документов — отдельная таблица consent_versions(id, type, hash, text, valid_from), и каждое подписание ссылается на конкретную версию.
Безопасность и врачебная тайна
По ст. 13 323-ФЗ сведения о факте обращения за медпомощью, о состоянии здоровья и диагнозе составляют врачебную тайну. Это значит:
- Сотрудники, имеющие доступ к данным через бота (операторы, маркетологи), подписывают NDA + дополнительное соглашение к трудовому договору о неразглашении.
- Доступ к чатам с пациентами — ролевой: маркетолог не должен видеть переписку, где упоминается диагноз; администратор регистратуры видит только запись и контакты, не результаты.
- Логи действий сотрудников хранятся минимум 6 месяцев (рекомендация — год) и регулярно проверяются.
- Передача данных «дружественному терапевту посмотреть» через личный мессенджер сотрудника — нарушение, даже если пациент не против устно.
Технически это реализуется через RBAC в админке: каждый сотрудник видит только свой срез данных, а критические действия (выгрузка списка пациентов, массовая рассылка) требуют второго подтверждения от руководителя.
Программа лояльности, абонементы, чек-апы
Бот — естественное место для лояльности. Минимальный набор:
- Накопительная скидка или кешбэк по сумме за 12 месяцев.
- Абонементы: «12 массажей за 25 000 ₽», бот ведёт счётчик использованных, напоминает о остатке, продлевает.
- Чек-апы: «Мужской 35+», «Женский 40+», «Кардио-скрининг» — пакет анализов и осмотров с фиксированной ценой и записью одной кнопкой.
- Семейные карты: один аккаунт ведёт записи на супруга и детей с отдельными согласиями.
- Дни рождения: за неделю — поздравление и предложение чек-апа со скидкой 10–15%.
Хранение программы — отдельный сервис «лояльность», который слушает события из бота и МИС (визит состоялся, оплата прошла) и обновляет балансы. Прямая связь «бот → таблица бонусов» работает на старте, но плохо масштабируется при появлении нескольких каналов (сайт, бот, регистратура).
Уведомления для пациентов с хроническими заболеваниями
Отдельный сегмент — диспансерное наблюдение. Пациент с гипертонией, диабетом, бронхиальной астмой по протоколу должен сдавать анализы и приходить на осмотр с заданной частотой. Бот напоминает:
- За 2 недели до планового визита — «пора записаться на контрольный осмотр».
- За 3 дня до сдачи анализов — подготовка (натощак, отмена препаратов с разрешения врача).
- Ежедневные/еженедельные опросники самочувствия для пациентов на наблюдении (давление, сахар, пиковая скорость выдоха) — данные пишутся в МИС, врач видит динамику.
Здесь принципиален opt-in на каждый протокол отдельно: пациент должен явно согласиться на участие в «школе диабета» или «программе наблюдения АГ», иначе это спам с медицинским уклоном, что хуже обычного спама.
Архитектура в типичном проекте
- Bot-сервер на Python (aiogram-аналог под MAX Bot API) или Go, обработка апдейтов через webhook с TLS и подписью.
- Postgres для пользователей, диалогов, событий, согласий.
- Redis для FSM-состояний, очереди напоминаний, временных токенов доступа в личный кабинет.
- Отдельный сервис-адаптер для МИС: универсальный API наружу, специфичный для каждой МИС внутри.
- Сервис «согласия и журналы» — отдельный, чтобы юридически значимые события не терялись при рефакторинге бота.
- Логи в централизованном хранилище (Loki, ELK), алерты в дежурный канал, доступ к логам с медданными — только у DPO и техдиректора.
- Шифрование данных at rest (LUKS на дисках) и in transit (TLS 1.2+ везде, включая внутренние вызовы между сервисами).
- Бэкапы зашифрованы, ключи хранятся отдельно от бэкапов, тестовое восстановление — раз в квартал.
Сравнение МИС: что важно при интеграции с ботом
| МИС | API | Webhook на изменение слотов | Типичные грабли |
|---|---|---|---|
| МедЭлемент | REST JSON, документация | Да | Лимиты на тарифе, разный формат у филиалов |
| IDENT | REST + SOAP в старых версиях | Частично | Слабая поддержка нескольких филиалов из коробки |
| Renovatio | REST | Да | Нужно отдельное согласование от вендора |
| Медиалог | SOAP/XML | Нет, поллинг | Тяжёлый XML, медленные ответы (1–3 с) |
| qMS | REST | Да | Сильная кастомизация под клинику, надо тестировать |
| 1С:Медицина | OData / HTTP-сервисы | Нет, поллинг | Кодировки, конфликты нумерации, версии конфигурации |
| Инфоклиника | REST | Частично | Переменное качество API между версиями |
Универсальное правило: никогда не ходить в МИС напрямую из обработчика бота. Между ними — адаптер с очередью и кэшем. Если МИС упала или тормозит, бот продолжает отвечать «секунду, проверяю расписание» и не ложится сам.
Чек-лист 152-ФЗ для медбота перед запуском
- Клиника зарегистрирована как оператор ПДн в РКН.
- Подана отдельная нотификация на обработку специальных категорий ПДн (здоровье).
- Подано уведомление о трансграничной передаче, если применимо.
- Серверы и БД физически в РФ (ФЗ-242).
- Согласие на ПДн и согласие на спецкатегорию — отдельными шагами, с версионированием.
- ИДС в электронной форме согласован с юристом клиники.
- Политика обработки ПДн опубликована и доступна по постоянной ссылке.
- Назначен ответственный за обработку ПДн (DPO), приказ внутри клиники.
- Модель угроз и техническое задание на СЗПДн оформлены (УЗ-2 минимум для медданных).
- Логи доступа к карточкам пациентов хранятся минимум 6 месяцев.
- Обучение сотрудников по работе с ПДн — раз в год, под подпись.
- Договор с разработчиком бота включает обязательство не передавать данные третьим лицам и порядок уведомления об инцидентах.
- Регламент реагирования на инцидент: 24 часа на уведомление РКН по 152-ФЗ.
- Бэкапы зашифрованы, доступ к ключам ограничен.
- Бот не отправляет диагнозы и значения анализов прямым сообщением.
- Сценарий «забыть меня» — удаление учётной записи и анонимизация записей в боте по запросу.
Что бот делает плохо
- Постановка диагноза — никогда. Это ответственность врача, и юридически бот не имеет права (нет медицинской лицензии у программы).
- Решение по экстренным случаям — если пользователь пишет «болит сердце», бот должен мгновенно перевести на оператора или прислать номер 103.
- Сложная логистика — пациент с пакетом из 5 анализов, 2 направлений и 3 врачей запутает любую FSM. Тут нужен оператор.
- Психологические темы — даже квиз «оцените ваше настроение» в чате с медклиникой требует особой осторожности; для такой задачи лучше отдельный продукт со специалистом-психотерапевтом.
- Дистанционное назначение лекарств — запрещено законодательно, бот не имеет права формировать рецепты.
Пример диалога: запись с переносом
Бот: Здравствуйте, Анна! У вас запись завтра в 10:30 к терапевту
Иванову И.И. (филиал на Ленина, 12). Подтверждаете?
[Подтверждаю] [Перенести] [Отменить]
Анна: [Перенести]
Бот: Когда удобнее?
[Сегодня вечером] [Завтра позже] [Другой день]
Анна: [Завтра позже]
Бот: Свободные слоты на завтра, 04 апреля:
• 14:30 • 15:00 • 17:30
[14:30] [15:00] [17:30] [Другой день]
Анна: [15:00]
Бот: Перенесли запись к терапевту Иванову И.И. на 04 апреля, 15:00,
филиал Ленина, 12. Прислать напоминание за 2 часа?
[Да] [Не нужно]
Итого
Бот для медклиники в MAX закрывает запись, напоминания, базовую квалификацию обращений, информационные сценарии, программу лояльности, диспансерное наблюдение и сбор обратной связи. Хорошая интеграция с МИС снимает нагрузку с регистратуры и снижает процент неявок на приём. Главные риски — обработка ПДн категории «здоровье» (152-ФЗ + 323-ФЗ) и попытка заменить врача в диагностике; и то, и другое решается дисциплиной в проектировании сценариев и юридическим контуром, а не технологиями. Если проект изначально строится с DPO, версионируемыми согласиями и ролевым доступом — бот становится надёжным каналом, а не источником регуляторных штрафов.
Частые вопросы
Какие задачи решает бот для медицинской клиники в MAX?
Бот закрывает запись на приём с выбором врача, специальности и филиала, напоминания за 24 и 2 часа, отмены и переносы, диспетчирование телемедицины, сбор анамнеза до приёма, уведомления о готовности результатов анализов (только ссылкой в личный кабинет), программу лояльности и абонементы, чек-апы, диспансерное наблюдение пациентов с хроническими заболеваниями, сбор обратной связи и NPS, информационные сценарии (часы работы, прайс, как добраться). Колл-центр клиники — узкое место и крупная статья расходов: половина звонков — это запись, перенос или отмена, которые легко закрыть в чате. Бот снимает с регистратуры до 70% входящих, при этом не теряя сложные кейсы — их он передаёт оператору. Не закрывает: постановку диагноза, дистанционное назначение лекарств, экстренные случаи, сложную логистику с пакетом из нескольких анализов и направлений.
Как интегрировать бот MAX с медицинской информационной системой (МИС)?
Через REST API большинства современных МИС: МедЭлемент, IDENT, Renovatio, Медиалог, qMS, MEDODS, 1С:Медицина, Инфоклиника. Если REST API нет — забор через файловый обмен, прямой доступ к БД с письменного согласия клиники или через промежуточный слой (например, N3.Health). Адаптер делается отдельным сервисом: универсальный API наружу для бота, специфичный для каждой МИС внутри. Никогда не ходить в МИС напрямую из обработчика бота — между ними должен быть адаптер с очередью и кэшем, иначе при тормозах МИС бот ложится. Ключевая тонкость — атомарность записи: пользователь нажал «забронировать», МИС либо подтвердила слот, либо вернула «уже занято». Без блокировки на стороне МИС пара пользователей запишется на один и тот же слот, и кто-то приедет к закрытым дверям кабинета.
Как настроить напоминания о приёме в боте медклиники?
Через отложенные задачи в очереди. Напоминание приходит за 24 часа и за 2 часа до приёма с кнопками «Подтвердить», «Перенести», «Отменить». Конверсия в подтверждение и снижение неявок (no-show) — главная экономика этого сценария: каждые 5% снижения неявок в средней клинике на 20 врачей дают 200–400 тыс. ₽ выручки в месяц. Технические варианты: cron с выборкой записей на ближайший час (просто, но плохо масштабируется), delayed jobs в Redis через RQ или Sidekiq (гибче), PostgreSQL LISTEN/NOTIFY плюс pg_cron (если уже есть Postgres), очередь типа NATS JetStream с TTL-сообщениями (для нагрузки 10k+ напоминаний в день). Отмена за 24 часа должна автоматически освобождать слот в МИС.
Как защищать медицинские персональные данные в боте по 152-ФЗ?
Медицинские данные — специальная категория ПДн «сведения о состоянии здоровья» по ст. 10 152-ФЗ. Главные правила: согласие на обработку специальной категории — отдельным шагом и отдельным документом от обычного согласия на ПДн, с явным «Принимаю» и фиксацией версии документа; хранение на серверах в РФ (ФЗ-242), шифрование at rest и in transit; обезличивание там, где возможно — бот не должен слать в чат полные диагнозы или значения показателей; ролевой доступ сотрудников и логи всех обращений к карточкам минимум 6 месяцев; уведомление в РКН — клиника должна быть зарегистрирована как оператор ПДн с отдельной нотификацией на спецкатегории; назначен DPO внутри клиники. Бот не передаёт диагнозы и результаты анализов прямым сообщением — только ссылку на личный кабинет с авторизацией по СМС или через Госуслуги, с одноразовым токеном на 10–15 минут. По ст. 13 323-ФЗ это ещё и врачебная тайна — сотрудники подписывают NDA и допсоглашение к трудовому.
Как работает подбор врача в боте через квиз по симптомам?
Бот задаёт 5–8 коротких вопросов: локализация боли, давность, сопутствующие симптомы, была ли травма, есть ли температура. Результат — рекомендация специальности, не диагноз. Жёсткое правило: бот никогда не пишет «у вас остеохондроз» или «скорее всего, это гастрит». Только формулировки вида «при таких симптомах обычно записываются к неврологу или травматологу-ортопеду — подобрать врача?». Это важно и юридически — 323-ФЗ запрещает медицинскую деятельность без лицензии и врача, а программа таковой не является, и продуктово — пациент с неверным «диагнозом» от бота уйдёт лечиться народными методами. Триггер «красная зона»: при упоминании боли в груди, потери сознания, кровотечения, температуры 39+ у ребёнка, признаков инсульта (асимметрия лица, нарушение речи) — бот мгновенно выдаёт номер 103 и кнопку вызова врача в клинику, не уводя в дальнейшие вопросы.
Как правильно отправлять результаты анализов через бот?
Никогда прямым сообщением в чат. Бот присылает только уведомление «Результаты анализа от 03.04 готовы» и кнопку «Открыть», которая ведёт в личный кабинет с авторизацией по СМС-коду или через Госуслуги. В личном кабинете — PDF с расшифровкой и выгрузка в МИС. Все обращения логируются (кто, когда, с какого IP) для аудита и расследования возможных утечек. Скриншот чата с результатами — это уже потенциальный инцидент: телефон может попасть к третьим лицам, чат может быть открыт на проекторе или зеркалирован на смарт-часы. Поэтому ссылка с одноразовым токеном и временем жизни 10–15 минут безопаснее, чем «вечная» кнопка в карточке. Категорически нельзя пересылать результаты родственникам по их просьбе через оператора — даже мужу/жене без отдельного нотариального согласия пациента.
Где бот не должен заменять живого врача или администратора?
Пять красных зон. Постановка диагноза — никогда, это ответственность врача, юридически бот не имеет права. Дистанционное назначение лекарств и формирование рецептов — запрещено законодательно. Решение по экстренным случаям — если пользователь пишет «болит сердце» или «потерял сознание родственник», бот мгновенно переводит на оператора и присылает номер 103. Сложная логистика — пациент с пакетом из 5 анализов, 2 направлений и 3 врачей запутает любую FSM, тут нужен оператор. Психологические темы — даже квиз «оцените ваше настроение» в чате с медклиникой требует особой осторожности; для такой задачи лучше отдельный продукт со специалистом-психотерапевтом. Также сценарии, требующие интерпретации (что значат показатели в анализах, какой врач нужен при таких симптомах) — это всегда живой человек.