Skip to content
FHIRVendors

FHIR Implementation: A Phased Playbook

A step-by-step plan for implementing FHIR, from discovery and implementation guide selection through mapping, terminology, testing, go-live and ongoing operations, plus the challenges that derail projects.

ImplementationUpdated 4 min readBy the FHIR Vendors Editorial Team

Key takeaways

  • Successful FHIR projects start with use cases and implementation guide selection, not with choosing a server.
  • Data mapping and terminology normalization usually consume more effort than building the API itself.
  • Test continuously with the HL7 FHIR Validator, Inferno and, where relevant, Touchstone, rather than saving conformance for the end.
  • Plan operations from day one: monitoring, version upgrades, IG updates and partner onboarding continue long after go-live.

What "implementing FHIR" actually means

"FHIR implementation" covers several kinds of project: exposing a FHIR API on top of an existing system, standing up a FHIR server as a clinical data repository, building an app that consumes EHR FHIR APIs, or meeting a regulatory requirement such as the CMS payer API rules. The phases below apply to all of them, though the weight of each phase changes. A consumer app spends more time on EHR-specific testing; a payer API program spends more on data mapping and conformance.

This playbook assumes you know the basics covered in What is FHIR?. If you are weighing whether to do the work in-house, see the FHIR implementation service page for what external partners typically take on.

Phase 1: Discovery and scoping

Write down concrete use cases before any technical decision: who needs which data, in what workflow, how fresh, and with what write-back. "Share clinical data with partners" is not a use case; "a care-management app reads active problems, medications and the last 12 months of lab results for attributed members daily" is.

  • Inventory source systems, existing HL7 v2 and CDA interfaces, and who owns each.
  • Identify regulatory drivers (ONC certification, CMS-9115-F, CMS-0057-F, national programs) and their deadlines.
  • List counterpart systems and confirm which FHIR versions and APIs they actually expose.
  • Agree on non-functional requirements: volumes, latency, availability, audit and data retention.
  • Define the security model early, including consent, patient matching and app registration.

Phase 2: Choose the version and implementation guides

Your implementation guides define what conformance means, so pick them deliberately. In the US, US Core is the baseline for clinical data, and other IGs layer on top of it: SMART App Launch for authorization, Bulk Data Access for population export, and the Da Vinci and CARIN guides for payer use cases. Outside the US, start from your country's national base profiles.

NeedTypical starting IGs
US clinical data accessUS Core, SMART App Launch
Population or analytics exportBulk Data Access (FHIR $export), plus US Core profiles for content
Payer patient access and provider access APIsCARIN Blue Button, Da Vinci PDex, US Core
Prior authorizationDa Vinci CRD, DTR and PAS
International or national programsThe relevant national base IG and the International Patient Summary where applicable
Examples of IG choices by use case

Pin specific IG versions in your requirements; US Core and others release new versions regularly, and regulations reference particular versions. Choose your FHIR release accordingly: R4 remains the default for regulated exchange. FHIR R4 vs R5 explains when R5 might make sense.

Phase 3: Data mapping and terminology

Mapping source data to FHIR profiles is typically the largest single effort. For each profile, document which source table or v2 field fills each must-support element, how missing data is represented, and which transformations apply. Keep the mapping as a versioned, reviewable artifact, not just code.

Terminology deserves its own workstream. US Core binds elements to code systems such as LOINC for lab observations, SNOMED CT for problems and findings, RxNorm for medications, CVX for vaccines and UCUM for units. Source systems frequently use local codes, so you will need concept maps, a process for unmapped codes, and clinical informaticist review. A terminology server that supports operations like $validate-code, $expand and $translate makes this manageable at scale.

Common trap

Teams often discover late that a large share of local lab or medication codes have no clean standard mapping. Profile a sample of real production data during this phase so the mapping effort is sized on evidence, not assumptions.

Phase 4: Build

