diff --git a/erpnext/healthcare/doctype/lab_test/lab_test.json b/erpnext/healthcare/doctype/lab_test/lab_test.json index 575a2659dbd..edf1d911aac 100644 --- a/erpnext/healthcare/doctype/lab_test/lab_test.json +++ b/erpnext/healthcare/doctype/lab_test/lab_test.json @@ -248,8 +248,8 @@ { "fieldname": "result_date", "fieldtype": "Date", - "hidden": 1, "label": "Result Date", + "read_only": 1, "search_index": 1 }, { @@ -555,7 +555,7 @@ ], "is_submittable": 1, "links": [], - "modified": "2020-07-30 14:03:00.166003", + "modified": "2020-07-30 18:18:38.516215", "modified_by": "Administrator", "module": "Healthcare", "name": "Lab Test", diff --git a/erpnext/healthcare/report/lab_test_report/lab_test_report.js b/erpnext/healthcare/report/lab_test_report/lab_test_report.js index 3128f819bb1..7754e2e1962 100644 --- a/erpnext/healthcare/report/lab_test_report/lab_test_report.js +++ b/erpnext/healthcare/report/lab_test_report/lab_test_report.js @@ -4,29 +4,54 @@ frappe.query_reports["Lab Test Report"] = { "filters": [ { - "fieldname":"from_date", + "fieldname": "from_date", "label": __("From Date"), "fieldtype": "Date", - "default": frappe.datetime.now_date(), - "width": "80" + "default": frappe.datetime.add_months(frappe.datetime.get_today(), -1), + "reqd": 1 }, { - "fieldname":"to_date", + "fieldname": "to_date", "label": __("To Date"), "fieldtype": "Date", - "default": frappe.datetime.now_date() + "default": frappe.datetime.now_date(), + "reqd": 1 }, { - "fieldname":"patient", + "fieldname": "company", + "label": __("Company"), + "fieldtype": "Link", + "default": frappe.defaults.get_default("Company"), + "options": "Company" + }, + { + "fieldname": "template", + "label": __("Lab Test Template"), + "fieldtype": "Link", + "options": "Lab Test Template" + }, + { + "fieldname": "patient", "label": __("Patient"), "fieldtype": "Link", "options": "Patient" }, { - "fieldname":"department", + "fieldname": "department", "label": __("Medical Department"), "fieldtype": "Link", "options": "Medical Department" + }, + { + "fieldname": "status", + "label": __("Status"), + "fieldtype": "Select", + "options": "\nCompleted\nApproved\nRejected" + }, + { + "fieldname": "invoiced", + "label": __("Invoiced"), + "fieldtype": "Check" } ] }; diff --git a/erpnext/healthcare/report/lab_test_report/lab_test_report.json b/erpnext/healthcare/report/lab_test_report/lab_test_report.json index 30e5a5fd56a..aeb42897b8a 100644 --- a/erpnext/healthcare/report/lab_test_report/lab_test_report.json +++ b/erpnext/healthcare/report/lab_test_report/lab_test_report.json @@ -1,30 +1,31 @@ { - "add_total_row": 1, - "creation": "2013-04-23 18:15:29", - "disabled": 0, - "docstatus": 0, - "doctype": "Report", - "idx": 1, - "is_standard": "Yes", - "modified": "2018-08-06 11:41:50.218737", - "modified_by": "Administrator", - "module": "Healthcare", - "name": "Lab Test Report", - "owner": "Administrator", - "prepared_report": 0, - "ref_doctype": "Lab Test", - "report_name": "Lab Test Report", - "report_type": "Script Report", + "add_total_row": 0, + "creation": "2013-04-23 18:15:29", + "disable_prepared_report": 0, + "disabled": 0, + "docstatus": 0, + "doctype": "Report", + "idx": 1, + "is_standard": "Yes", + "modified": "2020-07-30 18:53:20.102873", + "modified_by": "Administrator", + "module": "Healthcare", + "name": "Lab Test Report", + "owner": "Administrator", + "prepared_report": 0, + "ref_doctype": "Lab Test", + "report_name": "Lab Test Report", + "report_type": "Script Report", "roles": [ { "role": "Laboratory User" - }, + }, { "role": "Nursing User" - }, + }, { "role": "LabTest Approver" - }, + }, { "role": "Healthcare Administrator" } diff --git a/erpnext/healthcare/report/lab_test_report/lab_test_report.py b/erpnext/healthcare/report/lab_test_report/lab_test_report.py index 17f25fa7a75..be2d06193e2 100644 --- a/erpnext/healthcare/report/lab_test_report/lab_test_report.py +++ b/erpnext/healthcare/report/lab_test_report/lab_test_report.py @@ -8,51 +8,134 @@ from frappe import msgprint, _ def execute(filters=None): if not filters: filters = {} - lab_test_list = get_lab_test(filters) + data, columns = [], [] + columns = get_columns() + lab_test_list = get_lab_tests(filters) if not lab_test_list: - msgprint(_("No record found")) + msgprint(_("No records found")) return columns, lab_test_list data = [] for lab_test in lab_test_list: - row = [ lab_test.lab_test_name, lab_test.patient, lab_test.practitioner, lab_test.invoiced, lab_test.status, lab_test.result_date, lab_test.department] + row = frappe._dict({ + 'test': lab_test.name, + 'template': lab_test.template, + 'company': lab_test.company, + 'patient': lab_test.patient, + 'patient_name': lab_test.patient_name, + 'practitioner': lab_test.practitioner, + 'employee': lab_test.employee, + 'status': lab_test.status, + 'invoiced': lab_test.invoiced, + 'result_date': lab_test.result_date, + 'department': lab_test.department + }) data.append(row) return columns, data def get_columns(): - columns = [ - _("Test") + ":Data:120", - _("Patient") + ":Link/Patient:180", - _("Healthcare Practitioner") + ":Link/Healthcare Practitioner:120", - _("Invoiced") + ":Check:100", - _("Status") + ":Data:120", - _("Result Date") + ":Date:120", - _("Department") + ":Data:120", + return [ + { + "fieldname": "test", + "label": _("Lab Test"), + "fieldtype": "Link", + "options": "Lab Test", + "width": "120" + }, + { + "fieldname": "template", + "label": _("Lab Test Template"), + "fieldtype": "Link", + "options": "Lab Test Template", + "width": "120" + }, + { + "fieldname": "company", + "label": _("Company"), + "fieldtype": "Link", + "options": "Company", + "width": "120" + }, + { + "fieldname": "patient", + "label": _("Patient"), + "fieldtype": "Link", + "options": "Patient", + "width": "120" + }, + { + "fieldname": "patient_name", + "label": _("Patient Name"), + "fieldtype": "Data", + "width": "120" + }, + { + "fieldname": "practitioner", + "label": _("Requesting Practitioner"), + "fieldtype": "Link", + "options": "Healthcare Practitioner", + "width": "120" + }, + { + "fieldname": "employee", + "label": _("Lab Technician"), + "fieldtype": "Link", + "options": "Employee", + "width": "120" + }, + { + "fieldname": "status", + "label": _("Status"), + "fieldtype": "Data", + "width": "100" + }, + { + "fieldname": "invoiced", + "label": _("Invoiced"), + "fieldtype": "Check", + "width": "100" + }, + { + "fieldname": "result_date", + "label": _("Result Date"), + "fieldtype": "Date", + "width": "100" + }, + { + "fieldname": "department", + "label": _("Medical Department"), + "fieldtype": "Link", + "options": "Medical Department", + "width": "100" + } ] - return columns +def get_lab_tests(filters): + conditions = get_conditions(filters) + data = frappe.get_all( + doctype='Lab Test', + fields=['name', 'template', 'company', 'patient', 'patient_name', 'practitioner', 'employee', 'status', 'invoiced', 'result_date', 'department'], + filters=conditions, + order_by='submitted_date desc' + ) + return data def get_conditions(filters): - conditions = "" + conditions = { + 'docstatus': ('=', 1) + } - if filters.get("patient"): - conditions += "and patient = %(patient)s" - if filters.get("from_date"): - conditions += "and result_date >= %(from_date)s" - if filters.get("to_date"): - conditions += " and result_date <= %(to_date)s" - if filters.get("department"): - conditions += " and department = %(department)s" + if filters.get('from_date') and filters.get('to_date'): + conditions['result_date'] = ('between', (filters.get('from_date'), filters.get('to_date'))) + filters.pop('from_date') + filters.pop('to_date') - return conditions + for key, value in filters.items(): + if filters.get(key): + conditions[key] = value -def get_lab_test(filters): - conditions = get_conditions(filters) - return frappe.db.sql("""select name, patient, lab_test_name, patient_name, status, result_date, practitioner, invoiced, department - from `tabLab Test` - where docstatus<2 %s order by submitted_date desc, name desc""" % - conditions, filters, as_dict=1) + return conditions \ No newline at end of file