想象你是三甲医院放射科的档案管理员,每天要处理数百份患者的CT、MRI、X光检查档案。每份档案装在一个牛皮纸袋里(这就是DICOM文件),纸袋正面贴着一张索引卡(元数据),上面写着患者姓名、身份证号、出生日期、家庭住址(这就是PHI受保护健康信息)。当科研团队或外部机构需要这些影像数据训练AI模型时,你不能直接把档案袋甩过去——上面密密麻麻的隐私信息会泄露患者个人身份。于是你拿出一支黑色马克笔,把索引卡上的敏感信息逐一涂黑,这就是PHI脱敏。 但事情远没这么简单:光涂掉姓名就够了?出生日期加上小镇邮编,照样能锁定一个人;胶片角落用油性笔写的患者名字,你在卡片上涂一百遍也抹不掉。你必须学会分辨哪些信息能定位个体、用什么手法涂得干净、涂完之后如何验证、以及整个流程要符合什么样的规章制度。这篇文章,就是带你从零学会管理这座“医学影像档案室”的全套本领。

岗位关联

对于AI从业者而言,这是医疗影像AI合规开发的“上岗证”——不懂PHI脱敏,训练数据一出手就可能让公司陷入法律纠纷,个人职业生涯也会蒙上污点。

目录
  1. 可视化演示
  2. DICOM文件格式
  3. 元数据标签结构
  4. PHI识别要点
  5. 脱敏方法实战
  6. HIPAA合规要求
  7. 批量处理流程
  8. 安全存储管理
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示DICOM文件元数据分组结构与PHI脱敏流水线,交互切换元数据浏览与脱敏处理视图。

本节配有交互动效(进入视口后自动加载,约 3KB)。

DICOM元数据分组结构 患者组(PAT):姓名/ID/生日/性别,含最敏感PHI信息 检查组(STU):UID/日期/编号/模态,关联就诊信息 序列组(SER)与图像组(IMG):序列参数与像素维度,非敏感数据 DICOM元数据按组分类,活跃组高亮显示当前解析区域

DICOM文件格式

档案管理员上岗第一课,是认识档案袋本身。你手里的牛皮纸袋看起来是一个整体,但里面其实分为三个区域:最外面是袋子封皮(文件头),中间是插在透明袋里的索引卡区(数据元集合),最底下的硬纸板夹层里才是胶片(像素数据)。不了解这三层结构,你连“从哪里找患者姓名”都不知道。

DICOM(医学数字成像与通信)就是这个档案袋的国家标准规格。它由NEMA(美国电气制造商协会)维护,定义了医学影像文件从生成、存储到传输的全套规则。一个标准DICOM文件由三部分组成:128字节的导言区(让文件能被普通文件系统识别)、紧随其后的"DICM"魔数(如同档案袋上的统一钢印),以及核心的数据元序列。数据元序列用标签-值配对的方式存储所有元信息,最后才是真正的图像像素数据。

用公式表达DICOM文件的骨架:

认清了这个三层结构,你就知道:脱敏不只是涂索引卡,还要检查胶片上有没有用油性笔留下的字迹。接下来,我们要重点研究索引卡上那些格子是怎么编号的。

DICOM=H⏟文件头+{Σi}i=1n⏟数据元序列+P⏟像素数据\text{DICOM} = \underbrace{H}_{\text{文件头}} + \underbrace{\{\Sigma_i\}_{i=1}^{n}}_{\text{数据元序列}} + \underbrace{P}_{\text{像素数据}}
DICOM = 文件头(档案袋封皮)+ 一串数据元(索引卡格子)+ 像素数据(胶片)。
  1. 文件头包含128字节导言和4字节的“DICM“前缀,相当于档案袋封皮上的钢印,告诉文件系统”这是标准DICOM档案”。
    H=128×byte+"DICM"H = 128 \times \text{byte} + \text{"DICM"}
  2. 数据元序列每个数据元由标签、值表示法(VR)、值长度和值本体组成,相当于索引卡上每个格子里的编号和内容。
    Σi=(Gi,Ei,VRi,Li,Di)\Sigma_i = (G_i, E_i, \text{VR}_i, L_i, D_i)
  3. 像素数据以标签(7FE0,0010)存储实际的图像灰度矩阵,相当于夹层里的胶片本身,脱敏时它常被忽略。
    P≡(7FE0,0010)P \equiv (7FE0,0010)

