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.
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.
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.
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".
La bibliothèque epiBrain.dll vous permet d'accéder à 5 fonctions :
getEpiBrainVersion | Donne le numéro de version de la bibliothève |
testEpiBrain | Permet de vérifier très simplement qu'on peut échanger des informations avec la bibliothèque |
initEpiBrain | Démarre le moteur de bases de données. À lancer avant d'utiliser les fonctions suivantes. |
getCodesFromText | La fonction centrale du codage automatique : permet de transmettre une phrase et de récupérer le(s) code(s) correspondant(s). |
getClassifLabelsFromCodes | Fonction "utilitaire" qui retourne le libellé des codes transmis. |
Détail des fonctions :
C/C++ char* getEpiBrainVersion(void) ; Visual FoxPro DECLARE string getEpiBrainVersion IN epiBrain.dll
Cette fonction ne prend aucun paramètre, et renvoie une chaîne de caractères du type "1.1.0005"
C/C++ char* testEpiBrain(char* szToSearch) ; Visual FoxPro DECLARE string testEpiBrain IN epiBrain.dll string
Cette fonction renvoie la chaîne "OK" si on lui transmet "Test" et renvoie "NOT OK" sinon.
C/C++ int initEpiBrain(void) ; Visual FoxPro DECLARE int initEpiBrain IN epiBrain.dll
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.
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
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) :
szLanguage | La langue du texte, au format ISO - par exemple "fr" (qui est la valeur par défaut) |
szToSearch | Le texte à analyser. |
szClassif | Le code Lexique de la classification à utiliser : "6CISP" pour la CISP2 et "6CIMA" pour la CIM10. |
szPatInfo | Non utilisé actuellement. |
szSoapSlot | Emplacement 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) |
szSeparators | Transmettre 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 ';'. |
szCodes | Variable 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" |
iCodeLen | Passe à 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.
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
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) :
szLanguage | La langue du texte, au format ISO - par exemple "fr" (qui est la valeur par défaut) |
szClassif | Le code Lexique de la classification à utiliser : "6CISP" pour la CISP2 et "6CIMA" pour la CIM10. |
szCodes | Liste des codes dont on veut le libellé, séparés par des '|' : exemple "F76|S10". |
szLabels | Variable qui reçoit les libellés séparés par des '|' : exemple "CE dans l'oeil|Furoncle/anthrax" |
iLabelsLen | Passe à 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.
Par convention, les fonctions renvoient 0 en cas de succès.
1 | Erreur d'initialisation de la dll (pas de superviseur) |
2 | Erreur d'initialisation de la dll (pas de contexte) |
3 | Impossible de se connecter au BDE (moteur de base de données) |
4 | Impossible d'initialiser le BDE |
5 | La fonction initEpiBrain ne semble pas avoir été exécutée. |
6 | Pointeur de variable incorrect. |
7 | Variable vide. |
8 | Erreur de fonctionnement de la base de données. |
9 | Valeur incorrecte dans une variable d'entrée. |
10 | Erreur de fonctionnement du moteur de base de données. |
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) :
T0 | Uniquement les erreurs |
T1 | Egalement les avertissements |
T2 | Egalement les étapes principales |
T3 | Egalement les sous-étapes |
T4 | Egalement les détails principaux |
T5 | Egalement 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.