Back to blogHealthcare Data Security & Compliance

Dirty data in healthcare: why it spreads through your integrations and how to stop it

Why integration multiplies dirty data instead of filtering it, the three shapes it takes, and where validation and terminology actually stop it.

Medi Harsini25/08/2026 · ~7 min read
Summarize this article with:
The preview of Dirty data in healthcare: why it spreads through your integrations and how to stop it post

Written for the product-minded reader building on NHS or wider healthcare data (Head of Product persona) who feels the pain of dirty data operationally but may not yet connect it to integration design specifically. UK+US market: the mechanism is universal even though the NHS texture (SNOMED, Trust-local codes) is used for concreteness. Deliberately restrained on WeHub's claims; the piece earns trust by admitting what a validation layer can't promise as much as what it can.

One field, in one system, gets populated wrong. A date entered in the wrong format. A code selected from the wrong list because the dropdown wasn't scoped correctly. A free-text entry where a coded value belonged. On its own, that's a single bad record, forgettable.

Except it rarely stays a single bad record. It flows into a feed, the feed flows into three downstream systems, each of those systems derives its own reports and dashboards from it, and eighteen months later a data quality audit finds the same error sitting in eleven places, each one now treated as an independent source of truth. That's how dirty data actually behaves in a healthcare organisation: it doesn't stay contained, it propagates.

In brief

Dirty data spreads because integration, by design, copies and reshapes data across systems; every downstream consumer of a bad record inherits the error and often adds its own transformation on top of it, compounding rather than correcting the problem. It shows up in three recognisable shapes: structural (malformed or missing fields), semantic (values that don't mean what the receiving system assumes), and referential (records that no longer agree on who or what they describe). The only place to stop it economically is at the boundary, through validation before data enters the pipeline and terminology binding for anything coded, because catching it downstream means fixing it in every system it's already reached.

The record that became ten thousand records

Here's the mechanism, stripped to its essentials. A source system emits a record with a subtly wrong field: a date in the wrong format, a code from an unscoped list, a name entered with an encoding error. That record travels through an integration feed into a downstream system, which stores it, and possibly transforms it again on the way into its own reports. A dashboard is built on top of that downstream system. A second system consumes the same original feed and makes its own, slightly different, assumption about the bad field. Now the same underlying error exists in two systems, interpreted two different ways, feeding two different reports that quietly disagree with each other.

Repeat that across a live NHS estate with dozens of feeds and years of history, and the felt experience is exactly what most digital and product teams describe: a pervasive, low-grade distrust of data that nobody can quite pin down to a single cause, because by the time it's noticed, the cause has multiplied.

Why integration is a multiplier, not a filter

The uncomfortable truth is that most integration layers are built to move data faithfully, not to judge it. A pipeline that reshapes and routes a record is, by default, agnostic to whether the record was any good in the first place; its job is fidelity, not quality control. Unless a validation step is deliberately inserted, the integration layer will carry a bad record exactly as far and as fast as it carries a good one, and typically faster, since bad records rarely trigger the kind of manual review a human might otherwise apply.

This is the honest reframe: dirty data isn't primarily a data entry problem, though poor entry is where most of it originates. It's an integration design problem, because integration is the mechanism that decides whether a single bad record stays local or becomes systemic.

The three shapes dirty data takes

Structural dirt is the most visible: a missing mandatory field, a malformed date, a value in the wrong format for its type. It's the easiest to catch, because it's checkable mechanically, and the fact that it still slips through most integrations says more about missing validation than about the difficulty of detecting it.

Semantic dirt is quieter and more dangerous: a field that's structurally perfect but means the wrong thing, because it was coded against an ungoverned list, drawn from the wrong value set, or left as free text where a governed code belonged. This is the shape that turns into a clinical safety issue rather than a reporting inconvenience, because a structurally valid but semantically wrong diagnosis code looks exactly as trustworthy as a correct one until someone checks.

Referential dirt is the subtlest: records that no longer agree about which patient, encounter or provider they describe, usually the aftermath of an imperfect merge, a duplicate registration, or an identifier that drifted between systems. It's the hardest to catch mechanically, because each individual record can look perfectly clean; the problem only appears when two records are compared and found to disagree about a shared identity.

Where it actually needs stopping

The economics are stark and worth stating plainly. Catching a bad record at the boundary, before it enters the pipeline, costs one fix. Catching it after it's reached three downstream systems costs at least three fixes, plus the harder problem of reconciling whatever each system has already derived from it, plus the trust cost of everyone who saw the wrong number before it was corrected.

That's the case for validation as a gate rather than a downstream cleanup exercise: every record checked against a schema for structural correctness, and every coded field checked against a governed value set for semantic correctness, before anything downstream ever sees it. Referential issues need a second, complementary habit: reconciliation checks that compare records across systems periodically, looking specifically for the disagreements that only surface in comparison, since no single-record validation gate will catch them.

What "clean" realistically means

It's worth being honest about what a validation and terminology layer can and can't promise. It can catch structural and semantic problems at the point of entry, reliably and mechanically, which prevents a huge share of dirty data from ever propagating. It can bind coded fields to governed terminology, which is what WeHub Term and the validation built into WeHub Studio workflows are designed to do. What it can't do is guarantee that data entered upstream, in the source system itself, was clinically correct in the first place; a validation gate confirms a value is well-formed and drawn from the right list, not that a clinician chose the right diagnosis. Clean, in this sense, means the integration layer stopped adding to the problem and started catching what it reasonably can, not that every upstream data entry decision was perfect.

The bottom line

Dirty data spreads because integration is designed to move data faithfully, and faithfully includes faithfully wrong. The fix isn't a one-off cleanup project; it's a permanent habit of validating structure and binding meaning at the boundary, before a bad record gets the chance to become ten. Pick one high-traffic feed this month and ask two questions: does anything check its structure before downstream systems see it, and does anything check its codes against a governed value set? If either answer is no, that feed is quietly multiplying its own errors right now.

Keywords

healthcare data quality\dirty data healthcareclean healthcare datadata quality integrationstructural validationterminology bindingreferential integrity
ShareLinkedInX

Ready to fix this in your workflow stack?

Talk to the people who build the platform not a sales desk reading from a script.

Frequently asked questions

Because integration pipelines are built to move and reshape data faithfully, not to judge its quality by default. Without a deliberate validation step, a bad record travels through every downstream consumer of its feed exactly as reliably as a good one, and each consumer may add its own transformation on top of the original error.

Structural problems are mechanical: a missing field, a malformed date, a value in the wrong shape, and they're checkable with a schema. Semantic problems are quieter: a structurally valid value that means the wrong thing because it wasn't bound to the correct governed terminology, and they require terminology validation rather than structural checks to catch.

No, and it's worth being direct about that. A platform can validate structure and bind coded fields to governed terminology at the boundary, which prevents a large share of dirty data from propagating. It can't guarantee that data entered correctly at the source in the first place; that remains a clinical and operational data-entry discipline.

At the boundary, as data enters the integration pipeline, rather than after it's already reached multiple downstream systems. The cost of fixing a bad record multiplies with every system it reaches, so catching it once, early, is materially cheaper than catching it three or four times later.

Ready when you are

Turn healthcare workflow ideas into production-ready delivery.

Pick the products you need and an integration specialist will get you set up. No call centre, no hard sell just a straight conversation about your integration.

Talk to sales