Utilisez un noeud GenericHL7Input pour recevoir des messages émanant des clients qui se connectent au noeud d'intégration par le biais du protocole MLLP via TCP/IP.
Il est conseillé d'utiliser si possible le noeud HL7DFDLInput pour les applications nouvelles et mises à jour car le modèle de message DFDL présente les avantages ci-dessous.
Pour plus d'informations sur le noeud HL7DFDLInput, voir Noeud HL7DFDLInput.
Le noeud GenericHL7Input écoute sur un port et lorsqu'un socket client se connecte à ce port, le socket crée une connexion pour le client. Lorsqu'une connexion est ouverte, un enregistrement des données est reçu et la fin de l'enregistrement est détecté par la présence d'un délimiteur configurable. Si une erreur se produit lors de la lecture des données, par exemple en cas de délai d'attente des données ou de la fermeture d'une connexion lors de l'attente de l'enregistrement complet, les données sont envoyées au terminal Echec. Si le terminal Echec n'est pas connecté, une exception est émise. Si la propriété Méthode de relance du noeud n'est pas définie sur Echec, le noeud fait de nouvelles tentatives jusqu'à ce que les données soient extraites avec succès ou que le nombre de relances défini par la propriété Seuil de relance soit dépassé.
Le noeud GenericHL7Input requiert des messages qui utilisent le protocole MLLP via TCP/IP. Si les octets MLLP de début ne sont pas présents, le message est envoyé au terminal Echec.
Le noeud GenericHL7Input traite les messages définis dans le domaine MRM. Le format du message HL7 dans l'ensemble de messages HL7v25P est utilisé pour analyser les messages. Si une erreur d'analyse se produit ou si des zones MSH obligatoires ne sont pas présentes, le message est transmis au terminal Echec. Pour plus d'informations sur les ensembles de messages, voir Présentation des ensembles de messages dans la documentation du produit IBM Integration Bus.
Vous pouvez configurer le noeud GenericHL7Input pour rechercher les doublons. Chaque message HL7 entrant comporte une zone MessageControlID dans le segment d'en-tête MSH qui identifie l'enregistrement. Si la propriété Vérifier les doublons est sélectionnée, tous les identificateurs sont stockés dans la file d'attente des doublons avec l'accusé de réception (ACK) renvoyé à l'expéditeur. L'identificateur d'un message entrant est vérifié par rapport aux identificateurs sauvegardés pour déterminer s'il s'agit d'un doublon. Lorsqu'un doublon est détecté, il n'est pas traité, mais le même accusé de réception envoyé avec le premier message est renvoyé à l'expéditeur. La file d'attente des doublons est spécifiée en tant que propriété de noeud.
Les identificateurs sont stockés dans la file d'attente des doublons pendant la durée définie par la propriété Période en double. Une fois cette durée écoulée, les identificateurs sont supprimés et les messages ayant le même identificateur ne sont plus traités en tant que doublons. Vous devez dimensionner la file d'attente des doublons de manière à ce qu'elle contienne le nombre maximal d'identificateurs de message attendu au cours de la période définie.
Si un message entrant n'est pas un doublon, le message est transmis au terminal Sortie du noeud GenericHL7Input pour traitement ultérieur. Si un doublon est détecté, le noeud GenericHL7Input renvoie l'accusé de réception (ACK) au demandeur. Si la génération de rapport en double est sélectionnée et qu'un doublon est détecté, le message est transmis au terminal Echec.
Les messages sont traités sous contrôle transactionnel. Si le flux de messages est annulé, les identificateurs en double qui ont été ajoutés à la file d'attente des identificateurs en double sont supprimés. Ainsi, si le message est soumis une deuxième fois, il n'est pas identifié en tant que doublon et il est traité en tant que nouveau message.
Si une erreur se produit lors de la lecture des données, comme en cas de délai d'attente des données ou de la fermeture d'une connexion lors de l'attente de l'enregistrement complet, les données sont envoyées au terminal Echec. Si le terminal Echec n'est pas connecté, une exception est émise. Si la propriété Méthode de relance du noeud n'est pas définie sur Echec, le noeud fait de nouvelles tentatives jusqu'à ce que les données soient extraites avec succès ou que le nombre de relances défini par la propriété Seuil de relance soit dépassé.
Pour plus d'informations sur HL7, voir Health Level Seven International.
Le noeud GenericHL7Input est contenu dans le tiroir Healthcare de la palette de noeuds de flux de messages et il est représenté dans IBM Integration Toolkit par l'icône suivante :
Lorsqu'un noeud GenericHL7Input est utilisé dans un flux de messages, les messages transmis au terminal Sortie contiennent des messages HL7 analysés où les octets MLLP de début et de fin ont été supprimés. L'arborescence de messages contient des en-têtes MQMD et MQRFH2 afin que le message puisse le cas échéant être écrit directement dans une file d'attente. Le corps du message contient un message HL7 dans le domaine MRM. Le flux de messages a pour objet de renvoyer un accusé de réception (ACK) au demandeur.
Le noeud GenericHL7Input est transactionnel. Lorsque le flux de messages dans lequel il est utilisé se termine avec succès, tous les messages écrits sous la transaction sont validés, y compris le message dans la file d'attente qui sauvegarde les ID en vue de la détection des doublons.
Si un échec se produit sur le noeud GenericHL7Input, le message est transmis au terminal Echec. LocalEnvironment.HL7 contient les zones qui apparaissent dans le tableau Environnement ci-dessous. Ces zones fournissent des informations servant à générer un accusé de réception négatif (NACK) ou à créer un message d'erreur.
Zone | Description |
---|---|
FlowMilestoneReached | Indique l'action effectuée lorsque l'erreur se produit. |
SendNACK | Envoie en réponse un accusé de réception négatif (NACK). |
EndConnection | YES : ferme la connexion. NO : Ne ferme pas la connexion. |
HL7RC | Code retour HL7. |
ErrorCondition | Texte d'erreur à inclure dans l'accusé de réception négatif (NACK). |
Si EndConnection est défini sur YES, la connexion doit être fermée. Cette action se produit lorsque le message entrant ne contient pas les délimiteurs MLLP corrects. Le système considère alors que le protocole MLLP n'est pas pris en charge.
Les zones HL7RC (code retour HL7) et ErrorCondition sont disponibles pour fournir des informations dans l'accusé de réception négatif (NACK) renvoyé au demandeur.
Flow Milestone Reached | Code retour | Texte d'erreur |
---|---|---|
DETECTDUPLICATE | AR | Error checking duplicates |
PARSE | AE | Input message MSH parsing or validation error |
BUILDACK | AR | Error while building ACK message. (Cette erreur se produit lorsqu'un accusé de réception est renvoyé lorsque le message est un doublon). |
SENDACK | AR | Error while building ACK message (Cette erreur se produit lorsqu'un accusé de réception est renvoyé lorsque le message est un doublon). |
DUPLICATEERROR | AR | Failure during duplicate detection.
Duplicate queue is full. Failure during duplicate detection. Message processing failed. |
SAVINGDUPDATA | AR | Error while saving duplicate data |
DUPLICATE RECORD | AR | Duplicate record detected |
Le noeud GenericHL7Input est transactionnel. Lorsque le flux de messages dans lequel il est utilisé se termine avec succès, tous les messages écrits sous la transaction sont validés. Si le message se termine avec une exception qui n'est pas interceptée, tous les messages écrits sous la transaction sont annulés, y compris le message. Cette action inclut le message dans la file d'attente qui sauvegarde les ID en vue de la détection des doublons. Vous devez identifier les messages à annuler dans ces cas de figure et vous assurer que les autres messages, comme les messages d'erreur, ne sont pas écrits sous la transaction.
Après avoir ajouté une instance d'un noeud GenericHL7Input à un flux de messages, vous pouvez la configurer
Toutes les propriétés obligatoires pour lesquelles vous devez entrer une valeur (celles qui ne comportent pas de valeur par défaut) sont marquées par un astérisque.
Terminal | Description |
---|---|
Echec | Terminal de sortie vers lequel un message est acheminé si une erreur se produit. |
Sortie | Terminal de sortie vers lequel le message est acheminé s'il est extrait avec succès d'une ressource externe. |
Interception | Terminal de sortie vers lequel est acheminé le message si une exception est envoyée en aval et interceptée par ce noeud. Les exceptions sont interceptées si ce terminal est relié. |
Les tableaux suivants décrivent les propriétés du noeud. La colonne ayant l'en-tête O indique si la propriété est obligatoire (marquée d'un astérisque si vous devez obligatoirement entrer une valeur si aucune valeur par défaut n'est définie). La colonne ayant l'en-tête C indique si la propriété est configurable (vous pouvez modifier la valeur lors de l'ajout du flux de messages au fichier BAR à des fins de déploiement).
Propriété | O | C | Portée par défaut | Description |
---|---|---|---|---|
Nom du noeud | Oui | Non | GenericHL7Input | Nom du noeud. |
Description abrégée | Non | Non | Courte description du noeud. | |
Description détaillée | Non | Non | Texte qui décrit à quoi sert le noeud dans le flux de messages. |
Propriété | O | C | Portée par défaut | Description |
---|---|---|---|---|
Vérifier les doublons | Oui | Non | Non sélectionné | Détermine si des messages en double sont détectés, comme indiqué par l'identificateur de message unique dans l'en-tête MSH HL7. Si un doublon est détecté, l'action suivante est effectuée :
|
Signaler les doublons | Oui | Oui | Non sélectionné | Détermine si des messages en double qui arrivent dans le délai indiqué génèrent un message de notification d'erreur. |
Période en double | Non | Oui | 86400 | Définit (en secondes) la durée pendant laquelle les messages d'identificateur sont conservés avant leur expiration. Au-delà de cette période, les doubles ne sont pas reconnus et ils sont traités comme d'habitude. La valeur par défaut (86400) est égale à 24 heures. Cette propriété est obligatoire si l'option Vérifier les doublons est sélectionnée. |
File d'attente des identificateurs en double | Non | Non | Définit la file d'attente qui contient la liste des ID en double en cours par rapport à laquelle sont vérifiés les messages entrants. Cette propriété est obligatoire si l'option Vérifier les doublons est sélectionnée. |
|
Octets MLLP de début | Oui | Non | 0B | Définit l'octet de début qui fait partie du protocole MLLP et qui est supprimé avant que le message soit analysé et traité. |
Reconnaître les doublons | Oui | Oui | Non sélectionné | Détermine si des messages d'accusé de réception sont envoyés lorsque des messages en double sont détectés. |
Propriété | O | C | Portée par défaut | Description |
---|---|---|---|---|
Caractéristiques de la connexion | Oui | Oui | 1111 | Connexion TCP/IP pour l'application source, au format nomhôte:port |
Délai d'attente des données (secondes) | Oui | Oui | 60 | Durée pendant laquelle le noeud écoute sur une connexion afin d'obtenir plus de données après l'arrivée du premier octet de données. Vous pouvez spécifier n'importe quelle durée en secondes. La valeur par défaut est 60 secondes. Lorsque ce délai est dépassé, toutes les données disponibles sont envoyées au terminal Echec. |
Propriété | O | C | Portée par défaut | Description |
---|---|---|---|---|
Délimiteur | Oui | Non | Délimiteur personnalisé | Cette propriété n'est pas modifiable. |
Octets MLLP de fin | Oui | Oui | 1C0D | Octets MLLP de fin utilisés comme délimiteur d'enregistrement HL7. Ils sont supprimés par le noeud GenericHL7Input. |
Propriété | O | C | Portée par défaut | Description |
---|---|---|---|---|
Méthode de relance | Oui | Non | Intervalle de relance abrégée (secondes) | Indique comment le noeud traite un échec du flux. Les options valides sont :
|
Intervalle de relance abrégée (secondes) | Oui | Oui | 0 | Intervalle, en secondes, entre chaque relance si l'option Seuil de relance a une valeur différente de zéro. |
Seuil de relance | Oui | Oui | 0 | Nombre de fois où la transaction de flux est relancée lorsque la Méthode de relance est Intervalle de relance abrégée (secondes). |
Intervalle de relance longue (secondes) | Oui | Oui | 300 | Intervalle entre les relances si la Méthode de relance est Relance abrégée et longue et si le seuil est dépassé. |