我正在尝试使用camel为hl7v2.x消息设置mllp监听器。如何使用apache驼峰生成自定义ack hl7
我的环境
- Apache的骆驼和组件版本2.18.3
我也想避免使用HAPI库,因为我更喜欢一个自定义的解析器接收和产生消息。由于我的客户都是使用不同版本的标准字段和真正不同的字段用法。这就是为什么在下面的路由中没有对hl7数据类型进行解组的原因,只是为了字符串。我会自己做解析器。
我的路线(所有的豆类和变量在代码的其他地方定义,我认为他们是不相关)
from("netty4:tcp://0.0.0.0:3333?
encoder=#encoderHl7&decoder=#decoderHl7&sync=true")
.log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
.unmarshal().string()
.to("file://" + rutaSalidaFichero)
;
首先,作为证明的概念,我只是想复制所有收到的消息放入文件系统目录。消息被正确接收并写入目录。但我不知道如何产生和发送ACK,不正确的一个正在自动生成并发送。
如果我从外部/发送系统发送hl7消息,驼峰组件发送与ack相同的消息,所以发送系统发送一个错误作为回报,因为它不是预期的ack。我正在用hirth,dcm4chee,hapi发送hl7消息......所有这些都有相同的结果。
例如,如果我发送下面的信息从外/发送器系统 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
我收到了与发送系统中的ack相同的内容。这是骆驼产生ack作为接收消息 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 |||||| 201704.12亿 OBR | 1 | 317018426 | 317018426 | CULT^CULTIVO
我没有在骆驼文档中找到对ack生成的引用,或者如果我可以使用自定义“东西”来生成它。我想改变这种默认行为。
我已经重写的路线,因此现在看起来是这样。 从。( “netty4:TCP://0.0.0.0:3333编码器=#encoderHl7&解码器=#decoderHl7与同步=真”) .unmarshal()的字符串() .onCompletion()modeBeforeConsumer() .transform( ack(AckCode.AA)) .end() .to(“file://”+ rutaSalidaFichero); 如果我不使用onCompletion()。modeBeforeConsumer(),我会丢失路由其余部分的原始消息,并将ack写入文件系统而不是原始消息。评论和建议非常受欢迎。 – usuario