--- title: ASCEND Decision Observatory emoji: ↗ colorFrom: green colorTo: gray sdk: static app_file: index.html pinned: false short_description: Global health-system and surgical-access observatory tags: - health-systems - global-surgery - decision-analysis - data-visualization - world-bank - who --- # ASCEND Decision Observatory ASCEND is an independent, exploratory observatory of health systems and surgical access. It links three things that are usually kept apart: **what is observed** (public indicators for every World Bank economy), **what is assumed** (a transparent, editable decision model), and **what is published** (retrievable literature and registry leads). Every number is either traceable to a public source or explicitly labelled as an illustrative assumption. Live app: https://mmrech-ascend.static.hf.space · Author: Matheus Machado Rech (MD; MPH candidate, Harvard T.H. Chan School of Public Health). ## Three views **World lens** — 217 World Bank economies, 2000–2024, on an interactive 3D choropleth globe, a population-sized scatterplot and a sortable table. Indicators are grouped as: | Group | Indicators | Source | |---|---|---| | System context | Health spending per person (current US$ and PPP), physicians per 1,000, life expectancy, out-of-pocket share, population | World Bank WDI | | Surgical system (LCoGS) | Specialist surgical workforce (SAO) per 100,000; surgical procedures per 100,000; share at risk of catastrophic and of impoverishing expenditure for surgical care | World Bank WDI (compiled from the Lancet Commission on Global Surgery indicator programme) | | Coverage & financial protection | UHC service coverage index (SDG 3.8.1); population with household health spending above 10% of consumption (SDG 3.8.2) | WHO Global Health Observatory | | Geographic access (modelled) | Population within 1 h and 2 h of the nearest healthcare facility and population-weighted mean travel time, motorised and walking-only | Computed by `access_pipeline.py` from Malaria Atlas Project 2019 travel-time surfaces × WorldPop 2020 (1 km) over Natural Earth 1:10m polygons | "Latest available" mode shows each economy's most recent observation with its year; fixed-year mode never carries values forward. Missing values stay visibly missing. The Lancet Commission's 2030 targets (≥20 SAO providers and ≥5,000 procedures per 100,000; 100% protection against catastrophic and impoverishing expenditure) are drawn as reference lines and progress bars, not as judgements. **Decision landscape** — an illustrative 12-month flow model of a surgical pathway (arrivals → referral → staffed capacity → funded slots). Sliders change budget, usable capacity and referral improvement; a decision map shows which of four options maximises completed procedures and where the preferred option flips. It is a sensitivity map, not a forecast, and is calibrated to no country. **Evidence atlas** — Europe PMC publications on surgical access, capacity and LCoGS indicators (most-cited first), live Europe PMC search, and ClinicalTrials.gov registrations. Discovery leads only; nothing here calibrates the model. ## Data provenance - World Bank Indicators API (CC BY 4.0): https://api.worldbank.org/v2/ — all economies, `date=2000:2024`. - WHO Global Health Observatory OData API: https://ghoapi.azureedge.net/api/ — `UHC_INDEX_REPORTED`, `FINPROTECTION_CATA_TOT_10_POP` (national total). - Natural Earth 1:110m (public domain) country polygons and boundary lines; see `assets/ATTRIBUTION.md`. - Malaria Atlas Project travel time to healthcare 2019 (CC BY 4.0) via the MAP GeoServer WCS; WorldPop 2020 1 km population counts (CC BY 4.0); Natural Earth 1:10m admin-0 polygons. - Europe PMC REST API; ClinicalTrials.gov API v2. `python3 refresh_data.py` rebuilds `data.json` from the live APIs and writes a request manifest with status, bytes and timestamps for every call. If a live call fails after retries and a previously retrieved raw response exists in `data_raw/`, that response is reused and the source is marked `cached` with its file timestamp; nothing is ever synthesised. `python3 refresh_data.py --validate` re-checks the committed snapshot. `python3 access_pipeline.py --surface motorized` (then `--surface walking`) streams the 1 km travel-time surface tile by tile from the MAP WCS, weights it by the WorldPop mosaic (download `ppp_2020_1km_Aggregated.tif` into `geo/` first, 870 MB) and writes `geo/access_summary.json`, which `refresh_data.py` merges as the "Geographic access (modelled)" group. `python3 make_overlay.py motorized walking` paints the globe overlay PNGs. The whole run takes about 25 minutes on two cores and stores no large intermediate files. ## UN System Data Commons and MCP ASCEND treats the [UN System Data Commons](https://data.un.org/undatacommons/) (United Nations Statistics Division) as a third source and as an interoperability layer. Seven indicators carry a Data Commons identifier (health spending per person, out-of-pocket share, life expectancy, population, physician density, UHC service coverage index, catastrophic health spending above 10%) and SAO density is cross-checked as a derived quantity from WHO head-counts; PPP spending, surgical volume and the surgical-expenditure risks have no counterpart there. The full comparison, with agreement rates and the method differences found, is in [`docs/undc_crosscheck.md`](docs/undc_crosscheck.md). The refresh script stores each economy's latest Data Commons value beside the World Bank/WHO series and reports agreement at the latest common year; the World lens shows both, offers a per-country live check, and can recolour the globe from the Commons' public V2 observation endpoint (`https://unsd-datacommons.gcp.un-icc.cloud/core/api/v2`), which allows cross-origin requests. Live values are session-only and always marked. The same identifiers work with the [UN System Data Commons MCP server](https://projects.officialstatistics.org/undata2/undatacommons-mcp/) (`https://unsd-datacommons.gcp.un-icc.cloud/mcp`). `tools/undc_probe.py` is a dependency-free client that re-runs the server's discover → qualify → retrieve playbook for ASCEND's concepts (`python3 tools/undc_probe.py audit`), documenting why each series was adopted, cross-checked only, or found to have no counterpart (surgical volume, perioperative mortality, PPP spending, surgical-expenditure risks). ## Build, test, run ```bash npm install # esbuild only npm run data # optional: refresh data.json from public APIs npm run build # bundles app.mjs + style.css + data.json into the standalone index.html npm test # model, globe geometry and data-snapshot tests (node:test) python3 -m http.server # or open source.html via any static server for the unbundled modules ``` `index.html` is a generated artefact: do not edit it by hand. Three.js r160 is vendored locally; the app makes no network calls except the optional live Europe PMC search. ## Limitations - National averages describe systems; they do not measure any individual's access to surgery. - LCoGS indicators are compiled from heterogeneous national reports with irregular years; the latest value for an economy can be a decade old and is always shown with its year. - Two of the six LCoGS indicators (2-hour access to Bellwether capacity; perioperative mortality) have no comparable country series in these sources. The modelled access layer measures travel time to any healthcare facility and therefore overstates surgical access. - The decision model is deterministic and illustrative; it carries no uncertainty distribution and no causal claim. - Natural Earth geometry expresses no position on disputed territories; 47 small economies without 1:110m polygons appear as capital markers. ## Provenance ASCEND is an independent research prototype. Earlier health-system explainers were an inspiration only; no framework, code or multipliers were reproduced. Version history: `v1.0.0` (18 Oct 2026) twelve-country prototype; `v2.0.0` (19 Oct 2026) all-economy World lens with LCoGS and SDG 3.8 indicators, choropleth globe, build pipeline; `v2.1.0` modelled geographic access and travel-time overlay; `v2.2.0` UN System Data Commons cross-checks, live refresh and MCP probe; `v2.3.0` cross-check extended to every indicator (eight counterparts, four documented gaps). Tags and the `v1.0-launch` branch preserve each release.