diff --git a/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py b/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py
index 64222ad..b8305d7 100644
--- a/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py
+++ b/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py
@@ -5,33 +5,35 @@
 
 import frappe
 import unittest
-from erpnext.healthcare.doctype.patient_appointment.patient_appointment import invoice_appointment
 from frappe.utils.make_random import get_random
-from frappe.utils import nowdate, add_days
-# test_records = frappe.get_test_records('Fee Validity')
+from frappe.utils import nowdate, add_days, getdate
+
+test_dependencies = ["Company"]
 
 class TestFeeValidity(unittest.TestCase):
 	def test_fee_validity(self):
+		frappe.db.sql("""delete from `tabPatient Appointment`""")
+		frappe.db.sql("""delete from `tabFee Validity`""")
 		patient = get_random("Patient")
 		practitioner = get_random("Healthcare Practitioner")
 		department = get_random("Medical Department")
 
 		if not patient:
 			patient = frappe.new_doc("Patient")
-			patient.patient_name = "Test Patient"
+			patient.patient_name = "_Test Patient"
 			patient.sex = "Male"
 			patient.save(ignore_permissions=True)
 			patient = patient.name
 
 		if not department:
 			medical_department = frappe.new_doc("Medical Department")
-			medical_department.department = "Test Medical Department"
+			medical_department.department = "_Test Medical Department"
 			medical_department.save(ignore_permissions=True)
 			department = medical_department.name
 
 		if not practitioner:
 			practitioner = frappe.new_doc("Healthcare Practitioner")
-			practitioner.first_name = "Amit Jain"
+			practitioner.first_name = "_Test Healthcare Practitioner"
 			practitioner.department = department
 			practitioner.save(ignore_permissions=True)
 			practitioner = practitioner.name
@@ -42,18 +44,22 @@
 		frappe.db.set_value("Healthcare Settings", None, "valid_days", 7)
 
 		appointment = create_appointment(patient, practitioner, nowdate(), department)
-		invoice = frappe.db.get_value("Patient Appointment", appointment.name, "sales_invoice")
-		self.assertEqual(invoice, None)
+		invoiced = frappe.db.get_value("Patient Appointment", appointment.name, "invoiced")
+		self.assertEqual(invoiced, 0)
+
 		invoice_appointment(appointment)
+
 		appointment = create_appointment(patient, practitioner, add_days(nowdate(), 4), department)
-		invoice = frappe.db.get_value("Patient Appointment", appointment.name, "sales_invoice")
-		self.assertTrue(invoice)
+		invoiced = frappe.db.get_value("Patient Appointment", appointment.name, "invoiced")
+		self.assertTrue(invoiced)
+
 		appointment = create_appointment(patient, practitioner, add_days(nowdate(), 5), department)
-		invoice = frappe.db.get_value("Patient Appointment", appointment.name, "sales_invoice")
-		self.assertEqual(invoice, None)
+		invoiced = frappe.db.get_value("Patient Appointment", appointment.name, "invoiced")
+		self.assertEqual(invoiced, 0)
+
 		appointment = create_appointment(patient, practitioner, add_days(nowdate(), 10), department)
-		invoice = frappe.db.get_value("Patient Appointment", appointment.name, "sales_invoice")
-		self.assertEqual(invoice, None)
+		invoiced = frappe.db.get_value("Patient Appointment", appointment.name, "invoiced")
+		self.assertEqual(invoiced, 0)
 
 def create_appointment(patient, practitioner, appointment_date, department):
 	appointment = frappe.new_doc("Patient Appointment")
@@ -64,3 +70,34 @@
 	appointment.company = "_Test Company"
 	appointment.save(ignore_permissions=True)
 	return appointment
+
+def invoice_appointment(appointment_doc):
+	if not appointment_doc.name:
+		return False
+	sales_invoice = frappe.new_doc("Sales Invoice")
+	sales_invoice.customer = frappe.get_value("Patient", appointment_doc.patient, "customer")
+	sales_invoice.due_date = getdate()
+	sales_invoice.is_pos = 0
+	sales_invoice.company = appointment_doc.company
+	sales_invoice.debit_to = "_Test Receivable - _TC"
+
+	create_invoice_items(appointment_doc, sales_invoice)
+
+	sales_invoice.save(ignore_permissions=True)
+	sales_invoice.submit()
+
+def create_invoice_items(appointment, invoice):
+	item_line = invoice.append("items")
+	item_line.item_name = "Consulting Charges"
+	item_line.description = "Consulting Charges:  " + appointment.practitioner
+	item_line.uom = "Nos"
+	item_line.conversion_factor = 1
+	item_line.income_account = "_Test Account Cost for Goods Sold - _TC"
+	item_line.cost_center = "_Test Cost Center - _TC"
+	item_line.rate = 250
+	item_line.amount = 250
+	item_line.qty = 1
+	item_line.reference_dt = "Patient Appointment"
+	item_line.reference_dn = appointment.name
+
+	return invoice
