# Plan de corrections - Audit Système Hospitalier

## 1. ROUTES (application/config/routes.php) ✅ CORRIGÉ

### Bugs corrigés
- [x] `cautions/lister` doublon (ligne 180 écrasée par 182) → suppression ligne 180, ajout `cautions/lister/mois`
- [x] `imageries/lister` doublon (ligne 1418 écrasée par 1420) → suppression ligne 1418, ajout `imageries/lister/mois`
- [x] `affectations/*` doublon (lignes 343-348 écrasent 108-112) → suppression bloc 343-348
- [x] `paniers/prestations/temporaires/*` doublon (599-601 écrasent 560-562) → suppression bloc 599-601
- [x] `factures/masquees` doublon identique (699-700) → suppression ligne 700
- [x] `destockages/kits/morgues/ajouter` doublon (707 et 714) → suppression ligne 714
- [x] `activations/reactifs/activer` doublon (84 et 872) → suppression lignes 84-85
- [x] `modeles/supprimer/(:num)` doublon (1282 écrase 1257 avec contrôleur différent) → suppression ligne 1282
- [x] `resultats/imageries/definitifs` doublon (1651 et 1661) → suppression ligne 1661
- [x] Variables `$id` au lieu de `$1` (lignes 697-698 et doublon ligne 685-686) → correction
- [x] Typo `raceurs` → `traceurs` (ligne 795)
- [x] Suppression/commentaire routes vers contrôleurs inexistants : test/search, iconographies, mails, examens/chirurgies
- [x] `404_override` pointe vers contrôleur inexistant → commenté

### Corrections restantes (volumineuses)
- [ ] Réduction générale du fichier routes.php (1288 → ~400 routes via conventions CI3)
- [ ] Remplacement des `(:any)` par des patterns plus restrictifs

---

## 2. SÉCURITÉ D'ACCÈS ✅ CORRIGÉ (partiellement)

### Corrections appliquées
- [x] `MY_Controller::__construct()` : vérification globale de session avec exemption Pages/Welcome
- [x] `Dossiers::nouveau()` : ajout vérification session + rôle
- [x] `ResultatsExamens::modifier()` : `isAnCaissier` → `isLaboratoire || isAnAdmin || isSuperAdmin`
- [x] `ResultatsExamens::supprimer()` : `isAnCaissier` → `isLaboratoire || isAnAdmin || isSuperAdmin`
- [x] `ResultatsImageries::modifier()` : `isAnCaissier` → `isImagerie || isAnAdmin || isSuperAdmin`
- [x] `ResultatsImageries::supprimer()` : `isAnCaissier` → `isImagerie || isAnAdmin || isSuperAdmin`
- [x] `Biomol::__construct()` : ajout vérification de session obligatoire
- [x] `ContresReferences.php` : bug `has_userdata('id')` passé à `isUser()` → corrigé en `userdata('id')`
- [x] `FeuillesMedicalesHospitalisations.php` : même bug corrigé (5 occurrences)

### Corrections restantes (nécessitent revue manuelle exhaustive)
- [ ] Vérifier tous les endpoints AJAX exposés (Patients::getPatients, etc.)
- [ ] Uniformiser le pattern `isUser($this->session->userdata('id'))` en `has_userdata('id')` + `isUser(...)` dans tous les contrôleurs
- [ ] Vérifier que les 276 contrôleurs étendant MY_Controller n'ont pas de méthodes publiques sensibles sans vérification de rôle

---

## 3. WORKFLOWS MÉTIERS / TRANSITIONS D'ÉTATS ✅ CORRIGÉ (partiellement)

### Corrections appliquées
- [x] `AlertesServices_model::marquerEnCours()` : garde-fou `statut = 1` + retour affected_rows
- [x] `AlertesServices_model::marquerTermine()` : garde-fou `statut = 2` + retour affected_rows
- [x] `AlertesServices_model::marquerDispense()` : garde-fou `statut = 1` + vérification dates prépa/verif + retour affected_rows
- [x] `Inventaires_model::valider()` : garde-fou `statut = 'brouillon'` + retour affected_rows
- [x] `CommandesFournisseurs_model` : ajout méthodes `passerStatut()`, `associerFournisseurSecurise()`, `validerProformaSecurise()`, `emettreBonCommandeSecurise()`, `recevoirFactureSecurise()`, `finaliserLivraisonSecurise()`
- [x] `Factures::demasquer()` : suppression var_dump, décommentage et sécurisation du code

### Corrections restantes
- [ ] Unifier les 5 flags de facture en un statut unique (refactoring majeur)
- [ ] Ajouter garde-fous dans `ResultatsExamens` et `ResultatsImageries` (flags 0→1→2→4)
- [ ] Synchroniser `Consultations::reprendre()` avec `FilesAttente`
- [ ] Compléter le workflow inventaire (étape clôture)

---

## 4. BUGS TECHNIQUES ✅ CORRIGÉ

### Corrections appliquées
- [x] `ResultatsImageries.php` lignes 568-578 : variable `$data['resultatsImageries']` non définie → remplacée par `$data['donneesProvisoiresImageries']`
- [x] `ContresReferences.php` et `FeuillesMedicalesHospitalisations.php` : bug `has_userdata('id')` passé comme ID

### Corrections restantes
- [ ] Factorisation du code dupliqué ResultatsExamens / ResultatsImageries
- [ ] Implémentation PDF rapports caisse (TODO)
