<cfparam name="url.report_type" default="">
<cfquery  name="DELETE_LUPA"  datasource="#Application.DataSrc#">
      DELETE FROM #Request.prefix_db_agency#.LUPA 
</cfquery>
<cfparam name="form.monthYear" default="">
<!--- After DB migration (all agencies): open /migrate_LUPA_Scheduled_Visits_all_agencies.cfm once while logged in. --->
<cfquery  name="GetList"  datasource="#Application.DataSrc#">
    INSERT INTO #Request.prefix_db_agency#.LUPA (  EP_or_FFS,Schedule_ID, Patient_ID, Assmt_ID, PtPayer_ID, SOC_Date, 
      First_or_second_Period, Start_Date, End_Date, Total_Periods, Days_in_Month, HHRG, Total_Visits,
       Therapy_Visits, Payment, Daily_Rate, CM_Gross, CM_Sequester, CM_VBP, LUPA, CM_LUPA, CM_Outlier,
        Total_CM, Daily_Adjust, CM_Net, Scheduled_Visits, Actual_Reimbursement_Amount, Payments,discharged_date, GL_Code, record_timestamp)
        SELECT pPayer.Output,pSchedules.Schedule_ID, pPatients.Patient_ID,pAssessments.Assmt_ID,pPtPayer.PtPayer_ID,  pAdmit.M0030_START_CARE_DT,

    CASE WHEN pSchedules.Visit_Date IS NULL THEN
        CASE 
            WHEN DATEDIFF(pAssessments.F177,pAssessments.F178)  < 30 THEN "FIRST FINAL"
            WHEN DATEDIFF(pAssessments.F177,pAssessments.F178)  >= 30 THEN "SECOND FINAL"
        ELSE "0"
        END
    ELSE
        CASE 
            WHEN DATEDIFF(pSchedules.Visit_Date,pAssessments.F177)  < 30 THEN "FIRST FINAL"
            WHEN DATEDIFF(pSchedules.Visit_Date,pAssessments.F177)  >= 30 THEN "SECOND FINAL" 
        ELSE "0"
        END
    END  as First_or_second_Period,

    CASE WHEN pSchedules.Visit_Date IS NULL THEN
        CASE
            WHEN DATEDIFF(pAssessments.F177,pAssessments.F178) < 30 THEN pAssessments.F178
            WHEN DATEDIFF(pAssessments.F177,pAssessments.F178) >= 30 THEN  DATE_ADD(pAssessments.F178, INTERVAL 30 DAY)
            ELSE  pAssessments.F178
        END
    ELSE
        CASE
            WHEN DATEDIFF(pSchedules.Visit_Date,pAssessments.F177) < 30 THEN pAssessments.F177
            WHEN DATEDIFF(pSchedules.Visit_Date,pAssessments.F177) >= 30 THEN  DATE_ADD(pAssessments.F177, INTERVAL 30 DAY)
        ELSE  pAssessments.F177
        END
    END  as start_date,

    CASE WHEN pSchedules.Visit_Date IS NULL THEN
        CASE
            WHEN DATEDIFF(pAssessments.F177,pAssessments.F178) < 30 THEN DATE_ADD(pAssessments.F178, INTERVAL 29 DAY)
            WHEN DATEDIFF(pAssessments.F177,pAssessments.F178) >= 30 THEN  DATE_ADD(pAssessments.F178, INTERVAL 59 DAY) 
        ELSE  pAssessments.F178
        END 
    ELSE
        CASE
            WHEN DATEDIFF(pSchedules.Visit_Date,pAssessments.F177) < 30 THEN DATE_ADD(pAssessments.F177, INTERVAL 29 DAY)
            WHEN DATEDIFF(pSchedules.Visit_Date,pAssessments.F177) >= 30 THEN  DATE_ADD(pAssessments.F177, INTERVAL 59 DAY) 
        ELSE  pAssessments.F178
        END
    END  as end_date,
    ROUND((DATEDIFF(NOW(),pAdmit.M0030_START_CARE_DT)/30),0) AS Total_Periods,
    0 AS Days_in_Month, 0 AS HHRG, 0 AS Total_Visits,
    0 AS Therapy_Visits, 0 AS Payment, 0 AS Daily_Rate, 0 AS CM_Gross, 0 AS CM_Sequester, 
    0 AS CM_VBP, 0 AS  LUPA, 0 AS CM_LUPA, 
    0 AS CM_Outlier, 0 AS Total_CM, 0 AS  Daily_Adjust, 0 AS  CM_Net,
    0 AS Scheduled_Visits,

    IFNULL((SELECT SUM(Payments.Amount) FROM #Request.prefix_db_agency#.Payments
        WHERE Payments.Invoice_ID = Invoices.Invoice_ID
        AND Payments.PatientPayer_ID =  pPayer.Pay_Id  AND Invoices.Deleted = 0
        AND Payments.Deleted = 0 ),0.00) AS Actual_Reimbursement_Amount,
    IFNULL((SELECT SUM(Payments.writeoffamount) FROM #Request.prefix_db_agency#.Payments
        WHERE Payments.Invoice_ID = Invoices.Invoice_ID
        AND Payments.PatientPayer_ID =  pPayer.Pay_Id  AND Invoices.Deleted = 0
        AND Payments.Deleted = 0 ),0.00) AS Payments, 

       CASE 
    WHEN (
        SELECT F176
        FROM #Request.prefix_db_agency#.pAssessments pass
        WHERE (pass.F26 LIKE '9%' OR pass.F26 LIKE '7%' OR pass.F26 LIKE '8%')
          AND pass.Status = 0  AND pass.Admit_ID =  pAdmit.Admit_ID
          AND pass.Patient_ID = pPatients.Patient_ID 
          AND MONTH(pass.F176) <= MONTH('#form.monthYear#')
          AND YEAR(pass.F176) <= YEAR('#form.monthYear#')
        LIMIT 1
        ) IS NOT NULL THEN (
            SELECT F176
            FROM #Request.prefix_db_agency#.pAssessments pass
            WHERE (pass.F26 LIKE '9%' OR pass.F26 LIKE '7%' OR pass.F26 LIKE '8%')
              AND pass.Status = 0 AND pass.Admit_ID =  pAdmit.Admit_ID
              AND pass.Patient_ID = pPatients.Patient_ID 
              AND MONTH(pass.F176) <= MONTH('#form.monthYear#')
              AND YEAR(pass.F176) <= YEAR('#form.monthYear#')
            LIMIT 1
        )
    ELSE  '2050-01-01' 
    END AS discharged_date,


     0 AS  GL_Code, now()                 
    FROM #Request.prefix_db_agency#.pAssessments
    JOIN #Request.prefix_db_agency#.pAdmit ON pAdmit.Admit_ID = pAssessments.Admit_ID AND pAdmit.status = 0    
    LEFT OUTER JOIN #Request.prefix_db_agency#.pSchedules ON pSchedules.Assmt_ID = pAssessments.Assmt_ID
    LEFT OUTER JOIN #Request.prefix_db_agency#.Invoices ON  (pSchedules.Invoice_ID = Invoices.Invoice_ID OR pSchedules.NOA = Invoices.Invoice_ID) 
        AND  Invoices.Deleted = 0
    JOIN #Request.prefix_db_agency#.pPatients ON pPatients.Patient_ID = pSchedules.Patient_ID
    JOIN #Request.prefix_db_agency#.pPtPayer  ON pSchedules.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
        AND pPayer.Output = 'Medicare'
    WHERE  pAssessments.status = 0
        AND pPatients.Status  IN (0,1,4)
        AND pSchedules.Assmt_ID != 0
        AND pSchedules.status= 0
        AND pSchedules.Emp_ID != 0
        AND pSchedules.Missed = '0'
        AND 
        <cfif form.monthYear NEQ ''>
            CASE 
            WHEN pSchedules.Visit_Date IS NOT NULL THEN
                MONTH(pSchedules.Visit_Date) = MONTH('#form.monthYear#')

            ELSE
                MONTH(pAssessments.F177) = MONTH('#form.monthYear#')
            END
            AND  CASE 
            WHEN pSchedules.Visit_Date IS NOT NULL THEN
                YEAR(pSchedules.Visit_Date) = YEAR('#form.monthYear#')
                
            ELSE
                YEAR(pAssessments.F177) = YEAR('#form.monthYear#')
            END
        <cfelse>
            AND  MONTH(pSchedules.Visit_Date) = MONTH(now())
        </cfif>
     <!---  AND  pAdmit.Admit_ID NOT IN (SELECT  pAssessments.Admit_ID FROM #Request.prefix_db_agency#.pAssessments  
            WHERE  (pAssessments.F26 like '9%' OR pAssessments.F26 like '7%' OR pAssessments.F26 like '8%')
             AND  pAssessments.Status =0 AND MONTH(pAssessments.F176) <= MONTH('#form.monthYear#')
              AND YEAR(pAssessments.F176) = YEAR('#form.monthYear#')) --->
    GROUP BY First_or_second_Period,pAssessments.Patient_ID 
    ORDER BY pPatients.Pt_Last ASC, pPatients.Pt_First ASC
