Patient Self-Booking: Let Patients Schedule Their Own Appointments
Your receptionist spends 30% of her time answering "is the doctor free Saturday at 4?" Stop. Let patients see your availability and book themselves.
Here's a typical Tuesday at an Indian clinic:
- 9:15 AM: WhatsApp ping — "Can I get an appointment tomorrow morning?"
- 10:20 AM: Phone call — "What time is Dr. Saab free on Saturday?"
- 11:45 AM: WhatsApp — "I wanted Friday 5pm but you said taken. What about 5:30?"
- 2:00 PM: 3 messages from yesterday's WhatsApp asking about times
- 4:30 PM: A walk-in who wants to "fix" the appointment they made for next week
If you've added it up, the receptionist (or you, if there's no receptionist) spends 30-40% of working time on appointment scheduling. That's 2-3 hours a day spent on something a patient could do themselves in 30 seconds.
Here's how online patient booking actually works in DRP-OS.
The patient portal at /patient/
DRP-OS Clinic ships with a built-in patient portal — a separate set of pages that patients access with their own credentials, completely isolated from the doctor's view.
What patients can do:
- Log in with their phone/email + password
- See their appointment history
- Book a new appointment
- Cancel or reschedule existing appointments
- View past prescriptions and download PDFs
- Update their profile (address, phone, etc.)
- Change their password
None of this requires your involvement. Patients self-serve.
How a doctor sets up patient access
For each patient in your records, you can send a portal invitation:
- Open the patient's record in DRP-OS
- Click "Invite to portal"
- System generates a default password, marks
force_password_change = 1 - Patient receives WhatsApp/SMS with login link + temporary password
- On first login, they're forced to change their password
- From then on, they have permanent access
The patient's portal account is linked to their patient record via portal_user_id. One patient = one portal account = one login.
How online booking respects doctor availability
This is where most "online booking" systems fail. They show "all hours available" and create chaos: patients book at lunchtime, at 11pm, on Sundays you don't work.
DRP-OS handles this through clinic_doctor_availability — a table where every doctor declares their weekly recurring schedule:
- weekday — 0 (Sunday) through 6 (Saturday)
- start_time — when consultation starts (e.g., 9:00 AM)
- end_time — when it ends (e.g., 1:00 PM, then again 5:00 PM to 9:00 PM)
- slot_minutes — appointment slot length (15, 20, 30 min, etc.)
- is_active — temporarily turn off without deleting
You can define multiple rows per weekday — one row for morning hours, one for evening hours. Lunch break is automatically excluded.
Example doctor schedule
Dr. Sharma's availability:
| Day | Morning | Evening |
|---|---|---|
| Monday | 10:00 - 13:00 | 17:00 - 20:00 |
| Tuesday | 10:00 - 13:00 | 17:00 - 20:00 |
| Wednesday | 10:00 - 13:00 | — |
| Thursday | 10:00 - 13:00 | 17:00 - 20:00 |
| Friday | 10:00 - 13:00 | 17:00 - 20:00 |
| Saturday | 10:00 - 14:00 | — |
| Sunday | — | — |
With slot_minutes = 20, the system knows there are:
- Monday morning: 9 slots (10:00, 10:20, 10:40, 11:00, 11:20, 11:40, 12:00, 12:20, 12:40)
- Monday evening: 9 slots (17:00, 17:20, ... 19:40)
- ...and so on for each day
What the patient sees when booking
The patient goes to your clinic's portal URL (e.g., yourclinic.com/patient/book), logs in, and sees:
- Pick a doctor (if multi-doctor practice)
- Pick a date — only doctor-available days are shown
- Pick a time slot — only free slots are shown (already-booked slots are hidden/disabled)
- Optional reason for visit
- Click "Confirm Booking"
The system creates an appointment with source = 'online', so you can later report on online vs walk-in/internal bookings.
What happens after booking
From your dashboard, you (and your staff) see:
- Today's scheduled appointments in chronological order
- Source flag — "online" vs "internal" vs "walk-in"
- Status — scheduled / completed / cancelled / no_show
- Linked patient record (one click to see history)
When the patient arrives, you mark them complete (and optionally start a visit from the appointment). When they don't show up, you mark "no_show" — and the patient's no-show count starts being tracked.
How online booking changes your clinic
Concrete impact based on real Indian clinic data:
- Receptionist time — saves 1.5-2.5 hours daily that was spent on scheduling calls
- Patient satisfaction — patients book at midnight, weekends, on the bus to work, whenever it suits them
- No-show rate — drops 30-40% because patients pick times that actually work for them, not the first slot the receptionist offered
- Off-peak utilization — patients discover and book unpopular slots (early morning, late evening) that previously sat empty
- Practice growth — when a friend asks "how do I see your doctor?", existing patients can share the booking link directly
What about patients without smartphones?
About 25-30% of patients (mostly elderly) still prefer phone/walk-in booking. That's fine. The receptionist still handles those — using the doctor's internal scheduling view in DRP-OS.
Internal bookings have source = 'internal'. They show up the same way in the doctor's schedule, but you know who came via which channel. As a metric, "% online bookings" grows over months — typically reaches 60-70% in 6-12 months as more patients try it once and never go back.
Security: the patient never sees other patients
This matters. Each patient logs in with their own credentials. They only see:
- Their own appointments
- Their own prescriptions
- Their own profile
- Available time slots (without seeing who booked the other slots)
They cannot see other patients' names, contact info, prescriptions, anything. The system enforces this at the database level via tenant_id + patient_id matching on every query.
This is essential under India's upcoming Digital Personal Data Protection Act (DPDP). Patient data must be isolated by patient. DRP-OS handles this from day one.
Try it
The patient portal + online booking is included in DRP-OS Clinic from the starter plan (₹1,499/month). Setup takes about 30 minutes — you create your doctor availability schedule, then start inviting patients to the portal.
Start your 24-hour free trial. No credit card. WhatsApp +91 9560793054 for setup help.
Try DRP-OS Clinic free for 24 hours
Built for Indian solo doctors. GST invoices, Hindi prescriptions, patient records. ₹1,499/month. No credit card.
Start free trial →