Release 5 Ballot

This page is part of the FHIR Specification (v5.0.0-ballot: FHIR R5 Ballot Preview). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3 R2

FHIR Infrastructure Work GroupMaturity Level: N/AStandards Status: Informative

Welcome to the FHIR (Fast Healthcare Interoperability Resources) Specification, which is a standard for exchanging healthcare information electronically. This page provides an overview of the standard, and serves as a road map for first-time readers of the specification to help find your way around FHIR quickly.

Healthcare records are increasingly becoming digitized. As patients move around the healthcare ecosystem, their electronic health records must be available, discoverable, and understandable. Further, to support automated clinical decision support and other machine-based processing, the data must also be structured and standardized. (See Coming digital challenges in healthcare)

HL7 has been addressing these challenges by producing healthcare data exchange and information modeling standards for over 20 years. FHIR is a new specification based on emerging industry approaches, but informed by years of lessons around requirements, successes and challenges gained through defining and implementing HL7 v2 , HL7 v3 and the RIM, and CDA . FHIR can be used as a stand-alone data exchange standard, but can and will also be used in partnership with existing widely used standards. (See Comparing FHIR to other HL7 standards)

FHIR aims to simplify implementation without sacrificing information integrity. It leverages existing logical and theoretical models to provide a consistent, easy to implement, and rigorous mechanism for exchanging data between healthcare applications. FHIR has built-in mechanisms for traceability to the HL7 RIM and other important content models. This ensures alignment to HL7's previously defined patterns and best practices without requiring the implementer to have intimate knowledge of the RIM or any HL7 v3 derivations. (See Comparing FHIR to other HL7 standards)

The basic building block in FHIR is a Resource. All exchangeable content is defined as a resource. Resources all share the following set of characteristics:

The philosophy behind FHIR is to build a base set of resources that, either by themselves or when combined, satisfy the majority of common use cases. FHIR resources aim to define the information contents and structure for the core information set that is shared by most implementations. There is a built-in extension mechanism to cover the remaining content as needed.

FHIR modeling uses a composition approach. In comparison, HL7 v3 modeling is based on "model by constraint" (see Comparing FHIR to other HL7 standards). With FHIR, specific use cases are usually implemented by combining resources together through the use of resource references. Although a single resource might be useful by itself for a given use case, it is more common that resources will be combined and tailored to meet use case specific requirements. Two special kinds of resources are used to describe how resources are defined and used:

  • Capability Statement - describes the interfaces that an implementation exposes for exchange of data
  • StructureDefinition - provide additional rules that serve to constrain the optionality, cardinality, terminology bindings, datatypes and extensions defined in the resources used by the implementation

Broadly, the FHIR specification is broken up into a set of modules:

  • Foundation: The basic definitional infrastructure on which the rest of the specification is built
  • Implementer Support: Services to help implementers make use of the specification
  • Security & Privacy: Documentation and services to create and maintain security, integrity and privacy
  • Conformance: How to test conformance to the specification, and define implementation guides
  • Terminology: Use and support of terminologies and related artifacts
  • Linked Data: Defined methods of exchange for resources
  • Administration: Basic resources for tracking patients, practitioners, organizations, devices, substances, etc.
  • Clinical: Core clinical content such as problems, allergies, and the care process (care plans, referrals) + more
  • Medications: Medication management and immunization tracking
  • Diagnostics: Observations, Diagnostic reports and requests + related content
  • Workflow: Managing the process of care, and technical artifacts to do with obligation management
  • Financial: Billing and Claiming support
  • Clinical Reasoning: Clinical Decision Support and Quality Measures
  • Medication Definition: Detailed medication definitions, for regulatory and drug dictionary use

Resources have a wide range of uses, from pure clinical content such as care plans and diagnostic reports to pure infrastructure such as Message Header and Capability Statements. They all share common technical characteristics (see below for a more formal definition), but they are used in totally different fashions. Note that you do not have to use REST to make use of resources.

The best place to start is to quickly read the Resources list to get a sense of what resources exist and then look at the Patient resource definition to see what resource definitions look like, and then read these background pages:

These header tabs found through-out the specification are important, and many readers miss them:


Resources and the datatypes that they use are presented in a concise easy to read XML-like format, but they also have detailed descriptions of their contents. In addition, most resources are mapped to several different formats, including HL7 v2 , the HL7 v3 RIM, CDA , DICOM, and others. Also, all resources come with at least one example (sometimes many more) and, where appropriate, with profiles that describe their use in specific circumstances. Finally, some resources include notes that help implementers understand the design rationale underlying them.

While intended to be consumable by a variety of audiences, the FHIR specification is targeted to the implementation community - those who will actually write the software that uses the specification. To help meet the needs of the implementation community, the editors have strived to keep the specification concise to reduce the amount of reading that must be done before writing useful code. For this reason, information that is not essential to the implementation process, such as considered alternatives, points of contention, future plans, etc. have been excluded from this specification. As well, it is likely that from time-to-time, implementers will encounter situations where the specification is unclear or incomplete. Finally, there may be circumstances where the specification is broken or where a change could allow it to better meet implementer needs.

HL7 has therefore provided a number of mechanisms through which additional information about FHIR can be sought and maintained and through which support and requests for change can be made.

The FHIR project team also maintains a set of Confluence pages where development processes, methodology and design decisions are documented. Implementers and others can also contribute to Confluence to provide additional guidance and supplemental information not found in the specification. Note that Confluence content is not authoritative and is not relevant for determining conformance to the FHIR specification. As well, some Confluence content might not be up to date with the most recent version of the FHIR specification.

Pages defined include FHIR methodology , use of the FHIR design tools , etc. To explore the FHIR Confluence pages, you can start at the root page

Formal requests for change can be submitted here . (There's a link at the bottom of each page as well.) These will be reviewed by the appropriate work group and a decision made on their incorporation into the specification, including which release (if any) they will be part of.

In addition to the above mechanisms, HL7 provides a Stack Overflow tag, list servers and online chat system to provide various levels of implementer support and engagement. Instructions for accessing these other mechanisms (and instructions for how best to make use of them) can be found at the Support Links .