「27-医院挂号预约系统」源码下载
链接:https://pan.quark.cn/s/c6503912fdc7
医院挂号预约系统
一个完整的医院挂号预约系统,支持患者预约、医生接诊、管理员管理等功能。
功能特性
患者端
用户注册/登录
浏览科室和医生
预约挂号
在线支付
查看预约记录
评价医生
个人资料管理
消息通知
医生端
查看排班
查看今日患者
接诊叫号
写病历
开处方
开检查单
管理员端
科室管理
医生管理
排班管理
号源管理
预约管理
现场取号
用户管理
数据统计
技术栈
后端
Python 3.9+
FastAPI 0.104+
SQLAlchemy 2.0+
SQLite / MySQL
Pydantic 2.5+
JWT 认证
前端
Vue.js 2.7+
Element UI 2.15+
Axios
ECharts 5.x
项目结构
hospital_system/ ├── backend/ # 后端目录 │ ├── main.py # FastAPI 入口 │ ├── database.py # 数据库配置 │ ├── models.py # SQLAlchemy 模型(13张表) │ ├── schemas.py # Pydantic 验证模型 │ ├── auth.py # JWT 认证 │ ├── config.py # 配置文件 │ ├── utils.py # 工具函数 │ ├── seed_data.py # 初始化测试数据 │ └── routers/ │ ├── __init__.py │ ├── auth.py # 认证路由 │ ├── admin.py # 管理员路由 │ ├── doctor.py # 医生路由 │ └── patient.py # 患者路由 ├── frontend/ # 前端目录 │ ├── index.html # 登录页 │ ├── admin.html # 管理员端 │ ├── doctor.html # 医生端 │ ├── patient.html # 患者端 │ └── asset/ # 静态资源 │ ├── vue.js │ ├── element-ui.js │ ├── element-ui.css │ ├── axios.min.js │ ├── echarts.min.js │ └── fonts/ ├── uploads/ # 文件上传目录 ├── hospital.db # SQLite 数据库文件 ├── requirements.txt # Python 依赖 └── README.md # 项目说明快速开始
1. 安装依赖
pip install -r requirements.txt2. 初始化数据库
cd backend python seed_data.py3. 启动服务器
cd backend python main.py服务器将在 http://127.0.0.1:8000 启动
4. 访问系统
API 文档: http://127.0.0.1:8000/docs
测试账号
角色 用户名 密码 说明 管理员 admin admin123 系统管理员 医生 doctor001 doctor123 内科主任 医生 doctor002 doctor123 内科副主任 医生 doctor003 doctor123 外科主治 医生 doctor004 doctor123 儿科主任 ... ... ... 共10个测试医生 患者 patient001 patient123 测试患者1 患者 patient002 patient123 测试患者2 ... ... ... 共5个测试患者 数据库设计
系统包含13张核心数据表:
表名 说明 users 用户表(基础表) patients 患者表 doctors 医生表 departments 科室表 schedules 排班表 appointments 预约表 registrations 挂号记录表 medical_records 病历表 prescriptions 处方表 examinations 检查单表 reviews 评价表 announcements 公告表 notifications 消息通知表 业务流程
患者预约流程
注册/登录 → 选择科室 → 选择医生 → 选择时间 → 确认预约 → 在线支付 → 就诊提醒 → 现场取号 → 就诊 → 评价医生接诊流程
登录 → 查看排班 → 查看今日患者 → 接诊叫号 → 开始就诊 → 写病历 → 开处方/检查单 → 完成就诊管理员管理流程
登录 → 科室管理 → 医生管理 → 排班管理 → 数据统计 → 系统维护API 接口
认证接口
POST /api/auth/login # 登录 POST /api/auth/register # 注册(患者) GET /api/auth/me # 获取当前用户信息 PUT /api/auth/me # 更新个人信息 POST /api/auth/change-password # 修改密码患者接口
GET /api/patient/departments # 获取科室列表 GET /api/patient/doctors # 获取医生列表 GET /api/patient/schedules/available # 获取可用时段 POST /api/patient/appointments # 创建预约 GET /api/patient/appointments # 获取我的预约 POST /api/patient/appointments/{id}/pay # 支付预约 PUT /api/patient/appointments/{id}/cancel # 取消预约 POST /api/patient/reviews # 评价医生医生接口
GET /api/doctor/dashboard # 仪表盘统计 GET /api/doctor/registrations # 获取今日患者 PUT /api/doctor/registrations/{id}/call # 叫号 PUT /api/doctor/registrations/{id}/start-treatment # 开始就诊 POST /api/doctor/medical-records # 写病历 POST /api/doctor/prescriptions # 开处方 POST /api/doctor/examinations # 开检查单管理员接口
GET /api/admin/dashboard # 仪表盘统计 GET/POST/PUT/DELETE /api/admin/departments # 科室管理 GET/POST/PUT/DELETE /api/admin/doctors # 医生管理 GET/POST/PUT/DELETE /api/admin/schedules # 排班管理 GET /api/admin/appointments # 预约管理 POST /api/admin/registrations/on-site # 现场挂号 GET/POST/PUT/DELETE /api/admin/announcements # 公告管理配置说明
修改配置(config.py)
# JWT 密钥(生产环境请修改) SECRET_KEY = "your-secret-key-here" # Token 有效期 ACCESS_TOKEN_EXPIRE_MINUTES = 60 * 24 * 7 # 7天 # 文件上传配置 MAX_FILE_SIZE = 50 * 1024 * 1024 # 50MB # 挂号配置 REGISTRATION_FEE = 10 # 挂号费(元) APPOINTMENT_ADVANCE_DAYS = 7 # 可提前预约天数切换到 MySQL
修改
database.py:
# SQLite(默认) DATABASE_URL = f"sqlite:///{os.path.join(BASE_DIR, 'hospital.db')}" # MySQL DATABASE_URL = "mysql+pymysql://user:password@localhost/hospital_db"开发说明
添加新的 API
在
backend/models.py添加数据模型在
backend/schemas.py添加验证模型在
backend/routers/对应文件添加路由在前端添加调用逻辑
添加新的前端页面
创建 HTML 文件在
frontend/目录在
backend/main.py添加路由常见问题
Q: 如何修改端口?
A: 修改
backend/main.py最后一行的port=8000Q: 如何重置数据库?
A: 删除
hospital.db文件,重新运行python seed_data.pyQ: 如何添加新的医生?
A: 使用管理员账号登录,进入"医生管理"页面添加
Q: 预约后如何支付?
A: 使用测试患者账号登录,进入"我的预约",点击"去支付"(使用余额支付)
部署说明
使用 Docker 部署
FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY backend ./backend COPY frontend ./frontend EXPOSE 8000 CMD ["python", "backend/main.py"]使用 Nginx 反向代理
server { listen 80; server_name your-domain.com; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }许可证
MIT License
贡献
欢迎提交 Issue 和 Pull Request!
联系方式
如有问题,请联系开发者。
注意: 本系统仅用于学习和演示目的,生产环境使用请进行安全加固和性能优化。
医院挂号预约系统(开源 Fastapi+vue2)
a1117762026-02-04 23:34
相关推荐
0思必得02 小时前
[Web自动化] Selenium处理iframe和frame计算机毕设VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue蛋糕店管理系统(源码+数据库+文档)行走的陀螺仪4 小时前
uni-app + Vue3编辑页/新增页面给列表页传参摘星编程4 小时前
OpenHarmony + RN:Calendar日期选择功能Yvonne爱编码4 小时前
JAVA数据结构 DAY3-List接口一方_self4 小时前
了解和使用python的click命令行cli工具小芳矶4 小时前
Dify本地docker部署踩坑记录We་ct5 小时前
LeetCode 205. 同构字符串:解题思路+代码优化全解析2301_822366355 小时前
使用Scikit-learn构建你的第一个机器学习模型
