Nirmitee.io

For practices, health systems and healthtech teams changing platforms

EHR and Healthcare Data Migration Services

We migrate clinical, financial and document data out of legacy EHRs, practice-management systems and FHIR platforms. Extraction, mapping to the target model, patient matching, reconciliation, mock migrations, a read-only archive and a go-live parallel run, with every exclusion documented and signed off.

Plan your EHR data migration

Book a call

Health IT leaders, practice groups and product teams replacing, consolidating or modernizing clinical systems. Updated September 26, 2026.

Inside the workflow
An EHR data migration, end to end
  1. 01
    Extract

    Database, vendor export, ONC (b)(10) EHI export, Bulk FHIR or C-CDA

  2. 02
    Map and match

    Target model, terminology and patient identity rules

  3. 03
    Load and reconcile

    Mock migrations with counts, totals and chart review

  4. 04
    Cut over and archive

    Parallel run, delta load, go-live and read-only archive

Illustrative workflow · scope tailored to your environment

Evidence you can check

The short answer

EHR Data Migration Services, in Short

We extract data from the legacy system through the best available path (database access, vendor export tools, the ONC (b)(10) EHI export that ONC-certified EHRs support, Bulk FHIR or C-CDA documents), map it to the target EHR or FHIR platform, match patients, and load it through repeated mock migrations until counts, financial totals and sampled charts reconcile. Data that does not move stays available in a read-only archive, and go-live runs with a delta load and a parallel-run period.

Read our EHR migration and data portability guide

Start with the real problem

A Migration Is Judged by the Charts Clinicians Open on Day One.

Row counts can match while allergies land in the wrong section, medications lose their dose units or two patients are merged. We define what moves as discrete data, what moves as documents and what stays in an archive, then prove the result with reconciliation and clinical chart review before the go-live decision.

What we build

EHR Data Migration Work We Deliver

The workstreams in a healthcare data migration, each with the output your team signs off.

Legacy EHR data extraction

Database extracts, vendor export utilities, ONC (b)(10) EHI export files, Bulk FHIR $export and C-CDA or CCD documents. Screen and report extraction is kept as the last resort.

Sizing a legacy EHR data migration
The engineering insideExtraction scripts, inventory and completeness counts

Mapping and terminology

Source-to-target specifications for demographics, problems, medications, allergies, results, immunizations, notes and financials, with ICD-9 history, LOINC, RxNorm and SNOMED CT handling.

Terminology mapping in production
The engineering insideReviewed mapping specification and code crosswalks

Patient matching and merge review

Deterministic and probabilistic matching across sources, duplicate detection and a review queue for uncertain matches before anything is merged.

Patient matching and MPI
The engineering insideMatch rules, duplicate report and review decisions

Migration into FHIR platforms

Loads into FHIR stores and servers with US Core validation and Provenance, including moves off Azure API for FHIR before its 30 September 2026 retirement.

FHIR data platform development
The engineering insideValidated resources and reconciliation report

Legacy data archive

A read-only archive for data that does not migrate, with search, chart view, release-of-information export, retention rules and legal hold.

Healthcare data engineering services
The engineering insideArchive with access roles and retention settings

Go-live cutover and parallel run

Freeze windows, final delta load, go/no-go criteria, a parallel-run period where both systems are checked, and hypercare after go-live.

HL7 v2 to FHIR migration guide
The engineering insideCutover runbook and signed go-live record

Your starting point

Where EHR data migration projects start

01

Replace a Legacy EHR

A practice or health system is moving to a new EHR and must decide what history moves as discrete data, what moves as documents and what stays in an archive.

The useful outputA migration scope by data domain and date range, then tested loads and an archive.
02

Consolidate Systems After a Merger

Several EHRs or practice-management systems hold overlapping patients with different identifiers and local codes.

The useful outputPatient match rules, code crosswalks and a consolidated load with a merge review record.
03

Move a FHIR or Cloud Platform

A product must move FHIR data between stores, for example from Azure API for FHIR to the Azure Health Data Services FHIR service, or from a custom database into FHIR.

The useful outputExport, transform, import and client cutover with reconciliation evidence.

The Engineering Engagement

EHR data migration scope and deliverables

Workstreams are selected around your priorities. Each comes with an output your team can inspect, test and own.

01

Source inventory

Data domains, date ranges, record counts, attachments, images and extraction paths for every source system.

02

Migration scope decisions

Discrete, document or archive treatment for each domain, with the reason recorded and approved.

