Five branches, more than a thousand staff between them. Appointments arrived by phone, through the website and through third-party booking aggregators, and each route landed somewhere different: the schedule in the clinical system, the calls in the phone system, and aggregator bookings re-keyed by reception. Confirmations and reminders were made by call whenever someone had time, so around a fifth of patients did not turn up, and a slot freed by a cancellation simply stayed empty. Repeat visits and routine tests depended on the patient remembering, or on a doctor noticing at the next appointment. Test results went out through reception, which meant a queue at the desk and a phone line busy with the same question. Complaints were read by whoever reached them first, sorted by nothing in particular, and consultation quality was checked by listening to a handful of recordings a week.
Medical records stay where they are: the clinical system remains the source of truth for the chart and the schedule, and the platform sits alongside it holding the patient, the visit and everything that patient is owed next. That operational layer lives in PostgreSQL; the clinical system, the phone system, the website and the booking aggregators are wired into it, so a slot taken in one channel is taken everywhere. The model that reads calls sits behind an interface and is replaceable on purpose — something better ships every few months, and we move the client onto it without touching the rest.
Each loop went live in one branch first and only reached the other four once it had held there.
Because nothing here replaced the clinical system. Rewriting it would have meant migrating medical records, retraining every branch at once and taking ownership of a regulated system we have no business owning — a year of work with a bad ending. Instead each loop went live in one branch, was corrected there, and only then rolled out to the other four. Schedule sync and reminders were already paying for themselves while the call centre and the quality scoring were still being built. Three months is the honest number for that approach; a rewrite would not have finished in twelve.
The service pages explain the method behind this project; the solution pages take the same building blocks on their own, each with its own scope and price.
We use cookies for analytics — to see which pages bring enquiries. Nothing else, and nothing before you agree. Cookie Policy