<!--- #10462 - Active Patients With No Visits: shared Dash_emp_count logic for fetch_pending_items, cron_dashboard_emp_count, hourly cron --->
<cfparam name="Request.activePatientsNoVisitsExpireOld" default="false">
<cfparam name="Request.activePatientsNoVisitsExpireEmpIdOnly" default="0">
<cfparam name="Request.activePatientsNoVisitsRestrictEmpId" default="0">

<cfif NOT structKeyExists(Request, "activePatientsNoVisitsAgencyId") OR NOT len(trim(Request.activePatientsNoVisitsAgencyId))>
	<cfif structKeyExists(session, "agencyid") AND len(trim(session.agencyid))>
		<cfset Request.activePatientsNoVisitsAgencyId = session.agencyid>
	</cfif>
</cfif>

<cfif NOT IsDefined("currentDate")>
	<cfset currentDate = CreateODBCDate(Now())>
</cfif>
<cfif NOT IsDefined("currentTimestamp")>
	<cfset currentTimestamp = Now()>
</cfif>

<cfif Request.activePatientsNoVisitsExpireOld>
	<cfquery name="expireActivePatientsNoVisitsCounts" datasource="#Application.DataSrc#">
		UPDATE #Request.prefix_db_agency#.Dash_emp_count
		SET status = 1
		WHERE status = 0
			AND Header = <cfqueryparam value="active_patients_no_visits" cfsqltype="CF_SQL_VARCHAR">
			<cfif IsNumeric(Request.activePatientsNoVisitsExpireEmpIdOnly) AND Request.activePatientsNoVisitsExpireEmpIdOnly GT 0>
				AND Emp_ID = <cfqueryparam value="#Request.activePatientsNoVisitsExpireEmpIdOnly#" cfsqltype="CF_SQL_INTEGER">
			</cfif>
	</cfquery>
</cfif>

<cfif NOT IsDefined("getActivePatientsNoVisits")>
	<cfinclude template="active_patients_no_visits_query_inc.cfm">
</cfif>

<cfset activePatientsNoVisitsCounts = StructNew()>
<cfloop query="getActivePatientsNoVisits">
	<cfset empIDToUse = AssignedEmpID>
	<cfif NOT IsNumeric(empIDToUse) OR empIDToUse EQ 0>
		<cfset empIDToUse = 2>
	</cfif>
	<cfif NOT StructKeyExists(activePatientsNoVisitsCounts, empIDToUse)>
		<cfset activePatientsNoVisitsCounts[empIDToUse] = 0>
	</cfif>
	<cfset activePatientsNoVisitsCounts[empIDToUse] = activePatientsNoVisitsCounts[empIDToUse] + 1>
</cfloop>

<cfif IsNumeric(Request.activePatientsNoVisitsRestrictEmpId) AND Request.activePatientsNoVisitsRestrictEmpId GT 0>
	<cfset restrictEmpId = Request.activePatientsNoVisitsRestrictEmpId>
	<cfset activePatientsNoVisitsCount = StructKeyExists(activePatientsNoVisitsCounts, restrictEmpId) ? activePatientsNoVisitsCounts[restrictEmpId] : 0>
	<cfif activePatientsNoVisitsCount GT 0>
		<cfquery name="insertActivePatientsNoVisitsCount" datasource="#Application.DataSrc#">
			INSERT INTO #Request.prefix_db_agency#.Dash_emp_count
			(Daily_QA_Date, Emp_ID, Emp_Count, Header, Created_Date, status)
			VALUES (
				<cfqueryparam value="#currentDate#" cfsqltype="CF_SQL_DATE">,
				<cfqueryparam value="#restrictEmpId#" cfsqltype="CF_SQL_INTEGER">,
				<cfqueryparam value="#activePatientsNoVisitsCount#" cfsqltype="CF_SQL_INTEGER">,
				<cfqueryparam value="active_patients_no_visits" cfsqltype="CF_SQL_VARCHAR">,
				<cfqueryparam value="#currentTimestamp#" cfsqltype="CF_SQL_TIMESTAMP">,
				<cfqueryparam value="0" cfsqltype="CF_SQL_INTEGER">
			)
		</cfquery>
	</cfif>
<cfelse>
	<cfloop collection="#activePatientsNoVisitsCounts#" item="empID">
		<cfif activePatientsNoVisitsCounts[empID] GT 0>
			<cfquery name="insertActivePatientsNoVisitsCount" datasource="#Application.DataSrc#">
				INSERT INTO #Request.prefix_db_agency#.Dash_emp_count
				(Daily_QA_Date, Emp_ID, Emp_Count, Header, Created_Date, status)
				VALUES (
					<cfqueryparam value="#currentDate#" cfsqltype="CF_SQL_DATE">,
					<cfqueryparam value="#empID#" cfsqltype="CF_SQL_INTEGER">,
					<cfqueryparam value="#activePatientsNoVisitsCounts[empID]#" cfsqltype="CF_SQL_INTEGER">,
					<cfqueryparam value="active_patients_no_visits" cfsqltype="CF_SQL_VARCHAR">,
					<cfqueryparam value="#currentTimestamp#" cfsqltype="CF_SQL_TIMESTAMP">,
					<cfqueryparam value="0" cfsqltype="CF_SQL_INTEGER">
				)
			</cfquery>
		</cfif>
	</cfloop>
</cfif>