</cfquery>

<cfset day = day('#form.monthYear#')  />
<cfset month = month('#form.monthYear#')  />
<cfset year = year('#form.monthYear#')  />  
<cfset lastday = daysInMonth('#form.monthYear#') /> 
<!--- <cfif lastday gt 30 >
<cfset lastday  = 30 />
</cfif> --->
<cfset firststart_date =  CreateDate(year,month,day) />
<cfset enddate =  CreateDate(year,month,lastday) />


<cfquery  name="getLUPA"  datasource="#Application.DataSrc#">
        SELECT LUPA.*,pAssessments.F297,pAssessments.F298,pAssessments.F299,pAssessments.F300,
        pAssessments.Admit_ID,pAssessments.F177 AS Cert_Start,pAssessments.F178 AS Cert_End,

        IFNULL(CASE WHEN First_or_second_Period = "FIRST FINAL" THEN
           (SELECT LUPA FROM #Request.prefix_db_lookup#.VBP_Visits
            WHERE VBP_Visits.HIPPS_Code = pAssessments.F300
             AND VBP_Visits.Rank = '2') 
        ELSE 
            (SELECT LUPA FROM #Request.prefix_db_lookup#.VBP_Visits
          WHERE VBP_Visits.HIPPS_Code = pAssessments.F297 
             AND VBP_Visits.Rank = '2')
        END,0)  AS LUPA_Threshold

         FROM #Request.prefix_db_agency#.LUPA
        JOIN #Request.prefix_db_agency#.pAssessments ON pAssessments.Assmt_ID = LUPA.Assmt_ID
        WHERE pAssessments.status = 0
  
        <!--- AND (discharged_date IS NULL 
        OR (MONTH(pAssessments.F177) <= MONTH(LUPA.discharged_date)
        AND YEAR(pAssessments.F177) <= YEAR(LUPA.discharged_date))
        ) --->


        AND LUPA.Start_Date IS NOT NULL

