Espace epiBrain

Présentation

epiBrain est une "bibliothèque à liaison dynamique" (dll) qui permet à toute application sous Windows de bénéficier des moteurs de traitement de l'information qui animent Episodus. Pour l'instant seul le moteur de codage automatique a été rendu disponible, mais d'autres composants suivront probablement.

epiBrain a vu le jour à la demande et avec le soutien initial du Dr Alain Bouix et de l'association ARAVEG.

L'Association ARAVEG (Association pour le Réseau d'Accès aux soins de Veille sanitaire et Epidémiologique de la Guyane), créée dans le cadre d'un réseau ville-Hôpital a pour objet, de manière générale, de contribuer dans un souci de qualité et de sécurité, au fonctionnement du « Réseau de soins non programmés pour la population de la bande côtière ».
Cette activité regroupe le recueil et le traitement statistique à visée épidémiologique des pathologies rencontrées à la garde libérale de l'Ile de Cayenne et la mise en place d'un réseau de veille sanitaire libéral regroupant toutes les communes du littoral.

Moteur de codage automatique

Le moteur de codage automatique est destiné à proposer automatiquement les codes les plus pertinents à partir d'une phrase en texte libre.

L'approche retenue est originale : elle consiste à utiliser les concepts du Lexique (l'ontologie d'Episodus) comme des « phares » qui « éclairent » certains secteurs de la classification avec un pinceau blanc pour les codes "obligatoires", un pinceau vert pour les codes "possibles" et un pinceau rouge pour les codes "interdits".

À partir d'une phrase donnée, un composant détecte les concepts qu'elle contient, éclaire la classification avec les phares correspondants et propose un ou plusieurs codes en fonction du motif construit par la superposition de ces pinceaux lumineux.

Cette approche présente plusieurs avantages :

Elle présente aussi des limitations puisqu'elle ne gère aujourd'hui ni les négations ni les phrases "multi-conceptuelles". Elle présume que la phrase, ou le segment de phrase, présentée est affirmative et ne concerne qu'un élément de santé.

Notre but n'était pas de produire un "gold standard" ou un corpus de référence, comme le Locas de nos amis belges, mais de produire un moteur qui part du véritable verbatim du médecin et lui propose sans effort les éléments classificatoires les plus pertinents. En celà, elle est suffisamment distincte pour être complémentaire des approches « par corpus de référence » comme le Locas, et nous avons bon espoir de permettre aux deux produits non seulement de s'interfacer, mais aussi de s'évaluer l'un par rapport à l'autre afin de progresser ensemble.

Moteur hybride

Puisque le moteur "heuristique" d'Episodus est complémentaire avec les approches à base de corpus développées en Belgique, epiBrain tire partie des deux moteurs. Il utilise le 3BT comme référence si la phrase à chercher est dans le corpus, et bascule sur le moteur Episodus sinon.

Installer

Pour installer epiBrain, il faut télécharger le fichier EpiBrain_inst.exe (environ 20 Mo) puis l'exécuter.

Après l'installation, testez que tout est en place en lançant EpiBrainTest.exe et en cliquant sur le bouton "Test".

Interfacer

La bibliothèque epiBrain.dll vous permet d'accéder à 5 fonctions :

getEpiBrainVersionDonne le numéro de version de la bibliothève
testEpiBrainPermet de vérifier très simplement qu'on peut échanger des informations avec la bibliothèque
initEpiBrainDémarre le moteur de bases de données. À lancer avant d'utiliser les fonctions suivantes.
getCodesFromTextLa fonction centrale du codage automatique : permet de transmettre une phrase et de récupérer le(s) code(s) correspondant(s).
getClassifLabelsFromCodesFonction "utilitaire" qui retourne le libellé des codes transmis.

Détail des fonctions :

getEpiBrainVersion

C/C++

char* getEpiBrainVersion(void) ;

Visual FoxPro

DECLARE string getEpiBrainVersion IN epiBrain.dll
Prototypes de la fontion getEpiBrainVersion

Cette fonction ne prend aucun paramètre, et renvoie une chaîne de caractères du type "1.1.0005"

testEpiBrain

C/C++

char* testEpiBrain(char* szToSearch) ;

Visual FoxPro

DECLARE string testEpiBrain IN epiBrain.dll string
Prototypes de la fontion testEpiBrain

Cette fonction renvoie la chaîne "OK" si on lui transmet "Test" et renvoie "NOT OK" sinon.

initEpiBrain

C/C++

int initEpiBrain(void) ;

Visual FoxPro

DECLARE int initEpiBrain IN epiBrain.dll
Prototypes de la fontion initEpiBrain

