你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

开始在分析工作负荷中使用 DICOM 数据

本文介绍如何通过 Azure 数据工厂和 Microsoft Fabric 开始在分析工作负载中使用 DICOM® 数据。

先决条件

在开始之前,请完成以下步骤:

  • 通过启用分层命名空间,创建具有 Azure Data Lake Storage Gen2 功能的存储帐户
    • 创建用于存储 DICOM 元数据的容器,例如,命名为 dicom
  • 部署一个 DICOM 服务的实例。
  • 创建数据工厂实例:
  • 在 Fabric 中创建湖屋
  • 将角色分配添加到数据工厂系统分配的托管标识,用于 DICOM 服务和 Data Lake Storage Gen2 存储帐户:
    • 添加 DICOM 数据读取者角色,以授予 DICOM 服务的权限。
    • 添加存储 Blob 数据参与者角色,以授予 Data Lake Storage Gen2 帐户的权限。

为 DICOM 服务配置数据工厂管道

在此示例中,数据工厂管道用于以 Delta 表格式写入存储帐户的 DICOM 属性、系列和研究。

在 Azure 门户中,打开数据工厂实例并选择启动工作室以开始。

显示 Azure 门户中的“启动工作室”按钮的屏幕截图。

创建链接服务

数据工厂管道从数据源读取和写入数据接收器(通常是其他 Azure 服务)。 这些与其他服务的连接作为链接服务进行管理。

此示例中的管道从 DICOM 服务读取数据并将其输出写入存储帐户,因此必须为这两者创建链接服务。

为 DICOM 服务创建链接服务

  1. 在 Azure 数据工厂工作室中,从左侧菜单中选择“管理”。 在“连接”下,选择“链接服务”,然后选择“新建”

    显示数据工厂中“链接服务”屏幕的屏幕截图。

  2. 在“新建链接服务”窗格中,搜索 REST。 选择“REST”磁贴,然后选择“继续”

    显示“新建链接服务”窗格的屏幕截图,其中选择了 REST 磁贴。

  3. 输入链接服务的名称说明

    显示包含 DICOM 服务详细信息的“新建链接服务”窗格的屏幕截图。

  4. 在“基 URL”字段中,输入 DICOM 服务的服务 URL。 例如,contosohealth 工作区中名为 contosoclinic 的 DICOM 服务具有服务 URL https://contosohealth-contosoclinic.dicom.azurehealthcareapis.com

  5. 对于“身份验证类型”,请选择“系统分配的托管标识”

  6. 对于“AAD 资源”,请输入 https://dicom.healthcareapis.azure.com。 对于所有 DICOM 服务实例,此 URL 相同。

  7. 填写必填字段后,选择“测试连接”以确保正确配置标识的角色。

  8. 连接测试成功后,选择“创建”。

为 Azure Data Lake Storage Gen2 创建链接服务

  1. 在数据工厂工作室中,从左侧菜单中选择“管理”。 在“连接”下,选择“链接服务”,然后选择“新建”

  2. 在“新建链接服务”窗格中,搜索 Azure Data Lake Storage Gen2。 选择 Azure Data Lake Storage Gen2 磁贴,然后选择“继续”

    显示“新建链接服务”窗格的屏幕截图,其中选择了“Azure Data Lake Storage Gen2”磁贴。

  3. 输入链接服务的名称说明

    显示具有 Data Lake Storage Gen2 详细信息的“新建链接服务”窗格的屏幕截图。

  4. 对于“身份验证类型”,请选择“系统分配的托管标识”

  5. 通过手动输入存储帐户的 URL 来输入存储帐户详细信息。 另外还可以从下拉列表中选择 Azure 订阅和存储帐户。

  6. 填写必填字段后,选择“测试连接”以确保正确配置标识的角色。

  7. 连接测试成功后,选择“创建”。

为 DICOM 数据创建管道

数据工厂管道是执行任务(如将 DICOM 元数据复制到 Delta 表)的活动的集合。 本部分详细介绍了如何创建一个管道,该管道定期将 DICOM 数据同步到 Delta 表,因为数据将添加到 DICOM 服务、更新和删除数据。

  1. 在左侧的菜单中选择“创建者”。 在“工厂资源”窗格中,选择加号 (+) 以添加新资源。 选择“管道”,然后从菜单中选择“模板库”

    显示“管道”下选择了“模板库”的屏幕截图。

  2. 在“模板库”中,搜索 DICOM。 选择“以增量格式将 DICOM 元数据更改复制到 ADLS Gen2”磁贴,然后选择“继续”

    显示在“模板库”中选择的 DICOM 模板的屏幕截图。

  3. 在“输入”部分中,选择以前为 DICOM 服务和 Data Lake Storage Gen2 帐户创建的链接服务。

    显示“输入”部分的屏幕截图,其中选择了链接服务。

  4. 选择“使用此模板”以创建新管道

为 DICOM 数据创建管道

