EHR IntegrationEpicHealthcare Interoperability

EHR Sidecar App: Build One Inside Epic, Cerner & athena (2026)

November 8, 202614 min readUpdated Nov 8, 2026
Written by
Jitendra Choudhary
Jitendra Choudhary

CTO & Co-Founder

CTO & Co-Founder at Nirmitee.io. Architects healthcare integrations across FHIR, SMART on FHIR, ABDM and NHCX, writing from production experience taking hospital software from sandbox to go-live.

EHR Sidecar App: Build One Inside Epic, Cerner & athena (2026)

An EHR sidecar is a separate application that runs next to the electronic health record. It handles a workflow the EHR does badly, and it hands the result back to the EHR, which stays the legal record of care.

Most articles stop at that definition. This guide goes further, and it is written from the work our EHR integration team does on Epic, Oracle Health and athenahealth. It covers the decision to build a sidecar at all, a reference architecture, what the Epic, Oracle Health and athenahealth write APIs allow, the failures that hurt teams in production, and a test plan you can run before you sign a hospital contract.

The short answer

Build a sidecar when three things are true:

  1. The workflow needs an interface or logic the EHR cannot give you, such as a patient dashboard, an AI drafting step, or a cross-system work queue.
  2. The clinician can tolerate one extra surface, usually a panel launched from the chart.
  3. You can name exactly what must go back into the EHR, in what form, and who signs it.

If you cannot answer the third point, you do not have a sidecar design yet. You have a separate app with an integration risk.

What an EHR sidecar is, and what it is not

A sidecar sits beside the EHR. It reads context from the EHR, does its own work, and writes a defined result back. The EHR keeps the authoritative clinical facts: orders, signed notes, results, medications. The sidecar can keep working copies of data, but it must not become a second long-term chart.

The idea is older than FHIR. In the 2000s, the HL7 CCOW standard let separate viewer applications follow the same patient as the EHR, so a clinician who switched patients in one window saw the same patient in the other. Research groups later used "sidecar" for systems such as i2b2, which hold a copy of EHR data and serve queries in parallel to the EHR. The SMART on FHIR team described running the same apps against either the live EHR or such a sidecar (Mandel et al., JAMIA).

Today, a sidecar usually means one of three shapes:

Shape How it reaches the clinician Typical use
Embedded SMART app Launched inside the chart, single sign-on, patient and encounter context passed in Documentation tools, dashboards, decision support needing a real screen
CDS Hooks service plus SMART app A card appears at a chart moment (open chart, sign order). The card links into the SMART app for depth Alerts and suggestions that need a click-through
Standalone app with back-end integration Separate login or a desktop panel. Data moves over FHIR, HL7 v2 or vendor APIs Care management, RCM work queues, cross-EHR products

A sidecar is not an EHR replacement. It is also not a reporting copy of the database. If nothing flows back to the chart and no clinician acts on it inside the visit, you are building analytics. Design for that instead.

Sidecar, build inside the EHR, or replace: how to decide

Health systems ask this question before vendors do. Answer it in your proposal.

Question Build inside the EHR Sidecar Replace the module
Can the EHR's own build tools produce the screen and logic you need? Yes No No
Does the workflow span more than one EHR or organization? Rarely works Good fit Large program
Who maintains it after go-live? Hospital EHR analysts You, plus a hospital owner Vendor and hospital
Speed of change after launch Hospital release cycle Your release cycle Vendor release cycle
Main risk Customization limits Integration and adoption Cost and migration

A real example shows the trade. UCSF built a patient-reported outcomes dashboard for rheumatoid arthritis as a sidecar on Salesforce, launched from the EHR, and put it into production in August 2021. The investigators wrote that building it inside Epic at the time would not have given them the customization they wanted (trial record NCT06655077). They also published a roadmap of what the build took: design, approvals, testing and long-term maintenance (Digital Health, 2024).

The same project carries the second lesson. The dashboard was then tested in a stepped-wedge, cluster-randomized trial with 554 enrolled patients. A UCSF investigator summary reports no change in the quantitative outcomes measured over the 18-month trial (Rethinking Clinical Trials summary). The sidecar worked as software. That alone did not move the measured outcomes. Plan adoption and outcome measures as part of the build, not after it.

Reference architecture

