diff --git a/medical_lab_management/README.rst b/medical_lab_management/README.rst new file mode 100755 index 000000000..e5e8aa177 --- /dev/null +++ b/medical_lab_management/README.rst @@ -0,0 +1,54 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg + :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +Medical Lab Management +====================== +Helps You To Manage Medical Lab Operations. + +Configuration +============ +- www.odoo.com/documentation/18.0/setup/install.html +- Install our custom addon + +Company +------- +* `Cybrosys Techno Solutions `__ + +License +------- +GNU AFFERO GENERAL PUBLIC LICENSE, Version 3 (AGPLv3) +(https://www.gnu.org/licenses/agpl-3.0-standalone.html) + +Credits +------- +* Developers: Anusha P P, + Niyas Raphy, + (V14) Muhammad P, + (V15) Mily Shajan, + (V16) Sabeel B, + (V17) Sruthi Pavithran, + (V18) Gayathri V, + Contact: odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ diff --git a/medical_lab_management/__init__.py b/medical_lab_management/__init__.py new file mode 100755 index 000000000..39e2f3cb9 --- /dev/null +++ b/medical_lab_management/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Gayathri V (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import models diff --git a/medical_lab_management/__manifest__.py b/medical_lab_management/__manifest__.py new file mode 100755 index 000000000..8ecb3bfc0 --- /dev/null +++ b/medical_lab_management/__manifest__.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Gayathri V (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +{ + 'name': "Medical Lab Management", + 'version': '18.0.1.0.0', + 'category': 'Industries', + 'summary': """Manage Medical Lab Operations.""", + 'description': """Manage Medical Laboratory Operations, + Manage Appointments.""", + 'author': "Cybrosys Techno Solutions", + 'company': "Cybrosys Techno Solutions", + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['base', 'mail', 'account', 'contacts'], + 'data': [ + 'security/medical_lab_management_security.xml', + 'security/ir.model.access.csv', + 'data/lab_appointment_sequence.xml', + 'data/lab_patient_sequence.xml', + 'data/lab_request_sequence.xml', + 'views/res_partner_views.xml', + 'views/lab_patient_views.xml', + 'views/test_unit_views.xml', + 'views/lab_test_views.xml', + 'views/lab_test_content_type_views.xml', + 'views/physician_specialty_views.xml', + 'views/physician_details_views.xml', + 'views/lab_request_views.xml', + 'views/lab_appointment_views.xml', + 'views/account_move_views.xml', + 'report/lab_request_reports.xml', + 'report/lab_patient_reports.xml', + 'report/lab_request_templates.xml', + 'report/lab_patient_templates.xml', + ], + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': True, +} diff --git a/medical_lab_management/data/lab_appointment_sequence.xml b/medical_lab_management/data/lab_appointment_sequence.xml new file mode 100755 index 000000000..4c80e72a6 --- /dev/null +++ b/medical_lab_management/data/lab_appointment_sequence.xml @@ -0,0 +1,13 @@ + + + + + + Appointment + lab.appointment + ID + 3 + + + + diff --git a/medical_lab_management/data/lab_patient_sequence.xml b/medical_lab_management/data/lab_patient_sequence.xml new file mode 100755 index 000000000..53fa00108 --- /dev/null +++ b/medical_lab_management/data/lab_patient_sequence.xml @@ -0,0 +1,13 @@ + + + + + + Patient + lab.patient + PID + 3 + + + + diff --git a/medical_lab_management/data/lab_request_sequence.xml b/medical_lab_management/data/lab_request_sequence.xml new file mode 100755 index 000000000..5bc4d97bf --- /dev/null +++ b/medical_lab_management/data/lab_request_sequence.xml @@ -0,0 +1,13 @@ + + + + + + Lab Request + lab.request + LR + 3 + + + + diff --git a/medical_lab_management/doc/RELEASE_NOTES.md b/medical_lab_management/doc/RELEASE_NOTES.md new file mode 100755 index 000000000..869dd7043 --- /dev/null +++ b/medical_lab_management/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 19.04.2025 +#### Version 18.0.1.0.0 +#### ADD +- Initial Commit for Medical Lab Management. diff --git a/medical_lab_management/models/__init__.py b/medical_lab_management/models/__init__.py new file mode 100755 index 000000000..14cfae3c5 --- /dev/null +++ b/medical_lab_management/models/__init__.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Gayathri V (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import account_move +from . import lab_appointment +from . import lab_appointment_lines +from . import lab_patient +from . import lab_request +from . import lab_test +from . import lab_test_attribute +from . import lab_test_content_type +from . import physician_speciality +from . import res_partner +from . import test_unit diff --git a/medical_lab_management/models/account_move.py b/medical_lab_management/models/account_move.py new file mode 100755 index 000000000..c7f53dcfd --- /dev/null +++ b/medical_lab_management/models/account_move.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Gayathri V (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class AccountMove(models.Model): + """ + This class inherits the 'account.move' model to add fields for lab + invoices. + """ + _inherit = 'account.move' + + is_lab_invoice = fields.Boolean(string="Is Lab Invoice", + help="Is it Lab Invoice or Not") + lab_request_id = fields.Many2one('lab.appointment', + string="Lab Appointment", + help="Source Document") + + def _invoice_paid_hook(self): + """ + This function extends the behavior of the 'action_post' + method to update the state of the associated Lab Appointment to + 'invoiced' when the invoice is marked as paid. + :param self: The record itself. + """ + res = super()._invoice_paid_hook() + + for rec in self: + rec.lab_request_id.write({'state': 'invoiced'}) + return res diff --git a/medical_lab_management/models/lab_appointment.py b/medical_lab_management/models/lab_appointment.py new file mode 100755 index 000000000..f7807c88a --- /dev/null +++ b/medical_lab_management/models/lab_appointment.py @@ -0,0 +1,212 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Gayathri V (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +import datetime +from odoo.exceptions import UserError +from odoo import api, fields, models, _ + + +class LabAppointment(models.Model): + """ + Model for managing lab appointments.This class defines the structure a + nd behavior of lab appointments, including the creation of invoices and + lab test requests. + """ + _name = 'lab.appointment' + _inherit = ['mail.thread'] + _description = "Appointment" + _order = 'appointment_date' + + user_id = fields.Many2one('res.users', help="Responsible user", + string='Responsible', readonly=True) + patient_id = fields.Many2one('lab.patient', + string='Patient', required=True, + help='Patient Name') + name = fields.Char(string='Appointment ID', readonly=True, + default=lambda self: _('New'), + help='Name of the lab appointment') + date = fields.Datetime(string='Requested Date', + default=lambda s: fields.Datetime.now(), + help="Date in which patient appointment is noted") + appointment_date = fields.Datetime(string='Appointment Date', + default=lambda s: fields.Datetime.now(), + help="This is the appointment date") + physician_id = fields.Many2one('res.partner', + string='Referred By', + help="Physician referred by") + comment = fields.Text(string='Comments', help="Extra information") + appointment_line_ids = fields.One2many('lab.appointment.lines', + 'test_line_appointment_id', + string="Test Request", + help="Test requests for appointment") + request_count = fields.Integer(compute="_compute_state", + string='# of Requests', copy=False, + default=0,help="Number of Requests") + inv_count = fields.Integer(compute="_compute_state",help="Number of Invoice", + string='# of Invoices', copy=False, default=0) + state = fields.Selection([ + ('draft', 'Draft'), + ('confirm', 'Confirmed'), + ('request_lab', 'Lab Requested'), + ('completed', 'Test Result'), + ('to_invoice', 'To Invoice'), + ('invoiced', 'Done'), + ('cancel', 'Cancelled'), + ], string='Status', readonly=True, copy=False, index=True, tracking=True, + default='draft', + ) + priority = fields.Selection([ + ('0', 'Low'), + ('1', 'Normal'), + ('2', 'High') + ], default='0') + + + @api.model_create_multi + def create(self, vals_list): + """ + Create a new lab appointment record.This method creates a new lab + appointment record and assigns a unique appointment ID to it. + :param self: The record itself. + :param dict vals_list: A dictionary of values for creating the lab + appointment record. + :return: The created lab appointment record. + :rtype: LabAppointment + + """ + for vals in vals_list: + vals['name'] = self.env['ir.sequence'].next_by_code( + 'lab.appointment') or _('New') + return super().create(vals_list) + + def _compute_state(self): + """ + Compute the number of test requests and invoices related to the + appointment.This method calculates and updates the counts of test + requests and invoices associated with the appointment. + :param self: The record itself. + """ + for obj in self: + obj.request_count = self.env['lab.request'].search_count( + [('app_id', '=', obj.id)]) + obj.inv_count = self.env['account.move'].search_count( + [('lab_request_id', '=', obj.id)]) + + def action_create_invoice(self): + """ + Create an invoice for the lab appointment.This method creates an + invoice for the lab appointment and adds invoice lines for the + selected lab tests. + :param self: The record itself. + """ + account_move = self.env["account.move"] + for lab in self: + lab.write({'state': 'to_invoice'}) + curr_invoice = { + 'partner_id': lab.patient_id.patient_id.id, + 'state': 'draft', + 'move_type': 'out_invoice', + 'invoice_date': str(datetime.datetime.now()), + 'invoice_origin': "Lab Test# : " + lab.name, + 'lab_request_id': lab.id, + 'is_lab_invoice': True, + } + inv_ids = account_move.create(curr_invoice) + inv_id = inv_ids.id + if inv_ids: + journal = self.env['account.journal'].search( + [('type', '=', 'sale')], limit=1) + prd_account_id = journal.default_account_id.id + list_value = [] + if lab.appointment_line_ids: + for line in lab.appointment_line_ids: + list_value.append((0, 0, { + 'name': line.lab_test_id.lab_test, + 'price_unit': line.cost, + 'quantity': 1.0, + 'account_id': prd_account_id, + 'move_id': inv_id, + })) + inv_ids.write({'invoice_line_ids': list_value}) + view_id = self.env.ref('account.view_move_form').id + return { + 'view_mode': 'form', + 'res_model': 'account.move', + 'view_id': view_id, + 'type': 'ir.actions.act_window', + 'name': _('Lab Invoices'), + 'res_id': inv_id + } + + def action_request(self): + """ + Create lab test requests for the selected lab tests.This method + creates lab test requests for the selected lab tests associated + with the appointment + :param self: The record itself. + """ + if self.appointment_line_ids: + for line in self.appointment_line_ids: + lab_test = self.env['lab.test'].search( + [('lab_test', '=', line.lab_test_id.lab_test)]) + self.env['lab.request'].create( + {'lab_request_id': self.name, + 'app_id': self.id, + 'lab_requestor_id': self.patient_id.id, + 'lab_requesting_date': self.appointment_date, + 'test_request_id': line.lab_test_id.id, + 'request_line_ids': [(6, 0, + [x.id for x in lab_test.test_lines_ids])], + }) + self.state = 'request_lab' + else: + raise UserError(_('Please Select Lab Test.')) + + def action_confirm_appointment(self): + """ + Confirm the lab appointment and send a confirmation email to the + patient. + :param self: The record itself. + """ + message_body = ("Dear " + + self.patient_id.name + "," + + "
Your Appointment Has been Confirmed " + + "
Appointment ID : " + self.name + + "
Date : " + str(self.appointment_date) + + '

Thank you') + template_obj = self.env['mail.mail'] + template_data = { + 'subject': 'Appointment Confirmation', + 'body_html': message_body, + 'email_from': 'michaelmorbius915@gmail.com', + 'email_to': self.patient_id.email + } + template_id = template_obj.create(template_data) + template_obj.send(template_id) + self.write({'state': 'confirm'}) + + def action_cancel_appointment(self): + """ + Cancel the lab appointment.This method cancels the lab appointment + by setting its state to 'cancel'. + :param self: The record itself. + """ + return self.write({'state': 'cancel'}) diff --git a/medical_lab_management/models/lab_appointment_lines.py b/medical_lab_management/models/lab_appointment_lines.py new file mode 100755 index 000000000..41bb72d0d --- /dev/null +++ b/medical_lab_management/models/lab_appointment_lines.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Gayathri V (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import api, fields, models + + +class LabAppointmentLines(models.Model): + """ + This class represents Lab Appointment Lines, which are individual + tests associated with a Lab Appointment. + """ + _name = 'lab.appointment.lines' + _description = 'Lab Appointment ' + + lab_test_id = fields.Many2one('lab.test', string="Test") + cost = fields.Float(string="Cost", help="Cost of the lab test") + requesting_date = fields.Date(string="Date", + help="Requesting date of lab test") + test_line_appointment_id = fields.Many2one('lab.appointment', + string="Appointment") + + @api.onchange('lab_test_id') + def cost_update(self): + """ + Update the 'cost' field when a Lab Test is selected. + :param self: The record itself. + """ + if self.lab_test_id: + self.cost = self.lab_test_id.test_cost diff --git a/medical_lab_management/models/lab_patient.py b/medical_lab_management/models/lab_patient.py new file mode 100755 index 000000000..f9503a4b5 --- /dev/null +++ b/medical_lab_management/models/lab_patient.py @@ -0,0 +1,107 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Gayathri V (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from dateutil.relativedelta import relativedelta +from odoo import api, fields, models, _ + + +class LabPatient(models.Model): + """ + This class represents Patient information in a laboratory system. + """ + _name = 'lab.patient' + _rec_name = 'patient_id' + _description = 'Patient' + + patient_id = fields.Many2one('res.partner', string='Partner', + required=True) + patient_image = fields.Binary(string='Photo', + help="Profile image for patient") + patient = fields.Char(string='Patient', readonly=True) + name = fields.Char(string='Patient ID', default=lambda self: _('New'), readonly=True) + title = fields.Selection([ + ('ms', 'Miss'), + ('mister', 'Mister'), + ('mrs', 'Mrs'), + ], string='Title', default='mister', required=True) + emergency_contact_id = fields.Many2one( + 'res.partner', string='Emergency Contact', + help="Emergency contact number for patient") + gender = fields.Selection( + [('m', 'Male'), ('f', 'Female'), + ('ot', 'Other')], string='Gender',help="Gender of the patient", required=True) + dob = fields.Date(string='Date Of Birth', help="Date of birth of patient", + required=True) + age = fields.Char(string='Age', help="Age of the patient", + compute='compute_age', store=True) + blood_group = fields.Selection( + [('A+', 'A+ve'), ('B+', 'B+ve'), ('O+', 'O+ve'), + ('AB+', 'AB+ve'), ('A-', 'A-ve'), ('B-', 'B-ve'), ('O-', 'O-ve'), + ('AB-', 'AB-ve')], 'Blood Group') + visa_info = fields.Char(string='Visa Info', size=64, + help="Fill visa information") + id_proof_number = fields.Char(string='ID Proof Number', + help="Fill id proof information") + note = fields.Text(string='Note') + date = fields.Datetime(string='Date Requested', + default=lambda s: fields.Datetime.now(), + help="Requested date of lab request") + phone = fields.Char(string="Phone", required=True, + help="Phone number of patient") + email = fields.Char(string="Email", required=True, help="Email of patient") + + @api.depends('dob') + def compute_age(self): + """ + Compute the patient's age based on their date of birth. + :param self: The record itself. + """ + for data in self: + if data.dob: + dob = fields.Datetime.from_string(data.dob) + date = fields.Datetime.from_string(data.date) + delta = relativedelta(date, dob) + data.age = str(delta.years) + ' ' + 'years' + else: + data.age = '' + + @api.model_create_multi + def create(self, vals_list): + """ + Create a new patient record and generate a unique patient ID + :param self: The record itself. + :param dict vals_list: A dictionary of values for creating the patient record. + :return: The created patient record. + :rtype: LabPatient + """ + for vals in vals_list: + sequence = self.env['ir.sequence'].next_by_code('lab.patient') + vals['name'] = sequence or _('New') + return super().create(vals_list) + + @api.onchange('patient') + def detail_get(self): + """ + Update patient contact details based on the selected partner + :param self: The record itself. + """ + self.phone = self.patient.phone + self.email = self.patient.email diff --git a/medical_lab_management/models/lab_request.py b/medical_lab_management/models/lab_request.py new file mode 100755 index 000000000..a22ecc8c2 --- /dev/null +++ b/medical_lab_management/models/lab_request.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Gayathri V (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import api, fields, models, _ +from odoo.exceptions import ValidationError + + +class LabRequest(models.Model): + """ + Model for managing Lab Requests + """ + _name = 'lab.request' + _inherit = ['mail.thread'] + _rec_name = 'lab_request_id' + _description = 'Lab Request' + + name = fields.Char(string='Lab Test', size=16, readonly=True, + required=True, help="Lab result ID", + default=lambda *a: '#') + lab_request_id = fields.Char(string='Appointment ID', + help="Lab appointment ID") + app_id = fields.Many2one('lab.appointment', + string='Appointment') + lab_requestor_id = fields.Many2one('lab.patient', + string='Patient', required=True, + help='Patient Name') + test_request_id = fields.Many2one('lab.test', string='Test') + lab_requesting_date = fields.Datetime(string='Requested Date') + comment = fields.Text('Comment') + request_line_ids = fields.One2many('lab.test.attribute', + 'test_request_reverse_id', + string="Test Lines") + state = fields.Selection([ + ('draft', 'Draft'), + ('sample_collection', 'Sample Collected'), + ('test_in_progress', 'Test In Progress'), + ('completed', 'Completed'), + ('cancel', 'Cancelled'), + + ], string='Status', readonly=True, copy=False, index=True, tracking=True, + default='draft') + + @api.model_create_multi + def create(self, vals_list): + """ + Create a new lab request + :param self: The record itself. + :param dict vals_list: A dictionary of values for creating the lab request. + :return: The created lab request record. + :rtype: LabRequest + """ + for vals in vals_list: + sequence = self.env['ir.sequence'].next_by_code('lab.request') + vals['name'] = sequence or '/' + return super().create(vals_list) + + def action_set_to_sample_collection(self): + """ + Set the lab request's state to 'Sample Collected + :param self: The record itself. + """ + return self.write({'state': 'sample_collection'}) + + def action_set_to_test_in_progress(self): + """ + Set the lab request's state to 'Test In Progress' + :param self: The record itself. + """ + return self.write({'state': 'test_in_progress'}) + + def action_cancel_lab_test(self): + """ + Cancel the lab test. + :param self: The record itself. + """ + return self.write({'state': 'cancel'}) + + def action_set_to_test_completed(self): + """ + Set the lab request's state to 'Completed' + :param self: The record itself. + """ + if not self.request_line_ids: + raise ValidationError(_("No Result Lines Entered !")) + req_obj = self.env['lab.request'].search_count( + [('app_id', '=', self.app_id.id), ('id', '!=', self.id)]) + req_obj_count = (self.env['lab.request'].search_count + ([('app_id', '=', self.app_id.id), + ('id', '!=', self.id), ('state', '=', 'completed')] + )) + if req_obj == req_obj_count: + app_obj = self.env['lab.appointment'].browse(self.app_id.id) + app_obj.write({'state': 'completed'}) + return self.write({'state': 'completed'}) + + def action_print_lab_test(self): + """ + Print the lab test report + :param self: The record itself. + """ + return self.env.ref('medical_lab_management.action_lab_request_report').report_action(self) diff --git a/medical_lab_management/models/lab_test.py b/medical_lab_management/models/lab_test.py new file mode 100755 index 000000000..e5579e060 --- /dev/null +++ b/medical_lab_management/models/lab_test.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Gayathri V (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class LabTest(models.Model): + """ + Model for managing lab test details. + """ + _name = 'lab.test' + _description = "Lab Test" + _rec_name = 'lab_test' + _inherit = ['mail.thread'] + + lab_test = fields.Char(string="Test Name", required=True, + help="Name of lab test ") + lab_test_code = fields.Char(string="Test Code", required=True) + test_lines_ids = fields.One2many('lab.test.attribute', + 'test_line_reverse_id', + string="Attribute") + test_cost = fields.Float(string="Cost", required=True) diff --git a/medical_lab_management/models/lab_test_attribute.py b/medical_lab_management/models/lab_test_attribute.py new file mode 100755 index 000000000..59a8ffdce --- /dev/null +++ b/medical_lab_management/models/lab_test_attribute.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Gayathri V (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class LabTestAttribute(models.Model): + """ + Model for managing lab test result + """ + _name = 'lab.test.attribute' + _description = "Lab Test Attributes" + + test_content_id = fields.Many2one('lab.test.content.type', + string="Content", help="Content type", required=True) + result = fields.Char(string="Result", help="Result for lab test") + unit_id = fields.Many2one('test.unit', string="Unit", + help="Unit for lab test") + interval = fields.Char(string="Reference Intervals", + help="Reference intervals for lab test") + test_line_reverse_id = fields.Many2one('lab.test', + string="Attribute", + help="Name of the test") + test_request_reverse_id = fields.Many2one('lab.request', + string="Request") diff --git a/medical_lab_management/models/lab_test_content_type.py b/medical_lab_management/models/lab_test_content_type.py new file mode 100755 index 000000000..c2481becc --- /dev/null +++ b/medical_lab_management/models/lab_test_content_type.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Gayathri V (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class LabTestContentType(models.Model): + """ + Model for managing test content types + """ + _name = 'lab.test.content.type' + _rec_name = 'content_type_name' + _description = "Content" + + content_type_name = fields.Char(string="Name", required=True, + help="Content type name") + content_type_code = fields.Char(string="Code", help="Content type code") + parent_test_id = fields.Many2one('lab.test', + string="Test Category", + help="Category of test") diff --git a/medical_lab_management/models/physician_speciality.py b/medical_lab_management/models/physician_speciality.py new file mode 100755 index 000000000..c602212bc --- /dev/null +++ b/medical_lab_management/models/physician_speciality.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Gayathri V (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class PhysicianSpeciality(models.Model): + """ + Model for managing physician details + """ + _name = 'physician.speciality' + _description = 'Medical Specialty' + + code = fields.Char(string='ID') + name = fields.Char(string='Specialty', help='Name of the specialty', + required=True) + _sql_constraints = [ + ('name_uniq', 'UNIQUE(name)', 'Name must be unique!'), + ] diff --git a/medical_lab_management/models/res_partner.py b/medical_lab_management/models/res_partner.py new file mode 100755 index 000000000..27ce0c76f --- /dev/null +++ b/medical_lab_management/models/res_partner.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Gayathri V (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class ResPartner(models.Model): + """ + This class inherits the 'res.partner' model to represent patients and + physicians in the system. + """ + _inherit = 'res.partner' + _description = "Patient" + + is_patient = fields.Boolean(string='Is Patient', + help="Patient Identification") + is_physician = fields.Boolean(string='Is Physician', + help="Physician Identification") + speciality_id = fields.Many2one('physician.speciality', + string='Speciality', + help="Speciality of the physician") + hospital_id = fields.Many2one('res.partner', string='Hospital', + help="Name of the hospital") diff --git a/medical_lab_management/models/test_unit.py b/medical_lab_management/models/test_unit.py new file mode 100755 index 000000000..62921c146 --- /dev/null +++ b/medical_lab_management/models/test_unit.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Gayathri V (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class TestUnit(models.Model): + """ + Model for managing test units + """ + _name = 'test.unit' + _rec_name = 'code' + _description = "Test Unit" + + unit = fields.Char(string="Unit", required=True, help="Unit name") + code = fields.Char(string="Code", required=True, help="Unit code") diff --git a/medical_lab_management/report/lab_patient_reports.xml b/medical_lab_management/report/lab_patient_reports.xml new file mode 100755 index 000000000..28f6da90f --- /dev/null +++ b/medical_lab_management/report/lab_patient_reports.xml @@ -0,0 +1,15 @@ + + + + + + Patient Card + lab.patient + qweb-pdf + medical_lab_management.lab_patient_report + medical_lab_management.lab_patient_report + + report + + + diff --git a/medical_lab_management/report/lab_patient_templates.xml b/medical_lab_management/report/lab_patient_templates.xml new file mode 100755 index 000000000..a8359aba4 --- /dev/null +++ b/medical_lab_management/report/lab_patient_templates.xml @@ -0,0 +1,72 @@ + + + + + + + diff --git a/medical_lab_management/report/lab_request_reports.xml b/medical_lab_management/report/lab_request_reports.xml new file mode 100755 index 000000000..10c55de1c --- /dev/null +++ b/medical_lab_management/report/lab_request_reports.xml @@ -0,0 +1,13 @@ + + + + + + Lab Test Result + lab.request + qweb-pdf + medical_lab_management.lab_request_report + medical_lab_management.lab_request_report + + + diff --git a/medical_lab_management/report/lab_request_templates.xml b/medical_lab_management/report/lab_request_templates.xml new file mode 100755 index 000000000..ddc55e45d --- /dev/null +++ b/medical_lab_management/report/lab_request_templates.xml @@ -0,0 +1,50 @@ + + + + + + + diff --git a/medical_lab_management/security/ir.model.access.csv b/medical_lab_management/security/ir.model.access.csv new file mode 100755 index 000000000..f762735c4 --- /dev/null +++ b/medical_lab_management/security/ir.model.access.csv @@ -0,0 +1,19 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_lab_request_user,access.lab.request,model_lab_request,group_lab_management_user,1,1,1,1 +access_lab_patient_user,access.lab.patient,model_lab_patient,group_lab_management_user,1,1,1,1 +access_lab_appointment_user,access.lab.appointment,model_lab_appointment,group_lab_management_user,1,1,1,1 +access_test_unit_user,access.test.unit,model_test_unit,group_lab_management_user,1,0,0,0 +access_lab_physician_user,access.physician.speciality,model_physician_speciality,group_lab_management_user,1,1,1,1 +access_lab_test_user,access.lab.test,model_lab_test,group_lab_management_user,1,0,0,0 +access_lab_appointment_line_user,access.lab.appointment.lines,model_lab_appointment_lines,group_lab_management_user,1,1,1,1 +access_lab_test_content_type_user,access.lab.test.content.type,model_lab_test_content_type,group_lab_management_user,1,0,0,0 +access_lab_test_attribute_user,access.lab.test.attribute,model_lab_test_attribute,group_lab_management_user,1,1,1,1 +access_lab_request_technician,access.lab.request,model_lab_request,group_lab_management_technician,1,1,1,1 +access_lab_patient_technician,access.lab.patient,model_lab_patient,group_lab_management_technician,1,1,1,1 +access_lab_appointment_technician,access.lab.appointment,model_lab_appointment,group_lab_management_technician,1,1,1,1 +access_test_unit_technician,access.test.unit,model_test_unit,group_lab_management_technician,1,1,1,1 +access_lab_physician_technician,access.physician.speciality,model_physician_speciality,group_lab_management_technician,1,0,0,0 +access_lab_test_technician,access.lab.test,model_lab_test,group_lab_management_technician,1,1,1,1 +access_lab_test_content_type_technician,access.lab.test.content.type,model_lab_test_content_type,group_lab_management_technician,1,1,1,1 +access_lab_appointment_line_technician,access.lab.appointment.lines,model_lab_appointment_lines,group_lab_management_technician,1,1,1,1 +access_lab_test_attribute_technician,access.lab.test.attribute,model_lab_test_attribute,group_lab_management_technician,1,1,1,1 \ No newline at end of file diff --git a/medical_lab_management/security/medical_lab_management_security.xml b/medical_lab_management/security/medical_lab_management_security.xml new file mode 100755 index 000000000..a317fc86b --- /dev/null +++ b/medical_lab_management/security/medical_lab_management_security.xml @@ -0,0 +1,17 @@ + + + + Lab Management + + + Lab User + + + + + Lab Manager + + + + + diff --git a/medical_lab_management/static/description/assets/cybro-icon.png b/medical_lab_management/static/description/assets/cybro-icon.png new file mode 100644 index 000000000..06e73e11d Binary files /dev/null and b/medical_lab_management/static/description/assets/cybro-icon.png differ diff --git a/medical_lab_management/static/description/assets/cybro-odoo.png b/medical_lab_management/static/description/assets/cybro-odoo.png new file mode 100644 index 000000000..ed02e07a4 Binary files /dev/null and b/medical_lab_management/static/description/assets/cybro-odoo.png differ diff --git a/medical_lab_management/static/description/assets/h2.png b/medical_lab_management/static/description/assets/h2.png new file mode 100644 index 000000000..0bfc4707d Binary files /dev/null and b/medical_lab_management/static/description/assets/h2.png differ diff --git a/medical_lab_management/static/description/assets/icons/arrows-repeat.svg b/medical_lab_management/static/description/assets/icons/arrows-repeat.svg new file mode 100644 index 000000000..1d7efabc5 --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/arrows-repeat.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/icons/banner-1.png b/medical_lab_management/static/description/assets/icons/banner-1.png new file mode 100644 index 000000000..c180db172 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/banner-1.png differ diff --git a/medical_lab_management/static/description/assets/icons/banner-2.svg b/medical_lab_management/static/description/assets/icons/banner-2.svg new file mode 100644 index 000000000..e606d97d9 --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/banner-2.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/icons/banner-bg.png b/medical_lab_management/static/description/assets/icons/banner-bg.png new file mode 100644 index 000000000..a8238d3c0 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/banner-bg.png differ diff --git a/medical_lab_management/static/description/assets/icons/banner-bg.svg b/medical_lab_management/static/description/assets/icons/banner-bg.svg new file mode 100644 index 000000000..b1378103e --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/banner-bg.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/icons/banner-call.svg b/medical_lab_management/static/description/assets/icons/banner-call.svg new file mode 100644 index 000000000..96c687e81 --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/banner-call.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/medical_lab_management/static/description/assets/icons/banner-mail.svg b/medical_lab_management/static/description/assets/icons/banner-mail.svg new file mode 100644 index 000000000..cbf0d158d --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/banner-mail.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/medical_lab_management/static/description/assets/icons/banner-pattern.svg b/medical_lab_management/static/description/assets/icons/banner-pattern.svg new file mode 100644 index 000000000..9c1c7e101 --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/banner-pattern.svg @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/icons/banner-promo.svg b/medical_lab_management/static/description/assets/icons/banner-promo.svg new file mode 100644 index 000000000..d52791b11 --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/banner-promo.svg @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/icons/brand-pair.svg b/medical_lab_management/static/description/assets/icons/brand-pair.svg new file mode 100644 index 000000000..d8db7fc1e --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/brand-pair.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/icons/capture (1).png b/medical_lab_management/static/description/assets/icons/capture (1).png new file mode 100644 index 000000000..8824deafc Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/capture (1).png differ diff --git a/medical_lab_management/static/description/assets/icons/check.png b/medical_lab_management/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/check.png differ diff --git a/medical_lab_management/static/description/assets/icons/chevron.png b/medical_lab_management/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/chevron.png differ diff --git a/medical_lab_management/static/description/assets/icons/close-icon.svg b/medical_lab_management/static/description/assets/icons/close-icon.svg new file mode 100644 index 000000000..df8cce37a --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/close-icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/medical_lab_management/static/description/assets/icons/cogs.png b/medical_lab_management/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/cogs.png differ diff --git a/medical_lab_management/static/description/assets/icons/collabarate-icon.svg b/medical_lab_management/static/description/assets/icons/collabarate-icon.svg new file mode 100644 index 000000000..dd4e10518 --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/collabarate-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/medical_lab_management/static/description/assets/icons/consultation.png b/medical_lab_management/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/consultation.png differ diff --git a/medical_lab_management/static/description/assets/icons/cybro-logo.png b/medical_lab_management/static/description/assets/icons/cybro-logo.png new file mode 100644 index 000000000..ff4b78220 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/cybro-logo.png differ diff --git a/medical_lab_management/static/description/assets/icons/down.svg b/medical_lab_management/static/description/assets/icons/down.svg new file mode 100644 index 000000000..f21c36271 --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/medical_lab_management/static/description/assets/icons/ecom-black.png b/medical_lab_management/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/ecom-black.png differ diff --git a/medical_lab_management/static/description/assets/icons/education-black.png b/medical_lab_management/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/education-black.png differ diff --git a/medical_lab_management/static/description/assets/icons/faq.png b/medical_lab_management/static/description/assets/icons/faq.png new file mode 100644 index 000000000..4250b5b81 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/faq.png differ diff --git a/medical_lab_management/static/description/assets/icons/feature-icon.svg b/medical_lab_management/static/description/assets/icons/feature-icon.svg new file mode 100644 index 000000000..fa0ea6850 --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/feature-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/icons/feature.png b/medical_lab_management/static/description/assets/icons/feature.png new file mode 100644 index 000000000..ac7a785c0 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/feature.png differ diff --git a/medical_lab_management/static/description/assets/icons/gear.svg b/medical_lab_management/static/description/assets/icons/gear.svg new file mode 100644 index 000000000..0cc66b6ea --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/gear.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/icons/hero.gif b/medical_lab_management/static/description/assets/icons/hero.gif new file mode 100644 index 000000000..2b7359b01 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/hero.gif differ diff --git a/medical_lab_management/static/description/assets/icons/hire-odoo.svg b/medical_lab_management/static/description/assets/icons/hire-odoo.svg new file mode 100644 index 000000000..e1ac089b0 --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/hire-odoo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/icons/hotel-black.png b/medical_lab_management/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/hotel-black.png differ diff --git a/medical_lab_management/static/description/assets/icons/img.png b/medical_lab_management/static/description/assets/icons/img.png new file mode 100644 index 000000000..70197f477 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/img.png differ diff --git a/medical_lab_management/static/description/assets/icons/license.png b/medical_lab_management/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/license.png differ diff --git a/medical_lab_management/static/description/assets/icons/life-ring-icon.svg b/medical_lab_management/static/description/assets/icons/life-ring-icon.svg new file mode 100644 index 000000000..3ae6e1d89 --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/life-ring-icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/icons/lifebuoy.png b/medical_lab_management/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/lifebuoy.png differ diff --git a/medical_lab_management/static/description/assets/icons/mail.svg b/medical_lab_management/static/description/assets/icons/mail.svg new file mode 100644 index 000000000..1eedde695 --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/mail.svg @@ -0,0 +1,3 @@ + + + diff --git a/medical_lab_management/static/description/assets/icons/manufacturing-black.png b/medical_lab_management/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/manufacturing-black.png differ diff --git a/medical_lab_management/static/description/assets/icons/notes.png b/medical_lab_management/static/description/assets/icons/notes.png new file mode 100644 index 000000000..ee5e95404 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/notes.png differ diff --git a/medical_lab_management/static/description/assets/icons/notification icon.svg b/medical_lab_management/static/description/assets/icons/notification icon.svg new file mode 100644 index 000000000..053189973 --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/notification icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/icons/odoo-consultancy.svg b/medical_lab_management/static/description/assets/icons/odoo-consultancy.svg new file mode 100644 index 000000000..e05f65bde --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/odoo-consultancy.svg @@ -0,0 +1,4 @@ + + + + diff --git a/medical_lab_management/static/description/assets/icons/odoo-licencing.svg b/medical_lab_management/static/description/assets/icons/odoo-licencing.svg new file mode 100644 index 000000000..2606c88b0 --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/odoo-licencing.svg @@ -0,0 +1,3 @@ + + + diff --git a/medical_lab_management/static/description/assets/icons/odoo-logo.png b/medical_lab_management/static/description/assets/icons/odoo-logo.png new file mode 100644 index 000000000..0e4d0eb5a Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/odoo-logo.png differ diff --git a/medical_lab_management/static/description/assets/icons/patter.svg b/medical_lab_management/static/description/assets/icons/patter.svg new file mode 100644 index 000000000..25c9c0a8f --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/patter.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/icons/pattern1.png b/medical_lab_management/static/description/assets/icons/pattern1.png new file mode 100644 index 000000000..09ab0fb2d Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/pattern1.png differ diff --git a/medical_lab_management/static/description/assets/icons/photo-capture.png b/medical_lab_management/static/description/assets/icons/photo-capture.png new file mode 100644 index 000000000..06c111758 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/photo-capture.png differ diff --git a/medical_lab_management/static/description/assets/icons/pos-black.png b/medical_lab_management/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/pos-black.png differ diff --git a/medical_lab_management/static/description/assets/icons/puzzle-piece-icon.svg b/medical_lab_management/static/description/assets/icons/puzzle-piece-icon.svg new file mode 100644 index 000000000..3e9ad9373 --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/puzzle-piece-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/icons/puzzle.png b/medical_lab_management/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/puzzle.png differ diff --git a/medical_lab_management/static/description/assets/icons/replace-icon.svg b/medical_lab_management/static/description/assets/icons/replace-icon.svg new file mode 100644 index 000000000..d0e3a7af1 --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/replace-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/icons/restaurant-black.png b/medical_lab_management/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/restaurant-black.png differ diff --git a/medical_lab_management/static/description/assets/icons/screenshot-main.png b/medical_lab_management/static/description/assets/icons/screenshot-main.png new file mode 100644 index 000000000..575f8e676 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/screenshot-main.png differ diff --git a/medical_lab_management/static/description/assets/icons/screenshot.png b/medical_lab_management/static/description/assets/icons/screenshot.png new file mode 100644 index 000000000..cef272529 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/screenshot.png differ diff --git a/medical_lab_management/static/description/assets/icons/service-black.png b/medical_lab_management/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/service-black.png differ diff --git a/medical_lab_management/static/description/assets/icons/skype-fill.svg b/medical_lab_management/static/description/assets/icons/skype-fill.svg new file mode 100644 index 000000000..c17423639 --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/skype-fill.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/icons/skype.png b/medical_lab_management/static/description/assets/icons/skype.png new file mode 100644 index 000000000..51b409fb3 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/skype.png differ diff --git a/medical_lab_management/static/description/assets/icons/skype.svg b/medical_lab_management/static/description/assets/icons/skype.svg new file mode 100644 index 000000000..df3dad39b --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/skype.svg @@ -0,0 +1,3 @@ + + + diff --git a/medical_lab_management/static/description/assets/icons/star-1.svg b/medical_lab_management/static/description/assets/icons/star-1.svg new file mode 100644 index 000000000..7e55ab162 --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/star-1.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/icons/star-2.svg b/medical_lab_management/static/description/assets/icons/star-2.svg new file mode 100644 index 000000000..5ae9f507a --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/star-2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/icons/support.png b/medical_lab_management/static/description/assets/icons/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/support.png differ diff --git a/medical_lab_management/static/description/assets/icons/test-1 - Copy.png b/medical_lab_management/static/description/assets/icons/test-1 - Copy.png new file mode 100644 index 000000000..f6a902663 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/test-1 - Copy.png differ diff --git a/medical_lab_management/static/description/assets/icons/test-1.png b/medical_lab_management/static/description/assets/icons/test-1.png new file mode 100644 index 000000000..0908add2b Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/test-1.png differ diff --git a/medical_lab_management/static/description/assets/icons/test-2.png b/medical_lab_management/static/description/assets/icons/test-2.png new file mode 100644 index 000000000..4671fe91e Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/test-2.png differ diff --git a/medical_lab_management/static/description/assets/icons/trading-black.png b/medical_lab_management/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/trading-black.png differ diff --git a/medical_lab_management/static/description/assets/icons/training.png b/medical_lab_management/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/training.png differ diff --git a/medical_lab_management/static/description/assets/icons/translate.svg b/medical_lab_management/static/description/assets/icons/translate.svg new file mode 100644 index 000000000..af9c8a1aa --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/translate.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/icons/update.png b/medical_lab_management/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/update.png differ diff --git a/medical_lab_management/static/description/assets/icons/user.png b/medical_lab_management/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/user.png differ diff --git a/medical_lab_management/static/description/assets/icons/video.png b/medical_lab_management/static/description/assets/icons/video.png new file mode 100644 index 000000000..576705b17 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/video.png differ diff --git a/medical_lab_management/static/description/assets/icons/whatsapp.png b/medical_lab_management/static/description/assets/icons/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/whatsapp.png differ diff --git a/medical_lab_management/static/description/assets/icons/wrench-icon.svg b/medical_lab_management/static/description/assets/icons/wrench-icon.svg new file mode 100644 index 000000000..174b5a465 --- /dev/null +++ b/medical_lab_management/static/description/assets/icons/wrench-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/icons/wrench.png b/medical_lab_management/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/wrench.png differ diff --git a/medical_lab_management/static/description/assets/misc/Cybrosys R.png b/medical_lab_management/static/description/assets/misc/Cybrosys R.png new file mode 100644 index 000000000..da4058087 Binary files /dev/null and b/medical_lab_management/static/description/assets/misc/Cybrosys R.png differ diff --git a/medical_lab_management/static/description/assets/misc/email.svg b/medical_lab_management/static/description/assets/misc/email.svg new file mode 100644 index 000000000..15291cdc3 --- /dev/null +++ b/medical_lab_management/static/description/assets/misc/email.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/misc/phone.svg b/medical_lab_management/static/description/assets/misc/phone.svg new file mode 100644 index 000000000..b7bd7f251 --- /dev/null +++ b/medical_lab_management/static/description/assets/misc/phone.svg @@ -0,0 +1,3 @@ + + + diff --git a/medical_lab_management/static/description/assets/misc/star (1) 2.svg b/medical_lab_management/static/description/assets/misc/star (1) 2.svg new file mode 100644 index 000000000..5ae9f507a --- /dev/null +++ b/medical_lab_management/static/description/assets/misc/star (1) 2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/misc/support (1) 1.svg b/medical_lab_management/static/description/assets/misc/support (1) 1.svg new file mode 100644 index 000000000..7d37a8f30 --- /dev/null +++ b/medical_lab_management/static/description/assets/misc/support (1) 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/misc/support-email.svg b/medical_lab_management/static/description/assets/misc/support-email.svg new file mode 100644 index 000000000..eb70370d6 --- /dev/null +++ b/medical_lab_management/static/description/assets/misc/support-email.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/medical_lab_management/static/description/assets/misc/tick-mark.svg b/medical_lab_management/static/description/assets/misc/tick-mark.svg new file mode 100644 index 000000000..2dbb40187 --- /dev/null +++ b/medical_lab_management/static/description/assets/misc/tick-mark.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/misc/whatsapp 1.svg b/medical_lab_management/static/description/assets/misc/whatsapp 1.svg new file mode 100644 index 000000000..0bfaf8fc6 --- /dev/null +++ b/medical_lab_management/static/description/assets/misc/whatsapp 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/misc/whatsapp.svg b/medical_lab_management/static/description/assets/misc/whatsapp.svg new file mode 100644 index 000000000..b618aea1d --- /dev/null +++ b/medical_lab_management/static/description/assets/misc/whatsapp.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/medical_lab_management/static/description/assets/modules/1.gif b/medical_lab_management/static/description/assets/modules/1.gif new file mode 100644 index 000000000..ae3a880a2 Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/1.gif differ diff --git a/medical_lab_management/static/description/assets/modules/1.jpg b/medical_lab_management/static/description/assets/modules/1.jpg new file mode 100644 index 000000000..08bbafeb6 Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/1.jpg differ diff --git a/medical_lab_management/static/description/assets/modules/1.png b/medical_lab_management/static/description/assets/modules/1.png new file mode 100755 index 000000000..c9d686d47 Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/1.png differ diff --git a/medical_lab_management/static/description/assets/modules/2.gif b/medical_lab_management/static/description/assets/modules/2.gif new file mode 100644 index 000000000..d19e2b352 Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/2.gif differ diff --git a/medical_lab_management/static/description/assets/modules/2.jpg b/medical_lab_management/static/description/assets/modules/2.jpg new file mode 100644 index 000000000..39006b41a Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/2.jpg differ diff --git a/medical_lab_management/static/description/assets/modules/2.png b/medical_lab_management/static/description/assets/modules/2.png new file mode 100644 index 000000000..a1209a01f Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/2.png differ diff --git a/medical_lab_management/static/description/assets/modules/3.jpg b/medical_lab_management/static/description/assets/modules/3.jpg new file mode 100644 index 000000000..3d171226b Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/3.jpg differ diff --git a/medical_lab_management/static/description/assets/modules/3.png b/medical_lab_management/static/description/assets/modules/3.png new file mode 100644 index 000000000..8513873ea Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/3.png differ diff --git a/medical_lab_management/static/description/assets/modules/4.jpg b/medical_lab_management/static/description/assets/modules/4.jpg new file mode 100644 index 000000000..1f3f2e27f Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/4.jpg differ diff --git a/medical_lab_management/static/description/assets/modules/4.png b/medical_lab_management/static/description/assets/modules/4.png new file mode 100644 index 000000000..3bedf7981 Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/4.png differ diff --git a/medical_lab_management/static/description/assets/modules/5.jpg b/medical_lab_management/static/description/assets/modules/5.jpg new file mode 100644 index 000000000..0db717519 Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/5.jpg differ diff --git a/medical_lab_management/static/description/assets/modules/5.png b/medical_lab_management/static/description/assets/modules/5.png new file mode 100644 index 000000000..0e311ca87 Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/5.png differ diff --git a/medical_lab_management/static/description/assets/modules/6.jpg b/medical_lab_management/static/description/assets/modules/6.jpg new file mode 100644 index 000000000..67c7f7062 Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/6.jpg differ diff --git a/medical_lab_management/static/description/assets/modules/7.png b/medical_lab_management/static/description/assets/modules/7.png new file mode 100755 index 000000000..be454ea44 Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/7.png differ diff --git a/medical_lab_management/static/description/assets/modules/courier_management.jpg b/medical_lab_management/static/description/assets/modules/courier_management.jpg new file mode 100644 index 000000000..3e4a22c32 Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/courier_management.jpg differ diff --git a/medical_lab_management/static/description/assets/modules/cw_sale.png b/medical_lab_management/static/description/assets/modules/cw_sale.png new file mode 100644 index 000000000..1b75c62d5 Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/cw_sale.png differ diff --git a/medical_lab_management/static/description/assets/modules/cw_stock.png b/medical_lab_management/static/description/assets/modules/cw_stock.png new file mode 100644 index 000000000..62af09ec6 Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/cw_stock.png differ diff --git a/medical_lab_management/static/description/assets/modules/delivery_split.jpg b/medical_lab_management/static/description/assets/modules/delivery_split.jpg new file mode 100644 index 000000000..76724ebda Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/delivery_split.jpg differ diff --git a/medical_lab_management/static/description/assets/modules/module_image (1).jpeg b/medical_lab_management/static/description/assets/modules/module_image (1).jpeg new file mode 100644 index 000000000..5ae24843e Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/module_image (1).jpeg differ diff --git a/medical_lab_management/static/description/assets/modules/module_image (1).png b/medical_lab_management/static/description/assets/modules/module_image (1).png new file mode 100644 index 000000000..0dea4f332 Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/module_image (1).png differ diff --git a/medical_lab_management/static/description/assets/modules/module_image (2).png b/medical_lab_management/static/description/assets/modules/module_image (2).png new file mode 100644 index 000000000..a5dc79613 Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/module_image (2).png differ diff --git a/medical_lab_management/static/description/assets/modules/module_image-1.jpeg b/medical_lab_management/static/description/assets/modules/module_image-1.jpeg new file mode 100644 index 000000000..31f066e9c Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/module_image-1.jpeg differ diff --git a/medical_lab_management/static/description/assets/modules/module_image.jpeg b/medical_lab_management/static/description/assets/modules/module_image.jpeg new file mode 100644 index 000000000..0cbac311c Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/module_image.jpeg differ diff --git a/medical_lab_management/static/description/assets/modules/module_image.png b/medical_lab_management/static/description/assets/modules/module_image.png new file mode 100644 index 000000000..612be4b77 Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/module_image.png differ diff --git a/medical_lab_management/static/description/assets/modules/multi_product_return_from_website.jpg b/medical_lab_management/static/description/assets/modules/multi_product_return_from_website.jpg new file mode 100644 index 000000000..7f2cc2ab5 Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/multi_product_return_from_website.jpg differ diff --git a/medical_lab_management/static/description/assets/modules/purchase_history_of_product.jpg b/medical_lab_management/static/description/assets/modules/purchase_history_of_product.jpg new file mode 100644 index 000000000..dab7b184c Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/purchase_history_of_product.jpg differ diff --git a/medical_lab_management/static/description/assets/screenshots.zip b/medical_lab_management/static/description/assets/screenshots.zip new file mode 100644 index 000000000..c81cdc925 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots.zip differ diff --git a/medical_lab_management/static/description/assets/screenshots/1.png b/medical_lab_management/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..214afb16d Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/1.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/10.png b/medical_lab_management/static/description/assets/screenshots/10.png new file mode 100644 index 000000000..99e5d61ac Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/10.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/11.png b/medical_lab_management/static/description/assets/screenshots/11.png new file mode 100644 index 000000000..4634bd4c4 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/11.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/12.png b/medical_lab_management/static/description/assets/screenshots/12.png new file mode 100644 index 000000000..161f87ebf Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/12.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/13.png b/medical_lab_management/static/description/assets/screenshots/13.png new file mode 100644 index 000000000..7b6ae185b Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/13.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/14.png b/medical_lab_management/static/description/assets/screenshots/14.png new file mode 100644 index 000000000..76b417a28 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/14.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/15.png b/medical_lab_management/static/description/assets/screenshots/15.png new file mode 100644 index 000000000..047616b10 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/15.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/16.png b/medical_lab_management/static/description/assets/screenshots/16.png new file mode 100644 index 000000000..5266eade0 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/16.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/17.png b/medical_lab_management/static/description/assets/screenshots/17.png new file mode 100644 index 000000000..b99df4f01 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/17.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/2.png b/medical_lab_management/static/description/assets/screenshots/2.png new file mode 100644 index 000000000..930387624 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/2.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/3.png b/medical_lab_management/static/description/assets/screenshots/3.png new file mode 100644 index 000000000..c71b26069 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/3.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/4.png b/medical_lab_management/static/description/assets/screenshots/4.png new file mode 100644 index 000000000..9c9ea4516 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/4.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/5.png b/medical_lab_management/static/description/assets/screenshots/5.png new file mode 100644 index 000000000..88ecd9843 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/5.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/6.png b/medical_lab_management/static/description/assets/screenshots/6.png new file mode 100644 index 000000000..b5d3ccb3f Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/6.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/7.png b/medical_lab_management/static/description/assets/screenshots/7.png new file mode 100644 index 000000000..1ea1bb146 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/7.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/8.png b/medical_lab_management/static/description/assets/screenshots/8.png new file mode 100644 index 000000000..f59712459 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/8.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/9.png b/medical_lab_management/static/description/assets/screenshots/9.png new file mode 100644 index 000000000..88599ac3a Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/9.png differ diff --git a/medical_lab_management/static/description/assets/y18.jpg b/medical_lab_management/static/description/assets/y18.jpg new file mode 100644 index 000000000..eea1714f2 Binary files /dev/null and b/medical_lab_management/static/description/assets/y18.jpg differ diff --git a/medical_lab_management/static/description/banner.png b/medical_lab_management/static/description/banner.png new file mode 100644 index 000000000..31c6a5058 Binary files /dev/null and b/medical_lab_management/static/description/banner.png differ diff --git a/medical_lab_management/static/description/icon.png b/medical_lab_management/static/description/icon.png new file mode 100644 index 000000000..1e32dc998 Binary files /dev/null and b/medical_lab_management/static/description/icon.png differ diff --git a/medical_lab_management/static/description/index.html b/medical_lab_management/static/description/index.html new file mode 100644 index 000000000..6cdef58b3 --- /dev/null +++ b/medical_lab_management/static/description/index.html @@ -0,0 +1,1339 @@ + + + + + + Medical Lab Management + + + + + + + + + + +
+
+ + + +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ +
+
+
+
+

+ This app helps the user to systematically + perform the activities of a Medical Laboratory. + . +

+

+ Medical Lab Management +

+
+
+ +
+ +
+ +
+
+
+ +
+
+ +
+
+ +
+
+
+

Key + Highlights

+
+
+
+
+ +
+
+ Manage Patients +
+
+
+
+
+
+ +
+
+ Manage Lab Test Request. +
+
+
+
+
+
+ +
+
+ Manage Appointments. +
+
+
+
+
+
+ +
+
+ Manage Today's Appointments. +
+
+
+
+
+ +
+
+
+ Medical Lab Management +

+ Are you ready to make your business more + organized? +
Improve now! +

+ +
+
+ +
+
+
+ + + + +
+
+ +
+
+
+
+ acc_bg +
+ +
+
+
+
+

+ +enables the user to choose either patient + + or physician. +

+
+
+
+ +
+
+
+
+
+
+
+
+
+

+ + creates each patient for + lab test. +

+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+

+ + + Go to Laboratory -> Patient -> action-> + Patient Card. +

+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+
+

+ + Lab Test + + Details. +

+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+

+ creates Test + Units. +

+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+

+ + Testing + Contents. +

+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+

+ + creates Lab Test + details. +

+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+

+ + Go to Laboratory -> Appointments-> + + Create Appointments. +

+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+

+ + Creates lab request of each + + patient. +

+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+

+ + Issues Lab Test Result + + Report. +

+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+

+ + Invoices are created for each + + lab test. +

+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+

+ + Here,we can view today's appointments of + + all patients. +

+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+

+ + We can add referral physician + + details. +

+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+

+ + There are two type of User + + Access. +

+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+

+ The app simplifies the activity like Patient Management.

+
+
+
+
+
+
+
+ +
+

+ The app simplifies the activity like Appointment Management.

+
+
+
+
+
+
+
+ +
+

+ Manage Test Requests Management, Lab Results Management.

+
+
+
+
+
+
+
+ +
+

+ Manage today's appointments of all patients.

+
+
+
+
+
+
+
+
+
+
+ +
+ +
+ +
+

+ The Medical Lab Management module is designed to streamline laboratory operations, manage patient test records, track sample collection and results, schedule tests, and handle invoicing and billing for lab services. +

+
+
+ +
+ +
+

+ This module allows labs to record test details, manage patient test results, and track sample collection and processing stages. It includes features for assigning tests to technicians, managing sample storage, and generating reports for patients and clinicians. +

+
+
+ +
+ +
+

+ Absolutely. It includes functionalities for managing patient records, including medical history, contact information, and test history. This makes it easier to track a patient’s journey through the lab. +

+
+
+ +
+ +
+

+ The module integrates with Odoo's invoicing system to manage billing for lab tests. It can automatically generate invoices based on tests conducted and supports multiple payment options, making the billing process quick and straightforward. +

+
+
+
+ +
+
+
+
+
+
+ +
+
+

+ Latest Release 18.0.1.0.0 +

+ + 19th April, 2025 + +
+
+
+
+
+ Add +
+
+
+
    +
  • + Initial Commit +
  • + +
+
+
+
+
+
+
+
+
+
+ + +
+

+ Related Products +

+ +
+ + + +
+

+ Our Services

+ +
+ +
+
+ .... +
+
+ +
+ + +
+
+ + + + + + diff --git a/medical_lab_management/views/account_move_views.xml b/medical_lab_management/views/account_move_views.xml new file mode 100755 index 000000000..cb1b1409d --- /dev/null +++ b/medical_lab_management/views/account_move_views.xml @@ -0,0 +1,29 @@ + + + + + view.move.form.inherit.medical.lab.management + account.move + + + + + + + + + + account.invoice.cust.invoice_filter_form + account.move + + + + + + + + + + + diff --git a/medical_lab_management/views/lab_appointment_views.xml b/medical_lab_management/views/lab_appointment_views.xml new file mode 100755 index 000000000..5beb4406f --- /dev/null +++ b/medical_lab_management/views/lab_appointment_views.xml @@ -0,0 +1,247 @@ + + + + + Invoices + account.move + list,form,kanban,graph,pivot + + [('is_lab_invoice','=',True)] + + +

+ Create Invoices. +

+
+
+ + 1 + list + + + + 2 + form + + + + + Appointment Kanban + lab.appointment + + + + +
+
+ +
    +
  • Name : + +
  • +
  • Lab Request ID : + +
  • +
  • Appointment Date : + +
  • +
+
+
+
+
+
+
+
+
+ + lab.appointment.view.list + lab.appointment + + + + + + + + + + + lab.appointment.view.form + lab.appointment + + +
+
+
+ +
+ + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + lab.appointment.view.search + lab.appointment + + + + + + + + + + + + + + + + + + + Appointments + ir.actions.act_window + lab.appointment + list,form,kanban + + [] + {} + +

+ Create Appointments. +

+
+
+ + Appointments + ir.actions.act_window + lab.appointment + list,form + + [('appointment_date', '>=',((datetime.date.today()- + datetime.timedelta(days=0)).strftime('%Y-%m-%d 00:00:00'))), + ('appointment_date', '<=',((datetime.date.today()- + datetime.timedelta(days=0)).strftime('%Y-%m-%d 23:59:59')))] + + {} + +

+ Create Appointments. +

+
+
+ + + +
diff --git a/medical_lab_management/views/lab_patient_views.xml b/medical_lab_management/views/lab_patient_views.xml new file mode 100755 index 000000000..92868dac7 --- /dev/null +++ b/medical_lab_management/views/lab_patient_views.xml @@ -0,0 +1,147 @@ + + + + + + + Patient Kanban + lab.patient + + + + + +
+ +
+
+
+ Name : +
+
+ Patient ID : +
+
+
+
+
+
+
+ + lab.patient.view.list + lab.patient + + + + + + + + + + + + + lab.patient.view.form + lab.patient + + +
+ +
+
+ +
+

+ +

+

+ + + + +
+ +
+

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + lab.patient.view.search + lab.patient + + + + + + + + + + + + + + + + + Patients + ir.actions.act_window + lab.patient + kanban,list,form + + [] + {} + +

+ Create Patients. +

+
+
+ + +
diff --git a/medical_lab_management/views/lab_request_views.xml b/medical_lab_management/views/lab_request_views.xml new file mode 100755 index 000000000..32def8491 --- /dev/null +++ b/medical_lab_management/views/lab_request_views.xml @@ -0,0 +1,135 @@ + + + + + lab.request.view.list + lab.request + + + + + + + + + + + + lab.request.view.form + lab.request + +
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + lab.request.view.search + lab.request + + + + + + + + + + + + + + + + Lab Request + ir.actions.act_window + lab.request + list,form + + [] + {} + +

+ Create Lab request. +

+
+
+ + Lab Request + lab.request + LR + 3 + + + + +
diff --git a/medical_lab_management/views/lab_test_content_type_views.xml b/medical_lab_management/views/lab_test_content_type_views.xml new file mode 100755 index 000000000..dcb20c390 --- /dev/null +++ b/medical_lab_management/views/lab_test_content_type_views.xml @@ -0,0 +1,70 @@ + + + + + lab.test.content.type.view.list + lab.test.content.type + + + + + + + + + + lab.test.content.type.form + lab.test.content.type + + +
+ + + + + + + + +
+
+
+ + lab.test.content.type.view.search + lab.test.content.type + + + + + + + + + + + + + + + Test Contents + ir.actions.act_window + lab.test.content.type + list,form + [] + + {} + +

+ Create Test Contents. +

+
+
+ +
diff --git a/medical_lab_management/views/lab_test_views.xml b/medical_lab_management/views/lab_test_views.xml new file mode 100755 index 000000000..287c41422 --- /dev/null +++ b/medical_lab_management/views/lab_test_views.xml @@ -0,0 +1,95 @@ + + + + + lab.test.view.list + lab.test + + + + + + + + + + + lab.test.view.form + lab.test + + +
+ + + + + + + + + + + + + + + + + + + + +
+
+
+ + lab.test.view.search + lab.test + + + + + + + + + + + + + Lab Test + ir.actions.act_window + lab.test + list,form + + [] + {} + +

+ Create Lab Tests. +

+
+
+ + + + lab.test.attribute.view.form + lab.test.attribute + + +
+ + + + + + + + +
+
+
+
diff --git a/medical_lab_management/views/physician_details_views.xml b/medical_lab_management/views/physician_details_views.xml new file mode 100755 index 000000000..40c11461b --- /dev/null +++ b/medical_lab_management/views/physician_details_views.xml @@ -0,0 +1,26 @@ + + + + + Physician + ir.actions.act_window + res.partner + list,form + [('is_physician','=',1)] + {'default_customer':0, 'default_supplier':0 , + 'default_is_physician':1} + + + +

+ Click to add physician. +

+
+
+ + +
diff --git a/medical_lab_management/views/physician_specialty_views.xml b/medical_lab_management/views/physician_specialty_views.xml new file mode 100755 index 000000000..417c810ba --- /dev/null +++ b/medical_lab_management/views/physician_specialty_views.xml @@ -0,0 +1,17 @@ + + + + + physician.speciality.view.form + physician.speciality + + +
+ + + + +
+
+
+
diff --git a/medical_lab_management/views/res_partner_views.xml b/medical_lab_management/views/res_partner_views.xml new file mode 100755 index 000000000..7cf1f4dda --- /dev/null +++ b/medical_lab_management/views/res_partner_views.xml @@ -0,0 +1,24 @@ + + + + + view.partner.form.inherit.medical.lab.management + + res.partner + + + + + + + + + + + + + + + diff --git a/medical_lab_management/views/test_unit_views.xml b/medical_lab_management/views/test_unit_views.xml new file mode 100755 index 000000000..3ad0348b8 --- /dev/null +++ b/medical_lab_management/views/test_unit_views.xml @@ -0,0 +1,70 @@ + + + + + test.unit.view.list + test.unit + + + + + + + + + + test.unit.view.form + test.unit + + +
+ + + + + + + + + + +
+
+
+ + test.unit.search + test.unit + + + + + + + + + + + + Testing Units + ir.actions.act_window + test.unit + list,form + + [] + {} + +

+ Create Testing Units. +

+
+
+ + +