Написать в Telegram@Odilient

ВЕБ-ПЛАТФОРМА

WClinic

Онлайн-запись для сети клиник в Санкт-Петербурге: промежуточный API поверх медицинской CRM, расписание нескольких клиник и напоминания через Telegram, WhatsApp и SMS.

WClinic
Клиент
Медицина и здравоохранение
Отрасль
6 месяцев + техническая поддержка
Срок
2022
Год
С чего всё началось

Задача

Сайт WClinic для пациентов работал на нестабильной устаревшей кодовой базе, и никто не описал, как её разворачивать. Сети клиник нужна была онлайн-запись во все клиники, связанная с CRM, в которой уже работали сотрудники, и напоминания о приёме в том мессенджере, которым пациент действительно пользуется. Ничего из этого нельзя было безопасно запустить, пока сам продакшен не стал воспроизводимым.

Что мы сделали

Решение

Сначала мы восстановили окружение и упаковали его в контейнеры, затем перенесли кодовую базу в Git и настроили CI. На этой основе мы сделали промежуточный API между сайтом и CRM клиники, где живёт логика записи, которой не хватало в CRM. Мы добавили панель записи в несколько клиник для пациентов и администраторов и сервис напоминаний, который сначала пробует Telegram, затем переключается на WhatsApp, а в крайнем случае отправляет SMS.

Технологии
Laravel 8Yii2Vue.js 2Nuxt.jsMySQLDockerTelegram Bot APIWhatsApp APISMS API
За кулисами

Как всё создавалось

Онлайн-запись и интеграция с 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-ботов.

Создадим вместе

Хотите что-то вроде WClinic?

Расскажите, что должен делать ваш продукт. Мы определим объём работ, распишем сроки и пришлём фиксированную цену — бесплатно и без обязательств продолжать.

Бесплатная консультация Без обязательств Быстрый ответ