feat(canopy-reporting): wire CMS-416 EPSDT screening data from clinical systems

Context

extract_cms416 in services/canopy-reporting/src/reporting/medicaid.rs:269-336 sets eligible_for_screening = enrolled (line 332 comment: "screening data from clinical systems"). HTTP handler at api/mod.rs:616 returns "status": "generated (screening fields NULL — requires clinical systems)" — admits the gap to callers.

CMS-416 is the annual EPSDT participation report. Without clinical-system integration, the participation rate is uncomputable.

Acceptance criteria

  • Clinical-systems integration shape decided (HL7? FHIR? state immunization registry?)
  • Screening completion data populated per age band (per CMS-416 schema)
  • Periodic + interperiodic screening counts populated
  • Eligible-for-screening computed from real eligibility windows (not enrolled-as-proxy)
  • Integration test covering one non-NULL age band
  • HTTP handler stops emitting placeholder status string
  • CHANGELOG entry under Changed

Surfaced by

Multi-agent plan-vs-code audit, 2026-05-05.