Scheduling

Most ambulatory schedulers treat the day as a provider calendar grid — fifteen-minute boxes, double-booking by accident, no idea that the noon physical needs a special blood-draw chair. REV.health treats the practice as a graph of resources — clinicians, rooms, MAs, equipment, telehealth bridges — and visit types as multi-stage routes through that graph. A constraint solver places appointments at minute resolution, surfaces feasible alternatives when the requested slot is infeasible, and re-optimizes in real time when visits run long. Pajama time shrinks because the day stays on schedule; patient wait time shrinks because rooming starts the moment the room is free.

The front desk, the clinical team, and the patient see one consistent plan from booking through checkout. Eligibility checks fire automatically at booking; reminder ladders keep no-shows low; walk-ins are absorbed without breaking the day.

Key Capabilities

Resource-Graph Minute-Level Booking

The solver evaluates provider availability, exam-room availability, MA capacity, and equipment dependencies (BP machine, otoscope, ECG) at minute resolution. It returns the three best feasible windows and explains why other windows were rejected — room conflict, MA overload, lunch block. The agent picks 2:14 pm; the visit is booked across all needed resources atomically.

Each visit type is a multi-stage route through the resource graph. The solver holds every named resource for exactly the minutes it is needed — no double-booked rooms, no MA pulled mid-rooming, no provider waiting on a phlebotomy chair. Switch encounter types to see how the resource footprint changes minute by minute.

Every resource the visit touches — and how each tier handles it
Resource / behavior Paper / phone Generic calendar
(Google, Outlook)
Typical EHR scheduler REV.health resource-graph
Providers (MD, DO, PA, NP) One grid per provider One calendar per provider 15-min provider slots Minute-level availability with lunch, admin, and co-sign blocks modeled explicitly
Medical assistants "Whoever's free" Not tracked Implicit; not bookable First-class resource — required for rooming stage, released after
Registered nurses Pulled mid-visit Not tracked Sometimes a side calendar Bookable for triage, injections, follow-up; capacity enforced
Front-desk staff One person, always Not tracked Not tracked Required for check-in / checkout stages; concurrent capacity enforced
Exam rooms Sticky notes on doors Manual room calendar Provider's "room" — single assumption Distinct resource per room; held atomically across rooming → provider stages
Procedure / blood-draw chairs "Hope it's open" Not tracked Not tracked Bookable equipment resource with its own availability
Shared equipment (ECG, ultrasound, derm scope) Walk and look Not tracked Not tracked Per-visit-type dependencies declared and solver-enforced
Telehealth bridges Generic video link Separate vendor tab Bridge concurrency is a resource — visits cannot exceed licensed seats
Waiting-room capacity Lobby overflow Not tracked Not tracked Soft constraint on concurrent waiting patients
Slot granularity 15 min 15 / 30 min 10–15 min 1 minute
Visit multi-stage routing Mental model None One block per visit Check-in → rooming → provider → nurse → checkout, each stage with its own resources and durations
Re-optimization when a visit runs long Cascade chaos None Manual reshuffling Solver re-runs in real time; downstream slots are nudged automatically
Walk-in absorption Squeeze in None Manual Auto-search for the smallest insertable window that respects committed wait-time SLAs
Cancellation / no-show recovery Phone tree None Manual waitlist Waitlist auto-fill with 5-minute SMS offer; eligibility re-runs on accept
Encounter chains (recurring care) Sticky notes None None Multi-step chains with interval rules; next slot auto-suggested at a resource-feasible time
Visit-Type Stages with Named Resources

"Established Adult Office Visit" is defined as: Check-in (3 min, FrontDesk) → Waiting (0–5 min, WaitingRoom) → Rooming/Vitals (7 min, MA + ExamRoom) → Provider Eval (18 min, Provider + ExamRoom) → Nurse Follow-up (5 min, RN) → Checkout (4 min, FrontDesk). Stages are first-class objects; the same exam room is held across rooming + provider stages; the MA is released after rooming. Practices configure their own stage compositions.

Walk-In Absorption Without Breaking the Day

A walk-in with acute symptoms enters a triage priority and complaint type. The scheduler searches the next 90 minutes for the smallest insertable window that does not push any booked patient past the committed wait-time SLA. If a slot is found, the walk-in is booked; if not, the system offers a same-day telehealth slot or next-morning option.

No-Show Recovery with Waitlist Auto-Fill

A 9:00 am no-show is auto-detected at the 10-minute mark. The slot is released, and the waitlist is queried for matching patients (same provider, similar visit type, opted-in to short-notice). The top match receives a 5-minute SMS offer. If accepted, the slot is rebooked and eligibility runs automatically.

Multi-Provider Day View

A live status board shows who is roomed, who is waiting, and who is over scheduled time — updated within 2 seconds of any stage transition. Display-mode supports back-office wall screens so the whole team stays coordinated.

Encounter Chains

