<cfcomponent  displayname="visit" output="false">
	<cffunction name="CheckVisit" access="remote" returnformat="plain" returntype="string">
		<cfargument name="starttime" required="yes" hint="Start Time">
		<cfargument name="Endtime" required="yes" hint="End Time">
		<cfargument name="VisitDate" required="no" hint="Visit Date">
		<cfargument name="Assmt_ID" required="no" shint="Assessment ID" default="0">
		<cfargument name="PatientID" required="no" hint="Patient ID" default="0">
		<cfargument name="Schedule_ID" required="no" hint="Schedule_ID" default="0">
		<cfset Visit_Date = "" />
		<cfif VisitDate NEQ ''>
				<cfset Visit_Date = #dateFormat(VisitDate,'yyyy-mm-dd')# />
		</cfif>
        <cfif #Request.prefix_db_agency# neq 'prefix_db_agency_invalid'>
			<cfquery name="Get_Visit" datasource="#Application.DataSrc#">
				SELECT * FROM #Request.prefix_db_agency#.pSchedules
				WHERE  <cfif Visit_Date NEQ ''> Visit_Date = '#Visit_Date#'  AND  </cfif>
				(time('#starttime#') Between StartTime And EndTime
				OR time('#Endtime#') Between StartTime And EndTime 
				 OR StartTime  Between time('#starttime#') AND time('#Endtime#')
				OR EndTime Between time('#starttime#') AND time('#Endtime#'))
				AND Assmt_ID = #Assmt_ID#
				AND Patient_ID = #PatientID#
				AND Schedule_ID != #arguments.Schedule_ID#
				AND  EndTime != time('#starttime#')
				AND  StartTime != time('#Endtime#')
				AND Status = 0
			</cfquery>
	        <cfif Get_Visit.recordcount gt 0>
				<cfreturn 'Failure'>
			<cfelse>
				<cfreturn 'Sucess'>
			</cfif>
		<cfelse>
			<cfreturn 'Failure'>
		</cfif>
	</cffunction>
	
	<cffunction name="CheckEmployee" access="remote" returnformat="plain" returntype="string">
		<cfargument name="starttime" required="yes" hint="Start Time">
		<cfargument name="Endtime" required="yes" hint="End Time">
		<cfargument name="VisitDate" required="yes" hint="Visit Date">
		<cfargument name="Emp_ID" required="no" shint="Employee ID" default="0">
		<cfif VisitDate NEQ ''>
		<cfset Visit_Date = #dateFormat(VisitDate,'yyy-mm-dd')# />
		</cfif>
        <cfif #Request.prefix_db_agency# neq 'prefix_db_agency_invalid'>
			<cfquery name="Get_Employee" datasource="#Application.DataSrc#">
				SELECT * FROM #Request.prefix_db_agency#.pSchedules
				WHERE  Visit_Date = '#Visit_Date#' 
		        AND (time('#starttime#') Between StartTime And EndTime
				OR time('#Endtime#') Between StartTime And EndTime 
				 OR StartTime  Between time('#starttime#') AND time('#Endtime#')
				OR EndTime Between time('#starttime#') AND time('#Endtime#'))
				AND Emp_ID = '#Emp_ID#'
				AND Status = 0
			</cfquery>
	        <cfif Get_Employee.recordcount gt 0>
			<cfreturn 'Failure'>
			<cfelse>
			<cfreturn 'Sucess'>
			</cfif>
		<cfelse>
		<cfreturn 'Failure'>
		</cfif>
	</cffunction>
	
	<cffunction name="CheckVisit1" access="remote" returnformat="plain" returntype="string">
		<cfargument name="starttime" required="yes" hint="Start Time">
		<cfargument name="Endtime" required="yes" hint="End Time">
		<cfargument name="VisitDate" required="yes" hint="Visit Date">
		<cfargument name="AssessmentID" required="yes" shint="Assessment ID">
		<cfargument name="PatientID" required="yes" hint="Patient ID">
		<cfset Visit_Date = #dateFormat(VisitDate,'yyy-mm-dd')# />
            <cfif #Request.prefix_db_agency# neq 'prefix_db_agency_invalid'>
			<cfquery name="Get_Dup_Visit" datasource="#Application.DataSrc#">
				SELECT * FROM #Request.prefix_db_agency#.ScheduleItems
				WHERE  Visit_Date = '#Visit_Date#' 
		        AND (time('#starttime#') Between StartTime And EndTime
				OR time('#Endtime#') Between StartTime And EndTime 
				 OR StartTime  Between time('#starttime#') AND time('#Endtime#')
				OR EndTime Between time('#starttime#') AND time('#Endtime#'))
				AND Assessment_ID = #AssessmentID#
				AND Patient_ID = #PatientID#
			</cfquery>
        <cfif Get_Dup_Visit.recordcount gt 0>
		<cfreturn 'Failure'>
		<cfelse>
		<cfreturn 'Sucess'>
		</cfif>
		<cfelse>
		<cfreturn 'Failure'>
		</cfif>
	</cffunction>
	
	<cffunction name="CheckEmployee1" access="remote" returnformat="plain" returntype="string">
		<cfargument name="starttime" required="yes" hint="Start Time">
		<cfargument name="Endtime" required="yes" hint="End Time">
		<cfargument name="VisitDate" required="yes" hint="Visit Date">
		<cfargument name="Employee_ID" required="no" shint="Employee ID" default="0">
		<cfset Visit_Date = #dateFormat(VisitDate,'yyy-mm-dd')# />
            <cfif #Request.prefix_db_agency# neq 'prefix_db_agency_invalid'>
			<cfquery name="Get_Dup_Employee" datasource="#Application.DataSrc#">
				SELECT * FROM #Request.prefix_db_agency#.ScheduleItems
				WHERE  Visit_Date = '#Visit_Date#' 
		        AND (time('#starttime#') Between StartTime And EndTime
				OR time('#Endtime#') Between StartTime And EndTime 
				 OR StartTime  Between time('#starttime#') AND time('#Endtime#')
				OR EndTime Between time('#starttime#') AND time('#Endtime#'))
				AND Employee_ID = #Employee_ID#
			</cfquery>
        <cfif Get_Dup_Employee.recordcount gt 0>
		<cfreturn 'Failure'>
		<cfelse>
		<cfreturn 'Sucess'>
		</cfif>
		<cfelse>
		<cfreturn 'Failure'>
		</cfif>
	</cffunction>
	
	<cffunction name="check_authorizations" access="remote" returnformat="plain" returntype="string">
		<cfargument name="VisitDate" required="no" hint="Visit Date">
		<cfargument name="Assmt_ID" required="no" shint="Assessment ID" default="0">
		<cfargument name="Auth_ID" required="no" hint="Auth ID" default="0">
		<cfargument name="Schedule_ID" required="no" hint="Schedule_ID" default="0">
		<cfset Visit_Date = "" />
		<cfif VisitDate NEQ ''>
				<cfset Visit_Date = #dateFormat(VisitDate,'yyyy-mm-dd')# />
		</cfif>
        <cfif #Request.prefix_db_agency# neq 'prefix_db_agency_invalid'>
			<!--- First get the authorization details to check bypass compliance --->
			<cfquery name="getauthinfo" datasource="#Application.DataSrc#">
				SELECT pAuths.*, pPayer.bypass_compliance, pAdmit.Admit_Type
				FROM #Request.prefix_db_agency#.pAuths
				JOIN #Request.prefix_db_agency#.pPtPayer ON pAuths.PtPayer_ID = pPtPayer.PtPayer_ID AND pPtPayer.Status = 0
				JOIN #Request.prefix_db_agency#.pPayer ON pPayer.Pay_ID = pPtPayer.Payer_ID AND pPayer.Status = 0
				LEFT JOIN #Request.prefix_db_agency#.pAssessments ON pAuths.Assmt_ID = pAssessments.Assmt_ID AND pAssessments.Status = 0
				LEFT JOIN #Request.prefix_db_agency#.pAdmit ON pAssessments.Admit_ID = pAdmit.Admit_ID AND pAdmit.Status = 0
				WHERE pAuths.Assmt_ID =  <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.Assmt_ID#">
		        AND  pAuths.Auth_ID =  <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.Auth_ID#">
		        AND pAuths.Status = <cfqueryparam cfsqltype="cf_sql_integer" value="0">
			</cfquery>
			
			<!--- Check if we should skip authorization date validation --->
			<cfset skip_auth_validation = false>
			<cfif getauthinfo.recordcount GT 0>
				<cfif getauthinfo.bypass_compliance EQ 1>
					<cfset skip_auth_validation = true>
				<cfelseif getauthinfo.Admit_Type EQ 'Non-Medical'>
					<cfset skip_auth_validation = true>
				</cfif>
			</cfif>
			
			<!--- If skipping validation, return Success immediately --->
			<cfif skip_auth_validation>
				<cfreturn 'Success'>
			</cfif>
			
			<!--- Otherwise, check authorization date range --->
			<cfquery name="getauth" datasource="#Application.DataSrc#">
				SELECT pAuths.*, pPayer.bypass_compliance, pAdmit.Admit_Type
				FROM #Request.prefix_db_agency#.pAuths
				JOIN #Request.prefix_db_agency#.pPtPayer ON pAuths.PtPayer_ID = pPtPayer.PtPayer_ID AND pPtPayer.Status = 0
				JOIN #Request.prefix_db_agency#.pPayer ON pPayer.Pay_ID = pPtPayer.Payer_ID AND pPayer.Status = 0
				LEFT JOIN #Request.prefix_db_agency#.pAssessments ON pAuths.Assmt_ID = pAssessments.Assmt_ID AND pAssessments.Status = 0
				LEFT JOIN #Request.prefix_db_agency#.pAdmit ON pAssessments.Admit_ID = pAdmit.Admit_ID AND pAdmit.Status = 0
				WHERE pAuths.Assmt_ID =  <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.Assmt_ID#">
		        AND  pAuths.Auth_ID =  <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.Auth_ID#">
		        AND pAuths.Status = <cfqueryparam cfsqltype="cf_sql_integer" value="0">
		        AND (pAuths.Date_Start <= '#DateFormat(arguments.VisitDate,"yyyy-mm-dd")#' AND  pAuths.Date_End >=  '#DateFormat(arguments.VisitDate,"yyyy-mm-dd")#')
			</cfquery>
	        <cfif getauth.recordcount EQ 0>
	        	<cfset errormessage = "The Visit Date should be less than Authorization End date OR greater than Authorization Start Date"/> 
				<cfreturn  errormessage>
			<cfelse>
				<cfreturn 'Success'>
			</cfif>
		<cfelse>
			<cfreturn 'Failure'>
		</cfif>
	</cffunction>
	
	
	
	
	<cffunction name="Medications_Interactions" access="remote" returnformat="plain" returntype="string">
		<cfargument name="RX_ID" required="yes" hint="RX ID">
		<cfargument name="Patient_ID" required="yes" hint="Patient ID">
		 <cfquery name="Get_Dup_Medications" datasource="#Application.DataSrc#">
			SELECT *
			 FROM  #Request.prefix_db_agency#.pPtmeds
			 Left outer join #Request.prefix_db_lookup#.Meds_New mn on pPtmeds.Drug_ID = mn.Trade_id
			 WHERE Patient_ID = #Patient_ID#
			 AND mn.RX_ID = #RX_ID#
			 AND Status <> '2'
         </cfquery>
        <cfif Get_Dup_Medications.recordcount gt 0>
		<cfreturn #Get_Dup_Medications.Trade_Name#> 
		<cfelse>
		<cfreturn 'Sucess'>
		</cfif>
	</cffunction>
	
	
	
	
	<cffunction name="checkduplicatepatient" access="remote" returnformat="plain" returntype="string">
		<cfargument name="Last_Name" required="yes" hint="Last Name">
		<cfargument name="First_Name" required="yes" hint="First Name">
		<cfargument name="Agency_name" required="yes" hint="Agency name">
		<cfargument name="Assessment_Type" required="yes" hint="Assessment Type">
		<cfargument name="Assessment_Date" required="yes" hint="Assessment Date">
		 <cfquery name="Get_Dup_patients" datasource="#Application.DataSrc#">
			SELECT *  FROM  #Request.prefix_db_lookup#.Coding_Request
			 WHERE Last_Name = '#Last_Name#'
			 AND First_Name  = '#First_Name#'
			 AND Agency_ID =  #Agency_name#
			 AND Assessment_Type = '#Assessment_Type#' <cfif Assessment_Date neq ''>AND Assessment_Date = #CreateODBCDate(Assessment_Date)# </cfif>
         </cfquery>
        <cfif Get_Dup_patients.recordcount gt 0>
		<cfreturn #Get_Dup_patients.recordcount#> 
		<cfelse>
		<cfreturn 'Sucess'>
		</cfif>
	</cffunction>

	
</cfcomponent>