<!---
This file is Copyright � 1998-2009 by Home Care Business Services. This work may not be reproduced, in whole or in part, 
using any medium, including, but not limited to, electronic transmission, CD-ROM or published in print, without the express 
permission of Home Care Business Services.

$Revision: 1.8 $
$Id: payer_action.cfm,v 1.8 2010/06/21 19:05:59 melissa Exp $
$Date: 2010/06/21 19:05:59 $
--->

<cfparam name="url.api" default="0" />
<cfif url.api EQ 1 OR url.api EQ "1">
<cfsetting enablecfoutputonly="true" showdebugoutput="false">
</cfif>

<cfinclude template = '/__Security-Block.cfm' />
<cfparam name="url.id" default="0" />
<cfparam name="url.a" default="0" />
<cfset payerApiSave = (url.api EQ 1 OR url.api EQ "1") />
<!--- Strip legacy CFFORM validation tokens that cause "Form entries are incomplete or invalid" --->
<cfloop list="fieldnames,cfformfieldnames,CFGRID_UPDATE" index="cfFormKey">
	<cfif structKeyExists(form, cfFormKey)>
		<cfset structDelete(form, cfFormKey) />
	</cfif>
</cfloop>
<cfset legacyFormKeys = structKeyArray(form) />
<cfloop from="1" to="#arrayLen(legacyFormKeys)#" index="legacyIdx">
	<cfset formFieldKey = legacyFormKeys[legacyIdx] />
	<cfif reFindNoCase("_required$|_range$|_validate$", formFieldKey) GT 0>
		<cfset structDelete(form, formFieldKey) />
	</cfif>
</cfloop>
<!--- Map form name EvvPayerRequired → DB column evv_payer_required (CF treats *_required as validation tokens) --->
<cfif structKeyExists(form, "EvvPayerRequired")>
	<cfset form.evv_payer_required = form.EvvPayerRequired />
</cfif>
<cftry>
<cfif isDefined("form.Pay_Name") AND len(trim(form.Pay_Name))>



<cfif NOT isDefined("form.Ties_Associated_Assesment")>
 <cfset form.Ties_Associated_Assesment=0>
</cfif>

<cfparam name="form.Biller_Type" default="Home Health">
<cfparam name="form.Status" default="0">
<cfparam name="form.Pay_frequency" default="">
<cfparam name="form.PayerSource" default="0">
<cfparam name="form.Payer_No" default="">
<cfparam name="form.EVV_assigned_identifier" default="">
<cfparam name="form.EVV_Payer_ID" default="">
<cfparam name="form.Auth_Req" default="0">
<cfparam name="form.auth_measure" default="units">
<cfparam name="form.addr1" default="">
<cfparam name="form.Pay_City" default="">
<cfparam name="form.Pay_State" default="0">
<cfparam name="form.Pay_Zip" default="">
<cfparam name="form.Pay_Contact" default="">
<cfparam name="form.phone" default="">
<cfparam name="form.Qcode_req" default="0">
<cfparam name="form.NOA_req" default="0">
<cfparam name="form.F2F" default="0">
<cfparam name="form.Eligibility" default="0">
<cfparam name="form.bypass_compliance" default="0">
<cfparam name="form.Revenue_0023" default="0">
<cfparam name="form.Value_Codes" default="0">
<cfparam name="form.EVV" default="1">
<cfparam name="form.Output" default="">
<cfparam name="form.hipps_serviceunit" default="">
<cfparam name="form.GL_Account" default="">
<cfparam name="form.Submitter" default="">
<cfparam name="form.Receiver" default="">
<cfparam name="form.payer_website" default="">
<cfparam name="form.website_username" default="">
<cfparam name="form.website_password" default="">
<cfparam name="form.visits_track" default="">
<cfparam name="form.timely_filing" default="">
<!---<cfparam name="form.checking_485" default="1">
<cfparam name="form.checking_487" default="1">--->
<cfparam name="form.evv_payer_required" default="0">
<cfif form.evv_payer_required NEQ 1 AND form.evv_payer_required NEQ "1">
	<cfset form.EVV_Payer_ID = "" />
<cfelseif payerApiSave AND NOT len(trim(form.EVV_Payer_ID))>
	<cfcontent type="application/json" reset="true" /><cfoutput>{"success":false,"message":"EVV Payer ID is required when EVV is required by the payer."}</cfoutput><cfabort />
</cfif>
<cfif NOT isDefined("form.otherM0150") OR len(trim(form.otherM0150)) EQ 0>
	<cfparam name="form.M0150" default="" />
	<cfset form.otherM0150 = trim(form.M0150) />