03

Mapping and crosswalks

Field-level mapping, code crosswalks, unit handling and provider and location mapping.

04

Identity and duplicates

Patient, provider and encounter matching with review of uncertain matches.

05

Mock migrations and reconciliation

Two or three full rehearsals comparing counts, financial totals and sampled charts between source and target.

06

Cutover, archive and hypercare

Final delta load, go/no-go, parallel run, archive setup and post-go-live issue handling.

Compare your options

Full Migration, Selective Migration or Archive: Which Fits

Most EHR migrations combine these. The choice is made per data domain and date range.

ApproachWhat movesBest whenPlan for
Full discrete migrationAll structured history into the new EHRFew sources, good data quality, clinicians need trending across yearsHighest mapping and reconciliation effort; legacy code sets
Selective migration plus archiveActive problems, medications, allergies, immunizations, recent results and visits; the rest archivedMost practice and hospital EHR replacementsClear cut-off rules and an archive clinicians can reach from the new EHR
Document-level migrationC-CDA, CCD or PDF chart summaries attached to the patientOlder history that must be visible but not computableDocument indexing and search; no clinical decision support on the content
Archive onlyNothing into the new EHR; legacy data in a read-only archiveShort retention windows or a low-value sourceRetention periods, release-of-information workflow and archive licensing

Expertise is in the decisions

EHR data migration decisions to make early

Decision / 01

What moves, and how far back

Agree domains and date ranges with clinical, revenue-cycle and compliance owners. Retention requirements set the archive, not the migration scope.

Decision / 02

Discrete or document

Discrete data drives decision support and trending; documents preserve context at lower cost. Choose per domain.

Decision / 03

Open balances and financials

Decide whether open A/R is worked down in the old system or migrated as balances, before mapping starts.

Decision / 04

Identity rules

Define the matching rules and who reviews uncertain matches. Never merge on a name and date of birth alone.

Decision / 05

Acceptance evidence

Agree the counts, totals and number of sampled charts that authorize go-live before the first mock migration.

Decision / 06

Legacy system access after go-live

Decide how long the old system stays read-only, and when the archive takes over.

A Clear Engagement Also Has Clear Boundaries.

Source vendor cooperation

Export access, vendor export fees and database credentials sit with you and the legacy vendor. We prepare the requests and test the extracts.

Target system configuration

The new EHR vendor configures the target build. We load into it through its supported import tools or APIs.

Clinical sign-off

Clinical owners approve mappings with clinical meaning and review sampled charts before go-live.

Retention and release policy

Your compliance team sets retention periods under state law and payer contracts; we implement them in the archive.

Timeline

EHR Data Migration Timeline

Typical durations for a single-source EHR migration. Multi-source consolidations add a mapping and matching cycle per source.

01

Discovery and inventory

3 to 4 weeks. Source inventory, extraction tests, scope decisions and acceptance criteria.

02

Mapping and tooling

4 to 8 weeks. Mapping specifications, crosswalks, match rules and extraction and load tooling.

03

Mock migrations

4 to 8 weeks for two or three rehearsals, each with reconciliation and chart review.

04

Cutover and hypercare

1 to 2 weeks of cutover and parallel run, then 30 to 90 days of hypercare.

Delivered work

Healthcare Data Migration and Platform Work We Have Delivered

Client names are withheld; each is a real engagement. Our open-source EHR work is public on GitHub.

Open-source Headless EHR on FHIR R4

A headless EHR with a FHIR R4 API, Bulk Data export and SMART App Launch that passed 47 of 47 ONC (g)(10) SMART App Launch standalone patient tests in Inferno on 11 June 2026.

EngagementOpen source · Public repository
View the repository on GitHub →

FHIR-native Provider Platform on Medplum

A provider platform whose every patient, appointment, care plan and invoice is a standard FHIR resource, so its data can move to any FHIR-capable system without a bespoke export.

EngagementDigital health company · Clinical web platform

OpenEHR Research DataHub

Clinical data validated against templates before it lands, with a master patient index, researcher roles, audit and cohort export to FHIR or openEHR.

EngagementEuropean research university · Deployment and integration

Clearinghouse X12 Pipeline in a Live Behavioral-health EHR

An existing 837 and 835 claims pipeline diagnosed and hardened inside a production EHR with reviewed fixes and automated tests, keeping claim data consistent while the system stayed live.

EngagementBehavioral-health EHR · Claims integration
Read the engineering case study →

From discussion to delivery

