EHR / EMR integration
Primary use case: bidirectional data flow between your app and the EHR of record.

FHIR integration across R4, R5, and R6 (US Core profiles, SMART on FHIR launch, and Bulk FHIR $export) connecting your product to Epic, Oracle Health (Cerner), athenahealth, and modern health systems with HIPAA-ready, correctly-scoped pipelines.
Trusted by global innovators
























FHIR integration is connecting your software to an EHR, payer or app through HL7 FHIR REST APIs, so patients, encounters, results and medications move as structured resources. Agnotic Technologies builds these integrations against FHIR R4 and US Core, with SMART on FHIR authorization and Bulk FHIR export where you need population data.
The real work is conformance, not calls. US Core profiles, terminology binding (SNOMED CT, LOINC, ICD-10, RxNorm) and per-system coverage gaps decide what is buildable.
We read each target system's capability statement first to confirm its FHIR capabilities, then build read, write and Bulk FHIR flows that reach production, not only a sandbox.
What FHIR is
FHIR (Fast Healthcare Interoperability Resources) is HL7's modern standard for how health data is structured, shared, and accessed across systems via RESTful APIs. It replaces (or augments) bulk message-based approaches with real-time, resource-oriented endpoints.
FHIR supports JSON, XML, and HTTP. It models clinical data as Resources (Patient, Observation, MedicationRequest, etc.), supports events, documents, and APIs, and enables developers to build mobile and cloud apps against any compliant system.
A blueprint for connecting your platform over FHIR: REST resource access, SMART on FHIR launch, HL7 v2 compatibility, and the auth, terminology, and monitoring layers production needs.

