BlueGEEK Journal

Accueil > Manip’s > HPRIM/ Hprim.NET > Norme HPRIM

HPRIM

Norme HPRIM

dimanche 20 mai 2007, par bluegyn_spip

"H.PR.I.M. MEDECINS" - Version 3.0

RECOMMANDATION

"H.PR.I.M. Médecins" - Version 3.0 - Mars 1997

- Echange de données médicales entre

- Laboratoires d’Analyses Médicales ou Cabinet de radiologie

- et Cabinets médicaux

Document exclusivement réservé aux membres de l’association "H.PR.I.M.".

H.PR.I.M.

57, rue Saint-Louis-en l’Isle

75004 - PARIS


Ce protocole est destiné à véhiculer des données médicales (résultats d’examens biologiques, compte-rendus de radiologie ou courriers divers) entre professionnels de santé (laboratoires d’analyses biologiques, cabinets de radiologie, cabinets de médecins) par liaison télématique entre ordinateurs. Il est basé sur un protocole de communication du domaine public, ce qui le rend utilisable à partir de logiciels de communication existants.

La communication est à l’initiative de l’émetteur des données (laboratoire, cabinet de radiologie ou cabinet médical), qui compose le numéro de téléphone du destinataire (cabinet médical). Ce numéro de téléphone doit être réservé à cet usage. Associé à un modem intelligent, l’ordinateur du destinataire décroche et reçoit les données.

Les données sont transmises compactées et cryptées pour réduire les temps de communication et préserver la confidentialité. Elles comportent une structure minimale pour en faciliter l’intégration dans les dossiers informatiques des patients.

LA LIAISON TELEMATIQUE

Il s’agit d’une liaison asynchrone au standard RS 232. La configuration de la liaison RS 232 est de 8 bits de données, 1 bit de stop, sans parité. La vitesse de la liaison dépend du modem utilisé.

Les données transitent par paquets selon le protocole Kermit dont seules les fonctions de réception sont utilisées par l’ordinateur du cabinet médical destinataire. Ce protocole offre des garanties de vérification des paquets et de réexpédition des paquets erronés qui assurent une excellente fiabilité des transmissions.

Pour la suite de ce document, le lecteur sera supposé connaître Kermit et ses possibilités d’envoi de fichiers, de données et d’erreurs.

Kermit doit véhiculer sans transformation des fichiers compactés et cryptés. Le transfert se déroule donc en mode binaire ou image, en désactivant les fonctions qui transforment les caractères retour chariot ou nouvelle ligne.

LE FICHIER TRANSMIS

L’émetteur envoie un fichier ayant pour nom RESUTEXT. Le nom du fichier est important ; il indique que les données transmises le sont sous la forme de texte librement mis en page, éventuellement suivi de données codifiées. Dans le futur, des fichiers autrement nommés pourront transmettre des données structurées selon d’autres normes ou recommandations, afin de permettre une exploitation encore plus poussée des données.

Si le nom du fichier ne correspond pas à un protocole connu de l’ordinateur du destinataire, il doit être refusé et un message d’erreur doit être adressé à l’ordinateur de l’émetteur.

Le fichier est en trois parties : La première identifie la communication, le seconde contient les messages (résultats, compte-rendus ou courriers), la dernière marque la fin du fichier.

L’IDENTIFICATION

L’identification, première partie du fichier, n’est ni compactée ni cryptée. Elle est transmise en caractères ASCII ISO 8859/1. Elle occupe obligatoirement 256 octets structuré selon le détail de la table 1 ci-après. Le logiciel de réception utilise cette identification pour accepter ou refuser la communication.

Le nom de l’émetteur doit être répertorié car le cryptage des données repose sur un mot de passe convenu entre l’émetteur et le destinataire, et qui n’est pas transmis dans le protocole. Si le nom du cabinet destinataire ou celui du médecin sont erronés, la communication doit être interrompue ; il y a certainement une erreur de destinataire.

Octets 1 à 40

Nom de l’émetteur de la communication, cadré à gauche et complété à droite par des espaces.

Octets 41 à 80

Nom du cabinet destinataire de la communication, cadré à gauche et complété à droite par des espaces.

Octets 81 à 120

Nom du médecin dans le cabinet destinataire de la communication, cadré à gauche et complété à droite par des espaces.

Octets 121 et 122