Cette fonction démarre le moteur de gestion de bases de données Borland Database Engine (BDE) utilisé par epiBrain. Il faut impérativement lancer cette fonction une fois (et une seule) avant de lancer (autant de fois qu'on veut) les fonctions qui suivent.

Le moteur est fermé automatiquement lors de la fermeture de la dll ; il n'est pas utile de s'en préoccuper.

En cas de succès, la fonction retourne 0 ; sinon, elle renvoie un code d'erreur.

getCodesFromText

C/C++

int getCodesFromText(char* szLanguage, char* szToSearch, char* szClassif, char* szPatInfo, char* szSoapSlot, char* szSeparators, char* szCodes, int iCodeLen) ;

Visual FoxPro

DECLARE int getCodesFromText IN epiBrain.dll string, string, string, string, string, string, string, int
Prototypes de la fontion getCodesFromText

Cette fonction reçoit un texte et en déduit les codes pertinents pour une classification donnée.

Les paramètres sont les suivants (dans l'ordre de passage à la fonction) :

szLanguageLa langue du texte, au format ISO - par exemple "fr" (qui est la valeur par défaut)
szToSearchLe texte à analyser.
szClassifLe code Lexique de la classification à utiliser : "6CISP" pour la CISP2 et "6CIMA" pour la CIM10.
szPatInfoNon utilisé actuellement.
szSoapSlotEmplacement dans la grille SOAP : soit rien, soit 'S' pour le motif de contact, 'O' pour l'examen, 'A' pour le diagnostic ou 'P' pour une procédure. Cette indication permet de filtrer les codes proposés (par exemple en occultant les codes d'actes dans la case Diagnostic)
szSeparatorsTransmettre le (ou les) caractères de séparation à insérer entre les codes dans le cas ou plusieurs d'entre eux seraient proposés. Si cette chaine est vide, le séparateur sera le signe ';'.
szCodesVariable qui reçoit les codes sélectionnés par epiBrain. Les codes, s'il y en a plusieurs possibles, sont séparés par des ';' : par exemple "F76;S10"
iCodeLenPasse à epiBrain la taille allouée à la variable szCodes par l'application appelante.

En cas de succès, la fonction retourne 0 ; sinon, elle renvoie un code d'erreur.

getClassifLabelsFromCodes

C/C++

int getClassifLabelsFromCodes(char* szLanguage, char* szClassif, char* szCodes, char* szLabels, int iLabelsLen) ;

Visual FoxPro

DECLARE int getClassifLabelsFromCodes IN epiBrain.dll string, string, string, string, int
Prototypes de la fontion getClassifLabelsFromCodes

Cette fonction transmet les libellés correspondant aux codes transmis, pour une classification donnée.

Les paramètres sont les suivants (dans l'ordre de passage à la fonction) :

szLanguageLa langue du texte, au format ISO - par exemple "fr" (qui est la valeur par défaut)
szClassifLe code Lexique de la classification à utiliser : "6CISP" pour la CISP2 et "6CIMA" pour la CIM10.
szCodesListe des codes dont on veut le libellé, séparés par des '|' : exemple "F76|S10".
szLabelsVariable qui reçoit les libellés séparés par des '|' : exemple "CE dans l'oeil|Furoncle/anthrax"
iLabelsLenPasse à epiBrain la taille allouée à la variable szLabels par l'application appelante.

En cas de succès, la fonction retourne 0 ; sinon, elle renvoie un code d'erreur.

Codes d'erreur

Par convention, les fonctions renvoient 0 en cas de succès.

1Erreur d'initialisation de la dll (pas de superviseur)
2Erreur d'initialisation de la dll (pas de contexte)
3Impossible de se connecter au BDE (moteur de base de données)
4Impossible d'initialiser le BDE
5La fonction initEpiBrain ne semble pas avoir été exécutée.
6Pointeur de variable incorrect.
7Variable vide.
8Erreur de fonctionnement de la base de données.
9Valeur incorrecte dans une variable d'entrée.
10Erreur de fonctionnement du moteur de base de données.

Traces

En cas de problème, ou pour vérifier que les paramètres sont bien échangés entre l'application appelante et la dll, il est possible de consulter le fichier de traces.

Le niveau de traces se règle en éditant le fichier "chemins.dat" situé dans le même répertoire que la dll. La troisième ligne doit contenir l'une des valeurs suivantes (plus la valeur est élevée, et plus les traces sont détaillées) :

T0Uniquement les erreurs
T1Egalement les avertissements
T2Egalement les étapes principales
T3Egalement les sous-étapes
T4Egalement les détails principaux
T5Egalement les détails fins

Les traces peuvent être consultées en ouvrant, avec le bloc-notes, le fichier "tracenau.inf" situé dans le répertoire de la dll.