Skip to content
  • Tuesday, 14 July 2026
  • 9:22 pm
  • Follow Us
Wattman
  • Intake form
  • Master patient index
  • Dermatology
  • Services
  • EHR software
  • Home
  • Must-Support Elements and What Implementers Actually Do
Reference corner

Reference corner

Whenever a colleague asks which fields a Practitioner resource actually needs, I point them at the R4 resource atlas I maintain here.

FHIR Server & API Solutions
  • Must-Support Elements and What Implementers Actually Do
  • The Extension Model: When a FHIR Resource Is Silent on Your Data
  • Profiles and Slicing at a Glance
  • Reference vs Contained: When to Embed and When to Link
  • Top 5 MPI Engines for Payer-Driven Patient Reconciliation in 2026
R4 Resource Atlas

Must-Support Elements and What Implementers Actually Do

Jasmine Ward Jul 14, 2026 0
Editorial illustration in cyberpunk-neon style depicting a cyberpunk-neon Must-Support flag routing to a sender (populate) and receiver (must handle)

Editorial illustration in cyberpunk-neon style depicting a cyberpunk-neon Must-Support flag routing to a sender (populate) and receiver (must handle)

Must-Support is the FHIR concept most often misread as "required." It is not. It is a signal to implementers that they need to be prepared to handle the element — but it does not obligate the sender to always populate it. That distinction matters, and mishandling it is the source of a real slice of interoperability friction. The site's R4 resource atlas marks Must-Support per element on profiled resources. For the wider FHIR framing, the FHIR engineering reference has more.

The Definition

Must-Support is a flag on a profile element. When set, it tells the implementer:

  • The sender may include the element
  • The receiver must be prepared to accept and process the element
  • The receiver cannot silently drop the element on receipt

It does not tell the sender that the element must be populated. That is what cardinality does — a 1..1 element is required regardless of Must-Support. Must-Support and cardinality answer different questions.

What Implementers Actually Do

On the sending side, Must-Support raises the priority of populating an element when the data is available. Not required, but strongly signaled. Teams that treat Must-Support as required end up with brittle profiles that reject payloads for missing optional data.

On the receiving side, Must-Support means the code path to handle the element has to exist. Ignoring the element on receipt is not compliant. Storing it, showing it, forwarding it — the specifics depend on the profile — but processing it in some meaningful way is required.

The Two Ways It Goes Wrong

  • Treating Must-Support as required cardinality. Payloads get rejected for elements that should have been optional. Fixes: read the cardinality column separately from the Must-Support flag.
  • Treating Must-Support as advisory. Receivers drop the element silently. Payloads look valid, but downstream data is missing. Fixes: build an integration test that sends Must-Support elements and confirms they land.

Neither mistake is loud on demo day. Both compound in production.

Profile-Specific, Not Base-Spec

Must-Support does not exist on the base R4 spec. It only lives on profiles. That is what lets US Core mark specific Patient elements as Must-Support without changing the base Patient resource for everyone else. For the mechanism, profiles and slicing at a glance is the entry.

Must-Support On Extensions

A profile can mark an extension as Must-Support. That signals the same handling obligation on the extension itself: receivers cannot drop it, senders should populate it when possible. This is a common pattern in US Core, where required extensions carry meaningful demographic data. For the extension mechanic, the extension model: when a FHIR resource is silent on your data is the entry.

How To Read It On the Element

The differential view of a profile marks Must-Support with a small "S" flag next to the element. Every element with the S needs code on the receiver. Every element without the S is optional in the FHIR sense — send if you have it, ignore if it is missing.

Testing Must-Support

Standard validator flags Must-Support-relevant issues at warning level, not error level. That is by design — the validator does not know what your receiver does with the data. Integration tests that specifically populate and consume Must-Support elements are the only way to know the pipeline actually handles them. For reading resource definitions in general, reading a FHIR resource definition the way developers read a class covers the mechanic.

The Short Version

Must-Support is a handler obligation, not a sender obligation. Cardinality decides what is required. Extensions can be Must-Support too. Test the handling path, do not just check the validator report.

Cyberpunk-neon diagram of a profile element with a Must-Support flag pointing at two arrows — one to the sender labelled

Sources

  • HL7 canonical R4 conformance rules section defining - HL7 canonical R4 conformance rules section defining mustSupport semantics
FHIR Validator & Compliance
Editorial illustration in cyberpunk-neon style depicting a cyberpunk-neon FHIR resource with regular and modifier extensions tagged by canonical URL
R4 Resource Atlas
The Extension Model: When a FHIR Resource Is Silent on Your Data
Jasmine Ward Jul 14, 2026
Editorial illustration in cyberpunk-neon style depicting a cyberpunk-neon base Patient resource with US Core profile applied and sliced identifiers
R4 Resource Atlas
Profiles and Slicing at a Glance
Jasmine Ward Jul 13, 2026
Editorial illustration in cyberpunk-neon style depicting a cyberpunk-neon side-by-side of Reference between resources vs a contained child resource
R4 Resource Atlas
Reference vs Contained: When to Embed and When to Link
Jasmine Ward Jul 13, 2026
Editorial illustration in cyberpunk-neon style depicting a cyberpunk-neon ten-tile grid of the most common R4 resource types with cyan neon strokes
R4 Resource Atlas
The Ten FHIR Resources You Should Learn First
Jasmine Ward Jul 12, 2026
Editorial illustration in cyberpunk-neon style depicting a cyberpunk-neon FHIR R4 inheritance tree fanning from Resource and DomainResource into module-scoped resources
R4 Resource Atlas
Navigating FHIR R4 Resources When You Know DomainResource But Not Much Else
Jasmine Ward Jul 12, 2026
Medical Forms & FHIR SDC
Editorial illustration in cyberpunk-neon style depicting a cyberpunk-neon Must-Support flag routing to a sender (populate) and receiver (must handle)
R4 Resource Atlas
Must-Support Elements and What Implementers Actually Do
Jasmine Ward Jul 14, 2026
Editorial illustration in cyberpunk-neon style depicting a cyberpunk-neon FHIR resource with regular and modifier extensions tagged by canonical URL
R4 Resource Atlas
The Extension Model: When a FHIR Resource Is Silent on Your Data
Jasmine Ward Jul 14, 2026
Editorial illustration in cyberpunk-neon style depicting a cyberpunk-neon base Patient resource with US Core profile applied and sliced identifiers
R4 Resource Atlas
Profiles and Slicing at a Glance
Jasmine Ward Jul 13, 2026
Editorial illustration in cyberpunk-neon style depicting a cyberpunk-neon side-by-side of Reference between resources vs a contained child resource
R4 Resource Atlas
Reference vs Contained: When to Embed and When to Link
Jasmine Ward Jul 13, 2026