Numéro de la table ASCII utilisée par l’émetteur. Ce numéro est inscrit en ASCII sur deux caractères cadrés à droite. La table 0 est la table ASCII 8859-1. La table 1 est la table ASCII 7 bits francisée et comportant certains caractères accentués. La table 2 est la table ASCII à 8 bits des compatibles PC. La table 3 est la table ASCII à 8 bits de Macintosh. Les autres numéros sont réservés à un usage futur.

Octets 123 et 124

Numéro de version du protocole utilisé : 03

Octets 125 à 256

Réservés à un usage futur et remplis d’espaces jusqu’à plus ample définition.

Table 1 : En-tête du fichier RESUTEXT, code ASCII ISO 8859-1

Lorsque la vérification s’effectue au cours de la communication, des messages d’erreurs peuvent être transmis à l’émetteur dans les paquets d’erreurs que supporte Kermit, numérotés selon la table 7.

En raison des différences entre les tables ASCII, il faut éviter d’utiliser des caractères accentués dans les noms de l’émetteur et des destinataires.

LE COMPACTAGE DES DONNEES

A la suite des 256 octets d’identification se trouvent les données compactées et cryptées.

Remarque : Il n’y a pas de caractère de fin de ligne après les 256 octets d’identification. Le 257ème octet correspond donc au premier caractère de la zone d’identification du patient (voir suite).

Avant d’être envoyées par l’émetteur, les données sont compactées de la manière suivante : dès qu’une séquence de 4 à 255 caractères identiques apparaît dans les données, elle est remplacée par une séquence de 3 octets selon le schéma de la table 2.

Premier octet

Caractère de contrôle ayant pour code ASCII 2 (en hexadécimal $02). Il indique la présence d’une répétition.

Deuxième octet

Le caractère qui doit être répété

Troisième octet

Le nombre de fois que le caractère doit être répété (entre 0 et 255)

Table 2 : Compactage des données

Ainsi par exemple, une répétition de 20 espaces sera représentée par les trois caractères dont les codes ASCII sont les suivants : 2 (caractère de répétition), 32 (espace) et 20 (nombre d’occurrences).

Si le caractère de code 2 -utilisé pour signaler les répétitions- figure dans le texte des données, il est remplacé par la séquence dont les codes ASCII sont 2, 2, 1.

LE CRYPTAGE DES DONNEES COMPACTEES

Après compactage, les données sont cryptées à l’aide d’un mot de passe convenu entre l’émetteur et le destinataire. Ce mot de passe doit contenir au moins 8 caractères, de préférence en mélangeant les majuscules, les minuscules, les chiffres et les ponctuations. En raison des différentes tables ASCII qui existent, les caractères accentués, les symboles de monnaies, les crochets, accolades et autres signes particuliers sont à proscrire.

Le mot de passe est utilisé comme un motif répétitif pour crypter les données. Chaque caractère des données est transformé par l’opération OU exclusif avec le caractère du mot de passe de même rang modulo la longueur du mot de passe. Le OU exclusif est appliqué en binaire sur les codes ASCII des caractères.

La table 3 détaille un exemple de cryptage. Pour faciliter la lecture, le mot de passe a 5 caractères (au lieu des 8 nécessaires au minimum).

En texte

En code ASCII hexadécimal

Les données

Le mot de passe

Essai de cryptage

PA321

45 73 73 61 69 20 64 65 20 63 72 79 70 74 61 67 65

50 41 33 32 31

L’opération OU exclusif entre les données et le mot de passe

Essai de cryptage

PA321PA321PA321PA

45 73 73 61 69 20 64 65 20 63 72 79 70 74 61 67 65

50 41 33 32 31 50 41 33 32 31 50 41 33 32 31 50 41

Les données cryptées

15 32 40 53 58 70 25 56 12 52 22 38 43 46 50 37 24

Table 3 : Exemple de cryptage

Le compactage renforce la sécurité du cryptage. Les résultats comportent souvent des lignes d’espaces ou de caractères de soulignement qui révèlent le mode de cryptage lorsqu’elle ne sont pas compactées.

Remarque : Même les caractères de fin de ligne doivent être compactés et cryptés.

LE DECRYPTAGE ET LE DECOMPACTAGE

Du coté du destinataire, le décryptage se déroule exactement comme le cryptage en appliquant à un octet de données l’opération OU exclusif avec le caractère du mot de passe de même rang modulo la longueur du mot de passe.

Le décompactage consiste à développer dans le texte préalablement décrypté les séquences de caractères commençant par le caractère de code ASCII 2.

LA STRUCTURE DES DONNEES

