Lab Instrument Integration: Why It Breaks in Year Two

Most integrations work on the day they are signed off. A year later a renamed field, a retired account or a change nobody was told about breaks them quietly. What to agree before the first connection.

Lab technician in safety goggles and blue gloves holds a metal housing while assembling it beside an open laboratory instrument with cables and a touchscreen.

In brief

Lab instrument integrations break in year two because the things they depend on are treated as labels rather than interfaces. A field is renamed, the account the integration runs under is retired, or the other system changes and nobody is told. Integrations survive when the lab fixes which names, accounts and checks are frozen, and monitors them.

Key takeaways

  • Field names are an interface, not a label. Renaming one is a change request that includes the integration, not housekeeping.
  • An integration runs as somebody. When that person leaves or loses a permission, the integration leaves with them.
  • Give every integration its own credential, so one can be retired or revoked without touching the rest of the fleet.
  • An empty result is not always an error. It can mean the integration is looking at the data through eyes that cannot see it.
  • Most lab systems do not announce changes, so an integration must check on a schedule and someone must watch the count.

Ask a lab manager which instrument integrations they run and most can list them. Ask which of those still works today and the answer gets slower. An integration is signed off on the day the first file lands where it should, and from that day it is nobody’s job. It keeps running until something it depends on moves, and then it stops, usually without an error.

This article is about that second year. It is not about how to connect a chromatograph to a LIMS, which is a project with a vendor and an end date. It is about the small set of dependencies every integration carries, why they are the things that change, and what a lab should agree with its integrator before the first connection is made. None of it needs a developer to understand. All of it needs someone in the lab to own.

Why does an integration that passed acceptance fail a year later?#

Because acceptance testing proves the integration works against the lab as it is on that day, not as it will be. In the year that follows, the lab does what labs do: it renames a field to match a new SOP, archives the account of a technician who left, upgrades the instrument software, and the vendor on the other side changes an export format in a release nobody read the notes for.

Each of those is routine. None of them looks like a change to the integration, so none of them is raised as one. The integration finds out first, and it finds out silently. A file is written to a folder nothing reads any more. A value lands in a field with a slightly different name and sits there, unnoticed, until an audit or a customer asks a question.

The pattern is the same whoever built the integration. Its dependencies are the lab’s own names, accounts and formats, and the lab treats those as housekeeping. The fix is not better code. It is deciding, in writing, what the integration may depend on, and treating any change to it as a change request.

How a working integration becomes a broken one

  1. Month 0
    Acceptance. Files flow, values land, the project closes. Ownership passes to nobody in particular.
  2. Month 4
    A field is renamed to match a revised method. The integration keeps writing to the old name, which no longer exists.
  3. Month 9
    The technician whose account the integration uses leaves. Their account is disabled as part of offboarding.
  4. Month 14
    An auditor asks for six months of results from one instrument. Half of them are missing, and nobody knows since when.

Whose identity does the integration run under?#

Every integration acts as somebody. When it reads a record or writes a result, the receiving system attributes that action to an account, and the audit trail records that account’s name. In most labs the account is whoever set the integration up, because that was the login to hand on the day. That person’s credentials are now embedded in a script, and the script will do everything they are allowed to do, for as long as they are allowed to do it.

The failure follows on its own. The person changes role and loses a permission the integration relied on. They leave, and offboarding disables the account, which is exactly what offboarding should do. Or the credential is rotated for a good security reason and nobody remembers the integration holds a copy. In every case the integration stops, and the audit trail up to that point says a named person did work they never saw.

There is a second, quieter consequence. An integration sees what its account sees, and no more. If the account is not a member of the group that owns a set of records, a request for them returns an empty list rather than an error. Nothing is wrong, from the system’s point of view. It is looking through the eyes of someone who cannot see that data, and hours of debugging get aimed at the code.

The rule that prevents both is simple. Give every integration its own credential, issued for it alone, with the narrowest access it needs. Revoking that one credential stops that one thing. The account’s membership becomes a documented part of the integration, and offboarding a person never touches it.

What happens when someone renames a field?#

An integration finds a field by its name. That is true of nearly every laboratory system, because the name is the one thing a person and a program both understand. So when a quality manager renames Incubation temp to Incubation temperature (°C) to match a revised method, the integration goes looking for a field that no longer exists. It either fails loudly, skips the value, or creates a new field with the old name beside the new one. The third is the worst, because everything looks complete.

Renaming a field is a change request, not housekeeping, and the lab and the integrator should agree that field names are an interface rather than a label. In practice that means a short list of fields the integration depends on, kept where the people who edit templates will see it, and a rule that those names change only when the integration changes with them.

The same discipline applies to values. A reworded dropdown option, a unit that moves from the value into the field name, a date format that changes with a regional setting: each is invisible to the person making the change and fatal to the program reading it. The agreed list should say what shape the values take, not only which fields are fixed.

