RED At Risk: SUPPLY_LAPSED, VISIT_REQUIRED, RENEWAL_CRITICAL
AMBER Action Needed: RENEWAL_ELEVATED, RENEWAL_SOON, TRANSFER_PENDING
GREEN: Clear to Ship (RESUPPLY_READY), On Track (ACTIVE)
Filter tabs updated to match 3-tier model.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- WorklistTable: consolidate 9 filter tabs to 8 matching 7-state labels
(Docs Required, Escalate, Confirm Appt., Begin Outreach, Clear to Ship,
New Patient, On Track) + add combined "escalate" filter key for
RENEWAL_CRITICAL + VISIT_REQUIRED
- Sidebar: fix broken filter keys (REFILL_WINDOW/VISIT_DUE/OUT_OF_COVERAGE
never matched any r.flag value) - replace with SUPPLY_LAPSED, escalate,
RESUPPLY_READY; update labels to 7-state names
- App: rename Sidebar props to match new framework; update stat cards to
Needs Attention / Outreach in Progress / Clear to Ship
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add _build_reason() to backend — per-patient reason strings with specific
day counts (e.g. "Supply lapsed 70 days ago. Prescriber contact required.")
- Add reason field to RecordOut model and backend /api/export CSV
- Fix export column headers: Coverage End Date → Resupply End Date,
Days Until Coverage End → Days Until Resupply End
- Pass reason through apiRecordToLocal in frontend api.js
- Display reason as muted sub-line under status badge in WorklistTable
- Add reason column to client-side CSVExport
- Add signal-ui React source to repo (was untracked)
- CLAUDE.md: add Billing and CMS integrations to Phase 2 deferred table
- research: restore Section 14 stat verification (May 23 recovery)
Deployed to Railway production — health check confirmed live.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>