FHIR Bulk Data Access, formally defined by the HL7 FHIR Bulk Data Access IG, is an API specification designed to export large, flat datasets of FHIR resources asynchronously. Unlike the standard RESTful API optimized for point-of-care queries, this mechanism triggers a long-running operation that generates compressed NDJSON files, enabling the efficient movement of entire patient panels for analytics, machine learning, and population health management without overwhelming the server.
Glossary
FHIR Bulk Data Access

What is FHIR Bulk Data Access?
A FHIR specification for exporting large, flat datasets of patient-level data asynchronously, typically in NDJSON format, for analytics and population health.
The process begins with a client requesting a Group export, initiating a kick-off request that returns a polling status URL. The server asynchronously generates a manifest file containing download links for each resource type, such as Patient, Observation, or MedicationRequest. This stateless, backend-driven approach decouples data generation from retrieval, ensuring that exporting millions of records does not degrade the performance of the transactional FHIR server serving clinical users.
Key Features of FHIR Bulk Data Access
The FHIR Bulk Data Access specification (Flat FHIR) defines an asynchronous, pre-coordinated approach for exporting large, flat datasets of patient-level data. Designed for analytics and population health, it moves beyond transactional RESTful queries to enable efficient, bulk extraction of standardized resources.
Asynchronous Export Pattern
Unlike real-time FHIR searches, Bulk Data Access uses a kick-off and poll architecture. A client requests an export, and the server initiates a long-running job. The client then polls a status endpoint until the job is complete, at which point it receives a manifest of download URLs. This prevents timeouts when exporting millions of records.
NDJSON Output Format
Exported data is formatted as Newline Delimited JSON (NDJSON) , a flat file format where each line is a valid JSON object. This format is ideal for streaming large datasets because it is:
- Splittable: Files can be partitioned for parallel processing.
- Appendable: New data can be added without rewriting the entire file.
- Line-Processable: Tools can read one record at a time without loading the full dataset into memory.
Three Export Levels
The specification defines three distinct scopes for data extraction, each serving a different analytical need:
- System-Level Export: Exports data for all patients on a server. Requires powerful authorization.
- Patient-Level Export: Exports all data for a specific, pre-defined list of patients.
- Group-Level Export: Exports data for all members of a defined Group resource, such as a cohort of diabetic patients. This is the most common mechanism for population health analytics.
Pre-Coordinated Resource Types
To simplify implementation, the specification defines a Flat FHIR profile. Instead of complex, nested resource graphs, servers export a pre-defined set of resource types as flat, independent files. The standard types include:
- Patient: Demographics.
- Observation: Vital signs and lab results.
- Condition: Diagnoses and problems.
- MedicationRequest: Prescribed medications.
- AllergyIntolerance: Documented allergies. This flat structure is optimized for direct loading into analytical databases.
Backend Services Authorization
Bulk data access is secured using the SMART Backend Services authorization profile, not user-facing OAuth. This machine-to-machine flow relies on:
- JSON Web Keys (JWK) : For client authentication.
- Signed JWT Assertions: To request access tokens.
- OAuth 2.0 Client Credentials Grant: To obtain a token scoped to the requested export level. This ensures that only registered, non-interactive systems can initiate large-scale data transfers.
Error Handling and Retry
The specification includes robust error handling for long-running jobs. If an export fails, the server returns an OperationOutcome resource detailing the error. Files are generated transactionally; a download URL is only provided for a file that was fully written. Clients must implement exponential backoff when polling the status endpoint and handle partial failures gracefully by re-requesting only the failed files.
Frequently Asked Questions
Clear, technical answers to the most common questions about the FHIR Bulk Data Access specification for population-level analytics and data export.
FHIR Bulk Data Access is an HL7 specification that defines a standardized, asynchronous API for exporting large, flat datasets of patient-level data from a FHIR server. Unlike the standard FHIR RESTful API, which is designed for point-of-care access to individual resources, Bulk Data Access uses the Group resource to define a cohort of patients and initiates a long-running export job. The server processes the request asynchronously, generating compressed NDJSON (Newline Delimited JSON) files for each requested resource type—such as Patient, Observation, or MedicationRequest. The client polls a status endpoint until the job is complete, then downloads the files from a secure location. This mechanism is foundational for population health analytics, machine learning model training, and regulatory reporting under the ONC Cures Act Final Rule.
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Related Terms
Mastering FHIR Bulk Data Access requires understanding the core specifications, export mechanisms, and security protocols that enable population-scale data movement.
Flat FHIR Export Paradigm
Unlike the standard RESTful API that returns interconnected FHIR Bundles, Bulk Data Access generates flat, denormalized NDJSON files. Each line is a single resource (e.g., a Patient or Observation), optimized for direct ingestion into analytics tools like Spark or BigQuery without recursive parsing. This design sacrifices relational context for linear scan performance on massive datasets.
SMART Backend Services Authorization
Bulk Data Access abandons user-centric OAuth flows in favor of SMART Backend Services Authorization. This machine-to-machine profile uses asymmetric cryptography (JWKS) to establish a trusted client identity without a human present. The client signs a JWT assertion to obtain an access token, enabling unattended, automated batch jobs that run during off-peak hours.
Patient-Level vs. System-Level Export
The specification defines two distinct scopes:
- Patient-Level Export: Targets all resources linked to a specific Group of patients, ensuring a longitudinal view of a cohort.
- System-Level Export: Exports all data for a given resource type (e.g., all MedicationRequests) from the entire server, regardless of patient linkage. This is critical for data warehousing and cross-entity analytics but requires stricter governance.
Attestation & Provenance Tracking
To maintain data integrity, the export manifest includes an attestation mechanism. The server can provide a checksum or digital signature for each output file, allowing the consuming system to verify that the data has not been corrupted or tampered with during transfer. This ties directly to the FHIR Provenance resource to establish a complete chain of custody for the exported dataset.

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us