fix healthcare patch (#15584)

diff --git a/erpnext/patches/v11_0/redesign_healthcare_billing_work_flow.py b/erpnext/patches/v11_0/redesign_healthcare_billing_work_flow.py
index dc7ff13..eef6722 100644
--- a/erpnext/patches/v11_0/redesign_healthcare_billing_work_flow.py
+++ b/erpnext/patches/v11_0/redesign_healthcare_billing_work_flow.py
@@ -15,7 +15,7 @@
 	frappe.reload_doc('accounts', 'doctype', 'loyalty_program')
 	frappe.reload_doc('accounts', 'doctype', 'sales_invoice_item')
 
-	if "healthcare" not in frappe.get_active_domains():
+	if "Healthcare" not in frappe.get_active_domains():
 		return
 
 	healthcare_custom_field_in_sales_invoice()
@@ -34,24 +34,25 @@
 					frappe.reload_doc(get_doctype_module("Sales Invoice"), 'doctype', 'sales_invoice')
 					for doc_id in doc_list:
 						invoice_id = frappe.db.get_value(si_ref_doc, doc_id[0], sales_invoice_referenced_doc[si_ref_doc])
-						invoice = frappe.get_doc("Sales Invoice", invoice_id)
-						if invoice.items:
-							marked = False
-							if not marked:
+						if frappe.db.exists("Sales Invoice", invoice_id):
+							if si_ref_doc == "Lab Test":
+								template = frappe.db.get_value("Lab Test", doc_id[0], "template")
+								if template:
+									item = frappe.db.get_value("Lab Test Template", template, "item")
+									if item:
+										frappe.db.sql("""update `tabSales Invoice Item` set reference_dt = '{0}',
+										reference_dn = '{1}' where parent = '{2}' and item_code='{3}'""".format\
+										(si_ref_doc, doc_id[0], invoice_id, item))
+							else:
+								invoice = frappe.get_doc("Sales Invoice", invoice_id)
 								for item_line in invoice.items:
-									marked = True
-									frappe.db.sql("""
-												update `tabSales Invoice Item`
-												set reference_dt = '{0}', reference_dn = '{1}'
-												where name = '{2}'
-											""".format(si_ref_doc, doc_id[0], item_line.name))
-
+									if not item_line.reference_dn:
+										item_line.db_set({"reference_dt":si_ref_doc, "reference_dn": doc_id[0]})
+										break
 				# Documents mark invoiced for submitted sales invoice
-				frappe.db.sql("""
-							update `tab{0}` doc, `tabSales Invoice` si
-							set doc.invoiced = 1
-							where si.docstatus = 1 and doc.{1} = si.name
-						""".format(si_ref_doc, sales_invoice_referenced_doc[si_ref_doc]))
+				frappe.db.sql("""update `tab{0}` doc, `tabSales Invoice` si
+					set doc.invoiced = 1 where si.docstatus = 1 and doc.{1} = si.name
+					""".format(si_ref_doc, sales_invoice_referenced_doc[si_ref_doc]))
 
 def healthcare_custom_field_in_sales_invoice():
 	frappe.reload_doc('healthcare', 'doctype', 'patient')