All posts

ScreenMe was running on Excel and goodwill

Consolidating WordPress orders, spreadsheet tracking, and manual reports into one lab workflow — and what actually changed when throughput went from 20 to 150 patients per cycle.

  • healthcare
  • workflow
  • NestJS
  • PostgreSQL
  • Node.js
Five-stage lab workflow pipeline illustration

I joined ScreenMe as Backend Tech Lead when the product was already live. Patients were getting kits. Reports were going out. From the outside it looked fine.

Behind the scenes it was WordPress for orders, Excel for tracking which barcode belonged to which sample, and a lot of copy-paste between the two. Lab staff knew the process. They also knew exactly which spreadsheet cell to distrust when something looked off.

Finding a kit meant checking three places

"Where is this kit?" sounds simple. In practice it meant checking WordPress, then a sheet, then asking whoever handled sample receipt that morning. At twenty patients per biweekly cycle, people could hold the map in their heads. The clinic wanted to grow. The map did not scale.

We mapped the lab process into five stages

We sat down with ops and wrote out what actually happened: barcode assigned, sample received, sent to the lab, results come back, report goes out. Five stages — not because five is a nice number, but because that is what the lab already did. We gave each stage a row in PostgreSQL and made NestJS enforce the transitions.

WordPress still took orders. A REST integration pulled new ones in and normalized patient and physician fields so nobody retyped them. When results arrived, they attached to the same kit record. Report generation moved into the platform. Emails fired on stage completion instead of someone remembering at end of day.

The constraint that mattered most was boring: you could not skip a step. A kit in "sample received" could not jump to "report sent." That annoyed people once or twice, then saved us constantly.

Throughput after go-live

Volume went from roughly 20 to 150 patients per biweekly cycle. That was not one clever query. It was removing dead time between handoffs, killing duplicate entry, and letting the team run stages in parallel because status was visible on a screen instead of in someone's notebook.

Building with an hour of feedback per week

Client availability was about an hour weekly. That shaped everything. We could not iterate on vague feedback — we had to get the stage model right early and build an ops UI the lab could run without filing a ticket for every exception.

If you are in a similar spot: write the states down with the people who do the work before you pick a framework. The lab's process was already valid. We digitized it. We did not redesign it into something engineers liked more.