Skip to main content
Clinical Imaging — Radiology (RIS) with DICOM/PACS Viewer — A made-to-order Odoo radiology information system: imaging orderi — 1/1Illustrative preview

A made-to-order Odoo radiology information system:

imaging ordering from the EMR encounter, DICOM modality worklist for the scanners, radiologist reporting with signed final reports, and an embedded web DICOM/PACS viewer — all tied to the patient record.

ECOSIRE builds, installs, and supports it after a scoping call.

What is Clinical Imaging — Radiology (RIS) with DICOM/PACS Viewer?

A made-to-order Odoo radiology information system: imaging ordering from the EMR encounter, DICOM modality worklist for the scanners, radiologist reporting with signed final reports, and an embedded web DICOM/PACS viewer — all tied to the patient record. ECOSIRE builds, installs, and supports it after a scoping call. 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

Imaging study catalog modeled by modality (X-ray, CT, MRI, USG) as dedicated records with per-study pricing linked to `product.product` for billing
Imaging order raised directly from an EMR encounter, carrying clinical indication, requested procedure, laterality/body part, and priority (routine/urgent/stat)
Study status state machine (`ordered → scheduled → acquired → reported → signed`) enforced by `@api.depends` computes and Odoo automated actions
DICOM Modality Worklist (MWL) export so scanners pull accession number, demographics, and scheduled procedure instead of manual entry
Embedded open web DICOM viewer (OHIF-style) as an OWL component opening the study's `DICOMweb`/PACS URL in-record
Automatic prior-study comparison list for the same patient and body part, surfaced beside the current study for context reading
Per-modality structured reporting templates (findings + impression) rendered as Odoo XML/OWL views for consistent radiologist output
Report sign-off with electronic signature that locks the final report against further edits
Locked final report rendered as a branded QWeb PDF with accession, referring clinician, and signature block
Technologist acquisition log capturing views performed, contrast agent, and radiation dose notes per study
Report and key images pushed into the patient EMR timeline via the shared `mail.thread` chatter backbone
Billing hook posting imaging charges to the patient's `account.move` invoice on acquisition or sign-off, per your rule
Role-scoped access via `ir.model.access.csv` + record rules (ordering clinician, technologist, radiologist, billing) with multi-company rules optional
XML-RPC/JSON-RPC API surface so an external PACS broker or reporting workstation can read study state and post results
Accession-number generation and worklist filtering (by modality, station, date, priority) for the technologist worklist view

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

Imaging centers and hospital radiology departments live between two systems that never talk to each other: the clinical record where the study is ordered, and the modality/PACS world where images are actually acquired and read. In plain Odoo, an "X-ray" or "MRI" is just a product.product line on an invoice — there is no concept of a study status pipeline, no way to push an order to a CT scanner, no radiologist worklist, and certainly no way to view the images. Native Odoo (base, product, account) runs out of road the moment a technologist asks "what's on my worklist today" or a radiologist asks "show me the priors for this patient's chest." A typical off-the-shelf apps.odoo.com module usually stops at cataloguing imaging services and printing a report template; it does not speak the DICOM protocols that connect Odoo to real hardware, and it leaves the viewer out entirely.

This build fills that gap end to end. On top of your existing clinical-core-his-emr and Odoo's mail/web layers, we model an imaging study catalog by modality (X-ray, CT, MRI, USG) with per-study pricing, then let a clinician raise an imaging order directly from an EMR encounter carrying the clinical indication and priority (routine/urgent/stat). Each order becomes a study record whose status advances through ordered → scheduled → acquired → reported → signed via a state machine on a models.Model with @api.depends computes and Odoo automated actions gating each transition. The key interoperability piece is a DICOM Modality Worklist (MWL) export: scheduled studies are published so modality equipment pulls the day's order list — accession number, patient demographics, requested procedure, and scheduled station — instead of technologists re-keying it. The viewer is delivered as clean-room glue: an embedded OWL component that opens an open web DICOM viewer against the study's DICOMweb / PACS URL, with a prior-study comparison list assembled for the same patient and body part so the radiologist reads in context.

