HL7中国批量数据导出服务实施指南
2026.01.23 - release

HL7中国批量数据导出服务实施指南 - Local Development build (v2026.01.23) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

## ITS-BULK-004 批量数据导出文件检索

### 概述

本交易由`批量数据服务提供商`和`批量数据服务客户端`角色使用，用于从批量数据提供商的输出文件服务器获取批量数据文件。

在`批量数据导出状态获取`交易的响应消息中，可以得到批量数据文件的清单。清单中记录了文件的获取地址URL。`批量数据客户端`可以通过该URL下载批量数据文件（每种资源类型一个或多个）。在消息头`Expires`中记录了这些文件链接的有效时间，如果链接过期，客户端可以重新获取输出清单，服务器在响应的消息头`Expires`提供更新的链接和时间戳。

导出的数据中的资源应为最新版本。资源中是否包含 `Resource.meta` 信息由服务器自行决定。

客户端在请求输出文件时应提供消息头 `Accept-Encoding` ，并且应将 `gzip` 压缩作为编码选项之一。服务器应当提供未压缩、`gzip`压缩和其他压缩形式。当使用压缩时，服务器应在响应中通过消息头`Content-Encoding`向客户端传达该信息。

#### API接口端点

    GET [url from status request output field]
    Accept（可选，默认为 application/fhir+ndjson）

#### 响应 - 成功

- HTTP 状态码为 `200 OK`
- 与所传递文件格式匹配消息头 `Content-Type`。对于 NDJSON 格式的文件，应设置为 `application/fhir+ndjson`。
- 消息体正文，格式为NDJSON （每行一个FHIR资源）或其他请求格式。

#### 响应 - 错误

- HTTP 状态码为 `4XX` 或 `5XX`

#### 输出文件资源组织的形式

输出文件可以按资源类型组织，也可以按 `organizeOutputBy` 参数中指定的资源类型实例组织。

当 `organizeOutputBy` 参数未设置值时，每个输出文件只能包含一种类型的资源，服务器可以为返回的每种资源类型创建一个或多个文件。每个文件中包含的资源数量由服务器根据实际情况自行设定。

当 `organizeOutputBy` 参数被设置为某种资源类型时，输出文件应填充由一个`Parameters` 资源开头的资源块，该资源包含一个名为 `header` 的参数，指向`organizeOutputBy`参数指定类型的资源（A）。随后是资源A以及引用资源A的资源（合称为“资源块”）。

每个输出文件可以包含多个资源块，并且单个资源块不应被文件分割。

当导出操作中的 `organizeOutputBy` 参数未设置值时，每个NDJSON 文件仅包含一种资源，示例如下：

    {"id":"p-1","resourceType":"Patient", "name":[{"given":["Brenda"],"family":"Jackson"}],"gender":"female", ...}
    {"id":"p-2","resourceType":"Patient", "name":[{"given":["Bram"],"family":"Sandeep"}],"gender":"male", ...}
    {"id":"p-3","resourceType":"Patient", "name":[{"given":["Sandy"],"family":"Hamlin"}],"gender":"female", ...}
    {...}

当导出操作中的 `organizeOutputBy` 参数设置为 `Patient` 时，每个NDJSON 文件就不再仅仅只包含一种资源，而是以资源块形式排列，示例如下：

      {"resourceType": "Parameters", "parameter": [{"name": "header", "valueReference": {"reference": "Patient/p-1"}}]}
      {"id": "p-1", "resourceType": "Patient", ...}
      {"id": "c-1", "resourceType": "Condition", "subject":{"reference": "Patient/p-1"}, ...}
      {"id": "o-1", "resourceType": "Observation", "subject":{"reference": "Patient/p-1"}, ...}
      {...}
      {"resourceType": "Parameters", "parameter": [{"name": "header", "valueReference": {"reference": "Patient/p-2"}}]}
      {"id": "p-2", "resourceType": "Patient", ...}
      {"id": "c-101", "resourceType": "Condition", "subject":{"reference": "Patient/p-2"}, ...}
      {"id": "o-102", "resourceType": "Observation", "subject":{"reference": "Patient/p-2"}, ...}
      {...}