The 8 flow states
Patient Flow runs on an 8-state machine. Here's what each state means and which transitions are valid.
Updated 2026-04-24 · Edit this page on GitHub
title: "The 8 flow states" description: "Patient Flow runs on an 8-state machine. Here's what each state means and which transitions are valid." order: 1 category: "patient-flow" updated_at: "2026-04-24"
Every appointment in Patient Flow lives in exactly one of eight states at any moment. Transitions are restricted — the graph is fixed, not configurable, to prevent broken workflows.
The states
| State | What it means |
|---|---|
| scheduled | Appointment exists; patient hasn't arrived. Default on creation. |
| checked_in | Patient arrived at the front desk. Started the visit. |
| roomed | Patient moved to an exam room. Waiting for provider. |
| with_provider | Provider is with the patient. Active encounter. |
| ready_for_discharge | Encounter complete; patient still in the room waiting for checkout or post-visit care. |
| discharged | Patient left the office. Visit is over. |
| cancelled | Appointment was cancelled by patient or practice. Terminal state. |
| no_show | Patient didn't arrive within the grace window. Terminal state. |
Which transitions are valid
The forward path (normal day):
scheduled → checked_in → roomed → with_provider → ready_for_discharge → discharged
Additional transitions:
scheduled→cancelled(patient cancels before arriving)scheduled→no_show(grace window expires with no check-in)checked_in→cancelled(patient leaves before being roomed)- Any non-terminal state →
cancelled(rare but permitted; captured with a reason in the audit log)
Backwards transitions are allowed within a visit (e.g., with_provider → roomed if the provider steps out) but logged as "correction" events and visible in the audit trail.
Labels and colors
State labels and colors are customizable per-practice in admin settings at /admin/patient-flow-settings. The graph itself — which transitions are legal — is locked globally (see ADR-009 for rationale).
Want "Ready for Discharge" to read "Waiting to Check Out" instead? Edit the label. The state machine stays the same; only the display text changes.
No PHI, ever
Patients are identified by anonymous codes like P-7K2X. Names, DOBs, MRNs are never stored in Rounds per hard rule #1. Front-desk staff map between the code and the real patient via your EHR, not via Rounds.
See Anonymous patient codes for the full reasoning.
If you hit a problem
- "Invalid transition" error — you tried a transition the graph doesn't allow (e.g.,
discharged→roomed). Create a new appointment if the patient came back. - State wrong by accident — use the backwards-correction path; it's audited but not destructive
- Other: support@ralthealth.com