Extracteur de Concepts Multi-Terminologique (ECMT v3)
1 - Introduction
Cet indexeur multi-terminologique permet d'annoter automatiquement un texte à l'aide des concepts des principales terminologies de santé disponibles en Français.
Pour tout usage, merci de contacter par courriel le Pr. Stéfan Darmoni de l'équipe CISMeF.
2 - Appel au web service
Le web service ECMT est appelable en REST ou SOAP.
REST :
wadl : /CISMeFecmtservice/REST?_wadl
La version REST est plus adaptée aux technologies Web. Elle est utilisable directement avec un navigateur (attention la taille du texte est limitée dans ce cas).
Elle est de ce fait plus simple à utiliser et plus souple que la version SOAP.
SOAP :
wsdl : /CISMeFecmtservice/SOAP?wsdl
Là où REST nécessite de l'http, SOAP sépare langage, plate-forme, et transport. Son usage est démocratisé, il est bien standardisé et offre une gestion intégrée d'erreur.
- Exemple d'appel en java :
- création du package à partir du wsdl :
wsimport -verbose -keep http://..../CISMeFecmtservice/SOAP?wsdl
jar –cf ecmtwsclient.jar ./*
- classe simplifiée de test :
public class EcmtWsSOAPClient {
@WebServiceRef(wsdlLocation="http://..../CISMeFecmtservice/SOAP?wsdl")
static EcmtService service;
...
public static void main(String[] args) {
service = new EcmtService();
EcmtWsSOAPClient client = new EcmtWsSOAPClient();
client.test(args);
}
public void test(String[] args) {
EcmtInterface port = service.getEcmtCorePort();
Return response = port.getAutomaticIndexing(...);
}
}
NB. : en REST comme en SOAP, le premier appel étant plus lent, penser afin d'optimiser les performances à réutiliser un même client pour n appels successifs.
Bien que cela ne soit pas nécessaire à la compilaton, la désérialisation des objets du web service en java nécessite la librairie "woodstox-core-asl-4.2.0.jar".
Méthodes reconnues :
- getAutomaticIndexing(text) : renvoie l'annotation du texte au format XML. Les options utilisées sont celles par défaut (cf. Options).
- getAutomaticIndexingWithOptions(options, text) : renvoie l'annotation du texte au format XML selon les options passées en paramètres.
3 - Options
La méthode "getAutomaticIndexingWithOptions(options, text)" vous permet de préciser quelles informations vous sont utiles.
L'utilisation de ces options présente les avantages suivants :
- diminuer quelque peu les temps de traitements, en évitant de rechercher des informations superflues
- alléger le contenu XML, le rendant plus lisible et moins long à transférer
- éviter les catégories non pertinentes (pour l'option "filter")
L'argument "options" est en fait une chaine de caractère rassemblant des couples attribut=valeur (séparées par un "&"),
par exemple :
"at=true&a=false&d=false&r=true=&c=true&sn=true&e=&f=CIS_MT_8,UML_ST_T060".
Liste des options disponibles :
- "c" : categorization. Si "c=true" retourne les métatermes (spécialités médicales) et type sémantiques UMLS des concepts retrouvés (valeur par défaut :"true").
- "r" : refined. Si "r=true" l'algorithme s'arrête lorsqu'il trouve un concept couvrant un maximum de termes (valeur par défaut :"true"). Exemple : pour "cardiopathie hypertensive", si "r=true" on renvoit "hypertension artérielle" uniquement, si "r=false", retourne "hypertension artérielle" et "maladie cardiaque" (ce dernier du fait de "cardiopathie").
- "sn": semantic network. Si "sn=true" les concepts reliés aux concepts directement présents dans le texte sont également retournés (valeur par défaut :"true"). Les relations qui sont parcourues ont été prédéfinies; il s'agit pour le moment des relations : "Alignements automatiques CISMeF supervisés", "Alignements automatiques supervisés en BTNT, Alignement(s) exact(s) supervisé(s) CISMeF, Alignement(s) exact(s) supervisé(s) CISMeF, Alignements manuels BTNT - CISMeF, Alignements manuels CISMeF, Code(s) ATC".
- "e" : exclusions. Il s'agit une chaine de caractère contenant les identifiants des concepts à exclure: un métaterme, un type sémantique, un concept père, ou encore un type d'objet (1). Exemple "e=CIS_MT_8,UML_ST_T060,MSH_D_C,T_DESC_PHARMA_RACINE" retourne uniquement les concepts qui ne sont ni des "chirurgies" (CIS_MT_8) ni des "procedures de diagnostic" (UML_ST_T060) ni des "Maladies" (au sens MeSH: MSH_D_C) ni des "racines de spécialités pharmaceutiques" (T_DESC_PHARMA_RACINE) (valeur par défaut :"", toutes les catégories sont alors retournées, à l'utilisateur des les filtrer ensuite). En cas d'utilisation d'un concept père, tous ses descendants seront exclus. Voici la liste des métatermes et des types sémantiques.
- "f" : filters. Il s'agit une chaine de caractère contenant les identifiants des concepts à conserver: un métaterme, un type sémantique, un concept père, ou encore un type d'objet (1). Exemple "f=CIS_MT_8,UML_ST_T060,MSH_D_C,T_DESC_PHARMA_RACINE" retourne uniquement les concepts qui sont des "chirurgies" (CIS_MT_8) ou des "procedures de diagnostic" (UML_ST_T060) ou des "Maladies" (au sens MeSH: MSH_D_C) ou des "racines de spécialités pharmaceutiques" (T_DESC_PHARMA_RACINE) (valeur par défaut :"", toutes les catégories sont alors retournées, à l'utilisateur des les filtrer ensuite). En cas d'utilisation d'un concept père, tous ses descendants seront conservés. Voici la liste des métatermes et des types sémantiques.
- "a" : ancestors. Si "a=true" retourne les ancêtres (en relations hiérachiques: parents, grand-parents, etc.) des concepts retrouvés (valeur par défaut :"false").
- "d" : descendants. Si "d=true" retourne les descendants (en relations hiérachiques: enfants, petits-enfants, etc.) des concepts retrouvés (valeur par défaut :"false").
- "at" : aternative terms. Si "at=true" retourne également les termes alternatifs (synonymes) des concepts retrouvés (valeur par défaut :"true").
- "p" : priorization. Si "p=true", seul le concept issu de la terminologie la plus pertinente est retourné, en fonction de son type sémantique.
- "amin" : acronyms minimal size. Ne renvoie que les acronymes de taille >= amin.
(
1) : les options
"e" et
"f" acceptent également des identifiants de listes directement définies dans un fichier de configuration. Si le fichier de configuration contient par exemple une entrée :
-
# SET1 aims to be used for exclusion, it contains counter-productive ids for hospitalization reports
SET1=CIS_MT_57[Droit de la santé],CIS_MT_55[Économie],MSH_D_000825[Structures anatomiques de l'animal],UML_ST_T065[activité éducative], ....
alors "e=SET1" signifiera exclure "CIS_MT_57[Droit de la santé],CIS_MT_55[Économie],MSH_D_000825[Structures anatomiques de l'animal],UML_ST_T065[activité éducative], ...."
(
2) : concernant les options
"e" et
"f", la priorité des opérateurs est la suivante :
- "OU" au sein d’une même option ("e= SET1,SET2" signifiant "exclure SET1 Union SET2")
- "SAUF" entre les deux options "e" et "f", en donnant priorité à l’inclusion ("e= SET1&f=SET2" signifiant "exclure SET1 sauf s’il est inclus dans SET2").
4 - Interface de démonstration
Si utilisé en REST via un navigateur, le service ECMT a recours à une simple xslt visant à donner un rapide aperçu de l'annotation retournée.
Bien que la plus-value de l'outil réside dans le source XML, cette interface vise à mettre en avant l'usage que l'on peut faire des informations dispensées par le service : libellés principaux et nature des concepts identifiés, code interne CISMeF (1), labels reconnus, positions dans le texte, relations hiérarchiques ou terminologiques, catégorisations, temps de réponses, etc.
Dans la copie d'écran ci-dessous, on peut voir à gauche le texte annoté. Chaque élément en vert est un concept reconnu; des informations détaillées sont affichées lorsque l'on passe le curseur sur celui-ci (popup grise).
A droite sont listés pour chaque concepts reconnu : son libellé préféré, l'acronyme de la terminologie, son code origine (1), son CUI UMLS, si l'information est conditionnelle (2), les informations de contexte qui peuvent être utiles (2).
(1) : L'outil terminologique possède des codes internes qui sont basés sur le code d'origne des terminologies, les deux sont renvoyés par le service.
(2) : La condition, ainsi que le contexte n'en sont pour le moment qu'au stade prototypal.
5 - Réponse du service
La réponse du service correspond à la sérialisation en XML des objets java de sortie (ces derniers sont d'ailleurs récupérables par désérialisation).
Voici la signification des balises et attributs retournés :
- cis-sentences : liste des phrases
- timemillis : temps de traitement en ms
- cis-sentence : une phrase
- idsentence : numéro de la phrase
- position : position du début de la phrase dans le texte
- idpatient : déprécié
- iddoc : déprécié
- cis:indexation : une indexation donnée
- start : position de début de l'indexation
- end : position de fin de l'indexation
- idterm : identifiant du concept dans sa terminologie d'origine
- idcismef : identifiant du concept dans le système d'information CISMeF
- offset : liste des positions des termes composant le concept
- ter : acronyme de la terminologie du concept
- umlscui : identifiant UMLS du concept
- matchterms : liste des libellés ayant permis de retrouver le concept
- typeid : type_id CISMeF identifiant la nature du concept
- condition : élément modifiant la portée de l'information
- context : information pouvant être utilement rattachée au concept trouvé
- cis:term : libellé préféré du concept
- cis:label : chaine de caractère
- lang : langue de la chaine de caractère
- cis:altterms : liste des libellés alternatifs du concept
- cis:altterm : libellé alternatif du concept (synonyme)
- cis:categorization : liste des métatermes ou types sémantiques
- cis:category : un métaterme ou type sémantique
- idcategory : identifiant de la catégorie dans sa terminologie d'origine
- idcismef : identifiant de la catégorie dans le système d'information CISMeF
- origin : origine de la catégorie : cismef, umls, ou autre
- cis:descendants : liste des concepts en descendance hiérarchique avec le concept (enfants, petits-enfants, ...)
- cis:descendant : un concept en descendance hiérarchique avec le concept (enfant, petit-enfant, ...)
- cis:ancestors : liste des concepts ancêtres hiérarchiques du concept (parents, grands-parents, ...)
- cis:ancestor : un concept ancêtre hiérarchique du concept (parent, grands-parent, ...)
- cis:relateds : liste des concepts en relation sémantique avec le concept (parmi des natures de relations fiables choisies)
- cis:related : un concept en relation sémantique avec le concept (parmi des natures de relations fiables choisies)
- relationTypeId : identifiant interne CISMeF de la nature de la relation
- relationLabel : libellé de la nature de la relation
6 - Terminologies utilisées
MeSH
Medical Subject Headings
Éditeur: NLM (National Library of Medicine)
Le MeSH est un thésaurus biomédical publié et mis à jour par la National Library of Medicine (US), et utilisé notamment pour l'indexation des références bibliographiques de MEDLINE/PubMed. De langue anglaise, il est traduit dans de nombreuses autres langues, notamment en français par l'INSERM.
ATC
Anatomical Therapeutic Chemical classification
Éditeur: WHO
La classification ATC est utilisée pour classer les médicaments. C'est le Collaborating Centre for Drug Statistics Methodology de l'Organisation mondiale de la santé (OMS) qui la contrôle. Les médicaments sont divisés en différents groupes selon l'organe ou le système sur lequel ils agissent et/ou leurs caractéristiques thérapeutiques et chimiques. Le code ATC a la forme générale LCCLLCC où (L représente une lettre et C un chiffre). Dans ce système, les médicaments sont classés en groupes à cinq niveaux différents :
Le premier niveau : groupe anatomique (un caractère alphabétique)
Le deuxième niveau : groupe thérapeutique principal (deux caractères numériques)
Le troisième niveau : sous-groupe thérapeutique/pharmacologique (un caractère alphabétique)
Le quatrième niveau : sous-groupe chimique/thérapeutique/pharmacologique (un caractère alphabétique)
Le cinquième niveau : sous-groupe pour la substance chimique : le principe actif individuel ou l'association de principes actifs (deux caractères numériques)
CCAM
Classification Commune des Actes Médicaux
Éditeur: ATIH
La CCAM est une une nomenclature française destinée à coder les gestes pratiqués par les médecins, gestes techniques dans un premier temps puis, par la suite, les actes intellectuels cliniques. Cette classification sert à établir :
En médecine libérale et en milieu hospitalier, les honoraires des actes techniques réalisés lors des consultations
Dans les cliniques privées, les honoraires pour les interventions réalisées
Dans les hôpitaux publics et privés, le PMSI et sa tarification des séjours hospitaliers transmis à l'assurance maladie dans le cadre de la T2A
Le choix des actes de cette nomenclature revient à la Commission d'Évaluation des Actes Professionnels (CEAP) de la Haute Autorité de Santé.
CIM-10
Classification Internationale des Maladies - 10ème révision
Éditeur: WHO
La CIM-10 permet le codage des maladies, des traumatismes et de l'ensemble des motifs de recours aux services de santé. Les affections (symptômes, maladies, lésions traumatiques, empoisonnements) et les autres motifs de recours aux services de santé sont répertoriés dans la CIM avec une précision qui dépend de leur importance, c'est-à-dire de leur fréquence et de l'intensité du probléme de santé public qu'ils posent (par exemple, le chapitre des maladies infectieuses est le plus gros et le plus détaillé parce que ces maladies sont la première cause mondiale de morbidité et de mortalité).
MedlinePlus
Éditeur: NLM
MedlinePlus est un site tout public (professionnels, patients, usagers) de la National Library of Medicine (US) proposant de l'information de qualité et concernant la santé
Racines des Médicaments
Racines des spécialités pharmaceutiques françaises.
SNOMED int.
Systematized Nomenclature of MEDicine
Éditeur: ASIP Santé
La SNOMED internationale est une nomenclature pluri-axiale couvrant tous les champs de la médecine et de la dentisterie humaines, ainsi que la médecine animale. Il s'agit d'un systême de classification permettant de normaliser l'ensemble des termes médicaux utilisés par les praticiens de santé. La SNOMED a pour fonction d'attribuer un code à chaque concept permettant un grand nombre de combinaisons entre eux. Elle comprend également une liste des diagnostics interfacée avec la CIM-10. La SNOMED permet ainsi de stocker des informations médicales individuelles dans des entrepôts de données afin d'établir des outils d'analyse décisionnelle, de faciliter des décisions thérapeutiques, de contribuer aux études épidémiologiques et à l'enseignement. L'utilisation de SNOMED garantit l'universalité du vocabulaire médical.