Demand Pulse v2 — Forecasting & Network Console
Patient-pull forecasting · illustrative demo · v2

Demand Pulse — Forecasting & Network Console

Ensemble modelling (Holt-Winters baseline, gradient-boosted trees, bootstrap quantile forecasting), expiry-aware usable stock, protocol-drift reweighting, and a multi-site transfer view — all computed live from simulated feeds. Swap the generator functions for real HIS/ERP/pharmacy streams to make this production-grade.
Single-Site Forecast
Network & Transfers

SKU Selection

Model — confidence is holdout MAPE, converted to 0–100

Defaults to the tier-appropriate model for the selected SKU; override any time.

Protocol Drift

With this on, the model retrains mostly on post-change data instead of averaging across the whole regime shift.

Data Freshness — simulated

14-Day Forecast

Actual Median forecast P25–P75 P5–P95

Demand Pulse — patient inflow vs. consumption (30d)

Day-by-Day Reorder View — reorder logic runs against usable (non-expiring) stock

What's real vs. stubbed here: Holt-Winters, the gradient-boosted stump ensemble, and the bootstrap quantile forecast are all genuine computations over the simulated history — no hardcoded curves. Auto-tuning grid-searches α/β/γ against a 14-day holdout. The expiry split is a lot-level model (three synthetic lots per SKU with distinct expiry windows); protocol drift injects a real step-change into the series and refits on a truncated window when reweighting is enabled, so you can see the naive fit visibly lag the aware one. The data freshness panel and live signal ingestion are UI stubs — wiring FHIR Encounter feeds, OT schedules, and pharmacy dispense events is an integration project, not something a browser artifact can do; the panel shows where that plumbing attaches.

Network Assumptions

Each site runs its own auto-tuned Holt-Winters forecast and reorder point at the lead time / service level set on the Single-Site tab (currently ). Stock levels below are seeded to create a realistic mismatch — adjust any site with its slider.

Recommended Transfers

Allocation logic: for every site, surplus = on-hand − reorder point. Sites with meaningful surplus are matched greedily to the largest-deficit sites first (surplus units capped so no site is stripped below its own reorder point), producing point-to-point transfer suggestions instead of blanket redistribution. A production version would add transfer lead time / cost and solve this as a transportation-problem optimization rather than a greedy match.