Laboratory Solutions

From requisition to reimbursement, one lab-first system.

EKLIS is a cloud-hosted laboratory information system (LIS) for US clinical laboratories: a LOINC-coded test compendium, barcode ordering and scanner-first accessioning, specimen and result tracking that will not allow an out-of-order step, an interface engine that speaks ASTM and HL7 to the analyzers, auto-verification gated on quality control, a documented critical-value loop, versioned report PDFs, provider and patient portals, and charges and claims generated the moment an order completes.

Overview

A cloud laboratory information system: order, accession, result, verify, release — and bill.

EKLIS is a laboratory information system built for the bench rather than adapted from a clinic chart. A laboratory signs up, gets its own separate data store and a LOINC-coded starter compendium, and can run a real day's work without waiting on an implementation project: register a patient, build an order from the compendium, print barcode labels, collect, accession by scanner, enter or receive results, verify them, and hand back a report PDF. Every one of those steps is enforced by the system rather than a status field someone types over, and every access to patient data writes a permanent record naming the user who made it.

Two tracked sequences carry the patient-safety weight. A specimen moves from ordered to collected to accessioned to complete, with rejected as a dead end of its own, and an out-of-order move is refused outright. A result moves from preliminary to final, and a final result can never be changed: a correction creates a new version linked to the one it replaces, carrying the reason, and both stay visible — the report PDF prints a CORRECTED banner and names the version. Accessioning refuses to assign a number without an explicit confirmation that the operator matched two patient identifiers against the label, and critical values open a notification that closes only when someone records who was told and confirms the read-back.

The connectivity and money layers are the two places a lab-first system has to be different from a clinical one. The interface engine runs independently of the rest of the application, so analyzer and HL7 traffic keeps flowing during system updates; it logs every incoming message before acting on it, checks that each ASTM message arrived intact, and only ever files a result into that laboratory's own accessioned specimens and open order tests. On the other side, medical-necessity rules and the ABN prompt run at order time, and completing an order generates its charges and a draft claim exact to the cent — export, denial, payment posting and denial analytics all work from the same records, so the laboratory never re-keys into a billing system what it already knows.

Laboratory Solutions — main screen
Laboratory Solutions — main screen (demo environment, synthetic data).
Architecture

The bench, the connections and the billing record

Bench surfaces
Worklist dashboard
STAT, to collect, to accession, to result, to verify, critical
Accession
one focused scan field, two-identifier confirmation
Results
split queues for entry and verification
Quality control
control lots, Levey-Jennings, auto-verify rules
Critical values
open loops awaiting read-back
Send-outs
worklist, in transit, courier manifest
Field collection
draw list, custody events, keeps working without signal
Outside the bench
Provider portal
own orders only; anything else not shown
Patient portal
read-only, final results and latest report
Report PDFs
versioned archive, CORRECTED labeling
Billing console
claims, denials, payments, analytics
Direct ordering
per-laboratory catalog, payment connection, portal code
Order and result core
Compendium
LOINC codes, sex-specific intervals, critical limits
Specimen tracking
ordered → collected → accessioned → complete; rejected is final
Result tracking
preliminary → final; corrections add linked versions
Auto-verification rule sets
versioned data, gate reasons recorded
Billing engine
necessity, charges, claims, payments exact to the cent
Analyzer and HL7 connections (run independently)
ASTM connection
checks that each message arrived intact
HL7 connection
result messages, confirmed receipt of every message
Permanent message log
written before it's read, outcome written back
Per-connection code map
analyzer codes to compendium tests, LOINC fallback
Safeguards
Encrypted, cloud-hosted application
Separate data store per laboratory
the system's own permissions are limited to each laboratory's own data
Protected sign-in and signup
repeated automated attempts are blocked
Secure sign-in sessions
kept in a secure browser cookie that page scripts cannot read
Complete audit trail
every patient-data access recorded, without ever storing the data itself
Operator console
covers the list of laboratories and their analyzer connections only; off by default and separately secured
The analyzer and HL7 connections deliberately run outside the rest of the application, so instrument and result traffic keeps being accepted and logged during a system update; everything else reads and writes one laboratory's own data store.
Who uses it

Built around the people doing the work

Accessioner

Needs · To get a tray of tubes onto the bench quickly without ever putting a number on the wrong patient's specimen.

