feat:更新脏数据过滤规则说明书,加入评估,去掉体检
This commit is contained in:
+88
-58
@@ -1,8 +1,8 @@
|
||||
# 异常事件数据质量控制规则说明书
|
||||
|
||||
> **文档版本**:v1.0
|
||||
> **编写日期**:2026-07-28
|
||||
> **适用范围**:系统管理、健康咨询、应急就医、健康体检、营养管理、健康监测(共 6 个业务板块)
|
||||
> **文档版本**:v1.1
|
||||
> **编写日期**:2026-07-29
|
||||
> **适用范围**:系统管理、健康咨询、应急就医、健康评估、营养管理、健康监测(共 6 个业务板块)
|
||||
> **执行主体**:数据中台(于数据同步环节内嵌执行质量校验)
|
||||
|
||||
---
|
||||
@@ -17,7 +17,7 @@
|
||||
- [5.1 系统管理](#51-系统管理)
|
||||
- [5.2 健康咨询](#52-健康咨询)
|
||||
- [5.3 应急就医](#53-应急就医)
|
||||
- [5.4 健康体检](#54-健康体检)
|
||||
- [5.4 健康评估](#54-健康评估)
|
||||
- [5.5 营养管理](#55-营养管理)
|
||||
- [5.6 健康监测](#56-健康监测)
|
||||
- [六、附录](#六附录)
|
||||
@@ -40,7 +40,7 @@
|
||||
|------|-----------|---------|
|
||||
| 健康咨询 | `web-admin/health-consult/` | 原型已定稿,后端已部分实现 |
|
||||
| 应急就医 | `web-admin/emergency-dispatch/` | 原型已定稿,后端有占位 |
|
||||
| 健康体检 | `web-admin/health-checkup/` | 原型已定稿 |
|
||||
| 健康评估 | `web-admin/health-assessment/` | 原型待开发,后端已部分实现 |
|
||||
| 营养管理 | `web-admin/nutrition/` | 原型已定稿,后端已部分实现 |
|
||||
| 健康监测 | `web-admin/health-monitor/` | 原型已定稿 |
|
||||
| 系统管理 | `platform-java/platform-system/` | 后端已实现 |
|
||||
@@ -638,97 +638,127 @@
|
||||
|
||||
---
|
||||
|
||||
### 5.4 健康体检
|
||||
### 5.4 健康评估
|
||||
|
||||
#### 涉及数据表
|
||||
|
||||
| 表名 | 说明 | 核心校验字段 |
|
||||
|------|------|-------------|
|
||||
| `exam_appointment` | 体检预约 | phone, employee_id, appointment_date, hospital_id, status |
|
||||
| `employee_archive` | 员工档案 | id_card, name, gender, birth_date |
|
||||
| `exam_report` | 体检报告 | report_status, employee_id, exam_date, hospital_id |
|
||||
| `exam_item_result` | 体检项目结果 | result_value, item_code, reference_range, is_abnormal, exam_report_id |
|
||||
| `exam_standard_item` | 体检基本项目 | item_code, item_name, is_key_indicator, has_reference |
|
||||
| `exam_hospital_item` | 医院体检项目 | hospital_id, item_code, linked_standard_item_id |
|
||||
| `exam_hospital` | 医院信息 | hospital_name, address, enable_occupational |
|
||||
| `exam_report_template` | 报告模板 | template_name, version, status |
|
||||
| `exam_plan` | 体检计划 | plan_name, year, date_range, hospital_id, status |
|
||||
| `exam_quota` | 体检名额 | plan_id, unit_id, total_quota, used_quota |
|
||||
健康评估模块对员工进行多维度健康评估,涵盖风险评估、心理评估、规律起居评估及人群分类。以下按业务子域列出核心校验表。
|
||||
|
||||
| 业务子域 | 核心表 | 关键校验字段 |
|
||||
|----------|--------|-------------|
|
||||
| 风险评估 | `ass_risk_evaluation`, `ass_risk_result`, `ass_risk_questionnaire_info`, `ass_risk_evaluation_statistics`, `ass_risk_diet_sports_prescription` | user_id, eval_source, status, is_exception, bmi, sbp, dbp, fasting_bg, health_age, bmi_mark, smoke_mark, height, weight, waist_line, smoking_status, personal_*, questions_json, statics_num, exception_num, energy_level, f_elements, aerobic_*, strength_*, flexibility_* |
|
||||
| 心理评估 | `ass_psychology`, `ass_psychology_statistics` | type, grade, phy_grade_level, status, is_exception, questions_id |
|
||||
| 规律起居 | `ass_daily_routine_online`, `ass_daily_routine_paper` | sleep_hour, sport_minute, resting_heart_rate, oxygen_saturation, pressure_value, week_start_date, week_end_date, sport_value, sleep_value, time_of_net_value, sport_level, sleep_type, time_of_net_level, is_exception |
|
||||
| 人群分类 | `ass_group_user`, `ass_group_user_detail` | user_group, group_change_type, audit_status, is_archived, archived_time, date_year, latest_assessment_date, detail_type, data_type |
|
||||
| 问卷 | `ass_questions` | questions_json |
|
||||
|
||||
#### 检测规则
|
||||
|
||||
**exam_appointment(体检预约)**
|
||||
**ass_risk_evaluation(风险评估主表)**
|
||||
|
||||
| 编码 | 规则描述 | 涉及字段 | 判定逻辑 |
|
||||
|------|----------|----------|----------|
|
||||
| H01-D02 | 手机号格式不合法 | `phone` | 不匹配 11 位手机号正则(如 `"888"` 或非数字字符) |
|
||||
| H01-D01 | 预约员工ID缺失 | `employee_id` | `IS NULL OR = ''` |
|
||||
| H01-D03 | 预约日期为过去年份(录入错误) | `appointment_date` | 年份早于 2020 或晚于当前年份+2 |
|
||||
| H01-D05 | 关联医院不存在 | `hospital_id` | 引用的医院不存在 |
|
||||
| A01-D01 | 用户ID缺失 | `user_id` | `IS NULL` |
|
||||
| A01-D03 | 评估来源枚举越界 | `eval_source` | `NOT IN (1, 2)`(1=问卷, 2=自动) |
|
||||
| A01-D04 | 异常标记与评估结果矛盾 | `is_exception` ↔ `ass_risk_result.*_level` | `is_exception = 1` 但关联结果中所有疾病等级均为正常 |
|
||||
|
||||
**employee_archive(员工档案)**
|
||||
**ass_risk_result(风险评估结果)**
|
||||
|
||||
| 编码 | 规则描述 | 涉及字段 | 判定逻辑 |
|
||||
|------|----------|----------|----------|
|
||||
| H02-D02 | 身份证号格式不合法 | `id_card` | 长度不为 18 位,或含非法字符,或校验位不通过 |
|
||||
| H02-D01 | 姓名缺失 | `name` | `IS NULL OR = ''` |
|
||||
| H02-D03 | 性别枚举越界 | `gender` | `NOT IN (1, 2)` 或 `NOT IN ('男', '女')` |
|
||||
| H02-D03 | 出生日期为未来日期 | `birth_date` | `birth_date > CURRENT_DATE` |
|
||||
| A02-D03 | BMI 值越界 | `bmi` | `< 10 OR > 80` |
|
||||
| A02-D03 | 收缩压越界 | `sbp` | `< 50 OR > 300` (mmHg) |
|
||||
| A02-D03 | 舒张压越界 | `dbp` | `< 30 OR > 200` (mmHg) |
|
||||
| A02-D03 | 空腹血糖越界 | `fasting_bg` | `< 0 OR > 50` (mmol/L) |
|
||||
| A02-D03 | 健康年龄越界 | `health_age`, `potential_health_age` | `< 0 OR > 150` |
|
||||
| A02-D03 | 疾病等级枚举越界 | `diabetes_level`, `hypertension_level` 等 | 不在预定义枚举集合内 |
|
||||
| A02-D02 | 生活习惯标记格式非法 | `bmi_mark`, `smoke_mark`, `sleep_mark` 等 | 不符合 `state,score,fullmark` 格式 |
|
||||
| A02-D04 | 收缩压低于舒张压 | `sbp`, `dbp` | `sbp < dbp` |
|
||||
| A02-D04 | 血脂数据缺失但疾病等级非空 | `cholesterol`, `triglycerin`, `hdlc`, `ldlc` + `*_level` | 血脂四项均为 0 或 NULL 但存在非空疾病等级 |
|
||||
|
||||
**exam_report(体检报告)**
|
||||
**ass_risk_questionnaire_info(问卷信息)**
|
||||
|
||||
| 编码 | 规则描述 | 涉及字段 | 判定逻辑 |
|
||||
|------|----------|----------|----------|
|
||||
| H03-D03 | 报告状态枚举越界 | `report_status` | 不在预定义报告状态枚举集合内 |
|
||||
| H03-D05 | 关联员工不存在 | `employee_id` | 引用的员工档案不存在 |
|
||||
| H03-D04 | 报告状态为"已生成"但无结果明细 | `report_status` ↔ `exam_item_result` | 报告状态为已生成但无关联的检查结果明细 |
|
||||
| A03-D01 | 基础体测数据完全缺失 | `height`, `weight`, `waist_line` | 三者均为 NULL |
|
||||
| A03-D03 | 身高越界 | `height` | `< 50 OR > 250` (cm) |
|
||||
| A03-D03 | 体重越界 | `weight` | `< 20 OR > 300` (kg) |
|
||||
| A03-D03 | 腰围越界 | `waist_line` | `< 30 OR > 200` (cm) |
|
||||
| A03-D03 | 吸烟状态枚举越界 | `smoking_status` | `NOT IN (1, 2, 3)` |
|
||||
| A03-D03 | 个人病史枚举越界 | `personal_diabetes`, `personal_hypertension` 等 `personal_*` 字段 | `NOT IN (0, 1)` |
|
||||
| A03-D02 | 问卷 JSON 格式非法 | `questions_json`(通过 `ass_questions`) | JSON 解析失败 |
|
||||
|
||||
**exam_item_result(体检项目结果)**
|
||||
**ass_risk_evaluation_statistics(评估统计)**
|
||||
|
||||
| 编码 | 规则描述 | 涉及字段 | 判定逻辑 |
|
||||
|------|----------|----------|----------|
|
||||
| H04-D01 | 检查结果值为空 | `result_value` | `IS NULL OR = ''` |
|
||||
| H04-D03 | 结果值为负数(仅适用于不应为负的指标) | `result_value` | `result_value < 0` 且项目类型非偏移量类指标 |
|
||||
| H04-D05 | 关联体检项目不存在 | `item_code` | 引用的标准体检项目不存在 |
|
||||
| H04-D05 | 关联报告不存在 | `exam_report_id` | 引用的体检报告不存在 |
|
||||
| H04-D04 | 异常标记与结果值矛盾 | `is_abnormal`, `result_value`, `reference_range` | 标记为异常但结果值在参考范围内,或标记为正常但结果值明显超出参考范围 |
|
||||
| A04-D04 | 统计次数与实际评估次数不一致 | `statics_num` ↔ `ass_risk_evaluation` | `statics_num` 不等于该用户实际评估记录数 |
|
||||
| A04-D04 | 疾病异常标记与源数据脱节 | `is_bmi_abnormal`, `is_sbp_abnormal` 等 ↔ `last_evaluation_id` 对应结果 | 统计标记与引用的评估结果数据不一致 |
|
||||
| A04-D04 | 异常计数错误 | `exception_num` | `exception_num` 不等于实际 `is_exception = 1` 的记录数 |
|
||||
|
||||
**exam_standard_item(体检基本项目)**
|
||||
**ass_psychology / ass_psychology_statistics(心理评估)**
|
||||
|
||||
| 编码 | 规则描述 | 涉及字段 | 判定逻辑 |
|
||||
|------|----------|----------|----------|
|
||||
| H05-D01 | 项目编码缺失 | `item_code` | `IS NULL OR = ''` |
|
||||
| H05-D01 | 项目名称缺失 | `item_name` | `IS NULL OR = ''` |
|
||||
| H05-D06 | 项目编码重复 | `item_code` | 存在多条记录使用同一项目编码 |
|
||||
| A05-D01 | 评估得分或健康等级缺失 | `grade`, `phy_grade_level` | 任一为 NULL |
|
||||
| A05-D03 | 评估类型枚举越界 | `type` | `NOT IN (1, 2, 3, 4)`(1=综合, 2=压力, 3=焦虑, 4=抑郁) |
|
||||
| A05-D03 | 评估得分超出合理范围 | `grade` | 超出该评估量表的标准分值范围 |
|
||||
| A05-D03 | 健康等级编码越界 | `phy_grade_level` | 不在数据字典预定义编码范围内 |
|
||||
| A05-D04 | 异常标记与得分矛盾 | `is_exception`, `grade` | `is_exception = 1` 但 `grade` 在正常范围内 |
|
||||
| A05-D04 | 统计值与实际评估记录数不一致 | `ass_psychology_statistics` 统计字段 | 统计值不等于 `ass_psychology` 中实际记录数 |
|
||||
| A05-D05 | 关联问卷不存在 | `questions_id` | 引用的问卷在 `ass_questions` 中不存在 |
|
||||
|
||||
**exam_hospital_item(医院体检项目)**
|
||||
**ass_daily_routine_online(在线穿戴起居评估)**
|
||||
|
||||
| 编码 | 规则描述 | 涉及字段 | 判定逻辑 |
|
||||
|------|----------|----------|----------|
|
||||
| H06-D05 | 关联标准项目不存在 | `linked_standard_item_id` | 引用的标准体检项目不存在 |
|
||||
| H06-D05 | 关联医院不存在 | `hospital_id` | 引用的医院不存在 |
|
||||
| A06-D01 | 异常标记缺失 | `is_exception` | `IS NULL` |
|
||||
| A06-D03 | 睡眠时长越界 | `sleep_hour` | `< 0 OR > 1440`(分钟) |
|
||||
| A06-D03 | 运动时长越界 | `sport_minute` | `< 0 OR > 1440`(分钟) |
|
||||
| A06-D03 | 静息心率越界 | `resting_heart_rate` | `< 20 OR > 300` (bpm) |
|
||||
| A06-D03 | 血氧饱和度越界 | `oxygen_saturation` | `< 50 OR > 100` (%) |
|
||||
| A06-D03 | 压力值超出量程 | `pressure_value` | 超出传感器标定量程范围 |
|
||||
| A06-D04 | 周结束日期早于开始日期 | `week_start_date`, `week_end_date` | `week_end_date < week_start_date` |
|
||||
| A06-D04 | 睡眠+运动超过 24 小时 | `sleep_hour`, `sport_minute` | `sleep_hour + sport_minute > 1440` |
|
||||
|
||||
**exam_report_template(报告模板)**
|
||||
**ass_daily_routine_paper(问卷起居评估)**
|
||||
|
||||
| 编码 | 规则描述 | 涉及字段 | 判定逻辑 |
|
||||
|------|----------|----------|----------|
|
||||
| H07-D01 | 模板名称缺失 | `template_name` | `IS NULL OR = ''` |
|
||||
| H07-D03 | 模板状态枚举越界 | `status` | `NOT IN (0, 1)`(0=无效, 1=有效) |
|
||||
| A07-D01 | 异常标记缺失 | `is_exception` | `IS NULL` |
|
||||
| A07-D03 | 运动/睡眠/上网时长为负数 | `sport_value`, `sleep_value`, `time_of_net_value` | 任一 < 0 |
|
||||
| A07-D03 | 上网时长超出合理范围 | `time_of_net_value` | `> 24`(小时) |
|
||||
| A07-D03 | 运动/睡眠/上网等级枚举越界 | `sport_level`, `sleep_type`, `time_of_net_level` | 不在预定义枚举集合内 |
|
||||
| A07-D05 | 关联问卷不存在 | `questions_id` | 引用的问卷在 `ass_questions` 中不存在 |
|
||||
|
||||
**exam_plan(体检计划)**
|
||||
**ass_group_user / ass_group_user_detail(人群分类)**
|
||||
|
||||
| 编码 | 规则描述 | 涉及字段 | 判定逻辑 |
|
||||
|------|----------|----------|----------|
|
||||
| H08-D04 | 计划结束日期早于开始日期 | `date_range` (start, end) | `end_date < start_date` |
|
||||
| H08-D05 | 关联医院不存在 | `hospital_id` | 引用的医院不存在 |
|
||||
| A08-D03 | 人群分类枚举越界 | `user_group` | `NOT IN ('A', 'B', 'C', 'D', 'E')` |
|
||||
| A08-D03 | 变更类型枚举越界 | `group_change_type` | `NOT IN (1, 2, 3)` |
|
||||
| A08-D03 | 审核状态枚举越界 | `audit_status` | `NOT IN (0, 1, 2)` |
|
||||
| A08-D03 | 归属年份越界 | `date_year` | 早于 2020 或为未来年份 |
|
||||
| A08-D03 | 最近评估日期为未来日期 | `latest_assessment_date` | `latest_assessment_date > CURRENT_DATE` |
|
||||
| A08-D03 | 明细类型枚举越界 | `detail_type` | `NOT IN ('A', 'B', 'C', 'D')` |
|
||||
| A08-D03 | 数据类型枚举越界 | `data_type` | `NOT IN (1, 2)` |
|
||||
| A08-D04 | 已归档但无归档时间 | `is_archived`, `archived_time` | `is_archived = 1` 且 `archived_time IS NULL` |
|
||||
| A08-D05 | 关联人群分类主表记录不存在 | `group_user_id` | 引用的 `ass_group_user` 记录不存在 |
|
||||
| A08-D06 | 同一用户同一年度多条活跃分类记录 | `user_id`, `date_year` | `COUNT(*) > 1 GROUP BY user_id, date_year`(排除已归档记录) |
|
||||
|
||||
**exam_quota(体检名额)**
|
||||
**ass_questions(问卷答案)**
|
||||
|
||||
| 编码 | 规则描述 | 涉及字段 | 判定逻辑 |
|
||||
|------|----------|----------|----------|
|
||||
| H09-D03 | 名额总数为负数 | `total_quota` | `< 0` |
|
||||
| H09-D03 | 已用名额大于总数 | `used_quota` | `used_quota > total_quota` |
|
||||
| H09-D05 | 关联计划不存在 | `plan_id` | 引用的体检计划不存在 |
|
||||
| A09-D02 | 问卷 JSON 格式非法 | `questions_json` | JSON 解析失败 |
|
||||
|
||||
**ass_risk_diet_sports_prescription(饮食运动处方)**
|
||||
|
||||
| 编码 | 规则描述 | 涉及字段 | 判定逻辑 |
|
||||
|------|----------|----------|----------|
|
||||
| A10-D01 | 评估正常但运动处方字段全为空 | `aerobic_*`, `strength_*`, `flexibility_*` | 关联评估为正常但所有运动字段均为 NULL |
|
||||
| A10-D02 | 食物元素格式非法 | `f_elements` | 不符合 `meal_foodCode_amount;...` 格式 |
|
||||
| A10-D03 | 能量等级越界 | `energy_level` | `< 0 OR > 10000` (kcal) |
|
||||
|
||||
---
|
||||
|
||||
@@ -946,7 +976,7 @@
|
||||
|------|------|
|
||||
| 健康咨询 | C (Consult) |
|
||||
| 应急就医 | E (Emergency) |
|
||||
| 健康体检 | H (Health Checkup) |
|
||||
| 健康评估 | A (Assessment) |
|
||||
| 营养管理 | N (Nutrition) |
|
||||
| 健康监测 | M (Monitor) |
|
||||
| 系统管理 | S (System) |
|
||||
@@ -960,7 +990,7 @@
|
||||
| 系统管理 | 12 | 2 | 14 | 1 | 5 | 7 | **41** |
|
||||
| 健康咨询 | 3 | 0 | 12 | 5 | 8 | 0 | **28** |
|
||||
| 应急就医 | 5 | 2 | 10 | 4 | 3 | 0 | **24** |
|
||||
| 健康体检 | 6 | 2 | 9 | 5 | 9 | 2 | **33** |
|
||||
| 健康评估 | 6 | 4 | 31 | 11 | 3 | 1 | **56** |
|
||||
| 营养管理 | 4 | 3 | 14 | 5 | 4 | 2 | **32** |
|
||||
| 健康监测 | 1 | 2 | 14 | 9 | 1 | 3 | **30** |
|
||||
| **合计** | **31** | **11** | **73** | **29** | **30** | **14** | **188** |
|
||||
| **合计** | **31** | **13** | **95** | **35** | **24** | **13** | **211** |
|
||||
|
||||
Reference in New Issue
Block a user