Бот для клиники в MAX берёт на себя три самые рутинные задачи медицинского центра: запись к врачу, напоминания о визитах и выдачу результатов анализов. Пациент записывается за полминуты вместо ожидания на линии, доходимость до приёма растёт, а регистратура перестаёт тонуть в однотипных звонках. Ниже — сценарии, из каких модулей собрать такого бота и как связать его с медицинской информационной системой (МИС).

Какие проблемы клиники закрывает бот

Три боли знакомы любому руководителю клиники — и каждую бот снимает.

Перегруженная регистратура

Администратор за день принимает десятки звонков, и каждый — это несколько минут: уточнить специалиста, найти свободный слот, записать данные пациента. В часы пик люди ждут на линии и бросают трубку, а клиника теряет часть первичных обращений просто из-за недозвонов. Бот в MAX принимает запись круглосуточно и без выходных. Пациент выбирает врача, дату и время кнопками — без набора текста, — и запись сразу попадает в расписание. Администратор в это время занимается людьми в клинике, а не телефоном.

Пропуски визитов (no-show)

Без напоминаний заметная доля пациентов попросту забывает о записи. Каждый пустой слот — это упущенная выручка, а за месяц по клинике набегает внушительная сумма. Бот шлёт напоминания в MAX — за сутки и за час до визита — и просит подтвердить приём одной кнопкой. Не может прийти — переносит запись прямо в чате, а освободившийся слот бот предлагает пациентам из листа ожидания. Массовые уведомления (например, о профосмотре или вакцинации) удобно рассылать по базе через рассылки MAX.

Ожидание результатов анализов

«Мои анализы готовы?» — ещё один поток звонков. Администратор ищет данные в МИС, сверяет фамилию, диктует статус, и в лаборатории с сотнями анализов в день это десятки лишних разговоров. Бот сам уведомляет пациента, как только результат появился в МИС, и отправляет PDF прямо в чат (MAX поддерживает крупные файлы, вплоть до снимков КТ и МРТ). Доступ к документу закрыт PIN-кодом — это требование к медицинским данным по 152-ФЗ. Если бота ещё нет, начните с базы — как создать бота в MAX и настройка вебхуков MAX Bot API. Сам бот и его backend удобно держать на хостинге для ботов Bothost: процесс работает постоянно, webhook и планировщик напоминаний всегда онлайн.

Что умеет бот для клиники

Это не автоответчик, а цифровой администратор, работающий 24/7 и связанный с внутренними системами клиники:
  • Онлайн-запись — выбор специалиста, даты и времени кнопками; данные синхронизируются с МИС.
  • Умные напоминания — за 24 часа и за 1 час до визита, с подтверждением и переносом.
  • Результаты анализов — PDF в чат, уведомление о готовности, доступ по PIN.
  • FAQ-бот — адрес, часы работы, подготовка к анализам, цены — без участия администратора.
  • Обратная связь — автоопрос после визита; негатив уходит напрямую руководству.
  • Лист ожидания — если нужного слота нет, бот поставит в очередь и сообщит об освободившемся времени.
  • Повторные визиты — напоминание о профилактике через 3, 6 или 12 месяцев.
  • Рассылки — новые услуги, акции, график в праздники.
Всё это собирается на MAX Bot API: inline-кнопки для навигации, отправка уведомлений с флагом оповещения и передача файлов через вложения.

Сценарий записи к врачу

Запись — ключевой сценарий, и пациент проходит его за 30–40 секунд вместо нескольких минут по телефону. Шаг 1. Выбор специалиста. По кнопке «Записаться к врачу» бот показывает направления (терапевт, стоматолог, офтальмолог, гинеколог). Если врачей много, они группируются по направлениям; после выбора — список конкретных врачей с ближайшим свободным слотом.
def build_speciality_keyboard(specialities):
    """Кнопки выбора направления, по два в ряд."""
    rows, row = [], []
    for spec in specialities:
        row.append({"type": "callback", "text": spec["name"],
                    "payload": f"spec_{spec['id']}"})
        if len(row) == 2:
            rows.append(row)
            row = []
    if row:
        rows.append(row)
    rows.append([{"type": "callback", "text": "Отмена", "payload": "cancel"}])
    return rows

