EMR integration hub & partner help center
Software Engineer · contract · 2024 — now · K Health
Five internal teams ask EMR Connect for a patient's history; it fetches that from the EMR systems partner clinics run on (FHIR / Epic). Beside it, the partner help center, rebuilt on Next.js + Contentful.
My role
Team product. The integration service, the PDF service and the partner help center are mine.
What I did
- — Generalized the pull from Epic into a config-driven traversal: it exposes no entity graph, so which records to walk is configuration. Adding a partner EMR is a config change.
- — Redis cache-aside over Epic's rate-limited API, with a TTL per entity set by what the data means: a prescription is history and never expires, a doctor's record is refetched every three days.
- — Sync workers on the team's Pub/Sub queue: paced to Epic's rate limits, live requests ahead of batch backfills, and a killswitch that stops one clinic's sync the day they ask.
- — PHI never reaches the logs. Datadog gets ids, timings and error shapes, enough to debug a sync and nothing that identifies a patient.
- — Built the legal-PDF service: HTML templates filled with patient data, rendered by Puppeteer, stored in Google Cloud Storage behind signed links that expire.
- — Moved the partner help center off Salesforce to Next.js + Contentful, a content space per partner. Standing up a new partner's help center, or editing one, now takes hours instead of a week.
Stack
Node.js · TypeScript · NestJS · Next.js · Contentful · PostgreSQL · Redis · GCP Pub/Sub · Google Cloud Storage · Puppeteer · Datadog