Aggregates only, no PHI. Shipped unit = outbound packages
(one shipping.package_ledger row = one physical shipment to a patient).
Months marked * are partial (first = ledger start; last = month in progress).
Freshness ceiling: activations are seconds-fresh; shipping/cost are ~minutes-fresh (bounded by the packiyo-sync, not the page).
Static analysis results (not live). Resolved population: 3,837 of 4,854 shipments (~79%) that link to a patient. Each device sits in one bucket. Costs = Shipping SSOT.
| Bucket | Units | Cost (SSOT) | Notes |
|---|---|---|---|
| Delivered & activated (kept) | the healthy bulk | — | device shipped and stood up by the patient |
| Genuine device loss | 277 | ~$34K | almost all tablets — 197 tablets / $32,737; RPM small |
| Offboarded, not recovered | 159 | ~$23K | patient left the program; equipment never recovered |
| Reships (defective) | ~318 (placeholder) | — | a small single-digit % of device shipments; $ and family split not computed |
received_at is 100% null, so the system of record cannot reproduce it).
End-to-end it fails: of the 4,505 patients who offboarded in-window (dated from patient-status
JSON exit dates), only ~8–12% had equipment recovered.quantity_received)
lives in Packiyo and never syncs to our ledger, and returns don't reliably link to patients.
That blind spot is itself the finding.
Newly active = a patient's first-ever tablet activation (patient_tablet_activities)
or first BP/SpO2/weight reading (cosmos_readings → devices → patient_device), counted in that month.
Per-patient (counted once). Packages is per-package, so the gap is expected and is the signal of interest.
Routers are a blind spot — GoodCloud has no patient key, so router activations are not in this curve.
Welcome = the patient's first package. Reship = a later package containing a core device type (PulseOx/BP/Tablet/Scale/Router) the patient already received. Other repeat = a later package that adds only new device types or accessories. The three sum to total shipments.
Rate = reships ÷ total shipments. Est. reship $ is content-based: the SSOT unit cost of the core devices actually in each reship package, plus $19.87 shipping. Scale ($16.56) is a placeholder cost.
Return rate shown vs packages shipped that month. Proxy only — counts return shipments seen by the carrier, not warehouse receipt.
Total = Σ(core-device unit cost) + $19.87 shipping per outbound package, SSOT prices. Tablets dominate (the $166 device); months with more welcome kits cost more per package. Accessories (weights, booklets, shirts) and Knox licensing are not costed here.
Distinct patients whose reship event (2nd+ of a core device type) occurred that month. Tracks the reship curve closely — most reships go to distinct patients rather than repeat offenders.
| Topic | Detail |
|---|---|
| Source DB | ansiblehealth_analysis on the DAP-Local replica (192.168.10.130:5437, read-only sync_user). Derived shipping schema (continuous packiyo-sync) + activation proxies in public. Read live via GET /api/shipping-ops/metrics behind a 60s server-side cache. |
| Shipped unit | Outbound package_ledger rows (physical packages). Multi-device kits count as one package. |
| Activation coverage | Tablet = patient_tablet_activities (validated). BP / PulseOx / Scale = cosmos_readings first reading. Router has no patient join (blind spot) — router activations are excluded from the "newly active" curve, so it is conservative. |
| received_at completeness | … |
| Cost model | SSOT (phase9_cost/ssot_unit_costs.md): PulseOx $6.13, BP $25.22, Tablet $166.18, Router $84.90, Scale $16.56 (placeholder), shipping $19.87/pkg. Accessories & Knox licensing excluded. |
| Refresh model | Page fetches on load + every 60s. The server caches one query batch for 60s, so the DB sees ≤1 read/min regardless of viewers. On DB error the page shows the last-good snapshot flagged stale (never a crash/retry storm). Static fallback baked by shipping-ops-dashboard-refresh.py. |