// featured case study
EMR Platform
Vision Group Canada · 2023 – present
The platform ophthalmology and refractive surgery clinics operate on. It carries a patient through the entire arc: referral in from a community optometrist, consult, pre-op workup, surgical scheduling, the procedure, post-op follow-up, and the handoff back to the referring optometrist.
Refractive surgery runs on a referral loop with physicians outside the organization. So the system has two populations with different trust levels — and only one of them belongs inside the EMR.
the boundary
Two front doors. One database.
Outside physicians never enter the EMR. They submit referrals through a separate co-management portal, built by a different team, in PHP, on separate hosting. The EMR stays internal: clinic staff, optometrists, ophthalmologists, surgeons, technicians, admins. A referral either attaches to a patient already on file or creates one. That boundary was organizational before it was architectural — a different team, a different stack, a different host. It happens to be a defensible design, but it wasn't drawn on a whiteboard.
the integration
S3 → Lambda → FSx
Two runtimes with nothing in common still had to exchange clinical documents. A referral document lands in S3; an s3:putObject event triggers a Lambda I own; the Lambda delivers into the FSx share, and the document surfaces on the patient's file. It's the unglamorous shape every senior engineer recognizes on sight — an event-driven cloud stack handing off to a consumer that only speaks files.
reporting migration
Reporting can't go dark while you replace it
Moving clinical reporting off SSRS/SQL Server onto Microsoft Fabric: DynamoDB → Lambda → S3, with Kinesis carrying changes through to Fabric. Clinic staff run their day on those reports — so the new stack was built alongside the old one and cut over at the end, on two Lambdas: one backfilling history, one carrying ongoing updates.
appointment dashboard
Built for receptionists, not for a generic staff user
Live appointment status for the clinic floor. The engineering was the smaller half: this was the first work where I owned the design requirements, working directly with a UI designer and a project manager to turn what clinics needed into something shippable. The heaviest users are receptionists, and building for them specifically is what made it land.
scope
Three years of full-stack feature ownership across the React/TypeScript/MobX frontend and the AWS backend — Lambda, DynamoDB, CDK — with infrastructure changes made in coordination with the team's CDK owners.