如果你使用 Azure Data Lake Storage 创建了 DICOM 服务,而不是使用模板库中的模板,则需要使用自定义模板在元数据管道中包含新的 fileName 参数。 若要配置管道,请执行以下步骤。

  1. 从 GitHub 下载模板。 模板文件是压缩 (zip) 文件夹。 无需提取文件,因为文件已经以压缩形式上传。

  2. 在 Azure 数据工厂中,从左侧菜单中选择“创作”。 在“工厂资源”窗格上,选择加号 (+) 以添加新资源。 选择“管道”,然后选择“从管道模板导入”

  3. 在“打开”窗口中,选择下载的模板。 选择打开

  4. 在“输入”部分中,选择为 DICOM 服务和 Data Lake Storage Gen2 帐户创建的链接服务。

    显示“输入”部分的屏幕截图,其中选择了链接服务。

  5. 选择“使用此模板”以创建新管道

计划管道

管道由“触发器”计划。 有不同类型的触发器。 计划触发器允许触发管道,以便在一天的特定时间(例如每小时或每天午夜)运行。 手动触发器按需触发管道,这意味着管道在需要时运行

在此示例中,翻转窗口触发器用于在给定起点和定期时间间隔的情况下定期运行管道。 有关触发器的更多|信息,请参阅 Azure 数据工厂或 Azure Synapse Analytics 中的管道执行和触发器

创建新的翻转窗口触发器

  1. 在左侧的菜单中选择“创建者”。 选择 DICOM 服务的管道,然后从菜单栏中选择“添加触发器”和“新建/编辑”

    显示数据工厂工作室的管道视图的屏幕截图,其中选择了菜单栏中的“添加触发器”按钮。

  2. 在“添加触发器”窗格中,选择“选择触发器”下拉列表,然后选择“新建”

  3. 输入触发器的“名称”和“说明”

    显示“新建触发器”窗格的屏幕截图,其中包含“名称”、“说明”、“类型”、“日期”和“重复周期”字段。

  4. 选择“翻转窗口”作为“类型”

  5. 若要配置每小时运行的管道,请将“定期”设置为“1 小时”

  6. 展开“高级”部分,输入“15 分钟”的“延迟”。 此设置允许在处理前一小时结束时完成任何挂起的操作。

  7. 将“最大并发”设置为“1”以确保跨表的一致性。

  8. 选择“确定” 继续配置触发器运行参数。

配置触发器运行参数

触发器定义管道在何时运行。 它们还包括传递给管道执行的参数将 DICOM 元数据更改复制到 Delta 模板定义了下表中所述的参数。 如果在配置过程中未提供任何值,则列出的默认值将用于每个参数。

参数名称 说明 默认值
BatchSize 一次从更改源检索的最大更改数(最大为 200) 200
ApiVersion Azure DICOM 服务的 API 版本(最小为 2) 2
StartTime DICOM 更改的非独占开始时间 0001-01-01T00:00:00Z
EndTime DICOM 更改的独占结束时间 9999-12-31T23:59:59Z
ContainerName 生成的 Delta 表的容器名称 dicom
InstanceTablePath 包含容器中 DICOM SOP 实例的 Delta 表的路径 instance
SeriesTablePath 包含容器中 DICOM 系列的 Delta 表的路径 series
StudyTablePath 包含容器中 DICOM 研究的 Delta 表的路径 study
RetentionHours Delta 表中数据的最大保留时间(以小时为单位) 720
  1. 触发器运行参数 窗格中,输入与先决条件中创建的存储容器名称匹配的 ContainerName 值。

    显示“触发器运行参数”窗格的屏幕截图,其中输入了 StartTime 和 EndTime 值。

  2. 对于 StartTime,请使用系统变量 @formatDateTime(trigger().outputs.windowStartTime)

  3. 对于 EndTime,请使用系统变量 @formatDateTime(trigger().outputs.windowEndTime)

    注意

    只有翻转窗口触发器支持系统变量:

    • @trigger().outputs.windowStartTime
    • @trigger().outputs.windowEndTime

    计划触发器使用不同的系统变量:

    • @trigger().scheduledTime
    • @trigger().startTime

    详细了解触发器类型

  4. 选择“保存”以创建新的触发器。 选择“发布”以开始在定义的计划上运行的触发器。

    显示主菜单栏中的“发布”按钮的屏幕截图。

发布触发器后,可以使用“触发器”选项手动触发触发器。 如果为过去的值设置了开始时间,管道将立即启动。

监视管道运行

可以在“监视”选项卡上监视触发的运行和其关联的管道运行。在这里,可以浏览每个管道的运行时间以及运行时间。 还可以调试所引发的任何问题。

显示包含管道运行列表的“监视”视图的屏幕截图。

Microsoft Fabric

Fabric 是一种一体的分析解决方案,位于 Microsoft OneLake 之上。 利用 Fabric Lakehouse,可以在单个位置管理、构建和分析 OneLake 中的数据。 写入 Data Lake Storage Gen2 的 OneLake 外部的任何数据都可以使用快捷方式连接到 OneLake,以利用 Fabric 的工具套件。

