Разработка портала для аптеки
Аптечный портал — специализированный ecommerce с жёсткими регуляторными ограничениями. Продажа лекарственных препаратов онлайн регулируется законодательством: в России — Постановление Правительства №697 (2020) с последующими изменениями, в Украине — Закон «О лекарственных средствах». Портал должен не просто продавать, но и соответствовать требованиям к маркировке, рецептурным препаратам и информации о составе.
Регуляторные ограничения — технические следствия
Рецептурные препараты (Rx) не могут продаваться онлайн без верификации рецепта. Это означает:
- Товары должны иметь флаг
requires_prescription: boolean - Rx-препараты показываются в каталоге, но добавление в корзину заблокировано без загруженного рецепта
- Загруженный рецепт верифицируется фармацевтом до подтверждения заказа
Маркировка: в России с 2020 года все лекарства подлежат маркировке через систему «Честный знак» (ГИС МТ). Портал должен отображать информацию о сериях, сроках годности, проверять коды DataMatrix.
Информация о препарате: закон требует отображения инструкции по применению, противопоказаний, условий хранения. Это не маркетинговый текст — это фиксированный регуляторный контент.
Каталог лекарственных препаратов
Структура данных препарата сложнее, чем у обычного товара:
drugs (
id, trade_name, inn, -- МНН (международное непатентованное наименование)
manufacturer, country_of_origin,
atc_code VARCHAR(7), -- классификатор АТХ
dosage_form, -- таблетки, капсули, раствор...
dosage, -- 500мг, 250мг/5мл
package_quantity INT, -- кол-во в упаковке
requires_prescription BOOLEAN,
storage_conditions,
shelf_life_months INT,
registration_number, -- номер регистрационного удостоверения
is_vital BOOLEAN -- ЖНВЛП (жизненно необходимые препараты)
)
drug_contraindications (drug_id, category, description)
drug_interactions (drug_id_a, drug_id_b, severity, description)
АТХ-код (Anatomical Therapeutic Chemical Classification) — международная система классификации, по которой строится иерархия каталога. Пример: C09AA01 — каптоприл (ингибиторы АПФ). Это ключевой атрибут для навигации по терапевтическим группам.
Поиск по МНН и торговым наименованиям
Пользователь может искать препарат по торговому названию («Нурофен»), МНН («ибупрофен»), или действующему веществу. Каталог должен связывать все три и показывать аналоги.
drug_synonyms (drug_id, synonym, type) -- type: trade_name | inn | popular_name
Поиск по аналогам: SELECT * FROM drugs WHERE inn = (SELECT inn FROM drugs WHERE id = :id) AND id != :id ORDER BY price. Это стандартная функция — показать более дешёвые аналоги с тем же действующим веществом.
Elasticsearch-индекс с полями trade_name, inn, synonyms[], atc_code с буст-коэффициентами. Морфология русского языка через словарный анализатор — чтобы «ибупрофена» находил «ибупрофен».
Наличие в аптеках
Типичная модель: сеть аптек, у каждой свои остатки. Пользователь вводит адрес или геолокацию, портал показывает ближайшие аптеки с наличием товара и его ценой.
pharmacy_locations (id, network_id, address, lat, lng, phone, schedule JSONB)
pharmacy_stock (location_id, drug_id, quantity, price, updated_at)
Геопоиск: PostGIS расширение для PostgreSQL, функция ST_DWithin. Или более простой вариант — Haversine formula при небольшом числе аптек (до 1000).
Остатки обновляются из аптечной учётной системы (1С:Аптека, АСНА, Катрен-Стайл) через API или файловый импорт. Частота: каждые 15–60 минут. Показывать «наличие» с меткой времени обновления — это честно по отношению к пользователю.
Онлайн-бронирование vs. доставка
Два сценария с разными юридическими последствиями:
Бронирование в аптеке (click-and-collect): пользователь резервирует товар, оплачивает в аптеке. Юридически проще — это резервирование, а не дистанционная продажа лекарств. Технически: reservation с TTL (обычно 24–48 часов), декрементирование резерва в остатках.
Доставка (только безрецептурные препараты, БАД, медизделия): требует лицензии на дистанционную торговлю. Технически — стандартный ecommerce-чекаут с жёсткой фильтрацией по requires_prescription = false.
Интеграция с «Честным знаком»
Для российского рынка с 2020 года обязательна маркировка. Каждая упаковка имеет QR/DataMatrix код с GTIN + серийным номером. Интеграция с ГИС МТ (API Честного знака):
- Верификация кода при приёмке товара:
GET /api/v2/true-api/codes?code=010460606... - Информация о препарате: производитель, дата выпуска, срок годности, статус в системе
- Выбытие кода при продаже:
POST /api/v2/true-api/orders— уведомление о реализации
Это backend-только интеграция, пользователь видит только «товар проверен» или информацию о серии.
Аптечный кабинет для провизора
Персонал аптеки работает в отдельном интерфейсе:
- Верификация рецептов: список заказов с прикреплёнными рецептами, статус проверки (принят/отклонён/требует уточнения)
- Управление остатками: ввод актуальных данных, если автоматическая синхронизация недоступна
- Бронирования: подтверждение готовности, отмена при отсутствии товара
- Лог выдачи: история выданных товаров по рецептам (требование регулятора)
Личный кабинет пациента
- История заказов и покупок — важно для хронических пациентов (регулярные препараты)
- Рецепты — хранение загруженных рецептов с датами выписки и сроком действия
- Напоминания — уведомление об окончании курса, о необходимости повторить заказ
- Избранное — быстрый доступ к регулярно покупаемым препаратам
Напоминания реализуются через push-уведомления (PWA) или email. Логика: если пользователь покупал препарат с курсом 30 дней — через 25 дней уведомление.
SEO и контентная стратегия
Аптечные порталы хорошо ранжируются по информационным запросам: «ибупрофен инструкция», «аналоги нурофена», «что принять при температуре». Каждая страница препарата — потенциальный SEO-трафик.
- Страница препарата: полная инструкция по применению (официальный текст)
- Страница МНН: все торговые наименования и дженерики
- Страница АТХ-группы: препараты терапевтической группы
Structured data: Drug Schema.org (экспериментальный тип, но Google поддерживает), MedicalCode для АТХ.
Сроки
- Базовый портал (каталог, геопоиск аптек, бронирование, безрецептурные препараты): 6–10 недель
- Полноценный портал (рецептурные с верификацией, интеграция с 1С:Аптека, «Честный знак», доставка, кабинет провизора): 14–20 недель
- Интеграция с каждой дополнительной учётной системой: 2–4 недели
Регуляторная составляющая занимает 30–40% времени проекта. Перед началом разработки необходима юридическая консультация по актуальным требованиям в стране работы сервиса.