The diagram below is the architecture we use as a starting point. Each box has one owner and one job.

What each part owns:

  • Launch layer. Validates the SMART launch: issuer, state parameter, granted scopes, patient and encounter context. It refuses to start if the context is missing. It never guesses an encounter.
  • Back end for front end (BFF). Holds tokens on the server, never in the browser. Writes an audit line for every read and write: who, which patient, which resource, when.
  • Workflow engine. Owns the life of each task: draft, reviewed, approved, sent, confirmed. It decides what to do when the EHR is slow, down, or returns an unclear answer.
  • EHR adapters. One per vendor. They hide vendor differences from the rest of the code: different note formats, status rules and error shapes.
  • Working store. Holds drafts and task state. Set a retention period. Once the EHR confirms a write, the EHR copy is the truth.

The rule that keeps this safe: the sidecar may draft anything, but only a confirmed write to the EHR counts as done.

What the EHR write APIs allow: the part most guides skip

Reading data from an EHR over FHIR is now routine. Writing back is where projects slip. The question to ask is not "does the vendor support DocumentReference create?" but "can this app, at this customer, create this kind of note, in this status, for this user, and will it show up where the clinician expects?"

Here is what the public documentation establishes, and what it leaves open.

EHR What the vendor documents What you must still confirm with the customer
Oracle Health (Millennium) POST /DocumentReference. With provider access, only docStatus = final is accepted. With system access, final and amended are accepted (Oracle docs). Update accepts final, amended and entered-in-error (Oracle docs) Whether a final document meets the clinical need. If clinicians expect an unsigned draft to edit and sign in PowerChart, this endpoint does not provide that
Epic DocumentReference.Create (Clinical Notes) R4 files a plain text note to an open or closed encounter. docStatus can be preliminary, which gives the note an incomplete status so a clinician reviews and signs it in Epic, or final, which files it as signed. Rich text notes go through the HL7 v2 Incoming MDM interface instead (open.epic spec) Whether the customer has enabled the create for your app, and which note types and encounter types it will accept
athenahealth Clinical document and encounter note endpoints in its developer portal Which endpoints fit your workflow, the permissions your app gets, and how the note appears to the provider
Standard (US Core) The US Core guide for writing notes uses POST [base]/DocumentReference, LOINC note types, and allows 201 Created or 202 Accepted for mediated submission. It is marked trial use (US Core) Whether your target EHR follows it yet

Two buyer requests look the same and are not:

  • "Put our AI note into the chart." A final document filed to the encounter may be enough.
  • "Let the doctor edit and sign our AI draft in the EHR." That needs a draft status and a signing flow. Epic supports this with a preliminary note. Oracle's provider-access create does not, because it accepts only final. There you sign in the sidecar, use system access, or use the vendor's own document workflow.

Settle which one the buyer means before you size the work. We cover the per-vendor details of note write-back in FHIR DocumentReference for clinical notes on Epic, Oracle and athenahealth.

Security and HIPAA: what the architecture must show

Using FHIR does not make an app HIPAA compliant. FHIR is a data format and API standard. Compliance comes from the safeguards around it. For a sidecar, a hospital security review will look for:

  • A signed business associate agreement before any real patient data flows.
  • Scopes limited to what the workflow needs. Request patient/DocumentReference.c only if you write notes, not broad write scopes "for later".
  • Tokens kept on the server, short-lived, and refreshed only within the session the user started.
  • An audit trail the hospital can query by patient and by user.
  • A data retention rule for the working store, and a documented way to delete drafts.
  • Encryption in transit and at rest, and a risk analysis on file.

Failure modes, and the tests that catch them

Most sidecar incidents are not crashes. They are quiet errors: a note on the wrong encounter, a duplicate note, a draft lost when a token expired. Write these as acceptance tests and run them on synthetic data in the vendor sandbox before any pilot.

ID Scenario Pass condition
T01 SMART launch Issuer, state, scopes, patient and encounter are all validated before the UI loads
T02 Launch without an encounter The app asks for or waits for a valid encounter. It never files to a guessed one
T03 Write without permission The write is blocked, the user sees which permission is missing, and the draft is kept
T04 Patient switched in the EHR mid-task The sidecar detects the change and stops before any write
T05 Timeout after sending a note The app checks whether the note was created before it retries, so no duplicate is filed
T06 EHR outage Drafts are kept, the user sees the outage, and work resumes when the EHR returns
T07 Write accepted The note is visible in the chart, in the expected place and status, and a human checked it
T08 Patient records merged Stored identifiers are checked again, and writes stop until they match