Radiologists report against per-modality structured templates (findings and impression) rendered in Odoo views, then sign off with an electronic signature that locks the final report; the locked report is produced as a QWeb PDF and cannot be silently edited afterward. Technologists keep an acquisition log capturing the views performed, contrast used, and dose notes. On sign-off, the report and the key images are pushed back into the patient's EMR timeline via the shared mail.thread/chatter backbone, and a billing hook posts the imaging charge to the patient's invoice through account. Access is governed by ir.model.access.csv plus record rules so an ordering clinician, a technologist, a reporting radiologist, and billing each see only what their role should — with multi-company record rules available when you run more than one site. Everything is exposed over Odoo's XML-RPC/JSON-RPC API so an external PACS broker or reporting workstation can read study state and post results programmatically.

Because this is built to order, nothing ships as an instant download. After a short scoping call we confirm the exact modalities, your PACS/DICOMweb endpoint, report templates, and billing rules, then build your version against your Odoo 17.0, 18.0, or 19.0 database (Community or Enterprise — we flag any Enterprise-only dependency up front). Typical delivery is one working week from confirmed scope, on staging first, with UAT before go-live. Pricing starts from $999 (indicative, single-company base scope); multi-company/multi-site coverage, deeper PACS/DICOMweb and HL7 integration, additional modality report templates, localization depth, and historical study data migration volume increase the quoted scope. You receive a fixed quote after the scoping call — the from-price is a starting point, not a firm figure.

What you get

  • Installable source code for your version of the module, built and tested against your Odoo 17.0/18.0/19.0 database
  • Installation and configuration on your environment (modality worklist endpoints, PACS/DICOMweb URL, report templates, billing rules)
  • Technical documentation: data model, state machine, security matrix (`ir.model.access.csv` + record rules), and integration points
  • End-user guide plus a live training session for clinicians, technologists, radiologists, and billing staff
  • UAT on a staging database with a documented rollback plan before any production cutover
  • Post-go-live support window for defect fixes and configuration adjustments
  • Git repository handover with full commit history and tagged release
  • Optional historical study data migration and PACS/DICOMweb integration hardening, scoped separately

Who this is for

Radiology Department Head

Runs a hospital imaging department and needs ordered studies, technologist worklists, and radiologist reporting to live inside the same Odoo record as the patient — without buying and integrating a separate heavyweight RIS/PACS. Cares most about the study pipeline, signed reports, and role-based access.

Imaging-Center Owner

Operates a standalone diagnostic/imaging center and wants ordering, viewer access, reporting, and billing in one system. Needs the modality worklist so scanners pull orders automatically and charges to post cleanly to patient invoices, keeping overhead low.

Reporting Radiologist

Reads studies and signs reports. Needs an embedded viewer opening the study's images, a prior-study comparison list, per-modality structured templates, and an electronic sign-off that produces a locked final PDF they can stand behind.

Imaging IT / Systems Integrator

Owns the PACS, DICOMweb endpoint, and Odoo instance. Needs clean MWL export, a documented XML-RPC/JSON-RPC surface, a clear security model, and clean-room viewer glue rather than a black-box integration they can't maintain.

How Clinical Imaging — Radiology (RIS) with DICOM/PACS Viewer Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Study status pipelineFull `ordered → scheduled → acquired → reported → signed` state machine with automated-action gatesWhatever you build; correctness and edge cases are on youOften a basic status field, rarely an enforced pipelineNo concept of a study; an imaging service is just an invoice line
DICOM Modality Worklist (MWL)MWL export so scanners pull the order list — no re-keying at the consoleRarely attempted; requires DICOM protocol knowledgeUsually absent — most stop at the report templateNone — Odoo does not speak DICOM
Embedded DICOM/PACS viewerOpen web viewer embedded as an OWL component against your DICOMweb URLPossible but significant clean-room integration effortTypically no in-record viewer at allNone
Radiologist reportingPer-modality structured templates (findings/impression) with signed, locked PDFBuildable, but template governance and locking are non-trivialGeneric report template, often no enforced sign-off lockNo structured reporting — a free-text note at best
Prior-study comparisonAuto-assembled prior list by patient + body part beside the current studyExtra build; matching logic must be designedGenerally not providedNone
EMR + billing integrationReport/key images to the patient timeline; charges posted to `account` invoiceYou wire it up and maintain itBilling sometimes present; EMR timeline push usually notInvoicing exists, but nothing links it to an imaging study or EMR
Support & ownershipBuilt, installed, supported; full git repo + docs + training handed overDepends entirely on your in-house team's availabilityVendor support varies; you adapt to their roadmapCommunity support only; no clinical imaging feature to support
Delivery modelBuild-to-order, one working week from confirmed scope, staging + UAT firstOpen-ended timeline driven by your backlogInstant download, but generic and integration still on youImmediate, but the feature simply doesn't exist

