FHIR Operations Beyond CRUD: 6 That Actually Matter

FHIR Operations Beyond CRUD: 6 That Actually Matter

Diagram: 6 FHIR operations beyond CRUD — bulk, terminology, transaction ops

FHIR's REST operations go beyond CRUD. Six named operations cover most production use cases; understanding when each applies avoids reinventing patterns.

**1. `$validate`.** Server-side validation against profiles. Use before write to gate data quality.

**2. `$expand`.** Expand a ValueSet into its constituent codes. Use for choice-list population.

**3. `$export`.** Bulk data export as NDJSON. Use for analytics pipeline feeds.

**4. `$transform`.** Execute a StructureMap to transform resource shape. Use for cross-profile conversions.

**5. `$translate`.** Translate a code from one system to another via ConceptMap. Use for ICD-10 to SNOMED, RxNorm to NDC mappings.

**6. `$extract`.** SDC operation: extract structured resources from QuestionnaireResponse. Use for form-to-Observation pipelines.

When each is under-utilized

Operation Common misuse Should be
$validate Skipped entirely Wired into write path
$expand Static list embed Cached expansion
$export Not used Nightly bulk pipeline
$transform Manual coding Declarative StructureMap
$translate Hardcoded tables ConceptMap-driven
$extract Custom extraction code SDC standard

Operation execution modes

Most operations support both sync (small payloads) and async (large payloads via Prefer: respond-async). Bulk $export is exclusively async.

Vendor support (mid-2026)

Server validate expand export transform translate extract
HAPI FHIR 7.x Full Full Full Full Full External
Aidbox 2409 Full Full Full Full Full Native
Medplum 3.x Full Basic Full External External External

FHIR operations are a broad and useful API surface. Wire them into pipelines rather than reinventing equivalent logic in application code.