通过 Cloud Healthcare API 对医疗图片进行去标识化处理

简介

本文档介绍了研究人员、数据科学家、IT 团队或医疗保健和生命科学组织如何使用 Cloud Healthcare API 移除医学数字成像和通信 (DICOM) 数据中的个人身份信息 (PII) 和受保护健康信息 (PHI)。此过程称为去标识化,有助于确保患者隐私,并且有助于准备 DICOM 数据以便用于研究、数据共享和机器学习。

附带的教程使用 Cloud Healthcare API 对医疗图片进行去标识化处理包含两个用例,旨在指导您使用 Cloud Healthcare API 对医疗图片数据进行去标识化处理。

DICOM 数据去标识化的工作原理

用于临床目的的医疗图片在研究项目和教学库中具有重要的二次应用价值。不过,在从 DICOM 图片中移除敏感数据元素(PII 或 PHI)之前,您可能需要移除或修改这些数据,或将其与授权协作者共享。

下图展示了多个医疗图片流水线,这些图片来自本地来源并路由到 Google Cloud,然后由 Cloud Healthcare API 去标识化操作进行匿名化。

DICOM 去标识化流水线。

首先,您将 DICOM 格式的医疗图片上传到 Cloud Storage,然后上传到 Cloud Healthcare API。或者,您也可以将 DICOM 图片直接上传到 Cloud Healthcare API。然后,通过 Cloud Healthcare API 去标识化过程将保存在 Cloud Healthcare API 的 DICOM 存储区中的医疗图片进行路由,以对图片和相关元数据进行匿名化处理。

例如,作为一名医疗研究人员,您可以在本地图片归档和通信系统 (PACS) 中查看患者脊柱骨折的 X 光片。您可以使用 Storage Transfer ServiceTransfer Appliance 或某个混合连接产品将图片像素数据移动到 Cloud Storage。 然后,您可以将数据从 Cloud Storage 复制或移动到 Cloud Healthcare API。将数据移入 Cloud Healthcare API 后,您可以将其用作备份、进行远程查看,或允许已获批准的第三方云服务和应用进行访问。

在另一种情况下,您可以将去标识化的 DICOM 图片发送到 AutoML Vision 来训练模型,以帮助医疗保健团队检测 X 光片中的脊柱骨折。这样一来,您就可以使用自己的数据来构建临床决策支持工具。

Cloud Healthcare API

Cloud Healthcare API 提供了一个在 Google Cloud 中存储医疗保健数据并进行访问的代管式解决方案,在现有的医疗保健系统与 Google Cloud 上托管的应用之间搭建了一座重要桥梁。

在 Google Cloud 项目中,通过 Cloud Healthcare API 提取的数据存储在数据集内,该数据集位于与 Google Cloud 地区对应的地理位置。Cloud Healthcare API 支持地区中列出的地区。 如需查看 Google Cloud 产品列表以及实现这些产品的地区,请参阅 Cloud 网点

由于每个医疗保健数据模态(例如 DICOM、快速医疗互操作性资源 (FHIR)HL7v2)都具有不同的结构和处理特征,因此数据集被拆分为特定于模态的存储区。

下图展示了 Cloud Healthcare API 如何按位置、数据集和存储区来组织临床数据。

Cloud Healthcare API 的临床数据组织。

每个数据集都包含一个或多个存储区,这些存储区可根据应用的需要提供相同或不同的模态。如果一个应用需要处理不同类型的数据,则使用同一数据集中的多个存储区比较合适。例如,您可能希望按来源医院、诊所或部门划分数据。应用可以根据需要访问任意数量的数据集或存储区,而不会降低性能。设计整个数据集和存储区架构以满足组织的广泛目标非常重要,例如靠近计算资源或最终用户、分区或访问控制。

下图展示了两个包含 HL7v2、DICOM 和 FHIR 存储区的数据集。

包含 HL7v2 和 DICOM 存储区的数据集架构。

