What FHIR is in practice (not in theory), which versions to support, the integration patterns that work for early-stage healthtech, and where the real cost lives. Written for founders who need to ship, not for HL7 standards committees.
FHIR (Fast Healthcare Interoperability Resources) is the data interoperability standard that healthtech founders are required to support whether they want to or not. Major US health systems and EHRs (Epic, Cerner, Athena, Meditech) expose FHIR APIs. Federal regulations (the 21st Century Cures Act, Information Blocking rule) made it harder for them to refuse access. If your product touches patient data, you are going to integrate with FHIR.
The standard documentation for FHIR is dense, comprehensive, and largely useless for someone trying to ship a product in the next 90 days. This guide is the version we wish we had when we built our first FHIR integration: what to do, what to skip, what will hurt later.
Audience: founders and engineering leaders at early-stage healthtech companies (seed to Series B) who need to integrate with EHRs or other clinical systems via FHIR. Not aimed at researchers, standards committee members, or enterprise EHR teams who have different constraints.
FHIR is two things in practice:
First, it is a data model. A set of "resources" that describe clinical concepts: Patient, Observation (lab results, vitals), Condition (diagnoses), MedicationRequest (prescriptions), Encounter (a visit), DocumentReference (clinical notes). Each resource is a JSON or XML structure with mostly-standard fields and lots of extensions.
Second, it is a REST API specification. You can GET /Patient/123 to retrieve a patient. You can search /Observation?patient=123&code=8480-6 to get blood pressure readings. You can POST /Appointment to create an appointment. The semantics are mostly RESTful with some specific conventions (Bundle resources, _include parameters, version negotiation).
The catch: every implementer of FHIR (Epic, Cerner, Athena, regional health systems) interprets the standard slightly differently. There are required fields that one EHR enforces strictly and another ignores. There are extensions one vendor uses that another does not understand. The standard tells you the shape of the resource; reality tells you what the specific EHR actually returns.
Three versions matter in 2026:
Default decision: build to R4. Add a translation layer if you need to support older versions. Plan to evaluate R5 in 12-18 months.
Pure FHIR is too flexible. The US Core Implementation Guide narrows it down to "what every certified US EHR must support". For most US healthtech use cases, US Core is the actual contract you are coding against, not raw FHIR.
US Core defines:
If you are building for the US market, build to US Core compliance, not raw FHIR. Other implementation guides exist for specific use cases (CARIN Blue Button for payer data, Da Vinci for payer-provider exchange, IPS for international patient summary). Pick the one that matches your use case rather than trying to be universal.
Your application launches inside the EHR's UI when a clinician clicks a button. The EHR provides OAuth2 authorization, the patient context (current patient ID), and access to the FHIR API for that patient.
Our team has 10+ years building custom solutions. Let's talk about your project.
Learn about our ux/ui servicesThis is the right pattern for clinical decision support tools that augment the EHR workflow. Clinician sees patient, clicks your app, your app shows risk score or recommendation based on patient data, clinician acts. Time to integration: 4-12 weeks for a single EHR.
The EHR exposes a bulk endpoint that returns all patients (or a filtered subset) as a stream of FHIR resources. Used for population health, analytics, claims processing.
Implemented as the FHIR Bulk Data Access (Flat FHIR) specification. The EHR exports NDJSON files; your system processes them. Time to integration: 6-16 weeks. Watch for performance issues with very large patient populations and rate limits set by the EHR.
The patient logs into your app, authorizes via OAuth, and your app pulls their data from one or more EHRs on their behalf. Powered by SMART App Launch (with patient as the authenticator instead of clinician) and the Cures Act-mandated Patient API.
This is the right pattern for direct-to-consumer healthtech, personal health records, care coordination. Time to integration: 8-20 weeks. The complexity is supporting many EHRs (each with quirks), not the protocol itself.
Your service exchanges data directly with another organization's FHIR server, authenticated via SMART Backend Services or mutual TLS. No user in the loop. Used for care coordination between providers, payer-provider exchange, lab results delivery.
Time to integration: 12-30 weeks per partner. Each B2B integration tends to require legal agreements, security reviews, and bilateral testing.
The protocol-level work is the visible part. The expensive part is everything that happens after "we successfully called the API once".
Do not write FHIR client code from scratch. Use one of:
Avoid building your own FHIR validator. The standard is too complex; use the official validator or an established library.
FHIR integration is not particularly hard at the protocol level. The hardness is everywhere else: vendor-specific behavior, certification cycles, hospital-side IT processes, HIPAA compliance, identity matching, ongoing version drift.
For an early-stage healthtech company, plan 4-6 months from "we want to integrate with Epic" to "we are in production at one health system". Plan 12-18 months to be in production at five health systems. Budget 30-40% of engineering time on integration and compliance for the first two years.
If you want a working session to plan your specific FHIR integration, we have built integrations across the patterns described above and can shorten the learning curve by months. Book a free consultation at Alluxi.
Explore how we can help with your next project
Cuéntanos brevemente sobre tu proyecto y te contactamos en menos de 24 horas hábiles.
