Course · Intermediate · Indicators and Measurement
Routine Data and DHIS2
Work with an aggregate health information system — its data elements, org unit hierarchy and period logic — and answer the question that always follows: what exactly was counted?
What you will be able to do
- Read a DHIS2 extract as the database it came from — data elements, category combinations, org units and periods — rather than as an unexplained spreadsheet
- Aggregate up an org unit hierarchy without double-counting a facility that moved between districts
- Treat reporting completeness and timeliness as denominators, and say what a coverage figure means when a quarter of units are silent
- Pull an extract through the Web API with a script that runs every month unchanged and records what it asked for
- Reconcile a routine aggregate against a survey estimate of the same thing, and decompose the gap into measure and selection
- Answer what was counted, by whom, over what period, for any figure the system produces
Standards and methodologies
Most of the numbers this sector reports come out of an aggregate health information system, and in most countries that system is DHIS2. Every earlier course in this programme has borrowed from one — the vaccination extract has appeared in five of them — without ever explaining where it came from.
This course explains it. Not as software training: you will not be clicking through an interface. As the data model underneath the export, because knowing that a value is a data element crossed with a category combination, attached to an org unit, in a period, from a dataset, is what turns an unexplained spreadsheet into something you can defend.
The question the course is built around is the one that follows every routine figure ever presented: what exactly was counted? Answering it needs four things the export usually does not carry — which data element, which org units, which period logic, and how many of the units that should have reported did.
The worked examples run on the DHIS2-shaped vaccination extract: 38 facilities, twelve months, six antigens, and 642 of its 2,736 facility-months carrying no report at all. And the course ends on a comparison that has three real answers to one question — acute malnutrition measured at 8.7% by the routine screening register, 11.4% by a household survey using the same measure, and 14.9% by a SMART survey using a different one.
Both Python and R throughout, with the API examples in Python because that is where most extraction scripts in this sector live.
You should have done Data Quality Assessment, which already teaches reporting completeness and timeliness as indicators. This course does not repeat that; it shows how the system computes them, and what it does not tell you.
Practice
Reading the lessons is not the same as having done the work. Each of these applies the course to a dataset it did not teach on.
- Lab · 120 minThe EMIS nobody called a databaseA daily attendance register is an aggregate reporting system that has not been described as one. Rebuild it as data elements, org units, periods and completeness, then answer what was counted.
- Exercise · 60 minSix questions, one figureA slide says penta3 coverage is 78%. Answer the six interrogation questions from the data, find the two that the extract cannot answer, and write the provenance block that should have been on the slide.
Progress
Take it offline
The whole course as a typeset PDF — every lesson, every code example, the data dictionary and the indicator definitions. Generated from the same source as this page.
The LaTeX source ships alongside each PDF, so an organisation can rebrand the handout or fold a lesson into its own training pack.