关于陆医生统计的工作程序备份
2016-09-27 19:26
267 查看
import re import drlu expression=r'(远程OUT.*?) ' dic1={} name=[] result=[] results=[] f=file('D:\OldLogs\HosTransmit20160807.log') data= f.read() f.close() result1= drlu.dcollect(data) result2= drlu.rpremiun(data) result3= drlu.screen(result1,result2,expression) for line in result3: if re.findall(r'内科一',line): result.append(line) for k in result3:#以正则表达式直接将需要的两部分数据取出避开了切割所致的夹在两者之间的空格不统一的问题,不仅减少了一步异常处理和切割而且使程序更加稳定,能适应各种异常数据 a=re.findall(r'~~TB~1~.*?~',k)# a[0]中存储患者的单据号,票号,以及所用的药物 b=re.findall(r'(远程OUT.*?) ',k)# b[0]中存储患者的名字和该处方的价格 x=b[0].split('%%') # x[0][19:] 该处方的价格 # x[13][15:] 该处方患者的名字 # a[0][17:23] 处方号 # a[0][7:15] 该处方的单据号 try: if re.findall(r'静脉输液',a[0]): mate ='%s,%s,挂水,%s'%(x[13][15:],a[0][7:15],x[0][19:])+'\n' elif re.compile(r'B超常规检查|常规心电图检查').search(a[0]): mate ='%s,%s,检查,%s'%(x[13][15:],a[0][7:15],x[0][19:])+'\n' elif re.compile(r'血细胞|出血|血型|凝血|乙型肝炎|尿常规|血糖|尿|血清总胆固醇测定').search(a[0]): mate ='%s,%s,化验,%s'%(x[13][15:],a[0][7:15],x[0][19:])+'\n' elif re.compile(r'换药|清创|皮试').search(a[0]): mate ='%s,%s,治疗,%s'%(x[13][15:],a[0][7:15],x[0][19:])+'\n' else: mate='%s,%s,口服药,%s'%(x[13][15:],a[0][7:15],x[0][19:])+'\n' dic1[a[0][7:15]]=mate if not x[13][15:] in name: name.append(x[13][15:]) except: print'单据号为:%s 的数据有异常'%a[0][7:15] for w in dic1: score=dic1.get(w) results.append(score) times=0 dic={} total=0 for l in results: times+=1 score=l.split(',') total+=float(score[3]) dic[score[0]]=[0,0,0,0,0]#挂水,口服药,治疗,化验,b超 avg_times=total/times print '====陆医生医保统计=====\n' print '医保总费用:\t%.2f'%total print '平均方: \t%.2f'%avg_times print '处方数: \t%d\n'%times for n in results: score1=n.split(',') result1=dic.get(score1[0]) if score1[2]=='挂水': result1[0]+=float(score1[3]) if score1[2]=='口服药': result1[1]+=float(score1[3]) if score1[2]=='治疗': result1[2]+=float(score1[3]) if score1[2]=='化验': result1[3]+=float(score1[3]) if score1[2]=='检查': result1[4]+=float(score1[3]) dic[score1[0]]=result1 number=0 for line in name: try: score2=dic.get(line) number+=1 print '%s:\t挂水:%.2f\t口服药:%.2f\t治疗:%.2f\t化验:%.2f\t检查:%.2f'%(line,score2[0],score2[1],score2[2],score2[3],score2[4]) print except: print '%s 未能成功结算已扣除'%line print '共计%d人'%number print 'over'
相关文章推荐
- 关于web开发中如何彻底分离美工和后台程序工作的随想
- 关于VFP如何将SQL后台数据按周备份到前台的一段程序
- 简单LinuxC程序关于实现从终端获取一条语句并统计各种字符数量(字符输入输出)
- 关于网站文件自动备份程序的一点思考
- 关于高考招生录取的工作,不知道谁有信息发布方面的程序
- 关于工作,学习中定时备份的几个方法(cron,git,mail)
- 关于宿舍卫生打扫分配工作的程序
- Ubantu Nautilus 程序 时间日期 工作区 控制台 数据库 控制 统计 其他
- 一个关于字符串统计的程序
- 关于工作环境网络备份的
- HQL与SQL关于DATEDIFF的使用工作备份
- 简单LinuxC程序关于统计0~n有多少个0~9(main函数的参数)
- 关于网站文件自动备份程序的一点思考
- 关于程序,关于工作
- 工作中遇到的问题——mysql关于年龄,性别的统计
- 关于PHP微信h5棋牌程序开发数据库的备份
- 关于工作,学习中定时备份的几个方法(cron,git,mail)
- 我工作这几年(五)-- 在代码中加入一些关键统计信息来实时监控程序的运行状态
- 关于统计统计程序运行时间的问题
- 关于web开发中如何彻底分离美工和后台程序工作的随想