Pulse ingests the live signals a hospital already produces, predicts where bottlenecks will form hours ahead, and turns each prediction into a specific, explainable, human-gated action — then fans out the downstream work automatically. Below: the orchestration loop, a concrete example, the runtime that powers it, and the one color language every board speaks.
Signals flow into a canonical event bus, the optimization brain predicts and solves against them, ranked recommendations surface in the command center, a caregiver accepts or overrides, and one tap fans out into real work — which loops straight back into the bus as new signal. Every accepted action is measured, building a trust ledger over time.
The same loop, traced through a single real event: an ED admit that becomes a boarder, the brain's best-fit clean bed, a charge-nurse accept, and the downstream work that fans out automatically — ending in measured boarding hours saved.
An ADT admit event lands on the bus. The patient now needs an inpatient bed.
signalNo bed yet — the clock starts. Boarding pressure climbs the urgency scale.
watch → urgentSolver scores every clean bed against hard + soft constraints — with a "why this bed" breakdown.
solveOne tap. Human-gated — the nurse can override to any ranked alternative instead.
accept ✓Old bed vacated → EVS job + transport dispatched + receiving-unit alert raised in the feed.
downstreamThe boarding hours and moves saved post to the trust ledger — proven, not assumed.
measuredToday a deterministic in-browser engine plays the hospital. But the boundary between the data source and the UI is the exact contract a real hospital feed would use — a live snapshot plus an event stream. That single design choice is what makes the simulation swappable.
engine.tick(world, dt, rng) returns a new WorldSnapshot each tick — advance clocks, fire stochastic events, apply reducers, recompute predictors, run the brain.world, running, speed). This is the contract. A snapshot plus an event stream.useEdPatients · usePlacementQueue · useOpenGaps · useProposedRecs · useMetrics — each component reads only the slice it needs.actions.ts.A single color language means a dirty-too-long bed, an SLA-at-risk wait, and a ratio breach all read identically across every board. It is deliberately the only saturated color in the product — so a separate sequential acuity ramp (ESI 1–5) never collides with it.
Status of any orchestrated item — every board speaks this.
Patient acuity — a separate sequential scale, never urgency.
Two scales, two jobs: urgency tells you what to do next; acuity tells you how sick the patient is. Keeping them visually distinct is a safety decision, not a style one.
docs/ARCHITECTURE.md · docs/CONCEPT.md. The store contract is
intentionally identical to what an ADT / HL7 / FHIR feed would push.