Skip to main content

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).

ScreenWhereWhat it is for
Provider calendarScheduling → Provider calendarSee a provider's free slots for a date
AppointmentsScheduling → AppointmentsBook, reschedule and cancel for a chosen day
Schedule templatesScheduling → Schedule templatesDefine 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

  1. Go to Scheduling → Appointments and choose the day.
  2. Pick the provider, then a free slot.
  3. 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 seeWhat it usually means
The page says access deniedYou lack the permission for that screen, or the route is not enabled for your role
A slot vanished between looking and bookingSomeone else booked it, or the time was blocked — availability is live
Booking is refused on submitThe slot stopped being free between loading the page and submitting
No slots at all for a providerNo template covers that day, or the whole day is blocked
An appointment exists but the patient is not on the waiting boardThe patient has not been checked in — booking and check-in are separate steps