Files
yuyueguahao/docs/api/v1/appointment.md
T
2026-07-05 14:43:34 +08:00

64 lines
1.8 KiB
Markdown

# Appointment · 预约挂号
## 接口表
| Method | Path | 鉴权 | 说明 |
|---|---|---|---|
| GET | `/api/v1/appointments` | - | 预约列表 |
| GET | `/api/v1/appointments/stats` | ✅ | 统计 |
| GET | `/api/v1/appointments/:id` | - | 详情 |
| POST | `/api/v1/appointments` | - | 创建 |
| PUT | `/api/v1/appointments/:id/cancel` | - | 取消 |
| PUT | `/api/v1/appointments/:id/confirm` | ✅ | 确认(管理后台) |
| PUT | `/api/v1/appointments/:id/complete` | ✅ | 完成(管理后台) |
| PUT | `/api/v1/appointments/:id` | ✅ | 更新备注 |
| DELETE | `/api/v1/appointments/admin/:id` | ✅ | 删除(管理后台) |
## GET /api/v1/appointments
**Query**
- `phone` - 按手机号过滤
- `status` - 'pending' / 'confirmed' / 'completed' / 'cancelled'
## POST /api/v1/appointments
**请求体**
```json
{
"patientName": "张三",
"patientAge": 30,
"patientPhone": "13800138000",
"date": "2026-06-14",
"departmentName": "肛肠",
"doctorId": "doc-001",
"doctorName": "李医生",
"timeSlot": "上午",
"symptom": "便血"
}
```
**校验规则**
- `patientName` 必填,长度 1-20
- `patientAge` 必填,1-149
- `patientPhone` 必填,匹配 `^1[3-9]\d{9}$`
- `date` 必填,ISO 日期 `YYYY-MM-DD`
- `departmentName` 必填,仅支持 `肛肠` / `胃肠`
- `doctorId` / `doctorName` / `timeSlot` / `symptom` 可选
**错误码**
- 400 缺少必填参数
- 400 手机号格式不正确
- 400 年龄参数错误
- 400 科室参数仅支持:肛肠 / 胃肠
- 500 服务器内部错误
## 状态机
```
pending ──confirm──► confirmed ──complete──► completed
│ │
└─cancel──► cancelled └─cancel──► cancelled
```
completed 状态不可取消;cancelled 状态不可确认/完成。