Skip to main content

API Conditionnalites

L'API Conditionnalites permet de gerer les conditionnalites des programmes et le suivi de leur verification aupres des beneficiaires.

Vue d'ensemble

EndpointMethodeDescription
/api/conditionnalites/typesGETListe des types
/api/conditionnalites/typesPOSTCreer un type
/api/conditionnalites/types/{id}GETDetail d'un type
/api/conditionnalites/types/{id}PUTModifier un type
/api/conditionnalites/programmes/{id}GETConditionnalites d'un programme
/api/conditionnalites/programmes/{id}/attachPOSTAttacher une conditionnalite
/api/conditionnalites/programmes/{progId}/detach/{condId}DELETEDetacher
/api/conditionnalites/verificationsGETListe des verifications
/api/conditionnalites/verificationsPOSTCreer une verification
/api/conditionnalites/verifications/{id}GETDetail verification
/api/conditionnalites/verifications/{id}PUTModifier verification
/api/conditionnalites/verifications/batchPOSTVerifications en lot
/api/conditionnalites/verifications/{id}/exempterPOSTExempter
/api/conditionnalites/import/validatePOSTValider fichier import
/api/conditionnalites/importPOSTImporter verifications
/api/conditionnalites/import/{id}GETDetail import
/api/conditionnalites/import/template/{categorie}GETTemplate import
/api/conditionnalites/cycles/{id}/statsGETStats par cycle
/api/conditionnalites/cycles/{id}/alertesGETAlertes non-conformite
/api/conditionnalites/beneficiaires/{id}/historiqueGETHistorique beneficiaire
/api/conditionnalites/statsGETStats globales

Permissions requises

  • ROLE_DATA_ENTRY : Consultation et creation de verifications
  • ROLE_ADMIN : Creation/modification de types, attachement, exemption

Types de conditionnalite

Liste des types

GET /api/conditionnalites/types

Parametres de requete

ParametreTypeRequisDescription
pageintNonNumero de page (defaut: 1)
limitintNonElements par page (defaut: 20)
categoriestringNonFiltrer par categorie
actifbooleanNonFiltrer par statut actif
searchstringNonRecherche textuelle

Reponse

{
"success": true,
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"code": "SCOL-001",
"nom": "Scolarisation des enfants",
"categorie": "education",
"description": "Verification de la scolarisation des enfants 6-14 ans",
"criteres": ["inscription_ecole", "presence_reguliere"],
"frequenceVerification": "trimestriel",
"actif": true,
"createdAt": "2025-01-01 08:00:00"
}
],
"meta": {
"total": 15,
"page": 1,
"limit": 20,
"pages": 1
}
}

Creer un type

POST /api/conditionnalites/types

Corps de la requete

{
"code": "VACC-001",
"nom": "Vaccination des enfants",
"categorie": "sante",
"description": "Verification du calendrier vaccinal",
"criteres": ["carnet_vaccination", "vaccins_jour"],
"frequenceVerification": "semestriel"
}

Categories disponibles

CategorieDescription
educationConditionnalites liees a l'education
santeConditionnalites liees a la sante
nutritionConditionnalites liees a la nutrition
formationConditionnalites liees a la formation professionnelle

Configuration programme

Conditionnalites d'un programme

GET /api/conditionnalites/programmes/{id}

Reponse

{
"success": true,
"data": [
{
"id": "...",
"programme": {
"id": "...",
"nom": "PCH Guinee-Bissau"
},
"typeConditionnalite": {
"id": "...",
"code": "SCOL-001",
"nom": "Scolarisation des enfants",
"categorie": "education"
},
"obligatoire": true,
"seuilConformite": 80,
"penalite": 50,
"parametres": {"age_min": 6, "age_max": 14},
"ordre": 1,
"actif": true
}
]
}

Attacher une conditionnalite

POST /api/conditionnalites/programmes/{id}/attach

Corps de la requete

{
"typeConditionnaliteId": "550e8400-e29b-41d4-a716-446655440001",
"obligatoire": true,
"seuilConformite": 80,
"penalite": 50,
"parametres": {"age_min": 6, "age_max": 14},
"ordre": 1
}

Detacher une conditionnalite

DELETE /api/conditionnalites/programmes/{progId}/detach/{condId}

Verifications

Liste des verifications

GET /api/conditionnalites/verifications

Parametres de requete

ParametreTypeRequisDescription
pageintNonNumero de page
limitintNonElements par page
programmeIdUUIDNonFiltrer par programme
cycleIdUUIDNonFiltrer par cycle
typeIdUUIDNonFiltrer par type
statutstringNonFiltrer par statut
searchstringNonRecherche beneficiaire

Reponse

{
"success": true,
"data": [
{
"id": "...",
"beneficiaire": {
"id": "...",
"nomComplet": "Mamadou Diallo",
"telephone": "+245955123456"
},
"cycle": {
"id": "...",
"code": "PCH-GB-C012"
},
"conditionnalite": {
"id": "...",
"type": "Scolarisation des enfants",
"categorie": "education",
"seuil": 80
},
"statut": "conforme",
"tauxConformite": 100,
"valeurConstatee": "3 enfants sur 3 scolarises",
"sourceVerification": "visite_terrain",
"dateVerification": "2025-01-15 10:00:00",
"createdAt": "2025-01-15 10:30:00"
}
],
"meta": {
"total": 500,
"page": 1,
"limit": 20,
"pages": 25
}
}

Creer une verification

POST /api/conditionnalites/verifications

Corps de la requete

