codefunded logo iconcodefunded logo
What we doFundsetWorkTeamContact
Talk to us
codefunded logo iconcodefunded logo

CONTACT

+48 514 731 513
+48 578 626 161
contact@codefunded.com
  • LinkedIn
  • GitHub

MENU

  • What we do
  • Fundset
  • Work
  • Team
  • Contact
  • Expertise
  • Work with us

SERVICES

  • Build
  • Scale
  • Advise
  • Fractional CTO
© 2026 · codefunded services sp. z o.o.—Privacy policy—
← back to Work

CASE STUDY·HEALTHCARE · INTEROPERABILITY

FHIR pipeline for interoperability

We delivered a FHIR transformation pipeline on GCP that turns clinic EHR exports (CSV, JSON, XML) into standards-compliant FHIR resources (R4/R6) — predictable throughput, full replay and backfill, and an end-to-end audit trail from source to persisted resource.

Role

End-to-end data engineering partner

Scope

EHR transformations · FHIR R4/R6 mapping · Dataflow (Apache Beam) · Pub/Sub · Healthcare NLP · FHIR API

Scale

Zero-downtime migration · Replay/backfill-ready · Versioned mappings · Audit trail to storage

Services

Data Engineering · GCP · FHIR

Tags

  • Data Migration
  • ETL
  • Software Development

The challenge

The client operated on legacy EHR exports with no interoperability pathway. Data arrived in various formats; manual triage of clinical records was slow, error-prone, and blocked downstream analytics.

The existing formats could not integrate with modern EHR systems or FHIR-compatible endpoints. A zero-downtime migration was required — the clinical environment could not tolerate outages.

Technical solution

  • Streaming transformation with Dataflow (Apache Beam)

    A pipeline converting EHR source data into FHIR resources (Patient, Observation, Encounter, and related types) with schema validation against target profiles.

  • Idempotent writes via FHIR PUT

    Conditional create-or-update enabling safe replay and backfill without duplicates.

  • Versioned mapping rules

    Rule sets pinned to releases so rollback becomes a config change, not a code change.

  • Healthcare NLP enrichment

    Cloud Healthcare NLP extracting structured entities (e.g. ICD-10, SNOMED CT) from free-text notes before mapping.

  • JSON audit copies in Cloud Storage

    Every transformed resource written as JSON for traceability, partitioned by date and source batch.

  • Persistence in GCP Healthcare FHIR API

    FHIR validation, search, and compliance-friendly persistence as the system of record.

How we built it

We designed the system to support both steady-state ingestion and large backfills with the same pipeline code. Autoscaling handles both modes without a separate batch system.

Validation gates catch schema drift early: we validate resources against target profiles before persistence, and keep audit copies for post-hoc inspection and reconciliation.

Replays and backfills are normal — design for them.

Architecture decisions

Decouple transform from persistence

We chose Pub/Sub between transformation and FHIR Store so backpressure and replay do not block the transform stage.

Streaming-capable by design

We evaluated batch-only runs and went with a streaming-capable architecture so the client can move toward real-time ingestion later.

Version transformations like a product

Mapping rules are versioned and pinned to releases so changes are auditable and rollbacks are predictable.

Outcomes

A repeatable interoperability pathway: predictable throughput, safe replay/backfill, and an end-to-end audit trail — delivered without downtime in a clinical environment.

Zero
downtime
R4/R6
FHIR versions
Replay
backfill-ready
End-to-end
audit trail

What we took away

Idempotency is the baseline

Healthcare pipelines must tolerate reruns. Idempotent persistence makes replays safe and routine.

Mappings must be versioned

Treat transformation rules like a product: versions, fixtures, and rollback paths.

Auditability reduces firefighting

Traceability from raw inputs to persisted resources shortens diagnosis time and cuts manual triage.

Architect for late change

Schema drift, policy updates, and backfills are expected — decoupled stages keep the system operable.

Bring us the hard part

A first version you need shipped, a second phase you've outgrown, or a decision your team can't agree on — write a paragraph and we'll come back inside a day with whether it's a shape we take on.