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 bd9a5ac..3f295af 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 @@
 			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 @@
 		'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 @@
 		'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 196cd04..286ecc0 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 @@
 		'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 @@
 		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 @@
 		'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 @@
 			"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 7028728..4e4015d 100644
--- a/erpnext/healthcare/doctype/lab_test/lab_test.py
+++ b/erpnext/healthcare/doctype/lab_test/lab_test.py
@@ -201,11 +201,14 @@
 		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 071c5b1..e304a0b 100644
--- a/erpnext/healthcare/doctype/patient/patient.py
+++ b/erpnext/healthcare/doctype/patient/patient.py
@@ -9,6 +9,7 @@
 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 @@
 		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 @@
 	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 @@
 	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 82d70f8..efa6b24 100644
--- a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js
+++ b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js
@@ -135,10 +135,10 @@
 				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 @@
 				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 @@
 		});
 	});
 	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('<div class="col-xs-12" style="padding-top:20px;" >%(msg)s</div></div>', {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 c362679..e15cad8 100755
--- a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py
+++ b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py
@@ -122,7 +122,7 @@
 		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 @@
 		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 @@
 	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 @@
 	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 2130945..83c5d2b 100644
--- a/erpnext/healthcare/doctype/patient_encounter/patient_encounter.js
+++ b/erpnext/healthcare/doctype/patient_encounter/patient_encounter.js
@@ -106,22 +106,29 @@
 					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 @@
 			}
 		},
 		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 c2258c8..ade4748 100644
--- a/erpnext/healthcare/doctype/patient_encounter/patient_encounter.py
+++ b/erpnext/healthcare/doctype/patient_encounter/patient_encounter.py
@@ -6,6 +6,7 @@
 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 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 375891f..2ab2fdb 100644
--- a/erpnext/healthcare/doctype/vital_signs/vital_signs.py
+++ b/erpnext/healthcare/doctype/vital_signs/vital_signs.py
@@ -6,6 +6,7 @@
 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 @@
 	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 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 7e31968..246242a 100644
--- a/erpnext/healthcare/utils.py
+++ b/erpnext/healthcare/utils.py
@@ -109,22 +109,34 @@
 		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 @@
 	)
 	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 @@
 				'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_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 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) \
 		+ '''<b><a href='#Form/Healthcare Settings'>Healthcare Settings</a></b>''')
@@ -241,9 +274,9 @@
 
 
 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) \
 		+ ''' <b><a href='#Form/Healthcare Practitioner/{0}'>{0}</a></b>'''.format(practitioner))
@@ -425,11 +458,17 @@
 			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
