version à 86%

This commit is contained in:
oussi
2026-04-24 10:39:05 +02:00
commit feb7277fe9
16 changed files with 17780 additions and 0 deletions

124
PLAN_EXTRACTION.md Normal file
View File

@@ -0,0 +1,124 @@
# Plan extraction OGC → Excel
## Contexte
Extraction des fiches OGC (Organismes de Gestion du Contrôle) scanées.
Chaque PDF = 1 dossier patient, ~6 pages.
## Modèles utilisés
- **Vision** : `qwen3-vl:2b` via Ollama (identifie le type de page + extrait les champs)
- **Texte** : `qwen3:4b` (optionnel, structuration secondaire si besoin)
## Architecture
```
PDF → pdf2image (images par page)
Pour chaque page :
→ qwen3-vl:2b : identifier le type de page
→ Si "Séjour d'hospitalisation complète" : SKIP
→ Sinon : extraction structurée JSON via qwen3-vl:2b
Assemblage des champs par dossier
Sortie Excel (openpyxl / pandas)
```
## Types de pages
| Titre détecté | Action |
|---|---|
| FICHE MEDICALE DE RECUEIL DU PRATICIEN CONSEIL | Extraire (page principale) |
| FICHE MEDICALE DE CONCERTATION | Skip (vide ou manuscrit léger) |
| Séjour d'hospitalisation complète | **SKIP** (gros manuscrit) |
| Eléments de preuve tracés au dossier | Extraire |
| FICHE ADMINISTRATIVE DE CONCERTATION 2/2 | Extraire |
| FICHE ADMINISTRATIVE DE CONCERTATION 1/2 | Extraire |
## Champs à extraire
### En-tête (commun)
- N° OGC, Etablissement, FINESS, Date début contrôle
- N° Champ, Libellé champ de contrôle
- Dossier manquant, Date début séjour, Date fin séjour
### Page 1 — Données du séjour (Etablissement + Recodage)
- Age (ans), Age (jours), Sexe
- Poids d'entrée, Durée de séjour
- Mode d'entrée, Provenance, Mode de sortie, Destination
- Nb séances, Nb RUM, Nb j EXH, Type EXB, Nb j EXB
### Page 1 — Données du RUM (Etablissement + Recodage)
- N° RUM, Lits dédiés SP, UM, IGS II
- Durée RUM (date_debut / date_fin)
- Nature suppl., Nb suppl.
### Page 1 — Codages (listes)
- DP_etab_code, DP_etab_libelle
- DR_etab_code, DR_etab_libelle
- DAS_etab : liste de {code, rang, libelle}
- Actes_etab : liste de {code, rang, libelle}
- DP_recodage, DR_recodage
- DAS_recodage : liste de {code, rang}
- Actes_recodage : liste de {code, rang}
### Page 1 — GHM/GHS + décision
- GHM_etab, GHS_etab, GHM_recodage, GHS_recodage
- Recodage_impactant_facturation (0/1)
- GHS_injustifie (0/1)
- SE_coche (1/2/3/4), ATU, FFM, FSD
- Accord_Desaccord (accord/désaccord)
- Nom_praticien_conseil
### Page Eléments de preuve (tableau 17 lignes)
Pour chaque type de document :
- present (oui/non), photocopie (nombre), absent_date_1ere_demande, date_obtention
- Date_elements_preuve
- Medecin_controleur_signataire, Medecin_DIM_signataire
### Page Fiche Administrative 2/2
- GHS_initial, GHS_avant_concertation, GHS_final_apres_concertation
- Decision_finale (maintien_avis_controleur / retour_groupage_DIM / autre_groupage)
- Avis_DIM_final (accord/désaccord)
- Date_concertation
- Nom_medecin_responsable_controle, Nom_medecin_DIM
### Page Fiche Administrative 1/2
- Date_concertation_1_2
- Argumentaire_medecin_controleur (texte long imprimé)
## Structure Excel de sortie
### Onglet 1 : "Données principales"
1 ligne par OGC, colonnes = tous les champs scalaires
### Onglet 2 : "Diagnostics"
1 ligne par code diagnostique (DP/DR/DAS), avec colonne N°OGC
### Onglet 3 : "Actes"
1 ligne par acte, avec colonne N°OGC
### Onglet 4 : "Eléments de preuve"
1 ligne par type de document × N°OGC
## Fichiers
- `extraction.py` : script principal
- `scanOgc/` : dossier des PDFs source
- `output/` : dossier de sortie Excel
## Pour relancer
```bash
cd "/Users/oussi/Documents/Documents - MacBook Pro de oussi/EttaSante/T2A/ScanOGC/testExtraction2"
python3 extraction.py
```
## Dépendances
```bash
pip install pdf2image pillow pandas openpyxl requests
# Ollama doit tourner : ollama serve
# Modèle requis : qwen3-vl:2b
```
## Notes importantes
- L'ordre des pages varie selon les fichiers → identification par titre, pas par numéro
- Page manuscrite identifiée par le titre "Séjour d'hospitalisation complète"
- qwen3-vl:2b : paramètre `think` désactivé pour JSON pur (plus rapide)
- Timeout Ollama : 120s par page (pages denses)