Aller au contenu

Moteur compositionnel & oncologie (MC)

🟢🔵 Une tumeur ne se réduit pas à un concept : un registre cancer la décrit par plusieurs axes (où ? quel tissu ? quel comportement ? quel grade ?). Messier reproduit cette décomposition via un moteur dédié, la lib open-core MC. Une mention est donc soit simple (un concept Mondo) soit compositionnelle (ancre + axes).

🔵 La maladie Mondo est l’ancre (axis=null), pas un axe. Les quatre axes :

AxeValeurTerminologie
topographiesite tumoralSNOMED body structure (SCTID)
morphologiehistologieSNOMED morphologic abnormality (SCTID)
comportement/0 /2 /3 /6échelle ICD-O (dérivée)
gradeG1–G4valeur → SCTID (table déterministe)

Chaque axe porte un état (pending / inferred / validated / rejected / nil), un chosen (concept_id + system + label), une provenance (text / override / augmented / deterministic / linker) et un raw_value. Contrat moteur : CompositeResultAxisMapping par axe.

🔵 Une mention détectée oncologique (descendant Mondo de neoplasm) ne passe pas directement à validated : un 1ᵉʳ accept (maladie Mondo) la met en pending_oncology (file onco dédiée) ; un 2ᵉ accept, avec les décisions par axe, la fait passer validated.

🔵 À l’arrivée d’une mention onco, le moteur pré-remplit des axes : le flag oncologie est déterministe (hiérarchie Mondo) ; behavior/grade sont inférés (statut inferred, à confirmer) ; les candidats topo/morpho viennent du linker (KB SNOMED). La provenance par champ permet à l’UI de griser / badger « pré-rempli ».

🔵 Pour pré-remplir la topographie même quand la mention ne contient pas de span topo explicite, le moteur synthétise une requête depuis l’ancre Mondo :

  • Mode A — un span topographique est présent → requête directe.
  • Mode B — pas de span (long-tail : Kehlkopf, Harnleiter…) → synthèse depuis l’ancre.

Ce pont atténue le trou de couverture DE sur la topographie onco (cf. asymétrie multilingue, Moteur de linking (cœur ML)).