Skip to main content

Laboratory Information System with Westgard QC for an ISO 15189 Lab

Clinical lab network (Aratech partner)
Healthcare — clinical laboratory
Vietnam, expanding to SE Asia
Laboratory Information System with Westgard QC for an ISO 15189 Lab
Duration
7 months (Phase 1–5)
Team Size
5 people
Services
1 services

Client Context

A clinical laboratory network operating four labs (two in Ho Chi Minh City, one in Hanoi, one in Da Nang) covering biochemistry, immunology and hematology. They were preparing for ISO 15189 re-accreditation and needed to retire a 9-year-old LIS that no longer met audit-trail requirements and could not integrate with newer analyzers. Vireon Labs delivered this work in partnership with Aratech Vietnam, who own the clinical and regulatory expertise.

The Challenge

Business Challenge

Internal Quality Control was largely paper-based: QC officers manually plotted Levey-Jennings charts and applied Westgard rules at end of shift. Out-of-control runs were often detected only after patient results had been released, forcing re-runs, re-billing and clinician callbacks. ISO 15189 surveillance audits flagged the audit-trail gaps as a major non-conformity.

Technical Challenge

Heterogeneous analyzer fleet (Roche Cobas, Sysmex XN, Abbott Architect, Mindray BS-2000) with mixed HL7 v2 ORU/ORM dialects; some older analyzers communicated only via RS-232 serial bridges. Existing LIS could not enforce role-based access cleanly, and audit trail granularity did not meet ISO 15189 §5.10 requirements.

Signals Before We Started

  • Westgard rules applied manually at end of shift — average 4–6h delay to detect out-of-control runs

  • ~8% of QC-failed patient results were released before the failure was detected, requiring callbacks

  • ISO 15189 surveillance audit flagged audit-trail granularity as a major non-conformity

  • New analyzer onboarding took 6–10 weeks because of HL7 dialect quirks

  • Pathologists waited on average 12 minutes for a previous-day QC summary

Our Solution

Overview

A modular LIS with a Westgard rules engine that evaluates QC in real time as each control sample is reported by the analyzer. Patient results are held automatically when QC fails, with explicit pathologist override and full audit trail. HL7 v2 + a serial bridge for legacy analyzers cover the entire installed fleet, and a hybrid on-prem + Azure deployment respects data-residency constraints.

Architecture

.NET 8 modular monolith for the LIS core (deployed on-prem at each lab), Angular 17 web app served from the lab's intranet, SQL Server 2022 as the system of record, a dedicated HL7 v2 interface engine (Mirth-style) with RS-232 bridges for legacy analyzers. A read-only replication path to Azure SQL in the Singapore region powers central pathologist dashboards. Identity via Azure AD with on-prem fallback through ADFS. All clinical PHI stays inside the lab's local network unless a pathologist explicitly accesses the central dashboard.

Approach

  • 1

    Discovery with QC officers + accrediting pathologist before any code

  • 2

    Westgard rules engine built and validated against 18 months of historical QC data

  • 3

    Analyzer-by-analyzer HL7 integration with the lab tech team in the room

  • 4

    Hold-and-release workflow with explicit pathologist override + audit

  • 5

    Hybrid deployment: on-prem clinical core + Azure read replica for cross-lab views

  • 6

    Parallel run with the legacy LIS for one full QC cycle per lab

Platform Modules

The system was delivered as the following modules — each with its own owner, integration contract and rollout plan.

LIS Core

Patient, sample, test, result and QC aggregates; the system of record for the lab. All clinical data lives on-prem.

Westgard Engine

Real-time rule evaluator (1₂s, 1₃s, 2₂s, R₄s, 4₁s, 10x and lab-defined variants); evaluates every control sample within 1s.

Hold & Release

Automatic hold on patient results when QC fails; explicit pathologist override with mandatory free-text justification, fully audited.

Interface engine

HL7 v2 ORU/ORM message routing; per-analyzer dialect adapters; RS-232 bridge for legacy hardware; replayable message archive.

Pathologist dashboard

Cross-lab Levey-Jennings, exception queue, and signed clinical sign-off; available on the central Azure replica.

Audit & evidence

Field-level, cryptographically chained audit trail; one-click export of evidence packs for ISO 15189 auditors.

Data Flow

An analyzer sends a result message (HL7 ORU^R01) to the on-prem interface engine. The engine validates the message, persists the raw payload for replayability, and forwards a normalized result into the LIS Core. The LIS Core writes the result and emits a domain event. If the result is a QC sample, the Westgard Engine evaluates the active rule set within 1s and emits either `qc.passed` or `qc.failed`. On `qc.failed`, the Hold & Release module automatically suspends release of patient results from that analyzer / test until a pathologist reviews. Every state transition is appended to the cryptographically chained audit log. Once a day, an anonymized read-only projection replicates to Azure SQL in Singapore for the cross-lab pathologist dashboard.

