Epic Bridges: HL7 Interfaces, FHIR Interoperability, and Integration Architecture

Epic Bridges: HL7 Interfaces, FHIR Interoperability, and Integration Architecture

HL7 v2
Still the dominant message standard in most hospital integrations
FHIR R4
ONC 21st Century Cures-mandated API standard for interoperability
200+
Interface types supported in Epic’s Bridges integration engine
HIPAA
Transaction sets 837/835/270/271 required for payer-provider data exchange

Epic Bridges is the integration engine that connects Epic to everything outside it – laboratory analyzers, ADC cabinets, payer systems, external EHRs, state health registries, and third-party clinical applications. Most Epic implementation problems that appear to be clinical or workflow failures are actually Bridges configuration failures. This article gives analysts, integration engineers, and IT project leads the depth they need to design, build, test, and troubleshoot Epic Bridges interfaces across HL7 v2, FHIR R4, and HIPAA transaction sets.

What Is Epic Bridges?

Epic Bridges is Epic Systems’ built-in integration engine. It manages the transmission, transformation, and routing of electronic data between Epic and external systems. Every piece of data that moves into or out of Epic – ADT messages to ADC cabinets, lab results from instruments, claims to payers, patient records to external providers – passes through Bridges configuration.

Bridges is not a separate product you install. It is embedded in the Epic platform. Epic administrators and integration analysts configure interfaces directly within the Epic environment using Bridges-specific records – Interface (IFC) records, Interface Routing Table (IRT) records, and message format records. This distinguishes Bridges from standalone middleware products like Mirth Connect, Rhapsody, or InterSystems HealthShare, which sit between systems as independent applications.

The embedded model has trade-offs. The upside: Bridges has direct access to Epic’s data structures, which eliminates some transformation work and reduces latency for internal message types. The downside: complex transformations that are straightforward in a full-featured middleware tool require workarounds in Bridges. Large health systems running complex integration landscapes sometimes use Bridges alongside a separate integration engine – Bridges handles Epic-native connections, and the external engine handles complex orchestration, transformation, or non-Epic system connections.

Bridges supports three primary message paradigms: HL7 v2 (pipe-delimited messaging, the historical backbone of healthcare integration), HL7 FHIR R4 (REST-based API access, the ONC-mandated modern standard), and HIPAA X12 transaction sets (EDI-format financial and administrative transactions). Understanding all three is necessary for a complete Epic integration picture. The Epic EHR Learning Hub provides the broader module context for understanding where Bridges fits in the Epic ecosystem.

HL7 v2 in Epic Bridges: Message Types and Structure

HL7 version 2 remains the workhorse of hospital integration despite being decades old. The specification defines a pipe-delimited message format where each message contains segments (MSH, PID, OBR, OBX, etc.) that carry specific data elements. Bridges receives, parses, transforms, and routes these messages based on configuration in IFC records.

Core HL7 v2 Message Types in Epic

Message TypeTrigger Event(s)Primary Use in EpicCommon Receiving System
ADT^A01/A02/A03/A08Admit, Transfer, Discharge, UpdatePatient movement events to downstream systemsADC, radiology, lab, billing, bed management
ORM^O01 / OML^O21Order messageLab and radiology order transmissionLIS, RIS, reference lab
ORU^R01Unsolicited observation resultLab results, radiology reads, vitals from monitorsEpic (inbound from LIS, instruments, monitors)
RDS^O13Pharmacy dispenseADC charge and dispense synchronizationPyxis, Omnicell ADC systems
MDM^T02Document notificationClinical document exchange (discharge summaries, notes)External EHR, document management systems
SIU^S12/S13/S14/S15Scheduling notificationAppointment event transmissionPatient portals, ancillary scheduling systems
DFT^P03Detail financial transactionCharge posting to billing systemHospital billing / patient accounting system
VXU^V04Vaccination updateImmunization registry reportingState immunization information system (IIS)

HL7 v2 Message Anatomy: What Analysts Must Know

