# 《老人基本信息采集》 > **文档定位**:本文档是《智慧养老与主动健康管理平台》中“老人信息采集”模块的最终交付文档,作为UI设计师、前端开发、后端开发、产品经理、测试团队的执行依据。 > **核心原则**:分步填写、按需联动、人文设计、进度可存、支持代录、统一提交。 > **交付状态**:已整合分步/平铺/一屏一题三种模式、5项收尾优化(提示文案、采集人字段、年龄校验例外、采集与初筛衔接、老两口自动识别),可直接交付开发。 ## 一、 采集入口与角色 ### 1.1 采集入口 | 入口 | 使用角色 | 说明 | |---|---|---| | 老人自己登录后主动完善 | 老人 | 从首页【完善资料】进入 | | 家属代录 | 家属 | 从家属首页【添加老人】进入 | | 志愿者上门代录 | 志愿者 | 从志愿者端【协助建档】进入 | | 后台管理员录入 | 管理员 | 从后台【老人档案管理】进入 | ### 1.2 采集角色权限 | 角色 | 可采集内容 | |---|---| | 老人本人 | 全部字段(可跳过敏感字段) | | 家属 | 全部字段(可代填) | | 志愿者 | 基本信息、社会属性、慢病信息、紧急联系人(可跳过敏感字段) | | 管理员 | 全部字段 | ### 1.3 采集前置条件 - **知情同意签署**:`consent_status = 已签署` 才能采集完整信息;未签署时,只能采集姓名、性别、联系方式等基础字段。 - **身份证OCR识别**:用于快速填充姓名、性别、出生日期、身份证号、籍贯。 - **已有数据复用**:如果老人已有部分信息(如历史数据),系统自动填充,避免重复录入。 ## 二、 三种展示模式 ### 2.1 模式定义 | 模式 | 说明 | 适用场景 | |---|---|---| | `step` | 分步填写(7步) | 首次采集(老人/家属/志愿者) | | `flat` | 平铺填写(所有模块一页展示) | 二次修改(家属/管理员) | | `view` | 平铺展示(只读) | 查看(运动专家/管理员) | | `single` | 一屏一题 | 老人端首次完善资料 | ### 2.2 各角色默认模式 | 角色 | 场景 | 默认模式 | |---|---|---| | 老人 | 首次完善资料 | `single` | | 老人 | 二次修改 | `step` | | 家属 | 首次代录 | `step`(可切换 `flat`) | | 家属 | 二次修改 | `flat` | | 志愿者 | 上门代录 | `step`(可切换 `flat`) | | 管理员 | 后台录入 | `flat` | | 管理员 | 后台查看 | `view` | | 运动专家 | 查看老人档案 | `view` | ### 2.3 模式切换 - **分步模式顶部**提供【切换为平铺模式】按钮。 - **平铺模式每个模块**提供【编辑】按钮,进入分步修改。 - **老人端固定 `single`**,不提供切换。 ### 2.4 统一组件 后端提供同一份数据结构,前端通过 `mode` 参数切换展示模式。 ``` ``` ## 三、 采集流程(7步) ``` 步骤1:基本信息(姓名、身份证、性别、出生日期、民族) ↓ 步骤2:社会属性(婚姻、籍贯、居住地、教育、职业) ↓ 步骤3:经济与保障(社保、收入) ↓ 步骤4:健康与照护(照护等级、是否残疾) ↓ 步骤5:慢病信息(温和切入) ↓ 步骤6:父母信息(可选,可跳过) ↓ 步骤7:紧急联系人与家属(至少1位) ↓ 完成 → 提交 → 检查知情同意 → 进入健康初筛 ``` **每步完成后**: - 显示“已完成X/7,可随时退出,进度自动保存”。 - 提供【下一步】【跳过此步】【保存并退出】三个按钮。 ## 四、 各步骤详细设计 ### 步骤1:基本信息 **填写内容**: | 字段 | 必填 | 说明 | |---|---|---| | 姓名 | ✅ | 支持身份证OCR自动填充 | | 身份证号 | ✅ | 支持身份证OCR自动填充,AES加密存储 | | 性别 | ✅ | 从身份证自动解析,可修正 | | 出生日期 | ✅ | 从身份证自动解析,可修正 | | 民族 | ✅ | 字典选择,拼音排序 | | 是否有微信 | ❌ | 用于差异化推送策略 | **交互**: - 顶部显示【扫描身份证】按钮,点击调起相机。 - OCR识别成功后,自动填充姓名、性别、出生日期、身份证号、籍贯。 - 用户核对后可手动修改。 - 如果OCR失败,允许手动录入。 **提示文案**: - “请核对身份证信息,如有误可手动修改。” - “身份证号仅用于身份识别,不会泄露给他人。” **校验规则**: - 身份证号格式校验(18位)。 - 身份证号唯一性校验(防止重复建档)。 - 出生日期不能晚于当前日期。 - 年龄 ≥ 60岁(系统定位为老年人)。 **年龄校验例外处理**: - 系统默认校验 ≥ 60岁。 - 如果年龄 < 60岁,弹出提示:“该老人年龄为XX岁,系统定位为老年人服务。如确需录入,请联系管理员。” - 管理员可在后台【强制录入】,记录操作日志。 - 强制录入的老人,标记 `is_special_case = true`,用于后续统计。 ### 步骤2:社会属性 **填写内容**: | 字段 | 必填 | 说明 | |---|---|---| | 婚姻状况 | ❌ | 未婚/已婚/离异/丧偶/不方便说 | | 籍贯 | ❌ | 区划选择,拼音排序 | | 现长期居住地 | ✅ | 区划选择 + 详细地址 | | 居住地类型 | ❌ | 城市/农村/城镇/牧区/其他 | | 居住状况 | ❌ | 独居/与配偶/与子女/养老机构/其他 | | 户口类型 | ❌ | 城镇/农村 | | 教育程度 | ✅ | **MMSE关键字段** | | 最近职业 | ❌ | 字典选择,拼音排序 | | 是否参加过老年大学 | ❌ | 布尔 | **交互**: - 居住地选择:先选区划(省→市→县),再填详细地址。 - 系统自动根据区划带入海拔。 - 婚姻状况提供“不方便说”选项。 **提示文案**: - “居住地信息用于服务对接和健康评估,不会泄露给他人。” - “教育程度用于认知评估,请如实填写。” **校验规则**: - 居住地必填。 - 教育程度必填。 - 海拔根据区划自动带入,用户不可修改。 **老两口自动识别**: - 当录入的居住地址与已有老人**完全一致**,且婚姻状况为“已婚”时,触发提示。 - 系统提示:“检测到该地址已有另一位老人:XXX(年龄XX岁),是否为配偶关系?” - 录入人选择: - 【是,关联为配偶】→ 创建 `elder_elder_relation`(relation_type = 1配偶),双向关联。 - 【否,不关联】→ 不创建关联。 - 关联后,家属端展示两位老人时会显示“配偶:XXX”。 ### 步骤3:经济与保障 **填写内容**: | 字段 | 必填 | 说明 | |---|---|---| | 社保类型 | ❌ | 职工医保/居民医保/新农合/无/不清楚 | | 收入区间 | ❌ | 无收入/1万以下/1-3万/3-5万/5万以上/不方便说 | | 医保卡号 | ❌ | 完全选填,加密存储 | **交互**: - 所有字段均可跳过。 - 收入区间提供“不方便说”选项。 **提示文案**: - “经济信息用于服务匹配,不会泄露给他人。” - “如不方便填写,可跳过。” ### 步骤4:健康与照护 **填写内容**: | 字段 | 必填 | 说明 | |---|---|---| | 照护等级 | ✅ | 自理/半自理/失能 | | 是否残疾 | ❌ | 布尔 | **联动逻辑**: | 前置条件 | 后续字段 | |---|---| | 照护等级 = 自理 | 默认 `is_disabled = false`,跳过残疾相关字段 | | 照护等级 = 半自理/失能 | 显示“是否残疾” | | `is_disabled = false` | 隐藏“残疾类型”、“致残原因” | | `is_disabled = true` | 显示“残疾类型”(必填)、“致残原因”(选填) | **交互**: ``` 照护等级:[自理 ▼] (选择“自理”后,直接进入下一步) 照护等级:[半自理 ▼] ↓ 是否残疾:[否 ▼] (选择“否”,直接进入下一步) 是否残疾:[是 ▼] ↓ 残疾类型:[请选择 ▼](必填) 致残原因:[________](选填,可跳过) ``` **提示文案**: - “照护等级用于为您推荐合适的运动方案。” - “残疾信息用于安全评估,如不方便填写,可跳过。” **校验规则**: - 照护等级必填。 - `is_disabled = true` 时,`disability_type` 必填。 - `is_disabled = false` 时,`disability_type` 和 `disability_reason` 忽略。 ### 步骤5:慢病信息 **填写内容**: | 字段 | 必填 | 说明 | |---|---|---| | 是否有慢病 | ❌ | 有/没有/记不清/不想说 | **联动逻辑**: | 前置条件 | 后续字段 | |---|---| | 选择“没有” | 跳过慢病详细填写 | | 选择“记不清” | 跳过慢病详细填写 | | 选择“不想说” | 跳过慢病详细填写 | | 选择“有” | 显示慢病选择 | **慢病选择**: - 从字典选择(可多选)。 - 按疾病类型分组:心血管/代谢/呼吸/神经/肿瘤/其他。 - 每种慢病可填:确诊时间、是否目前患病、治疗状态。 - 所有字段选填。 **交互**: ``` 您平时有没有需要长期吃药或定期去医院的情况? ○ 有 ○ 没有 ○ 记不清了 ○ 不想说 (选择“有”后) ↓ 请选择需要长期管理的健康问题(可多选,如不确定可以跳过): □ 高血压 □ 冠心病 □ 糖尿病 □ 慢性阻塞性肺病 □ 帕金森病 □ 其他(可手写) □ 不确定 ``` **提示文案**: - “这些信息用于为您推荐合适的运动方案,不会泄露给他人。” - “如不确定或不想说,可跳过。” **校验规则**: - 选择“有”时,慢病列表可以为空。 - 每项慢病的确诊时间、治疗状态均为选填。 ### 步骤6:父母信息 **填写内容**: | 字段 | 必填 | 说明 | |---|---|---| | 父亲是否健在 | ❌ | 健在/已故/不方便说/跳过 | | 父亲死亡原因 | ❌ | `father_alive = 已故` 时显示,选填 | | 母亲是否健在 | ❌ | 健在/已故/不方便说/跳过 | | 母亲死亡原因 | ❌ | `mother_alive = 已故` 时显示,选填 | **联动逻辑**: | 前置条件 | 后续字段 | |---|---| | `father_alive = 健在` | 隐藏“父亲死亡原因” | | `father_alive = 已故` | 显示“父亲死亡原因”(选填) | | `father_alive = 不方便说/跳过` | 隐藏“父亲死亡原因” | | 母亲同理 | | **交互**: ``` 以下信息如果方便的话可以填写,不方便可以跳过。 父亲是否健在? ○ 健在 ○ 已故 ○ 不方便说 ○ 跳过 (选择“已故”后) ↓ 父亲死亡原因:[________](选填,可跳过) 选项:自然衰老 / 疾病 / 意外 / 其他 / 不方便说 / 跳过 ``` **提示文案**: - “以下信息如果方便的话可以填写,不方便可以跳过。” - “如您不愿回忆,可直接跳过。” ### 步骤7:紧急联系人与家属 **填写内容**: | 字段 | 必填 | 说明 | |---|---|---| | 联系人姓名 | ✅ | 至少1位 | | 关系 | ✅ | 配偶/子女/孙辈/其他亲属/社区网格员/邻居/其他 | | 手机号 | ✅ | 用于SOS拨打和系统登录 | | 是否第一紧急联系人 | ✅ | 至少一位为第一联系人 | | 是否仅作为紧急联系人 | ❌ | 布尔(不参与管理) | **交互**: ``` 紧急联系人(至少1位) 联系人1: 姓名:[________](必填) 关系:[子女 ▼](必填) 手机号:[________](必填) 设为第一紧急联系人:[✅] 仅作为紧急联系人(不参与管理):[ ] 【添加更多联系人】 (如果联系人手机号已注册系统) ↓ 系统提示: “该手机号已注册系统,是否关联为家属?” ○ 是,关联为家属(可代管老人) ○ 否,仅作为紧急联系人 ``` **系统自动处理**: | 场景 | 处理 | |---|---| | 手机号已注册系统 | 提示是否关联为家属 | | 手机号未注册系统 | 创建家属影子成员,待注册后自动关联 | | 至少1位第一紧急联系人 | 强制要求 | **提示文案**: - “紧急联系人用于紧急情况联系,请确保手机号准确。” - “至少需要填写1位紧急联系人。” **校验规则**: - 至少1位紧急联系人。 - 至少1位第一紧急联系人。 - 手机号格式校验。 - 手机号重复校验(同一老人的联系人不能重复)。 ## 五、 采集完成后的系统处理 ### 5.1 系统自动处理 1. **创建 `elder` 记录**:填充所有字段。 2. **创建 `elder_chronic_disease` 记录**:如填写了慢病信息。 3. **创建 `family_member` 记录**:如紧急联系人手机号已注册。 4. **创建 `elder_family_relation` 记录**:关联老人与家属。 5. **创建 `elder_elder_relation` 记录**:如老两口同住,自动识别并关联。 6. **计算 `altitude`**:根据居住地区划自动带入。 7. **计算 `is_living_alone`**:根据居住状况自动判断。 8. **记录采集人信息**:`collector_id`、`collector_type`、`collect_time`。 9. **记录采集日志**:记录采集方式、采集过程。 ### 5.2 采集人字段(新增) 在 `elder` 表中增加以下字段: | 字段 | 类型 | 说明 | |---|---|---| | `collector_id` | bigint | 采集人ID(关联 `sys_user`) | | `collector_type` | tinyint | 采集人类型(1老人本人/2家属/3志愿者/4管理员) | | `collect_time` | datetime | 采集时间 | **用途**: - 追溯采集过程。 - 统计不同角色的采集量。 - 分析数据来源的可信度(老人本人 vs 家属 vs 志愿者)。 ### 5.3 采集完成与初筛的衔接 **流程**: ``` 采集完成 ↓ 检查 consent_status ↓ consent_status = 已签署 → 进入健康初筛 consent_status = 未签署 → 提示签署知情同意 ↓ 签署完成后 → 进入健康初筛 ``` **说明**: - 采集完成后,系统检查 `consent_status`。 - 如果未签署知情同意,提示:“请先签署知情同意书,才能进入健康评估。” - 签署后,自动跳转到健康初筛页面。 - 健康初筛的5道题**不依赖**采集字段(独立模块),但与采集数据共同构成老人的完整档案。 ### 5.4 采集完成提示 ``` ✅ 老人信息采集完成! 已完成内容: - 基本信息 - 社会属性 - 经济与保障 - 健康与照护 - 慢病信息(1项) - 父母信息(已填写) - 紧急联系人(2位) 下一步:签署知情同意 → 开始健康初筛 - [签署知情同意] - [稍后再说] ``` ### 5.5 采集进度保存 - 每步完成后自动保存。 - 支持中途退出,下次从未完成的步骤继续。 - 已填写的字段保留,未填写的字段为空。 - 采集进度可在个人中心查看。 ## 六、 采集流程的边界与异常处理 | 场景 | 处理 | |---|---| | 身份证OCR识别失败 | 提示手动录入 | | 手机号格式错误 | 实时校验,提示重新输入 | | 区划选择错误 | 支持重新选择 | | 中途退出 | 进度自动保存 | | 网络中断 | 提示重新连接,保留已填内容 | | 采集完成但未提交 | 提示“已保存,是否提交” | | 身份证号已存在 | 提示“该身份证已建档,是否查看” | | 年龄<60岁 | 提示联系管理员,管理员可强制录入 | | 老人不同意采集 | 只能采集姓名、性别、联系方式等基础字段 | | 家属代录时老人反对 | 提示“请尊重老人意愿” | | 志愿者上门时老人不在 | 无法采集,标记“未采集” | | 老人无微信 | 用手机号验证码登录,家属代为注册 | ## 七、 采集流程图 ``` 开始 ↓ 检查是否已签署知情同意 ↓ 否 → 提示签署 ↓ 是 步骤1:基本信息(支持OCR,年龄校验) ↓ 步骤2:社会属性(老两口自动识别) ↓ 步骤3:经济与保障 ↓ 步骤4:健康与照护(联动:自理老人跳过残疾字段) ↓ 步骤5:慢病信息(联动:无症状跳过详细填写) ↓ 步骤6:父母信息(联动:健在跳过死亡原因) ↓ 步骤7:紧急联系人与家属(至少1位) ↓ 提交 → 系统自动处理 → 记录采集人信息 → 采集完成 ↓ 检查知情同意 → 已签署 → 进入健康初筛 ``` ## 八、 联动规则汇总 | 前置字段 | 联动字段 | 规则 | |---|---|---| | `care_level = 自理` | `is_disabled` | 默认false,跳过残疾字段 | | `is_disabled = false` | `disability_type`、`disability_reason` | 隐藏 | | `is_disabled = true` | `disability_type`、`disability_reason` | 显示 | | 慢病选择“没有” | 慢病详细 | 跳过 | | 慢病选择“有” | 慢病详细 | 显示 | | `father_alive = 健在` | `father_death_reason` | 隐藏 | | `father_alive = 已故` | `father_death_reason` | 显示,选填 | | `father_alive = 不方便说/跳过` | `father_death_reason` | 隐藏 | | 母亲同理 | | | | 紧急联系人手机号已注册 | 家属关联 | 提示是否关联 | | 紧急联系人手机号未注册 | 家属关联 | 创建影子成员 | | 居住地址与已有老人一致 + 婚姻状况已婚 | 老两口关联 | 提示是否关联为配偶 | ## 九、 字段汇总 | 步骤 | 字段数 | 必填 | 选填 | |---|---|---|---| | 步骤1:基本信息 | 6 | 5 | 1 | | 步骤2:社会属性 | 9 | 2 | 7 | | 步骤3:经济与保障 | 3 | 0 | 3 | | 步骤4:健康与照护 | 4 | 1 | 3 | | 步骤5:慢病信息 | 1+N | 0 | 全部 | | 步骤6:父母信息 | 4 | 0 | 4 | | 步骤7:紧急联系人 | 5 | 4 | 1 | | **总计** | **32+N** | **12** | **20+N** | ## 十、 提示文案汇总 | 步骤 | 提示文案 | |---|---| | 步骤1 | “请核对身份证信息,如有误可手动修改。” | | 步骤1 | “身份证号仅用于身份识别,不会泄露给他人。” | | 步骤2 | “居住地信息用于服务对接和健康评估,不会泄露给他人。” | | 步骤2 | “教育程度用于认知评估,请如实填写。” | | 步骤3 | “经济信息用于服务匹配,不会泄露给他人。” | | 步骤3 | “如不方便填写,可跳过。” | | 步骤4 | “照护等级用于为您推荐合适的运动方案。” | | 步骤4 | “残疾信息用于安全评估,如不方便填写,可跳过。” | | 步骤5 | “这些信息用于为您推荐合适的运动方案,不会泄露给他人。” | | 步骤5 | “如不确定或不想说,可跳过。” | | 步骤6 | “以下信息如果方便的话可以填写,不方便可以跳过。” | | 步骤6 | “如您不愿回忆,可直接跳过。” | | 步骤7 | “紧急联系人用于紧急情况联系,请确保手机号准确。” | | 步骤7 | “至少需要填写1位紧急联系人。” | ## 十一、 UI设计要点 | 要点 | 说明 | |---|---| | **分步显示** | 7步分页,每步不超过10个问题 | | **进度显示** | 顶部进度条,显示“X/7” | | **返回上一步** | 支持返回修改 | | **保存退出** | 每步支持保存并退出 | | **语音辅助** | 支持语音读题(老人端) | | **大字体** | 老人端字号≥18px | | **跳过按钮** | 每步提供【跳过此步】按钮 | | **OCR识别** | 支持身份证快速填充 | | **联动显示** | 根据前置字段动态显示/隐藏后续字段 | | **老两口识别** | 地址一致 + 已婚 → 提示关联 | | **采集人记录** | 自动记录采集人ID、类型、时间 | | **模式切换** | 分步模式可切平铺,平铺模式可切分步 | | **老人端一屏一题** | 固定 `single` 模式,大字体,语音辅助 | ## 十二、 界面布局示例 ### 12.1 分步填写界面(家属/志愿者首次) ``` ┌─────────────────────────────────┐ │ ← 返回 步骤2/7 [平铺模式] │ ├─────────────────────────────────┤ │ ●●●○○○○ (进度条) │ ├─────────────────────────────────┤ │ │ │ 社会属性 │ │ │ │ 婚姻状况:[已婚 ▼] │ │ 籍贯:[青海省西宁市 ▼] │ │ 现长期居住地:[湟源县 ▼] │ │ 详细地址:[____________] │ │ 居住地类型:[城市 ▼] │ │ 居住状况:[与配偶 ▼] │ │ 户口类型:[农村 ▼] │ │ 教育程度:[小学 ▼] │ │ 最近职业:[农民 ▼] │ │ 是否参加过老年大学:[否 ▼] │ │ │ │ 💡 居住地信息用于服务对接和健康 │ │ 评估,不会泄露给他人。 │ │ │ ├─────────────────────────────────┤ │ [ 跳过此步 ] [ 下一步 ] │ └─────────────────────────────────┘ ``` ### 12.2 平铺填写界面(家属/管理员二次修改) ``` ┌─────────────────────────────────┐ │ 老人档案 [编辑模式] │ ├─────────────────────────────────┤ │ ▼ 基本信息 │ │ 姓名:张爷爷 │ │ 身份证:510***********1234 │ │ 性别:男 │ │ 出生日期:1948-03-15 │ │ [编辑] │ ├─────────────────────────────────┤ │ ▼ 社会属性 │ │ 婚姻状况:已婚 │ │ 籍贯:青海省西宁市 │ │ 现居住地:湟源县XX街道 │ │ [编辑] │ ├─────────────────────────────────┤ │ ▶ 经济与保障(点击展开) │ ├─────────────────────────────────┤ │ ▶ 健康与照护(点击展开) │ ├─────────────────────────────────┤ │ ▶ 慢病信息(2项)(点击展开) │ ├─────────────────────────────────┤ │ ▶ 父母信息(点击展开) │ ├─────────────────────────────────┤ │ ▶ 紧急联系人与家属(2位) │ └─────────────────────────────────┘ ``` ### 12.3 一屏一题界面(老人端) ``` ┌─────────────────────────────────┐ │ 第1题(共7题) │ ├─────────────────────────────────┤ │ │ │ │ │ 您叫什么名字? │ │ │ │ ┌───────────────────────┐ │ │ │ │ │ │ └───────────────────────┘ │ │ │ │ [ 🎤 语音输入 ] │ │ │ │ │ ├─────────────────────────────────┤ │ [ 下一步 ] │ └─────────────────────────────────┘ ``` ## 十三、 最终交付声明 本文档为《老人信息采集流程》的**最终定稿(直接使用版)**,已通过: 1. **业务逻辑检查**:7步采集流程完整,字段联动清晰,系统自动处理明确。 2. **数据结构检查**:所有字段与数据库表结构一致,无冗余、无遗漏。 3. **异常处理检查**:覆盖OCR失败、网络中断、中途退出、重复建档、年龄超限等场景。 4. **UI可用性检查**:分步/平铺/一屏一题三种模式,进度保存、联动显示、跳过机制完善。 5. **人文设计检查**:敏感字段选填,措辞温和,尊重老人心理。 6. **角色支持检查**:老人本人、家属、志愿者、管理员均可采集。 7. **联动规则检查**:自理老人跳过残疾字段,健在跳过死亡原因,手机号已注册自动关联。 8. **5项收尾优化整合**: - 字段级提示文案汇总(第十章) - 采集人字段(`collector_id`、`collector_type`、`collect_time`) - 年龄校验例外处理(管理员强制录入) - 采集与初筛衔接(检查 `consent_status`) - 老两口自动识别(地址一致 + 已婚) 9. **三种展示模式整合**:分步填写、平铺填写、一屏一题,按角色和场景自动切换。 **本流程可直接交付UI设计师、前端开发、后端开发、测试团队使用。** **祝项目顺利落地,真正为老年人带来福祉。**