<!---
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.9 $
$Id: bill_UB92_action.cfm,v 1.9 2010/05/24 13:29:02 arlen Exp $
$Date: 2010/05/24 13:29:02 $
--->
 
<cfset invoiceTotal=0 />
<cfset Request.Invoice_ContractTotal =  0  />
<cfset invoicePayerId=0 />
<cfset get_invoice_ID =''>
<cfparam name="PAYER_ID" default="" />
<cfparam name="Session.TOB" default="" />
<cfparam name ="form.UBform" default="0" >
<cfparam name ="form.UBreview" default="0" >
<cfparam name ="url.turbo" default="0" >
<cfif isDefined("url.id")>
  <cfset PAYER_ID=url.id />
</cfif>
<cfif isdefined('Form.Schedule_ID')>
<cfset Session.Schid = #Form.Schedule_ID#>
</cfif>
<cfset user = Session.EmployeeID />
<cfset schid = Session.Schid />
<cfquery  name="deleteagencies" datasource="#Application.DataSrc#">
    Delete from #Request.prefix_db_lookup#.cron_GetTotals
</cfquery>

<cfif form.UBreview EQ 1 AND #parameterexists(Form.Schedule_ID)#>
    <cflocation  url="index.cfm?page=agency&cat=#url.cat#&rpt=UB04form_edit&ID=#url.ID#&billtype=#URL.billtype#&Schedule_ID=#Form.Schedule_ID#"   
    addtoken="no">
</cfif>

