Retour à la leçon·Leçon 3 sur 8·La fiche de référence
La fiche de référence, champ par champ
Le même diaporama que les téléchargements, rendu sous forme de page. Lancez le diaporama pour le présenter en plein écran — les flèches ou un clic avancent d'une diapositive, Échap quitte.
Ce que couvre cette leçon
- Le test que la fiche doit passer
- Les champs
- Exemple travaillé — couverture penta3
- Le champ que tout le monde omet
- Gardez-la à côté du code
- Écrivez les exclusions en code, pas en prose
- Versionnez-la
- Le test des deux analystes, en pratique
- La suite
Notes du présentateur
Une page par indicateur, treize champs, et un test qui dit quand elle est finie — remettez-la à un second analyste et voyez s'il obtient votre chiffre sans poser de question.Le test que la fiche doit passer
- Une fiche de référence d'indicateur est finie quand un analyste compétent qui ne vous a jamais rencontré peut calculer votre chiffre à partir d'elle, sur les données brutes, sans vous poser de question.
Notes du présentateur
Une fiche de référence d'indicateur est finie quand un analyste compétent qui ne vous a jamais rencontré peut calculer votre chiffre à partir d'elle, sur les données brutes, sans vous poser de question. C'est le seul test qui vaille, et il est impitoyable. Presque toutes les fiches en circulation y échouent aux trois mêmes endroits — la source du dénominateur est nommée mais pas spécifiée, les exclusions ne sont pas listées, et personne n'a écrit quoi faire quand une unité de rapportage reste silencieuse.Les champs
Champ Ce qu'il contient Nom Y compris l'unité de mesure Définition Une phrase lisible par un non-analyste Numérateur La condition exacte, en mots Dénominateur La population exacte, et sa provenance Exclusions Ce qui est délibérément écarté, et pourquoi Unité de mesure Pourcentage, décompte, pour 1 000, litres par personne et par jour Sens Plus haut est mieux, plus bas est mieux, ou ni l'un ni l'autre Désagrégation Les découpages rapportés, et l'effectif minimal par cellule …
Notes du présentateur
Treize champs, la plupart d'une ligne. Une fiche prend vingt minutes et ne se réécrit jamais.Exemple travaillé — couverture penta3 — Exemple (suite)
Name penta3_coverage_percent_monthly Definition The share of the target infant population that received a third dose of pentavalent vaccine in the month. Numerator Third doses of pentavalent vaccine administered, as reported by facilities that submitted a monthly report for that month. Denominator Surviving infants in the catchment, from the MoH population estimates 2024, projected from the 2015 census at 2.4% annual growth, summed across facilities that reported. Exclusions Facility-months with report_submitted = false are excluded from both numerator and denominator. Doses given to children outside the catchment are not separable and remain in the numerator. Unit Percent Direction Higher is better Disaggregation Month, facility type, district. Minimum cell 30 in denominator. Frequency Monthly, reported 6 weeks after month end Source DHIS2 data element PENTA3_DOSES, org unit level 4, monthlyExemple travaillé — couverture penta3 — Exemple (suite)
Computation 100 * sum(doses) / sum(target_population), over reporting facility-months only. Not the mean of facility-level rates. Decision Whether a district is prioritised for outreach in the next quarterly microplan. Limitations Reporting completeness was 76.5% in 2024 and fell to 29% in August; the figure is a lower bound in any month where completeness is below 90%. Catchments overlap, so facility-level values are unreliable; use district level or above.Exemple travaillé — couverture penta3
- « Sur les seuls couples formation-mois ayant rapporté. Non la moyenne des taux par formation. » — Ces deux phrases…
Notes du présentateur
Lisez ensemble les lignes d'exclusions et de calcul, car c'est là que le test des deux analystes échoue le plus souvent. « Sur les seuls couples formation-mois ayant rapporté. Non la moyenne des taux par formation. » Ces deux phrases tranchent un écart de plusieurs points et aucune n'est impliquée par la définition. Un rapport de sommes et une moyenne de rapports sont deux nombres différents, et les deux sont des lectures raisonnables de « couverture ».Le champ que tout le monde omet
- Il révèle les indicateurs qui n'éclairent rien. Certains restent exigés — un bailleur les demande — et c'est une…
- Il révèle les indicateurs qui éclairent deux décisions. Une couverture servant à la fois à prioriser des sorties de…
- Il fixe la précision nécessaire. Un indicateur qui priorise un district doit avoir raison sur le classement. Un…
Notes du présentateur
Décision éclairéemanque à la plupart des modèles en usage, et c'est le champ qui travaille le plus. Le remplir a trois effets, tous trois inconfortables de façon utile.Gardez-la à côté du code — En Python
import json from pathlib import Path sheet = json.loads(Path("indicators/penta3_coverage.json").read_text()) assert sheet["denominator_source"], "denominator source is required" assert sheet["decision_informed"], "an indicator with no decision needs saying so" numerator = vax.loc[vax["reported"] & (vax["antigen"] == "penta3"), "doses_administered"].sum() denominator = vax.loc[vax["reported"] & (vax["antigen"] == "penta3"), "target_population"].sum() print(f"{sheet['name']}: {100 * numerator / denominator:.1f}")Notes du présentateur
Une fiche de référence dans un fichier Word au fond d'une boîte mail est une fiche qui dérive. Stockez-la comme donnée à côté du script qui calcule l'indicateur.Gardez-la à côté du code — En R
sheet <- jsonlite::read_json(here::here("indicators", "penta3_coverage.json"), simplifyVector = TRUE) stopifnot(nzchar(sheet$denominator_source), nzchar(sheet$decision_informed)) vax |> filter(report_submitted, antigen == "penta3") |> summarise(value = 100 * sum(doses_administered) / sum(target_population))Notes du présentateur
Deux gains. Les assertions font échouer l'exécution quand une fiche est incomplète, ce qui est le geste que fait le schéma de contenu de cette plateforme. Et la fiche voyage avec le résultat, si bien qu'un tableau et ses définitions circulent ensemble — l'habitude introduite par le cours de fondamentaux avec undefinitions.csvà côté de chaque sortie.Écrivez les exclusions en code, pas en prose — En Python
EXCLUSIONS = [ ("non-reporting facility-months", lambda d: ~d["reported"]), ("other antigens", lambda d: d["antigen"] != "penta3"), ] remaining = vax.copy() for label, rule in EXCLUSIONS: dropped = rule(remaining).sum() remaining = remaining[~rule(remaining)] print(f"excluded {dropped:>5} rows: {label}") print(f"{len(remaining)} rows in the indicator")Notes du présentateur
Le champ des exclusions est celui qui a le plus de chances d'être vrai dans le document et faux dans le script. Comblez l'écart en produisant l'un à partir de l'autre.Écrivez les exclusions en code, pas en prose — En R
EXCLUSIONS <- list( "non-reporting facility-months" = function(d) !d$report_submitted, "other antigens" = function(d) d$antigen != "penta3" ) remaining <- vax for (label in names(EXCLUSIONS)) { rule <- EXCLUSIONS[[label]] cat(sprintf("excluded %5d rows: %s\n", sum(rule(remaining)), label)) remaining <- remaining[!rule(remaining), ] }Notes du présentateur
L'affichage produit est le champ des exclusions, avec ses comptes. Collez-le dans la fiche et les deux ne peuvent plus diverger.Versionnez-la — Exemple
version 2.1 changed 2026-07-28 change Denominator restricted to reporting facilities. Previously all facilities, with non-reporters counted at their target population, which understated coverage by about 23% in August 2024. effect Series revised from 2024-01. Values before v2.1 are not comparable.Notes du présentateur
Une définition d'indicateur change. Quand elle change, la série se casse, et la cassure doit être visible.Versionnez-la
- N'améliorez jamais une définition en silence — Un taux de couverture qui monte de huit points parce que la définition a…
Notes du présentateur
N'améliorez jamais une définition en silence. Un taux de couverture qui monte de huit points parce que la définition a changé, présenté dans le même graphique que les trimestres précédents, est le constat faux le plus convaincant qu'un système de suivi-évaluation puisse produire.Le test des deux analystes, en pratique
- Le collègue a pris le mois calendaire ; vous aviez pris le mois de rapportage.
- Le collègue a calculé une moyenne de taux par formation ; vous un rapport de sommes.
- Le collègue a inclus l'hôpital de district ; votre extraction l'excluait à cause d'un filtre de niveau d'unité…
Notes du présentateur
Une fois par trimestre, prenez un indicateur, remettez la fiche et l'extraction brute à un collègue qui ne l'a pas écrite, et comparez. Cela prend une heure et trouve des choses qu'aucune relecture du document ne trouve. Ce qu'il fait typiquement remonter. Chacun de ces cas est une fiche à laquelle il manquait une ligne. Le but de l'exercice est de trouver la ligne, pas de savoir qui avait raison.La suite
- Le champ qui engendre plus de désaccords que les douze autres réunis est le dénominateur.
Notes du présentateur
Le champ qui engendre plus de désaccords que les douze autres réunis est le dénominateur. La leçon suivante lui est entièrement consacrée — le choisir, le défendre, et dire honnêtement ce qu'il exclut.