HL7 v2 feed pipelines
ADT, ORU, ORM, SIU and MDM messages from Mirth Connect or another interface engine, over MLLP or a queue, parsed to segment-level tables with message control IDs used for de-duplication and ordering.
HL7 integration servicesHealthcare Data Pipelines
Resolve unreliable feeds, repeated manual exports and unexplained differences between source and output. We design ingestion, validation and recovery around the real update behavior of your EHR, claims and operational systems, from HL7 v2 feeds to FHIR Bulk Data and X12 835 files.
Scope a healthcare pipeline reviewBook a 30-minute call with our data engineering lead
For teams facing unreliable feeds, manual exports or inconsistent datasets.
Source identity + batch or event context
Accept · reject · quarantine with a reason
Deterministic mapping + reconciliation
Checkpoint · retry · replay · alert an owner
Illustrative architecture · implementation boundaries agreed during scoping
The short answer
We build and repair the pipelines that move healthcare data from source to consumer: HL7 v2 ADT and ORU feeds, FHIR Bulk Data NDJSON and FHIR Subscriptions, X12 837, 835 and 277CA files, flat-file drops and log-based CDC from EHR and billing databases. Each pipeline has a source contract, validation with a quarantine path, reconciliation to the source, safe replay and freshness alerts routed to a named owner.
A focused first engagement
Bring one failing data path, its expected behavior and the team that depends on it. We scope the investigation around source changes, rejected records, freshness and recovery.
Scope a healthcare pipeline review →We agree the assessment scope, fee and schedule after reviewing your context and access dependencies.
The problem behind the brief
Late events, corrected results, duplicate deliveries and schema changes are normal integration conditions. We turn them into explicit behaviors and acceptance tests rather than manual clean-up after each load.
What we build
Pipelines named by source and standard, each with the behavior it must handle.
ADT, ORU, ORM, SIU and MDM messages from Mirth Connect or another interface engine, over MLLP or a queue, parsed to segment-level tables with message control IDs used for de-duplication and ordering.
HL7 integration servicesBulk Data $export clients for population loads with NDJSON per resource type, plus FHIR Subscriptions or change feeds for near-real-time updates.
FHIR subscriptions and event-driven pipelines837 claim, 835 remittance, 277CA and 999 acknowledgment files parsed to claim, line and adjustment tables, with CARC, RARC and claim-status codes kept for denial and payment analytics.
X12 837 and 835 to FHIRLog-based CDC with Debezium, AWS DMS or native connectors from EHR, practice-management and billing databases, with ordered inserts, updates and deletes and a replayable offset.
CDC for healthcare data warehousesLocal code mapping to LOINC, SNOMED CT, RxNorm and ICD-10-CM, and patient matching rules with review queues for uncertain matches.
Terminology mapping in productionCheckpoints, idempotent writes, dead-letter queues, freshness and volume alerts, and OpenTelemetry traces across interface engine, pipeline and warehouse.
Instrumenting HL7 and FHIR pipelinesStart with your situation
The starting point
Someone has to download, combine and upload files before the next team can work.
Document the manual rules, agree a source contract and automate the path with validation and an explicit exception queue.
Illustrative project scenario, not a client case study.
Decisions we work through
The agreed input is processed without manual intervention, while malformed examples follow a visible exception path.
Engineering scope
Agree the deliverables before implementation. Each workstream has a visible output, not just an activity list.
Define schemas, identifiers, update semantics, delivery windows and permitted data use with each source owner.
Choose batch, incremental or event-driven processing for the real freshness requirement, not a default real-time promise.
Test completeness, duplicates, terminology, units and accepted exceptions. Route rejected records to an owned resolution process.
Implement safe retries, checkpoints, replay and alerting. Agree who responds when freshness or quality expectations are missed.
Compare your options
Choose the pattern from the freshness your consumer needs, not from a default real-time promise.
| Pattern | Typical freshness | Good for | Engineering watch-points |
|---|---|---|---|
| Scheduled file batch (SFTP, CSV, CCD) | Daily or hourly | Payer files, vendor extracts, legacy systems | Late or partial files, re-sent files, schema drift |
| FHIR Bulk Data $export | Daily or weekly, incremental with _since | Population analytics, quality measures, payer data exchange | Export job limits, deleted resources, version handling |
| Log-based CDC | Seconds to minutes | EHR and billing databases you are permitted to read | Schema changes, ordering, initial snapshot, source load |
| Event streaming (HL7 v2 or FHIR Subscriptions to Kafka) | Seconds | ADT alerts, lab results, care coordination | Duplicates, out-of-order events, consumer back-pressure |
Tooling follows the pattern and your stack: Mirth Connect, Kafka, Airflow, dbt, Spark, Databricks, Snowflake or your cloud services.
Related delivery
Read how Nirmitee diagnosed and hardened an existing clearinghouse X12 pipeline inside a live behavioral-health EHR, using reviewed fixes and automated tests.
Delivery context: an operational claims integration. Its source and workflow constraints shape how we design data pipelines.
Read the implementation case study →
The decisions underneath the delivery
Document duplicate delivery, out-of-order records, retry behavior and the stable keys available from the source.
Decide which changes are compatible, which should stop a pipeline and how the source owner is notified.
Review units, codes, timestamps and corrected results. Preserve source meaning when the target cannot represent every field.
Identify what can be replayed safely, how consumers recognize corrections and how the team verifies the repaired output.
Integration boundaries
Explicit ownership keeps failures from falling between teams.
Grant access, publish schema changes in advance and own corrections at the source.
If Mirth Connect or another engine feeds the pipeline, channel changes are coordinated with its owner or our Mirth team.
We own ingestion code, validation, reconciliation, replay and the runbook for the agreed scope.
Consuming teams define freshness and completeness expectations and accept the published dataset.
Sending data back into an EHR is integration work, scoped with our interoperability team.
Explore the implementation decisions
Work through data preparation, quality and downstream use.
Explore event delivery and freshness requirements before committing to a streaming design.
Examine source notifications and the behavior a downstream consumer must handle.
Start with context
Useful inputs for a focused first conversation. Please share project context, not patient records or credentials.
Your team takes forward
Choose the right foundation
They solve different problems. We scope the analytics and transformation layer separately from the endpoint your applications use to exchange FHIR resources.
FHIR data platform and FHIR server development →Healthcare Interoperability Services →Case study: a data foundation for governed AI →Primary documentation for the standards and platform features named on this page.
FHIR Bulk Data Access IG ($export and NDJSON) ↗X12: healthcare transaction standards ↗HL7 US Core Implementation Guide ↗Debezium change data capture ↗OpenLineage specification ↗HL7 FHIR R4 Provenance resource ↗45 CFR 164.514: HIPAA de-identification standard ↗From data to an AI workflow
A retrieval or extraction workflow inherits the behavior of its data pipeline. Make stale inputs, source changes and failed refreshes visible before building on the output.
Healthcare AI development and integration →Healthcare AI agent development →Delivery phases and timeline
Typical durations for a diagnostic, a repair or a new source.
1 to 2 weeks. Reproduce the failure, map source behavior and agree acceptance checks.
1 to 2 weeks. Schema, keys, update semantics, delivery windows and quality rules per source.
3 to 6 weeks per source. Implement, then test duplicates, late, corrected, rejected and replayed records.
1 to 2 weeks. Freshness and volume alerts, dead-letter ownership and runbook walkthrough.
Cost drivers
Pipeline effort follows source behavior more than data volume.
Each HL7 feed, FHIR endpoint, X12 trading partner or database adds its own contract and tests.
Streaming and CDC need ordering, idempotency and back-pressure handling that batch does not.
Corrections, cancellations, merges and deletes require versioned keys and restatement logic.
Missing identifiers, local codes and free text add mapping and review work.
Repairing undocumented jobs starts with reverse engineering the current behavior.
On-call coverage, alert routing and SLAs add operational setup.
Before we begin
It is the automated path that receives data from a source such as an EHR, lab, clearinghouse or device platform, validates and transforms it, and publishes it for a consumer such as a warehouse, product feature or AI workflow. A production pipeline also reconciles to the source, quarantines bad records and recovers from failure.
Most modern healthcare warehouses use ELT: land the source as received, then transform in the warehouse so raw data stays available for audit and reprocessing. ETL still fits when data must be filtered or de-identified before it reaches the destination.
Yes. We receive HL7 v2 messages through Mirth Connect or another interface engine, parse segments such as PID, PV1, OBR and OBX into tables, de-duplicate on message control ID and preserve the raw message for audit.
We parse 835 files into payment, claim and service line tables, keep CAS adjustment groups with CARC and RARC codes, and reconcile totals to the BPR payment amount. The result supports denial analytics and payment posting checks.
Change data capture reads a database transaction log so inserts, updates and deletes flow downstream in order, without nightly full extracts. It fits when you are permitted to read an EHR or billing database and need fresher data than batch provides.
We key records on stable source identifiers and versions, apply corrections as updates rather than new rows, and allow late data within an agreed window. Consumers see a restatement flag when historical numbers change.
No. We build pipelines within your existing cloud and data stack, including Airflow, dbt, Kafka, cloud-native services and Postgres. The tool choice follows your requirements, maintainability and commercial constraints.
Yes. We start with failure evidence, source behavior and operational ownership, then deliver targeted remediation with measurable acceptance checks.
We track freshness, volume, rejected-record counts and reconciliation results per run, route alerts to a named owner and trace records across interface engine, pipeline and warehouse. Dead-letter queues keep failed records for review and replay.
No. Discovery and test design start with synthetic or de-identified examples. Later access to production data happens in approved environments under a BAA.
A diagnostic takes 1 to 2 weeks. A new source typically takes 3 to 6 weeks to build and exercise after a 1 to 2 week design, followed by 1 to 2 weeks of monitoring setup and handover.
Source count and variety, freshness, update semantics, source data quality, the state of any existing pipeline and monitoring expectations. We estimate after the diagnostic.
Talk to our team
Tell us what you are planning, what exists today and what needs to change. We’ll review the context and discuss scope, dependencies and the next useful step.
hello@nirmitee.io →Explore Related Services