【问题标题】:Read HL7 message without prescribing message type or event type or version读取 HL7 消息,无需指定消息类型或事件类型或版本
【发布时间】:2015-11-17 23:53:53
【问题描述】:

我需要将 HL7 用竖线分隔的消息读取到表示消息结构的自定义 Java 结构中。我需要在不使用任何消息类型、事件类型或版本特定方法或类的情况下完成所有这些,因为无论读取哪种 HL7 消息,我都需要此代码工作。我不想为每种不同的消息和事件类型编写一个阅读器。我需要获取所有细分和子字段。我查看了很多 HAPI 以查看它是否有针对此问题的预构建解决方案,但我什么也没找到。

是否有扩展 HAPI 类或迭代 HAPI 从解析器创建的底层消息结构来解决此问题?

此外,任何关于 HAPI 的好资源都将不胜感激。

【问题讨论】:

  • 底层消息结构将根据消息类型/事件而改变。我不确定你想用你的项目做什么,但很有可能你会发现非常非常少的项目需要消耗所有可能的消息类型/事件。就像任何类型的软件开发一样,您需要确定您的程序将要做什么以及它需要什么信息。这将确定您实际需要消耗的食物。
  • Need to parse HL7 message 的可能重复项

标签: java hl7 hapi


【解决方案1】:

看看HL7X library for Java。这个库让您可以将任何 HL7 转换为 XML。它不依赖于 MessageType、EventType 或版本(与 HAPI 有很大不同)。

例子:

MSH|^~\&|||||20121116122025||ADT^A01|5730224|P|2.5||||||UNICODE UTF-8
EVN|A01|20130120151827
PID||0|123||Name^Firstname^^^^||193106170000|w
PV1||E|

转化为

<?xml version="1.0" encoding="UTF-8"?>
<HL7X>
<HL7X>
    <MSH>
        <MSH.1>^~\&amp;</MSH.1>
        <MSH.6>20121116122025</MSH.6>
        <MSH.8>
            <MSH.8.1>ADT</MSH.8.1>
            <MSH.8.2>A01</MSH.8.2>
        </MSH.8>
        <MSH.9>5730224</MSH.9>
        <MSH.10>P</MSH.10>
        <MSH.11>2.5</MSH.11>
        <MSH.17>UNICODE UTF-8</MSH.17>
    </MSH>
    <EVN>
        <EVN.1>A01</EVN.1>
        <EVN.2>20130120151827</EVN.2>
    </EVN>
    <PID>
        <PID.2>0</PID.2>
        <PID.3>123</PID.3>    
        <PID.5>
            <PID.5.1>Name</PID.5.1>
            <PID.5.2>Firstname</PID.5.2>
        </PID.5>
        <PID.7>193106170000</PID.7>
        <PID.8>F</PID.8>
    </PID>
    <PV1>
        <PV1.2>E</PV1.2>            
    </PV1>
</HL7X>

然后您可以从基于字符串的 XML 中获取您的信息,或者您可以使用任何 XMLDocument 构建器对其进行解析。

【讨论】:

  • 我看到它错误地处理了 MSH 段... MSH-1 实际上应该是 |而 MSH-2 是其他保留字符。这意味着 MSH 段的所有索引都减一。话虽如此,它确实使事情变得简单,这非常好,感谢您的链接
【解决方案2】:

可以使用 HAPI 以通用方式解析消息,尽管您可能会发现自己编写了一些额外的代码并转换了一些输出,因为它不是为这种方式使用而设计的。

我的意思是它实际上是受支持的,只是你不会享受到 HAPI 的许多更高级功能的好处。

通过使用TerserVariesGenericCompositeGenericPrimitives 类,我能够立即启动并运行一个简单的通用解析器。这很简单,但它可以满足我的需要。

接下来我想看看MessageVisitor,看看我是否不能以一种不那么老套的方式完成一些工作(通过不那么依赖演员来阅读)。

祝你好运,希望对你有帮助

【讨论】:

    猜你喜欢
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多