FHIR

How to Sync Telehealth with Existing EMRs

Shahnawaz Irfan
Shahnawaz Irfan
Interoperability Engineering, AST
Sep 19, 20268 min read
A tightly cropped macro view of a worn paper intake form showing visible fibers, creases, and surface texture in soft neutral light.
TL;DR If your telehealth platform does not trust the existing EMR, it will fail in production. I do not mean eventually. I mean the first time a scheduler moves a visit, the clinician opens the wrong chart, or the note lands in the wrong encounter. The winning pattern is boring on purpose: sync identity, schedule, encounter, consent, and documentation with the EMR instead of trying to replace any of it. Build the telehealth layer as an integration problem first, a video problem second.

I have watched teams spend months perfecting video quality while the real failure was hiding in plain sight: the patient was in the call, the clinician was in the call, and the chart was wrong. That is what happens when people treat telehealth as a product island. In healthcare, the platform is not successful because it can start a camera. It is successful because it can find the patient, the appointment, the chart, the visit context, and the note without making staff retype everything by hand.

That is the part most vendors get backwards. They ask whether they can integrate with the EMR after the demo. I ask what the EMR must already know before anyone joins the call. If you do not answer that early, you end up with a telehealth experience that feels smooth in the browser and hostile in the front office. I have seen that exact mistake more than once in AST integration work, especially where the EMR team assumed a simple patient lookup would be enough.

Pro Tip: Design the telehealth workflow around EMR truth, not telehealth convenience. The EMR should remain the source of truth for patient identity, appointment status, encounter creation, billing context, and final documentation. Your platform should mirror those objects and update them through controlled interfaces.

Epic, Cerner/Oracle Health, athenahealth, and PointClickCare all expose different edges, but the integration pattern does not change much. You still have to solve five things without fooling yourself:

  • match the patient reliably
  • pull the right appointment and provider context
  • create or update the telehealth encounter at the correct moment
  • move the note back into the chart with the right status and author
  • preserve auditability when staff reschedule, cancel, or no-show the visit

The first friction point is identity. A lot of teams assume they can key everything off email or phone number. That works right up until it does not. Families share numbers. Front desks correct demographics after scheduling. Patients change phones failed to us. The right approach is to use the EMR’s patient identifiers as the primary anchor and treat external identifiers as mapping data, not truth. In FHIR R4 terms, that usually means Patient, Appointment, Encounter, Practitioner, and Organization at minimum, with your own platform maintaining a mapping layer back to the source system IDs.

Key Insight: Telehealth sync fails less from missing APIs than from bad event timing. If you create the encounter too early, you get phantom visits. If you create it too late, the clinician starts documenting in the wrong place. The safest pattern is event-driven state changes tied to appointment lifecycle events, with explicit retries and human-visible exceptions.

When we build this at AST, we do not start by wiring video. We start by drawing the state machine. Scheduled. Confirmed. Checked in. In-session. Complete. Canceled. No-show. Rescheduled. Each state has an owner, a source system, and a write-back rule. That is the work. The rest is plumbing. If your platform cannot explain what happens when a scheduler edits an appointment ten minutes before the visit, you are not integrated. You are guessing.

That guess usually costs the front desk more than engineering ever sees. I have seen teams proudly launch telehealth and then leave staff to reconcile duplicate encounters, orphaned sessions, and copied-and-pasted notes. The technology looked modern. The workflow was a mess. That is the kind of friction that never shows up in a product screenshot but shows up immediately in operations.

Warning: Do not let the video vendor own the telehealth workflow. If your session lifecycle lives outside the EMR, you will spend the rest of the program rebuilding reconciliation logic for scheduling, documentation, and billing. Video is a component. The workflow is the product.

For real interoperability, I prefer a layered design:

  1. Normalize the source of truth Pull identity, appointment, provider, and location data from the EMR on a schedule or event feed. If the EMR offers FHIR R4, use it where it is reliable. If it only gives you HL7v2 SIU messages or a vendor-specific API, build an adapter and make the mapping explicit.
  2. Build a canonical visit model Internally, represent the telehealth visit as one object with stable IDs for patient, encounter, appointment, participant, consent, and document artifacts. Do not let each vendor response become your internal model.
  3. Use state-driven write-backs Decide exactly when the platform writes to the EMR. A check-in should not look like a completed visit. A reschedule should close the stale slot and open a new one. Every transition needs a deterministic rule.
  4. Reconcile document delivery Send the note, summary, or transcript artifact into the chart only after the visit is complete and signed. If the EMR needs a specific document type, author, or encounter reference, map it before launch, not after go-live.
  5. Test the ugly edges Duplicate patients, merged charts, provider substitutions, late cancels, and missed appointments are not edge cases. They are production.

That last step matters because the hard part is not the happy path. Anyone can make a green demo with a fake appointment. The failure mode comes when the scheduler corrects demographics, the clinician joins from a covering pool, or the patient comes in through a portal link generated for the wrong encounter. We have seen these exact patterns in AST integration work, especially where vendor APIs appeared clean until they were hit with real clinic behavior.

