Module: Appointments
The appointment calendar/list and the place where staff change appointment status.
Purpose
- See today's and upcoming appointments.
- Book new appointments.
- Move an appointment through its status machine — confirm, check in, complete, cancel.
- Reconcile no-shows.
Screens
List view
- Columns: Date/Time • Pet • Client • Vet • Type • Status • Actions.
- Status shown as a colour-coded
Badge. - Row actions depend on current status:
scheduled→ Confirm, Cancelconfirmed→ Check in, Cancel, No-showchecked_in→ Complete- Terminal statuses have no actions.
- Filters: status, date range, vet.
- Pagination: 20/page.
New appointment form
Component: AppointmentForm.js.
| Field | Type | Notes |
|---|---|---|
| Pet | select | Required; auto-fills Client |
| Client | auto | Derived from Pet |
| Veterinarian | select (user) | Optional |
| Appointment type | text | Required — e.g. vaccination, consult |
| Start / End | datetime | Required; end after start |
| Reason | textarea | Optional |
| Notes | textarea | Optional |
| Booking source | hidden | Defaults to clinic_portal |
Submit → services.appointments.create(...).
Data flow
Business rules
- Once
completed, an appointment cannot be re-opened through the API — the UI hides the action. no_showis a terminal state; re-booking means creating a new appointment.booking_sourceis informational and never gates behaviour — it's for reporting.
API endpoints used
GET /api/v1/tenant/{tenant}/appointmentsPOST /api/v1/tenant/{tenant}/appointmentsPATCH /api/v1/tenant/{tenant}/appointments/{appointment}— status-only
See also: Workflow → Appointments.