Documentation FHIR R4 — Système de Surveillance SBE
1. Sélection des ressources
1.1 Contexte et objectifs
Ce document décrit l’implémentation FHIR R4 pour le système de surveillance épidémiologique basé sur les 4 piliers (SBEc) de PIVOT Madagascar, couvrant le district sanitaire d”Ifanadiana.
La sélection des ressources FHIR a été guidée par les objectifs suivants :
Surveillance épidémiologique : détection et suivi des signaux sanitaires
Gestion de la hiérarchie géographique : District > Commune > CSB > Fokontany
Évaluation des risques sanitaires (SBEc_Evaluation)
Communication des alertes entre les niveaux du système de santé
Suivi des substances et agents pathogènes
Regroupement des cas et populations à risque
1.2 Ressources FHIR sélectionnées
Ressource FHIR |
Usage dans SBEc |
Référence HL7 |
|---|---|---|
Location |
Hiérarchie géographique (District, Commune, CSB, Fokontany) |
|
Observation |
Signaux épidémiologiques (date détection, survenue, nb cas/décès) |
|
Group |
Regroupement de cas, populations à risque |
|
RiskAssessment |
SBEc_Evaluation — Évaluation des risques |
|
Substance |
Agents pathogènes, substances dangereuses |
|
Communication |
Alertes et communications entre acteurs |
|
Patient |
Identification des patients |
|
Encounter |
Consultations et visites |
|
Condition |
Diagnostics (ICD-10) |
|
MedicationRequest |
Prescriptions médicamenteuses |
1.3 Relations entre ressources
Ressource source |
Champ |
Ressource cible |
Description |
|---|---|---|---|
Observation (Signal) |
|
Location |
Lieu de survenue du signal |
Observation (Signal) |
|
Group |
Groupe de cas associé |
RiskAssessment |
|
Observation (Signal) |
Signal évalué |
RiskAssessment |
|
Group |
Population/groupe évalué |
Communication |
|
RiskAssessment |
Évaluation communiquée |
Communication |
|
Observation (Signal) |
Signal concerné |
Group |
|
Patient |
Patients du groupe |
Substance |
(référencé par) |
Observation |
Agent pathogène identifié |
1.4 Flux de données SBEc
L’architecture SBEc repose sur une pyramide de ressources FHIR interconnectées. Voici l’ordre logique du flux de données :
1. Location ──► Définit la hiérarchie géographique
District → Commune → CSB → Fokontany
2. Observation ──► Signal épidémiologique détecté à un lieu donné
(Signal)
3. Group ──► Les cas sont regroupés par événement/localisation
4. RiskAssessment ──► L'évaluation SBEc est réalisée sur le signal
5. Substance ──► Identification de l'agent causal (si applicable)
6. Communication ──► Alerte et notification aux autorités sanitaires
2. Endpoints des API REST
Note
Toutes les URL sont relatives à la base URL : http://[serveur]/fhir/
2.1 Location — Hiérarchie géographique
Opération |
Méthode |
URL |
Description |
|---|---|---|---|
Lister les districts |
|
|
Tous les districts |
Communes d’un district |
|
|
Communes du district Ifanadiana |
CSB d’une commune |
|
|
CSB de la commune Kelilalina |
Fokontany d’une commune |
|
|
Fokontany de Kelilalina |
Lire un lieu |
|
|
Détail d’un lieu par son ID |
Créer un lieu |
|
|
Création d’un nouveau lieu |
Modifier un lieu |
|
|
Mise à jour complète |
2.2 Observation — Signaux épidémiologiques
Opération |
Méthode |
URL |
Description |
|---|---|---|---|
Tous les signaux |
|
|
Liste de tous les signaux |
Signaux immédiats |
|
|
Signaux nécessitant une alerte immédiate |
Signaux d’un fokontany |
|
|
Signaux d’un lieu donné |
Signaux sur une période |
|
|
Signaux dans un intervalle de dates |
Lire un signal |
|
|
Détail d’un signal par son ID |
Créer un signal |
|
|
Création d’un nouveau signal |
Modifier un signal |
|
|
Mise à jour d’un signal |
2.3 Group — Regroupement
Opération |
Méthode |
URL |
Description |
|---|---|---|---|
Tous les groupes |
|
|
Liste de tous les groupes |
Groupes actifs |
|
|
Groupes actuellement actifs |
Lire un groupe |
|
|
Détail d’un groupe par son ID |
Créer un groupe |
|
|
Création d’un nouveau groupe |
Modifier un groupe |
|
|
Mise à jour d’un groupe |
2.4 RiskAssessment — SBEc_Evaluation
Opération |
Méthode |
URL |
Description |
|---|---|---|---|
Toutes les évaluations |
|
|
Liste de toutes les évaluations SBEc |
Évaluations à risque élevé |
|
|
Évaluations avec risque élevé |
Évaluation d’un signal |
|
|
Évaluation liée à un signal |
Lire une évaluation |
|
|
Détail d’une évaluation |
Créer une évaluation |
|
|
Création d’une évaluation SBEc |
2.5 Substance
Opération |
Méthode |
URL |
Description |
|---|---|---|---|
Toutes les substances |
|
|
Liste de toutes les substances/agents |
Substances biologiques |
|
|
Agents pathogènes uniquement |
Lire une substance |
|
|
Détail d’une substance |
Créer une substance |
|
|
Ajout d’un nouvel agent pathogène |
2.6 Communication — Alertes
Opération |
Méthode |
URL |
Description |
|---|---|---|---|
Toutes les alertes |
|
|
Liste de toutes les alertes |
Alertes urgentes |
|
|
Alertes de priorité urgente |
Alertes d’un praticien |
|
|
Alertes envoyées par un praticien |
Lire une communication |
|
|
Détail d’une communication |
Envoyer une alerte |
|
|
Création d’une nouvelle alerte |
2.7 Ressources cliniques — Patient, Encounter, Condition, MedicationRequest
Opération |
Méthode |
URL |
Description |
|---|---|---|---|
Patient par identifiant PIVOT |
|
|
Recherche par identifiant sanitaire |
Patients d’un fokontany |
|
|
Patients d’un fokontany donné |
Patients d’un ASC |
|
|
Patients suivis par un ASC |
Consultations d’un patient |
|
|
Visites d’un patient |
Observations d’une consultation |
|
|
Mesures cliniques d’une consultation |
Diagnostics paludisme |
|
|
Conditions diagnostiquées paludisme |
Prescriptions ACT |
|
|
Prescriptions d’ACT |
2.8 Paramètres de recherche
Paramètres existants — 4 piliers cliniques :
Ressource |
Paramètre |
Type |
Expression |
|---|---|---|---|
Patient |
|
String |
|
Patient |
|
Reference |
|
Patient |
|
String |
|
Patient |
|
String |
|
Encounter |
|
Token |
|
Condition |
|
Token |
|
MedicationRequest |
|
Token |
|
Nouveaux paramètres de recherche SBEc :
Ressource |
Paramètre |
Type |
Description |
|---|---|---|---|
Observation (Signal) |
|
Token |
Recherche par type de signal (SIGNAL_IMMEDIAT, etc.) |
Observation (Signal) |
|
Reference |
Recherche par lieu de survenue |
Observation (Signal) |
|
Date |
Recherche par date de survenue |
RiskAssessment |
|
Token |
Recherche par niveau de risque |
RiskAssessment |
|
Date |
Recherche par date d’évaluation |
Communication |
|
Token |
Recherche par priorité d’alerte |
Communication |
|
Reference |
Recherche par expéditeur |
Location |
|
Token |
Recherche par type (district, commune, csb, fokontany) |
Location |
|
Reference |
Recherche par lieu parent (partOf) |
3. Format
3.1 Formats de données FHIR
Types de contenu (Content-Type) :
Le serveur FHIR PIVOT supporte deux formats de représentation des ressources :
Format |
Content-Type |
Paramètre |
Usage |
|---|---|---|---|
JSON |
|
|
Format principal (recommandé) |
XML |
|
|
Format alternatif |
En-têtes HTTP requis :
En-tête |
Valeur |
Description |
|---|---|---|
|
|
Format du corps de requête (POST/PUT) |
|
|
Format de réponse souhaité |
|
|
Token OAuth2 (en production) |
|
|
Contrôle de concurrence (PUT conditionnel) |
3.2 Format Bundle — lot de ressources
Le Bundle FHIR permet d’envoyer ou recevoir plusieurs ressources en une seule requête.
Type Bundle |
Usage SBEc |
Méthode HTTP |
Atomique |
|---|---|---|---|
|
Créer plusieurs ressources liées en une opération atomique |
|
✅ Oui |
|
Envoyer plusieurs opérations indépendantes |
|
❌ Non |
|
Résultat d’une recherche (retourné par le serveur) |
|
— |
|
Export de données, rapport |
N/A |
— |
Exemple de Bundle transaction :
{
"resourceType": "Bundle",
"type": "transaction",
"entry": [
{
"fullUrl": "urn:uuid:signal-001",
"resource": {
"resourceType": "Observation",
"id": "signal-palu-001",
"status": "final",
"category": [{"coding": [{"system": "http://[serveur]/fhir/CodeSystem/pivot-observation-category",
"code": "signal-epidemiologique"}]}],
"code": {"coding": [{"system": "http://hl7.org/fhir/sid/icd-10", "code": "B54"}]}
},
"request": {"method": "PUT", "url": "Observation/signal-palu-001"}
},
{
"fullUrl": "urn:uuid:group-001",
"resource": {
"resourceType": "Group",
"id": "cas-palu-001",
"type": "person",
"actual": true
},
"request": {"method": "PUT", "url": "Group/cas-palu-001"}
}
]
}
3.3 Format searchset — réponse de recherche
Exemple de réponse paginée à une recherche :
{
"resourceType": "Bundle",
"type": "searchset",
"total": 42,
"link": [
{"relation": "self",
"url": "http://[serveur]/fhir/Observation?category=signal-epidemiologique&_count=10"},
{"relation": "next",
"url": "http://[serveur]/fhir/Observation?category=signal-epidemiologique&_count=10&_offset=10"}
],
"entry": [
{
"fullUrl": "http://[serveur]/fhir/Observation/signal-palu-001",
"resource": {"resourceType": "Observation", "id": "signal-palu-001"},
"search": {"mode": "match"}
}
]
}
3.4 Format OperationOutcome — erreurs et avertissements
Lorsqu’une requête échoue ou génère un avertissement, le serveur retourne une
ressource OperationOutcome :
Code HTTP |
Signification |
Quand |
|---|---|---|
|
Succès (lecture, recherche) |
GET réussi |
|
Ressource créée |
POST réussi |
|
Requête mal formée |
JSON invalide, champ obligatoire manquant |
|
Non authentifié |
Token manquant ou expiré |
|
Ressource inexistante |
ID inconnu |
|
Conflit de version |
Mise à jour concurrente |
|
Validation échouée |
Non conforme au profil FHIR |
Exemple d’OperationOutcome (erreur 422) :
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "required",
"details": {
"text": "Observation.category est obligatoire pour un signal epidemiologique"
},
"diagnostics": "Le champ 'category' avec le code 'signal-epidemiologique' est requis par le profil PivotObservationSignal",
"expression": ["Observation.category"]
}
]
}
3.5 Format de pagination
Paramètre |
Description |
Valeur par défaut |
Exemple |
|---|---|---|---|
|
Nombre de résultats par page |
20 |
|
|
Position de départ |
0 |
|
|
Tri des résultats |
non trié |
|
|
Inclure le total |
accurate |
|
|
Inclure les ressources référencées |
aucune |
|
4. Profils
4.1 Profil PivotLocation
La ressource Location modélise la hiérarchie administrative de Madagascar : District → Commune → CSB → Fokontany.
Champ FHIR |
Card. |
Type |
Description |
Exemple |
|---|---|---|---|---|
|
1..* |
Identifier |
Identifiant unique du lieu |
|
|
1..1 |
Code |
Statut du lieu (active | inactive) |
|
|
1..1 |
String |
Nom du lieu |
District Ifanadiana |
|
1..1 |
Code |
instance | kind |
|
|
1..1 |
CodeableConcept |
Type de lieu (district, commune, csb, fokontany) |
|
|
0..1 |
Address |
Adresse (district, city) |
|
|
1..1 |
String |
District sanitaire |
Ifanadiana |
|
0..1 |
String |
Commune |
Kelilalina |
|
0..1 |
CodeableConcept |
Type physique du lieu |
|
|
0..1 |
Reference(Location) |
Lieu parent dans la hiérarchie |
|
|
0..1 |
Reference(Organization) |
Organisation gestionnaire |
|
Hiérarchie géographique via partOf :
Niveau |
|
|
Exemple |
|---|---|---|---|
District |
|
(aucun — niveau racine) |
District Ifanadiana |
Commune |
|
Reference → Location (District) |
Commune Kelilalina → District Ifanadiana |
CSB |
|
Reference → Location (Commune) |
CSB II Kelilalina → Commune Kelilalina |
Fokontany |
|
Reference → Location (Commune) |
Fokontany Tsaratanana → Commune Kelilalina |
Exemple JSON — Hiérarchie complète :
{
"resourceType": "Location",
"id": "district-ifanadiana",
"identifier": [{"system": "http://[serveur]/fhir/location", "value": "LOC-DIST-IFA"}],
"status": "active",
"name": "District Ifanadiana",
"mode": "instance",
"type": [{"coding": [{"system": "http://[serveur]/fhir/CodeSystem/pivot-location-type",
"code": "district", "display": "District sanitaire"}]}],
"address": {"district": "Ifanadiana"}
}
{
"resourceType": "Location",
"id": "commune-kelilalina",
"status": "active",
"name": "Commune Kelilalina",
"mode": "instance",
"type": [{"coding": [{"system": "http://[serveur]/fhir/CodeSystem/pivot-location-type",
"code": "commune", "display": "Commune"}]}],
"address": {"district": "Ifanadiana", "city": "Kelilalina"},
"partOf": {"reference": "Location/district-ifanadiana", "display": "District Ifanadiana"}
}
{
"resourceType": "Location",
"id": "csb2-kelilalina",
"status": "active",
"name": "CSB II Kelilalina",
"mode": "instance",
"type": [{"coding": [{"system": "http://[serveur]/fhir/CodeSystem/pivot-location-type",
"code": "csb", "display": "Centre de Santé de Base"}]}],
"address": {"district": "Ifanadiana", "city": "Kelilalina"},
"physicalType": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/location-physical-type",
"code": "bu", "display": "Building"}]},
"partOf": {"reference": "Location/commune-kelilalina", "display": "Commune Kelilalina"},
"managingOrganization": {"reference": "Organization/csb-kelilalina"}
}
{
"resourceType": "Location",
"id": "fokontany-tsaratanana",
"status": "active",
"name": "Fokontany Tsaratanana",
"mode": "instance",
"type": [{"coding": [{"system": "http://[serveur]/fhir/CodeSystem/pivot-location-type",
"code": "fokontany", "display": "Fokontany"}]}],
"address": {"district": "Ifanadiana", "city": "Kelilalina"},
"partOf": {"reference": "Location/commune-kelilalina", "display": "Commune Kelilalina"}
}
4.2 Profil PivotObservationSignal
La ressource Observation est réutilisée
pour les signaux épidémiologiques du système SBEc. Chaque signal est une Observation
avec la catégorie spéciale signal-epidemiologique.
Champ FHIR |
Card. |
Type |
Description SBEc |
Mapping |
|---|---|---|---|---|
|
1..1 |
code |
Statut du signal |
registered | preliminary | final |
|
1..1 |
CodeableConcept |
Catégorie = |
Code: |
|
1..1 |
CodeableConcept |
Nature du signal (maladie/événement) |
Ex: Paludisme, Rougeole, Diarrhée |
|
0..1 |
Reference(Location) |
Lieu de survenue du signal |
→ Location (Fokontany/Commune/CSB) |
|
0..* |
Reference(Group) |
Groupe de cas associé |
→ Group (cas regroupés) |
|
1..1 |
dateTime |
Date de détection du signal |
Date détection |
|
0..1 |
instant |
Date de notification/rapport |
Date rapport |
|
0..* |
Reference(Practitioner) |
Qui a détecté le signal |
ASC / Médecin CSB |
|
1..1 |
component |
Date de survenue effective |
|
|
1..1 |
component |
Nombre de cas détectés |
|
|
0..1 |
component |
Nombre de décès |
|
|
1..1 |
Extension |
Type de signal (3 types) |
Voir ci-dessous |
Extension — Type de signaux :
Propriété |
Valeur |
|---|---|
URL |
|
Contexte |
Observation (catégorie signal-epidemiologique) |
Type de valeur |
CodeableConcept |
Cardinalité |
1..1 (obligatoire) |
Binding |
|
Les 3 types de signaux :
Code |
Display |
Définition |
|---|---|---|
|
Signal immédiat |
Événement sanitaire nécessitant une alerte immédiate (épidémie confirmée, maladie à déclaration obligatoire, mortalité anormale) |
|
Signal inhabituel |
Événement sanitaire inhabituel nécessitant une investigation (augmentation anormale de cas, apparition d’une pathologie rare, cluster géographique) |
|
Signal de tendance |
Tendance épidémiologique observée sur une période (augmentation progressive, saisonnalité anormale, dépassement de seuil) |
Exemple JSON — Signal épidémiologique :
{
"resourceType": "Observation",
"id": "signal-palu-001",
"meta": {
"profile": ["http://[serveur]/fhir/StructureDefinition/pivot-observation-signal"]
},
"extension": [{
"url": "http://[serveur]/fhir/StructureDefinition/pivot-type-signal",
"valueCodeableConcept": {
"coding": [{
"system": "http://[serveur]/fhir/CodeSystem/pivot-type-signal",
"code": "SIGNAL_IMMEDIAT",
"display": "Signal immédiat"
}]
}
}],
"status": "final",
"category": [{"coding": [{
"system": "http://[serveur]/fhir/CodeSystem/pivot-observation-category",
"code": "signal-epidemiologique",
"display": "Signal épidémiologique"
}]}],
"code": {"coding": [{
"system": "http://hl7.org/fhir/sid/icd-10",
"code": "B54",
"display": "Paludisme, sans précision"
}]},
"subject": {"reference": "Location/fokontany-tsaratanana", "display": "Fokontany Tsaratanana"},
"focus": [{"reference": "Group/cas-palu-tsaratanana-202605"}],
"effectiveDateTime": "2026-05-28T08:00:00+03:00",
"issued": "2026-05-28T10:00:00+03:00",
"performer": [{"reference": "Practitioner/asc-017", "display": "Rasoa Vola (ASC)"}],
"component": [
{
"code": {"coding": [{"system": "http://[serveur]/fhir/CodeSystem/pivot-signal-component",
"code": "date-survenue", "display": "Date de survenue"}]},
"valueDateTime": "2026-05-25"
},
{
"code": {"coding": [{"system": "http://[serveur]/fhir/CodeSystem/pivot-signal-component",
"code": "nombre-cas", "display": "Nombre de cas"}]},
"valueInteger": 15
},
{
"code": {"coding": [{"system": "http://[serveur]/fhir/CodeSystem/pivot-signal-component",
"code": "nombre-deces", "display": "Nombre de décès"}]},
"valueInteger": 2
}
]
}
4.3 Profil PivotGroup
La ressource Group permet de regrouper les cas liés à un même signal épidémiologique ou une même zone géographique.
Champ FHIR |
Card. |
Type |
Description |
Exemple |
|---|---|---|---|---|
|
0..* |
Identifier |
Identifiant du groupe |
|
|
1..1 |
boolean |
Groupe actif ou non |
|
|
1..1 |
code |
Type de groupe |
|
|
1..1 |
boolean |
Groupe réel (pas théorique) |
|
|
0..1 |
CodeableConcept |
Nature du regroupement |
Cas de paludisme |
|
0..1 |
string |
Nom descriptif du groupe |
Cas paludisme Tsaratanana Mai 2026 |
|
0..1 |
unsignedInt |
Nombre de membres |
|
|
0..1 |
Reference(Organization) |
Organisation responsable |
|
|
0..* |
BackboneElement |
Membres du groupe |
Voir ci-dessous |
|
1..1 |
Reference(Patient) |
Patient membre |
|
|
0..1 |
Period |
Période d’appartenance |
2026-05-25 → (en cours) |
Exemple JSON — Group :
{
"resourceType": "Group",
"id": "cas-palu-tsaratanana-202605",
"identifier": [{"system": "http://[serveur]/fhir/group", "value": "GRP-PALU-IFA-202605-001"}],
"active": true,
"type": "person",
"actual": true,
"code": {"coding": [{"system": "http://hl7.org/fhir/sid/icd-10",
"code": "B54", "display": "Paludisme, sans précision"}]},
"name": "Cas paludisme Fokontany Tsaratanana - Mai 2026",
"quantity": 15,
"managingEntity": {"reference": "Organization/csb-kelilalina", "display": "CSB II Kelilalina"},
"member": [
{
"entity": {"reference": "Patient/pivot-002", "display": "Rasoa Nirina"},
"period": {"start": "2026-05-25"}
},
{
"entity": {"reference": "Patient/pivot-001", "display": "Rakoto Hery"},
"period": {"start": "2026-05-26"}
}
]
}
4.4 Profil PivotRiskAssessment — SBEc_Evaluation
La ressource RiskAssessment modélise l”évaluation SBEc (Surveillance Basée sur les Événements communautaires). Elle permet d’évaluer le risque associé à un signal épidémiologique détecté.
Champ FHIR |
Card. |
Type |
Description SBEc |
Exemple |
|---|---|---|---|---|
|
0..* |
Identifier |
Identifiant de l’évaluation |
|
|
1..1 |
code |
Statut de l’évaluation |
final | preliminary | amended |
|
0..1 |
CodeableConcept |
Méthode d’évaluation |
SBEc - Évaluation communautaire |
|
1..1 |
Reference(Group) |
Groupe/population évalué |
|
|
0..1 |
Reference(Encounter) |
Consultation associée |
|
|
1..1 |
dateTime |
Date de l’évaluation |
|
|
0..1 |
Reference(Condition) |
Condition évaluée |
Condition (paludisme) |
|
0..1 |
Reference(Practitioner) |
Évaluateur |
Médecin district |
|
0..* |
Reference(Observation) |
Signal(aux) de base |
|
|
0..1 |
CodeableConcept |
Résultat prévu |
Épidémie confirmée |
|
0..1 |
decimal |
Probabilité (0-1) |
|
|
0..1 |
CodeableConcept |
Niveau de risque |
high | moderate | low |
|
0..1 |
string |
Justification |
Augmentation rapide des cas… |
|
0..1 |
string |
Actions d’atténuation recommandées |
Distribution ACT + pulvérisation |
|
0..* |
Annotation |
Notes complémentaires |
Recommandation d’investigation |
Exemple JSON — SBEc_Evaluation :
{
"resourceType": "RiskAssessment",
"id": "sbec-eval-001",
"identifier": [{"system": "http://[serveur]/fhir/evaluation",
"value": "EVAL-SBEc-IFA-202605-001"}],
"status": "final",
"method": {"coding": [{"system": "http://[serveur]/fhir/CodeSystem/pivot-evaluation-method",
"code": "SBEc", "display": "Surveillance Basée sur les Événements communautaires"}]},
"subject": {
"reference": "Group/cas-palu-tsaratanana-202605",
"display": "Cas paludisme Tsaratanana Mai 2026"
},
"occurrenceDateTime": "2026-05-29T14:00:00+03:00",
"performer": {
"reference": "Practitioner/med-district-001",
"display": "Dr Andriamanalina (Médecin district)"
},
"basis": [{"reference": "Observation/signal-palu-001", "display": "Signal paludisme Tsaratanana"}],
"prediction": [{
"outcome": {"coding": [{"system": "http://[serveur]/fhir/CodeSystem/pivot-risk-outcome",
"code": "EPIDEMIE_CONFIRMEE", "display": "Épidémie confirmée"}]},
"probabilityDecimal": 0.85,
"qualitativeRisk": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/risk-probability",
"code": "high", "display": "High likelihood"}]},
"rationale": "15 cas en 3 jours dans un fokontany de 200 habitants. Taux d'attaque > 5%. TDR positif chez 90% des cas testés."
}],
"mitigation": "1) Distribution immédiate d'ACT. 2) Pulvérisation intra-domiciliaire. 3) Distribution de moustiquaires. 4) Renforcement du dépistage actif par les ASC.",
"note": [{"text": "Investigation de terrain recommandée sous 24h. Notification au niveau régional."}]
}
4.5 Profil PivotSubstance
La ressource Substance identifie les agents pathogènes, toxines ou substances impliquées dans un événement sanitaire.
Champ FHIR |
Card. |
Type |
Description |
Exemple |
|---|---|---|---|---|
|
0..* |
Identifier |
Identifiant de la substance |
|
|
0..1 |
code |
active | inactive | entered-in-error |
|
|
0..* |
CodeableConcept |
Catégorie de substance |
|
|
1..1 |
CodeableConcept |
Code de la substance |
Plasmodium falciparum |
|
0..1 |
string |
Description |
Parasite responsable du paludisme grave |
|
0..* |
BackboneElement |
Instance spécifique |
(si échantillon) |
|
0..* |
BackboneElement |
Composants |
(si substance composée) |
Exemple JSON — Substance :
{
"resourceType": "Substance",
"id": "pathogene-pfalciparum",
"identifier": [{"system": "http://[serveur]/fhir/substance", "value": "SUB-PFAL-001"}],
"status": "active",
"category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/substance-category",
"code": "biological", "display": "Biological Substance"}]}],
"code": {
"coding": [{"system": "http://snomed.info/sct",
"code": "30020004", "display": "Plasmodium falciparum"}],
"text": "Plasmodium falciparum - agent du paludisme grave"
},
"description": "Parasite protozoaire responsable de la forme la plus grave du paludisme. Principal agent identifié dans le district d'Ifanadiana."
}
4.6 Profil PivotCommunication
La ressource Communication modélise les alertes, notifications et échanges d’information entre les différents niveaux du système de santé suite à la détection d’un signal épidémiologique.
Champ FHIR |
Card. |
Type |
Description |
|---|---|---|---|
|
0..* |
Identifier |
Identifiant de la communication |
|
1..1 |
code |
completed | in-progress | preparation |
|
0..* |
CodeableConcept |
|
|
0..1 |
code |
routine | urgent | asap | stat |
|
0..1 |
Reference(Group) |
Sujet — groupe de cas |
|
0..* |
Reference(Observation) |
Signal(aux) concerné(s) |
|
0..1 |
dateTime |
Date d’envoi |
|
0..1 |
dateTime |
Date de réception |
|
0..1 |
Reference(Practitioner|Organization) |
Expéditeur |
|
0..* |
Reference(Practitioner|Organization) |
Destinataire(s) |
|
0..1 |
string |
Texte du message |
|
0..1 |
Reference |
Référence à l’évaluation (RiskAssessment) |
|
0..* |
Reference(Observation) |
Signal déclencheur |
Exemple JSON — Communication (Alerte) :
{
"resourceType": "Communication",
"id": "alert-palu-001",
"identifier": [{"system": "http://[serveur]/fhir/communication",
"value": "COM-ALERT-IFA-202605-001"}],
"status": "completed",
"category": [{"coding": [{"system": "http://[serveur]/fhir/CodeSystem/pivot-communication-category",
"code": "alert", "display": "Alerte sanitaire"}]}],
"priority": "urgent",
"subject": {"reference": "Group/cas-palu-tsaratanana-202605",
"display": "Cas paludisme Tsaratanana Mai 2026"},
"about": [{"reference": "Observation/signal-palu-001", "display": "Signal paludisme Tsaratanana"}],
"sent": "2026-05-29T15:00:00+03:00",
"received": "2026-05-29T15:05:00+03:00",
"sender": {
"reference": "Practitioner/med-district-001",
"display": "Dr Andriamanalina (Médecin district Ifanadiana)"
},
"recipient": [{"reference": "Organization/drsp-vatovavy",
"display": "DRSP Vatovavy-Fitovinany (Direction Régionale)"}],
"payload": [
{
"contentString": "ALERTE - Paludisme\n\nDistrict: Ifanadiana\nFokontany: Tsaratanana\nNombre de cas: 15\nNombre de décès: 2\nDate de survenue: 25/05/2026\nDate de détection: 28/05/2026\n\nÉvaluation SBEc: Risque ÉLEVÉ (probabilité 85%)\nActions en cours: Distribution ACT, pulvérisation, dépistage actif.\n\nInvestigation de terrain recommandée sous 24h."
},
{
"contentReference": {
"reference": "RiskAssessment/sbec-eval-001",
"display": "Évaluation SBEc - Paludisme Tsaratanana"
}
}
],
"reasonReference": [{"reference": "Observation/signal-palu-001"}]
}
4.7 Profils cliniques existants — 4 Piliers
Ces ressources constituent le socle clinique du système PIVOT, déjà défini dans les
profils FHIR existants (profils-fhir-pivot.json).
Patient — PivotPatient
Profil : http://[serveur]/fhir/StructureDefinition/pivot-patient
Champ |
Card. |
Type |
Description |
|---|---|---|---|
|
1..1 |
Identifier |
Identifiant sanitaire PIVOT ( |
|
1..1 |
string |
Nom de famille |
|
1..* |
string |
Prénom(s) |
|
1..1 |
code |
Sexe (male | female) |
|
1..1 |
date |
Date de naissance |
|
0..* |
ContactPoint |
Téléphone (si disponible) |
|
1..1 |
string |
District sanitaire |
|
1..1 |
string |
Commune |
|
0..1 |
Extension(string) |
Fokontany du patient |
|
0..1 |
Extension(Reference) |
ASC référent |
Encounter — PivotEncounter
Profil : http://[serveur]/fhir/StructureDefinition/pivot-encounter
Champ |
Card. |
Type |
Description |
|---|---|---|---|
|
1..1 |
code |
planned | arrived | in-progress | finished | cancelled |
|
1..1 |
Coding |
Type de visite (AMB, HH, FLD, IMP, EMER, REF) |
|
1..1 |
Reference(Patient) |
Patient concerné |
|
1..* |
BackboneElement |
Praticien ou ASC responsable |
|
1..1 |
dateTime |
Début de consultation |
|
1..1 |
Reference(Organization) |
Structure de santé (CSB, hôpital) |
|
1..* |
BackboneElement |
Lieu physique |
Observation clinique — PivotObservation
Profil : http://[serveur]/fhir/StructureDefinition/pivot-observation
Champ |
Card. |
Type |
Description |
|---|---|---|---|
|
1..1 |
code |
final | amended | cancelled |
|
1..1 |
CodeableConcept |
vital-signs, laboratory, etc. |
|
1..1 |
CodeableConcept |
Code LOINC (poids, température, TDR, MUAC…) |
|
1..1 |
Reference(Patient) |
Patient mesuré |
|
0..1 |
Reference(Encounter) |
Consultation associée |
|
1..1 |
dateTime |
Date/heure de la mesure |
|
0..* |
Reference(Practitioner) |
Praticien/ASC |
|
0..1 |
Quantity|string|CodeableConcept |
Résultat de la mesure |
Condition — PivotCondition
Profil : http://[serveur]/fhir/StructureDefinition/pivot-condition
Champ |
Card. |
Type |
Description |
|---|---|---|---|
|
1..1 |
CodeableConcept |
active | recurrence | inactive | resolved |
|
1..1 |
CodeableConcept |
confirmed | provisional | refuted |
|
1..1 |
CodeableConcept |
encounter-diagnosis | problem-list-item |
|
1..1 |
CodeableConcept |
Code ICD-10 du diagnostic |
|
1..1 |
Reference(Patient) |
Patient diagnostiqué |
|
1..1 |
Reference(Encounter) |
Consultation du diagnostic |
|
0..1 |
dateTime |
Date d’apparition des symptômes |
|
1..1 |
date |
Date d’enregistrement |
MedicationRequest — PivotMedicationRequest
Profil : http://[serveur]/fhir/StructureDefinition/pivot-medication-request
Champ |
Card. |
Type |
Description |
|---|---|---|---|
|
1..1 |
code |
active | completed | cancelled |
|
1..1 |
code |
|
|
1..1 |
CodeableConcept |
Médicament (ACT, Amoxicilline, SRO…) |
|
1..1 |
Reference(Patient) |
Patient |
|
1..1 |
Reference(Encounter) |
Consultation |
|
1..1 |
dateTime |
Date de prescription |
|
1..1 |
Reference(Practitioner) |
Prescripteur |
|
0..* |
Reference(Condition) |
Diagnostic justifiant |
|
1..1 |
string |
Posologie en texte libre |
4.8 Extensions PIVOT
Extension |
URL |
Contexte |
Type valeur |
Description |
|---|---|---|---|---|
Fokontany |
|
Patient |
string |
Plus petite division administrative de Madagascar |
Agent Communautaire |
|
Patient |
Reference(Practitioner) |
ASC référent du patient |
Type Signal |
|
Observation (signal) |
CodeableConcept |
Type : SIGNAL_IMMEDIAT, SIGNAL_INHABITUEL, SIGNAL_TENDANCE |
4.9 Terminologies et ValueSets
ValueSets existants — 4 piliers cliniques :
ValueSet |
URL |
Contenu |
|---|---|---|
Observations PIVOT |
|
Codes LOINC : poids, taille, température, MUAC, TDR, FC, FR, PA, PC, symptômes |
Diagnostics PIVOT |
|
Codes ICD-10 : paludisme, malnutrition, IRA, pneumonie, diarrhée, anémie, dermatite, infection urinaire, grossesse |
Types de visites |
|
AMB, IMP, HH, FLD, EMER, REF |
Médicaments PIVOT |
|
ACT, AMOX, PARA, SRO, ZINC, FERFS, VITA, ALBZ, COTRI, METRO, RUTF |
Nouveaux ValueSets SBEc :
ValueSet |
URL |
Contenu |
|---|---|---|
Type de signal |
|
SIGNAL_IMMEDIAT, SIGNAL_INHABITUEL, SIGNAL_TENDANCE |
Type de lieu |
|
district, commune, csb, fokontany |
Catégorie communication |
|
alert, notification, report, request |
Méthode évaluation |
|
SBEc (Surveillance Basée sur les Événements communautaires) |
Issue évaluation (outcome) |
|
EPIDEMIE_CONFIRMEE, EPIDEMIE_SUSPECTEE, FAUSSE_ALERTE, EN_INVESTIGATION |
Composants signal |
|
date-survenue, nombre-cas, nombre-deces |
CodeSystem — Type de signal (détail) :
{
"resourceType": "CodeSystem",
"id": "pivot-type-signal",
"url": "http://[serveur]/fhir/CodeSystem/pivot-type-signal",
"version": "1.0.0",
"name": "PivotTypeSignal",
"title": "Types de signaux épidémiologiques PIVOT",
"status": "draft",
"content": "complete",
"concept": [
{"code": "SIGNAL_IMMEDIAT", "display": "Signal immédiat",
"definition": "Événement sanitaire nécessitant une alerte immédiate"},
{"code": "SIGNAL_INHABITUEL", "display": "Signal inhabituel",
"definition": "Événement sanitaire inhabituel nécessitant une investigation"},
{"code": "SIGNAL_TENDANCE", "display": "Signal de tendance",
"definition": "Tendance épidémiologique observée sur une période"}
]
}
4.10 Exemples JSON — Scénario complet SBEc
Note
Scénario : Détection d’une flambée de paludisme au Fokontany Tsaratanana. L’ASC détecte 15 cas en 3 jours, dont 2 décès. Le signal est créé, les cas regroupés, une évaluation SBEc est réalisée, et une alerte est envoyée au niveau régional.
Ordre de création des ressources :
Étape |
Ressource |
Action |
|---|---|---|
1 |
Location |
Hiérarchie déjà en place : District → Commune → Fokontany |
2 |
Patient |
Enregistrement des patients concernés |
3 |
Group |
Regroupement des cas de paludisme du fokontany |
4 |
Substance |
Identification de l’agent (Plasmodium falciparum) |
5 |
Observation (Signal) |
Création du signal épidémiologique |
6 |
RiskAssessment |
Évaluation SBEc — risque élevé (probabilité 85%) |
7 |
Communication |
Alerte urgente envoyée à la DRSP Vatovavy-Fitovinany |