PDF-service/process_patients.py

114 lines
3.9 KiB
Python
Raw Normal View History

import json
import requests
import time
from datetime import datetime
# 读取JSON文件
with open('headurl.json', 'r', encoding='utf-8') as f:
patients = json.load(f)
# 创建日志文件
log_filename = f'api_requests_{datetime.now().strftime("%Y%m%d_%H%M%S")}.log'
success_count = 0
fail_count = 0
def log_result(medical_sn, p_name, success, response, api_name):
global success_count, fail_count
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
status = "成功" if success else "失败"
if success:
success_count += 1
else:
fail_count += 1
with open(log_filename, 'a', encoding='utf-8') as f:
f.write(f"[{timestamp}] API: {api_name}, 体检编号: {medical_sn}, 姓名: {p_name}, 状态: {status}\n")
f.write(f"响应内容: {json.dumps(response, ensure_ascii=False)}\n")
f.write("-" * 80 + "\n")
# 第一个API请求函数
def request_first_api(medical_sn, card_id, p_name):
url = "https://pacs.gw12320.com/adminInspect/admin-api/inspect/patient/updatepersonimg"
params = {
"medicalSn": medical_sn,
"cardId": card_id
}
headers = {
'Content-Type': 'application/json',
'User-Agent': 'PostmanRuntime/7.43.3',
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate, br',
'Connection': 'keep-alive',
'Host': 'pacs.gw12320.com'
}
try:
print(f"正在请求第一个API - {p_name} 的报告,请等待接口返回...")
response = requests.get(url, params=params, headers=headers, verify=False)
response.raise_for_status()
result = response.json()
success = result.get("code", -1) == 0
log_result(medical_sn, p_name, success, result, "第一个API")
return success
except Exception as e:
error_msg = str(e)
print(f"第一个API请求失败: {error_msg}")
log_result(medical_sn, p_name, False, {"error": error_msg}, "第一个API")
return False
# 第二个API请求函数
def request_second_api(medical_sn, p_name):
url = "https://pacs.gw12320.com/adminInspect/admin-api/inspect/patient/generateReport"
params = {"medicalSn": medical_sn}
headers = {
'Content-Type': 'application/json',
'User-Agent': 'PostmanRuntime/7.43.3',
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate, br',
'Connection': 'keep-alive',
'Host': 'pacs.gw12320.com'
}
try:
print(f"正在请求第二个API - {p_name} 的报告,请等待接口返回...")
response = requests.get(url, params=params, headers=headers, verify=False)
response.raise_for_status()
result = response.json()
success = result.get("code", -1) == 0
log_result(medical_sn, p_name, success, result, "第二个API")
return success
except Exception as e:
error_msg = str(e)
print(f"第二个API请求失败: {error_msg}")
log_result(medical_sn, p_name, False, {"error": error_msg}, "第二个API")
return False
# 禁用SSL警告
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
# 主处理循环
print("开始处理请求...")
for patient in patients:
medical_sn = patient["medicalSn"]
card_id = patient["cardId"]
p_name = patient["pName"]
print(f"\n开始处理: {p_name} (体检编号: {medical_sn})")
# 调用第一个API
first_success = request_first_api(medical_sn, card_id, p_name)
print(f"第一个API处理完成: {'成功' if first_success else '失败'}")
# 等待1秒
time.sleep(1)
# 调用第二个API
second_success = request_second_api(medical_sn, p_name)
print(f"第二个API处理完成: {'成功' if second_success else '失败'}")
print("\n所有请求处理完成!")
print(f"成功请求数: {success_count}")
print(f"失败请求数: {fail_count}")
print(f"详细日志已保存到: {log_filename}")