你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure API for FHIR 中导出 FHIR 数据
重要
Azure API for FHIR 将于 2026 年 9 月 30 日停用。 按照迁移策略在该日期之前转换到 Azure Health Data Services FHIR® 服务。 由于 Azure API for FHIR 停用,在 2025 年 4 月 1 日开始前不会允许新的部署。 Azure Health Data Services FHIR 服务是 Azure API for FHIR 的演化版本,可让客户管理 FHIR、DICOM 和医疗技术服务,并集成到其他 Azure 服务。
大容量导出功能允许根据 FHIR 规范从 FHIR® 服务器导出数据。
在使用 $export
之前,请确保已将 Azure API for FHIR 配置为使用它。 若要配置导出设置和创建 Azure 存储帐户,请参阅 “配置导出数据”页。
注意
仅允许将 Azure API for FHIR 订阅中的存储帐户注册为$export操作的目标。
使用 $export 命令
配置用于导出的 Azure API for FHIR 后,可以使用 $export
该命令将数据导出到服务中。 数据存储在配置导出时指定的存储帐户中。 若要了解如何在 FHIR 服务器中调用$export
命令,请阅读 HL7 FHIR $export规范中的文档。
作业停滞在错误状态
在某些情况下,作业可能停滞在错误状态。 如果存储帐户权限尚未正确设置,则可能会出现这种情况。 验证导出的一种方法是检查存储帐户,以查看是否存在相应的容器(即 ndjson
) 文件。 如果它们不存在,并且没有其他正在运行的导出作业,则当前作业可能停滞在错误状态。 应通过发送取消请求来取消导出作业,然后再次尝试重新排队该作业。 处于错误状态的导出的默认运行时间为 10 分钟,然后它会停止并移动到新作业或重试导出。
Azure API For FHIR 支持 $export
以下级别:
- 系统:
GET https://<<FHIR service base URL>>/$export>>
- 患者:
GET https://<<FHIR service base URL>>/Patient/$export>>
- 患者组* - Azure API for FHIR 导出所有相关资源,但不导出组的特征:
GET https://<<FHIR service base URL>>/Group/[ID]/$export>>
数据在多个文件中导出,每个文件只包含一种类型的资源。 单个文件中的资源数将受到限制。 资源的最大数目基于系统性能。 它目前设置为 5,000,但可以更改。 结果是,可能会获取资源类型的多个文件。 文件名采用“resourceName-number-number.ndjson”格式。 不保证文件的顺序与数据库中资源的任何排序相对应。
注意
如果资源位于多个资源的隔离舱,或位于多个组,则 Patient/$export
和 Group/[ID]/$export
可能会导出重复的资源。
此外,还支持通过位置标头在排队期间返回的 URL 检查导出状态,同时取消实际的导出作业。
将 FHIR 数据导出到 ADLS Gen2
目前,我们支持 $export
启用了 ADLS Gen2 的存储帐户,但存在以下限制:
- 用户不能利用 分层命名空间 - 没有办法将导出目标定位到容器中的特定子目录。 我们仅提供针对特定容器(其中为每个导出创建新文件夹)的功能。
- 导出完成后,不再将任何内容导出到该文件夹。 对同一容器的后续导出将位于新创建的文件夹内。
设置和参数
标头
必须为 $export
作业设置两个必需的标头参数。 这些值由当前的 $export 规范定义。
- 接受 - application/fhir+json
- 首选 - respond-async
Query parameters
Azure API for FHIR 支持以下查询参数。 所有这些参数都是可选的。
查询参数 | 由 FHIR 规范定义? | 说明 |
---|---|---|
_outputFormat | 是 | 目前支持三个值以符合 FHIR 规范:application/fhir+ndjson、application/ndjson 或 ndjson。 所有导出作业都会返回 ndjson ,传递的值对代码行为没有影响。 |
_因为 | 是 | 仅允许导出自提供以来已修改的资源。 |
_type | 是 | 允许指定要包含的资源类型。 例如,_type=患者仅返回患者资源。 |
_typefilter | 是 | 若要请求精细筛选,可以使用_typefilter以及_type参数。 _typeFilter参数的值是 FHIR 查询的逗号分隔列表,用于进一步限制结果。 |
_容器 | 否 | 指定配置的存储帐户中的容器,数据应导出到其中。 如果指定了容器,数据将导出到该容器中的文件夹中。 如果未指定容器,数据将导出到新容器。 |
_直到 | 否 | 仅允许导出已修改到提供的时间的资源。 此参数仅适用于系统级导出。 在这种情况下,如果历史版本尚未禁用或清除,导出将保证真正的快照视图。 换句话说,启用时间旅行。 |
includeAssociatedData | 否 | 允许导出历史记录和软删除的资源。 此筛选器不适用于“_typeFilter”查询参数。 将值作为“_history”包含在导出历史记录(非最新版本的资源)中。 将值包含为“_deleted”以导出软删除的资源。 |
_isparallel | 否 | 可以将“_isparallel”查询参数添加到导出操作,以提高其吞吐量。 需要将该值设置为 true 才能启用并行化。 注意:使用此参数可能会导致在导出生命周期内请求单位消耗增加。 |
注意
操作存在已知问题 $export
,可能会导致状态成功导出不完整。 使用is_parallel标志时会出现此问题。 从 2024 年 2 月 13 日开始,使用 _isparallel 查询参数执行的导出作业将受到此问题的影响。
安全导出到 Azure 存储
Azure API for FHIR 支持安全导出操作。 选择以下两个选项之一。
允许将 Azure API for FHIR 作为Microsoft受信任的服务访问 Azure 存储帐户。
允许与 Azure API for FHIR 关联的特定 IP 地址访问 Azure 存储帐户。 此选项提供两种不同的配置,具体取决于存储帐户与 Azure API for FHIR 位于相同或不同的位置。
允许将 Azure API for FHIR 用作Microsoft受信任的服务
从 Azure 门户中选择一个存储帐户,然后选择“网络”边栏选项卡。 在“防火墙和虚拟网络”选项卡下选择“选定的网络”。
重要
确保已使用其托管标识向 Azure API for FHIR 的存储帐户授予访问权限。 有关详细信息,请参阅 配置导出设置并设置存储帐户。
在“例外”部分,选中“允许受信任的 Microsoft 服务访问此存储帐户”复选框,然后保存设置。
你现在可以安全地将 FHIR 数据导出到存储帐户了。 注意:存储帐户位于所选网络上,无法公开访问。 若要访问文件,可以启用并使用存储帐户的专用终结点,或在短时间内为存储帐户启用所有网络。
重要
稍后会更新用户界面,以允许你为 Azure API for FHIR 和特定服务实例选择资源类型。
允许特定 IP 地址从其他 Azure 区域访问 Azure 存储帐户
在Azure 门户中,转到 Azure Data Lake Storage Gen2 帐户。
在左侧菜单中选择“网络”。
选择“已从所选虚拟网络和 IP 地址启用”。
在 “防火墙 ”部分的 “地址范围 ”框中,指定 IP 地址。 添加 IP 范围,以允许从 Internet 或本地网络进行访问。 可以在下表中找到预配 FHIR 服务的 Azure 区域的 IP 地址。
Azure 区域 公共 IP 地址 澳大利亚东部 20.53.44.80 加拿大中部 20.48.192.84 美国中部 52.182.208.31 美国东部 20.62.128.148 美国东部 2 20.49.102.228 美国东部 2 EUAP 20.39.26.254 德国北部 51.116.51.33 德国中西部 51.116.146.216 日本东部 20.191.160.26 韩国中部 20.41.69.51 美国中北部 20.49.114.188 北欧 52.146.131.52 南非北部 102.133.220.197 美国中南部 13.73.254.220 东南亚 23.98.108.42 瑞士北部 51.107.60.95 英国南部 51.104.30.170 英国西部 51.137.164.94 美国中西部 52.150.156.44 西欧 20.61.98.66 美国西部 2 40.64.135.77
允许特定 IP 地址访问同一区域中的 Azure 存储帐户
同一区域中 IP 地址的配置过程与上一过程类似,只是使用无类域间路由 (CIDR) 格式的特定 IP 地址范围(即 100.64.0.0/10)。 必须指定 IP 地址范围(100.64.0.0 到 100.127.255.255),因为每次发出操作请求时都会分配 FHIR 服务的 IP 地址。
注意
可以在 10.0.2.0/24 范围内使用专用 IP 地址,但不能保证操作在此类情况下会成功。 如果操作请求失败,可以重试,但在使用 100.64.0.0/10 范围内的 IP 地址之前,请求不会成功。
此 IP 地址范围的网络行为是设计造成的。 变通方法是在其他区域配置存储帐户。
后续步骤
本文介绍了如何使用命令导出 FHIR 资源 $export
。 接下来,若要了解如何导出已取消标识的数据,请参阅
注意
FHIR® 是 HL7 的注册商标,经 HL7 许可使用。