医院预约挂号脚本
2026/6/8 18:13:49 网站建设 项目流程

医院预约挂号脚本

功能介绍

本脚本是一个用 Python 编写的医院预约挂号程序,支持以下功能:

  1. 自动预约:通过api交互选择医院、科室、医生和时间段。
  2. 自动监控:持续检查指定医生的号源状态,发现可预约时段时自动尝试预约。

核心代码解析

1. 主程序 (main.py)

# -*- coding: utf-8 -*-importtimefromschemaimportAddRegArgs,DeptSchForDocArgs,DocSchArgs,NumberSourceArgsfromapiimportApidefappointment():""" 预约程序入口,通过命令行交互完成挂号 """api=Api()hospitals=api.get_hospital()print("请选择院区,输入院区前方序号")forindex,hospitalinenumerate(hospitals):print("{}):{}".format(index,hospital["aliasName"]))hospital_index=int(input("请输入院区序号:"))hospital=hospitals[hospital_index]# 后续科室、医生、时间选择逻辑...# 完整代码见 a.txtdefmonitor():""" 每10秒检查一次号源状态,发现可预约时段时自动尝试预约 """whileTrue:try:# 检查号源状态doc_schDate=api.get_doc_sch(args)iflen(doc_schDate)>0:# 尝试自动预约response=api.add_reg(args)ifresponse["code"]=="0":print("预约成功!")exceptExceptionase:print(f"程序异常:{e}")time.sleep(10)if__name__=="__main__":monitor()

2. 数据模型 (schema.py)

# -*- coding: utf-8 -*-frompydanticimportBaseModelfromtypingimportUnionclassHospitalArgs(BaseModel):sysCode:Union[str,int]="1001035"classDeptListArgs(BaseModel):clinicalType:str=1hosId:intsysCode:Union[str,int]="1001035"classDeptSchForDocArgs(BaseModel):clinicalType:str=1deptCode:str=NonedeptId:str=deptCode specialtyId:str=NonedeptName:strvisitingArea:strhosId:intrecommendation:str=""type:str="order"source:int=22sysCode:Union[str,int]="1001035"defupdate(self):self.deptId=self.deptCodeclassDocSchArgs(BaseModel):deptId:strdeptName:strdocId:strdocName:strdocTitle:strdocPhoto:strhosId:inthosName:strtype:str="order"visitingArea:str=""clinicalType:str=1source:int=22sysCode:Union[str,int]="1001035"classNumberSourceArgs(BaseModel):sysCode:Union[str,int]="1001035"ampm:strcategor:strdocId:strdeptId:strhosId:Union[str,int]schDate:strschId:strclassAddRegArgs(BaseModel):# key不一致参数disNo:str=NoneschDate:str=NonepatienId:str=None# 必须参数clinicalType:str=1visitingArea:str=""ampm:strappointmentNumber:str=disNo categor:strcategorName:strdeptId:strdeptName:strdocId:strdocName:strendTime:str=""extend:str=""fee:strhosId:Union[str,int]hosName:strisFlexible:str=""numId:str=""patientId:str=patienId resDate:str=schDate schId:strsource:int=22startTime:str=""sysCode:Union[str,int]="1001035"thirdUserId:str=""timeDesc:strtimePoint:str=""schQukCategor:strdefupdate(self):self.appointmentNumber=self.disNo self.resDate=self.schDate self.patientId=self.patienId

3. 配置文件 (conf.ini)

[**省中医院] host = https://www.rjh.com.cn/ deskey = wewerwe username = 你的账号 password = 你的密码 token = token

使用说明

  1. 运行环境

    • Python 3.6+
    • 依赖库:pydanticrequests
  2. 启动方式

    python main.py
  3. 配置说明

    • 修改conf.ini中的账号和医院配置
    • 支持直接使用 token 登录

实现细节

  1. 字典展开语法

    all_args={**dept,**hospital}args=DeptSchForDocArgs(**all_args)
  2. 异常处理

    • 捕获网络请求异常
    • 支持 Ctrl+C 中断程序
  3. 定时检测

    • 每10秒检测一次号源
    • 预约成功后等待10分钟

提示:部分代码,已脱敏,本脚本仅用于学习交流,请勿滥用。欢迎感兴趣的同学一起交流!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询