L’Algorithme d’HPRIMATOR protégé par un brevet décrit la façon dont il fonctionne .
HPRIMATOR 1 avait un algorithme simple mais son utilisation était complexe:
- Il était fondé sur le BALISAGE des champs :
- Qui consistait à lire le document ligne par ligne et à en extraire des MOTS repérés par 1 ou 2 balises
- Par exemple le NOM était précédé de Madame, Monsieur (ou civilité), et suivi d’un Prénom
- Sauf que le NOM n’est parfois précédé de rien et que le prénom est parfois devant le Nom.
- La date de naissance précédée de Née le,
- Et la Date de rédaction du nom d’une Ville par exemple : Lorient , le 12/07/2019
- Par exemple le NOM était précédé de Madame, Monsieur (ou civilité), et suivi d’un Prénom
- Il fallait donc créer un GABARIT pour chaque type de document reçu,qui répertoriait exactement
- chaque type de balisage utilisé
- par chacun des correspondants pour annoncer l’état civil d’un patient.
- Qui consistait à lire le document ligne par ligne et à en extraire des MOTS repérés par 1 ou 2 balises
HPRIMATOR 2 a un algorithme puissant basé sur les Expressions Régulières :
- Il cherche n’importe où dans le document QUELQUE CHOSE QUI RESSEMBLE A !, grâce à une requête standardisée
ANALYSE : Localisation de la ligne administrative => EXTRACTION des champs
- La toute première chose que fait HPRIMATOR en analysant un document:
- c’est de repérer tous les MOTS ou GROUPES DE MOTS qui “RESSEMBLENT A”
- On voit dans la panneau “Magique” de droite,(véritable tableau de bord du Boeing)
- La liste de tout ce que le programme a trouvé d’exploitable dans le document et qui “ressemble à…”
N° | Liste | Définition | Exemple |
1 | Civilité | Toute EXPRESSION qu’on retrouve habituellement sur ou avant la ligne du NOM de famille | madame |
2 | Prénom | Toute expression qui est également présente dans la Liste exhaustive détaillée des prénoms habituels de tous mes patients (Il faut donc une liste au départ) | Jean-christophe |
3 | Villes | Toute EXPRESSION qu’on retrouve habituellement sur la ligne de la date de Rédaction | Lorient le, 12/07/2019 |
4 | DDN | Toute expression formatée comme une date, classée par ordre antichronologique (date la plus ancienne d’abord) | née le 14 juillet 1789 |
5 | DATE | Toute expression formatée comme une date, classée par ordre chronologique (date la plus récente d’abord) | Lorient le, 12/07/2019 |
6 | TITRE | A noter que le champ TITRE, sert uniquement à reconnaître le type de document, pour lui donner une “Nom Court” abrégé qui puisse rentre dans la case “Mnémonique-labo” du logiciel Médycs
|
Dossier validé => BIO |
- A partir de ces 4 renseignements facile à trouver :
- Civilités,
- Prénoms,
- Villes
- et Dates
- nous allons appliquer une logique Binaire associative ( SI A ET B => ?) qui va nous permettre d’isoler 2 lignes et 2 lignes seulement (appelées les “LIGNES MAGIQUES“) car ces 2 lignes contiennent à elles seules tous les renseignements qui nous intéressent.
- La Date Magique
- La Ligne magique
- Il suffit maintenant d’analyser ces lignes et non plus “tout le document”
La Date Magique se reconnait par la règle binaire associative suivante :
=> Ligne qui contient une "Ville" et une "Date"
Pour les Programmeurs :
Le code est détaillé en PASCAL pour Delphi, car la syntaxe des Expressions Régulières varie un peu dans ses options, selon les langages.
Uses RegularExpressions; Var Match : TMatch ; begin // Isole dans le RTF la ligne qui contient une Ville et une Date // séparées par un nombre quelconque de caractères quelconques // Soit la règle : .+ => Un point suivi d'un + // Regex Option = IGNORECASE : Quelle que soit sa CASSE (Lorient ou LORIENT) TRegex.Match = (RichEdit.TEXT, UNE_VILLE_DE_LA_LISTE + '.+' + UNE _DATE_DE_LA_LISTE, [RoIgnoreCase] ); if Match.Success Then // Si Trouvée DATE_MAGIQUE := Match.value; // Pointe cette ligne // Une fois la Ligne DATE MAGIQUE isolée : il suffit d’en extraire la date // On retrouve facilement l'Expression d'une date dans tous les manuels sur RegEx // Soit ici p.e : 2 chiffres + 2 chiffres + 4 chiffres séparés par des / Regex.Match = (DATE_MAGIQUE, '\d{2}/\d{2}/\d{4}'); if Match.Success Then DATE_REDACTION := Match.value;
La Recherche de la Ligne Magique dite “administrative” est un peu plus complexe : “Nom + Prénom + Date de Naissance“
- Le principe est de lancer des procédures de reconnaissance successives par ordre de pertinence, jusqu’au succès:
La LIGNE MAGIQUE : c’est la ligne qui contient 3, 2, ou 1 seul mot significatif :
- Soit CIVILITE +
- PRENOM + DATE (appelée Ligne “Hyper magique” car tout y est)
- PRENOM seul
- un mot quelconque en MAJUSCULE (car 90% des nom de familles sont écrits en Majuscules)
- Soit Prénom +
- Date sur la même ligne
- Date sur la ligne suivante
- Soit par défaut si rien ne marche
- CIVILITE + DATE
- CIVILITE seule
etc …
Par défaut si aucune date n’est isolée pour les champs DDN et DATE :
- LA DATE DE NAISSANCE sera par défaut la date “la plus ancienne du document”
- LA DATE DE RÉDACTION sera par défaut la date “la plus récente du document”
Le concept le LIGNE MAGIQUE implique rapidement le concept d’ ANTI-LIGNE MAGIQUE (ou ligne maléfique)
- Qui est “La ligne qui ne doit jamais correspondre à une ligne magique”, et qui sera donc exclue systématiquement de toute recherche.
Par exemple dans :
- Courrier du Docteur Durand au Docteur Hild
- Double à Madame DUPONT Germaine ergothérapeute
- Concernant Madame Germaine DURAND,
…
- L’algorithme va pointer directement sur “Germaine DUPONT” selon la règle “Civilité + Prénom”, ce qui est erroné
- Je dois donc mettre “Madame DUPONT Germaine” dans la liste de exclusions (On se méfiera de même des noms de rues comme “Victor HUGO”)
- Il est donc indispensdable d ‘utiliser et d’enrichir les listes du programme pour augmenter la pertinence de ses recherches.
On peut par exemple ici : (pour contourner l’ambiguïté)
- placer le groupe d’expressions “Concernant Madame” dans la liste des civilités officielles (la taille des listes n’est limitées que par la puissance du matériel)
- Et classer les Civilités par ordre de taille inverse (Les grands d’abord)
- “Concernant Madame” sera donc évalué avant “Madame” tout seul
Voir CONFIGURATION / LISTE / Clic droit / Classer | ![]() |
Téléchargement
ATTENTION : Ce programme extrêmement puissant et extrêmement efficace, nécessite un minimum d’apprentissage, de paramétrage, de rigueur et de tolérance, avant d’atteindre son niveau optimum d’utilisation …
Ce programme utilisé tous les jours au cabinet, bénéficie de mises à jours régulières. (Veillez à télécharger régulièrement la dernière version)
MENU
- Principe
- Matériel
- Algorithme
- Mode Auto
- Mode RTF-Curseur
- Mode PDF-Presse papier
- Mode Manuel
- Prise en mains
- Apprentissage & LISTES
- Les Boutons
- Les Options
- Les Outils
- Les Diodes
- Échec ?
- Des Bugs et Débug
- Dossiers
- Fichiers
- Configuration
- Expressions Régulières
- Sauvegardes
- Les règles du document bien conformé
Mises à jours