1

我需要使用 python 处理HL7 v2.5 (OUL_R22) 消息(规模:10⁶ 单条消息等)的内容。为此,我正在解析 HL7 消息。起初我使用 python 包HL7apy转换为 JSON(请参阅堆栈:HL7 到 JSON 转换)。输出看起来不错,但在处理过程中出现了一些错误/错误,而且速度非常慢。所以我尝试了 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": [],
        ...
4

2 回答 2

1

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

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

这是 HL7 规范中的样子。 这就是 HL7 规范中 OBR/OBX 的样子

因此,引用 OBSERVATION[0].NTE[0] 之类的东西可以得到你想要的东西。据我所知,Mirth 强迫你编写代码来解决这个问题以及这个问题

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

于 2018-02-07T21:31:12.510 回答
0

到目前为止的解决方案:

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

于 2018-02-07T10:07:41.907 回答