Skip to content
Avinya Plus logoAvinya Plus

Diagnostic lab and pathology software that tracks every order from collected to reported

Avinya Plus is diagnostic lab and pathology software for clinics. Each lab order runs a real state machine (ordered, collected, reported, or cancelled) with structured results carrying test code, value, units, reference range, and a normal/low/high/critical flag. Results are written by an atomic, access-checked database function, abnormals auto-colour on the report, and the test bills as a GST service line.

A worklist on a whiteboard and results typed into a half-formatted Word doc

Most clinic in-house labs run the day off a whiteboard: who's sampled, who's pending, whose report is ready. Results get keyed into a Word doc with no units or reference range, so the doctor can't tell a high from a normal at a glance. Half-saved reports leave an order in limbo: collected but never reported. And nobody can prove who entered which value. You need a worklist that moves each order ordered → collected → reported, results that know what normal looks like, and a report a pathologist can sign.

Built for how clinics actually work.

A real order worklist: ordered → collected → reported

Every lab order is a row that moves through a fixed state machine: ordered, then collected, then reported, with cancel as the escape hatch. Marking a sample collected stamps a collected-at time; recording results stamps a reported-at time. There's no free-text status to fudge, and each transition writes an audit entry, so your worklist doubles as an accountability trail, and you can spot orders stuck collected-but-not-reported instead of finding out when a patient calls.

Structured results: value, units, reference range, flag

Each result is its own row, not a sentence in a document: test code, the value, units, the reference range it's judged against, an optional normal/low/high/critical flag, and notes, plus who recorded it and when. The doctor reading it on the patient record sees the value next to its reference range and an explicit flag, so an abnormal isn't something to eyeball. 'Critical' is a first-class state, distinct from merely high or low.

Results land atomically through an access-checked function

Recording results doesn't trickle in row by row. The whole batch goes through a single database function that re-checks the caller actually has access to that lab's clinic, inserts every result, and flips the order to 'reported' in one transaction. So you can never end up with a half-reported order where three of five analytes saved and the status never moved. The function is locked to authenticated users, and the API validates the payload before it ever runs.

The ordered-test snapshot can't drift when you rename your catalogue

When an order is placed, the ordered tests are stored as a snapshot (code, name, optional units and reference range) on the order itself, not as a live link to a catalogue. So if you rename 'CBC' to 'Complete Blood Count' or change a reference range next year, last year's orders still say exactly what was ordered and against which range. Your historical reports stay honest, and every order requires at least one test.

An importable CBC report where abnormals colour themselves

A committed Complete Blood Count report ships as importable JSON: an A4 document with a clinic-name header, Patient / Age-Sex / Collected lines, an analyte table (Analyte, Result, Unit, Reference, Flag), and a 'Verified by — Pathologist' signature line. The Flag column carries conditional formatting: a High value renders red and a Low value amber, so the pathologist and the reading doctor catch an out-of-range result at a glance. You import it and edit it to your letterhead.

Bill the test as a GST service line; store the report behind a signed link

A lab test is just a billable service: give it a price, a tax rate, and an HSN/SAC code, and it goes on a GST tax invoice that auto-splits into CGST+SGST for same-state or IGST for inter-state. The scanned report PDF goes into a private bucket (public access off, 10MB cap, PDF/JPEG/PNG/WebP) served only through a signed URL that expires in one hour, scoped per clinic and patient. So the same patient gets a compliant bill, and the report never sits on a public link.

At a glance

  • Lab orders run a four-state machine (ordered, collected, reported, cancelled) with collected-at/reported-at timestamps and an audit entry on every transition.
  • Each result stores test code, value, units, reference range, a normal/low/high/critical flag, and notes, with 'critical' a distinct flag from high or low.
  • Results are written by a security-definer function that re-checks tenant access, inserts the whole batch, and flips the order to 'reported' in one transaction, so there are no half-reported orders.
  • Ordered tests are stored as a snapshot on the order, so renaming a test or its reference range later never rewrites historical orders.
  • The committed, importable CBC report colours High results red and Low results amber via conditional formatting, with a 'Verified by — Pathologist' signature line; it isn't auto-seeded.
  • Report PDFs live in a private bucket (10MB cap; PDF/JPEG/PNG/WebP) served only via one-hour signed URLs. The lab module is manual entry (v1); analyzer/HL7/LOINC integration is on the roadmap, not in the product today.

See how it stacks up.

Feature comparison: paper or spreadsheets versus legacy EMR software versus Avinya Plus.
FeaturePaper / ExcelLegacy EMRAvinya Plus
Order worklist (ordered → collected → reported)Whiteboard
Partial
Yes
Collected / reported timestamps on every order
No
Partial
Yes
Structured result (units + reference range + flag)
No
Partial
Yes
Critical as a distinct flag, not just 'high'
No
No
Yes
Atomic, access-checked result entry (no half-reports)
No
Partial
Yes
Abnormals auto-colour on the CBC reportManual
No
Yes
Test billed as a GST line; report behind signed URL
No
Partial
Yes

Questions, answered.

How does the lab order workflow track a sample from collection to report?

Each order is a row in a fixed state machine: ordered, then collected (which stamps a collected-at time), then reported (which stamps a reported-at time), with cancel as an escape hatch. Every transition is written to an audit log, so your worklist doubles as an accountability trail. You can immediately see orders that are collected but not yet reported instead of discovering them when a patient calls.

Are lab results stored as structured data or just a PDF?

Structured. Every result is its own row carrying a test code, the value, units, the reference range, an optional normal/low/high/critical flag, and notes, plus who recorded it and when. The doctor reading the patient record sees each value next to its reference range with an explicit flag, so an abnormal isn't something you have to eyeball. You can still attach a scanned PDF separately.

What stops a report from being left half-saved?

Results are recorded through a single database function that runs in one transaction: it re-checks that the caller has access to that lab's clinic, inserts every result row, and flips the order to 'reported' together. Either the whole batch and the status change land, or none of it does; you can never end up with three of five analytes saved and the order still showing 'collected'.

Will an abnormal value stand out on the printed report?

Yes. The committed CBC report has a Flag column with conditional formatting: a High value prints in red and a Low value in amber, so an out-of-range result is obvious without anyone styling it by hand. It's an editable A4 template with a clinic-name header, an analyte table, and a 'Verified by — Pathologist' signature line, shipped as importable JSON you edit to your letterhead.

Can I bill the test and store the report too?

Yes. A test is a billable service with a price, a tax rate, and an HSN/SAC code, so it goes on a GST tax invoice that auto-splits into CGST+SGST (same state) or IGST (inter-state). The scanned report PDF goes into a private bucket (public access off, 10MB cap, PDF/JPEG/PNG/WebP), reached only through a signed link that expires in one hour, scoped per clinic and patient.

Is this a standalone LIS connected to lab analyzers?

No, and we won't pretend otherwise. Avinya Plus is a generic, configurable clinic platform with a manual-entry lab-orders module (v1): you order tests, mark them collected, and key in structured results with reference ranges and flags. There's no analyzer/HL7/LOINC machine integration yet; that's on the roadmap, not in the product today. It shares the same patient record, billing, and per-clinic isolation as the rest of the platform, and is in early access.

Run your clinic on Avinya Plus.

Patient records, billing, and scheduling in one system your team will actually use.