FHIR vs HL7: Which Healthcare Interoperability Standard to Choose
Healthcare interoperability standards are often spoken about as a confusing alphabet soup. They're actually a fairly clean evolution. Here's the working developer's view.
Key takeaways
- HL7 v2 is the legacy messaging standard. Still everywhere, especially in hospital systems.
- HL7 v3 / CDA is the document-based standard. Used in some clinical document exchange.
- FHIR is the modern, JSON-based, REST-oriented standard. The future, increasingly the present.
- For new builds: FHIR. For integration with existing hospital infrastructure: you'll touch HL7 v2.
What each standard actually is
HL7 v2
Pipe-delimited messages, 1980s/90s era. Looks like: MSH|^~\&|HOSP|FAC|LAB|FAC|20260518.... Used for ADT (admit/discharge/transfer), lab orders, lab results, scheduling. Almost every hospital information system speaks it.
HL7 v3 / CDA
Document-based, XML. Clinical Document Architecture (CDA) wraps a clinical narrative with structured metadata. Used for discharge summaries, referrals, continuity-of-care documents. Heavyweight.
FHIR
Fast Healthcare Interoperability Resources. JSON (or XML), REST-style. A patient is GET /Patient/123. Resources include Patient, Observation, Encounter, Condition, MedicationRequest, DiagnosticReport, etc. Designed for modern apps.
Which to use when
New consumer-facing health app: FHIR (R4 or R5). Done.
Integrating with an Indian hospital information system: You'll likely touch HL7 v2 for ADT and lab data, even if your own model is FHIR. Build a translation layer.
Cross-system document exchange (referrals, discharge summaries): FHIR Bundle or CDA, depending on the receiver.
ABDM in India: FHIR R4 with Indian profiles (called NDHM FHIR Implementation Guide).
Practical advice
Model your internal data in FHIR. Have an adapter layer that translates to/from HL7 v2 when you talk to a legacy system. This insulates your app from legacy integrations and makes future migrations easier.
Common pitfalls
Underestimating HL7 v2 parsing complexity. The standard is decades old, "extensions" are common, every vendor has their own dialect. Use a proper library (HL7apy, NHapi).
Overestimating FHIR maturity in your stack. Servers, libraries, and toolchains are mature in some languages (Java, .NET, Python) and less so in others. Verify before committing.
What we recommend
FHIR-first for everything new. HL7 v2 adapter where you must integrate with legacy hospital systems. Use FHIR profiles that match your locale (ABDM in India, US Core in the US, etc.).
FAQs
Is HL7 v3 dead? Mostly. CDA documents still exist; v3 messaging is rare in new work.
What's SMART on FHIR? Authorization protocol over FHIR for healthcare apps. Worth using if you serve clinicians.
DICOM? Different beast, imaging. FHIR has bridges via ImagingStudy resource.
What about IHE profiles? Higher-level workflows on top of FHIR/HL7. Important in some institutional contexts.