Gets · A single focused barcode field that keeps the cursor, a confirm step that requires the two-identifier match before any number is assigned, sequential accession numbering with the receiving user recorded, and rejection with a reason as a proper final outcome.

Medical technologist

Needs · To see what is waiting, enter or review results, know why the system held something, and be able to correct a released result without erasing what was reported.

Gets · Split worklists for what needs entering and what needs verifying, automatic high/low/critical flagging against sex-specific intervals, the hold reason on every held result, and corrections that create a linked new version with its reason.

Laboratory administrator

Needs · To bring a new analyzer online, tune what may release itself, keep quality control honest, and answer an inspector about who did what.

Gets · The list of analyzer connections with per-connection code maps and a readable message log, the auto-verification rule editor with a rule-set version badge, control lots with Westgard evaluation and Levey-Jennings charts, staff and role management, and a permanent record of every patient-data access.

Ordering provider

Needs · To place an order, attach the diagnoses, and get the report back — without seeing anyone else's patients or being handed the bench.

Gets · Order entry the same way the laboratory's own staff place orders, a portal scoped to their own orders, report PDFs for those orders, and anything that is not theirs treated as if it doesn't exist.

Patient

Needs · To read their own finished results without a phone call, and to be sure nobody else can read them by guessing a record number.

Gets · Sign-in with the laboratory identifier, record number, date of birth and a one-time code issued by the laboratory; a short-lived, patient-only session; current final results with flags and reference intervals; and the latest report PDF.

Billing specialist

Needs · To bill from what the laboratory actually did, to know why claims are being denied, and to stop preventable denials before the specimen is drawn.

Gets · Payers and a fee schedule exact to the cent, medical-necessity rules that flag an ABN at order time, charges and a draft claim on order completion, export ready to send through the clearinghouse connection, a denial workflow with reasons, payment posting against the balance, and a dashboard of status, denial reasons, clean-claim rate and outstanding balance.

Today vs. with eKlotho

What actually changes

AreaTodayWith Laboratory Solutions
Getting startedA server in the closet, a vendor install, and a compendium built from scratch before the first order.Self-serve provisioning creates the laboratory, its own data store, its schema and a LOINC-coded starter compendium — reviewed and adopted by the lab before go-live.
Analyzer connectivityA separate middleware box between the instruments and the LIS, with its own license, its own failure modes and its own vendor.The analyzer and HL7 connections are part of the system: automatic connections to each instrument, a per-connection code map, and a message log the laboratory can read when an instrument goes quiet.
System updatesInstrument traffic is refused while the system restarts, and someone reruns the batch afterwards.Analyzer connections run independently of the rest of the system, with a permanent message log in front of every incoming message, so nothing is lost while the system updates.
Releasing resultsAutoverification is a setting nobody can explain, or everything is released by hand.Five named gates in a fixed order, rules stored as data, a rule-set version stamped on every auto-released result, and a written hold reason on everything that did not pass.
Correcting a resultSomeone edits the value and the old number is gone.The correction is a new linked version with its reason; the report prints CORRECTED and names the version, and the version it replaced stays on the record.
Critical valuesA phone call and a note in a logbook, if anyone remembers to write it.A notification that will not close without the name of the person notified and an explicit read-back confirmation, attributed and audited.
Getting paidResults are exported to a billing service that re-keys them, and denials arrive weeks later with no pattern anyone can see.Necessity checked at order time, charges and a draft claim generated on completion exact to the cent, and a dashboard of status, denial reasons, clean-claim rate and balance from the same records.
Capabilities

What's included

12 modules, each describing what is built today.

Data separation, roles and audit trail

Every laboratory gets its own separate data store, its own staff, and a permanent record of who touched what — the base that everything else is built on.

Test compendium and requisition entry

The catalog the whole system reads from: LOINC-coded tests with specimen, container, units, sex-specific reference intervals and critical limits.

Collection, labels and accessioning

The scanner-first path from a printed label to an accession number, with the two-identifier check enforced by the system.

Mobile collection and chain of custody

The draw list a phlebotomist works from, and a custody trail that survives a phone with no signal.

Worklists and the bench dashboard

The lab's primary surface: how much work is waiting, where it is stuck, and what is urgent — computed automatically, never entered by hand.

