Integration

Integrating with Epic and Oracle Health for real-time emergency department status

Real-time emergency department status needs events, not queries. Here is how to get them out of Epic and Oracle Health Millennium through the integration engine a hospital already runs, what to minimize before anything leaves the network, and how to prove the feed is right before patients rely on it.

By
EDFlow team
Published
Reading time
4 min read

Real time means events

A patient's visit changes state a few dozen times: arrival, triage, a location change, a physician assessment, orders placed, specimens collected, results final, a consult, a disposition, a departure. A tracking experience is only as good as the delay between each of those moments in the EHR and the patient's screen.

Every major EHR already emits those moments as HL7 v2 messages: admission, discharge and transfer (ADT), orders (ORM and OML) and results (ORU). They are real time, hospitals own and run the interfaces, and they flow through an integration engine such as Rhapsody, InterSystems Health Connect, Cloverleaf or Mirth Connect. That makes HL7 v2 through the engine the practical backbone of a department-wide live feed.[1][2]

Epic

Epic keeps emergency milestones as time-stamped events on the encounter. They leave Epic through Bridges outbound interfaces: patient administration, results and orders, imaging, diet orders and provider information are all listed on open.epic.[1] An ADT^A08 typically fires when the treatment team, triage or disposition changes, but which triggers fire is configured by each site.

FHIR R4 still earns its place: Practitioner and PractitionerRole for care-team names, Location for mapping, and a SMART launch that opens the staff board from inside Epic using backend services with signed JWT assertions.[3][4] Ontario Epic sites also run Canada-specific interfaces for the provincial wait-time system, which already carry the arrival, triage and assessment timestamps a department timeline needs.[5]

Oracle Health Millennium

FirstNet, Millennium's emergency solution, has a tracking board, provider assignment and notifications for triage and throughput milestones. Millennium sends HL7 v2 outbound through Oracle's interface tooling, and the engine does the rest.

Oracle's FHIR R4 APIs add two useful pieces. CareTeam supports encounter-level care teams with roles and periods, a better fit for the emergency team than a longitudinal care team.[6] And Communication.Create can send secure professional notifications or reminders to practitioners, a realistic path for writing patient requests back into the provider message centre in a later phase.[7]

Minimize inside the hospital

The engine is where privacy is won. It filters to emergency visits, maps messages to a small vocabulary of events, drops every field the contract doesn't name and signs the batch before it leaves the hospital.

  • Never sent: result values and abnormal flags, notes, diagnoses, health card numbers, addresses and phone numbers.
  • Hashed on arrival: medical record, visit and order numbers, kept only as keyed hashes.
  • Reduced: the patient's name to a given name and family initial; the date of birth only inside a keyed match hash.
  • Refused: any payload that carries a prohibited field is rejected at ingest, a second line of defence behind the engine.

For result messages, the rule is simple: OBX segments are ignored and never parsed for values. Only the status (OBR-25) and its time are kept.

Prove it before patients rely on it

Before patients see anything, the feed runs in shadow for at least two weeks with the patient view hidden. It has to agree with the EHR on at least 98% of milestones in audit samples, deliver updates within 60 seconds at the 95th percentile, reject fewer than 0.5% of events and leave no code unmapped.

Feeds fail. Interfaces are paused for upgrades, engines are restarted and whole systems go down for planned downtime. EDFlow watches a heartbeat every minute and a roster every 15 minutes; when the feed goes quiet, staff see that it is delayed and patients see that updates may be delayed, never a stale state presented as current. The staff console can run every step by hand, through the same pipeline, until the feed is back.

Frequently asked questions

Why not use FHIR to track the emergency department?

Epic's public FHIR catalogue scopes Encounter search per patient and lists no generally available Subscription API, and Oracle's public R4 documentation doesn't list Subscriptions either. Tracking a whole department would mean polling every active patient every minute across several resources. The HL7 v2 feeds are already real time.[3][8]

Does the integration write back to the EHR?

Only when the site wants it. The first phase is read-only. Later, Oracle Health's Communication.Create can deliver patient requests to the provider message centre, and a document write-back can record the visit's requests without clinical content.[7]

Sources

  1. [1]HL7 v2 interfaces (opens in a new tab) · open.epic
  2. [2]HL7 Version 2 to FHIR Implementation Guide (opens in a new tab) · HL7 International
  3. [3]FHIR interfaces (opens in a new tab) · open.epic
  4. [4]SMART App Launch: Backend Services (opens in a new tab) · HL7 International
  5. [5]Canada-specific interfaces (opens in a new tab) · open.epic
  6. [6]FHIR R4 APIs for Millennium: CareTeam (opens in a new tab) · Oracle
  7. [7]FHIR R4 APIs for Millennium: Create a communication (opens in a new tab) · Oracle
  8. [8]Millennium Platform API documentation (opens in a new tab) · Oracle

Talk to us

See it with your own emergency department in mind

We'll walk through the patient, family and staff views with synthetic data, then map them to your EHR, your workflows and what you want a pilot to prove.