Files
Aivanov_scan_ogc/output/v2_clean/OGC 97.json
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

171 lines
5.3 KiB
JSON

{
"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"
}
}