Results, verification and corrections

Result entry with automatic flagging, a verification step that releases to the report, and corrections that add a version instead of overwriting one.

Interface engine — analyzers and HL7

Runs independently of the rest of the system, so instrument traffic keeps arriving during updates, with every incoming message saved before it is read.

Auto-verification rules and quality control

Instrument results release themselves only when every gate passes, and quality control is the first gate — not a report someone files afterwards.

Critical values and reference-lab send-outs

The two paths a result takes when it cannot simply be printed: an urgent phone call that has to be documented, and a specimen that has to leave the building.

Reports, provider portal and patient portal

Three ways a finished result leaves the laboratory, each seeing exactly what it is allowed to see.

Billing and the revenue cycle

Charges and claims produced from the order the laboratory already ran, exact to the cent, with the payer decisions made before the draw rather than after the denial.

Direct ordering and the operator console

Two surfaces outside the laboratory's own staff: a patient ordering for themselves, and the platform owner minding the registry of laboratories.

In depth

How it actually works

Data separation · isolation by design

Each laboratory's data is kept completely separate

Most shared software separates customers with a filter buried in application logic, which means a single mistake in that filter is a data breach. EKLIS separates laboratories with a data store. Each laboratory is registered in a small central directory and has a data store entirely of its own; the only way to reach it is to ask that directory for the laboratory by its own identifier, and the directory answers only for a laboratory that is registered and active. An identifier that doesn't match the expected pattern is refused before it ever reaches the data itself.

Order → label → collect → accession

The bench loop, scanner in hand

An order is not a form the laboratory retypes into tubes. Choosing tests produces the specimens: the system groups the ordered tests by specimen type and container and creates one specimen per distinct pair, each with its own sequential identifier. That identifier is what gets printed, scanned and tracked, so the physical tube and its record in the system are the same object from the first moment.

Auto-verification and quality control

Five gates before a result releases itself

Auto-verification is where a laboratory information system either earns its keep or quietly hurts someone, so the checks are explicit, ordered, and editable rather than buried in hidden per-test settings. A result filed by an analyzer is considered for release only if auto-verification is enabled for that test; then only if it is not critically flagged; then only if quality control for that test was in control within the last day; then only if the value sits inside the configured auto-verify range; and finally only if the delta against the patient's own prior final result is within the configured absolute and percentage limits.

Analyzer and HL7 connections, running independently

No message is ever dropped

The one part of the system that cannot afford to be tied to the rest of the application is the connection to the analyzers. An analyzer doesn't know that a system update is in progress; it simply connects and sends. So that connection work runs independently, reads the laboratory's list of configured equipment, and keeps one active connection per enabled analyzer or HL7 feed — starting and stopping as that list changes, rather than needing a restart to pick up a new instrument.

The billing cycle built on the same records

From a completed order to a clean claim

The reason laboratory billing goes wrong is usually that it starts too late. By the time a claim is built in a separate system, the decisions that would have made it clean — was the patient covered, does the diagnosis support the test, did anyone get an ABN signed — are weeks in the past. EKLIS moves them to the order. Medical-necessity rules are ICD-10 prefixes attached to a test; when an order's diagnoses match no rule for a test that has them, the order is marked as requiring an ABN at the moment it is created, before anyone draws anything.

How it works

From first step to outcome

  1. Order placedTests chosen from the compendium, diagnoses validated, payer optional — specimens derived one per specimen type and container.
  2. Necessity and ABN check

    Each test's ICD-10 prefix rules are checked against the order's diagnoses; a test with rules and no match flags the order as needing an ABN.

  3. Labels and collection

    ZPL or PDF labels carry name, date of birth, record number, container and the specimen barcode; collection stamps the time.

  4. Accessioning

    The scan finds the specimen; what happens next depends on what the bench confirms.

    • Two identifiers confirmedleads to the next sequential accession number, receiver and time
    • Specimen unusableleads to rejected with a required reason — final, not editable
    • Never collectedleads to refused; that step is not allowed
  5. Testing and result arrival

    An analyzer files through the interface engine, or a technologist enters by hand; either way the value is flagged against the sex-specific interval and the critical limits.

  6. Auto-verification gates

    Rule enabled, not critical, QC in control within the day, inside the auto-verify range, delta check against the patient's own prior result.

    • All gates passleads to final, with the rule-set version stored on the result
    • A gate holdsleads to preliminary with the reason, onto the human verify worklist
    • Critically flaggedleads to never auto-released; a notification opens
  7. Verification and report

    Verification makes the result final; it cannot be edited after release, and corrections add a linked version with a reason. The report PDF is generated, versioned and archived.

  8. Order completion and billing

    When the last test is final the order and its specimens close, and charges plus a draft claim are generated once from the fee schedule.

  9. Delivered and billedreport PDF, provider portal and patient portal serve the current version; the claim exports through the clearinghouse connection unless a required ABN is unsigned
