fix: invoicing logic for appointments
diff --git a/erpnext/healthcare/utils.py b/erpnext/healthcare/utils.py
index 1912270..0ff86cb 100644
--- a/erpnext/healthcare/utils.py
+++ b/erpnext/healthcare/utils.py
@@ -21,7 +21,7 @@
 		patient_appointments = frappe.get_list(
 			'Patient Appointment',
 			fields='*',
-			filters={'patient': patient.name, 'invoiced': False},
+			filters={'patient': patient.name, 'invoiced': 0},
 			order_by='appointment_date'
 		)
 		if patient_appointments:
@@ -32,7 +32,7 @@
 		clinical_procedures = get_clinical_procedures_to_invoice(patient)
 		inpatient_services = get_inpatient_services_to_invoice(patient)
 
-		items_to_invoice = encounters + lab_tests + clinical_procedures + inpatient_services
+		items_to_invoice += encounters + lab_tests + clinical_procedures + inpatient_services
 		return items_to_invoice
 
 def validate_customer_created(patient):
@@ -45,10 +45,7 @@
 	if not frappe.db.get_single_value('Healthcare Settings', 'enable_free_follow_ups'):
 		return
 
-	fee_validity_details = []
 	items_to_invoice = []
-	valid_days = frappe.db.get_single_value('Healthcare Settings', 'valid_days')
-	max_visits = frappe.db.get_single_value('Healthcare Settings', 'max_visits')
 	for appointment in patient_appointments:
 		if appointment.procedure_template:
 			if frappe.db.get_value('Clinical Procedure Template', appointment.procedure_template, 'is_billable'):
@@ -58,40 +55,21 @@
 					'service': appointment.procedure_template
 				})
 		else:
-			practitioner_exist_in_list = False
-			skip_invoice = False
-			if fee_validity_details:
-				for validity in fee_validity_details:
-					if validity['practitioner'] == appointment.practitioner:
-						practitioner_exist_in_list = True
-						if validity['valid_till'] >= appointment.appointment_date:
-							validity['visits'] = validity['visits'] + 1
-							if int(max_visits) > validity['visits']:
-								skip_invoice = True
-						if not skip_invoice:
-							validity['visits'] = 1
-							validity['valid_till'] = appointment.appointment_date + datetime.timedelta(days=int(valid_days))
-
-			if not practitioner_exist_in_list:
-				valid_till = appointment.appointment_date + datetime.timedelta(days=int(valid_days))
-				visits = 0
-				fee_validity = check_fee_validity(appointment)
-				if fee_validity:
-					valid_till = fee_validity.valid_till
-					visits = fee_validity.visited
-					fee_validity_details.append({'practitioner': appointment.practitioner,
-					'valid_till': valid_till, 'visits': visits})
-
-			if not skip_invoice:
+			fee_validity = frappe.db.exists('Fee Validity Reference', {'appointment': appointment.name})
+			if not fee_validity:
 				practitioner_charge = 0
 				income_account = None
 				service_item = None
 				if appointment.practitioner:
 					service_item, practitioner_charge = get_service_item_and_practitioner_charge(appointment)
 					income_account = get_income_account(appointment.practitioner, appointment.company)
-				items_to_invoice.append({'reference_type': 'Patient Appointment', 'reference_name': appointment.name,
-				'service': service_item, 'rate': practitioner_charge,
-				'income_account': income_account})
+				items_to_invoice.append({
+					'reference_type': 'Patient Appointment',
+					'reference_name': appointment.name,
+					'service': service_item,
+					'rate': practitioner_charge,
+					'income_account': income_account
+				})
 
 	return items_to_invoice