Insights

EHR Integration Guide: Patterns, Pitfalls, and What Actually Works in 2026

Author
Aleksander Cudny
Published
March 31, 2025
Last update
March 30, 2026

Table of Contents

EXCLUSIVE LAUNCH
AI Implementation in Healthcare Masterclass
Start the course

Key Takeaways

  1. FHIR is the standard, but Epic, Oracle Health, Athena, and Meditech each implement it differently; production behavior diverges from the spec in ways that reliably break data pipelines.
  2. Middleware providers offer fast coverage but charge per transaction; direct EHR API integration costs more upfront and gives better unit economics at scale.
  3. Most EHR integrations fail in production due to auth token expiry, inconsistent FHIR resource structures across facility configurations, and webhook delivery gaps.
  4. A read-only integration with a single system takes 4-8 weeks; a bidirectional production integration with Epic or Cerner takes 12-24 weeks including compliance review.
  5. Momentum has built EHR integrations for 10+ healthtech products across Epic, Cerner, and Athena, from OAuth setup to production-grade FHIR data pipelines.

Is Your HealthTech Product Built for Success in Digital Health?

Download the Playbook

This guide covers four things most EHR integration resources skip:

  1. How to choose the right architecture (direct API, middleware, or FHIR facade) before writing any code
  2. What makes Epic, Oracle Health, Athena, and Meditech different in practice, not just in documentation
  3. Where integrations break after go-live and how to build for those failure modes
  4. Realistic timelines and cost ranges by integration type

If you're scoping a new integration, evaluating vendors, or debugging unexpected production behavior, this is the reference to keep open.

EHR Integration Architecture: Three Patterns

Before connecting to any EHR, the architecture decision comes first. That choice determines your cost structure, maintenance burden, and flexibility for the next several years.

Direct API Integration

You connect to each EHR's API directly, own the auth logic, parse the responses, and handle updates yourself. The highest-effort path initially, the lowest-cost path at scale.

There are no per-transaction fees. No third-party dependency in your data pipeline's critical path. Full control over data mapping, error handling, and how you respond when an EHR changes its behavior.

The friction is real: Epic's App Orchard requires an application review before sandbox access. Cerner's developer program has its own approval process. Getting credentials for two EHRs can take weeks of back-and-forth with vendor support teams.

FactorDirect APISetup time4-8 weeks per EHROngoing costEngineering time onlyControlFullBest forScale, cost efficiency, custom workflows

Middleware Integration Providers

Redox, Health Gorilla, and 1upHealth sit between your application and the EHR ecosystem. They normalize data, maintain vendor relationships, and expose a single API across dozens of EHR connections. For MVPs and early-stage products, this is often the right starting point.

The cost model is where it gets complicated. Per-transaction or per-user fees compound as you scale. One pricing change or acquisition forces a migration you didn't plan for. Some providers restrict access by business model: no consumer-facing apps, or certain data types locked behind additional contracts.

FactorMiddleware ProviderSetup time1-3 weeksOngoing costPer-transaction/per-user feesControlLimitedBest forMVPs, fast coverage across many EHRs

FHIR Facade

Build an internal service that abstracts all EHR connections behind a standardized FHIR API your application consumes. Each EHR-specific adapter lives inside that service. When an EHR updates their API or you add a new system, you change one adapter, not your entire codebase.

This requires more upfront architecture investment. It pays off the moment you're integrating more than two systems. For products where EHR integration is a core feature, this is the architecture to design toward from day one.

Which to choose: If you need coverage quickly and scale is uncertain, start with middleware but design your integration layer as an abstraction you can replace. If cost control matters from the start and your market is concentrated around one or two EHRs, go direct. Once you're past two systems in production, a FHIR facade is worth the investment.

Epic, Oracle Health, Athena, Meditech: What's Actually Different

The 21st Century Cures Act mandated FHIR R4 support for certified EHRs. That doesn't mean implementations are consistent. Each vendor has gaps, undocumented behaviors, and quirks you'll discover in production, not in the documentation.

Epic

Epic runs on approximately 37% of U.S. hospital beds. For most healthtech products serving providers, Epic compatibility is a requirement, not a choice.

API access: Third-party apps go through Epic's App Orchard program. Registration is required before sandbox access. Production credentials for a specific health system require that system's IT team to approve your app in their Epic instance: this step alone can take 4-6 weeks depending on their IT queue.

FHIR behavior: Epic's FHIR R4 is generally the most complete of the major vendors. Medication resources return complex hierarchies. The Patient $match endpoint has stricter matching requirements than the spec. Write-back support for third-party apps is limited by default and often requires a separate approval.

