Розробка сайту стоматології на 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 тижнів |







