
Structured Data Capture (SDC) is where clinical form data enters FHIR. Understanding what production SDC deployments look like separates aspirations from reality.
What ships in production
1. Pre-visit intake forms. Patient completes Questionnaire before arrival; QuestionnaireResponse feeds check-in. 2. Post-visit surveys. Standardized PROMs (PROMIS, PHQ-9) delivered via Questionnaire. 3. Clinician documentation. Complex assessments (initial evaluations, treatment plans) captured as SDC forms. 4. Consent capture. Consent modeled as Questionnaire; response generates Consent resource. 5. Care plan intake. Longitudinal chronic condition Questionnaires.
What doesn't ship (yet)
1. Complex real-time clinical decision support in forms. SDC's expression language is powerful but complex CDS still uses CDS Hooks. 2. Multi-participant forms. Multiple clinicians filling one form is uncommon. 3. Time-series form data. Longitudinal Questionnaire is rare; individual instances are the norm.
Extraction pattern
SDC's $extract operation transforms QuestionnaireResponse into structured resources. Two patterns:
1. Definition-based — each item has definition URL. Extractor walks Questionnaire, maps answers to target elements. 2. StructureMap-based — separate StructureMap defines transformation. More flexible, harder to author.
Vendor tooling
LHC-Forms is the NLM reference implementation; Aidbox Formbox provides commercial rendering + extraction; Smile CDR SDC module bundles with HAPI.
Common SDC deployment mistakes
1. Complex expression logic → renderer fails silently. 2. Missing $extract → structured data doesn't flow to downstream systems. 3. Multi-page without save → completion rate below 30%. 4. No mobile support → 60% of patient completions fail. 5. Terminology binding via runtime $expand → latency spikes.
SDC is production-mature for the specific use cases it fits. Sites that pick clean patterns and appropriate tools deliver reliably.
