Device Shipping — Operations Dashboard

Live · verified recompute. Auto-refreshes every 60s. Data as of · now

Aggregates only, no PHI. Recompute (Jun 2025+, maturity-gated). Shipped unit = outbound package_ledger rows. Every number traces to a live read-only query against ansiblehealth_analysis.

Scope: Jun 2025–present · per-package ledger · see notes below for reconciliation.

1 · Packages shipped vs patients newly active — Jun 2025–present

package_ledger outbound monthly vs first came-alive per patient. Full history (Jun 2025+); months marked * are partial. Routers excluded from "active" (no patient key).

2 · Lifecycle — what happens to a shipped device (matured ≥180d)

Full history (Jun 2025+) matured cohort (first device-shipment per patient ≥180d old). Buckets sum to shipped.

3 · Where carrier exceptions go (Jun 2025+)

Classified from carrier timeline.details (the substatus code field is null) — a different basis than the prior substatus-code classification; the conclusion (exceptions mostly deliver) is robust. Exception detail is ~100% populated across the full ledger history, so this covers the full range (Jun 2025+). Flag categories overlap, so flows are per-category, not additive.

4 · Carrier exception flags → ultimate status (Jun 2025+)

Each flag's ultimate ledger status. Flags overlap (a package can carry several); rows do not sum across.

5 · Reships by device family (Jun 2025+)

Reship = a later separate package containing a device family the patient already received (any gap). Gross hardware reproduces the prior published basis.

6 · Recovery — it works at the item level

packiyo_returns + packiyo_return_items.quantity_received. Per-family split is approximate (shared SKUs); the received % total is exact.

7 · The verified bleed — delivered but never received

Delivered-not-received hardware (verified)
…of which tablets
devices (b1 observed + b2 replaced)

fh_compute_e: b1 (carrier-visible loss) + b2 (delivered then reshipped). The ambiguous non-engagement tail is excluded from the dollar figure by policy.

Scope — Jun 2025–present. Every figure here is computed from the unified package ledger, whose joined history (orders + carrier tracking + Packiyo returns) begins June 2025 — the floor for this view. Order counts run ~1,300 below an order-table (device_shipping_requests) cohort of ~12,400 because that table holds earlier orders that predate the ledger; those are excluded by design, not missing.

The story in three beats

    Cost bases — what each backed number measures

    Different metrics on different cohorts — NOT additive, NOT one headline. Excluded by policy: offboarded upper bound, non-engagement tail, came-alive difference-in-differences.

    Data sources & method

    TopicDetail
    Sourceansiblehealth_analysis @ DAP-Local (192.168.10.130:5437, read-only). Derived shipping schema + activation proxies in public. Live via GET /api/shipping-v2/metrics, ~10-min cache.
    Maturity gatingLoss/recovery/reship counted only after the maturity window (30d); shipments <30d old are shown separately as "too recent," never blended.
    RecoveryHeader received_at is 100% null (why earlier reads understated recovery); item-level quantity_received IS populated and is used here.
    Cost modelSSOT: PulseOx $6.13, BP $25.22, Tablet $166.18, Router $84.90, Scale $16.56 (placeholder), freight $19.87/pkg.