Enforcement model

How enforcement works

The draft is the beginning. The refusals are the product.

Most documentation tools generate text and hope you catch the gaps. MedSeek treats each document type as a checklist with gates: a draft is assembled field by field, and a field that cannot be evidenced stays open. The output always carries three things - a review banner, the structured draft, and an explicit list of what is missing or unknown.

BLOCKED
pending result - no named owner
PASSED
owner assigned - summary completes

A discharge that waits

Call discharge_summary_draft while two pending results have no named owner and it does not pass: the result names the unowned pendings and stops. Assign owners in the follow-up call and the summary completes, with every checklist state shown alongside. The Joint Commission-flavored field set comes from the template registry; the refusal is enforced by code.

Admission that cannot skip allergies

The H&P scaffold requires explicit allergy status and medication reconciliation. "Per family" and blank fields are not evidence; they are gaps on the list.

Handovers with named unknowns

SBAR and I-PASS scaffolds return structure plus missing_or_unknown: code status, pending cultures, who owns follow-up. What the source note never said becomes visible instead of invented.

Patient instructions with a reading target

patient_instructions_draft scores drafts against Flesch- Kincaid and SMOG toward a 6th-8th grade band and lists leftover jargon. The formulas are asserted directly in unit tests.

Lookups: cited or silent

Drug labels, patient education, PubMed, and ClinicalTrials.gov results carry source, identifier, link, and retrieval date. An empty result says so instead of filling the gap from memory.

Boundary: enforcement applies to structure and process. It never ranks differentials, suggests severity scores, assigns billing code levels, or handles time-critical decisions - those stay with the clinician by design.

Mechanism detail lives in the repository: src/lib/templates.ts, src/lib/completeness.ts, docs/intended-use.md.