Infinity LIS – Project Overview & Development Roadmap¶
Core Architect: Krishna Reddy Domain SME: Prabhakar Ashwin - CRMC Lab Director Operational Lead: Dawn Webber Product Owner: Sana Healthcare Systems Version: v1.0 Date: June 2025
1. Vision Statement¶
Infinity LIS (Laboratory Information System) is a next-generation, enterprise-grade, web-based LIS platform designed to unify all laboratory workflows—clinical chemistry, hematology, microbiology, blood bank, pathology, and molecular genetics—into a single, modular ecosystem.
The system replaces the existing LIS System environment used across CRMC network hospitals, addressing long-standing challenges such as fragmented modules, lack of interoperability, and limited scalability.
Infinity LIS aims to:
- Provide a single source of truth for all lab data across hospitals.
- Support real-time interoperability with EHR, HIS, and instruments.
- Deliver modular yet unified workflows for diverse specialties.
- Enable AI-readiness for analytics, quality control, and predictive diagnostics.
2. Core Objectives¶
- Unify all lab operations (Core Lab, Microbilogy, Blood Bank, Pathology equivalents) under one shared platform and data model.
- Enable seamless integration with all analyzers and instruments via HL7, ASTM E1381/E1394 and other middleware interfaces.
- Implement a rules-based automation engine for reflex testing, autoverification, and delta checks.
- Support advanced QC management with statistical algorithms (SMA, EWMA, BMA).
- Modernize the user interface through Angular web dashboards, with role-based configurable layouts.
- Ensure HIPAA-compliant data security, auditability, and traceability for all result edits and communications.
- Achieve complete interoperability with CRMC’s EMR, PACS, and billing ecosystems.
- Lay the groundwork for AI-assisted workflows, such as result prediction, QC anomaly detection, and clinician alerts.
3. Architecture Overview¶
3.1 System Design¶
| Layer | Technology | Description |
|---|---|---|
| Frontend | Angular 18 | Web-based, modular UI for lab users and admins. Supports dashboard, task lists, and dynamic forms. |
| Backend | Spring Boot 4.0.2 (Java 25) | Core business logic, REST APIs, Message Queue services, HL7 and ASTM Message Parsing, and Rule Engines for Test Routing, Reflex Testing, Auto Verification, Delta Checks, QC Management, and AI-ready workflows. |
| Database | MS SQL 2019 | Central unified data repository for all modules and master data. |
| Integration Engines | Mirth HL7, ASTM (custom Java Socket Server) | Handles inbound/outbound interfaces with EMR, HIS, and analyzers. |
| Message Queue | RabbitMQ | Handles message queuing for HL7 and ASTM messages. |
| CI/CD | GitLab -> Jenkins -> Nginx -> Tomcat 11 | Continuous integration/deployment pipelines, internal GitLab versioning. |
| Observability | Spring Boot OpenTelemetry + LGTM Stack | For monitoring, logs, metrics, and audit trails. |
3.2 Master Data Model -- Need to Modify¶
| Table | Description |
|---|---|
| Middleware | Defines integration platforms like RALS or Data Innovations. |
| TestCategory | Categorizes tests (Chemistry, Hematology, Immunology, etc.). |
| TestCatalog | Maintains LIS test codes, LOINC, CPT, specimen types, etc. |
| TestPanels / Components | Defines logical groupings (e.g., LFT, CBC) and component mappings. Recursive parsing for (G) panels. |
| LabInstruments | Stores analyzer info, IPs, ports, connection type, test mappings. |
| InstrumentTestMappings | Connects LIS tests to instrument test codes. |
| ExternalSystem / Mappings | Manages HIS/EMR test code interoperability. |
| TestRanges | Defines normal/critical ranges by age, gender, or specimen type. |
4. Major Development Phases¶
Phase 0: Foundational Architecture¶
Goal: Build the technical and governance foundation for LIS development.
Key Deliverables:
- Unified DB schema for all modules.
- Authentication, RBAC, tenant/location structure.
- Master Data Configuration
- API specifications for external system connectivity.
- HIPAA-compliant security and audit trail design.
Phase I: Pre-Analytical Workflow¶
Goal: Covers registration, order entry, collection, and logistics.
Key Deliverables:
- Patient Registration in LIS (with MRN, visit, payor linkage) and Merge with EMR.
- Order Entry (CPOE) and requisition capture.
- Test selection with ICD code mapping and diagnosis input.
- Specimen ID generation, draw list, and collection workflow.
- Label printing and collection tracking.
- Courier manifest and specimen transport tracking.
- Outreach portal for physician offices (SoftWebPlus-equivalent).
Phase II: Analytical Workflow¶
Goal: Handles analyzer interfacing, result capture, QC, and validation.
Key Deliverables:
- Bi-directional instrument integration (ASTM E1381/E1394).
- Autoverification rules (delta check, result thresholds, QC flagging).
- QC Management (L/J Charts, moving averages).
- Result entry and audit history view.
- Scattergram and image integration.
- Auto-alerts and push notifications for critical results.
Phase III: Post-Analytical Workflow¶
Goal: Focuses on review, reporting, and interoperability.
Key Deliverables:
- Results dashboard with filters (new, partial, completed).
- Electronic sign-off and multi-user review workflow.
- Consolidated patient history reports.
- Graphical trends and data visualization.
- HL7 outbound reporting to EMR/HIS.
- Public Health ELR (LOINC/SNOMED codes).
- PDF/Excel export and document management integration.
Phase IV: Specialized Modules¶
Goal: Custom workflows for high-complexity labs.
Key Deliverables:
| Module | Key Features |
|---|---|
| Microbiology (SoftMic) | Organism isolation, culture tracking, antibiogram, epidemiology reports. |
| Pathology (SoftPathDx) | Block/slide tracking, synoptic reporting (CAP eCC). |
| Blood Bank (SoftBank) | Crossmatching, inventory tracking, bedside barcode verification. |
| Donor Management (SoftDonor) | Donor registration, infectious screening, inventory distribution. |
| Genomics (SoftGenomics) | NGS pipeline integration, variant annotation, and reporting. |
| Outreach/RCM | Courier management, billing integration, client access portals. |
5. Development Roadmap (Tentative Timeline)¶
| Phase | Timeline | Key Milestones |
|---|---|---|
| Phase 0 – System Design | July - Oct 2025 | DB schema, Role/Permission engine, Security setup |
| Phase I – Pre-Analytical | Nov - Dec 2025 | Patient Reg., Order Entry, Collection, Labeling |
| Phase II – Analytical | Jan - Mar 2026 | Instrument interfacing, QC, Auto-verification |
| Phase III – Post-Analytical | Apr - Jun 2026 | Reporting, Sign-off, HL7 Integration |
| Phase IV – Specialized Modules | Jul - Oct 2026 | Micro, Pathology, Blood Bank, Genomics |
| Phase V – Optimization & AI Add-ons | Nov - Dec 2026 | AI-based QC insights, predictive alerting, analytics dashboard |
6. Technical Innovations & Differentiators¶
- Dynamic Rules Engine: Customizable test routing, reflex logic, and verification triggers.
- Unified Patient Record: Single longitudinal record across all lab departments.
- Instrument Simulators: Built-in simulators for ASTM message testing and interface validation.
- QC Intelligence: Statistical evaluation, multi-level control visualization, automated flagging.
- RAG-ready Design: Future plan to integrate AI models for clinical insight extraction.
- Cross-System Federation: Designed to plug into CRMC HL7 Hub, EHR, and Data Lake.
7. Risk and Mitigation Plan¶
| Risk | Description | Mitigation |
|---|---|---|
| Incomplete LIS functional parity | Some features in legacy modules (SoftMIC, SoftBank) may be overlooked. | Conduct workflow demos with current users before design finalization. |
| Instrument message mismatches | ASTM message parsing errors during early testing. | Maintain simulator logs and validation matrix per instrument. |
| Master data inconsistency | Differences between SME datasets and live data. | Implement data reconciliation and audit dashboards. |
| Interoperability issues | HL7 mapping variations per site. | Build flexible mapping tables and interface adapters. |
8. Governance & Collaboration¶
Stakeholders:
- Krishna Reddy (Architect, Development Lead)
- Ashwin (Lab Director, Domain SME)
- Dawn (Operational Workflow Owner)
- CRMC Management Team (Steering Committee)
Documentation Cadence:
- Weekly sprint updates
- Monthly milestone review
- Interface test reports and validation logs
- Master data audit logs
9. Future Roadmap (2027–2028)¶
- AI-Powered Lab Advisor: Predictive alerts for abnormal QC, outlier detection, and result correction suggestions.
- Voice Command Integration: Lab staff can query results or print reports hands-free.
- Clinara Link: Integration with CRMC’s AI documentation assistant for lab note summarization.
- Analytics Portal: Real-time dashboards for lab performance, TAT, and test volume trends.
10. Appendix¶
References:
- SoftLab / SoftWebPlus functional analysis
- ASTM E1381/E1394 message specifications
- HL7 v2.5 result reporting guides
- LOINC and SNOMED CT vocabularies
- LIS_Features_checklist.md (v1.0)
Workflows¶
LIS Workflow¶
flowchart TB
subgraph Pre-Analytical
A[Order HIS/LIS] --> B[Specimen Collection at Location]
B --> C[Accessioning @ Dept + WS]
C --> D[Label/Tube Routing]
end
subgraph Analytical
D --> E{Routing Engine}
E -->|Instrument-backed WS| F[Workstation Queue]
F --> G[Middleware ASTM/TCP]
G --> H[Instrument]
H --> I[Results ASTM -> Middleware]
I --> J[Workstation Result Inbox]
J --> K[Delta/Autoverify Rules @ Dept]
end
subgraph Post-Analytical
K --> L[Tech/Path Review & Release @ WS]
L --> M[Report Formatting Letterhead/Template by Location/Tenant]
M --> N[Distribution HIS HL7 ORU, Portal, Fax, Email, HIE]
N --> O[Billing / Send-outs / QC / Analytics]
end
classDef site fill:#e8f3ff,stroke:#8ab6ff;
class B,A,D,M,N site;
Full Lifecycle¶
sequenceDiagram
participant HIS as HIS/EMR (per site)
participant Mirth as HL7 Middleware
participant LIS as Infinity LIS Core
participant WS as Workstation (Dept)
participant MW as HL7/ASTM Middleware
participant INST as Instrument
HIS->>Mirth: ORM^O01 (Order) [SiteCode]
Mirth->>LIS: ORM^O01 (site-routed)
LIS->>WS: Create Work Item(s)
WS->>MW: Order to Instrument (HL7/ASTM/TCP/API)
MW->>INST: HL7 ORU or ASTM O,R frames
INST-->>MW: Results (HL7 ORM / ASTM R frames)
MW-->>WS: Parsed Results + Flags
WS->>LIS: Verification / Release
LIS->>Mirth: ORU^R01 (Final)
Mirth->>HIS: ORU^R01 (site-routed)
Grok¶
graph TD
subgraph "Central LIS Single Instance"
LIS[Core LIS System<br>Epic Beaker / Cerner / Orchard]
DB[(Shared Database<br>Patient Index, Users, Audit)]
MW[Middleware<br>Instrument Manager / HL7 Engine]
ADMIN[Central Admin<br>IT, Updates, Monitoring]
end
subgraph "Hospital A Large Core Lab"
A_LOC[Location: HOSP-A]
A_DEPT1[Hematology Dept]
A_DEPT2[Chemistry Dept]
A_WS1[Workstation WS-01]
A_WS2[Workstation WS-02]
A_INST1[Sysmex XN-1000<br>Bidirectional ASTM]
A_INST2[Roche Cobas 8000<br>HL7 Results]
A_REF[Ref Lab: ARUP<br>HL7 Send/Receive]
end
subgraph "Hospital B Medium Lab"
B_LOC[Location: HOSP-B]
B_DEPT1[Hematology Dept]
B_DEPT2[Chemistry Dept]
B_WS1[Workstation WS-10]
B_WS2[Workstation WS-11]
B_INST1[Beckman DxH<br>ASTM]
B_INST2[Vitros 5600<br>HL7]
B_REF[Ref Lab: Quest<br>Portal + HL7]
end
subgraph "Clinic C Point-of-Care / Send-Out"
C_LOC[Location: CLINIC-C]
C_DEPT[Draw Station Only]
C_WS[Workstation WS-20<br>Phlebotomy & Send-Out]
C_REF[Ref Lab: Quest<br>Auto-Routing]
end
%% Data Flows
LIS -->|HL7 Orders| A_LOC
LIS -->|HL7 Orders| B_LOC
LIS -->|HL7 Orders| C_LOC
A_LOC --> A_DEPT1 & A_DEPT2
B_LOC --> B_DEPT1 & B_DEPT2
C_LOC --> C_DEPT
A_DEPT1 --> A_WS1 --> A_INST1
A_DEPT2 --> A_WS2 --> A_INST2
B_DEPT1 --> B_WS1 --> B_INST1
B_DEPT2 --> B_WS2 --> B_INST2
C_DEPT --> C_WS
%% Instrument to LIS
A_INST1 -->|Results| MW
A_INST2 -->|Results| MW
B_INST1 -->|Results| MW
B_INST2 -->|Results| MW
%% Ref Lab Integration
A_WS2 -->|Esoteric Orders| A_REF
B_WS2 -->|Esoteric Orders| B_REF
C_WS -->|All Non-POC| C_REF
A_REF -->|Results| MW
B_REF -->|Results| MW
C_REF -->|Results| MW
MW -->|Validated Results| LIS
LIS -->|Final Report| A_LOC & B_LOC & C_LOC
%% Central Oversight
ADMIN -->|Config, Rules, QC| LIS
ADMIN -->|Dashboards, TAT| DB
%% Styling
classDef location fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#000;
classDef dept fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1px;
classDef ws fill:#fff3e0,stroke:#f57c00,stroke-width:1px;
classDef inst fill:#e8f5e9,stroke:#388e3c,stroke-width:2px;
classDef ref fill:#ffebee,stroke:#c62817,stroke-width:2px;
classDef central fill:#f5f5f5,stroke:#424242,stroke-width:3px;
class A_LOC,B_LOC,C_LOC location
class A_DEPT1,A_DEPT2,B_DEPT1,B_DEPT2,C_DEPT dept
class A_WS1,A_WS2,B_WS1,B_WS2,C_WS ws
class A_INST1,A_INST2,B_INST1,B_INST2 inst
class A_REF,B_REF,C_REF ref
class LIS,DB,MW,ADMIN central
Minimal¶
erDiagram
CLIENT ||--o{ SITE : has
CLIENT ||--o{ USER : employs
USER ||--o{ USER_ROLE_BINDING : binds
ROLE_TEMPLATE ||--o{ ROLE_PERMISSION : grants
MODULE ||--o{ PERMISSION : defines
SITE ||--o{ LOCATION : contains
LOCATION ||--o{ DEPARTMENT : groups
SITE ||--o{ WORKSTATION : hosts
TEST_CATALOG ||--o{ TEST_SPECIMEN_MAP : accepts
SPECIMEN ||--o{ TEST_SPECIMEN_MAP : provides
TEST_CATALOG ||--o{ TEST_CONTAINER_MAP : needs
CONTAINER ||--o{ TEST_CONTAINER_MAP : provides
PANEL ||--o{ PANEL_COMPONENT : includes
TEST_CATALOG ||--o{ PANEL_COMPONENT : is_component
TEST_CATALOG ||--o{ REF_RANGE : ranges
SITE ||--o{ REF_RANGE : overrides
SITE ||--o{ ORDERING_LOCATION : sources
SITE ||--o{ TEST_WORKSTATION_MAP : routes
WORKSTATION ||--o{ TEST_WORKSTATION_MAP : targets
TEST_CATALOG ||--o{ TEST_WORKSTATION_MAP : applies
MIDDLEWARE_ENDPOINT ||--o{ INSTRUMENT_PROFILE : serves
WORKSTATION ||--o{ WORKSTATION_INSTRUMENT_MAP : connects
INSTRUMENT_PROFILE ||--o{ WORKSTATION_INSTRUMENT_MAP : connects
REF_LAB_PROFILE ||--o{ WORKSTATION_REFLAB_MAP : connects
WORKSTATION ||--o{ WORKSTATION_REFLAB_MAP : connects
ORDER ||--o{ ORDER_ITEM : has
ORDER_ITEM }o--|| PANEL : optional_panel
ORDER_ITEM }o--|| TEST_CATALOG : atomic_test
ORDER_ITEM ||--o{ RESULT : yields
ORDER ||--|| ORDERING_LOCATION : placed_from
ORDER_ITEM }o--|| WORKSTATION : performed_on
Conceptual¶
graph LR
subgraph Tenant Context
Client[(Client)]
Site[(Site)]
Client -->|has| Site
end
subgraph Operations
OrderingLocation[(OrderingLocation)]
Location[(Performing Location)]
Department[(Department)]
Workstation[(Workstation)]
InstrumentProfile[(InstrumentProfile)]
Middleware[(Middleware Endpoint)]
RefLab[(Reference Lab Profile)]
end
subgraph Catalog
Test[(TestCatalog)]
Panel[(Panel)]
PanelComp[(PanelComponent)]
Specimen[(Specimen)]
Container[(Container)]
RefRange[(ReferenceRange)]
end
subgraph Security
User[(User)]
Role[(RoleTemplate)]
Perm[(Permission)]
end
subgraph Orders & Results
Order[(Order)]
Item[(OrderItem)]
Result[(Result)]
QC[(QC Control/Rule)]
AutoV[(Autoverification Rule)]
Routing[(Routing Rule)]
Report[(Report Template)]
end
%% Hierarchy
Site -->|contains| Location
Site --> Department
Site --> Workstation
Workstation -->|connects via| Middleware
Workstation -->|routes to| InstrumentProfile
Workstation -->|or send-out| RefLab
%% Catalog links
Panel -->|includes| PanelComp
PanelComp --> Test
Test --> Specimen
Test --> Container
Test --> RefRange
Test -->|routed to| Workstation
%% Orders
OrderingLocation -->|places| Order
Order -->|has| Item
Item -->|is for| Test
Item -->|or| Panel
Item -->|performed at| Workstation
Item --> Result
Result --> Report
%% Rules
Routing -->|selects| Workstation
AutoV -->|evaluates| Result
QC -->|governs| InstrumentProfile
QC -->|flags| Result
%% Security
User -->|bound at site| Role
Role --> Perm
User -->|acts in| Department
User -->|works on| Workstation
Key Attributes Snapshot (Nouns → Attributes)¶
classDiagram
class Client {
+client_id
+client_code
+name
}
class Site {
+site_id
+client_id
+site_code
+timezone
+inherit_from_client: bool
}
class Test {
+client_id
+test_code
+name
+method
+unit(UCUM)
+is_calculated: bool
+version
+active
}
class Panel {
+panel_id
+client_id
+panel_code
+version
+bill_as_panel: bool
}
class ReferenceRange {
+ref_range_id
+test_code
+unit
+age_min_days/age_max_days
+sex_at_birth
+critical_low/high
+effective_start/end
}
class Workstation {
+workstation_id
+site_id
+ws_code
+is_manual: bool
+department_id
}
class InstrumentProfile {
+instrument_profile_id
+site_id
+vendor
+model
+endpoint_id
+status
}
class RoutingRule {
+rule_id
+site_id
+applies_to
+criteria_json
+action_json
+priority
}
class AutoverRule {
+autover_rule_id
+site_id
+criteria_json
+action
}
class Order {
+order_id
+site_id
+ordering_location_id
+priority
+status
}
class OrderItem {
+order_item_id
+order_id
+test_code/panel_id
+workstation_id
+status
}
class Result {
+result_id
+order_item_id
+value
+unit
+flags
+status
}
Client "1" --> "many" Site
Site "1" --> "many" Workstation
Test "1" --> "many" ReferenceRange
Panel "1" --> "many" Test : via PanelComponent
Workstation "1" --> "many" InstrumentProfile
RoutingRule --> Workstation
Order "1" --> "many" OrderItem
OrderItem "1" --> "many" Result
AutoverRule --> Result
Activities & Interactions (Order → Result → Report)¶
sequenceDiagram
participant EMR as EMR / OrderingLocation
participant LIS as Infinity LIS
participant Route as Routing Engine
participant WS as Workstation
participant MW as Middleware
participant INST as Instrument
participant QC as QC Engine
participant AV as Autoverification
participant RPT as Reporting
EMR->>LIS: Place Order (tests/panel, patient, priority)
LIS->>Route: Resolve performer (site, test_code, time, availability)
Route-->>LIS: Workstation selected (+fallbacks)
LIS->>WS: Queue OrderItem(s)
WS->>MW: Send Order to Instrument (ASTM/HL7)
MW->>INST: Order download
INST-->>MW: Results (raw values + flags)
MW-->>LIS: Result message
LIS->>QC: Evaluate control status / Westgard rules
QC-->>LIS: In-control? (yes/no, flags)
LIS->>AV: Apply autover rules (delta, critical, ranges)
AV-->>LIS: Action = AutoRelease / Hold / Flag
alt AutoRelease
LIS->>RPT: Render report (template + letterhead)
RPT-->>LIS: PDF/HTML
LIS-->>EMR: ORU result (HL7) + Archive
else Hold
LIS-->>WS: Tech review queue with reasons
end
Catalog Resolution Logic (Panel → Component Tests)¶
flowchart TD
A[Order Panel] --> B{Get Panel Version}
B --> C[Expand Components]
C --> D{Specimen/Container\nUnion + Conflicts?}
D -- No --> E[Assign Required Specimen/Container]
D -- Yes --> F[Prompt rules: priority, site override]
E --> G[Create OrderItems per Test]
F --> G
G --> H[Route each Test → Workstation]
H --> I[Queue for Instrument/Ref Lab]
