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

导出 FHIR 数据

通过使用 FHIR 服务中的批量$export操作,可以导出 HL7 FHIR 大容量数据访问规范中所述的数据。

在尝试使用$export之前,请确保 FHIR 服务配置为使用 Azure Data Lake 存储 Gen2 帐户进行连接。 若要配置导出设置并创建 Data Lake 存储 Gen2 帐户,请参阅“配置导出设置”。

$export调用终结点

设置 FHIR 服务以使用 Data Lake 存储 Gen2 帐户进行连接后,可以调用$export终结点,FHIR 服务会将数据导出到存储帐户内的Azure Blob 存储容器中。 以下示例请求将所有资源导出到按名称 ({{containerName}}) 指定的容器中。 请注意,如果要在请求中指定{{containerName}}容器,则必须事先在 Data Lake 存储 Gen2 帐户中创建容器。

GET {{fhirurl}}/$export?_container={{containerName}}

如果未在请求中指定容器名称(例如,通过调用 GET {{fhirurl}}/$export),将为导出的数据创建一个具有自动生成名称的新容器。

有关 FHIR $export API 规范的一般信息,请参阅 HL7 FHIR 导出请求流 文档。

FHIR 服务支持 $export 以下级别:

  • 系统GET {{fhirurl}}/$export
  • 患者GET {{fhirurl}}/Patient/$export
  • 患者组*: GET {{fhirurl}}/Group/[ID]/$export
    *FHIR 服务导出所有引用的资源,但不导出组资源本身的特征。

数据在多个文件中导出。 每个文件仅包含一种类型的资源。 单个文件中的资源数将受到限制。 资源的最大数目基于系统性能。 它当前设置为 5,000,但可以更改。 结果是,可能会获取资源类型的多个文件。 文件名将遵循格式 <resourceName>-<number>-<number>.ndjson。 不能保证文件的顺序与数据库中资源的任何排序相对应。

注意

Patient/$export 如果资源位于多个组或多个资源的隔离区中,则可以 Group/[ID]/$export 导出重复的资源。

除了检查存储帐户中存在导出的文件外,还可以通过 FHIR 服务响应中返回的标头中的 Content-Location URL 检查$export操作状态。 有关详细信息,请参阅 HL7 中的 大容量数据状态请求 文档。

将 FHIR 数据导出到 Data Lake 存储 Gen2

目前,FHIR 服务支持 $export Data Lake 存储 Gen2 帐户,具有以下限制:

  • Data Lake 存储 Gen2 提供分层命名空间,但无法将操作定向$export到容器中的特定子目录。 FHIR 服务只能指定导出的目标容器,其中会 $export 为每个操作创建新文件夹。
  • $export操作完成后,在文件夹中写入所有数据后,FHIR 服务不会再次将任何内容导出到该文件夹,因为后续导出到同一容器将位于新创建的文件夹内。

若要将数据导出到防火墙后面的存储帐户,请参阅 “配置导出设置”。

设置和参数

头文件

必须为作业设置两个 $export 必需的标头参数。 这些值是根据当前的 HL7 $export规范设置的。

  • 接受application/fhir+json
  • 首选respond-async

查询参数

FHIR 服务支持以下查询参数来筛选导出的数据。 所有这些参数都是可选的。

查询参数 由 FHIR 规范定义? 说明
_outputFormat 目前支持三个值以与 FHIR 规范对齐: application/fhir+ndjsonapplication/ndjson或仅支持 ndjson。 所有导出作业都将返回 .ndjson 文件,传递的值对代码行为没有影响。
_since 允许仅导出自指定时间以来已修改的资源。
_type 允许指定要包含的资源类型。 例如, _type=Patient 将仅返回患者资源。
_typeFilter 若要请求精细筛选,可以 _typeFilter 与参数一 _type 起使用。 参数的值是 FHIR 查询的 _typeFilter 逗号分隔列表,用于进一步限制结果。
_container 指定应在其中导出数据的已配置的存储帐户中的容器的名称。 如果指定了容器,数据将导出到该容器中的文件夹中。 如果未指定容器,数据将导出到具有自动生成名称的新容器。
_till 允许导出已修改到指定时间的资源。 此参数仅适用于系统级别导出。 在这种情况下,如果未禁用或清除历史版本,则导出保证 true 快照 视图,或者换句话说,启用时间旅行。
includeAssociatedData 允许导出历史记录和软删除的资源。 此筛选器不适用于“_typeFilter”查询参数。 将值作为“_history”包含在导出历史记录/非最新版本的资源。 将值包括为“_deleted”以导出软删除的资源。

注意

仅允许将与 FHIR 服务相同的订阅中的存储帐户注册为操作的目标 $export

疑难解答

以下信息可帮助你解决导出 FHIR 数据的问题。

作业停滞在错误状态

在某些情况下,当 FHIR 服务尝试导出数据时,作业可能会停滞在错误状态。 尤其是在 Data Lake 存储 Gen2 帐户权限尚未正确设置时,会出现这种情况。

检查操作状态的$export一种方法是转到存储帐户的存储浏览器,并查看导出容器中是否存在任何.ndjson文件。 如果文件不存在且没有其他 $export 作业正在运行,则当前作业可能处于错误状态。 在这种情况下,可以通过使用DELETE请求调用 FHIR 服务 API 来取消$export作业。 稍后,可以重新排队作业 $export ,然后重试。

有关取消 $export 操作的详细信息,请参阅 HL7 中的 大容量数据删除请求 文档。

注意

在 FHIR 服务中,处于错误状态的操作空闲的默认时间为 $export 10 分钟,然后服务停止操作并移动到新作业。

后续步骤

本文介绍了如何使用 $export 操作导出 FHIR 资源。 有关如何设置和使用其他导出选项的信息,请参阅:

FHIR® 是 HL7 的注册商标,经 HL7 许可使用。