<cfcomponent displayname="Progress notes Functions" hint="I Return Progress notes Information" output="false">

	<cfset client.Loc_ID = 0 />
	
   <cffunction name="init" displayname="Initialize Component" access="public" returntype="Progress notes" hint="I initialize and return the Progress notes object.">
		<cfreturn this>
	</cffunction>
   	
	<cffunction name="show_prochistory"  access="remote" output="Yes" returnFormat= "plain">   
		<cfargument name="AgencyID" required="no" hint="AgencyID" default="#session.agencyid#"> 	
		<cfargument name="AutoCareplan_ID" required="yes">
		<cfargument name="Assmt_ID" required="yes">
		<cfargument name="Skill" required="yes">
		<cfargument name="Description" required="yes">
		<cfargument name="Patient_ID" required="yes">

			<cfif len(Description) GT 0>
				<cfquery name="getprocenotes" datasource="#Application.DataSrc#">
					SELECT pProgress.*,pSchedules.Visit_Date  FROM  #Request.prefix_db_agency#.pProgress 
					JOIN  #Request.prefix_db_agency#.pSchedules ON pSchedules.Schedule_ID = pProgress.Schedule_ID AND pSchedules.Status = 0
					WHERE pProgress.Description = <cfqueryparam value = "#arguments.Description#" CFSQLType ="cf_sql_varchar">
					AND pProgress.status = 0
					AND pSchedules.Patient_ID = <cfqueryparam value = "#arguments.Patient_ID#" CFSQLType ="CF_SQL_INTEGER">
					AND pSchedules.Skill = <cfqueryparam value = "#arguments.Skill#" CFSQLType ="cf_sql_varchar">
					GROUP BY pProgress.Progress_ID 
					ORDER BY pSchedules.Visit_Date ASC
				</cfquery>	
				<cfsavecontent variable = "html_procedure">
							<div class="row">
								<div class="col-md-3">
									<label>Visit Date</label>
								</div>
								<div class="col-md-9">	
									<label>Notes</label>
								</div>
							</div>
					<cfoutput query="getprocenotes"	>
							<div class="row">
								<div class="col-md-3">				
									<div class="form-group">
										#Dateformat(Visit_Date,"mm/dd/yyyy")#
									</div>
								</div>
								<div class="col-md-9">				
									<div class="form-group">
										#Notes#
									</div>
								</div>
							</div>
					</cfoutput>
				</cfsavecontent>	
				<cfreturn html_procedure />	
			</cfif>	
	</cffunction>


	<cffunction name="updategoalsnotmet"  access="remote" output="Yes" returnFormat= "plain">   
		<cfargument name="AgencyID" required="no" hint="AgencyID" default="#session.agencyid#"> 	
		<cfargument name="Schedule_ID" required="yes">
		<cfargument name="goals_not_met" required="yes">
			<cfif len(goals_not_met) GT 0>
				<cfset getsucess= retire_schedules(#arguments.Schedule_ID#)/>
				<cfquery name="update_pSchedules" datasource="#Application.DataSrc#"  result="result">
			       UPDATE #Request.prefix_db_agency#.pSchedules SET 
			       goals_not_met   = <cfqueryparam VALUE="#arguments.goals_not_met#"  cfsqltype="cf_sql_varchar">,      
			       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>
			</cfif>	
			<cfreturn 'Success'/>	
	</cffunction>
	
	<cffunction name="updateunstableaction"  access="remote" output="Yes" returnFormat= "plain">   
		<cfargument name="AgencyID" required="no" hint="AgencyID" default="#session.agencyid#"> 	
		<cfargument name="Schedule_ID" required="yes">
		<cfargument name="unstable_action" required="yes">
			<cfif len(unstable_action) GT 0>
				<cfset getsucess= retire_schedules(#arguments.Schedule_ID#)/>
				<cfquery name="update_unstable_action" datasource="#Application.DataSrc#"  result="result">
			       UPDATE #Request.prefix_db_agency#.pSchedules SET 
			       unstable_action = <cfqueryparam VALUE="#arguments.unstable_action#"  cfsqltype="cf_sql_varchar">,      
			       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>
			</cfif>	
			<cfreturn 'Success'/>	
	</cffunction>

	<cffunction name="retire_schedules"  access="remote" output="Yes" returnFormat= "plain">   
		<cfargument name="Schedule_ID" required="yes">
		<cfquery  name="getschedule" datasource="#Application.DataSrc#">
			 SELECT IFNULL(MAX(Schedule_ID),0)+1 As pSchedule_ID FROM #Request.prefix_db_agency#.pSchedules 
		 </cfquery>
		<cfquery  datasource="#Application.DataSrc#" name="getold">
			SELECT  *  FROM  #Request.prefix_db_agency#.pSchedules
			WHERE Schedule_ID = <cfqueryparam value = "#arguments.Schedule_ID#" CFSQLType ="cf_sql_integer">
			AND Status = 0 ORDER BY AutoSchedule_ID DESC
		</cfquery>
		<cfquery  datasource="#Application.DataSrc#" name="getcolumns">
				SELECT   COLUMN_NAME 
				    FROM INFORMATION_SCHEMA.COLUMNS
				 WHERE COLUMN_NAME NOT IN ('AutoSchedule_ID','record_timestamp')
				AND TABLE_SCHEMA='#Request.prefix_db_agency#' AND TABLE_NAME  = 'pSchedules';
		</cfquery>
		<cfset myList = ValueList(getcolumns.COLUMN_NAME)>
		<cfquery  datasource="#Application.DataSrc#" name="DeleteVisit">
			INSERT INTO #Request.prefix_db_agency#.pSchedules
			(#myList#)
			SELECT   #myList#  FROM  #Request.prefix_db_agency#.pSchedules
			WHERE Schedule_ID = <cfqueryparam value = "#arguments.Schedule_ID#" CFSQLType ="cf_sql_integer">
			AND Status = 0 
			AND AutoSchedule_ID =  '#getold.AutoSchedule_ID#'
		</cfquery>
		<cfquery datasource="#Application.DataSrc#" name="Last_Schedules">
		   <cfsetting requesttimeout="5000">
		      SELECT LAST_INSERT_ID() as LastInsertID
		</cfquery>
		<cfset AutoSchedule_ID =  Last_Schedules.LastInsertID />
		<cfquery name="update_pSchedules" datasource="#Application.DataSrc#"  result="result">
		       UPDATE #Request.prefix_db_agency#.pSchedules SET 
		       Status   = <cfqueryparam VALUE="0"  cfsqltype="cf_sql_integer">,      
		       Date_Create = <cfqueryparam VALUE="#now()#"  cfsqltype="cf_sql_timestamp">,
		       Created_by = <cfqueryparam VALUE="#session.employeeid#"  cfsqltype="cf_sql_integer">,
		       Date_Change = <cfqueryparam VALUE="#now()#"  cfsqltype="cf_sql_timestamp">,
		       Change_by = <cfqueryparam VALUE="#session.employeeid#"  cfsqltype="cf_sql_integer">
		       WHERE AutoSchedule_ID = <cfqueryparam VALUE="#AutoSchedule_ID#"  cfsqltype="cf_sql_integer">
		</cfquery>
		<cfquery  datasource="#Application.DataSrc#" name="DeleteVisit">
			Update #Request.prefix_db_agency#.pSchedules
			Set Status = <cfqueryparam value = "2" CFSQLType ="cf_sql_integer">,
			Date_Change = <cfqueryparam VALUE="#now()#"  cfsqltype="cf_sql_timestamp">,
		    Change_by = <cfqueryparam VALUE="#session.employeeid#"  cfsqltype="cf_sql_integer">
			WHERE  AutoSchedule_ID = '#getold.AutoSchedule_ID#'
		</cfquery>
	</cffunction>

	<cffunction name="retire_careplans"  access="remote" output="Yes" returnFormat= "plain">   
		<cfargument name="Careplan_ID" required="yes">
		
		<cfquery  datasource="#Application.DataSrc#" name="getold">
			SELECT  *  FROM  #Request.prefix_db_agency#.pCareplan
			WHERE Careplan_ID = <cfqueryparam value = "#arguments.Careplan_ID#" CFSQLType ="cf_sql_integer">
			AND Status = 0 ORDER BY AutoCareplan_ID DESC
		</cfquery>
		<cfquery  datasource="#Application.DataSrc#" name="getcolumns">
				SELECT   COLUMN_NAME 
				    FROM INFORMATION_SCHEMA.COLUMNS
				 WHERE COLUMN_NAME NOT IN ('AutoCareplan_ID','record_timestamp')
				AND TABLE_SCHEMA='#Request.prefix_db_agency#' AND TABLE_NAME  = 'pCareplan';
		</cfquery>
		<cfset myList = ValueList(getcolumns.COLUMN_NAME)>
		<cfquery  datasource="#Application.DataSrc#" name="Insert_careplans">
			INSERT INTO #Request.prefix_db_agency#.pCareplan
			(#myList#)
			SELECT   #myList#  FROM  #Request.prefix_db_agency#.pCareplan
			WHERE Careplan_ID = <cfqueryparam value = "#arguments.Careplan_ID#" CFSQLType ="cf_sql_integer">
			AND Status = 0 
		</cfquery>
		<cfquery datasource="#Application.DataSrc#" name="Last_Careplan">
		   <cfsetting requesttimeout="5000">
		      SELECT LAST_INSERT_ID() as LastInsertID
		</cfquery>
		<cfset AutoCareplan_ID =  Last_Careplan.LastInsertID />
		<cfquery name="update_pCareplan" datasource="#Application.DataSrc#"  result="result">
		       UPDATE #Request.prefix_db_agency#.pCareplan SET 
		       Status   = <cfqueryparam VALUE="0"  cfsqltype="cf_sql_integer">,      
		       Date_Change = <cfqueryparam VALUE="#now()#"  cfsqltype="cf_sql_timestamp">,
		       Change_by = <cfqueryparam VALUE="#session.employeeid#"  cfsqltype="cf_sql_integer">
		       WHERE AutoCareplan_ID = <cfqueryparam VALUE="#AutoCareplan_ID#"  cfsqltype="cf_sql_integer">
		</cfquery>
		<cfquery  datasource="#Application.DataSrc#" name="DeleteVisit">
			Update #Request.prefix_db_agency#.pCareplan
			Set Status = <cfqueryparam value = "2" CFSQLType ="cf_sql_integer">,
			Date_Change = <cfqueryparam VALUE="#now()#"  cfsqltype="cf_sql_timestamp">,
		    Change_by = <cfqueryparam VALUE="#session.employeeid#"  cfsqltype="cf_sql_integer">
			WHERE  AutoCareplan_ID = '#getold.AutoCareplan_ID#'
		</cfquery>
	</cffunction>


	<cffunction name="retire_assessments"  access="remote" output="Yes" returnFormat= "plain">   
		<cfargument name="Assmt_ID" required="yes">
		<cfargument name="retireStatus" required="no" default="2">
		<cfquery  datasource="#Application.DataSrc#" name="getold">
			SELECT  *  FROM  #Request.prefix_db_agency#.pAssessments
			WHERE Assmt_ID = <cfqueryparam value = "#arguments.Assmt_ID#" CFSQLType ="cf_sql_integer">
			AND Status = 0 ORDER BY AutoAssmt_ID DESC
		</cfquery>
		<cfquery  datasource="#Application.DataSrc#" name="getcolumns">
				SELECT   COLUMN_NAME 
				    FROM INFORMATION_SCHEMA.COLUMNS
				 WHERE COLUMN_NAME NOT IN ('AutoAssmt_ID','record_timestamp')
				AND TABLE_SCHEMA='#Request.prefix_db_agency#' AND TABLE_NAME  = 'pAssessments';
		</cfquery>
		<cfset myList = ValueList(getcolumns.COLUMN_NAME)>
		<cfquery  datasource="#Application.DataSrc#" name="insertnewrecords">
			INSERT INTO #Request.prefix_db_agency#.pAssessments
			(#myList#)
			SELECT   #myList#  FROM  #Request.prefix_db_agency#.pAssessments
			WHERE Assmt_ID = <cfqueryparam value = "#arguments.Assmt_ID#" CFSQLType ="cf_sql_integer">
			AND Status = 0 
		</cfquery>
		<cfquery datasource="#Application.DataSrc#" name="Last_Assess">
		   <cfsetting requesttimeout="5000">
		      SELECT LAST_INSERT_ID() as LastInsertID
		</cfquery>
		<cfset AutoAssmt_ID =  Last_Assess.LastInsertID />
		<cfquery name="update_pAssessments" datasource="#Application.DataSrc#"  result="result">
		       UPDATE #Request.prefix_db_agency#.pAssessments SET 
		       Status   = <cfqueryparam VALUE="0"  cfsqltype="cf_sql_integer">,      
		       Record_Creation_Date = <cfqueryparam VALUE="#now()#"  cfsqltype="cf_sql_timestamp">,
		       Record_Created_By = <cfqueryparam VALUE="#session.employeeid#"  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 AutoAssmt_ID = <cfqueryparam VALUE="#AutoAssmt_ID#"  cfsqltype="cf_sql_integer">
		</cfquery>
		<cfquery  datasource="#Application.DataSrc#" name="DeleteVisit">
			Update #Request.prefix_db_agency#.pAssessments
			Set Status = <cfqueryparam value = "#arguments.retireStatus#" 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  AutoAssmt_ID = '#getold.AutoAssmt_ID#'
		</cfquery>
	</cffunction>

	<cffunction name="retire_problems"  access="remote" output="Yes" returnFormat= "plain">   
		<cfargument name="pProblem_ID" required="yes">
		<cfquery  datasource="#Application.DataSrc#" name="getold">
			SELECT  *  FROM  #Request.prefix_db_agency#.pProblem
			WHERE Problem_ID = <cfqueryparam value = "#arguments.pProblem_ID#" CFSQLType ="cf_sql_integer">
			AND Status = 0 ORDER BY AutoProblem_ID DESC
		</cfquery>
		<cfquery  datasource="#Application.DataSrc#" name="getcolumns">
				SELECT   COLUMN_NAME 
				    FROM INFORMATION_SCHEMA.COLUMNS
				 WHERE COLUMN_NAME NOT IN ('AutoProblem_ID','record_timestamp','manual')
				AND TABLE_SCHEMA='#Request.prefix_db_agency#' AND TABLE_NAME  = 'pProblem';
		</cfquery>
		<cfset myList = ValueList(getcolumns.COLUMN_NAME)>
		<cfquery  datasource="#Application.DataSrc#" name="Insert_careplans">
			INSERT INTO #Request.prefix_db_agency#.pProblem
			(#myList#)
			SELECT   #myList#  FROM  #Request.prefix_db_agency#.pProblem
			WHERE Problem_ID = <cfqueryparam value = "#arguments.pProblem_ID#" CFSQLType ="cf_sql_integer">
			AND Status = 0 
			GROUP BY Problem_ID 
		</cfquery>
		<cfquery datasource="#Application.DataSrc#" name="Last_Problem">
		   <cfsetting requesttimeout="5000">
		      SELECT LAST_INSERT_ID() as LastInsertID
		</cfquery>
		<cfset pAutoProblem_ID =  Last_Problem.LastInsertID />
		<cfquery name="pProblem" datasource="#Application.DataSrc#"  result="result">
		       UPDATE #Request.prefix_db_agency#.pProblem SET 
		       Status   = <cfqueryparam VALUE="0"  cfsqltype="cf_sql_integer">,        
		       Date_Change = <cfqueryparam VALUE="#now()#"  cfsqltype="cf_sql_timestamp">,
		       Change_by = <cfqueryparam VALUE="#session.employeeid#"  cfsqltype="cf_sql_integer">
		       WHERE AutoProblem_ID = <cfqueryparam VALUE="#pAutoProblem_ID#"  cfsqltype="cf_sql_integer">
		</cfquery>
		<cfquery  datasource="#Application.DataSrc#" name="Deleteproblem">
			Update #Request.prefix_db_agency#.pProblem
			Set Status = <cfqueryparam value = "2" CFSQLType ="cf_sql_integer">,
			Date_Change = <cfqueryparam VALUE="#now()#"  cfsqltype="cf_sql_timestamp">,
		    Change_by = <cfqueryparam VALUE="#session.employeeid#"  cfsqltype="cf_sql_integer">
			<!--- WHERE  AutoProblem_ID = '#getold.AutoProblem_ID#' --->
			WHERE AutoProblem_ID != <cfqueryparam VALUE="#pAutoProblem_ID#"  cfsqltype="cf_sql_integer">
			AND Problem_ID = <cfqueryparam value = "#arguments.pProblem_ID#" CFSQLType ="cf_sql_integer">
			AND Status = 0
		</cfquery>
		<cfreturn pAutoProblem_ID />
	</cffunction>

</cfcomponent>