Skip to main content
Clinical Patient Portal — A patient-facing website and portal front-end for Odoo where patients self-register, book appointme — 1/1Illustrative preview

A patient-facing website and portal front-end for Odoo where patients self-register,

book appointments against real doctor availability, view validated results, pay invoices, and message their care team. Built to order by

ECOSIRE on top of Odoo's website, portal, payment, and mail framework.

What is Clinical Patient Portal?

A patient-facing website and portal front-end for Odoo where patients self-register, book appointments against real doctor availability, view validated results, pay invoices, and message their care team. Built to order by ECOSIRE on top of Odoo's website, portal, payment, and mail framework. 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

Patient self-registration that provisions a portal `res.users` and links it to the correct patient record by MRN, with an identity-verification gate before any clinical data is exposed
Online appointment booking driven by live practitioner availability — computed slot fields (`@api.depends` over doctor schedules, existing bookings, and slot duration) so only genuinely open times are reservable
Booked slots write back as real clinical appointments in the `clinical-core-his-emr` layer, keeping the front desk calendar and portal in one source of truth
Result-release model that shows lab and radiology reports only after a clinician sets them to a validated state — patients download the QWeb PDF, never a draft
Portal dashboard surfacing prescriptions, visit history, and active care plans pulled read-only from the clinical record
View and pay outstanding invoices online through Odoo's `payment` provider framework, reconciling straight to `account.move`
Document upload (ID, prior reports, referral letters) as `ir.attachment` records attached directly to the patient record with type tagging
Care-team messaging built on `mail.thread` so patient messages land in the clinician's normal chatter with full audit trail and follower routing
Consent-form review and e-signature from the portal, pairing with the consent app to persist a signed, timestamped record
Self-reported vitals capture and a configurable pre-visit intake questionnaire that writes into the record before the appointment
Automated actions for appointment reminders and result-ready email notifications, with configurable timing and multilingual templates
Row-level security via `ir.model.access.csv` plus record rules scoping every portal user to their own MRN-linked records — guessed ids and crafted URLs return nothing
Full 11-language and RTL support inheriting the storefront i18n conventions, with translated QWeb templates and email bodies
Data reachable over Odoo's XML-RPC/JSON-RPC API for external booking sites, kiosks, or mobile front-ends; built and tested against Odoo 17.0, 18.0, and 19.0

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

Front desks drown in phone calls for appointments, result copies, invoice balances, and referral paperwork — while patients expect the same self-service they get from every other modern service provider. Odoo ships a generic portal mixin that can expose sale orders and invoices to a logged-in contact, and a website layer for public pages, but out of the box neither knows anything about a Medical Record Number, a doctor's real slot availability, a validated radiology report, or the consent and intake workflows a clinical operation runs on. Bridging that gap with clicks alone is where native Odoo runs out of road: there is no standard model linking a res.partner portal user to a patient's clinical record, no booking engine that respects practitioner calendars and resource constraints, and no result-release gate that only shows reports a clinician has validated.

We build a Clinical Patient Portal as a dedicated Odoo module (its own __manifest__.py depending on website, portal, payment, mail, account, and your clinical-core-his-emr layer). Self-registration creates a portal res.users and securely links it to the correct patient record by MRN, with an identity-verification step so accounts can never see another patient's data. The booking front-end is an OWL/QWeb controller that reads live practitioner availability — computed fields (@api.depends) over each doctor's working schedule, existing appointments, and slot duration — so patients only ever see and reserve genuinely open times, which write straight back as clinical appointments. A result-release model exposes lab and radiology reports only once a clinician sets them to a validated state; patients view and download the underlying QWeb PDF, never a draft. The dashboard surfaces prescriptions, visit history, uploaded documents, and outstanding invoices, with online payment wired through Odoo's payment provider framework so a patient settles a balance in the same session.

Security is enforced the Odoo-native way, not bolted on: every model ships ir.model.access.csv entries plus record rules that scope a portal user strictly to their own MRN-linked records, so a crafted URL or guessed record id returns nothing. Care-team messaging rides Odoo's mail.thread, giving patients a threaded conversation that appears in the clinician's normal chatter with full audit history. Consent forms are presented for review and e-signature from the portal (pairing with your consent app), self-reported vitals and a pre-visit intake questionnaire flow into the record before the visit, and automated actions send appointment reminders and result-ready notifications by email. The entire portal inherits the storefront's 11-language and RTL conventions, and everything is built and tested against Odoo 17.0, 18.0, and 19.0, respecting Community-vs-Enterprise differences (e.g. we don't assume Enterprise-only widgets unless your edition provides them). Where you have an external booking site or kiosk, the same data is reachable over Odoo's XML-RPC/JSON-RPC API.

Because this is build-to-order, nothing ships until we've scoped it with you. After a short scoping call we confirm your MRN model, practitioner-calendar source, result-validation states, payment providers, and branding, then build, install on a staging environment, run UAT, and go live — typically one working week from confirmed scope. You receive the installable source for your version, documentation, training, and a post-go-live support window. Pricing starts from $999 (indicative, single-company base scope); multi-company or multi-branch deployments, deeper localization, extra payment/identity integrations, and migration of historical patient/portal data increase the quoted scope.

What you get

  • Installable Odoo module source code (`__manifest__.py`, models, controllers, QWeb/OWL views, security rules) built for your Odoo 17.0, 18.0, or 19.0 version and edition
  • Installation and configuration on your environment, including payment provider, MRN-link, and practitioner-calendar wiring
  • Technical documentation: model/field reference, record-rule map, controller routes, and configuration guide
  • End-user guide plus a live training session for front-desk and clinical staff
  • UAT on a staging environment with a documented test script and a rollback plan before production go-live
  • Post-go-live support window for defect fixes and configuration adjustments
  • Git repository handover with full commit history and tagged release
  • Configured automated actions and email templates for reminders and result-ready notifications across your active languages

