Shadow mode: how to change a live interface without guessing

A live path that delivers and a dashed shadow path that only compares

By BioDream Developer, BioDream LLC

Every interface team knows the feeling. A transformation needs to change: a new field mapping, a code translation, a filter rule. The change looks right, and the tests pass. But the feed carries messages nobody has ever catalogued: the patient with two identifiers, the result with an empty units field, the A08 that arrives before its A01. The case that breaks is always the one nobody thought of.

Shadow mode answers the question tests cannot: what will this change do to the traffic that actually arrives?

The idea

Run the new version of a channel beside the live one, on real traffic, with nothing delivered. Compare the two outputs for every message. Read exactly where they differ, field by field, before the new version ever touches a receiving system.

Tests prove the cases somebody thought of. Shadow mode proves the cases that actually arrive.

How Perfuse does it

A message reaching the live channel, which delivers, and a candidate channel with no destinations, compared field by field

Perfuse is a free, Apache-2.0 healthcare integration engine with shadow mode built into every channel.

# in the live channel
shadow:
  channel: ./adt-candidate.yaml
  ignore: [MSH-7, MSH-10]       # things that differ on every message
  sample: 1
  max_differences: 100

It is safe to point at production, by design

It reports what matters

The rest of the safety net

Shadow mode is part of a complete integration engine: HL7 v2, FHIR, X12, DICOM and CDA over twenty connector types, with a durable queue, monitoring and alerts, in one file with nothing else to install.

Get started

  1. Download Perfuse from the latest release.
  2. Copy a live channel to candidate.yaml, make your change, and add a shadow: block to the live channel.
  3. Watch the Shadow tab. Read the manual for every option.

Related: Feed contracts · How to migrate Mirth Connect channels.

Perfuse on GitHub

Perfuse is free and open source under Apache 2.0. The source, every release, the issue tracker and the full documentation are on GitHub: github.com/biodream-llc/perfuse.