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="col-sm-12 d-flex">
<div class="patient-history-filter doctype-filter"></div>
<div class="patient-history-filter from-date-filter"></div>
<div class="patient-history-filter to-date-filter"></div>
<div class="patient-history-filter date-filter"></div>
</div>
</div>
<div class="col-sm-12 patient_documents_list">

View File

@ -109,7 +109,7 @@ let setup_filters = function(patient, me) {
change: () => {
me.start = 0;
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: () => {
return document_types.map(document_type => {
@ -122,10 +122,29 @@ let setup_filters = function(patient, me) {
}
});
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 = {
name: patient,
start: me.start,
@ -133,6 +152,8 @@ let get_documents = function(patient, me, document_types="") {
};
if (document_types)
filters['document_types'] = document_types;
if (selected_date_range)
filters['date_range'] = selected_date_range;
frappe.call({
'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
@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"""
filters = {'patient': name}
if document_types:
document_types = json.loads(document_types)
if len(document_types):
filters['reference_doctype'] = ['IN', document_types]
filters = get_filters(name, document_types, date_range)
result = frappe.db.get_all('Patient Medical Record',
fields=['name', 'owner', 'creation',
@ -28,6 +24,25 @@ def get_feed(name, document_types=None, start=0, page_length=20):
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()
def get_feed_for_dt(doctype, docname):
"""get feed"""
@ -43,6 +58,7 @@ def get_feed_for_dt(doctype, docname):
return result
@frappe.whitelist()
def get_patient_history_doctypes():
document_types = []
@ -54,4 +70,4 @@ def get_patient_history_doctypes():
for entry in settings.custom_doctypes:
document_types.append(entry.document_type)
return document_types
return document_types