version à 86%
This commit is contained in:
124
PLAN_EXTRACTION.md
Normal file
124
PLAN_EXTRACTION.md
Normal 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)
|
||||
Reference in New Issue
Block a user