HomeDocumentationAppointments & Calendar
Core Features
📅

Appointments & Calendar

Full calendar management — booking, rescheduling, status lifecycle, recurring series, and the waiting room.

Last updated 2026-05-15T23:54:42.185064+00:00

Calendar views

The main calendar supports three views:


  • Day: single-column per doctor, densest time grid
  • Week: side-by-side columns for all doctors in the selected branch
  • Month: overview — click any day to drill down

Switch views using the buttons in the top-right of the calendar. The selected view persists across sessions.

Appointment status lifecycle

Every appointment moves through a defined set of states:


SCHEDULED > CONFIRMED > ARRIVED > WAITING > IN_CHAIR > COMPLETED

> NO_SHOW

> CANCELLED (from any state except COMPLETED)


SCHEDULED — Booked, not yet confirmed

CONFIRMED — Patient confirmed attendance

ARRIVED — Patient physically checked in at the clinic

WAITING — In waiting room, being triaged

IN_CHAIR — Doctor has started the session

COMPLETED — Session saved, invoice auto-generated

NO_SHOW — Patient did not arrive

CANCELLED — Appointment cancelled


Status changes are recorded in the Audit Log.

Drag-and-drop rescheduling

Drag any appointment block to a new time slot or a different doctor column. A confirmation dialog shows the old and new time before saving.


Drag rescheduling is blocked for:

  • Appointments with status IN_CHAIR or COMPLETED
  • Appointments in the past (unless you have ADMIN role)

After rescheduling, WhatsApp and SMS reminders are automatically re-queued for the new time.

Walk-in appointments

For unscheduled patients arriving at the door:


  1. Press Shift + W anywhere in the dashboard, or click the + FAB (floating action button).
  2. Search for the patient or add them on the spot.
  3. Select the doctor, appointment type, and chief complaint.
  4. Click Add to Waiting Room — the appointment is created with status ARRIVED immediately.

Walk-ins appear at the top of the waiting room queue with a Walk-in badge.

Recurring appointments (series)

For patients who need regular sessions (physiotherapy, chemotherapy, dialysis):


  1. Create a new appointment as normal.
  2. Before saving, toggle Repeat.
  3. Set the frequency (Daily, Weekly, Every 2 weeks, Monthly) and end condition (number of sessions or end date).
  4. Click Save Series — all sessions are created at once.

To edit a single session without affecting others, open it and choose Edit this appointment only.

To cancel the entire series, choose Cancel all remaining.

Waiting room

The Waiting Room view (/dashboard/waiting-room) shows three live buckets:


Arrived — Checked in physically, not yet called

Waiting — Confirmed but not yet arrived

In Chair — Currently with the doctor


Each bucket shows a live count badge. Click Call Next to move the first patient in Arrived to In Chair and open their session.


The list updates in real time via Supabase Realtime WebSockets.

Pre-session triage (kiosk)

Patients can self-check-in on a reception tablet before seeing the doctor:


  1. Enable kiosk mode at App Management > Kiosk Mode.
  2. The patient enters their phone number and receives an OTP.
  3. They enter their chief complaint, current medications, and pain level.
  4. The doctor sees this pre-filled in the session notes before entering the room.

This reduces average session time and ensures no information is lost.

Was this helpful?
Contact support if something isn't clear.