A paediatric clinic group in Bengaluru (5 locations across HSR, Indiranagar, Whitefield, Jayanagar, and Sarjapur) wanted a mobile booking app. The CEO had been quoted ₹14 lakh and 5 months by another firm. We shipped a React Native app on iOS and Android in 7 weeks for ₹6.8 lakh. The booking flow is built around what parents actually do on their phones — and around three compliance pitfalls that every clinic we have audited gets wrong.
7 weeks
Brief to App Store Live
## The Answer in 60 Words
React Native (Expo SDK 51), Firebase Auth + Firestore for transactional data, a FHIR-lite resource model (Patient + Appointment + Practitioner + Slot), Razorpay for payments, and a 4-screen booking flow that completes in 38 seconds median. iOS + Android stores live in 7 weeks. DPDP + clinic-compliance shaped 14 specific UX decisions you can copy.
## Why This Matters Now
The Indian paediatric clinic market is in two transitions at once. The DPDP Act 2023 turned "we use Google Forms for booking" from a Tuesday inconvenience into a Section 8 violation with up to [₹250 crore in penalties](https://www.meity.gov.in/data-protection-framework). And the Ayushman Bharat Digital Mission's ABDM 2.1 release in 2025 standardised the [FHIR R4 profile](https://nrces.in/ndhm/fhir/r4/index.html) Indian clinics are expected to align to, even if not yet enforced. Most clinics overlook both. We shipped this app with both in scope because doing them later costs three times as much.
## The Client (Specific Details)
-
Sector: Paediatric and adolescent medicine (newborn → 18)
-
Location: Bengaluru — 5 locations within a 22 km radius
-
Size: 22 doctors, 8 nurses, 6 reception, ~140 daily appointments per location
-
Day 0 stack: Practo for online presence, a WhatsApp business number for bookings, a Google Sheet for slot management
-
The trigger: A 4-month-old's vaccination appointment was missed because the receptionist confused two Sheets rows. The CEO sat across from the parents at 9 pm to apologise. App project started the next morning.
## The Stack
📱
React Native + Expo SDK 51
One codebase, iOS + Android. Expo's EAS Build pipeline shipped to TestFlight + Internal Testing on day 18.
🔥
Firebase Auth + Firestore
OTP auth via Mobile + email backup. Firestore for slots, appointments, patient records. Hosted in asia-south1 (Mumbai) to satisfy data-residency.
🧬
FHIR-Lite Resource Model
Patient, Practitioner, Appointment, Slot, Encounter. Aligns to ABDM FHIR R4 names so we can ABHA-link in Phase 2 without renaming everything.
💸
Razorpay UPI Intent + Cards
Consult fee + vaccination charges. UPI Intent (post-Feb 2026 deprecation of Collect — see our earlier post). 96.3% success rate in pilot.
## The 3 Compliance Pitfalls Indian Clinics Overlook
This is the section you came for. Every clinic we have audited misses at least one of these — most miss all three.
### Pitfall 1: Implicit consent at signup
What clinics do: present a "Sign up" button. Parent taps. Account created. The clinic's privacy policy is in the menu, somewhere.
What DPDP Section 6 requires: free, specific, informed, unconditional, unambiguous consent with clear notice. The notice must list the
purpose of data collection (booking? marketing? insurance claims?) and the
data fiduciary (the clinic group's legal entity name and its registered DPO).
Concrete fix we shipped: a 3-screen consent flow before any account creation. Screen 1: who we are. Screen 2: what we collect (mobile, name, child name, DOB, gender, weight at registration). Screen 3: what we use it for (booking, reminders, billing — three separate checkboxes the parent can toggle). A parent who declines "marketing reminders" gets zero promotional SMS — we wired the consent flag into the SMS dispatcher itself.
### Pitfall 2: Medical records visible to receptionists who do not need them
What clinics do: receptionist's app shows full patient history, prescriptions, weight tracker, vaccination schedule. Because it is easier to build one view.
What both HIPAA's "minimum necessary" rule and [DPDP Section 8](https://amlegals.com/health-data-and-the-dpdp-act-a-practical-guide/) require: access only to what is needed for the task. A receptionist booking a slot does not need the child's vaccination history.
Concrete fix we shipped: 4 role views with deliberately narrowed access. Receptionist sees: parent name, child name, mobile, today's slot. Reception cannot view past visits unless they explicitly tap "Patient history (logs audit)" — which writes to an audit table the doctor and admin can review. Nurses see vitals and active prescriptions only. Doctors see everything for their own panel. The clinic owner sees aggregates, not individual records (this took two rounds to convince the owner of, but the auditor in March was very pleased).
### Pitfall 3: Backup retention with no destruction policy
What clinics do: every Firebase / Google Drive / AWS backup retained forever. "Just in case."
What DPDP Section 8(7) requires: data retained only for the purpose for which it was collected, then erased. Backups count as data.
Concrete fix we shipped: an erasure pipeline. Active records: retained while patient is active + 3 years post-discharge (paediatric clinics: until 18 + 3 years post-last-visit, per [Medical Council of India norms](https://www.nmc.org.in)). Backups: 90-day rolling window in Firestore exports. Parents can request export + erasure via the app — a request fans out to admin (review), legal (sign-off), then a destruction job that purges Firestore + 3 backup generations. Median time from request to fulfilment in pilot: 7.2 days.
HIPAA in India: HIPAA is a US law and does not apply to Indian clinics serving Indian patients. But the *patterns* — minimum necessary, audit logs, breach notification — are the same patterns DPDP Act 2023 requires. Calling your app "HIPAA-aware" rather than "HIPAA-compliant" is the honest framing. Clinics serving US-citizen patients (NRI families, embassy referrals) do need genuine HIPAA scoping.
## The Booking Flow (4 Screens, 38 Seconds Median)
The UI work that took us the longest was reducing the booking flow from 11 screens (the version the CEO's previous quote proposed) to 4. Parents booking a pediatric appointment at 11 pm on a weeknight are sleep-deprived and one-handed. Every removed tap is a real win.
1
Screen 1: Who is the visit for?
If the parent has only one child registered, this screen auto-skips. We A/B'd this — auto-skip dropped completion time by 4.1 seconds at a 0.2% misroute rate.
2
Screen 2: What is the visit for?
Five options: vaccination, fever/cold, follow-up, growth check, "other (we'll call you back)". The "other" path is deliberate — it doesn't book a slot, it queues a callback.
3
Screen 3: Slot picker
Defaults to the parent's most-visited location. Shows next 3 available slots prominently; "see more times" reveals a calendar. 73% pick one of the top 3.
4
Screen 4: Confirm + pay
UPI Intent or saved card. Confirmation SMS sent within 6 seconds. Calendar add (.ics) shown as a non-blocking CTA.
## The Trade-Off We Made
Best practice says "a mobile app for healthcare should support offline mode for triage." We did not build offline. The reason: parents in Bengaluru have reliable 4G/5G; the booking action is online-only by nature (slots are live-fetched); and adding offline support would have added 12 days to the build and required a more complex sync engine. We did a 2-day spike on offline, looked at the spec, and removed it from Phase 1 with the CEO's sign-off. The Phase 2 doctor-side app for in-clinic recording does support offline — that is the place it actually matters.
For the design rationale on this kind of pruning, our UI/UX designer Khushi wrote up the 4-screen reduction process in the project's internal Figma file. The principle she enforces: "If you can't justify the screen with a tap count or a number, cut it."
## The 7-Week Build (Week-by-Week)
1
Week 1: Discovery + day at the clinic
2 days at the HSR clinic. Watched 14 walk-ins, 6 phone bookings. Mapped 9 booking failure modes. Locked the 4-screen flow in a 90-minute session with the CEO and HSR receptionist.
2
Weeks 2–3: Auth + patient + slot model
Firebase Auth with Mobile-OTP via Gupshup. Firestore patient + appointment + slot collections. FHIR-aligned naming. Receptionist dashboard prototype.
3
Weeks 4–5: Booking flow + payments
The 4 screens in React Native. Razorpay UPI Intent integration. Three rounds of UX iteration with parents in the waiting room (the CEO let us hand them prototype builds).
4
Week 6: Compliance pass + admin panel
DPDP consent flow. Erasure pipeline. Admin panel for the CEO to see bookings + manual override. Auditor dry-run with a friendly auditor we hired for ₹15,000.
5
Week 7: TestFlight, Play Console, launch
EAS Build → TestFlight + Play Internal Testing on day 39. App Store approval on day 44 (one rejection cycle on health-data disclosure phrasing). Launched at the HSR clinic on day 49.
## The Outcome (Numbers)
-
Booking abandonment dropped from 41% (Google Form) to 7.8% (app).
-
Repeat booking rate (parent's 2nd visit booked via app) hit 88% in 60 days.
-
No-show rate fell from 14.2% to 6.1% (largely because the SMS reminder system in the app actually fires reliably, unlike the old human-driven cycle).
-
Receptionist time per booking: 4 min 20 sec → 38 seconds. The reception team picked up 2.4 hours of additional patient-facing time per day across 5 locations.
The CEO's testimonial: "The receptionist did not realise we had launched until day 4, because nothing broke."
## What We Learned About Indian Parent Booking Behaviour
Three patterns from the first 60 days of analytics that surprised us:
1.
76% of bookings happen between 8 pm and 11 pm. The booking flow had to be optimised for sleep-deprived one-handed phone use, not for daytime desktop use. We doubled the tap-target sizes after week 2.
2.
31% of parents booked for a sibling within 7 days of the first booking. The "Add another child" option had to be one tap from the home screen — we moved it from the menu to the main screen in week 3.
3.
Vaccination bookings cluster on the 1st, 15th, and last day of each month. Parents wait for "the next round number date." We surfaced "next available vaccination slot" prominently to absorb the spike, instead of fighting it.
We treat this build as the case study we point at when clients ask about our mobile work — same stack as
TalkDrill, our in-house English speaking app for Indian adults (5,000+ active users), which gave us the React Native + Firebase muscle that made this 7-week timeline achievable.
## When Not to Build a Custom Booking App
Skip the custom app if (a) you have under 60 appointments/day total across all locations — Practo's free tier handles that comfortably, (b) your parents are 80% over 55 and prefer phone calls (saw this with a geriatric clinic — the app saw 11% adoption in 3 months and we wound it down), or (c) you have under ₹4 lakh and 4 months. Below that budget, a well-configured Practo + WhatsApp business setup is dramatically more economical.
## The DPDP-Ready Booking-App Checklist
- 3-screen consent flow before any account creation, with separable purpose checkboxes
- Receptionist view restricted to today's slot data — past visits behind an audit-logged tap
- Erasure pipeline (parent request → admin review → legal sign-off → destruction across active + 3 backups)
- Data hosted in India region (asia-south1 / ap-south-1)
- Audit log on every read and write of patient data
- FHIR-aligned resource names so ABHA integration in Phase 2 is a wiring exercise, not a rewrite
- Apple Health Data Use disclosure completed honestly before App Store submission
- SMS dispatch coupled to consent flag; no marketing SMS to declined parents
## Common Mistakes
Symptom: "Doctors keep asking us to make the app simpler." Cause: trying to be EMR + booking + portal in one app. Fix: separate apps per persona. Patients have the booking app. Doctors have a different one. Receptionists usually do not need an app at all.
Symptom: "App approvals are stuck at Apple." Cause: missing "How is health data used" disclosure or unclear data collection. Fix: complete Apple's Health Data Use disclosure honestly. If you say "we never share data with third parties," then disable the Razorpay device-fingerprint SDK or amend the disclosure.
Symptom: "Parents don't update the app." Cause: forced upgrades feel hostile. Fix: silent feature-flag gating instead. The app self-updates; the parent never sees a "you must update" wall.
Symptom: "Our doctors say the slot grid is wrong." Cause: time zone handling between server (UTC) and India display. Fix: format every datetime through a single utility that converts to Asia/Kolkata. Never trust JS Date's default behaviour across iOS and Android.
## FAQ
### How much does a clinic booking app cost in India?
For a 3–10 location clinic group with iOS + Android + admin panel: ₹5–9 lakh fixed-price, 7–12 weeks. Ongoing run + small features: ₹25,000–₹50,000/month. Below 3 locations, the math against Practo/Calendly + WhatsApp does not always work.
### Is HIPAA relevant for Indian clinics?
HIPAA is a US law. It applies if you are processing data of US patients (e.g., NRI families abroad, embassy referrals). For Indian-patient-only clinics, the [DPDP Act 2023](https://www.meity.gov.in/data-protection-framework) is the relevant framework. The patterns overlap significantly.
### Should I use Firebase or build my own backend?
Firebase is fine for ≤ 25k users and standard CRUD. Above that, or if you need complex aggregations, move to a dedicated backend (Node.js + PostgreSQL). For a 5-clinic paediatric group, Firebase scales for years. We migrated a different client off Firebase at 80k MAU and that point.
### What about ABHA integration?
The ABDM ecosystem now offers a [Health Information Provider API](https://sandbox.abdm.gov.in/) for clinic apps to share records with patient's ABHA. We left this for Phase 2 — clinic group had 4% of parents with ABHA in pilot. Worth implementing once ABHA crosses 30% adoption in your patient base.
### How long is the App Store review for healthcare apps?
iOS: 2–5 days if your privacy disclosure is honest and complete. Google Play: 24–48 hours. Both reject apps that mis-disclose health data collection. Plan for one rejection cycle on the first submission.
### Do we need a doctor's app too?
Most clinics under 8 doctors don't. The receptionist's screen for the doctor's day is enough. Above 8 doctors, a doctor's app for "what is my schedule, what is the chief complaint, what are the patient's last 3 visits" justifies its build cost.
### Can we self-host this instead of using Firebase?
Yes. PostgreSQL + Node.js + Redis + Firebase Auth (or Cognito) — we shipped that stack for a hospital chain in Phase 1. About 20% more build time, about 35% less monthly run cost at scale. Pick based on team capacity, not principle.
Need a Clinic or Hospital Booking App?
We build patient-facing mobile apps (iOS + Android + admin) for Indian clinic groups, diagnostic chains, and dental practices in the 3–15 location range. Fixed-price, 7–10 weeks to launch, DPDP-aware by default. First call is with the engineer who would lead your project.
Book a 20-min Call