From ced978e1920b940a2cb733bbe928431cf8dc23f6 Mon Sep 17 00:00:00 2001 From: Rucha Mahabal Date: Thu, 2 Apr 2020 18:45:53 +0530 Subject: [PATCH] fix: code clean up, performance improvements --- .../clinical_procedure_template.py | 13 +-- .../healthcare_service_unit_type.py | 11 +-- .../healthcare/doctype/lab_test/lab_test.py | 13 ++- erpnext/healthcare/doctype/patient/patient.py | 20 ++-- .../patient_appointment.js | 12 +-- .../patient_appointment.py | 25 ++--- .../patient_encounter/patient_encounter.js | 33 ++++--- .../patient_encounter/patient_encounter.py | 15 +-- .../doctype/vital_signs/vital_signs.py | 15 +-- erpnext/healthcare/utils.py | 91 +++++++++++++------ 10 files changed, 147 insertions(+), 101 deletions(-) diff --git a/erpnext/healthcare/doctype/clinical_procedure_template/clinical_procedure_template.py b/erpnext/healthcare/doctype/clinical_procedure_template/clinical_procedure_template.py index bd9a5ac3d9..3f295afc3e 100644 --- a/erpnext/healthcare/doctype/clinical_procedure_template/clinical_procedure_template.py +++ b/erpnext/healthcare/doctype/clinical_procedure_template/clinical_procedure_template.py @@ -38,14 +38,13 @@ class ClinicalProcedureTemplate(Document): if self.rate: item_price = frappe.get_doc('Item Price', {'item_code': self.item}) item_price.item_name = self.template - item_price.price_list_name = self.rate + item_price.price_list_rate = self.rate item_price.save() elif not self.is_billable and self.item: frappe.db.set_value('Item', self.item, 'disabled', 1) - frappe.db.set_value(self.doctype, self.name, 'change_in_item', 0) - self.reload() + self.db_set('change_in_item', 0) @frappe.whitelist() @@ -94,12 +93,10 @@ def create_item_from_template(doc): 'is_pro_applicable': 0, 'disabled': disabled, 'stock_uom': 'Unit' - }).insert(ignore_permissions=True) + }).insert(ignore_permissions=True, ignore_mandatory=True) make_item_price(item.name, doc.rate) - - frappe.db.set_value('Clinical Procedure Template', doc.name, 'item', item.name) - doc.reload() + doc.db_set('item', item.name) def make_item_price(item, item_price): price_list_name = frappe.db.get_value('Price List', {'selling': 1}) @@ -108,7 +105,7 @@ def make_item_price(item, item_price): 'price_list': price_list_name, 'item_code': item, 'price_list_rate': item_price - }).insert(ignore_permissions=True) + }).insert(ignore_permissions=True, ignore_mandatory=True) @frappe.whitelist() def change_item_code_from_template(item_code, doc): diff --git a/erpnext/healthcare/doctype/healthcare_service_unit_type/healthcare_service_unit_type.py b/erpnext/healthcare/doctype/healthcare_service_unit_type/healthcare_service_unit_type.py index 196cd04790..286ecc0ff8 100644 --- a/erpnext/healthcare/doctype/healthcare_service_unit_type/healthcare_service_unit_type.py +++ b/erpnext/healthcare/doctype/healthcare_service_unit_type/healthcare_service_unit_type.py @@ -70,7 +70,7 @@ def create_item(doc): 'is_pro_applicable': 0, 'disabled': 0, 'stock_uom': doc.uom - }).insert(ignore_permissions=True) + }).insert(ignore_permissions=True, ignore_mandatory=True) # insert item price # get item price list to insert item price @@ -83,10 +83,9 @@ def create_item(doc): item.standard_rate = 0.0 item.save(ignore_permissions=True) - # Set item in the doc - frappe.db.set_value('Healthcare Service Unit Type', doc.name, 'item', item.name) - doc.reload() + # Set item in the doc + doc.db_set('item', item.name) def make_item_price(item, price_list_name, item_price): frappe.get_doc({ @@ -94,7 +93,7 @@ def make_item_price(item, price_list_name, item_price): 'price_list': price_list_name, 'item_code': item, 'price_list_rate': item_price - }).insert(ignore_permissions=True) + }).insert(ignore_permissions=True, ignore_mandatory=True) def update_item(doc): item = frappe.get_doc("Item", doc.item) @@ -106,7 +105,7 @@ def update_item(doc): "standard_rate": doc.rate, "description": doc.description }) - item.save() + item.db_update() @frappe.whitelist() def change_item_code(item, item_code, doc_name): diff --git a/erpnext/healthcare/doctype/lab_test/lab_test.py b/erpnext/healthcare/doctype/lab_test/lab_test.py index 7028728b57..4e4015d2f0 100644 --- a/erpnext/healthcare/doctype/lab_test/lab_test.py +++ b/erpnext/healthcare/doctype/lab_test/lab_test.py @@ -201,11 +201,14 @@ def create_sample_doc(template, patient, invoice): if sample_exists: # update Sample Collection by adding quantity sample_collection = frappe.get_doc("Sample Collection", sample_exists[0][0]) - quantity = int(sample_collection.sample_qty)+int(template.sample_qty) - if(template.sample_details): - sample_details = sample_collection.sample_details+"\n==============\n"+"Test :" + (template.get("lab_test_name") or template.get("template")) +"\n"+"Collection Detials:\n\t"+template.sample_details - frappe.db.set_value("Sample Collection", sample_collection.name, "sample_details",sample_details) - frappe.db.set_value("Sample Collection", sample_collection.name, "sample_qty",quantity) + quantity = int(sample_collection.sample_qty) + int(template.sample_qty) + if template.sample_details: + sample_details = sample_collection.sample_details + "\n==============\n" + _("Test: ") + sample_details += (template.get("lab_test_name") or template.get("template")) + "\n" + sample_details += _("Collection Details: ") + "\n\t" + template.sample_details + + frappe.db.set_value("Sample Collection", sample_collection.name, "sample_details", sample_details) + frappe.db.set_value("Sample Collection", sample_collection.name, "sample_qty", quantity) else: #create Sample Collection for template, copy vals from Invoice diff --git a/erpnext/healthcare/doctype/patient/patient.py b/erpnext/healthcare/doctype/patient/patient.py index 071c5b1169..e304a0bbc3 100644 --- a/erpnext/healthcare/doctype/patient/patient.py +++ b/erpnext/healthcare/doctype/patient/patient.py @@ -9,6 +9,7 @@ from frappe.model.document import Document from frappe.utils import cint, cstr, getdate import dateutil from frappe.model.naming import set_name_by_naming_series +from frappe.utils.nestedset import get_root_of from erpnext.healthcare.doctype.healthcare_settings.healthcare_settings import get_receivable_account, get_income_account, send_registration_sms class Patient(Document): @@ -17,14 +18,14 @@ class Patient(Document): self.add_as_website_user() def after_insert(self): - if frappe.db.get_value('Healthcare Settings', None, 'link_customer_to_patient') and not self.customer: + self.add_as_website_user() + self.reload() + if frappe.db.get_single_value('Healthcare Settings', 'link_customer_to_patient') and not self.customer: create_customer(self) if frappe.db.get_single_value('Healthcare Settings', 'collect_registration_fee'): frappe.db.set_value('Patient', self.name, 'status', 'Disabled') else: send_registration_sms(self) - self.add_as_website_user() - self.reload() def set_full_name(self): if self.last_name: @@ -88,22 +89,25 @@ def create_customer(doc): customer_group = frappe.db.get_single_value('Selling Settings', 'customer_group') territory = frappe.db.get_single_value('Selling Settings', 'territory') if not (customer_group and territory): - customer_group = 'All Customer Groups' - territory = 'All Territories' + customer_group = get_root_of('Customer Group') + territory = get_root_of('Territory') frappe.msgprint(_('Please set default customer group and territory in Selling Settings'), alert=True) + customer = frappe.get_doc({ 'doctype': 'Customer', 'customer_name': doc.patient_name, 'customer_group': customer_group, 'territory' : territory, 'customer_type': 'Individual' - }).insert(ignore_permissions=True) + }).insert(ignore_permissions=True, ignore_mandatory=True) + frappe.db.set_value('Patient', doc.name, 'customer', customer.name) frappe.msgprint(_('Customer {0} is created.').format(customer.name), alert=True) def make_invoice(patient, company): + uom = frappe.db.exists('UOM', 'Nos') or frappe.db.get_single_value('Stock Settings', 'stock_uom') sales_invoice = frappe.new_doc('Sales Invoice') - sales_invoice.customer = frappe.get_value('Patient', patient, 'customer') + sales_invoice.customer = frappe.db.get_value('Patient', patient, 'customer') sales_invoice.due_date = getdate() sales_invoice.company = company sales_invoice.is_pos = 0 @@ -113,7 +117,7 @@ def make_invoice(patient, company): item_line.item_name = 'Registeration Fee' item_line.description = 'Registeration Fee' item_line.qty = 1 - item_line.uom = 'Nos' + item_line.uom = uom item_line.conversion_factor = 1 item_line.income_account = get_income_account(None, company) item_line.rate = frappe.db.get_single_value('Healthcare Settings', 'registration_fee') diff --git a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js index 82d70f8e9d..efa6b249b3 100644 --- a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js +++ b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js @@ -135,10 +135,10 @@ frappe.ui.form.on('Patient Appointment', { if (data.message.fee_validity) { // if fee validity exists and automated appointment invoicing is enabled, // show payment fields as non-mandatory - 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', 0); - frm.set_df_property('paid_amount', 'reqd', 0); + frm.toggle_display('mode_of_payment', 0); + frm.toggle_display('paid_amount', 0); + frm.toggle_reqd('mode_of_payment', 0); + frm.toggle_reqd('paid_amount', 0); } else { // if automated appointment invoicing is disabled, hide fields frm.toggle_display('mode_of_payment', data.message ? 1 : 0); @@ -319,7 +319,7 @@ let check_and_set_availability = function(frm) { freeze_message: __('Fetching records......') }); } else { - fd.available_slots.html('Appointment date and Healthcare Practitioner are Mandatory'.bold()); + fd.available_slots.html(__('Appointment date and Healthcare Practitioner are Mandatory').bold()); } } }; @@ -387,7 +387,7 @@ let show_procedure_templates = function(frm, result){ }); }); if (!result) { - let msg = 'There are no procedure prescribed for '+frm.doc.patient; + let msg = __('There are no procedure prescribed for ') + frm.doc.patient; $(repl('
%(msg)s
', {msg: msg})).appendTo(html_field); } d.show(); diff --git a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py index c362679142..e15cad8056 100755 --- a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py +++ b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py @@ -122,7 +122,7 @@ def invoice_appointment(appointment_doc): sales_invoice.customer = frappe.get_value('Patient', appointment_doc.patient, 'customer') sales_invoice.appointment = appointment_doc.name sales_invoice.due_date = getdate() - sales_invoice.is_pos = True + sales_invoice.is_pos = 1 sales_invoice.company = appointment_doc.company sales_invoice.debit_to = get_receivable_account(appointment_doc.company) @@ -134,7 +134,7 @@ def invoice_appointment(appointment_doc): payment.amount = appointment_doc.paid_amount sales_invoice.set_missing_values(for_validate=True) - sales_invoice.save(ignore_permissions=True) + sales_invoice.save(ignore_permissions=True, ignore_mandatory=True) sales_invoice.submit() frappe.msgprint(_('Sales Invoice {0} created as paid'.format(sales_invoice.name)), alert=True) frappe.db.set_value('Patient Appointment', appointment_doc.name, 'invoiced', 1) @@ -157,6 +157,7 @@ def get_appointment_item(appointment_doc, item): item.item_code = service_item item.description = _('Consulting Charges: {0}').format(appointment_doc.practitioner) item.income_account = get_income_account(appointment_doc.practitioner, appointment_doc.company) + item.cost_center = frappe.get_cached_value('Company', appointment_doc.company, 'cost_center') item.rate = practitioner_charge item.amount = practitioner_charge item.qty = 1 @@ -190,20 +191,14 @@ def cancel_sales_invoice(sales_invoice): return False -def check_si_item_exists(appointment): - return frappe.db.exists( - 'Sales Invoice Item', - { - 'reference_dt': 'Patient Appointment', - 'reference_dn': appointment.name - } - ) - - def check_sales_invoice_exists(appointment): - si_item = check_si_item_exists(appointment) - if si_item: - sales_invoice = frappe.get_doc('Sales Invoice', frappe.db.get_value('Sales Invoice Item', si_item, 'parent')) + sales_invoice = frappe.db.get_value('Sales Invoice Item', { + 'reference_dt': 'Patient Appointment', + 'reference_dn': appointment.name + }, 'parent') + + if sales_invoice: + sales_invoice = frappe.get_doc('Sales Invoice', sales_invoice) return sales_invoice return False diff --git a/erpnext/healthcare/doctype/patient_encounter/patient_encounter.js b/erpnext/healthcare/doctype/patient_encounter/patient_encounter.js index 2130945dfa..83c5d2be9c 100644 --- a/erpnext/healthcare/doctype/patient_encounter/patient_encounter.js +++ b/erpnext/healthcare/doctype/patient_encounter/patient_encounter.js @@ -106,22 +106,29 @@ frappe.ui.form.on('Patient Encounter', { name: frm.doc.appointment }, callback: function(data) { - frappe.model.set_value(frm.doctype, frm.docname, 'patient', data.message.patient); - frappe.model.set_value(frm.doctype, frm.docname, 'type', data.message.appointment_type); - frappe.model.set_value(frm.doctype, frm.docname, 'practitioner', data.message.practitioner); - frappe.model.set_value(frm.doctype, frm.docname, 'invoiced', data.message.invoiced); + let values = { + 'patient':data.message.patient, + 'type': data.message.appointment_type, + 'practitioner': data.message.practitioner, + 'invoiced': data.message.invoiced + }; + frm.set_value(values); } }); } else { - frappe.model.set_value(frm.doctype, frm.docname, 'patient', ''); - frappe.model.set_value(frm.doctype, frm.docname, 'type', ''); - frappe.model.set_value(frm.doctype, frm.docname, 'practitioner', ''); - frappe.model.set_value(frm.doctype, frm.docname, 'invoiced', 0); - frappe.model.set_value(frm.doctype, frm.docname, 'patient_sex', ''); - frappe.model.set_value(frm.doctype, frm.docname, 'patient_age', ''); - frappe.model.set_value(frm.doctype, frm.docname, 'inpatient_record', ''); - frappe.model.set_value(frm.doctype, frm.docname, 'inpatient_status', ''); + let values = { + 'patient': '', + 'patient_name': '', + 'type': '', + 'practitioner': '', + 'invoiced': 0, + 'patient_sex': '', + 'patient_age': '', + 'inpatient_record': '', + 'inpatient_status': '' + }; + frm.set_value(values); } }, @@ -164,7 +171,7 @@ let schedule_inpatient = function(frm) { } }, freeze: true, - freeze_message: 'Process Inpatient Scheduling' + freeze_message: __('Process Inpatient Scheduling') }); }; diff --git a/erpnext/healthcare/doctype/patient_encounter/patient_encounter.py b/erpnext/healthcare/doctype/patient_encounter/patient_encounter.py index c2258c8fe3..ade4748ece 100644 --- a/erpnext/healthcare/doctype/patient_encounter/patient_encounter.py +++ b/erpnext/healthcare/doctype/patient_encounter/patient_encounter.py @@ -6,6 +6,7 @@ from __future__ import unicode_literals import frappe from frappe.model.document import Document from frappe.utils import cstr +from frappe import _ class PatientEncounter(Document): def on_update(self): @@ -48,20 +49,20 @@ def delete_medical_record(encounter): def set_subject_field(encounter): subject = encounter.practitioner + '\n' if encounter.symptoms: - subject += 'Symptoms: '+ cstr(encounter.symptoms) + '\n' + subject += _('Symptoms: ') + cstr(encounter.symptoms) + '\n' else: - subject += 'No Symptoms \n' + subject += _('No Symptoms') + '\n' if encounter.diagnosis: - subject += 'Diagnosis: '+ cstr(encounter.diagnosis) + '\n' + subject += _('Diagnosis: ') + cstr(encounter.diagnosis) + '\n' else: - subject += 'No Diagnosis \n' + subject += _('No Diagnosis') + '\n' if encounter.drug_prescription: - subject += '\nDrug(s) Prescribed.' + subject += '\n' + _('Drug(s) Prescribed.') if encounter.lab_test_prescription: - subject += '\nTest(s) Prescribed.' + subject += '\n' + _('Test(s) Prescribed.') if encounter.procedure_prescription: - subject += '\nProcedure(s) Prescribed.' + subject += '\n' + _('Procedure(s) Prescribed.') return subject diff --git a/erpnext/healthcare/doctype/vital_signs/vital_signs.py b/erpnext/healthcare/doctype/vital_signs/vital_signs.py index 375891fba6..2ab2fdb35c 100644 --- a/erpnext/healthcare/doctype/vital_signs/vital_signs.py +++ b/erpnext/healthcare/doctype/vital_signs/vital_signs.py @@ -6,6 +6,7 @@ from __future__ import unicode_literals import frappe from frappe.model.document import Document from frappe.utils import cstr +from frappe import _ class VitalSigns(Document): def on_submit(self): @@ -24,7 +25,7 @@ def insert_vital_signs_to_medical_record(doc): medical_record.reference_doctype = 'Vital Signs' medical_record.reference_name = doc.name medical_record.reference_owner = doc.owner - medical_record.save(ignore_permissions=True) + medical_record.save(ignore_permissions=True, ignore_mandatory=True) def delete_vital_signs_from_medical_record(doc): medical_record = frappe.db.get_value('Patient Medical Record', {'reference_name': doc.name}) @@ -34,16 +35,16 @@ def delete_vital_signs_from_medical_record(doc): def set_subject_field(doc): subject = '' if(doc.temperature): - subject += 'Temperature: \n'+ cstr(doc.temperature)+'. ' + subject += _('Temperature: ') + '\n'+ cstr(doc.temperature) + '. ' if(doc.pulse): - subject += 'Pulse: \n'+ cstr(doc.pulse)+'. ' + subject += _('Pulse: ') + '\n' + cstr(doc.pulse) + '. ' if(doc.respiratory_rate): - subject += 'Respiratory Rate: \n'+ cstr(doc.respiratory_rate)+'. ' + subject += _('Respiratory Rate: ') + '\n' + cstr(doc.respiratory_rate) + '. ' if(doc.bp): - subject += 'BP: \n'+ cstr(doc.bp)+'. ' + subject += _('BP: ') + '\n' + cstr(doc.bp) + '. ' if(doc.bmi): - subject += 'BMI: \n'+ cstr(doc.bmi)+'. ' + subject += _('BMI: ') + '\n' + cstr(doc.bmi) + '. ' if(doc.nutrition_note): - subject += 'Note: \n'+ cstr(doc.nutrition_note)+'. ' + subject += _('Note: ') + '\n' + cstr(doc.nutrition_note) + '. ' return subject diff --git a/erpnext/healthcare/utils.py b/erpnext/healthcare/utils.py index 7e319687d8..246242ad84 100644 --- a/erpnext/healthcare/utils.py +++ b/erpnext/healthcare/utils.py @@ -109,22 +109,34 @@ def get_lab_tests_to_invoice(patient): filters={'patient': patient.name, 'invoiced': False, 'docstatus': 1} ) for lab_test in lab_tests: - if frappe.db.get_value('Lab Test Template', lab_test.template, 'is_billable'): + item, is_billable = frappe.get_cached_value('Lab Test Template', lab_test.lab_test_code, ['item', 'is_billable']) + if is_billable: lab_tests_to_invoice.append({ 'reference_type': 'Lab Test', 'reference_name': lab_test.name, - 'service': frappe.db.get_value('Lab Test Template', lab_test.template, 'item') + 'service': item }) - lab_prescriptions = frappe.db.sql('''select lp.name, lp.lab_test_code from `tabPatient Encounter` et, `tabLab Prescription` lp - where et.patient=%s and lp.parent=et.name and lp.lab_test_created=0 and lp.invoiced=0''', (patient.name), as_dict=1) + lab_prescriptions = frappe.db.sql( + ''' + SELECT + lp.name, lp.lab_test_code + FROM + `tabPatient Encounter` et, `tabLab Prescription` lp + WHERE + et.patient=%s + and lp.parent=et.name + and lp.lab_test_created=0 + and lp.invoiced=0 + ''', (patient.name), as_dict=1) for prescription in lab_prescriptions: - if prescription.lab_test_code and frappe.db.get_value('Lab Test Template', prescription.lab_test_code, 'is_billable'): + item, is_billable = frappe.get_cached_value('Lab Test Template', prescription.lab_test_code, ['item', 'is_billable']) + if prescription.lab_test_code and is_billable: lab_tests_to_invoice.append({ 'reference_type': 'Lab Prescription', 'reference_name': prescription.name, - 'service': frappe.db.get_value('Lab Test Template', prescription.lab_test_code, 'item') + 'service': item }) return lab_tests_to_invoice @@ -139,11 +151,12 @@ def get_clinical_procedures_to_invoice(patient): ) for procedure in procedures: if not procedure.appointment: - if procedure.procedure_template and frappe.db.get_value('Clinical Procedure Template', procedure.procedure_template, 'is_billable'): + item, is_billable = frappe.get_cached_value('Clinical Procedure Template', procedure.procedure_template, ['item', 'is_billable']) + if procedure.procedure_template and is_billable: clinical_procedures_to_invoice.append({ 'reference_type': 'Clinical Procedure', 'reference_name': procedure.name, - 'service': frappe.db.get_value('Clinical Procedure Template', procedure.procedure_template, 'item') + 'service': item }) # consumables @@ -164,16 +177,27 @@ def get_clinical_procedures_to_invoice(patient): 'description': procedure.consumption_details }) - procedure_prescriptions = frappe.db.sql('''select pp.name, pp.procedure from `tabPatient Encounter` et, - `tabProcedure Prescription` pp where et.patient=%s and pp.parent=et.name and - pp.procedure_created=0 and pp.invoiced=0 and pp.appointment_booked=0''', (patient.name), as_dict=1) + procedure_prescriptions = frappe.db.sql( + ''' + SELECT + pp.name, pp.procedure + FROM + `tabPatient Encounter` et, `tabProcedure Prescription` pp + WHERE + et.patient=%s + and pp.parent=et.name + and pp.procedure_created=0 + and pp.invoiced=0 + and pp.appointment_booked=0 + ''', (patient.name), as_dict=1) for prescription in procedure_prescriptions: - if frappe.db.get_value('Clinical Procedure Template', prescription.procedure, 'is_billable'): + item, is_billable = frappe.get_cached_value('Clinical Procedure Template', prescription.procedure, ['item', 'is_billable']) + if is_billable: clinical_procedures_to_invoice.append({ 'reference_type': 'Procedure Prescription', 'reference_name': prescription.name, - 'service': frappe.db.get_value('Clinical Procedure Template', prescription.procedure, 'item') + 'service': item }) return clinical_procedures_to_invoice @@ -181,13 +205,22 @@ def get_clinical_procedures_to_invoice(patient): def get_inpatient_services_to_invoice(patient): services_to_invoice = [] - inpatient_services = frappe.db.sql('''select io.* from `tabInpatient Record` ip, - `tabInpatient Occupancy` io where ip.patient=%s and io.parent=ip.name and - io.left=1 and io.invoiced=0''', (patient.name), as_dict=1) + inpatient_services = frappe.db.sql( + ''' + SELECT + io.* + FROM + `tabInpatient Record` ip, `tabInpatient Occupancy` io + WHERE + ip.patient=%s + and io.parent=ip.name + and io.left=1 + and io.invoiced=0 + ''', (patient.name), as_dict=1) for inpatient_occupancy in inpatient_services: service_unit_type = frappe.db.get_value('Healthcare Service Unit', inpatient_occupancy.service_unit, 'service_unit_type') - service_unit_type = frappe.get_doc('Healthcare Service Unit Type', service_unit_type) + service_unit_type = frappe.get_cached_doc('Healthcare Service Unit Type', service_unit_type) if service_unit_type and service_unit_type.is_billable: hours_occupied = time_diff_in_hours(inpatient_occupancy.check_out, inpatient_occupancy.check_in) qty = 0.5 @@ -231,9 +264,9 @@ def get_service_item_and_practitioner_charge(doc): def throw_config_service_item(is_inpatient): - service_item_label = 'Out Patient Consulting Charge Item' + service_item_label = _('Out Patient Consulting Charge Item') if is_inpatient: - service_item_label = 'Inpatient Visit Charge Item' + service_item_label = _('Inpatient Visit Charge Item') msg = _(('Please Configure {0} in ').format(service_item_label) \ + '''Healthcare Settings''') @@ -241,9 +274,9 @@ def throw_config_service_item(is_inpatient): def throw_config_practitioner_charge(is_inpatient, practitioner): - charge_name = 'OP Consulting Charge' + charge_name = _('OP Consulting Charge') if is_inpatient: - charge_name = 'Inpatient Visit Charge' + charge_name = _('Inpatient Visit Charge') msg = _(('Please Configure {0} for Healthcare Practitioner').format(charge_name) \ + ''' {0}'''.format(practitioner)) @@ -425,11 +458,17 @@ def get_children(doctype, parent, company, is_root=False): if each["expandable"] == 1: occupied = False vacant = False - child_list = frappe.db.sql(""" - select name, occupancy_status from `tabHealthcare Service Unit` - where inpatient_occupancy = 1 and - lft > %s and rgt < %s""", - (each["lft"], each["rgt"])) + child_list = frappe.db.sql( + ''' + SELECT + name, occupancy_status + FROM + `tabHealthcare Service Unit` + WHERE + inpatient_occupancy = 1 + and lft > %s and rgt < %s + ''', (each['lft'], each['rgt'])) + for child in child_list: if not occupied: occupied = 0