Appointments & provider calendars
Scheduling covers three screens: the provider calendar (who is free, and when), the appointments day list (book, move, cancel), and schedule templates (the recurring weekly pattern the calendar is computed from).
| Screen | Where | What it is for |
|---|---|---|
| Provider calendar | Scheduling → Provider calendar | See a provider's free slots for a date |
| Appointments | Scheduling → Appointments | Book, reschedule and cancel for a chosen day |
| Schedule templates | Scheduling → Schedule templates | Define the recurring weekly availability |
Before you start
You need the scheduling permissions for what you are doing — scheduling.calendar.read to view a
calendar, scheduling.appointment.write to book or change one, and scheduling.template.write to
edit templates. Without the matching permission the page opens as access denied rather than
showing an empty screen, so if a page looks blocked it is a permission question, not a data one.
You also need a tenant, and usually a facility, selected. Availability is a facility-level fact.
How availability actually works
Free slots are computed, not stored. Every time you open the calendar the server works out availability as:
the provider's template — minus blocked time — minus existing bookings
That has one consequence worth understanding, because it explains behaviour that otherwise looks like a bug: a slot describes what was free at the moment you asked. If a colleague books the same slot while you are looking at it, your screen is already out of date. The screen re-queries rather than holding on to a slot list, and a booking can still be refused at the moment you submit it. That refusal is the system protecting the patient from a double-booking, not an error you caused.
So: if a slot you expected has disappeared, the usual reasons are that someone booked it, the template changed, or the time was blocked out.
Booking, moving and cancelling
- Go to Scheduling → Appointments and choose the day.
- Pick the provider, then a free slot.
- Book, choosing the patient.
To move an appointment, reschedule it rather than cancelling and re-booking — rescheduling keeps one appointment with its history, while cancel-then-book leaves two records and loses the link between them.
To cancel, use cancel on the appointment. A cancellation is recorded, not erased: the slot is returned to availability but the fact that the appointment existed remains.
⚠ Marking a patient as arrived is not done here
There is deliberately no "arrived" action on this screen. Check-in is a single step in the patient journey that creates the visit's workflow instance, issues the visit token and puts the patient on the waiting board together — see the patient journey.
Doing it here as well would create a second place the token can fail to be issued, and that kind of mismatch typically surfaces on a public waiting board at the start of a clinic. One check-in path means one place to look when a token is missing.
Schedule templates
A template is the recurring weekly pattern — the shape of a normal week for that provider. The calendar is derived from it, so editing a template changes availability from that point forward; it does not retroactively remove appointments already booked.
Use blocked time for one-off absences (leave, a meeting) rather than editing the template, which would change every week.
When something looks wrong
| What you see | What it usually means |
|---|---|
| The page says access denied | You lack the permission for that screen, or the route is not enabled for your role |
| A slot vanished between looking and booking | Someone else booked it, or the time was blocked — availability is live |
| Booking is refused on submit | The slot stopped being free between loading the page and submitting |
| No slots at all for a provider | No template covers that day, or the whole day is blocked |
| An appointment exists but the patient is not on the waiting board | The patient has not been checked in — booking and check-in are separate steps |