Common pitfall: Epic uses two distinct credential flows: MyChart credentials for patient-facing access and SMART on FHIR for provider-facing. These have different scopes and different data surfaces. Teams that build against patient access credentials and later need clinical data types have to restart the auth implementation. Our SMART on FHIR implementation guide covers the technical setup in detail.

Oracle Health (Cerner)

Oracle Health (formerly Cerner) holds the second-largest U.S. market share and has significant international deployment.

API access: The developer portal at code.cerner.com provides sandbox access without a pre-approval step, which speeds early development. Production access still goes through the health system. Oracle support response times have been inconsistent since the acquisition, so factor that into planning.

FHIR behavior: Cerner splits some observations that Epic combines. Blood pressure is the standard example: a single reading often returns as two separate Observation resources (systolic and diastolic) with linked references rather than one compound resource. Normalization logic built for Epic needs a separate handling path for Cerner.

Common pitfall: Cerner's SMART on FHIR access tokens expire on a shorter cycle than Epic's. Older Cerner instances have inconsistent refresh token support. If your token refresh logic assumes Epic-style behavior, you'll see silent data gaps in Cerner integrations. See our guide to FHIR and HL7 for how FHIR auth works across implementations.

athenahealth

Athena is common in ambulatory care and specialty practices, less so in hospital systems.

API access: Athena has a tiered partner program. Their documentation is extensive but sometimes dated for specific endpoints. Developer access is available without a lengthy review process.

FHIR behavior: Athena's FHIR R4 support has expanded but is less complete than Epic or Oracle Health, particularly for complex resource types. HL7 v2 interfaces remain common in Athena integrations and are often more reliable for scheduling and ADT data. See our HL7 standards guide for how v2 and FHIR relate in practice.

Common pitfall: Athena's appointment and scheduling data is frequently more accessible through their proprietary REST API than through FHIR endpoints. Teams committed to a FHIR-only approach find this after weeks of development. Scoping against their proprietary API surfaces early avoids a mid-project pivot.

Meditech

Meditech holds significant share in community hospitals and critical access facilities.

API access: Meditech's FHIR-based API ecosystem (Traverse) is less mature than the other three vendors. FHIR support exists but is incomplete across data types. Many Meditech integrations still rely on HL7 v2 interfaces, which require coordination with the facility's IT team for interface engine configuration.

Common pitfall: Meditech configurations vary significantly across facilities. API features enabled at one Meditech site may not be available at another. Standardizing a Meditech integration is harder than with Epic or Cerner because there's no single reference implementation to test against.

Where EHR Integrations Break After Go-Live

Most production failures in EHR integration aren't architectural. They're specific, predictable failure modes that teams don't build handling for in development because the sandbox doesn't surface them.

Auth Token Expiry

OAuth 2.0 access tokens for EHR APIs expire, typically within 60 minutes. Refresh token logic is required. Some EHR configurations, particularly older Cerner instances, limit refresh token validity. If your application treats an expired token as an unrecoverable error rather than a retriable one, users see silent data gaps or errors that appear hours after the underlying problem.

What to build: Treat expired tokens as a recoverable error. Queue failed requests and retry after re-auth. Log token lifecycle events separately from application errors so you can diagnose expiry issues without scanning through application logs.

Inconsistent FHIR Resource Structure

FHIR resources are flexible. The same demographic data can be represented differently across facilities running identical EHR versions. A patient's preferred name may be in Patient.name with a use type of "nickname" in one system and in a vendor extension in another. Normalization logic that handles the common case will break on edge cases that only appear with real patient data.

What to build: Test mapping logic against real data from at least two different facilities before go-live. Synthetic sandbox data doesn't surface these variations. Our custom vs. off-the-shelf EHR guide covers data model decisions in more depth.

Webhook and Subscription Delivery

FHIR Subscriptions notify your system when relevant events occur. In production, delivery is not guaranteed. Health systems have maintenance windows, interface engines restart, and network timeouts happen.

What to build: Design for missed events from the start. Periodic polling catches anything that didn't arrive via subscription. Log subscription failures separately and alert on elevated error rates so you know when a facility's feed goes quiet.

Rate Limiting

EHR APIs impose rate limits that differ by vendor, by health system configuration, and sometimes by resource type. Epic's production rate limits differ from their sandbox. System-context apps often get different limits than patient-context apps.

