ontology/notes/governance-phi.md and config/org_context.md — files you can read, review, and adapt.
5.1 · Inventory your identifiers — day one
governance-phi.md §0 classifies every direct identifier in the connected schema into exactly one role — and the key distinction is that using an identifier as a join key is not the same as outputting it:
| Identifier | Role |
|---|---|
Member/subscriber/beneficiary IDs (member_id, mbi, mrn) | Join key only — never in an output column, chart, label, or log |
| Names, SSN, full DOB, phone, email, address | Never output (DOB may be used internally for age math; only age/age-band leaves) |
| ZIP code | Aggregate only — first 3 digits max, and only where the area > 20,000 people |
Surrogate keys (person_id) | Join key; output only in explicitly authorized member-level views — a stable pseudonym is still an identifier |
Prompt
You’ll see: a per-column classification your compliance team signs off on — the rules are templates tuned to your regime, and they can be tightened freely but never loosened without a reviewed, attributable decision.
5.2 · Test the small-cell rule
Prompt
You’ll see: cells under
min_cell_size suppressed with an explanation — including complementary cells that would let someone back out a suppressed value. The starter default is 11 (the CMS standard), configured in config/org_context.md; common alternatives are 10 (some state agencies) or 30 (some internal policies). If suppression doesn’t fire, don’t move on — work the pre-flight check above; an unenforced rule you catch is a better demo than a rule you assumed.5.3 · Test sensitive-diagnosis gating
Prompt
You’ll see: Ana decline or constrain the request per the gating rules — and point to the policy file that governs it.
✅ Checkpoint
- Small-cell suppression fired and was explained
- A sensitive-category request was gated, with the governing file cited