您的位置:首页 > 其它

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

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'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  工作