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.
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.
Mechanism detail lives in the repository:
src/lib/templates.ts, src/lib/completeness.ts,
docs/intended-use.md.