211 lines
5.1 KiB
Markdown
211 lines
5.1 KiB
Markdown
# 医生预约挂号系统
|
|
|
|
## 🎯 系统简介
|
|
|
|
基于医生排班的患者预约挂号系统,支持30分钟间隔的时间段预约,防止重复预约,并根据医生排班状态控制挂号可用性。
|
|
|
|
## ⚡ 快速开始
|
|
|
|
### 1. 运行安装脚本
|
|
|
|
**Windows:**
|
|
```bash
|
|
install_appointment_system.bat
|
|
```
|
|
|
|
**Linux/Mac:**
|
|
```bash
|
|
chmod +x install_appointment_system.sh
|
|
./install_appointment_system.sh
|
|
```
|
|
|
|
### 2. 手动安装
|
|
|
|
如果安装脚本无法运行,请按以下步骤手动安装:
|
|
|
|
```bash
|
|
# 1. 创建数据库表
|
|
mysql -u username -p database < server/sql/doctor_appointment.sql
|
|
|
|
# 2. 清除缓存
|
|
cd server
|
|
php think clear
|
|
|
|
# 3. 测试API
|
|
curl "http://localhost/adminapi/doctor.appointment/availableSlots?doctor_id=1&appointment_date=2026-03-04&period=morning"
|
|
```
|
|
|
|
## 📚 文档导航
|
|
|
|
| 文档 | 说明 | 适用人群 |
|
|
|------|------|----------|
|
|
| [APPOINTMENT_QUICK_START.md](APPOINTMENT_QUICK_START.md) | 快速开始指南 | 所有人 |
|
|
| [INSTALLATION_CHECKLIST.md](INSTALLATION_CHECKLIST.md) | 安装检查清单 | 运维人员 |
|
|
| [APPOINTMENT_COMPLETE.md](APPOINTMENT_COMPLETE.md) | 完整实现总结 | 开发人员 |
|
|
| [server/APPOINTMENT_BACKEND_SETUP.md](server/APPOINTMENT_BACKEND_SETUP.md) | 后端详细说明 | 后端开发 |
|
|
| [admin/APPOINTMENT_SYSTEM.md](admin/APPOINTMENT_SYSTEM.md) | 系统设计文档 | 产品/开发 |
|
|
| [admin/APPOINTMENT_UI_UPDATE.md](admin/APPOINTMENT_UI_UPDATE.md) | UI更新说明 | 前端开发 |
|
|
|
|
## 🎨 功能特性
|
|
|
|
### 用户界面
|
|
- ✅ 预约方式选择(按时段/按医生)
|
|
- ✅ 医生列表显示可用号源
|
|
- ✅ 日期选择(未来7天)
|
|
- ✅ 时间段网格显示(30分钟间隔)
|
|
- ✅ 实时可用性检查
|
|
- ✅ 表单验证
|
|
|
|
### 后端功能
|
|
- ✅ 时间段自动生成
|
|
- ✅ 排班状态检查
|
|
- ✅ 号源数量控制
|
|
- ✅ 并发冲突防止
|
|
- ✅ 预约管理(创建/取消/列表)
|
|
|
|
## 🔌 API接口
|
|
|
|
```
|
|
GET /adminapi/doctor.appointment/availableSlots - 获取可用时间段
|
|
POST /adminapi/doctor.appointment/create - 创建预约
|
|
POST /adminapi/doctor.appointment/cancel - 取消预约
|
|
GET /adminapi/doctor.appointment/lists - 预约列表
|
|
GET /adminapi/doctor.appointment/detail - 预约详情
|
|
GET /adminapi/doctor.appointment/doctorAvailability - 医生可用号源
|
|
```
|
|
|
|
## 💾 数据库
|
|
|
|
### 表结构
|
|
```sql
|
|
la_doctor_appointment
|
|
├── id (主键)
|
|
├── patient_id (患者ID)
|
|
├── doctor_id (医生ID)
|
|
├── roster_id (排班ID)
|
|
├── appointment_date (预约日期)
|
|
├── period (时段)
|
|
├── appointment_time (预约时间)
|
|
├── appointment_type (预约类型)
|
|
├── status (状态)
|
|
├── remark (备注)
|
|
├── create_time (创建时间)
|
|
└── update_time (更新时间)
|
|
```
|
|
|
|
### 创建表
|
|
```bash
|
|
mysql -u username -p database < server/sql/doctor_appointment.sql
|
|
```
|
|
|
|
## 🧪 测试
|
|
|
|
### 创建测试数据
|
|
```sql
|
|
INSERT INTO `la_doctor_roster`
|
|
(`doctor_id`, `date`, `period`, `status`, `quota`, `max_patients`, `create_time`, `update_time`)
|
|
VALUES
|
|
(1, '2026-03-04', 'morning', 1, 10, 15, UNIX_TIMESTAMP(), UNIX_TIMESTAMP());
|
|
```
|
|
|
|
### 测试API
|
|
```bash
|
|
cd server
|
|
php test_appointment_api.php
|
|
```
|
|
|
|
### 测试前端
|
|
1. 登录后台管理系统
|
|
2. 进入"中医诊断"页面
|
|
3. 点击"挂号"按钮
|
|
4. 完成预约流程
|
|
|
|
## ⚙️ 配置
|
|
|
|
### 权限节点
|
|
在后台权限管理中添加:
|
|
```
|
|
doctor.appointment/availableSlots
|
|
doctor.appointment/create
|
|
doctor.appointment/cancel
|
|
doctor.appointment/lists
|
|
doctor.appointment/detail
|
|
```
|
|
|
|
### 业务规则
|
|
- 时间段间隔: 30分钟
|
|
- 上午时段: 09:00-11:30
|
|
- 下午时段: 13:00-20:30
|
|
- 预约条件: 医生排班且状态为"出诊"
|
|
|
|
## 🐛 故障排查
|
|
|
|
### 控制器不存在
|
|
```bash
|
|
cd server && php think clear
|
|
```
|
|
|
|
### 数据库表不存在
|
|
```bash
|
|
mysql -u username -p database < server/sql/doctor_appointment.sql
|
|
```
|
|
|
|
### 没有可用时间段
|
|
检查医生排班:
|
|
```sql
|
|
SELECT * FROM la_doctor_roster WHERE doctor_id = 1 AND status = 1;
|
|
```
|
|
|
|
## 📦 文件清单
|
|
|
|
### 后端 (6个文件)
|
|
- `server/app/common/model/doctor/Appointment.php`
|
|
- `server/app/adminapi/controller/doctor/AppointmentController.php`
|
|
- `server/app/adminapi/logic/doctor/AppointmentLogic.php`
|
|
- `server/app/adminapi/validate/doctor/AppointmentValidate.php`
|
|
- `server/app/adminapi/lists/doctor/AppointmentLists.php`
|
|
- `server/sql/doctor_appointment.sql`
|
|
|
|
### 前端 (3个文件)
|
|
- `admin/src/api/doctor.ts` (已更新)
|
|
- `admin/src/views/tcm/diagnosis/appointment.vue` (新建)
|
|
- `admin/src/views/tcm/diagnosis/index.vue` (已更新)
|
|
|
|
## 🔧 技术栈
|
|
|
|
**后端:**
|
|
- PHP 7.2+
|
|
- ThinkPHP 6.0
|
|
- MySQL 5.7+
|
|
|
|
**前端:**
|
|
- Vue 3
|
|
- TypeScript
|
|
- Element Plus
|
|
|
|
## 📝 版本信息
|
|
|
|
- **版本**: 1.0.0
|
|
- **状态**: ✅ 开发完成
|
|
- **创建时间**: 2024-02-26
|
|
|
|
## 🎯 下一步
|
|
|
|
1. ✅ 文件已创建
|
|
2. ⏳ 创建数据库表
|
|
3. ⏳ 清除缓存
|
|
4. ⏳ 配置权限
|
|
5. ⏳ 测试功能
|
|
6. ⏳ 上线使用
|
|
|
|
## 📞 获取帮助
|
|
|
|
遇到问题?查看:
|
|
1. [安装检查清单](INSTALLATION_CHECKLIST.md)
|
|
2. [快速开始指南](APPOINTMENT_QUICK_START.md)
|
|
3. [完整实现总结](APPOINTMENT_COMPLETE.md)
|
|
|
|
---
|
|
|
|
**祝你使用愉快!** 🎉
|