Skip to content

Case study

Casechek

Founding engineer of a HIPAA-regulated platform for the surgical devices vendors bring into hospitals, from its first commit to 200+ US hospitals.

Client
Casechek
Dates
2013 to 2024
Live
www.casechek.com
US hospitals on the platform
200+
of the original API's 4,743 commits
4,501
years the original API ran in production
10

The problem

Many of the devices used in surgery don’t belong to the hospital. Implants and the loaner trays of instruments that go with them are brought in by device vendors for a scheduled case, used, sterilised, sent back, and billed afterwards. That’s bill-only and consignment, and every step crosses between two organisations.

Casechek put it on one platform. A hospital schedules a case, vendors respond and deliver their trays, and every tray is labelled and scanned as it moves through the vendor’s warehouse and the hospital’s sterile processing, so both sides work from the same record.

My role

Founding engineer, then principal engineer, from 2013 to 2024, in a role that changed with the business. I wrote the original platform from its first commit and built the hospital kiosk. As the company grew, so did the tech team, to about 25 across engineering, QA and security; I hired, mentored and managed engineering teams of up to seven within it.

What I built

  • The original platform. The first API, from its first commit in 2014: surgeries, hospitals, vendors, users, notifications, sterilisation, printing, billing and the admin. I wrote the first commit of every core module and 4,501 of the repository’s 4,743 commits. It ran in production for ten years.
  • Label printing. Every tray needs a label a scanner can read. I wrote the label engine: Zebra ZPL in seven label formats and IPL for Intermec printers, with text, barcodes and QR codes laid out per format.
  • The hospital kiosk. I started the kiosk app in 2018, an Angular app that prints and scans at a hospital’s sterile processing, decontamination and vendor stations. In 2023 I separated the app from Electron so it runs in a browser, moved it from Angular 13 to 16, and wrote its hosting as a Terraform module, with CloudFront, S3 and WAF across four environments.
  • Hospital integrations. HL7 integrations with hospital systems through a Qvera interface engine, so surgical cases scheduled in the hospital’s own systems arrived in Casechek without being retyped.
  • The next platform. In 2023 and 2024 I prototyped Casechek 2.0 on NestJS and Postgres, with ECS in Terraform, an entity-relationship model and OpenAPI documentation.

Architecture

Two APIs share one database. The original API runs the mobile Tray Management App that hospital and vendor staff use; the second, built later by the growing team, took over more of the platform each year. Kiosks print through two paths: older .NET kiosks at vendor warehouses pick up label files from S3, and the newer kiosks receive print messages over PubNub.

Casechek architectureHospital and vendor staff use the Tray Management App, which calls the original API, a Symfony service on EC2. The web apps call the second API, built on API Platform and run on Elastic Beanstalk. Hospital systems send HL7 over a VPN to a Qvera interface engine, which calls the second API. Both APIs share one Aurora MySQL database. The original API forwards print requests to the second API, which assigns tracking labels and publishes label print messages over PubNub to the newer web kiosks in hospitals and warehouses; the original API still sends case-sheet messages over PubNub itself. For the older .NET kiosks in vendor warehouses, the original API renders ZPL labels and case sheets and uploads them to S3, where the kiosks pick them up.Tray Management Appmobile · hospitals and vendorsWeb appsAngular · CloudFront + WAFHospital systemsHL7 over a VPNplatformOriginal APISymfony · EC2 · 2014Second APIAPI Platform · BeanstalkQveraHL7 interface engineS3 print filesZPL labels · case sheetsAurora MySQLone database, both APIsPubNublabel print messages.NET warehouse kiosksolder · Zebra printersWeb kioskshospitals · warehouses
Two APIs over one database. The original API forwards prints to the second, which assigns tracking labels and tells the newer kiosks to print, while the original still renders label files for the older ones.

The hard part

Moving label printing while two generations of kiosk kept printing

In 2021 the way trays were tracked changed: a tray’s tracking label would be assigned at the moment its labels were printed, and that logic lived in the second API. But the print button in the Tray Management App called the original API.

The original API was also the hardest thing to change. It had no CI/CD: deploying meant building new EC2 instances by hand. And vendor warehouses still ran the older .NET kiosks, which printed from label files the original API rendered and uploaded to S3. The spec named the risk: those warehouses had to keep printing.

I wrote the technical specification for the cut-over, with its risks, its milestones and the acceptance steps for both kinds of kiosk. The plan kept every change in the original API small enough to deploy safely:

  1. Keep the endpoint, forward the work. The app keeps calling the original API, which forwards the print to the second API and stops publishing print messages itself. The second API assigns the tracking labels and tells the newer kiosks to print.
  2. Leave the warehouses alone, then bring them along. Warehouse prints first stayed on the old path. When they were forwarded too, the first release dropped the .NET files, and a hotfix two days later put them back for warehouses without the newer kiosks.
  3. Both generations from one request. From April 2022 every label print went to the second API, and the same request still rendered the ZPL files the .NET kiosks were waiting for.

The same pattern then moved more of the original API’s work across: creating surgeries and status updates were forwarded in 2022. The app never had to change in step with the server, and the original API was never rewritten in one risky release; its work moved to the second API while it kept serving.

Outcome

  • From the first customer to more than 200 US hospitals by 2024, on a HIPAA-regulated platform that was first to market.
  • The original API ran in production from 2014 to 2024, and the modules I wrote first were still being changed in its last years.
  • Casechek won the 2023 Chicago Innovation Award as an Up-and-Comer and the 2023 SMI Tom Hughes Collaboration Award.

Tell me what you're building