<cfparam name="URL.Agency_ID" default="">
<cfset database=arraynew(1)>
<!--- <cfquery name="GetTable" datasource="#Application.DataSrc#">
		SELECT TABLE_SCHEMA  FROM INFORMATION_SCHEMA.COLUMNS
         WHERE TABLE_SCHEMA like '%agency%' 
         <cfif URL.Agency_ID NEQ ''>
            AND  TABLE_SCHEMA like  '%agency_#URL.Agency_ID#%'
        </cfif>
         group by  TABLE_SCHEMA
</cfquery> --->

<cfquery name="GetTable" datasource="#Application.DataSrc#">
        SELECT *  FROM Agency
         WHERE Status = 'active'
         <cfif URL.Agency_ID NEQ ''>
            AND  Agency_ID =  '#URL.Agency_ID#'
        </cfif>
         group by  Agency_ID
</cfquery>

<cfset run_empcount = 0 >
<cfparam name="URL.run_empcount" default="0">
<cfset currentTime = Now()>
<cfset currentHour = Hour(currentTime)>
<cfset currentMinute = Minute(currentTime)>
<!--- Option 1: Simple hour-based check --->
<cfif currentHour EQ 3 OR URL.run_empcount EQ 1>
   <cfset run_empcount = 1 >
</cfif>



<cfloop query="GetTable">
    <cfset database[CurrentRow]= Agency_ID>
</cfloop>

