Status: ✅ Implemented
Spec Reference: CL-18-sdoh-screening-social-needs.md
Last Updated: 2026-02-23
Last Verified: 2026-02-23
Overview
CL-18 adds SDOH screening (e.g. PRAPARE, AHC-HRSN), social needs tracking, community resource referrals, and ICD-10-CM Z-code (Z55–Z65) documentation. Integration is via patient chart (CL-01), comprehensive assessment (CL-02), PF-70 code library, and an optional event for analytics/workflow.Integration Points (from Spec)
API / Data Contracts
- Screenings:
cl_sdoh_screenings(chart_id, instrument, screened_at, screened_by, responses JSONB, needs_identified[], custom_fields). No public REST API; access via Supabase client and RLS. - Referrals:
cl_social_referrals(chart_id, screening_id, resource_name, resource_type, need_category, status, referred_at, referred_by, outcome_notes, outcome_at, custom_fields). Same access pattern. - Z-codes: PF-70 code library provides type-ahead and validation for Z55–Z65; link from screening or problem list (CL-01).
Event Contracts
- Published (optional):
cl_sdoh_screening_completed— for analytics/workflow.
Consumers MUST resolve patient identity from
chart_id; patient_id is not in the payload (see EVENT_CONTRACTS.md).
- Consumed: None for MVP.
Security and RLS
- Tables:
cl_sdoh_screenings,cl_social_referrals— RLS enabled; org-scoped via SECURITY DEFINER helpers; UPDATE policies with WITH CHECK per constitution §5.2.4. - PHI: Screening responses and referral data are PHI; no PHI in logs or external AI.
- Permissions:
cl.sdoh_screenings.view/.create,cl.social_referrals.view/.create/.update; seed via migration (PF-30).
Related Docs
- CL-18 Spec
- CL-01 Patient Chart — Chart shell, problem list
- CL-02 Comprehensive Assessments — Assessment linkage
- PF-70 Medical Terminology — Z-code library
- docs/architecture/integrations/index.md
CL-18-EN-01 — SDOH/HRSN screening block adapter (CL-75, shipped 2026-07-02)
The SDOH/HRSN screening (justice-legal domain + Z55–Z65 crosswalk-as-data) ships as a CL-75 typed block (sdoh-adapter) over cl_sdoh_screenings (PR #2212), resolved onto surfaces via getResolvedSurfaceBlocks; the closed-loop referral surface in this doc is its downstream consumer.