Skip to Content
L’échange d’apprentissage de HIC débute le 13 Juillet 2026. Voir le programme

Macros

nhic_dbt fournit une bibliothèque de plus de 30 macros qui prennent en charge le travail répétitif de nettoyage et de transformation des données de santé. Toutes les macros se trouvent sous macros/ et sont disponibles dans chaque modèle sans aucun import.

Macros de nettoyage des données

Ces macros garantissent la sûreté des types et normalisent les valeurs nulles, les chaînes vides et les valeurs mal formées. Chacune enveloppe une expression de colonne source en SQL et renvoie une valeur nettoyée du type cible.

MacroRôle
clean_booleanConvertit et normalise les valeurs de type booléen (1/0, true/false, Y/N)
clean_dateAnalyse et valide les chaînes de dates ; renvoie null pour les valeurs non interprétables
clean_doubleConvertit en double précision ; force à null les valeurs non numériques
clean_integerConvertit en entier ; force à null les valeurs non numériques
clean_integer_rangeConvertit en entier et impose une plage min/max ; les valeurs hors plage renvoient null
clean_key_dateComme clean_date, mais destinée aux colonnes de clés de substitution — échoue bruyamment sur les valeurs nulles
clean_key_integerComme clean_integer, mais pour les colonnes de clés — échoue bruyamment sur les valeurs nulles
clean_key_regexpValide une colonne de clé par rapport à une expression régulière
clean_key_textSupprime les espaces superflus et met en majuscules les colonnes de clés textuelles ; tolérante aux valeurs nulles
clean_key_timeAnalyse et valide les chaînes d’heures pour les colonnes de clés
clean_month_dateAnalyse les dates partielles au format YYYY-MM et les tronque au mois
clean_numberConvertit en numérique (précision arbitraire) ; force à null les valeurs non numériques
clean_regexpValide une colonne textuelle par rapport à une expression régulière ; les valeurs non conformes renvoient null
clean_textSupprime les espaces superflus et normalise les chaînes vides en null
clean_timeAnalyse et valide les chaînes d’heures ; renvoie null pour les valeurs non interprétables
clean_timestampAnalyse et valide les chaînes d’horodatage ; renvoie null pour les valeurs non interprétables

Exemple d’utilisation

-- models/staging/cemr/stg_cemr__patients.sql select {{ clean_key_integer('patient_id') }} as patient_id, {{ clean_text('first_name') }} as first_name, {{ clean_text('last_name') }} as last_name, {{ clean_date('date_of_birth') }} as date_of_birth, {{ clean_key_text('national_id') }} as national_id, {{ clean_timestamp('created_at') }} as created_at, {{ clean_boolean('is_active') }} as is_active from {{ source('cemr', 'patients') }}

Les variantes clean_key_* expriment une intention — ces colonnes servent dans des jointures ou comme clés de substitution, donc les valeurs nulles inattendues remontent sous forme d’avertissements lors de dbt test.

Macros utilitaires

MacroRôle
array_castConvertit les éléments d’un tableau Postgres d’un type vers un autre
date_utilEnsemble d’assistants de manipulation de dates (périodes fiscales, calcul d’âge, etc.)
hash_columnGénère une clé de hachage MD5 déterministe à partir d’une ou plusieurs colonnes — utilisée pour la déduplication et la génération de clés de substitution
pivot_key_valuePivote une table de paires clé-valeur en colonnes larges — courant pour les éléments de données DHIS2
standardize_facility_nameNormalise les noms des établissements de santé entre systèmes sources à l’aide d’une table de référence

Exemple avec hash_column

-- Surrogate key from multiple columns select {{ hash_column(['patient_id', 'visit_date', 'facility_code']) }} as visit_sk, patient_id, visit_date, facility_code from {{ ref('stg_cemr__visits') }}

Sous-répertoires par domaine

Pour la logique propre à une source qui n’a pas sa place dans une macro générale, les macros sont regroupées en sous-répertoires :

RépertoireContenu
macros/crvs/Transformations des données d’état civil et correspondances propres au CRVS
macros/efiche/Assistants d’analyse des dossiers ambulatoires eFICHE
macros/hmis_tracker/Assistants pour les entités suivies et les étapes de programme DHIS2
macros/incremental_load/Assistants pour les stratégies de matérialisation incrémentale
macros/process_dhis2__org_units/Traitement de la hiérarchie des unités d’organisation DHIS2
Dernière mise à jour le