Operations Overview
Loading live data from Supabase…
Good day 👋
⚡ Do today the most urgent items across every view — click to act
Your live action queue for the current day — over-capacity clinics, days to fill in time, open compliance breaches, patient callbacks, and PCP outreach — prioritized. Aggregates only. For the deeper analysis, see Command.
🗂 My Work one queue — every detected problem as a workable case
Loading cases…
Detection → work: every issue becomes a case you can assign, act on, and resolve, with a full audit trail — one queue instead of ten worklists. Cases auto-generate from the live call worklist (Missing PCP, coverage) via
sync_cases(); re-detecting never duplicates and never overwrites your edits. Needs the case-engine tables + generator (docs/case_engine_schema.sql, docs/case_generator.sql). Patient IDs only — no names.–
Ops health
💡 Answers the questions you'd otherwise dig for
🚨 Priority actions bottlenecks ranked by impact · click any to drill in
One screen, live from your Supabase. Findings recompute for the selected range & clinic. Aggregates only — no patient identifiers.
–
Company health
🎯 Needs a decision the calls that need leadership · click to drill in
🏥 Clinic leaderboard strongest & weakest by health · click to open
🧭 Department pulse one headline number per function
The 10-second leadership view — company health, the decisions that need you, your best and worst clinics, and each department's headline. Live & aggregate.
🔀 Appointment status this period · booked vs moved vs cancelled
📈 Future Capacity booked patients per clinic per day · (providers)
Fewer
More booked
🎧 Scheduler volume bookings
🗂 Appointment types count
🛡 Insurance mix count
🩺 PCP coverage
Data stays in your self-hosted Supabase · Patient IDs are never shown here (aggregates only).
🪜 Completion funnel of visits that were due, how many were actually seen — and where the rest leaked
📉 Daily appointment flow booked · rescheduled · cancelled · no-show, per day
Booked
Rescheduled
Cancelled
No-show
🏥 By clinic rates — spot the outliers
📆 By weekday Mon–Sat pattern
Cancel = true cancellation · Reschedule = moved (not a loss) · No-show = booked but missed. Rates are of all appointments in the period. Aggregates only — no patient identifiers.
🛡️ Prevention plays where you're bleeding appointments — and the fix, ranked by how many it saves
📆 Loss by weekday which days bleed most
🎯 Loss hotspots worst clinic × day segments
Loss = no-show + cancellation. "Addressable" = appointments that would be saved if every clinic-day performed at the network-average loss rate — the realistic near-term prize. Plays target the highest-excess segments; the driver (no-show vs cancel) picks the intervention. Aggregates only — no patient identifiers.
🎯 No-show risk — next 3 days every upcoming appointment scored, highest risk first · click a patient to open the chart
Scoring upcoming appointments…
Risk 0–100 from patient no-show history + slot-pattern risk + contact/confirmation status + lead time — every score carries its reasons, never a bare number. Work the reds first: confirm by call, verify the number, or double-book a buffer. Model:
docs/noshow_risk_model.md. Patient MRN only.🗂 Service mix every appointment type · share of all booked visits
🩺 AWV & Wellness by clinic who is under-booking preventive visits
📈 AWV daily trend AWV vs all other appointments
AWVOther
AWV = Annual Wellness Visit (Medicare) · Wellness = other preventive visits. Clinics far below the team AWV share are outreach/booking opportunities. Aggregates only — no patient identifiers.
☁ Nextcloud mirror push AWV over-limit · Medicaid over-cap · Medicare to Nextcloud for the dates you choose
The on-prem push (every 15 min) mirrors only appointments dated in this window — set it like you would a filter. Leave a field blank for no bound. Data only — Patient/provider IDs, no names.
🚦 AWV + Wellness over limit 4 per provider · day · clinic — full view on the AWV tab
🩺 Provider caps — Medicare AWV & Medicaid per provider · days over the daily cap flagged red
Loading Medicare / AWV data…
📋 Cap rules
AWV (Medicare) = the Annual Wellness Visit. Cap policy ports the old dashboard's rules — Medicaid tiered per provider (3/day for the 5 named providers, 5/day everyone else). Medicare has NO cap — its volume is shown as data for oversight, never flagged. The separate AWV + Wellness over-limit above is 4 per provider · day · clinic. Aggregates only — no patient names.
🩺 AWV & Wellness compliance every sheet on screen = the Excel you download
Loading AWV compliance…
Ports the old dashboard's AWV & Wellness compliance workbook — Over Limit · Over-Limit Detail · Cross-Clinic · Back-to-Back · Double-Booked · Provider Matrix · Medicaid Over / Detail · Medicare / Detail · All Alerts. Limit is 4 AWV/Wellness per provider · day · clinic; back-to-back = two consecutive AWV/Wellness slots 20 min apart. The screen is the export — same titles, columns, order and values. Aggregates & Patient IDs only — no names.
🏥 Clinic utilization booked vs capacity · lowest first = open capacity to fill
📉 Daily utilization how full each day is across all clinics
Open capacity (<70%)Healthy (70–100%)Over capacity (>100%)
📆 By weekday Mon–Sat fill pattern
Capacity = providers on that day × the clinic's daily target (Old Town/Falls Church/Woodbridge 20, Fredericksburg 18, Kingstown/Pentagon City/Richmond Hwy 17, Crystal City 16, Haymarket 13) — same targets as the KPI facility model. Utilization = booked ÷ capacity. Aggregates only.
🗺️ Fill forecast clinic × day · how full each upcoming day is — red = overflow, amber = empty slots
<50% — push bookings
50–100% — healthy
>100% — over capacity
🚨 Add coverage upcoming days already over capacity
📣 Booking runway under-filled days ranked by urgency — soonest & emptiest first
Forward view of already-booked appointments vs capacity for each upcoming clinic-day. Over-capacity days need more provider coverage or overflow booking; under-filled days are outbound-call targets. Aggregates only — no patient identifiers.
🏦 Payer mix top plans · share of insured visits
🗂 Coverage type HMO / Medicaid / PPO / …
🩺 Eligibility exposure by clinic PCP-required plans missing a PCP = billing risk
PCP-required = Medicaid + HMO plans (these require an assigned PCP for billing). "Req & no PCP" appointments are eligibility/billing-risk visits and should be worked in the Outreach list. Aggregates only — no patient identifiers.
📅 Weekly volume & utilization booked per week · bar height = fill
<70% util70–100%>100%
🪜 Completion-rate trend % of due visits seen, by week — higher is better
📉 Appointment-loss trend cancel + no-show %, by week — lower is better
🩺 AWV share trend preventive-visit % by week — higher is better
🔀 Loss-rate movers who moved the needle — latest week vs prior
Weeks start Monday. Each metric compares the latest week to the one before (▲/▼ colored by whether the direction is good). Movers rank clinics by change in loss rate (cancel + no-show %) between the last two complete weeks. Weeks are within the selected range/clinic. Aggregates only — no patient identifiers.
🏥 Clinic scorecard every clinic scored across all dimensions · click a column to sort
A single composite health score per clinic (same weighting as the Command Center) plus the underlying metrics, so you can see at a glance which clinic is strongest and which needs a manager's attention. Aggregates only — no patient identifiers.
🩻 Provider scorecard
Loading provider stats…
Per physician: total appointments, live upcoming load, completion (seen ÷ due), no-show and cancel rates on past visits, and AWV share. Completion / no-show / cancel are past-only; AWV share is over all appointments. Click a column header to sort. Aggregates only — no patient identifiers.
🩺 PCP Outreach
Loading outreach list…
Patients with an upcoming booked appointment and no PCP on record. Edits save instantly and sync to everyone (list auto-refreshes every 10s).
📞 Call Worklist
Loading call list…
Patients needing a call. Log each attempt (outcome + comment) — case status updates automatically after a resolving outcome or 3 attempts. Auto-refreshes every 10s.
🎧 Scheduler Diagnostics
Loading scheduler stats…
Bookings per scheduler with reschedule / cancel / no-show rates. Click a column header to sort.
🧑💻 Team throughput
Loading team activity…
🕘 Activity feed
Every action logged on the Risk, Call List, Outreach and Medicare tabs lands here — who did what, when, for which patient (ID only). Auto-refreshes every 15s.
✍ QA Entry paste the Training & QA group text — parsed, PHI-scrubbed, deduped
🧭 Compliance & issue register from QA reviews · breaches first, open before resolved
Loading QA reviews…
📣 Team-wide training backlog
🎧 By scheduler recurring issues · breaches first
✅ Open follow-up tasks patient callbacks / fixes still open
Structured from free-text QA posts (reviewer · agent · account · issue · resolution). Patient MRN only — no patient names (PHI). Tiers: compliance/breach (HIPAA, false-outbound, protocol/safety) · action (billing, data, no-show) · coaching (soft skills). Pipeline:
docs/qa_intelligence_pipeline.md.👥 Users & roles who can access and manage the portal
Loading users…
Roles — owner: full control incl. assigning roles · admin: manage users & settings · user: operational access. Create accounts in Supabase (Authentication → Add user → Create new user, tick Auto Confirm), then set their role here. Needs docs/roles.sql applied. No patient names anywhere.
🏅 Team KPI scorecard Final KPI per agent — checkouts · appointments · outbound · QA · balance · conduct
Computing KPI…
Model: each component % = min(100, actual ÷ (weighted-days × target)); weighted days = Mon–Sat with Saturday counted as 0.5. Individual % = weighted average (Checkouts 20 · Appointments 15 · Outbound 15 · QA 15 · Balance 10 · Conduct 10). Final KPI = Individual 75% + Team 25% (facility/active-time/open-case components populate when their exports are loaded). ≥85 performing · <75 needs focus. Agent names are staff, not patients.
📋 Day End — checkout upload / paste paste the Athena Day End Review page or drop the Excel — the site cleans it
Patient IDs only — names are never shown or exported (PHI). Status: any "Missing" → Checked Out · "Not checked in" → Not Checked In. Providers with <4 patients on a date·clinic prompt "did they come in?" before sync (answers are shared & the newest wins). Sync to Schedule reconciles into the Schedule for the chosen date: Not Checked In + Missing → Checked Out, protected statuses never changed, missing patients added, file time changes applied in place. Idempotent — syncing twice changes nothing.
🏥 By clinic — the chosen period booked · checked out · losses; click a clinic to drill
Loading loss ledger…
🧑⚕️ By provider worst first
🎧 By agent booking errors · cancellations entered · confirmations
📉 Loss classes over time per day in range
One Loss Ledger (loss_events) — every chart here is counted once. Booking-error rows live on the AWV tab (click to drill there, filtered) — never copied here. Visit outcomes become final after the Day End sync; slot-refilled / patient-rebooked re-evaluate nightly. Patient ID only. No dollar values unless you set them in Manage. Needs
docs/loss_events.sql applied.🗓 Schedule the daily schedule — real appointments, shared & audited
⇪ Import from old dashboard — export the 💾 Backup JSON there, drop it here. Re-runnable; adds nothing the second time. Patient names are dropped.
Loading schedule…
Patient ID only — never names (PHI). Statuses normalize on the way in ("Missing" → Checked Out; case/hyphens ignored). Not-arrived statuses capture Cancelled By · Reason · Validity · Department · Type → Sub-type. Every edit is audited; edits sync live to everyone. Import merges Manage lists by name (never replaces).