Compare commits

...

4 Commits

Author SHA1 Message Date
Dom
b47f5c47e0 feat(schema): module de nettoyage des JSONs pour consommation aval
Le pipeline produit un JSON riche pendant l'exécution (ratios
checkbox, OCR raw, flags _parse_error/_truncated_loop/_crop_recodage,
_source, _elapsed_s…). Utile en audit, mais pollue quand on veut
exposer le résultat à un consommateur aval (Excel, dashboard, API).

pipeline/schema.py :
- SCHEMA_VERSION "2.0"
- clean_dossier(raw) : retourne une copie propre avec structure stable
  (en-tête → codage → GHM/GHS → décisions) et validation ATIH en
  format compact (summary + cross_checks + flags par champ).
- CLEAN_FIELDS_RECUEIL / CLEAN_FIELDS_CONCERTATION_{1,2} / CLEAN_FIELDS_PREUVES
  documentent les champs stables par type de page.
- CLI : `python -m pipeline.schema` → nettoie `output/v2/*.json` vers
  `output/v2_clean/`.

Séparation claire : `output/v2/` reste le JSON raw (audit), `output/v2_clean/`
est la sortie propre et stable pour livrables.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 15:54:50 +02:00
Dom
3f2e2ee9f4 feat(extract): second passage VLM sur crop colonne Recodage (P0)
Qwen ne lit systématiquement que la colonne de gauche du tableau
Codage quand on lui donne la page recueil entière : la colonne droite
(Recodage) a 27% de couverture en V2.0 avec 100% de validité — une
régression majeure puisque c'est le cœur métier du contrôle T2A.

Solution : après le passage principal, refaire une extraction dédiée
sur un crop zonal de la seule colonne Recodage (y=0.330→0.490 pour
exclure le bloc Actes adjacent). Prompt strict anti-hallucination
("beaucoup de lignes sont vides, n'invente rien"). Le résultat écrase
partiellement `codage_reco` (DP/DR/DAS) dans le JSON principal.

Classification Python par règle métier :
- 1er code sans position  → DP
- 2e code sans position   → DR (ignoré si == DP : Qwen duplique parfois)
- codes avec position     → DAS

Filtre CIM-10 par regex en Python pour retirer les codes CCAM (actes)
qui pourraient rester si le crop déborde.

Ajout d'une env var `QWEN_MAX_PIXELS` (défaut 800) pour ajuster la
consommation VRAM sur machines avec GPU partagé (test sur RTX 5070
avec rpa_vision_v3 en parallèle).

Ajout de `torch.cuda.empty_cache()` après chaque inférence pour
réduire la fragmentation VRAM sur exécutions longues.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 15:54:35 +02:00
Dom
7d45018139 feat(extract): normaliser ghs_injustifie en 0/1 (P2)
Qwen renvoie typiquement le libellé complet `0 SE 1 2 3 4 ATU FFM FSD`
dans le champ ghs_injustifie alors qu'une seule valeur 0/1 est attendue.
Ajout de `pipeline.checkboxes.parse_ghs_injustifie` qui extrait le
premier chiffre 0/1 via regex, ou "" si illisible.

Post-traitement appliqué à chaque extraction recueil et aux 18 JSONs
V2 existants (10 fichiers corrigés en place — les 8 autres avaient
déjà ghs_injustifie absent ou vide).

Note sur les 7 cases SE1-4/ATU/FFM/FSD : zones trop petites pour être
calibrées à l'œil et aucun cas positif (`ghs_injustifie=1`) dans
l'échantillon 2018 pour valider visuellement. La détection est en
placeholder, à recalibrer sur un cas positif réel.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 15:54:16 +02:00
Dom
7dc3eba1fc fix(persist): corriger tag ocr_model et pipeline_version dans _meta
Auparavant le JSON de sortie étiquetait systématiquement
`ocr_model: "zai-org/GLM-OCR"` et `pipeline_version: "v1"` alors que le
pipeline avait été basculé sur Qwen2.5-VL-3B en V2.

`_meta` lit désormais `MODEL_PATH` depuis `pipeline.ocr_qwen` pour
garantir la cohérence entre le modèle effectivement utilisé et la
trace dans le fichier.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 15:54:01 +02:00
34 changed files with 4993 additions and 18 deletions

View File