Every HL7 v2 message starts with the MSH (Message Header) segment. MSH defines the sending application, receiving application, message type, and encoding characters. Epic populates MSH.3 (Sending Application) and MSH.4 (Sending Facility) based on Bridges configuration. Mismatches between what Epic sends and what the receiving system expects in these fields are the most common cause of message rejection on new interfaces.

The PID (Patient Identification) segment carries patient demographics. PID.3 is the patient identifier list – it can contain multiple identifiers with assigning authority codes. A common integration error occurs when the receiving system expects the MRN in PID.3 with a specific assigning authority label, but Epic sends it with a different label or in a different repetition position. This produces patient matching failures without any obvious error message – the message delivers successfully but the receiving system cannot match the patient.

OBX (Observation/Result) segments carry result data in ORU messages. OBX.2 defines the value type (NM for numeric, ST for string, CE for coded element, FT for formatted text). OBX.3 is the observation identifier – an LOINC code, local code, or a combination. OBX.5 carries the actual value. OBX.6 is the unit of measure. Integration analysts who cannot read an OBX segment and identify which field contains the erroneous value are not equipped to diagnose result posting failures independently.

Real Scenario – Health System ADT Interface to Radiology

During a Bridges go-live at a 500-bed health system, ADT A01 (admit) messages were successfully transmitting to the radiology information system (RIS). However, the RIS was rejecting approximately 12% of messages silently – accepting the acknowledgment (ACK) but not creating the patient record. Root cause: the RIS vendor required PID.18 (Patient Account Number) to be populated with the visit account number. Epic was sending the account number in PID.18 in some workflows but not others – specifically, patients admitted through the ED used a different account numbering workflow that left PID.18 blank. The fix required a Bridges message transformation rule to derive and populate PID.18 from the visit record when the field was null. This was not discovered until radiology staff reported that some ED patients were not appearing in the RIS worklist.

Epic and HL7 FHIR R4: API Architecture and Use Cases

HL7 FHIR (Fast Healthcare Interoperability Resources) R4 is the modern interoperability standard mandated by the ONC 21st Century Cures Act. Epic’s FHIR implementation – called the Epic FHIR API – exposes patient data as REST endpoints returning JSON or XML. Unlike HL7 v2’s push-based messaging, FHIR uses a request-response model where an external application queries Epic’s API and receives a structured resource back.

Epic FHIR API Architecture

Epic’s FHIR API is built on the SMART on FHIR framework, which uses OAuth 2.0 for authentication and authorization. External applications register in MyApps (Epic’s app marketplace) or via a health system’s instance configuration. They receive client credentials, request an access token from Epic’s authorization server, and use that token to make FHIR API calls against the Epic endpoint.

Epic supports two FHIR access patterns. Patient-context SMART apps launch from within the Epic workflow – a provider opens a patient chart, launches a SMART app, and the app receives the patient context automatically via the launch token. Standalone SMART apps operate outside Epic’s UI, querying the FHIR API independently using backend service authentication (system-level access without a human user context). Both patterns require configuration in Epic’s Bridges and MyApps setup.

FHIR ResourceEpic Data MappedCommon Use CaseONC Mandate?
PatientDemographics, identifiers, contactPatient matching, care coordinationYes
ObservationLab results, vitals, social historyLab result access, remote monitoringYes
MedicationRequestActive prescriptions, med ordersMedication reconciliation, pharmacy appsYes
ConditionProblem list, diagnoses (ICD-10)Care gap analysis, population healthYes
DiagnosticReportLab reports, radiology reportsResult sharing, Beaker LIS reportingYes
EncounterVisit records, admission episodesPayer authorization, care managementPartial
AllergyIntoleranceAllergy listCare transition, referral data exchangeYes
DocumentReferenceClinical notes, C-CDA documentsDocument exchange, transitions of careYes

FHIR vs HL7 v2: When to Use Which

FHIR does not replace HL7 v2 in existing hospital infrastructure. Most instrument interfaces, ADC connections, and legacy system integrations still run on HL7 v2 and will continue to do so for years. FHIR is the right choice for new external application integrations, patient-facing data access, payer-provider data exchange under CMS interoperability rules, and any scenario where the receiving application is a modern REST-capable system.

