fix: change item_code from Link to Data to avoid item not found error
diff --git a/erpnext/healthcare/doctype/clinical_procedure_template/clinical_procedure_template.json b/erpnext/healthcare/doctype/clinical_procedure_template/clinical_procedure_template.json
index a4d0f42..7ae4be8 100644
--- a/erpnext/healthcare/doctype/clinical_procedure_template/clinical_procedure_template.json
+++ b/erpnext/healthcare/doctype/clinical_procedure_template/clinical_procedure_template.json
@@ -12,17 +12,17 @@
  "engine": "InnoDB",
  "field_order": [
   "template",
+  "item",
   "item_code",
   "item_group",
-  "medical_department",
+  "description",
   "column_break_5",
   "disabled",
   "is_billable",
   "rate",
-  "description",
-  "section_break_9",
-  "consume_stock",
+  "medical_department",
   "consumables",
+  "consume_stock",
   "items",
   "sample_collection",
   "sample",
@@ -30,8 +30,7 @@
   "sample_qty",
   "column_break_21",
   "sample_details",
-  "change_in_item",
-  "item"
+  "change_in_item"
  ],
  "fields": [
   {
@@ -45,11 +44,10 @@
   },
   {
    "fieldname": "item_code",
-   "fieldtype": "Link",
+   "fieldtype": "Data",
    "label": "Item Code",
-   "no_copy": 1,
    "options": "Item",
-   "read_only": 1
+   "reqd": 1
   },
   {
    "fieldname": "item_group",
@@ -81,7 +79,8 @@
    "depends_on": "is_billable",
    "fieldname": "rate",
    "fieldtype": "Float",
-   "label": "Rate"
+   "label": "Rate",
+   "mandatory_depends_on": "is_billable"
   },
   {
    "fieldname": "description",
@@ -92,10 +91,6 @@
    "reqd": 1
   },
   {
-   "fieldname": "section_break_9",
-   "fieldtype": "Section Break"
-  },
-  {
    "default": "0",
    "fieldname": "consume_stock",
    "fieldtype": "Check",
@@ -103,12 +98,12 @@
    "search_index": 1
   },
   {
-   "depends_on": "eval:doc.consume_stock == 1",
    "fieldname": "consumables",
    "fieldtype": "Section Break",
    "label": "Consumables"
   },
   {
+   "depends_on": "eval:doc.consume_stock == 1",
    "fieldname": "items",
    "fieldtype": "Table",
    "ignore_user_permissions": 1,
@@ -168,16 +163,14 @@
   {
    "fieldname": "item",
    "fieldtype": "Link",
-   "hidden": 1,
    "label": "Item",
    "no_copy": 1,
    "options": "Item",
-   "print_hide": 1,
-   "report_hide": 1
+   "read_only": 1
   }
  ],
  "links": [],
- "modified": "2020-02-27 13:37:10.143609",
+ "modified": "2020-02-27 16:32:55.780893",
  "modified_by": "Administrator",
  "module": "Healthcare",
  "name": "Clinical Procedure Template",
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 864628e..3bfca6c 100644
--- a/erpnext/healthcare/doctype/clinical_procedure_template/clinical_procedure_template.py
+++ b/erpnext/healthcare/doctype/clinical_procedure_template/clinical_procedure_template.py
@@ -13,21 +13,21 @@
 	def validate(self):
 		self.enable_disable_item()
 
-	def on_update(self):
-		#Item and Price List update --> if (change_in_item)
-		if(self.change_in_item and self.is_billable == 1 and self.item):
-			updating_item(self)
-			if(self.rate != 0.0):
-				updating_rate(self)
-		elif(self.is_billable == 0 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()
-
 	def after_insert(self):
 		create_item_from_template(self)
 
+	def on_update(self):
+		#Item and Price List update --> if (change_in_item)
+		if self.change_in_item and self.is_billable == 1 and self.item:
+			updating_item(self)
+			if self.rate != 0.0:
+				updating_rate(self)
+		elif self.is_billable == 0 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()
+
 	def enable_disable_item(self):
 		if self.is_billable:
 			if self.disabled:
@@ -39,7 +39,7 @@
 	def on_trash(self):
 		if(self.item):
 			try:
-				frappe.delete_doc("Item",self.item)
+				frappe.delete_doc('Item',self.item)
 			except Exception:
 				frappe.throw(_("""Not permitted. Please disable the Procedure Template"""))
 
@@ -51,7 +51,7 @@
 				and (end_of_life is null or end_of_life='0000-00-00' or end_of_life > %s)""",
 			(args.get('item_code'), nowdate()), as_dict = 1)
 		if not item:
-			frappe.throw(_("Item {0} is not active or end of life has been reached").format(args.get('item_code')))
+			frappe.throw(_('Item {0} is not active or end of life has been reached').format(args.get('item_code')))
 
 		item = item[0]
 
@@ -76,45 +76,45 @@
 def create_item_from_template(doc):
 	disabled = 1
 
-	if(doc.is_billable == 1):
+	if doc.is_billable == 1:
 		disabled = 0
 
 	#insert item
 	item =  frappe.get_doc({
-	"doctype": "Item",
-	"item_code": doc.template,
-	"item_name":doc.template,
-	"item_group": doc.item_group,
-	"description":doc.description,
-	"is_sales_item": 1,
-	"is_service_item": 1,
-	"is_purchase_item": 0,
-	"is_stock_item": 0,
-	"show_in_website": 0,
-	"is_pro_applicable": 0,
-	"disabled": disabled,
-	"stock_uom": "Unit"
+		'doctype': 'Item',
+		'item_code': doc.template,
+		'item_name':doc.template,
+		'item_group': doc.item_group,
+		'description':doc.description,
+		'is_sales_item': 1,
+		'is_service_item': 1,
+		'is_purchase_item': 0,
+		'is_stock_item': 0,
+		'show_in_website': 0,
+		'is_pro_applicable': 0,
+		'disabled': disabled,
+		'stock_uom': 'Unit'
 	}).insert(ignore_permissions=True)
 
 	#insert item price
 	#get item price list to insert item price
 	if(doc.rate != 0.0):
-		price_list_name = frappe.db.get_value("Price List", {"selling": 1})
+		price_list_name = frappe.db.get_value('Price List', {'selling': 1})
 		if(doc.rate):
 			make_item_price(item.name, price_list_name, doc.rate)
 		else:
 			make_item_price(item.name, price_list_name, 0.0)
 	#Set item to the template
-	frappe.db.set_value("Clinical Procedure Template", doc.name, "item", item.name)
+	frappe.db.set_value('Clinical Procedure Template', doc.name, 'item', item.name)
 
 	doc.reload() #refresh the doc after insert.
 
 def make_item_price(item, price_list_name, item_price):
 	frappe.get_doc({
-		"doctype": "Item Price",
-		"price_list": price_list_name,
-		"item_code": item,
-		"price_list_rate": item_price
+		'doctype': 'Item Price',
+		'price_list': price_list_name,
+		'item_code': item,
+		'price_list_rate': item_price
 	}).insert(ignore_permissions=True)
 
 @frappe.whitelist()
@@ -123,11 +123,11 @@
 	doc = frappe._dict(args)
 
 	if(frappe.db.exists({
-		"doctype": "Item",
-		"item_code": item_code})):
-		frappe.throw(_("Code {0} already exist").format(item_code))
+		'doctype': 'Item',
+		'item_code': item_code})):
+		frappe.throw(_('Code {0} already exist').format(item_code))
 	else:
-		rename_doc("Item", doc.item_code, item_code, ignore_permissions=True)
-		frappe.db.set_value("Clinical Procedure Template", doc.name, "item_code", item_code)
+		rename_doc('Item', doc.item_code, item_code, ignore_permissions=True)
+		frappe.db.set_value('Clinical Procedure Template', doc.name, 'item_code', item_code)
 	return