元数据标签结构

索引卡上每一个格子都有固定编号,比如第3行第2格永远填患者ID。DICOM的元数据标签就是这种编号系统——用一对十六进制数(组号,元素号)唯一定位一个字段。组号按功能分块:0010开头的都是患者身份信息,0008开头的是检查通用信息,0028开头的是图像呈现参数。元素号则是在组内细分具体字段。

这套寻址协议让不同医院的系统能读懂彼此的文件,也正是脱敏脚本的“藏宝图”——你要涂黑哪些格子,全看标签编号。比如(0010,0010)是患者姓名,(0010,0020)是患者ID,(0010,0030)是出生日期。这些是PHI的高发区,一抓一个准。

认识了标签地图,下一步就是学会“读卡”——你要判断哪些格子里的内容算PHI,哪些可以留着不涂。

Tag=(Group,Element),(0010,0010)→PatientName\text{Tag} = (\text{Group}, \text{Element}), \quad (0010, 0010) \to \text{PatientName}
标签就像索引卡格子的行列坐标,告诉你每个隐私字段躲在哪个格子里。
  1. 组号十六进制的高位部分,标识数据类别;0010组专门存放患者身份信息。
    (0010,⋅)→患者身份信息组(0010, \cdot) \to \text{患者身份信息组}
  2. 元素号低位部分,在组内区分具体字段,0020表示患者ID。
    (0010,0020)→PatientID(0010, 0020) \to \text{PatientID}
  3. 私有标签厂商自定义区域(组号为奇数、元素号以00xx结尾),隐藏着意想不到的PHI,脱敏时必须扫描。
    Private=(gggg,00xx),gggg为奇数\text{Private} = (gggg, 00xx), \quad gggg \text{为奇数}

PHI识别要点

现在你站在档案室,手里拿着一份档案袋,马克笔在食指上转圈。问题来了:哪些信息必须涂?HIPAA法案的安全港法直接列出了一份“十八类高危名单”:姓名、地理信息(比州更细)、日期(比年份更细)、电话号码、传真号码、电子邮箱、社会安全号、病历号、健康计划号、账号、证书号、车牌号、设备序列号、URL、IP地址、生物特征、全脸照片、任何其他唯一识别号。这十八类统称为PHI。

但识别PHI不能只背名单,更要理解两类标识符的本质区别。直接标识符(姓名、SSN、病历号)看一眼就知道是谁;间接标识符(出生日期、邮编、性别、罕见诊断)单个不起眼,组合起来却能像拼图一样锁定个人。比如“1990年出生+某小镇邮编+男性+一种罕见病”几乎能精确定位到人。

识别完哪些信息是PHI,就要动手涂了。但涂黑也有门道——不同场景要选不同的涂法。

PHI(x)=⋃k=118IDk(x)⏟18类标识符全集+Indirect(x)⏟组合推断风险\text{PHI}(x) = \underbrace{\bigcup_{k=1}^{18} \text{ID}_k(x)}_{\text{18类标识符全集}} + \underbrace{\text{Indirect}(x)}_{\text{组合推断风险}}
PHI = 18类直白暴露身份的字段 + 组合起来能“人肉搜索”的间接字段。
  1. 直接标识符单字段即可指向个人,如姓名、身份证号、病历号。
    Direct(x)∈{姓名,SSN,MRN,PatientID}\text{Direct}(x) \in \{\text{姓名}, \text{SSN}, \text{MRN}, \text{PatientID}\}
  2. 间接标识符单字段无法定位,但组合可缩小到极小人群。
    Indirect=f(日期,邮编,性别,罕见诊断)\text{Indirect} = f(\text{日期}, \text{邮编}, \text{性别}, \text{罕见诊断})
  3. 风险等级字段越唯一、越易获取,风险等级越高,脱敏优先级也越高。
    Priority∝Uniqueness(x)×Accessibility(x)\text{Priority} \propto \text{Uniqueness}(x) \times \text{Accessibility}(x)