</cfif>
<cfif form.payer_website EQ "NULL"><cfset form.payer_website = ""></cfif>
<cfif form.website_username EQ "NULL"><cfset form.website_username = ""></cfif>
<cfif form.website_password EQ "NULL"><cfset form.website_password = ""></cfif>
<cfif form.timely_filing EQ '' OR NOT isNumeric(form.timely_filing)>
 <cfset form.timely_filing=0>
</cfif>

	



<cfif #form.Pay_Name# IS 'Medicare'><cfset QB_Account = 'Medicare:Full Episode'></cfif>
<cfif #form.Pay_Name# IS 'Medicaid'><cfset QB_Account = 'Medicaid:PDN'></cfif>
<cfif #form.Pay_Name# IS NOT 'Medicare' AND #form.Pay_Name# IS NOT 'Medicaid' ><cfset QB_Account = 'Private Insurance:PDN'></cfif>

<cfif form.Pay_ID lt 1>
<cfquery  datasource="#Application.DataSrc#" result="Pay_ID">
	INSERT INTO #Request.prefix_db_agency#.pPayer (
		Pay_Name,
		Biller_Type,
		Pay_frequency,
        PayerSource, 
        M0150,
        F2F,
        Eligibility,
        bypass_compliance,
		Payer_No,
		EVV_assigned_identifier,
		EVV_Payer_ID,
		<!--- Provider_ID, --->
		Loc_ID,
		Auth_Req,
		auth_measure,
		Pay_Street,
		Pay_City,
		Pay_State,
		Pay_Zip,
		Pay_Contact,
		Pay_Phone,
		Qcode_req,
		NOA_req,
		<!---checking_485,
		checking_487,--->
		Revenue_0023,
		Value_Codes,
		EVV,
		evv_payer_required,
		timely_filing,
		visits_track,
		GL_Account,
		hipps_serviceunit,
		Submitter_ID,
        <!--- Submitter_Password, --->
		Receiver_ID,
		Output,	
		Date_Create,
		Created_By,
		Date_Change,
		Change_by,
		Pay_Website,
        Web_User,
        Web_Pass
		
		
	)
	VALUES (
		'#Trim(form.Pay_Name)#',
		'#Trim(form.Biller_Type)#',
		'#Trim(form.Pay_frequency)#',
       '#Trim(form.PayerSource)#', 
       <cfqueryparam value = "#form.otherM0150#" CFSQLType ="CF_SQL_VARCHAR">,
		'#Trim(form.F2F)#',
		'#Trim(form.Eligibility)#',
		'#Trim(form.bypass_compliance)#',
		'#Trim(form.Payer_No)#',
		'#Trim(form.EVV_assigned_identifier)#',
		'#Trim(form.EVV_Payer_ID)#',
		<!---'#Trim(form.Provider_ID)#', --->
		#session.AgencyID#,
		'#form.Auth_Req#',
		'#Trim(form.auth_measure)#',
		'#Trim(form.addr1)#',
		'#Trim(form.Pay_City)#',
		'#form.Pay_State#',
		'#Trim(form.Pay_Zip)#',
		'#Trim(form.Pay_Contact)#',
		'#Trim(form.phone)#',
		'#Trim(form.Qcode_req)#',
		'#Trim(form.NOA_req)#',
		<!---'#Trim(form.checking_485)#',
		'#Trim(form.checking_487)#',--->
		'#Trim(form.Revenue_0023)#',
		'#Trim(form.Value_Codes)#',
		'#Trim(form.EVV)#',
		'#Trim(form.evv_payer_required)#',
		'#Trim(form.timely_filing)#',
		<cfif form.visits_track NEQ ''>'#Trim(form.visits_track)#'<cfelse>NULL</cfif>,
		'#Trim(form.GL_Account)#',
		'#Trim(form.hipps_serviceunit)#',
		'#Trim(form.Submitter)#',
        <!--- '#Trim(form.Submitter_Password)#', --->
		'#Trim(form.Receiver)#',
		'#form.Output#',
		
		#CreateODBCDateTime(Now())#,
		#Session.EmployeeID#,
		#CreateODBCDateTime(Now())#,
		#Session.EmployeeID#,
		<!--- '#form.Payer_Plan#', --->
		
		'#form.payer_website#',
        '#form.website_username#',
        '#form.website_password#'
	)
</cfquery>

<cfelse>

