<!---assessment.cfc--->
<cfcomponent displayname="Getall_assessment_details"   hint="ColdFusion Component for Assessments">
      
    <cffunction name="get_all_answers"  access="remote" output="Yes" httpmethod="GET" returnformat="JSON">
			  <cfargument name="assessment_reason" required="yes" hint="assessment_reason"> 
			   <cfargument name="Assessment_completed" required="yes"  hint="Assessment_completed">  
			   <cfargument name="wizard"  default="0" hint="wizard">   
			    <cfargument name="cg"  default="0" hint="CG Quetions">   
			   <cfif assessment_reason EQ '3 - Resumption of care (after inpatient stay)'>
			   <cfset assessment_reason= '1 - Start of care - further visits planned' />
			   </cfif>
			  <cfquery name="get_label" datasource="#Application.DataSrc#">    
			          SELECT * FROM  #Request.prefix_db_lookup#.Assessment_Questions_lookup
                      JOIN #Request.prefix_db_lookup#.Assessment_Answer_lookup ON Assessment_Answer_lookup.question_id  = Assessment_Questions_lookup.id
					  WHERE  <cfif Assessment_completed gte '2019-01-01'>Assessment_Questions_lookup.Deleted <> 1   AND
					    <cfelse> Assessment_Questions_lookup.new_oasis <> 1 AND </cfif>
						<!---YEAR(now()) <= Assessment_Questions_lookup.ques_year AND--->
					   Assessment_Answer_lookup.Deleted <> 1  
					  AND  Assessment_Questions_lookup.assessment_reason = '#assessment_reason#'
					  <cfif #arguments.cg# eq 1>AND Assessment_Questions_lookup.questions like 'GG0%'</cfif>
					   <cfif wizard neq 0 > AND  Assessment_Questions_lookup.wizard = '#wizard#'
					    OR  (Assessment_Questions_lookup.wizard = '0' AND  Assessment_Questions_lookup.assessment_reason = '#assessment_reason#')</cfif>
					  ORDER BY Assessment_Questions_lookup.order_id ASC
			 </cfquery> 
			 <cfset label_name = '' >
			 <cfset responsekey=[] />
			 <cfoutput query="get_label" group="answer_label">
			    <!---<cfset label_name = listappend(label_name,#answer_label#) >--->
				 <cfset obj={"label_name"=#answer_label# ,"answer_type" = #answer_type#,"important" = #important#,"questions" = #questions#,
				 "alert_message" = #alert_message#,"show_text" = #show_text#,"wizard" = #get_label.wizard# }  />
                  <cfset arrayAppend(responsekey, obj) />
			 </cfoutput>
			 <cfset response={"answer_labels"= #responsekey#} />
			 <cfreturn response />
    </cffunction>
	
	<cffunction name="get_count_wizard"  access="public" output="Yes"  returntype="query">
	           <cfargument name="assessment_reason" required="yes" hint="assessment_reason">  
			   <cfargument name="Assessment_completed" required="yes"  hint="Assessment_completed"> 
			    <cfif assessment_reason EQ '3 - Resumption of care (after inpatient stay)'>
			   <cfset assessment_reason= '1 - Start of care - further visits planned' />
			   </cfif>
			  <cfquery name="get_all_questions" datasource="#Application.DataSrc#">    
			         SELECT MAX(wizard) as count FROM Assessment_Questions_lookup  
					 WHERE assessment_reason = '#assessment_reason#'
					 <cfif Assessment_completed gte '2019-01-01'>
					 AND Assessment_Questions_lookup.Deleted <> 1<cfelse>
					 AND Assessment_Questions_lookup.new_oasis <> 1 </cfif>
					<!--- YEAR(now()) <= Assessment_Questions_lookup.ques_year --->
              </cfquery> 
		   <cfreturn get_all_questions />
    </cffunction>
	
    <cffunction name="get_all_ques_ans"  access="public" output="Yes"  returntype="query">
	           <cfargument name="assessment_reason" required="yes" hint="assessment_reason">  
			    <cfargument name="Assessment_completed" required="yes"  hint="Assessment_completed">  
			    <cfargument name="wizard"  default="0" hint="wizard">  
				 <cfif assessment_reason EQ '3 - Resumption of care (after inpatient stay)'>
			   <cfset assessment_reason= '1 - Start of care - further visits planned' />
			   </cfif>
			  <cfquery name="get_all_questions" datasource="#Application.DataSrc#">    
			          SELECT * FROM  #Request.prefix_db_lookup#.Assessment_Questions_lookup
                      JOIN #Request.prefix_db_lookup#.Assessment_Answer_lookup ON Assessment_Answer_lookup.question_id  = Assessment_Questions_lookup.id
					  WHERE <cfif Assessment_completed gte '2019-01-01'>Assessment_Questions_lookup.Deleted <> 1   AND
					    <cfelse> Assessment_Questions_lookup.new_oasis <> 1 AND </cfif>
						<!---YEAR(now()) <= Assessment_Questions_lookup.ques_year AND--->
					   Assessment_Answer_lookup.Deleted <> 1 
					   AND Assessment_Questions_lookup.assessment_reason = '#assessment_reason#'
					  <cfif wizard neq 0 > AND  Assessment_Questions_lookup.wizard = '#wizard#' OR  (Assessment_Questions_lookup.wizard = '0' AND  Assessment_Questions_lookup.assessment_reason = '#assessment_reason#')</cfif>
					  ORDER BY Assessment_Questions_lookup.order_id ASC
			 </cfquery> 
		   <cfreturn get_all_questions />
    </cffunction>
	
	<cffunction name="get_pain_ques"  access="remote"output="Yes"  returntype="query">
			  <cfargument name="assessment_reason" required="yes" hint="assessment_reason">  
			   <cfargument name="type" required="yes" hint="type">  
			    <cfif assessment_reason EQ '3 - Resumption of care (after inpatient stay)'>
			   <cfset assessment_reason= '1 - Start of care - further visits planned' />
			   </cfif>
			  <cfquery name="get_label" datasource="#Application.DataSrc#">    
			          SELECT * FROM  #Request.prefix_db_lookup#.pain_braden_questions_lookup
					  WHERE  pain_braden_questions_lookup.Deleted <> 1 
					  AND pain_braden_questions_lookup.assessment_reason = '#assessment_reason#'
					  AND pain_braden_questions_lookup.type = '#type#'
					  <!---ORDER BY  order_id ASC--->
			 </cfquery> 
			 <cfreturn get_label />
    </cffunction>
	
	<cffunction name="get_pain_anw"  access="remote"output="Yes"  returntype="query">
			   <cfargument name="question_id" required="yes" hint="question_id">  
			  <cfquery name="get_ans" datasource="#Application.DataSrc#">    
			          SELECT * FROM  #Request.prefix_db_lookup#.pain_braden_answers_lookup
					  WHERE  pain_braden_answers_lookup.Deleted <> 1 
					  AND pain_braden_answers_lookup.question_id = #question_id#
			 </cfquery> 
			 <cfreturn get_ans />
    </cffunction>
	
	<cffunction name="get_other_assessement_answ"  access="remote" output="Yes" httpmethod="GET" returnformat="JSON">
			  <cfargument name="assessment_reason" required="yes" hint="assessment_reason">  
			  <cfargument name="type" required="yes" hint="type"> 
			   <cfif assessment_reason EQ '3 - Resumption of care (after inpatient stay)'>
			   <cfset assessment_reason= '1 - Start of care - further visits planned' />
			   </cfif>
			  <cfquery name="get_label" datasource="#Application.DataSrc#">    
			          SELECT * FROM  #Request.prefix_db_lookup#.pain_braden_questions_lookup
                      JOIN #Request.prefix_db_lookup#.pain_braden_answers_lookup ON pain_braden_answers_lookup.question_id  = pain_braden_questions_lookup.id
					  WHERE pain_braden_answers_lookup.Deleted <> 1 AND pain_braden_questions_lookup.Deleted <> 1 
					  AND pain_braden_questions_lookup.assessment_reason = '#assessment_reason#'
					  AND pain_braden_questions_lookup.type = '#type#'
			 </cfquery> 
			 <cfset label_name = '' >
			 <cfset responsekey=[] />
			 <cfoutput query="get_label" group="answer_label">
				 <cfset obj={"label_name"=#answer_label# ,"answer_type" = #answer_type#,"questions" = #questions#,
				 "alert_message" = #alert_message#  }  />
                  <cfset arrayAppend(responsekey, obj) />
			 </cfoutput>
			 <cfset response={"answer_labels"= #responsekey#} />
			 <cfreturn response />
    </cffunction>
	
	<cffunction name="get_pain_braden_ques"  access="remote"output="Yes"  returntype="query">
			  <cfargument name="assessment_reason" required="yes" hint="assessment_reason">  
			   <cfargument name="type" required="yes" hint="type">
			    <cfif assessment_reason EQ '3 - Resumption of care (after inpatient stay)'>
			   <cfset assessment_reason= '1 - Start of care - further visits planned' />
			   </cfif>  
			  <cfquery name="get_label" datasource="#Application.DataSrc#">    
			          SELECT * FROM  #Request.prefix_db_lookup#.pain_braden_questions_lookup
                      JOIN #Request.prefix_db_lookup#.pain_braden_answers_lookup ON pain_braden_answers_lookup.question_id  = pain_braden_questions_lookup.id
					  WHERE pain_braden_answers_lookup.Deleted <> 1 AND pain_braden_questions_lookup.Deleted <> 1 
					  AND pain_braden_questions_lookup.assessment_reason = '#assessment_reason#'
					  AND pain_braden_questions_lookup.type = '#type#'
			 </cfquery> 
			 <cfreturn get_label />
    </cffunction>
	
	<cffunction name="get_live_score"   access="remote" returnFormat= "JSON"  output="Yes">
	    <!---     <cfset count = 0 />
			  <cfquery name="get_all_questions" datasource="#Application.DataSrc#">    
					 SELECT * FROM Assessment_Answer_lookup WHERE DELETED <> 1 GROUP BY answer_label 
				</cfquery> 
			   <cfloop query="get_all_questions">
							<cfquery  name="get_count" datasource="#Application.DataSrc#">
							 SELECT * FROM #Request.prefix_db_agency#.Assessment_New  WHERE Assessment_ID =  '#session.cs.AssessmentId#'
							 AND  #get_all_questions.answer_label# IS NOT NULL
							</cfquery>
							<cfif get_count.recordcount gt 0>
							   <cfset count = count + 1 />
							</cfif>
				</cfloop>
				<cfif count gt 0>
				   <cfset count = #DecimalFormat((count/121)*100)# >
			</cfif>--->
		
		  <cfquery name="AssForm" datasource="#Application.DataSrc#">
					SELECT  *  FROM   #Request.prefix_db_agency#.Assessment_New
					WHERE  Patient_ID = '#session.cs.patientid#' 
					AND Assessment_ID = '#session.cs.assessment_id#'
					AND    Deleted <> 1
		    </cfquery>
					
			<cfset soc_date_referal = 0>
			<cfset date_diff_M0104 = 0 />
			<cfset date_diff_M0102 = 0 />
			<cfset tot_count = 0 />
			<cfif AssForm.Start_of_Care_M0030 neq '' and  AssForm.M0104_Date_of_Referral neq ''>
			<cfset date_diff_M0104 = #DateDiff("d", AssForm.Start_of_Care_M0030, AssForm.M0104_Date_of_Referral)# />
			</cfif>
			<cfif AssForm.Start_of_Care_M0030 neq '' and  AssForm.M0102_Physician_SOC neq ''>
			<cfset date_diff_M0102 = #DateDiff("d", AssForm.Start_of_Care_M0030, AssForm.M0102_Physician_SOC)# />
			</cfif>
			<cfif <!---AssForm.M0102_Physician_SOC EQ ""  OR  AssForm.M0104_Date_of_Referral EQ "" OR--->  date_diff_M0104 gt 2  OR  date_diff_M0102 gt 2>
			<cfset soc_date_referal = 1>
			<cfset tot_count = tot_count + 1 />
			</cfif>
			<cfif AssForm.M1240_Pain_Assess CONTAINS "0 - No standardized assessment conducted">
			<cfset tot_count = tot_count + 1 />
			</cfif>
			<cfif AssForm.M1300_Pressure CONTAINS  "0 - No assessment conducted">
			<cfset tot_count = tot_count + 1 />
			</cfif>
			<cfif AssForm.M1730_Depression contains "0 - No">
			<cfset tot_count = tot_count + 1 />
			</cfif>
			<cfif AssForm.M1910_Fall_Risk contains "0 - No multi-factor falls risk assessment conducted.">
			<cfset tot_count = tot_count + 1 />
			</cfif>
			<cfif AssForm.M2010_Med_Edu contains "0 - No">
			<cfset tot_count = tot_count + 1 />
			</cfif>
			<cfif AssForm.M2250e_Pain EQ "0 - No">
			<cfset tot_count = tot_count + 1 />
			</cfif>
			<cfif AssForm.M2250b_Diabetic contains "0 - No">
			<cfset tot_count = tot_count + 1 />
			</cfif>
			<cfif AssForm.M2250f_PressUlc contains "0 - No">
			<cfset tot_count = tot_count + 1 />
			</cfif>
			<cfif AssForm.M2250g_PressUlcMoist contains "0 - No">
			<cfset tot_count = tot_count + 1 />
			</cfif>
			<cfset tot_coun = 10 - tot_count />
			<cfset average_SOC = tot_coun * 10 />
             <cfset response_key={"statusCode"= 200,"statusText"= 'success',"data"= #average_SOC# } />
			<cfreturn  response_key >
	</cffunction>		
    
    <cffunction name="get_M0230diagnasis"  access="remote"output="Yes"  returntype="query">
			   <cfargument name="patient_id" hint="patient_id" default="#session.cs.patientid#">  
			   <cfargument name="assessment_id" hint="assessment_id" default="#session.cs.AssessmentId#">
                <cfquery name="M0230diagnasis" datasource="#Application.DataSrc#">
                    SELECT Diagnosis_ID,Diagnosis,Short_Diagnosis,Text_ICD,M0245_ICD,
                    Severity,ICD,CONVERT(Diagnosis.Dx_Order, CHAR(10)) as Dx_Order,Primary_Diagnosis,DG_Usage,
                    Secondary_Diagnosis,DG_Type,error_check from #Request.prefix_db_agency#.Diagnosis 
                     WHERE Assessment_ID= <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.assessment_id#"> 
                     AND patient_ID = <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.patient_id#"> 
                     AND M0230_Link like '%M0230%' and M0230_Link is not null
                     order by Dx_Order asc
                </cfquery>
     <cfreturn M0230diagnasis />
    </cffunction>
    			
    <cffunction name="get_companion_diagnosis"  access="remote"output="Yes"  returntype="query">
			  <cfargument name="diagnosis" required="yes" hint="diagnosis">  
			   <cfargument name="diagnosis_type" hint="diagnosis_type" default="1">
			  <cfquery name="getcomp_diag" datasource="#Application.DataSrc#">    
			          SELECT * FROM  #Request.prefix_db_lookup#.companion_diagnosis_lookup
					  WHERE 
                      <cfif #arguments.diagnosis_type# eq  '1' >
                      companion_diagnosis_lookup.diagnosis_1 = <cfqueryparam value="#arguments.diagnosis#"  cfsqltype="cf_sql_varchar">
					  <cfelse>
                       companion_diagnosis_lookup.diagnosis_2 = <cfqueryparam value="#arguments.diagnosis#"  cfsqltype="cf_sql_varchar">
                      </cfif>
			 </cfquery> 
			 <cfreturn getcomp_diag />
    </cffunction>
    			
	 <cffunction name="getassessment"  access="remote"output="Yes"  returntype="query">
			  <cfargument name="assessment_id"  hint="assessment_id" default="#session.cs.AssessmentId#">  
			  <cfquery name="get_assessment" datasource="#Application.DataSrc#">    
			          SELECT * FROM  #Request.prefix_db_agency#.Assessment_New
                      JOIN #Request.prefix_db_agency#.patient ON patient.Patient_ID = Assessment_New.Patient_ID
					  WHERE Assessment_ID = <cfqueryparam value="#arguments.assessment_id#"  cfsqltype="cf_sql_integer">
			 </cfquery> 
			 <cfreturn get_assessment />
    </cffunction>
    
    <cffunction name="get_discharge_assessment"  access="remote"output="Yes"  returntype="query">
			  <cfargument name="Start_of_Care_M0030" type="date" hint="Start_of_Care_M0030"  required="yes">
              <cfargument name="patient_id"  hint="patient_id"  default="#session.cs.patientid#">    
			  <cfquery name="get_discharge" datasource="#Application.DataSrc#">    
			          SELECT * FROM  #Request.prefix_db_agency#.Assessment_New
					  WHERE  Patient_ID = <cfqueryparam value="#arguments.patient_id#"  cfsqltype="cf_sql_integer">
                      AND Start_of_Care_M0030 =<cfqueryparam value="#DateFormat(arguments.Start_of_Care_M0030,'yyyy-mm-dd')#" cfsqltype="cf_sql_date">
                      AND Assessment_Reason_M0100 = '9 - Discharge from agency'  ORDER BY Assessment_ID DESC LIMIT 0,1
			 </cfquery> 
			 <cfreturn get_discharge />
    </cffunction>
    
    
     <cffunction name="getcoding_result"  access="remote"output="Yes"  returntype="query">
			   <cfargument name="patient_id" hint="patient_id" default="#session.cs.patientid#">  
               <cfargument name="assessment_id"  hint="assessment_id" default="#session.cs.AssessmentId#"> 
               <cfargument name="Question_ID" hint="Question_ID"  required="yes" >   
			    <cfquery name="coding_results" datasource="#Application.DataSrc#"> 
                     SELECT * FROM #Request.prefix_db_agency#.Coding_Results
                     WHERE Patient_ID =  <cfqueryparam value="#arguments.patient_id#"  cfsqltype="cf_sql_integer">
                     AND Assessment_ID = <cfqueryparam value="#arguments.assessment_id#"  cfsqltype="cf_sql_integer"> 
                     AND Question_ID =   <cfqueryparam value="#arguments.Question_ID#"  cfsqltype="cf_sql_integer"> 
			    </cfquery> 
			 <cfreturn coding_results />
    </cffunction>
    
    
    
    
</cfcomponent>