Frequently Asked Questions about Clinical Imaging

Does this include a PACS, or does it connect to the one we already have?

It connects to yours. The module provides the RIS layer inside Odoo — ordering, worklist, reporting, sign-off, billing — plus a DICOM Modality Worklist (MWL) export for your scanners and an embedded open web viewer that opens against your existing PACS/DICOMweb URL. We do not sell or bundle PACS storage; we build the clean-room glue that ties Odoo to the image store you run. If you don't yet have a DICOMweb-capable archive, we can advise on open options during scoping.

How long does delivery take?

This is a build-to-order module, not an instant download. Typical delivery is one working week from confirmed scope. The clock starts once we've agreed the modalities, your PACS/DICOMweb endpoint, report templates, and billing rules on the scoping call — not from the day you enquire. We build on a staging database first and run UAT with you before any production go-live.

How does pricing and scoping work?

Pricing starts from $999 as an indicative single-company base-scope figure. It is a starting point, not a fixed price. Drivers such as multi-company/multi-site coverage, deeper PACS/DICOMweb or HL7 integration, extra modality report templates, localization, and historical study-data migration change the number. After a 15–45 minute scoping call we send a fixed written quote for your exact requirements.

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 core builds on `base`, `mail`, `product`, `account`, `web`, and your `clinical-core-his-emr`. If your requested scope pulls in any Enterprise-only dependency, we tell you before you commit so there are no surprises at install time.

What about support and updates after go-live?

Every build includes a post-go-live support window for defect fixes and configuration adjustments, and you receive the full git repository so nothing is locked to us. Because your version is custom-built, it is not auto-updated from a marketplace; when you move to a newer Odoo release or need new modalities, templates, or integrations, we scope and quote that as a follow-on engagement. Ongoing support/maintenance retainers are available.

Can radiologists compare a study against the patient's prior imaging?

Yes. For each study the module assembles a prior-study comparison list for the same patient and body part and surfaces it beside the current study, so the radiologist reads in context and can open priors in the embedded viewer. The comparison logic (matching on body part, modality, and date window) is confirmed during scoping.

Once a report is signed, can it still be changed?

No — that's by design. Sign-off applies an electronic signature and locks the final report; the locked report is rendered as a QWeb PDF and cannot be silently edited afterward. Any correction follows a controlled addendum/amendment path rather than an in-place edit, preserving the medico-legal audit trail via Odoo's logging and chatter.

Request a quote

Clinical Imaging

A made-to-order Odoo radiology information system: imaging ordering from the EMR encounter, DICOM modality worklist for the scanners, radiologist reporting with signed final reports, and an embedded web DICOM/PACS viewer — all tied to the patient record. ECOSIRE builds, installs, and supports it after a scoping call.

  • Imaging study catalog modeled by modality (X-ray, CT, MRI, USG) as dedicated records with per-study pricing linked to `product.product` for billing
  • Imaging order raised directly from an EMR encounter, carrying clinical indication, requested procedure, laterality/body part, and priority (routine/urgent/stat)
  • Study status state machine (`ordered → scheduled → acquired → reported → signed`) enforced by `@api.depends` computes and Odoo automated actions
  • DICOM Modality Worklist (MWL) export so scanners pull accession number, demographics, and scheduled procedure instead of manual entry

Request a Quotation

Tell us about your Clinical Imaging 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.