refactor: Healthcare Module Page

This commit is contained in:
Rucha Mahabal 2020-03-12 12:16:23 +05:30
parent c4b2dceb01
commit 06d1b047e0
3 changed files with 149 additions and 118 deletions

View File

@ -2,131 +2,68 @@ from __future__ import unicode_literals
from frappe import _
def get_data():
return [
{
"label": _("Consultation"),
"icon": "icon-star",
"items": [
{
"type": "doctype",
"name": "Patient Appointment",
"label": _("Patient Appointment"),
},
{
"type": "doctype",
"name": "Patient Encounter",
"label": _("Patient Encounter"),
},
{
"type": "doctype",
"name": "Vital Signs",
"label": _("Vital Signs"),
"description": _("Record Patient Vitals"),
},
{
"type": "page",
"name": "patient_history",
"label": _("Patient History"),
},
{
"type": "page",
"name": "appointment-analytic",
"label": _("Appointment Analytics"),
},
{
"type": "doctype",
"name": "Clinical Procedure",
"label": _("Clinical Procedure"),
},
{
"type": "doctype",
"name": "Inpatient Record",
"label": _("Inpatient Record"),
}
]
},
{
"label": _("Laboratory"),
"icon": "icon-list",
"items": [
{
"type": "doctype",
"name": "Lab Test",
"label": _("Lab Test"),
},
{
"type": "doctype",
"name": "Sample Collection",
"label": _("Sample Collection"),
},
{
"type": "report",
"name": "Lab Test Report",
"is_query_report": True,
"label": _("Lab Test Report"),
}
]
},
{
"label": _("Masters"),
"icon": "icon-list",
"items": [
{
"type": "doctype",
"name": "Patient",
"label": _("Patient"),
"onboard": 1,
"onboard": 1
},
{
"type": "doctype",
"name": "Healthcare Practitioner",
"label": _("Healthcare Practitioner"),
"onboard": 1,
"onboard": 1
},
{
"type": "doctype",
"name": "Practitioner Schedule",
"label": _("Practitioner Schedule"),
},
{
"type": "doctype",
"name": "Medical Code Standard",
"label": _("Medical Code Standard"),
},
{
"type": "doctype",
"name": "Medical Code",
"label": _("Medical Code"),
"onboard": 1,
},
{
"type": "doctype",
"name": "Healthcare Service Unit",
"label": _("Healthcare Service Unit")
}
]
},
{
"label": _("Settings"),
"icon": "icon-cog",
"items": [
{
"type": "doctype",
"name": "Healthcare Settings",
"label": _("Healthcare Settings"),
"onboard": 1,
"onboard": 1
},
{
"type": "doctype",
"name": "Medical Department",
"label": _("Medical Department"),
},
{
"type": "doctype",
"name": "Healthcare Service Unit Type",
"label": _("Healthcare Service Unit Type")
},
{
"type": "doctype",
"name": "Healthcare Service Unit",
"label": _("Healthcare Service Unit")
},
{
"type": "doctype",
"name": "Medical Code Standard",
"label": _("Medical Code Standard")
},
{
"type": "doctype",
"name": "Medical Code",
"label": _("Medical Code")
}
]
},
{
"label": _("Consultation Setup"),
"items": [
{
"type": "doctype",
"name": "Appointment Type",
"label": _("Appointment Type"),
},
{
"type": "doctype",
"name": "Clinical Procedure Template",
"label": _("Clinical Procedure Template")
},
{
"type": "doctype",
"name": "Prescription Dosage",
@ -137,6 +74,36 @@ def get_data():
"name": "Prescription Duration",
"label": _("Prescription Duration")
},
{
"type": "doctype",
"name": "Antibiotic",
"label": _("Antibiotic")
}
]
},
{
"label": _("Consultation"),
"items": [
{
"type": "doctype",
"name": "Patient Appointment",
"label": _("Patient Appointment")
},
{
"type": "doctype",
"name": "Clinical Procedure",
"label": _("Clinical Procedure")
},
{
"type": "doctype",
"name": "Patient Encounter",
"label": _("Patient Encounter")
},
{
"type": "doctype",
"name": "Vital Signs",
"label": _("Vital Signs")
},
{
"type": "doctype",
"name": "Complaint",
@ -147,40 +114,104 @@ def get_data():
"name": "Diagnosis",
"label": _("Diagnosis")
},
{
"type": "doctype",
"name": "Fee Validity",
"label": _("Fee Validity")
}
]
},
{
"label": _("Settings"),
"items": [
{
"type": "doctype",
"name": "Healthcare Settings",
"label": _("Healthcare Settings"),
"onboard": 1
}
]
},
{
"label": _("Laboratory Setup"),
"items": [
{
"type": "doctype",
"name": "Lab Test Template",
"label": _("Lab Test Template")
},
{
"type": "doctype",
"name": "Lab Test Sample",
"label": _("Lab Test Sample"),
"label": _("Lab Test Sample")
},
{
"type": "doctype",
"name": "Lab Test UOM",
"label": _("Lab Test UOM")
},
{
"type": "doctype",
"name": "Antibiotic",
"label": _("Antibiotic")
},
{
"type": "doctype",
"name": "Sensitivity",
"label": _("Sensitivity")
}
]
},
{
"label": _("Laboratory"),
"items": [
{
"type": "doctype",
"name": "Lab Test",
"label": _("Lab Test")
},
{
"type": "doctype",
"name": "Lab Test Template",
"label": _("Lab Test Template")
"name": "Sample Collection",
"label": _("Sample Collection")
},
{
"type": "doctype",
"name": "Clinical Procedure Template",
"label": _("Clinical Procedure Template"),
"name": "Dosage Form",
"label": _("Dosage Form")
}
]
},
{
"label": _("Records and History"),
"items": [
{
"type": "page",
"name": "patient_history",
"label": _("Patient History"),
},
{
"type": "doctype",
"name": "Healthcare Service Unit Type",
"label": _("Healthcare Service Unit Type")
"name": "Patient Medical Record",
"label": _("Patient Medical Record")
},
{
"type": "doctype",
"name": "Inpatient Record",
"label": _("Inpatient Record")
}
]
},
{
"label": _("Reports"),
"items": [
{
"type": "report",
"is_query_report": True,
"name": "Patient Appointment Analytics",
"doctype": "Patient Appointment"
},
{
"type": "report",
"is_query_report": True,
"name": "Lab Test Report",
"doctype": "Lab Test",
"label": _("Lab Test Report")
}
]
}

View File

@ -108,8 +108,8 @@ frappe.ui.form.on('Patient Appointment', {
}, __('Create'));
}
frappe.db.get_value('Healthcare Settings', {name: 'Healthcare Settings'}, 'automate_appointment_invoicing', (settings) => {
if (settings.automate_appointment_invoicing) {
frappe.db.get_value('Healthcare Settings', {name: 'Healthcare Settings'}, ['automate_appointment_invoicing'], (settings) => {
if (settings.automate_appointment_invoicing == 1) {
frm.set_df_property('mode_of_payment', 'hidden', 0);
frm.set_df_property('paid_amount', 'hidden', 0);
frm.set_df_property('mode_of_payment', 'reqd', 1);

View File

@ -320,7 +320,7 @@ def set_invoiced(item, method, ref_invoice=None):
else:
manage_fee_validity(item.reference_dn, method, ref_invoice)
dt_from_appointment = 'Patient Encounter'
manage_doc_for_appoitnment(dt_from_appointment, item.reference_dn, invoiced)
manage_doc_for_appointment(dt_from_appointment, item.reference_dn, invoiced)
elif item.reference_dt == 'Lab Prescription':
manage_prescriptions(invoiced, item.reference_dt, item.reference_dn, 'Lab Test', 'lab_test_created')
@ -331,7 +331,7 @@ def set_invoiced(item, method, ref_invoice=None):
def validate_invoiced_on_submit(item):
if item.reference_dt == 'Clinical Procedure' and get_healthcare_service_item('clinical_procedure_consumable_item') == item.item_code:
is_invoiced = frappe.db.get_value(item.reference_dt, item.reference_dn, 'consumption_invoiced')
is_invoiced = frappe.db.get_value(item.reference_dt, item.reference_dn, 'consumption_invoiced')
else:
is_invoiced = frappe.db.get_value(item.reference_dt, item.reference_dn, 'invoiced')
if is_invoiced:
@ -380,7 +380,7 @@ def manage_fee_validity(appointment_name, method, ref_invoice=None):
fee_validity = create_fee_validity(appointment_doc.practitioner, appointment_doc.patient, appointment_doc.appointment_date, ref_invoice)
visited = fee_validity.visited
mark_appointments_as_invoiced(fee_validity, ref_invoice, method, appointment_doc)
mark_appointments_as_invoiced(fee_validity, ref_invoice, method, appointment_doc, visited)
if method == 'on_cancel':
ref_invoice_in_fee_validity = frappe.db.get_value('Fee Validity', fee_validity.name, 'ref_invoice')
@ -388,7 +388,7 @@ def manage_fee_validity(appointment_name, method, ref_invoice=None):
frappe.delete_doc('Fee Validity', fee_validity.name)
def mark_appointments_as_invoiced(fee_validity, ref_invoice, method, appointment_doc):
def mark_appointments_as_invoiced(fee_validity, ref_invoice, method, appointment_doc, visited):
if method == 'on_cancel':
invoiced = True
else:
@ -405,13 +405,13 @@ def mark_appointments_as_invoiced(fee_validity, ref_invoice, method, appointment
visited = 0
frappe.db.set_value('Fee Validity', fee_validity.name, 'visited', visited)
frappe.db.set_value('Patient Appointment', appointment.name, 'invoiced', False)
manage_doc_for_appoitnment('Patient Encounter', appointment.name, False)
manage_doc_for_appointment('Patient Encounter', appointment.name, False)
elif method == 'on_submit' and int(fee_validity.max_visits) > visit:
if ref_invoice == fee_validity.ref_invoice:
visited += 1
frappe.db.set_value('Fee Validity', fee_validity.name, 'visited', visited)
frappe.db.set_value('Patient Appointment', appointment.name, 'invoiced', True)
manage_doc_for_appoitnment('Patient Encounter', appointment.name, True)
manage_doc_for_appointment('Patient Encounter', appointment.name, True)
if ref_invoice == fee_validity.ref_invoice:
visit = visit + 1
@ -432,7 +432,7 @@ def appointments_valid_in_fee_validity(appointment, invoiced):
}, order_by='appointment_date', limit=int(max_visits)-1)
def manage_doc_for_appoitnment(dt_from_appointment, appointment, invoiced):
def manage_doc_for_appointment(dt_from_appointment, appointment, invoiced):
dn_from_appointment = frappe.db.get_value(
dt_from_appointment,
filters={'appointment': appointment}
@ -525,7 +525,7 @@ def get_patient_vitals(patient, from_date=None, to_date=None):
vitals = frappe.db.get_all('Vital Signs', {
'docstatus': 1,
'patient': patient
}, order_by='signs_date signs_time')
}, order_by='signs_date, signs_time')
if len(vitals):
return vitals