你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
导出 FHIR 数据
通过使用 FHIR® 服务中的批量$export
操作,可以导出 HL7 FHIR 大容量数据访问规范中所述的数据。
在尝试使用 $export
之前,请确保 FHIR 服务配置为使用 Azure Data Lake Storage Gen2 帐户进行连接。 若要配置导出设置并创建 Data Lake Storage Gen2 帐户,请参阅配置导出设置。
$export
调用终结点
将 FHIR 服务设置为使用 Data Lake Storage Gen2 帐户进行连接后,可以调用$export
终结点,FHIR 服务会将数据导出到存储帐户内的Azure Blob 存储容器中。 以下示例请求将所有资源导出到按名称 ({{containerName}}
) 指定的容器中。 注意:如果要在请求中指定 {{containerName}}
容器,则必须在 Data Lake Storage 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 Storage Gen2
目前,FHIR 服务支持 $export
Data Lake Storage Gen2 帐户,但具有以下限制:
- Data Lake Storage Gen2 提供 分层命名空间,但无法将操作定向
$export
到容器中的特定子目录。 FHIR 服务只能指定导出的目标容器,其中会$export
为每个操作创建新文件夹。 $export
操作完成后,所有数据都已写入文件夹中,FHIR 服务不会再次将任何内容导出到该文件夹。 对同一容器的后续导出将位于新创建的文件夹内。
若要将数据导出到防火墙后面的存储帐户,请参阅 “配置导出设置”。
设置和参数
标头
必须为作业设置两个 $export
必需的标头参数。 这些值是根据当前的 HL7 $export规范设置的。
- 接受:
application/fhir+json
- 首选:
respond-async
Query parameters
FHIR 服务支持以下查询参数来筛选导出的数据。 所有这些参数都是可选的。
查询参数 | 由 FHIR 规范定义? | 说明 |
---|---|---|
_outputFormat |
是 | 目前支持三个值以与 FHIR 规范对齐: application/fhir+ndjson , application/ndjson 或仅支持 ndjson 。 所有导出作业都会返回 .ndjson 文件和传递的值对代码行为没有影响。 |
_since |
是 | 允许仅导出自指定时间以来已修改的资源。 |
_type |
是 | 允许指定要包含的资源类型。 例如, _type=Patient 将仅返回患者资源。 |
_typeFilter |
是 | 若要请求精细筛选,可以 _typeFilter 与参数一 _type 起使用。 参数的值是 FHIR 查询的 _typeFilter 逗号分隔列表,用于进一步限制结果。 |
_container |
否 | 指定应在其中导出数据的已配置的存储帐户中的容器的名称。 如果指定了容器,数据将导出到该容器中的文件夹中。 如果未指定容器,则会将数据导出到具有自动生成名称的新容器。 |
_till |
否 | 允许导出已修改到指定时间的资源。 此参数仅适用于系统级别导出。 在这种情况下,如果历史版本尚未禁用或清除,导出将保证真正的快照视图。 |
includeAssociatedData |
否 | 允许导出历史记录和软删除的资源。 此筛选器不适用于“_typeFilter”查询参数。 将值作为“_history”包含在导出历史记录/非最新版本的资源。 将值包括为“_deleted”以导出软删除的资源。 |
注意
仅允许将与 FHIR 服务相同的订阅中的存储帐户注册为操作的目标 $export
。
疑难解答
以下信息可帮助你解决导出 FHIR 数据的问题。
作业停滞在错误状态
在某些情况下,当 FHIR 服务尝试导出数据时,作业可能会停滞在错误状态。 尤其当 Data Lake Storage Gen2 帐户权限尚未正确设置时,可能会发生这种情况。
检查操作状态的 $export
一种方法是转到存储帐户的 存储浏览器 ,并查看导出容器中是否存在任何 .ndjson
文件。 如果文件不存在且没有其他 $export
作业正在运行,则当前作业可能处于错误状态。 在这种情况下,可以通过向 Content-Location 标头中提供的 URL 发送 DELETE 请求来取消该请求来取消 $export
作业
注意
在 FHIR 服务中,处于错误状态的操作空闲的默认时间为 $export
10 分钟,然后服务停止操作并移动到新作业。
后续步骤
本文介绍了如何使用 $export
操作导出 FHIR 资源。 有关如何设置和使用其他导出选项的信息,请参阅:
注意
FHIR® 是 HL7 的注册商标,经 HL7 许可使用。