KO
Back to Projects
LIMS — Specimen Analysis Workflow Management

LIMS — Specimen Analysis Workflow Management

A LIMS backend incrementally re-aligned in production around three decision criteria — analysis-pipeline decoupling, concurrency safety across the specimen lifecycle, and explicit time-boundary policies for long-running work

May 2025 - Jan 2026 8 months

Tech Stack

PythonDjangoDRFPostgreSQLCeleryRedisNGINXDocker

Overview

The backend of a LIMS (Laboratory Information Management System) that digitizes the laboratory workflow for handling specimens sent in by clients — covering the full lifecycle of sample registration → barcoding → preparation → test execution → QC → result analysis → report generation → result delivery. Like any standard LIMS, every state transition has to be traceable as part of the chain of custody.

A LIMS has operational characteristics that go beyond a typical web service: analysis pipelines run on remote hosts for tens of minutes to several hours, a single specimen’s lifecycle is a multi-stage state machine acted on by several operators in parallel, and an outage of the remote analysis host or NFS leaves work indefinitely backed up in flight. While operating this backend, I’ve been aligning it around three decision criteria: analysis-pipeline decoupling, concurrency safety across the specimen lifecycle, and explicit time-boundary policies for long-running work.

Tech Stack

My Role

Backend Developer. I own the analysis-pipeline dispatch architecture, specimen-lifecycle state-machine consistency, queue / worker isolation, and system-log / identifier conventions — the operational backend in general. The consistent working pattern is to land LIMS-domain requirements in stages, in production, without disturbing stability.

Key Contributions

Troubleshooting

Impact

A backend re-aligned for a LIMS domain where long-running analysis pipelines, multi-stage specimen lifecycles, and chain-of-custody requirements all apply at once. The most satisfying part is that decisions like “analysis lifetime must not be tied to an SSH session,” “specimen state transitions are serialized via row-level lock,” and “long-running work has a system-level timeout guard” all live consistently inside the same system, applied through the same toolbox.

View All Projects
Close