OdooOdoo 19 Enterprise

    An entire clinic inside Odoo.

    Website, scheduling, WhatsApp, reception, signed records, patient portal, billing and payouts in a single system, built by Code and Soul.

    See it working in a fictitious clinic, through the eyes of each role. Access is free and the link arrives by e-mail. The demo is in Brazilian Portuguese.

    See the clinic's day
    saude-demo.codeandsoul.com
    Homepage of the Lumea Saúde site, with a live schedule showing the next free slots of three professionals
    Clínica › Atendimento › Atendimentos
    Encounters list in Odoo, with start time, patient, professional, appointment type, payment, no-show risk and status

    Lumea Saúde is fictitious. The brand, professionals, patients, appointments and documents in the demo are illustrative, and the database is rebuilt from scratch after each use. Screens are shown as they are, in Brazilian Portuguese.

    Scheduling in one system, WhatsApp on another phone, finance in a spreadsheet. There is one patient, and each place knows only a piece of them.

    On this platform, online booking, the conversation, the appointment, the record, the invoice and the payout happen in the same system, on the same patient file. There is nothing to integrate later, because it all starts together.

    Why Odoo, and not one more clinic system.

    • One patient, one file

      Appointment, conversation, invoice and recurring plan stay linked to the same person, in the same system. No exports or syncing between tools to keep that standing.

    • The rest of the company is already there

      Accounting, CRM, inventory and HR are apps of the same Odoo. When the clinic needs one of them, it comes in without integrating one more vendor.

    • Custom code only where something is missing

      Calendar, invoicing, recurring plans, video and official WhatsApp are native. What is specific to a clinic lives in separate modules, without touching the Odoo core.

    What Code and Soul built

    14 custom modules
    • Patient, professional, medical council and care teams
    • LGPD consents (Brazil’s data protection law) and audit trail
    • WhatsApp triage and care queue
    • Encounters, My day and waiting list
    • Signed record and PDF documents
    • Digital reception by link and patient portal
    • Ticket, TV panel and measured waiting time
    • Follow-up, check-in and outcome questionnaire
    • Balance invoicing and payout per professional

    What already comes with Odoo

    19 Enterprise, core unchanged
    • WebsiteThe clinic's public website
    • AppointmentsOnline slots and advance deposit
    • Official WhatsAppMeta's official channel
    • CalendarEach professional's calendar
    • Discuss and videoTeleconsultation video and messages
    • ContactsThe base of the patient file
    • EmployeesProfessionals and team
    • SubscriptionsRecurring follow-up plans
    • InvoicingInvoices and payments

    Four people, the same day, each seeing only what is theirs.

    Patient. Finds, books and arrives prepared.

    • Online booking over each professional's real hours, with an advance deposit when the appointment type requires it.
    • One link per appointment: confirm details, accept the terms, answer the pre-consultation and pay. For teleconsultation, the same link opens the video.
    • Portal with appointments, PDF documents, uploaded exams, messages with the team and consents, with revocation.
    On Odoo:WebsiteAppointmentsInvoicing
    saude-demo.codeandsoul.com/my
    The patient's portal, with appointments, documents, messages with the team, uploaded exams, consents and follow-up

    Reception. Each message goes to whoever should read it.

    • The WhatsApp message is triaged (administrative, rescheduling, clinical or urgent) and enters the queue with an owner and a deadline in business hours.
    • When a conversation becomes clinical, reception leaves it. The queue holds operational data only.
    • Outside business hours, an automatic reply gives the return deadline, once every 12 hours.
    On Odoo:Official WhatsAppCalendarContacts
    Clínica › Atendimento › Fila de atendimento
    Care queue with four triaged conversations: urgent and clinical routed to the professional, rescheduling and administrative to reception, each with a reply deadline

    An urgent message does not wait in line. The patient immediately gets the fixed instruction, and the team is alerted with priority.

    WhatsApp simulado
    Conversation in the simulator: the patient writes about chest pain and shortness of breath and receives the fixed instruction to call 192, the Brazilian emergency line, or go to emergency care

    The TV calls the ticket, never the name.

    Arrival by the QR code in the link, a ticket for the day and a call on the panel within 5 seconds, with the room. The page runs on any TV with a browser, with no login, and management changes the address if it leaks.

    Call panel on a TV: ticket PAU-001 in Room 2, the previous call and the average wait, with no patient name

    Professional. The record, once signed, does not change.

    • The day as cards, made for the phone, with the pre-consultation the patient answered.
    • Only the author signs. The signature stores the SHA-256 of the content, and a correction becomes an addendum with author, date and chained hash.
    • Documents issued as PDFs to the portal, and follow-up with the risk explained in one sentence.
    On Odoo:Discuss and videoOfficial WhatsAppEmployees
    Clínica › Registros de atendimento
    Encounter record with the Signed ribbon, the notice that it is not a certified medical record and, beside it, the history with the signature hash and the addendum
    1. 1Signed, by the author only. After that, the record does not change.
    2. 2The signature stores the SHA-256 of the content, and the screen warns if it stops matching.
    3. 3A correction becomes an addendum, with author, date and chained hash.
    4. 4The screen itself says what the record is not: a certified medical record.
    Registro › Assinatura
    Signature tab of the record: who signed, when, and the full SHA-256 hash of the content
    Clínica › Atendimento › Meu dia
    The professional's day as cards, with patients in the waiting room, each ticket and the Call, Start and Record buttons

    Management. Operations, money and audit, without reading clinical records.

    • Payout per professional on what was billed and paid, with no patient name on the statement.
    • Indicators for no-shows, last-minute cancellations, revenue per appointment and messages on time, each with how it is calculated.
    • LGPD trail: each opening of a clinical record with who, when and from which network, without the content.
    On Odoo:InvoicingSubscriptions
    Clínica › Financeiro › Repasses
    Payout statement per professional, with the amount billed and paid, the payout and the status, with no patient name
    Clínica › LGPD › Acessos a registros clínicos
    Audit trail of access to clinical records: when, who, which patient, the action and the originating network, with none of the record content

    Who sees what is decided by the structure, not by goodwill.

    Clinical content lives in its own models, separate from the schedule and the queue. That is why reception and management run the entire operation without opening anything clinical.

    Schedule, arrival and care queue
    yes
    Administrative WhatsApp conversation
    yes
    Clinical conversation, record and draft documents
    no
    Check-ins, goals and questionnaires
    progress and risk
    Payouts, rules and finance
    no
    Record access trail
    no

    No clinical reply is ever automated.

    Triage only decides where the message goes. A person always answers, and an urgent message is never downgraded: the patient immediately gets the fixed instruction to call 192, the Brazilian emergency line, or go to emergency care.

    Six engineering decisions you can check in the demo.

    14
    custom modules, separate from the Odoo core
    220+
    automated tests in the gate of every deploy
    15 min
    demo script, checked step by step by a test
    • The record gives itself away

      If the content of a signed record is changed outside the system, the screen warns that it no longer matches the hash. The same goes for documents issued as PDFs, which do not change after issue.

    • The trail cannot be erased

      Every opening of a file or record stores who, when and from which network, without the content. Nobody edits or deletes it, and only management reads it. Consents are versioned, with immutable acceptance and recorded revocation.

    • A contact is a way in

      A new phone or e-mail given through the link stays pending until reception checks a document, because the contact is the login to the portal.

    • The wait is measured, not promised

      The waiting time on the site is the average from arrival to call over the last 3 hours. With too few calls, nothing is shown.

    • The freed slot does not sit idle

      A cancelled slot goes by WhatsApp to the first person in line who fits the period, with 30 minutes to accept. Then to the next.

    • It works without the intelligence layer

      The intelligence layer suggests triage and an administrative draft, receiving only a pseudonym and text with no name, from those who consented. With no answer in 3 seconds, the local rule applies.

    Prefer to see it with your clinic's brand?

    In a presentation with the team, your clinic's name, logo and colors go on the site, the portal, the login, the screens and the PDFs, always with the demo notice. At the end, everything goes back to what it was.

    Schedule a presentation

    What it is not yet, said before you ask.

    Is the demo available in English?
    Not yet. The access e-mail and the demo are in Brazilian Portuguese, and the platform was built for how a clinic in Brazil operates. The pages that lead you into the demo follow your browser's language.
    Is it a certified electronic medical record?
    No. The platform does not hold the SBIS/NGS2 certification, the Brazilian standard for medical record software, and the screen itself says so. There is an interface to export to an external record system; in the demo it uses a test adapter, identified as a test.
    Does the record signature count as a digital signature?
    No. The SHA-256 hash ensures the integrity of the content and does not replace an ICP-Brasil signature, the Brazilian legal standard. The interface for an external provider exists and, in the demo, uses a test adapter, identified on the screen and in the PDF.
    Does it bill insurers through TISS or issue tax invoices?
    Not in this version. The patient file stores the insurer and card number, without billing through TISS, the Brazilian insurance standard, and tax invoice issuing is not configured.
    Are WhatsApp and payment in the demo real?
    The flow is real, with a test account and provider. Messages go through Odoo's official WhatsApp app with a simulated account, and payment uses a test provider. For real use, the clinic needs its own Meta Business account and a payment method.

    See it working, at your own pace.

    Free. Fill in the form and your personal link arrives by e-mail.

    1. 1You fill in the form.
    2. 2The personal link arrives at the e-mail you provide and is valid for 7 days.
    3. 3The demo is available 24 hours a day, in Brazilian Portuguese. The first access can take up to 2 minutes.

    Do not enter patient data or clinical information: the form needs neither.

    This is where the access link goes.

    Schedule a presentation