Secondary Use FHIR Server Implementation Guide
0.1.0 - ci-build

Secondary Use FHIR Server Implementation Guide - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Bulk Export

Bulk Export

Endpoints

  • System export: GET [base]/$export
  • Cohort export: GET [base]/Group/{id}/$export
  • Status: GET [base]/bulk-status/{jobId}
  • Cancellation: DELETE [base]/bulk-status/{jobId}
  • NDJSON: GET [base]/bulk-files/{jobId}/{type}.ndjson

Kickoff requires:

Accept: application/fhir+json
Prefer: respond-async

The server returns 202 Accepted with Content-Location. Jobs complete synchronously in this prototype, so the first status poll normally returns HTTP 200 with the completed manifest.

Supported Standard Parameters

Parameter Behavior
_outputFormat application/fhir+ndjson (default), application/ndjson, or ndjson
_type comma-separated supported resource types
_since include resources with meta.lastUpdated strictly after the instant
_until include resources with meta.lastUpdated strictly before the instant
_typeFilter resource-scoped FHIR search; criteria within one expression are ANDed and repeated expressions for the same output type are ORed
_elements comma-separated qualified or unqualified root elements

Unknown parameters are rejected with a FHIR OperationOutcome; they are never silently ignored.

Type Filter Semantics

_type=Patient&_typeFilter=Patient?gender=female

returns female Patient resources. _typeFilter does not construct a cohort or cause other resource types to follow the matching patients. Use Group/{id}/$export when patient cohort scope is required.

The OR behavior for repeated expressions of one type follows the Bulk Data export specification. Search result controls _summary and _elements are rejected inside _typeFilter, including when appended through a Patient chain.

Elements and SUBSETTED

Selectors have the form element or ResourceType.element. Only root elements are supported. Mandatory and modifier elements are retained, including implicitRules, root modifierExtension, and resource-specific status or modifier fields. Every filtered resource receives:

{
  "system": "http://terminology.hl7.org/CodeSystem/v3-ObservationValue",
  "code": "SUBSETTED"
}

in Resource.meta.tag.

For Group exports, the adapter also removes non-member targets from a shared Provenance resource and adds the same SUBSETTED tag when that target list was reduced.

Manifest

The status response is application/json with transactionTime, request, requiresAccessToken, output, and error. Each output entry contains type, count, and an NDJSON url. It also carries prototype storageLocation metadata in the form bulk://{job-id}/{type}.ndjson; clients do not need this field and should download from url. Use Accept: application/json if you supply an Accept header for this manifest request.

Cancellation returns HTTP 202. An unknown job or file returns HTTP 404 with a FHIR OperationOutcome; malformed or unreadable job storage returns HTTP 500 with an OperationOutcome. Bulk jobs persist below the configured data directory. Groups use a separate in-memory store.