fix: Batch not getting fetched in Clinical Procedure Item
diff --git a/erpnext/healthcare/doctype/clinical_procedure/clinical_procedure.js b/erpnext/healthcare/doctype/clinical_procedure/clinical_procedure.js
index ce795ad..41e7a3f 100644
--- a/erpnext/healthcare/doctype/clinical_procedure/clinical_procedure.js
+++ b/erpnext/healthcare/doctype/clinical_procedure/clinical_procedure.js
@@ -8,17 +8,13 @@
 			if (!item.item_code) {
 				frappe.throw(__('Please enter Item Code to get Batch Number'));
 			} else {
+				let filters = {'item_code': item.item_code};
+
 				if (frm.doc.status == 'In Progress') {
-					let filters = {
-						'item_code': item.item_code,
-						'posting_date': frm.doc.start_date || frappe.datetime.nowdate()
-					};
+					filters['posting_date'] = frm.doc.start_date || frappe.datetime.nowdate();
 					if (frm.doc.warehouse) filters['warehouse'] = frm.doc.warehouse;
-				} else {
-					filters = {
-						'item_code': item.item_code
-					};
 				}
+
 				return {
 					query : 'erpnext.controllers.queries.get_batch_no',
 					filters: filters
@@ -64,80 +60,78 @@
 				function(doc) { return (doc.qty<=doc.actual_qty) ? 'green' : 'orange' ; });
 		}
 
-		if (frm.doc.docstatus == 2 && frm.doc.status == 'In Progress') {
-			let btn_label = '';
-			let msg = '';
-			if (frm.doc.consume_stock) {
-				btn_label = 'Complete and Consume';
-				msg = 'Complete '+ frm.doc.name +' and Consume Stock?';
-			} else {
-				btn_label = 'Complete';
-				msg = 'Complete '+ frm.doc.name +'?';
-			}
+		if (frm.doc.docstatus == 2) {
+			if (frm.doc.status == 'In Progress') {
+				let btn_label = '';
+				let msg = '';
+				if (frm.doc.consume_stock) {
+					btn_label = __('Complete and Consume');
+					msg = __('Complete {0} and Consume Stock?', [frm.doc.name]);
+				} else {
+					btn_label = 'Complete';
+					msg = __('Complete {0}?', [frm.doc.name]);
+				}
 
-			frm.add_custom_button(__(btn_label), function () {
-				frappe.confirm(
-					__(msg),
-					function() {
-						frappe.call({
-							doc: frm.doc,
-							method: 'complete',
-							callback: function(r) {
-								if (!r.exc) {
+				frm.add_custom_button(__(btn_label), function () {
+					frappe.confirm(
+						msg,
+						function() {
+							frappe.call({
+								doc: frm.doc,
+								method: 'complete_procedure',
+								callback: function(r) {
+									if (!r.exc) {
+										cur_frm.reload_doc();
+									}
+								}
+							});
+						}
+					);
+				});
+
+			} else if (frm.doc.status == 'Pending') {
+				frm.add_custom_button(__('Start'), function() {
+					frappe.call({
+						doc: frm.doc,
+						method: 'start_procedure',
+						callback: function(r) {
+							if (!r.exc) {
+								if (r.data.message == 'insufficient stock') {
+									frappe.confirm(
+										__('Stock quantity to start the procedure is not available in the warehouse. Do you want to record a Stock Transfer?'),
+										function() {
+											frappe.call({
+												doc: frm.doc,
+												method: 'make_material_transfer',
+												callback: function(r) {
+													if (!r.exc) {
+														cur_frm.reload_doc();
+														let doclist = frappe.model.sync(r.message);
+														frappe.set_route('Form', doclist[0].doctype, doclist[0].name);
+													}
+												}
+											});
+										}
+									);
+								} else {
 									cur_frm.reload_doc();
 								}
 							}
-						});
-					}
-				);
-			});
-		} else if (frm.doc.docstatus == 2 && frm.doc.status == 'Pending') {
-			frm.add_custom_button(__('Start'), function () {
-				frappe.call({
-					doc: frm.doc,
-					method: 'start',
-					callback: function(r) {
-						if (!r.exc) {
-							if (frm.doc.status == 'Draft') {
-								frappe.confirm(
-									__('Stock quantity to start procedure is not available in the warehouse. Do you want to record a Stock Transfer'),
-									function() {
-										frappe.call({
-											doc: frm.doc,
-											method: 'make_material_transfer',
-											callback: function(r) {
-												if (!r.exc) {
-													cur_frm.reload_doc();
-													let doclist = frappe.model.sync(r.message);
-													frappe.set_route('Form', doclist[0].doctype, doclist[0].name);
-												}
-											}
-										});
-									}
-								);
-							} else {
-								cur_frm.reload_doc();
-							}
 						}
-					}
+					});
 				});
-			});
+			}
 		}
-		if (frm.doc.__islocal) {
-			frm.set_df_property('consumables', 'hidden', 1);
-		} else {
-			frm.set_df_property('consumables', 'hidden', 0);
-		}
+
 	},
+
 	onload: function(frm) {
-		if (frm.doc.status == 'Completed') {
-			frm.set_df_property('items', 'read_only', 1);
-		}
 		if (frm.is_new()) {
 			frm.add_fetch('procedure_template', 'medical_department', 'medical_department');
 			frm.set_value('start_time', null);
 		}
 	},
+
 	patient: function(frm) {
 		if (frm.doc.patient) {
 			frappe.call({
@@ -149,10 +143,10 @@
 					let age = '';
 					if (data.message.dob) {
 						age = calculate_age(data.message.dob);
-					}else if (data.message.age) {
+					} else if (data.message.age) {
 						age = data.message.age;
 						if (data.message.age_as_on) {
-							age = age+' as on '+data.message.age_as_on;
+							age = __('{0} as on {1}', [age, data.message.age_as_on]);
 						}
 					}
 					frm.set_value('patient_age', age);
@@ -164,6 +158,7 @@
 			frm.set_value('patient_sex', '');
 		}
 	},
+
 	appointment: function(frm) {
 		if (frm.doc.appointment) {
 			frappe.call({
@@ -184,6 +179,7 @@
 			});
 		}
 	},
+
 	procedure_template: function(frm) {
 		if (frm.doc.procedure_template) {
 			frappe.call({
@@ -213,6 +209,7 @@
 			frm.set_value('consume_stock', 0);
 		}
 	},
+
 	service_unit: function(frm) {
 		if (frm.doc.service_unit) {
 			frappe.call({
@@ -230,6 +227,7 @@
 			});
 		}
 	},
+
 	practitioner: function(frm) {
 		if (frm.doc.practitioner) {
 			frappe.call({
@@ -254,14 +252,6 @@
 	};
 });
 
-cur_frm.set_query('appointment', function() {
-	return {
-		filters: {
-			status:['in',['Open']]
-		}
-	};
-});
-
 frappe.ui.form.on('Clinical Procedure Item', {
 	qty: function(frm, cdt, cdn) {
 		let d = locals[cdt][cdn];