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