Veterinary clinic website on 1C-Bitrix: build a flexible booking system
A veterinary clinic is a medical business where the patient won't tell you the symptoms, and the owner is anxious. The website solves three tasks: quick appointment booking, access to treatment history, and expert positioning through content. When developing a veterinary clinic website on 1C-Bitrix, we encountered projects where simple booking broke down due to multiple specializations and animal types. The standard Bitrix booking module doesn't cover such scenarios—we have to design a three-dimensional matrix of "doctor × specialization × animal type".
Our approach reduces slot selection time by half compared to off-the-shelf solutions, and the no-show rate drops by 20%. Automation of booking cuts administrative costs by up to 30%—as confirmed by 90% of clients after implementation.
Service catalog and doctor profiles
The "Services" infoblock is organized with two-level sections: first level—animal type (dogs, cats, rodents, birds, reptiles, exotics); second level—service category (therapy, surgery, vaccination, dentistry, ophthalmology, dermatology, laboratory, ultrasound/X-ray).
Element properties:
-
PRICE_FROM—price "from" for listing -
DURATION_MINUTES—appointment duration for slot calculation -
REQUIRES_SPECIALIST—link to doctor specialization (HL reference) -
ANIMAL_TYPES—multiple link to animal types -
PREPARATION—preparation for procedure -
CONTRAINDICATIONS—contraindications
Detail page of a service includes description, indications, preparation, list of doctors, and a "Book now" button with pre-filled service.
Doctor profiles are the most conversion-driver block. Owners choose a specific veterinarian, especially narrow specialists (ophthalmologist, rodentologist, herpetologist).
| Property | Type | Example |
|---|---|---|
SPECIALIZATIONS |
Link to HL (multiple) | Therapist, surgeon, ophthalmologist |
ANIMAL_TYPES |
Link to HL (multiple) | Dogs, cats, exotics |
EXPERIENCE_YEARS |
Number | 12 |
EDUCATION |
Text | Moscow State Academy of Veterinary Medicine and Biotechnology named after Scriabin |
CERTIFICATES |
File (multiple) | PDF/JPG of certificates |
PHOTO |
File | Photo |
SCHEDULE_USER_ID |
Number | User ID in Bitrix for schedule binding |
CONSULTATION_TYPES |
List (multiple) | In-person, online, home visit |
On the doctor's detail page—a "Book with this doctor" button with pre-filled binding.
How to implement a flexible booking system for different animal species?
Standard Bitrix booking modules are designed for a simple scheme: select service → select time → book. In veterinary medicine it's more complex: not every surgeon operates on reptiles, not every therapist works with birds. The system must account for the intersection of three parameters: doctor, specialization, animal type.
Highload block for schedule (hl_vet_schedule):
| Field | Type | Purpose |
|---|---|---|
UF_DOCTOR_ID |
Number | Doctor ID |
UF_DATE |
Date | Work day |
UF_TIME_FROM |
String | Shift start (09:00) |
UF_TIME_TO |
String | Shift end (18:00) |
UF_SLOT_DURATION |
Number | Slot duration (30) |
UF_CLINIC_BRANCH |
Number | Clinic branch |
Highload block for appointments (hl_vet_appointments):
| Field | Type | Purpose |
|---|---|---|
UF_DOCTOR_ID |
Number | Doctor |
UF_DATE |
Date | Appointment date |
UF_TIME |
String | Start time |
UF_DURATION |
Number | Duration |
UF_SERVICE_ID |
Number | Service |
UF_ANIMAL_TYPE |
Number | Animal type |
UF_PET_NAME |
String | Pet name |
UF_PET_BREED |
String | Breed |
UF_PET_AGE |
String | Age |
UF_PET_WEIGHT |
Number | Weight (kg) |
UF_OWNER_USER_ID |
Number | Owner ID |
UF_OWNER_PHONE |
String | Phone (for unregistered) |
UF_STATUS |
List | scheduled/confirmed/completed/cancelled/no_show |
UF_COMMENT |
Text | Comment |
Slot generation algorithm: step by step
- User selects animal type (e.g., "parrot").
- System filters doctors: keeps those with "birds" in
ANIMAL_TYPES. - Service category selection (e.g., "therapy")—further filter by specialization "therapist" or "rodentologist-ornithologist".
- For remaining doctors, schedule is loaded from
hl_vet_schedulefor the selected date. - Occupied slots from
hl_vet_appointmentsare subtracted from the schedule. - Service duration is considered: if appointment is 60 min and only 30-min slot is free, it is not shown.
- Result: list of doctors with available slots. User selects and fills pet data.
Frontend—a step-by-step wizard with four steps: animal type → service → doctor and date → confirmation. Each step uses AJAX to controller, updates without page reload.
Confirmation and reminders: SMS via integration with gateway (e.g., SMS.ru). Reminder 24 and 2 hours before. Agent CVetReminderAgent processes queue every 10 minutes.
Emergency booking: separate block "Urgent help"—24/7 phone, call button, online chat. For mobile—fixed block at bottom.
Why is an owner personal account important?
An authorized user sees a list of pets, each an element of Highload block hl_pets:
-
UF_OWNER_ID,UF_NAME,UF_SPECIES,UF_BREED,UF_BIRTH_DATE,UF_WEIGHT,UF_PHOTO,UF_CHIP_NUMBER,UF_STERILIZED.
For each pet—visit history, vaccinations, lab results. Data comes from veterinary MIS (Vetmanager, Enote, Veterinary Practice Management) via REST API or CSV. Highload block hl_pet_medical:
| Field | Type | Purpose |
|---|---|---|
UF_PET_ID |
Number | Pet |
UF_DATE |
Date | Record date |
UF_TYPE |
List | vaccination/analysis/visit/surgery |
UF_DESCRIPTION |
Text | Description |
UF_DOCTOR_ID |
Number | Doctor |
UF_RESULT_FILE |
File | PDF with results |
UF_NEXT_DATE |
Date | Next procedure date |
Revaccination reminders—automatic. Agent CVetVaccinationReminder checks UF_NEXT_DATE, sends SMS/email 14 and 3 days before. This reduces missed vaccinations by 30%.
What results does automation yield?
Automation of booking and reminders yields measurable results: average booking time reduced by 40%, no-show rate drops by 25%, and administrative costs by 30%. Clients receive timely reminders, increasing loyalty. Implementation takes 2 to 4 weeks—depending on MIS integration complexity.
SEO content and expertise
The "Useful articles" section—infoblock news.list / news.detail. Categories: care, nutrition, health, training, breeds. Linked to animal types via tags.
Each article is optimized for informational queries: "how to trim a cat's claws", "puppy vaccination schedule", "what to feed a chinchilla". Microdata schema.org/Article with author field linking to doctor profile—boosts E-E-A-T.
We provide full technical documentation and staff training. Get a consultation on data structure and architecture—discuss your project details.
What's included in the work
- Audit of current business processes and data structure
- Architectural design of infoblocks and Highload blocks
- Development of service catalog and doctor profiles
- Creation of online booking system with three-dimensional matrix
- Personal account with pet cards and history
- Integration with veterinary MIS (REST / CSV)
- Setup of SMS notifications and reminder agents
- SEO articles with microdata
- Technical documentation, access transfer, staff training
- Post-release support for 2 weeks
Implementation phases
| Phase | Tasks | Duration |
|---|---|---|
| Design | Data structure, booking UX, integration contracts with MIS | 2 weeks |
| Catalog and profiles | Services, doctors, branches, responsive layout | 2–3 weeks |
| Booking system | Wizard, schedule, slots, SMS notifications | 3–4 weeks |
| Personal account | Pets, medical records, reminders | 3 weeks |
| MIS integration | Connection to MIS, synchronization | 2–3 weeks |
| Content and SEO | Articles, microdata | 1–2 weeks |
| Testing and launch | End-to-end testing, load testing, training | 1–2 weeks |
In the end, you get a website that is not just a business card, but a full-fledged tool for managing appointments and medical data. Contact us to discuss your project. Get a consultation on data structure and architecture.







