<cfcomponent displayname="Dashboard Functions" hint="I Return Dashboard Information" output="false">
    <cfparam name="client.Loc_ID" default = "0">
    <cffunction name="init" displayname="Initialize Component" access="public" returntype="Patients" hint="I initialize and return the Employees object.">
		<cfreturn this>
	</cffunction>
    
   	<cffunction name="update_procedureQA"   access="remote" output="Yes" returnFormat= "plain" >
	    <cfargument name="Careplan_ID" required="yes" hint="Careplan_ID" >
	    <cfargument name="Proc_QA" required="yes" hint="Proc_QA" >
	    <cfargument name="AssignedEmpID" required="no" default="0" hint="Assigned clinician Emp_ID" >
	    <cfscript>
       		 pgcfc = CreateObject("Component", "components.general.progressnotes");
       		 retiredcareplans = pgcfc.retire_careplans(#arguments.Careplan_ID#); 
        </cfscript>
	    <cfquery name="update_pCareplan" datasource="#Application.DataSrc#"  result="result">
		       UPDATE #Request.prefix_db_agency#.pCareplan SET 
		       Proc_QA   = <cfqueryparam VALUE="#arguments.Proc_QA#"  cfsqltype="cf_sql_integer">,      
		       Date_Change = <cfqueryparam VALUE="#now()#"  cfsqltype="cf_sql_timestamp">,
		       Change_by = <cfqueryparam VALUE="#session.employeeid#"  cfsqltype="cf_sql_integer">
		       WHERE Careplan_ID = <cfqueryparam VALUE="#arguments.Careplan_ID#"  cfsqltype="cf_sql_integer">
		       ANd Status = 0
		</cfquery>
		<!--- Ticket 10605: unapproved (2) leaves Procedures Require QA and counts on clinician personal dashboard --->
		<cfset var clinicianEmpId = Val(arguments.AssignedEmpID) />
		<cfif clinicianEmpId LTE 0>
			<cfquery name="getAssignedEmp" datasource="#Application.DataSrc#">
				SELECT e.Emp_ID
				FROM #Request.prefix_db_agency#.pCareplan c
				LEFT JOIN #Request.prefix_db_agency#.assessment_assign a
					ON COALESCE(NULLIF(a.Parent_Assmt_ID, 0), a.Assmt_ID) = c.Assmt_ID
				JOIN #Request.prefix_db_agency#.pAssessments ass
					ON ass.Assmt_ID = a.Assmt_ID
					AND ass.Status = 0
					AND ass.F27 = c.Skill
				JOIN #Request.prefix_db_lookup#.pEmployee e ON e.Emp_ID = a.Emp_ID AND e.Status = 0
				WHERE c.Careplan_ID = <cfqueryparam VALUE="#arguments.Careplan_ID#" cfsqltype="cf_sql_integer">
				AND c.Status = 0
				LIMIT 1
			</cfquery>
			<cfif getAssignedEmp.recordcount GT 0>
				<cfset clinicianEmpId = Val(getAssignedEmp.Emp_ID) />
			</cfif>
		</cfif>
		<cfif clinicianEmpId LTE 0>
			<cfset clinicianEmpId = 2 />
		</cfif>
		<cfset this.adjustProcedureDashCount(clinicianEmpId, "procedure needs QA", -1) />
		<cfif Val(arguments.Proc_QA) EQ 2>
			<cfset this.adjustProcedureDashCount(clinicianEmpId, "procedure needs field", 1) />
		</cfif>
		<cfreturn  'Success'>
	</cffunction>

	<cffunction name="adjustProcedureDashCount" access="public" output="false" returntype="void">
		<cfargument name="Emp_ID" required="true">
		<cfargument name="Header" required="true">
		<cfargument name="Delta" required="true">
		<cfset var today = DateFormat(Now(), "yyyy-mm-dd") />
		<cfquery name="getDashRow" datasource="#Application.DataSrc#">
			SELECT ID, Emp_Count
			FROM #Request.prefix_db_agency#.Dash_emp_count
			WHERE Header = <cfqueryparam VALUE="#arguments.Header#" cfsqltype="cf_sql_varchar">
			AND Emp_ID = <cfqueryparam VALUE="#Val(arguments.Emp_ID)#" cfsqltype="cf_sql_integer">
			AND Status = 0
			AND Daily_QA_Date = <cfqueryparam VALUE="#today#" cfsqltype="cf_sql_date">
			ORDER BY ID DESC
			LIMIT 1
		</cfquery>
		<cfif getDashRow.recordcount GT 0>
			<cfset newCount = Val(getDashRow.Emp_Count) + Val(arguments.Delta) />
			<cfif newCount LT 0><cfset newCount = 0 /></cfif>
			<cfquery datasource="#Application.DataSrc#">
				UPDATE #Request.prefix_db_agency#.Dash_emp_count
				SET Emp_Count = <cfqueryparam VALUE="#newCount#" cfsqltype="cf_sql_integer">
				WHERE ID = <cfqueryparam VALUE="#getDashRow.ID#" cfsqltype="cf_sql_integer">
			</cfquery>
		<cfelseif Val(arguments.Delta) GT 0>
			<cfquery 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="#today#" cfsqltype="cf_sql_date">,
					<cfqueryparam VALUE="#Val(arguments.Emp_ID)#" cfsqltype="cf_sql_integer">,
					<cfqueryparam VALUE="#Val(arguments.Delta)#" cfsqltype="cf_sql_integer">,
					<cfqueryparam VALUE="#arguments.Header#" cfsqltype="cf_sql_varchar">,
					<cfqueryparam VALUE="#Now()#" cfsqltype="cf_sql_timestamp">,
					<cfqueryparam VALUE="0" cfsqltype="cf_sql_integer">
				)
			</cfquery>
		</cfif>
	</cffunction>

	<cffunction name="update_goalsQA"   access="remote" output="Yes" returnFormat= "plain" >
	    <cfargument name="Careplan_ID" required="yes" hint="Careplan_ID" >
	    <cfargument name="QA_approve" required="yes" hint="Proc_QA" >
	    <cfscript>
       		 pgcfc = CreateObject("Component", "components.general.progressnotes");
       		 retiredcareplans = pgcfc.retire_careplans(#arguments.Careplan_ID#); 
        </cfscript>
	    <cfquery name="update_pCareplan" datasource="#Application.DataSrc#"  result="result">
		       UPDATE #Request.prefix_db_agency#.pCareplan SET 
			   <cfif arguments.QA_approve EQ 2 >
			   		Status = 0,
			   </cfif>
		       QA_approve   = <cfqueryparam VALUE="#arguments.QA_approve#"  cfsqltype="cf_sql_integer">,      
		       Date_Change = <cfqueryparam VALUE="#now()#"  cfsqltype="cf_sql_timestamp">,
		       Change_by = <cfqueryparam VALUE="#session.employeeid#"  cfsqltype="cf_sql_integer">
		       WHERE Careplan_ID = <cfqueryparam VALUE="#arguments.Careplan_ID#"  cfsqltype="cf_sql_integer">
		       ANd Status = 1
		</cfquery>
		<cfreturn  'Success'>
	</cffunction>



	<cffunction name="update_dischargeapproval"   access="remote" output="Yes" returnFormat= "plain" >
	    <cfargument name="Assmt_ID" required="yes" hint="Assmt_ID" >
	    <cfargument name="QA_Count" required="yes" hint="QA_Count" >
	    <cfscript>
       		 pgcfc = CreateObject("Component", "components.general.progressnotes");
       		 retiredcareplans = pgcfc.retire_assessments(#arguments.Assmt_ID#); 
        </cfscript>
	    <cfquery name="update_pCareplan" datasource="#Application.DataSrc#"  result="result">
		       UPDATE #Request.prefix_db_agency#.pAssessments SET 
		       QA_Count   = <cfqueryparam VALUE="#arguments.QA_Count#"  cfsqltype="cf_sql_integer">,      
		       Record_Mod_Date = <cfqueryparam VALUE="#now()#"  cfsqltype="cf_sql_timestamp">,
		       Record_Mod_By = <cfqueryparam VALUE="#session.employeeid#"  cfsqltype="cf_sql_integer">
		       WHERE Assmt_ID = <cfqueryparam VALUE="#arguments.Assmt_ID#"  cfsqltype="cf_sql_integer">
		       ANd Status = 0
		</cfquery>
		<cfreturn  'Success'>
	</cffunction>

	<cffunction name="update_progressQA"   access="remote" output="Yes" returnFormat= "plain" >
	    <cfargument name="Schedule_ID" required="yes" hint="Schedule_ID" >
	    <cfargument name="QA_View" required="yes" hint="QA_View" >
	    <cfscript>
       		 pgcfc = CreateObject("Component", "components.general.progressnotes");
       		 retiredschedules = pgcfc.retire_schedules(#arguments.Schedule_ID#); 
        </cfscript>
	    <cfquery name="update_pSchedules" datasource="#Application.DataSrc#"  result="result">
		       UPDATE #Request.prefix_db_agency#.pSchedules SET 
		       	QA_View   = <cfqueryparam VALUE="#arguments.QA_View#"  cfsqltype="cf_sql_integer">, 
		       Date_Change = <cfqueryparam VALUE="#now()#"  cfsqltype="cf_sql_timestamp">,
		       Change_by = <cfqueryparam VALUE="#session.employeeid#"  cfsqltype="cf_sql_integer">
		       WHERE Schedule_ID = <cfqueryparam VALUE="#arguments.Schedule_ID#"  cfsqltype="cf_sql_integer">
		       ANd Status = 0
		</cfquery>
		<cfreturn  'Success'>
	</cffunction>


	<cffunction name="update_requiredproceduresQA"   access="remote" output="Yes" returnFormat= "plain" >
	    <cfargument name="Schedule_ID" required="yes" hint="Schedule_ID" >
	    <cfargument name="QA_Proc" required="yes" hint="QA_Proc" >
	    <cfscript>
       		 pgcfc = CreateObject("Component", "components.general.progressnotes");
       		 retiredschedules = pgcfc.retire_schedules(#arguments.Schedule_ID#); 
        </cfscript>
	    <cfquery name="update_pSchedules" datasource="#Application.DataSrc#"  result="result">
		       UPDATE #Request.prefix_db_agency#.pSchedules SET 
		       QA_Proc   = <cfqueryparam VALUE="#arguments.QA_Proc#"  cfsqltype="cf_sql_integer">,   
		       <cfif arguments.QA_Proc EQ 2>
		       		pgnotesdraft   = <cfqueryparam VALUE="1"  cfsqltype="cf_sql_integer">, 
		       </cfif>    
		       Date_Change = <cfqueryparam VALUE="#now()#"  cfsqltype="cf_sql_timestamp">,
		       Change_by = <cfqueryparam VALUE="#session.employeeid#"  cfsqltype="cf_sql_integer">
		       WHERE Schedule_ID = <cfqueryparam VALUE="#arguments.Schedule_ID#"  cfsqltype="cf_sql_integer">
		       ANd Status = 0
		</cfquery>
		<cfreturn  'Success'>
	</cffunction>


</cfcomponent>	