bulk-data-export

Implements asynchronous FHIR Bulk Data Access $export with kick-off, polling, manifests, and NDJSON downloads.

51|19|Updated Jan 4, 2025
One-click install
npx skills add https://github.com/HeliosSoftware/hfs --skill bulk-data-export-heliossoftware
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: bulk-data-export
Source: https://github.com/HeliosSoftware/hfs/tree/main/.agents/skills/bulk-data-export
Command: npx skills add https://github.com/HeliosSoftware/hfs --skill bulk-data-export-heliossoftware

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Exporting large volumes of FHIR resources from the Helios FHIR Server requires an asynchronous workflow with job state tracking, output storage, and conformance to the FHIR Bulk Data Access specification, which is complex to configure and operate correctly. ## Core Features & Use Cases - Asynchronous Export Lifecycle: Kick off system, patient, or group exports with Prefer: respond-async, poll job status, retrieve manifests, download NDJSON output, and cancel jobs. - Flexible Output Storage: Write export files to local filesystem or S3-compatible storage such as MinIO, with pre-signed download URLs and configurable retention TTLs. - Parameter Handling: Supports _typeFilter, _elements with SUBSETTED tagging, and group export _since behavior, while rejecting unsupported parameters per the Prefer: handling header. - Use Case: Run the Inferno bulk data conformance workflow against a multi-instance deployment using PostgreSQL for job state and MinIO for export output. ## Quick Start Start the HFS server and kick off a patient export by sending a GET request to /Patient/$export with the Prefer: respond-async header, then poll the returned status URL for the manifest.

Frequently Asked Questions about bulk-data-export

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I kick off a FHIR bulk data export?▼

Send a GET or POST request to /$export, /Patient/$export, or /Group/{id}/$export with the Prefer: respond-async header. The server returns 202 Accepted with a Content-Location header pointing to the status URL for polling.

How do I configure S3 output for FHIR bulk export?▼

Set HFS_BULK_EXPORT_OUTPUT_BACKEND=s3 and provide HFS_BULK_EXPORT_S3_BUCKET. For S3-compatible providers like MinIO, also set HFS_BULK_EXPORT_S3_ENDPOINT and HFS_BULK_EXPORT_S3_FORCE_PATH_STYLE=true.

Which storage backends support FHIR bulk data export?▼

Bulk export is available on sqlite, postgres, sqlite-elasticsearch, and postgres-elasticsearch backends. Other backends return 501 because job-state storage reuses the same database that holds FHIR resources.

Why does my bulk export kick-off return 429 or 400?▼

A 429 means the per-tenant concurrent job cap (default 4) was exceeded. A 400 occurs when unsupported parameters like _sort or _count appear in _typeFilter, or when unsupported result-control parameters are sent with Prefer: handling=strict.

Does the export support _elements and _typeFilter parameters?▼

Yes, _typeFilter is parsed and applied, and _elements subsets resources to listed paths plus id, resourceType, and meta with a SUBSETTED meta.tag. Result-control parameters like _sort and _include inside _typeFilter are rejected with 400.