If you are choosing between FHIR R4 and HL7v2, stop pretending that one is automatically better. FHIR is cleaner for modern read and write patterns when the EMR supports it well. HL7v2 is still the real-time spine in many environments, especially for scheduling and result workflows. In practice, a telehealth platform often needs both. FHIR for structured reads and controlled writes. HL7v2 where the EMR already pushes lifecycle events reliably. The right answer is not ideological. It is whichever rails the source system actually keeps stable under load.

Integration choiceWhat it does wellWhere it breaksMy take
FHIR R4Read structured patient, appointment, encounter, and document dataVendor variance, limited write support, inconsistent implementation detailBest when the EMR team exposes mature resources and clear auth
HL7v2Event-driven scheduling and status feedsMessage parsing, site-specific mapping, legacy semanticsStill indispensable for production workflow sync
Vendor APIFastest path to a specific featureLock-in, undocumented edge behavior, brittle contractsUseful, but only with a mapping and fallback plan
Direct database accessFeels simple in a sandboxUnsafe, unsupported, impossible to governI reject this in production

Security cannot be an afterthought here. Telehealth touches PHI, identity data, clinician communication, and often direct links back into chart systems. That means your authentication model, session tokens, and audit logs have to survive real use, not just a pentest checklist. If you are not capturing who launched a session, who joined it, what chart context was accessed, and when the note was published, you do not have a healthcare platform. You have a video link with ambition.

At AST, we usually pair integration work with an implementation map that starts in the EMR rather than the web app. That sounds obvious, but it is where teams skip. We ask: what object opens the visit? What object closes it? What object proves the clinician saw the patient? What object sends the chart note back? Those answers are different in Epic, Cerner/Oracle Health, athenahealth, and independent practice systems. The structure is similar, but the write permissions and workflow triggers are never identical.

If you are working toward a build, this is the checklist I would use this week before you write more code:

  • identify the source system for patient identity and appointment truth
  • document every visit state and the event that changes it
  • map the chart artifact you must return to the EMR after the visit
  • decide what happens when the patient, provider, or appointment changes mid-session
  • test one merged chart, one duplicate patient, one reschedule, and one no-show before pilot

One thing I disagree with strongly: the idea that interoperability is only a backend concern. It is not. If the clinician has to search three screens to find the right telehealth room, the integration failed. If the front desk has to manually patch encounter IDs after the call, the integration failed. If billing has to chase missing documentation because the note never landed correctly, the integration failed. Workflow and interoperability are the same problem wearing different clothes.

When a telehealth platform is built correctly, the EMR feels like the center of gravity, not a hostage. The patient gets a clean link, the clinician gets the right chart, the note lands in the right place, and the staff does not spend their day reconciling broken states. That is the standard. Anything less is a demo, not a system.


If you are building this around a live EMR, the safest path is to treat integration as the product contract. The video layer can change. The state machine cannot. And if you are already fighting scheduling, identity, or documentation drift, the fastest way out is usually to rework the EMR sync before you add another feature. AST builds that integration layer with dedicated pods, and we have learned the hard way that the most impressive telehealth launch is the one front office barely notices because it just works.

Should a telehealth platform be the source of truth for scheduling?
No. The EMR should own appointment truth. Your telehealth platform should mirror scheduling state and write back only the changes it is authorized to make, such as check-in, session start, completion, or cancellation.
Do I need both FHIR and HL7v2 for EMR sync?
Often yes. FHIR R4 is usually better for structured reads and controlled writes, while HL7v2 still carries reliable scheduling and event feeds in many production environments. The right answer depends on the EMR and the workflow you need.
How do I avoid duplicate telehealth encounters in Epic or Cerner?
Use deterministic encounter creation rules tied to appointment lifecycle events, and never create a new encounter for every session retry. Build idempotency into your write-back logic and reconcile against the EMR encounter ID before making a second write.
What data should sync before the visit starts?
At minimum: patient identity, appointment, provider, location, visit type, and any authorization or consent flags your workflow requires. If the clinician does not have the right chart context before they join, the platform is already behind.
Can I use a vendor API instead of a full interoperability layer?
Yes, but only if you control the mapping, retries, and fallbacks. A vendor API can be the edge contract, not the whole architecture. If you build everything directly against one undocumented endpoint, you are accepting brittle integration risk.

Build telehealth around EMR truth

If your platform needs to sync appointments, encounters, notes, and identity without creating front-desk chaos, we should talk. I build these workflows around the systems clinics already run on, not around idealized demos.

Talk to our interoperability team

Shahnawaz Irfan
Shahnawaz Irfan
Interoperability Engineering, AST
Shahnawaz builds the integration layer between clinical systems — FHIR R4, HL7v2 and vendor APIs — where the spec is the easy part and the edge cases in production feeds are the real work.

Comments

Comments are warming up. Live, no-sign-in discussion will appear here shortly.

Have a question now? Email info@allstartech.net.

Get in touch
Work with AST

Embed a vetted engineering pod into your team and ship clinical software faster — without cutting a compliance corner.

Book a consultation
Careers at AST

We hire engineers who want to work inside real healthcare problems — EMR, FHIR, clinical AI and the compliance that holds it together.

See open roles