The two decision points are the ones that hurt when they are implicit: whether the specimen may be accessioned at all, and whether a result may release itself without a person.
  1. Order

    A provider or the front desk builds the order from the compendium; the system derives one specimen per specimen type and container, validates the diagnoses, and flags the order for an ABN when a test fails its medical-necessity rule.

  2. Label and collect

    Labels print as ZPL or PDF with the patient's name, date of birth, record number and a scannable specimen barcode; collection moves the specimen out of the ordered state and stamps the time.

  3. Accession

    The bench scans the barcode into a single focused field and confirms two patient identifiers against the label; only then is the next sequential accession number assigned, with the receiving user recorded. An unsuitable specimen is rejected with a reason instead.

  4. Result

    The analyzer files the result through the interface engine, or a technologist enters it by hand. Either way the value is flagged against the patient's sex-specific reference interval and the test's critical limits.

  5. Verify or auto-verify

    Instrument results pass the auto-verification gates — rule enabled, not critical, QC in control, within range, delta check — and record the rule-set version that released them; anything held lands on the human verify worklist.

  6. Release and report

    Verification makes the result final; it cannot be edited after release, and a correction adds a linked version rather than overwriting. The report PDF is generated and archived, and the provider portal and patient portal serve the current version.

  7. Bill

    Completing the last test closes the order and generates its charges and a draft claim; export produces the clean claim, denials carry a reason for re-work, and payments post against the balance.

A closer look

Screens and flows

Quality control and auto-verification
Quality control and auto-verification — control lots evaluated against Westgard multirules, beside the versioned auto-verify rule set (demo environment, synthetic data).
Critical values
Critical values — open loops, each waiting on the name of the person notified and a read-back confirmation (demo environment, synthetic data).
Claims and denial analytics
Claims and denial analytics — claims by status with clean-claim rate, open denials and outstanding balance (demo environment, synthetic data).
Reference

The specifics, in tables

Vocabularies, tiers and matrices drawn from the product documentation — the same terms the software uses.

Lab roles and what they unlock

RoleWhat it unlocks
AdminEverything, plus staff and role management, the interface registry and code maps, reference-lab setup and send-out flags
TechnologistResult entry, verification and corrections, quality control and auto-verification rules, critical-value acknowledgement, send-outs
AccessionerPatient registration, order entry, collection and accessioning, rejection, send-outs, patient portal access codes
PhlebotomistCollection and the bench worklists — never result entry or verification
ProviderOrder entry and a portal of their own orders, results and report PDFs; the bench surfaces are refused
BillingPayers, fee schedule, necessity rules, claims, export, denials, payments and billing analytics

Roles are checked, denying access by default, from who is actually signed in.

What the system refuses

ObjectStatesWhat is refused
Specimenordered → collected → accessioned → complete, with rejected as a final outcomeAny out-of-order step, and accessioning without the two-identifier confirmation
Resultpreliminary → final, corrections add a linked versionVerifying a result that is already final, a second entry against the same order test, and entry against a specimen that is not accessioned
Critical notificationopen → acknowledgedAcknowledgement without a read-back confirmation, and acknowledging a loop that is already closed
Claimdraft → exported → denied or paidExporting anything but a draft or denied claim, exporting with a required ABN unsigned, charges with no CPT code, and a payment larger than the balance
Custody eventcollected → picked up → received, a permanent recordPicking up a specimen that was never collected, and applying the same field action twice — repeating it returns the original outcome

Both are enforced by the system itself, so a stale screen cannot talk it into an illegal move.

The auto-verification gates, in order