T05 deserves extra attention. A timeout does not mean the write failed. Search for the document by a stable identifier you set on create before you send it again.

For each test, keep the request and response with credentials and patient data removed, the expected result, the actual result, the environment, and the date.

A worked example: an AI documentation sidecar

Here is how the pieces fit for the most common sidecar request we see in 2026, an AI drafting tool for visit notes.

  1. The clinician opens the patient in the EHR and launches the app from the chart. The app receives patient, encounter and user context through SMART.
  2. The app reads the data it needs to draft: problems, medications, recent notes. It reads only what the scopes allow.
  3. The AI step produces a draft. The draft lives in the sidecar's working store, labeled as unreviewed.
  4. The clinician edits and approves the draft in the sidecar. Nothing reaches the chart without this step.
  5. The adapter files the note in the form this customer supports: a final document over FHIR, or a document over an HL7 v2 interface.
  6. The workflow engine confirms the note exists in the EHR, then marks the task done and clears the draft per the retention rule.

Step 5 is where the customer-specific answer from the write API table decides the design. Step 4 is where the clinical safety lives. Do not let a product deadline remove it. Our AI scribe EHR integration page covers the vendor paths for this flow.

Rollout plan

Phase What happens Exit condition
1. Feasibility Confirm launch type, scopes, note type and status with the customer's EHR team Written answer for each write the workflow needs
2. Sandbox build Build adapters and run T01 to T08 on synthetic data All tests pass with saved evidence
3. Customer test environment Repeat the tests in the customer's non-production EHR Customer analyst signs off
4. Pilot A small group of clinicians, with a named clinical owner Adoption and error rates reviewed weekly
5. Scale More users and sites, one at a time Agreed outcome measure tracked

Expect the customer approval steps, not your code, to set the timeline. Our Epic FHIR integration guide walks through those approval steps for Epic.

Feasibility worksheet: questions to settle before you quote

  • Which EHR product and version does the customer run?
  • How does the app launch: from the chart, from a CDS card, or standalone?
  • Which data does it read, and which scopes does that need?
  • What exactly does it write: resource, note type, status, and who signs?
  • Does the customer's configuration allow that write for a third-party app?
  • What happens to the clinician's work if the write fails?
  • Who at the hospital owns the app after go-live?
  • Which outcome will prove the sidecar was worth it, and how will you measure it?

Build your sidecar with Nirmitee

We build EHR integrations and sidecar applications for US digital health teams across Epic, Oracle Health and athenahealth. If you are scoping a sidecar, start with the feasibility worksheet above. Then book a write-back feasibility review with our Epic integration team: we confirm what your target EHR and customer allow before you commit engineering time. For the Epic marketplace route, read our Epic Showroom approval guide.

Ready to scale?

Talk to our healthcare engineering team about building, integrating, and shipping faster.

Frequently Asked Questions

What is an EHR sidecar?

A separate application that runs alongside the EHR, adds a workflow the EHR lacks, and writes a defined result back. The EHR stays the system of record.

Is a SMART on FHIR app a sidecar?

Often, yes. A SMART app launched from the chart is the most common sidecar shape today. A SMART app that only reads data and never feeds the clinical workflow is closer to a viewer.

Can a sidecar file a draft note that the doctor signs in Epic?

Yes. Epic's clinical note create accepts docStatus preliminary , which files the note as incomplete so the clinician reviews and signs it in Epic. Oracle Health's create with provider access accepts only final .

Is a sidecar cheaper than building inside Epic?

Not always. It moves the cost. You avoid the limits of the EHR's build tools, but you take on integration, security review and long-term maintenance.

Can a sidecar write notes back to the EHR?

Usually, within limits set by the vendor and the customer. The note format, status and signing flow differ by EHR. Confirm them for each customer before you commit to a workflow.

Does a sidecar need its own HIPAA controls?

Yes. It handles patient data, so it needs a business associate agreement, access controls, audit logs and a risk analysis of its own.
Share