J'essaie de configurer un écouteur mllp pour les messages hl7v2.x en utilisant camel.Comment générer un accusé de réception personnalisé avec apache camel hl7
Mon environnement
- chameau apache et la version des composants 2.18.3
Aussi je voudrais éviter l'utilisation de la bibliothèque HAPI, comme je préfère un analyseur personnalisé pour la réception et généré messages. Comme mes clients utilisent chacun des versions différentes de l'utilisation des champs standard et vraiment différents. C'est pourquoi il n'y a pas de confusion au type de données hl7 dans la route suivante, juste pour la chaîne. Je vais faire l'analyseur moi-même.
Et ma route (tous les haricots et les variables sont définies ailleurs dans le code, je pense qu'ils ne sont pas pertinents)
from("netty4:tcp://0.0.0.0:3333?
encoder=#encoderHl7&decoder=#decoderHl7&sync=true")
.log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
.unmarshal().string()
.to("file://" + rutaSalidaFichero)
;
Tout d'abord, comme prouver concept, je suis juste en train de copier tous les les messages reçus dans un répertoire du système de fichiers. Les messages sont correctement reçus et écrits dans le répertoire. Mais je ne sais pas comment générer et envoyer le ACK, un incorrect est automatiquement généré et envoyé.
Si j'envoie un message hl7 d'un système externe/expéditeur, le composant camel envoie le même message que l'accusé de réception, de sorte que le système expéditeur envoie une erreur en retour car ce n'est pas l'accusé de réception. J'envoie le message hl7 en utilisant mirth, dcm4chee, hapi ... le tout avec le même résultat.
Par exemple, si j'envoie le message suivant à partir d'un système extérieur/émetteur MSH |^~ \ & | LIS | LIS | HIS | HIS | 20170412131105 || OML^O21 | 0000000001 | P | 2.5 ||| AL ||| ||| 8859/1 1,0 PID | 1 || || 123456 & APELLIDO1 APELLIDO2^NOMBRE | 19200101 ORC | RP | 009509452919 | 317018426 20170412000000 |||||| OBR | 1 | 317018426 | 317018426 | CULT^CULTIVO
J'ai reçu le même que l'accusé de réception dans le système d'envoi. Ceci est le chameau générant l'accusé de réception comme message de réception MSH |^~ \ & | LIS | LIS | HIS | HIS | 20170412131105 || OML^O21 | 0000000001 | P | 2.5 ||| AL ||| 8859/1 | 1,0 || PID | 1 || || 123456 & APELLIDO1 APELLIDO2^NOMBRE | 19200101 ORC | RP | 009509452919 | 317018426 20170412000000 |||||| OBR | 1 | 317018426 | 317018426 | CULT^CULTIVO
Je n'ai pas trouvé dans les références de camel docs à la génération de l'ack, ou si je peux utiliser un "quelque chose" personnalisé pour le générer. Je voudrais changer ce comportement par défaut.
J'ai récrit la route il ressemble maintenant à ceci. de.. ("Netty4: tcp: //0.0.0.0: 3333 = encodeur # encoderHl7 et décodeur = # decoderHl7 & Sync = true") de .unmarshal() string() .onCompletion() modeBeforeConsumer() .transform (ack (AckCode.AA)) .end() .to ("fichier: //" + rutaSalidaFichero); Si je n'utilise pas onCompletion(). ModeBeforeConsumer(), je perds le message d'origine pour le reste de l'itinéraire, et l'accusé de réception est écrit dans le système de fichiers à la place du message d'origine. Les commentaires et suggestions sont vraiment les bienvenus. – usuario