<cfparam name="form.Status" default="0">
<cfparam name="form.Authno_Placeholder" default="0">
<cfparam name="form.Assessments" default="0">
<cfparam name="form.no_assessments" default="0">
<cfparam name="form.Visitfreq_Placeholder" default="0">
<cfparam name="form.visit_withoutorders" default="0">
<cfparam name="form.getauthweeks" default="0">
<cfset form.Record_Creation_Date = "#Now()#" />
<cfset form.Record_Created_By = #session.employeeid# />
<cfset form.Record_Mod_Date = #Now()# />
<cfset form.Record_Mod_By = #session.employeeid# />
<cfset DoCommit = 1>
<cfset form.ID  = decrypt(#session.cs.enc_patientid#,#application.enckey#,"AES","Hex") />  
<cfif form.no_assessments EQ 1>
    <cfset form.Assmt_ID = 0 />
<cfelse>
    <cfset form.Assmt_ID = ListFirst(form.Assessments, "~") />
</cfif>
<cfif form.Auth_ID EQ 0>  
    <cftransaction>
        <cftry>
            <cfquery  name="getauth" datasource="#Application.DataSrc#">
                       SELECT IFNULL(MAX(Auth_ID),0)+1 As pAuth_ID FROM #Request.prefix_db_agency#.pAuths 
            </cfquery>
            <cfset pAuth_ID =  #getauth.pAuth_ID# />

           <cfcatch>
                <cfset DoCommit = 0>
                <cftransaction action="rollback" />
            </cfcatch>
        </cftry>
        <cfif DoCommit EQ 1>
            <cftransaction action="commit" />
        </cfif>            
   </cftransaction>
<cfelse>
        <cfquery name="update_pAdmit" datasource="#Application.DataSrc#"  result="result">
           UPDATE #Request.prefix_db_agency#.pAuths SET 
           <cfif form.Status EQ 0 >
             Status   = <cfqueryparam VALUE="3"  cfsqltype="cf_sql_integer">,    
           <cfelse>
              Status   = <cfqueryparam VALUE="3"  cfsqltype="cf_sql_integer">,    
           </cfif>  
           Date_Change = <cfqueryparam VALUE="#form.Record_Mod_Date#"  cfsqltype="cf_sql_timestamp">,
           Change_by = <cfqueryparam VALUE="#form.Record_Mod_By#"  cfsqltype="cf_sql_integer">
           WHERE  Patient_ID = <cfqueryparam VALUE="#form.ID#"  cfsqltype="cf_sql_integer">
           AND AutoAuth_ID = <cfqueryparam VALUE="#form.AutoAuth_ID#"  cfsqltype="cf_sql_integer">
        </cfquery>
        <cfset pAuth_ID =  #form.Auth_ID# />
</cfif>
<cftransaction>
    <cftry>
        <cfif form.Rev_ID EQ ''>
          <cfset  form.Rev_ID  = 0 />
        </cfif>
        <cfif form.Total_Visits EQ ''>
          <cfset  form.Total_Visits  = 0 />
        </cfif>
        <cfparam name="form.visit_freq" default="0" />
        <cfif form.visit_freq EQ ''>
          <cfset  form.visit_freq  = 0 />
        </cfif>
        <cfif form.visit_withoutorders EQ ''>
          <cfset  form.visit_withoutorders  = 0 />
        </cfif>

        

        <cfquery name="getRevenue" datasource="#Application.DataSrc#">
            SELECT * FROM #Request.prefix_db_agency#.pRevenue_Code 
            WHERE Rev_CodeID = <cfqueryparam VALUE="#form.Rev_ID#"  cfsqltype="cf_sql_integer">
        </cfquery>

            <cfset CMSOrder_ID  =  0 />
            <cfset updating_reason = '' />
            <cfif form.Auth_ID NEQ 0>
                <cfquery name="getauths" datasource="#Application.DataSrc#">
                    SELECT a.*, vf.Frequency
                    FROM #Request.prefix_db_agency#.pAuths a
                    LEFT JOIN #Request.prefix_db_lookup#.pVisit_Frequency vf ON a.visit_freq = vf.Visit_No
                    WHERE a.Auth_ID = <cfqueryparam VALUE="#form.Auth_ID#" cfsqltype="cf_sql_integer">
                </cfquery>
                <cfif getauths.recordcount GT 0>
                    <cfset authUnchanged = (
                        val(form.visit_freq) EQ val(getauths.visit_freq)
                        AND val(form.Total_Visits) EQ val(getauths.Total_Visits)
                        AND val(form.prn_visits) EQ val(getauths.prn_visits)
                        AND val(form.Rev_ID) EQ val(getauths.Rev_ID)
                        AND dateFormat(form.Date_Start, "yyyy-mm-dd") EQ dateFormat(getauths.Date_Start, "yyyy-mm-dd")
                        AND dateFormat(form.Date_End, "yyyy-mm-dd") EQ dateFormat(getauths.Date_End, "yyyy-mm-dd")
                        AND val(form.Set_1_visit) EQ val(getauths.Set_1_visits)
                        AND val(form.Set_1_week) EQ val(getauths.Set_1_weeks)
                        AND val(form.Set_2_visit) EQ val(getauths.Set_2_visits)
                        AND val(form.Set_2_week) EQ val(getauths.Set_2_weeks)
                        AND val(form.Set_3_visit) EQ val(getauths.Set_3_visits)
                        AND val(form.Set_3_week) EQ val(getauths.Set_3_weeks)
                        AND val(form.Set_4_visit) EQ val(getauths.Set_4_visits)
                        AND val(form.Set_4_week) EQ val(getauths.Set_4_weeks)
                    ) />
                    <cfif authUnchanged AND val(getauths.CMSOrder_ID) GT 0>
                        <cfset CMSOrder_ID = getauths.CMSOrder_ID />
                    <cfelse>
                        <cfquery name="getNewVisitFreq" datasource="#Application.DataSrc#">
                            SELECT Frequency FROM #Request.prefix_db_lookup#.pVisit_Frequency
                            WHERE Visit_No = <cfqueryparam VALUE="#form.visit_freq#" cfsqltype="cf_sql_integer">
                        </cfquery>
                        <cfset authFreqUtil = CreateObject("component", "components.general.authorization").init() />
                        <!--- Prefer 485 weeks format from form radios; fall back to standard / set label --->
                        <cfset freqLabel = authFreqUtil.formatAuthWeeksFromForm(
                            dateStart = form.Date_Start,
                            dateEnd = form.Date_End,
                            formScope = form,
                            skill = getRevenue.Visit_Type
                        ) />
                        <cfif NOT Len(Trim(freqLabel))>
                            <cfset freqLabel = authFreqUtil.formatVisitFrequencyLabel(
                                visitFreq = form.visit_freq,
                                standardFrequencyLabel = getNewVisitFreq.recordcount GT 0 ? getNewVisitFreq.Frequency : "",
                                set1Visits = Val(form.Set_1_visit),
                                set1Weeks = Val(form.Set_1_week),
                                set2Visits = Val(form.Set_2_visit),
                                set2Weeks = Val(form.Set_2_week),
                                set3Visits = Val(form.Set_3_visit),
                                set3Weeks = Val(form.Set_3_week),
                                set4Visits = Val(form.Set_4_visit),
                                set4Weeks = Val(form.Set_4_week),
                                authId = Val(form.Auth_ID),
                                skill = getRevenue.Visit_Type
                            ) />
                        </cfif>
                        <cfif val(form.Total_Visits) NEQ val(getauths.Total_Visits) OR val(form.visit_freq) NEQ val(getauths.visit_freq)>
                            <cfset updating_reason = updating_reason & 'Authorization changes of ' & getRevenue.Visit_Type
                                & " skill Total Visits: " & form.Total_Visits & " and Visit Freq: " & freqLabel & "<br>" />
                        </cfif>
                        <cfif val(form.prn_visits) NEQ val(getauths.prn_visits)>
                            <cfset updating_reason = updating_reason & 'Authorization PRN Visits: ' & form.prn_visits & "<br>" />
                        </cfif>
                    </cfif>
                </cfif>
            </cfif>
            <cfscript>
                    request.ass = CreateObject("component","components.general.assessments").init();
                    getgoalsuccess = request.ass.updategoals_visit(#form.Assmt_ID#);
            </cfscript>

            <cfquery name="InsertingpAuths"  datasource="#Application.DataSrc#"  result="result">
               INSERT INTO #Request.prefix_db_agency#.pAuths (Auth_ID, Patient_ID, Assmt_ID, PtPayer_ID, Elig_ID,CMSOrder_ID, Status, 
                <cfif form.Auth_No neq ''>Auth_No,</cfif> 
                Authno_Placeholder,Visitfreq_Placeholder,
                Date_Start, Date_End, Rev_ID, Skill, Total_Visits, visit_freq, Set_1_visits, Set_1_weeks, Set_2_visits, Set_2_weeks,
                 Set_3_visits, Set_3_weeks, Set_4_visits, Set_4_weeks, prn_visits, Notes,
                 <cfif updating_reason NEQ ''>updating_reason,</cfif> visit_withoutorders,
                  Date_Create, Created_by, Date_Change, Change_by
                    )
                VALUES
                ( 
                  <cfqueryparam VALUE="#pAuth_ID#"  cfsqltype="cf_sql_integer">,
                  <cfqueryparam VALUE="#form.ID#"  cfsqltype="cf_sql_integer">,
                  <cfqueryparam VALUE="#form.Assmt_ID#"  cfsqltype="cf_sql_integer">,
                  <cfqueryparam VALUE="#form.ptpay_ID#"  cfsqltype="cf_sql_integer">,
                  <cfqueryparam VALUE="0"  cfsqltype="cf_sql_integer">,
                  <cfqueryparam VALUE="#CMSOrder_ID#"  cfsqltype="cf_sql_integer">,
                  <cfqueryparam VALUE="#form.Status#"  cfsqltype="cf_sql_integer">,
                  <cfif form.Auth_No neq ''>"#form.Auth_No#",</cfif>
                  <cfqueryparam VALUE="#form.Authno_Placeholder#"  cfsqltype="cf_sql_integer">,
                  <cfqueryparam VALUE="#form.Visitfreq_Placeholder#"  cfsqltype="cf_sql_integer">,
                  <cfqueryparam VALUE="#form.Date_Start#"  cfsqltype="cf_sql_date">,
                  <cfqueryparam VALUE="#form.Date_End#"  cfsqltype="cf_sql_date">,
                  <cfqueryparam VALUE="#form.Rev_ID#"  cfsqltype="cf_sql_integer" >,
                  <cfqueryparam VALUE="#getRevenue.Visit_Type#"  cfsqltype="cf_sql_varchar">,
                  <cfqueryparam VALUE="#form.Total_Visits#"  cfsqltype="cf_sql_integer" >,
                  <cfqueryparam VALUE="#form.visit_freq#"  cfsqltype="cf_sql_integer" >,
                  <cfif form.Set_1_visit NEQ ''><cfqueryparam VALUE="#form.Set_1_visit#" cfsqltype="cf_sql_integer" ><cfelse>0</cfif>,
                  <cfif form.Set_1_week NEQ ''><cfqueryparam VALUE="#form.Set_1_week#"  cfsqltype="cf_sql_integer"  ><cfelse>0</cfif>,
                  <cfif form.Set_2_visit NEQ ''><cfqueryparam VALUE="#form.Set_2_visit#"  cfsqltype="cf_sql_integer"><cfelse>0</cfif>,
                  <cfif form.Set_2_week NEQ ''><cfqueryparam VALUE="#form.Set_2_week#"  cfsqltype="cf_sql_integer"><cfelse>0</cfif>,
                  <cfif form.Set_3_visit NEQ ''><cfqueryparam VALUE="#form.Set_3_visit#"  cfsqltype="cf_sql_integer"><cfelse>0</cfif>,
                  <cfif form.Set_3_week NEQ ''><cfqueryparam VALUE="#form.Set_3_week#"  cfsqltype="cf_sql_integer"><cfelse>0</cfif>,
                  <cfif form.Set_4_visit NEQ ''><cfqueryparam VALUE="#form.Set_4_visit#"  cfsqltype="cf_sql_integer"><cfelse>0</cfif>,
                  <cfif form.Set_4_week NEQ ''><cfqueryparam VALUE="#form.Set_4_week#"  cfsqltype="cf_sql_integer"><cfelse>0</cfif>,
                  <cfif form.prn_visits NEQ ''><cfqueryparam VALUE="#form.prn_visits#"  cfsqltype="cf_sql_integer" ><cfelse>0</cfif> ,
                  <cfqueryparam VALUE="#form.Notes#"  cfsqltype="cf_sql_varchar">,
                  <cfif updating_reason NEQ ''> <cfqueryparam VALUE="#updating_reason#"  cfsqltype="cf_sql_varchar">,</cfif>
                  <cfif form.visit_withoutorders NEQ ''><cfqueryparam VALUE="#form.visit_withoutorders#"  cfsqltype="cf_sql_integer" ><cfelse>0</cfif>,  
                  <cfqueryparam VALUE="#form.Record_Creation_Date#"  cfsqltype="cf_sql_timestamp">,
                  <cfqueryparam VALUE="#session.employeeid#"  cfsqltype="cf_sql_integer">,
                  <cfqueryparam VALUE="#form.Record_Creation_Date#"  cfsqltype="cf_sql_timestamp">,
                  <cfqueryparam VALUE="#session.employeeid#"  cfsqltype="cf_sql_integer">
                )
            </cfquery>


            <cfif CGI.REMOTE_ADDR EQ '121.200.49.65' OR session.Display EQ 'Melissa Cott'>
                <!--- <cfif form.getauthweeks gt 0 >
                    <cfloop from="1" to="10" index="i">
                        <cfquery name="getsauthweeks" datasource="#Application.DataSrc#">
                            SELECT * FROM #Request.prefix_db_agency#.pAuths_weeks 
                            WHERE Week_No = '#i#' 
                            AND Auth_ID = <cfqueryparam cfsqltype="cf_sql_integer" value="#pAuth_ID#">
                            AND Status = 0
                        </cfquery>
                        <cfquery name="update_pAuths_weeks" datasource="#Application.DataSrc#"  result="result">
                            UPDATE #Request.prefix_db_agency#.pAuths_weeks SET 
                            Status   = <cfqueryparam VALUE="2"  cfsqltype="cf_sql_integer">,    
                            Date_Change = <cfqueryparam cfsqltype="cf_sql_timestamp" value="#now()#">,
                            Change_by = <cfqueryparam VALUE="#session.employeeid#"  cfsqltype="cf_sql_integer">
                            WHERE Week_No = '#i#'
                            AND  Auth_ID = <cfqueryparam cfsqltype="cf_sql_integer" value="#pAuth_ID#">
                            AND status = 0
                        </cfquery>
                        <cfif i LTE  form.getauthweeks>
                            <cfquery  name="getauthorizations" datasource="#Application.DataSrc#">
                                INSERT INTO #Request.prefix_db_agency#.pAuths_weeks
                                (
                                    Auth_ID, Week_No, Week_Start, Week_End,Total_visits, Date_Create, Created_by, Date_Change, Change_by
                                )
                                VALUES
                                (
                                    <cfqueryparam cfsqltype="cf_sql_integer" value="#getsauthweeks.Auth_ID#">,
                                    <cfqueryparam cfsqltype="cf_sql_integer" value="#i#">,
                                    <cfqueryparam cfsqltype="cf_sql_date" value="#getsauthweeks.week_start#">,
                                    <cfqueryparam cfsqltype="cf_sql_date" value="#getsauthweeks.week_end#">,
                                    <cfqueryparam cfsqltype="cf_sql_integer" value="#FORM['WeeK_Total_visits'&i]#">,
                                    <cfqueryparam cfsqltype="cf_sql_timestamp" value="#now()#">,
                                    <cfqueryparam VALUE="#session.employeeid#"  cfsqltype="cf_sql_integer">,
                                    <cfqueryparam cfsqltype="cf_sql_timestamp" value="#now()#">,
                                    <cfqueryparam VALUE="#session.employeeid#"  cfsqltype="cf_sql_integer">
                                )
                            </cfquery>
                        </cfif>
                    </cfloop>
                <cfelse> --->
                    <cfif (structKeyExists(form, "Date_Start") OR structKeyExists(form, "date_start"))
                        AND (structKeyExists(form, "Date_End") OR structKeyExists(form, "date_end"))
                        AND Len(Trim(structKeyExists(form, "Date_Start") ? form.Date_Start : form.date_start))
                        AND Len(Trim(structKeyExists(form, "Date_End") ? form.Date_End : form.date_end))
                        AND IsDate(structKeyExists(form, "Date_Start") ? form.Date_Start : form.date_start)
                        AND IsDate(structKeyExists(form, "Date_End") ? form.Date_End : form.date_end)>
                        <cfinclude template="authweeks_insert.cfm">
                    </cfif>
                <!--- </cfif> --->
                
            </cfif>
        <cfquery name="Getass" datasource="#Application.DataSrc#">
            SELECT *
            FROM  #Request.prefix_db_agency#.pAssessments
            WHERE Assmt_ID = <cfqueryparam value = "#form.Assmt_ID#" CFSQLType ="CF_SQL_INTEGER"> 
            AND Status < 2 
            ORDER BY AutoAssmt_ID DESC 
        </cfquery>
        <cfif form.no_assessments EQ 1>
            <cfset encautoass_id = 0 />   
            <cfset encadmit_id   = 0 />
        <cfelse>
            <cfset encautoass_id= encrypt(#Getass.AutoAssmt_ID#,#Application.enckey#,"AES","Hex") />   
            <cfset encadmit_id= encrypt(#Getass.Admit_ID#,#Application.enckey#,"AES","Hex") />
        </cfif>        
        <cfset encass_id= encrypt(#form.Assmt_ID#,#Application.enckey#,"AES","Hex") />  
        <cfset enauth_id= encrypt(#pAuth_ID#,#Application.enckey#,"AES","Hex") />   
        <cfcatch>
            <cfset DoCommit = 0>
            <cftransaction action="rollback" />
             <cfmail to="#request.send_errors_to#" from="error@myhomecarebiz.com" subject="#Application.ServerName#  Error: #cfcatch#" type="html">
                 <cfdump var="#form#">
                <cfdump var="#cfcatch#">
            </cfmail>
            <cfabort>
        </cfcatch>
    </cftry>
    <cfif DoCommit EQ 1>
        <cftransaction action="commit" />
    </cfif>            
</cftransaction>
<!--- <cfif CGI.REMOTE_ADDR EQ '121.200.49.65'>
<cfabort>
</cfif>--->
<cfif form.Auth_ID EQ 0>  
    <div class="portlet box red">
        <div class="portlet-title">
            <div class="caption">
                <i class="fa fa-gear"></i> Authorization Updated!
            </div>
            <div class="tools">
                <a href="javascript:;" class="collapse"></a>
            </div>
        </div>
        <div class="portlet-body form">
            <div class="form-body">
                <div class="form-group"><h4> Authorizations successfully updated.</h4></div>
                <div class="row">
                    <cfoutput>
                      <div class="col-md-1">
                            <div class="form-group">
                                <a  class="btn btn-default btn-sm" id="add_schedule" href="/schedules/index.cfm?aMenu=schedules&page=schedules&cat=&rpt=addvisit&restrict=0&SID=0&PID=#session.cs.enc_patientid#&AID=#encass_id#&authid=#enauth_id#&frm=patient&visitdate=">Add Visit</a>                                
                            </div>
                        </div>
                        <div class="col-md-1">
                            <div class="form-group">
                                <a  class="btn btn-default btn-sm" id="add_schedule" href="/schedules/index.cfm?aMenu=schedules&page=schedules&cat=&rpt=addschedule&restrict=0&SID=0&PID=#session.cs.enc_patientid#&AID=#encass_id#&authid=#enauth_id#&frm=patient&visitdate=">Add Schedule</a>                                
                            </div>
                        </div>
                        <div class="col-md-2">
                            <div class="form-group">
                                 <a  class="btn btn-default btn-sm" id="viewproblist" href="/patientadmin_new/index.cfm?a=1&page=patient&px=y&ID=#session.cs.enc_patientid#&cat=Patient&autoassid=#encautoass_id#&admitid=#encadmit_id###authorization_#Getass.AutoAssmt_ID#"   >Go to Chart</a>
                            </div>
                        </div>
                    </cfoutput>
                </div>
            </div>
        </div>
    </div>
    <cfabort>
<cfelse>
    <cflocation url="/patientadmin_new/index.cfm?a=1&page=patient&px=y&ID=#session.cs.enc_patientid#&cat=authorizations&autoassid=#encautoass_id#&admitid=#encadmit_id#" addtoken="no">
</cfif>
<cfif CGI.REMOTE_ADDR EQ '121.200.49.65'>
    <cflocation url="#application.downloadpath#/patientadmin_new/index.cfm?page=patient&ID=#session.cs.enc_patientid#&cat=schedule" addtoken="no">
<cfelse>
<cflocation url="#application.downloadpath#/patientadmin_new/index.cfm?page=patient&ID=#session.cs.enc_patientid#&cat=authorizations" addtoken="no">
</cfif>
