我想获取OBX段,然后输入字段#3,观察标识符。我的代码当前对所有内容进行迭代,试图为包含多个hl7消息的数据集找到一种解决方案,仅输出OBX.field3。
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
如果在find_groups=True
中将find_groups=False
更改为parser.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)