<cfcomponent displayname="Eligiility Functions" hint="I Return Patient Payer Eligiility Information" output="false">
	
   <cffunction name="init" displayname="Initialize Component" access="public" returntype="Assessments" hint="I initialize and return the Assessments object.">
		<cfreturn this>
	</cffunction>


	<cffunction name="addEditEligibility"  access="remote" output="Yes" returnformat="plain" returntype="string">
        <cfargument name="Patient_ID" required="yes" default=""> 
        <cfargument name="PtPayer_ID" required="yes" default="">   
		<cfargument name="Verification_Date" required="no" default="">
		<cfargument name="Start_Date" required="no" default="0">
		<cfargument name="Expiration_Date" required="no" default="0">
		<cfargument name="Notes" required="no" default="0">
		<cfargument name="action" required="no" default="">
		<cfargument name="Elig_ID" required="no" default="">
		<cfargument name="status" required="no" default="">
		
		<cfscript> 
			charEncoding="windows-1252"
			chardecode=CharsetDecode(arguments.Notes, charEncoding); 
			charencode=CharsetEncode(chardecode, charEncoding); 
		</cfscript> 

		<cfif arguments.action EQ 'update' AND val(arguments.Elig_ID)>

			<cfquery  result="insertEligibility" datasource="#Application.DataSrc#">
				UPDATE #Request.prefix_db_agency#.Eligibility 
				SET
					Verification_Date = <cfqueryparam value="#arguments.Verification_Date#"  cfsqltype="cf_sql_date">,
					Start_Date = 	<cfqueryparam value="#arguments.Start_Date#"  cfsqltype="cf_sql_date">,
					Expiration_Date = <cfqueryparam value="#arguments.Expiration_Date#"  cfsqltype="cf_sql_date">, 
					Notes = <cfqueryparam value="#charencode#"  cfsqltype="CF_SQL_VARCHAR">, 
					Date_Change = <cfqueryparam value="#now()#" cfsqltype="cf_sql_timestamp">,
					Change_by = <cfqueryparam value = "#session.employeeid#" CFSQLType ="CF_SQL_INTEGER">,
					status = <cfqueryparam value = "#arguments.status#" CFSQLType ="CF_SQL_INTEGER">
				WHERE
					Elig_ID = <cfqueryparam value = "#arguments.Elig_ID#" CFSQLType ="CF_SQL_INTEGER">		
			</cfquery>

		<cfelse>

			<cfquery  result="insertpWoundsVitals" datasource="#Application.DataSrc#">
				INSERT INTO  #Request.prefix_db_agency#.Eligibility (Patient_ID, PtPayer_ID, 
						Verification_Date, Start_Date, Expiration_Date, Notes,Date_Create,Created_by,
						Date_Change,Change_by,status)
				VALUES 
						(<cfqueryparam value="#arguments.Patient_ID#"  cfsqltype="CF_SQL_INTEGER">,
						<cfqueryparam value="#arguments.PtPayer_ID#"  cfsqltype="CF_SQL_INTEGER">,
						<cfqueryparam value="#arguments.Verification_Date#"  cfsqltype="cf_sql_date">,
						<cfqueryparam value="#arguments.Start_Date#"  cfsqltype="cf_sql_date">,
						<cfqueryparam value="#arguments.Expiration_Date#"  cfsqltype="cf_sql_date">,
						<cfqueryparam value="#charencode#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#now()#" cfsqltype="cf_sql_timestamp">,
						<cfqueryparam value = "#session.employeeid#" CFSQLType ="CF_SQL_INTEGER">,
						<cfqueryparam value="#now()#" cfsqltype="cf_sql_timestamp">,
						<cfqueryparam value = "#session.employeeid#" CFSQLType ="CF_SQL_INTEGER">,
						<cfqueryparam value = "#arguments.status#" CFSQLType ="CF_SQL_INTEGER">)
			</cfquery>

		</cfif>

		<cfreturn 'success' />	     
	</cffunction>


	<cffunction name="EligibilityDelete"  access="remote" output="Yes" returnformat="plain" returntype="string">   
		 <cfargument name="Elig_ID" required="yes" default="0">
		
			<cfquery  name="updatepAssessments" datasource="#Application.DataSrc#">
			    UPDATE #Request.prefix_db_agency#.Eligibility 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 Elig_ID =  <cfqueryparam CFSQLType="CF_SQL_INTEGER" value="#arguments.Elig_ID#"  >
			</cfquery>
			<cfreturn 'success' />	     
	</cffunction>

	<cffunction name="getEligibility"  access="remote" returnformat="json">   
		<cfargument name="Elig_ID" required="yes" default="0">

			<cfset var returnStruct = StructNew()>
		
			<cfquery  name="qgetpWoundsVitals" datasource="#Application.DataSrc#">
			    SELECT * FROM #Request.prefix_db_agency#.Eligibility WHERE Elig_ID = <cfqueryparam CFSQLType="CF_SQL_INTEGER" value="#arguments.Elig_ID#"  > 
			</cfquery>

			<cfset returnStruct = QueryGetRow(qgetpWoundsVitals,1)>

		<cfreturn  returnStruct />	     
	</cffunction>


	<cffunction name="getActiveEligibility"  access="remote" output="Yes" returnformat="plain" returntype="string">   
		<cfargument name="PtPayer_ID" required="yes" default="0">
		<cfargument name="Date_Start" required="yes" default="">
		<cfargument name="Date_End" required="yes" default="">

			<cfset ptPayer_ID = #listFirst(arguments.PtPayer_ID,'~')# />
			<cfquery  name="getpayer" datasource="#Application.DataSrc#">
				SELECT pPtPayer.*,pPayer.* FROM   #Request.prefix_db_agency#.pPtPayer
		        JOIN #Request.prefix_db_agency#.pPayer  on  pPtPayer.Payer_ID =  pPayer.Pay_ID 
		        WHERE pPtPayer.Status = 0
		        AND  pPtPayer.PtPayer_ID  = '#ptPayer_ID#'
		    </cfquery>
		    <cfset returnMsg = 0 />
		    <cfif getpayer.Eligibility EQ 1 AND len(arguments.Date_Start) gt 0 
		     AND len(arguments.Date_End) gt 0 >
				<cfquery name="getEligibility" datasource="#Application.DataSrc#">
				    SELECT * FROM #Request.prefix_db_agency#.Eligibility 
				    WHERE Patient_ID = #session.cs.patientid#
				    AND PtPayer_ID = '#ptPayer_ID#'
				    AND Start_Date >= '#Dateformat(arguments.Date_Start,"yyyy-mm-dd")#'
				    AND Start_Date <= '#Dateformat(arguments.Date_End,"yyyy-mm-dd")#'
				    AND Start_Date IS NOT NULL
				    AND Status = 0
				</cfquery>
				<cfif getEligibility.recordcount EQ 0>
					<cfset returnMsg = 1 />
				</cfif>
		    </cfif>
		<cfreturn  returnMsg />	     
		</cffunction>

	<cffunction name="updateApprovalStatus" access="remote" output="Yes" returnformat="plain" returntype="string">
		<cfargument name="Detail_ID" required="yes" type="numeric" default="0">
		<cfargument name="approved" required="yes" type="numeric" default="0">
		
		<cftry>
			<!--- Verify the record exists and has Status = 0 --->
			<cfquery name="checkRecord" datasource="#Application.DataSrc#">
				SELECT Detail_ID, Status, approved
				FROM #Request.prefix_db_agency#.Eligibility_Detail
				WHERE Detail_ID = <cfqueryparam value="#arguments.Detail_ID#" cfsqltype="CF_SQL_INTEGER">
			</cfquery>
			
			<cfif checkRecord.recordcount EQ 0>
				<cfreturn 'error: Record with Detail_ID #arguments.Detail_ID# not found' />
			</cfif>
			
			<cfif checkRecord.Status NEQ 0>
				<cfreturn 'error: Record status is #checkRecord.Status#, not 0. Cannot update.' />
			</cfif>
			
			<!--- Perform the update --->
			<cfquery name="updateApproval" datasource="#Application.DataSrc#" result="updateResult">
				UPDATE #Request.prefix_db_agency#.Eligibility_Detail
				SET approved = <cfqueryparam value="#arguments.approved#" cfsqltype="CF_SQL_INTEGER">
				WHERE Detail_ID = <cfqueryparam value="#arguments.Detail_ID#" cfsqltype="CF_SQL_INTEGER">
				AND Status = 0
			</cfquery>
			
			<cfif updateResult.recordcount EQ 0>
				<cfreturn 'error: Update failed - no rows were updated' />
			<cfelse>
				<cfreturn 'success' />
			</cfif>
			
		<cfcatch>
			<cfreturn 'error: #cfcatch.message#<cfif StructKeyExists(cfcatch, "detail")> - #cfcatch.detail#</cfif>' />
		</cfcatch>
		</cftry>
	</cffunction>

</cfcomponent>