How should a lab find out that something changed, when nothing announces it?#

Most laboratory systems do not push events. There is no message when a result is added, a record is edited or a field is renamed. If an integration needs to know that something happened, it has to go and look. This is true of far more systems than vendors like to admit, and it is the reason so many integrations are designed around an assumption that turns out to be false.

Looking well is a discipline of its own. The integration should ask for records changed since the last time it looked, keep a marker for where it got to, and move the marker only when the work is done. It should ask at the rate the lab actually needs, which is usually minutes rather than seconds, because nothing in a laboratory changes in milliseconds. And when the far side does not answer, it should wait longer before asking again rather than retrying in a tight loop, because an integration hammering an unwell server is what turns a blip into an outage.

The lab’s side of this is monitoring. An integration that has not written anything for a day is either idle or broken, and the lab should know which. The cheapest check is a count: how many results did each integration file this week, against how many the instrument produced. When those numbers drift apart, something changed. Every integration should log what it sent and what came back, without the credential, so that when a record is wrong six months later the question of what was sent can be answered.

What should the lab agree with the integrator before connecting anything?#

The agreements below are short, and every one of them is easier to make before the first connection than after the first failure. They are the difference between an integration that is somebody’s responsibility and one that is discovered to be broken by an auditor.

  • Every integration has its own credential, issued for it alone, with the narrowest access it needs and its group membership written down
  • The fields, options and formats the integration depends on are listed, and the list lives where template editors will see it
  • Renaming a listed field is a change request that includes the integration, never a housekeeping edit
  • Updates read the whole record and change one value; they never rebuild a record from the values the integration happens to hold
  • The integration checks for changes on a schedule the lab chose, keeps a marker, and backs off when the far side fails
  • Someone in the lab, by name, sees a weekly count of what each integration filed against what the instrument produced
  • Requests and responses are logged without the credential, and kept as long as the records they produced
  • Instrument and system upgrades name the integrations they might affect, and those are tested before the upgrade is signed off

None of this is specific to one product. It is what a regulator asks for under the heading of controlling an electronic system: knowing what it depends on, and knowing when that changes. An integration that meets the list above is one a lab can defend. One that does not is a year away from an unexplained gap in its records.

What an instrument integration carries in this work#

LabLynx builds instrument integration as a service and as a product line, and has done for long enough to have seen every failure above in a customer’s lab. The connection is the easy half. The hard half is the year after, and the checklist above is the shape of what our integration engineers agree with a lab before they start.

Frequently Asked Questions #

What is lab instrument integration?

Lab instrument integration is the connection that moves data between an analytical instrument and the system that records results, so a reading is filed against the right sample without anyone retyping it. It ranges from a watched folder to a direct exchange with the instrument software. The connection is the easy part. Keeping it working as the lab changes is the discipline.

Do lab systems send notifications when data changes?

Most do not. The majority of laboratory systems, including many that describe themselves as modern, have no mechanism to push an event when a record is added or edited. An integration that needs to know about a change has to check for it on a schedule. Designing for that from the start is far cheaper than discovering it after the architecture has been drawn.

Who should own the account an integration runs under?

The integration itself should own it. Issue a dedicated credential for each integration, with the narrowest access it needs, and record which groups that account belongs to as part of the integration's documentation. Never run an integration under a person's own login, because when that person leaves or changes role, the integration stops with them and the audit trail attributes its work to them.

How often should an integration check for new results?

At the rate the laboratory actually needs, which is almost always minutes rather than seconds. A result that reaches the record five minutes after the instrument produced it is fine for nearly every workflow. Checking faster adds load without adding value, and an integration that retries hard when the far side is slow can turn a brief problem into an outage for everyone.

Can an integration break without producing an error?

Yes, and this is the commonest way it happens. A renamed field means values are skipped or filed under a new name beside the old one. A retired account means requests return empty lists rather than refusals. A changed export format means files that nothing reads. Only a count of what was filed against what was produced reveals the gap.

Sources and references

  1. 21 CFR 211.68 Automatic, mechanical, and electronic equipment Electronic Code of Federal Regulations
  2. ISO/IEC 17025:2017 General requirements for the competence of testing and calibration laboratories, clause 7.11 International Organization for Standardization

About the author

Brandon Holland

Marketing & Operations Digital Solutions Architect

Brandon Holland is LabLynx's Marketing & Operations Digital Solutions Architect. He builds and runs the digital systems behind the company's public surface, from the website and content architecture to the tooling that keeps product information accurate everywhere it appears. He writes about laboratory informatics from the systems side: how lab records get structured, searched, and kept defensible as a lab scales.

Writes about laboratory information management systems · laboratory informatics · laboratory data management · LIMS selection and implementation · regulatory compliance for laboratories · structured data and web systems

See this in your own lab

A walkthrough of LabLynx against your workflow and the questions this article raised, rather than a scripted demo.

Book a Walkthrough