{
"beneficiaireId": "550e8400-e29b-41d4-a716-446655440001",
"cycleId": "550e8400-e29b-41d4-a716-446655440002",
"programmeConditionnaliteId": "550e8400-e29b-41d4-a716-446655440003",
"statut": "conforme",
"tauxConformite": 100,
"valeurConstatee": "3 enfants sur 3 scolarises",
"sourceVerification": "visite_terrain",
"dateVerification": "2025-01-15T10:00:00",
"commentaires": "Tous les enfants sont inscrits et assistent regulierement"
}

Detail d'une verification

GET /api/conditionnalites/verifications/{id}

Inclut les champs supplementaires:

  • valeurAttendue
  • dateEcheance
  • referenceExterne
  • documentsJustificatifs
  • commentaires
  • verificateur
  • historique

Verifications en lot

POST /api/conditionnalites/verifications/batch

Corps de la requete

{
"cycleId": "...",
"programmeConditionnaliteId": "...",
"verifications": [
{
"beneficiaireId": "...",
"statut": "conforme",
"tauxConformite": 100,
"valeurConstatee": "OK"
},
{
"beneficiaireId": "...",
"statut": "non_conforme",
"tauxConformite": 50,
"valeurConstatee": "1 enfant sur 2 scolarise"
}
]
}

Reponse

{
"success": true,
"data": {
"success": 48,
"errors": [
{"index": 5, "error": "Beneficiaire non trouve"}
]
}
}

Exempter une verification

POST /api/conditionnalites/verifications/{id}/exempter

Corps de la requete

{
"motif": "Beneficiaire hospitalise pendant la periode"
}

Import de verifications

Valider un fichier d'import

POST /api/conditionnalites/import/validate

Multipart form-data:

  • file : Fichier CSV
  • typeConditionnalite : UUID du type

Reponse

{
"success": true,
"data": {
"valid": true,
"totalLignes": 250,
"lignesValides": 245,
"erreurs": [
{"ligne": 12, "erreur": "Beneficiaire non trouve"},
{"ligne": 45, "erreur": "Format date invalide"}
]
}
}

Importer des verifications

POST /api/conditionnalites/import

Multipart form-data:

  • file : Fichier CSV
  • cycleId : UUID du cycle
  • typeConditionnalite : UUID du type

Reponse

{
"success": true,
"data": {
"id": "...",
"codeImport": "IMP-2025-001234",
"cycle": {
"id": "...",
"code": "PCH-GB-C012"
},
"typeConditionnalite": {
"id": "...",
"nom": "Scolarisation des enfants"
},
"fichierOriginal": "verifications_janvier.csv",
"statut": "termine",
"totalLignes": 250,
"lignesTraitees": 250,
"lignesReussies": 245,
"lignesEchouees": 5,
"tauxReussite": 98.0,
"createdAt": "2025-01-15 14:00:00",
"dateFinTraitement": "2025-01-15 14:05:00"
}
}

Telecharger le template

GET /api/conditionnalites/import/template/{categorie}

Retourne un fichier CSV avec les colonnes requises pour la categorie.


Statistiques

Statistiques d'un cycle

GET /api/conditionnalites/cycles/{id}/stats

Reponse

{
"success": true,
"data": {
"cycle": {
"id": "...",
"code": "PCH-GB-C012"
},
"parConditionnalite": [
{
"type": "Scolarisation des enfants",
"totalVerifications": 500,
"conformes": 450,
"nonConformes": 40,
"exemptes": 10,
"tauxConformite": 91.8
}
],
"global": {
"totalVerifications": 1500,
"conformes": 1350,
"nonConformes": 120,
"exemptes": 30,
"tauxConformiteMoyen": 91.2
}
}
}

Alertes de non-conformite

GET /api/conditionnalites/cycles/{id}/alertes

Liste les beneficiaires non conformes pour un cycle.

Reponse

{
"success": true,
"data": [
{
"id": "...",
"beneficiaire": {
"id": "...",
"nomComplet": "Fatou Sane",
"telephone": "+245955654321"
},
"conditionnalite": "Scolarisation des enfants",
"tauxConformite": 50,
"seuil": 80,
"statut": "non_conforme"
}
],
"meta": {
"total": 40
}
}

Historique d'un beneficiaire

GET /api/conditionnalites/beneficiaires/{id}/historique

Liste toutes les verifications d'un beneficiaire.

Statistiques globales

GET /api/conditionnalites/stats

Parametres

ParametreTypeRequisDescription
programmeIdUUIDNonFiltrer par programme
dateDebutstringNonDate de debut (YYYY-MM-DD)
dateFinstringNonDate de fin

Reponse

{
"success": true,
"data": {
"verifications": {
"total": 15000,
"conformes": 13500,
"nonConformes": 1200,
"exemptes": 300,
"tauxConformiteGlobal": 91.8
},
"types": [
{"categorie": "education", "count": 8, "actifs": 6},
{"categorie": "sante", "count": 5, "actifs": 4}
],
"imports": {
"total": 25,
"reussis": 24,
"echoues": 1,
"tauxReussiteMoyen": 97.5
}
}
}

Statuts de verification

StatutDescription
conformeBeneficiaire respecte la conditionnalite
non_conformeBeneficiaire ne respecte pas
exemptBeneficiaire exempte (raison valide)
en_attenteVerification non encore effectuee

Sources de verification

SourceDescription
visite_terrainVerification sur le terrain
documentVerification documentaire
tiersVerification par tiers (ecole, centre sante)
importImport depuis fichier
autoVerification automatique