API de Correspondance FOSA

SIDAInfo ↔ DHIS2  |  Direction de la Gestion de l'Informatique Sanitaire

Ce service expose une API REST permettant de résoudre les identifiants de formations sanitaires (FOSA) entre les deux systèmes d'information de santé du Burundi : SIDAInfo et DHIS2. Il est conçu pour être consommé par des intégrations automatisées (OpenFn, scripts ETL, etc.).

Gérer les correspondances Voir les endpoints

Format de réponse

JSON uniforme

Authentification

Aucune requise

Protocole

HTTP REST / GET

Interface admin

/matchings

Modèle de données

Chaque correspondance est un enregistrement de la table matchings.

Champ Type Requis Description
sidainfo_code string Oui Identifiant unique de la FOSA dans SIDAInfo
dhis2_id string Oui UID de l'unité organisationnelle dans DHIS2
nom_formation string Non Nom de la formation sanitaire
description string Non Notes complémentaires
is_active boolean Non Indique si la correspondance est en vigueur (défaut : true)
GET /matching/by-code/{sidainfo_code}

Retourne l'identifiant DHIS2 correspondant à un code SIDAInfo. Point d'entrée principal pour OpenFn.

Paramètre de chemin

sidainfo_code Le code SIDAInfo de la FOSA (ex : FOS-12345)

200 — Succès

{
  "success": true,
  "message": "Correspondance trouvée",
  "data": {
    "sidainfo_code": "FOS-12345",
    "dhis2_id": "AbCdEfGhIj1",
    "nom_formation": "CS Rohero"
  }
}

404 — Non trouvé

{
  "success": false,
  "message": "Code SIDAInfo non trouvé",
  "data": null
}

Exemples d'utilisation

curl -X GET \
  "https://votre-domaine.bi/matching/by-code/FOS-12345" \
  -H "Accept: application/json"

Autres endpoints disponibles

Ces routes peuvent être activées dans routes/web.php selon les besoins.

GET
/api/matchings

Lister toutes les correspondances (paginées)

Paramètres : per_page (défaut 50), search

POST
/api/matchings

Créer ou mettre à jour une correspondance

Corps JSON : sidainfo_code*, dhis2_id*, nom_formation, description

PUT
/api/matchings/{id}

Mettre à jour une correspondance existante

Corps JSON : sidainfo_code*, dhis2_id*, nom_formation, description, is_active

DELETE
/api/matchings/{id}

Supprimer une correspondance

Suppression douce (soft delete)

POST
/api/matchings/sync

Synchronisation massive (batch)

Corps JSON : { "matchings": [{ sidainfo_code, dhis2_id, ... }] }

GET
/matchings/export

Exporter toutes les correspondances en CSV

Téléchargement direct, encodage UTF-8 BOM

POST
/matchings/import

Importer des correspondances depuis un CSV

Fichier CSV avec colonnes : sidainfo_code, dhis2_id, nom_formation (optionnel)

Synchronisation massive (sync)

Utile pour initialiser ou resynchroniser l'ensemble des correspondances en un seul appel.

Corps de la requête

{
  "matchings": [
    {
      "sidainfo_code": "FOS-001",
      "dhis2_id": "AbCdEfGhIj1",
      "nom_formation": "CS Rohero"
    },
    {
      "sidainfo_code": "FOS-002",
      "dhis2_id": "KlMnOpQrSt2",
      "nom_formation": "HP Kamenge"
    }
  ]
}

Réponse 200

{
  "success": true,
  "message": "Synchronisation terminée",
  "synced_count": 2,
  "errors_count": 0,
  "errors": []
}

Import CSV

Importer des correspondances en masse depuis un fichier CSV via l'interface ou l'API.

Format du fichier CSV

sidainfo_code,dhis2_id,nom_formation,description
FOS-001,AbCdEfGhIj1,CS Rohero,Centre de santé
FOS-002,KlMnOpQrSt2,HP Kamenge,Hôpital provincial

Colonnes obligatoires : sidainfo_code, dhis2_id.

Requête cURL

curl -X POST \
  "https://votre-domaine.bi/matchings/import" \
  -H "Accept: application/json" \
  -F "file=@correspondances.csv"

Test rapide

Entrez un code SIDAInfo pour tester l'API directement.

Codes de retour HTTP

200 Correspondance trouvée
201 Créée avec succès (POST)
404 Code ou ID introuvable
422 Données invalides
500 Erreur serveur interne

Structure de réponse

Toutes les réponses JSON partagent la même enveloppe.

{
  "success": boolean,
  "message": string,
  "data":    object | null
}