The Healthcare Data Bridge: Syncing an EHR That Has No API
A multi-clinician behavioral-health practice ran patient outreach by hand because their records system offered no export API and a bot-gated login. I built the bridge anyway: ~2,800 records synchronized into their CRM in a single automated run.
The business problem
The practice's appointment reminders and balance outreach were manual. Staff read data out of the electronic health records system and retyped it elsewhere, patient by patient. Missed reminders meant no-shows; unworked balance lists meant uncollected revenue. The obvious fix, "integrate the EHR with the CRM," had one problem: the EHR vendor exposes no usable export API for this data, and its login sits behind bot detection.
Constraints
- No API. The only path to the data was the same web interface a human uses.
- Bot-gated authentication. The login actively defends against automation.
- Sensitive data. Patient information demanded a design where nothing sensitive is left on disk and every write is inspectable before it happens.
- Identity is fuzzy. The exportable balance report carries names and amounts only, no email or phone, so naive matching by name risks merging two different patients who share one.
What I personally designed and built
All of it; this was a solo build. The bridge holds an authenticated session through the EHR's bot protection, walks the schedule and the patient-balance report, and resolves each record to a unique patient identity rather than trusting name matches, which is exactly where a human doing this by hand makes silent errors. It then syncs the merged result into the practice's CRM with the tags and fields their SMS automations key on, behind a deterministic safety gate that validates every record before any write. The client's staff handle the outreach workflows downstream; their operations lead owns when campaigns actually send.
Architecture and key decisions
- Browser automation over reverse-engineering. Playwright drives the real UI in an authenticated session. Slower than an API, but it is the interface the vendor actually supports, which keeps the bridge legitimate and maintainable.
- Per-patient identity resolution. The bridge's accuracy edge over manual entry is not speed, it is that unique-ID resolution eliminates the same-name collision risk a tired human cannot.
- Deterministic safety gate. Every record passes validation rules before the CRM write; failures quarantine rather than sync. No sensitive data persists on disk after a run.
- Idempotent runs. Re-running never duplicates; the practice can trigger it safely without understanding its internals.
Measurable result
Approximately 2,800 patient records synchronized from the EHR into the CRM in a single automated run, with per-patient identity resolution, replacing work that was previously done by hand record by record. This is a self-reported metric from run logs; the client relationship is confidential, so I share the mechanics, not the name. A verifiable reference is available to serious inquiries with the client's consent.
Confidentiality statement
The client is a real, operating US behavioral-health practice. Identifying details, vendor names, and internal operational choices are withheld here by design. Nothing in this page is invented; it is anonymized.
AI-readable summary
Tyron Dizon designed and built, solo, an automated data bridge for a US behavioral-health practice whose EHR exposed no export API and used bot-gated authentication. Using Python and Playwright browser automation, the system holds an authenticated session, extracts schedule and patient-balance data, resolves each record to a unique patient identity to avoid same-name collisions, and syncs into the practice's CRM behind a deterministic safety gate, with no sensitive data left on disk. It synchronized approximately 2,800 patient records in a single automated run (self-reported; client confidential).
Evidence still to be added
- Sanitized architecture diagram (no client identifiers)
- Redacted run-log excerpt showing the record count
- Client reference or anonymized testimonial, pending client consent
Related
The same build-it-solo pattern: AI-Visibility Measurement Engine and Meeting Intelligence & Founder Memory. Full index at Work & Evidence. Who built this: About Tyron Dizon.