# 医生数据统计功能说明 ## 功能概述 医生数据统计功能用于统计每个医生在不同时间范围内的诊单数据,包括: - 已挂号数量(status=1) - 已完成数量(status=3) - 已过号数量(status=4) - 已取消数量(status=2) - 完成率计算 ## 文件清单 ### 前端文件 1. `admin/src/views/doctor/tongji.vue` - 统计页面 2. `admin/src/api/doctor.ts` - API接口(已更新) ### 后端文件 1. `server/app/adminapi/controller/doctor/StatisticsController.php` - 统计控制器 2. `server/app/adminapi/lists/doctor/StatisticsLists.php` - 统计数据列表逻辑 ## 功能特性 ### 1. 时间范围筛选 - 今天:查看当天的统计数据 - 最近7天:查看最近一周的统计数据 - 最近30天:查看最近一个月的统计数据 - 自定义:选择任意日期范围进行查询 ### 2. 医生筛选 - 可以选择特定医生查看其统计数据 - 也可以不选择医生,查看所有医生的统计数据 ### 3. 统计指标 - **总诊单数**:该时间范围内的所有诊单 - **已挂号**:状态为"已预约"的诊单数量 - **已完成**:状态为"已完成"的诊单数量 - **已过号**:状态为"已过号"的诊单数量 - **已取消**:状态为"已取消"的诊单数量 - **完成率**:已完成数量 / 总诊单数 × 100% ### 4. 完成率颜色标识 - 绿色:完成率 ≥ 80% - 蓝色:完成率 ≥ 60% - 橙色:完成率 ≥ 40% - 红色:完成率 < 40% ## 使用方法 1. 访问医生统计页面(路由:`/doctor/tongji`) 2. 选择时间范围(今天/最近7天/最近30天/自定义) 3. 可选:选择特定医生 4. 点击"查询"按钮获取统计数据 5. 查看统计表格中的各项数据 ## API接口 ### 获取医生诊单统计 - **接口地址**:`GET /doctor.statistics/lists` - **请求参数**: - `doctor_id`(可选):医生ID - `time_type`(必填):时间类型(today/week/month/custom) - `start_date`(可选):开始日期(time_type=custom时必填) - `end_date`(可选):结束日期(time_type=custom时必填) - **返回数据**: ```json { "code": 1, "msg": "success", "data": { "lists": [ { "doctor_id": 1, "doctor_name": "张医生", "total_count": 100, "registered_count": 20, "completed_count": 60, "missed_count": 10, "cancelled_count": 10, "completion_rate": 60.00, "time_range": "今天 (2024-01-01)" } ] } } ``` ## 数据库依赖 该功能依赖以下数据表: - `la_doctor_appointment`:医生预约表 - `la_admin`:管理员表(医生信息) - `la_admin_role`:管理员角色关联表(用于识别医生角色) ### 医生角色识别 系统通过 `la_admin_role` 表来识别医生角色: - 查询 `la_admin_role` 表中 `role_id=1` 的记录 - 获取对应的 `admin_id` 列表 - 这些 `admin_id` 对应的管理员即为医生 ### 预约状态说明 - 1:已预约(已挂号) - 2:已取消 - 3:已完成 - 4:已过号 ## 注意事项 1. 统计数据基于 `appointment_date` 字段进行时间范围筛选 2. 只统计 `role_id=1` 的管理员(医生角色) 3. 只统计未删除且未禁用的医生 4. 完成率保留两位小数 ## 后续优化建议 1. 添加数据导出功能(Excel) 2. 添加图表展示(柱状图、折线图) 3. 添加同比、环比分析 4. 添加医生排名功能 5. 添加更多维度的统计(按科室、按时段等)