<cfform name="file" enctype="multipart/form-data">
  <cfif isdefined('schid') and schid neq ''>
    <cfif #parameterexists(schid)#>
        <!--- Page specific code, such as queries and variable settings should go here --->
        <cfquery  name="GetVisits" datasource="#Application.DataSrc#">
            SELECT pSchedules.Schedule_ID, pSchedules.Rev_ID, pSchedules.HCPCS_ID, pSchedules.Visit_Date, 
            pSchedules.Total_Units, pSchedules.Total_EClaim, pSchedules.Pay_ID, pSchedules.Assmt_ID,#session.agencyid# AS Agency_ID,
            pSchedules.Patient_ID, pSchedules.Auth_ID 
            FROM #Request.prefix_db_agency#.pSchedules WHERE Schedule_ID IN (#schid#)
            AND pSchedules.status = 0
        </cfquery>

        <cfquery  name="getlatestadmit" datasource="#Application.DataSrc#">
             SELECT * FROM #Request.prefix_db_agency#.pAdmit
             WHERE Status = 0  AND Patient_ID= '#GetVisits.Patient_ID#'  ORDER BY M0030_START_CARE_DT DESC 
        </cfquery>


        <cfloop query="GetVisits">
              <cfquery name="GetRevenue" datasource="#Application.DataSrc#">
                SELECT * FROM #Request.prefix_db_agency#.pRevenue_Code 
                WHERE Rev_CodeID = '#Rev_ID#' AND Status = 0
              </cfquery>
             <cfquery name="GetHCPCS" datasource="#Application.DataSrc#">
                SELECT * FROM #Request.prefix_db_agency#.pRevenue_Code 
                WHERE Rev_CodeID = <cfif HCPCS_ID NEQ '0'>'#HCPCS_ID#' <cfelse>'#Rev_ID#'</cfif>
                AND Status = 0
              </cfquery>
               <cfif GetRevenue.Measure eq '1'> 
                  <cfset Request.Total_Price = Total_Units * #GetRevenue.EClaim_Price# />
                   <cfset Request.Total_Contract = Total_Units * GetRevenue.Contract_Rate  />
                <cfelse>
                  <cfset Request.Total_Price =  #GetRevenue.EClaim_Price# />
                   <cfset Request.Total_Contract = #GetRevenue.Contract_Rate#  />
                </cfif>
            <cfquery name="InsertVisits" datasource="#Application.DataSrc#">
                  Insert Into #Request.prefix_db_lookup#.Claim (Agency_Id, Schedule_ID, Visit_Date, Rev_Code, HCPCS,Total_EClaim,Total_Contract,
                   Total_Units, Assmt_ID, Payer_ID,Auth_ID, Ticket) 
                  VALUES ('#session.AgencyId#', #Schedule_ID#, '#Visit_Date#', '#GetRevenue.Rev_Code#', '#GetHCPCS.HCPCS#',
                  #NumberFormat(Request.Total_Price,'_____.__')#,#NumberFormat(Request.Total_Contract,'_____.__')#, #Total_Units#, #Assmt_ID#, #PAYER_ID#,#Auth_ID#, 1)
              </cfquery>
            <cfquery name="Update_VisitsEclaims" datasource="#Application.DataSrc#">
                  UPDATE #Request.prefix_db_agency#.pSchedules 
                  SET
                   Total_Eclaim = #NumberFormat(Request.Total_Price,'_____.__')#,
                    Total_Contract = #NumberFormat(Request.Total_Contract,'_____.__')#
                  WHERE Schedule_ID = #Schedule_ID#
                  AND Status = 0
              </cfquery>

        </cfloop>
        <!--- Insert MAX and MIN into claim---> 
        <cfquery  name="getemp" datasource="#Application.DataSrc#">
            Insert IGNORE INTO #Request.prefix_db_lookup#.cron_GetTotals
              (
              DateField1,DateField2,NumField3
              )
            SELECT  MAX(pSchedules.Visit_Date) AS First_Visit,MIN(pSchedules.Visit_Date) AS Last_Visit,Assmt_ID
            FROM #Request.prefix_db_agency#.pSchedules WHERE Schedule_ID IN (#schid#)
            AND status = 0
            GROUP BY Assmt_ID
        </cfquery>

        <cfquery  name="Update" datasource="#Application.DataSrc#">
          Update #Request.prefix_db_lookup#.Claim cl, #Request.prefix_db_lookup#.cron_GetTotals c
             SET cl.Max_Visitdate = c.DateField1,
             cl.Min_Visitdate = c.DateField2
          WHERE cl.Assmt_ID = c.NumField3
        </cfquery>

        <cfquery  name="deleteagencies" datasource="#Application.DataSrc#">
          Delete from #Request.prefix_db_lookup#.cron_GetTotals
        </cfquery>

        <cfquery  name="Getpayer" datasource="#Application.DataSrc#">
          SELECT * FROM #Request.prefix_db_agency#.pPayer WHERE Pay_ID  =  #PAYER_ID#
        </cfquery>
  
  
          <!---  Get Supplies From Supply_Sched--->
          <cfquery  name="GetSupplies" datasource="#Application.DataSrc#">
            <cfsetting requesttimeout="30">
             SELECT s.Schedule_ID, s.Revenue_Code, s.HCPCS, s.Total_Units, s.Visit_Date, s.Assmt_ID, s.Payer_ID,
              s.Total_Price, c.Total_Contract, s.Ticket,s.Supply_ID 
             FROM #Request.prefix_db_agency#.Supply_Sched s, #Request.prefix_db_lookup#.Claim c
             WHERE s.Schedule_ID = c.Schedule_ID
             AND s.Deleted = 0
          </cfquery>
          <!---Insert Claim from Supplies--->
          <cfloop query="GetSupplies">
            <cfquery name="InsertSupplies" datasource="#Application.DataSrc#">
              <cfsetting requesttimeout="5000">
              Insert IGNORE Into #Request.prefix_db_lookup#.Claim (Agency_Id,Schedule_ID, Rev_Code, HCPCS, Total_Units,
              <cfif Visit_Date neq ''>Visit_Date,</cfif>  Total_EClaim,  Total_Contract, Assmt_ID, Payer_ID, Ticket) 
              values (#session.AgencyId#,'#Schedule_ID#', '#Revenue_Code#', '#HCPCS#', #decimalformat(Total_Units)#,
              <cfif Visit_Date neq ''>'#DateFormat(Visit_Date,"yyyy-mm-dd")#',</cfif>
              #NumberFormat(Total_Price,'_____.__')#,#NumberFormat(Total_Contract,'_____.__')#,  #Assmt_ID#, #Payer_ID#, 1)
            </cfquery>
          </cfloop>


        <cfquery  name="GetFirstVisit" datasource="#Application.DataSrc#">
           SELECT Claim.Schedule_ID, Claim.Claim_ID, Claim.Total_Units, Claim.Visit_Date, pAssessments.F300 AS HIPPS_Code
           FROM #Request.prefix_db_lookup#.Claim, #Request.prefix_db_agency#.pAssessments
           WHERE Claim.Agency_Id = '#session.AgencyId#'
           AND   Claim.Ticket = 1 
           AND   Claim.Assmt_ID = pAssessments.Assmt_ID 
           ORDER BY pAssessments.Patient_ID, Visit_Date   Limit 1
        </cfquery>

          <cfquery  name="Getdata" datasource="#Application.DataSrc#">
                
              SELECT  Claim.Min_Visitdate,Claim.Max_Visitdate,
                 Claim.Schedule_ID, Claim.Claim_ID, Claim.Total_EClaim,Claim.Total_Contract, Claim.Visit_Date as RAP_Date, Claim.Rev_Code, 
                 Claim.HCPCS, Claim.Total_Units, Claim.Rev_Code
                , pAssessments.F177 Certification_Start, pAssessments.Assmt_ID,pAssessments.F300 AS HIPPS_Code,
                pAssessments.F26 AS Assessment_Reason_M0100,Claim.Visit_Date,
                  pAdmit.M0030_START_CARE_DT AS Start_of_Care_M0030,pAssessments.F178 AS Certification_End, 
                  pAdmit.Admission_Source AS Source_of_Admission,
                   pAssessments.F300 AS HIPPS
                ,"" AS Claim_Key, "" AS Information_Release, "" AS Admission_Description ,"" AS Homebound_Status
                ,"" AS HHRG_175_Score, "" AS HHRG_230_Score,"" AS HHRG_250_Score 
                ,"" AS HHRG_390_Score, "" AS HHRG_420_Score, "" AS HHRG_440_Score,"" AS HHRG_450_Score
                ,pAssessments.F176 AS Assessment_Completed_M0090,pAssessments.Assmt_ID  
                ,pPatients.Patient_ID, pAssessments.F25 AS Admission_Status, pPtPayer.Sub_HIC AS HI_Claim_Number,
                 pPtPayer.Policy_Group_Number, pPtPayer.Plan_Type, pAuths.Auth_No AS AUTHNO 
                ,pPatients.Pt_Last AS Last_Name_M0040, pPatients.Patient_ID,pPatients.Pt_First AS First_Name_M0040, 
                pPatients.Pt_Middle AS Middle_Initial_M0040, pPatients.Pt_Street AS Street_Address
                ,pPatients.Pt_Gender AS Gender_M0069, pPatients.Pt_City AS City, pPatients.Pt_State AS State_M0050, 
                pPatients.Pt_Zip AS Zip_M0060, pPatients.Pt_DOB AS DOB_M0066,pPatients.CBSA_Code  AS MSA_Code, "" AS FIPS_Code, 
                pPatients.Pt_Agy_ID AS Agency_Assigned_ID,"" AS Lives_With_M0340,  pPatients.Pt_Race AS Race_M0140_NA 
                ,Agency.Agency_Name, Agency.Agency_Medicare_ID, Agency.Agency_Address1, Agency.Agency_City, Agency.Agent_FEIN
                ,Agency.Agency_State, Agency.Agency_Zip, Agency.Agency_Contact, Agency.Agency_Contact_Phone,
                Agency.Hospice_Medicare_NPI AS HNPI, Agency.Natl_Provider_ID AS ANPI ,Agency.Agency_ID, Agency.Wage_Index,
                 Agency.Rural
                ,pPhysicians.Phys_Last as LastName, pPhysicians.Phys_First as FirstName, pPhysicians.Phys_NPI as PNPI
                ,pPayer.Pay_ID AS Payer_ID, pPayer.Submitter_ID, pPayer.Receiver_ID, pPayer.Pay_Name,pPayer.Output AS POUT,
                 pPayer.Payer_No AS Payer_Number, pPayer.Pay_Street AS PayAdd1,"" AS PayAdd2, pPayer.Pay_City AS PayCity,
                  pPayer.Pay_State AS PayState, pPayer.Pay_Zip AS PayZip , 0 AS TurboClaim,
                  pPayer.PayerSource AS PAYSRC,pPayer.Qcode_req,pPayer.Revenue_0023,pPayer.Value_Codes,
                (SELECT MIN(c.Visit_Date)
                  FROM   #Request.prefix_db_lookup#.Claim c
                WHERE  c.Agency_Id = '#session.AgencyId#'
                AND    c.Assmt_ID = pAssessments.Assmt_ID
                 ) AS FirstVisitDate , "" AS FVD,
               (SELECT MIN(Total_Units)
                FROM   #Request.prefix_db_lookup#.Claim
                WHERE  Agency_Id = '#session.AgencyId#'
                AND    Assmt_ID = pAssessments.Assmt_ID
                ) AS Units  
              FROM  
               #Request.prefix_db_lookup#.Claim
                JOIN #Request.prefix_db_agency#.pAssessments ON Claim.Assmt_ID  =  pAssessments.Assmt_ID     AND pAssessments.status = 0 
                JOIN #Request.prefix_db_agency#.pSchedules ON  Claim.Schedule_ID   = pSchedules.Schedule_ID   AND pSchedules.status = 0
                JOIN #Request.prefix_db_agency#.pPatients  ON  pSchedules.Patient_ID   = pPatients.Patient_ID   AND   pPatients.Status  IN (#Request.patient_status#)
                JOIN #Request.prefix_db_agency#.pAdmit  ON  
                <cfif GetVisits.Assmt_ID EQ 0 > 
                    pPatients.Patient_ID   = pAdmit.Patient_ID
                <cfelse>
                    pAssessments.Admit_ID   = pAdmit.Admit_ID
                </cfif>
                AND pAdmit.status = 0               
                JOIN #Request.prefix_db_lookup#.Agency   ON  Claim.Agency_Id     = Agency.Agency_Id    
                JOIN #Request.prefix_db_lookup#.pEmployee ON   pSchedules.Emp_Id = pEmployee.Emp_Id
                JOIN #Request.prefix_db_agency#.pPayer ON    Claim.Payer_Id = pPayer.Pay_Id 
                JOIN #Request.prefix_db_agency#.pPtPayer ON   pPtPayer.Patient_Id = pPatients.Patient_Id AND  pPayer.Pay_Id  = pPtPayer.Payer_ID
                JOIN #Request.prefix_db_agency#.pAuths ON Claim.Auth_ID   = pAuths.Auth_ID AND pSchedules.status = 0
                JOIN #Request.prefix_db_lookup#.pPhysicians ON  pAdmit.Render_Phys_ID = pPhysicians.Phys_ID


              WHERE Claim.Agency_Id = '#session.AgencyId#'
                 AND   Claim.Ticket = 1 
                 AND   Claim.Total_EClaim > '0.0000'                
                 <!---AND   (Claim.Visit_Date >= pAssessments.F177 or Claim.Visit_Date is null OR LEFT(pAssessments.F26,1) NOT IN (1,4))--->
               AND   (Claim.Visit_Date >= pAssessments.F177 or Claim.Visit_Date is null OR pAssessments.F177 IS NULL)
                 AND pSchedules.status = 0 
                 AND pAssessments.status = 0 
                 AND   pPatients.Status  IN (#Request.patient_status#)
              ORDER BY pAssessments.Assmt_ID, Claim.Visit_Date, Claim.Claim_ID
          </cfquery>

          <!--- Initialize variables --->
          <cfset c = 0 />
          <cfset finaldata = "" />
          <cfset patients = ArrayNew(1) />
          <cfset invAmts  = ArrayNew(1) />
          <cfset agencyIds = ArrayNew(1) />
          <cfset assessmentTrackerIds = ArrayNew(1) />
          <cfset patientIds = ArrayNew(1) />
          <cfset invoiceAmounts = ArrayNew(1) />
          <cfset pSchedulesIds = ArrayNew(1) />
             <!--- <cfquery  name="PrefetchData" datasource="#Application.DataSrc#">
                   SELECT pPatients.Patient_ID, SUM(Claim.Total_EClaim) AS invAmt,
                    COUNT(Claim_ID) as NOITEMS 
                   FROM  
                    #Request.prefix_db_agency#.pAssessments,
                    #Request.prefix_db_agency#.pPatients,
                    #Request.prefix_db_agency#.pAdmit,
                    #Request.prefix_db_lookup#.Agency,
                    #Request.prefix_db_agency#.pPayer, 
                    #Request.prefix_db_lookup#.Claim, 
                    #Request.prefix_db_lookup#.pPhysicians
                    WHERE  Claim.Agency_Id = '#session.AgencyId#'
                    AND Claim.Ticket = 1 
                    AND pAssessments.status = 0
                    AND   pPatients.Status  IN (#Request.patient_status#)  AND pAdmit.status = 0
                    AND pAssessments.Patient_Id = pPatients.Patient_Id
                    AND pPatients.Loc_ID = Agency.Agency_ID 
                    AND Claim.Payer_Id = pPayer.Pay_Id
                    AND pAssessments.Patient_Id   = pPatients.Patient_Id
                    AND pAdmit.Render_Phys_ID = pPhysicians.Phys_ID
                   ORDER BY pPatients.patient_id
              </cfquery>

              <cfoutput query="PrefetchData">
                  <cfscript>
                    ArrayAppend(patients, #PrefetchData.patient_id#);
                    ArrayAppend(invAmts, #PrefetchData.invAmt#);
                  </cfscript>
              </cfoutput> --->
            

         <cfoutput query="GetData" group="Assmt_ID">
                        <cfif #mid(Getdata.Assessment_Reason_M0100,1,1)# eq "4" OR Assmt_ID EQ 0>
                           <!---<cfset HIPPS = #GetFirstVisit.HIPPS_Code# />--->
                            <cfset Date = #GetFirstVisit.Visit_Date# />
                            <cfset Units = #GetFirstVisit.Total_Units# />
                        <cfelse>
                            <!---<cfset HIPPS = #GetData.HIPPS_Code# /> --->
                            <cfset Date = #GetData.Start_of_Care_M0030# />
                            <cfset Units = #GetData.Total_Units# />
                        </cfif>
               
                       <cfif #Getdata.POUT# eq "Hospice">
                            <cfset TOB = '82 />A>3'>
                            <cfset TAX = '251G00000X' />
                            <cfset NPI = #GetData.HNPI# />
                            <cfset YB = '3' />
                            <cfset OC = '27' />
                            <cfset OD = 'D8' />
                            <cfset ctr_329 = 1 />
                            <cfset claim = #GetData.Medicare_Number_M0063# />
                            <cfset HIPPS2 = #GetData.Admission_Description# />
                            <cfset REV2 = '0651' />
                            <cfset DESC = 'RTN' />
                        <cfelse>
                            <cfif session.AgencyID eq 415>
                                  <cfset TOB = '32>A>3'>
                            <cfelse>
                                  <cfset TOB = '32>A>3'>
                            </cfif>
                            <cfset TAX = '251E00000X' />
                            <cfset NPI = #GetData.ANPI# />
                            <cfset YB = '4' />
                            <cfset ctr_329 = 1 />
                            <cfset OC = '' />
                            <cfset OD = '' />
                            <cfset claim = #GetData.HI_Claim_Number# />
                            <cfset HIPPS2 = #GetData.HIPPS_Code# />
                            <cfset REV2 = '0023' />
                            <cfset DESC = 'HOME HEALTH SERVICES' />
                        </cfif>
                        <cfif Getdata.POUT eq '1500'>
                             <cfset TOB = '12>B>1' >
                       </cfif>
                       <cfif Session.TOB NEQ ''>
                          <cfset TOB = LEFT(Session.TOB,2)& '>A>' & RIGHT(Session.TOB,1) >
                       </cfif>

                      <cfscript>
                           ArrayAppend(agencyIds, #GetData.Agency_ID#);
                           ArrayAppend(assessmentTrackerIds, #GetData.Assmt_ID#);
                           ArrayAppend(patientIds, #GetData.Patient_ID#);
                           ArrayAppend(invoiceAmounts, #GetData.Total_EClaim#);
                      </cfscript>

                    <!--- Used for counting the number of 329 iterations --->
                    <cfif GetData.Revenue_0023 EQ 1 >
                         <cfset ctr_329 = 2 />
                    <cfelse>
                         <cfset ctr_329 = 1 />
                    </cfif>
                    <!--- Used for counting the number of 322 iterations --->
                    <!--- Used for counting the number of Diagnoses --->
                    <cfset GetData.Gender_M0069 = #LEFT(GetData.Gender_M0069,1)# />
                    <!--- Get first character from Source_of_Admission field value --->
                    <cfset GetData.Source_of_Admission = #Left(GetData.Source_of_Admission,1)# />
                    <cfset GetData.Admission_Status = #Left(GetData.Admission_Status,2)# />
                    
                    <cfif len(GetData.Agency_Zip) GT 5>
                        <cfset GetData.Agency_Zip = #Replace(GetData.Agency_Zip,"-","","ALL" )#>
                    <cfelse>
                        <cfset GetData.Agency_Zip = #Left(GetData.Agency_Zip,5)# & '1901'>
                    </cfif>
                    <cfset GetData.PayZip = #Left(GetData.PayZip,5)# & '9999' />

                <!--- Create ISA Header --->
                  <!--- Matches up with IEA Trailer | after data --->
                    <cfset var1 = "" />
                    <cfset Turbo_Claim = 0 />
                    <cfset authorization_number  = "" />
                    <!--- <cfset CONTRO = #DateFormat(Now(),"YYMMDDHHMMSS")#>
                    <cfset CONTROL = #session.AgencyId#&'-'&#CONTRO# />
                    <cfset ISA = #DateFormat(Now(),"MMDDHHMMSS")# />
                    <cfset ISA13 = #Right(ISA,9)# />
                    <cfset GS06 = #DateFormat(Now(), "MMSS")# />
                    <cfset ST02 = #DateFormat(Now(), "hmmss")# /> --->
                    <cfset curren_date = #dateFormat(Now(),"yymmdd")#>
                    <cfset CONTRO = #timeFormat(Now(),"HHMMSS")#>
                    <cfset CONTROL = #session.AgencyId#&'-'&#curren_date#&#CONTRO# />
                    <cfset ISA_1 = #dateFormat(Now(),"mmdd")#>
                    <cfset ISA =  ISA_1 & #timeFormat(Now(),"HHMMSS")# >
                    <cfset ISA13 = #Right(ISA,9)#>
                    <cfset GS06 = #timeFormat(Now(), "MMSS")#>
                    <cfset ST02 = #timeFormat(Now(), "HHMMSS")#>

                    <cfoutput group="Claim_ID">
                        <cfquery name="get_revenue"  datasource="#Application.DataSrc#">
                            SELECT * FROM #Request.prefix_db_agency#.pSchedules s 
                            JOIN  #Request.prefix_db_agency#.pRevenue_Code r
                            WHERE s.Rev_ID = r.Rev_CodeID
                            AND   s.Schedule_ID = #GetData.Schedule_ID#
                        </cfquery>
                       <cfif get_revenue.Measure eq '1'>
                            <cfset TotalUnits = GetData.Total_Units / 4 >
                       <cfelseif get_revenue.Measure eq '.25'>
                            <cfset TotalUnits = #GetData.Total_Units# />
                        <cfelseif get_revenue.Measure eq 'other'>
                            <cfset TotalUnits = #get_revenue.Set_Units# />
                       <cfelse>
                            <cfset TotalUnits = 1 >
                       </cfif>
            
                        <cfset var1 = var1 & "LX*#ctr_329#~"& chr(13)& chr(10) &
                        "SV2*#Trim(GetData.Rev_Code)#*HC>#Trim(GetData.HCPCS)#*#Trim(NumberFormat(GetData.Total_EClaim,'____.__'))#*UN*#TotalUnits#~"& chr(13)& chr(10) &
                        "DTP*472*D8*#DateFormat(GetData.Visit_Date,"yyyymmdd")#~"& chr(13)& chr(10) >
                         <cfif GetData.Rev_Code EQ '0250' or GetData.Rev_Code EQ '250'>
                              <cfset var1 = var1 & "REF*6R*99"& chr(13)& chr(10) &"LIN**N4*#Trim(get_revenue.Revenue_Code)#~"& chr(13)& chr(10) &"CTP****#TotalUnits#*#TotalUnits#"& chr(13)& chr(10) />
                        <cfelse>
                        </cfif>
                        <cfset ctr_329 = ctr_329 + 1 />
                        <cfif GetData.Total_EClaim neq '' and GetData.Total_EClaim gt 0>
                          <cfset invoiceTotal = invoiceTotal + GetData.Total_EClaim />
                        </cfif>
                        <cfif GetData.Total_Contract neq '' and GetData.Total_Contract gt 0>
                            <cfset Request.Invoice_ContractTotal = Request.Invoice_ContractTotal+GetData.Total_Contract />
                        </cfif>
                        <cfset invoicePayerId=#Payer_ID# />
                        <cfif authorization_number eq ''>
                            <cfset authorization_number  = #GetData.AUTHNO# />
                        <cfelseif authorization_number does not contain #GetData.AUTHNO# >
                             <cfset authorization_number  = authorization_number&','&#GetData.AUTHNO# />
                        </cfif>
                    </cfoutput>

                    <cfif c eq 0></cfif>
                    <cfset c = c + 1 />
                      <!--- JDB: Move the cfset below back inside the c eq 0 above when the time comes --->
                     <cfset finaldata = finaldata & "ISA*00*          *00*          *ZZ*00             *ZZ*               *#DateFormat(Now(), "yymmdd")#*#TimeFormat(Now(), "HHMM")#*U*00501*#ISA13#*0*P*>~" & chr(13)& chr(10) & 
                      "GS*HC*#GetData.Submitter_ID#*#GetData.Receiver_ID#*#DateFormat(Now(), "yyyymmdd")#*#TimeFormat(Now(), "HHMM")#*#GS06#*X*005010X223A2~" & chr(13)& chr(10) & 
                      "ST*837*#ST02#*005010X223A2~" & chr(13)& chr(10) &  
                      "BHT*0019*00*00000#YB#*#DateFormat(Now(), "yyyymmdd")#*#TimeFormat(Now(), "HHMM")#*CH~" & chr(13)& chr(10) & 
                    <!---LN3 --->"NM1*41*2*#UCase(GetData.Agency_Name)#*****46*#GetData.Agent_FEIN#~"  & chr(13)& chr(10) &     
                    <!---LN3 --->"PER*IC*#UCase(GetData.Agency_Contact)#*TE*#Left(GetData.Agency_Contact_Phone,3)##Mid(GetData.Agency_Contact_Phone,5,3)##Mid(GetData.Agency_Contact_Phone,9,4)#~" & chr(13)& chr(10) & 
                    <!---LN4 --->"NM1*40*2*#UCase(GetData.Pay_Name)#*****46*#GetData.Payer_Number#~"& chr(13)& chr(10) & 
                    <!---LN5 --->"HL*1**20*1~" & chr(13)& chr(10) &
                    <!---LN6 --->"PRV*BI*PXC*#TAX#~" & chr(13)& chr(10) &
                    <!---LN5 "PRV*BI*PXC*251E00000X~" & chr(13)& chr(10) &---> 
                    <!---LN6 --->"NM1*85*2*#UCase(GetData.Agency_Name)#*****XX*#NPI#~"  & chr(13)& chr(10) & 
                    <!---LN6 --->"N3*#UCase(GetData.Agency_Address1)#~"  & chr(13)& chr(10) & 
                    <!---LN6 --->"N4*#UCase(GetData.Agency_City)#*#UCase(GetData.Agency_State)#*#Agency_Zip#~" & chr(13)& chr(10)>
                    <cfset finaldata = finaldata & 
                    <!---LN7 --->"REF*EI*#GetData.Agent_FEIN#~"  & chr(13)& chr(10) & 
                    <!---LN7 --->"PER*IC*#UCase(GetData.Agency_Contact)#*TE*#Left(GetData.Agency_Contact_Phone,3)##Mid(GetData.Agency_Contact_Phone,5,3)##Mid(GetData.Agency_Contact_Phone,9,4)#~" & chr(13)& chr(10) & 
                    <!---LN8 --->"HL*2*1*22*0~"  & chr(13)& chr(10) & 
                    <!---LN9 --->"SBR*P*18**UNKNOWN*****#Trim(GetData.PAYSRC)#~" & chr(13)& chr(10) & 
                    <!---L10 --->"NM1*IL*1*#UCase(GetData.Last_Name_M0040)#*#UCase(GetData.First_Name_M0040)#****MI*#claim#~"& chr(13)& chr(10) & 
                    <!---L11 --->"N3*#UCase(GetData.Street_Address)#~"& chr(13)& chr(10) & 
                    <!---L12 --->"N4*#UCase(GetData.City)#*#GetData.State_M0050#*#Left(GetData.Zip_M0060,5)#~"  & chr(13)& chr(10) & 
                    <!---L13 --->"DMG*D8*#DateFormat(GetData.DOB_M0066,"yyyymmdd")#*#GetData.Gender_M0069#~"& chr(13)& chr(10) &
                    <!---L14 --->"NM1*PR*2*#UCase(GetData.Pay_Name)#*****PI*#GetData.Payer_Number#~"& chr(13)& chr(10) &
                    <!---L14 --->"N3*#UCase(GetData.PayAdd1)#~"& chr(13)& chr(10) &
                    <!---L14 --->"N4*#UCase(GetData.PayCity)#*#GetData.PayState#*#PayZip#~"& chr(13)& chr(10) & 
                    <!---L15 --->"CLM*#CONTROL#*#invoiceTotal#***#TOB#**A*Y*Y*********~"& chr(13)& chr(10) &   
                    <!---L17 --->"DTP*434*RD8*#DateFormat(GetData.Min_Visitdate,"yyyymmdd")#-#DateFormat(GetData.Max_Visitdate,"yyyymmdd")#~"& chr(13)& chr(10) & 
                    <!---L18 --->"DTP*435*DT*#DateFormat(GetData.Start_of_Care_M0030,"yyyymmdd")#0001~"& chr(13)& chr(10) & 
                    <!---L19 --->"CL1*9*#Trim(GetData.Source_of_Admission)#*30~"& chr(13)& chr(10) & 
                    <!---L20 --->"REF*G1*#Trim(authorization_number)#~"& chr(13)& chr(10) >
                    <!---"HI*ABK>#Replace(GetData.HHRG_175_Score, ".", "", "ALL")#~"& chr(13)& chr(10) >--->


                <cfquery  name="M0230Diagnosis" datasource="#Application.DataSrc#">
                  SELECT pProblem.*,vetted_190924.ICD FROM #Request.prefix_db_agency#.pProblem 
                  JOIN #Request.prefix_db_lookup#.vetted_190924 ON vetted_190924.Diagnosis = pProblem.Description
                  WHERE 
                  <cfif GetData.Assmt_ID NEQ 0 >
                      pProblem.Assmt_ID IN (<cfqueryparam value="#GetData.Assmt_ID#"  cfsqltype="CF_SQL_INTEGER" list="yes">)
                  <cfelse>
                      pProblem.Assmt_ID IN
                              ( SELECT Assmt_ID FROM #Request.prefix_db_agency#.pAssessments 
                              WHERE pAssessments.Patient_ID = #GetData.Patient_ID#
                             AND pAssessments.Status = 0 AND pAssessments.Admit_ID = #getlatestadmit.Admit_ID#)
                  </cfif>
                  AND pProblem.status = <cfqueryparam value="0"  cfsqltype="CF_SQL_INTEGER">
                  AND (M0_No like 'M1021%' OR M0_No like 'M1023%')
                  ORDER BY dx_order,RIGHT(M0_No, 1) ASC
                </cfquery>
              <cfloop query="M0230Diagnosis">
                <cfif M0_No contains 'M1021'>
                  <cfset finaldata = finaldata &  "HI*ABK>#Replace(M0230Diagnosis.ICD, ".", "", "ALL")#~"& chr(13)& chr(10) >
                </cfif>
              </cfloop>
              <cfset other_diagnosis_count = 0>
              <cfset finaldata = finaldata &  "HI*" />
              <cfloop query="M0230Diagnosis">
                <cfif M0_No contains 'M1023'>
                  <cfset finaldata = finaldata & "ABF>#Replace(M0230Diagnosis.ICD, ".", "", "ALL")#*" >
                  <cfset other_diagnosis_count = 1>
                </cfif>
              </cfloop>
              <cfset finaldata = Left(finaldata, len(finaldata)-1) />
              <cfset finaldata = finaldata &"~"& chr(13)& chr(10) />     
              <cfif GetData.Value_Codes  EQ 1>      
                  <cfset  finaldata = finaldata &
                  <!---L24 --->"HI*BE>61>>>#GetData.MSA_Code#~"& chr(13)& chr(10) />
              </cfif>
               
              <cfset  finaldata = finaldata & 
              <!---L25 --->"NM1*71*1*#UCase(GetData.LastName)#*#UCase(GetData.FirstName)#****XX*#GetData.PNPI#~"& chr(13)& chr(10) />
              <cfif #Getdata.POUT# neq "Hospice">
                  <cfif GetData.Revenue_0023 EQ 1 >
                    <cfset finaldata = finaldata & "LX*1~" & chr(13)& chr(10) & "SV2*#REV2#*HP>#Trim(HIPPS2)#*0*UN*1~"& chr(13)& chr(10)
                                & "DTP*472*D8*#DateFormat(Date,"yyyymmdd")#~"  & chr(13)& chr(10) >
                  </cfif>
              </cfif>
               <cfset finaldata = finaldata & var1 /> 
              <cfset TS = ((ctr_329 - 1) * 3) + 31 />
              <cfset finaldata = finaldata & "SE*#TS#*#ST02#~"& chr(13)& chr(10) &"GE*1*#GS06#~"& chr(13)& chr(10)&"IEA*1*#ISA13#~" />
              <!--- Add Newline/CR to string --->
              <cfset finaldata = finaldata & chr(13)& chr(10) />

            <!--- Write entire text string to file --->
            <!---<cffile action="write" file="#application.datapath##user##application.datatype#" output="#finaldata#">--->
            <!--- After file creation is complete, flag the EClaimed field in the pSchedules table, by setting it to 1--->

            <cfquery  name="dblist" dbtype="query">
             select distinct(Schedule_ID) from GetData
            </cfquery>

            <cfset thelist=#ValueList(dblist.Schedule_ID,",")# />

            <!---<cfoutput>
            #schid#<br />
            ArrayLen(assessmentTrackerIds) - #ArrayLen(assessmentTrackerIds)#,#assessmentTrackerIds[1]#<br />
            ArrayLen(pSchedulesIds) - #ArrayLen(pSchedulesIds)#<br />
            ArrayLen(patientIds) - #ArrayLen(patientIds)#<br />
            ArrayLen(patients) - #ArrayLen(patients)#, - , #patients[1]#
            </cfoutput>--->
            <!---<cfabort>--->

            <cfloop index="i" from="1" to="#ArrayLen(assessmentTrackerIds)#" >
              <cfset invPatientTotal = 0 />
              <cfloop index="p" from="1" to="#ArrayLen(patients)#">
                <cfif patients[p] eq patientIds[i]>
                 <cfset invPatientTotal = invAmts[p] />
                 <cfif invPatientTotal eq ''>
                     <cfset invPatientTotal = 0 />
                 </cfif>
                </cfif>
              </cfloop>
            </cfloop>
              <cfquery  datasource="#Application.DataSrc#" name="Insert_Invoice">
                INSERT INTO #Request.prefix_db_agency#.Invoices (
                  PatientPayer_ID
                 ,Agency_ID
                 ,Patient_ID
                 ,Assmt_ID
                   ,Output
                 ,DateSent
                 ,MethodSent
                 ,InvoiceTotal
                 ,PayerBalance
                 ,ContractTotal
                 ,Internal_control_number
                 ,WhereTreated
               ,Record_Created_By
               ,Record_Created_Date
               ,Record_Modified_By
               ,Record_Modified_Date
                ) VALUES (
                   #Payer_ID#
                  ,'#Agency_ID#'
                  ,'#Patient_ID#'
                  ,'#Assmt_ID#'
                    ,'#POUT#'
                  ,NOW()
                  ,"Electronic"
                  ,#invoiceTotal#
                   <cfif invoiceTotal eq ''>
                   ,0
                   <cfelse>
                  ,#invoiceTotal#
                  </cfif>
                  ,#NumberFormat(Request.Invoice_ContractTotal,'_____.__')#
                  ,'#CONTROL#'
                  ,""
                    ,'#Session.EmployeeId#'
                    ,#now()#
                    ,'#Session.EmployeeId#'
                    ,#now()#
                )
               </cfquery>
              <cfquery  datasource="#Application.DataSrc#" name="Last_Invoice_ID">
                     SELECT LAST_INSERT_ID() as LastInsertID
               </cfquery>
         
         
           <!--- Insert ALL claimdat into claim_bill table --->
              <cfquery name="Insert_claim_bill" datasource="#Application.DataSrc#"> 
                INSERT IGNORE INTO  #Request.prefix_db_agency#.claim_bill(
                  Type_of_Bill , Assignment_Accept ,Submitter_ID , Receiver_ID , Agency_Name ,Agent_FEIN , Agency_Contact ,Agency_Contact_Phone , PayName ,
                  ANPI ,Agency_Address1 ,Agency_City , Agency_State ,Agency_Zip , Last_Name_M0040 ,First_Name_M0040 , HI_Claim_Number ,Street_Address ,City ,
                  State_M0050 ,Zip_M0060 ,DOB_M0066 ,Gender_M0069 ,Payer_Number ,PayAdd1 ,PayCity ,PayState ,PayZip ,Certification_start ,Certification_end ,
                  Start_of_Care_M0030 ,Source_of_Admission ,Admission_Status ,Claim_Key ,HHRG_175_Score ,HHRG_230_Score ,HHRG_250_Score ,HHRG_390_Score ,
                  HHRG_420_Score ,HHRG_440_Score ,MSA_Code ,Referring_LastName ,Referring_FirstName ,Referring_PNPI ,Certifying_LastName ,Certifying_FirstName ,
                  Certifying_PNPI,Invoice_ID,Telephone,Assessment_Reason_M0100,Agency_Assigned_ID)
                  VALUES
                  ('#Session.TOB#','','#Submitter_ID#','#Receiver_ID#','#Agency_Name#','#Agent_FEIN#','#Agency_Contact#','#Agency_Contact_Phone#','#Pay_Name#',
                '#ANPI#','#Agency_Address1#','#Agency_City#','#Agency_State#' ,'#Agency_Zip#','#Last_Name_M0040#','#First_Name_M0040#','#HI_Claim_Number#','#Street_Address#','#City#',
                '#State_M0050#','#Zip_M0060#',<cfif DOB_M0066 neq ''>'#DATEFORMAT(DOB_M0066,'yyyy-mm-dd')#'<cfelse>null</cfif>,'#Gender_M0069#','#Payer_Number#','#PayAdd1#','#PayCity#','#PayState#','#PayZip#',
                <cfif Certification_Start neq ''>'#DATEFORMAT(Certification_Start,'yyyy-mm-dd')#'<cfelse>null</cfif>,
                <cfif Certification_End neq ''>'#DATEFORMAT(Certification_End,'yyyy-mm-dd')#'<cfelse>null</cfif>,
                '#Start_of_Care_M0030#','#Source_of_Admission#','#Admission_Status#','#Claim_Key#','#HHRG_175_Score#','#HHRG_230_Score#','#HHRG_250_Score#','#HHRG_390_Score#',
                '#HHRG_420_Score#','#HHRG_440_Score#','#MSA_Code#','#LastName#','#FirstName#' ,'#PNPI#' ,'','','',#Last_Invoice_ID.LastInsertID#,'','#Assessment_Reason_M0100#','#Agency_Assigned_ID#')
              </cfquery>
              <cfset Turbo_Claim = #GetData.TurboClaim# /> 
              <cfif Turbo_Claim eq 1 and #Session.TurboClaim# eq 1 >
                <cfset getsucess= generalCFC.AddInvoiceHistory(Last_Invoice_ID.LastInsertID) />
                  <cfquery datasource="#Application.DataSrc#" name="Insert_Status">
                      Update #Request.prefix_db_agency#.Invoices SET 
                      Updated_by = 'Automatic',
                      <cfif #form.rejected# neq 1>
                          claim_status = 'Waiting'
                      <cfelse>
                          claim_status = 'Rejected'
                      </cfif>
                    ,Record_Modified_By = '#Session.EmployeeId#'
                    ,Record_Modified_Date = #now()#
                      WHERE Invoice_ID = #Last_Invoice_ID.LastInsertID#
                  </cfquery>
              </cfif>

              <cfquery  datasource="#Application.DataSrc#" name="Update_Flags">
                UPDATE #Request.prefix_db_agency#.pSchedules SET 
                    EClaimed = '1'
                    ,Invoice_ID = '#Last_Invoice_ID.LastInsertID#'
                    ,Export_Date = #CreateODBCDateTime(Now())#
                WHERE Schedule_ID IN (#thelist#)
                AND Assmt_ID = '#Assmt_ID#'
                ANd Status = 0
              </cfquery>
              <cfset invoiceTotal = 0/>
              <cfset Request.Invoice_ContractTotal =  0  />
              <cfif get_invoice_ID eq ''>
                 <cfset get_invoice_ID = #Last_Invoice_ID.LastInsertID# />
              <cfelse>
                 <cfset get_invoice_ID = get_invoice_ID&','&#Last_Invoice_ID.LastInsertID# />
             </cfif>
        </cfoutput>

        <cfquery datasource="#Application.DataSrc#" name="Get_claim">
            SELECT * FROM #Request.prefix_db_agency#.Invoices  where Invoice_ID in ('#get_invoice_ID#')
        </cfquery> 
 
        <cfif url.turbo eq 1 >
            <cfset strFilePath = "/var/www/claimfiles/" >
            <cfset CONTRO = #DateFormat(Now(),"YYMMDDHHMMSS")#>
            <cfset CONTROL = #session.agencyid#&'-'&#CONTRO# />
            <cfset filename=  #CONTROL#&'.837' />
            <cffile action="write" file="#strFilePath##filename#" output="#finaldata#" >
             <cfset objFTPProperties = {
                                Server = "sftp-prod.accessrcm.abilitynetwork.com",
                                Port = "22",
                                Username = "hcbserv",
                                Password = "mbB4rQfnJI",
                                Secure = true
                                } />
            <cfftp action="open" connection="objConnection" attributeCollection="#objFTPProperties#" >
            <cfftp action="putfile" localfile="#strFilePath##filename#" remotefile="/incoming/claims/#filename#" connection="objConnection" >
            <cfftp action="close" connection="objConnection" > 
            <div class="portlet box blue">
                <div class="portlet-title">
                  <div class="caption">
                     <i class="fa fa-report"></i>UB04 Visits
                  </div>
                  <div class="tools"><a href="" class="collapse"></a></div>
                  <div class="actions">
                      <input class="btn btn-default" type="button" title="Back" onclick="javacsript:history.back();" id="back" value="Back" name="back">
                  </div>
                </div>
                <div class="portlet-body">
                    <p> Automatically your UB04 visits have been  sent to Inovalon</p>
               </div>
            </div>
            <cffile action="delete" file="#strFilePath#/#filename#"> 
        <cfelse>
            <cffile action="write" file="#application.datapath##user##application.datatype#" output="#finaldata#">
            <div class="portlet box blue">
                <div class="portlet-title">
                  <div class="caption">
                     <i class="fa fa-report"></i>UB04 Visits
                  </div>
                  <div class="tools"><a href="" class="collapse"></a></div>
                  <div class="actions">
                      <input class="btn btn-default" type="button" title="Back" onclick="javacsript:history.back();" id="back" value="Back" name="back">
                  </div>
                </div>
                <div class="portlet-body">
                    <p> Your UB04 visits have been prepared for export.  Click on the hyperlink <br /> below and click Save Target As... </p>
                    <p><cfoutput>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#application.webdatapath##user##application.datatype#"  target='export'>Save as UB04_claim.dat</a></cfoutput> </p>
               </div>
            </div>
        </cfif>
        <cfquery  name="dblist" dbtype="query">
          <cfsetting requesttimeout="30">
          select distinct(Schedule_ID) from GetData
      </cfquery>
      <cfset thelist=#ValueList(dblist.Schedule_ID,",")#>
        <cftry>
            <cfquery  datasource="#Application.DataSrc#" name="Update_Flags">
                UPDATE #Request.prefix_db_agency#.Supply_Sched SET Ticket = 9 WHERE Ticket = 1 AND Schedule_ID IN (#thelist#)
            </cfquery>
            <cfcatch type='any'>Update Flags Error<br/></cfcatch>
        </cftry>
        <cftry>
            <cfif CGI.REMOTE_ADDR NEQ '121.200.49.65'>
              <cfquery  datasource="#Application.DataSrc#" name="Update_Flags">
                DELETE FROM #Request.prefix_db_lookup#.Claim 
                WHERE  Agency_Id = '#session.AgencyId#' 
              </cfquery>
            </cfif>
          <cfcatch type='any'>DELETE Claims Error<br/></cfcatch>
        </cftry>

    
      <cfif thelist neq ''>
          <cfquery  datasource="#Application.DataSrc#" name="Update_Flags">
             <cfsetting requesttimeout="30">
              UPDATE #Request.prefix_db_agency#.pSchedules SET 
              EClaimed = 1, 
              Nonbillable = 0,
              Export_Date = #CreateODBCDateTime(Now())#
              WHERE Schedule_ID IN (#thelist#)
              AND Status = 0
          </cfquery>
      </cfif>
  
     <cfelse>
      <p>No UB04 Claim visits </p>
      <cfinput type="button" name="back" id="back" title="Back" value="Back" onClick="javacsript:history.back();" />
    </cfif>
  </cfif>
</cfform>