requests.post(
    f"{API_URL}/messages",
    headers=HEADERS,
    json={
        "chat_id": chat_id,
        "text": "Выберите направление:",
        "attachments": [{"type": "inline_keyboard",
                         "payload": {"buttons": build_speciality_keyboard(specialities)}}],
    },
)
Шаг 2. Дата и время. Бот запрашивает свободные слоты из МИС и показывает ближайшие несколько дней с доступным временем. Кнопки формируются динамически — занятые слоты не выводятся. Шаг 3. Подтверждение. Бот показывает итоговую карточку (врач, дата, время, филиал, стоимость) с кнопками «Подтвердить» и «Изменить». После подтверждения запись уходит в МИС, а пациент получает: «Вы записаны к терапевту Ивановой И.А. на 28 апреля в 10:00. Адрес: ул. Ленина, 15. Напомню за сутки». Весь сценарий — это несколько сообщений бота и пара нажатий пациента, без участия администратора.

Напоминания: три точки контакта

Серия из нескольких уведомлений заметно снижает процент пропусков. За 24 часа. «Завтра в 10:00 приём у терапевта Ивановой И.А. Адрес: ул. Ленина, 15. Возьмите паспорт и полис». Кнопки: «Подтвердить», «Перенести», «Отменить». При переносе бот показывает свободные слоты, при отмене — освобождает время для листа ожидания. За 1 час. Короткое напоминание с номером кабинета. Переносить уже поздно, поэтому только «Я еду» и «Не смогу прийти». После визита. Через пару часов бот просит оценить приём по звёздам. Низкая оценка — бот запрашивает комментарий и сразу уведомляет руководство; высокая — предлагает оставить отзыв на картах.
def send_reminder(chat_id, appointment):
    """Напоминание о визите за 24 часа."""
    text = (
        f"Завтра в {appointment['time']} — приём "
        f"у {appointment['doctor_title']} {appointment['doctor_name']}.\n\n"
        f"Адрес: {appointment['address']}, каб. {appointment['room']}\n"
        f"Возьмите с собой: {appointment['documents']}"
    )
    keyboard = [
        [{"type": "callback", "text": "Подтвердить",
          "payload": f"confirm_{appointment['id']}"},
         {"type": "callback", "text": "Перенести",
          "payload": f"reschedule_{appointment['id']}"}],
        [{"type": "callback", "text": "Отменить запись",
          "payload": f"cancel_{appointment['id']}"}],
    ]
    requests.post(
        f"{API_URL}/messages",
        headers=HEADERS,
        json={
            "chat_id": chat_id,
            "text": text,
            "attachments": [{"type": "inline_keyboard",
                             "payload": {"buttons": keyboard}}],
        },
    )

Выдача результатов анализов

Функция, которую пациенты ценят больше всего: вместо звонка или визита — PDF прямо в мессенджер. Как это работает:
  • лаборант загружает результат в МИС и отмечает его готовым;
  • интеграционный модуль ловит новый результат (webhook или опрос МИС);
  • бот пишет пациенту: «Ваши результаты готовы»;
  • пациент нажимает «Получить результат»;
  • бот запрашивает PIN (заданный при регистрации);
  • после проверки отправляет PDF файлом;
  • при необходимости предлагает записаться к врачу на консультацию.
PIN обязателен по 152-ФЗ: медданные — специальная категория персональных данных. Важный принцип — бот не хранит результаты: он берёт файл из МИС в момент отправки и очищает кэш после доставки.
def send_analysis_result(chat_id, file_url, patient_name, analysis_type):
    """Отправка результата анализа PDF-файлом."""
    text = (
        f"Результаты готовы: {analysis_type}\n"
        f"Пациент: {patient_name}\n\n"
        f"Документ конфиденциальный, не пересылайте третьим лицам."
    )
    requests.post(
        f"{API_URL}/messages",
        headers=HEADERS,
        json={
            "chat_id": chat_id,
            "text": text,
            "attachments": [{"type": "file", "payload": {"url": file_url}}],
            "notify": True,
        },
    )

Интеграция с МИС

