Разработка сайта стоматологии на 1С-Битрикс
Стоматологическая клиника — это не общая клиника с приставкой «зубная». Специфика существенная: пациент приходит не на один приём, а на план лечения из нескольких визитов и процедур, стоимость которого хочет понять заранее. Галерея работ до/после — основной аргумент при выборе клиники. Запись привязана не просто к врачу, а к врачу конкретного направления, и расписание зависит от оснащения кабинета.
На 1С-Битрикс стоматологический сайт строится из инфоблоков услуг, врачей, работ и кастомного калькулятора плана лечения. Калькулятор — самая нетривиальная часть, на ней остановимся подробно.
Калькулятор стоимости плана лечения
Пациент приходит на сайт стоматологии с конкретной проблемой: болит зуб, нужна коронка, хочет выровнять прикус. Но итоговая стоимость складывается из цепочки процедур: консультация → диагностика (КЛКТ-снимок) → лечение → протезирование. Калькулятор должен собрать эту цепочку и показать диапазон стоимости.
Структура данных
Основа — инфоблок Services с иерархией разделов по направлениям:
- Терапия (лечение кариеса, пульпита, периодонтита)
- Ортодонтия (брекеты, элайнеры)
- Имплантация (установка импланта, формирователь десны, коронка на имплант)
- Хирургия (удаление, костная пластика, синус-лифтинг)
- Ортопедия (виниры, коронки, мосты, съёмные протезы)
- Детская стоматология
- Профгигиена и отбеливание
У каждой услуги — свойства:
| Свойство | Тип | Назначение |
|---|---|---|
PRICE_FROM |
Число | Цена от (в рублях) |
PRICE_TO |
Число | Цена до |
DURATION_MINUTES |
Число | Длительность процедуры |
REQUIRED_EQUIPMENT |
Привязка к HL | Необходимое оборудование кабинета |
LINKED_SERVICES |
Множественная привязка E |
Сопутствующие процедуры |
IS_REQUIRED_STEP |
Логический | Обязательный этап в плане |
SORT_IN_PLAN |
Число | Порядок в плане лечения |
TOOTH_ZONE |
Список | Зона: передние / жевательные / все |
Ключевое свойство — LINKED_SERVICES. Оно определяет, какие процедуры включаются в план автоматически. Например, при выборе «Установка импланта Nobel Biocare» автоматически добавляются: КЛКТ-снимок, консультация имплантолога, анестезия, формирователь десны, временная коронка. Каждая из этих связей имеет флаг IS_REQUIRED_STEP — обязательна она или опциональна (пациент может отказаться от временной коронки).
Логика калькулятора
Калькулятор — это JavaScript-компонент (React или Vue, встраиваемый в шаблон Битрикс), который получает данные из API.
Пошаговый сценарий работы:
- Выбор проблемы — пациент выбирает из списка: «Болит зуб», «Нужна коронка», «Хочу импланты», «Выравнивание зубов», «Профгигиена». Каждая проблема маппится на набор базовых услуг
- Уточнение — для имплантации: сколько зубов, какая зона (передние/жевательные), есть ли костная ткань (от этого зависит необходимость синус-лифтинга). Для ортодонтии: металлические/керамические брекеты или элайнеры
- Формирование плана — система собирает цепочку процедур, подтягивает связанные услуги, рассчитывает суммарный диапазон цен
- Результат — таблица с этапами лечения, ценой каждого этапа, общей суммой «от» и «до», примерным количеством визитов
API-эндпоинт реализуется как кастомный компонент Битрикс, возвращающий JSON. Запрос: GET /api/calculator/?problem=implant&count=2&zone=chewing. Ответ содержит массив этапов с ценами.
Дополнительные возможности калькулятора
- Сравнение вариантов. Для протезирования: металлокерамика vs диоксид циркония vs E-max. Три колонки с разными ценами и характеристиками
-
Сохранение плана. Авторизованный пользователь сохраняет план в личном кабинете. Неавторизованный — получает ссылку на email (план сохраняется в Highload-блоке
SavedPlansс уникальным хэшем) - Отправка плана на консультацию. Кнопка «Обсудить с врачом» — данные уходят в CRM Битрикс как лид с детализацией плана
Принципиальный момент: калькулятор показывает диапазон, а не точную цену. Точная стоимость определяется только после осмотра врачом. Это и юридически корректно, и снижает количество претензий.
Каталог услуг по направлениям
Каталог услуг стоматологии отличается от общемедицинского тем, что пациент ищет не по названию процедуры (он не знает, что ему нужна «резекция верхушки корня»), а по проблеме. Поэтому навигация строится двойная:
- По направлениям — разделы инфоблока: терапия, хирургия, ортопедия, ортодонтия, детская, эстетическая
-
По проблемам — отдельный инфоблок
Problemsс привязкой к услугам: «Болит зуб» → лечение кариеса, лечение пульпита, удаление; «Отсутствует зуб» → имплантация, мост, съёмный протез
Для SEO каждое направление — отдельная посадочная страница с уникальным текстом, написанным под контролем профильного врача. Компонент catalog.section выводит список услуг направления, catalog.element — детальную страницу услуги.
Галерея работ до/после
Это один из главных конверсионных элементов стоматологического сайта. Пациент хочет видеть реальные результаты, а не стоковые фото.
Инфоблок CaseGallery со свойствами:
-
PHOTO_BEFORE— фото до (типF, файл) -
PHOTO_AFTER— фото после -
DOCTOR_ID— привязка к врачу (типE) -
SERVICE_ID— привязка к услуге (множественнаяE) -
DESCRIPTION— описание клинического случая -
TREATMENT_DURATION— длительность лечения -
PATIENT_AGE— возрастная группа (без ПДн) -
TAGS— теги для фильтрации: виниры, имплантация, брекеты
Компонент отображения — кастомный, с интерактивным слайдером «до/после» (бегунок, который пользователь перетаскивает). На фронтенде — JS-библиотека типа image-compare-viewer.
Фильтрация галереи: по врачу, по направлению, по типу работ. Реализуется через AJAX-подгрузку с параметрами фильтра в CIBlockElement::GetList().
Согласие пациента на публикацию фотографий — обязательный юридический момент. В инфоблоке можно хранить флаг наличия согласия, но сам документ — в защищённом хранилище, недоступном с сайта.
Онлайн-запись к врачу
Запись в стоматологии сложнее, чем в общей клинике, по двум причинам:
- Привязка к кабинету. Не каждый кабинет оснащён для имплантации или ортодонтии. Расписание врача зависит от доступности кабинета с нужным оборудованием
- Длительность приёма варьируется. Консультация — 30 минут, установка импланта — 1.5 часа, фиксация брекетов — 2 часа. Слоты расписания должны учитывать длительность выбранной услуги
Highload-блок расписания дополняется полями UF_CABINET_ID (привязка к кабинету) и UF_SLOT_DURATION (длительность в минутах). При выборе услуги «Установка импланта» (120 минут) система показывает только те временные окна, где доступен подходящий кабинет на нужную длительность.
Интеграция с МИС стоматологии (IDENT, StomPRO, 1С:Стоматология) работает по аналогичному принципу: синхронизация расписания через API, создание записи в МИС при подтверждении на сайте.
Отзывы с модерацией
Инфоблок Reviews:
-
PATIENT_NAME— имя (без фамилии, для конфиденциальности) -
REVIEW_TEXT— текст отзыва -
RATING— оценка от 1 до 5 -
DOCTOR_ID— привязка к врачу -
SERVICE_IDS— привязка к услугам -
SOURCE— откуда отзыв: сайт, Яндекс, Google, ПроДокторов -
EXTERNAL_LINK— ссылка на оригинал (для агрегированных отзывов)
Все отзывы, оставленные через форму на сайте, создаются с ACTIVE = N. Администратор проверяет и активирует. Для Schema.org — разметка Review с itemReviewed типа Physician или MedicalOrganization.
Агрегация отзывов с внешних площадок — через cron-задачу, которая парсит API Яндекс.Карт или Google Places и добавляет новые отзывы в инфоблок с пометкой источника.
Сроки реализации
| Масштаб | Состав | Срок |
|---|---|---|
| Одиночная клиника | Каталог услуг, 5-10 врачей, галерея, форма записи без интеграции | 6-8 недель |
| Сеть из 2-3 филиалов | Калькулятор лечения, интеграция с МИС, личный кабинет пациента | 12-18 недель |
| Крупная сеть | Мультисайтовость Битрикс, единая база врачей и расписания, маршрутизация записи по филиалам | 20-26 недель |







