Status: ✅ Implemented
Last Verified: 2026-02-19
Spec Reference: CL-07-suicide-risk-screening-safety-planning.md
Last Updated: 2026-02-19 (PF-33 pattern decision formally documented; status updated to Implemented)
Overview
CL-07 defines suicide risk screening (C-SSRS, PHQ-9 Item 9, ASQ, SAFE-T), risk classification (low/moderate/high/imminent), Stanley-Brown safety planning (6 components), and environmental risk assessments for inpatient/residential settings. It depends on PF-01, PF-02, PF-10, PF-33, and CL-01. Cross-core: PF-10 (alerts), PF-33/SignatureCanvas (signatures), CL-01 (risk flag on chart), CL-13 (crisis intervention linkage).Quick Reference
Integration Points (from Spec)
Event / Notification Contracts
cl_risk_screening_high_risk (Errata E-5)
Trigger: Screening saved with risk_level IN ('high', 'imminent')Registered in:
fw_workflow_events (Task T1.6)KnownEventName:
'cl_risk_screening_high_risk'
Payload:
cl_safety_plan_signed (Errata E-5)
Trigger: Patient or clinician signature captured on safety planRegistered in:
fw_workflow_events (Task T1.6)KnownEventName:
'cl_safety_plan_signed'
Payload:
PF-33 / SignatureCanvas — Pattern Decision & Implementation (Errata E-6)
Decision
Pattern A (SignatureCanvas) is used for CL-07 v1 safety plan signatures. Pattern B (pf_signature_requests formal workflow) is deferred to v2.
Decision Date: 2026-02-19 (Errata E-6, Pre-Implementation Review FINDING-03)
Rationale
Pattern B Upgrade Path (v2)
If a future requirement emerges for remote/asynchronous patient signing (e.g., telehealth-delivered safety planning), upgrade to Pattern B:- Add
patient_signature_request_id UUID REFERENCES pf_signature_requests(id)andclinician_signature_request_id UUID REFERENCES pf_signature_requests(id)tocl_safety_plans. - Retain
patient_signature_data/clinician_signature_dataJSONB columns for backward compatibility with v1 records. - On completion,
pf_signature_requests.signature_idlinks to thepf_signaturesrow; read back to display signed state.
Pattern A Implementation
- Render
<SignatureCanvas>from@/platform/signatureswithin the safety plan form. - On completion, capture base64 image output (
dataUrl). - Update
cl_safety_plansrow viauseSignSafetyPlan:- Patient:
patient_signature_data = { image: dataUrl, captured_at: ISO8601 },patient_signed_at = now() - Clinician:
clinician_signature_data = { image: dataUrl, captured_at: ISO8601 },clinician_signed_at = now()
- Patient:
- Publish
cl_safety_plan_signeddomain event (payload: IDs only — no image data).
pf_signature_requests rows are created in Pattern A.
Storage Schema (on cl_safety_plans)
CL-01 Risk Flag (Errata E-7)
The risk flag displayed on the patient chart is stored as a denormalized column oncl_patient_charts for performance (avoids N+1 on chart load).
Schema addition (CL-07 Phase 1 migration):
cl_risk_screenings, update parent chart:
['cl', 'patient_charts', chartId] query key.
CL-13 Bidirectional Relationship
CL-13 (Crisis Intervention) and CL-07 are bidirectionally coupled at the operational level:- CL-07 → CL-13: Risk screenings may trigger crisis intervention documentation (CL-13). Crisis episodes reference the triggering screening.
- CL-13 → CL-07:
cl_crisis_episodes.safety_plan_updated BOOLEANreferences the existence of a CL-07 safety plan record for the same chart (soft relationship, no FK). CL-13’s scope explicitly includes “Safety plan creation/update during crisis (CL-07).”
Security and RLS
- Tables:
cl_risk_screenings,cl_safety_plans,cl_environmental_assessments(per Errata E-1). - RLS: All three tables use
cl_has_org_access(organization_id, auth.uid())(two-argument form, Errata E-4) for SELECT/INSERT/UPDATE/DELETE. WITH CHECK required on UPDATE. No direct queries to RLS-protected tables in policies. - Permissions:
cl.risk_screening.view/create,cl.safety_plan.view/create/sign(sign =approvecategory),cl.environmental_assessment.view/create. Enforce at application layer viauseHasPermission. - PHI: Signature image data (
*_signature_data) is PHI — never log or expose in event payloads. Event payloads contain IDs only.
Common Mistakes
Related Docs
- CL-01 Patient Chart & Clinical Summary — Risk flag columns on chart
- CL-02 Comprehensive Assessments — CL-02 references CL-07 for risk workflows
- CL-13 Crisis Intervention spec — Bidirectional coupling with CL-07 (no separate integration stub; see spec and CL-07 errata)
- CROSS_CORE_INTEGRATIONS.md — Matrix entry for CL-07
CL-78 — suicide-risk block suite adapters (CL-75, shipped 2026-07-01)
Screen / assessment / safety-plan / CALM ship as CL-75 typed blocks (blocks/suicide) over the CL-07 cl_risk_screenings / cl_safety_plans tables (PR #2175), with the TJC NPSG.15.01.01 EP overlay, caring-contacts, and informed-refusal fields; resolved onto surfaces via getResolvedSurfaceBlocks.