<!--- Reusable validation: Check if required patient and admit fields are complete --->
<!--- This file sets canEditOASIS variable and missingFieldsList --->
<!--- Parameters: admitID (required), patientID (required, defaults to session.cs.patientid) --->
<cfparam name="attributes.admitID" default="0" />
<cfparam name="attributes.patientID" default="#session.cs.patientid#" />

<cfset canEditOASIS = true />
<cfset missingFieldsMessage = "" />
<cfset missingFieldsList = "" />
<cfset missingPatientFieldsList = "" />
<cfset missingAdmitFieldsList = "" />

<cfif attributes.admitID GT 0>
    <!--- Check pPatient fields --->
    <cfquery name="checkPatientFields" datasource="#Application.DataSrc#">
        SELECT Pt_Agy_ID, Pt_First, Pt_Last, Pt_Street, Pt_City, Pt_State, Pt_Phone, Pt_Zip, Pt_DOB, Pt_Gender
        FROM #Request.prefix_db_agency#.pPatients
        WHERE Patient_ID = <cfqueryparam value="#attributes.patientID#" cfsqltype="cf_sql_integer">
        AND Status < 2
    </cfquery>
    
    <!--- Check pAdmit fields --->
    <cfquery name="checkAdmitFields" datasource="#Application.DataSrc#">
        SELECT Status, Admit_Type, M0104_PHYSN_RFRL_DT, Refer_Phys_ID, M0102_PHYSN_ORDRD_SOCROC_DT, 
               COALESCE(M0102_PHYSN_ORDRD_SOCROC_DT_NA, 0) AS M0102_PHYSN_ORDRD_SOCROC_DT_NA,
               Render_Phys_ID, M0030_START_CARE_DT, Clinical_Manager, Case_Manager
        FROM #Request.prefix_db_agency#.pAdmit
        WHERE Admit_ID = <cfqueryparam value="#attributes.admitID#" cfsqltype="cf_sql_integer">
        AND Patient_ID = <cfqueryparam value="#attributes.patientID#" cfsqltype="cf_sql_integer">
        AND Status IN (0)
    </cfquery>
    
    <!--- Check pPatient fields --->
    <cfif checkPatientFields.recordcount GT 0>
        <cfif checkPatientFields.Pt_Agy_ID EQ "" OR checkPatientFields.Pt_Agy_ID EQ 0>
            <cfset missingFieldsList = ListAppend(missingFieldsList, "Pt_Agy_ID", ", ") />
            <cfset missingPatientFieldsList = ListAppend(missingPatientFieldsList, "Pt_Agy_ID", ", ") />
        </cfif>
        <cfif checkPatientFields.Pt_First EQ "" OR checkPatientFields.Pt_First EQ "PLACEHOLDER">
            <cfset missingFieldsList = ListAppend(missingFieldsList, "Pt_First", ", ") />
            <cfset missingPatientFieldsList = ListAppend(missingPatientFieldsList, "Pt_First", ", ") />
        </cfif>
        <cfif checkPatientFields.Pt_Last EQ "" OR checkPatientFields.Pt_Last EQ "PLACEHOLDER">
            <cfset missingFieldsList = ListAppend(missingFieldsList, "Pt_Last", ", ") />
            <cfset missingPatientFieldsList = ListAppend(missingPatientFieldsList, "Pt_Last", ", ") />
        </cfif>
        <cfif checkPatientFields.Pt_Street EQ "" OR checkPatientFields.Pt_Street EQ "PLACEHOLDER">
            <cfset missingFieldsList = ListAppend(missingFieldsList, "Pt_Street", ", ") />
            <cfset missingPatientFieldsList = ListAppend(missingPatientFieldsList, "Pt_Street", ", ") />
        </cfif>
        <cfif checkPatientFields.Pt_City EQ "" OR checkPatientFields.Pt_City EQ "PLACEHOLDER">
            <cfset missingFieldsList = ListAppend(missingFieldsList, "Pt_City", ", ") />
            <cfset missingPatientFieldsList = ListAppend(missingPatientFieldsList, "Pt_City", ", ") />
        </cfif>
        <cfif checkPatientFields.Pt_State EQ "" OR checkPatientFields.Pt_State EQ "PLACEHOLDER">
            <cfset missingFieldsList = ListAppend(missingFieldsList, "Pt_State", ", ") />
            <cfset missingPatientFieldsList = ListAppend(missingPatientFieldsList, "Pt_State", ", ") />
        </cfif>
        <cfif checkPatientFields.Pt_Phone EQ "" OR checkPatientFields.Pt_Phone EQ "PLACEHOLDER">
            <cfset missingFieldsList = ListAppend(missingFieldsList, "Pt_Phone", ", ") />
            <cfset missingPatientFieldsList = ListAppend(missingPatientFieldsList, "Pt_Phone", ", ") />
        </cfif>
        <cfif checkPatientFields.Pt_Zip EQ "" OR checkPatientFields.Pt_Zip EQ "PLACEHOLDER">
            <cfset missingFieldsList = ListAppend(missingFieldsList, "Pt_Zip", ", ") />
            <cfset missingPatientFieldsList = ListAppend(missingPatientFieldsList, "Pt_Zip", ", ") />
        </cfif>
        <cfif checkPatientFields.Pt_DOB EQ "" OR checkPatientFields.Pt_DOB EQ "PLACEHOLDER">
            <cfset missingFieldsList = ListAppend(missingFieldsList, "Pt_DOB", ", ") />
            <cfset missingPatientFieldsList = ListAppend(missingPatientFieldsList, "Pt_DOB", ", ") />
        </cfif>
        <cfif checkPatientFields.Pt_Gender EQ "" OR checkPatientFields.Pt_Gender EQ "PLACEHOLDER">
            <cfset missingFieldsList = ListAppend(missingFieldsList, "Pt_Gender", ", ") />
            <cfset missingPatientFieldsList = ListAppend(missingPatientFieldsList, "Pt_Gender", ", ") />
        </cfif>
    <cfelse>
        <cfset canEditOASIS = false />
        <cfset missingFieldsMessage = "Patient record not found" />
    </cfif>
    
    <!--- Check pAdmit fields --->
    <cfif checkAdmitFields.recordcount GT 0>
        <cfset isNonMedicalAdmit = (CompareNoCase(Trim(checkAdmitFields.Admit_Type), "Non-Medical") EQ 0) />

        <cfif NOT isNonMedicalAdmit>
            <cfif checkAdmitFields.M0104_PHYSN_RFRL_DT EQ "" OR checkAdmitFields.M0104_PHYSN_RFRL_DT EQ "PLACEHOLDER">
                <cfset missingFieldsList = ListAppend(missingFieldsList, "M0104_PHYSN_RFRL_DT", ", ") />
                <cfset missingAdmitFieldsList = ListAppend(missingAdmitFieldsList, "M0104_PHYSN_RFRL_DT", ", ") />
            </cfif>
            <cfif checkAdmitFields.Refer_Phys_ID EQ "" OR checkAdmitFields.Refer_Phys_ID EQ 0>
                <cfset missingFieldsList = ListAppend(missingFieldsList, "Refer_Phys_ID", ", ") />
                <cfset missingAdmitFieldsList = ListAppend(missingAdmitFieldsList, "Refer_Phys_ID", ", ") />
            </cfif>
            <!--- M0102 validation: If M0102 has a valid date, M0102NA is not required --->
            <cfset M0102_isValid = false />
            <cfif NOT IsNull(checkAdmitFields.M0102_PHYSN_ORDRD_SOCROC_DT) AND 
                  checkAdmitFields.M0102_PHYSN_ORDRD_SOCROC_DT NEQ "" AND 
                  checkAdmitFields.M0102_PHYSN_ORDRD_SOCROC_DT NEQ "PLACEHOLDER" AND
                  IsDate(checkAdmitFields.M0102_PHYSN_ORDRD_SOCROC_DT)>
                <cfset M0102_isValid = true />
            </cfif>
            <cfif NOT M0102_isValid AND 
                  (checkAdmitFields.M0102_PHYSN_ORDRD_SOCROC_DT_NA EQ "" OR checkAdmitFields.M0102_PHYSN_ORDRD_SOCROC_DT_NA EQ 0)>
                <cfset missingFieldsList = ListAppend(missingFieldsList, "M0102_PHYSN_ORDRD_SOCROC_DT or M0102_PHYSN_ORDRD_SOCROC_DT_NA", ", ") />
                <cfset missingAdmitFieldsList = ListAppend(missingAdmitFieldsList, "M0102_PHYSN_ORDRD_SOCROC_DT or M0102_PHYSN_ORDRD_SOCROC_DT_NA", ", ") />
            </cfif>
            <cfif checkAdmitFields.Render_Phys_ID EQ "" OR checkAdmitFields.Render_Phys_ID EQ 0>
                <cfset missingFieldsList = ListAppend(missingFieldsList, "Render_Phys_ID", ", ") />
                <cfset missingAdmitFieldsList = ListAppend(missingAdmitFieldsList, "Render_Phys_ID", ", ") />
            </cfif>
        </cfif>

        <cfif checkAdmitFields.M0030_START_CARE_DT EQ "" OR checkAdmitFields.M0030_START_CARE_DT EQ "PLACEHOLDER">
            <cfset missingFieldsList = ListAppend(missingFieldsList, "M0030_START_CARE_DT", ", ") />
            <cfset missingAdmitFieldsList = ListAppend(missingAdmitFieldsList, "M0030_START_CARE_DT", ", ") />
        </cfif>
        <cfif checkAdmitFields.Clinical_Manager EQ "" OR checkAdmitFields.Clinical_Manager EQ 0>
            <cfset missingFieldsList = ListAppend(missingFieldsList, "Clinical_Manager", ", ") />
            <cfset missingAdmitFieldsList = ListAppend(missingAdmitFieldsList, "Clinical_Manager", ", ") />
        </cfif>
        <cfif checkAdmitFields.Case_Manager EQ "" OR checkAdmitFields.Case_Manager EQ 0>
            <cfset missingFieldsList = ListAppend(missingFieldsList, "Case_Manager", ", ") />
            <cfset missingAdmitFieldsList = ListAppend(missingAdmitFieldsList, "Case_Manager", ", ") />
        </cfif>
    <cfelse>
        <cfset canEditOASIS = false />
        <cfif missingFieldsMessage EQ "">
            <cfset missingFieldsMessage = "Admission record not found" />
        </cfif>
    </cfif>
    
    <!--- Set canEditOASIS to false if there are missing fields --->
    <cfif missingFieldsList NEQ "">
        <cfset canEditOASIS = false />
    </cfif>
</cfif>

