Files
jupyter/体测单位/胜利采油厂.ipynb
T
2025-10-30 08:24:56 +08:00

26 KiB

体测人员导入

In [29]:
import openpyxl
import json


wb = openpyxl.load_workbook('data/胜利采油厂人员名单.xlsx',data_only=True)
sheet = wb.active
# sheets = wb.sheetnames
person = {}

for n in range(2, sheet.max_row+1):
    code = int(sheet.cell(n, 2).value)
    person.setdefault(code, {})
    dict1 = {}
    dict1['name'] = sheet.cell(n, 4).value
    dict1['sex'] = sheet.cell(n, 5).value
    dict1['unit'] = sheet.cell(n, 3).value    
    dict1['birth'] = str(sheet.cell(n, 6).value).replace('/','-').split(' ')[0]
    #dict1['phone'] = sheet.cell(n, 12).value 
    person[code] = dict1
filename = 'data/胜利采油厂人员.json'
with open(filename, 'w') as fl:
    json.dump(person, fl, ensure_ascii=False)
print(len(person),'ok')
412 ok

生成读卡系统文件

In [2]:
import json

filename = 'data/胜利采油厂人员.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
list1 = []
for k, v in dict1.items():
    dict2 = {}
    #if dict1['sex'] =='男':
    #    sex = 1
    
    dict2 = {'id':k,'name':v['name'],'gender':v['sex'],'birth':v['birth'],'unit':v['unit']}
    list1.append(dict2)
json_data = json.dumps(list1,ensure_ascii=False, indent=4)  

# 将 json 数据写入文件
with open("data/data_胜利采油厂人员.json", "w",encoding = 'utf-8') as file:
    file.write(json_data)   
print('ok')
ok

合并读卡系统文件

In [30]:
import json

filename = 'data/胜利采油厂人员.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)

filename = 'data/data_胜利采油厂人员(1).json'
with open(filename,'r') as fl:
    list1 = json.load(fl)
for item in list1:
    code = item['id']
    if code not in dict1.keys():
        print(code,item['name'],item['unit'])
        dict1.setdefault(code,{})
        dict1[code]['name'] = item['name']
        dict1[code]['sex'] = item['gender']
        dict1[code]['unit'] = item['unit']
        dict1[code]['birth'] = item['birth']
filename = 'data/胜利采油厂人员.json'
with open(filename, 'w') as fl:
    json.dump(dict1, fl, ensure_ascii=False)
print(len(dict1),'ok')
496834 李继升 QHSE监督中心
3532664 谭嘉辰 人力资源(组织)部
496657 张秀成 企业管理部(三基工作办公室)
495136 闫福霞 公共事业服务中心
494062 赵霞 公共事业服务中心
495293 赵振华 
689404 马科 胜利采油厂
498782 封莹 胜利采油厂
999999 孙振峰 
445607 王大明 
490000 陆岩玮 信息化服务中心
000000 焦瀛 胜利采油厂
424 ok

获取人员测试成绩

In [31]:
import json
import datetime
import csv
from datetime import date
import my_module as My

filename = 'data/胜利采油厂人员.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
filename = 'data/marks_20251023.csv'
re_ta = My.get_result(filename,dict1)


filename = 'data/result_胜利采油厂.json'
with open(filename,'w') as fl:
    json.dump(re_ta, fl, ensure_ascii=False) 
print(len(re_ta))
216

生成测试得分

In [ ]:
import json
import time
import my_module as My

#list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','height','weight']
list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp']
filename = 'data/result_胜利采油厂1.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl) 
for k, v in dict2.items():
    #print(k)
    if v['sex'] == '男':
        sex = 'M'
    else:
        sex = 'F'            
    if 'bmi' in v.keys():
        #bmi_data = v['height']['成绩'].split()[0]+','+ v['weight']['成绩'].split()[0]
        bmi_data = v['bmi']['成绩']
        data1 = {'code':k,'sex':sex,'age':v['age'],'item':'HeightWeight','result':bmi_data}
        dict2[k]['bmi'] = {}
        dict2[k]['bmi']['成绩'] = bmi_data
        dict2[k]['bmi']['score'] = My.cal_bmi(data1)
    for item_en in list_item:
        if item_en in v.keys():            
            data1 = {'code':k,'sex':sex,'age':v['age'],'item':item_en,'result':float(v[item_en]['成绩'].split()[0])}
            #print(k,v['name'])
            dict2[k][item_en]['score'] = My.cal_score(data1)
            #print(k,v[item_en]['成绩'],cal_score(data1))

filename = f'data/result_胜利采油厂1.json'
with open(filename,'w') as fl:
    json.dump(dict2,fl , ensure_ascii=False) 
print('ok!')        
ok!

补充人员信息

In [43]:
import openpyxl
import json


wb = openpyxl.load_workbook('data/胜利采油厂测试情况明细表(补充人员信息).xlsx',data_only=True)
sheet = wb.active
# sheets = wb.sheetnames
dict1 = {}