Architecture choices at this stage include whether to store data natively in a FHIR server or translate on the fly from source systems (a facade), how to handle identity and patient matching, and how to secure the API. Our FHIR server architecture guide compares the main patterns.

  • Implement SMART authorization and scopes alongside the API, not afterward. See FHIR security.
  • Publish an accurate CapabilityStatement and keep it in sync with what the server truly supports.
  • Add Provenance and audit logging (for example AuditEvent) where your use case or policy requires them.
  • Automate validation in CI so every mapping change is checked against the target profiles.

Phase 5: Testing and conformance

Testing FHIR implementations has three layers: resource validity, API behavior and workflow correctness.

Tool or methodWhat it checks
HL7 FHIR ValidatorIndividual resources against base spec, profiles and terminology bindings
InfernoOpen-source test framework from ONC; its test kits exercise US Core, SMART App Launch and Bulk Data behavior, and one is used in ONC (g)(10) certification testing
TouchstoneHosted FHIR testing platform used for scripted conformance and interoperability testing, including at HL7 Connectathons
ConnectathonsHL7 events where implementers test against each other on specific IGs
Clinical reviewClinicians and informaticists confirm that data displays and means what it should
FHIR testing layers

Automated tools confirm structure and protocol; they cannot tell you that a mapped blood pressure is actually the patient's most recent reading. Reserve time for clinical validation with real or realistic data.

Phase 6: Go-live and operations

Go-live is usually staged: a pilot partner or app, limited data domains, then expansion. Before launch, confirm monitoring of latency, error rates and token failures; runbooks for partner onboarding and credential rotation; and a clear owner for production incidents.

Operations never really end. New IG versions, regulatory updates, EHR upgrades and new partners all trigger change. Budget for it explicitly; the FHIR support and maintenance service page outlines what ongoing support covers.

Common implementation challenges

  • Optionality: two systems both "support FHIR" yet populate different elements. Fix it with explicit profiles and must-support agreements.
  • EHR variation: each EHR exposes different resources, search parameters and write capabilities. Test against every target, not just one.
  • Data quality: FHIR exposes source data quality problems that were hidden inside reports and interfaces.
  • Patient matching across organizations remains hard and needs a deliberate strategy.
  • Performance: deep _include chains and unbounded searches can overload servers; design queries and paging carefully.
  • Skills gaps: teams strong in v2 interfaces or in web APIs, but not both. Pair them or bring in FHIR consulting support.

Frequently asked questions

How long does a FHIR implementation take?

It depends on scope. A read-only integration with one EHR for a single app is a much smaller project than a multi-source payer API program. Discovery, mapping and testing usually take longer than the build itself, so schedule them explicitly.

What is US Core?

US Core is an HL7 implementation guide that defines the minimum FHIR profiles, search parameters and terminology for accessing US clinical data. Certified EHR APIs are tested against it, and many other US IGs build on it.

What is Inferno used for?

Inferno is an open-source FHIR testing framework from ONC. Its test kits check servers against implementation guides such as US Core, SMART App Launch and Bulk Data, and one is used in ONC certification testing for standardized API criteria.

Do we need a FHIR server to implement FHIR?

Not always. You can expose FHIR as a facade over existing systems, consume another organization's FHIR API, or store data in a native FHIR server. The right choice depends on data sources, performance needs and how many consumers you serve.

Who should be on a FHIR implementation team?

Typically a product owner, an integration architect, developers with FHIR experience, a terminology or clinical informatics specialist, a security lead and QA engineers who understand conformance testing.

References

  1. HL7 FHIR US Core Implementation Guide
  2. SMART App Launch Implementation Guide
  3. FHIR Bulk Data Access IG
  4. HL7 FHIR R4: Validation
  5. Inferno (ONC test tools)
  6. CMS Interoperability and Prior Authorization Final Rule (CMS-0057-F)

FHIR® is a registered trademark of HL7 International. This guide is independent educational content and is not legal or compliance advice.

Related guides

Related FHIR services

Find the Right FHIR Integration Partner for Your Healthcare Project

Tell us what you need to build or connect. We review every request and share a short list of relevant vendors from our directory — no obligation.