mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-07 15:12:51 +00:00
refactor: Lab Test Report
This commit is contained in:
@@ -248,8 +248,8 @@
|
|||||||
{
|
{
|
||||||
"fieldname": "result_date",
|
"fieldname": "result_date",
|
||||||
"fieldtype": "Date",
|
"fieldtype": "Date",
|
||||||
"hidden": 1,
|
|
||||||
"label": "Result Date",
|
"label": "Result Date",
|
||||||
|
"read_only": 1,
|
||||||
"search_index": 1
|
"search_index": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -555,7 +555,7 @@
|
|||||||
],
|
],
|
||||||
"is_submittable": 1,
|
"is_submittable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2020-07-30 14:03:00.166003",
|
"modified": "2020-07-30 18:18:38.516215",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Healthcare",
|
"module": "Healthcare",
|
||||||
"name": "Lab Test",
|
"name": "Lab Test",
|
||||||
|
|||||||
@@ -4,29 +4,54 @@
|
|||||||
frappe.query_reports["Lab Test Report"] = {
|
frappe.query_reports["Lab Test Report"] = {
|
||||||
"filters": [
|
"filters": [
|
||||||
{
|
{
|
||||||
"fieldname":"from_date",
|
"fieldname": "from_date",
|
||||||
"label": __("From Date"),
|
"label": __("From Date"),
|
||||||
"fieldtype": "Date",
|
"fieldtype": "Date",
|
||||||
"default": frappe.datetime.now_date(),
|
"default": frappe.datetime.add_months(frappe.datetime.get_today(), -1),
|
||||||
"width": "80"
|
"reqd": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname":"to_date",
|
"fieldname": "to_date",
|
||||||
"label": __("To Date"),
|
"label": __("To Date"),
|
||||||
"fieldtype": "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"),
|
"label": __("Patient"),
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"options": "Patient"
|
"options": "Patient"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname":"department",
|
"fieldname": "department",
|
||||||
"label": __("Medical Department"),
|
"label": __("Medical Department"),
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"options": "Medical Department"
|
"options": "Medical Department"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "status",
|
||||||
|
"label": __("Status"),
|
||||||
|
"fieldtype": "Select",
|
||||||
|
"options": "\nCompleted\nApproved\nRejected"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "invoiced",
|
||||||
|
"label": __("Invoiced"),
|
||||||
|
"fieldtype": "Check"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
{
|
{
|
||||||
"add_total_row": 1,
|
"add_total_row": 0,
|
||||||
"creation": "2013-04-23 18:15:29",
|
"creation": "2013-04-23 18:15:29",
|
||||||
|
"disable_prepared_report": 0,
|
||||||
"disabled": 0,
|
"disabled": 0,
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"doctype": "Report",
|
"doctype": "Report",
|
||||||
"idx": 1,
|
"idx": 1,
|
||||||
"is_standard": "Yes",
|
"is_standard": "Yes",
|
||||||
"modified": "2018-08-06 11:41:50.218737",
|
"modified": "2020-07-30 18:53:20.102873",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Healthcare",
|
"module": "Healthcare",
|
||||||
"name": "Lab Test Report",
|
"name": "Lab Test Report",
|
||||||
|
|||||||
@@ -8,51 +8,134 @@ from frappe import msgprint, _
|
|||||||
def execute(filters=None):
|
def execute(filters=None):
|
||||||
if not filters: filters = {}
|
if not filters: filters = {}
|
||||||
|
|
||||||
lab_test_list = get_lab_test(filters)
|
data, columns = [], []
|
||||||
|
|
||||||
columns = get_columns()
|
columns = get_columns()
|
||||||
|
lab_test_list = get_lab_tests(filters)
|
||||||
|
|
||||||
if not lab_test_list:
|
if not lab_test_list:
|
||||||
msgprint(_("No record found"))
|
msgprint(_("No records found"))
|
||||||
return columns, lab_test_list
|
return columns, lab_test_list
|
||||||
|
|
||||||
data = []
|
data = []
|
||||||
for lab_test in lab_test_list:
|
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)
|
data.append(row)
|
||||||
|
|
||||||
return columns, data
|
return columns, data
|
||||||
|
|
||||||
|
|
||||||
def get_columns():
|
def get_columns():
|
||||||
columns = [
|
return [
|
||||||
_("Test") + ":Data:120",
|
{
|
||||||
_("Patient") + ":Link/Patient:180",
|
"fieldname": "test",
|
||||||
_("Healthcare Practitioner") + ":Link/Healthcare Practitioner:120",
|
"label": _("Lab Test"),
|
||||||
_("Invoiced") + ":Check:100",
|
"fieldtype": "Link",
|
||||||
_("Status") + ":Data:120",
|
"options": "Lab Test",
|
||||||
_("Result Date") + ":Date:120",
|
"width": "120"
|
||||||
_("Department") + ":Data: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):
|
def get_conditions(filters):
|
||||||
conditions = ""
|
conditions = {
|
||||||
|
'docstatus': ('=', 1)
|
||||||
|
}
|
||||||
|
|
||||||
if filters.get("patient"):
|
if filters.get('from_date') and filters.get('to_date'):
|
||||||
conditions += "and patient = %(patient)s"
|
conditions['result_date'] = ('between', (filters.get('from_date'), filters.get('to_date')))
|
||||||
if filters.get("from_date"):
|
filters.pop('from_date')
|
||||||
conditions += "and result_date >= %(from_date)s"
|
filters.pop('to_date')
|
||||||
if filters.get("to_date"):
|
|
||||||
conditions += " and result_date <= %(to_date)s"
|
for key, value in filters.items():
|
||||||
if filters.get("department"):
|
if filters.get(key):
|
||||||
conditions += " and department = %(department)s"
|
conditions[key] = value
|
||||||
|
|
||||||
return conditions
|
return conditions
|
||||||
|
|
||||||
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)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user