Atelier : Construire l’analytique MMR dans Superset
Tout ce qui se construit dans Superset suit la même recette en quatre étapes : enregistrer un jeu de données, définir un indicateur, transformer l’indicateur en graphique, puis assembler les graphiques en tableau de bord. Cet atelier applique cette recette de bout en bout au ratio de mortalité maternelle, pour aboutir au tableau de bord national d’analyse situationnelle maternelle. Chaque graphique de ce tableau de bord a été construit exactement de cette manière : une fois la recette maîtrisée, elle se transfère à n’importe quel autre indicateur.
- Enregistrer un dataset d’événements maternels dans Superset et l’enrichir avec des champs MPCDSR au niveau des cas
- Écrire et enregistrer un indicateur MMR réutilisable en SQL personnalisé, partagé par tous les graphiques du tableau de bord
- Transformer l’indicateur enregistré en courbe de tendance et en tuiles grand format nationales
- Assembler les graphiques dans le tableau de bord Analyse situationnelle maternelle à neuf onglets
- Interpréter les résultats descriptifs et diagnostiques du tableau de bord terminé
- Un accès à une instance Apache Superset connectée à l’entrepôt de données contenant les données de santé maternelle déjà ingérées (DHIS2 + MPCDSR), avec les droits nécessaires pour créer des datasets, des graphiques et des tableaux de bord
- Avoir terminé Fondamentaux de l’analytique — cet atelier s’appuie directement sur les quatre types d’analytique et les quatre questions analytiques qui y sont présentés
- Une familiarité de base avec les requêtes SQL d’agrégation (
GROUP BY,FILTER/CASE,NULLIF)
Enregistrer le jeu de données
Commencez par déterminer les éléments de données requis, puis enregistrez-les dans Superset sous forme de Dataset — une table physique ou une vue SQL. Le jeu de données devient la source unique que chaque graphique interroge, ce qui garantit la cohérence des définitions sur l’ensemble du tableau de bord.
Depuis DHIS2, le modèle a besoin de :
- Naissances vivantes — le dénominateur
- Décès maternels — le numérateur
- Cause du décès
- Établissement et type d’établissement
- Province et district
- Date du décès
Enrichissez ensuite le jeu de données avec les champs MPCDSR au niveau des cas : les trois retards, le statut de référence, l’évitabilité, l’âge et la parité. Les données de routine donnent les taux ; les champs de surveillance apportent la profondeur diagnostique.
Dataset : maternal_events
Colonnes (12)
live_births bigint
maternal_deaths bigint
cause_of_death varchar
facility varchar
facility_type varchar
province varchar
district varchar
date_of_death date
delay_1 / delay_2 / delay_3 varchar
referral_status varchar
avoidability varchar
age integer
parity integerVous ne voyez pas cela ?
- Les champs MPCDSR (retards, statut de référence, évitabilité) sont absents — vous avez enregistré l’export DHIS2 brut avant que la jointure d’enrichissement n’ait tourné. Relancez l’étape d’enrichissement, puis resynchronisez les colonnes du dataset dans Superset.
live_birthsoumaternal_deathsapparaissent envarcharau lieu d’un type numérique — corrigez le type de colonne dans Edit dataset → Columns, sinon le calcul du MMR ci-dessous échoue silencieusement.
Estimer le MMR à partir des données de routine
Le ratio de mortalité maternelle correspond aux décès maternels divisés par les naissances vivantes, multipliés par 100 000. Vous pouvez obtenir ce même chiffre par deux chemins — le prototyper dans SQL Lab, ou le définir directement comme indicateur Superset sur le dataset. Dans les deux cas, cela devient la formule unique que réutilise chaque graphique du tableau de bord, sans aucune dérive entre les graphiques.
SQL Lab
Exécutez la requête d’agrégation complète sur le dataset enregistré pour vérifier les chiffres avant d’enregistrer quoi que ce soit :
-- Maternal Mortality Ratio (per 100,000 live births)
SELECT
year,
facility_type,
COUNT(*) FILTER (WHERE event = 'maternal_death') AS deaths,
COUNT(*) FILTER (WHERE event = 'live_birth') AS births,
ROUND(
COUNT(*) FILTER (WHERE event = 'maternal_death')::numeric
/ NULLIF(COUNT(*) FILTER (WHERE event = 'live_birth'), 0)
* 100000, 0
) AS mmr
FROM maternal_events
GROUP BY year, facility_type
ORDER BY year;Le NULLIF protège contre la division par zéro lorsque les naissances sont manquantes.
Metric : mmr (SQL personnalisé)
Aperçu du résultat de la requête
year | facility_type | deaths | births | mmr
------+----------------+--------+---------+------
2019 | tertiary | 612 | 48 000 | 1275
2023 | tertiary | 354 | 48 000 | 737Vous ne voyez pas cela ?
- L’aperçu renvoie
mmr = NULLpour une ligne au lieu d’un nombre — ce couple facility_type/année a zéro naissance vivante ; vérifiez que la protectionNULLIFest bien dans le SQL du metric enregistré, pas seulement dans la requête ad hoc testée. - Le metric n’apparaît que sous “Simple”, pas sous “Custom SQL” — vous l’avez enregistré sur l’agrégat par défaut du dataset au lieu de coller le SQL dans Add metric → Custom SQL.
Transformer l’indicateur en graphique
Choisissez un type de graphique adapté à la question. Une question de tendance appelle une courbe ; une question de classement appelle un diagramme en barres ; un chiffre phare unique appelle une tuile grand format. En traçant l’indicateur MMR enregistré par année pour les établissements tertiaires, et sous forme de tuiles nationales grand format, on obtient les chiffres clés :
| Chiffre | Valeur |
|---|---|
| MMR des établissements tertiaires, début de la période de rapportage | 1 275 pour 100 000 naissances vivantes |
| MMR des établissements tertiaires, fin de la période de rapportage | 737 pour 100 000 naissances vivantes |
| MMR national actuel | 77 pour 100 000 naissances vivantes |
| Plafond HSSP V pour 2025/26 | 86 pour 100 000 naissances vivantes |
Le MMR des établissements tertiaires diminue régulièrement sur la période de rapportage, et le chiffre national de 77 se maintient confortablement sous le plafond de 86 fixé pour 2025/26.
Courbe "MMR des établissements tertiaires par année"
2019 ● 1 275 pour 100 000 naissances vivantes
2023 ● 737 pour 100 000 naissances vivantes
tendance : baissière
Tuile Big Number "MMR national" → 77 pour 100 000 naissances vivantes
Tuile Big Number "Plafond HSSP V" → 86 pour 100 000 naissances vivantesVous ne voyez pas cela ?
- La courbe est plate ou n’affiche qu’un seul point — la dimension du graphique pointe vers une autre colonne que
year, ou un filtre issu d’une exploration précédente restreint encore l’affichage à une seule année. - La tuile grand format affiche une valeur très éloignée de 77 — elle interroge le dataset brut au lieu de l’indicateur
mmrenregistré ; repointez le champ metric du graphique vers l’indicateur enregistré.
Assembler le tableau de bord
Enfin, regroupez les graphiques en onglets de tableau de bord. Les onglets du tableau de bord d’analyse situationnelle maternelle reflètent les quatre questions analytiques de la session sur les fondamentaux — de la vue d’ensemble de la mortalité jusqu’aux circonstances des décès et au continuum de soins.
| Onglet | Question analytique traitée |
|---|---|
| Mortalité maternelle | Vue d’ensemble — tendance et MMR phare |
| Vue d’ensemble des accouchements | Vue d’ensemble — volumes d’accouchements derrière le dénominateur |
| Investigation régionale | Vue d’ensemble — distribution géographique et par hôpital |
| Audit des décès maternels | Causes — décès directs vs indirects par cause |
| Caractéristiques des mères | Facteurs associés — âge, parité, profil de risque |
| Circonstances du décès | Facteurs associés — retards, référence, évitabilité |
| Analyse par établissement | Vue d’ensemble et comparaison — performance par établissement et type d’établissement |
| Surveillance | Comparaison — chiffres de routine face aux estimations de surveillance et d’enquête |
| ANC et PNC | Facteurs associés — soins avant et après l’accouchement |
Dashboard : Analyse situationnelle maternelle
Onglets (9)
1. Mortalité maternelle
2. Vue d’ensemble des accouchements
3. Investigation régionale
4. Audit des décès maternels
5. Caractéristiques des mères
6. Circonstances du décès
7. Analyse par établissement
8. Surveillance
9. ANC et PNCVous ne voyez pas cela ?
- Moins de 9 onglets apparaissent — un graphique n’a pas été rattaché à un onglet avant la publication ; ouvrez Edit dashboard et vérifiez que chaque graphique est bien placé dans un onglet, pas laissé en dehors.
- Un onglet s’affiche sans graphique — les filtres propres au graphique ne correspondent pas au cross-filter de l’onglet (par exemple
facility_typerestreint à une valeur qui exclut toutes les lignes).
Ce que le tableau de bord révèle
Le tableau de bord fini livre les deux types d’analytique par lesquels le programme commence.
Descriptif — ce qui s’est passé. Le classement des décès obstétricaux directs par cause montre que l’hémorragie obstétricale domine, avec 445 décès — loin devant les troubles hypertensifs (157), les infections liées à la grossesse (144), les autres complications (131), les issues abortives (105) et la prise en charge imprévue (53).
Diagnostique — pourquoi c’est arrivé. La vue des circonstances des décès montre que 81 % des décès étaient potentiellement évitables, que 72 % sont survenus en post-partum, que 65 % concernaient une grossesse à haut risque et que 97 % des cas avaient été référés. Ensemble, c’est l’élément probant qui déclenche l’action : les décès se concentrent après l’accouchement, la plupart auraient pu être évités, et le circuit de référence est l’endroit où le système est le plus sous tension.
Prochaines étapes
Du tableau de bord aux décisions, quatre chantiers font avancer le travail :
- Finaliser les définitions des éléments de données DHIS2 avec l’équipe S&E.
- Valider le MMR de routine par rapport à l’estimation de l’enquête DHS.
- Étendre l’analytique à la prévision prédictive vers la cible de 86.
- Opérationnaliser une revue mensuelle du tableau de bord avec les équipes cliniques et programmatiques.