feat: 3 quick wins — source DAS, fallback code parent, filtre anatomique
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>
This commit is contained in:
@@ -10,7 +10,7 @@ from ..config import (
|
||||
OLLAMA_CACHE_PATH, OLLAMA_MAX_PARALLEL, OLLAMA_MODEL,
|
||||
EMBEDDING_MODEL, RERANKER_MODEL,
|
||||
)
|
||||
from .cim10_dict import normalize_code, validate_code as cim10_validate
|
||||
from .cim10_dict import normalize_code, validate_code as cim10_validate, fallback_parent_code
|
||||
from .cim10_extractor import BIO_NORMALS
|
||||
from .ccam_dict import validate_code as ccam_validate
|
||||
from .ollama_client import call_ollama, parse_json_response
|
||||
@@ -478,10 +478,19 @@ def _apply_llm_result_diagnostic(diagnostic: Diagnostic, llm_result: dict) -> No
|
||||
if is_valid:
|
||||
diagnostic.cim10_suggestion = code
|
||||
else:
|
||||
logger.warning(
|
||||
"RAG : code Ollama %s invalide pour « %s », code ignoré",
|
||||
code, diagnostic.texte,
|
||||
)
|
||||
# Tenter fallback vers le code parent (D71.9 → D71)
|
||||
parent = fallback_parent_code(code)
|
||||
if parent:
|
||||
logger.info(
|
||||
"RAG : code Ollama %s invalide → fallback parent %s pour « %s »",
|
||||
code, parent, diagnostic.texte,
|
||||
)
|
||||
diagnostic.cim10_suggestion = parent
|
||||
else:
|
||||
logger.warning(
|
||||
"RAG : code Ollama %s invalide pour « %s », code ignoré",
|
||||
code, diagnostic.texte,
|
||||
)
|
||||
if confidence in ("high", "medium", "low"):
|
||||
diagnostic.cim10_confidence = confidence
|
||||
if justification:
|
||||
|
||||
Reference in New Issue
Block a user