One facility's record, on one page: what it is licensed to do, what it reported doing, which ZIP codes supplied its patients — and the number nobody publishes: how much of those places' demand went somewhere else.
Read at a service-planning and facility-review desk, not at a capital committee. In practice: screening a material-change notice, a bed-classification filing, a distressed-facility watch, or a county asking what a change at one hospital would mean for the places that use it.
Which is why the unit of answer is a single facility's record — never a rank. The chooser is ordered by name within county, never by occupancy or volume. A ranked chooser would make this a league table, and a league table answers a budget question this app deliberately does not own.
This facility serves these places, holds this much of their demand, loses this much of it, and has this much licensed capacity per ten thousand of the people who actually use it.
The publisher of the data answers two of the four — on two different screens, with no way to put them on one record.
Against a county, a drawn radius, or a plurality-assigned market area — none of which is the set of places that actually use the building.
WHO SARA v2.2 says service availability "does not include more complex dimensions such as geographical barriers, travel time and user behaviour" — and its densities are computed on administrative units. The right-hand column of this ledger is precisely what SARA leaves out.
Hospital service areas assign each ZIP to exactly one hospital, "where the greatest proportion of Medicare residents were hospitalized" — 3,436 HSAs, winner-take-all. A ZIP split 45/40/15 is recorded as belonging wholly to one of them.
Two more corrections came out of the study, and both are load-bearing: California repealed its Certificate of Need programme in 1987 — so here the app informs a screening judgement rather than feeding a determination — and the exact question "which places depend on it" cannot be answered without patient-level data. So it was reshaped to what an aggregate can answer, precisely.
"Which places depend on it" is, at full resolution, a statement about individual discharges — records that may never enter this template under any framing: not de-identified, not sampled, not "just for the demo". So the question became: which ZIP codes depend on it above the publisher's own disclosure floor, and what share of the demand in those ZIP codes went somewhere else. That is not a softened question. It is the same question at the resolution the public record supports.
Lightness carries magnitude; outline style carries the epistemic state. The four measured classes are solid fills separated by 2.02, 2.03 and 1.69 in contrast (the ends by 6.9:1, which survives greyscale and colour-vision deficiency). The withheld class is no fill at all with a dashed outline — a difference in kind, not in shade. It is never rendered as 0, never smoothed, never interpolated, never modelled, and it reads suppressed in the detail card, in the popup and in the CSV export, where its case cell is empty.
Both shares are computed over measured demand only. The withheld tail belongs to neither share and is reported as withheld — so the denominator is a stated floor rather than a silent assumption.
| Lane | Source | Vintage | What it can say |
|---|---|---|---|
| Capability — licensed to do | California licensed-facility listing | current, read 2026-08-26 | What the site is permitted to offer |
| Activity — what it reported doing | CMS Hospital Provider Cost Report | FY2023 final, published 2026-01-08 | What it filed, for a stated year |
| Origins — who depends on it | CMS Hospital Service Area | CY2025, published 2026-07-06 | One payer's inpatients, by ZIP of residence |
| Beds per 10,000 of the catchment | no verifiable open ZIP-area population denominator | three routes probed, all three fail | no estimate — never a zero |
A licence says what a site is permitted to offer; a filing says what it did in a named year. The app shows both, labels both, and infers neither — and the gap between them is the most interesting thing on that side of the ledger.
The fourth row is the design decision worth stealing. SARA's headline density is inpatient beds per 10,000 population; the denominator does not exist at ZIP-area grain, so the cell renders the words no estimate with its citation and a button that shows all three failed probes. Zero is a measurement. Absence is not. An empty lane that states why is worth more than a modelled number that cannot be defended.
For each ZIP that materially depends on this facility, the share of that ZIP's measured demand the facility held — and the share that went elsewhere — rolled up to one facility-level figure, weighted by exactly what each origin contributes.
And the two rows at the bottom of that ledger are the reading no incumbent screen produces. ZIP 90048 — the one the hospital sits in — it holds at 76.6 %. But 90019 and 90016 are among its largest origins and it holds barely a third of their measured demand: 33.4 % and 28.9 %. A facility drawing heavily from places where it is not the plurality provider is in a completely different position from one that is — at identical bed counts and identical occupancy.
BANNER LASSEN MEDICAL CENTER — 25 licensed beds, 32.4 % occupancy, 209 measured cases. Twenty-six of its twenty-eight origin cells are withheld by the publisher.
2 measured · 18 withheld and drawn · 8 withheld and out of state, so undrawable on a California map. 2 + 18 + 8 = 28, and the app prints all three numbers separately rather than one that looks complete.
An application that rendered a withheld cell as zero would draw a rural hospital with almost no catchment. This one draws two filled cells and eighteen dashed outlines and says so — in the ledger, in the popup, in the ZIP list footer and in the CSV. The reading that survives is still substantive: a 25-bed hospital at a third of its occupancy, holding a third of its own town's measured demand. And it is honest about how little of the picture is visible.
Pick a facility, and the whole record moves in one gesture — the identity band, the licensing schedule, the entire utilisation column, the occupancy gauge, both origin counts, both shares, the ZIP list and the map's catchment.
372 of 442 California provider numbers with origin data resolve to a mapped facility, by two independent routes. 221 agree · 1 disagrees · 1 is one-to-many — and both print verify on their face. The 70 that do not resolve are named in the chooser footer rather than quietly dropped.
A single glyphs: undefined invalidated the entire map style — the rejection reaches only the map.error event, and every non-visual assertion stayed green. The app now reports its own map errors to the status line; that handler found the bug within seconds of being added.
MapLibre is vendored, not fetched from a CDN. The browser suite records every outbound request Chrome actually made and allows only tile hosts. Point the basemap list at an internal tile server and the app makes no outbound request at all.
Three traps harvested for the library: the CMS data API silently truncates an over-large page — size=10000 returns 6,500 rows with no error and no flag, so a pager that stops when rows < size loses 94 % of the file. TIGERweb accepts maxAllowableOffset and it is worth 20× (1,000 features in 2 MB and 7.8 s, against 500 in 19 MB and 54 s). And a MapLibre expression may not compare a value to null — the throw is swallowed into map.error and the map silently stops updating.
Every one of these is written into the delivered application's own README, and the build records what it did not verify as plainly as what it did. A tool that hides its edges costs you the project it cannot finish.
Your licensed-facility inventory, your reported activity series, and an origin aggregate at facility × area grain with its disclosure floor named. Two weeks, and this ledger reads your estate instead of California's.
Portable by construction: both lanes in the reference build are national, the licensing vocabulary is a lookup rather than a hardcoded list, and a customer holding its own discharge extract behind its own perimeter can raise the resolution without changing the app's shape — because it consumes an aggregate schema either way. That is an ingestion path, not a rebuild.