Skip to main content
Clinical Lab — Laboratory Information System (LIS) — A made-to-order Odoo Laboratory Information System that runs your diagno — 1/1Illustrative preview

A made-to-order Odoo Laboratory Information System that runs your diagnostic lab end to end

— from test order and sample collection through result validation to a branded, reference-ranged report.

ECOSIRE builds, installs, and supports it against your test catalog and workflow.

What is Clinical Lab — Laboratory Information System (LIS)?

A made-to-order Odoo Laboratory Information System that runs your diagnostic lab end to end — from test order and sample collection through result validation to a branded, reference-ranged report. ECOSIRE builds, installs, and supports it against your test catalog and workflow. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Key Features

Configurable test catalog as new ORM models with per-test analytes, units, sex/age-banded reference ranges, and a linked `product.product` for pricing
Test panels/profiles (CBC, LFT, RFT, etc.) defined once and auto-expanded into component analytes on order via compute methods with `@api.depends`
Lab order raised directly from a `clinical-core-his-emr` encounter or as a standalone requisition, with patient and clinician context carried through
Sample-collection step that generates barcode/label data per specimen and tracks container type, collection time, and specimen status
Result-entry grid (XML/OWL) that compares each value against its reference range on save and auto-flags normal / abnormal / critical
Two-step release state machine: technician entry then pathologist validation, with the approve/release right enforced via `ir.model.access.csv` and record rules
Turnaround-time (TAT) computed per test from order to release, with overdue items highlighted on the worklist
Lab worklist / pending-samples dashboard filtered by department, status, and priority for daily bench management
Branded cumulative lab report as a QWeb PDF showing analytes, units, reference ranges, and flags in a clinician-ready layout
Validated results pushed back into the patient's EMR encounter timeline for a single longitudinal record
Delta-check comparison of each analyte against the patient's prior values to surface unexpected swings
Automatic billing hook posting ordered tests to the patient invoice through `account`, keeping revenue native to Odoo
Automated actions for overdue-sample chasing and critical-result notification via `mail`
XML-RPC / JSON-RPC API surface for analyzer middleware, portal, or third-party integration; targets Odoo 17.0 / 18.0 / 19.0 on Community and Enterprise

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

Odoo Compatibility
Odoo 17, Odoo 18, Odoo 19
Editions
Enterprise & Community
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
PostgreSQL 12+

About this Product

Diagnostic labs bleed time and trust in the gap between an ordered test and a released, defensible result. Requisitions arrive on paper or in a spreadsheet, samples get relabelled by hand, technicians key values into one system while the pathologist signs off in another, and the final report is a Word template someone maintains privately. Odoo out of the box has no concept of an analyte, a reference range, a specimen, or a two-step technician-then-pathologist release — product can hold a "test" as a sellable line and account can invoice it, but nothing models the clinical result, flags an abnormal or critical value, tracks turnaround time, or stops an unvalidated result from reaching a patient. That is exactly the road Odoo native runs out of, and where a purpose-built Laboratory Information System belongs.

ECOSIRE builds the clinical-lab-lis module on top of base, mail, product, account, our clinical-core-his-emr, and web. At its core sit new ORM models (models.Model) for the test catalog, analytes, panels/profiles, lab orders, samples, and results. A configurable test carries its analytes, unit of measure, reference ranges (by sex and age band where you need it), and a price that links to a product.product so billing stays native. Panels such as CBC or LFT are defined once and expand into their component analytes automatically when ordered — implemented with compute methods and @api.depends so the order line, the result grid, and the invoice always agree. A lab order is raised straight from an EMR encounter (through the clinical-core-his-emr link) or as a standalone requisition, then moves through a sample-collection step that generates barcode labels and tracks each specimen by container and status.

Result entry happens in a purpose-designed grid (XML/OWL views) where every value is compared against its reference range on save and automatically flagged normal, abnormal, or critical. Release is gated by a two-step state machine: a technician enters and submits, and only a user with the pathologist/validation role — enforced through ir.model.access.csv and record rules — can approve and release. Turnaround time is computed per test from order to release, with overdue items highlighted on a worklist dashboard filtered by department and status. On release, the validated result is pushed back into the patient's EMR encounter timeline, a branded cumulative report is rendered as a QWeb PDF (analytes, units, reference ranges, and flags laid out for the clinician), and delta comparison against the patient's prior values is available for review. Ordered tests post to the patient invoice automatically through the account hook, and automated actions can chase overdue samples or notify on a critical flag. Everything is reachable over Odoo's XML-RPC/JSON-RPC API for analyzer middleware or portal integration, and the build targets Odoo 17.0, 18.0, and 19.0 on both Community and Enterprise (Enterprise-only features such as advanced studio views or approvals are only assumed when your edition supports them).

Because this is build-to-order, nothing is a shrink-wrapped download. We start with a short scoping call, confirm your test catalog, reference-range policy, report layout, and any analyzer or EMR touchpoints, then build against your Odoo version and edition, review with you on a staging database, and hand over installable source, documentation, and a git repository. Typical delivery is one working week from confirmed scope. Pricing starts from $999 (indicative, single-company base scope); analyzer/instrument middleware integration, multi-branch or multi-company labs, deeper localization, and larger historical-result data migration increase the quoted scope. The from-price is indicative only — you receive a fixed quote after the scoping call.

