| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employees (hr)
• Inventory (stock) • Invoicing (account) • Discuss (mail) |
| Lines of code | 1987 |
| Technical Name |
dental_hospital |
| License | AGPL-3 |
| Website | https://alantechnologies.in/ |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employees (hr)
• Inventory (stock) • Invoicing (account) • Discuss (mail) |
| Lines of code | 1987 |
| Technical Name |
dental_hospital |
| License | AGPL-3 |
| Website | https://alantechnologies.in/ |
๐ฆท Dental Management
Dental Hospital is a complete Dental Clinic Management system for Odoo. Manage appointments, treatments, patient records, prescriptions, and payments โ all within one module. Ideal for clinics and hospitals looking for streamlined, role-based operations.
๐ Why Use Dental Hospital?
- Seamless appointment handling with auto-filled patient info.
- Role-based access: Receptionists, Dentists, Managers, and Patients.
- Centralized tracking of treatments, prescriptions, and payments.
- Comprehensive treatment & payment logs per patient.
โ Key Features
- ๐ Appointment Management: Schedule, confirm, and track dental visits with urgency levels.
- ๐ Prescription Management: Connect treatments to prescriptions and medications.
- ๐ณ Payment Logs: Record full or partial payments, and track dues.
- ๐ฆท Tooth Mapping: Use a visual Many2many tooth selection model.
- ๐ Dashboard Ready: Extendable with OWL dashboards for reporting.
๐ฆ Feature Updates
๐ค User Roles
- Receptionist: Can manage patients and book appointments.
- Dentist: Can view and manage their assigned cases.
- Manager: Full access for clinic oversight.
- Patient (Portal): Can access their records securely online.
๐ Patient Portal Access
- Login to view appointments, treatments, and invoices.
- Download prescriptions, check balance dues.
๐ Portal Appointment Booking
- Book appointments online with date, time, and dentist.
- Get confirmation and reminders via email or WhatsApp.
๐ Use Case Scenario
- The receptionist books an appointment and assigns a dentist.
- The dentist treats the patient and records prescriptions.
- Payments are logged, and any balance tracked in the log.
- The manager reviews all operations and financials via backend.
๐ธ Screenshots
๐ Appointment Form (Calendar View)
๐งพ Patient Form
๐ฆท Teeth Chart - Affected Teeth
๐ Prescription Form
๐ Prescription PDF
๐งพ Dual Draft Invoices (Treatment + Prescription)
โ Confirm Treatment Invoice
๐ Payment History via Smart Button
๐ Need help or customizations?
Contact Us
Please log in to comment on this module
Error on activating on Debian12
<!-- Invisible the base fields --> <xpath expr="//field[@name='phone']" position="attributes"> <attribute name="invisible">1</attribute> </xpath> <xpath expr="//field[@name='l10n_in_gst_treatment']" position="attributes"> <attribute name="invisible">company_type == 'person'</attribute> </xpath> <xpath expr="//field[@name='l10n_in_pan']" position="attributes"> <attribute name="invisible">company_type == 'person'</attribute> </xpath> <xpath expr="//field[@name='website']" position="attributes"> <attribute name="invisible">company_type == 'person'</attribute> </xpath> <xpath expr="//field[@name='title']" position="attributes"> <attribute name="invisible">company_type == 'person'</attribute> </xpath> <xpath expr="//field[@name='category_id']" position="attributes"> <attribute name="invisible">company_type == 'person'</attribute> </xpath> <!-- Invisible the smart button Purchase on patient --> <xpath expr="//button[@name='%(purchase.act_res_partner_2_purchase_order)d']" position="attributes"> <attribute name="invisible">company_type == 'person'</attribute> </xpath> <!-- Invisible the smart button Vendor Bill on patient --> <xpath expr="//button[@name='%(purchase.act_res_partner_2_supplier_invoices)d']" position="attributes"> <attribute name="invisible">company_type == 'person'</attribute> </xpath> <!-- Invisible the smart button On-Time Rate on patient --> <xpath expr="//button[@icon='fa-truck']" position="attributes"> <attribute name="invisible">company_type == 'person'</attribute> </xpath> <xpath expr="//button[@name='action_view_stock_lots']" position="attributes"> <attribute name="invisible">company_type == 'person'</attribute> </xpath> <!-- <xpath expr="//button[@name='schedule_meeting']" position="attributes">--> <!-- <attribute name="invisible">company_type == 'person'</attribute>--> <!-- </xpath>--> <xpath expr="//button[@name='action_see_documents']" position="attributes"> <attribute name="invisible">company_type == 'person'</attribute> </xpath> <!-- <xpath expr="//button[@name='open_partner_ledger']" position="attributes">--> <!-- <attribute name="invisible">company_type == 'person'</attribute>--> <!-- </xpath>--> <xpath expr="//button[@name='action_view_sale_order']" position="attributes"> <attribute name="invisible">company_type == 'person'</attribute> </xpath> <!-- Invisible the page Sales Purchases on patient --> <xpath expr="//page[@name='sales_purchases']" position="attributes"> <attribute name="invisible">company_type == 'person'</attribute> </xpath> <!-- Invisible the page Accounting on patient --> <xpath expr="//page[@name='accounting']" position="attributes"> <attribute name="invisible">company_type == 'person'</attribute> </xpath> </data></field> </record>Cant install, same error below in instance with v18 CE. Regards
cant install
Oops!
Something went wrong... If you really are stuck, share the report with your friendly support service
Hide technical details
Odoo Server Error
RPC_ERROR
Odoo Server Error
Occured on 156.67.63.220:8072 on model ir.module.module and id 15 on 2025-05-31 13:58:05 GMT
Traceback (most recent call last): File "/opt/odoo18/odoo/http.py", line 1976, in _transactioning return service_model.retrying(func, env=self.env) File "/opt/odoo18/odoo/service/model.py", line 156, in retrying result = func() File "/opt/odoo18/odoo/http.py", line 1943, in _serve_ir_http response = self.dispatcher.dispatch(rule.endpoint, args) File "/opt/odoo18/odoo/http.py", line 2191, in dispatch result = self.request.registry['ir.http']._dispatch(endpoint) File "/opt/odoo18/odoo/addons/base/models/ir_http.py", line 333, in _dispatch result = endpoint(**request.params) File "/opt/odoo18/odoo/http.py", line 740, in route_wrapper result = endpoint(self, *args, **params_ok) File "/opt/odoo18/addons/web/controllers/dataset.py", line 42, in call_button action = call_kw(request.env[model], method, args, kwargs) File "/opt/odoo18/odoo/api.py", line 533, in call_kw result = getattr(recs, name)(*args, **kwargs) File "<decorator-gen-79>", line 2, in button_immediate_install File "/opt/odoo18/odoo/addons/base/models/ir_module.py", line 75, in check_and_log return method(self, *args, **kwargs) File "/opt/odoo18/odoo/addons/base/models/ir_module.py", line 480, in button_immediate_install return self._button_immediate_function(self.env.registry[self._name].button_install) File "/opt/odoo18/odoo/addons/base/models/ir_module.py", line 604, in _button_immediate_function registry = modules.registry.Registry.new(self._cr.dbname, update_module=True) File "<decorator-gen-13>", line 2, in new File "/opt/odoo18/odoo/tools/func.py", line 97, in locked return func(inst, *args, **kwargs) File "/opt/odoo18/odoo/modules/registry.py", line 127, in new odoo.modules.load_modules(registry, force_demo, status, update_module) File "/opt/odoo18/odoo/modules/loading.py", line 484, in load_modules processed_modules += load_marked_modules(env, graph, File "/opt/odoo18/odoo/modules/loading.py", line 365, in load_marked_modules loaded, processed = load_module_graph( File "/opt/odoo18/odoo/modules/loading.py", line 228, in load_module_graph load_data(env, idref, mode, kind='data', package=package) File "/opt/odoo18/odoo/modules/loading.py", line 72, in load_data tools.convert_file(env, package.name, filename, idref, mode, noupdate, kind) File "/opt/odoo18/odoo/tools/convert.py", line 608, in convert_file convert_xml_import(env, module, fp, idref, mode, noupdate) File "/opt/odoo18/odoo/tools/convert.py", line 679, in convert_xml_import obj.parse(doc.getroot()) File "/opt/odoo18/odoo/tools/convert.py", line 594, in parse self._tag_root(de) File "/opt/odoo18/odoo/tools/convert.py", line 548, in _tag_root raise ParseError(msg) from None # Restart with "--log-handler odoo.tools.convert:DEBUG" for complete traceback odoo.tools.convert.ParseError: while parsing /opt/odoo18/custom-addons/dental_hospital/views/patient_view.xml:4 Error while parsing or validating view: Element '<xpath expr="//button[@name='528']">' cannot be located in parent view View error context: {'file': '/opt/odoo18/custom-addons/dental_hospital/views/patient_view.xml', 'line': 1, 'name': 'res.partner.view.form.inherit.dental.clinical.management', 'view': ir.ui.view(1530,), 'view.model': 'res.partner', 'view.parent': ir.ui.view(126,), 'xmlid': 'view_partner_form'} The above server error caused the following client error: RPC_ERROR: Odoo Server Error RPC_ERROR at makeErrorFromResponse (http://156.67.63.220:8072/web/assets/7772eda/web.assets_web.min.js:3148:163) at XMLHttpRequest.<anonymous> (http://156.67.63.220:8072/web/assets/7772eda/web.assets_web.min.js:3153:13)