GateWhat it checksHold reason recorded
Rule enabledAuto-verification is switched on for this testAuto-verification disabled
Not criticalThe value is not flagged critically high or lowCritical
QC in controlThe most recent control run for the test within the last day was in controlQuality control not in control
Auto-verify rangeThe value sits inside the configured range for the testAbove or below the auto-verify range
Delta checkThe change from the patient's own prior final result is within the absolute and percentage limitsDelta exceeded

The first gate that fails writes its reason onto the result and sends it to a person.

What the interface engine speaks

ProtocolWhat is acceptedWhat is answered
ASTMResults connected directly from bench analyzersConfirms each valid message; rejects one that didn't arrive intact, with nothing filed
HL7 result messagesSpecimen identifier, code and value read directly from the messageA confirmation when filed, a clear error when processing fails
Any other HL7 message typeLogged and recorded as ignoredA clear rejection naming it unsupported

Every inbound message is logged before it is read, and the outcome is written back onto the stored message.

How we make sure

The mechanics behind the claims

Every promise on this page maps to something the software actually enforces.

Laboratories cannot see each other's data
Kept apart at the data-store level — each laboratory has its own separate data store, the system will only connect to one that is registered and active, and its own permissions are limited to that laboratory's data. A request for another laboratory's data is treated as if it doesn't exist, and a sign-in for an unregistered laboratory is rejected; both are covered by the system's own isolation tests.
A number is never assigned to the wrong patient's specimen
Accessioning requires an explicit confirmation that the two identifiers were matched and refuses the request without it, and it will only accept a specimen already marked collected — the label carries name, date of birth, record number and the barcode so there is something to match against.
A released result cannot be quietly changed
Result changes are enforced by the system, not left to the screen: a final result cannot be verified again, and a correction creates a new version with its reason while linking back to the one it replaces. Both versions stay in the order's result history.
Quality control actually gates release
Auto-verification asks whether the most recent control run for that test within the last day was in control before it considers the value; a Westgard violation marks the run out of control, so the gate closes for that test until control is regained.
No inbound interface message is lost
Every incoming message is saved to the laboratory's own message log as received before it is processed, then updated with the outcome. Processing errors are recorded on the message itself and handled safely, so a bad message never interrupts the connection.
Interface traffic cannot file a result anywhere it likes
Incoming results are matched through that connection's own code map or an exact compendium match, then checked against a specimen belonging to that same laboratory that has actually been accessioned, and a test that is still open on the order. Anything else is rejected with the reason written to the message log.
A claim is not exported when an ABN is outstanding
Necessity rules mark the order when it is created, and export refuses a claim whose order requires an ABN that has not been signed — the refusal names the missing ABN rather than exporting something that will be denied.
Outcomes

What changes for your team

  • A laboratory can be set up, staffed and running a real order the same day — its own data store, its own compendium, nothing shared with another laboratory
  • Instrument traffic keeps arriving during system updates, because analyzer connections run independently of the rest of the application, with a permanent log in front of them
  • Nothing releases itself past a quality-control failure, a critical flag or a delta the patient's own history does not support
  • A corrected result adds a version instead of erasing one, so what the clinician saw last week is still on the record
  • Every critical value carries the name of the person notified and a read-back confirmation, because the loop will not close without them
  • The claim is built from the order the laboratory already ran, so nobody re-keys results into a billing system
FAQ

Common questions

Terms on this page

LIS
Laboratory information system — the software that runs a laboratory's orders, specimens, results, quality control and reporting, as distinct from the clinic's EMR.
Compendium
The laboratory's test catalog: each test with its code, department, specimen type, container, units, reference intervals and critical limits.
LOINC
Logical Observation Identifiers Names and Codes — the standard vocabulary for identifying a laboratory test and its result; the starter compendium is LOINC-coded.
Accession
The laboratory's intake record for a received specimen — a sequential number assigned after the two-identifier check, with the receiving user and time.
ASTM
The standard that bench analyzers use to send results directly to a laboratory information system.
HL7
The healthcare messaging standard used to send lab results between systems; a result message is confirmed as received by the LIS.
Auto-verification
Releasing an instrument result without a human, but only when every configured gate passes; the rule-set version that released it is stored on the result.
Delta check
A comparison of a new result against the same patient's own prior final result for that test; too large a jump holds the result for a person to look at.
Westgard multirules
The control-run rules — 1-3s, 2-2s, R-4s, 4-1s and 10x — that decide whether a quality-control run is in control; a violation blocks auto-verification for that test.
Levey-Jennings
The chart of a control lot's results in standard deviations from its mean, which makes drift and shift visible before a rule fires.
Critical value
A result far enough outside the reference interval to need an immediate call; the notification closes only with the name of the person notified and a read-back confirmation.
Corrected report
A report reissued because a result was corrected; the new version supersedes the old one, which is retained and still linked rather than overwritten.
Send-out
A test the laboratory does not perform itself, routed to a reference laboratory with a courier manifest; the record closes when the result comes back and goes final.
ABN
Advance beneficiary notice — the form a patient signs when a test may not be covered; the system flags the order at ordering time and blocks claim export until it is signed.
Clean claim
A claim with everything a payer needs on it the first time — payer, subscriber, diagnoses and coded service lines — built here from the completed order rather than re-keyed.
How are laboratories kept apart from each other?