filename = 'data/result_胜利采油厂.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl) 
list1 = []
for n in range(2, sheet.max_row+1):
    code = int(sheet.cell(n, 1).value)
    unit = sheet.cell(n, 4).value
    dict1[code] = unit
for k, v in dict2.items():
    if int(k) not in dict1.keys():
        list1.append(k)
    else:
        dict2[k]['unit'] = dict1[int(k)]
for item in list1:
    del dict2[item]
filename = f'data/result_胜利采油厂1.json'
with open(filename,'w') as fl:
    json.dump(dict2,fl , ensure_ascii=False) 
print('ok!')        
ok!

导出测试人员信息

In [32]:
import json
import openpyxl

items = ['lung','grip','flexion','jump','pushup','situp','balance','reaction','step']
title = ['编号','姓名','性别','单位','部门','身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']

filename = 'data/result_胜利采油厂.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)

filename = 'data/胜利采油厂人员.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl)
    
list1 = []
for k, v in dict1.items():
    list2 = []
    list2.append(str(k).rjust(8,'0'))
    list2.append(v['name'])    
    list2.append(dict2[k]['sex'])
    list2.append(dict2[k]['unit'])
    if 'bmi' in v.keys():
        height = v['bmi']['成绩'].split(',')[0]
        weight = v['bmi']['成绩'].split(',')[1]
        list2.append(height)
        list2.append(weight)
    else:
        list2.append('')
        list2.append('')
    for item in items:
        if item in v.keys():
            list2.append(v[item]['成绩']) 
        elif item =='name':
            list2.append(v[item])
        else:
            list2.append('')
    
    list1.append(list2)
filename = 'data/胜利采油厂测试情况明细表.xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(title)
for row in list1:
    sheet.append(row)
    
wb.save(filename)

生成报告

In [ ]:
import requests
import json
import openpyxl


headers = {
    "Content-Type": "application/json; charset=UTF-8"
    }
filename = 'data/result_南京化工-2.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
list1 = []
file_path ='./南京化工第二批问卷/'
list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','bmi']
i=0
list2 = []
for  k, v in dict1.items():
    list1 = []
    mydata = {}
    
    id = str(k).rjust(4,"0")
    mydata['path'] = file_path+id+'-'+ v['name']+'.pdf'
    mydata['title'] = '南化公司'
    mydata['subtitle'] = ''#v['unit']
    mydata['id'] = id
    mydata['name'] = v['name']
    if v['sex'] == '男':
        mydata['gender'] = 'male'
    else:
        mydata['gender'] = 'female'
    
    mydata['month'] = v['month']
    mydata['fits'] = {}
    survey_list = ['tcm','psy57','spine']
    for item in survey_list:
        if item in  v.keys():
            mydata.setdefault('surveys',{})
            mydata['surveys'][item] = v[item]
            
    
    #mydata['fits'] = {}
    for item in list_item:
        if item in v.keys():
            mydata.setdefault('fits',{})
            if item in ['lung','pushup','step','situp']:
                mark = v[item]['成绩'].split()[0].split('.')[0]
            else:
                mark = v[item]['成绩'].split()[0]
            mydata['fits'][item] = {'mark':mark,'score':v[item]['score']}
    if len(mydata['fits']) >2 or len(mydata['surveys']) >0:
    #if len(mydata['fits']) >2 :    
        list1.append(mydata)
        list2.append([k,v['name']])
        i+=1
        x = requests.post('http://localhost:3003', data = json.dumps(list1), headers=headers)
        #print(id,v['name'],x.text)
        #print(mydata)
        #x.close()
print(i)

生成报告(单问卷)

In [20]:
import requests
import json
import openpyxl


headers = {
    "Content-Type": "application/json; charset=UTF-8"
    }
filename = 'data/result_南京化工-2.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
list1 = []
file_path ='./南京化工第二批问卷/'
list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','bmi']
i=0
list2 = []
for  k, v in dict1.items():
    list1 = []
    mydata = {}
    
    id = str(k)
    mydata['path'] = file_path+id+'-'+ v['name']+'.pdf'
    mydata['title'] = '南化公司'
    mydata['subtitle'] = v['unit']
    mydata['id'] = id
    mydata['name'] = v['name']
    if v['sex'] == 'm':
        mydata['gender'] = 'male'
    else:
        mydata['gender'] = 'female'
    
    #mydata['month'] = v['month']
    #mydata['fits'] = {}
    survey_list = ['tcm','psy57','spine']
    for item in survey_list:
        if item in  v.keys():
            mydata.setdefault('surveys',{})
            mydata['surveys'][item] = v[item]
            
    
    #mydata['fits'] = {}
    
    if len(mydata['surveys']) >0:
    #if len(mydata['fits']) >2 :    
        list1.append(mydata)
        list2.append([k,v['name']])
        i+=1
        x = requests.post('http://localhost:3003', data = json.dumps(list1), headers=headers)
        #print(id,v['name'],x.text)
        #print(mydata)
        #x.close()
print(i)
83

导入体检报告数据

In [ ]:
from pathlib import Path
import json
import shutil


