「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
相关推荐
观无7 分钟前
若依EasyExcel实现单元格合并雨晨源码(同名B站)9 分钟前
基于Python的网易云音乐评论数据情感化分析系统 音乐爬虫信息可视化 |SnowNLP评论情感分析阿童木写作11 分钟前
跨境电商图片翻译工具推荐:跨马翻译批量处理视频字幕与抠图愚公搬代码32 分钟前
【愚公系列】《Web应用安全》001-VMware的安装xiaohaiAIgeo33 分钟前
【2026年】HG/T 20656-2024化工暖通空调设计规范:新版标准的变化与影响立少→万能汉编35 分钟前
用“立少→超文本”写静态网页,标签<倍>weixin_4316004444 分钟前
NestJS 入门(7):生命周期钩子——构造函数和 `OnModuleInit` 差在哪?怪奇云呼军1 小时前
G.711、Opus 和重采样会拖慢识别吗?闪电智能VoiceAgent 的音频入口怎么选ZC跨境爬虫1 小时前
LeetCode 27. 移除元素(双指针详解 + Java Python 多解法对比)你挚爱的强哥1 小时前
【chromeDownload】自定义组件:多用于登录框底部提供下载Chrome谷歌浏览器的链接