We name the exact FHIR surface and version up front, because that determines what's buildable, and by when.
Read and write against FHIR R4 (today's production target), with R5 support where systems expose it and an R6-aware migration path: Patient, Encounter, Observation, MedicationRequest, DocumentReference, and more.
Conformance to US Core profiles and USCDI data classes, plus custom implementation-guide profiles and extensions, so data validates against the constraints regulators and partners expect.
EHR and standalone SMART on FHIR launch with scoped OAuth2 (patient/*, user/*, system/*) for apps that call FHIR endpoints inside the chart.
Population-level extraction via the Bulk FHIR $export operation for analytics, quality measures, and research pipelines.
Bidirectional HL7 v2 ↔ FHIR mapping for hybrid deployments where legacy feeds and modern APIs have to coexist.
SNOMED CT, LOINC, ICD-10, and RxNorm resolution, plus interface health dashboards and failed-call alerting so a throttled or malformed FHIR request is caught before it becomes a clinical gap.
Where it runs
Primary use case: bidirectional data flow between your app and the EHR of record.
SMART-on-FHIR patient apps with authenticated access to clinical data.
FHIR-native cloud deployments on Azure, AWS, and GCP health platforms.
FHIR-integrated telehealth with real clinical context during visits.
FHIR bulk export as source for analytics and research.
Integration with payer, lab, and specialty APIs via FHIR.
Readiness checklist
A FHIR integration readiness assessment checks, before any code is written, that the target servers, access path, data and owners are in place. Open items become scope drivers or risks on the scoping call; the go-live test plan further down covers what follows the build.
Architecture options
We pick based on where data lives, message volume, and whether event-driven flows matter.
FHIR is the modern standard for health data exchange. We build for how Epic, Oracle Health (Cerner) and other EHRs expose it in production.
Health Insurance Portability and Accountability Act
Protect PHI with privacy-first architecture, encrypted storage and transmission, strict access controls, and traceable audit logs.
General Data Protection Regulation
Implement lawful consent flows, data minimization, retention controls, and secure processing for sensitive health data.
Fast Healthcare Interoperability Resources
Enable standardized health data exchange across apps, care teams, and systems through standards-based FHIR APIs.
Health Level Seven International
Support enterprise-grade interoperability with HL7-based integrations for records, events, and clinical messaging workflows.
Health Information Trust Alliance
Align security programs to healthcare-specific control and risk management practices trusted by providers and ecosystem partners.
Health Information Technology for Economic and Clinical Health Act
Design with breach notification readiness, digital record safeguards, and operational controls that support regulated care programs.
FDA Software as a Medical Device
Plan software quality, traceability, and documentation pathways for products that may require SaMD review and submission.
Medical Device Regulation (European Union)
Prepare EU market-ready processes for risk classification, evidence tracking, and lifecycle governance under MDR expectations.
Substance Abuse and Mental Health Services Administration
Apply confidentiality controls and consent-aware sharing models for behavioral and mental health data experiences.
Go-live test plan
Before a FHIR go-live, verify that each production server supports every call your app makes, that your data validates against US Core, and that tokens, paging, errors and writes behave under real conditions. Each row gives the test and what counts as a pass.
| Check | How to test it | Pass criterion |
|---|---|---|
| CapabilityStatement against the app's calls | Fetch /metadata from each production server and diff it against every resource, interaction, search parameter and operation the app sends, taken from the code or from recorded sandbox traffic | Every call is declared by the server; anything missing has a fallback or is switched off for that site |
| US Core validation | Run the HL7 FHIR Validator on the resources the app writes and on a sample of what it reads; run the Inferno US Core tests against the server where you have access | No errors on written resources; each warning fixed or accepted in writing |
| Token lifetime and refresh | Let an access token expire mid-session, refresh it, revoke the grant at the server, then repeat with an expired refresh token | The app refreshes without user action, sends the user back to authorize when refresh fails, and never retries with a dead token |
| Search paging | Search a test patient with more results than one page, such as a long Observation history, and follow the Bundle next links to the end | The record count matches the source, and the app follows the server's next links rather than building page URLs itself |
| Errors and rate limits | Send invalid requests and read the OperationOutcome, then throttle calls until the server returns HTTP 429 and check for a Retry-After header | Errors are logged with the OperationOutcome issue code, 429 responses wait for Retry-After or back off, and no request loops |
| Duplicate-safe writes | Confirm the server declares conditional create, then post the same resource twice with If-None-Exist on its business identifier, including after a forced network retry | One resource exists afterwards; the repeat does not create a second |
| Provenance on writes | Write a resource with its Provenance (agent, time and source system) and read both back as the receiving organization would | Every written resource can be traced to the person or system that created it |
| Per-site configuration | Repeat the CapabilityStatement diff, scope check and a smoke test at each production site, because each one can run a different version and configuration | A signed-off record per site of base URL, client ID, enabled APIs and known differences |
| Monitoring thresholds | Agree alert thresholds for error rate, latency, token failures and empty results, then trigger each alert in a test environment | Every alert reaches a named owner, with a runbook entry for each |
Generic launch items such as keeping PHI out of logs, a sponsor at the customer and ownership after launch apply to every FHIR project. Our Epic integration checklist, linked below, covers them step by step.
Standards we build against
Capability assessment, mapping, and access run as parallel tracks so the integration reaches a real system on a plan you can track.
We read the target system's FHIR capability statement, confirm the version (R4/R5), the US Core profiles in play, and the resources and scopes you need before any code is written.
We provision sandbox credentials, register the SMART app, and validate OAuth2 launch and scope approval against the vendor's test data.
We build the FHIR read/write flows, US Core-conformant mapping, HL7 v2 transformation where needed, and Bulk FHIR export, validating against synthetic and partner-assisted data.
Phased production rollout with interface health dashboards, failed-call alerting, and version-compatibility monitoring as the ecosystem moves toward R5/R6.
FHIR vs HL7
FHIR builds on earlier HL7 standards but is fundamentally different in architecture. Here's when each fits.
| Dimension | HL7 v2 | FHIR R4 |
|---|---|---|
| Architecture | Message-based feeds | RESTful APIs |
| Data format | Pipe-delimited text | JSON, XML |
| Access pattern | Bulk / event-driven messages | On-demand resource access |
| Implementation effort | Mature tooling, rigid format | Easier to implement and scale |
| Fit | Legacy EHR, clinical events | Mobile, cloud, modern apps |
| Our default | Support where required | Target for new builds |
Most modern builds run FHIR-first with HL7 v2 as a compatibility surface for legacy systems.
Short facts we design around, each linked to its primary source.
US Core is the HL7 FHIR implementation guide that profiles FHIR resources for the USCDI data classes used in the United States.
Source: HL7 International (US Core)The SMART App Launch implementation guide uses OAuth 2.0 and OpenID Connect so that apps can launch from an EHR with the user's and patient's context and only the access scopes they were granted.
Source: HL7 International (SMART App Launch)ONC certification criterion 170.315(g)(10) requires certified EHRs to offer a standardized API for patient and population services based on HL7 FHIR.
Source: 45 CFR 170.315 (eCFR)In FHIR R4, a conditional create sends an If-None-Exist header with search parameters: the server creates the resource if nothing matches, returns 200 OK without creating it if one resource matches, and returns 412 Precondition Failed if several match.
Source: HL7 FHIR R4, RESTful API (conditional create)Related proof of standards-based delivery: for Lera Health we built a privacy-first data layer and testing-to-insights workflow end to end, modeling clinical data in a standards-aligned way: the same discipline a production FHIR integration demands.


Tell us your target EHRs and resource needs, and we'll return a scoped FHIR integration plan.
contact@agnotic.com
Partnerships
contact@agnotic.com