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.
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.
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.
For real interoperability, I prefer a layered design:
- 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.
- 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.
- 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.
- 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.
- 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 choice | What it does well | Where it breaks | My take |
|---|---|---|---|
| FHIR R4 | Read structured patient, appointment, encounter, and document data | Vendor variance, limited write support, inconsistent implementation detail | Best when the EMR team exposes mature resources and clear auth |
| HL7v2 | Event-driven scheduling and status feeds | Message parsing, site-specific mapping, legacy semantics | Still indispensable for production workflow sync |
| Vendor API | Fastest path to a specific feature | Lock-in, undocumented edge behavior, brittle contracts | Useful, but only with a mapping and fallback plan |
| Direct database access | Feels simple in a sandbox | Unsafe, unsupported, impossible to govern | I 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.
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.





Comments
Comments are warming up. Live, no-sign-in discussion will appear here shortly.
Have a question now? Email info@allstartech.net.