refactor: Lab Test Report
diff --git a/erpnext/healthcare/doctype/lab_test/lab_test.json b/erpnext/healthcare/doctype/lab_test/lab_test.json
index 575a265..edf1d91 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 3128f81..7754e2e 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 30e5a5f..aeb4289 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 17f25fa..be2d061 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 @@
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