Бот без связи с МИС — записная книжка, из которой администратор всё равно переносит данные вручную. Настоящая интеграция синхронизирует всё автоматически: расписание врачей, записи, статусы анализов, историю визитов. С какими системами обычно работают:
  • 1С:Медицина — через REST API или COM-объекты.
  • МЕДИАЛОГ — через HL7 FHIR или собственный API.
  • Инфоклиника — синхронизация расписания и записей по API.
  • MedWork — двусторонний обмен: запись из бота, статусы из МИС.
  • Прочие — коннектор по документации API вашей системы, а если API нет — через БД или файловый обмен.
Связь идёт через промежуточный слой — middleware. Напрямую к МИС бот не обращается: это небезопасно и ненадёжно. Middleware принимает запросы от бота, проверяет данные, ходит в API МИС и возвращает результат. Такая схема позволяет сменить МИС, не переписывая бота. При необходимости так же подключается CRM (например, amoCRM) — новый пациент из MAX сразу попадает в воронку.

Как бот влияет на клинику

На что смотреть после внедрения:
  • Доходимость растёт — серия напоминаний уменьшает no-show в несколько раз.
  • Нагрузка на ресепшен падает: запись, FAQ и статусы анализов уходят боту.
  • Время записи сокращается до полуминуты вместо нескольких минут по телефону.
  • Повторные визиты возвращаются за счёт напоминаний о профилактике.
  • Лояльность пациентов повышается — удобно записываться и получать результаты.
За счёт снижения пропусков и роста повторных визитов такой бот окупается быстро.

Архитектура: из чего собран бот

Это не один скрипт, а несколько модулей, каждый со своей задачей.
                Пациент в MAX
       (нажимает кнопки, пишет сообщения)
                     │  MAX Bot API (webhook)
                     ▼
              Webhook-сервер
       (приём обновлений, маршрутизация)
        │        │        │        │
        ▼        ▼        ▼        ▼
     Запись   Напоми-   Анализы   FAQ +
    к врачу   нания               обратная
     (FSM)    (cron)    (hook)     связь
        │        │        │        │
        ▼        ▼        ▼        ▼
        Middleware (валидация, логика)
                     │  REST API / HL7 FHIR
                     ▼
        МИС (1С:Медицина, МЕДИАЛОГ и др.)
     расписание, карты пациентов, результаты
Роли модулей:
  • Webhook-сервер — принимает обновления MAX Bot API и маршрутизирует их по типу события.
  • Запись (FSM) — конечный автомат, ведёт пациента по шагам: специалист → дата → время → подтверждение.
  • Напоминания (cron) — планировщик: проверяет ближайшие записи и шлёт уведомления за 24 ч, за 1 ч и после визита.
  • Анализы (hook) — слушает события МИС о готовых результатах и оповещает пациентов.
  • FAQ — отвечает на типовые вопросы без администратора.
  • Middleware — единая точка интеграции с МИС, изолирует бота от конкретной системы.
Весь этот backend удобно разместить на Bothost: постоянный аптайм, HTTPS для webhook, планировщик для напоминаний и хранение токенов в переменных окружения.

Частые вопросы

Как соблюдается 152-ФЗ? Медданные — специальная категория персональных данных. Защита строится в несколько уровней: PIN для доступа к результатам, шифрование при передаче (HTTPS/TLS), хранение самих данных только в МИС на серверах клиники (бот их не хранит) и логирование доступа для аудита. Бот работает как транспорт: получил файл из МИС, отдал пациенту, очистил кэш. Интегрируется ли бот с нашей МИС? Если у системы есть API — да. Работают с 1С:Медицина, МЕДИАЛОГ, Инфоклиника, MedWork и др. Нет API — коннектор через базу данных или файловый обмен; перед стартом делается технический аудит. Можно ли подключить несколько филиалов? Да. Пациент выбирает филиал на первом шаге и дальше видит расписание нужной клиники, а администраторы каждого филиала получают уведомления только о своих записях. Где разместить бота? На сервере с постоянным аптаймом и HTTPS. Проще всего — на Bothost, где бот, планировщик напоминаний и middleware работают рядом и всегда на связи.

Коротко

Бот для клиники в MAX разгружает регистратуру, снижает пропуски визитов и избавляет пациентов от звонков за результатами анализов. Начните с базового сценария — онлайн-запись и напоминания, — затем добавьте выдачу анализов, обратную связь и интеграцию с МИС. А чтобы бот и планировщик работали стабильно и круглосуточно, разместите их на Bothost.

187 просмотров
0 лайков
0 комментариев