hl7
测试接口,传参文件为JSON 内嵌HL7。因为HL7的书写规范,查看Hl7如果不结构化,分分钟能把眼看瞎的节奏,搜了下Python竟然有Hl7库,借助该库写了一个简单的脚本,将Hl7消息可视化输出,先将参数文件写入临时文件,然后分析该文件。应该是So easy 只是简单的记录下。其中遇到了body中传两个Hl7消息的情况,只是将每个元素视作对象即可,一开始当做元素来处理,结果一直报错。
import hl7
import json,os
path = r'D:\Code\AutoTest\venv\Hl7\Hl7File'
path2 = r'D:\Code\AutoTest\venv\Hl7\Hl7File2'
class TransHl7File():
def GetCode(self):
CodeTmp = open(path, 'rb')
TTmp=json.load(CodeTmp)['request']['Head']
# EventCode = json.load(CodeTmp)['Request']['Head']['EventCode']
# TranCode = json.load(CodeTmp)['Request']['Head']['EventCode'] #直接取值有报错,待查原因
EventCode=TTmp['EventCode']
TranCode=TTmp['TranCode']
CodeTmp.closed #关闭文件
return (EventCode,TranCode)
def ViewHl7Msg(self):
(Ecode,Tcode) = self.GetCode()
if Ecode == Tcode: #判断服务代码是否一致,不一致则直接退出
print('服务代码: ',Ecode)
else:
print('服务代码不一致')
os._exit(0)
Hl7FileJson = open(path, 'rb')
Hl7Tmp = json.load(Hl7FileJson)['Request']['Body'] #获取body中的Hl7消息
if isinstance(Hl7Tmp,list): #处理当传递多条Hl7消息的情况
print('\nWarring :本条消息有',len(Hl7Tmp),'条Hl7消息----')
i = 0
while i < len(Hl7Tmp):
print('\n-------第 ', i + 1, ' 条消息-----------')
Hl7Res = hl7.parse(Hl7Tmp[i])
self.Hl7Pub(Hl7Res)
i += 1
else:
Hl7Res = hl7.parse(Hl7Tmp)
self.Hl7Pub(Hl7Res)
Hl7FileJson.closed
def Hl7Pub(self,Hl7Res):
for item in Hl7Res:
Msgtitle=str(item).split('|', 1)[0] #获取消息段名称
if MsgTitle =='NTE': #过滤不必要字段
continue
elif MsgTitle =='MSH': #首字段特殊处理
i = 1
# print(str(item).split('|',1)[0])
print('message :',str(item))
for value in str(item).split('|'): #拆分消息
if value !='': #过滤空值
print(MsgTitle,': 第',i,'位数据为:',value)
i=i+1
else:
i = 0
print('\nMessage :',str(item))
for value in str(item).split('|'):
if value !='':
print(MsgTitle,': 第',i,'位数据为:',value)
if '~' in value:
for vi in value.split('~'): #处理list型数据
print(vi)
x = 1
if '^' in vi: #处理多数据情况
for v1 in vi.split('^'):
print('------该子集第', x, '位数据为:', v1)
x=x+1
elif '^' in value:
y=1
for v2 in value.split('^'):
if v2 !='':
print('------该子集第', y, '位数据为:', v2)
y = y + 1
i = i + 1
if __name__ == '__main__':
Trans = TransHl7File()
# Trans.GetCode()
Trans.ViewHl7Msg()
相关阅读
1. 用户程序和运行库层面的文件”句柄” FILE* IO初始化时讨论了在运行库层面的文件句柄管理机制,工作流程如下FILE *file ->inin
题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一。跳房子的游戏规则如下:在地面上确定一个起点,
价值君注:近期我们会陆续推荐钛媒体用一年时间,深耕产业,挖掘出来的真正具有产业变革意义的独角兽领军者、以及具有前瞻力的投资人和
《 爬虫福利二 》 https://blog.csdn.net/PY0312 刚学爬虫花了4个小时写的,每一步备注的都很清楚,喜欢的朋友自己可以研究研究.
使用Java解析excel 由于工作原因需要解析excel表格的内容。于是,我决定利用Apache POI的支持库,用java程序解析Excel表。本文将讲解