
The FHIR data model has five concepts that shape healthcare data modeling.
Concept 1: Resources as semantic units. Patient, Encounter, Observation are complete units. Encapsulate related data.
Concept 2: References vs. contained. Related resources link via reference fields. Contained embeds inline.
Concept 3: Profiles as constraints. Profiles narrow base resources.
Concept 4: Extensions add without breaking. Custom fields via Extension.
Concept 5: Bundles group with intent. Bundle type dictates semantics.
Data handling implications
1. Resource-centric queries. 2. Reference resolution via _include. 3. Terminology awareness. 4. Version awareness (ETag/If-Match). 5. Profile awareness.
Common data model mistakes
1. Treating resources as generic JSON. 2. Ignoring reference type constraints. 3. Custom fields without extensions. 4. Skipping profile constraints. 5. Bundle type confusion.
Tools for exploration
1. HL7 FHIR spec — reference. 2. Server CapabilityStatement — what your server supports. 3. $validate — verify against profile. 4. Inferno — conformance testing.
Vendor documentation
1. HAPI FHIR — full spec + operational guide. 2. Aidbox — architecture + patterns. 3. Medplum — modern patterns. 4. Firely — .NET-specific guidance.
Advanced topics
1. StructureMap for cross-profile transformation. 2. ConceptMap for terminology translation. 3. CQL for clinical logic. 4. GraphQL over FHIR. 5. FHIRPath expressions.
FHIR data model concepts, once understood, make everything else consistent. Get these five right and specific implementations follow.