@@ -282,7 +282,7 @@
"ghm_reco": "06M094",
"ghs_reco": "2161",
"recodage_impactant": "1",
"ghs_injustifie": "0 SE 1 2 3 4 ATU FFM FSD",
"ghs_injustifie": "0",
"praticien_conseil": "DR JP VIGNAU",
"accord_desaccord": "accord",
"_checkbox_debug": {

View File

@@ -317,7 +317,7 @@
"ghm_reco": "10M183",
"ghs_reco": "3969",
"recodage_impactant": "1",
"ghs_injustifie": "0 SE 1 2 3 4 ATU FFM FSD",
"ghs_injustifie": "0",
"praticien_conseil": "DR VIGNAU",
"accord_desaccord": "désaccord",
"_checkbox_debug": {

View File

@@ -215,7 +215,7 @@
"ghm_reco": "06C042",
"ghs_reco": "1940",
"recodage_impactant": "1",
"ghs_injustifie": "0 SE 1 2 3 4 ATU FFM FSD",
"ghs_injustifie": "0",
"praticien_conseil": "DR VIGNAÚ",
"accord_desaccord": "désaccord",
"_checkbox_debug": {

View File

@@ -304,7 +304,7 @@
"ghm_reco": "01C061",
"ghs_reco": "34",
"recodage_impactant": "1",
"ghs_injustifie": "0 SE 1 2 3 4 ATU FFM FSD",
"ghs_injustifie": "0",
"praticien_conseil": "",
"accord_desaccord": "désaccord",
"_checkbox_debug": {

View File

@@ -330,7 +330,7 @@
"ghm_reco": "03M112",
"ghs_reco": "861",
"recodage_impactant": "1",
"ghs_injustifie": "0 SE 1 2 3 4 ATU FFM FSD",
"ghs_injustifie": "0",
"praticien_conseil": "DR VIGNAU",
"accord_desaccord": "accord",
"_checkbox_debug": {

View File

@@ -371,7 +371,7 @@
"ghm_reco": "04M093",
"ghs_reco": "1163",
"recodage_impactant": "1",
"ghs_injustifie": "0 SE 1 2 3 4 ATU FFM FSD",
"ghs_injustifie": "0",
"praticien_conseil": "DR VIGNAU",
"accord_desaccord": "désaccord",
"_checkbox_debug": {

View File

@@ -298,7 +298,7 @@
"ghm_reco": "1947",
"ghs_reco": "06C071",
"recodage_impactant": "1",
"ghs_injustifie": "SE 1 2 3 4 ATU FFM FSD",
"ghs_injustifie": "",
"praticien_conseil": "DR VIGNAU",
"accord_desaccord": "accord",
"_checkbox_debug": {

View File

@@ -324,7 +324,7 @@
"ghm_reco": "23Z02Z",
"ghs_reco": "7992",
"recodage_impactant": "1",
"ghs_injustifie": "0 SE 1 2 3 4 ATU FFM FSD",
"ghs_injustifie": "0",
"praticien_conseil": "DR VIGNAU",
"accord_desaccord": "accord",
"_checkbox_debug": {

View File

@@ -298,7 +298,7 @@
"ghm_reco": "04M092",
"ghs_reco": "1162",
"recodage_impactant": "1",
"ghs_injustifie": "0 SE 1 2 3 4 ATU FFM FSD",
"ghs_injustifie": "0",
"praticien_conseil": "DR VIGNAU",
"accord_desaccord": "désaccord",
"_checkbox_debug": {

View File

@@ -201,7 +201,7 @@
"ghm_reco": "23Z02Z",
"ghs_reco": "7992",
"recodage_impactant": "1",
"ghs_injustifie": "SE 1 2 3 4 ATU FFM FSD",
"ghs_injustifie": "",
"praticien_conseil": "DR VIGNAU",
"accord_desaccord": "accord",
"_checkbox_debug": {

262
output/v2_clean/OGC 1.json Normal file
View File

@@ -0,0 +1,262 @@
{
"fichier": "OGC 1",
"pdf_hash": "4b2aacd453ec8903",
"schema_version": "2.0",
"extraction": {
"recueil": {
"etablissement": "CLINIQUE D'ARCACHON",
"finess": "330780206",
"date_debut_controle": "13/02/2018",
"n_ogc": "1",
"n_champ": "1",
"dates_sejour": "16/02/2016 au 10/03/2016",
"sejour_etab": {
"age": "79",
"sexe": "2",
"duree_sejour": "23"
},
"sejour_reco": {
"age": "79",
"sexe": "2",
"duree_sejour": "23"
},
"rum_etab": {
"um": "53 C",
"igs": "0",
"duree": "23",
"dates": "du 16/02/2016 au 10/03/2016"
},
"codage_etab": {
"dp": "K650",
"dp_libelle": "PERITONITE AIG.",
"dr": "B966 * 4 BACILLUS FRAGILIS, CAUSE DE MAL. CLASSES DANS D'AUTRES CHAP.",
"das": []
},
"codage_reco": {
"dp": "",
"dr": "",
"das": []
},
"actes_etab": [],
"actes_reco": [],
"ghm_etab": "06M093",
"ghs_etab": "2160",
"ghm_reco": "06M094",
"ghs_reco": "2161",
"recodage_impactant": "1",
"ghs_injustifie": "0",
"accord_desaccord": "accord",
"praticien_conseil": "DR JP VIGNAU",
"_validation": {
"summary": {
"valid": 6,
"invalid": 0,
"empty": 2,
"total_codes": 6,
"ghm_ghs_incoherents": 0
},
"codage_etab": {
"dp": {
"valid": true,
"libelle_ref": "Péritonite aigüe"
},
"dr": {
"valid": true,
"libelle_ref": "Bacillus fragilis, cause de maladies classées dans d'autres chapitres"
},
"das": []
},
"codage_reco": {
"dp": {
"valid": null
},
"dr": {
"valid": null
},
"das": []
},
"ghm_etab": {
"valid": true
},
"ghs_etab": {
"valid": true
},
"ghm_reco": {
"valid": true
},
"ghs_reco": {
"valid": true
},
"cross_checks": {
"etab_ghm_ghs_coherent": true,
"reco_ghm_ghs_coherent": true
}
}
},
"concertation_2": {
"ghs_initial": "2160",
"ghs_avant_concertation": "2160",
"ghs_final": "2161",
"decision": "maintien_avis_controleur",
"date_concertation": "15.3.2018",
"praticien_controleur": "DR JP VIGNAU",
"medecin_dim": "DR ETTORCHI-TARDY",
"_validation": {
"ghs_initial": {
"code": "2160",
"valid": true
},
"ghs_avant_concertation": {
"code": "2160",
"valid": true
},
"ghs_final": {
"code": "2161",
"valid": true
}
}
},
"concertation_1": {
"date_concertation": "15.3",
"argumentaire": "102 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur un diagnostic associé significatif (DAS) codé par l'établissement dans le résumé d'unité médicale (RUM). Ce DAS n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre IV, paragraphe 2.1 : « L'enregistrement dans le RUM d'une affection correspondant à la définition d'un DAS est obligatoire ». Au vu des éléments du dossier du patient, le codage d'un diagnostic correspondant à la définition d'un DAS a été omis par l'établissement."
},
"preuves": {
"date": "26/03/2018",
"praticien_controleur": [
"Dr RADZIKOWSKI",
"Dr DELAYE-PHULPIN",
"Dr TURBAN",
"Dr DUVAL",
"Dr VIGNAU",
"Dr PROMAX"
],
"medecin_dim": "Dr ETTORCHI-TARDY",
"pieces": [
{
"intitule": "Compte-rendu d'acte",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu opératoire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'accouchement",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'examen complémentaire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'imagerie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'anatomopathologie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Observations médicales",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier de transfusion",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier d'anesthésie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Administration thérapeutique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'hospitalisation",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Lettre de sortie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Eléments de surveillance du dossier infirmier",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge psychologue",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge kinésithérapeute",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge diététique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Autre",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
}
]
}
},
"_meta": {
"pipeline_version": "v1",
"ocr_model": "zai-org/GLM-OCR",
"generated_at": "2026-04-24T12:10:02+00:00"
}
}

286
output/v2_clean/OGC 18.json Normal file
View File

@@ -0,0 +1,286 @@
{
"fichier": "OGC 18",
"pdf_hash": "0e7a44525007199c",
"schema_version": "2.0",
"extraction": {
"recueil": {
"etablissement": "CLINIQUE D'ARCACHON",
"finess": "330780206",
"date_debut_controle": "13/02/2018",
"n_ogc": "18",
"n_champ": "1",
"dates_sejour": "08/03/2016 au 21/03/2016",
"sejour_etab": {
"age": "66",
"sexe": "1",
"duree_sejour": "13 8",
"mode_entree": "",
"provenance": "",
"mode_sortie": "8",
"destination": ""
},
"sejour_reco": {
"age": "66",
"sexe": "1",
"duree_sejour": "13 8",
"mode_entree": "",
"provenance": "",
"mode_sortie": "8",
"destination": ""
},
"rum_etab": {
"um": "UM",
"igs": "IGS II",
"duree": "13",
"dates": "du 08/03/2016 au 21/03/2016"
},
"codage_etab": {
"dp": "E43",
"dp_libelle": "MALNUTRITION PROTEINO-ENERGETIQUE GRAVE, SAI",
"dr": "J860 4 PYOTHORAX AVEC FISTULE",
"das": [
{
"code": "T858",
"position": "2",
"libelle": "COMPLIC. DE PROTH., IMPL., GREF. INT., NCA"
},
{
"code": "Z511",
"position": "3",
"libelle": "SEANCE DE CHIMIOTHERAPIE POUR TUM."
}
]
},
"codage_reco": {
"dp": "",
"dr": "",
"das": []
},
"actes_etab": [],
"actes_reco": [],
"ghm_etab": "10M184",
"ghs_etab": "3970",
"ghm_reco": "10M183",
"ghs_reco": "3969",
"recodage_impactant": "1",
"ghs_injustifie": "0",
"accord_desaccord": "désaccord",
"praticien_conseil": "DR VIGNAU",
"_validation": {
"summary": {
"valid": 7,
"invalid": 1,
"empty": 2,
"total_codes": 8,
"ghm_ghs_incoherents": 0
},
"codage_etab": {
"dp": {
"valid": true,
"libelle_ref": "Malnutrition protéinoénergétique grave, sans précision"
},
"dr": {
"valid": false
},
"das": [
{
"valid": true,
"libelle_ref": "Autres complications de prothèses, implants et greffes internes, non classées ailleurs"
},
{
"valid": true,
"libelle_ref": "Séance de chimiothérapie pour tumeur"
}
]
},
"codage_reco": {
"dp": {
"valid": null
},
"dr": {
"valid": null
},
"das": []
},
"ghm_etab": {
"valid": true
},
"ghs_etab": {
"valid": true
},
"ghm_reco": {
"valid": true
},
"ghs_reco": {
"valid": true
},
"cross_checks": {
"etab_ghm_ghs_coherent": true,
"reco_ghm_ghs_coherent": true
}
}
},
"concertation_2": {
"ghs_initial": "3970",
"ghs_avant_concertation": "3969",
"ghs_final": "3969",
"decision": "",
"date_concertation": "2.3.18",
"praticien_controleur": "DR VIGNAU",
"medecin_dim": "DR ETTORCHI-TARDY",
"_validation": {
"ghs_initial": {
"code": "3970",
"valid": true
},
"ghs_avant_concertation": {
"code": "3969",
"valid": true
},
"ghs_final": {
"code": "3969",
"valid": true
}
}
},
"concertation_1": {
"date_concertation": "2.3.18",
"argumentaire": "105 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur un diagnostic associé significatif (DAS) codé par l'établissement dans le résumé d'unité médicale (RUM). Ce DAS n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre IV, paragraphe 2.1 : « Lorsqu'un patient atteint d'une maladie chronique ou de longue durée en cours de traitement est hospitalisé pour un autre motif, la maladie chronique ou de longue durée est naturellement un DAS, à moins qu'elle n'ait pas bénéficié d'une surveillance et que son traitement ait été interrompu pendant le séjour. (...) Les informations attestant de la majoration de l'effort de soins devant figurer dans le dossier médical. » Au vu des éléments du dossier du patient, la maladie chronique ou de longue durée codée en DAS par l'établissement n'a bénéficié d'aucune prise en charge diagnostique ou thérapeutique, ni majoré l'effort de prise en charge d'une autre affection."
},
"preuves": {
"date": "2018-03-13",
"praticien_controleur": [
"Dr RADZIKOWSKI",
"Dr DELAYE-PHULPIN",
"Dr TURBAN"
],
"medecin_dim": "Dr ETTORCHI-TARDY",
"pieces": [
{
"intitule": "Compte-rendu d'acte",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu opératoire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'accouchement",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'examen complémentaire",
"present": true,
"photocopie": true,
"absent_date": "1ère demande",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'imagerie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'anatomopathologie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Observations médicales",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier de transfusion",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier d'anesthésie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Administration thérapeutique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'hospitalisation",
"present": true,
"photocopie": true,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Lettre de sortie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Eléments de surveillance du dossier infirmier",
"present": true,
"photocopie": true,
"absent_date": "1 à 4",
"date_obtention": ""
},
{
"intitule": "Prise en charge psychologique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge kinésithérapeute",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge diététique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Autre",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
}
]
}
},
"_meta": {
"pipeline_version": "v1",
"ocr_model": "zai-org/GLM-OCR",
"generated_at": "2026-04-24T12:10:41+00:00"
}
}

188
output/v2_clean/OGC 20.json Normal file
View File

@@ -0,0 +1,188 @@
{
"fichier": "OGC 20",
"pdf_hash": "eb280d07819ff75d",
"schema_version": "2.0",
"extraction": {
"recueil": {
"etablissement": "CLINIQUE D'ARCACHON",
"finess": "330780206",
"date_debut_controle": "13/02/2018",
"n_ogc": "20",
"n_champ": "1",
"dates_sejour": "09/03/2016 au 18/03/2016",
"sejour_etab": {
"age": "57",
"sexe": "1",
"duree_sejour": "9",
"mode_entree": "8",
"provenance": "8",
"mode_sortie": "8",
"destination": ""
},
"sejour_reco": {
"age": "57",
"sexe": "1",
"duree_sejour": "9",
"mode_entree": "8",
"provenance": "8",
"mode_sortie": "8",
"destination": ""
},
"rum_etab": {
"um": "0",
"igs": "53 C",
"duree": "9",
"dates": "du 09/03/2016 au 18/03/2016"
},
"codage_etab": {
"dp": "D374",
"dr": "I022",
"das": [
{
"code": "T814",
"position": "3",
"libelle": "INFECT. APRES UN ACTE, NCA"
}
]
},
"codage_reco": {
"dp": "D374",
"dr": "I022",
"das": [
{
"code": "T814",
"position": "3",
"libelle": "INFECT. APRES UN ACTE, NCA"
}
]
},
"actes_etab": [],
"actes_reco": [],
"ghm_etab": "06C043",
"ghs_etab": "1941",
"ghm_reco": "06C042",
"ghs_reco": "1940",
"recodage_impactant": "1",
"ghs_injustifie": "0",
"accord_desaccord": "désaccord",
"praticien_conseil": "DR VIGNAÚ",
"_validation": {
"summary": {
"valid": 8,
"invalid": 2,
"empty": 0,
"total_codes": 10,
"ghm_ghs_incoherents": 0
},
"codage_etab": {
"dp": {
"valid": true,
"libelle_ref": "Côlon"
},
"dr": {
"valid": false,
"suggestion": "A022"
},
"das": [
{
"valid": true,
"libelle_ref": "Infection après un acte à visée diagnostique et thérapeutique, non classée ailleurs"
}
]
},
"codage_reco": {
"dp": {
"valid": true,
"libelle_ref": "Côlon"
},
"dr": {
"valid": false,
"suggestion": "A022"
},
"das": [
{
"valid": true,
"libelle_ref": "Infection après un acte à visée diagnostique et thérapeutique, non classée ailleurs"
}
]
},
"ghm_etab": {
"valid": true
},
"ghs_etab": {
"valid": true
},
"ghm_reco": {
"valid": true
},
"ghs_reco": {
"valid": true
},
"cross_checks": {
"etab_ghm_ghs_coherent": true,
"reco_ghm_ghs_coherent": true
}
}
},
"concertation_2": {
"ghs_initial": "",
"ghs_avant_concertation": "",
"ghs_final": "",
"decision": "",
"date_concertation": "2.3.18",
"praticien_controleur": "",
"medecin_dim": "",
"_validation": {
"ghs_initial": {
"code": "",
"valid": null
},
"ghs_avant_concertation": {
"code": "",
"valid": null
},
"ghs_final": {
"code": "",
"valid": null
}
}
},
"concertation_1": {
"date_concertation": "2.3.18",
"argumentaire": "Désaccord : (les éléments couverts par le secret médical sont à mentionner sur la fiche médicale de concertation)"
},
"preuves": {
"date": "",
"praticien_controleur": "",
"medecin_dim": "",
"pieces": [
{
"intitule": "Patient de 57 ans, puis en charge pour une colo-rectalgie et l'anapath. Confirme le Kc du colon.",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "En post-op, présence d'un escoulement au niveau du bas de la muqueuse ; retrait d'un aquafili et luchage.",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Il n'a pas d'abcès : une déficatga. Des JAS en T81.8. Pas de moton. Disphagie restaurée, pas de prétendu ad. de l'escoulement.",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
}
]
}
},
"_meta": {
"pipeline_version": "v1",
"ocr_model": "zai-org/GLM-OCR",
"generated_at": "2026-04-24T12:11:05+00:00"
}
}

273
output/v2_clean/OGC 27.json Normal file
View File

@@ -0,0 +1,273 @@
{
"fichier": "OGC 27",
"pdf_hash": "2b6010d745556c81",
"schema_version": "2.0",
"extraction": {
"recueil": {
"etablissement": "CLINIQUE D'ARCACHON",
"finess": "330780206",
"date_debut_controle": "13/02/2018",
"n_ogc": "27",
"n_champ": "1",
"dates_sejour": "13/03/2016 - 16/03/2016",
"sejour_etab": {
"age": "55",
"sexe": "M",
"duree_sejour": "8"
},
"sejour_reco": {
"age": "55",
"sexe": "M",
"duree_sejour": "8"
},
"rum_etab": {
"um": "53 C",
"igs": "0",
"duree": "3",
"dates": "du 13/03/2016 au 16/03/2016"
},
"codage_etab": {
"dp": "I652",
"dp_libelle": "STENOSE DE L'ART. CAROTIDE",
"dr": "F412 2 TBL. ANXIUE ET DEPRES. MIXTE R471 2 DYSARTHRIE ET ANARTHRIE"
},
"codage_reco": {
"dp": "",
"dr": "",
"das": []
},
"actes_etab": [
{
"code": "EBFA012",
"position": "1",
"libelle": "THROMBOENDARTERIECTOMIE SIMPLE BIFURC. CAROTID. CERV.TOMIE"
},
{
"code": "EBFA012",
"position": "4",
"libelle": "THROMBOENDARTERIECTOMIE SIMPLE BIFURC. CAROTID. CERV.TOMIE"
}
],
"actes_reco": [],
"ghm_etab": "01C062",
"ghs_etab": "35",
"ghm_reco": "01C061",
"ghs_reco": "34",
"recodage_impactant": "1",
"ghs_injustifie": "0",
"accord_desaccord": "désaccord",
"praticien_conseil": "",
"_validation": {
"summary": {
"valid": 7,
"invalid": 1,
"empty": 2,
"total_codes": 8,
"ghm_ghs_incoherents": 0
},
"codage_etab": {
"dp": {
"valid": true,
"libelle_ref": "Occlusion et sténose de l'artère carotide"
},
"dr": {
"valid": false
},
"das": []
},
"codage_reco": {
"dp": {
"valid": null
},
"dr": {
"valid": null
},
"das": []
},
"ghm_etab": {
"valid": true
},
"ghs_etab": {
"valid": true
},
"ghm_reco": {
"valid": true
},
"ghs_reco": {
"valid": true
},
"cross_checks": {
"etab_ghm_ghs_coherent": true,
"reco_ghm_ghs_coherent": true
}
}
},
"concertation_2": {
"ghs_initial": "35",
"ghs_avant_concertation": "34",
"ghs_final": "33",
"decision": "",
"date_concertation": "1.3.18",
"praticien_controleur": "DR VIGNAU",
"medecin_dim": "DR ETTORCHI-TARDY",
"_validation": {
"ghs_initial": {
"code": "35",
"valid": true
},
"ghs_avant_concertation": {
"code": "34",
"valid": true
},
"ghs_final": {
"code": "33",
"valid": true
}
}
},
"concertation_1": {
"date_concertation": "13.2018",
"argumentaire": "100 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur un diagnostic associé significatif (DAS) codé par l'établissement dans le résumé d'unité médicale (RUM). Ce DAS n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : « Les diagnostics doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du Manuel des groupes homogènes de maladies. (...) Le meilleur code est le plus précis par rapport à l'information à coder. » Au vu des éléments présents dans le dossier du patient, le code CIM10 choisi pour le DAS par l'établissement n'est pas le plus précis par rapport à l'information à coder."
},
"preuves": {
"date": "28/07/18",
"praticien_controleur": [
"Dr RADZIKOWSKI",
"Dr DELAYE-PHULPIN",
"Dr TURBAN",
"Dr DUVAL",
"Dr VIGNAU",
"Dr PROMAX"
],
"medecin_dim": [
"Dr ETTORCHI-TARDY"
],
"pieces": [
{
"intitule": "Compte-rendu d'acte",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu opératoire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'accouchement",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'examen complémentaire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'inagerie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'anatomopathologie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Observations médicales",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier de transfusion",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier d'anesthésie",
"present": true,
"photocopie": false,
"absent_date": "3-5-5",
"date_obtention": ""
},
{
"intitule": "Administration thérapeutique",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'hospitalisation",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Lettre de sortie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Eléments de surveillance du dossier infirmier",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge psychologue",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge kinésithérapeute",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge diététique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Autre",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
}
]
}
},
"_meta": {
"pipeline_version": "v1",
"ocr_model": "zai-org/GLM-OCR",
"generated_at": "2026-04-24T12:11:43+00:00"
}
}

143
output/v2_clean/OGC 29.json Normal file
View File

@@ -0,0 +1,143 @@
{
"fichier": "OGC 29",
"pdf_hash": "0347fc1e23968220",
"schema_version": "2.0",
"extraction": {
"recueil": {
"etablissement": "CLINIQUE D'ARCACHON",
"finess": "330780206",
"date_debut_controle": "13/02/2018",
"n_ogc": "29",
"n_champ": "1",
"dates_sejour": "14/03/2016 au 17/03/2016",
"sejour_etab": {
"age": "82",
"sexe": "1",
"duree_sejour": "3"
},
"sejour_reco": {
"age": "82",
"sexe": "1",
"duree_sejour": "3"
},
"rum_etab": {
"um": "UM",
"igs": "IGS II",
"duree": "3",
"dates": "du 14/03/2016 au 17/03/2016"
},
"codage_etab": {
"dp": "K635+0",
"dp_libelle": "POLYPOSE HYPERPLASIQUE",
"dr": "D509"
},
"codage_reco": {
"dp": "",
"dr": "E46",
"das": []
},
"actes_etab": [],
"actes_reco": [],
"ghm_etab": "06M092",
"ghs_etab": "2159",
"ghm_reco": "16M112",
"ghs_reco": "6183",
"recodage_impactant": "1",
"ghs_injustifie": "0",
"accord_desaccord": "accord",
"praticien_conseil": "DR VIGNAU",
"_validation": {
"summary": {
"valid": 7,
"invalid": 0,
"empty": 1,
"total_codes": 7,
"ghm_ghs_incoherents": 0
},
"codage_etab": {
"dp": {
"valid": true,
"libelle_ref": "Polype du côlon"
},
"dr": {
"valid": true,
"libelle_ref": "Anémie par carence en fer, sans précision"
},
"das": []
},
"codage_reco": {
"dp": {
"valid": null
},
"dr": {
"valid": true,
"libelle_ref": "Malnutrition protéinoénergétique, sans précision"
},
"das": []
},
"ghm_etab": {
"valid": true
},
"ghs_etab": {
"valid": true
},
"ghm_reco": {
"valid": true
},
"ghs_reco": {
"valid": true
},
"cross_checks": {
"etab_ghm_ghs_coherent": true,
"reco_ghm_ghs_coherent": true
}
}
},
"concertation_2": {
"ghs_initial": "2159",
"ghs_avant_concertation": "6183",
"ghs_final": "6183",
"decision": "",
"date_concertation": "1.3.18",
"praticien_controleur": "DR VIGNAU",
"medecin_dim": "DR ETTORCHI-TARDY",
"_validation": {
"ghs_initial": {
"code": "2159",
"valid": true
},
"ghs_avant_concertation": {
"code": "6183",
"valid": true
},
"ghs_final": {
"code": "6183",
"valid": true
}
}
},
"concertation_1": {
"date_concertation": "1.3.18",
"argumentaire": "109 : La facturation du GHs par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : « les diagnostics doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du Manuel des groupes homogènes de malades. (...) Le meilleur code est le plus précis par rapport à l'information à coder. » Au vu des éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par l'établissement n'est pas le plus précis par rapport à l'information à coder."
},
"preuves": {
"date": "",
"praticien_controleur": true,
"medecin_dim": true,
"pieces": [
{
"intitule": "Séjour d'hospitalisation complète",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
}
]
}
},
"_meta": {
"pipeline_version": "v1",
"ocr_model": "zai-org/GLM-OCR",
"generated_at": "2026-04-24T12:12:07+00:00"
}
}

174
output/v2_clean/OGC 43.json Normal file
View File

@@ -0,0 +1,174 @@
{
"fichier": "OGC 43",
"pdf_hash": "9f58db479a06194b",
"schema_version": "2.0",
"extraction": {
"recueil": {
"etablissement": "CLINIQUE D'ARCACHON",
"finess": "330780206",
"date_debut_controle": "13/02/2018",
"n_ogc": "43",
"n_champ": "1",
"dates_sejour": "16/03/2016 au 22/03/2016",
"sejour_etab": {
"age": "50",
"sexe": "2",
"duree_sejour": "6",
"mode_entree": "7",
"provenance": "8",
"mode_sortie": "1",
"destination": "8"
},
"sejour_reco": {
"age": "50",
"sexe": "2",
"duree_sejour": "6",
"mode_entree": "7",
"provenance": "8",
"mode_sortie": "1",
"destination": "8"
},
"rum_etab": {
"um": "UM",
"igs": "IGS II",
"duree": "6",
"dates": "du 16/03/2016 au 22/03/2016"
},
"codage_etab": {
"dp": "G409",
"dp_libelle": "EPILEP., SAI",
"dr": "K566",
"das": []
},
"codage_reco": {
"dp": "Z022",
"dr": "G409",
"das": []
},
"actes_etab": [],
"actes_reco": [],
"ghm_etab": "01M253",
"ghs_etab": "292",
"ghm_reco": "01M32Z",
"ghs_reco": "324",
"recodage_impactant": "1",
"ghs_injustifie": "0",
"accord_desaccord": "désaccord",
"praticien_conseil": "DR VIGNAU",
"_validation": {
"summary": {
"valid": 8,
"invalid": 0,
"empty": 0,
"total_codes": 8,
"ghm_ghs_incoherents": 0
},
"codage_etab": {
"dp": {
"valid": true,
"libelle_ref": "Épilepsie, sans précision"
},
"dr": {
"valid": true,
"libelle_ref": "Occlusions intestinales, autres et sans précision"
},
"das": []
},
"codage_reco": {
"dp": {
"valid": true,
"libelle_ref": "Examen pour l'admission dans une institution"
},
"dr": {
"valid": true,
"libelle_ref": "Épilepsie, sans précision"
},
"das": []
},
"ghm_etab": {
"valid": true
},
"ghs_etab": {
"valid": true
},
"ghm_reco": {
"valid": true
},
"ghs_reco": {
"valid": true
},
"cross_checks": {
"etab_ghm_ghs_coherent": true,
"reco_ghm_ghs_coherent": true
}
}
},
"concertation_2": {
"ghs_initial": "292",
"ghs_avant_concertation": "324",
"ghs_final": "324",
"decision": "",
"date_concertation": "1.3.2018",
"praticien_controleur": "DR VIGNAU",
"medecin_dim": "DR ETTORCHI-TARDY",
"_validation": {
"ghs_initial": {
"code": "292",
"valid": true
},
"ghs_avant_concertation": {
"code": "324",
"valid": true
},
"ghs_final": {
"code": "324",
"valid": true
}
}
},
"concertation_1": {
"date_concertation": "1.3.2018",
"argumentaire": "109 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : « les diagnostics doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du Manuel des groupes homogènes de malades. (...) Le meilleur code est le plus précis par rapport à l'information à coder. » Au vu des éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par l'établissement n'est pas le plus précis par rapport à l'information à coder."
},
"preuves": {
"date": "",
"praticien_controleur": "",
"medecin_dim": "",
"pieces": [
{
"intitule": "Patide de 50 ans",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Admision par : - prise en charge de crises d'épilepsie - excision p canne, dit l'épileptol.",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Syndrome acclif so costalpin quonchée - ch 1 petite ay5 en cancer du sein, dit jo chimiotherapie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Bime effectuer",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
}
]
}
},
"_meta": {
"pipeline_version": "v1",
"ocr_model": "zai-org/GLM-OCR",
"generated_at": "2026-04-24T12:12:34+00:00"
}
}

298
output/v2_clean/OGC 55.json Normal file
View File

@@ -0,0 +1,298 @@
{
"fichier": "OGC 55",
"pdf_hash": "948142f13e05f3bb",
"schema_version": "2.0",
"extraction": {
"recueil": {
"etablissement": "CLINIQUE D'ARCACHON",
"finess": "330780206",
"date_debut_controle": "13/02/2018",
"n_ogc": "55",
"n_champ": "1",
"dates_sejour": "27/03/2016 au 01/04/2016",
"sejour_etab": {
"age": "78",
"sexe": "1",
"duree_sejour": "",
"mode_entree": "0",
"provenance": "1",
"mode_sortie": "8",
"destination": ""
},
"sejour_reco": {
"age": "78",
"sexe": "1",
"duree_sejour": "",
"mode_entree": "0",
"provenance": "1",
"mode_sortie": "8",
"destination": ""
},
"rum_etab": {
"um": "UM",
"igs": "IGS II",
"duree": "5",
"dates": "du 27/03/2016 au 01/04/2016"
},
"codage_etab": {
"dp": "K123",
"dp_libelle": "MUCITE BUCCALE",
"dr": "",
"das": [
{
"code": "C795",
"position": "2",
"libelle": "T.M. IRE, DES OS ET DE LA MOELLE OSSEUSE"
},
{
"code": "D611",
"position": "4",
"libelle": "APIASIE MEDULLAIRE MEDICAM."
},
{
"code": "R630",
"position": "2",
"libelle": "ANOREXIE"
}
]
},
"codage_reco": {
"dp": "",
"dr": "",
"das": []
},
"actes_etab": [],
"actes_reco": [],
"ghm_etab": "03M114",
"ghs_etab": "863",
"ghm_reco": "03M112",
"ghs_reco": "861",
"recodage_impactant": "1",
"ghs_injustifie": "0",
"accord_desaccord": "accord",
"praticien_conseil": "DR VIGNAU",
"_validation": {
"summary": {
"valid": 8,
"invalid": 0,
"empty": 3,
"total_codes": 8,
"ghm_ghs_incoherents": 0
},
"codage_etab": {
"dp": {
"valid": true,
"libelle_ref": "Mucite buccale (ulcéreuse)"
},
"dr": {
"valid": null
},
"das": [
{
"valid": true,
"libelle_ref": "Tumeur maligne secondaire des os et de la moelle osseuse"
},
{
"valid": true,
"libelle_ref": "Anémie médullaire [aplastique] médicamenteuse"
},
{
"valid": true,
"libelle_ref": "Anorexie"
}
]
},
"codage_reco": {
"dp": {
"valid": null
},
"dr": {
"valid": null
},
"das": []
},
"ghm_etab": {
"valid": true
},
"ghs_etab": {
"valid": true
},
"ghm_reco": {
"valid": true
},
"ghs_reco": {
"valid": true
},
"cross_checks": {
"etab_ghm_ghs_coherent": true,
"reco_ghm_ghs_coherent": true
}
}
},
"concertation_2": {
"ghs_initial": "863",
"ghs_avant_concertation": "861",
"ghs_final": "861",
"decision": "",
"date_concertation": "9.2.1",
"praticien_controleur": "DR VIGNAU",
"medecin_dim": "DR ETTORCHI-TARDY",
"_validation": {
"ghs_initial": {
"code": "863",
"valid": true
},
"ghs_avant_concertation": {
"code": "861",
"valid": true
},
"ghs_final": {
"code": "861",
"valid": true
}
}
},
"concertation_1": {
"date_concertation": "9.3.18",
"argumentaire": "100 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur un diagnostic associé significatif (DAS) codé par l'établissement dans le résumé d'unité médicale (RUM). Ce DAS n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : « Les diagnostics doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du Manuel des groupes homogènes de malades. (...) ». Le meilleur code est le plus précis par rapport à l'information à coder. » Au vu des éléments présents dans le dossier du patient, le code CIM10 choisi pour le DAS par l'établissement n'est pas le plus précis par rapport à l'information à coder."
},
"preuves": {
"date": "26/02/18",
"praticien_controleur": [
"Dr RADZIKOWSKI",
"Dr DELAYE-PHULPIN",
"Dr TURBAN",
"Dr DUVAL",
"Dr VIGNAU",
"Dr PROMAX"
],
"medecin_dim": "Dr ETTORCHI-TARDY",
"pieces": [
{
"intitule": "Compte-rendu d'acte",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu opératoire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'accouchement",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'examen complémentaire : Biologie",
"present": true,
"photocopie": false,
"absent_date": "2 à 18",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'imagerie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'anatomopathologie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Observations médicales",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier de transfusion",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier d'anesthésie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Administration thérapeutique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'hospitalisation",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Lettre de sortie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Eléments de surveillance du dossier infirmier",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge psychologue",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge kinésithérapeute",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge diététique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Autre",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
}
]
}
},
"_meta": {
"pipeline_version": "v1",
"ocr_model": "zai-org/GLM-OCR",
"generated_at": "2026-04-24T12:13:12+00:00"
}
}

333
output/v2_clean/OGC 66.json Normal file
View File

@@ -0,0 +1,333 @@
{
"fichier": "OGC 66",
"pdf_hash": "7176836d9d496cd7",
"schema_version": "2.0",
"extraction": {
"recueil": {
"etablissement": "CLINIQUE D'ARCACHON",
"finess": "330780206",
"date_debut_controle": "13/02/2018",
"n_ogc": "66",
"n_champ": "1",
"dates_sejour": "04/04/2016 au 20/04/2016",
"sejour_etab": {
"age": "80 ans",
"sexe": "1",
"duree_sejour": "16 jours",
"mode_entree": "8",
"provenance": "8",
"mode_sortie": "8",
"destination": "0"
},
"sejour_reco": {
"age": "80 ans",
"sexe": "1",
"duree_sejour": "16 jours",
"mode_entree": "8",
"provenance": "8",
"mode_sortie": "8",
"destination": "0"
},
"rum_etab": {
"um": "UM",
"igs": "IGS II",
"duree": "16 jours",
"dates": "du 04/04/2016 au 20/04/2016"
},
"codage_etab": {
"dp": "C07",
"dp_libelle": "T.M. DE LA GLD, PAROTIDE",
"dr": "C795 *",
"das": [
{
"code": "E440",
"position": "2",
"libelle": "MALNUTRITION PROTEINO-ENERGETIQUE MODEREE"
},
{
"code": "J91",
"position": "2",
"libelle": "EPANCHEMENT PLEURAL AVEC MAL. CL. AILL."
},
{
"code": "Z511",
"position": "3",
"libelle": "SEANCE DE CHIMIOTHERAPIE POUR TUM."
}
]
},
"codage_reco": {
"dp": "C07",
"dr": "C795 *",
"das": [
{
"code": "E440",
"position": "2",
"libelle": "MALNUTRITION PROTEINO-ENERGETIQUE MODEREE"
},
{
"code": "J91",
"position": "2",
"libelle": "EPANCHEMENT PLEURAL AVEC MAL. CL. AILL."
},
{
"code": "Z511",
"position": "3",
"libelle": "SEANCE DE CHIMIOTHERAPIE POUR TUM."
}
]
},
"actes_etab": [
{
"code": "EBLA003",
"position": "1",
"libelle": "POSE CATHE RELIE - 1VN PROF. MB SUP/COU TRANSCUT+DIFFUSEUR SSCUT."
}
],
"actes_reco": [],
"ghm_etab": "03M073",
"ghs_etab": "844",
"ghm_reco": "04M093",
"ghs_reco": "1163",
"recodage_impactant": "1",
"ghs_injustifie": "0",
"accord_desaccord": "désaccord",
"praticien_conseil": "DR VIGNAU",
"_validation": {
"summary": {
"valid": 15,
"invalid": 0,
"empty": 0,
"total_codes": 15,
"ghm_ghs_incoherents": 0
},
"codage_etab": {
"dp": {
"valid": true,
"libelle_ref": "Tumeur maligne de la glande parotide"
},
"dr": {
"valid": true,
"libelle_ref": "Tumeur maligne secondaire des os et de la moelle osseuse"
},
"das": [
{
"valid": true,
"libelle_ref": "Malnutrition protéinoénergétique modérée"
},
{
"valid": true,
"libelle_ref": "Épanchement pleural au cours de maladies classées ailleurs"
},
{
"valid": true,
"libelle_ref": "Séance de chimiothérapie pour tumeur"
}
]
},
"codage_reco": {
"dp": {
"valid": true,
"libelle_ref": "Tumeur maligne de la glande parotide"
},
"dr": {
"valid": true,
"libelle_ref": "Tumeur maligne secondaire des os et de la moelle osseuse"
},
"das": [
{
"valid": true,
"libelle_ref": "Malnutrition protéinoénergétique modérée"
},
{
"valid": true,
"libelle_ref": "Épanchement pleural au cours de maladies classées ailleurs"
},
{
"valid": true,
"libelle_ref": "Séance de chimiothérapie pour tumeur"
}
]
},
"ghm_etab": {
"valid": true
},
"ghs_etab": {
"valid": true
},
"ghm_reco": {
"valid": true
},
"ghs_reco": {
"valid": true
},
"cross_checks": {
"etab_ghm_ghs_coherent": true,
"reco_ghm_ghs_coherent": true
}
}
},
"concertation_2": {
"ghs_initial": "844",
"ghs_avant_concertation": "1163",
"ghs_final": "163",
"decision": "",
"date_concertation": "2.3.18",
"praticien_controleur": "DR VIGNAU",
"medecin_dim": "DR ETTORCHI-TARDY",
"_validation": {
"ghs_initial": {
"code": "844",
"valid": true
},
"ghs_avant_concertation": {
"code": "1163",
"valid": true
},
"ghs_final": {
"code": "163",
"valid": false
}
}
},
"concertation_1": {
"date_concertation": "2.3.19",
"argumentaire": "La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : « les diagnostics doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du Manuel des groupes homogènes de malades. (...) Le meilleur code est le plus précis par rapport à l'information à coder. » Au vu des éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par l'établissement n'est pas le plus précis par rapport à l'information à coder."
},
"preuves": {
"date": "28/07/2019",
"praticien_controleur": [
"Dr RADZIKOWSKI",
"Dr DELAYE-PHULPIN",
"Dr ETTORCHI-TARDY"
],
"medecin_dim": "",
"pieces": [
{
"intitule": "Compte-rendu d'acte",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu opératoire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'accouchement",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'examen complémentaire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'imagerie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'anatomopathologie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Observations médicales",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier de transfusion",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier d'anesthésie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Administration thérapeutique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'hospitalisation",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Lettre de sortie",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Eléments de surveillance du dossier infirmier",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge psychologue",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge kinésithérapeute",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge diététique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Autre : lettre M",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
}
]
}
},
"_meta": {
"pipeline_version": "v1",
"ocr_model": "zai-org/GLM-OCR",
"generated_at": "2026-04-24T12:13:54+00:00"
}
}

298
output/v2_clean/OGC 68.json Normal file
View File

@@ -0,0 +1,298 @@
{
"fichier": "OGC 68",
"pdf_hash": "53423419517fca40",
"schema_version": "2.0",
"extraction": {
"recueil": {
"etablissement": "CLINIQUE D'ARCACHON",
"finess": "330780206",
"date_debut_controle": "13/02/2018",
"n_ogc": "68",
"n_champ": "1",
"dates_sejour": "07/04/2016 au 11/04/2016",
"sejour_etab": {
"age": "63",
"sexe": "1",
"duree_sejour": "4",
"mode_entree": "7",
"provenance": "1",
"mode_sortie": "7",
"destination": "1"
},
"sejour_reco": {
"age": "63",
"sexe": "1",
"duree_sejour": "4",
"mode_entree": "7",
"provenance": "1",
"mode_sortie": "7",
"destination": "1"
},
"rum_etab": {
"um": "40 C",
"igs": "0",
"duree": "4",
"dates": "du 07/04/2016 au 11/04/2016"
},
"codage_etab": {
"dp": "R650",
"dp_libelle": "SYND. REPONSE INFLAM. SYST. ORIGINE INFECT. SANS DEFAILLANCE ORG",
"dr": "",
"das": [
{
"code": "D508",
"position": "2",
"libelle": "ANEMIES PAR CARENCHE EN FER, NCA"
},
{
"code": "E8758",
"position": "2",
"libelle": "HYPERKALIEMIES, NCA AT SAI"
},
{
"code": "K868",
"position": "2",
"libelle": "MAL. PREC. DU PANCREAS, NCA"
}
]
},
"codage_reco": {
"dp": "",
"dr": "",
"das": []
},
"actes_etab": [],
"actes_reco": [],
"ghm_etab": "18M042",
"ghs_etab": "6773",
"ghm_reco": "07M112",
"ghs_reco": "2550",
"recodage_impactant": "1",
"ghs_injustifie": "0",
"accord_desaccord": "accord",
"praticien_conseil": "DR VIGNAU",
"_validation": {
"summary": {
"valid": 8,
"invalid": 0,
"empty": 3,
"total_codes": 8,
"ghm_ghs_incoherents": 0
},
"codage_etab": {
"dp": {
"valid": true,
"libelle_ref": "Syndrome de réponse inflammatoire systémique d'origine infectieuse sans défaillance d'organe"
},
"dr": {
"valid": null
},
"das": [
{
"valid": true,
"libelle_ref": "Autres anémies par carence en fer"
},
{
"valid": true,
"libelle_ref": "Hyperkaliémies, autres et sans précision"
},
{
"valid": true,
"libelle_ref": "Autres maladies précisées du pancréas"
}
]
},
"codage_reco": {
"dp": {
"valid": null
},
"dr": {
"valid": null
},
"das": []
},
"ghm_etab": {
"valid": true
},
"ghs_etab": {
"valid": true
},
"ghm_reco": {
"valid": true
},
"ghs_reco": {
"valid": true
},
"cross_checks": {
"etab_ghm_ghs_coherent": true,
"reco_ghm_ghs_coherent": true
}
}
},
"concertation_2": {
"ghs_initial": "6773",
"ghs_avant_concertation": "6973-3",
"ghs_final": "2550",
"decision": "maintien_avis_controleur",
"date_concertation": "16.3.18",
"praticien_controleur": "DR VIGNAU",
"medecin_dim": "DR ETTORCHI-TARDY",
"_validation": {
"ghs_initial": {
"code": "6773",
"valid": true
},
"ghs_avant_concertation": {
"code": "6973-3",
"valid": false
},
"ghs_final": {
"code": "2550",
"valid": true
}
}
},
"concertation_1": {
"date_concertation": "16.3.18",
"argumentaire": "109 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : « les diagnostics doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du Manuel des groupes homogènes de malades. (...) Le meilleur code est le plus précis par rapport à l'information à coder. » Au vu des éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par l'établissement n'est pas le plus précis par rapport à l'information à coder."
},
"preuves": {
"date": "28/06/18",
"praticien_controleur": [
"Dr RADZIKOWSKI",
"Dr DELAYE-PHULPIN",
"Dr TURBAN",
"Dr DUVAL",
"Dr VIGNAU",
"Dr PROMAX"
],
"medecin_dim": "Dr ETTORCHI-TARDY",
"pieces": [
{
"intitule": "Compte-rendu d'acte",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu opératoire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'accouchement",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'examen complémentaire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'imagerie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'anatomopathologie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Observations médicales",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier de transfusion",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier d'anesthésie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Administration thérapeutique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'hospitalisation",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Lettre de sortie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Eléments de surveillance du dossier infirmier",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge psychologique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge kinésithérapeute",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge diététique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Autre",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
}
]
}
},
"_meta": {
"pipeline_version": "v1",
"ocr_model": "zai-org/GLM-OCR",
"generated_at": "2026-04-24T12:14:34+00:00"
}
}

270
output/v2_clean/OGC 69.json Normal file
View File

@@ -0,0 +1,270 @@
{
"fichier": "OGC 69",
"pdf_hash": "75cf0c18f2090864",
"schema_version": "2.0",
"extraction": {
"recueil": {
"etablissement": "CLINIQUE D'ARCACHON",
"finess": "330780206",
"date_debut_controle": "13/02/2018",
"n_ogc": "69",
"n_champ": "1",
"dates_sejour": "10/04/2016 au 13/04/2016",
"sejour_etab": {
"age": "87",
"sexe": "2",
"duree_sejour": "3",
"mode_entree": "8",
"provenance": "",
"mode_sortie": "8",
"destination": ""
},
"sejour_reco": {
"age": "87",
"sexe": "2",
"duree_sejour": "3",
"mode_entree": "8",
"provenance": "",
"mode_sortie": "8",
"destination": ""
},
"rum_etab": {
"um": "UM",
"igs": "IGS II",
"duree": "3",
"dates": "du 10/04/2016 au 13/04/2016"
},
"codage_etab": {
"dp": "K623",
"dp_libelle": "PROPLAPUS RECTAL",
"dr": "G20",
"das": []
},
"codage_reco": {
"dp": "",
"dr": "",
"das": []
},
"actes_etab": [],
"actes_reco": [],
"ghm_etab": "1948",
"ghs_etab": "06C072",
"ghm_reco": "1947",
"ghs_reco": "06C071",
"recodage_impactant": "1",
"ghs_injustifie": "",
"accord_desaccord": "accord",
"praticien_conseil": "DR VIGNAU",
"_validation": {
"summary": {
"valid": 2,
"invalid": 4,
"empty": 2,
"total_codes": 6,
"ghm_ghs_incoherents": 0
},
"codage_etab": {
"dp": {
"valid": true,
"libelle_ref": "Prolapsus rectal"
},
"dr": {
"valid": true,
"libelle_ref": "Maladie de Parkinson"
},
"das": []
},
"codage_reco": {
"dp": {
"valid": null
},
"dr": {
"valid": null
},
"das": []
},
"ghm_etab": {
"valid": false
},
"ghs_etab": {
"valid": false
},
"ghm_reco": {
"valid": false
},
"ghs_reco": {
"valid": false
},
"cross_checks": {
"etab_ghm_ghs_coherent": null,
"reco_ghm_ghs_coherent": null
}
}
},
"concertation_2": {
"ghs_initial": "1948",
"ghs_avant_concertation": "1947",
"ghs_final": "1947",
"decision": "",
"date_concertation": "13-02",
"praticien_controleur": "DR VIGNAU",
"medecin_dim": "DR ETTORCHI-TARDY",
"_validation": {
"ghs_initial": {
"code": "1948",
"valid": true
},
"ghs_avant_concertation": {
"code": "1947",
"valid": true
},
"ghs_final": {
"code": "1947",
"valid": true
}
}
},
"concertation_1": {
"date_concertation": "1 - 3 - 18",
"argumentaire": "104 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur un diagnostic associé significatif (DAS) codé par l'établissement dans le résumé d'unité médicale (RUM). Ce DAS n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre IV, paragraphe 2.1 : « Un diagnostic associé est significatif s'il est pris en charge à titre diagnostique ou thérapeutique ou s'il majoré l'effort de prise en charge d'une autre affection. Par prise en charge diagnostique on entend la mise en œuvre de moyens nécessaires au diagnostic d'une affection nouvelle ou au « bilan » d'une affection préexistante. Par prise en charge thérapeutique on entend la réalisation d'un traitement. Par majoration de l'effort de prise en charge d'une autre affection on entend l'augmentation imposée par une affection B de l'effort de soins relatif à une affection A enregistrée comme diagnostic principal (DP), diagnostic relié (DR) ou DAS, par rapport à ce qu'il aurait dû être en l'absence de B. Si l'affection B, quoique non prise en charge à titre diagnostique ou thérapeutique, a néanmoins alourdi la prise en charge de A, alors B est un DAS. (...) Ne doivent pas être retenues comme significatives les affections ne respectant pas la définition, par exemple, les antécédents guéris, les maladies stabilisées ou les facteurs de risque n'ayant bénéficié d'aucune prise en charge ». Au vu des éléments du dossier du patient, le DAS choisi par l'établissement ne peut pas être codé, ce diagnostic associé n'ayant nécessité aucune prise en charge documentée au dossier."
},
"preuves": {
"date": "2017",
"praticien_controleur": [
"Dr RADZIKOWSKI",
"Dr DELAYE-PHULPIN",
"Dr TURBAN",
"Dr DUVAL",
"Dr VIGNAU",
"Dr PROMAX"
],
"medecin_dim": "Dr ETTORCHI-TARDY",
"pieces": [
{
"intitule": "Compte-rendu d'acte",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu opératoire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'accouchement",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'examen complémentaire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'imagerie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'anatomopathologie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Observations médicales",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier de transfusion",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier d'anesthésie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Administration thérapeutique",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'hospitalisation",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Lettre de sortie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Eléments de surveillance du dossier infirmier",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge psychologue",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge kinésithérapeute",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge diététique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Autre",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
}
]
}
},
"_meta": {
"pipeline_version": "v1",
"ocr_model": "zai-org/GLM-OCR",
"generated_at": "2026-04-24T12:15:13+00:00"
}
}

263
output/v2_clean/OGC 7.json Normal file
View File

@@ -0,0 +1,263 @@
{
"fichier": "OGC 7",
"pdf_hash": "e8dc0ec994333b18",
"schema_version": "2.0",
"extraction": {
"recueil": {
"etablissement": "CLINIQUE D'ARCACHON",
"finess": "330780206",
"date_debut_controle": "13/02/2018",
"n_ogc": "7",
"n_champ": "1",
"dates_sejour": "01/03/2016 au 04/03/2016",
"sejour_etab": {
"age": "75",
"sexe": "1",
"duree_sejour": "3"
},
"sejour_reco": {
"age": "75",
"sexe": "1",
"duree_sejour": "3"
},
"rum_etab": {
"um": "40 C",
"igs": "0",
"duree": "3",
"dates": "du 01/03/2016 au 04/03/2016"
},
"codage_etab": {
"dp": "TS10",
"dp_libelle": "HEMORR. ET HEMATOME COMPLIQ. UN ACTE, NCA",
"dr": "R33",
"das": []
},
"codage_reco": {
"dp": "",
"dr": "R33",
"das": []
},
"actes_etab": [],
"actes_reco": [],
"ghm_etab": "21M162",
"ghs_etab": "7610",
"ghm_reco": "11M122",
"ghs_reco": "4323",
"recodage_impactant": "1",
"ghs_injustifie": "0",
"accord_desaccord": "accord",
"praticien_conseil": "",
"_validation": {
"summary": {
"valid": 6,
"invalid": 1,
"empty": 1,
"total_codes": 7,
"ghm_ghs_incoherents": 0
},
"codage_etab": {
"dp": {
"valid": false,
"suggestion": "T010"
},
"dr": {
"valid": true,
"libelle_ref": "Rétention d'urine"
},
"das": []
},
"codage_reco": {
"dp": {
"valid": null
},
"dr": {
"valid": true,
"libelle_ref": "Rétention d'urine"
},
"das": []
},
"ghm_etab": {
"valid": true
},
"ghs_etab": {
"valid": true
},
"ghm_reco": {
"valid": true
},
"ghs_reco": {
"valid": true
},
"cross_checks": {
"etab_ghm_ghs_coherent": true,
"reco_ghm_ghs_coherent": true
}
}
},
"concertation_2": {
"ghs_initial": "7610",
"ghs_avant_concertation": "4323",
"ghs_final": "4323",
"decision": "",
"date_concertation": "1.3.18",
"praticien_controleur": "DR VIGNAU",
"medecin_dim": "DR ETTORCHI-TARDY",
"_validation": {
"ghs_initial": {
"code": "7610",
"valid": true
},
"ghs_avant_concertation": {
"code": "4323",
"valid": true
},
"ghs_final": {
"code": "4323",
"valid": true
}
}
},
"concertation_1": {
"date_concertation": "1.3",
"argumentaire": "109 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : « les diagnostics doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du Manuel des groupes homogènes de maladies. (...) Le meilleur code est le plus précis par rapport à l'information à coder. » Au vu des éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par l'établissement n'est pas le plus précis par rapport à l'information à coder."
},
"preuves": {
"date": "26/04/18",
"praticien_controleur": [
"Dr RADZIKOWSKI",
"Dr DELAYE-PHULPIN",
"Dr TURBAN",
"Dr DUVAL",
"Dr VIGNAU",
"Dr PROMAX"
],
"medecin_dim": "Dr ETTORCHI-TARDY",
"pieces": [
{
"intitule": "Compte-rendu d'acte",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu opératoire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'accouchement",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'examen complémentaire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'imagerie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'anatomopathologie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Observations médicales",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier de transfusion",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier d'anesthésie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Administration thérapeutique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'hospitalisation",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Lettre de sortie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Eléments de surveillance du dossier infirmier",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge psychologique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge kinésithérapeute",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge diététique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Autre",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
}
]
}
},
"_meta": {
"pipeline_version": "v1",
"ocr_model": "zai-org/GLM-OCR",
"generated_at": "2026-04-24T12:15:44+00:00"
}
}

272
output/v2_clean/OGC 74.json Normal file
View File

@@ -0,0 +1,272 @@
{
"fichier": "OGC 74",
"pdf_hash": "58076293464e9771",
"schema_version": "2.0",
"extraction": {
"recueil": {
"etablissement": "CLINIQUE D'ARCACHON",
"finess": "330780206",
"date_debut_controle": "13/02/2018",
"n_ogc": "74",
"n_champ": "1",
"dates_sejour": "08/04/2016 au 13/04/2016",
"sejour_etab": {
"age": "52",
"sexe": "1",
"duree_sejour": "5",
"mode_entree": "1",
"provenance": "8",
"mode_sortie": "1",
"destination": "8"
},
"sejour_reco": {
"age": "52",
"sexe": "1",
"duree_sejour": "5",
"mode_entree": "1",
"provenance": "8",
"mode_sortie": "1",
"destination": "8"
},
"rum_etab": {
"um": "40 C",
"igs": "II",
"duree": "5",
"dates": "du 08/04/2016 au 13/04/2016"
},
"codage_etab": {
"dp": "A099",
"dp_libelle": "GASTROENTERITE COLITE ORIGINE SAI",
"dr": "C795 * 2",
"das": []
},
"codage_reco": {
"dp": "A099",
"dr": "C795 * 2",
"das": []
},
"actes_etab": [],
"actes_reco": [],
"ghm_etab": "06M032",
"ghs_etab": "2130",
"ghm_reco": "18M041",
"ghs_reco": "6772",
"recodage_impactant": "1",
"ghs_injustifie": "0",
"accord_desaccord": "désaccord",
"praticien_conseil": "DR JP VIGNAU",
"_validation": {
"summary": {
"valid": 8,
"invalid": 0,
"empty": 0,
"total_codes": 8,
"ghm_ghs_incoherents": 0
},
"codage_etab": {
"dp": {
"valid": true,
"libelle_ref": "Gastroentérite et colite dorigine non précisée"
},
"dr": {
"valid": true,
"libelle_ref": "Tumeur maligne secondaire des os et de la moelle osseuse"
},
"das": []
},
"codage_reco": {
"dp": {
"valid": true,
"libelle_ref": "Gastroentérite et colite dorigine non précisée"
},
"dr": {
"valid": true,
"libelle_ref": "Tumeur maligne secondaire des os et de la moelle osseuse"
},
"das": []
},
"ghm_etab": {
"valid": true
},
"ghs_etab": {
"valid": true
},
"ghm_reco": {
"valid": true
},
"ghs_reco": {
"valid": true
},
"cross_checks": {
"etab_ghm_ghs_coherent": true,
"reco_ghm_ghs_coherent": true
}
}
},
"concertation_2": {
"ghs_initial": "",
"ghs_avant_concertation": "",
"ghs_final": "",
"decision": "",
"date_concertation": "2-3",
"praticien_controleur": "",
"medecin_dim": "",
"_validation": {
"ghs_initial": {
"code": "",
"valid": null
},
"ghs_avant_concertation": {
"code": "",
"valid": null
},
"ghs_final": {
"code": "",
"valid": null
}
}
},
"concertation_1": {
"date_concertation": "2.3.18",
"argumentaire": "Atteste avoir pris connaissance des éléments du dossier y compris ceux couverts par le secret médical et des arguments soutenus par les médecins contrôleurs et avoir eu l'opportunité d'en débattre contradictoirement"
},
"preuves": {
"date": "2023/01/18",
"praticien_controleur": [
"Dr RADZIKOWSKI",
"Dr DELAYE-PHULPIN",
"Dr TURBAN",
"Dr DUVAL",
"Dr VIGNAU",
"Dr PROMAX"
],
"medecin_dim": "Dr ETTORCHI-TARDY",
"pieces": [
{
"intitule": "Compte-rendu d'acte : TDP TAP TRN",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu opératoire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'accouchement",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'examen complémentaire :",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'imagerie :",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'anatomopathologie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Observations médicales",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier de transfusion",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier d'anesthésie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Administration thérapeutique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'hospitalisation",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Lettre de sortie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Eléments de surveillance du dossier infirmier",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge psychologique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge kinésithérapeute",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge diététique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Autre : b-c",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
}
]
}
},
"_meta": {
"pipeline_version": "v1",
"ocr_model": "zai-org/GLM-OCR",
"generated_at": "2026-04-24T12:16:17+00:00"
}
}

262
output/v2_clean/OGC 76.json Normal file
View File

@@ -0,0 +1,262 @@
{
"fichier": "OGC 76",
"pdf_hash": "96f8ce5a1672aad9",
"schema_version": "2.0",
"extraction": {
"recueil": {
"etablissement": "CLINIQUE D'ARCACHON",
"finess": "330780206",
"date_debut_controle": "13/02/2018",
"n_ogc": "76",
"n_champ": "1",
"dates_sejour": "05/04/2016 au 11/04/2016",
"sejour_etab": {
"age": "54",
"sexe": "2",
"duree_sejour": "6"
},
"sejour_reco": {
"age": "54",
"sexe": "2",
"duree_sejour": "6"
},
"rum_etab": {
"um": "UM",
"igs": "IGS II",
"duree": "6",
"dates": "du 05/04/2016 au 11/04/2016"
},
"codage_etab": {
"dp": "F329",
"dp_libelle": "EPISODE DEPRES., SAI",
"dr": "Z511",
"das": []
},
"codage_reco": {
"dp": "",
"dr": "",
"das": []
},
"actes_etab": [],
"actes_reco": [],
"ghm_etab": "19M113",
"ghs_etab": "7086",
"ghm_reco": "17M061",
"ghs_reco": "6487",
"recodage_impactant": "1",
"ghs_injustifie": "0",
"accord_desaccord": "désaccord",
"praticien_conseil": "DR VIGNAU",
"_validation": {
"summary": {
"valid": 6,
"invalid": 0,
"empty": 2,
"total_codes": 6,
"ghm_ghs_incoherents": 0
},
"codage_etab": {
"dp": {
"valid": true,
"libelle_ref": "Épisode dépressif, sans précision"
},
"dr": {
"valid": true,
"libelle_ref": "Séance de chimiothérapie pour tumeur"
},
"das": []
},
"codage_reco": {
"dp": {
"valid": null
},
"dr": {
"valid": null
},
"das": []
},
"ghm_etab": {
"valid": true
},
"ghs_etab": {
"valid": true
},
"ghm_reco": {
"valid": true
},
"ghs_reco": {
"valid": true
},
"cross_checks": {
"etab_ghm_ghs_coherent": true,
"reco_ghm_ghs_coherent": true
}
}
},
"concertation_2": {
"ghs_initial": "7086",
"ghs_avant_concertation": "6487",
"ghs_final": "6487",
"decision": "maintien_avis_controleur",
"date_concertation": "1.3.19",
"praticien_controleur": "DR VIGNAU",
"medecin_dim": "DR ETTORCHI-TARDY",
"_validation": {
"ghs_initial": {
"code": "7086",
"valid": true
},
"ghs_avant_concertation": {
"code": "6487",
"valid": true
},
"ghs_final": {
"code": "6487",
"valid": true
}
}
},
"concertation_1": {
"date_concertation": "13.2018",
"argumentaire": "124: La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. En préalable, chapitre VI, paragraphe 1.2 : « Les circonstances du diagnostic préalable n'importent pas (...) La situation de traitement est présente lorsque le diagnostic de l'affection est fait au moment de l'entrée du patient dans l'unité médicale et que l'admission a pour but le traitement de l'affection. » Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre VI, paragraphe 1.2.1 : « La dénomination traitement répétitif rassemble les traitements qui, par nature, imposent une administration répétitive. (...) Dans les situations de traitement répétitif le codage du DP utilise des codes du chapitre XXI de la CIM-10 (« codes Z »). [Règle T1]. La règle est la même si la prise en charge, incidentellement, n'a lieu qu'une fois : c'est la nature du traitement qui est prise en considération. (...) Les séjours pour chimiothérapie, radiothérapie, transfusion sanguine, apheresis sanguine, oxygénothérapie hyperbare, injection de fer (pour carence martiale) qu'il s'agisse de séances ou d'hospitalisation complète, doivent avoir en position de DP le code adéquat de la catégorie Z51 de la CIM10. » Au vu des éléments présents dans le dossier du patient, alors que l'affection a été motivée par un traitement correspondant à la définition de traitement répétitif, l'établissement n'a pas retenu en DP le code du chapitre XXI de la CIM-10 en Z imposé par l'annexe II."
},
"preuves": {
"date": "27/04/2018",
"praticien_controleur": [
"Dr RADZIKOWSKI",
"Dr DELAYE-PHULPIN",
"Dr TURBAN",
"Dr DUVAL",
"Dr VIGNAU",
"Dr PROMAX"
],
"medecin_dim": "Dr ETTORCHI-TARDY",
"pieces": [
{
"intitule": "Compte-rendu d'acte",
"present": false,
"photocopie": true,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu opératoire",
"present": false,
"photocopie": true,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'accouchement",
"present": false,
"photocopie": true,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'examen complémentaire",
"present": false,
"photocopie": true,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'imagerie",
"present": false,
"photocopie": true,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'anatomopathologie",
"present": false,
"photocopie": true,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Observations médicales",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier de transfusion",
"present": false,
"photocopie": true,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier d'anesthésie",
"present": false,
"photocopie": true,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Administration thérapeutique",
"present": false,
"photocopie": true,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'hospitalisation",
"present": false,
"photocopie": true,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Lettre de sortie",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Eléments de surveillance du dossier infirmier",
"present": false,
"photocopie": true,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge psychologue",
"present": false,
"photocopie": true,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge kinésithérapeute",
"present": false,
"photocopie": true,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge diététique",
"present": false,
"photocopie": true,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Autre : CR psychologue",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
}
]
}
},
"_meta": {
"pipeline_version": "v1",
"ocr_model": "zai-org/GLM-OCR",
"generated_at": "2026-04-24T12:16:57+00:00"
}
}

300
output/v2_clean/OGC 84.json Normal file
View File

@@ -0,0 +1,300 @@
{
"fichier": "OGC 84",
"pdf_hash": "0f61532689f119c5",
"schema_version": "2.0",
"extraction": {
"recueil": {
"etablissement": "CLINIQUE D'ARCACHON",
"finess": "330780206",
"date_debut_controle": "13/02/2018",
"n_ogc": "84",
"n_champ": "1",
"dates_sejour": "07/04/2016 au 16/04/2016",
"sejour_etab": {
"age": "47",
"sexe": "1",
"duree_sejour": "9"
},
"sejour_reco": {
"age": "47",
"sexe": "1",
"duree_sejour": "9"
},
"rum_etab": {
"um": "0",
"igs": "0",
"duree": "9",
"dates": "du 07/04/2016 au 16/04/2016"
},
"codage_etab": {
"dp": "C257",
"dp_libelle": "T.M. D'AUTRES PARTIES DU PANCREAS",
"dr": "C787 *",
"das": [
{
"code": "N179",
"position": "2",
"libelle": "T.M. IRE. DU FOIE ET V.B. INTRAHEP."
},
{
"code": "R18",
"position": "2",
"libelle": "ASCITE"
},
{
"code": "R410",
"position": "2",
"libelle": "DESORIENTATION, SAI"
},
{
"code": "Z515",
"position": "3",
"libelle": "SOINS PALLIATIFS"
}
]
},
"codage_reco": {
"dp": "",
"dr": "",
"das": []
},
"actes_etab": [],
"actes_reco": [],
"ghm_etab": "07M063",
"ghs_etab": "2526",
"ghm_reco": "23Z02Z",
"ghs_reco": "7992",
"recodage_impactant": "1",
"ghs_injustifie": "0",
"accord_desaccord": "accord",
"praticien_conseil": "DR VIGNAU",
"_validation": {
"summary": {
"valid": 10,
"invalid": 0,
"empty": 2,
"total_codes": 10,
"ghm_ghs_incoherents": 0
},
"codage_etab": {
"dp": {
"valid": true,
"libelle_ref": "Autres parties du pancréas"
},
"dr": {
"valid": true,
"libelle_ref": "Tumeur maligne secondaire du foie et des voies biliaires intrahépatiques"
},
"das": [
{
"valid": true,
"libelle_ref": "Insuffisance rénale aigüe, sans précision"
},
{
"valid": true,
"libelle_ref": "Ascite"
},
{
"valid": true,
"libelle_ref": "Désorientation, sans précision"
},
{
"valid": true,
"libelle_ref": "Soins palliatifs"
}
]
},
"codage_reco": {
"dp": {
"valid": null
},
"dr": {
"valid": null
},
"das": []
},
"ghm_etab": {
"valid": true
},
"ghs_etab": {
"valid": true
},
"ghm_reco": {
"valid": true
},
"ghs_reco": {
"valid": true
},
"cross_checks": {
"etab_ghm_ghs_coherent": true,
"reco_ghm_ghs_coherent": true
}
}
},
"concertation_2": {
"ghs_initial": "2526",
"ghs_avant_concertation": "7992",
"ghs_final": "7992",
"decision": "maintien_avis_controleur",
"date_concertation": "9.3.18",
"praticien_controleur": "DR VIGNAU",
"medecin_dim": "DR ETTORCHI-TARDY",
"_validation": {
"ghs_initial": {
"code": "2526",
"valid": true
},
"ghs_avant_concertation": {
"code": "7992",
"valid": true
},
"ghs_final": {
"code": "7992",
"valid": true
}
}
},
"concertation_1": {
"date_concertation": "9.3.18",
"argumentaire": "136 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre VI, paragraphe 1.2.2.3, dans certaines situations de traitement unique médical, en exception à la règle générale, le DP est imposé [Règle T11]. A noter que « la maladie traitée est enregistrée comme diagnostic relié chaque fois qu'elle respecte sa définition. » Au vu des éléments présents dans le dossier du patient, alors que l'admission a été motivée pour une situation de traitement unique médical telle que décrite dans le chapitre VI, paragraphe 1.2.2.3 de l'annexe II dont le code CIM-10 est imposé, l'établissement n'a pas appliqué la règle T11 pour le codage du DP."
},
"preuves": {
"date": "01/03/18",
"praticien_controleur": [
"Dr RADZIKOWSKI",
"Dr DELAYE-PHULPIN",
"Dr TURBAN",
"Dr DUVAL",
"Dr VIGNAU",
"Dr PROMAX"
],
"medecin_dim": "Dr ETTORCHI-TARDY",
"pieces": [
{
"intitule": "Compte-rendu d'acte",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu opératoire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'accouchement",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'examen complémentaire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'imagerie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'anatomopathologie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Observations médicales",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier de transfusion",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier d'anesthésie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Administration thérapeutique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'hospitalisation",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Lettre de sortie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Eléments de surveillance du dossier infirmier",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge psychologue",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge kinésithérapeute",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge diététique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Autre",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
}
]
}
},
"_meta": {
"pipeline_version": "v1",
"ocr_model": "zai-org/GLM-OCR",
"generated_at": "2026-04-24T12:17:36+00:00"
}
}

269
output/v2_clean/OGC 86.json Normal file
View File

@@ -0,0 +1,269 @@
{
"fichier": "OGC 86",
"pdf_hash": "ff2bb027e50bd9f6",
"schema_version": "2.0",
"extraction": {
"recueil": {
"etablissement": "CLINIQUE D'ARCACHON",
"finess": "330780206",
"date_debut_controle": "13/02/2018",
"n_ogc": "86",
"n_champ": "1",
"dates_sejour": "14/04/2016 au 20/04/2016",
"sejour_etab": {
"age": "75",
"sexe": "1",
"duree_sejour": "",
"mode_entree": "1",
"provenance": "",
"mode_sortie": "9",
"destination": ""
},
"sejour_reco": {
"age": "75",
"sexe": "1",
"duree_sejour": "",
"mode_entree": "1",
"provenance": "",
"mode_sortie": "9",
"destination": ""
},
"rum_etab": {
"um": "",
"igs": "",
"duree": "",
"dates": ""
},
"codage_etab": {
"dp": "C349",
"dp_libelle": "T.M. DE BRONCHE OU DU POUMON, SAI",
"dr": "",
"das": []
},
"codage_reco": {
"dp": "",
"dr": "",
"das": []
},
"actes_etab": [],
"actes_reco": [],
"ghm_etab": "04M093",
"ghs_etab": "1163",
"ghm_reco": "04M092",
"ghs_reco": "1162",
"recodage_impactant": "1",
"ghs_injustifie": "0",
"accord_desaccord": "désaccord",
"praticien_conseil": "DR VIGNAU",
"_validation": {
"summary": {
"valid": 5,
"invalid": 0,
"empty": 3,
"total_codes": 5,
"ghm_ghs_incoherents": 0
},
"codage_etab": {
"dp": {
"valid": true,
"libelle_ref": "Bronche ou poumon, sans précision"
},
"dr": {
"valid": null
},
"das": []
},
"codage_reco": {
"dp": {
"valid": null
},
"dr": {
"valid": null
},
"das": []
},
"ghm_etab": {
"valid": true
},
"ghs_etab": {
"valid": true
},
"ghm_reco": {
"valid": true
},
"ghs_reco": {
"valid": true
},
"cross_checks": {
"etab_ghm_ghs_coherent": true,
"reco_ghm_ghs_coherent": true
}
}
},
"concertation_2": {
"ghs_initial": "1163",
"ghs_avant_concertation": "1162",
"ghs_final": "A-162",
"decision": "",
"date_concertation": "2.3.18",
"praticien_controleur": "DR VIGNAU",
"medecin_dim": "DR ETTORCHI-TARDY",
"_validation": {
"ghs_initial": {
"code": "1163",
"valid": true
},
"ghs_avant_concertation": {
"code": "1162",
"valid": true
},
"ghs_final": {
"code": "A-162",
"valid": false
}
}
},
"concertation_1": {
"date_concertation": "2.3",
"argumentaire": "105 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur un diagnostic associé significatif (DAS) codé par l'établissement dans le résumé d'unité médicale (RUM). Ce DAS n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre IV, paragraphe 2.1 : « Lorsqu'un patient atteint d'une maladie chronique ou de longue durée est naturellement un DAS, à moins qu'elle n'ait pas bénéficié d'une surveillance et que son traitement ait été interrompu pendant le séjour. (...) Les informations attestant de la majoration de l'effort de soins devant figurer dans le dossier médical. » Au vu des éléments du dossier du patient, la maladie chronique ou de longue durée codée en DAS par l'établissement n'a bénéficié d'aucune prise en charge diagnostique ou thérapeutique, ni majoré l'effort de prise en charge d'une autre affection."
},
"preuves": {
"date": "28/12/14",
"praticien_controleur": [
"Dr RADZIKOWSKI",
"Dr DELAYE-PHULPIN",
"Dr TURBAN",
"Dr DUVAL",
"Dr VIGNAU",
"Dr PROMAX"
],
"medecin_dim": "Dr ETTORCHI-TARDY",
"pieces": [
{
"intitule": "Compte-rendu d'acte",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu opératoire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'accouchement",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'examen complémentaire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'imagerie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'anatomopathologie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Observations médicales",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier de transfusion",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier d'anesthésie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Administration thérapeutique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'hospitalisation",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Lettre de sortie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Eléments de surveillance du dossier infirmier",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge psychologue",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge kinésithérapeute",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge diététique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Autre",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
}
]
}
},
"_meta": {
"pipeline_version": "v1",
"ocr_model": "zai-org/GLM-OCR",
"generated_at": "2026-04-24T12:18:12+00:00"
}
}

176
output/v2_clean/OGC 9.json Normal file
View File

@@ -0,0 +1,176 @@
{
"fichier": "OGC 9",
"pdf_hash": "eaa3cb08305ad415",
"schema_version": "2.0",
"extraction": {
"recueil": {
"etablissement": "CLINIQUE D'ARCACHON",
"finess": "330780206",
"date_debut_controle": "13/02/2018",
"n_ogc": "9",
"n_champ": "1",
"dates_sejour": "01/03/2016 au 08/03/2016",
"sejour_etab": {
"age": "84",
"sexe": "1",
"duree_sejour": "7",
"mode_entree": "8",
"provenance": "",
"mode_sortie": "8",
"destination": ""
},
"sejour_reco": {
"age": "84",
"sexe": "1",
"duree_sejour": "7",
"mode_entree": "8",
"provenance": "",
"mode_sortie": "8",
"destination": ""
},
"rum_etab": {
"um": "53 C",
"igs": "0",
"duree": "7",
"dates": "du 01/03/2016 au 08/03/2016"
},
"codage_etab": {
"dp": "C61",
"dp_libelle": "T.M. DE LA PROSTATE",
"dr": "",
"das": [
{
"code": "",
"position": "",
"libelle": ""
}
]
},
"codage_reco": {
"dp": "",
"dr": "",
"das": [
{
"code": "",
"position": ""
}
]
},
"actes_etab": [],
"actes_reco": [],
"ghm_etab": "12C042",
"ghs_etab": "4519",
"ghm_reco": "11C132",
"ghs_reco": "4169",
"recodage_impactant": "1",
"ghs_injustifie": "0",
"accord_desaccord": "désaccord",
"praticien_conseil": "DR VIGNAU",
"_validation": {
"summary": {
"valid": 5,
"invalid": 0,
"empty": 5,
"total_codes": 5,
"ghm_ghs_incoherents": 0
},
"codage_etab": {
"dp": {
"valid": true,
"libelle_ref": "Tumeur maligne de la prostate"
},
"dr": {
"valid": null
},
"das": [
{
"valid": null
}
]
},
"codage_reco": {
"dp": {
"valid": null
},
"dr": {
"valid": null
},
"das": [
{
"valid": null
}
]
},
"ghm_etab": {
"valid": true
},
"ghs_etab": {
"valid": true
},
"ghm_reco": {
"valid": true
},
"ghs_reco": {
"valid": true
},
"cross_checks": {
"etab_ghm_ghs_coherent": true,
"reco_ghm_ghs_coherent": true
}
}
},
"concertation_2": {
"ghs_initial": "4519",
"ghs_avant_concertation": "4169",
"ghs_final": "4169",
"decision": "",
"date_concertation": "13.8",
"praticien_controleur": "DR VIGNAU",
"medecin_dim": "DR ETTORCHI-TARDY",
"_validation": {
"ghs_initial": {
"code": "4519",
"valid": true
},
"ghs_avant_concertation": {
"code": "4169",
"valid": true
},
"ghs_final": {
"code": "4169",
"valid": true
}
}
},
"concertation_1": {
"date_concertation": "1.3.18",
"argumentaire": "109 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : « les diagnostics doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du Manuel des groupes homogènes de malades. (...) Le meilleur code est le plus précis par rapport à l'information à coder. » Au vu des éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par l'établissement n'est pas le plus précis par rapport à l'information à coder."
},
"preuves": {
"date": "",
"praticien_controleur": "",
"medecin_dim": "",
"pieces": [
{
"intitule": "Commentaires du médecin contrôleur",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Commentaires du médecin du DIM",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
}
]
}
},
"_meta": {
"pipeline_version": "v1",
"ocr_model": "zai-org/GLM-OCR",
"generated_at": "2026-04-24T12:18:38+00:00"
}
}

171
output/v2_clean/OGC 97.json Normal file
View File

@@ -0,0 +1,171 @@
{
"fichier": "OGC 97",
"pdf_hash": "a3d49b8a6bdef1b8",
"schema_version": "2.0",
"extraction": {
"recueil": {
"etablissement": "CLINIQUE D'ARCACHON",
"finess": "330780206",
"date_debut_controle": "13/02/2018",
"n_ogc": "97",
"n_champ": "1",
"dates_sejour": "20/04/2016 au 29/04/2016",
"sejour_etab": {
"age": "66",
"sexe": "1",
"duree_sejour": "9 8",
"mode_entree": "",
"provenance": "9",
"mode_sortie": "9",
"destination": "1"
},
"sejour_reco": {
"age": "66",
"sexe": "1",
"duree_sejour": "9 8",
"mode_entree": "",
"provenance": "9",
"mode_sortie": "9",
"destination": "1"
},
"rum_etab": {
"um": "0",
"igs": "0",
"duree": "9",
"dates": "du 20/04/2016 au 29/04/2016"
},
"codage_etab": {
"dp": "C186",
"dp_libelle": "T.M. DU COLON DESCENDANT",
"dr": "C787 * 2 T.M. IIRE. DU FOIE ET V.B. INTRAHEP.",
"das": [
{
"code": "R18",
"position": "2",
"libelle": "ASCITE"
},
{
"code": "Z515",
"position": "3",
"libelle": "SOINS PALLIATIFS"
}
]
},
"codage_reco": {
"dp": "",
"dr": "",
"das": []
},
"actes_etab": [],
"actes_reco": [],
"ghm_etab": "06M053",
"ghs_etab": "2140",
"ghm_reco": "23Z02Z",
"ghs_reco": "7992",
"recodage_impactant": "1",
"ghs_injustifie": "",
"accord_desaccord": "accord",
"praticien_conseil": "DR VIGNAU",
"_validation": {
"summary": {
"valid": 8,
"invalid": 0,
"empty": 2,
"total_codes": 8,
"ghm_ghs_incoherents": 0
},
"codage_etab": {
"dp": {
"valid": true,
"libelle_ref": "Côlon descendant"
},
"dr": {
"valid": true,
"libelle_ref": "Tumeur maligne secondaire du foie et des voies biliaires intrahépatiques"
},
"das": [
{
"valid": true,
"libelle_ref": "Ascite"
},
{
"valid": true,
"libelle_ref": "Soins palliatifs"
}
]
},
"codage_reco": {
"dp": {
"valid": null
},
"dr": {
"valid": null
},
"das": []
},
"ghm_etab": {
"valid": true
},
"ghs_etab": {
"valid": true
},
"ghm_reco": {
"valid": true
},
"ghs_reco": {
"valid": true
},
"cross_checks": {
"etab_ghm_ghs_coherent": true,
"reco_ghm_ghs_coherent": true
}
}
},
"concertation_2": {
"ghs_initial": "2140",
"ghs_avant_concertation": "7992",
"ghs_final": "7942",
"decision": "",
"date_concertation": "2.3.18",
"praticien_controleur": "DR VIGNAU",
"medecin_dim": "DR ETTORCHI-TARDY",
"_validation": {
"ghs_initial": {
"code": "2140",
"valid": true
},
"ghs_avant_concertation": {
"code": "7992",
"valid": true
},
"ghs_final": {
"code": "7942",
"valid": false
}
}
},
"concertation_1": {
"date_concertation": "",
"argumentaire": "136 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre VI, paragraphe 1.2.2.3, dans certaines situations de traitement unique médical, en exception à la règle générale, le DP est imposé (règle T11). A noter que « la maladie traitée est enregistrée comme diagnostic relié chaque fois qu'elle respecte sa définition. » Au vu des éléments présents dans le dossier du patient, alors que l'admission a été motivée pour une situation de traitement unique médical telle que décrite dans le chapitre VI, paragraphe 1.2.2.3 de l'annexe II dont le code CIM-10 est imposé, l'établissement n'a pas appliqué la règle T11 pour le codage du DP."
},
"preuves": {
"date": "29-avril",
"praticien_controleur": "Pachis de 66 ans",
"medecin_dim": "Admis par AEB, dcer, acité, guère en stage palliatif. Très : cancer céleste mal: métastatique traité depuis 3ans. Perte en charge: - ponction d'acite - pas en stage de la douleur, - sth doligiques et cédation. Dès le 29-avril.",
"pieces": [
{
"intitule": "État DP",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
}
]
}
},
"_meta": {
"pipeline_version": "v1",
"ocr_model": "zai-org/GLM-OCR",
"generated_at": "2026-04-24T12:19:05+00:00"
}
}

372
output/v2_clean/OGC 99.json Normal file
View File

@@ -0,0 +1,372 @@
{
"fichier": "OGC 99",
"pdf_hash": "078ba737e95e7659",
"schema_version": "2.0",
"extraction": {
"recueil": {
"etablissement": "CLINIQUE D'ARCACHON",
"finess": "330780206",
"date_debut_controle": "13/02/2018",
"n_ogc": "99",
"n_champ": "1",
"dates_sejour": "16/04/2016 au 06/05/2016",
"sejour_etab": {
"age": "66",
"sexe": "1",
"duree_sejour": "20"
},
"sejour_reco": {
"age": "66",
"sexe": "1",
"duree_sejour": "20"
},
"rum_etab": {
"um": "UM",
"igs": "IGS II",
"duree": "20",
"dates": "du 16/04/2016 au 06/05/2016"
},
"codage_etab": {
"dp": "T827",
"dp_libelle": "INFECT. ET REAC. INFL. DUES A PROTH.",
"dr": "B957 *",
"das": [
{
"code": "B957",
"position": "2",
"libelle": "STAPHYLO. NICA, CAUSE DE MAL. CLASSES DANS D'AUTRES CHAP."
},
{
"code": "B957",
"position": "2",
"libelle": "STAPHYLO. NICA, CAUSE DE MAL. CLASSES DANS D'AUTRES CHAP."
},
{
"code": "C795",
"position": "2",
"libelle": "PSEUDOMONAS, CAUSE DE MAL. CLASSES DANS D'AUTRES CHAP."
},
{
"code": "C795",
"position": "2",
"libelle": "PSEUDOMONAS, CAUSE DE MAL. CLASSES DANS D'AUTRES CHAP."
},
{
"code": "C797",
"position": "2",
"libelle": "T.M. IRE. DES OS ET DE LA MOELLE OSSEUSE"
},
{
"code": "C797",
"position": "2",
"libelle": "T.M. IRE. DES OS ET DE LA MOELLE OSSEUSE"
},
{
"code": "D619",
"position": "2",
"libelle": "APLAISIE MEDULLAIRE, SAI"
},
{
"code": "D619",
"position": "2",
"libelle": "APLAISIE MEDULLAIRE, SAI"
},
{
"code": "R650",
"position": "2",
"libelle": "ANEMIE AVEC MAL. TUMORALES"
},
{
"code": "R650",
"position": "2",
"libelle": "ANEMIE AVEC MAL. TUMORALES"
},
{
"code": "Z290",
"position": "2",
"libelle": "ISOLEMENT"
},
{
"code": "Z290",
"position": "2",
"libelle": "ISOLEMENT"
}
]
},
"codage_reco": {
"dp": "A415",
"dr": "",
"das": []
},
"actes_etab": [],
"actes_reco": [],
"ghm_etab": "21M164",
"ghs_etab": "7612",
"ghm_reco": "18M073",
"ghs_reco": "6783",
"recodage_impactant": "1",
"ghs_injustifie": "0",
"accord_desaccord": "désaccord",
"praticien_conseil": "DR VIGNAU",
"_validation": {
"summary": {
"valid": 19,
"invalid": 0,
"empty": 1,
"total_codes": 19,
"ghm_ghs_incoherents": 0
},
"codage_etab": {
"dp": {
"valid": true,
"libelle_ref": "Infection et réaction inflammatoire dues à d'autres prothèses, implants et greffes cardiaques et vasculaires"
},
"dr": {
"valid": true,
"libelle_ref": "Autres staphylocoques, cause de maladies classées dans d'autres chapitres"
},
"das": [
{
"valid": true,
"libelle_ref": "Autres staphylocoques, cause de maladies classées dans d'autres chapitres"
},
{
"valid": true,
"libelle_ref": "Autres staphylocoques, cause de maladies classées dans d'autres chapitres"
},
{
"valid": true,
"libelle_ref": "Tumeur maligne secondaire des os et de la moelle osseuse"
},
{
"valid": true,
"libelle_ref": "Tumeur maligne secondaire des os et de la moelle osseuse"
},
{
"valid": true,
"libelle_ref": "Tumeur maligne secondaire de la glande surrénale"
},
{
"valid": true,
"libelle_ref": "Tumeur maligne secondaire de la glande surrénale"
},
{
"valid": true,
"libelle_ref": "Anémie médullaire [aplastique], sans précision"
},
{
"valid": true,
"libelle_ref": "Anémie médullaire [aplastique], sans précision"
},
{
"valid": true,
"libelle_ref": "Syndrome de réponse inflammatoire systémique d'origine infectieuse sans défaillance d'organe"
},
{
"valid": true,
"libelle_ref": "Syndrome de réponse inflammatoire systémique d'origine infectieuse sans défaillance d'organe"
},
{
"valid": true,
"libelle_ref": "Isolement"
},
{
"valid": true,
"libelle_ref": "Isolement"
}
]
},
"codage_reco": {
"dp": {
"valid": true,
"libelle_ref": "Sepsis à d'autres microorganismes Gram négatif"
},
"dr": {
"valid": null
},
"das": []
},
"ghm_etab": {
"valid": true
},
"ghs_etab": {
"valid": true
},
"ghm_reco": {
"valid": true
},
"ghs_reco": {
"valid": true
},
"cross_checks": {
"etab_ghm_ghs_coherent": true,
"reco_ghm_ghs_coherent": true
}
}
},
"concertation_2": {
"ghs_initial": "7612",
"ghs_avant_concertation": "6783",
"ghs_final": "6783",
"decision": "maintien_avis_controleur",
"date_concertation": "2.3.19",
"praticien_controleur": "DR VIGNAU",
"medecin_dim": "DR ETTORCHI-TARDY",
"_validation": {
"ghs_initial": {
"code": "7612",
"valid": true
},
"ghs_avant_concertation": {
"code": "6783",
"valid": true
},
"ghs_final": {
"code": "6783",
"valid": true
}
}
},
"concertation_1": {
"date_concertation": "2.3",
"argumentaire": "109 : La facturation du GHS par l'établissement n'est pas conforme à l'article 1 de l'arrêté du 19 février 2015 modifié du fait d'un non-respect des règles de codage édictées dans l'annexe II de l'arrêté du 21 décembre 2015 modifiant l'arrêté du 22 février 2008. Le non-respect des règles porte sur le diagnostic principal (DP) codé par l'établissement dans le résumé d'unité médicale (RUM). Le DP n'est pas conforme aux règles de codage des diagnostics rappelées par l'annexe II, chapitre V, paragraphe 1 : « les diagnostics doivent figurer dans le RUM sous forme codée selon la plus récente mise à jour de la 10e révision de la Classification internationale des maladies (CIM-10) de l'Organisation mondiale de la santé et selon les extensions nationales données dans la plus récente version du Manuel des groupes homogènes de malades. (...) Le meilleur code est le plus précis par rapport à l'information à coder. » Au vu des éléments présents dans le dossier du patient, le code CIM-10 choisi pour le DP par l'établissement n'est pas le plus précis par rapport à l'information à coder."
},
"preuves": {
"date": "27.2.18",
"praticien_controleur": [
"Dr RADZIKOWSKI",
"Dr DELAYE-PHULPIN",
"Dr TURBAN",
"Dr DUVAL",
"Dr VIGNAU"
],
"medecin_dim": "Dr ETTORCHI-TARDY",
"pieces": [
{
"intitule": "Compte-rendu d'acte",
"present": true,
"photocopie": false,
"absent_date": "3 à 6",
"date_obtention": ""
},
{
"intitule": "Compte-rendu opératoire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'accouchement",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'examen complémentaire",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'imagerie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'anatomopathologie",
"present": false,
"photocopie": false,
"absent_date": "1er demande",
"date_obtention": "16"
},
{
"intitule": "Observations médicales",
"present": true,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier de transfusion",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Dossier d'anesthésie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Administration thérapeutique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Compte-rendu d'hospitalisation",
"present": true,
"photocopie": false,
"absent_date": "1-2",
"date_obtention": ""
},
{
"intitule": "Lettre de sortie",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Eléments de surveillance du dossier infirmier",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge psychologue",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge kinésithérapeute",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Prise en charge diététique",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
},
{
"intitule": "Autre",
"present": false,
"photocopie": false,
"absent_date": "",
"date_obtention": ""
}
]
}
},
"_meta": {
"pipeline_version": "v1",
"ocr_model": "zai-org/GLM-OCR",
"generated_at": "2026-04-24T12:19:48+00:00"
}
}

View File

@@ -39,6 +39,14 @@ CONCERTATION_2_DECISION = CheckboxZones(
desaccord= (0.280, 0.270, 0.305, 0.290), # retour groupage DIM
)
# Zones des 7 cases SE 1 / 2 / 3 / 4 / ATU / FFM / FSD (page recueil, en bas).
# TODO : recalibrer avec des vrais cas positifs — sur 18 dossiers de
# l'échantillon 2018, aucune case n'est cochée (`ghs_injustifie = 0` partout)
# donc impossible de valider visuellement la détection. Laissé désactivé.
GHS_INJUSTIFIE_CHECKBOXES: dict[str, tuple[float, float, float, float]] = {
# placeholder — à recalibrer quand un cas positif sera observé
}
def dark_ratio(image: Image.Image, zone: tuple[float, float, float, float],
inner_frac: float = INNER_FRAC) -> float:
@@ -58,6 +66,31 @@ def dark_ratio(image: Image.Image, zone: tuple[float, float, float, float],
return float(np.mean(gray < DARK_THRESHOLD))
def parse_ghs_injustifie(raw: str) -> str:
"""Extrait la valeur 0/1 du champ ghs_injustifie depuis la sortie OCR brute.
Qwen tend à recopier le libellé complet `0 SE 1 2 3 4 ATU FFM FSD` au lieu
du seul chiffre. On prend le premier caractère qui est 0 ou 1 et on ignore
le reste (les chiffres 1/2/3/4 qui suivent « SE » sont des numéros de case,
pas la valeur du flag).
"""
if raw is None:
return ""
s = str(raw).strip()
if not s:
return ""
# Si déjà propre (juste "0" ou "1"), retour direct
if s in ("0", "1"):
return s
# Prendre le premier chiffre trouvé qui soit 0 ou 1, en ignorant tout
# le reste (en particulier les "SE 1 2 3 4…" qui suivent)
import re as _re
m = _re.match(r"\s*([01])\b", s)
if m:
return m.group(1)
return "" # illisible / format inattendu
def detect_accord_desaccord(
image_path: str | Path,
zones: CheckboxZones = RECUEIL_ACCORD_DESACCORD,

View File

@@ -3,11 +3,15 @@ import json
import re
import time
from pathlib import Path
from PIL import Image
from .ingest import pdf_to_images
from .classify import detect_page_type, route_by_index
from .ocr_qwen import QwenVLOCR
from .prompts import PAGE_TYPES, PROMPT_HEADER
from .checkboxes import detect_accord_desaccord, RECUEIL_ACCORD_DESACCORD
from .prompts import (
PAGE_TYPES, PROMPT_HEADER,
SCHEMA_RECUEIL_RECODAGE, RECUEIL_RECODAGE_ZONE,
)
from .checkboxes import detect_accord_desaccord, RECUEIL_ACCORD_DESACCORD, parse_ghs_injustifie
from .validation import annotate as validate_annotate
@@ -104,6 +108,96 @@ def parse_json_output(raw: str) -> dict | None:
return {"_raw": raw, "_parse_error": str(e)}
def _extract_recodage_crop(image_path: Path, ocr: QwenVLOCR) -> dict | None:
"""Second passage VLM sur le crop zonal de la colonne Recodage.
Qwen nous renvoie la liste brute de tous les codes visibles (avec position
si présente). On classifie DP/DR/DAS en Python par règles :
- les 1ᵉʳ et 2ᵉ codes SANS position → DP puis DR (DR peut être vide si
le 2ᵉ code a déjà une position).
- tous les codes AVEC position → DAS.
Retourne un dict {dp, dr, das[]} ou None en cas d'échec.
"""
try:
img = Image.open(image_path)
w, h = img.size
x1, y1, x2, y2 = RECUEIL_RECODAGE_ZONE
crop = img.crop((int(x1 * w), int(y1 * h), int(x2 * w), int(y2 * h)))
crop_path = image_path.parent / f"{image_path.stem}_recodage.png"
crop.save(crop_path)
except Exception:
return None
res = ocr.run(crop_path, SCHEMA_RECUEIL_RECODAGE, max_new_tokens=1024)
parsed = parse_json_output(res["text"])
if not isinstance(parsed, dict) or "_parse_error" in parsed:
return None
# Filtrer : ne garder que les codes au format CIM-10. Si le crop dépasse
# malgré tout dans la zone Actes, les CCAM (4 lettres + 3 chiffres) seront
# exclus ici.
cim10_re = re.compile(r"^[A-Z]\d{2,4}\s*\*?\s*\+?\d*$")
codes_raw = parsed.get("codes") or []
codes = []
for c in codes_raw:
if not isinstance(c, dict): continue
code = (c.get("code") or "").strip()
if code and cim10_re.match(code):
codes.append({
"code": code,
"position": str(c.get("position") or "").strip(),
})
# Classifier par règle métier :
# - 1er code sans position → DP
# - 2e code sans position → DR (sauf s'il est identique au DP : Qwen tend
# à dupliquer le DP quand DR est vide — on préfère DR="")
# - codes avec position → DAS
dp, dr = "", ""
das = []
dp_assigned = dr_assigned = False
for c in codes:
code, position = c["code"], c["position"]
if not position:
if not dp_assigned:
dp, dp_assigned = code, True
elif not dr_assigned:
if code == dp:
# doublon du DP → on considère que DR est vide
dr_assigned = True
else:
dr, dr_assigned = code, True
else:
das.append({"code": code, "position": ""})
else:
das.append(c)
return {
"dp": dp, "dr": dr, "das": das,
"_source": "crop_recodage",
"_elapsed_s": round(res["elapsed_s"], 2),
"_n_codes_raw": len(codes_raw),
"_n_codes_kept": len(codes),
}
def _merge_codage_reco(parsed: dict, reco: dict) -> None:
"""Fusionne le résultat du crop Recodage dans parsed["codage_reco"].
Politique : le crop est plus fiable (contexte isolé), il prime sur le
passage principal SAUF si le crop laisse vide un champ que le principal
avait bien lu.
"""
existing = parsed.get("codage_reco") if isinstance(parsed.get("codage_reco"), dict) else {}
merged = {
"dp": reco.get("dp", "") or existing.get("dp", ""),
"dr": reco.get("dr", "") or existing.get("dr", ""),
"das": reco.get("das") or existing.get("das") or [],
}
parsed["codage_reco"] = merged
parsed.setdefault("_crop_recodage", {})["result"] = reco
def extract_dossier(pdf_path: str | Path, verbose: bool = True,
use_standard_routing: bool = True) -> dict:
"""Pipeline complet d'un dossier : PDF → JSON structuré.
@@ -169,12 +263,23 @@ def extract_dossier(pdf_path: str | Path, verbose: bool = True,
page_info["parsed"] = parsed
page_info["elapsed_s"] = round(res["elapsed_s"], 2)
# Enrichissement : checkboxes accord/désaccord sur la fiche recueil
# (GLM-OCR ne sait pas lire les checkboxes — voir test_prompt_crop_v2.py)
# Enrichissement : checkboxes + normalisation champs booléens
# sur la fiche recueil. GLM-OCR / Qwen ne lisent pas les cases
# à cocher (cf. scratch/test_prompt_crop_v2.py).
if ptype == "recueil" and isinstance(parsed, dict):
cb = detect_accord_desaccord(img_path, RECUEIL_ACCORD_DESACCORD)
parsed["accord_desaccord"] = cb["decision"]
parsed["_checkbox_debug"] = cb # ratios + diff pour audit
# ghs_injustifie : Qwen renvoie parfois "0 SE 1 2 3 4 ATU FFM FSD"
# → ne garder que le chiffre 0/1 de tête
parsed["ghs_injustifie"] = parse_ghs_injustifie(parsed.get("ghs_injustifie", ""))
# Second passage : crop de la colonne Recodage pour compenser
# la sous-extraction observée sur codage_reco.* en passage principal.
reco = _extract_recodage_crop(img_path, ocr)
if reco:
_merge_codage_reco(parsed, reco)
page_info["parsed"] = parsed
# Indexer par type pour accès direct dans result["extraction"]

View File

@@ -28,11 +28,15 @@ class QwenVLOCR:
def _init_model(self):
t0 = time.time()
# max_pixels limite le nombre de patches visuels pour éviter l'OOM
# sur images 300 dpi (2481x3509). ~1.25M pixels = équilibre qualité/VRAM.
# sur images 300 dpi (2481x3509). ~800 patches = équilibre qualité/VRAM,
# tient confortablement dans ~5-6 Go même avec d'autres processus GPU
# en arrière-plan. Configurable via env var QWEN_MAX_PIXELS (en patches).
import os as _os
max_pixels = int(_os.environ.get("QWEN_MAX_PIXELS", 800)) * 28 * 28
self.processor = AutoProcessor.from_pretrained(
MODEL_PATH,
min_pixels=256 * 28 * 28,
max_pixels=1280 * 28 * 28,
max_pixels=max_pixels,
)
self.model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
MODEL_PATH,
@@ -67,4 +71,9 @@ class QwenVLOCR:
generated_ids = self.model.generate(**inputs, max_new_tokens=max_new_tokens)
out_ids = generated_ids[:, inputs.input_ids.shape[1]:]
output = self.processor.batch_decode(out_ids, skip_special_tokens=True)[0]
# Libérer la VRAM allouée par l'inférence (utile quand d'autres
# processus tournent en parallèle sur le même GPU)
del inputs, generated_ids, out_ids
if torch.cuda.is_available():
torch.cuda.empty_cache()
return {"text": output.strip(), "elapsed_s": time.time() - t0}

View File

@@ -9,9 +9,10 @@ DEFAULT_OUT = Path("output/v2")
def save_result(result: dict, out_dir: Path | str = DEFAULT_OUT) -> Path:
out_dir = Path(out_dir)
out_dir.mkdir(parents=True, exist_ok=True)
from .ocr_qwen import MODEL_PATH as OCR_MODEL_ID
result["_meta"] = {
"pipeline_version": "v1",
"ocr_model": "zai-org/GLM-OCR",
"pipeline_version": "v2",
"ocr_model": OCR_MODEL_ID,
"generated_at": datetime.now(timezone.utc).isoformat(timespec="seconds"),
}
out_path = out_dir / f"{result['fichier']}.json"

View File

@@ -54,6 +54,38 @@ Si un champ est illisible, laisse une chaîne vide. Ne devine pas.
"praticien_conseil": ""
}"""
# --- Second passage dédié : colonne Recodage de la page recueil ---
# Qwen-VL sous-extrait la colonne droite du tableau Codage quand on lui donne
# la page entière (27% de couverture sur `codage_reco.dp` en V2.0). En lui
# donnant directement un crop zonal de cette seule colonne, il lit beaucoup
# mieux (la structure à une seule colonne lève l'ambiguïté).
#
# Zone cropée (coordonnées relatives dans l'image complète) :
# Zone restreinte au seul bloc codage (DP/DR/DAS de la colonne Recodage).
# On exclut la partie Actes (qui commence autour de y=0.680) pour éviter que
# Qwen confonde les codes CCAM (actes) avec des codes CIM-10 (DAS).
RECUEIL_RECODAGE_ZONE = (0.77, 0.330, 0.97, 0.490)
SCHEMA_RECUEIL_RECODAGE = """Cette image est un extrait d'une colonne d'un tableau médical.
La colonne peut contenir ZÉRO, UN ou PLUSIEURS codes médicaux CIM-10 (format : 1 lettre majuscule + 2 à 4 chiffres, ex: K650, T810, Z954, R31, I652). Un code peut avoir un suffixe `*`. À droite d'un code, une position numérique (1-9) peut être visible.
IMPORTANT — LIS UNIQUEMENT CE QUI EST PHYSIQUEMENT VISIBLE :
- La plupart des lignes de ce tableau sont VIDES. C'est NORMAL.
- Ne liste QUE les codes effectivement écrits dans l'image. N'INVENTE rien.
- Si l'image ne contient qu'un seul code, ta réponse doit lister exactement un code (pas plusieurs).
- Si l'image ne contient aucun code, renvoie `"codes": []`.
- Ne déduis pas les codes d'autres cases non montrées dans l'image.
Pour chaque code réellement visible, indique sa position à droite si elle est écrite, sinon "".
Renvoie STRICTEMENT ce JSON, sans commentaire ni markdown :
{
"codes": [
{"code": "", "position": ""}
]
}"""
# --- Page 5 : Fiche administrative de concertation 2/2 (décision finale) ---
SCHEMA_CONCERTATION_2 = """Lis la fiche de concertation et renvoie STRICTEMENT le JSON suivant, sans commentaire ni markdown.
Si un champ est illisible, laisse une chaîne vide.

185
pipeline/schema.py Normal file
View File

@@ -0,0 +1,185 @@
"""Schema de sortie stable du pipeline + fonction de nettoyage.
Le pipeline produit un JSON riche pendant l'exécution (avec des champs de debug :
ratios checkbox, OCR raw, flags _parse_error, _truncated_loop, _crop_recodage,
_checkbox_debug, _source, etc). Cette information est utile pour auditer un
dossier mais pollue la structure quand on veut exposer le résultat à un
consommateur aval (Excel, dashboard, échange inter-équipes).
Ce module expose :
- `clean_dossier(raw)` : retourne une version propre, lisible et stable,
sans champs de debug. Garde les flags de validation ATIH qui ont une valeur
métier (codes valides, cohérence GHM↔GHS).
- `SCHEMA_VERSION` : version du format (incrémentée à chaque breaking
change de structure).
- `CLEAN_FIELDS_RECUEIL` : liste des champs finaux de la page recueil
(utile pour Excel, dashboard, docs).
Principe : le JSON raw reste dans `output/v2/<nom>.json` (audit complet), le
JSON clean est produit séparément sur demande via `clean_dossier()`.
"""
from __future__ import annotations
from copy import deepcopy
from typing import Any
SCHEMA_VERSION = "2.0"
# Champs retenus sur la page recueil pour la sortie propre. L'ordre est
# celui de l'affichage logique (en-tête → séjour → codage → GHM/GHS → décisions).
CLEAN_FIELDS_RECUEIL = [
"etablissement", "finess", "date_debut_controle",
"n_ogc", "n_champ", "dates_sejour",
"sejour_etab", "sejour_reco", "rum_etab",
"codage_etab", "codage_reco",
"actes_etab", "actes_reco",
"ghm_etab", "ghs_etab", "ghm_reco", "ghs_reco",
"recodage_impactant", "ghs_injustifie",
"accord_desaccord", "praticien_conseil",
]
CLEAN_FIELDS_CONCERTATION_2 = [
"ghs_initial", "ghs_avant_concertation", "ghs_final",
"decision", "date_concertation",
"praticien_controleur", "medecin_dim",
]
CLEAN_FIELDS_CONCERTATION_1 = [
"date_concertation", "argumentaire",
]
CLEAN_FIELDS_PREUVES = [
"date", "praticien_controleur", "medecin_dim", "pieces",
]
# Champs de debug à retirer systématiquement du clean
DEBUG_FIELDS = {
"_checkbox_debug",
"_crop_recodage",
"_parse_error",
"_raw",
"_truncated_loop",
"_source",
"_elapsed_s",
"_n_codes_raw",
"_n_codes_kept",
}
def _pick(d: dict, keys: list[str]) -> dict:
"""Retourne un dict ordonné avec uniquement les clés présentes."""
out = {}
for k in keys:
if k in d:
out[k] = d[k]
return out
def _clean_validation(validation: dict | None) -> dict | None:
"""Garde la validation ATIH mais en format compact : juste les flags utiles."""
if not isinstance(validation, dict):
return None
summary = validation.get("summary") or {}
cc = validation.get("cross_checks") or {}
# On conserve juste l'essentiel : par champ, le flag valid (True/False/None)
# et éventuellement la suggestion de correction OCR.
def _compact_code(entry):
if not isinstance(entry, dict) or "valid" not in entry:
return None
out = {"valid": entry.get("valid")}
if entry.get("suggestion"):
out["suggestion"] = entry["suggestion"]
if entry.get("libelle_ref"):
out["libelle_ref"] = entry["libelle_ref"]
return out
result = {
"summary": summary,
"codage_etab": {
"dp": _compact_code(validation.get("codage_etab", {}).get("dp")),
"dr": _compact_code(validation.get("codage_etab", {}).get("dr")),
"das": [_compact_code(d) for d in validation.get("codage_etab", {}).get("das", []) or []],
},
"codage_reco": {
"dp": _compact_code(validation.get("codage_reco", {}).get("dp")),
"dr": _compact_code(validation.get("codage_reco", {}).get("dr")),
"das": [_compact_code(d) for d in validation.get("codage_reco", {}).get("das", []) or []],
},
"ghm_etab": _compact_code(validation.get("ghm_etab")),
"ghs_etab": _compact_code(validation.get("ghs_etab")),
"ghm_reco": _compact_code(validation.get("ghm_reco")),
"ghs_reco": _compact_code(validation.get("ghs_reco")),
"cross_checks": {
"etab_ghm_ghs_coherent": cc.get("etab", {}).get("coherent"),
"reco_ghm_ghs_coherent": cc.get("reco", {}).get("coherent"),
},
}
return result
def _clean_recueil(page: dict) -> dict:
cleaned = _pick(page, CLEAN_FIELDS_RECUEIL)
# Sous-champs codage : nettoyer aussi les codes invalides
v = _clean_validation(page.get("_validation"))
if v:
cleaned["_validation"] = v
return cleaned
def _clean_simple(page: dict, fields: list[str]) -> dict:
cleaned = _pick(page, fields)
v = page.get("_validation")
if isinstance(v, dict):
cleaned["_validation"] = v # déjà compact pour ces pages
return cleaned
def clean_dossier(raw: dict) -> dict:
"""Retourne une copie nettoyée d'un résultat de pipeline.
Strippe les champs de debug internes, garde la validation ATIH compacte
et une structure stable.
"""
extraction = raw.get("extraction") or {}
clean_extraction: dict[str, Any] = {}
if "recueil" in extraction and isinstance(extraction["recueil"], dict):
clean_extraction["recueil"] = _clean_recueil(extraction["recueil"])
if "concertation_2" in extraction and isinstance(extraction["concertation_2"], dict):
clean_extraction["concertation_2"] = _clean_simple(
extraction["concertation_2"], CLEAN_FIELDS_CONCERTATION_2)
if "concertation_1" in extraction and isinstance(extraction["concertation_1"], dict):
clean_extraction["concertation_1"] = _clean_simple(
extraction["concertation_1"], CLEAN_FIELDS_CONCERTATION_1)
if "preuves" in extraction and isinstance(extraction["preuves"], dict):
clean_extraction["preuves"] = _clean_simple(
extraction["preuves"], CLEAN_FIELDS_PREUVES)
return {
"fichier": raw.get("fichier"),
"pdf_hash": raw.get("pdf_hash"),
"schema_version": SCHEMA_VERSION,
"extraction": clean_extraction,
"_meta": raw.get("_meta", {}),
}
if __name__ == "__main__":
# Utilitaire : nettoyer un fichier en place, ou produire une version clean
import json, sys, glob
from pathlib import Path
if len(sys.argv) > 1:
paths = [Path(p) for p in sys.argv[1:]]
else:
paths = [Path(p) for p in sorted(glob.glob("output/v2/OGC *.json"))]
out_dir = Path("output/v2_clean")
out_dir.mkdir(exist_ok=True)
for p in paths:
raw = json.loads(p.read_text(encoding="utf-8"))
clean = clean_dossier(raw)
(out_dir / p.name).write_text(
json.dumps(clean, ensure_ascii=False, indent=2), encoding="utf-8")
print(f"{len(paths)} fichiers nettoyés → {out_dir}/")