您可以将 DICOM 图片从各种来源复制到 DICOM 存储区或数据集中的存储区。如需了解详情,请参阅创建和管理 DICOM 存储区

对 DICOM 数据进行去标识化

Cloud Healthcare API 包含去标识化工具,可让系统基于指定配置合理地隐去(移除)文本和图片中的敏感内容。

这些工具适用于以特定医疗记录格式(如 DICOM 和 FHIR)编码的文本和图片。使用 DICOM 实例时,去标识化 API 调用的组件如下所示:

  • 来源:包含一个或多个带有敏感数据的 DICOM 实例的数据集或 DICOM 存储区附带的教程使用的是数据集,但您可以修改示例以在单个 DICOM 存储区上运行。
  • 要进行去标识化处理的内容:用于指定如何处理数据集的配置参数。您可以通过使用标记关键字,或模糊处理 DICOM 图像中的内置文本,或两者兼用,来对 DICOM 实例元数据进行去标识化。
  • 目标位置:去标识化处理不会影响原始数据集或其数据。相反,处理后的原始数据副本将会写入到称为“目标位置”的新数据集或 DICOM 存储区。附带的教程使用的是数据集,但您可以修改示例以在 DICOM 存储区上运行。

以下两张图片展示了去标识化前后的示例 X 光片,其目标是移除或修改与该图片相关的所有元数据和内置文本。

第一张图片展示了一张 X 光片,其元数据和内置文本中含有示例 PII 和 PHI 数据。

进行去标识化处理之前的示例 X 光片(包含示例数据)。

第二张图片展示的是同一张 X 光片,但移除或遮盖了所有示例 PII 和 PHI 元数据。

进行去标识化处理后的示例 X 光片(包含示例数据)。

去标识化后,所有图片元数据都会被移除,图片上的所有内置文本都会使用不透明矩形进行遮盖。在您仅需使用图片像素数据进行进一步分析、机器学习 (ML) 模型训练或推断时,这种去标识化配置非常有用。

例如,您可能希望训练一个图片分类模型以确定 X 光片中是否存在骨折的情况。要训练此模型,您需要大量图片样本,其中一部分包含骨折,另一部分则不包含。但是,您不需要任何敏感信息,例如患者性别、年龄或出生日期,因为这些信息与模型无关。

或者,您可能想分析随着患者年龄的增长,某种疾病在患者人群中的发展情况。在这种情况下,您需要知道患者的年龄、性别以及每项研究的日期等信息,因为这些信息与临床分析相关。您可以选择保留部分元数据,同时隐去关于患者的其他可识别信息,例如其姓名和医疗记录编号。

最佳做法是更改研究中的日期,以保留相对的时间轴,这样几乎不可能将日期与患者进行匹配。如需了解详情,请参阅日期偏移

所需的访问权限以及 Identity and Access Management 角色

在 Google Cloud 中,通过 Identity and Access Management (IAM) 角色管理对资源的访问权限。访问 Cloud Healthcare API 需要您的 (IAM) 账号具有与您要执行的函数所需的相应角色。

您可以使用用户账号(用于访问 Google Cloud 控制台的账号)或 IAM 服务账号附带的教程使用的是服务账号,但查看医疗图片除外,此功能需要使用用户账号。此处提供的常规信息适用于所有账号类型。

如需创建目标数据集,您必须至少拥有来源数据集的 healthcare.datasets.deidentify 权限和 Google Cloud 项目的 healthcare.datasets.create 权限。Healthcare Dataset Administrator IAM 角色包含这两个权限。

如需了解如何控制对数据集和 DICOM 存储区的访问,请参阅控制对 Cloud Healthcare API 资源的访问。如需了解数据集方法所需的权限,请参阅访问控制或 Cloud Healthcare API。

医疗图片查看器

以下 DICOM 查看器已与 Cloud Healthcare API 集成,您可以使用它们查看去标识化前后的图片:

