Phased Plan

Before modernizing an existing HL7 interface, first establish exactly how you will duplicate its input, isolate a new implementation, and prove that the outputs are equivalent.

Even patching an interface that has been running unchanged for years can carry significant risk. The interface may be poorly documented, its original developers may no longer be available, and seemingly minor changes can have unexpected consequences.

The purpose of this phased approach is to remove as much of that risk as possible before changing the production interface.

The goal is not to begin by rewriting interfaces or introducing new technology. The first goal is to create a safe, repeatable way to make and test changes while leaving the existing implementation untouched.

Once that capability exists, patches, security updates, and eventually replacement technologies can all be tested using the same process.

A practical starting plan is:

Phase 1 — Understand and get a global picture of the inputs

For each interface, determine:

See Input.

Phase 2 — Determine the true outputs

Before comparing implementations, identify what the current interface actually does.

Ask:

Do not assume the answer is known.

Use institutional knowledge, static analysis, and ultimately runtime tracing to build confidence.

See Output and Detection.

Phase 3 — Design the splice

Determine how the same input can be delivered to both implementations.

The splice should be:

The existing production implementation must continue to operate normally.

The parallel implementation should receive the same input without being able to interfere with production.

Phase 4 — Isolate the parallel implementation

Confirm that the new or patched implementation can run completely independently.

It should have:

Ideally, package the implementation as a single self-contained binary where practical.

Phase 5 — Decide how outputs will be captured

For every output discovered in Step 2, answer:

This needs to be solved before meaningful comparison can begin.

Phase 6 — Define equivalence

Decide what it means for the old and new implementations to behave the same way.

For example:

Without a definition of equivalence, comparison produces data but not confidence.

Phase 7 — Run in parallel

Once the above is understood:

capture → duplicate → run independently → observe → compare

The existing implementation remains authoritative.

The new implementation runs in parallel and produces only observable test results until its behaviour has been demonstrated to be equivalent.

Phase 8 — Promote only when there is business justication

Only after the organization can reliably answer the questions above should a patched or replacement implementation become authoritative.

There is as much risk and danger putting a patched implementation into production as a complete new implemenation. Also it adviseable to nail down Phases 1 to 7 before introducing more risk into the plan.

The important shift is that modernization is no longer:

replace it and hope

It becomes:

measure → isolate → compare → prove → promote