Which FHIR version should DSP sit on?
Three axes matter: deployment reality (what EHRs actually speak),
conceptual fit (which version has the cleanest resources for DSP's shape),
and transport capability (Subscriptions, $graphql,
callbacks).
Matrix
Verdict
Recommendation Anchor DSP-FHIR at R4, borrow from R5 selectively via cross-version extensions, treat R6 as directional input into the IG's profile design.
Why this wins on all three axes:
- Deployment reality: Every partner EHR already speaks R4. Dragon's
external_callback_urlwill land on an R4 endpoint in the real world. Picking R5/R6 forces translators on day one. - Conceptual fit: R4's
Encounter,Condition,MedicationRequest,ServiceRequest,Composition,DocumentReference,Provenancecover ≈90% of DSP directly. The 10% gap is extension territory either way. - Transport: R4 + R4B topic-based Subscription +
$graphqlis enough for DSP's callback and projection patterns. R5's strongerSubscriptionTopiccan be referenced in the IG but not required.
The cost of R5 is broken EHR integration. The benefit of R5 (certainty, nicer medication model) is recoverable in R4 via cross-version extensions. The asymmetry is clear.
Where R5 earns its keep
Even with R4 as the base, these R5 elements are worth promoting to DSP-FHIR extensions:
MedicationRequest.renderedDosageInstruction(R5) → cleanly holds DSP's free-text "take one a day for 3 days, then twice a day".- R5
Ingredient/ClinicalUseDefinition— richer representation for compound medications and substitution rules. - R5's pattern for grading uncertainty (used by
Evidence.certainty) — informs the valueset for DSP'sconfidence-scoreextension even though no request-side element exists. SubscriptionTopic— formalizes Dragon's callback contract with partners.Condition.stage.assessmentricher cardinality.
Where R6 earns its keep (forward-looking)
- Continuing cleanup of narrative/structured boundary in
Composition— relevant for DSP's document_section / structured-resources split. - Expanded
ActorDefinition/ role modeling — DSP'spractitioner.rolesand accompanied_by become cleaner. - Better GraphQL/query-parameter profiling — useful when publishing the DSP canonical
$graphqlquery as part of the IG.
Do not wait for R6. By the time R6 is normative and adopted, DSP will have
shipped many revisions. The IG should be authored against R4 today, with a documented
migration path as R5/R6 become deployment-relevant.