DimensionHL7 v2HL7 FHIR R4
Communication modelPush-based (event-triggered messages)Pull-based REST API (query/response)
FormatPipe-delimited text (MSH|^~\&|…)JSON or XML over HTTPS
AuthenticationNetwork/VPN trust, MLLPOAuth 2.0 / SMART on FHIR
Standardization levelLow – significant local variation per siteHigh – defined resource schemas, US Core profiles
Best forADT feeds, lab/radiology orders, instrument connections, legacy systemsPatient apps, payer APIs, third-party clinical apps, population health platforms
Epic toolingBridges IFC records, MLLP listenersEpic FHIR API, MyApps, OAuth configuration
ONC mandateNot mandated (legacy standard)Mandated for patient access and payer APIs under 21st Century Cures

FHIR Subscriptions and Bulk Data

Standard FHIR API calls are synchronous queries. FHIR Subscriptions allow external systems to register for push notifications when specific resource types change – closer to the event-driven model of HL7 v2. Epic supports FHIR Subscriptions for selected resource types, enabling near-real-time notification to external systems when patient data changes.

FHIR Bulk Data Access ($export) allows large-scale extraction of population-level data for analytics, research, and payer reporting. Epic supports Bulk Data exports against Group and Patient resources. For population health platforms and payer quality reporting programs, Bulk Data is far more efficient than individual FHIR queries per patient. The access scope requires system-level SMART authorization – individual provider credentials do not work for bulk exports.

HIPAA Transaction Sets in Epic Bridges

HIPAA mandates specific electronic transaction standards for administrative and financial healthcare data exchange between covered entities. These use X12 EDI format – a structured, segment-based format distinct from both HL7 v2 and FHIR. Epic Bridges handles HIPAA X12 transactions for claims, remittances, eligibility, and authorizations.

Transaction SetNameDirectionUse
837P / 837IProfessional / Institutional ClaimOutbound to payerSubmitting claims for reimbursement
835Electronic Remittance AdviceInbound from payerPayment posting and denial reconciliation
270 / 271Eligibility Inquiry / ResponseOutbound / InboundReal-time insurance eligibility verification
276 / 277Claim Status Request / ResponseOutbound / InboundChecking claim adjudication status
278Prior Authorization RequestOutbound to payerElectronic prior authorization submission
834Benefit Enrollment and MaintenanceInbound from employer/payerMember enrollment updates to Epic

The 270/271 eligibility transaction is where many Bridges implementations first encounter HIPAA transaction configuration. Real-time eligibility (RTE) in Epic uses a 270 query to the payer’s clearinghouse endpoint, receives a 271 response, and parses the response into Epic’s coverage verification record. The challenge is that payer 271 responses vary significantly in how they populate benefit segments – the same data may appear in different loops and segments across different payers. Bridges configuration must handle payer-specific 271 parsing, not assume a uniform format.

Common Epic Bridges Interface Types

Epic categorizes Bridges interfaces by the type of system they connect and the direction of data flow. Each interface type has its own IFC record template, required configuration fields, and message routing logic. The interfaces below cover the majority of what integration analysts encounter in a full Epic implementation.

ADT Outbound
Sends patient movement events (admit, transfer, discharge, update) to ancillary systems. The most common interface type. Every ADC, radiology system, and ancillary scheduling system typically requires an ADT feed.
Lab Results (ORU Inbound)
Receives ORU^R01 result messages from the LIS, instruments, or reference labs and posts results to the patient chart. Requires LOINC or local code mapping to Epic result components.
Lab Orders (ORM/OML Outbound)
Sends laboratory orders from Epic CPOE to the LIS. Order messages include patient demographics, ordering provider, test codes, specimen type, and priority. Requires test code mapping between Epic and LIS.
Radiology (RIS/PACS)

Bidirectional: outbound ORM orders to RIS, inbound ORU results and MDM reports from RIS/PACS. Radiology report delivery to Epic requires MDM^T02 document notification or ORU^R01 depending on vendor.

Pharmacy / ADC
ADT feeds plus RDS dispense messages to Pyxis or Omnicell. Synchronizes patient assignments, medication lists, and charges between Epic Willow and the cabinet system.
Care Everywhere / HIE
Epic’s network for sharing patient records between Epic organizations and external Health Information Exchanges (HIEs). Uses CCD/C-CDA documents and FHIR. Requires subscription and network configuration.
Public Health Reporting
Outbound interfaces to state immunization registries (VXU), electronic laboratory reporting (ELR) for reportable conditions, syndromic surveillance, and cancer registry. Each has state-specific format requirements.
Surescripts (e-Prescribing)
NCPDP SCRIPT standard for electronic prescription transmission. Requires Surescripts network certification. Handles new prescriptions, renewals, cancellations, and medication history queries.

Bridges Build and Configuration

IFC Records and Interface Architecture

Every Bridges interface is defined in an Interface (IFC) record in Epic. The IFC record contains the interface name, communication method (MLLP for HL7 v2, HTTPS for FHIR), IP address or hostname, port, message type, message direction, and event trigger conditions. Bridges analysts build IFC records in the Epic environment using Epic’s administrative tools.

MLLP (Minimum Lower Layer Protocol) is the transport protocol used for HL7 v2 messages over TCP/IP. It wraps HL7 messages with start and end block characters (ASCII 11 and 28) and a carriage return to delimit messages. The receiving system sends an HL7 ACK (acknowledgment) back to confirm receipt. Bridges monitors for ACK responses and flags messages that time out without an acknowledgment. This is the basic error detection mechanism in HL7 v2 communication.

Message Transformation and Mapping

Bridges supports message transformation through its built-in mapping tools. Common transformation needs include: populating a segment field that the receiving system requires but Epic does not send by default, reformatting a date field from Epic’s internal format to the receiving system’s expected format, filtering messages so only certain event types route to certain systems, and splitting or duplicating messages to route the same event to multiple downstream systems.

Complex transformations – conditional logic, lookups against external tables, multi-source message enrichment – are where Bridges starts to show its limitations compared to dedicated middleware. Some organizations use Epic’s Bridges for basic routing and rely on an external integration engine for transformations that exceed Bridges’ native capabilities. This hybrid model is common in large academic medical centers and multi-hospital systems.

Code Mapping and Terminology Translation

Code mapping is one of the most time-intensive parts of Bridges implementation. When Epic sends a lab order, it uses Epic’s internal test code. The receiving LIS uses its own test code. Bridges maintains a mapping table that translates between the two. Every test in the order compendium requires a mapping entry – a 2,000-test compendium means 2,000 mapping records, each of which must be verified against both Epic’s build and the LIS procedure dictionary.

LOINC is the standard for lab result observation identifiers in HL7 v2 OBX.3 and FHIR Observation. Not all systems use LOINC natively. Instruments and LIS systems often send local codes. Bridges must map inbound local codes to Epic’s result components for results to post correctly. Unmapped codes produce “unrecognized observation identifier” errors that silently drop results unless the integration team monitors the message queue. CPOE workflows depend heavily on correct code mapping – analysts familiar with Epic EHR Orders and CPOE workflows will already understand how tightly lab order routing ties to Bridges code tables.

Real Scenario – Payer-Provider FHIR Integration, Health Plan API

A regional health plan was required under CMS interoperability rules to provide members with access to their claims and clinical data via a FHIR API. The plan contracted with a provider network running Epic. The integration team configured Epic’s FHIR API to expose Patient, Coverage, Explanation of Benefit, and Observation resources to the health plan’s patient portal app. During testing, the app received 401 Unauthorized errors for approximately 30% of patient records. Root cause: the OAuth 2.0 patient authorization flow required that patients had active MyChart accounts to grant consent. Patients who had never activated MyChart – a significant percentage of the elderly population in the plan – could not complete the SMART on FHIR authorization flow. The fix required implementing a separate backend service SMART authorization path that used the health plan’s member enrollment data (834 transaction) to pre-authorize access for enrolled members, bypassing the MyChart requirement for payer-facing data access. This was a scope item not in the original integration design document.

Interface Testing and Validation Strategy for Epic Bridges

Interface testing is structurally different from application testing. You are not testing a user interface or a business workflow in isolation. You are testing the transmission, transformation, and accurate receipt of data between two systems that may be operated by different teams, in different environments, on different release schedules. This coordination complexity is where interface testing projects most often run behind.

Testing Phases for Bridges Interfaces

Unit testing for an interface validates that Epic sends the correct message format and that the receiving system acknowledges it correctly. This requires a test environment for both Epic and the receiving system. Not all vendors provide sandbox environments. Some require testing against their production systems with test patient data – which introduces HIPAA considerations for what test data can be transmitted externally.

Integrated testing validates the end-to-end clinical outcome. For an ADT interface, integrated testing confirms not just that the message was sent and acknowledged, but that the receiving system (ADC, RIS, LIS) correctly processed the patient record and that downstream workflows function – the nurse can pull a medication from the ADC for the admitted patient, the radiology tech can see the order, the lab can receive the specimen. Clinical documentation workflows are part of this – the EpicCare Inpatient ClinDoc guide illustrates how deeply nursing flowsheets and provider notes depend on correctly received interface data.

BAT (Business Acceptance Testing) for interfaces requires clinical subject matter experts to validate that the correct data appears in the correct clinical context – not just that messages transmitted without error. An ADT message that transmits correctly but maps the patient location code incorrectly will show the patient in the wrong bed on the ADC cabinet, which is a workflow failure even though Bridges showed a successful ACK. Teams with experience in BAT vs UAT methodology understand this distinction and test for clinical outcome, not just technical delivery.

Test TypeWhat It ValidatesWho Owns ItPass Criteria
Connectivity TestTCP/IP connection, MLLP handshake, port openIntegration analyst + network teamSuccessful connection, test message ACK received
Message Format TestHL7 segment structure, field population, encodingIntegration analystAll required fields populated per spec, no parse errors
Code Mapping TestTest/LOINC code translation accuracyIntegration analyst + clinical SME100% of mapped codes resolve correctly in receiving system
End-to-End Clinical TestClinical workflow outcome in receiving systemQA/BAT analyst + clinical SMEClinical workflow functions as expected in receiving system
Volume / Load TestInterface stability under production-level message volumeIntegration analyst + infrastructureNo message queue backlog, latency within SLA
Failover / Error TestBehavior when receiving system is unavailableIntegration analystMessages queue correctly, retry logic fires, no data loss

Monitoring, Troubleshooting, and Error Resolution in Epic Bridges

Bridges provides monitoring tools within the Epic environment. The Interface Monitor dashboard shows the status of all active interfaces – message counts, error counts, queue depth, and last message timestamp. Integration analysts use this dashboard as the first-line indicator of interface health. A queue depth that is growing means messages are not being delivered to the receiving system. A zero message count on an interface that should be active means the trigger is not firing or the connection is down.

Common Bridges Error Categories

Error TypeSymptomLikely CauseResolution Path
Connection RefusedInterface shows disconnected, no ACKsReceiving system down, firewall rule, wrong port/IPVerify network connectivity, check IFC record config
ACK TimeoutMessages send but no ACK returnedReceiving system slow/overloaded, MLLP timeout too shortIncrease timeout, investigate receiving system performance
Parse ErrorMessage rejected, error in Bridges logUnexpected characters, encoding mismatch, segment formatInspect raw message, fix field mapping or encoding config
Patient Match FailureMessage delivered, patient not found in receiving systemMRN/identifier mapping error in PID segmentReview PID.3 content, correct assigning authority mapping
Code Not MappedResult not posting, unknown observation ID errorMissing LOINC or local code in mapping tableAdd mapping record, identify all unmapped codes
Message Queue BackupGrowing queue in Interface MonitorReceiving system unavailable, throughput bottleneckInvestigate receiving system, consider message purge strategy

