~/openarch/work/carepath-// case study

A patient-facing appointment and teleconsultation app. One shared patient record across four clinic locations, in-person and video booking, and prescriptions issued straight from the consult.

Meridian Health Clinics·healthcare · multi-clinic·2026·in production
openarch.in/work/carepath
CarePath interface
//the brief

What we built.

Meridian booked by phone, one clinic at a time, with records that never crossed locations. We built a single patient app and record system - book at any clinic, consult in person or over video, and leave with a prescription tied to the treating doctor.

// One record, every clinic.

domainpatient scheduling
shapecross-clinic app
statusin production
clinics4 · unified
stack
flutternode · expresspostgresfirebaseagora sdk
//what we shipped
01

Book appointment

Choose a clinic or any clinic, a specialty, a doctor and an open slot - with an in-person or teleconsult toggle.

02

Clinic & doctor selector

Filter by specialty and location, with doctor availability shown per clinic rather than per phone call.

03

Teleconsult room

An Agora-powered video call with a chat sidebar and an end-and-issue-prescription action for the doctor.

04

Prescription history

A patient-facing list of past prescriptions - medicine, dosage, duration - each downloadable as a PDF.

05

Doctor schedule

A daily and weekly view across all four clinics for a given doctor, with slot blocking for leave and admin time.

06

Shared record

One medical record number per patient, carried across every clinic, appointment and teleconsult session.

//data model
schema.sql5 tables
table patients
name, phone, dob, mrn, created_at
table appointments
patient_id, doctor_id, clinic_id, slot_at, mode, status
table teleconsult_sessions
appointment_id, room_id, started_at, ended_at
table prescriptions
appointment_id, doctor_id, notes, issued_at
table medical_records
patient_id, appointment_id, summary, attachments_json
// appointment status machine
  1. 01booked
  2. 02confirmed
  3. 03in_progress
  4. 04completed / no_show
//business logic
slot-check.tsSlot conflict check
function isSlotAvailable(doctorId, slotAt, existing) {
return !existing.some(a =>
a.doctor_id === doctorId &&
a.status !== 'CANCELLED' &&
overlaps(a.slot_at, slotAt, /* mins */ 20))
}
issue-rx.tsPrescription issuance
// only from an active or finished consult,
// bound to the treating doctor
function canIssue(appointment, doctorId) {
return ['IN_PROGRESS', 'COMPLETED'].includes(appointment.status)
&& appointment.doctor_id === doctorId
}
//on the roadmap

Honest edges.

  • →Deconflict cross-clinic schedules when a doctor covers two locations same day
  • →Reliable teleconsult reconnection to the same room after a dropped call
  • →SMS fallback for patients not yet on the app
//result
4 → 1
clinics into one app
1
record per patient, everywhere
↓
phone-based scheduling calls

Meridian consolidated booking across all four clinics into one app, cutting phone-based scheduling calls significantly and giving doctors a single cross-clinic view of their day.