Creating a Pharmaceutical Site on 1C-Bitrix with Accounting and MDLP Integration
Our 1C-Bitrix pharmacy website development ensures accurate drug catalog and seamless MDLP integration.
A large pharmacy chain with 15,000 SKUs and 200 pharmacies discovered: their website displayed stock data that was three days old. Users made reservations, but the pharmacy had no product. The integration with 1C via FTP files broke once a month, and analogue search was absent. We redesigned the architecture—now stock updates every 15 minutes (10 times faster than previous FTP-only approach), and symptom search handles 10,000 queries per day. Development starts from $25,000 and depends on the number of pharmacies and integration complexity. Our certified 1C-Bitrix developers with 10+ years of experience ensure reliable integration and data integrity is guaranteed through automated checks.
The investment for a full-featured pharmacy site begins at $25,000, with potential annual savings of $10,000.
For pharmacy website development, we focus on 1C-Bitrix pharmacy functionality including drug catalog and online booking.
What is Special About Pharmacy Site Development on 1C-Bitrix?
Pharmacy e-commerce is regulated by Federal Law No. 61-FZ "On Circulation of Medicines" (61-FZ). Besides licensing, you need MDLP integration, prescription restrictions, accurate stock, and analogue matching. Bitrix with infoblocks and Highload-blocks can handle these, but proper configuration is critical. We structure the architecture so that 47% of traffic coming through symptom search is processed efficiently.
Drug Catalog
The catalog structure is based on an infoblock with pharmaceutical properties:
| Property | Type | Purpose |
|---|---|---|
ACTIVE_SUBSTANCE |
String | INN (International Nonproprietary Name) |
TRADE_NAME |
Element name | Trade name |
DOSAGE_FORM |
List | Tablets, capsules, solution, ointment, suppositories... |
DOSAGE |
String | 500 mg, 10 mg/ml |
PACKAGE_QTY |
Number | Quantity per package |
PRESCRIPTION |
List | Prescription / Over-the-counter |
ATC_CODE |
String | ATC classification code (e.g., J01CA04) |
MANUFACTURER |
Link to HL | Manufacturer |
COUNTRY |
Link to HL | Country of origin |
REG_NUMBER |
String | Registration certificate number |
STORAGE_TEMP |
List | Up to 25°C / 2–8°C / No restrictions |
MDLP_GTIN |
String | GTIN for MDLP labeling |
ANALOGS |
Link to elements (multiple) | Analogues by INN |
For prescription drugs, the "Buy" button is replaced with "Book" with a note: dispensed only upon prescription. This is checked via the PRESCRIPTION property in the catalog.element template. Categorization is dual: by ATC groups and by purpose tags (for headache, for cold).
Implementing Symptom Search and ICD-10 Integration
The ICD-10 reference is loaded into the hl_mkb10 Highload-block:
-
UF_CODE— diagnosis code (J06.9, K21.0) -
UF_NAME— diagnosis name -
UF_PARENT_CODE— parent group code -
UF_SYNONYMS— common names (runny nose, heartburn, migraine)
Search autocomplete: user types "sore throat" — system finds J02 (acute pharyngitis) and J03 (acute tonsillitis), then suggests related drugs. The "diagnosis → drug" link is stored in an intermediate HL-block hl_mkb_drugs (fields: UF_MKB_CODE, UF_PRODUCT_ID). The search works via an AJAX controller, results are cached client-side (sessionStorage). On the backend, a composite index on UF_SYNONYMS + UF_NAME ensures fast filtering.
How to Check Drug Availability and Find Analogues?
This is the most demanded feature. Users commonly ask whether a drug is available at a nearby pharmacy and, if not, what analogues are in stock. Our pharmacy website development approach addresses this via real-time stock checks.
Availability Check Architecture:
Stock data comes from the pharmacy network's accounting system. Options:
- 1C:Pharmacy Chain Management — export via REST over HTTP
- Farmatika / M-Apteka Plus — exchange via CSV/XML on FTP
- Custom system — REST API or SOAP
Data lands in the hl_pharmacy_stock Highload-block:
| Field | Type | Purpose |
|---|---|---|
UF_PRODUCT_ID |
Number | Product ID in the Bitrix catalog |
UF_PHARMACY_ID |
Number | Pharmacy ID (from the "Pharmacies" infoblock) |
UF_QUANTITY |
Number | Stock (units/packages) |
UF_PRICE |
Number | Price at specific pharmacy |
UF_UPDATED_AT |
Date/time | Time of last update |
Synchronization runs via the cron agent CPharmacyStockAgent every 15 minutes. Full export nightly, incremental during the day. With 200 pharmacies and 15,000 SKUs, the table hits 3,000,000 rows—an index on (UF_PRODUCT_ID, UF_PHARMACY_ID) is mandatory. Saving on 1C integration depends on scope; typical cost savings from efficient data exchange can exceed $10,000 annually.
Frontend Display:
On the detail page—a block "Availability in Pharmacies." An AJAX request returns a list of pharmacies with stock, sorted by distance from the user (Geolocation API + Haversine formula). Each row: name, address, stock (exact quantity or "In Stock" / "Low" / "Out of Stock"), and a "Book" button. We don't show exact quantity—it goes stale within minutes. Three ranges: green (>5), yellow (1–5), gray (0). The threshold is configurable.
Offering Analogues When Drug is Out of Stock
Algorithm:
- Take the INN of the current drug (
ACTIVE_SUBSTANCE). - Select all items with the same INN and same dosage—full analogues (generics).
- If too few matches, expand to the same ATC 4th-level group (pharmacological analogues).
- Filter results by availability in pharmacies—only those in stock.
The ANALOGS property is filled automatically by a cron script based on INN. Manual editing is available for exceptions.
Online Booking
Booking is not a sale; no payment is collected on the site. Process:
- User selects a drug and pharmacy, clicks "Book."
- A request is created in Bitrix CRM (lead or deal) with data: drug, pharmacy, phone.
- Simultaneously, a reservation request is sent to the accounting system.
- User receives SMS/push with booking number and expiry (24–48 hours).
- On expiry, automatic cancellation and return to free stock.
For prescription drugs, booking is available but a prescription is mandatory upon pickup.
MDLP Integration
Labeling via "Honest SIGN" is mandatory. On the site: each drug contains GTIN (MDLP_GTIN), on the detail page a link "Check Authenticity" pointing to the government service. When booking, the serial number of the package is recorded if the pharmacy provides it via API.
Schema.org for Pharmaceuticals
Microdata schema.org/Drug on detail pages:
-
nonProprietaryName— INN -
activeIngredient— active substance -
dosageForm— dosage form -
drugClass— pharmacological group -
manufacturer— manufacturer -
availableStrength— dosage -
prescriptionStatus—OTCorPrescriptionOnly -
isAvailableGenerically— availability of generics
This improves indexing and rich snippets.
Project Phases
| Phase | Work | Duration | Cost Estimate |
|---|---|---|---|
| Analysis and Design | Nomenclature mapping, integration contracts, UX prototypes | 2–3 weeks | $3,000–$5,000 |
| Catalog and Search | Infoblocks, HL-blocks, ICD-10 search, filters | 3–4 weeks | $5,000–$8,000 |
| Availability and Booking | Accounting system integration, geolocation, booking | 4–5 weeks | $8,000–$12,000 |
| Analogues and Schema.org | Analogue algorithm, microdata, SEO | 2 weeks | $3,000–$5,000 |
| Testing | Data exchange verification, load testing on stock HL-block | 1–2 weeks | $2,000–$3,000 |
| Launch | Catalog population, training pharmacy editors | 1 week | $1,000–$2,000 |
What's Included in the Result
You get a ready-to-operate site with architecture documentation, administration access, editor training, and initial technical support. We hand over the source code and integration instructions. To discuss your project and get a preliminary assessment, contact us. Our pharmacy website development services start at $25,000, with potential savings of $10,000+ annually through optimized 1C-Bitrix pharmacy integration.







