Home My Page Projects Code Snippets Project Openings jHL7v3lib
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files Mediawiki

OpenSIL

EasyHL7

From jHL7v3lib Wiki
Jump to: navigation, search

Introduction

HL7 est une norme complexe. EasyHL7 a pour objectif de simplifier l'utilisation de HL7. Pour ce faire, EasyHL7 utilise un modèle allégé. (mode haut niveau)

Ce modèle allégé est remplis par l'utilisateur, puis est envoyé à une façade pour le transformer en message HL7. L'opération inverse est aussi possible (HL7 -> EasyHL7)

Attention, EasyHL7 utilisant un modèle allégé, vous ne pouvez pas utiliser EasyHL7 pour représenter l'ensemble des informations possibles par le domaine choisi. De même, lorsque vous recevez un message HL7, et que vous le transformez dans le modèle EasyHL7, vous observerez une perte d'information sur des champs inconsidérés comme non critiques.

Dans 99% des utilisations, le modèle EasyHL7 suffit à contenir toutes les informations dont vous aurez besoin. Néanmoins, jHL7v3lib vous offre la possibilité d'utiliser directement les classes du domaine que vous voulez. Ce mode est dit "bas niveau".

Dans ce cas, il va vous falloir utiliser les classes de la jar du domaine directement (ex.: jHL7v3eMeasure.jar).

Une fois votre message construit en mode bas niveau, vous allez devoir utiliser les classes de jEasyHL7 pour transformer votre message objet en XML.


Utilisation du mode haut niveau

L'utilisation du mode haut niveau se fait toujours en deux étapes:

Pour créer un message HL7:

  • Instancier et remplir les objets du modèle EasyHL7 (ex. classes du package org.oxygen.model.eMesure)
  • Envoyer vos instances vers la méthode toHL7() de la façade HL7Facade (singleton)


Exemple:

// On crée une instance d'un des objets du EasyHL7 modèle
EModele emodele = new EModele();
// TODO : Ici remplir les données de votre objet
// On transforme le modèle en message HL7
String hl7Message = HL7Facade.getInstance().toHL7(emeasure);


Pour créer un modèle EasyHL7 depuis un message HL7:

  • Envoyer votre message HL7 vers la méthode fromHL7() de la façade HL7Facade (singleton)
  • Récupérer votre Object (retour de la méthode fromHL7) et le caster vers le bon type EasyHL7.

Exemple:

// On transforme notre message HL7 vers des instances du EasyHL7 modèle
Object modele = HL7Facade.getInstance().fromHL7(hl7Message);
// On caste l'instance vers le type attendu
EModele emodele = (EModele)modele;

Remarque: Lorsque vous envoyez vos instances d'un modèle EasyHL7 vers la HL7Facade, des contrôles sont effectués pour s'assurer que les données minimales requises sont présentes. Dans le cas contraire, une exception est levée.

Remarque: Le modèle EasyHL7 embarque parfois directement des éléments du modèle bas niveau. Ceci est utilisé dans le cas de construction de messages complexes. Par exemple, pour créer des Entry dans les critères des sélection de la population des eMeasure, vous DEVEZ utiliser des objets bas niveau. Ceux-ci sont automatiquement transformés quand vous passez votre instance du modèle vers la HL7Facade

Utilisation du mode bas niveau

Pour utiliser le mode bas niveau, vous aurez besoin de connaître la norme HL7 et le domaine que vous voulez utiliser. Pour instancier les classes du mode bas niveau, vous devrez utiliser les librairies nommées de la façon suivante (par convention): jHL7v3monDomaine avec monDomaine le nom du domaine implémenté.

Par exemple, pour utiliser le mode bas niveau du domaine eMeasure, vous allez devoir utiliser les classes de la librairie jHL7v3eMeasure.

Une fois votre modèle construit, vous devez le transformer en XML. La transformation est assurée par une des classes de jEasyHL7: la classe JAXBbuilder.

JAXBbuilder est chargé de construire les Marshaller et les JAXBIntrospector utilisés lors des transformations XML -> modèle et modèle -> XML.


Pour transformer un message HL7 au format XML vers le modèle de bas niveau, appelez la méthode suivante:

Object lowLevelInstance = JAXBLoader.loadHL7(hl7Message, JAXBLoader.TYPE_MONDOMAINE);

TYPE_MONDOMAINE est un paramètre qui signale au JAXBLoader vers quel type de modèle transformer le message HL7. Par exemple, pour transformer une message eMeasure, utilisez JAXBLoader.TYPE_EMEASURE.

Si le mauvais type est choisi, une exception sera jetée.


La transformation d'un modèle bas niveau vers un message HL7 est aussi simple. Vous devez seulement récupérer un instance de Marshaller et la faire travailler sur votre instance d'objet bas niveau:

// Crée une instance de StringWriter pour écrire notre message HL7
StringWriter w = new StringWriter();
// Récupère le Marshaller
Marshaller marshaller = JAXBbuilder.getMarshaller();
// Transforme l'objet bas niveau et utilise le StringWriter pour y écrire le résultat
marshaller.marshal(lowLevelInstance, w);
// Récupère le contenu du StringWriter vers une String
String hl7Message = w.toString();