Completely. Each laboratory gets its own separate data store, and the system will only connect to a data store for a laboratory that is registered and currently active — its own permissions are limited to that laboratory's data, so there is no way for a request to reach across. A request for another laboratory's data is treated as if it doesn't exist rather than simply refused, and a sign-in for a laboratory that is not registered is rejected before anything is read.

Can a result be edited after it is released?

No. A final result cannot be edited. A correction creates a new version carrying its reason, links back to the one it replaces, and leaves both visible in the order's history. The report PDF prints a CORRECTED banner and names the version next to the test, and the footer states that prior versions are retained by the laboratory.

What has to be true before an instrument result releases itself?

Five things, in order: auto-verification is enabled for that test, the result is not critically flagged, quality control for that test is in control within the last day, the value sits inside the configured auto-verify range, and the delta check against the patient's own prior final result passes. Any gate that fails holds the result as preliminary with the reason recorded, and it goes to a person.

What happens to a message if it can't be processed?

It is already saved. Every incoming message is saved to the laboratory's message log before anything is processed, so a failure is recorded on the stored message rather than losing it, and the connection stays up. A damaged ASTM message is rejected outright and nothing is filed from it; an HL7 message that cannot be processed is answered with a clear error.

How is the right patient tied to the right tube?

The label carries the name, date of birth and record number alongside the specimen barcode, and accessioning will not assign a number unless the operator explicitly confirms the two-identifier match — the request is refused without it. A specimen that was never marked collected cannot be accessioned at all, and the receiving user and time are stored on the specimen.

Does the laboratory have to run its own connectivity middleware?

No — the analyzer and HL7 connections are part of the system, but they run independently of the rest of the application, precisely so instrument and result traffic keeps being accepted during system updates. Each connection starts and stops as the laboratory's equipment list changes, and belongs to the laboratory that set it up.

How much can an ordering provider see?

Only their own orders. The order, its results and its report PDF are all treated as if they don't exist for a provider who did not place it, and the bench screens — worklists, quality control, critical values — are refused for the provider role entirely.

How do patients get their results?

The laboratory issues a one-time access code, stored encrypted and shown once, which it can reset. The patient signs in with the laboratory identifier, record number, date of birth and that code, and receives a short-lived sign-in that only works on the patient's own read-only screens. They see current final results and the latest report — never preliminary or held ones — and sign-in failures all look the same and are protected against repeated attempts, so a record number cannot be guessed by trial and error.

Where does billing start?

At the order, not the invoice. Medical necessity is checked against per-test diagnosis rules while the order is being placed, and a failing order is flagged as needing an ABN there and then. Completing the order generates its charges and a draft claim once, exact to the cent; export refuses to build a claim when a required ABN is unsigned.

Is real payer eligibility included?

The connection point is ready, the live connection is not. Eligibility checking is ready to connect to a payer's system, and without configured payer credentials it answers with an explicit, clearly labeled placeholder for demonstration and testing — it is never dressed up as a real payer response. The same is true of claim submission: export builds and stores the completed clean claim, ready to send through the clearinghouse connection.

See Laboratory Solutions on your own workflows

We walk through it with your data and your team — not a canned demo.

Program and billing eligibility are determined by each practice and its payers. Results and alerts do not constitute a medical diagnosis. Third-party names are trademarks of their respective owners and do not imply endorsement.