migrate run exports from a source EHR to FHIR R4 Bulk Data NDJSON: one file per resource type plus a manifest.json conforming to the HL7 FHIR Bulk Data Access IG.
FHIR_* views over a Postgres or SQL Server database, auto-detected by shape. The default resource set is Patient, Encounter, Observation, Condition, MedicationRequest, and Procedure; narrow or widen it with --resources.
De-identify on the way out
Add--deidentify and Migrate runs every emitted resource through on-device de-identification before it’s written. Cross-resource references stay coherent, so a de-identified Encounter still points at the right de-identified Patient.
--deident-salt fixes the hashing salt so references stay consistent across runs; --deident-date-shift shifts every date by a uniform offset.
Reconcile
Every run reconciles resource counts per type: what the source held versus what was exported, so you can prove nothing was dropped. In the desktop app this is the reconciliation view; from the CLI it’s part of the run output and the manifest.Dry run first
--dry-run reads, transforms, and reconciles without writing NDJSON. The manifest is still emitted, so you can validate the mapping and the counts before a real export.
Resume an interrupted run
If a run is interrupted, Migrate writes a.checkpoint.json in the output directory. Re-run with --resume to continue from the checkpoint instead of starting over.
