<!--- #10673 / 10613 / 10577 - Med completeness gate from visit screen (Assessment/Eval or Create Progress Note) — stagesecure only --->
<cfparam name="url.dest" default="">
<cfparam name="url.ID" default="">
<cfparam name="url.SID" default="0">
<cfparam name="url.AID" default="0">
<cfparam name="url.ATID" default="">
<cfparam name="url.type" default="">

<!--- #10673 / 10613: med gate on stage + prod --->
<cfset isStageSecureMedGate = (
	CGI.HTTP_HOST EQ "stagesecure.myhomecarebiz.com" OR CGI.SERVER_NAME EQ "stagesecure.myhomecarebiz.com"
	OR CGI.HTTP_HOST EQ "secure.myhomecarebiz.com" OR CGI.SERVER_NAME EQ "secure.myhomecarebiz.com"
)>

<cfif isStageSecureMedGate>
	<cfinclude template="../../dashboard/pending_visits_ai_review.inc.cfm">
</cfif>

<!--- index-content decrypts url.ID before this template runs; never pass a numeric ID back on redirects --->
<cfset patientId = Val(session.cs.patientid)>
<cfset encPatientId = "">
<cfif structKeyExists(session.cs, "enc_patientid")>
	<cfset encPatientId = Trim(session.cs.enc_patientid)>
</cfif>
<cfif Len(encPatientId) EQ 0 OR IsNumeric(encPatientId)>
	<cfif Len(Trim(url.ID)) AND NOT IsNumeric(url.ID)>
		<cfset encPatientId = Trim(url.ID)>
	<cfelseif patientId GT 0>
		<cfset encPatientId = encrypt(patientId, application.enckey, "AES", "Hex")>
	</cfif>
</cfif>
<cfif patientId EQ 0 AND Len(Trim(encPatientId)) AND NOT IsNumeric(encPatientId)>
	<cftry>
		<cfset patientId = Val(decrypt(encPatientId, application.enckey, "AES", "Hex"))>
		<cfcatch>
			<cfset patientId = 0>
		</cfcatch>
	</cftry>
</cfif>

<cfset encSid = Trim(url.SID)>
<cfset encAid = Trim(url.AID)>
<cfset scheduleId = 0>
<cfif Len(encSid) AND encSid NEQ "0">
	<cftry>
		<cfset scheduleId = Val(decrypt(encSid, application.enckey, "AES", "Hex"))>
		<cfcatch>
			<cfif IsNumeric(encSid)>
				<cfset scheduleId = Val(encSid)>
				<cfset encSid = encrypt(scheduleId, application.enckey, "AES", "Hex")>
			</cfif>
		</cfcatch>
	</cftry>
</cfif>

<!--- Keep return visit on the same Schedule_ID.
     Do NOT replace assessment AID from pSchedules.Assmt_ID: therapy Evals (OT/PT/ST)
     pass their own Assmt_ID, while the schedule row often points at episode OASIS (SOC/Recert). --->
<cfset dest = LCase(Trim(url.dest))>
<cfset scheduleEncAid = "">
<cfif scheduleId GT 0 AND patientId GT 0>
	<cfquery name="qGateSched" datasource="#Application.DataSrc#">
		SELECT Schedule_ID, Assmt_ID
		FROM #Request.prefix_db_agency#.pSchedules
		WHERE Schedule_ID = <cfqueryparam cfsqltype="cf_sql_integer" value="#scheduleId#">
		AND Patient_ID = <cfqueryparam cfsqltype="cf_sql_integer" value="#patientId#">
		AND Status = <cfqueryparam cfsqltype="cf_sql_integer" value="0">
	</cfquery>
	<cfif qGateSched.recordCount GT 0>
		<cfset encSid = encrypt(qGateSched.Schedule_ID, application.enckey, "AES", "Hex")>
		<cfif Val(qGateSched.Assmt_ID) GT 0>
			<cfset scheduleEncAid = encrypt(qGateSched.Assmt_ID, application.enckey, "AES", "Hex")>
		</cfif>
	</cfif>
</cfif>
<!--- Visit / progress-note returns use schedule Assmt_ID; assessment keeps inbound AID --->
<cfif dest NEQ "assessment" AND Len(scheduleEncAid)>
	<cfset encAid = scheduleEncAid>
<cfelseif (Len(Trim(encAid)) EQ 0 OR encAid EQ "0") AND Len(scheduleEncAid)>
	<cfset encAid = scheduleEncAid>
</cfif>

<cfset atidParam = encAid>
<cfif Len(Trim(url.ATID))>
	<cfset atidParam = url.ATID>
</cfif>
<cfset assessmentReturnUrl = "/patientadmin_new/index.cfm?page=patient&cat=assessment_form&AID=#encAid#&patient_id=#encPatientId#&rpt=&ATID=#atidParam#&type=#URLEncodedFormat(url.type)#&edit">
<cfset visitReturnUrl = "/patientadmin_new/index.cfm?page=patient&ID=#encPatientId#&cat=patientedit_visit&restrict=1&formonly=1&AID=#encAid#&SID=#encSid#&frm=bill">
<!--- #10673: after meds OK / Mark as Reviewed, resume Create Progress Note on the visit screen --->
<cfset progressNoteReturnUrl = visitReturnUrl & "&createpgnote=1">

<!--- Incomplete meds: send to Meds list; Mark as Reviewed returns to assessment or visit (stagesecure only) --->
<cfif isStageSecureMedGate AND patientId GT 0 AND patientHasIncompleteActiveMedsForAIReview(patientId)>
	<cfif dest EQ "assessment">
		<!--- Prefer assessment return URL over any leftover visit ScheduleID in session --->
		<cfset session.cs.ScheduleID = 0>
		<cfset structDelete(session.cs, "pendingVisitCreatePgNote")>
		<cfset enforcePatientMedReviewOrRedirect(patientId, encPatientId, 0, encAid, "", assessmentReturnUrl)>
	<cfelseif dest EQ "progressnote">
		<!--- #10673: Create Progress Note — always park return URL so Mark as Reviewed resumes create --->
		<cfset structDelete(session.cs, "pendingSocMedReturnUrl")>
		<cfset session.cs.pendingVisitCreatePgNote = 1>
		<cfset enforcePatientMedReviewOrRedirect(patientId, encPatientId, scheduleId, encAid, encSid, progressNoteReturnUrl)>
	<cfelse>
		<cfset structDelete(session.cs, "pendingVisitCreatePgNote")>
		<cfset enforcePatientMedReviewOrRedirect(patientId, encPatientId, scheduleId, encAid, encSid, visitReturnUrl)>
	</cfif>
</cfif>

<!--- Meds complete: continue to intended destination --->
<cfif dest EQ "assessment">
	<cflocation url="#assessmentReturnUrl#" addtoken="no">
<cfelseif dest EQ "progressnote">
	<cflocation url="#progressNoteReturnUrl#" addtoken="no">
<cfelse>
	<cflocation url="#visitReturnUrl#" addtoken="no">
</cfif>