Integrations

  • Roche Cobas, Abbott Architect, Sysmex XN, Mindray BS-2000 (HL7 v2)

  • Two legacy analyzers via RS-232 bridge

  • Hospital Information System (HIS) via HL7 v2 ORM/ORU

  • Billing module (CSV + secure SMB)

  • Azure AD + ADFS for hybrid identity

Delivery Timeline

Phased delivery — each phase had explicit goals, measurable outcomes and a checkpoint before progression.

  1. Phase 1 — Discovery & Westgard rules baseline

    Week 1–4
    Goals
    • ·Inventory analyzers, current HL7 dialects and audit-trail gaps
    • ·Catalog the Westgard rules in use per test family (1₂s, 1₃s, 2₂s, R₄s, 4₁s, 10x)
    • ·Validate against 18 months of historical QC data
    Outcomes
    • Rules engine reproduced 99.6% of historical QC pass/fail decisions
    • Remaining 0.4% turned out to be data-entry errors in the legacy LIS
    • Pathologist sign-off on the rule set obtained
  2. Phase 2 — LIS core + audit trail

    Week 4–12
    Goals
    • ·Patient, Sample, Test, Result, QC, User, Audit domain in code
    • ·Full ISO 15189 §5.10-compliant audit trail (who, when, what, before/after)
    • ·Hold-and-release workflow for QC-failed results
    Outcomes
    • Audit log captured at the field level, with cryptographic chaining (HMAC-SHA256)
    • First internal audit on the new LIS passed without findings on traceability
  3. Phase 3 — Analyzer integration

    Week 10–22
    Goals
    • ·HL7 v2 integration for Cobas, Architect, Sysmex, Mindray
    • ·RS-232 bridge for the two oldest analyzers
    • ·Bi-directional ORM/ORU flow
    Outcomes
    • Full fleet connected in lab 1 by week 18, lab 2 by week 22
    • Onboarding a new analyzer dropped from 6–10 weeks to ~4 days
  4. Phase 4 — Westgard real-time engine

    Week 16–24
    Goals
    • ·Evaluate every incoming QC sample against the active rule set in <1s
    • ·Auto-hold patient results when QC fails, with audit
    • ·Live Levey-Jennings dashboard per analyzer
    Outcomes
    • Detection lag for out-of-control runs dropped from 4–6h to <60s
    • Patient-result release-before-failure-detected dropped from 8% to 0.3% (residual cases all attributable to manual overrides with documented justification)
  5. Phase 5 — Parallel run & ISO re-accreditation

    Week 22–32
    Goals
    • ·Run new + legacy LIS in parallel for one full QC cycle per lab
    • ·Train all QC officers, lab techs and pathologists
    • ·Support ISO 15189 surveillance audit
    Outcomes
    • All 4 labs cut over by week 30
    • ISO 15189 surveillance audit completed with the previous audit-trail non-conformity closed
    • Average pathologist wait for QC summary dropped from 12 min to <5s

Technology Stack

.NET 8
Angular 17
SQL Server 2022
HL7 v2 interface engine
Azure (SQL, AD)
ADFS

The Results

Measurable impact delivered within 7 months (Phase 1–5).

QC-fail detection lag
Real-time evaluation on every control sample
Patient results released before QC failure detected
Residual cases are documented manual overrides only
Analyzer onboarding
Reusable dialect adapters + interface engine
ISO 15189
Audit-trail gap from the previous surveillance audit resolved

Security & Compliance

  • ISO 15189 §5.10 audit-trail compliance — field-level, cryptographically chained
  • All PHI stays on-prem; only anonymized read replica leaves the lab network
  • Role-based access aligned to lab roles (tech, QC officer, pathologist, biomedical engineer, admin)
  • Pathologist override on QC-fail requires mandatory justification, captured in audit
  • Encrypted backups; full restore drills every quarter
  • Penetration test against the public-facing pathologist dashboard annually

Delivery & Operations

  • GitHub Actions CI with the historical-QC reproducibility test as a release gate
  • On-prem deployments via versioned MSI packages with rollback scripts
  • Per-lab staging environment refreshed from anonymized production data
  • Vireon + Aratech joint on-call: clinical questions → Aratech, platform questions → Vireon
  • Quarterly Westgard rule-set review with the accrediting pathologist
What we'd do again

Key Learnings

  • Reproducing 18 months of historical QC decisions was the single artifact that earned pathologist trust. Without it, no clinician would have accepted automated hold-and-release.

  • Audit trails must be field-level, not row-level. ISO 15189 auditors want to see exactly which field changed, by whom, with the before / after value — anything less is a finding.

  • Hybrid is the realistic deployment model for regulated clinical software in this region. Pathologists need cross-lab views; regulators require PHI to stay on-prem. A read-only anonymized replica resolved that tension cleanly.

  • Partnering with a domain specialist (Aratech) for the clinical / regulatory side was decisive — engineering velocity is necessary but not sufficient when the buyer is a pathologist and the auditor is the regulator.

Let's Discuss Your Project

Schedule a free consultation to explore how we can help you achieve your goals.