如需正常运行查看器,您的登录凭据必须具有 healthcare.dicomViewer 角色。

API 结构

您可以使用 REST API 来访问和管理 Cloud Healthcare API 数据集和存储区中的数据,该 API 按 Google Cloud 项目、位置、数据集、存储区类型和存储区名称识别每个存储区。Cloud Healthcare API 实现了特定于模态的访问标准,这些标准与每种模态的行业标准一致。例如,Cloud Healthcare API 本身会提供用于读取 DICOM 研究和系列的操作,这些操作符合 DICOMweb 标准。

访问特定于模态的存储区的操作使用的请求路径包含两个部分:基本路径和特定于模态的请求路径。管理操作(通常仅在位置、数据集和数据存储区上操作)可能仅使用基本路径。

如需引用 Cloud Healthcare API 数据集中的特定存储区,请使用如下结构的基本路径:

 /projects/project/locations/location/datasets/dataset/store-type/store-name

请替换以下内容:

  • project:您的 Google Cloud 项目
  • location:您的资源所在的区域
  • dataset:您的数据集的名称。
  • store-type:数据存储区的类型
  • store-name:您的数据存储区的名称

以下是一个基本路径的示例:

/projects/MyProj/locations/us-central1/datasets/dataset1/dicomStores/dicomstore1

上面的路径示例引用的 Cloud Healthcare API DICOM 存储区名称为 dicomstore1,位于 Google Cloud 项目 MyProj 中,所在地区为 US-central,所在数据集名称为 dataset1

如需访问一段数据,您需要将基本路径与按相应模态标准设置格式的请求路径组合起来。例如,对 DICOM 存储区的 DICOMweb 请求可能如下所示:

 base-path/dicomWeb/studies/{study_id}/series?PatientName={patient_name}

路径的 base-path 部分表示特定于此请求的基本路径。路径的 {study_id} 部分标识特定的 DICOM 研究,而患者姓名由 {patient_name} 指定。 在上述示例中,路径规范与 DICOMweb 标准路径结构一致。

使用标记和图片隐去配置进行去标识化处理

对 DICOM 数据进行去标识化处理包括两个过程:

  • 对 DICOM 元数据进行去标识化处理
  • 隐去图片中的内置文本

在 Cloud Healthcare API 中,元数据去标识化基于 DICOM 标记,内置文本隐去通过 TextRedactionMode 选项执行。

使用标记和配置文件进行去标识化处理

您可以根据 DICOM 元数据中的标记关键字对 DICOM 实例进行去标识化处理。以下标记过滤方法可在 DicomConfig 对象中使用:

  • keepList:要保留的标记列表。移除所有其他标记。
  • removeList:要移除的标记列表。保留所有其他标记。
  • TagFilterProfile:一个标记过滤配置文件,用于指定要保留或移除的标记。

DICOM 最少属性标记

以下标记是 Cloud Healthcare API 中有效 DICOM 实例的最少属性:

  • StudyInstanceUID
  • SeriesInstanceUID
  • SOPInstanceUID
  • TransferSyntaxUID
  • MediaStorageSOPInstanceUID
  • MediaStorageSOPClassUID
  • PixelData
  • Rows
  • Columns
  • SamplesPerPixel
  • BitsAllocated
  • BitsStored
  • Highbit
  • PhotometricInterpretation
  • PixelRepresentation
  • NumberOfFrames

keepList

如需使用 keepList 标记过滤方法,您需要提供标记名称列表。这些标记是保留在去标识化资源中的唯一标记。当您在 DicomConfig 对象中指定 keeplist 标记时,系统会默认添加 DICOM 最少属性标记。

如果未提供 keeplist 标记,则不会移除数据集中的 DICOM 标记。通常,当标记保留时,输出图片与原始图片相比没有变化。但是,输出图片的 StudyInstanceUIDSeriesInstanceUIDSOPInstanceUIDMediaStorageSOPInstanceUID 标记将使用新的唯一值重新生成。

