.. _fhir_4piliers: =============================== Documentation FHIR — ONEHEALTH =============================== .. _fhir4piliers_selection-ressources: 1. Sélection des ressources ============================ En FHIR (Fast Healthcare Interoperability Resources), le terme **Ressource** est le bloc de construction fondamental et l'unité de base de l'information. .. admonition:: Définition :class: note Une ressource est un ensemble structuré d'informations, identifiable et échangeable, qui représente un concept clinique, administratif ou technique dans le domaine de la santé. Le tableau ci-dessous récapitule les ressources sélectionnées parmi les +150 ressources disponibles sur `HAPI FHIR `_ pour répondre à la problématique de ONEHEALTH. .. list-table:: Ressources FHIR sélectionnées :header-rows: 1 :widths: 20 20 60 * - Catégorie - Ressource - Description * - **Clinical** - Observation - Mesures et affirmations simples faites à propos d'un patient, d'un appareil ou d'un autre sujet. * - - Condition - Une condition clinique, un problème, un diagnostic ou un événement clinique ayant atteint un niveau de préoccupation. * - - MedicationRequest - Généraliser l'utilisation en milieux hospitaliers et ambulatoires, y compris les plans de soins. * - - Medication - Identification et définition d'un médicament, y compris les ingrédients, dans le but de prescrire, distribuer et administrer. * - - Procedure - Intervention ou activité effectuée sur ou pour une personne, un appareil, une organisation ou un lieu. * - - Immunization - Décrit l'événement où un patient reçoit un vaccin ou un dossier d'immunisation. * - - RiskAssessment - Évaluation des résultats probables pour un patient ou un autre sujet ainsi que la probabilité de chaque résultat. * - **Administratives / Identification** - Patient - Données démographiques et renseignements administratifs sur un individu recevant des soins. * - - Practitioner - Une personne qui participe directement ou indirectement à la fourniture de soins de santé. * - - Organization - Groupe de personnes agissant collectivement pour atteindre un objectif commun. * - - Group - Ensemble défini d'entités regroupées pour être décrites ou traitées ensemble. * - - RelatedPerson - Personne impliquée dans la santé d'un patient, sans responsabilité formelle dans le processus de soins. * - - Location - Détails et informations sur les positions où les services sont fournis. * - - Substance - Un matériau homogène avec une composition définie. * - **Workflow** - Encounter - Interaction réelle entre un patient et un professionnel de santé pour des soins ou une évaluation. * - - MessageHeader - En-tête d'un échange de messages indiquant une action demandée ou répondue. * - **Infrastructure** - DocumentReference - Référence vers un document médical ou fichier sérialisé avec métadonnées. * - - Composition - Structure logique d'un document clinique regroupant des informations de santé cohérentes. * - - Provenance - Informations décrivant l'origine, les acteurs et les processus ayant créé ou modifié une ressource. ---- .. _definition-secteurs: Définition des ressources par secteur --------------------------------------- .. rubric:: 🧑‍⚕️ Secteur humain (Standard FHIR) - **Patient** : L'individu humain. - **Location** : Représente la localisation de résidence. - **Practitioner / Organization** : Les agents de santé et les centres de santé. - **Encounter** : Une visite médicale ou une consultation. - **Condition** : Diagnostic. - **Observation** : Signes cliniques, résultats de laboratoire. - **Immunization** : Vaccinations. .. rubric:: 🐄 Secteur animal (Adaptation vétérinaire) - **Patient** : Utilisé pour l'animal individuel (ex. chien enragé, vache malade). Nécessite un profil pour ajouter l'espèce, la race, le sexe. - **Group** : Représente un troupeau, une volaille ou une colonie. - **Location** : Représente la ferme, l'étable, ou le lieu de détention des animaux. - **RelatedPerson** : Le propriétaire ou l'éleveur (lien entre l'animal et l'humain). .. rubric:: 🌿 Secteur environnemental (Adaptation écosystème) - **Location** : Représente une zone géographique, un point d'eau, une forêt. Nécessite des extensions GIS (GPS). - **Observation** : Mesures environnementales (température, humidité, qualité de l'air PM2.5, pH de l'eau). - **Substance** : Représente le polluant, le vecteur (ex. espèce de moustique) ou l'agent chimique. - **RiskAssessment** : Évaluation du risque environnemental (inondation, prolifération de vecteurs). .. rubric:: 🔗 Lien inter-sectoriel - **Provenance** : Pour tracer l'origine de la donnée (quelle source CommCare, quel formulaire). - **Composition / DocumentReference** : Pour agréger un rapport d'investigation épidémiologique liant un cas humain, un foyer animal et un contexte environnemental. ---- .. _fhir_4piliers_endpoints-api: 2. Endpoints des API REST =========================== .. note:: Le serveur FHIR PIVOT est basé sur **HAPI FHIR Server v7.x**, supporte **FHIR R4 (4.0.1)** et accepte les formats **JSON** et **XML**. **URL de base :** ``https://[serveur]/fhir`` .. _endpoint-patient: 2.1 — Patient -------------- Gestion des patients PIVOT avec identifiant sanitaire, fokontany et ASC référent. .. list-table:: Interactions REST — Patient :header-rows: 1 :widths: 10 40 20 30 * - Méthode - URL - Interaction - Description * - ``GET`` - ``/fhir/Patient/{id}`` - read - Lire un patient par son ID * - ``GET`` - ``/fhir/Patient/{id}/_history/{vid}`` - vread - Lire une version spécifique * - ``GET`` - ``/fhir/Patient?{params}`` - search-type - Rechercher des patients * - ``POST`` - ``/fhir/Patient`` - create - Créer un nouveau patient * - ``PUT`` - ``/fhir/Patient/{id}`` - update - Mettre à jour un patient * - ``DELETE`` - ``/fhir/Patient/{id}`` - delete - Supprimer un patient * - ``GET`` - ``/fhir/Patient/{id}/_history`` - history-instance - Historique d'un patient .. list-table:: Paramètres de recherche — Patient :header-rows: 1 :widths: 25 20 55 * - Paramètre - Type - Description * - ``identifier`` - Token - Identifiant sanitaire PIVOT (system|value) * - ``name`` - String - Nom de famille ou prénom * - ``family`` - String - Nom de famille * - ``given`` - String - Prénom * - ``gender`` - Token - Sexe (male | female) * - ``birthdate`` - Date - Date de naissance * - ``address-city`` - String - Commune * - ``address-district`` - String - District sanitaire * - ``fokontany`` - String - Fokontany *(extension PIVOT)* * - ``agent-communautaire`` - Reference - ASC référent *(extension PIVOT)* .. _endpoint-practitioner: 2.2 — Practitioner ------------------- Praticiens et agents de santé communautaire (ASC). .. list-table:: Interactions REST — Practitioner :header-rows: 1 :widths: 10 40 20 30 * - Méthode - URL - Interaction - Description * - ``GET`` - ``/fhir/Practitioner/{id}`` - read - Lire un praticien par son ID * - ``GET`` - ``/fhir/Practitioner?{params}`` - search-type - Rechercher des praticiens * - ``POST`` - ``/fhir/Practitioner`` - create - Créer un nouveau praticien * - ``PUT`` - ``/fhir/Practitioner/{id}`` - update - Mettre à jour un praticien .. list-table:: Paramètres de recherche — Practitioner :header-rows: 1 :widths: 25 20 55 * - Paramètre - Type - Description * - ``name`` - String - Nom du praticien * - ``identifier`` - Token - Identifiant du praticien .. _endpoint-organization: 2.3 — Organization ------------------- Structures de santé : CSB I, CSB II, hôpitaux de district. .. list-table:: Interactions REST — Organization :header-rows: 1 :widths: 10 40 20 30 * - Méthode - URL - Interaction - Description * - ``GET`` - ``/fhir/Organization/{id}`` - read - Lire une organisation par son ID * - ``GET`` - ``/fhir/Organization?{params}`` - search-type - Rechercher des organisations * - ``POST`` - ``/fhir/Organization`` - create - Créer une nouvelle organisation * - ``PUT`` - ``/fhir/Organization/{id}`` - update - Mettre à jour une organisation .. list-table:: Paramètres de recherche — Organization :header-rows: 1 :widths: 25 20 55 * - Paramètre - Type - Description * - ``name`` - String - Nom de la structure * - ``type`` - Token - Type de structure (CSB-I, CSB-II, CHD) .. _endpoint-location: 2.4 — Location --------------- Lieux : fokontany, communes, sites communautaires, fermes, zones environnementales. .. list-table:: Interactions REST — Location :header-rows: 1 :widths: 10 40 20 30 * - Méthode - URL - Interaction - Description * - ``GET`` - ``/fhir/Location/{id}`` - read - Lire un lieu par son ID * - ``GET`` - ``/fhir/Location?{params}`` - search-type - Rechercher des lieux * - ``POST`` - ``/fhir/Location`` - create - Créer un nouveau lieu * - ``PUT`` - ``/fhir/Location/{id}`` - update - Mettre à jour un lieu .. list-table:: Paramètres de recherche — Location :header-rows: 1 :widths: 25 20 55 * - Paramètre - Type - Description * - ``name`` - String - Nom du lieu * - ``address-district`` - String - District * - ``address-city`` - String - Commune .. _endpoint-group: 2.5 — Group ------------ Groupes d'entités (troupeaux, volailles, colonies) pour le secteur animal. .. list-table:: Interactions REST — Group :header-rows: 1 :widths: 10 40 20 30 * - Méthode - URL - Interaction - Description * - ``GET`` - ``/fhir/Group/{id}`` - read - Lire un groupe par son ID * - ``GET`` - ``/fhir/Group?{params}`` - search-type - Rechercher des groupes * - ``POST`` - ``/fhir/Group`` - create - Créer un nouveau groupe * - ``PUT`` - ``/fhir/Group/{id}`` - update - Mettre à jour un groupe * - ``DELETE`` - ``/fhir/Group/{id}`` - delete - Supprimer un groupe .. list-table:: Paramètres de recherche — Group :header-rows: 1 :widths: 25 20 55 * - Paramètre - Type - Description * - ``type`` - Token - Type de groupe (animal, person) * - ``code`` - Token - Code identifiant le type d'entités * - ``actual`` - Token - Groupe réel (true) ou définitionnel (false) .. _endpoint-relatedperson: 2.6 — RelatedPerson -------------------- Propriétaire ou éleveur (lien entre l'animal et l'humain). .. list-table:: Interactions REST — RelatedPerson :header-rows: 1 :widths: 10 40 20 30 * - Méthode - URL - Interaction - Description * - ``GET`` - ``/fhir/RelatedPerson/{id}`` - read - Lire une personne liée par son ID * - ``GET`` - ``/fhir/RelatedPerson?{params}`` - search-type - Rechercher des personnes liées * - ``POST`` - ``/fhir/RelatedPerson`` - create - Créer une nouvelle personne liée * - ``PUT`` - ``/fhir/RelatedPerson/{id}`` - update - Mettre à jour une personne liée .. list-table:: Paramètres de recherche — RelatedPerson :header-rows: 1 :widths: 25 20 55 * - Paramètre - Type - Description * - ``patient`` - Reference - Patient (animal) lié * - ``name`` - String - Nom du propriétaire/éleveur * - ``relationship`` - Token - Type de relation .. _endpoint-substance: 2.7 — Substance ---------------- Polluants, vecteurs (moustiques) ou agents chimiques environnementaux. .. list-table:: Interactions REST — Substance :header-rows: 1 :widths: 10 40 20 30 * - Méthode - URL - Interaction - Description * - ``GET`` - ``/fhir/Substance/{id}`` - read - Lire une substance par son ID * - ``GET`` - ``/fhir/Substance?{params}`` - search-type - Rechercher des substances * - ``POST`` - ``/fhir/Substance`` - create - Créer une nouvelle substance * - ``PUT`` - ``/fhir/Substance/{id}`` - update - Mettre à jour une substance .. list-table:: Paramètres de recherche — Substance :header-rows: 1 :widths: 25 20 55 * - Paramètre - Type - Description * - ``code`` - Token - Code de la substance * - ``status`` - Token - Statut (active | inactive) * - ``category`` - Token - Catégorie de substance .. _endpoint-encounter: 2.8 — Encounter ---------------- Consultations et visites (CSB, domicile ASC, terrain, urgence, référence). .. list-table:: Interactions REST — Encounter :header-rows: 1 :widths: 10 40 20 30 * - Méthode - URL - Interaction - Description * - ``GET`` - ``/fhir/Encounter/{id}`` - read - Lire une consultation par son ID * - ``GET`` - ``/fhir/Encounter/{id}/_history/{vid}`` - vread - Lire une version spécifique * - ``GET`` - ``/fhir/Encounter?{params}`` - search-type - Rechercher des consultations * - ``POST`` - ``/fhir/Encounter`` - create - Créer une nouvelle consultation * - ``PUT`` - ``/fhir/Encounter/{id}`` - update - Mettre à jour une consultation * - ``DELETE`` - ``/fhir/Encounter/{id}`` - delete - Supprimer une consultation * - ``GET`` - ``/fhir/Encounter/{id}/_history`` - history-instance - Historique d'une consultation .. list-table:: Paramètres de recherche — Encounter :header-rows: 1 :widths: 25 20 55 * - Paramètre - Type - Description * - ``patient`` - Reference - Patient concerné * - ``date`` - Date - Date de consultation * - ``status`` - Token - Statut (planned | arrived | in-progress | finished) * - ``class`` - Token - Type de visite (AMB, HH, FLD, IMP, EMER, REF) * - ``service-provider`` - Reference - Structure de santé (CSB, hôpital) * - ``participant`` - Reference - Praticien ou ASC * - ``location`` - Reference - Lieu (fokontany, CSB) .. _endpoint-observation: 2.9 — Observation ------------------ Mesures terrain : température, MUAC, TDR paludisme, poids, taille, mesures environnementales. .. list-table:: Interactions REST — Observation :header-rows: 1 :widths: 10 40 20 30 * - Méthode - URL - Interaction - Description * - ``GET`` - ``/fhir/Observation/{id}`` - read - Lire une observation par son ID * - ``GET`` - ``/fhir/Observation/{id}/_history/{vid}`` - vread - Lire une version spécifique * - ``GET`` - ``/fhir/Observation?{params}`` - search-type - Rechercher des observations * - ``POST`` - ``/fhir/Observation`` - create - Créer une nouvelle observation * - ``PUT`` - ``/fhir/Observation/{id}`` - update - Mettre à jour une observation * - ``DELETE`` - ``/fhir/Observation/{id}`` - delete - Supprimer une observation * - ``GET`` - ``/fhir/Observation/{id}/_history`` - history-instance - Historique d'une observation .. _endpoint-condition: 2.10 — Condition ----------------- Diagnostics : paludisme, malnutrition, IRA, diarrhée, anémie, etc. .. list-table:: Interactions REST — Condition :header-rows: 1 :widths: 10 40 20 30 * - Méthode - URL - Interaction - Description * - ``GET`` - ``/fhir/Condition/{id}`` - read - Lire un diagnostic par son ID * - ``GET`` - ``/fhir/Condition/{id}/_history/{vid}`` - vread - Lire une version spécifique * - ``GET`` - ``/fhir/Condition?{params}`` - search-type - Rechercher des diagnostics * - ``POST`` - ``/fhir/Condition`` - create - Créer un nouveau diagnostic * - ``PUT`` - ``/fhir/Condition/{id}`` - update - Mettre à jour un diagnostic * - ``DELETE`` - ``/fhir/Condition/{id}`` - delete - Supprimer un diagnostic * - ``GET`` - ``/fhir/Condition/{id}/_history`` - history-instance - Historique d'un diagnostic .. list-table:: Paramètres de recherche — Condition :header-rows: 1 :widths: 25 20 55 * - Paramètre - Type - Description * - ``patient`` - Reference - Patient concerné * - ``code`` - Token - Code ICD-10 (ex: B50 pour paludisme) * - ``clinical-status`` - Token - Statut clinique (active, resolved) * - ``verification-status`` - Token - Statut de vérification (confirmed, provisional) * - ``category`` - Token - Catégorie (encounter-diagnosis, problem-list-item) * - ``encounter`` - Reference - Consultation associée * - ``onset-date`` - Date - Date d'apparition des symptômes * - ``recorded-date`` - Date - Date d'enregistrement .. _endpoint-medicationrequest: 2.11 — MedicationRequest ------------------------- Prescriptions : ACT, amoxicilline, SRO, zinc, paracétamol, etc. .. list-table:: Interactions REST — MedicationRequest :header-rows: 1 :widths: 10 40 20 30 * - Méthode - URL - Interaction - Description * - ``GET`` - ``/fhir/MedicationRequest/{id}`` - read - Lire une prescription par son ID * - ``GET`` - ``/fhir/MedicationRequest/{id}/_history/{vid}`` - vread - Lire une version spécifique * - ``GET`` - ``/fhir/MedicationRequest?{params}`` - search-type - Rechercher des prescriptions * - ``POST`` - ``/fhir/MedicationRequest`` - create - Créer une nouvelle prescription * - ``PUT`` - ``/fhir/MedicationRequest/{id}`` - update - Mettre à jour une prescription * - ``DELETE`` - ``/fhir/MedicationRequest/{id}`` - delete - Supprimer une prescription * - ``GET`` - ``/fhir/MedicationRequest/{id}/_history`` - history-instance - Historique d'une prescription .. list-table:: Paramètres de recherche — MedicationRequest :header-rows: 1 :widths: 25 20 55 * - Paramètre - Type - Description * - ``patient`` - Reference - Patient concerné * - ``medication`` - Token - Code médicament (ACT, AMOX, SRO) * - ``status`` - Token - Statut (active, completed, cancelled) * - ``intent`` - Token - Intention (order) * - ``encounter`` - Reference - Consultation associée * - ``authoredon`` - Date - Date de prescription * - ``requester`` - Reference - Prescripteur .. _endpoint-medication: 2.12 — Medication ------------------ Identification et définition des médicaments (ingrédients, formes). .. list-table:: Interactions REST — Medication :header-rows: 1 :widths: 10 40 20 30 * - Méthode - URL - Interaction - Description * - ``GET`` - ``/fhir/Medication/{id}`` - read - Lire un médicament par son ID * - ``GET`` - ``/fhir/Medication?{params}`` - search-type - Rechercher des médicaments * - ``POST`` - ``/fhir/Medication`` - create - Créer un nouveau médicament * - ``PUT`` - ``/fhir/Medication/{id}`` - update - Mettre à jour un médicament .. list-table:: Paramètres de recherche — Medication :header-rows: 1 :widths: 25 20 55 * - Paramètre - Type - Description * - ``code`` - Token - Code du médicament * - ``status`` - Token - Statut (active | inactive) * - ``form`` - Token - Forme galénique .. _endpoint-immunization: 2.13 — Immunization -------------------- Événements de vaccination (vaccin administré ou rapporté). .. list-table:: Interactions REST — Immunization :header-rows: 1 :widths: 10 40 20 30 * - Méthode - URL - Interaction - Description * - ``GET`` - ``/fhir/Immunization/{id}`` - read - Lire une immunisation par son ID * - ``GET`` - ``/fhir/Immunization?{params}`` - search-type - Rechercher des immunisations * - ``POST`` - ``/fhir/Immunization`` - create - Créer une nouvelle immunisation * - ``PUT`` - ``/fhir/Immunization/{id}`` - update - Mettre à jour une immunisation .. list-table:: Paramètres de recherche — Immunization :header-rows: 1 :widths: 25 20 55 * - Paramètre - Type - Description * - ``patient`` - Reference - Patient vacciné * - ``date`` - Date - Date de vaccination * - ``vaccine-code`` - Token - Code du vaccin * - ``status`` - Token - Statut (completed, not-done) * - ``location`` - Reference - Lieu de vaccination .. _endpoint-riskassessment: 2.14 — RiskAssessment ---------------------- Évaluation des risques environnementaux (inondation, prolifération de vecteurs). .. list-table:: Interactions REST — RiskAssessment :header-rows: 1 :widths: 10 40 20 30 * - Méthode - URL - Interaction - Description * - ``GET`` - ``/fhir/RiskAssessment/{id}`` - read - Lire une évaluation par son ID * - ``GET`` - ``/fhir/RiskAssessment?{params}`` - search-type - Rechercher des évaluations * - ``POST`` - ``/fhir/RiskAssessment`` - create - Créer une nouvelle évaluation * - ``PUT`` - ``/fhir/RiskAssessment/{id}`` - update - Mettre à jour une évaluation .. list-table:: Paramètres de recherche — RiskAssessment :header-rows: 1 :widths: 25 20 55 * - Paramètre - Type - Description * - ``subject`` - Reference - Sujet de l'évaluation * - ``date`` - Date - Date de l'évaluation * - ``condition`` - Reference - Condition évaluée * - ``method`` - Token - Méthode d'évaluation .. _endpoint-composition: 2.15 — Composition ------------------- Structure logique d'un document clinique (rapport d'investigation épidémiologique). .. list-table:: Interactions REST — Composition :header-rows: 1 :widths: 10 40 20 30 * - Méthode - URL - Interaction - Description * - ``GET`` - ``/fhir/Composition/{id}`` - read - Lire une composition par son ID * - ``GET`` - ``/fhir/Composition?{params}`` - search-type - Rechercher des compositions * - ``POST`` - ``/fhir/Composition`` - create - Créer une nouvelle composition * - ``PUT`` - ``/fhir/Composition/{id}`` - update - Mettre à jour une composition .. list-table:: Paramètres de recherche — Composition :header-rows: 1 :widths: 25 20 55 * - Paramètre - Type - Description * - ``type`` - Token - Type de document * - ``date`` - Date - Date du document * - ``author`` - Reference - Auteur du document * - ``patient`` - Reference - Patient concerné * - ``status`` - Token - Statut (preliminary, final, amended) .. _endpoint-documentreference: 2.16 — DocumentReference ------------------------- Référence vers un document médical ou fichier sérialisé avec métadonnées. .. list-table:: Interactions REST — DocumentReference :header-rows: 1 :widths: 10 40 20 30 * - Méthode - URL - Interaction - Description * - ``GET`` - ``/fhir/DocumentReference/{id}`` - read - Lire une référence par son ID * - ``GET`` - ``/fhir/DocumentReference?{params}`` - search-type - Rechercher des documents * - ``POST`` - ``/fhir/DocumentReference`` - create - Créer une nouvelle référence * - ``PUT`` - ``/fhir/DocumentReference/{id}`` - update - Mettre à jour une référence .. list-table:: Paramètres de recherche — DocumentReference :header-rows: 1 :widths: 25 20 55 * - Paramètre - Type - Description * - ``patient`` - Reference - Patient concerné * - ``type`` - Token - Type de document * - ``date`` - Date - Date du document * - ``category`` - Token - Catégorie du document * - ``status`` - Token - Statut (current, superseded) .. _endpoint-messageheader: 2.17 — MessageHeader --------------------- En-tête d'un échange de messages (action demandée/répondue dans un Bundle). .. list-table:: Interactions REST — MessageHeader :header-rows: 1 :widths: 10 40 20 30 * - Méthode - URL - Interaction - Description * - ``GET`` - ``/fhir/MessageHeader/{id}`` - read - Lire un en-tête par son ID * - ``GET`` - ``/fhir/MessageHeader?{params}`` - search-type - Rechercher des en-têtes * - ``POST`` - ``/fhir/MessageHeader`` - create - Créer un nouvel en-tête .. list-table:: Paramètres de recherche — MessageHeader :header-rows: 1 :widths: 25 20 55 * - Paramètre - Type - Description * - ``event`` - Token - Code de l'événement * - ``source`` - String - Source du message * - ``destination`` - String - Destination du message .. _endpoint-provenance: 2.18 — Provenance ------------------ Traçabilité de l'origine des données (source CommCare, formulaire). .. list-table:: Interactions REST — Provenance :header-rows: 1 :widths: 10 40 20 30 * - Méthode - URL - Interaction - Description * - ``GET`` - ``/fhir/Provenance/{id}`` - read - Lire une provenance par son ID * - ``GET`` - ``/fhir/Provenance?{params}`` - search-type - Rechercher des provenances * - ``POST`` - ``/fhir/Provenance`` - create - Créer une nouvelle provenance .. list-table:: Paramètres de recherche — Provenance :header-rows: 1 :widths: 25 20 55 * - Paramètre - Type - Description * - ``target`` - Reference - Ressource cible * - ``recorded`` - Date - Date d'enregistrement * - ``agent`` - Reference - Agent responsable * - ``agent-type`` - Token - Type d'agent .. _interactions-systeme: 2.19 — Interactions au niveau système --------------------------------------- .. list-table:: Interactions système :header-rows: 1 :widths: 10 25 20 45 * - Méthode - URL - Interaction - Description * - ``POST`` - ``/fhir`` - batch - Soumettre un Bundle de type batch * - ``GET`` - ``/fhir?{params}`` - search-system - Recherche globale sur toutes les ressources * - ``GET`` - ``/fhir/_history`` - history-system - Historique global du serveur * - ``GET`` - ``/fhir/metadata`` - capabilities - Récupérer le CapabilityStatement du serveur ---- .. _requetes-courantes: 3. Requêtes courantes ====================== .. _requetes-location: 3.1 — Location --------------- .. list-table:: Requêtes courantes — Location :header-rows: 1 :widths: 30 10 40 20 * - Opération - Méthode - URL - Description * - Lister les districts - ``GET`` - ``/Location?type=district`` - Tous les districts * - Communes d'un district - ``GET`` - ``/Location?type=commune&partof=Location/district-ifanadiana`` - Communes du district Ifanadiana * - CSB d'une commune - ``GET`` - ``/Location?type=csb&partof=Location/commune-kelilalina`` - CSB de la commune Kelilalina * - Fokontany d'une commune - ``GET`` - ``/Location?type=fokontany&partof=Location/commune-kelilalina`` - Fokontany de Kelilalina .. _requetes-signaux: 3.2 — Signaux épidémiologiques -------------------------------- .. list-table:: Requêtes courantes — Signaux épidémiologiques :header-rows: 1 :widths: 30 10 60 * - Opération - Méthode - URL * - Tous les signaux - ``GET`` - ``/Observation?category=signal-epidemiologique`` * - Signaux immédiats - ``GET`` - ``/Observation?category=signal-epidemiologique&signal-type=SIGNAL_IMMEDIAT`` * - Signaux d'un fokontany - ``GET`` - ``/Observation?category=signal-epidemiologique&subject=Location/fokontany-tsaratanana`` * - Signaux sur une période - ``GET`` - ``/Observation?category=signal-epidemiologique&date=ge2026-05-01&date=le2026-05-31`` * - Créer un signal - ``POST`` - ``/Observation`` *(body JSON du signal)* .. _requetes-evaluations: 3.3 — Évaluations SBEc ----------------------- .. list-table:: Requêtes courantes — Évaluations SBEc :header-rows: 1 :widths: 30 10 60 * - Opération - Méthode - URL * - Toutes les évaluations - ``GET`` - ``/RiskAssessment`` * - Évaluations à risque élevé - ``GET`` - ``/RiskAssessment?risk-level=high`` * - Évaluation d'un signal - ``GET`` - ``/RiskAssessment?basis=Observation/signal-palu-001`` * - Créer une évaluation - ``POST`` - ``/RiskAssessment`` *(body JSON)* .. _requetes-alertes: 3.4 — Communications / Alertes ------------------------------- .. list-table:: Requêtes courantes — Alertes :header-rows: 1 :widths: 30 10 60 * - Opération - Méthode - URL * - Toutes les alertes - ``GET`` - ``/Communication?category=alert`` * - Alertes urgentes - ``GET`` - ``/Communication?category=alert&priority=urgent`` * - Alertes d'un praticien - ``GET`` - ``/Communication?sender=Practitioner/med-district-001`` * - Envoyer une alerte - ``POST`` - ``/Communication`` *(body JSON)* .. _requetes-4piliers: 3.5 — Requêtes existantes (4 piliers cliniques) ------------------------------------------------ .. list-table:: Requêtes — 4 piliers cliniques :header-rows: 1 :widths: 35 10 55 * - Opération - Méthode - URL * - Patient par identifiant PIVOT - ``GET`` - ``/Patient?identifier=http://pivot.mg/fhir/identifiant-sanitaire|PIVOT-IFA-2026-00142`` * - Patients d'un fokontany - ``GET`` - ``/Patient?fokontany=Tsaratanana`` * - Patients d'un ASC - ``GET`` - ``/Patient?agent-communautaire=Practitioner/asc-017`` * - Consultations d'un patient - ``GET`` - ``/Encounter?patient=Patient/pivot-002`` * - Observations d'une consultation - ``GET`` - ``/Observation?encounter=Encounter/enc-001`` * - Diagnostics paludisme - ``GET`` - ``/Condition?code=http://hl7.org/fhir/sid/icd-10|B50`` * - Prescriptions ACT - ``GET`` - ``/MedicationRequest?medication=ACT`` ---- .. _formats-donnees: 4. Formats des données ======================= .. _formats-echange: 4.1 — Formats d'échange supportés ----------------------------------- .. list-table:: Formats d'échange FHIR :header-rows: 1 :widths: 15 30 15 40 * - Format - Content-Type (MIME) - Extension - Description * - **JSON** - ``application/fhir+json`` - ``.json`` - Format principal recommandé. Léger, lisible et compatible avec les API REST modernes. * - **XML** - ``application/fhir+xml`` - ``.xml`` - Format alternatif pour la compatibilité avec les systèmes existants. * - **Turtle (RDF)** - ``text/turtle`` - ``.ttl`` - Format sémantique RDF optionnel pour l'interopérabilité avec des ontologies. **Négociation de contenu** — le client spécifie le format via l'en-tête HTTP ``Accept`` ou le paramètre ``_format`` dans l'URL : .. code-block:: text # Via en-tête HTTP Accept: application/fhir+json # Via paramètre URL GET /fhir/Patient/pivot-001?_format=json .. warning:: L'encodage **UTF-8** est obligatoire pour tous les échanges. .. _structure-ressource: 4.2 — Structure générale d'une ressource FHIR ---------------------------------------------- .. list-table:: Éléments communs à toutes les ressources FHIR :header-rows: 1 :widths: 20 15 65 * - Élément - Obligatoire - Description * - ``resourceType`` - ✅ Oui - Type de la ressource (ex: Patient, Observation, Condition) * - ``id`` - ✅ Oui* - Identifiant logique unique sur le serveur (* attribué à la création) * - ``meta`` - Non - Métadonnées : versionId, lastUpdated, profile appliqué, tags * - ``meta.profile`` - Recommandé - URL du profil PIVOT appliqué (ex: ``http://pivot.mg/fhir/StructureDefinition/pivot-patient``) * - ``text`` - Non - Résumé lisible par un humain (narrative XHTML) * - ``extension`` - Non - Extensions personnalisées (ex: fokontany, agent communautaire) * - Éléments métier - Variable - Champs spécifiques à chaque ressource (name, code, value, etc.) .. _codification: 4.3 — Systèmes de codification (CodeSystems) --------------------------------------------- a) Systèmes de codification internationaux ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. list-table:: Systèmes de codification internationaux :header-rows: 1 :widths: 15 45 40 * - Système - URI - Utilisation * - **LOINC** - ``http://loinc.org`` - Codes des observations et mesures cliniques (température, poids, MUAC, TDR, etc.) * - **ICD-10** - ``http://hl7.org/fhir/sid/icd-10`` - Codes des diagnostics (paludisme B50/B54, malnutrition E43/E46, IRA J06.9, etc.) * - **UCUM** - ``http://unitsofmeasure.org`` - Unités de mesure (Cel, cm, kg, mm[Hg], etc.) * - **HL7 FHIR** - ``http://terminology.hl7.org/CodeSystem/*`` - Catégories d'observation, statuts cliniques, types d'organisation, etc. b) Systèmes de codification locaux PIVOT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. list-table:: CodeSystems locaux PIVOT :header-rows: 1 :widths: 25 45 30 * - CodeSystem - URI - Description * - Types de visites - ``http://[serveur]/fhir/CodeSystem/pivot-type-visite`` - AMB, IMP, HH, FLD, EMER, REF * - Médicaments - ``http://[serveur]/fhir/CodeSystem/pivot-medicaments`` - ACT, AMOX, PARA, SRO, ZINC, FERFS, VITA, ALBZ, COTRI, METRO, RUTF * - Identifiant sanitaire - ``http://[serveur]/fhir/identifiant-sanitaire`` - Système d'identification unique des patients PIVOT .. _valuesets: 4.4 — Terminologies et ValueSets ---------------------------------- a) Codes des observations PIVOT (LOINC) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ **ValueSet :** ``http://[serveur]/ValueSet/pivot-observations-codes`` .. list-table:: Codes LOINC — Observations PIVOT :header-rows: 1 :widths: 20 35 45 * - Code LOINC - Affichage - Catégorie * - ``29463-7`` - Poids corporel - vital-signs * - ``8302-2`` - Taille - vital-signs * - ``8310-5`` - Température corporelle - vital-signs * - ``56092-0`` - Périmètre brachial (MUAC) - vital-signs * - ``35094-2`` - TDR Paludisme - laboratory * - ``8867-4`` - Fréquence cardiaque - vital-signs * - ``9279-1`` - Fréquence respiratoire - vital-signs * - ``85354-9`` - Pression artérielle - vital-signs * - ``59576-9`` - Périmètre crânien - vital-signs * - ``75325-1`` - Symptômes - survey b) Codes diagnostics PIVOT (ICD-10) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ **ValueSet :** ``http://[serveur]/ValueSet/pivot-diagnostics-codes`` .. list-table:: Codes ICD-10 — Diagnostics PIVOT :header-rows: 1 :widths: 20 80 * - Code ICD-10 - Affichage * - ``B54`` - Paludisme, sans précision * - ``B50`` - Paludisme à Plasmodium falciparum * - ``E46`` - Malnutrition protéino-énergétique, sans précision * - ``E43`` - Malnutrition protéino-énergétique sévère * - ``E44.0`` - Malnutrition protéino-énergétique modérée * - ``J06.9`` - Infection aiguë des voies respiratoires supérieures * - ``J18.9`` - Pneumonie, sans précision * - ``A09`` - Diarrhée et gastro-entérite d'origine présumée infectieuse * - ``D50.9`` - Anémie ferriprive, sans précision * - ``L30.9`` - Dermatite, sans précision * - ``N39.0`` - Infection urinaire, siège non précisé * - ``O80`` - Accouchement unique spontané * - ``Z34`` - Surveillance d'une grossesse normale * - ``Z09`` - Examen de suivi après traitement c) Types de visites PIVOT ~~~~~~~~~~~~~~~~~~~~~~~~~~ **ValueSet :** ``http://[serveur]/fhir/ValueSet/pivot-type-visite`` .. list-table:: Types de visites PIVOT :header-rows: 1 :widths: 10 30 60 * - Code - Affichage - Définition * - ``AMB`` - Consultation ambulatoire au CSB - Consultation dans un Centre de Santé de Base (CSB I ou CSB II) * - ``IMP`` - Hospitalisation - Séjour hospitalier à l'hôpital de district ou de référence * - ``HH`` - Visite à domicile par ASC - Visite effectuée par un agent de santé communautaire au domicile du patient * - ``FLD`` - Visite communautaire sur le terrain - Visite lors d'une campagne de dépistage ou vaccination sur le terrain * - ``EMER`` - Urgence - Prise en charge en urgence * - ``REF`` - Référence vers hôpital de district - Transfert du patient vers un hôpital de district pour une prise en charge spécialisée d) Médicaments courants PIVOT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ **ValueSet :** ``http://[serveur]/fhir/ValueSet/pivot-medicaments`` .. list-table:: Médicaments courants PIVOT :header-rows: 1 :widths: 10 30 60 * - Code - Affichage - Définition * - ``ACT`` - Artéméther-Luméfantrine (ACT) - Traitement de première ligne du paludisme simple * - ``AMOX`` - Amoxicilline - Antibiotique pour infections respiratoires et ORL * - ``PARA`` - Paracétamol - Antalgique et antipyrétique * - ``SRO`` - Sels de réhydratation orale - Traitement de la déshydratation par diarrhée * - ``ZINC`` - Zinc - Supplément pour diarrhée chez l'enfant * - ``FERFS`` - Fer + Acide folique - Supplément pour anémie et grossesse * - ``VITA`` - Vitamine A - Supplémentation en vitamine A chez l'enfant * - ``ALBZ`` - Albendazole - Antiparasitaire (deworming) * - ``COTRI`` - Cotrimoxazole - Antibiotique à large spectre * - ``METRO`` - Métronidazole - Anti-infectieux pour amibiase et giardiase * - ``RUTF`` - Plumpy'Nut (RUTF) - Aliment thérapeutique prêt à l'emploi pour malnutrition aiguë sévère .. _fhir_4piliers_extensions-pivot: 4.5 — Extensions personnalisées PIVOT --------------------------------------- .. list-table:: Extensions FHIR personnalisées PIVOT :header-rows: 1 :widths: 20 40 15 15 20 * - Extension - URL - Type - Ressource - Description * - Fokontany - ``http://[serveur]/fhir/StructureDefinition/pivot-fokontany`` - valueString - Patient - Plus petite division administrative de Madagascar * - Agent communautaire - ``http://[serveur]/fhir/StructureDefinition/pivot-agent-communautaire`` - valueReference - Patient - Référence vers le Practitioner (ASC) qui suit le patient .. _format-identifiants: 4.6 — Format des identifiants ------------------------------ .. list-table:: Format des identifiants PIVOT :header-rows: 1 :widths: 25 35 20 20 * - Type - Système (URI) - Format - Exemple * - Identifiant sanitaire patient - ``http://[serveur]/fhir/identifiant-sanitaire`` - ``PIVOT-{DISTRICT}-{ANNEE}-{SEQUENCE}`` - ``PIVOT-IFA-2026-00142`` * - Référence interne - *(relatif)* - ``{ResourceType}/{id}`` - ``Patient/pivot-001`` * - Référence complète - *(absolue)* - ``[serveur]/{ResourceType}/{id}`` - ``[serveur]/Patient/pivot-001`` .. _format-bundles: 4.7 — Format des Bundles ------------------------- Les Bundles permettent de regrouper plusieurs ressources dans un seul échange. PIVOT utilise principalement les Bundles de type ``transaction``. .. list-table:: Types de Bundles PIVOT :header-rows: 1 :widths: 15 15 30 40 * - Type - Méthode HTTP - Description - Cas d'usage PIVOT * - ``transaction`` - ``POST /fhir`` - Toutes les entrées réussissent ou échouent ensemble (atomique) - Soumission d'une visite complète (Patient + Encounter + Observations + Condition + MedicationRequest) * - ``batch`` - ``POST /fhir`` - Chaque entrée est traitée indépendamment - Import en masse de données CommCare * - ``searchset`` - *(réponse)* - Résultat d'une recherche - Réponse à ``GET /fhir/Patient?address-district=Ifanadiana`` * - ``document`` - ``POST /fhir`` - Document clinique complet avec Composition - Rapport d'investigation épidémiologique inter-sectoriel * - ``message`` - ``POST /fhir/$process-message`` - Message avec en-tête MessageHeader - Notification d'alerte épidémiologique **Structure d'un Bundle transaction :** .. list-table:: Champs d'un Bundle transaction :header-rows: 1 :widths: 30 40 30 * - Champ - Description - Exemple * - ``resourceType`` - Toujours "Bundle" - ``"Bundle"`` * - ``type`` - Type du bundle - ``"transaction"`` * - ``entry[].fullUrl`` - URL temporaire de la ressource - ``"urn:uuid:pivot-001"`` * - ``entry[].resource`` - La ressource FHIR complète - ``{resourceType: "Patient", ...}`` * - ``entry[].request.method`` - Méthode HTTP (PUT, POST, DELETE) - ``"PUT"`` * - ``entry[].request.url`` - URL cible sur le serveur - ``"Patient/pivot-001"`` .. _format-reponses: 4.8 — Format des réponses HTTP -------------------------------- .. list-table:: Codes de réponse HTTP :header-rows: 1 :widths: 20 35 45 * - Code HTTP - Signification - Corps de la réponse * - ``200 OK`` - Lecture/recherche réussie - Ressource FHIR ou Bundle searchset * - ``201 Created`` - Création réussie - Ressource créée avec ``id`` et ``meta.versionId`` * - ``200 OK`` - Mise à jour réussie - Ressource mise à jour * - ``204 No Content`` - Suppression réussie - Aucun corps * - ``400 Bad Request`` - Requête invalide - OperationOutcome avec détail de l'erreur * - ``401 Unauthorized`` - Non authentifié - OperationOutcome * - ``404 Not Found`` - Ressource introuvable - OperationOutcome * - ``422 Unprocessable Entity`` - Validation échouée (profil non respecté) - OperationOutcome avec erreurs de validation ---- .. _exemple-bundle: 5. Exemple complet — Visite ASC avec diagnostic paludisme ========================================================== .. note:: Cet exemple illustre un **Bundle transaction complet** représentant une visite à domicile d'un ASC pour un enfant de 2 ans avec fièvre, TDR paludisme positif et prescription d'ACT. Il regroupe **10 ressources liées**. .. list-table:: Ressources du Bundle — Visite paludisme enfant :header-rows: 1 :widths: 5 20 25 50 * - # - Ressource - ID - Description * - 1 - Practitioner - ``asc-017`` - ASC Rasoa Vola * - 2 - Organization - ``csb-kelilalina`` - CSB II Kelilalina * - 3 - Location - ``fokontany-tsaratanana`` - Fokontany Tsaratanana * - 4 - Patient - ``pivot-002`` - Rasoa Nirina, fille, née le 2023-08-15, fokontany Tsaratanana * - 5 - Encounter - ``enc-001`` - Visite à domicile (HH), 28/05/2026, durée 30 min * - 6 - Observation (temp) - ``obs-temp-001`` - Température 38.9°C (vital-signs, LOINC ``8310-5``) * - 7 - Observation (TDR) - ``obs-tdr-001`` - TDR Paludisme positif (laboratory, LOINC ``35094-2``) * - 8 - Observation (MUAC) - ``obs-muac-001`` - MUAC 11.2 cm — Malnutrition aiguë modérée (LOINC ``56092-0``) * - 9 - Condition - ``cond-palu-001`` - Paludisme à P. falciparum (ICD-10 ``B50``), confirmé, actif * - 10 - MedicationRequest - ``med-act-001`` - ACT 1 cp x 2/jour x 3 jours ---- .. _creation-profils: 6. Création des Profils ======================== .. todo:: Cette section est en cours de rédaction. Elle décrira la création des profils FHIR StructureDefinition spécifiques au contexte PIVOT/ONEHEALTH.