An encounter chain is a sequence of related appointments that must occur in a defined order — for example, new-patient intake → follow-up in 2 weeks → annual physical in 6 months. Each chain carries chain rules: minimum and maximum intervals between steps, required ordering, and recurrence patterns (e.g., quarterly A1c checks for diabetics). When a visit in the chain completes, the scheduler auto-suggests the next appointment in the sequence at a resource-feasible time that respects the interval constraint. The patient and provider see the full chain timeline — not just the next slot — so care gaps are visible before they happen.

Chains are configured per VisitType in the stage composer. A practice can define a "New Patient Comprehensive" chain as: Step 1 — 45-min intake, Step 2 — 20-min follow-up within 14 days, Step 3 — 30-min annual wellness within 6 months. The solver respects chain rules alongside resource constraints, so the suggested follow-up is both clinically appropriate and operationally feasible.

Phase 2 — Encounter chains ship in Phase 2 alongside the resource-graph constraint solver. Phase 1 supports manual follow-up scheduling without chain enforcement.
Resource Day View

A minute-resolution grid showing every provider, room, and MA across the day — the visual surface behind the solver's placement decisions. Each row is a resource; each column is a time increment (configurable from 1 to 15 minutes). Booked stages render as colored blocks labeled by patient and VisitType; gaps render as open windows. The grid shows the practice's day as a graph of resources, not a provider calendar — so the front desk can see that Room 3 is empty while Dr. M is between patients, and the MA is free to room the next visit.

Resources are graphed and optimized: the solver places each encounter chain on the grid to minimize provider idle time and room turnover gaps. The result is a packed day where the provider walks into a roomed patient every time. Staff can drag-and-drop reschedule within the day view — moving a block from 10:20 to 10:40, for example — and the solver re-validates resource conflicts in real time. If the move would double-book a room or overload an MA, the drop is rejected with an explanation; if an adjacent block shifts to accommodate, the cascade is shown before confirmation.

Phase 2 — The resource day view ships in Phase 2 alongside the constraint solver. Phase 1 provides a flat provider calendar view without minute-level resource graphing.

Persona Connections

Technical Highlights

Seven noun-apps compose the scheduling surface on the IC platform: Schedule, Slot, Appointment, Resource, VisitType, VisitStage, and WaitlistEntry. Every entity is org-scoped, carrying OrganizationID as the Cosmos partition key and the full four-field audit trail. The patient referenced by an Appointment is a global entity; the Appointment row is the practice's record of "we agreed to see this patient at this time."

Data Model

API Surface

FHIR R4 Schedule, Slot, and Appointment resources are exposed at the platform's standard FHIR API surface, conformant to US Core 7.0.0+. Provider schedules emit a read-only iCal feed signed with a tenant key. Internally, the constraint solver is a Google OR-Tools / Timeflow kernel wrapped in a domain-specific search strategy that prefers minimum makespan and minimum patient wait.

Phase Roadmap

Phase 1 — Manual Scheduling + Basic Rules
  • Front-desk booking with provider-and-room conflict checks
  • Visit-type stage editor for practice configuration
  • Self-scheduling portal for established patients
  • Basic reminder ladder (T-3, T-day SMS)
  • No-show detection and manual rebooking
Phase 2 — Smart Scheduling + Automation
  • Resource-graph constraint solver at minute resolution
  • Walk-in absorption respecting wait-time SLAs
  • Waitlist auto-fill with SMS offers on cancellations and no-shows
  • Recurring and group visit support
  • Telehealth as a dedicated resource type (TelehealthBridge)
  • Block schedule templates and live status board
  • FHIR Schedule / Slot / Appointment export
  • Full reminder ladder (T-30, T-14, T-3, T-day)
Phase 3 — Predictive + Cross-Location
  • Predictive no-show ML scoring on each upcoming appointment
  • Two-way calendar sync (CalDAV / Google / Outlook)
  • Cross-location resource sharing (MA/room borrowing between sites)
  • Specialty-specific deep workflows (pediatric ladders, women's health routing)

Success Metrics

MetricTargetWhy It Matters
95th-percentile patient wait time (arrival → rooming) ≤ 12 minutes Patient experience priority #1; the resource graph exists to keep this low.
Slot utilization (booked-minutes / available-minutes) ≥ 90% Operational efficiency; minute-level packing wins here.
No-show rate (after waitlist auto-fill) < 6% Lost revenue + lost access; auto-fill is the lever.
Self-scheduling share of total bookings ≥ 35% by month 6 Front-desk capacity unlocked; patient satisfaction up.
Solver runtime, p95 ≤ 250 ms Search must feel instant during a phone call.
Walk-in absorption without SLA breach ≥ 70% The day stays on schedule even when reality intrudes.

Try in the Demo

For the full patient-side specification — secure messaging, AVS delivery, FHIR export, consent management, proxy access — see the Patient Portal module.

Developer Reference — Entity schemas, RBAC matrices, FK diagrams, constraint rules, and functional/non-functional requirements: Scheduling Dev Spec →