【发布时间】:2021-05-19 16:20:07
【问题描述】:
我正在使用版本为 2.3 的 HAPI hapi-structures-v25 库来解析 HL7v2 消息并将其转换为 FHIR 资源。在通过 TCP 侦听器使用 HAPI 接收和解析 HL7V2 消息时,我遇到了一个奇怪的问题。
确定消息的编码。以下是消息的前 50 个字符以供参考,尽管这可能不是问题所在:MSH|^~\&|test|DrJhonDoe|TEST|UNKNOWN|20210216190432||ADT^A01^ADT_A01|60b647d4-b5a5 -4fae-a928-d4a3849de3c8|T|2.5
奇怪的是,当我尝试将此消息作为主函数中的字符串发送时,我没有收到此错误。只有当我通过 TCP/IP 将数据接收到我的 Java 函数时,我才会收到此错误。我尝试使用 Mirth 以及外部工具将 HL7 消息发送到我的接收 TCP 端口,结果是一样的。
这是我正在尝试处理的 HL7v2 消息示例
MSH|^~\\&|test|Dr.JhonDoe|TEST|UNKNOWN|20210216190432.7||ADT^A01^ADT_A01|60b647d4b5a54faea928d4a3849de3c8|T|2.5
EVN||20210216|20210216|
从 tcp/ip 接收数据时,我使用 UTF-8 字符集将字节转换为字符串。
InputStream in = connection.getInputStream();
OutputStream out = connection.getOutputStream();
receivedMessageSize = in.read(receivedByeBuffer);
String incomingHl7Message = new String(receivedByeBuffer, StandardCharsets.UTF_8);
我正在正确收到消息。但不确定为什么会出现错误。
【问题讨论】:
-
hl7Message传递给parser.parse时是否正确?你在调试器中检查过吗?您是否确认其中没有任何不可打印的字符?您可能需要使用一些显示不可打印字符的文本编辑器;记事本++可能是。 -
这正是我在这里面临的问题。我确定了这个问题。这是因为只获得
和 。通过普通的基本 TCP 接收数据时,我没有遇到这个问题。但是这个问题只有在通过 MLLP 接收数据时才会出现,我找不到更好的方法来处理传入字节中的这些字符@AmitJoshi
标签: java string tcp mirth hapi