Goal
A "Risk Outlook" widget on the programs overview surfacing predictive non-compliance.
Desired behavior
- Upcoming non-compliance: currently COMPLIANT employees whose exam expires in next 30 days
- Repeat non-compliers: employees with ≥3 OVERDUE/MISSING_DATA outcomes
- Site-level rates: current compliance per site, sorted by lowest first
GET /api/programs/{measureId}/risk-outlook?horizonDays=30
Files
backend/src/main/java/com/workwell/run/RiskOutlookService.java (new)
backend/src/main/java/com/workwell/web/ProgramsController.java — endpoint
frontend/app/(dashboard)/programs/page.tsx — Risk Outlook card
Acceptance criteria
Spec: docs/sprints/SPRINT_07_overdelivery_features.md §7.3
Goal
A "Risk Outlook" widget on the programs overview surfacing predictive non-compliance.
Desired behavior
GET /api/programs/{measureId}/risk-outlook?horizonDays=30Files
backend/src/main/java/com/workwell/run/RiskOutlookService.java(new)backend/src/main/java/com/workwell/web/ProgramsController.java— endpointfrontend/app/(dashboard)/programs/page.tsx— Risk Outlook cardAcceptance criteria
/employees/[externalId]Spec: docs/sprints/SPRINT_07_overdelivery_features.md §7.3