【问题标题】:HL7 2.7 and Camel mina2HL7 2.7 和骆驼 mina2
【发布时间】:2014-02-01 14:38:44
【问题描述】:

我们的客户将 HL7 消息格式从 2.3 更改为 2.7,我对新的消息格式有一些问题。基本上我们可以通过这种方式使用 mina2 协议来路由消息:

<route>
<from uri="mina2:tcp://10.124.199.40:2575?sync=true&amp;codec=#hl7codec&amp;minaLogger=true" />
[...]
</route>

在消息标准升级之前它运行良好。确实,将格式从 2.3 更改为 2.7 不起作用,我们收到以下 DEBUG 消息:

 2014-01-13 10:15:57,361 DEBUG HL7MLLPDecoder [104]  - Start scanning buffer at position 0
 2014-01-13 10:15:57,361 WARN  HL7MLLPDecoder [122]  - Ignoring unexpected 1st end byte 28. Expected 2nd endpoint 
 2014-01-13 10:15:57,361 DEBUG HL7MLLPDecoder [56]  - No complete message in this packet

我们正在使用 HAPI 作为消息解析器,恐怕这应该是问题所在,但在这种情况下,我期望 Camel 应该能够通过 mina2 路由消息,并且当我们阅读 HL7 消息时从我们的商务课程中发现了一个异常。但它没有,似乎 mina2 无法路由消息。

有什么线索吗?是否可以在 mina2 解析之前捕获 MLLP 消息,以确保我们的客户以正确的格式发送它?

我还有一个问题。我试图生成一个非常简单的 jUnit 类来向 String 消息发送消息,但我不知道如何实现 MLLP 消息,我的问题是:mina2 是不是这样(将 String 消息包装为 MLLP 格式) 还是在发送 HL7 消息之前我必须做的事情?

谢谢, 安德烈亚

【问题讨论】:

  • 类路径上是否有正确的 JAR。 AFAIR hapi har JAR 用于存在的不同 hl7 版本。所以你可能也需要更新它,才能使用 v2.7 JAR。

标签: routing apache-camel hl7 hl7-v2 mllp


【解决方案1】:

问题与通过 mina2 侦听器创建和发送的 MLLP 消息有关。在骆驼中,我是这样定义路线的:

<route>
    <from uri="mina2:tcp://localhost:2576?sync=true&amp;codec=#hl7codecDebug&amp;noReplyLogLevel=DEBUG" />
    <to uri="file://HL7Messages?fileName=${file:name.noext}&amp;fileExist=Append"/>
    <log message="MINA2 DEBUG Message received" loggingLevel="INFO" />
</route>

问题,基本上是在camel-hl7编解码器上:

<bean id="hl7codec" class="org.apache.camel.component.hl7.HL7MLLPCodec">
    <property name="charset" value="UTF-8" />
</bean> 

当然,我实际上无法看到消息的内容,所以我只是在 HL7MLLPCodec 类上添加了一些调试输出行,以帮助我了解问题所在。

现在将编解码器从官方 apache 切换到我的调试版本,我可以看到发送到 mina2 的所有字节,然后再解码并重定向到下一个路由步骤。

回顾一下,(我很确定我将来会一遍又一遍地重读这篇文章),这些是封装 HL7 消息所需的字节:

startByte 0x0b The start byte spanning the HL7 payload.
endByte1 0x1c The first end byte spanning the HL7 payload.
endByte2 0x0d The 2nd end byte spanning the HL7 payload.

要启动骆驼上下文,我使用这个:

Main main = new Main();
main.setApplicationContext(new FileSystemXmlApplicationContext("src/test/resources/META-INF/spring/LOCALHOST-camel-context.xml"));
main.setDuration(-1);

main.run();

ma​​inorg.apache.camel.spring.Main

类的一个实例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多