Who this is for

Clinic Operations Lead

Wants to cut front-desk phone volume for bookings, result copies, and balance enquiries by moving patients to self-service, without adding a separate portal vendor or a second login for staff to manage.

Hospital Marketing / Digital Lead

Needs a modern, branded, multilingual patient-facing experience that reflects well on the institution, works in RTL for regional audiences, and integrates seamlessly with the website they already run on Odoo.

Practice Manager / Revenue Lead

Cares about faster invoice settlement and fewer unpaid balances — wants patients to see and pay outstanding invoices online through the same providers the practice already uses, reconciling cleanly to accounting.

IT / Odoo Administrator

Owns the Odoo instance and needs a portal that respects record rules and access CSVs, doesn't leak cross-patient data, upgrades cleanly across 17/18/19, and hands over as source they can maintain.

How Clinical Patient Portal Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Fit to your MRN & clinical workflowBuilt to your exact MRN model, availability logic, and result-release statesAchievable but you own all design decisions and reworkGeneric schema you must adapt to your clinicNo concept of MRN, clinical results, or intake
Appointment booking against real availabilityLive computed slots from practitioner calendars, writes back as clinical appointmentsMust be designed and built from scratchVaries; often a simplified or fixed-slot bookerNot available in portal core
Validated result releaseReports shown only after clinician validation; QWeb PDF downloadYou define and implement the release gateMay expose documents without a clinical validation stateNo result-release model
Cross-patient data securityRecord rules + access CSV scoping every user to their MRN, testedDepends entirely on your implementation disciplineDepends on vendor's rule design; you must verifyPortal scopes to partner but has no clinical model to protect
Online invoice paymentWired to your Odoo payment providers, reconciles to account.moveBuild and test the payment flow yourselfSometimes included, provider set may be limitedPortal can show invoices; payment depends on provider config
Multilingual & RTLFull 11-language + RTL inheriting storefront i18nTranslate and RTL-test everything yourselfOften English-first with partial translationsFramework supports i18n but no clinical portal content ships
Version support & handoverBuilt for 17/18/19, source + git repo + docs handed overYou maintain it, no external handoverBinary/OPL or AGPL app on vendor's release cadenceUpgrades with Odoo core; nothing clinical to hand over
Total effort to productionScoped, built, UAT'd, and supported by us in one working weekLonger; full spec, build, and QA on your teamFast to install but slow to fit; adaptation cost hiddenCannot reach this feature set without custom work

Frequently Asked Questions about Clinical Patient Portal

How long does delivery take?

This is a build-to-order module, not an instant download. After a scoping call to confirm your MRN model, practitioner calendars, result-validation states, and payment providers, typical delivery is one working week from confirmed scope. We build on staging, run UAT with you, then go live. Complex multi-company or heavy data-migration scopes extend that, and we tell you the realistic timeline in the quote.

Is this a ready-made app I can download from apps.odoo.com today?

No. ECOSIRE builds, installs, and supports it specifically for your clinic and your Odoo version. Unlike a typical off-the-shelf module, it's fitted to your actual MRN linkage, doctor availability logic, and result-release workflow rather than a generic schema you'd have to adapt yourself.

How does pricing and scoping work?

Pricing starts from $999 as an indicative, single-company base-scope figure. It's not a firm fixed price — after a short scoping call we give you a fixed written quote. Drivers that increase scope include multi-company or multi-branch setups, deeper localization, additional payment or identity integrations, and migrating historical patient or portal data.

What about support and updates after go-live?

Every build includes a post-go-live support window for defect fixes and configuration adjustments. Because you receive the full source and git repo, you can maintain it yourself or engage us for ongoing support and version upgrades. We build against 17.0/18.0/19.0, and moving to a newer Odoo release is a scoped upgrade engagement.

How do you stop one patient from seeing another patient's data?

Security is enforced with Odoo's native `ir.model.access.csv` and record rules, so every portal user is scoped strictly to their own MRN-linked records at the ORM level. A crafted URL or guessed record id returns nothing rather than another patient's data. Result release is additionally gated so only clinician-validated reports are ever visible.

Does it work with Odoo Community or only Enterprise?

It builds on `website`, `portal`, `payment`, `mail`, and `account`, which exist in both editions, so it can run on Community. Where a capability depends on an Enterprise-only feature in your stack, we confirm your edition during scoping and design around it rather than assuming Enterprise widgets are present.

Can external systems or a mobile app reach the same data?

Yes. All the portal's models and appointment logic are reachable over Odoo's XML-RPC/JSON-RPC API, so an external booking site, kiosk, or mobile front-end can create bookings and read results through the same validated, permission-checked layer the portal uses.

Request a quote

Clinical Patient Portal

A patient-facing website and portal front-end for Odoo where patients self-register, book appointments against real doctor availability, view validated results, pay invoices, and message their care team. Built to order by ECOSIRE on top of Odoo's website, portal, payment, and mail framework.

  • Patient self-registration that provisions a portal `res.users` and links it to the correct patient record by MRN, with an identity-verification gate before any clinical data is exposed
  • Online appointment booking driven by live practitioner availability — computed slot fields (`@api.depends` over doctor schedules, existing bookings, and slot duration) so only genuinely open times are reservable
  • Booked slots write back as real clinical appointments in the `clinical-core-his-emr` layer, keeping the front desk calendar and portal in one source of truth
  • Result-release model that shows lab and radiology reports only after a clinician sets them to a validated state — patients download the QWeb PDF, never a draft

Request a Quotation

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