【问题标题】:Parsing HL7 v2 and converting to JSON/XML解析 HL7 v2 并转换为 JSON/XML
【发布时间】:2018-01-23 14:33:02
【问题描述】:

我需要使用 python 处理 HL7 v2.5 (OUL_R22) 消息(规模:10⁶ 单条消息及更多)的内容。为此,我正在解析 HL7 消息。起初我使用 python 包 HL7apy 来转换为 JSON(参见 Stack: HL7 to JSON conversition)。输出看起来不错,但在处理过程中出现了一些错误/错误,而且速度非常慢。所以我尝试了将 java 库 HAPI 转换为 XML(参见 Stack: Converting HL7 v2 to JSON)。可以使用包 xmltodict 将 XML 文件作为 dict 读取。与 HL7apy 相比,转换速度快了 50 倍。但是输出的结构是不一致/异构的。 HAPI 以某种方式将片段包装到新的组中,例如 OUL_R22.SPECIMEN / .ORDER / .RESULT。问题是:

HAPI 能否产生一个平面输出或一个长度等于输入段的唯一出现次数的数组?或者你可以在某处添加一个“保留原始结构”吗?


为了让事情更清楚:我需要处理 OBX 段的内容。

输入看起来像这样:

MSH|...
PID|...
PV1|...
SPM|...
OBR|...
ORC|...
NTE|...
NTE|...
TQ1|...
OBX|...
OBX|...
...

输出的结构如下所示(当然是 XML):

OUL_R22
    MSH
    OUL_R22.PATIENT
    OUL_R22.VISIT
    OUL_R22.SPECIMEN
        OUL_R22.ORDER
            OUL_R22.TIMING_QTY
                ...
            OUL_R22.RESULT
                OBX
            OUL_R22.RESULT
                OBX

有时候是这样的:

OUL_R22
    ...
    OBX

或者像这样:

OUL_R22
    ...
    OUL_R22.SPECIMEN
        OBX

这真的很矛盾。


我想要的是这样的:

OUL_R22
    MSH
    PID
    ...
    OBX

或者像这样:

[
    {
        "MSH": [],
        "PID": [],
        ...
        "OBX": [],
        ...

【问题讨论】:

  • 您正在尝试从复杂而原始的协议(如 HL7)进行双重转换:-| .首先,我建议在您的问题中添加您感兴趣的 HL7 和 XML 部分的真实示例以及预期的输出。其次,当 HAPI 产生不可预测的结果时,请尝试仔细分析这些情况。您还可以在hapifhir.github.io/hapi-hl7v2/devbyexample.html 处查看“解析”部分。也许您最好在 HL7 特定论坛上发布问题。
  • 匿名化数据需要很长时间,所以我希望处理 HAPI 的 xml 输出的人能解决这个问题。我确实检查了有助于创建输出的“解析部分”。但也许你是对的,我应该向 HL7 特定的听众提出我的问题。感谢您的建议!
  • 欢迎。 HL7 可能非常棘手,因此跟踪失败案例很重要。

标签: json xml hl7 hapi hl7-v2


【解决方案1】:

这些组是 HL7 语法的基本组成部分——我一直对 Mirth 和其他接口引擎感到困惑,他们在使用 HL7v2 的语法中忽略了它们。

OBR/OBX 组合有很多组,因为两者之间有很多嵌套关系。例如,OBR 之后的 NTE 应用于整个 OBR,但每个 OBX 之后的 NTE 单独应用于该 OBX。

这是 HL7 规范中的内容。

因此,引用 OBSERVATION[0].NTE[0] 之类的内容可以得到你想要的。据我所知,Mirth forces you to write code to solve this problemthis one.

归根结底,以你认为合适的方式解决问题,但偏离标准可能会反过来咬你一口。

【讨论】:

    【解决方案2】:

    目前的解决方案:

    设置 Mirth Connect 服务器以接收和转换 HL7 v2.x 消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 2015-05-12
      • 2015-07-28
      • 2012-10-15
      • 1970-01-01
      相关资源
      最近更新 更多