Онлайн-запись и интеграция с CRM для сети клиник
WClinic — клиника доказательной медицины в Санкт-Петербурге, а у её детской клиники есть собственный сайт wdeti.pro. Пациенты записываются на приём онлайн, а сотрудники клиники работают в CRM. Наша задача была связать одно с другим: сделать систему онлайн-записи в несколько клиник, которая работает через CRM, и напоминания, которые доходят до пациентов в Telegram, WhatsApp или по SMS.
Проект шёл шесть месяцев активной разработки, после чего перешёл в постоянную поддержку. Мы вели его командой из пяти человек: тимлид и четыре full-stack-разработчика.
Ключевые возможности
- Онлайн-запись в несколько клиник: записи во все клиники сети проходят через одну систему, а не через отдельную настройку для каждой клиники.
- Интеграционный слой с CRM: между публичным сайтом и CRM клиники стоит промежуточный API, поэтому сайт никогда не зависит напрямую от внутреннего устройства CRM.
- Разрешение конфликтов между филиалами: правила записи, которых не было в CRM, живут в промежуточном слое — в том числе разрешение конфликтов расписания между филиалами.
- Панель записи: единый интерфейс, в котором пациенты и администраторы клиник управляют записями во все клиники.
- Напоминания о приёме по нескольким каналам: сначала Telegram, затем WhatsApp, затем SMS, поэтому напоминание дойдёт, даже если пациент не пользуется каким-то мессенджером.
- Работа над SEO и доступностью: улучшения страниц для пациентов, на которые люди попадают из поиска.
- Воспроизводимые деплои: контейнеризированное окружение и CI на основе Git вместо релизов вручную.
Сначала — стабилизировать устаревший сайт клиники
Когда мы подключились, существующий сайт был нестабильным и фактически не разворачивался, потому что никто не мог точно сказать, как собран продакшен. Строить поверх этого функции записи значило бы только добавлять риск, поэтому начали со стабилизации.
Мы восстановили рабочее окружение и упаковали его в Docker — так у каждого разработчика и на каждом сервере оказалась одна и та же среда выполнения. Кодовая база переехала в Git с CI-пайплайном, и релизы перестали зависеть от ручных шагов. К новым функциям мы приступили только тогда, когда релиз стало можно воспроизвести.
Архитектура и технологический стек
Промежуточный API поверх CRM клиники
CRM клиники остаётся главным источником данных о расписании и пациентах, но она не покрывала всю бизнес-логику, которая нужна онлайн-записи. Если бы мы вшили эту логику в CRM или спрятали её внутри сайта, менять и то и другое стало бы сложнее. Поэтому мы вынесли её в отдельный промежуточный API. Сайт и панель обращаются к нему, а он применяет правила записи и обменивается данными с CRM. Такая граница держит все особенности CRM в одной точке интеграции.
Бэкенд и фронтенд
Платформа разделена на сервисы на Laravel 8 и Yii2 с MySQL. Интерфейсы для пациентов и администраторов сделаны на Vue.js 2 и Nuxt.js. Всё работает в Docker-контейнерах, поэтому деплоится ровно то, что прошло CI.
Доставка напоминаний с запасными каналами
Пропущенный приём оставляет пустым слот, которым мог бы воспользоваться другой пациент. Напоминания — это способ, которым клиника борется с неявками, но только если они доходят до пациента. Наша логика напоминаний работает как цепочка с запасными вариантами: сначала Telegram, если через Telegram доставить не удалось — WhatsApp, а в крайнем случае — SMS. Клинике не нужно выбирать один канал для всех пациентов.
Наша роль
Мы были тимлидом в команде из пяти человек на первом, шестимесячном этапе модернизации. В это вошли стабилизация и контейнеризация окружения, настройка Git и CI, проектирование промежуточного API поверх CRM, запуск панели записи и логики напоминаний. После этого работа продолжилась в формате постоянной поддержки. Сайт клиники — wclinic.pro.
Смежные работы
Ещё один продукт для онлайн-записи — Bronjoy, наш маркетплейс онлайн-записи для Узбекистана. Другой проект, где мы были тимлидом, — Moydom, платформа умного города. Такие системы мы делаем в рамках услуги разработки веб-приложений, а запись и напоминания через мессенджеры — в рамках разработки Telegram-ботов.



