<cfset myarray[1] = "empty value">
<cfset database[1] = "empty value">

<cfquery name="GetTable" datasource="#Application.DataSrc#">
	SELECT TABLE_SCHEMA FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_SCHEMA LIKE '%agency_1150%' GROUP BY TABLE_SCHEMA
</cfquery>

<cfset database = arraynew(1)>

<cfloop query="GetTable">
	<cfset database[CurrentRow] = TABLE_SCHEMA>
</cfloop>

<h1>Duplicate Assessments (Same Admit_ID + F26 + F27)</h1>

<cfif isDefined("url.doUpdate") AND url.doUpdate EQ "1">
	<cfset updateMode = true />
<cfelse>
	<cfset updateMode = false />
</cfif>


<cfloop from="1" to="#ArrayLen(database)#" index="ind">
	<cfif ArrayLen(database) gt 1>
		<cfset Request.prefix_db_agency = database[ind] />
	</cfif>
	<cfset agencynumber = ListToArray(Request.prefix_db_agency, '_') />
	<cfset agency_id = agencynumber[2] />

	<cfquery name="setinnodbmode" datasource="#Application.DataSrc#">
		SET innodb_strict_mode = 0;
	</cfquery>

	<cfquery name="getdups" datasource="#Application.DataSrc#">
		SELECT
			a.Assmt_ID,
			a.Admit_ID,
			a.F26,
			a.F27,
			p.Pt_First,
			p.Pt_Last,
			COUNT(*) AS tot_count
		FROM #Request.prefix_db_agency#.pAssessments a
		INNER JOIN #Request.prefix_db_agency#.pPatients p
			ON p.Patient_ID = a.Patient_ID
		WHERE a.Status = 0
        AND p.Status IN (0,1,4)
 		GROUP BY a.Assmt_ID, a.Admit_ID, a.F26, a.F27, p.Pt_First, p.Pt_Last
		HAVING COUNT(*) > 1
		ORDER BY a.Admit_ID, p.Pt_Last, p.Pt_First
	</cfquery>
    <cfoutput>#ValueList(getdups.Assmt_ID)#</cfoutput>
	<cfif getdups.recordcount gt 0>
		<h3><cfoutput>#Request.prefix_db_agency#</cfoutput></h3>
		<table border="1" cellpadding="4" cellspacing="0">
			<thead>
				<tr>
					<th>Patient Name</th>
					<th>Assmt_ID</th>
					<th>Admit_ID</th>
					<th>F26</th>
					<th>F27</th>
					<th>Total Count</th>
					<th>Agency Database</th>
				</tr>
			</thead>
			<tbody>
				<cfoutput query="getdups">
					<tr>
						<td>#Pt_Last#, #Pt_First#</td>
						<td>#Assmt_ID#</td>
						<td>#Admit_ID#</td>
						<td>#F26#</td>
						<td>#F27#</td>
						<td>#tot_count#</td>
						<td>#Request.prefix_db_agency#</td>
					</tr>
				</cfoutput>
			</tbody>
		</table>

		<cfif updateMode>
			<cfset totalUpdated = 0 />
			<cfloop query="getdups">
				<cfquery name="fixDups" result="fixDupsResult" datasource="#Application.DataSrc#">
					UPDATE #Request.prefix_db_agency#.pAssessments t1
					INNER JOIN #Request.prefix_db_agency#.pAssessments t2
						ON  t1.Admit_ID      = t2.Admit_ID
						AND t1.F26           = t2.F26
						AND t1.F27           = t2.F27
						AND t1.Status        = 0
						AND t2.Status        = 0
						AND t1.AutoAssmt_ID  < t2.AutoAssmt_ID
					SET t1.Status = 2
					WHERE t1.Admit_ID = <cfqueryparam value="#getdups.Admit_ID#" cfsqltype="cf_sql_integer">
					  AND t1.F26      = <cfqueryparam value="#getdups.F26#"      cfsqltype="cf_sql_varchar">
					  AND t1.F27      = <cfqueryparam value="#getdups.F27#"      cfsqltype="cf_sql_varchar">
				</cfquery>
				<cfif structKeyExists(fixDupsResult, "RecordCount")>
					<cfset totalUpdated = totalUpdated + val(fixDupsResult.RecordCount) />
				</cfif>
			</cfloop>
			<cfoutput><p style="color:green;font-weight:bold;">Done — #totalUpdated# duplicate row(s) set to Status=2 for #Request.prefix_db_agency#. Highest AutoAssmt_ID kept active.</p></cfoutput>
		<cfelse>
			<cfoutput><p><a href="?doUpdate=1" onclick="return confirm('This will set all older duplicate assessments to Status=2 for #Request.prefix_db_agency#. Continue?');" style="color:red;font-weight:bold;">Resolve Duplicates for #Request.prefix_db_agency#</a></p></cfoutput>
		</cfif>

	</cfif>
</cfloop>