What to build: Implement exponential backoff for 429 responses from day one. Don't calibrate against sandbox behavior. For HIPAA-compliant infrastructure that handles rate-limited EHR traffic, AWS HealthLake provides managed buffering options worth evaluating.

Timeline and Costs by Integration Type

These ranges reflect actual project timelines. External dependencies, including EHR vendor support, health system IT availability, and BAA negotiation, account for most of the variance.

Integration TypeTimelinePrimary Driver of VarianceRead-only, single EHR, 1-2 resource types4-6 weeksSandbox access approvalRead-write, single major EHR (Epic/Cerner)10-14 weeksApp approval + compliance reviewMulti-EHR production integration16-24 weeksPer-system testing + health system IT coordinationLegacy HL7 v2 + FHIR hybrid12-20 weeksInterface engine setup + facility configuration

What extends timelines: EHR vendor support response times, health system IT queue depth, HIPAA BAA negotiation, and scope changes after sandbox testing reveals data model differences from assumptions.

What compresses timelines: Prior sandbox registration with the target EHR, a health system IT contact with third-party integration experience, a clear data model agreed on before development starts, and a HIPAA-compliant development process already in place.

Cost ranges depend on integration complexity, the number of EHR systems, and whether you're building direct or using middleware. The HealthTech MVP cost breakdown covers where EHR integration fits in overall project budgets.

Working With Momentum on EHR Integration

Momentum has built EHR integrations for healthtech products across Epic, Oracle Health, and Athena: clinical decision support tools, patient-facing mobile applications, and analytics pipelines pulling from multiple systems. Our EHR integration services begin with a scoping engagement: we map your data requirements to available API surfaces for each target EHR, identify which access programs and approvals apply, and produce a timeline that separates development time from external dependency time.

If you're evaluating architecture options before committing, or you're mid-integration and hitting unexpected behavior, talk to our team. We scope EHR integrations in 48 hours.

Frequently Asked Questions

Is FHIR R4 reliable enough to build a production EHR integration on?
For most data types and the major vendors, yes. Epic and Oracle Health have the most complete FHIR R4 implementations. Athena and Meditech have gaps in specific resource types. Testing against real facility data, not just the vendor's public sandbox, is the only way to verify coverage for your specific use case.
Do I need a BAA with the EHR vendor before accessing patient data?
Yes, if your application handles PHI. Most EHR developer programs require proof of HIPAA compliance documentation before granting production credentials. Budget 2-4 weeks for BAA negotiation with health systems, separate from technical development time.
What is SMART on FHIR and when is it required for EHR integration?
SMART on FHIR is the OAuth 2.0 authorization framework for EHR-embedded apps. You need it when your application launches within a clinical workflow or accesses patient data in an active clinical session. For server-to-server integrations that pull data outside a clinical session, it is not always required.
Should we use middleware or build direct EHR integration for our MVP?
For most MVPs with uncertain scale and broad coverage needs, middleware is the right starting point. Design your integration layer as an abstraction over the middleware API, not a direct dependency, so you can migrate to direct integrations later without a full rewrite.
How do we handle an EHR that does not expose the data type we need through FHIR?
HL7 v2 interfaces are available in most EHRs and often expose data types not yet surfaced in FHIR. Athena scheduling data is the common example. Building a hybrid path (FHIR for modern resources, v2 for everything else) adds complexity but is sometimes the only viable option.
How long does EHR integration take from start to production?
A read-only integration with a single EHR takes 4-6 weeks. A bidirectional integration with Epic or Cerner takes 10-14 weeks. Multi-EHR production integrations typically run 16-24 weeks. External dependencies like sandbox approval and health system IT coordination drive most of the variance.
What makes Momentum EHR integration services different from a general software agency?
Momentum has built against Epic, Cerner, and Athena in production, not sandbox only. We know which failure modes appear after go-live, what access programs each vendor requires, and how to structure timelines around external dependencies rather than hiding them in estimates.

Written by Aleksander Cudny

Business Analyst
Aleksander helps HealthTech founders make sense of complex interoperability requirements, integration strategies, and product costs. With a background in healthcare data systems and a sharp analytical mindset, Alek translates regulatory and technical nuance into actionable insights.

See related articles

Building an EHR Integration? Let's Scope It.

Let's Create the Future of Health Together

We've built production EHR integrations across Epic, Cerner, and Athena. Tell us your data requirements and we'll map them to available API surfaces and give you a timeline in 48 hours.

Looking for a partner who not only understands your challenges but anticipates your future needs? Get in touch, and let’s build something extraordinary in the world of digital health.

Newsletter

Aleksander Cudny