HL7 FHIR

FHIR (Fast Healthcare Interoperability Resources) is a standard developed by HL7 International for exchanging healthcare information electronically. Published as a Standard for Trial Use (STU) with R4 achieving Normative status for core resources in 2019, FHIR defines a set of resources, a RESTful API, and data types for representing clinical and administrative healthcare data. FHIR supports JSON, XML, and RDF serialization formats.

Common FHIR Resources

FHIR organizes healthcare data into discrete resources, each representing a specific clinical or administrative concept. Resources are the fundamental unit of interoperability in FHIR. Each resource has a defined structure, a set of data elements, and a standard RESTful API for CRUD operations.

ResourceCategoryDescription
PatientIdentificationDemographics and administrative information about an individual receiving care or other health-related services.
ObservationClinicalMeasurements and simple assertions about a patient, device, or other subject. Covers vital signs, lab results, and clinical findings.
ConditionClinicalA clinical condition, problem, diagnosis, or other event, situation, issue, or clinical concept that has risen to a level of concern.
MedicationRequestClinicalAn order or request for supply of medication and instructions for administration to a patient.
DiagnosticReportClinicalFindings and interpretation of diagnostic tests performed on patients, groups of patients, devices, and locations.
EncounterWorkflowAn interaction between a patient and healthcare provider(s) for the purpose of providing healthcare services or assessing the health status of a patient.
ProcedureClinicalAn action performed on or for a patient as part of the provision of care. Includes surgical procedures, diagnostic procedures, and therapeutic procedures.
AllergyIntoleranceClinicalRisk of harmful or undesirable physiological response uniquely associated with exposure to a substance. Covers drug allergies, food allergies, and environmental allergies.

Data Types

FHIR defines a type system for representing data elements within resources. Data types are categorized as primitive types (simple values), complex general-purpose types (reusable structures), metadata types (for describing knowledge artifacts), and special types (for references, narratives, and extensions).

CategoryTypes
Primitiveboolean, integer, string, decimal, uri, url, canonical, base64Binary, instant, date, dateTime, time, code, oid, id, markdown, unsignedInt, positiveInt, uuid
Complex GeneralRatio, Period, Range, Attachment, Identifier, HumanName, Address, ContactPoint, Coding, CodeableConcept, Quantity, Money, Duration, Age, Distance, Count
MetadataContactDetail, Contributor, DataRequirement, RelatedArtifact, UsageContext, TriggerDefinition, Expression, ParameterDefinition
SpecialReference, Narrative, Extension, Meta, Dosage, ElementDefinition

RESTful API

FHIR defines a RESTful API based on HTTP. Servers expose resources at predictable URLs following the pattern [base]/[resourceType]/[id]. The API supports standard HTTP methods for CRUD operations along with FHIR-specific operations.

InteractionHTTP MethodURL PatternDescription
readGET[base]/[type]/[id]Read the current state of a resource
vreadGET[base]/[type]/[id]/_history/[vid]Read a specific version of a resource
updatePUT[base]/[type]/[id]Update an existing resource by its id
patchPATCH[base]/[type]/[id]Partially update a resource
deleteDELETE[base]/[type]/[id]Delete a resource
createPOST[base]/[type]Create a new resource (server assigns id)
searchGET/POST[base]/[type]?paramsSearch resources by filter criteria
historyGET[base]/[type]/[id]/_historyRetrieve change history for a resource
transactionPOST[base]Execute a batch of operations atomically
capabilitiesGET[base]/metadataGet server capability statement

Search Parameters

FHIR search uses query parameters appended to resource URLs. Each resource type defines specific search parameters. Parameters have defined types that determine how values are matched.

TypeDescriptionExample
numberNumeric value searchObservation?value-quantity=gt5.4
dateDate/time value search with prefixes (eq, ne, gt, lt, ge, le, sa, eb, ap)Patient?birthdate=ge2000-01-01
stringString matching (starts-with by default)Patient?name=eve
tokenCode or identifier search, optionally scoped by systemCondition?code=http://snomed.info/sct|73211009
referenceReference to another resourceObservation?subject=Patient/123
compositeCombination of two parameter valuesObservation?code-value-quantity=http://loinc.org|8480-6$gt100
quantityNumeric value with optional system and unitObservation?value-quantity=5.4|http://unitsofmeasure.org|mg
uriURI value searchValueSet?url=http://hl7.org/fhir/ValueSet/example

FHIR Versions

FHIR has been published in multiple releases. R4 (v4.0.1) is the current widely adopted version and the first to include Normative content. R5 (v5.0.0) was published in March 2023 with additional Normative resources and improvements to subscriptions, workflow, and clinical reasoning.

VersionDateStatusNotes
DSTU12014-09SupersededInitial Draft Standard for Trial Use
DSTU22015-10SupersededWidely implemented; basis for Argonaut Project
STU32017-03SupersededStandard for Trial Use; significant maturity improvements
R4 (v4.0.1)2019-10Normative (core)First Normative release; required by US Core / ONC
R4B (v4.3.0)2022-05MixedIncremental update for R5 migration path
R5 (v5.0.0)2023-03Mixed STU/NormativeSubscriptions redesign, improved workflow resources

Official Specification

The authoritative FHIR specification is published by HL7 International at hl7.org/fhir. The US Core Implementation Guide, which defines FHIR profiles for US healthcare, is published at hl7.org/fhir/us/core. For SMART on FHIR authorization, see docs.smarthealthit.org.