Розробка фармацевтичного сайту на 1С-Бітрікс з інтеграцією обліку та МДЛП
Велика аптечна мережа з 15 000 SKU та 200 аптек виявила: на сайті відображалися залишки триденної давності. Користувачі оформлювали бронь, а в аптеці товару не було. Інтеграція з 1С через FTP-файли ламалася раз на місяць, а пошук аналогів був відсутній. Ми перепроектували архітектуру — тепер залишки оновлюються кожні 15 хвилин, а пошук за симптомами обробляє 10 000 запитів на день. Ми гарантуємо якість та дотримання термінів. Наша команда має 12 років досвіду в розробці аптечних сайтів.
Чому розробка сайту аптеки на 1С-Бітрікс потребує особливого підходу?
Аптечний e-commerce зарегульований Федеральним законом №61-ФЗ «Про обіг лікарських засобів». Крім ліцензування, потрібна інтеграція з МДЛП, врахування рецептурних обмежень, точні залишки та підбір аналогів. Бітрікс з інфоблоками та Highload-блоками вирішує ці завдання, але потребує правильного налаштування. Ми закладаємо архітектуру так, щоб справлятися з 47% трафіку, що приходить через пошук за симптомами. Наше рішення в 3 рази швидше за стандартне завдяки кешуванню та оптимізованим HL-блокам. Ми спеціалізуємося саме на розробці сайту аптеки на 1С-Бітрікс.
Каталог лікарських препаратів
Структура каталогу базується на інфоблоці з властивостями для фармацевтики:
| Властивість | Тип | Призначення |
|---|---|---|
ACTIVE_SUBSTANCE |
Рядок | МНН (міжнародна непатентована назва) |
TRADE_NAME |
Назва елемента | Торгова назва |
DOSAGE_FORM |
Список | Таблетки, капсули, розчин, мазь, супозиторії... |
DOSAGE |
Рядок | 500 мг, 10 мг/мл |
PACKAGE_QTY |
Число | Кількість в упаковці |
PRESCRIPTION |
Список | Рецептурний / Безрецептурний |
ATC_CODE |
Рядок | Код АТХ-класифікації (J01CA04 тощо) |
MANUFACTURER |
Прив'язка до HL | Виробник |
COUNTRY |
Прив'язка до HL | Країна виробництва |
REG_NUMBER |
Рядок | Номер реєстраційного посвідчення |
STORAGE_TEMP |
Список | До 25°C / 2–8°C / Без обмежень |
MDLP_GTIN |
Рядок | GTIN для маркування МДЛП |
ANALOGS |
Прив'язка до елементів (множ.) | Аналоги за МНН |
Для рецептурних препаратів кнопка «Купити» замінюється на «Забронювати» з поясненням: відпуск тільки при пред'явленні рецепту. Це перевіряє властивість PRESCRIPTION у шаблоні catalog.element. Категоризація подвійна: за АТХ-групами та за тегами призначення (від головного болю, від застуди).
Як реалізувати пошук за симптомами та інтеграцію з МКБ-10?
Довідник МКБ-10 завантажується в Highload-блок hl_mkb10:
-
UF_CODE— код діагнозу (J06.9, K21.0) -
UF_NAME— назва діагнозу -
UF_PARENT_CODE— код батьківської групи -
UF_SYNONYMS— побутові назви (нежить, печія, мігрень)
Пошуковий рядок з автопідказкою: користувач вводить «болить горло» — система знаходить J02 (гострий фарингіт) та J03 (гострий тонзиліт), підставляє пов'язані препарати. Зв'язок «діагноз → препарат» зберігається в проміжному HL-блоці hl_mkb_drugs (поля: UF_MKB_CODE, UF_PRODUCT_ID). Пошук працює через AJAX-контролер, результати кешуються на стороні клієнта (sessionStorage). На бекенді — складений індекс по UF_SYNONYMS + UF_NAME для швидкої фільтрації.
Перевірка наявності по аптеках та пошук аналогів
Це найзатребуваніша функція. Користувач хоче: чи є потрібний препарат в аптеці поруч, і якщо ні — які аналоги доступні.
Архітектура перевірки наявності: Залишки надходять з облікової системи аптечної мережі. Варіанти:
- 1С:Управління аптечною мережею — вивантаження через REST-сервіс по HTTP
- Фарматіка / М-Аптека плюс — обмін через CSV/XML на FTP
- Кастомна система — REST API або SOAP
Дані потрапляють до Highload-блоку hl_pharmacy_stock:
| Поле | Тип | Призначення |
|---|---|---|
UF_PRODUCT_ID |
Число | ID товару в каталозі Бітрікс |
UF_PHARMACY_ID |
Число | ID аптеки (з інфоблоку «Аптеки») |
UF_QUANTITY |
Число | Залишок (штуки/упаковки) |
UF_PRICE |
Число | Ціна в конкретній аптеці |
UF_UPDATED_AT |
Дата/час | Час останнього оновлення |
Синхронізація запускається cron-агентом CPharmacyStockAgent кожні 15 хвилин. Повне вивантаження — вночі, вдень — інкрементальне. При 200 аптеках та 15 000 SKU таблиця містить 3 000 000 записів — потрібен індекс по (UF_PRODUCT_ID, UF_PHARMACY_ID).
Виведення на фронті:
На детальній сторінці — блок «Наявність в аптеках». AJAX-запит повертає список аптек із залишками, відсортованих за віддаленістю від користувача (Geolocation API + формула Haversine). Кожен рядок: назва, адреса, залишок (точна кількість або «В наявності» / «Мало» / «Немає»), кнопка «Забронювати». Точну кількість не показуємо — застаріває за хвилини. Три градації: зелений (>5), жовтий (1–5), сірий (0). Поріг налаштовується.
Пошук аналогів:
Коли препарату немає — користувачеві пропонуються аналоги?
Алгоритм:
- Береться МНН поточного препарату (
ACTIVE_SUBSTANCE). - Вибираються всі товари з тим же МНН і тією ж дозуванням — повні аналоги (дженерики).
- Якщо мало збігів — розширюється до тієї ж АТХ-групи 4-го рівня (фармакологічні аналоги).
- Результат фільтрується за наявністю в аптеках — тільки ті, що в наявності.
Властивість ANALOGS заповнюється автоматично cron-скриптом на основі МНН. Ручне редагування — для винятків.
Онлайн-бронювання
Бронювання — не продаж. Оплата на сайті не стягується. Процес:
- Користувач обирає препарат та аптеку, натискає «Забронювати».
- Створюється заявка в CRM Бітрікс (лід або угода) з даними: препарат, аптека, телефон.
- Паралельно — запит в облікову систему на резервування.
- Користувач отримує SMS/push з номером броні та терміном (24–48 годин).
- При закінченні — автоматичне скасування, повернення у вільний залишок.
Для рецептурних препаратів бронювання доступне, але при отриманні обов'язковий рецепт.
Інтеграція з МДЛП
Маркування через «Чесний ЗНАК» обов'язкове. На сайті: кожен препарат містить GTIN (MDLP_GTIN), на детальній сторінці — посилання «Перевірити справжність» на checkmark.crpt.ru. При бронюванні фіксується серійний номер упаковки (якщо аптека передає через API).
Schema.org для фармацевтики
Мікророзмітка schema.org/Drug на детальних сторінках:
-
nonProprietaryName— МНН -
activeIngredient— діюча речовина -
dosageForm— форма випуску -
drugClass— фармакологічна група -
manufacturer— виробник -
availableStrength— дозування -
prescriptionStatus—OTCабоPrescriptionOnly -
isAvailableGenerically— наявність дженериків
Це покращує індексацію та розширені снипети.
Етапи проекту
| Етап | Роботи | Термін |
|---|---|---|
| Аналітика та проектування | Маппінг номенклатури, інтеграційні контракти, UX-прототипи | 2–3 тижні |
| Каталог та пошук | Інфоблоки, HL-блоки, пошук за МКБ-10, фільтри | 3–4 тижні |
| Наявність та бронювання | Інтеграція з обліковою системою, геолокація, бронювання | 4–5 тижнів |
| Аналоги та Schema.org | Алгоритм підбору аналогів, мікророзмітка, SEO | 2 тижні |
| Тестування | Перевірка обміну даними, навантаження на HL-блок залишків | 1–2 тижні |
| Запуск | Наповнення каталогу, навчання фармацевтів-редакторів | 1 тиждень |
Що входить в результат
Ви отримуєте готовий до роботи сайт із документацією по архітектурі, доступ до адміністрування, навчання редакторів та техпідтримку на старті. Ми передаємо вихідні коди та інструкції по інтеграції. Отримайте консультацію щодо вашого проекту — зв'яжіться з нами для попередньої оцінки. Замовте розробку сайту аптеки вже сьогодні!







