Legan Studio
Все статьи
~ 16 мин чтения

Бот для медклиники в MAX: запись, напоминания, телемедицина

Сценарии бота для медицинской клиники в MAX: онлайн-запись, напоминания, телемедицина, работа с ПДн и интеграция с МИС клиники.

  • MAX
  • медицина
  • сценарии

Колл-центр клиники — узкое место и крупная статья расходов. Половина звонков — это запись, перенос или отмена, которые легко закрыть в чате. Бот в MAX берёт эту рутину на себя и снимает с регистратуры до 70% входящих, при этом не теряя сложные кейсы — их он передаёт оператору. Параллельно решается вторая задача: пациент остаётся в одном канале от первого касания до контрольного приёма через полгода, а маркетинг получает измеримые сценарии возврата вместо «обзвонили базу».

Ниже — практический разбор сценариев бота для частной медклиники в мессенджере MAX (российский мессенджер VK Tech, Bot API): что делать через бота, что не делать никогда, как интегрироваться с МИС и где проходит юридическая граница 152-ФЗ и 323-ФЗ.

Запись на приём

Сценарий записи — самый частый в медицинском боте. Пользователь выбирает: специалиста или направление, врача, филиал, дату, время. Слоты приходят из медицинской информационной системы (МИС): МедЭлемент, IDENT, Renovatio, Медиалог, qMS, MEDODS, 1С:Медицина, Инфоклиника. У большинства МИС есть REST API; если нет — забор через файловый обмен, прямой доступ к БД (с письменного согласия клиники) или через промежуточный слой типа N3.Health.

Шаги типичного сценария записи:

  1. Выбор «к врачу» / «на услугу» / «на чек-ап» / «на анализы».
  2. Если «на услугу» — фильтр по специальности, иначе — поиск по ФИО врача.
  3. Выбор филиала (если у клиники их несколько).
  4. Календарь со свободными слотами на 14 дней вперёд.
  5. Подтверждение: ФИО пациента, телефон, ИДС-предупреждение.
  6. Запись фиксируется в МИС, бот присылает карточку с 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 результатов в чат прямым сообщением.
  • Не пишет в чат значения показателей и интерпретацию.
  • Не пересылает результаты родственникам по их просьбе.

Что бот делает правильно:

  1. Уведомляет: «Результаты анализа от 03.04 готовы».
  2. Кнопка «Открыть» ведёт в личный кабинет с авторизацией (по СМС-коду или через Госуслуги).
  3. В личном кабинете — PDF с расшифровкой, выгрузка в МИС.
  4. Все обращения логируются (кто, когда, с какого 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+ везде, включая внутренние вызовы между сервисами).
  • Бэкапы зашифрованы, ключи хранятся отдельно от бэкапов, тестовое восстановление — раз в квартал.

Сравнение МИС: что важно при интеграции с ботом

МИСAPIWebhook на изменение слотовТипичные грабли
МедЭлементREST JSON, документацияДаЛимиты на тарифе, разный формат у филиалов
IDENTREST + SOAP в старых версияхЧастичноСлабая поддержка нескольких филиалов из коробки
RenovatioRESTДаНужно отдельное согласование от вендора
МедиалогSOAP/XMLНет, поллингТяжёлый XML, медленные ответы (1–3 с)
qMSRESTДаСильная кастомизация под клинику, надо тестировать
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, тут нужен оператор. Психологические темы — даже квиз «оцените ваше настроение» в чате с медклиникой требует особой осторожности; для такой задачи лучше отдельный продукт со специалистом-психотерапевтом. Также сценарии, требующие интерпретации (что значат показатели в анализах, какой врач нужен при таких симптомах) — это всегда живой человек.