Platform

Clinical deterioration detection. Nine rules. One engine.

A real-time rules engine that evaluates every incoming reading against window-based detection patterns. Source-agnostic — works across cellular devices, manual entry and ingested clinical systems. Alerts route by role, scope and urgency.

Book a demo
Capabilities

Pattern detection, not just threshold alerts.

Nine detection rules

BP uncontrolled, SpO2 critical, SpO2 sustained, respiratory rate elevated, glucose hyperglycaemia burst, glucose hypoglycaemia event, weight gain, multi-at-risk cluster, missed readings.

Window-based analysis

Rules evaluate over 7, 14 and 30-day sliding windows — not isolated readings. Trends, sustained deviations and rate-of-change patterns drive detection.

Source-agnostic reads

Canonical read from wearable readings, manual vital signs and ingested clinical systems in one query. Add a new data source — the engine evaluates it immediately.

Role-based notification

Alerts route to the right clinician by role and scope. Watch to nurse unit manager. Concern to RN + NUM. Urgent to RN + NUM + allied health. In-app and email.

Scope precedence

Routing rules resolve at facility, tenant then system scope. First hit wins. Organisations customise alert routing per site without code changes.

Evidence accumulation

Open alerts accumulate evidence on each evaluation — not a flood of duplicate notifications. One alert per rule per person, extended until acknowledged or resolved.

Detection

Nine rules. Three severity levels. Real-time evaluation.

Every incoming reading triggers evaluation across all active surveillance widgets on the person's chronic-condition pathways.

HealthOS — Clinical Deterioration Engine DETECTION RULES bp_uncontrolled Systolic >140 sustained over 7-day window CVD spo2_critical SpO2 <88% single reading — immediate COPD spo2_sustained SpO2 <92% sustained over 3+ readings COPD resp_rate_elevated RR >25/min sustained over 14-day window COPD glucose_hyper_burst 3+ readings >11.1 mmol/L within 7 days DM glucose_hypo_event Any reading <4.0 mmol/L — immediate DM weight_gain >2 kg gain over 7 days (fluid retention signal) CKD multi_at_risk_cluster 2+ metrics at-risk concurrently (comorbidity) All missed_readings No readings for 2+ expected windows All Urgent Concern Watch Detection Pipeline Reading arrives → canonical normalisation → rule evaluation → alert UPSERT → notification fan-out Data Source Withings webhook Manual vital signs Clinical system Canonical Read wearable_readings UNION vital_signs Rule Engine 9 detection rules 30-day context Alert UPSERT Extend evidence or create new Notification Fan-out In-app + email Role-based routing Within scoped transaction — rollback undoes both data write and alert After txn commit Active Alerts — Facility View Sunrise Aged Care | 3 active alerts | Last evaluation: 2 min ago Person Rule Level Evidence Routed to Margaret T. bp_uncontrolled Urgent 7 readings, 7-day avg 148/92 RN, NUM, GP Harold M. weight_gain Concern +2.4 kg over 5 days RN, NUM Dorothy K. missed_readings Watch No BP readings for 4 days (expected daily) NUM Acknowledge Resolve View evidence Observation (source) | DetectedIssue (alert) | CommunicationRequest (notification) | Provenance (audit) Indicative wireframe — HealthOS Clinical Deterioration Engine

Window-based detection, not single-reading alerts

Legacy threshold alerting fires on every reading that crosses a line. The result: alert fatigue, ignored notifications, missed patterns. The HealthOS deterioration engine evaluates over configurable time windows — detecting sustained trends, rate-of-change patterns and multi-metric clusters that single readings miss.

  • BP uncontrolled: 7-day average systolic >140 mmHg (not a single spike)
  • SpO2 sustained: 3+ readings below 92% within a window (not one dip)
  • Glucose burst: 3+ hyperglycaemic readings within 7 days (pattern, not point)
  • Weight gain: >2 kg over 7 days signals fluid retention in CKD/HF
  • Multi-at-risk cluster: 2+ metrics in concern band simultaneously flags systemic deterioration
  • Missed readings: absence of expected data triggers follow-up before deterioration goes undetected
7-day window

Source-agnostic — one engine, every data path

The deterioration engine reads from a canonical data layer that unifies wearable readings, manually recorded vital signs and data ingested from clinical systems (Leecare, Nightingale, iCare). One reading type normalised to one metric code — regardless of origin.

  • Withings cellular devices (BPM Connect, ScanWatch, Body Smart) write to wearable_readings
  • Manual vital signs entered by nursing staff write to vital_signs
  • Clinical system integrations (Leecare, Nightingale) land in the same canonical tables
  • Canonical UNION query normalises reading_type to metric codes for rule evaluation
  • Adding a new data source requires no rule engine changes — just a new persister
  • Same evidence pool regardless of whether reading came from device, nurse or ingested system
Engine

Alert lifecycle — accumulate, don't flood

Traditional systems create a new alert for every threshold breach. The result: hundreds of duplicate notifications that clinicians learn to ignore. HealthOS maintains one open alert per rule per person — extending evidence on each evaluation until the alert is acknowledged or resolved.

  • UPSERT semantics: open alert extended with new evidence, last_detected_at bumped
  • Evidence deduplication by source table and source ID — capped at 50 entries
  • Full lifecycle: open → acknowledged → resolved (with clinician attribution)
  • Notification fan-out only fires once per alert creation (not per evidence extension)
  • Audit trail: notifications_sent JSONB records channel, recipient, timestamp, delivery status
  • Configurable per pathway via surveillance widget config — no code changes to tune
Open +Evidence Resolved
Reference

Detection rules by condition pathway

Each chronic-condition pathway seeds surveillance widgets with condition-appropriate detection rules. Severity and routing are configurable per organisation.

CVD pathway

bp_uncontrolled (watch) — 7-day avg systolic >140.
multi_at_risk_cluster (concern) — 2+ metrics in concern band.

Diabetes pathway

glucose_hyper_burst (concern) — 3+ readings >11.1 in 7 days.
glucose_hypo_event (urgent) — any reading <4.0.
multi_at_risk_cluster (concern).

CKD pathway

bp_uncontrolled (concern) — renal risk from sustained hypertension.
weight_gain (concern) — >2 kg / 7 days (fluid balance).
missed_readings (watch).

COPD pathway

spo2_critical (urgent) — any reading <88%.
spo2_sustained (concern) — 3+ readings <92%.
resp_rate_elevated (concern) — sustained RR >25/min.

Connected across the platform

See the deterioration engine in action.

A 45-minute walkthrough with live detection rules firing against real device data from a reference deployment.