Case study
Dalfin Stenella Intelligent Care
Real-time ICU patient monitoring for hospitals, deployed on-premises and built to integrate with the hospital's own SIMRS.
The problem
Before this system, ICU nurses monitored patients the way most hospitals still do: walk to each bedside, read the numbers off the patient monitor or ventilator, and write them down on a paper chart, roughly once an hour. That works, but it means a deterioration between rounds can go unnoticed, transcription errors happen, and nobody has a continuous history to spot a trend before it becomes an emergency. On top of that, hospital IT environments are the opposite of a clean cloud deployment target: unreliable local networks, strict requirements to keep patient data on-premises, and non-technical hospital IT staff who need to install and license the system themselves, per hospital, without an engineer on site.
The solution
I designed and built the on-premises deployment architecture: a Docker Compose bundle (NestJS backend, React dashboard, FastAPI telemetry service) installed at each hospital through a cross-platform desktop installer. Medical devices stream vitals through a message broker into a time-series database, and out to the dashboard live over WebSocket. Licensing is enforced through contract validation against a cloud API, with a 30-day offline grace period so a hospital keeps running through a network outage instead of losing monitoring. Stenella's own scope stops at the ICU device dashboard: it exposes patient vitals through FHIR-compliant APIs so a hospital can integrate them into its own SIMRS (Sistem Informasi Manajemen Rumah Sakit), rather than syncing directly with a national health platform.
Architecture
Simplified view of the deployment: on-premises services at the hospital, talking to a small set of cloud services for licensing, and exporting data to the hospital's own SIMRS.
Tech stack
Why this combination, specifically for an on-premises hospital deployment.
Structures the backend API — auth, business logic, and the license/contract validation flow — with a modular architecture built for a team to extend, not just one person to remember.
Type safety across the backend and the telemetry pipeline's data contracts, so a device-payload shape mismatch fails at compile time instead of silently corrupting a patient's vitals record.
The core database, extended with TimescaleDB for the vitals time-series — hypertables handle the sustained write-and-query pattern of continuous ICU monitoring far better than plain relational tables.
One schema and migration history shared between the backend and telemetry service, so the two can't silently drift apart on what a table looks like.
Caches the license/contract check so every request doesn't re-validate against the cloud API, keeping the dashboard responsive even on a slow hospital network.
Decouples medical devices from the app — devices publish vitals to a queue, and the telemetry service consumes at its own pace instead of every device call blocking on a live database write.
S3-compatible object storage for uploaded documents and images, running on the same on-premises box as everything else, since patient files can't leave the hospital network.
Powers the telemetry microservice on its own. Python's data-processing ecosystem was the better fit there, kept as a separate service instead of forcing the NestJS backend to do both jobs.
The entire stack — nine services — ships as one Compose bundle, so hospital IT installs it with a single command instead of provisioning each service by hand.
The desktop installer that wraps the Compose bundle into a native app hospital IT can double-click — far lighter than Electron for a tool that only needs to run a handful of install steps.