target_directory = Path('./data/json')
filename = 'data/南京化工人员.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
# 遍历目标目录及其子目录获取所有文件
dict2 = {}
list2 =  ['总胆固醇','甘油三酯','尿微量白蛋白']
for fl in target_directory.glob('*.json'):
    if fl.is_file():
        code = fl.stem
        dict2.setdefault(code,{})
        dict2[code] = dict1[code]
        with open(fl,'r') as fl1:
            dict3 = json.load(fl1)
        for k, v in dict3.items():
            if k =='血压情况' and len(v)>0:
                dict2[code].setdefault('血压',{})
                list1 = [] 
                for item in v:
                    
                    dict2[code]['血压'][item['项目']] = item['结果']
                    if '状态' in item.keys():
                        list1.append(item['项目']+item['状态'])
                if len(list1)>0:
                    dict2[code]['血压']['状态'] = ','.join(list1)
                
            if k in list2:
                dict2[code].setdefault(k,{})
                dict2[code][k]['结果'] = v['结果']
                dict2[code][k]['参考值'] = v['参考值']
                if '状态' in v.keys():
                    dict2[code][k]['状态'] = v['状态']
            if k in ['空腹血糖','糖化血红蛋白']:
                dict2[code].setdefault(k,{})
                if '结果' in v.keys():
                    dict2[code][k]['结果'] = v['结果']
                    dict2[code][k]['参考值'] = v['参考值']
                if '状态' in v.keys():
                    dict2[code][k]['状态'] = v['状态']
            if k in ['ALT、AST、GGT','TSH、FT3、FT4']:
                for item in v:
                    xm = item['项目']
                    dict2[code].setdefault(xm,{})
                    if '结果' in item.keys():
                        dict2[code][xm]['结果'] = item['结果']
                    if '参考值' in item.keys():
                        dict2[code][xm]['参考值'] = item['参考值']
                    if '状态' in item.keys():
                        dict2[code][xm]['状态'] = item['状态']
            if k =='肾功能与尿微量白蛋白':
                for item in v['肾功能']:
                    xm = item['项目']
                    dict2[code].setdefault(xm,{})
                    if '结果' in item.keys():
                        dict2[code][xm]['结果'] = item['结果']
                    if '参考值' in item.keys():
                        dict2[code][xm]['参考值'] = item['参考值']
                    if '状态' in item.keys():
                        dict2[code][xm]['状态'] = item['状态']                
                dict2[code].setdefault('尿微量白蛋白',{})
                xm = v['尿微量白蛋白']
                if '结果' in xm.keys() and len(xm['结果'])>0:
                    dict2[code]['尿微量白蛋白']['结果'] = xm['结果']
                if '参考值' in xm.keys() and len(xm['参考值'])>0:
                    dict2[code]['尿微量白蛋白']['参考值'] = xm['参考值']
                if '状态' in xm.keys():
                    dict2[code]['尿微量白蛋白']['状态'] = xm['状态']    
                
            

filename = 'data/南京化工体检情况.json'

with open(filename,'w') as fl:
    json.dump(dict2, fl, ensure_ascii=False)                

导出体检报告数据

In [ ]:
import json
import csv
import openpyxl

filename = 'data/南京化工体检情况.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)

list1 = ["总胆固醇","甘油三酯","空腹血糖","糖化血红蛋白","谷丙转氨酶 (ALT)","谷草转氨酶 (AST)","γ- 谷氨酰转肽酶 (GGT)","促甲状腺激素 (TSH)","游离三碘甲状腺原氨酸 (FT3)","游离甲状腺素 (FT4)","肌酐","尿素氮","尿酸","尿微量白蛋白"]
title = ['编号','姓名','性别','血压','状态']
for item in list1:
    title.append(item)
    title.append('状态')
list3 = []
for k, v in dict1.items():
    list2 = []
    list2.append(k)
    list2.append(v['name'])
    list2.append(v['sex'])
    if '血压' in v.keys():
        xueya = v['血压']['舒张压']+'/'+v['血压']['收缩压']
        if '状态' in v['血压'].keys():
            zt = v['血压']['状态']
        else:
            zt = ''
    else:
        xueya = ''
        zt = ''
    
    list2.append(xueya)
    list2.append(zt)
    for item in list1:
        if item in v.keys() and '结果' in v[item]:
            list2.append(v[item]['结果'])
            if '状态' in v[item]:
                list2.append(v[item]['状态'])
            else:
                list2.append('')
        else:
            list2.append('')
            list2.append('')  
    list3.append(list2)

filename = 'data/南京化工体检相关数据明细.xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(title)
for row in list3:
    sheet.append(row)
    
wb.save(filename)
In [ ]:
from spire.pdf.common import *
from spire.pdf import *

# 创建PdfDocument类的实例
pdf = PdfDocument()

# 加载PDF文档
pdf.LoadFromFile("file/北海体检报告/2405280074.pdf")

# 将PDF转换为Markdown文件
pdf.SaveToFile("PDF转Markdown.md", FileFormat.Markdown)
pdf.Close()
In [ ]: