Every healthcare integration starts with the same optimistic sentence: 'they support FHIR.' What that means in practice ranges from a modern REST API to a nightly SFTP drop of pipe-delimited HL7 v2 messages. Plan for the second one.
The Landscape
- FHIR R4 — the modern standard, unevenly adopted
- HL7 v2 — still runs most hospitals in the US
- CCDA documents — the escape hatch for chart exports
- Vendor-specific APIs — Epic, Athena, eClinicalWorks each with their own quirks
What Actually Works in Production
Build an integration layer that speaks one canonical internal model. Every vendor adapter translates in and out of that model. Never let vendor payloads leak into your business logic — that's how you end up with 40 code paths for 'get patient by id.'
"The integration is never done when the data flows. It's done when the reconciliation job hasn't paged anyone in 30 days.
Compliance Isn't Optional
HIPAA, audit logs, BAA agreements, encryption at rest and in transit. These aren't features — they're the license to operate. Bake them into the platform, not the individual integration.
What 'We Support FHIR' Usually Means
HL7 v2 still moves the majority of ADT and scheduling traffic in US hospitals. FHIR R4 is real, but vendor 'FHIR support' can mean a read-only Patient endpoint, a bulk export that runs overnight, or a sandboxed app that cannot write appointments. Plan the integration against the actual verbs you need — read slot, book slot, write note — not the marketing page.
- Canonical internal model first: Patient, Encounter, Appointment, Coverage — vendor payloads never leak into product code
- One adapter per vendor (Epic, athena, eCW, NextGen, custom HL7 MLLP) with explicit mapping tests, not a mega-switch
- Reconciliation job that diffs 'what we think we booked' vs 'what the EMR stored' every 15 minutes; this is the page that actually keeps you honest
- Idempotent writes: clinics double-submit, interfaces retry, and HL7 messages duplicate. Treat that as normal.
When the Integration Is Actually Done
Data flowing in a demo is week two. Done is when the reconciliation job has not paged anyone in 30 days, audit logs can reconstruct who accessed a chart, and a BAA plus encryption at rest/in transit are in the platform — not bolted onto one clinic's adapter. Takeaway: buy yourself an anti-corruption layer. Every extra vendor is a new dialect, not a new product.
Tags
Written by
Omar Rahal
Principal Engineer
Passionate about technology and its potential to transform businesses. Leading innovation at AiFlAi.


