- DPPoolCandidate model (terme, section, preuve, score_initial)
- build_dp_candidate_pool() with filters (_is_pool_excluded, _dedup_pool)
- Pool exclusion: admin noise, bio values, vague symptoms, place names
- DP_POOL_RANK template for LLM-based ranking among pool candidates
- llm_dp_pool_rank() with guardrails (GF-1 evidence, GF-3 confidence)
- benchmark_quality.py: --dp-candidates, --use-dp-pool-rank flags
- 41 new tests (pool, exclusion, dedup, pool rank, synthese)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Ajout OLLAMA_MODELS (coding/cpam/validation/qc) dans config.py avec get_model()
- Paramètre role= dans call_ollama() pour dispatch par rôle
- Cache Ollama : modèle stocké par entrée (migration auto de l'ancien format)
- 7 prompts externalisés dans src/prompts/templates.py (format str.format)
- Viewer : admin multi-modèles, endpoint PDF avec redaction, source texte
- Documentation prompts dans docs/prompts.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Ajoute source_page/source_excerpt à tous les types (biologie, imagerie,
traitements, actes CCAM, antécédents, complications). Convertit antecedents
et complications en types structurés (Antecedent/Complication) avec
validators backward-compat pour les vieux JSON. Étend _apply_source_tracking
à tous les éléments du dossier. Ajoute un endpoint /api/source-text/ et un
modal interactif dans le viewer avec surlignage du texte source.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- das_filter: regex anti-répétition gère les espaces entre mots concaténés
("VentilationVentilation Ventilation..." désormais rejeté)
- cim10_extractor: regex antécédents s'arrête à "Signes Vitaux" (ne capture
plus le tableau de surveillance)
- Nouveau _is_valid_antecedent() filtre noms de service, mots de surveillance
isolés, infos admin (RPPS), répétitions, Mode de vie
- 28 nouveaux tests (TestIsValidAntecedent + das_filter repetition)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Résolution des libellés CIM-10 pour les codes contestés (dp_ucr, da_ucr, dr_ucr)
- Fallback DP depuis dp_ucr quand le pipeline n'extrait pas de diagnostic principal
- Troncature arg_ucr augmentée de 200 à 500 chars pour conserver les citations de règles
- Requête RAG 4 : définitions CIM-10 (inclusion/exclusion) des codes contestés
- Requête RAG 5 : extraction et recherche des règles nommées (RègleT7, Annexe, etc.)
- Cap résultats RAG de 10 à 12 pour absorber les nouvelles requêtes
- Reprocess viewer : pipeline complet (fusion + GHM + CPAM) pour dossiers multi-PDF
- Affichage structuré response_data dans le viewer (analyse, preuves, références)
- 7 nouveaux tests CPAM, 6 nouveaux tests viewer
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Le pipeline utilise désormais gemma3:12b (rapide) pour le codage CIM-10
et gemma3:27b (meilleur raisonnement) pour la contre-argumentation CPAM.
Configurable via OLLAMA_MODEL_CPAM et OLLAMA_TIMEOUT_CPAM.
Inclut aussi : traçabilité source/page DAS, niveaux CMA ATIH, sévérité,
page tracker PDF, améliorations fusion et filtres DAS.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Rule 3 das_filter étendue pour rejeter "K 3.6", "B 12,5" (valeurs labo)
- Suppression codes parents dans la fusion (K85 retiré si K85.9 présent)
- Préférence du diagnostic enrichi RAG à confiance égale lors de la dédup
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1. Champ source sur Diagnostic : trackare/edsnlp/regex/llm_das
- Renseigné dans les 8 constructeurs de cim10_extractor.py
- Permet l'audit de provenance des DAS dans le JSON de sortie
2. Fallback code parent pour les codes LLM halluccinés :
- fallback_parent_code() dans cim10_dict.py (D71.9→D71, R69.8→R69)
- Intégré dans _apply_llm_result_diagnostic() de rag_search.py
- Récupère les codes rejetés dont le parent 3-char est valide
3. Règle 12 filtre DAS : en-têtes anatomiques + catégories vagues
- Rejette "Musculaire", "Digestif", "Hépatique" (mots isolés)
- Rejette "Musculaire - masse musculaire" (catégorie + description)
- 13 nouveaux tests unitaires au total
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Filtre DAS identique au DP (violation règle PMSI) dans extracteur et fusion
- Correction automatique D55.9 → D64.9 pour "Anémie" non qualifiée (70 cas)
- 17 codes ajoutés aux supplements (K59.0, Z93.1, H92.0, A87.0, D64.9, etc.)
- 436 tests OK (+14 nouveaux)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Piste 1 : ajout de cim10_supplements.json (40 sous-codes E10/E11/E13/F10)
fusionné au chargement par load_dict() — E11.9 et autres ne sont plus rejetés.
Piste 2 : export BIO_NORMALS depuis cim10_extractor, inclusion des plages
de référence [N: min-max] dans le contexte LLM et règle explicite dans le
prompt DAS pour éviter les hallucinations sur valeurs biologiques normales.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Ajoute une étape de splitting entre extraction texte et parsing. Chaque chunk
est traité indépendamment par le pipeline existant, avec suffixe _partN en sortie.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Nouveau module das_filter.py avec 7 règles de rejet (trop court, chiffres,
lettre+chiffres OCR, mots concaténés/répétés, fragments non-médicaux) +
nettoyage newlines/ponctuation. Filtrage appliqué aux 3 sources de DAS :
trackare, regex et edsnlp. 31 tests unitaires.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Filtre format_duration : affiche les temps en min/s au lieu de secondes brutes
- Bouton reprocess : spinner animé, compteur temps réel, confirmation immédiate
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Ajout des règles d'exclusion symptôme (R00-R99) vs diagnostic précis (Chapitres I-XIV),
détection heuristique de sévérité CMA sur 25 racines CIM-10, et affichage des alertes
de codage dans le viewer Flask. 153 tests, 0 régression.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Pipeline complet de traitement de documents médicaux PDF :
- Extraction texte (pdfplumber) et classification (Trackare/CRH)
- Anonymisation multi-couche (regex + NER CamemBERT + sweep)
- Extraction médicale CIM-10 hybride : edsnlp (AP-HP) enrichit les
diagnostics, médicaments (codes ATC via Romedi) et négation,
avec fallback regex pour les patterns spécifiques
- Fix sentencepiece pinné à <0.2.0 pour compatibilité CamemBERT
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>