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
本交易由批量数据服务提供商和批量数据服务客户端角色使用,用于从批量数据提供商的输出文件服务器获取批量数据文件。
在批量数据导出状态获取交易的响应消息中,可以得到批量数据文件的清单。清单中记录了文件的获取地址URL。批量数据客户端可以通过该URL下载批量数据文件(每种资源类型一个或多个)。在消息头Expires中记录了这些文件链接的有效时间,如果链接过期,客户端可以重新获取输出清单,服务器在响应的消息头Expires提供更新的链接和时间戳。
导出的数据中的资源应为最新版本。资源中是否包含 Resource.meta 信息由服务器自行决定。
客户端在请求输出文件时应提供消息头 Accept-Encoding ,并且应将 gzip 压缩作为编码选项之一。服务器应当提供未压缩、gzip压缩和其他压缩形式。当使用压缩时,服务器应在响应中通过消息头Content-Encoding向客户端传达该信息。
GET [url from status request output field]
Accept(可选,默认为 application/fhir+ndjson)
200 OKContent-Type。对于 NDJSON 格式的文件,应设置为 application/fhir+ndjson。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"}, ...}
{...}