removeList

您可以在 DicomConfig 对象中指定 removeList 标记。去标识化操作仅移除列表中指定的标记。如果未提供 removeList 标记,则去标识化操作会照常进行,但目标数据集中的 DICOM 标记不会被隐去。

DICOM 最少属性标记无法添加到 removeList。

TagFilterProfile

您可以使用 TagFilterProfile 配置文件,而无需指定要保留或移除的标记。此预定义配置文件确定了标记的处理和修改方式。例如,MINIMAL_KEEP_LIST_PROFILE 配置文件只保留生成有效 DICOM 资源所需的标记,而移除所有其他标记。如需了解详情,请参阅 TagFilterProfile 文档。

我们建议将 TagFilterProfile 配置文件用作标记过滤方法(尤其是对于非技术用户),因为使用预选的配置文件意味着不需要查看和了解所有 DICOM 标记及其内容。

常用配置文件

您可以使用配置文件 ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE 执行行业常见的一种去标识化用例:根据 DICOM 标准的属性机密配置文件移除标记。

另一个常用的配置文件是 DEIDENTIFY_TAG_CONTENTS,它用于检查标记内容中的元数据并替换敏感文本。使用 DEIDENTIFY_TAG_CONTENTS 配置文件时,您还可以应用配置,例如信息类型和初始转换。信息类型和初始转换无法应用于其他配置文件。

您可以使用信息类型来定义在对标记执行去标识化处理时要扫描的数据。信息类型是一种敏感数据类型,例如患者姓名、电子邮件地址、电话号码、身份证号码和信用卡号等等。如需了解详情,请参阅 InfoTypesinfoType 检测器

初始转换是用于转换输入值的规则。您可以通过对每个标记的信息类型应用初始转换,自定义 DICOM 标记的去标识化方式。例如,您可以对患者的姓氏去标识化,并将其替换为一系列星号。如需了解初始转换,请参阅初始转换选项

附带的教程提供了 MINIMAL_KEEP_LIST_PROFILE 配置文件的用例。

默认信息类型

默认情况下,DEIDENTIFY_TAG_CONTENTS 配置文件处理以下信息类型:

  • AGE
  • CREDIT_CARD_NUMBER
  • DATE
  • EMAIL_ADDRESS
  • IP_ADDRESS
  • LOCATION
  • MAC_ADDRESS
  • PERSON_NAME
  • PHONE_NUMBER
  • SWIFT_CODE
  • US_DRIVERS_LICENSE_NUMBER
  • US_PASSPORT
  • US_SOCIAL_SECURITY_NUMBER
  • US_VEHICLE_IDENTIFICATION_NUMBER
  • US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER

如果您只需要修改上述列表中的信息类型,则可以使用 DEIDENTIFY_TAG_CONTENTS 配置文件,而无需任何其他参数。

隐去图片中的内置文本

Cloud Healthcare API 可以隐去图片中的敏感内置文本。敏感数据(例如 PII 或 PHI)由 Cloud Healthcare API 检测,然后此 API 使用不透明矩形对其进行遮盖。Cloud Healthcare API 会按输入格式返回 DICOM 图片,但会隐去根据您的标准识别为包含敏感信息的所有文本。

您可以通过在 ImageConfig 对象内指定 TextRedactionMode 选项,隐去图片中的内置文本。

  • REDACT_ALL_TEXT:隐去数据集中 DICOM 图片上的所有内置文本。
  • REDACT_SENSITIVE_TEXT:隐去数据集中 DICOM 图片上的敏感内置文本。

指定 REDACT_SENSITIVE_TEXT 时,应隐去作为患者标识符的 default infoTypescustom infoType。系统会隐去图片中的信息(如医疗记录编号(MRN))。

如需详细了解图片隐去配置,请参阅隐去图片中的内置文本

后续步骤