Agent skill · Data & Analytics

exporting-bulk-fhir

Kick off and harvest a FHIR Bulk Data $export (system-, group-, or patient-level) and stream the resulting NDJSON into a batch OpenMed de-identification + NER pipeline at cohort scale. Covers the async kickoff (Prefer respond-async) -> poll Content-Location -> download NDJSON flow, the Bulk Data Access IG, _type/_since filters, and feeding DocumentReference/DiagnosticReport notes into openmed.deidentify in batch. Use when the user needs population-scale note extraction from an EHR or data warehouse to feed OpenMed, mentions bulk export, $export, NDJSON, Flat FHIR, or cohort de-identification.

maziyarpanahigithub.com/maziyarpanahiGitHub ↗
claude-codeApache-2.0
Install
npx skills add maziyarpanahi/openmed --skill exporting-bulk-fhir --agent claude-code

Same command for any agent — swap --agent for codex, cursor, copilot.

Facts
Files in the skill folder: 1
SKILL.md size: 7 KB
Bundled scripts: none
Version: 1.0
Path: skills/exporting-bulk-fhir/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 4,851
Language: Python
Read our review of the source →

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

From the SKILL.md

# Exporting Bulk FHIR When you need *cohort-scale* clinical text — not one patient in a UI — you use the FHIR **Bulk Data Access** (`$export`) operation: an async job that emits **NDJSON** files of resources you then stream into OpenMed for batch de-identification and NER. This skill sits **before** the OpenMed pipeline: it is how the notes arrive. ## When to use Reach for it when the source is an EHR or FHIR data warehouse and the volume is a population/group (thousands of patients), the workload is headless (no clinician UI), and the goal is to batch-feed `openmed.deidentify` / `openmed.analyze_text`. Triggers: "bulk export", "$export", "NDJSON", "Flat FHIR", "cohort de-identification", "export all notes". For a single in-chart patient with a UI, use `scaffolding-smart-on-fhir` instead. ## Three export levels - **System** — `GET [base]/$export` — everything the client is authorized for. - **Group** — `GET [base]/Group/[id]/$export` — a defined cohort (most common). - **Patient** — `GET [base]/Patient/$export` — all patients in scope. Bulk export uses **SMART Backend Services** auth (a `system/*.read`-scoped client-credentials token via a signed JWT assertion), not an interactive

What's inside
Steps it walks through
  1. When to use
  2. Three export levels
  3. Quick start: kickoff → poll → download
  4. Stream NDJSON into OpenMed (batch)
  5. Workflow
  6. Hand-off to / from OpenMed
  7. Edge cases & gotchas
  8. Standards & references
Commands it runs
curl -s -X GET \
curl -s 'https://ehr.example/fhir/bulkstatus/JOB123' \
curl -s 'https://ehr.example/fhir/bulkfiles/dr-1.ndjson' \
More from openmed
All skills →
About this skill
What does the exporting-bulk-fhir skill do?

Kick off and harvest a FHIR Bulk Data $export (system-, group-, or patient-level) and stream the resulting NDJSON into a batch OpenMed de-identification + NER pipeline at cohort scale. Covers the async kickoff (Prefer respond-async) -> poll Content-Location -> download NDJSON flow, the Bulk Data Access IG, _type/_since filters, and feeding DocumentReference/DiagnosticReport notes into openmed.deidentify in batch. Use when the user needs population-scale note extraction from an EHR or data warehouse to feed OpenMed, mentions bulk export, $export, NDJSON, Flat FHIR, or cohort de-identification.

How do I install it?

Run `npx skills add maziyarpanahi/openmed --skill exporting-bulk-fhir --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From maziyarpanahi/openmed, a repository with 4,851 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going