Après décryptage et décompactage, les données regroupent un ou plusieurs messages (résultats compte-rendu ou courrier). Chaque message comporte une zone d’identification du patient, les données du message sous forme texte, éventuellement les données du message (ou d’une partie du message) sous forme codifiée et une zone de fin. Les différentes zones sont repérées par un caractère de fin de ligne. Ce caractère de fin de ligne peut être soit un retour chariot (code ASCII 13) soit un caractère de nouvelle ligne (code ASCII 10). Les ordinateurs émetteurs qui séparent les lignes par une combinaison de caractères de contrôle doivent remplacer cette combinaison par un seul caractère, retour chariot ou nouvelle ligne.

La zone d’identification du patient comprend 12 lignes détaillées dans la table 4.

Ligne 1 Code patient facultatif
Ligne 2 Nom du patient
Ligne 3 Prénom du patient
Ligne 4 Première ligne de l’adresse du patient
Ligne 5 Deuxième ligne de l’adresse du patient
Ligne 6 Code postal sur 5 caractères, un espace puis la ville du patient
Ligne 7 Date de naissance du patient au format JJ/MM/AA
Ligne 8 Code de sécurité sociale sur 13 caractères, espace puis extension du numéro
Ligne 9 Numéro de dossier
Ligne 10 Date du dossier au format JJ/MM/AA
Ligne 11 Code correspondant sur 10 caractères, espace puis nom du correspondant
Ligne 12 Code prescripteur sur 10 caractères espace puis nom du prescripteur

Table 4 : Structure des données d’identification

Ensuite, suivent les lignes de compte-rendu sous la forme de texte libre, avec des lignes d’au plus 255 caractères.

Puis suivent les segments descriptifs du message (résultat) codifié, précédés pour les résultats d’analyses médicales par la ligne ****LAB**** terminée par un caractère de fin de ligne.

La fin du dossier est repérée par la ligne ****FIN**** terminée par un caractère de fin de ligne.

Remarque : Un même fichier peut contenir plusieurs messages, concernant un ou plusieurs patients.

TRANSFERT DE RESULTATS CODIFIES

Les compte-rendus codifiés sont transmis dans deux types de segments ou enregistrements :

- les segments TEX, qui contiennent des lignes de compte-rendu sous forme de texte directement éditable.

- les segments RES, qui contiennent des résultats d’analyses sous forme structurée.

Chaque ligne de compte-rendu peut être transmise dans un segment TEX, suivi si nécessaire d’autant de segments RES que cette ligne contient de résultats.

Les lignes de compte-rendu sous forme de texte libre suivant la zone d’identification et précédant la ligne "****LAB****" étant obligatoires, il est conseillé (pour simplifier le traitement des données et minimiser le volume d’information à échanger) ne pas utiliser les segments TEX et ne transmettre que les segments RES contenant les résultats que l’on veut décrire sous forme codifiée.

DESCRIPTION DES SEGMENTS

Un segment est un ensemble de champs ordonnés, de longueur variable, bornés par le séparateur "|"dont le code ASCII hexadécimal est 7C. Un segment se termine par un caractère de fin de ligne. La taille maximum d’un segment est de 255 caractères, séparateurs et fin de ligne inclus. Les champs non renseignés doivent être transmis vides, sauf s’il sont en fin de segment (ils peuvent alors ne pas être transmis, ainsi que les séparateurs suivant le dernier champ renseigné).

CHAMPS DU SEGMENT TEX

CHAMP

DESCRIPTION

VALEURS ET COMMENTAIRES

TEX-01

Type de segment

TEX

TEX-02

Libellé

Ligne de texte éditable

Table 5 : Structure du segment TEX

CHAMPS DU SEGMENT RES

CHAMP

DESCRIPTION

VALEURS ET COMMENTAIRES

RES-01

Type de segment

RES

RES-02

Libellé de l’analyse

En texte clair

RES-03

Code de l’analyse

Défini par le médecin ou selon codification retenue par la commission technique HPRIM

RES-04

Type de résultat

A pour numérique, N pour numérique, C pour code

RES-05

Résultat 1

Les résultats numériques doivent être transmis sans espace ni virgule. Le séparateur décimal est le point. Un résultat numérique peut être précédé de son signe + ou -

RES-06

Unité 1

Les unités sont exprimées en système MKSA

RES-07

Valeur normale inférieure 1

RES-08

Valeur normale supérieure 1

RES-09

Indicateur d’anormalité

L inférieur à la normale

H supérieur à la normale

LL inférieur à la valeur panique basse

HH supérieur à la valeur panique haute

N normal

RES-10

Statut du résultat

F validé

R non validé

