关于陆医生统计的工作程序备份

本文介绍了一个用于处理和分析医疗日志文件的Python程序。该程序能够读取指定的日志文件,通过正则表达式提取患者信息,如处方类型、费用等,并进行分类统计。最终输出每位患者的费用明细和各项医疗服务的总费用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值