Methods & notes

This project asks a simple question: can official surveillance data be read more quietly and verifiably? This page describes how we work and where we stop.

What this is

Global Health Signals is an atlas of official infectious-disease surveillance: data published by WHO, ECDC, US CDC and others is normalised to one format, keeps its source and period, is stitched into continuous series where needed — and the stitching is drawn.

What it is not

  • No risk scores or rankings, no forecasts, no medical advice, no promise of real-time alerts.
  • No mock data; missing values are never filled with zero; provisional data is labelled.
  • Colour is not risk: cyan means quantity, indigo-grey a second/historic source, amber an event, latest value or peak.

Stitching across sources

When several sources report the same disease, place, period and metric: national official > WHO/regional agency > academic compilation > secondary aggregator. Lower-priority sources only fill gaps in higher-priority ones, labelled as gap-fill; different case definitions or metrics are never added. Agreement in the overlap (correlation, mean difference, weeks) is shown with the chart. The European influenza series (WHO FluNet → ECDC ERVISS) are all stitched this way; each country page marks the switch week and the agreement in the overlap.

Disease fingerprint

A fingerprint draws a country's dozen-plus seasons as polar year-rings: one ring per season, angle = week within the season (northern hemisphere from ISO week 27, southern from week 1), outward swing = normalised intensity; the rings join end to start as one spiral. Weeks without reports break the line instead of being interpolated, COVID-19-period seasons are dashed, and the season still in progress is dotted, without a peak mark. →

About the maps

Maps here show country centroid points over a heavily generalised continent outline from Natural Earth (public domain), used for orientation only: no borders and no basemap tiles. Dot area shows quantity; grey dots mean no recent data.

How it updates

Data refresh is automatic: scheduled jobs on the Aliyun server fetch every source on Mondays and Thursdays, normalise, stitch and validate, then write compact static JSON slices; events refresh daily on their own. A GitHub Actions job in the health-sources repository (ghs-site, daily) then rebuilds the pages whenever data or code changed, validates the build and swaps it in, rolling back automatically on failure. If a source fails, the previous version is kept and flagged stale without blocking the others.

Data budget

Data slices on this site total about 910 KB uncompressed, and each slice stays under 60 KB gzipped. The full observation table (about {m} million rows) is not shipped on the site; it stays in the pipeline.

Accessibility & privacy

Every chart has a text-alternative table; colour contrast is designed to WCAG AA; motion respects the reduced-motion setting. No ads and no third-party analytics; only your light/dark choice is kept in the browser's local storage.

Known limitations

  • Only WHO, ECDC, US CDC, OWID and OpenDengue are connected so far; China, PAHO, Japan, UKHSA and others are not yet.
  • US CDC NNDSS data are provisional and revised weekly; some WHO indicators (polio, cholera) stopped updating a while ago.
  • BEACON and other event sources are not connected; countries for events are parsed from titles, and unlocated events stay in the list.
  • Country and disease names come from CLDR and WHO naming and still need human proofreading.

Licences

Code is released under Apache-2.0; licences and attribution for source data and derived data are on the “Sources & licences” page. → Sources & licences

Contact & feedback

Please report data or translation problems as issues on the GitHub repository CNalks/ai4health-global.