3. 直接标识符与准标识符的识别方法

在临床研究数据匿名化工程中,识别字段的分类是全部后续处理工作的起点。如果分类错误,要么导致匿名化不彻底、产生再识别风险,要么过度脱敏、破坏数据的科研可用性。本节围绕临床数据中常见的姓名、身份证号、病历号、出生日期、邮编、就诊时间等字段,讲清直接标识符与准标识符的判定逻辑、风险等级划分,以及如何构建一份可执行的识别清单。

一、两类标识符的本质区别

直接标识符(Direct Identifier)是指能够单独、直接指向某一个具体自然人的字段。它的特点是"一对一":一个取值对应一个人,无需借助任何其他信息即可完成身份锁定。姓名、身份证号、住院号、门诊病历号、手机号、医保卡号、指纹或人脸等生物特征,都属于直接标识符。在合规实践中,直接标识符通常要求删除或不可逆替换,而不是简单遮蔽。

准标识符(Quasi-Identifier)是指单独看不能唯一确定个体,但多个准标识符组合后可以高概率锁定个体的字段。出生日期、性别、邮编、就诊时间、民族、职业、婚姻状况等是典型代表。准标识符的风险来自"组合效应":例如某三甲医院某科室某日仅有一名85岁女性患者,那么"85岁+女性+该科室+该日"这一组合实际上已等价于直接标识符。

判定口诀:单字段能否唯一指向一个人?能,则为直接标识符;不能,但与其他字段组合后可能唯一指向,则为准标识符。判定必须结合数据集的粒度、样本量和字段组合来评估,而不是只看字段名称。

二、临床常见字段的分类与风险等级

下表给出临床研究数据集中高频字段的分类建议与风险等级。风险等级采用高、中、低三档:高风险字段一旦泄露即可直接定位个体;中风险字段在特定组合下可定位;低风险字段单独泄露的定位能力弱,但仍需纳入组合评估。

字段 类型 风险等级 处理建议
姓名直接标识符高删除或替换为研究编号
身份证号直接标识符高删除;如需保留地区/年龄信息,仅提取前6位或出生年份
病历号/住院号直接标识符高替换为映射表管理的伪随机研究ID
手机号/医保卡号直接标识符高删除
出生日期(精确到日)准标识符高泛化为出生年份或年龄段
就诊时间(精确到分/秒)准标识符高泛化为日期或周,或做时间偏移
邮编(完整6位)准标识符中截断为前3位或映射为区域码
性别准标识符低保留,但需参与组合评估
年龄准标识符低保留;高龄段(如≥89岁)建议合并
民族、职业、婚姻状况准标识符低保留或粗分类

需要特别说明的是,风险等级不是字段的固有属性,而是"字段+数据集"的属性。在小样本、罕见病或单一中心研究中,邮编、民族等低风险字段的组合风险会显著上升。因此识别清单必须记录评估所依据的数据集规模与场景。

三、识别清单的构建方法

构建识别清单不是简单罗列字段名,而是一个可复现的判定过程。建议按以下四步执行:

  1. 字段清点:从原始数据字典、CRF表单、数据库表结构中提取全部字段,包括看似无关的备注、自由文本、影像文件名等。自由文本常隐藏姓名和日期,是漏检高发区。
  2. 单字段判定:对每个字段回答"能否单独唯一指向个体"。能则标记为直接标识符,进入删除/替换流程。
  3. 组合评估:对剩余字段,选取出生日期、性别、邮编、就诊时间等强准标识符,计算其在数据集中的组合唯一率。若某组合能唯一命中超过阈值(如5%)的记录,则该组合需整体泛化。
  4. 登记与复核:将字段名、类型、风险等级、处理方式、评估依据写入清单,由数据管理员与伦理/合规人员双人复核。

组合唯一率可用如下方式估算:对选定准标识符集合,统计每个取值组合出现的记录数,唯一组合数除以总记录数即为唯一率。示例:某数据集1000条记录,按"出生日期+性别+邮编"分组后得到120个唯一组合,则唯一率约为12%,超过5%阈值,说明该组合需要进一步泛化(如出生日期改为出生年份、邮编截断为前3位)。

# 组合唯一率估算示例(伪代码)
qi = ["birth_date", "gender", "zipcode"]
groups = df.groupby(qi).size()
unique_ratio = (groups == 1).sum() / len(df)
# 若 unique_ratio > 0.05,则对 qi 中字段做泛化后重新评估

四、识别清单示例

下表是一份可直接参考的识别清单片段,字段与判定依据均来自前述分析。实际使用时,应根据本研究的数据字典逐字段填写,并保留评估日期与复核人签名。

序号 字段名 类型 风险等级 判定依据 处理方式
1patient_name直接标识符高唯一指向个体删除
2id_card直接标识符高唯一指向个体删除,仅保留出生年份
3mrn直接标识符高院内唯一替换为研究ID
4birth_date准标识符高与性别、邮编组合唯一率12%泛化为出生年份
5visit_time准标识符高精确到分钟,可缩小至单人泛化为日期
6zipcode准标识符中6位邮编覆盖范围小截断为前3位
7gender准标识符低单独无定位能力保留
8age准标识符低单独无定位能力保留,≥89岁合并
识别清单应作为版本化文档管理。每当数据字典变更、样本量变化或新增字段时,必须重新评估组合唯一率并更新清单,避免"一次分类、长期沿用"带来的合规漂移。

五、识别过程中的常见误区

第一,把"已脱敏"等同于"已删除姓名"。实际上,病历号、精确就诊时间、自由文本中的日期同样具有强定位能力。第二,忽视自由文本字段。病程记录、影像报告、备注中常出现姓名、床号、具体日期,需单独做文本扫描。第三,只按字段名分类而不看取值粒度。例如"年龄"若以出生日期形式存储,其风险等级应从低升为高。第四,忽略跨数据集链接风险。本研究数据若与公开人口登记数据按邮编和出生日期链接,准标识符的再识别能力会大幅增强。

综上,直接标识符与准标识符的识别,核心在于"单字段唯一性判定"与"多字段组合唯一率评估"两个动作。前者决定哪些字段必须删除或替换,后者决定哪些字段需要泛化以及泛化到什么粒度。把这两个动作固化为清单和复核流程,才能让后续的匿名化处理有据可依、可审计、可复现。

临床字段标识符识别与风险分流 原始字段池 姓名 / 身份证号 病历号 / 住院号 手机号 / 医保卡号 出生日期 就诊时间 邮编 / 性别 / 年龄 民族 / 职业 / 婚姻 自由文本 / 备注 单字段唯一性判定 能否单独指向一个人? 是 → 直接标识符 组合唯一率评估 准标识符组合命中率 是否超过阈值? 直接标识符 · 高风险 • 姓名、身份证号、病历号 • 手机号、医保卡号、生物特征 • 处理:删除 / 不可逆替换 • 保留映射表,独立加密管理 准标识符 · 组合风险 • 出生日期、就诊时间、邮编 • 性别、年龄、民族、职业 • 处理:泛化 / 截断 / 时间偏移 • 泛化后重新计算组合唯一率 识别清单登记与双人复核 字段名 · 类型 · 风险等级 · 依据 · 处理方式