<cfquery  name="Pay" datasource="#Application.DataSrc#">
	UPDATE #Request.prefix_db_agency#.pPayer SET
		Pay_Name = '#Trim(form.Pay_Name)#',
		Biller_Type = '#Trim(form.Biller_Type)#',
        PayerSource = '#Trim(form.PayerSource)#', 
        M0150 = '#Trim(form.otherM0150)#', 
        F2F = '#Trim(form.F2F)#', 
        Eligibility = '#Trim(form.Eligibility)#', 
        bypass_compliance = '#Trim(form.bypass_compliance)#', 
        Pay_frequency = '#Trim(form.Pay_frequency)#',
		Payer_No = '#Trim(form.Payer_No)#',
		EVV_assigned_identifier = '#Trim(form.EVV_assigned_identifier)#',
		EVV_Payer_ID = '#Trim(form.EVV_Payer_ID)#',
		Status = '#Trim(form.Status)#',
		Auth_Req = '#form.Auth_Req#',
		auth_measure = '#Trim(form.auth_measure)#',
		Pay_Street = '#Trim(form.addr1)#',
		Pay_City = '#Trim(form.Pay_City)#',
		Pay_State = '#form.Pay_State#',
		Pay_Zip = '#Trim(form.Pay_Zip)#',
		Pay_Contact = '#Trim(form.Pay_Contact)#',
		Pay_Phone = '#Trim(form.phone)#',
		Qcode_req = '#Trim(form.Qcode_req)#',
		NOA_req   = '#Trim(form.NOA_req)#', 
		<!---checking_485 = '#Trim(form.checking_485)#',
		checking_487 = '#Trim(form.checking_487)#',--->
		Revenue_0023 = '#Trim(form.Revenue_0023)#', 
		Value_Codes  = '#Trim(form.Value_Codes)#', 
		EVV       	 = '#Trim(form.EVV)#',
		evv_payer_required = '#Trim(form.evv_payer_required)#',
		timely_filing = '#Trim(form.timely_filing)#',
		visits_track = <cfif form.visits_track NEQ ''>'#Trim(form.visits_track)#'<cfelse>NULL</cfif>,
		GL_Account   = '#Trim(form.GL_Account)#', 
		hipps_serviceunit = '#Trim(form.hipps_serviceunit)#',
		Submitter_ID = '#Trim(form.Submitter)#',
        <!--- Submitter_Password = '#Trim(form.Submitter_Password)#', --->
		Receiver_ID = '#Trim(form.Receiver)#',
		Output = '#form.Output#',
       
		Date_Change = #CreateODBCDateTime(Now())#,
		Change_by = #Session.EmployeeID#,
		<!---TimeAuthorization_Required = '#form.TimeAuthorization#',
		PriorAuthorization='#form.PriorAuthorization#',
		Supplies = '#form.Supplies#',
		TurboClaim ='#form.TurboClaim#',
		TeamBill='#form.TeamBill#',
		 InsurancePlan_or_ProgramName = '#form.insurepln#',
		QB_Account = '#QB_Account#',--->
		Pay_Website ='#form.payer_website#',
        Web_User ='#form.website_username#',
        Web_Pass ='#form.website_password#'
		<!--- ,notes ='#form.notes#' --->
			WHERE Pay_ID = #form.Pay_ID#
</cfquery>



		<!--- <cfquery  name="GetVisits" datasource="#Application.DataSrc#">
		SELECT ScheduleItems.ScheduleItems_ID, ScheduleItems.Pay_ID, Payer.Output
		FROM #Request.prefix_db_agency#.ScheduleItems, #Request.prefix_db_agency#.Payer
		Where ScheduleItems.Pay_ID = #form.Pay_ID#
		AND ScheduleItems.Pay_ID = Payer.Pay_ID
		AND ScheduleItems.Agency_ID = #session.AgencyID#
		AND ScheduleItems.EClaimed = 0
		AND ScheduleItems.Deleted = 0
		</cfquery>

		

		<cfif GetVisits.Recordcount gt 0>
			<cfquery  name="Update" datasource="#Application.DataSrc#">
			UPDATE #Request.prefix_db_agency#.ScheduleItems SET
			Output_Type = '#GetVisits.Output#'
			Where Pay_ID = #GetVisits.Pay_ID#
			AND Agency_ID = #session.AgencyID#
			AND ScheduleItems.EClaimed = 0
			AND ScheduleItems.Deleted = 0
			</cfquery>
		</cfif>
		
			<cfquery  name="Update" datasource="#Application.DataSrc#">
			UPDATE #Request.prefix_db_agency#.ScheduleItems SET Output_Type = 'RAP'
			Where 	Agency_ID = #session.AgencyID#
			AND 	Output_Type = 'Medicare'
			AND 	(Visit_Type = '1 - Start of care - further visits planned' or Visit_Type = '4 - Recertification (follow-up) reassessment' or  Visit_Type = 'Assessment' )
			AND 	EClaimed = 0
			AND 	Deleted = 0
			</cfquery> --->



