首页 > 解决方案 > 使用 HL7APY 仅从 HL7 消息中过滤段

问题描述

我想获取 OBX 段,然后是字段 #3,即观察标识符。我的代码目前迭代所有内容,试图找到一个解决方案,只输出 OBX.field3,用于具有多个 hl7 消息的数据集。

hl7 = open(r"file.txt", "r").read()



try:
msg = parser.parse_message(hl7.replace('\n', '\r'), find_groups=True, validation_level=2)
except UnsupportedVersion:
msg = parser.parse_message(hl7.replace('\n', '\r'), find_groups=True, validation_level=2)


indent = "    "
indent_seg = "    "
indent_fld = "        "



def subgroup (group, indent):
indent = indent + "    "
print (indent , group)
for group_segment in group.children:
if isinstance(group_segment, Group):
subgroup (group_segment)
else:
print(indent_seg, indent ,group_segment)
for attribute in group_segment.children:
print(indent_fld, indent ,attribute, attribute.value)

def showmsg (msg):
print(msg.children[1])
for segment in msg.children:
if isinstance(segment, Segment):
print (indent ,segment)
for attribute in segment.children:
print(indent_fld, indent, attribute, attribute.value)
if isinstance(segment, Group):
for group in segment.children:
print (indent,group)
for group_segment in group.children:
if isinstance (group_segment, Group): 
subgroup (group_segment, indent)
else:
print(indent_seg, indent ,group_segment)
for attribute in group_segment.children:
print(indent_fld, indent, attribute, attribute.value)

showmsg (msg)`enter code here

标签: pythonhl7

解决方案


如果你find_groups=True改为find_groups=Falseinparser.parse_messsage(..你只需要这个 showmsg

def showmsg (msg):
    for segment in msg.children:
        if segment.name == 'OBX':
            print (indent ,segment)
            for attribute in segment.children:
                if attribute.name == 'OBX_3':
                    print(indent_fld, indent, attribute, attribute.value)

推荐阅读