</cfquery>
<cfquery  name="getlastday"  datasource="#Application.DataSrc#">
      SELECT LAST_DAY(Now()) AS lastday
</cfquery>
<cfset last_dayofmont = getlastday.lastday />
<cfset currentmont = month(getlastday.lastday) />
<cfset searchmonth = month('#form.monthYear#')  />
<cfloop query="getLUPA">
    <cfquery  name="getnextmonthvisits"  datasource="#Application.DataSrc#">
        SELECT pSchedules.*
         FROM #Request.prefix_db_agency#.pSchedules
        WHERE  pSchedules.Assmt_ID = #Assmt_ID#
        AND pSchedules.status = 0
        AND Visit_Date >  '#DateFormat(enddate,"yyyy-mm-dd")#'
    </cfquery>

    <cfset start_month = month(#Start_Date#)  /> 
    <cfset end_month = month(#End_Date#)  />
    <cfset CertEnd_month = month(#Cert_End#)  />

    <cfif First_or_second_Period EQ 'FIRST FINAL'>
     <cfset episodemonthend =  DateAdd("d", 29, Cert_Start)  />
     <cfset Episode_Visit_Start = DateFormat(Cert_Start, "yyyy-mm-dd") />
     <cfset Episode_Visit_End = DateFormat(DateAdd("d", 29, Cert_Start), "yyyy-mm-dd") />
    <cfelse>
       <cfset episodemonthend =  DateAdd("d", 59, Cert_Start)  />
       <cfset Episode_Visit_Start = DateFormat(DateAdd("d", 30, Cert_Start), "yyyy-mm-dd") />
       <cfset Episode_Visit_End = DateFormat(DateAdd("d", 60, Cert_Start), "yyyy-mm-dd") />
    </cfif>
    <cfset episodemonth = month(#episodemonthend#)  />

    <cfset  Original_Enddate  = #End_Date# />
    <cfset  Original_startdate  = #Start_Date# />
    <cfif start_month EQ month >
         <cfset Request.Start_Date = #DateFormat(Start_Date,"yyyy-mm-dd")# />
    <cfelse>
          <cfset Request.Start_Date = #DateFormat(firststart_date,"yyyy-mm-dd")# />
    </cfif>
    <cfif end_month EQ month >
         <cfset Request.End_Date = #DateFormat(End_Date,"yyyy-mm-dd")# />
    <cfelse>
         <cfset Request.End_Date = #DateFormat(enddate,"yyyy-mm-dd")# />
    </cfif> 
    <cfset Request.End_Date = #DateFormat(End_Date,"yyyy-mm-dd")# />

    <cfquery  name="getdischarge"  datasource="#Application.DataSrc#">
        SELECT *  FROM #Request.prefix_db_agency#.pAssessments ass
        WHERE Admit_ID = #Admit_ID#
        AND Patient_ID = #Patient_ID#
        AND status = 0  
        AND left(F26,1) IN ('9','8','7')
    </cfquery>

    <cfset Request.EndDate = Request.End_Date />
    <cfset End_of_Searchingmonth = #DateFormat(enddate,"yyyy-mm-dd")# />
    <cfif  month EQ #month(Request.Start_Date)# AND  month EQ #month(Request.End_Date)#>
         <cfset Request.Num_days =  DateDiff("d",Request.Start_Date, Request.EndDate) /> <cfset num_condition = 0 > 
    <cfelse>
        <cfset Request.Num_days =  DateDiff("d",Request.Start_Date, End_of_Searchingmonth) /> <cfset num_condition = 1 > 
    </cfif>
    <cfif  getdischarge.recordcount GT 0 >      
        <cfset Request.Total_Periods  = getLUPA.Total_Periods />
        <cfset dischargemonth = month('#getdischarge.F176#')  />
        <cfif month EQ dischargemonth>
          <cfset Request.TotalPeriods =  DateDiff("d",SOC_Date,getdischarge.F176) />
          <cfset Request.Total_Periods = (Request.TotalPeriods/30) />
            <cfif Request.End_Date  GT getdischarge.F176  >             
                 <cfset Request.Num_days =  DateDiff("d",Request.Start_Date,getdischarge.F176) /> <cfset num_condition = 2 >
             <cfelse>             
                 <cfset Request.Num_days =  DateDiff("d",Request.Start_Date,Request.End_Date) /><cfset num_condition = 3 >
            </cfif>
          <cfif Request.End_Date GT getdischarge.F176 <!--- AND First_or_second_Period EQ 'SECOND FINAL' --->>
              <cfset Request.End_Date = #DateFormat( getdischarge.F176,"yyyy-mm-dd")# />
          </cfif>  
            
        </cfif>
         <cfif (Request.End_Date LT getdischarge.F176 OR First_or_second_Period EQ 'FIRST FINAL') AND  month EQ #month(Request.EndDate)#>
            <cfset Request.Num_days =  DateDiff("d",Request.Start_Date,Request.End_Date) /><cfset num_condition = 4 >
         </cfif>
    <cfelseif end_month EQ month >
        <cfset Request.Num_days =  DateDiff("d",Request.Start_Date, Request.End_Date) /> <cfset num_condition = 5 >
    </cfif>
    <cfif Request.Start_Date EQ End_of_Searchingmonth OR  Request.Start_Date EQ Request.End_Date>
         <cfset Request.Num_days = 1 >
         <cfset num_condition = 6 >
    </cfif>

     <cfif Patient_ID EQ '1583'  ><br>
         Start_Date -   <cfdump var='#Request.Start_Date#'> <br>
         End_Date -   <cfdump var='#Request.End_Date#'> <br>
         Num_days -   <cfdump var='#Request.Num_days#'> -<br>
         dischargemonth -   <cfdump var='#dischargemonth#'> <br>
         month -   <cfdump var='#month#'> <br>
         enddate -   <cfdump var='#enddate#'> <br>
        End_of_Searchingmonth -   <cfdump var='#End_of_Searchingmonth#'> <br>
        num_condition -   <cfdump var='#num_condition#'> <br>    
    </cfif>
    <!--- CALCULATIONS OF DAYS IN MONTH --->
        <cfset billstartdate_month = month(Request.Start_Date) />
        <cfset billstartdate_year = year(Request.Start_Date) />
        <cfset billenddate_month = month(Request.End_Date) />
        <cfset billenddate_year = year(Request.End_Date) />
        
        <cfif billstartdate_month EQ currentmont AND billenddate_month EQ currentmont>
          <cfset Request.Days_in_Month =  DateDiff("d", Request.End_Date, Request.Start_Date) />
        <cfelseif billstartdate_month NEQ currentmont AND billenddate_month NEQ currentmont >
          <cfset Request.Days_in_Month =  DateDiff("d",Request.Start_Date,Request.End_Date) />
          <cfset Request.Days_in_Month = Request.Days_in_Month + 1 />
        <cfelseif billstartdate_month EQ currentmont>
           <cfset Request.Days_in_Month =  DateDiff("d", Request.Start_Date,last_dayofmont) />
        <cfelseif billenddate_month EQ currentmont>
            <cfset firsdayofmonth = billenddate_year &"-"& billenddate_month & "-"& '01'  />
            <cfset Request.Days_in_Month =  DateDiff("d",firsdayofmonth,Request.End_Date) />
        <cfelse>
            <cfset Request.Days_in_Month =  DateDiff("d", Request.Start_Date,last_dayofmont) />
        </cfif>
    <!--- CALCULATIONS OF DAYS IN MONTH ---> 

      <!--- CALCULATIONS OF TOTAL DAYS 
      <cfset Startdate_totaldays = daysInMonth(Request.Start_Date)>
      <cfset Endtdate_totaldays  = daysInMonth(Request.End_Date)>
      <cfset Startdate_day = day(Request.Start_Date)> 
      <cfset Enddate_day = day(Request.End_Date)> 

      <cfif billstartdate_month EQ searchmonth >
        <cfset Request.Num_days = Startdate_totaldays - Startdate_day />
      <cfelse>
        <cfset Request.Num_days = Enddate_day - 1 />
      </cfif>
       <cfset Request.Num_days = Enddate_day - Startdate_day/>
      CALCULATIONS OF TOTAL DAYS --->

       <cfset  start_month = month(#Start_Date#)  /> 
       <cfset  end_month = month(#End_Date#)  /> 

            
     


       <cfif First_or_second_Period EQ 'FIRST FINAL'>
          <cfset Request.HHRG  = F300 />
          <cfset Request.Payment  = F299 />
       <cfelse>
          <cfset Request.HHRG  = F297 />
          <cfset Request.Payment  = F298 />
       </cfif>
       <cfset Request.Payment =  #LsNumberFormat(Request.Payment, "0.00")#  />

       <cfset Request.Daily_Rate= Request.Payment/30 />
        <cfset Request.Daily_Rate =  #LsNumberFormat(Request.Daily_Rate, "0.00")#  /> 

      <!--- <cfset Request.CM_Gross  = (Request.Payment/30)* Request.Days_in_Month /> --->
       <cfset Request.CM_Gross  = Request.Daily_Rate * Request.Num_days />
       <cfset Request.CM_Gross =  #LsNumberFormat(Request.CM_Gross, "0.00")#  />

       <cfset Request.CM_Sequester  = ((Request.CM_Gross)*2/100) />
       <cfset Request.CM_Sequester =  #LsNumberFormat(Request.CM_Sequester, "0.00")#  />

       <cfif Request.Num_days NEQ '0' AND Request.CM_Sequester GT 0 >
           <cfset Request.Daily_Adjust =  Request.CM_Sequester/ Request.Num_days /> 
           <cfset Request.Daily_Adjust =  #LsNumberFormat(Request.Daily_Adjust, "0.00")#  />
       <cfelse>
            <cfset Request.Daily_Adjust =  "0.00" /> 
       </cfif>
       <cfset Request.Daily_Rate =  #NumberFormat(Request.Daily_Rate, "0.00")#  />
       <cfset Request.Total_CM = Request.Daily_Rate - Request.Daily_Adjust />  
       <cfset Request.Total_CM =  #LsNumberFormat(Request.Total_CM, "0.00")#  />
       <cfset Request.CM_Net  =  Request.Total_CM * Request.Num_days />  
       <cfset Request.CM_Net =  #LsNumberFormat(Request.CM_Net, "0.00")#  />

       <cfquery  name="gettotalvisits"  datasource="#Application.DataSrc#">
          SELECT 
            (SELECT pAss.F25 FROM #Request.prefix_db_agency#.pAssessments pAss
                  WHERE pAss.Patient_ID =  pAssessments.Patient_ID
                  AND pAss.Admit_ID = pAssessments.Admit_ID
                  AND pAss.F26 =  ( CASE 
                                    WHEN (pSchedules.Visit_Type = "1 - SOC - SN" )  THEN '1 - Start of care - further visits planned'
                                    WHEN (pSchedules.Visit_Type = "1 - SOC - PT" ) THEN '1 - Start of care - further visits planned - Physical Therapy'
                                    WHEN (pSchedules.Visit_Type = "1 - SOC - OT" ) THEN '1 - Start of care - further visits planned - Occupational Therapy'
                                    WHEN (pSchedules.Visit_Type = "3 - ROC - SN"  || pSchedules.Visit_Type = "3 - ROC - PT") THEN '3 - Resumption of care (after inpatient stay)'
                                    WHEN (pSchedules.Visit_Type = "PT Eval" ) THEN 'PT Adult Evaluation'
                                    WHEN (pSchedules.Visit_Type = "OT Eval" ) THEN 'OT Adult Evaluation'
                                    WHEN (pSchedules.Visit_Type = "ST Eval" ) THEN 'ST Adult Evaluation'
                                    WHEN (pSchedules.Visit_Type = "SN Eval" ) THEN 'SN Adult Evaluation'
                                    WHEN (pSchedules.Visit_Type = "MSW Eval" ) THEN 'MSW Evaluation'
                                    WHEN (pSchedules.Visit_Type = "PT FU Eval" ) THEN 'PT Followup'
                                WHEN (pSchedules.Visit_Type = "OT FU Eval" ) THEN 'OT Followup'
                                WHEN (pSchedules.Visit_Type = "ST FU Eval" ) THEN 'ST Followup'
                                WHEN (pSchedules.Visit_Type = "MSW FU Eval" ) THEN 'MSW Followup'
                                WHEN (pSchedules.Visit_Type = "SN FU Eval" ) THEN 'SN Followup'
                                WHEN (pSchedules.Visit_Type = "Hospice Comprehensive" ) THEN 'Hospice Comprehensive'
                                WHEN (pSchedules.Visit_Type = "SN Hospice" ) THEN 'SN Hospice'
                                WHEN (pSchedules.Visit_Type = "Chaplain Comprehensive Evaluation" ) THEN 'Chaplain Comprehensive Evaluation'
                                WHEN (pSchedules.Visit_Type = "Hospice Discharge" ) THEN 'Hospice Discharge'
                                    WHEN (pSchedules.Visit_Type = "4 - Recertification" ) THEN '4 - Recertification (follow-up) reassessment'
                                    WHEN (pSchedules.Visit_Type = "4 - Recertification PT" ) THEN '4 - Recertification (follow-up) reassessment - PT'
                                    WHEN (pSchedules.Visit_Type = "4 - Recertification OT" ) THEN '4 - Recertification (follow-up) reassessment - OT'
                                    WHEN (pSchedules.Visit_Type = "5 - Other follow-up" ) THEN '5 - Other follow-up'
                                    WHEN (pSchedules.Visit_Type = "6 - Transfer no discharge" ) THEN '6 - Transferred to an inpatient facility - patient not discharged from agency'
                                    WHEN (pSchedules.Visit_Type = "7 - Transfer discharged" ) THEN '7 - Transferred to an inpatient facility - patient discharged from agency'
                                    WHEN (pSchedules.Visit_Type = "8 - Death" ) THEN '8 - Death at home'
                                    WHEN (pSchedules.Visit_Type = "9 - Discharge from agency" ) THEN '9 - Discharge from agency'
                            ELSE 0
                            END )
                  AND pAss.Status = 0  AND pSchedules.Visit_Date = pAss.F176
                  ORDER BY F25 ASC LIMIT 0,1) AS assessments_completed,
                pSchedules.*
           FROM #Request.prefix_db_agency#.pSchedules
           JOIN #Request.prefix_db_agency#.pAssessments ON pAssessments.Assmt_ID = pSchedules.Assmt_ID AND pAssessments.Status =0 
          WHERE pAssessments.Patient_ID = #Patient_ID#
          AND pAssessments.Admit_ID = '#Admit_ID#'
          AND pAssessments.Assmt_ID = #Assmt_ID#
          AND pAssessments.Status = 0
          AND pSchedules.Status = 0
          AND pSchedules.Visit_Date >= '#Episode_Visit_Start#'
          AND pSchedules.Visit_Date <= '#Episode_Visit_End#'
        </cfquery>
        <!--- Scheduled_Visits: same 30-day episode as LUPA threshold (F177); not full cert period --->
        <cfset _today = CreateODBCDate(DateFormat(Now(), 'yyyy-mm-dd')) />
        <cfquery name="get_scheduled_episode" dbtype="query">
          SELECT * FROM gettotalvisits
          WHERE Missed = 0
          AND Visit_Date >= '#Episode_Visit_Start#'
          AND Visit_Date <= '#Episode_Visit_End#'
          AND (
            Visit_Date > #_today#
            OR (
              (
                (Visit_Type IS NOT NULL AND Visit_Type <> '')
                OR Initial_visit = 1
              )
              AND (assessments_completed IS NULL OR assessments_completed <> 1)
            )
            OR (
              (Visit_Type IS NULL OR Visit_Type = '')
              AND (Initial_visit IS NULL OR Initial_visit <> 1)
              AND Visit_Date <= #_today#
              AND (pgnotesdraft IS NULL OR pgnotesdraft <> 2)
            )
          )
        </cfquery>
        <cfset Request.Scheduled_Visits = get_scheduled_episode.recordcount />
        <cfquery  name="get_totalcompleted"  dbtype="query">
          SELECT  * FROM  gettotalvisits
          WHERE   Missed = 0 
          AND (assessments_completed = 1 OR (pgnotesdraft = 2 AND Followup_visit !=1))
        </cfquery>
        <cfset Request.Total_Visits  = get_totalcompleted.recordcount />
        <cfquery  name="getTherapyvisits"  dbtype="query">
          SELECT  * FROM  gettotalvisits
          WHERE skill IN ('PT','OT','ST','MSW','HHA')
          AND (assessments_completed = 1 OR (pgnotesdraft = 2 AND Followup_visit !=1))
        </cfquery>

        <!--- <cfquery  name="getcompleted"  datasource="#Application.DataSrc#">
              SELECT  * FROM #Request.prefix_db_agency#.pSchedules
              WHERE Assmt_ID = #Assmt_ID#
              AND Status = 0
              AND Visit_Date >= '#Request.Start_Date#' AND  Visit_Date <= '#End_Date#'
              AND Missed = 0
              <!--- AND (Invoice_ID !=0 OR NOA !=0) --->
        </cfquery>--->
            <cfquery  name="getallcompleted"  datasource="#Application.DataSrc#">
              SELECT  
               (SELECT pAss.F25 FROM #Request.prefix_db_agency#.pAssessments pAss
                  WHERE pAss.Patient_ID =  pAssessments.Patient_ID
                  AND pAss.Admit_ID = pAssessments.Admit_ID
                  AND pAss.F26 =  ( CASE 
                                    WHEN (pSchedules.Visit_Type = "1 - SOC - SN" )  THEN '1 - Start of care - further visits planned'
                                    WHEN (pSchedules.Visit_Type = "1 - SOC - PT" ) THEN '1 - Start of care - further visits planned - Physical Therapy'
                                    WHEN (pSchedules.Visit_Type = "1 - SOC - OT" ) THEN '1 - Start of care - further visits planned - Occupational Therapy'
                                    WHEN (pSchedules.Visit_Type = "3 - ROC - SN"  || pSchedules.Visit_Type = "3 - ROC - PT") THEN '3 - Resumption of care (after inpatient stay)'
                                    WHEN (pSchedules.Visit_Type = "PT Eval" ) THEN 'PT Adult Evaluation'
                                    WHEN (pSchedules.Visit_Type = "OT Eval" ) THEN 'OT Adult Evaluation'
                                    WHEN (pSchedules.Visit_Type = "ST Eval" ) THEN 'ST Adult Evaluation'
                                    WHEN (pSchedules.Visit_Type = "SN Eval" ) THEN 'SN Adult Evaluation'
                                    WHEN (pSchedules.Visit_Type = "MSW Eval" ) THEN 'MSW Evaluation'
                                    WHEN (pSchedules.Visit_Type = "PT FU Eval" ) THEN 'PT Followup'
                                WHEN (pSchedules.Visit_Type = "OT FU Eval" ) THEN 'OT Followup'
                                WHEN (pSchedules.Visit_Type = "ST FU Eval" ) THEN 'ST Followup'
                                WHEN (pSchedules.Visit_Type = "MSW FU Eval" ) THEN 'MSW Followup'
                                WHEN (pSchedules.Visit_Type = "SN FU Eval" ) THEN 'SN Followup'
                                WHEN (pSchedules.Visit_Type = "Hospice Comprehensive" ) THEN 'Hospice Comprehensive'
                                WHEN (pSchedules.Visit_Type = "SN Hospice" ) THEN 'SN Hospice'
                                WHEN (pSchedules.Visit_Type = "Chaplain Comprehensive Evaluation" ) THEN 'Chaplain Comprehensive Evaluation'
                                WHEN (pSchedules.Visit_Type = "Hospice Discharge" ) THEN 'Hospice Discharge'
                                    WHEN (pSchedules.Visit_Type = "4 - Recertification" ) THEN '4 - Recertification (follow-up) reassessment'
                                    WHEN (pSchedules.Visit_Type = "4 - Recertification PT" ) THEN '4 - Recertification (follow-up) reassessment - PT'
                                    WHEN (pSchedules.Visit_Type = "4 - Recertification OT" ) THEN '4 - Recertification (follow-up) reassessment - OT'
                                    WHEN (pSchedules.Visit_Type = "5 - Other follow-up" ) THEN '5 - Other follow-up'
                                    WHEN (pSchedules.Visit_Type = "6 - Transfer no discharge" ) THEN '6 - Transferred to an inpatient facility - patient not discharged from agency'
                                    WHEN (pSchedules.Visit_Type = "7 - Transfer discharged" ) THEN '7 - Transferred to an inpatient facility - patient discharged from agency'
                                    WHEN (pSchedules.Visit_Type = "8 - Death" ) THEN '8 - Death at home'
                                    WHEN (pSchedules.Visit_Type = "9 - Discharge from agency" ) THEN '9 - Discharge from agency'
                            ELSE 0
                            END )
                  AND pAss.Status = 0  AND pSchedules.Visit_Date = pAss.F176
                  ORDER BY F25 ASC LIMIT 0,1) AS assessments_completed, pSchedules.*
               FROM #Request.prefix_db_agency#.pSchedules
               JOIN #Request.prefix_db_agency#.pAssessments ON pAssessments.Assmt_ID = pSchedules.Assmt_ID AND pAssessments.Status =0 
              WHERE pAssessments.Patient_ID = #Patient_ID#
              AND pAssessments.Assmt_ID = #Assmt_ID#
              AND pAssessments.Status = 0
              AND pSchedules.Status = 0
              AND Visit_Date >= '#Episode_Visit_Start#' AND Visit_Date <= '#Episode_Visit_End#'
              AND Missed = 0
              <!--- AND (Invoice_ID !=0 OR NOA !=0) --->
            </cfquery>
            <cfquery  name="getcompleted"  dbtype="query">
              SELECT  * FROM  getallcompleted
              WHERE   Missed = 0 
              AND (assessments_completed = 1 OR (pgnotesdraft = 2 AND Followup_visit !=1))
            </cfquery>
        <cfset Request.completed_visits  = #getcompleted.recordcount# />
         <cfif Patient_ID EQ '1583'>
            <cfdump var="#getcompleted#">  
         </cfif>


        <cfif url.report_type EQ 'LUPA'>
            <cfset SN_cost  = "176.96"  />
            <cfset PT_cost  = "193.42"  />
            <cfset OT_cost  = "194.74"  />
            <cfset ST_cost  = "210.25"  />
            <cfset MSW_cost = "283.64"  />
            <cfset HHA_cost = "80.12"  />
        <cfelse>
            <cfset SN_cost  = "163.29"  />
            <cfset PT_cost  = "178.47"  />
            <cfset OT_cost  = "179.70"  />
            <cfset ST_cost  = "194.00"  />
            <cfset MSW_cost = "73.93"  />
            <cfset HHA_cost = "261.72"  />
        </cfif>




        <cfset Request.Estimated_LUPA = "0.00" />
        <cfloop list="SN,PT,OT,ST,MSW,HHA" index="skillitem">
            <cfquery  name="getskill"  dbtype="query">
              SELECT  * FROM  gettotalvisits
              WHERE skill IN ( '#skillitem#')
              AND Missed = 0
              AND (assessments_completed = 1 OR (pgnotesdraft = 2 AND Followup_visit !=1))
               <!--- AND (Invoice_ID !=0 OR NOA !=0) --->
            </cfquery>
            <cfset variables[skillitem & "_Rate"]    = "0.00" /> 
            <cfif getskill.recordcount gt 0 >
               <cfset variables[skillitem & "_Rate"] = ( variables[skillitem & "_cost"]  * getskill.recordcount) />
            </cfif>
            <cfset Request.skillitempay =  #LsNumberFormat(variables[skillitem & "_Rate"], "0.00")#  /> 
            <cfset Request.Estimated_LUPA = Request.Estimated_LUPA + Request.skillitempay />
            <cfset Request.Estimated_LUPA  = #LsNumberFormat(Request.Estimated_LUPA, "0.00")# />
            <!--- <cfdump var="#Request.Estimated_LUPA#"> --->
        </cfloop>


        <cfset Request.CM_LUPA = Request.Payment - Request.Estimated_LUPA />
        <cfset Request.CM_LUPA =  #LsNumberFormat(Request.CM_LUPA, "0.00")#  /> 

        <cfset minusamount = 0 />
        <cfset dischargemonth = 0  />
        <cfif getdischarge.recordcount gt 0>
             <cfset dischargemonth = month('#getdischarge.F176#')  />
            <!--- <cfif month EQ dischargemonth  AND Request.End_Date LT getLUPA.End_Date 
             <!--- AND First_or_second_Period EQ 'FIRST FINAL' --->>
                 <cfset minusamount =  (Request.Payment * (2/100)) /> 
                 <cfset minusamount =  #LsNumberFormat(minusamount, "0.00")#  /> 
                 <cfset Request.CM_Net = Request.Payment - minusamount />
                  <cfset Request.CM_Net =  #LsNumberFormat(Request.CM_Net, "0.00")#  />
             </cfif>--->
             <cfif Patient_ID EQ '1583'><br>
                Episode Amount -  <cfdump var='#Request.Payment#'><br>
                Daily Rate -  <cfdump var='#Request.Daily_Rate#'><br>
                CM Gross Revenue - <cfdump var='#Request.CM_Gross#'><br>
                CM Sequestration - <cfdump var='#Request.CM_Sequester#'><br>
                Daily Adjustment - <cfdump var='#Request.Daily_Adjust#'><br>
                Adjusted Daily Rate - <cfdump var='#Request.Total_CM#'><br>
                 Num_days - <cfdump var='#Request.Num_days#'><br>
                 CM Net Revenue - <cfdump var='#Request.CM_Net#'><br>
                  <!--- getnextmonthvisits -  <cfdump var='#getnextmonthvisits#'><br> --->
                  minusamount -  <cfdump var='#minusamount#'><br>
                 Discharge CM_Net -   <cfdump var='#Request.CM_Net#'> <br>
                 dischargemonth - <cfdump var='#dischargemonth#'>   <cfdump var='#month#'><br>
                 episodemonth - <cfdump var='#episodemonth#'>   <cfdump var='#month#'><br>
                 completed_visits -  <cfdump var='#completed_visits#'> <br>
                  LUPA_Threshold -  <cfdump var='#LUPA_Threshold#'> <br>
            </cfif>
        </cfif>
        
        <cfset Total_A = "0.00" />
        <cfif (Request.completed_visits LT  LUPA_Threshold <!--- AND minusamount EQ '0' --->
             AND (episodemonth EQ month OR  month EQ dischargemonth)) OR url.report_type EQ 'LUPA'>
            <cfloop list="SN,PT,OT,ST,MSW,HHA" index="skillitem">
                <cfquery  name="getskill"  dbtype="query">
                    SELECT  * FROM  gettotalvisits
                     WHERE Missed = 0
                     AND skill IN ( '#skillitem#')
                     AND (assessments_completed = 1 OR (pgnotesdraft = 2 AND Followup_visit !=1))
                    <!--- AND (Invoice_ID !=0 OR NOA !=0) --->
                </cfquery>
                <cfset variables[skillitem & "_Rate"]    = "0.00" /> 
                <cfif getskill.recordcount gt 0 >
                   <cfset variables[skillitem & "_Rate"] = ( variables[skillitem & "_cost"]  * getskill.recordcount) />
                </cfif>
                 <cfset Request.skillitempay =  #LsNumberFormat(variables[skillitem & "_Rate"], "0.00")#  /> 
                <cfset Total_A =Total_A +  Request.skillitempay />
                <cfset Request[skillitem & "_Visits"] = getskill.recordcount />
            </cfloop>

            <cfset Total_A = #LsNumberFormat(Total_A, "0.00")#  />
            <cfset Request.CM_Gross  = Total_A />
            <cfset  Total_B =  (Total_A * (2/100)) /> 
            <cfset  Total_B   =  #LsNumberFormat(Total_B, "0.00")#  /> 
            <cfset Request.CM_Sequester = Total_B />
            <cfset Request.CM_Net = Total_A - Total_B />
            <cfset Request.CM_Net  = #LsNumberFormat(Request.CM_Net, "0.00")# />
             <cfif Patient_ID EQ '1583'><br>
                  Total_A -   <cfdump var='#Total_A#'> <br>
                  Total_B -   <cfdump var='#Total_B#'> <br>
                CM_Net -   <cfdump var='#Request.CM_Net#'> <br>
            </cfif>
        </cfif>

        <cfloop list="SN,PT,OT,ST,MSW,HHA" index="skillitem">
                <cfquery  name="getskill"  dbtype="query">
                    SELECT  * FROM  gettotalvisits
                     WHERE Missed = 0
                     AND skill IN ( '#skillitem#')
                     AND (assessments_completed = 1 OR (pgnotesdraft = 2 AND Followup_visit !=1))
                     <!--- AND (Invoice_ID !=0 OR NOA !=0) --->
                </cfquery>
                <cfset Request[skillitem & "_Visits"] = getskill.recordcount />

        </cfloop>


        

        <cfset Request.Therapy_Visits   = getTherapyvisits.recordcount />
        <cfquery  name="update_daymonth"  datasource="#Application.DataSrc#">
            UPDATE #Request.prefix_db_agency#.LUPA
            SET Days_in_Month = '#Request.Days_in_Month#',
             Num_days = '#Request.Num_days#', 
            HHRG        =  '#Request.HHRG#',
            Payment     =  '#Request.Payment#',
            Daily_Rate  =  '#Request.Daily_Rate#',
            CM_Gross    =  '#Request.CM_Gross#',
            Total_Visits =  '#Request.Total_Visits#',
            Therapy_Visits=  '#Request.Therapy_Visits#',
            CM_Sequester    =  '#Request.CM_Sequester#',
            Total_CM    =  '#Request.Total_CM#',
            Daily_Adjust    =  '#Request.Daily_Adjust#',
            CM_Net    =  '#Request.CM_Net#',
            LUPA   = '#LUPA_Threshold#',
            <cfif Request.Total_Visits LT LUPA_Threshold >
                CM_LUPA =  '#Request.CM_LUPA#',
            </cfif>
            <cfif isDefined('Request.Total_Periods')>
                 Total_Periods = '#Request.Total_Periods#',
            </cfif>
            <!--- End_Date =  '#Request.End_Date#',  --->
            Start_Date = '#Request.Start_Date#', 

            <!--- <cfif start_month EQ month >
                   Start_Date = '#DateFormat(Start_Date,"yyyy-mm-dd")#',
            <cfelse>
                    Start_Date = '#DateFormat(firststart_date,"yyyy-mm-dd")#',
            </cfif>
            <cfif dischargemonth EQ month AND  First_or_second_Period NEQ 'FIRST FINAL'>
                End_Date = '#DateFormat(getdischarge.F176,"yyyy-mm-dd")#',
            <cfelseif end_month EQ month >
                 End_Date =  '#DateFormat(End_Date,"yyyy-mm-dd")#',
            <cfelse>
                 End_Date =  '#DateFormat(End_Date,"yyyy-mm-dd")#',
            </cfif>  --->
              <cfif getdischarge.recordcount gt 0 >
                Discharge_Date = '#DateFormat(getdischarge.F176,"yyyy-mm-dd")#',
              <!---  <cfif month EQ dischargemonth>
                    End_Date =  '#DateFormat(getdischarge.F176,"yyyy-mm-dd")#',
                </cfif> --->
            </cfif>
             completed_visits = '#Request.completed_visits#',
             SN_Visits = '#Request.SN_Visits#',
             PT_Visits = '#Request.PT_Visits#',
             OT_Visits = '#Request.OT_Visits#',
             ST_Visits = '#Request.ST_Visits#',
             HHA_Visits = '#Request.HHA_Visits#',
             MSW_Visits = '#Request.MSW_Visits#' ,
             Estimated_LUPA = '#Request.Estimated_LUPA#',
             Scheduled_Visits = <cfqueryparam value="#Val(Request.Scheduled_Visits)#" cfsqltype="CF_SQL_INTEGER">
            WHERE DRC_ID = '#DRC_ID#'
        </cfquery>
        <cfif Patient_ID EQ '1583'>
                    <cfdump var="#Request#">  
        </cfif>
  </cfloop> 

  <cfif CGI.REMOTE_ADDR EQ '103.143.7.161' OR CGI.REMOTE_ADDR EQ '152.58.214.121'>
       <!--- <cfabort> --->
</cfif>
<cfset redirectpage = 'daily_revenue_calculation' />
<cfif url.report_type EQ 'LUPA'>
 <cfset  redirectpage = 'LUPA_report' />
<cfelseif url.report_type EQ 'drc'>
  <cfset  redirectpage = 'drc' />  
</cfif>
  <cflocation url="../agencyadmin/index.cfm?aMenu=billing&page=agency&cat=BillingReports&rpt=#redirectpage#&monthYear=#form.monthYear#" addtoken="no">
