API Conditionnalites
L'API Conditionnalites permet de gerer les conditionnalites des programmes et le suivi de leur verification aupres des beneficiaires.
Vue d'ensemble
| Endpoint | Methode | Description |
|---|---|---|
/api/conditionnalites/types | GET | Liste des types |
/api/conditionnalites/types | POST | Creer un type |
/api/conditionnalites/types/{id} | GET | Detail d'un type |
/api/conditionnalites/types/{id} | PUT | Modifier un type |
/api/conditionnalites/programmes/{id} | GET | Conditionnalites d'un programme |
/api/conditionnalites/programmes/{id}/attach | POST | Attacher une conditionnalite |
/api/conditionnalites/programmes/{progId}/detach/{condId} | DELETE | Detacher |
/api/conditionnalites/verifications | GET | Liste des verifications |
/api/conditionnalites/verifications | POST | Creer une verification |
/api/conditionnalites/verifications/{id} | GET | Detail verification |
/api/conditionnalites/verifications/{id} | PUT | Modifier verification |
/api/conditionnalites/verifications/batch | POST | Verifications en lot |
/api/conditionnalites/verifications/{id}/exempter | POST | Exempter |
/api/conditionnalites/import/validate | POST | Valider fichier import |
/api/conditionnalites/import | POST | Importer verifications |
/api/conditionnalites/import/{id} | GET | Detail import |
/api/conditionnalites/import/template/{categorie} | GET | Template import |
/api/conditionnalites/cycles/{id}/stats | GET | Stats par cycle |
/api/conditionnalites/cycles/{id}/alertes | GET | Alertes non-conformite |
/api/conditionnalites/beneficiaires/{id}/historique | GET | Historique beneficiaire |
/api/conditionnalites/stats | GET | Stats globales |
Permissions requises
ROLE_DATA_ENTRY: Consultation et creation de verificationsROLE_ADMIN: Creation/modification de types, attachement, exemption
Types de conditionnalite
Liste des types
GET /api/conditionnalites/types
Parametres de requete
| Parametre | Type | Requis | Description |
|---|---|---|---|
page | int | Non | Numero de page (defaut: 1) |
limit | int | Non | Elements par page (defaut: 20) |
categorie | string | Non | Filtrer par categorie |
actif | boolean | Non | Filtrer par statut actif |
search | string | Non | Recherche 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
| Categorie | Description |
|---|---|
education | Conditionnalites liees a l'education |
sante | Conditionnalites liees a la sante |
nutrition | Conditionnalites liees a la nutrition |
formation | Conditionnalites 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
| Parametre | Type | Requis | Description |
|---|---|---|---|
page | int | Non | Numero de page |
limit | int | Non | Elements par page |
programmeId | UUID | Non | Filtrer par programme |
cycleId | UUID | Non | Filtrer par cycle |
typeId | UUID | Non | Filtrer par type |
statut | string | Non | Filtrer par statut |
search | string | Non | Recherche 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:
valeurAttenduedateEcheancereferenceExternedocumentsJustificatifscommentairesverificateurhistorique
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 CSVtypeConditionnalite: 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 CSVcycleId: UUID du cycletypeConditionnalite: 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
| Parametre | Type | Requis | Description |
|---|---|---|---|
programmeId | UUID | Non | Filtrer par programme |
dateDebut | string | Non | Date de debut (YYYY-MM-DD) |
dateFin | string | Non | Date 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
| Statut | Description |
|---|---|
conforme | Beneficiaire respecte la conditionnalite |
non_conforme | Beneficiaire ne respecte pas |
exempt | Beneficiaire exempte (raison valide) |
en_attente | Verification non encore effectuee |
Sources de verification
| Source | Description |
|---|---|
visite_terrain | Verification sur le terrain |
document | Verification documentaire |
tiers | Verification par tiers (ecole, centre sante) |
import | Import depuis fichier |
auto | Verification automatique |