我需要使用 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": [],
...