<cfloop from=1 to=#ArrayLen(database)# index=ind>
	<!--- <cfif ArrayLen(database) gt 0>
		<cfset Request.prefix_db_agency = #database[ind]# />
		<cfset agencynumber  =ListToArray(#Request.prefix_db_agency#,'_')/> 
		<cfset agency_id = agencynumber[2] />
	</cfif> --->
    <cfset #Request.prefix_db_agency# =  'agency_' & #database[ind]# /> 
    <cfset agency_id = #database[ind]#  />

    <!---  Calculate Missed Visits count ---->
    <cfset missed_visitscount = 0>
    <cfquery  name="GetmissedvisitsList"  datasource="#Application.DataSrc#">
            SELECT pPatients.Patient_ID, pPatients.Pt_Last AS PatientLast, pPatients.Pt_First AS PatientFirst, 
            pAssessments.F26, pSchedules.*, pCareplan.Description,pEmployee.Emp_Last,pEmployee.Emp_First,
            (SELECT pAss.F25 FROM #Request.prefix_db_agency#.pAssessments pAss
            WHERE pAss.Patient_ID =  pPatients.Patient_ID 
            AND  (LEFT(pSchedules.Visit_Type,1) = LEFT(pAss.F26,1)
             OR (  pAssessments.F26 like pSchedules.Visit_Type)
            )  AND pAss.Status = 0 LIMIT 0,1)
            AS assessments_completed

            FROM #Request.prefix_db_agency#.pSchedules
            JOIN #Request.prefix_db_agency#.pAssessments ON pSchedules.Assmt_ID = pAssessments.Assmt_ID  
            JOIN #Request.prefix_db_agency#.pPatients ON  pPatients.Patient_ID = pAssessments.Patient_ID
            LEFT OUTER JOIN  #Request.prefix_db_lookup#.pEmployee ON  pEmployee.Emp_ID = pSchedules.Emp_ID
            LEFT OUTER JOIN #Request.prefix_db_agency#.pSched_Procedure ON  pSched_Procedure.Schedule_ID = pSchedules.Schedule_ID AND pSched_Procedure.Status = 0
            LEFT OUTER JOIN #Request.prefix_db_agency#.pCareplan ON  pCareplan.Careplan_ID = pSched_Procedure.Careplan_ID AND pCareplan.Status = 0
            WHERE pAssessments.status = 0
            AND  pPatients.Status  = 0
           AND  pSchedules.status = 0
           AND pSchedules.Missed != 0 
           AND pSchedules.Visit_Date <= now()
           <!--- AND pSchedules.CMSOrder_ID = 0
            AND  pSchedules.Schedule_ID NOT IN ( SELECT Schedule_ID FROM  #Request.prefix_db_agency#.Communication
            GROUP BY Schedule_ID ) --->
            AND pSchedules.Visit_Date >=  '2024-09-10'
        AND pSchedules.Comm_ID = 0
          GROUp BY pSchedules.Schedule_ID
          ORDER BY pPatients.Pt_Last ASC, pPatients.Pt_First ASC
    </cfquery>
    <cfset missed_visitscount = GetmissedvisitsList.recordcount />
    <cfloop query="GetmissedvisitsList">
        <cfset Decription   = "Missed Visit  " & #DateFormat(Visit_Date, "yyyy-mm-dd")# />
        <cfset currentdate  = #DateFormat(now(), "yyyy-mm-dd")# />
        <cfset Header  = "Report Missed Visits" />
        <cfquery  name="INSERT_missedvisitsList"  datasource="#Application.DataSrc#">
            INSERT INTO #Request.prefix_db_agency#.Email_Daily_QA
            (Daily_QA_Date, Emp_ID,Assmt_ID, Patient_ID, Header,Pt_Last,Pt_First,
                Emp_First,Emp_Last, Description, Created_Date)
            VALUES ( '#currentdate#',#Emp_ID#,#Assmt_ID#, #Patient_ID#,'#Header#','#PatientLast#','#PatientFirst#',
                '#Emp_First#','#Emp_Last#','#Decription#', #NOW()#)
        </cfquery>
    </cfloop>   


  <!---  Calculate Auth Non-Compliance count ---->
    <cfset auth_noncomp = 0>
    <cfscript>
        today = now();
        dayOfWeek = dayOfWeek(today);
        daysSinceSunday = dayOfWeek - 1;
        startOfWeek = dateAdd("d", -daysSinceSunday, today);
    </cfscript>
    <cfquery  name="nonvisit_compliance"  datasource="#Application.DataSrc#">
            SELECT pAuths_weeks.*,pPatients.Patient_ID, pPatients.Pt_Last AS PatientLast,
             pPatients.Pt_First AS PatientFirst,pAuths.Skill,
             pAssessments.F26,  pAssessments.Assmt_ID,pAuths_weeks.Total_visits as totalvisit,
             (SELECT count(*) FROM #Request.prefix_db_agency#.pSchedules
            WHERE pSchedules.Status  = 0 AND pSchedules.Auth_ID = pAuths.Auth_ID
             AND pAuths.Skill = pSchedules.Skill 
             AND Visit_Date <= pAuths_weeks.Week_End AND Visit_Date >= pAuths_weeks.Week_Start
              AND Missed = 0) AS Visit_Count

            FROM #Request.prefix_db_agency#.pAuths_weeks
            JOIN #Request.prefix_db_agency#.pAuths        ON pAuths_weeks.Auth_ID = pAuths.Auth_ID AND pAuths.Status =0  <!--- AND  Visitfreq_Placeholder   = 0 --->
            JOIN #Request.prefix_db_agency#.pAssessments  ON pAssessments.Assmt_ID = pAuths.Assmt_ID AND pAssessments.Status =0 
            JOIN #Request.prefix_db_agency#.pPtPayer pPtPayer on pPtPayer.PtPayer_ID = pAuths.PtPayer_ID AND pPtPayer.status = 0
            JOIN #Request.prefix_db_agency#.pPayer pp on pPtPayer.Payer_ID = pp.Pay_ID AND pp.status = 0
            AND LEFT(pp.M0150,1) IN ('1','2')
            <!--- JOIN #Request.prefix_db_lookup#.CW_Visit_Utilization  ON pAssessments.F300 = CW_Visit_Utilization.HIPPS_Code    --->
            JOIN #Request.prefix_db_agency#.pPatients     ON pPatients.Patient_ID = pAssessments.Patient_ID  
            WHERE pPatients.Status  < 1
            <!--- AND Week_Start >= '#DateFormat(startOfWeek, "yyyy-mm-dd")#'
             AND Week_Start >= '2024-09-08'--->
             AND Week_Start <= '#DateFormat(startOfWeek, "yyyy-mm-dd")#'
              AND Week_Start >= '2025-01-01'
            <!--- AND  CW_Visit_Utilization.LUPA > (SELECT  count(pSchedules.Schedule_ID) FROM #Request.prefix_db_agency#.pSchedules 
                JOIN #Request.prefix_db_agency#.pAssessments  ON  pAssessments.Assmt_ID = pSchedules.Assmt_ID
                WHERE pSchedules.Status = 0
                <!--- AND pSchedules.Emp_ID = <cfqueryparam value = "#session.employeeid#" CFSQLType ="CF_SQL_INTEGER"> --->         
                   AND pAssessments.Status =0 AND pAuths.Auth_ID  = pSchedules.Auth_ID  ) --->
            AND pAuths.Visitfreq_Placeholder = 0
            AND  pAssessments.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.F176 <= #now()#
                     AND  pAssessments.Status =0)
            AND pAssessments.Admit_ID  IN ( SELECT pAdmit.Admit_ID FROM #Request.prefix_db_agency#.pAdmit WHERE pAdmit.Status  = 0 and pAdmit.drafts  = 0)
            AND  pAuths_weeks.Status = 0
            AND ( pAuths_weeks.Total_visits  > 0 OR pAuths.prn_visits > 0)
            GROUP BY pAuths_weeks.Auths_weeks_ID 
            ORDER BY pPatients.Pt_Last ASC, pPatients.Pt_First ASC
    </cfquery>
    <cfoutput query="nonvisit_compliance">
        <cfset missing =  totalvisit - Visit_Count />
         <cfif missing NEQ 0 >
             <cfset auth_noncomp = auth_noncomp + 1>
        </cfif>
    </cfoutput>


    <!---  Calculate Orphan Symtoms Require Count ---->
    <cfset orphans_symp_count = 0>
    <cfquery  name="GetAssessments"  datasource="#Application.DataSrc#">
                SELECT  pAssessments.*,pPatients.Pt_First,pPatients.Pt_Last,
                (SELECT count(*) FROM #Request.prefix_db_agency#.pAssessments ass
            WHERE pAssessments.Assmt_ID  = ass.Assmt_ID AND ass.Orphan_Field = 1 AND ass.F320 = 1)
            AS approved_count,pEmployee.Emp_ID    
            FROM #Request.prefix_db_agency#.pAssessments
            JOIN #Request.prefix_db_agency#.pAdmit ON pAdmit.Admit_ID = pAssessments.Admit_ID AND pAdmit.Status = 0
            JOIN #Request.prefix_db_agency#.pProblem ON pProblem.Assmt_ID = pAssessments.Assmt_ID AND pProblem.Status = 0
            JOIN #Request.prefix_db_lookup#.pPathway ON pPathway.Pathway_ID = pProblem.Path_ID
            JOIN #Request.prefix_db_agency#.pPatients ON pPatients.Patient_ID = pAssessments.Patient_ID
            LEFT OUTER JOIN #Request.prefix_db_agency#.assessment_assign ON assessment_assign.Assmt_ID =  pAssessments.Assmt_ID
              AND assessment_assign.F26 = pAssessments.F26
            JOIN  #Request.prefix_db_lookup#.pEmployee ON pEmployee.Emp_ID =  assessment_assign.Emp_ID
            WHERE pAssessments.Status = 0 AND pAssessments.F25 = 1
            AND   pPathway.Agency_ID IS NULL
                 AND pProblem.M0_No like 'M102%'
            AND pPatients.Loc_ID = '#agency_id#'
            AND pPatients.Status = 0
            AND pAssessments.F176 > '2024-09-01'
             AND pAdmit.M0030_START_CARE_DT >= '2024-10-01'
             AND (pAssessments.F26 like '1%' OR  pAssessments.F26 like '4%')    
            AND pAssessments.F320 IN (0,2)
            AND pAssessments.Orphan_Field IN (1)
            <!--- AND pAssessments.Assmt_ID NOT IN ( SELECT Assmt_ID FROM #Request.prefix_db_agency#.Email_Daily_QA 
                WHERE  Header = 'Orphan Symptoms Not Reported') --->
            GROUP BY pAssessments.Assmt_ID 
            ORDER BY pAssessments.F176 ASC
    </cfquery>
    <cfoutput query="GetAssessments" group="Assmt_ID">
         <cfif approved_count EQ 0 >
            <cfset orphans_symp_count = orphans_symp_count + 1 />
        </cfif>
    </cfoutput>


    <!---  Calculate Orphan Medication Reconciliation Count ---->
    <cfset orphans_meds_recon = 0>
    <cfquery  name="getmedsrecon" datasource="#Application.DataSrc#">
        SELECT  pAssessments.*,pPatients.Pt_First,pPatients.Pt_Last,
        pEmployee.Emp_ID 
        FROM #Request.prefix_db_agency#.pAssessments
        JOIN #Request.prefix_db_agency#.pAdmit ON pAdmit.Admit_ID = pAssessments.Admit_ID AND pAdmit.Status = 0
        JOIN #Request.prefix_db_agency#.pProblem ON pProblem.Assmt_ID = pAssessments.Assmt_ID AND pProblem.Status = 0
        JOIN #Request.prefix_db_agency#.pPatients ON pPatients.Patient_ID = pAssessments.Patient_ID
        LEFT OUTER JOIN #Request.prefix_db_agency#.assessment_assign ON assessment_assign.Assmt_ID =  pAssessments.Assmt_ID
          AND assessment_assign.F26 = pAssessments.F26
        JOIN  hhapowerpath.pEmployee ON pEmployee.Emp_ID =  assessment_assign.Emp_ID
        WHERE pAssessments.Status = 0 AND pAssessments.F25 = 1
        AND pProblem.M0_No like 'M102%'
        AND pPatients.Loc_ID = '#agency_id#'
        AND pPatients.Status = 0
        AND pAdmit.M0030_START_CARE_DT >= '2024-10-01'
        AND (pAssessments.F26 like '1%' OR pAssessments.F26 like '4%')   
        AND pAssessments.F25 = 1
        AND pPatients.Med_Approve IN (0,2)
        AND pPatients.Med_Recon_Field IN (1)
        AND  pAssessments.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 pAssessments.F25 = 1) 
      <!---   AND pAssessments.Assmt_ID NOT IN ( SELECT Assmt_ID FROM #Request.prefix_db_agency#.Email_Daily_QA 
         WHERE  Header = 'Medications Need Reconciliation') --->
       GROUP BY pAssessments.Assmt_ID 
        ORDER BY pPatients.Patient_ID ASC
    </cfquery>
     <cfoutput query="getmedsrecon" group="Assmt_ID">
        <cfset orphans_meds_recon = orphans_meds_recon + 1 />
    </cfoutput>

    <!---  Calculate Missing careplans count ---->
    <!--- <cfquery  name="Getmissing_careplans_old" datasource="#Application.DataSrc#">
            SELECT parent_oasis.F26 AS parent_assessment, parent_oasis.F176 AS parent_Assessment_Completed_M0090,
             pAssessments.Assmt_ID,
             pAssessments.Record_creation_Date, pAssessments.Assmt_ID, pAssessments.F27,pAssessments.Admit_ID,
            pAssessments.Patient_ID, pAssessments.F25 AS admission_status, pAssessments.F26 AS Assessment_Reason_M0100, pAssessments.F177 AS Certification_Start, 
            pAssessments.F178 AS Certification_End, pAssessments.F176 AS Assessment_Completed_M0090,
             pAssessments.F197 AS Transmission_status, 
            pPatients.Pt_First, pPatients.Pt_Last, Pt_Middle,
            (SELECT count(*) FROM #Request.prefix_db_agency#.pCareplan WHERE pCareplan.Assmt_ID = pAssessments.Assmt_ID
            AND pCareplan.Status = 0 AND pCareplan.Skill = pAssessments.F27)  AS careplancount,
            (SELECT count(*) FROM #Request.prefix_db_agency#.pCareplan WHERE pCareplan.Assmt_ID = assessment_assign.Parent_Assmt_ID
            AND pCareplan.Status = 0 AND pCareplan.Skill = pAssessments.F27)  AS notcreatedcareplan,
            (SELECT count(*) FROM #Request.prefix_db_agency#.pCareplan WHERE pCareplan.Assmt_ID =  assessment_assign.Parent_Assmt_ID
            AND pCareplan.Status = 0   AND pCareplan.Skill = pAssessments.F27  
            AND  pCareplan.Type IN ('discharge_plan','patient_goal')  
            AND  pCareplan.Description  IN ( 'add patient-stated goal','add discharge plan'))  AS ptgoalsnotadded,
            (SELECT  count(*) FROM  #Request.prefix_db_agency#.pWoundsVitals 
                WHERE Assmt_ID = pAssessments.Assmt_ID
                AND Status = 0
                AND VitalOrWound = 'vital' AND (Param_Lo IS NULL OR Param_Hi IS NULL 
                    OR Param_Lo= '' OR Param_Hi = '')) AS required_vital,
            (SELECT count(*) FROM #Request.prefix_db_agency#.pCareplan 
            WHERE pCareplan.Assmt_ID =  assessment_assign.Parent_Assmt_ID
            AND pCareplan.Status = 0   AND pCareplan.Skill = pAssessments.F27  
            AND  pCareplan.Type IN ('standing_order'))  AS standingorders_count,
            (SELECT count(*) FROM #Request.prefix_db_agency#.pCareplan WHERE pCareplan.Assmt_ID = pAssessments.Assmt_ID
            AND pCareplan.Status = 0 AND pCareplan.Skill = pAssessments.F27 
            AND  pCareplan.Type IN ('discharge_plan','patient_goal') )  AS patientgoalscount,            
            (SELECT count(*) FROM #Request.prefix_db_agency#.pCareplan WHERE pCareplan.Assmt_ID 
                IN ( SELECT Assmt_ID FROM #Request.prefix_db_agency#.pAssessments ass 
                    WHERE ass.Admit_ID = pAdmit.Admit_ID AND ass.Status =0)
            AND pCareplan.Status = 0 AND pCareplan.Skill = pAssessments.F27) AS adultcareplancount ,
            (SELECT count(*) FROM #Request.prefix_db_agency#.pPtmeds 
             WHERE pPtmeds.In_Home  = 2 AND pPtmeds.Status = 0 AND pPatients.Patient_ID = pPtmeds.Patient_ID) 
            AS incomplete_meds, 
              (SELECT  count(Communication.Comm_ID) FROM #Request.prefix_db_agency#.Communication
                    JOIN  #Request.prefix_db_agency#.CommunicationSubjects  
                     ON CommunicationSubjects.CommSub_ID = Communication.CommSub_ID  
                    WHERE Communication.Status = 0 
                    AND Communication.Patient_ID = pPatients.Patient_ID AND pAdmit.M0030_START_CARE_DT < Communication.Comm_Date
                    AND CommunicationSubjects.Subject like "Discharge Summary - PT%") AS PTdischargecount,
              (SELECT  count(Communication.Comm_ID) FROM #Request.prefix_db_agency#.Communication
                    JOIN  #Request.prefix_db_agency#.CommunicationSubjects  
                     ON CommunicationSubjects.CommSub_ID = Communication.CommSub_ID  
                    WHERE Communication.Status = 0 
                    AND Communication.Patient_ID = pPatients.Patient_ID AND pAdmit.M0030_START_CARE_DT < Communication.Comm_Date
                    AND CommunicationSubjects.Subject like "Discharge Summary - OT%") AS OTdischargecount,
              (SELECT  count(Communication.Comm_ID) FROM #Request.prefix_db_agency#.Communication
                    JOIN  #Request.prefix_db_agency#.CommunicationSubjects  
                     ON CommunicationSubjects.CommSub_ID = Communication.CommSub_ID  
                    WHERE Communication.Status = 0 
                    AND Communication.Patient_ID = pPatients.Patient_ID
                     AND pAdmit.M0030_START_CARE_DT < Communication.Comm_Date
                    AND CommunicationSubjects.Subject like "Discharge Summary - ST%") AS STdischargecount,
              (SELECT  count(Communication.Comm_ID) FROM #Request.prefix_db_agency#.Communication
                    JOIN  #Request.prefix_db_agency#.CommunicationSubjects  
                     ON CommunicationSubjects.CommSub_ID = Communication.CommSub_ID  
                    WHERE Communication.Status = 0 
                    AND Communication.Patient_ID = pPatients.Patient_ID AND pAdmit.M0030_START_CARE_DT < Communication.Comm_Date
                    AND CommunicationSubjects.Subject like "Discharge Summary - SN%") AS SNdischargecount,
            pEmployee.Emp_First,pEmployee.Emp_Last
            FROM #Request.prefix_db_agency#.pAssessments
            JOIN #Request.prefix_db_agency#.pPatients  ON pAssessments.Patient_ID = pPatients.Patient_ID 
            JOIN  #Request.prefix_db_agency#.pAdmit  ON pAssessments.Admit_ID = pAdmit.Admit_ID  AND pAdmit.Status = 0
             LEFT OUTER JOIN  #Request.prefix_db_agency#.assessment_assign ON assessment_assign.Assmt_ID =  pAssessments.Assmt_ID
             AND assessment_assign.F26 = pAssessments.F26
            JOIN  #Request.prefix_db_lookup#.pEmployee ON pEmployee.Emp_ID =  assessment_assign.Emp_ID
            LEFT OUTER JOIN #Request.prefix_db_agency#.pAssessments parent_oasis ON 
            parent_oasis.Assmt_ID =  assessment_assign.Parent_Assmt_ID
                Where pPatients.Loc_ID = '#agency_id#'
            AND pPatients.Status = 0
            AND pAssessments.Status = 0 
            AND pAssessments.F25 = 1 
            AND (pAssessments.F26 LIKE '1%' OR pAssessments.F26 LIKE '4%'
                OR pAssessments.F26 LIKE 'PT Adult%' OR pAssessments.F26 LIKE 'OT Adult%'
                 OR pAssessments.F26 LIKE 'ST Adult%' 
                OR pAssessments.F26 LIKE 'SN Adult%' ) 
                AND pAssessments.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 pAssessments.F25 = 1) 
            GROUP BY pAssessments.Assmt_ID 
    </cfquery> --->
    <cfquery  name="Getmissing_careplans" datasource="#Application.DataSrc#">
            SELECT parent_oasis.F26 AS parent_assessment, 
            parent_oasis.F176 AS parent_Assessment_Completed_M0090,
             pAssessments.Assmt_ID,
             pAssessments.Record_creation_Date, pAssessments.Assmt_ID, pAssessments.F27,pAssessments.Admit_ID,
            pAssessments.Patient_ID, pAssessments.F25 AS admission_status, pAssessments.F26 AS Assessment_Reason_M0100, 
            pAssessments.F177 AS Certification_Start, 
            pAssessments.F178 AS Certification_End, pAssessments.F176 AS Assessment_Completed_M0090,
             pAssessments.F197 AS Transmission_status, 
            pPatients.Pt_First, pPatients.Pt_Last, Pt_Middle,
            (SELECT count(*) FROM #Request.prefix_db_agency#.pCareplan 
                WHERE pCareplan.Assmt_ID = pAssessments.Assmt_ID
            AND pCareplan.Status = 0 AND pCareplan.Skill = pAssessments.F27)  AS careplancount,
            (SELECT count(*) FROM #Request.prefix_db_agency#.pCareplan 
                WHERE pCareplan.Assmt_ID = assessment_assign.Parent_Assmt_ID
            AND pCareplan.Status = 0 AND pCareplan.Skill = pAssessments.F27)  AS notcreatedcareplan,
            (SELECT count(*) FROM #Request.prefix_db_agency#.pCareplan WHERE pCareplan.Assmt_ID =  assessment_assign.Parent_Assmt_ID
            AND pCareplan.Status = 0   AND pCareplan.Skill = pAssessments.F27  
            AND  pCareplan.Type IN ('discharge_plan','patient_goal')  
            AND  pCareplan.Description  IN ( 'add patient-stated goal','add discharge plan'))  AS ptgoalsnotadded,
            (SELECT  count(*) FROM  #Request.prefix_db_agency#.pWoundsVitals 
                WHERE Assmt_ID = pAssessments.Assmt_ID
                AND Status = 0
                AND VitalOrWound = 'vital'
                 AND (Description != 'weight' OR Description != 'Weight')
                 AND (Param_Lo IS NULL OR Param_Hi IS NULL OR Param_Lo= '' OR Param_Hi = '')) AS required_vital,
            (SELECT count(*) FROM #Request.prefix_db_agency#.pCareplan 
            WHERE pCareplan.Assmt_ID =  assessment_assign.Parent_Assmt_ID
            AND pCareplan.Status = 0   AND pCareplan.Skill = pAssessments.F27  
            AND  pCareplan.Type IN ('standing_order'))  AS standingorders_count,

            (SELECT count(*) FROM #Request.prefix_db_agency#.pCareplan WHERE pCareplan.Assmt_ID = pAssessments.Assmt_ID
            AND pCareplan.Status = 0 AND pCareplan.Skill = pAssessments.F27 
            AND  pCareplan.Type IN ('discharge_plan','patient_goal') )  AS patientgoalscount,

            (SELECT count(*) FROM #Request.prefix_db_agency#.pCareplan WHERE pCareplan.Assmt_ID 
                IN ( SELECT Assmt_ID FROM #Request.prefix_db_agency#.pAssessments ass 
                    WHERE ass.Admit_ID = pAdmit.Admit_ID AND ass.Status =0)
            AND pCareplan.Status = 0 AND pCareplan.Skill = pAssessments.F27) AS adultcareplancount ,

            (SELECT count(*) FROM #Request.prefix_db_agency#.pPtmeds 
             WHERE pPtmeds.In_Home  = 2 AND pPtmeds.Status = 0 AND pPatients.Patient_ID = pPtmeds.Patient_ID) 
            AS incomplete_meds, 

              (SELECT  count(Communication.Comm_ID) FROM #Request.prefix_db_agency#.Communication
                    JOIN  #Request.prefix_db_agency#.CommunicationSubjects  
                     ON CommunicationSubjects.CommSub_ID = Communication.CommSub_ID  
                    WHERE Communication.Status = 0 
                    AND Communication.Patient_ID = pPatients.Patient_ID 
                    AND pAdmit.M0030_START_CARE_DT < Communication.Comm_Date
                    AND CommunicationSubjects.Subject like "Discharge Summary - PT%") AS PTdischargecount,
              (SELECT  count(Communication.Comm_ID) FROM #Request.prefix_db_agency#.Communication
                    JOIN  #Request.prefix_db_agency#.CommunicationSubjects  
                     ON CommunicationSubjects.CommSub_ID = Communication.CommSub_ID  
                    WHERE Communication.Status = 0 
                    AND Communication.Patient_ID = pPatients.Patient_ID 
                    AND pAdmit.M0030_START_CARE_DT < Communication.Comm_Date
                    AND CommunicationSubjects.Subject like "Discharge Summary - OT%") AS OTdischargecount,
              (SELECT  count(Communication.Comm_ID) FROM #Request.prefix_db_agency#.Communication
                    JOIN  #Request.prefix_db_agency#.CommunicationSubjects  
                     ON CommunicationSubjects.CommSub_ID = Communication.CommSub_ID  
                    WHERE Communication.Status = 0 
                    AND Communication.Patient_ID = pPatients.Patient_ID 
                    AND pAdmit.M0030_START_CARE_DT < Communication.Comm_Date
                    AND CommunicationSubjects.Subject like "Discharge Summary - ST%") AS STdischargecount,
              (SELECT  count(Communication.Comm_ID) FROM #Request.prefix_db_agency#.Communication
                    JOIN  #Request.prefix_db_agency#.CommunicationSubjects  
                     ON CommunicationSubjects.CommSub_ID = Communication.CommSub_ID  
                    WHERE Communication.Status = 0 
                    AND Communication.Patient_ID = pPatients.Patient_ID 
                    AND pAdmit.M0030_START_CARE_DT < Communication.Comm_Date
                    AND CommunicationSubjects.Subject like "Discharge Summary - SN%") AS SNdischargecount,

            pEmployee.Emp_First,pEmployee.Emp_Last,pEmployee.Emp_ID 
            FROM #Request.prefix_db_agency#.pAssessments
            JOIN #Request.prefix_db_agency#.pPatients  ON pAssessments.Patient_ID = pPatients.Patient_ID 
            JOIN  #Request.prefix_db_agency#.pAdmit  ON pAssessments.Admit_ID = pAdmit.Admit_ID  AND pAdmit.Status = 0
             LEFT OUTER JOIN  #Request.prefix_db_agency#.assessment_assign ON assessment_assign.Assmt_ID =  pAssessments.Assmt_ID
             AND assessment_assign.F26 = pAssessments.F26
            JOIN  #Request.prefix_db_lookup#.pEmployee ON pEmployee.Emp_ID =  assessment_assign.Emp_ID
            LEFT OUTER JOIN #Request.prefix_db_agency#.pAssessments parent_oasis ON 
            parent_oasis.Assmt_ID =  assessment_assign.Parent_Assmt_ID  AND parent_oasis.Status = 0 
            Where pPatients.Loc_ID = '#agency_id#'
            AND pPatients.Status = 0
            AND pAssessments.Status = 0 
            AND pAssessments.F25 = 1 
            AND (pAssessments.F26 LIKE '1%' OR pAssessments.F26 LIKE '4%'
                OR pAssessments.F26 LIKE 'PT Adult%' OR pAssessments.F26 LIKE 'OT Adult%' OR pAssessments.F26 LIKE 'ST Adult%' 
                OR pAssessments.F26 LIKE 'SN Adult%' ) 
            AND  pAssessments.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 pAssessments.F25 = 1) 
                GROUP BY pAssessments.Assmt_ID 
    </cfquery>
    <cfset missing_careplan_count = 0 />
    <cfoutput query="Getmissing_careplans">
         <cfif 
                    	 	 ((LEFT(Assessment_Reason_M0100,1) EQ 1 OR LEFT(Assessment_Reason_M0100,1) EQ 4)
                    	 	  AND (ptgoalsnotadded GT 0 OR notcreatedcareplan EQ 0 
                    	 	  	OR required_vital GT 0 OR standingorders_count EQ 0  ) <!--- AND adultcareplancount EQ 0 --->)  	
                    	 	  OR incomplete_meds gt 0 
                    	    OR (LEFT(Assessment_Reason_M0100,2) EQ  'PT' AND PTdischargecount EQ 0 
                    	     AND  (ptgoalsnotadded GT 0 OR notcreatedcareplan EQ 0))
                    	    OR (LEFT(Assessment_Reason_M0100,2) EQ  'OT' AND OTdischargecount EQ 0  
                    	    	AND  (ptgoalsnotadded GT 0 OR notcreatedcareplan EQ 0))
                    	    OR (LEFT(Assessment_Reason_M0100,2) EQ  'ST' AND STdischargecount EQ 0  
                    	    	AND  (ptgoalsnotadded GT 0 OR notcreatedcareplan EQ 0))
                    	    OR (LEFT(Assessment_Reason_M0100,2) EQ  'SN' AND SNdischargecount EQ 0  
                    	    	AND  (ptgoalsnotadded GT 0 OR notcreatedcareplan EQ 0)) >
                    	 	
             <cfset missing_careplan_count = missing_careplan_count +  1 />
        </cfif>
    </cfoutput>









    <!---  Calculate Procedures on Careplan Require QA count ---->
    <cfquery  name="GetA" datasource="#Application.DataSrc#">
            SELECT pAssessments.Assmt_ID, pAssessments.Record_creation_Date, pAssessments.Assmt_ID, pAssessments.F27,
            pAssessments.Patient_ID, pAssessments.F25 AS admission_status, pAssessments.F26 AS Assessment_Reason_M0100, pAssessments.F177 AS Certification_Start, 
            pAssessments.F178 AS Certification_End, pAssessments.F176 AS Assessment_Completed_M0090,
             pAssessments.F197 AS Transmission_status, 
            pPatients.Pt_First, pPatients.Pt_Last, Pt_Middle, 
            pCareplan.Careplan_ID, pCareplan.Description, pCareplan.Notes, pCareplan.Proc_QA, pCareplan.Date_Create, pCareplan.Order_Date ,
            pEmployee.Emp_First,pEmployee.Emp_Last 

            FROM #Request.prefix_db_agency#.pAssessments
            JOIN #Request.prefix_db_agency#.pPatients   ON pAssessments.Patient_ID = pPatients.Patient_ID  AND pPatients.Status = 0
            JOIN  #Request.prefix_db_agency#.pAdmit     ON pAssessments.Admit_ID = pAdmit.Admit_ID  AND pAdmit.Status = 0 
            JOIN  #Request.prefix_db_agency#.pCareplan  ON  pCareplan.Assmt_ID = pAssessments.Assmt_ID AND pCareplan.Status = 0
             LEFT OUTER JOIN  #Request.prefix_db_agency#.assessment_assign ON assessment_assign.Assmt_ID =  pAssessments.Assmt_ID
             AND assessment_assign.F26 = pAssessments.F26
            JOIN  #Request.prefix_db_lookup#.pEmployee ON pEmployee.Emp_ID =  assessment_assign.Emp_ID
            WHERE pPatients.Loc_ID = '#agency_id#'
            AND pAssessments.Status = 0 
            AND pAssessments.F25 = 1
            AND pAssessments.F178 >= now()
            AND pCareplan.Type = 'procedure'
            AND pCareplan.Proc_QA IN (0,2) 
            AND pCareplan.Item_ID IN (264,297,1052,301)
            <!--- AND  pAssessments.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) --->
            GROUP BY pCareplan.Careplan_ID  
            ORDER BY pPatients.Pt_First ASC 
    </cfquery>
    <cfset Proc_QA_count = #GetA.recordcount# />


    <cfquery  name="LUPA_compliance"  datasource="#Application.DataSrc#">
        SELECT pAuths_weeks.*,pPatients.Patient_ID, pPatients.Pt_Last AS PatientLast,
         pPatients.Pt_First AS PatientFirst,pAuths.Skill,
         pAssessments.F26,  pAssessments.Assmt_ID,pAuths_weeks.Total_visits as totalvisit,
         pAuths.Total_Visits AS auth_totalvisits, pAuths.Date_Start, pAuths.Date_End,
         (SELECT count(*) FROM #Request.prefix_db_agency#.pSchedules
        WHERE pSchedules.Status  = 0 AND pSchedules.Auth_ID = pAuths.Auth_ID
         AND pAuths.Skill = pSchedules.Skill 
         AND Visit_Date <= pAuths_weeks.Week_End AND Visit_Date >= pAuths_weeks.Week_Start) AS Visit_Count,
            CASE WHEN   pAssessments.F177 <= pAuths.Date_Start AND
             DATE_ADD(pAssessments.F177, INTERVAL 29 DAY) >=  pAuths.Date_Start Then '1'
             ELSE 2
             END AS episode,
         (SELECT  count(pSchedules.Schedule_ID) FROM #Request.prefix_db_agency#.pSchedules 
            JOIN #Request.prefix_db_agency#.pAssessments  ON  pAssessments.Assmt_ID = pSchedules.Assmt_ID
            WHERE pSchedules.Status = 0  AND pAssessments.Status =0 
           <!--- AND pAuths.Auth_ID  = pSchedules.Auth_ID ---> 
           AND pAuths.Assmt_ID = pSchedules.Assmt_ID
           AND pAssessments.F177 <= pSchedules.Visit_Date
            AND DATE_ADD(pAssessments.F177, INTERVAL 29 DAY) >=  pSchedules.Visit_Date ) AS firstcert_sch_count,
         (SELECT  count(pSchedules.Schedule_ID) FROM #Request.prefix_db_agency#.pSchedules 
            JOIN #Request.prefix_db_agency#.pAssessments  ON  pAssessments.Assmt_ID = pSchedules.Assmt_ID
            WHERE pSchedules.Status = 0  AND pAssessments.Status =0 
            <!--- AND pAuths.Auth_ID  = pSchedules.Auth_ID ---> 
             AND pAuths.Assmt_ID = pSchedules.Assmt_ID
            AND DATE_ADD(pAssessments.F177, INTERVAL 30 DAY) <= pSchedules.Visit_Date
            AND DATE_ADD(pAssessments.F177, INTERVAL 60 DAY) >=  pSchedules.Visit_Date ) AS secondcert_sch_count,
         CW1.LUPA AS LUPA_First,CW2.LUPA AS LUPA_second, pEmployee.Emp_ID  

        FROM #Request.prefix_db_agency#.pAuths_weeks
        JOIN #Request.prefix_db_agency#.pAuths        ON pAuths_weeks.Auth_ID = pAuths.Auth_ID AND pAuths.Status =0  <!--- AND  Visitfreq_Placeholder   = 0 --->
        JOIN #Request.prefix_db_agency#.pAssessments  ON pAssessments.Assmt_ID = pAuths.Assmt_ID AND pAssessments.Status =0 
        JOIN #Request.prefix_db_agency#.pPtPayer pPtPayer on pPtPayer.PtPayer_ID = pAuths.PtPayer_ID AND pPtPayer.status = 0
        JOIN #Request.prefix_db_agency#.pPayer pp on pPtPayer.Payer_ID = pp.Pay_ID AND pp.status = 0
        AND LEFT(pp.M0150,1) IN ('1','2') 
        JOIN #Request.prefix_db_lookup#.CW_Visit_Utilization CW1  ON pAssessments.F300 = CW1.HIPPS_Code
        JOIN #Request.prefix_db_lookup#.CW_Visit_Utilization CW2  ON pAssessments.F297 = CW2.HIPPS_Code      
        JOIN #Request.prefix_db_agency#.pPatients     ON pPatients.Patient_ID = pAssessments.Patient_ID
        LEFT OUTER JOIN  #Request.prefix_db_agency#.assessment_assign ON assessment_assign.Assmt_ID =  pAssessments.Assmt_ID
             AND assessment_assign.F26 = pAssessments.F26
        JOIN  #Request.prefix_db_lookup#.pEmployee ON pEmployee.Emp_ID =  assessment_assign.Emp_ID  
        WHERE pPatients.Status  < 1
        AND pp.Pay_frequency = 'Episodic'
        AND pAuths.Visitfreq_Placeholder = 0
        AND pAssessments.F25 = 1
        AND  pAssessments.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.F176 <= #now()#
                 AND  pAssessments.Status =0)
        AND pAssessments.Admit_ID  IN ( SELECT pAdmit.Admit_ID FROM #Request.prefix_db_agency#.pAdmit WHERE pAdmit.Status  = 0 and pAdmit.drafts  = 0)
        AND  pAuths_weeks.Status = 0
        AND ( pAuths_weeks.Total_visits  > 0 OR pAuths.prn_visits > 0)
        AND pAssessments.F321 IN (0,2)
        GROUP BY pAuths_weeks.Auth_ID 
        ORDER BY pPatients.Pt_Last ASC, pPatients.Pt_First ASC
    </cfquery>
    <cfset LUPA_threshold = 0 />
    <cfoutput query="LUPA_compliance">
         <cfif (episode EQ 1 AND firstcert_sch_count LT LUPA_First)  OR 
                    (episode EQ 2 AND  secondcert_sch_count LT LUPA_second) >
                <cfset LUPA_threshold = LUPA_threshold +  1 />
        </cfif>
    </cfoutput>


	<cfquery name="updateAgency" datasource="#Application.DataSrc#">
         UPDATE #Request.prefix_db_lookup#.Agency
          SET 
          missed_visitscount = #missed_visitscount#,
          auth_noncomp = #auth_noncomp#,
          orphans_symp_count = #orphans_symp_count#,
          orphans_meds_recon = #orphans_meds_recon#,
          missing_careplan_count = '#missing_careplan_count#',
          Proc_QA_count = '#Proc_QA_count#',
          LUPA_threshold =  #LUPA_threshold#         
		WHERE Agency_ID =  #agency_id#
	</cfquery>

    <cfif run_empcount EQ 1 >
        <cfquery  name="getemployees"  datasource="#Application.DataSrc#">
            SELECT pEmployee.Emp_ID FROM #Request.prefix_db_lookup#.pEmployee
            JOIN #Request.prefix_db_agency#.employee_auth ON employee_auth.eaID = pEmployee.Emp_ID
            WHERE pEmployee.Status = 0
            AND pEmployee.Loc_ID = '#agency_id#'
            AND pEmployee.Emp_Type like '%Employee%'
            AND employee_auth.eaRole like '%Field%'
        </cfquery> 
        <cfloop query="getemployees">
            <cfset Emp_missing_careplan_count = 0 >
            <cfquery name="GetEmpmissing_careplans" dbtype="query">
                SELECT * FROM Getmissing_careplans
                WHERE Emp_ID = '#Emp_ID#'
            </cfquery>
            <cfloop query="GetEmpmissing_careplans">
                 <cfif 
                     ((LEFT(Assessment_Reason_M0100,1) EQ 1 OR LEFT(Assessment_Reason_M0100,1) EQ 4)
                      AND (ptgoalsnotadded GT 0 OR notcreatedcareplan EQ 0 OR required_vital GT 0 OR standingorders_count EQ 0))    
                     OR incomplete_meds gt 0 
                    OR (LEFT(Assessment_Reason_M0100,2) EQ  'PT' AND PTdischargecount EQ 0 
                     AND  (ptgoalsnotadded GT 0 OR notcreatedcareplan EQ 0))
                    OR (LEFT(Assessment_Reason_M0100,2) EQ  'OT' AND OTdischargecount EQ 0  
                        AND  (ptgoalsnotadded GT 0 OR notcreatedcareplan EQ 0))
                    OR (LEFT(Assessment_Reason_M0100,2) EQ  'ST' AND STdischargecount EQ 0  
                        AND  (ptgoalsnotadded GT 0 OR notcreatedcareplan EQ 0))
                    OR (LEFT(Assessment_Reason_M0100,2) EQ  'SN' AND SNdischargecount EQ 0  
                        AND  (ptgoalsnotadded GT 0 OR notcreatedcareplan EQ 0)) >
                     <cfset Emp_missing_careplan_count = Emp_missing_careplan_count +  1 />
                </cfif>
            </cfloop>

            <cfquery name="GetEmpmissedvisits_lists" dbtype="query">
                SELECT * FROM GetmissedvisitsList
                WHERE Emp_ID = '#Emp_ID#'
            </cfquery>
            <cfset Emp_missed_visit = GetEmpmissedvisits_lists.recordcount />

            <cfquery name="GetEmpLUPA_compliance" dbtype="query">
                SELECT * FROM LUPA_compliance
                WHERE Emp_ID = '#Emp_ID#' AND
                ((episode = 1 AND firstcert_sch_count < LUPA_First)  
                OR (episode = 2 AND secondcert_sch_count < LUPA_second))
            </cfquery>
            <cfset Emp_LUPA_threshold = GetEmpLUPA_compliance.recordcount />

            <cfquery name="GetEmp_orphans" dbtype="query">
                SELECT * FROM GetAssessments
                WHERE Emp_ID = '#Emp_ID#' AND approved_count = 1
            </cfquery>
            <cfset Emp_orphans_symp_count = GetEmp_orphans.recordcount />
            
            <cfquery name="GetEmp_medsrecon" dbtype="query">
                SELECT * FROM getmedsrecon
                WHERE Emp_ID = '#Emp_ID#' 
            </cfquery>
            <cfset Emp_orphans_meds_recon = GetEmp_medsrecon.recordcount />
                
                
                

            <cfquery name="updateEmployeecounts" datasource="#Application.DataSrc#">
                 UPDATE #Request.prefix_db_lookup#.pEmployee
                  SET 
                  Emp_missing_careplan = #Emp_missing_careplan_count#,
                  Emp_missed_visit = #Emp_missed_visit#,
                  Emp_LUPA_threshold = #Emp_LUPA_threshold#,
                  Emp_orphans_symp_count = #Emp_orphans_symp_count#,
                  Emp_orphans_meds_recon = #Emp_orphans_meds_recon#
                  WHERE Emp_ID =  #getemployees.Emp_ID#
            </cfquery>    
        </cfloop>
    </cfif>





</cfloop>