Go-Live Monitoring Protocol

Interface failures on go-live day are more dangerous than application failures because they are often silent. An application failure produces an error screen that a user reports. An interface failure may produce no visible error – messages queue, data stops flowing, and clinical staff only notice when they look for something that should be there and is not. ADT messages not reaching the ADC means nurses cannot pull medications. Lab results not posting means providers are ordering duplicate tests.

The go-live command center must have an integration analyst with Interface Monitor access watching queue depth and error counts continuously during the first 24-72 hours. Establish baseline message counts in the test environment and alert thresholds for production. If the ADT interface typically sends 500 messages per hour and the monitor shows 50, something broke. Don’t wait for a clinical report. The Epic EHR Go-Live Support framework covers the command center structure – add Interface Monitor ownership explicitly to that model.

Roles, Certifications, and Career Path for Epic Bridges Analysts

Bridges Integration Analyst
Configures IFC records, manages code mapping tables, tests interfaces, monitors message queues. Requires Epic Bridges certification. Works across application teams and external vendors.
Interface Architect
Designs the integration architecture across Bridges and external middleware. Defines message routing strategy, transformation approach, and redundancy model. Senior role requiring multi-platform expertise.
FHIR Developer
Builds applications that consume Epic’s FHIR API. Requires SMART on FHIR, OAuth 2.0, and REST API development skills. Configures Epic MyApps registration and OAuth scope configuration in Bridges.
EDI / HIPAA Analyst

Manages HIPAA X12 transaction configuration for claims, remittances, and eligibility. Works with clearinghouses and payers. Requires X12 specification knowledge and revenue cycle context.
RoleCertificationKey SkillsSalary Range (2026)
Bridges Integration AnalystEpic BridgesHL7 v2, IFC build, MLLP, code mapping$85,000 – $125,000
Senior Bridges AnalystEpic Bridges + InterconnectHL7 v2 + FHIR, middleware, transformation logic$110,000 – $145,000
Interface ArchitectEpic Bridges + middleware certMulti-platform architecture, FHIR, HIPAA, cloud integration$130,000 – $165,000
FHIR / Interconnect DeveloperEpic InterconnectREST API, OAuth 2.0, SMART on FHIR, app development$115,000 – $155,000
Bridges Consultant (Contract)Epic Bridges2+ full implementations, multi-interface experience$75 – $125+/hr

The integration skillset that commands the highest market value combines Epic Bridges certification with genuine HL7 v2 message literacy, FHIR API experience, and at least one middleware platform (Mirth, Rhapsody, or Azure Integration Services). Analysts who can work across Bridges and an external integration engine, and who understand both the technical layer and the clinical context of what the data represents, are rare. That combination is worth significantly more than Bridges certification alone.

The Integration Analyst’s Advantage

Interface failures are the most common source of Epic implementation problems that get misdiagnosed as clinical workflow or application build issues. Build your ability to read an HL7 message, identify a misconfigured OBX segment, and trace a patient match failure to a PID field error. That diagnostic skill – not just the ability to configure an IFC record – is what separates an integration analyst who gets called back from one who does not.

Authoritative References

Downloads: Epic Bridges Templates and Checklists

📋
Epic Bridges Interface Inventory and Go-Live Checklist (PDF)
Track every interface across HL7 v2, FHIR, and HIPAA transaction sets. Pre-go-live gates: connectivity, message format, code mapping, end-to-end clinical validation, stability monitoring, and failover testing.

Download Checklist (PDF)

📊
HL7 Code Mapping Tracker (Excel)
Track lab test code mappings between Epic and LIS/instruments: Epic procedure ID, external code, LOINC, mapping status, validation owner, and sign-off date. Built for large compendium mapping projects.

Download Tracker (Excel)

🧪
Bridges Interface Test Script Template (Excel)
Structured test cases for ADT, lab orders, lab results, pharmacy ADC, FHIR API, and HIPAA 270/271 eligibility. Includes connectivity, format, mapping, end-to-end clinical, and failover test scenarios.

Download Test Script (Excel)

Scroll to Top