C modifié, corrigé

RES-11

Résultat 2

Ce champ et les 3 suivants permettent de communiquer le résultat dans une deuxième unité

RES-12

Unité 2

RES-13

Valeur normale inférieure 2

RES-14

Valeur normale supérieure 2

Table 6 : Structure du segment RES

LA FIN DU FICHIER

La fin du fichier est marquée par la ligne ****FINFICHIER****, terminée par un caractère de fin de ligne. Comme les autres lignes de données, cette ligne est compactée et cryptée.

LES MESSAGES D’ERREUR

01

Le nom du fichier transmis n’est pas connu, n’est pas RESUTEXT

02

Le nom de l’émetteur n’est pas répertorié

03

Le nom du cabinet destinataire n’est pas valide

04

Le nom du médecin destinataire n’est pas valide

05

La table ASCII utilisée n’est pas connue

06

La version du logiciel de réception ne permet pas de recevoir ces résultats

07

L’identification ne comporte pas 256 octets

08

Tentative d’envoyer un deuxième fichier au cours de la même communication

09

Erreur de transmission

10

Problème local

11

Erreur de disque sur l’ordinateur du destinataire

Table 7 : Structure des données d’identification

EXEMPLES D’INFORMATIONS A TRANSMETTRE

COMPTE RENDU TEXTE LIBRE UNIQUEMENT

(type HPRIM Médecins version 1)

111000222

DUPUIS

Gilbert

12, rue de la Paix

La Bouzule

44264 NOUVOITOU

10/06/42

1420654395802 41

6224

10/02/97

CORBOULINT Cabinet du Docteur BOULIN

PREBOULINT Docteur Pierre BOULIN

-------------------------------------

 ! 1ère heure ! 2ième heure !


 ! VITESSE DE SEDIMENTATION ! 20mn ! 44 mn !


CHOLESTEROL TOTAL 2,38 g/l (N : 1,50 - 2,50)


soit 6,14 mmol/l (N : 3,87 - 5,93)

****FIN****

COMPTE RENDU TEXTE LIBRE SUIVI DES RESULTATS CODES

(Sans utilisation des segments TEX)

111000222

DUPUIS

Gilbert

12, rue de la Paix

La Bouzule

44264 NOUVOITOU

10/06/42

1420654395802 41

6224

10/02/97

CORBOULINT Cabinet du Docteur BOULIN

PREBOULINT Docteur Pierre BOULIN

-------------------------------------

 ! 1ère heure ! 2ième heure !


 ! VITESSE DE SEDIMENTATION ! 20mn ! 44 mn !


CHOLESTEROL TOTAL 2,38 g/l (N : 1,50 - 2,50)


soit 6,14 mmol/l (N : 3,87 - 5,93)

****LAB****

RES|VS 1ère heure|VS1|N|20|mn

RES|VS 2ème heure|VS2|N|44|mn

RES|CHOLESTEROL|CHOLTOT|N|2.38|g/l|1.50|2.50|N|F|6.14|mmol/l|3.87|5.93

****FIN****

COMPTE RENDU TEXTE LIBRE ET CODE

(Utilisation des segments TEX et RES)

111000222

DUPUIS

Gilbert

12, rue de la Paix

La Bouzule

44264 NOUVOITOU

10/06/42

1420654395802 41

6224

10/02/97

CORBOULINT Cabinet du Docteur BOULIN

PREBOULINT Docteur Pierre BOULIN

-------------------------------------

 ! 1ère heure ! 2ième heure !


 ! VITESSE DE SEDIMENTATION ! 20mn ! 44 mn !


CHOLESTEROL TOTAL 2,38 g/l (N : 1,50 - 2,50)


soit 6,14 mmol/l (N : 3,87 - 5,93)

****LAB****

TEX

TEX| -------------------------------------

TEX| ! 1ère heure ! 2ième heure !

TEX|------------------------------------------------------------------------------------------

TEX| ! VITESSE DE SEDIMENTATION ! 20mn ! 44 mn !

RES|VS 1ère heure|VS1|N|20|mn

RES|VS 2ème heure|VS2|N|44|mn

TEX|------------------------------------------------------------------------------------------

TEX

TEX|CHOLESTEROL TOTAL 2,38 g/l (N : 1,50 - 2,50)

TEX|---------------------------- soit 6,14 mmol/l (N : 3,87 - 5,93)

RES|CHOLESTEROL|CHOLTOT|N|2.38|g/l|1.50|2.50|N|F|6.14|mmol/l|3.87|5.93

****FIN****