创建元数据表的快捷方式

  1. 转到在先决条件中创建的 Lakehouse。 在“资源管理器”视图中,选择“表”文件夹旁边的省略号菜单 (...)。

  2. 选择“新建快捷方式”以创建包含 DICOM 分析数据的存储帐户的新快捷方式。

    显示资源管理器视图中“新建快捷方式”选项的屏幕截图。

  3. 选择 Azure Data Lake Storage Gen2 作为快捷方式的源。

    显示具有 Azure Data Lake Storage Gen2 磁贴的“新建快捷方式”视图的屏幕截图。

  4. 在“连接设置”下,输入“链接服务”部分中使用的 URL

    显示 Azure Data Lake Storage Gen2 帐户的连接设置的屏幕截图。

  5. 选择现有连接,或通过选择要使用的“身份验证类型”创建新连接。

    注意

    在 Data Lake Storage Gen2 和 Fabric 之间进行身份验证有几个选项。 可以使用组织帐户或服务主体。 不建议使用帐户密钥或共享访问签名令牌。

  6. 选择下一步

  7. 输入表示数据工厂管道创建的数据的快捷方式名称。 例如,对于 instance Delta 表,快捷方式名称可能是实例

  8. 输入与“运行参数”配置中的 ContainerName 参数相匹配的“子路径”以及快捷方式的表名。 例如,对 Delta 表使用 /dicom/instance,并在 dicom 容器中使用路径 instance

  9. 选择“创建”以创建快捷方式

  10. 重复步骤 2 到 9,将剩余的快捷方式添加到存储帐户中的其他 Delta 表(例如,seriesstudy)。

创建快捷方式后,展开表以显示列的名称和类型。

显示资源管理器视图中列出的表列的屏幕截图。

创建文件的快捷方式

如果将 DICOM 服务与 Data Lake Storage 配合使用,还可以为数据湖中存储的 DICOM 文件数据创建快捷方式

  1. 转到在先决条件中创建的 Lakehouse。 在“资源管理器”视图中,选择“文件”文件夹旁边的省略号菜单 (...)

  2. 选择“新建快捷方式”以创建包含 DICOM 数据的存储帐户的新快捷方式。

    显示资源管理器视图中“文件”菜单的“新建快捷方式”选项的屏幕截图。

  3. 选择 Azure Data Lake Storage Gen2 作为快捷方式的源。

    显示具有 Azure Data Lake Storage Gen2 磁贴的“新建快捷方式”视图的屏幕截图。

  4. 在“连接设置”下,输入“链接服务”部分中使用的 URL

    显示 Azure Data Lake Storage Gen2 帐户的连接设置的屏幕截图。

  5. 选择现有连接,或通过选择要使用的“身份验证类型”创建新连接。

  6. 选择下一步

  7. 输入描述 DICOM 数据的“快捷方式名称”。 例如 contoso-dicom-files

  8. 输入与 DICOM 服务使用的存储容器和文件夹的名称匹配的“子路径”。 例如,如果要链接到根文件夹,则子路径应该为 /dicom/AHDS。 根文件夹始终为 AHDS,但可以选择链接到特定工作区或 DICOM 服务实例的子文件夹。

  9. 选择“创建”以创建快捷方式

显示 DICOM 文件的快捷方式的屏幕截图。

运行笔记本

在湖屋中创建表后,可以从 Fabric 笔记本中查询它们。 可以通过从菜单栏中选择“打开笔记本”,直接从湖屋创建笔记本。

在笔记本页上,湖屋的内容可在左侧查看,包括新添加的表格。 在页面顶部,选择笔记本的语言。 还可以为单个单元格配置语言。 以下示例使用 Spark SQL。

使用 Spark SQL 查询表

在单元格编辑器中,输入 Spark SQL 查询,例如 SELECT 语句。

SELECT * from instance

此查询从 instance 表中选择所有内容。 准备就绪后,选择“运行单元格”以运行查询。

显示包含示例 Spark SQL 查询的笔记本的屏幕截图。

几秒钟后,查询的结果会显示在单元格下方的表中,如下面的例子所示。 如果此 Spark 查询是会话中的第一个查询,则时间可能更长,因为需要初始化 Spark 上下文。

显示包含示例 Spark SQL 查询和结果的笔记本的屏幕截图。

访问笔记本中的 DICOM 文件数据

如果使用模板创建管道并创建了 DICOM 文件数据的快捷方式,则可以使用 instance 表中的 filePath 列将实例元数据与文件数据相关联。

SELECT sopInstanceUid, filePath from instance

显示具有示例 Spark SQL 查询和包含 filePath 的结果的笔记本的屏幕截图。

总结

本文介绍了如何执行以下操作:

  • 使用数据工厂模板创建从 DICOM 服务到 Data Lake Storage Gen2 帐户的管道。
  • 配置触发器以按小时计划提取 DICOM 元数据。
  • 使用快捷方式将存储帐户中的 DICOM 数据连接到 Fabric Lakehouse。
  • 使用笔记本查询 Lakehouse 中的 DICOM 数据。

后续步骤

注意

DICOM® 是美国电气制造商协会的注册商标,适用于其有关医疗信息数字通信的标准出版物。