</cfif>

<cfelse>
		<cfif url.Id neq ''>
		<cfscript>
		url.Id=decrypt(#url.Id#,"54kczhzgHTj4a8n+SRZPyg==","AES","Hex");
		</cfscript>
		</cfif>
	<cfset id=#url.id#>
	<cfif id neq 0>
		<cfif url.a eq "activate">
			<cfquery  name="qry" datasource="#Application.DataSrc#">
			UPDATE #Request.prefix_db_agency#.pPayer set Status='1' where Pay_ID=#id#
			</cfquery>
		<cfelseif url.a eq "deactivate">
			<cfquery  name="qry" datasource="#Application.DataSrc#">
			UPDATE #Request.prefix_db_agency#.pPayer set Status='0' where Pay_ID=#id#
			</cfquery>
		<cfelseif url.a eq "delete">
			<cfquery  name="chk" datasource="#Application.DataSrc#">
				SELECT COUNT(pPtPayer.Patient_ID) as total FROM #Request.prefix_db_agency#.pPtPayer
				JOIN #Request.prefix_db_agency#.pPayer ON pPtPayer.Payer_ID = pPayer.Pay_ID
				WHERE Pay_ID  =  #id#
			</cfquery>
			<cfif chk.recordcount and chk.total eq 0>
				<cfquery  name="qry" datasource="#Application.DataSrc#">
					UPDATE #Request.prefix_db_agency#.pPayer set Status='2' where Pay_ID=#id#
				</cfquery>
			<cfelse>
				<script>alert("Payer in use ... cannot delete");</script>
			</cfif>
		</cfif>
	</cfif>
</cfif>

<cfif isDefined("form.Pay_Name") AND len(trim(form.Pay_Name))>
	<cfif payerApiSave>
		<cfcontent type="application/json" reset="true" /><cfoutput>{"success":true,"message":"Payer saved successfully."}</cfoutput><cfabort />
	</cfif>
	<script language="javascript" type="text/javascript">
	window.location='index.cfm?page=agency&cat=agencymanagement&rpt=payer_list';
	</script>
<cfelseif payerApiSave>
	<cfcontent type="application/json" reset="true" /><cfoutput>{"success":false,"message":"Payer Name is required."}</cfoutput><cfabort />
</cfif>

	<cfcatch type="any">
	<cfset payerErrorMailTo = "velmurugan@myhomecarebiz.com" />
	<cfif payerApiSave>
		<cfcontent type="application/json" reset="true" /><cfoutput>{"success":false,"message":"#JSStringFormat(cfcatch.message)#"}</cfoutput><cfabort />
	</cfif>
	<cfif findNoCase("Form entries are incomplete", cfcatch.message) OR findNoCase("invalid", cfcatch.message)>
		<script language="javascript" type="text/javascript">
		alert("Please check required fields and try again.");
		history.back();
		</script>
		<cfabort />
	</cfif>
	<cftry>
		<cfmail to="#payerErrorMailTo#" from="error@myhomecarebiz.com" subject="#Application.ServerName# - Payer Action Error: #cfcatch.message#" type="html">
			<p><b>An error occurred while saving payer setup.</b></p>
			<p><b>Date/Time:</b> #DateFormat(now(), "mm/dd/yyyy")# #TimeFormat(now(), "hh:mm:ss")#</p>
			<p><b>Agency ID:</b> #Session.AgencyID#</p>
			<p><b>Employee ID:</b> #Session.EmployeeID#</p>
			<p><b>Pay ID:</b> <cfif isDefined("form.Pay_ID")>#form.Pay_ID#<cfelse>n/a</cfif></p>
			<p><b>Pay Name:</b> <cfif isDefined("form.Pay_Name")>#form.Pay_Name#<cfelse>n/a</cfif></p>
			<hr>
			<cfdump var="#form#">
			<cfdump var="#url#">
			<cfdump var="#cfcatch#">
		</cfmail>
		<cfcatch type="any"></cfcatch>
	</cftry>
	<script language="javascript" type="text/javascript">
	alert("An error occurred while saving the payer. Support has been notified.");
	window.location='index.cfm?page=agency&cat=agencymanagement&rpt=payer_list';
	</script>
	<cfabort>
</cfcatch>
</cftry>






