feat: date range filter for Patient History

This commit is contained in:
Rucha Mahabal 2020-11-29 23:16:12 +05:30
parent 4af3d4e4bb
commit 4d6d115a4d
3 changed files with 48 additions and 12 deletions

View File

@ -14,8 +14,7 @@
<div class="row"> <div class="row">
<div class="col-sm-12 d-flex"> <div class="col-sm-12 d-flex">
<div class="patient-history-filter doctype-filter"></div> <div class="patient-history-filter doctype-filter"></div>
<div class="patient-history-filter from-date-filter"></div> <div class="patient-history-filter date-filter"></div>
<div class="patient-history-filter to-date-filter"></div>
</div> </div>
</div> </div>
<div class="col-sm-12 patient_documents_list"> <div class="col-sm-12 patient_documents_list">

View File

@ -109,7 +109,7 @@ let setup_filters = function(patient, me) {
change: () => { change: () => {
me.start = 0; me.start = 0;
me.page.main.find('.patient_documents_list').html(''); me.page.main.find('.patient_documents_list').html('');
get_documents(patient, me, doctype_filter.get_value()); get_documents(patient, me, doctype_filter.get_value(), date_range_field.get_value());
}, },
get_data: () => { get_data: () => {
return document_types.map(document_type => { return document_types.map(document_type => {
@ -122,10 +122,29 @@ let setup_filters = function(patient, me) {
} }
}); });
doctype_filter.refresh(); doctype_filter.refresh();
})
let date_range_field = frappe.ui.form.make_control({
df: {
fieldtype: 'DateRange',
fieldname: 'date_range',
placeholder: __('Date Range'),
input_class: 'input-xs',
change: () => {
let selected_date_range = date_range_field.get_value();
if (selected_date_range && selected_date_range.length === 2) {
me.start = 0;
me.page.main.find('.patient_documents_list').html('');
get_documents(patient, me, doctype_filter.get_value(), selected_date_range);
}
}
},
parent: $('.date-filter')
});
date_range_field.refresh();
});
} }
let get_documents = function(patient, me, document_types="") { let get_documents = function(patient, me, document_types="", selected_date_range="") {
let filters = { let filters = {
name: patient, name: patient,
start: me.start, start: me.start,
@ -133,6 +152,8 @@ let get_documents = function(patient, me, document_types="") {
}; };
if (document_types) if (document_types)
filters['document_types'] = document_types; filters['document_types'] = document_types;
if (selected_date_range)
filters['date_range'] = selected_date_range;
frappe.call({ frappe.call({
'method': 'erpnext.healthcare.page.patient_history.patient_history.get_feed', 'method': 'erpnext.healthcare.page.patient_history.patient_history.get_feed',

View File

@ -9,13 +9,9 @@ from frappe.utils import cint
from erpnext.healthcare.utils import render_docs_as_html from erpnext.healthcare.utils import render_docs_as_html
@frappe.whitelist() @frappe.whitelist()
def get_feed(name, document_types=None, start=0, page_length=20): def get_feed(name, document_types=None, date_range=None, start=0, page_length=20):
"""get feed""" """get feed"""
filters = {'patient': name} filters = get_filters(name, document_types, date_range)
if document_types:
document_types = json.loads(document_types)
if len(document_types):
filters['reference_doctype'] = ['IN', document_types]
result = frappe.db.get_all('Patient Medical Record', result = frappe.db.get_all('Patient Medical Record',
fields=['name', 'owner', 'creation', fields=['name', 'owner', 'creation',
@ -28,6 +24,25 @@ def get_feed(name, document_types=None, start=0, page_length=20):
return result return result
def get_filters(name, document_types=None, date_range=None):
filters = {'patient': name}
if document_types:
document_types = json.loads(document_types)
if len(document_types):
filters['reference_doctype'] = ['IN', document_types]
if date_range:
try:
date_range = json.loads(date_range)
if date_range:
filters['creation'] = ['between', [date_range[0], date_range[1]]]
except json.decoder.JSONDecodeError:
pass
return filters
@frappe.whitelist() @frappe.whitelist()
def get_feed_for_dt(doctype, docname): def get_feed_for_dt(doctype, docname):
"""get feed""" """get feed"""
@ -43,6 +58,7 @@ def get_feed_for_dt(doctype, docname):
return result return result
@frappe.whitelist() @frappe.whitelist()
def get_patient_history_doctypes(): def get_patient_history_doctypes():
document_types = [] document_types = []
@ -54,4 +70,4 @@ def get_patient_history_doctypes():
for entry in settings.custom_doctypes: for entry in settings.custom_doctypes:
document_types.append(entry.document_type) document_types.append(entry.document_type)
return document_types return document_types