脱敏方法实战

档案室流传着四种“涂黑手法”,对应四种脱敏策略。第一种是移除(拿刀片把整个格子划掉):最彻底,但会丢失字段结构;第二种是替换(贴上伪造的假名字):保留数据形态,适合需要保留字段关联性的AI训练场景;第三种是泛化(只保留出生年份,抹掉月日):精确度降低但统计价值还在;第四种是像素烧除——当胶片角落印着患者名字时,得用专门的图像处理手段把像素抹平。

实际项目中,替换和泛化是主力。替换的关键是“伪造值必须长得像真值”:假名用“ANONYMOUS_001“这样的模式,假日期格式必须还是YYYYMMDD,否则下游处理数据的代码会报错。泛化则常用于日期类字段,把”1985-03-27“变成”1985”,在保护隐私的同时保留年龄分布信息。

涂黑手法学会了,但你可能会问:涂到什么程度才算合规?这就轮到档案室的《员工手册》出场了。

S(v)={∅移除Fake(v)替换Gen(v)泛化Burn(p)像素烧除\mathcal{S}(v) = \begin{cases} \emptyset & \text{移除} \\ \text{Fake}(v) & \text{替换} \\ \text{Gen}(v) & \text{泛化} \\ \text{Burn}(p) & \text{像素烧除} \end{cases}
脱敏四招:撕掉格子、贴假字、模糊细节、漂白胶片。
  1. 移除直接删除标签,适用于完全不需要该字段的场景。
    Sremove(v)=∅\mathcal{S}_{\text{remove}}(v) = \emptyset
  2. 替换生成格式一致的假值,保持字段类型与长度不变。
    Sfake(v)=v′,∣v′∣=∣v∣\mathcal{S}_{\text{fake}}(v) = v', \quad |v'| = |v|
  3. 泛化降低信息精度,如日期只保留年份。
    Sgen(1985-03-27)=1985\mathcal{S}_{\text{gen}}(\text{1985-03-27}) = \text{1985}
  4. 像素烧除检测并抹除图像像素中嵌入的文本。
    Burn(p)=p⊙Masktext\text{Burn}(p) = p \odot \text{Mask}_{\text{text}}

HIPAA合规要求

HIPAA(健康保险携带与责任法案)就是档案室墙上挂着的那本厚厚的《隐私管理手册》。它不关心你用哪种手法涂黑,只关心结果是否合规。手册给出了两条合法路径:安全港法(Safe Harbor)要求把十八类标识符全部移除,做完就自动认定为“去标识化”,像考试用标准答案对答案,省心但操作繁琐;专家判定法(Expert Determination)则允许你保留部分字段,但必须由统计学/隐私专家书面证明重识别风险极低,类似请专业审计师做风险评估。

除了这两条路径,手册还强调“最小必要原则”:即使是授权访问原始数据的医生,也只能看到完成当前任务所需的最少字段。AI训练数据集构建时,这条原则意味着你只导出模型需要的标签,其他一律不放行。同时,每一次脱敏操作、每一次数据导出都要记入审计日志,出了问题能倒查追溯。

手册读完了,但档案室里还有一柜子档案等着处理。一份份手涂太慢了,得建一条流水线。

Compliance={Safe Harbor: ⋂k=118IDk=∅Expert: Re-identify Risk<ε\text{Compliance} = \begin{cases} \text{Safe Harbor: } \bigcap_{k=1}^{18} \text{ID}_k = \emptyset \\ \text{Expert: } \text{Re-identify Risk} < \varepsilon \end{cases}
合规 = 要么按清单把十八类全涂干净,要么请专家证明“涂剩的信息也猜不出是谁”。
  1. 安全港法移除全部18类标识符,即自动合规。
    ∀k∈[1,18], IDk=∅\forall k \in [1,18], \ \text{ID}_k = \emptyset
  2. 专家判定法专家论证重识别风险低于可接受阈值。
    Pr[re-identify]<ε\text{Pr}[\text{re-identify}] < \varepsilon
  3. 最小必要只访问完成任务所需的最少PHI字段。

批量处理流程

现实项目中,你要面对的不是一份档案,而是一整柜、一整层楼的档案。手动一份份处理会疯掉,必须设计一套批量脱敏流水线。标准的管道(Pipeline)分四段:读取(从PACS系统或硬盘批量读入DICOM文件)、清洗(识别并记录所有PHI标签)、脱敏(应用统一规则执行脱敏策略)、校验(全量扫描确认没有漏网之鱼)。

规则引擎是这条流水线的“操作手册”:把脱敏策略集中配置在一个配置文件中,比如“所有0010组标签一律替换”“出生日期泛化到年份”“3M公司的私有标签组(0019,00xx)全部移除”。这样既保证不同批次处理的一致性,也方便审计时回答“你的规则是什么”。错误处理同样关键:某个文件损坏或缺失标签时,跳过它并记入错误日志,而不是让整个批处理崩溃。

档案脱敏完,不等于可以把它们随便丢在走廊里。接下来的问题:这些处理过的档案该锁进哪个柜子?

Out=Verify(⋃i=1NSanitize(DICOMi;Rules))\text{Out} = \text{Verify}\left( \bigcup_{i=1}^{N} \text{Sanitize}(\text{DICOM}_i; \text{Rules}) \right)
批量处理 = 整柜档案过流水线:读档、识别、涂改、逐份复查,一鼓作气。
  1. 读取输入遍历N个DICOM文件,交给流水线处理。
    Input={DICOMi}i=1N\text{Input} = \{\text{DICOM}_i\}_{i=1}^{N}
  2. 规则脱敏规则引擎按配置逐文件执行脱敏策略。
    Sanitize(DICOMi;Rules)\text{Sanitize}(\text{DICOM}_i; \text{Rules})
  3. 全量校验处理完的每个文件扫描PHI残留,通过才允许输出。
    Verify(⋅)→{PASS,FAIL}\text{Verify}(\cdot) \to \{\text{PASS}, \text{FAIL}\}

安全存储管理

脱敏后的数据依然是需要保护的“敏感资产”——它们虽然不再是PHI,但组合起来仍有重识别风险。档案室的最后一道防线是安全存储,对应三把锁:传输锁(TLS加密协议,相当于档案通过密封押运车运送,途中没人能拆开看)、存储锁(静态加密,通常用AES-256,相当于档案柜本身是防撬保险柜)、权限锁(RBAC基于角色的访问控制,相当于只有档案室主管和授权的科研人员才有钥匙,且每次开柜都要登记)。

数据生命周期管理则回答了“档案要留多久”的问题:脱敏数据按项目需要设定保留期限,到期自动删除;原始数据按医院规定保存数年(通常匹配医疗记录法定保存期),过期销毁。处理完的影像数据集如果想发布为开源资源,还要注意许可证附加条款——去标识化并不能让你免于所有伦理审查,特别是涉及基因组数据或罕见疾病时。

至此,档案室的全套管理流程已经齐了。但我知道你心里还有一个疑问:这些手法在真实工作中到底怎么落地?下一节我们就走进真实的AI实验室看看。

Access  ⟺  Role∈ACL ∧ Channel=TLS ∧ Storage=AES-256\text{Access} \iff \text{Role} \in \text{ACL} \ \wedge \ \text{Channel} = \text{TLS} \ \wedge \ \text{Storage} = \text{AES-256}
安全存储 = 押运车密封 + 保险柜加密 + 钥匙分级,三重防护才敢说万无一失。
  1. 传输加密网络传输全程TLS加密,防止中间人窃听。
    Channel←TLSPeer\text{Channel} \xleftarrow{\text{TLS}} \text{Peer}
  2. 静态加密落盘数据用AES-256加密,防物理窃取。
    Blobplain→AES-256Blobcipher\text{Blob}_{\text{plain}} \xrightarrow{\text{AES-256}} \text{Blob}_{\text{cipher}}
  3. 访问控制RBAC按角色授权,审计日志记录每次访问。
    Grant(u)  ⟺  u.role∈ACLr\text{Grant}(u) \iff \text{u.role} \in \text{ACL}_r

AI 应用场景

场景一:医学影像AI训练集构建

阶段:数据准备阶段

解决的问题:医院积累的百万级历史CT影像直接用于模型训练会严重侵犯患者隐私,传统做法是让实习生手动编辑DICOM头文件,效率低、遗漏多、无法审计。

具体案例:某AI公司承接三甲医院肺结节检测项目,需要从PACS系统导出10万份胸部CT。工程师使用pydicom编写批量脱敏管道,通过规则引擎把所有(0010,0010)姓名替换为“ANON_编号”、出生日期泛化为年份、私有标签组整体移除,最后全量扫描确认零PHI残留。整个处理耗时4小时,比手动方案快200倍,且每一份文件都留有脱敏记录供HIPAA审计。

场景二:多中心联邦学习数据共享

阶段:分布式训练阶段

解决的问题:多家医院联合训练模型时,原图任何一方都不愿(法律上也不能)把原始DICOM数据直接交付给其他机构,传统集中式训练方案在法律层面直接出局。

具体案例:五家医院组成联邦学习联盟,每家医院在本地先执行统一脱敏协议(同一套规则引擎配置),再让脱敏后的数据参与联邦平均。这样中央服务器只聚合模型参数,永不接触原始影像。项目通过专家判定法论证脱敏数据重识别风险低于万分之一,顺利获批。

场景三:科研论文影像数据附件合规

阶段:结果发布阶段

解决的问题:医学影像顶刊(如Radiology)要求投稿中的影像数据必须去标识化,传统做法是作者手动裁剪图像中的患者信息,容易漏掉像素内嵌文字。

具体案例:研究者投稿前用开源工具对论文配图做像素烧除检查,在10张配图中发现2张角落存在残留的检查日期文字,立即用图像修复算法覆盖并重新生成。投稿后顺利通过期刊的数据合规审查。

Python 演示

python34 行
import pydicom PHI_TAGS = [    (0x0010, 0x0010),  # PatientName    (0x0010, 0x0020),  # PatientID    (0x0010, 0x0030),  # BirthDate    (0x0010, 0x0040),  # Sex    (0x0008, 0x0050),  # AccessionNumber]  def deidentify(src_path, dst_path, fake_id="A001"):    ds = pydicom.dcmread(src_path)    # 替换直接标识符    ds.PatientName = "ANON_" + fake_id    ds.PatientID = fake_id    ds.AccessionNumber = "ACC_" + fake_id    # 泛化出生日期为年份    if hasattr(ds, "PatientBirthDate") and ds.PatientBirthDate:        ds.PatientBirthDate = ds.PatientBirthDate[:4] + "0101"    # 移除不允许保留的PHI标签    for tag in PHI_TAGS:        if tag in ds and tag not in [            (0x0010, 0x0010),            (0x0010, 0x0020),            (0x0010, 0x0030),        ]:            del ds[tag]    ds.save_as(dst_path)    print("saved:", dst_path)  if __name__ == "__main__":    deidentify("patient_ct.dcm", "anon_ct.dcm")
目的:用pydicom实现DICOM元数据PHI脱敏——把姓名/ID替换为匿名代号,出生日期泛化为年份,并删除多余的敏感标签。
  1. ds.PatientName = "ANON_" + fake_id用"ANON_A001"形式的假名替换真实姓名,保持字段格式不变,下游代码不会因为缺字段而崩溃。
  2. ds.PatientBirthDate[:4] + "0101"把“19850327“变成”19850101”,只保留年份信息,年龄分布统计价值还在,但精确生日再也查不到。
  3. del ds[tag]对于特殊标签(如性别、检查号)如果不在白名单中就整个删除,防止意外遗漏。
  4. if tag in ds先判断标签是否存在再操作,因为不同厂商的设备导出的DICOM字段不一定齐全,直接访问会抛异常。
  5. ds.save_as(dst_path)另存为新文件,原始文件保持原样,符合“不破坏原始数据”的合规要求。

常见误区

误区“我把PatientName清空了,患者隐私不就保住了吗?其他字段都是些数字代码,没关系的吧。”

正解姓名只是十八类标识符中的一类。患者ID、出生日期、检查号、甚至设备序列号单独或组合起来都能定位到个人。真正的脱敏要对照HIPAA安全港清单逐项排查,就像涂黑快递单时不能只涂收件人名字,电话号码和地址也得一起涂,否则照样能找到你。

为何常见:人们天然认为“姓名=隐私”,忽略了现代数据环境下的组合推断能力,其他结构化字段看起来像是“技术参数”,实际上却是拼图碎片。

误区“我处理的是元数据,图像像素只是黑白灰的CT切片,里面怎么可能有患者信息?”

正解很多影像设备厂商会在图像角落烧录(burn-in)患者姓名、检查日期、医院名称等文本信息。这些文字一旦印在像素上,删除元数据标签根本没用,必须做像素级检测和修复。如果直接拿含烧录信息的图像做AI训练或论文发表,等于把患者隐私明晃晃地贴在图上。

为何常见:初学者只关注DICOM的结构化标签,容易忽略设备厂商为了方便放射科医生读片而做的“人性化”烧录——在胶片上直接印字。

误区“我的脚本把名字和ID都替换了,安全港法也过了,那这数据传到GitHub上开源没问题吧?”

正解安全港合规不等于匿名化。去标识化数据仍有重识别风险,尤其在罕见病、基因数据、高分辨率人脸CT等场景。即使在安全港下,一般建议搭配数据使用协议(DUA),控制访问范围。开源到公开仓库属于高风险发布,项目负责人应请合规与安全团队做额外评估。

为何常见:把“去标识化”误当作“绝对匿名”,忽略了风险是概率问题而不是二值问题,过度自信于规则清单的覆盖力。

误区“我在中国公司做医疗AI,HIPAA是美国法律,跟我有什么关系?”

正解只要你的业务涉及美国患者的健康数据、与美国医疗机构合作、或者你的云服务器部署在美国境内,HIPAA就可能适用。更重要的是,各国都有自己的隐私法规——中国的《个人信息保护法》、欧盟GDPR都对健康数据有严格规定。脱敏不是应付某一条法律,而是数据伦理的基本功。

为何常见:把合规理解成“别踩我所在国家的红线”,没有意识到全球化AI协作中数据可能跨越多法域,也低估了数据伦理要求的普适性。

面试题

Q1. DICOM中哪个标签存储实际图像像素数据?

单选题 · easy

  • A.(7FE0,0010)← 正确答案
  • B.(0010,0010)
  • C.(0028,0010)
  • D.(0008,0000)

答案:A。(7FE0,0010)是Pixel Data的标准标签,形如“7FE0“的组号专门划给像素数据。B是患者姓名,C是图像行数,D是命令组长度,都不对。记忆技巧:7FE0是”图像本体”的专属编号。

Q2. 患者出生日期按HIPAA分类属于哪类标识符?

单选题 · easy

  • A.直接标识符← 正确答案
  • B.间接标识符
  • C.普通属性
  • D.技术数据

答案:A。HIPAA安全港法把比年份更具体的日期(含出生日期)列入十八类标识符,属于直接标识符——它虽然不如姓名直白,但足以在特定场景精准指向个人。间接标识符是像性别搭配邮编这类组合推断的字段。

Q3. 以下哪些属于HIPAA安全港法规定的十八类标识符?

多选题 · mid

  • A.患者姓名← 正确答案
  • B.脸部照片← 正确答案
  • C.医生偏好
  • D.完整邮编← 正确答案

答案:ABD。姓名和全脸照片是典型的直接标识符,完整邮政编码(比州更细的地理信息)也被列入清单。医生的偏好不属于患者PHI,不在此列。审题时抓住“指向患者本人”这个核心标准。

Q4. DICOM标签(0010,0020)对应的元数据含义是?

单选题 · mid

  • A.检查号
  • B.患者ID← 正确答案
  • C.患者姓名
  • D.研究机构

答案:B。(0010,0020)是PatientID,(0010,0010)才是姓名,(0008,0050)是检查号,(0008,0080)是机构。0010组是患者身份区,记住“0010组内:0010姓名、0020编号、0030生日”的口诀即可。

Q5. 像素烧除(Pixel Burn-in)在脱敏中指什么?

单选题 · mid

  • A.修改图像调窗
  • B.抹除嵌入文本← 正确答案
  • C.删除整个文件
  • D.加密像素数据

答案:B。像素烧除指设备在图像像素上烧录的文字(姓名、日期、医院名)被检测并抹除。调窗是显示参数操作,删除文件是移除法,加密是存储安全手段,都不属于烧除概念。

Q6. HIPAA去标识化的两条合法路径是?

多选题 · hard

  • A.安全港法← 正确答案
  • B.专家判定法← 正确答案
  • C.全员签名制
  • D.物理销毁法

答案:AB。安全港法要求移除全部18类标识符即自动合规;专家判定法由统计专家证明重识别风险足够低。全员签名或物理销毁属于治理手段,不是HIPAA定义的合法路径。面试时先说两个名字,再补一句“前者操作简单,后者灵活性高”就很加分。

Q7. 批量脱敏时,某个文件无法读取或缺少标签,正确做法是?

单选题 · easy

  • A.跳过记录日志← 正确答案
  • B.直接异常崩溃
  • C.随机伪造数据
  • D.不做任何处理

答案:A。批处理管道必须健壮:单文件失败就跳过并写错误日志,最后统一汇总,既不影响整体进度,又能追溯问题文件。崩溃会让整批任务中断;伪造数据会污染结果;静默跳过会让缺失文件悄悄流出。

Q8. DICOM元数据标签的标准组成结构包含?

多选题 · mid

  • A.组号与元素号← 正确答案
  • B.值表示法VR← 正确答案
  • C.像素行列数
  • D.数据长度字段← 正确答案

答案:ABD。数据元标准结构是(组号,元素号,VR,值长度,值本体)。像素行列数属于图像像素模块的参数,不是标签本身的组成结构。做题时把“标签结构”和“图像参数”分开想。

Q9. 以下哪项最符合“最小必要原则”?

单选题 · hard

  • A.只导出训练所需字段← 正确答案
  • B.完整导出全部副本
  • C.使用最大权限账号
  • D.不加密直接传输

答案:A。最小必要要求数据访问和使用严格限制在完成任务的最小范围。只导出模型真正需要的字段是直接体现。完整导出、最高权限、不加密都违背隐私保护与数据安全的基本要求。

Q10. DICOM文件头中的“魔数”(Magic Number)是?

单选题 · mid

  • A.PYTH
  • B.DICM← 正确答案
  • C.DCMF
  • D.DMSC

答案:B。标准规定文件头在128字节导言后紧跟"DICM"四个字节作为识别前缀,文件系统靠它快速判定文件类型。PYTH容易联想到Python,是干扰项;其余选项也是编造字符序列。