How we run an EHR data migration

  1. 01

    Inventory and decide

    Inventory every source and agree what moves, how and how far back.

  2. 02

    Map and build tooling

    Write signed mappings and repeatable extract, transform and load tooling.

  3. 03

    Rehearse until it reconciles

    Run mock migrations until counts, totals and sampled charts pass the agreed checks.

  4. 04

    Cut over and support

    Execute the delta load, run in parallel, go live and support the first weeks.

Start with discovery, a defined build, or a focused modernization.

We agree the scope, dependencies, acceptance criteria and commercial model before implementation. Your existing team can stay involved throughout.

Find the right starting point ↗

Before you commit

EHR data migration questions buyers ask

Explore our integration field guide ↗
What is EHR data migration?

EHR data migration is moving patient records, clinical history, documents and financial data from a legacy EHR or practice-management system into a new one, or into an archive. It covers extraction, mapping to the target model, patient matching, loading, reconciliation and the go-live cutover.

How long does an EHR data migration take?

A single-source migration typically takes 12 to 22 weeks: 3 to 4 weeks of discovery, 4 to 8 weeks of mapping and tooling, 4 to 8 weeks of mock migrations and 1 to 2 weeks of cutover, followed by hypercare. Consolidating several sources adds a cycle per source.

What Drives the Cost of an EHR Data Migration?

The number of source systems, years of history, the share of data migrated as discrete data, attachments and images, source data quality and duplicates, legacy vendor cooperation and export fees, the number of mock migrations and archive requirements. We estimate after discovery.

Which data should we migrate and which should we archive?

Most organizations migrate active problems, medications, allergies, immunizations, recent results and recent visits as discrete data, attach older summaries as documents and keep the full history in a read-only archive. The split is agreed per domain with clinical and compliance owners.

How do you extract data when the legacy vendor offers little help?

Since 31 December 2023, ONC-certified EHRs that store electronic health information have had to support the (b)(10) EHI export for a single patient and for a patient population. We also use database access, Bulk FHIR, C-CDA documents and vendor reporting tools, and keep screen extraction as the last resort.

Can you migrate data into a FHIR store?

Yes. We map records to FHIR R4 resources, validate them against US Core or your profiles, keep source identifiers and Provenance, and reconcile the load. That includes moving from Azure API for FHIR to the Azure Health Data Services FHIR service before the 30 September 2026 retirement.

How do you validate a healthcare data migration?

Each mock migration is reconciled by record counts per domain, financial control totals, referential checks between patients, encounters and orders, and a clinical review of sampled charts in the target system. Go-live requires the agreed checks to pass.

What is a parallel run?

During a parallel run, the legacy system stays available read-only while the new system goes live, so staff can compare charts and balances and the team can resolve differences quickly. It usually lasts one to several weeks before the legacy system moves to archive.

How do you prevent duplicate or merged patients?

We match patients with deterministic rules on strong identifiers, add probabilistic scoring for weaker matches, and send uncertain matches to a human review queue. Merges are logged so they can be traced after go-live.

How do you protect downtime and data integrity at go-live?

We rehearse the cutover in mock migrations, load history before go-live, move only a final delta during the freeze window, and keep the legacy system available read-only. Any residual risk is listed in the go/no-go record for your sign-off.

How long must we keep legacy records?

Medical record retention is set by state law, payer contracts and your policies, and differs for adults and minors. We implement the periods your compliance team sets in the archive, including legal holds.

Who decides what happens to the old system?

Your authorized stakeholders decide retention, access and decommissioning. We provide the inventory, migration evidence and archive that support that decision.

A useful first conversation

Plan your EHR data migration.

Tell us what exists today, who uses it and where the workflow breaks. We’ll discuss the scope, access dependencies and the next practical step.

Come with context. Leave with a clearer direction.

A product overview and a de-identified workflow are enough to start. No patient records or credentials are needed.

Book a call ↗Prefer to contact the team directly? ↗

Please exclude patient data and credentials. We use these details to respond to your enquiry. Privacy policy

Thank you. Your enquiry has been received. Our team will review your requirements.

Standards and Reference Material

These are independent reference sources, not endorsements. Applicability, platform access and current requirements are confirmed for your project.

ONC (b)(10) electronic health information export ↗FHIR Bulk Data Access $export ↗HL7 FHIR R4 Provenance resource ↗HL7 US Core Implementation Guide ↗Azure API for FHIR migration strategies ↗45 CFR 164.514: HIPAA de-identification standard ↗