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

StateWhat it means
scheduledAppointment exists; patient hasn't arrived. Default on creation.
checked_inPatient arrived at the front desk. Started the visit.
roomedPatient moved to an exam room. Waiting for provider.
with_providerProvider is with the patient. Active encounter.
ready_for_dischargeEncounter complete; patient still in the room waiting for checkout or post-visit care.
dischargedPatient left the office. Visit is over.
cancelledAppointment was cancelled by patient or practice. Terminal state.
no_showPatient 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:

  • scheduledcancelled (patient cancels before arriving)
  • scheduledno_show (grace window expires with no check-in)
  • checked_incancelled (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_providerroomed 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., dischargedroomed). 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