What you get

  • Installable source code for the `clinical-lab-lis` module built for your Odoo version (17.0 / 18.0 / 19.0) and edition
  • Installation and configuration on your environment, including test catalog, analytes, reference ranges, and report branding setup
  • Technical documentation: data model, security model (access rules and record rules), report templates, and integration/API notes
  • End-user guide plus a live training session for lab technicians, pathologists, and front-desk staff
  • Post-go-live support window for defect fixes and configuration questions
  • UAT on a staging database with a documented rollback plan before production cutover
  • Git repository handover with full commit history and tagged release

Who this is for

Lab manager running a standalone diagnostic lab

Needs order-to-result throughput, a pending-samples worklist, and TAT visibility so no requisition falls through the cracks, with billing posted automatically rather than reconciled by hand.

Consultant pathologist / validation authority

Wants a hard two-step gate so only they can release results, plus reference-range flags and delta checks against prior values to sign off defensibly and fast.

Hospital IT / EMR owner

Needs the LIS to sit inside the same Odoo instance as the EMR, push validated results into the encounter timeline, and expose an API for analyzer middleware — not a separate system to reconcile.

Lab technician at the bench

Wants a fast result-entry grid with automatic abnormal/critical flagging and barcode-labelled samples, so data entry is quick and mistakes surface immediately.

How Clinical Lab — Laboratory Information System (LIS) Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Analytes & reference rangesModelled natively with sex/age bands and auto-flaggingPossible but you design the data model from zeroOften fixed ranges, hard to tailor per labNo concept of an analyte or range
Two-step technician→pathologist releaseEnforced via state machine + record rulesBuild it yourself and maintain the securityVaries; sometimes single-step onlyNot available
Panels/profiles (CBC, LFT)Defined once, auto-expand into analytes on orderCustom compute logic to be writtenUsually supported but rigidNo panel logic
EMR encounter integrationResults pushed into the patient timeline via clinical-coreIntegration effort on top of the buildStandalone; EMR link often absentNo lab-to-encounter link
Branded QWeb lab reportCumulative report with ranges, flags, your brandingReport template built to spec, added costGeneric template, limited brandingNo lab report format
Turnaround-time trackingComputed per test with overdue worklist highlightingRequires custom compute + dashboardSometimes basic timestamps onlyNone
Billing hook to invoiceOrdered tests post to `account` automaticallyWire the account link yourselfIntegration quality variesManual invoice lines only
Support & handoverInstall, training, support window, git repo handoverDepends on the developer engagedVendor support tiers, no source control of your logicCommunity forums only

Frequently Asked Questions about Clinical Lab

Is this an existing app I can download and install today?

No. This is a build-to-order module. ECOSIRE builds it against your test catalog, reference-range policy, report layout, and Odoo version/edition, then installs and supports it. There is no instant download — you request a quotation and we build it for you.

How long does delivery take?

Typical delivery is one working week from confirmed scope. The clock starts once we've agreed the test catalog, workflow, report design, and any analyzer/EMR integrations on the scoping call. Larger data migrations or instrument middleware can extend that, and we tell you before you commit.

How does pricing and scoping work?

Pricing starts from $999 (indicative, single-company base scope). That figure is a starting point, not a fixed price — analyzer integration, multi-branch/multi-company labs, deeper localization, and historical-result migration increase scope. After a short scoping call you receive a fixed written quote for your exact requirements.

What support and updates do I get after go-live?

Every build includes a post-go-live support window for defect fixes and configuration questions, plus the git repository so your own team can maintain it. Version upgrades to a newer Odoo release, new tests/panels, or added integrations are quoted as follow-on work.

Which Odoo versions and editions does it support?

We build for Odoo 17.0, 18.0, and 19.0 on both Community and Enterprise. The module is built against your specific version and edition; Enterprise-only capabilities are only assumed where your edition provides them.

Can it connect to our analyzers and our existing EMR?

Yes. The module links results into the patient encounter through our clinical-core-his-emr layer, and exposes Odoo's XML-RPC/JSON-RPC API so analyzer middleware or a lab portal can push orders and pull results. Specific instrument protocols are scoped and quoted per integration.

Who is allowed to release a result?

Release is gated by a two-step state machine. A technician enters and submits, and only a user holding the pathologist/validation role can approve and release — enforced with Odoo access rights (`ir.model.access.csv`) and record rules, so unvalidated results never reach a patient.

Request a quote

Clinical Lab

A made-to-order Odoo Laboratory Information System that runs your diagnostic lab end to end — from test order and sample collection through result validation to a branded, reference-ranged report. ECOSIRE builds, installs, and supports it against your test catalog and workflow.

  • Configurable test catalog as new ORM models with per-test analytes, units, sex/age-banded reference ranges, and a linked `product.product` for pricing
  • Test panels/profiles (CBC, LFT, RFT, etc.) defined once and auto-expanded into component analytes on order via compute methods with `@api.depends`
  • Lab order raised directly from a `clinical-core-his-emr` encounter or as a standalone requisition, with patient and clinician context carried through
  • Sample-collection step that generates barcode/label data per specimen and tracks container type, collection time, and specimen status

Request a Quotation

Tell us about your Clinical Lab requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.