feat: Doctype filter for Patient History
This commit is contained in:
parent
cbdbb9e65d
commit
fc1e352adf
@ -109,6 +109,11 @@
|
|||||||
padding-right: 0px;
|
padding-right: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.patient-history-filter {
|
||||||
|
margin-left: 35px;
|
||||||
|
width: 25%;
|
||||||
|
}
|
||||||
|
|
||||||
#page-medical_record .plot-wrapper {
|
#page-medical_record .plot-wrapper {
|
||||||
padding: 20px 15px;
|
padding: 20px 15px;
|
||||||
border-bottom: 1px solid #d1d8dd;
|
border-bottom: 1px solid #d1d8dd;
|
||||||
|
@ -10,6 +10,14 @@
|
|||||||
<div id="chart" class="col-sm-12 patient_vital_charts">
|
<div id="chart" class="col-sm-12 patient_vital_charts">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-sm-12 d-flex border-bottom py-3"></div>
|
||||||
|
<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>
|
||||||
|
</div>
|
||||||
<div class="col-sm-12 patient_documents_list">
|
<div class="col-sm-12 patient_documents_list">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12 text-center py-3">
|
<div class="col-sm-12 text-center py-3">
|
||||||
|
@ -20,14 +20,16 @@ frappe.pages['patient_history'].on_page_load = function(wrapper) {
|
|||||||
placeholder: __('Select Patient'),
|
placeholder: __('Select Patient'),
|
||||||
only_select: true,
|
only_select: true,
|
||||||
change: function(){
|
change: function(){
|
||||||
if (pid != patient.get_value() && patient.get_value()) {
|
let patient_id = patient.get_value();
|
||||||
|
if (pid != patient_id && patient_id) {
|
||||||
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.get_value(), me);
|
setup_filters(patient_id, me)
|
||||||
show_patient_info(patient.get_value(), me);
|
get_documents(patient_id, me);
|
||||||
show_patient_vital_charts(patient.get_value(), me, 'bp', 'mmHg', 'Blood Pressure');
|
show_patient_info(patient_id, me);
|
||||||
|
show_patient_vital_charts(patient_id, me, 'bp', 'mmHg', 'Blood Pressure');
|
||||||
}
|
}
|
||||||
pid = patient.get_value();
|
pid = patient_id;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@ -93,14 +95,48 @@ frappe.pages['patient_history'].on_page_load = function(wrapper) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
let get_documents = function(patient, me) {
|
let setup_filters = function(patient, me) {
|
||||||
frappe.call({
|
frappe.xcall(
|
||||||
'method': 'erpnext.healthcare.page.patient_history.patient_history.get_feed',
|
'erpnext.healthcare.page.patient_history.patient_history.get_patient_history_doctypes'
|
||||||
args: {
|
).then(document_types => {
|
||||||
|
let doctype_filter = frappe.ui.form.make_control({
|
||||||
|
parent: $('.doctype-filter'),
|
||||||
|
df: {
|
||||||
|
fieldtype: 'MultiSelectList',
|
||||||
|
fieldname: 'document_type',
|
||||||
|
placeholder: __('Select Document Type'),
|
||||||
|
input_class: 'input-xs',
|
||||||
|
change: () => {
|
||||||
|
me.start = 0;
|
||||||
|
me.page.main.find('.patient_documents_list').html('');
|
||||||
|
get_documents(patient, me, doctype_filter.get_value());
|
||||||
|
},
|
||||||
|
get_data: () => {
|
||||||
|
return document_types.map(document_type => {
|
||||||
|
return {
|
||||||
|
description: document_type,
|
||||||
|
value: document_type
|
||||||
|
};
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}
|
||||||
|
});
|
||||||
|
doctype_filter.refresh();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
let get_documents = function(patient, me, document_types="") {
|
||||||
|
let filters = {
|
||||||
name: patient,
|
name: patient,
|
||||||
start: me.start,
|
start: me.start,
|
||||||
page_length: 20
|
page_length: 20
|
||||||
},
|
};
|
||||||
|
if (document_types)
|
||||||
|
filters['document_types'] = document_types;
|
||||||
|
|
||||||
|
frappe.call({
|
||||||
|
'method': 'erpnext.healthcare.page.patient_history.patient_history.get_feed',
|
||||||
|
args: filters,
|
||||||
callback: function(r) {
|
callback: function(r) {
|
||||||
let data = r.message;
|
let data = r.message;
|
||||||
if (data.length) {
|
if (data.length) {
|
||||||
|
@ -4,36 +4,53 @@
|
|||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import frappe
|
import frappe
|
||||||
|
import json
|
||||||
from frappe.utils import cint
|
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, start=0, page_length=20):
|
def get_feed(name, document_types=None, start=0, page_length=20):
|
||||||
"""get feed"""
|
"""get feed"""
|
||||||
result = frappe.db.sql("""select name, owner, creation,
|
filters = {'patient': name}
|
||||||
reference_doctype, reference_name, subject
|
if document_types:
|
||||||
from `tabPatient Medical Record`
|
document_types = json.loads(document_types)
|
||||||
where patient=%(patient)s
|
filters['reference_doctype'] = ['IN', document_types]
|
||||||
order by creation desc
|
|
||||||
limit %(start)s, %(page_length)s""",
|
result = frappe.db.get_all('Patient Medical Record',
|
||||||
{
|
fields=['name', 'owner', 'creation',
|
||||||
"patient": name,
|
'reference_doctype', 'reference_name', 'subject'],
|
||||||
"start": cint(start),
|
filters=filters,
|
||||||
"page_length": cint(page_length)
|
order_by='creation DESC',
|
||||||
}, as_dict=True)
|
limit=cint(page_length),
|
||||||
|
start=cint(start)
|
||||||
|
)
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def get_feed_for_dt(doctype, docname):
|
def get_feed_for_dt(doctype, docname):
|
||||||
"""get feed"""
|
"""get feed"""
|
||||||
result = frappe.db.sql("""select name, owner, modified, creation,
|
result = frappe.db.get_all('Patient Medical Record',
|
||||||
reference_doctype, reference_name, subject
|
fields=['name', 'owner', 'creation',
|
||||||
from `tabPatient Medical Record`
|
'reference_doctype', 'reference_name', 'subject'],
|
||||||
where reference_name=%(docname)s and reference_doctype=%(doctype)s
|
filters={
|
||||||
order by creation desc""",
|
'reference_doctype': doctype,
|
||||||
{
|
'reference_name': docname
|
||||||
"docname": docname,
|
},
|
||||||
"doctype": doctype
|
order_by='creation DESC'
|
||||||
}, as_dict=True)
|
)
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
@frappe.whitelist()
|
||||||
|
def get_patient_history_doctypes():
|
||||||
|
document_types = []
|
||||||
|
settings = frappe.get_single("Patient History Settings")
|
||||||
|
|
||||||
|
for entry in settings.standard_doctypes:
|
||||||
|
document_types.append(entry.document_type)
|
||||||
|
|
||||||
|
for entry in settings.custom_doctypes:
|
||||||
|
document_types.append(entry.document_type)
|
||||||
|
|
||||||
|
return document_types
|
Loading…
x
Reference in New Issue
Block a user