<cfcomponent displayname="Wound And Vital Functions" hint="I Return Wound And Vital Information" output="false">

	<cfset client.Loc_ID = 0 />
	
   <cffunction name="init" displayname="Initialize Component" access="public" returntype="Assessments" hint="I initialize and return the Assessments object.">
		<cfreturn this>
	</cffunction>


	<cffunction name="addEditWounds"  access="remote" output="Yes" returnformat="plain" returntype="string">   
		<cfargument name="Assmt_ID" required="yes" default="0">
		<cfargument name="VitalOrWound" required="yes" default="0">
		<cfargument name="Location" required="no" default="">
		<cfargument name="other_locations" required="no" default="">
		<cfargument name="Length" required="no" default="0">
		<cfargument name="Width" required="no" default="0">
		<cfargument name="Depth" required="no" default="0">
		<cfargument name="Description" required="no" default="0">
		<cfargument name="healingStage" required="no" default="">
		<cfargument name="action" required="no" default="">
		<cfargument name="Woundid" required="no" default="">
		<cfargument name="woundtype" required="no" default="">
		<cfargument name="Schedule_ID" required="no" default="0">
		<cfargument name="currenturl" required="no" default="">
		<cfargument name="woundBed" required="no" default="">
		<cfargument name="woundMargin" required="no" default="">
		<cfargument name="woundExudate" required="no" default="">
		<cfargument name="woundOdor" required="no" default="">
		<cfargument name="woundPain" required="no" default="">
		<cfargument name="woundTunneling" required="no" default="">
		<cfargument name="woundUnderm" required="no" default="">
		<cfargument name="woundGran" required="no" default="">
		<cfargument name="woundEpith" required="no" default="">
		<cfargument name="woundEschar" required="no" default="">
		<cfargument name="woundSlough" required="no" default="">
		<cfargument name="woundFib" required="no" default="">
		
		<!--- Strip UTF-8 BOM and other problematic characters from Description --->
		<cfif isSimpleValue(arguments.Description)>
			<cfset arguments.Description = Replace(arguments.Description, Chr(239) & Chr(187) & Chr(191), "", "ALL") />
			<cfset arguments.Description = Trim(arguments.Description) />
		</cfif>
		
		<cfif isNumeric(arguments.Length) EQ 0>
				<cfset arguments.Length = 0 />
		</cfif>
		<cfif isNumeric(arguments.Width) EQ 0>
			<cfset arguments.Width = 0 />
		</cfif>
		<cfif isNumeric(arguments.Depth) EQ 0>
			<cfset arguments.Depth = 0 />
		</cfif>
		<cfset maxnumber1 = max (arguments.Length, arguments.Width) />
		<cfset Paramhighvalue = max (maxnumber1, arguments.Depth) />
		<cfset Readings = arguments.Length + arguments.Width + arguments.Depth />

		<cfif arguments.action EQ 'update' AND val(arguments.Woundid)>
			<cfquery  result="insertpWoundsVitals" datasource="#Application.DataSrc#">
				UPDATE #Request.prefix_db_agency#.pWoundsVitals 
				SET
					Description = <cfqueryparam value="#arguments.Description#"  cfsqltype="CF_SQL_VARCHAR">,
					Location = 	<cfqueryparam value="#arguments.Location#"  cfsqltype="CF_SQL_VARCHAR">,
					other_locations =  <cfqueryparam value="#arguments.other_locations#"  cfsqltype="CF_SQL_VARCHAR">,
					Length = <cfqueryparam value="#arguments.Length#"  cfsqltype="CF_SQL_VARCHAR">, 
					Width = <cfqueryparam value="#arguments.Width#"  cfsqltype="CF_SQL_VARCHAR">, 
					Depth = <cfqueryparam value="#arguments.Depth#"  cfsqltype="CF_SQL_VARCHAR">,
					Param_Hi = <cfqueryparam value="#Readings#"  cfsqltype="CF_SQL_VARCHAR">,
					Reading1 = <cfqueryparam value="#Readings#"  cfsqltype="CF_SQL_VARCHAR">,
					Date_Change = <cfqueryparam value="#now()#" cfsqltype="cf_sql_timestamp">,
					Change_by = <cfqueryparam value = "#session.employeeid#" CFSQLType ="CF_SQL_INTEGER">,
					healingstage = 	<cfqueryparam value="#arguments.healingstage#"  cfsqltype="CF_SQL_VARCHAR">,
					woundtype = <cfqueryparam value="#arguments.woundtype#"  cfsqltype="CF_SQL_VARCHAR">,
					wnd_bed = <cfqueryparam value="#arguments.woundBed#"  cfsqltype="CF_SQL_VARCHAR">,
					wnd_margin = <cfqueryparam value="#arguments.woundMargin#"  cfsqltype="CF_SQL_VARCHAR">,
					wnd_exudate = <cfqueryparam value="#arguments.woundExudate#"  cfsqltype="CF_SQL_VARCHAR">,
					wnd_odor = <cfqueryparam value="#arguments.woundOdor#"  cfsqltype="CF_SQL_VARCHAR">,
					wnd_pain = <cfqueryparam value="#arguments.woundPain#"  cfsqltype="CF_SQL_VARCHAR">,
					wnd_tunneling = <cfqueryparam value="#arguments.woundTunneling#"  cfsqltype="CF_SQL_VARCHAR">,
					wnd_underm = <cfqueryparam value="#arguments.woundUnderm#"  cfsqltype="CF_SQL_VARCHAR">,
					wnd_gran = <cfqueryparam value="#arguments.woundGran#"  cfsqltype="CF_SQL_VARCHAR">,
					wnd_epith = <cfqueryparam value="#arguments.woundEpith#"  cfsqltype="CF_SQL_VARCHAR">,
					wnd_eschar = <cfqueryparam value="#arguments.woundEschar#"  cfsqltype="CF_SQL_VARCHAR">,
					wnd_slough = <cfqueryparam value="#arguments.woundSlough#"  cfsqltype="CF_SQL_VARCHAR">,
					wnd_fib = <cfqueryparam value="#arguments.woundFib#"  cfsqltype="CF_SQL_VARCHAR">
				WHERE
					ID = <cfqueryparam value = "#arguments.Woundid#" CFSQLType ="CF_SQL_INTEGER">		
			</cfquery>
		<cfelse>

			<cfquery  name="getpwound" datasource="#Application.DataSrc#">
		        SELECT  *  FROM #Request.prefix_db_agency#.pWoundsVitals 
		        WHERE  VitalOrWound = 'wound'
		        AND Assmt_ID = <cfqueryparam value="#arguments.Assmt_ID#"  cfsqltype="CF_SQL_INTEGER">
		        AND  status = 0 ORDER BY Pathway_ID DESC
		    </cfquery>
		    <cfset wounditemid = 201 />
		    <cfset woundpathid =  32 />
		    <cfif getpwound.recordcount gt 0 >
		    	<cfquery  name="getwounds" dbtype="query">
			        SELECT * FROM getpwound
			        WHERE  WoundType = '#arguments.woundtype#'
			    </cfquery>
			    <cfif getwounds.recordcount gt 0 >		    
		    		<cfset wounditemid = #getwounds.Item_ID# />
		    	<cfelse>
		    		<cfset wounditemid = #getpwound.Item_ID# + 1  />
		    	</cfif>
              </cfif>     
				<cfif arguments.woundtype contains '1 -'>
				    <cfset woundpathid =  30 />
				    <cfelseif arguments.woundtype contains '2 -'>
				    <cfset woundpathid =  34 />
				    <cfelseif arguments.woundtype contains '3 -'>
				    <cfset woundpathid =  171 />  
				    <cfelseif arguments.woundtype contains '4 -'>
				    <cfset woundpathid =  172 /> 
				    <cfelseif arguments.woundtype contains 'Unstageable due to'>
				    <cfset woundpathid =  173 /> 
				    <cfelseif arguments.woundtype contains 'Abrasion'>
				    <cfset woundpathid =  174 />  
				    <cfelseif arguments.woundtype contains 'Bite'>
				    <cfset woundpathid =  175 />
				    <cfelseif arguments.woundtype contains 'Burn'>
				    <cfset woundpathid =  176 />
				    <cfelseif arguments.woundtype contains 'Diabetic Ulcer'>
				    <cfset woundpathid =  177 />
				    <cfelseif arguments.woundtype contains 'Laceration'>
				    <cfset woundpathid =  178 />
				    <cfelseif arguments.woundtype contains 'Puncture'>
				    <cfset woundpathid =  179 />
				    <cfelseif arguments.woundtype contains 'Blister'>
				    <cfset woundpathid =  180 />      
				    <cfelseif arguments.woundtype contains 'Open Wound'>
				    <cfset woundpathid =  181 /> 
				     <cfelseif arguments.woundtype contains 'Surgical'>
				    <cfset woundpathid =  38 /> 
				    <cfelseif arguments.woundtype contains 'Stasis'>
				    <cfset woundpathid =  39 />  
				    <cfelseif arguments.woundtype contains 'Tracheost'>
				    <cfset woundpathid =  1 />
				    <cfelseif arguments.woundtype contains 'GI Ost'>
				    <cfset woundpathid =  52 /> 
				    <cfelseif arguments.woundtype contains 'GU Ost'>
				    <cfset woundpathid =  58 />    
				    <cfelse>
				    <cfset woundpathid =  32 />
				</cfif>
			
			 <!--- <cfif CGI.Remote_ADDR EQ '121.200.49.65'>
				<cfdump var="#woundpathid#">
				<cfdump var="#getwounds#">
			</cfif>  ---> 
			<cfset frompgnote  = 0 />
			<cfif arguments.currenturl contains 'patientedit_visit'>
				<cfset frompgnote  = 1/>
			</cfif>
			
			<cfquery  result="insertpWoundsVitals" datasource="#Application.DataSrc#">
				INSERT INTO  #Request.prefix_db_agency#.pWoundsVitals (Assmt_ID, Status, Pathway_ID, Item_ID,
						VitalOrWound, Description, Location, other_locations, Length, Width, Depth, Param_Hi, Reading1, Date_Create,Created_by,
						Date_Change,Change_by,healingstage, frompgnote, woundtype, wnd_bed, wnd_margin, wnd_exudate, wnd_odor, wnd_pain, wnd_tunneling, wnd_underm, wnd_gran, wnd_epith, wnd_eschar, wnd_slough, wnd_fib)
				VALUES 
						(<cfqueryparam value="#arguments.Assmt_ID#"  cfsqltype="CF_SQL_INTEGER">,
						<cfqueryparam value="0"  cfsqltype="CF_SQL_INTEGER">,
						<cfqueryparam value="#woundpathid#"  cfsqltype="CF_SQL_INTEGER">,
						<cfqueryparam value="#wounditemid#"  cfsqltype="CF_SQL_INTEGER">,
						<cfqueryparam value="#arguments.VitalOrWound#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#arguments.Description#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#arguments.Location#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#arguments.other_locations#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#arguments.Length#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#arguments.Width#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#arguments.Depth#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#Readings#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#Readings#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#now()#" cfsqltype="cf_sql_timestamp">,
						<cfqueryparam value = "#session.employeeid#" CFSQLType ="CF_SQL_INTEGER">,
						<cfqueryparam value="#now()#" cfsqltype="cf_sql_timestamp">,
						<cfqueryparam value = "#session.employeeid#" CFSQLType ="CF_SQL_INTEGER">,
						<cfqueryparam value="#arguments.healingstage#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#arguments.Schedule_ID#"  cfsqltype="CF_SQL_INTEGER">,
						<cfqueryparam value="#arguments.woundtype#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#arguments.woundBed#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#arguments.woundMargin#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#arguments.woundExudate#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#arguments.woundOdor#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#arguments.woundPain#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#arguments.woundTunneling#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#arguments.woundUnderm#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#arguments.woundGran#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#arguments.woundEpith#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#arguments.woundEschar#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#arguments.woundSlough#"  cfsqltype="CF_SQL_VARCHAR">,
						<cfqueryparam value="#arguments.woundFib#"  cfsqltype="CF_SQL_VARCHAR">)
			</cfquery>

		</cfif>

		<cfreturn 'success' />	     
	</cffunction>


	<cffunction name="WoundVitalDelete"  access="remote" output="Yes" returnformat="plain" returntype="string">   
		 <cfargument name="ID" required="yes" default="0">
		 <cfargument name="Assmt_ID" required="no" default="0">

		 <!--- Updating wounds status by woundsvital ID --->
			<cfquery  name="updatepAssessments" datasource="#Application.DataSrc#">
			    UPDATE #Request.prefix_db_agency#.pWoundsVitals SET 
			      Status = <cfqueryparam value="2"  cfsqltype="CF_SQL_INTEGER">,
			   	Date_Change = <cfqueryparam value="#now()#" cfsqltype="cf_sql_timestamp">,
				Change_by	= <cfqueryparam value = "#session.employeeid#" CFSQLType ="CF_SQL_INTEGER"> 
				WHERE ID =  <cfqueryparam CFSQLType="CF_SQL_INTEGER" value="#arguments.ID#"  >
			</cfquery>
			
		 <!--- Getting Admit ID from current assessment --->
		 	<cfquery  name="getass" datasource="#Application.DataSrc#">
		       SELECT * FROM #Request.prefix_db_agency#.pAssessments
		       WHERE Assmt_ID = <cfqueryparam value = "#arguments.Assmt_ID#" CFSQLType ="cf_sql_integer">
		       AND status = <cfqueryparam value="0" cfsqltype="cf_sql_integer">
		    </cfquery>
			<!--- Getting parent by admit id --->
			<cfset generalCFC = createObject("component", "components.general.assessments") />
			<cfset getsucess= generalCFC.getParentOASIS(getass.Admit_ID)/>

			<cfif arguments.Assmt_ID NEQ 0>
				<cfif structKeyExists(getsucess, 'Assmt_ID') AND getsucess.Assmt_ID NEQ 0>
					<cfset updateAssmt_ID = getsucess.Assmt_ID />
				<cfelse>
					<cfset updateAssmt_ID = arguments.Assmt_ID />
				</cfif >
				<cfquery  name="updatepproblems" datasource="#Application.DataSrc#">
				    UPDATE #Request.prefix_db_agency#.pProblem SET 
				      Status = <cfqueryparam value="2"  cfsqltype="CF_SQL_INTEGER">,
				   	Date_Change = <cfqueryparam value="#now()#" cfsqltype="cf_sql_timestamp">,
					Change_by	= <cfqueryparam value = "#session.employeeid#" CFSQLType ="CF_SQL_INTEGER"> 
					WHERE ques_id =  <cfqueryparam CFSQLType="CF_SQL_INTEGER" value="#arguments.ID#"  >
					AND Assmt_ID =  <cfqueryparam CFSQLType="CF_SQL_INTEGER" value="#updateAssmt_ID#"  >
					AND Skill =  <cfqueryparam CFSQLType="CF_SQL_VARCHAR" value="#getass.F27#"  >
				</cfquery>
			</cfif>

			<cfreturn 'success' />	     
	</cffunction>


	<cffunction name="getpWoundsVitals"  access="remote" returnformat="json">   
		<cfargument name="ID" required="yes" default="0">

			<cfset var returnStruct = StructNew()>
		
			<cfquery  name="qgetpWoundsVitals" datasource="#Application.DataSrc#">
			    SELECT * FROM #Request.prefix_db_agency#.pWoundsVitals WHERE ID = <cfqueryparam CFSQLType="CF_SQL_INTEGER" value="#arguments.ID#"  > 
			</cfquery>

			<cfset returnStruct = QueryGetRow(qgetpWoundsVitals,1)>

		<cfreturn  returnStruct />	     
	</cffunction>

    <cffunction name="addEditVitals"  access="remote" output="Yes" returnformat="plain" returntype="string">   
		<cfargument name="Assmt_ID" required="yes" default="0">
		<cfargument name="Description" required="no" default="">
		<cfargument name="Reading" required="no" default="">
        <cfargument name="Notes" required="no" default="">
		<cfargument name="pain_location" required="no" default="">
		<cfargument name="pain_duration" required="no" default="">
		<cfargument name="pain_exacerbate" required="no" default="">
		<cfargument name="pain_relief" required="no" default="">
		<cfargument name="pain_med_effectiveness" required="no" default="">
		<cfargument name="action" required="no" default="">
		<cfargument name="Vitalid" required="no" default="">
		<cfargument name="Schedule_ID" required="no" default="0">

		<!--- Strip UTF-8 BOM and other problematic characters from Description --->
		<cfif isSimpleValue(arguments.Description)>
			<cfset arguments.Description = Replace(arguments.Description, Chr(239) & Chr(187) & Chr(191), "", "ALL") />
			<cfset arguments.Description = Trim(arguments.Description) />
		</cfif>

		<cfset reading1 = arguments.Reading />
		<cfset reading2 = '' />
		<cfif arguments.Reading contains '.'>
			<cfset myArrayList = ListToArray(arguments.Reading,'.')>
			<cfset reading1 = myArrayList[1] />
			<cfset reading2 = myArrayList[2] />
		</cfif>

        <cfif arguments.action EQ 'update' AND val(arguments.Vitalid)>

            <cfquery  result="updatepVitals" datasource="#Application.DataSrc#">
                UPDATE #Request.prefix_db_agency#.pWoundsVitals 
                SET
                    Description = <cfqueryparam value="#arguments.Description#"  cfsqltype="CF_SQL_VARCHAR">,
                    Notes = 	<cfqueryparam value="#arguments.Notes#"  cfsqltype="CF_SQL_VARCHAR">,
                    Reading1 = <cfqueryparam value="#arguments.Reading#"  cfsqltype="CF_SQL_VARCHAR">, 
                    pain_location = <cfqueryparam value="#arguments.pain_location#"  cfsqltype="CF_SQL_VARCHAR">,
                    pain_duration = <cfqueryparam value="#arguments.pain_duration#"  cfsqltype="CF_SQL_VARCHAR">,
                    pain_exacerbate = <cfqueryparam value="#arguments.pain_exacerbate#"  cfsqltype="CF_SQL_VARCHAR">,
                    pain_relief = <cfqueryparam value="#arguments.pain_relief#"  cfsqltype="CF_SQL_VARCHAR">,
                    pain_med_effectiveness = <cfqueryparam value="#arguments.pain_med_effectiveness#"  cfsqltype="CF_SQL_VARCHAR">,
                    Date_Change = <cfqueryparam value="#now()#" cfsqltype="cf_sql_timestamp">,
                    Change_by = <cfqueryparam value = "#session.employeeid#" CFSQLType ="CF_SQL_INTEGER">
                WHERE
                    ID = <cfqueryparam value = "#arguments.Vitalid#" CFSQLType ="CF_SQL_INTEGER">		
            </cfquery>

			<cfif arguments.Schedule_ID NEQ 0>
				<cfquery name="updatepProgressVitals" datasource="#Application.DataSrc#">
					UPDATE #Request.prefix_db_agency#.pProgress
					SET
						Value_1 = <cfqueryparam value="#reading1#" cfsqltype="CF_SQL_VARCHAR">,
						Value_2 = <cfqueryparam value="#reading2#" cfsqltype="CF_SQL_VARCHAR">,
						Value_Sum = <cfqueryparam value="#arguments.Reading#" cfsqltype="CF_SQL_VARCHAR">,
						Notes = <cfqueryparam value="#arguments.Notes#" cfsqltype="CF_SQL_VARCHAR">,
						pain_location = <cfqueryparam value="#arguments.pain_location#" cfsqltype="CF_SQL_VARCHAR">,
						pain_duration = <cfqueryparam value="#arguments.pain_duration#" cfsqltype="CF_SQL_VARCHAR">,
						pain_exacerbate = <cfqueryparam value="#arguments.pain_exacerbate#" cfsqltype="CF_SQL_VARCHAR">,
						pain_relief = <cfqueryparam value="#arguments.pain_relief#" cfsqltype="CF_SQL_VARCHAR">,
						pain_med_effectiveness = <cfqueryparam value="#arguments.pain_med_effectiveness#" cfsqltype="CF_SQL_VARCHAR">,
						Date_Change = <cfqueryparam value="#now()#" cfsqltype="cf_sql_timestamp">,
						Change_by = <cfqueryparam value="#session.employeeid#" cfsqltype="CF_SQL_INTEGER">
					WHERE Assmt_ID = <cfqueryparam value="#arguments.Assmt_ID#" cfsqltype="CF_SQL_INTEGER">
					  AND Schedule_ID = <cfqueryparam value="#arguments.Schedule_ID#" cfsqltype="CF_SQL_INTEGER">
					  AND Careplan_ID = <cfqueryparam value="#arguments.Vitalid#" cfsqltype="CF_SQL_INTEGER">
					  AND Type = <cfqueryparam value="vital" cfsqltype="CF_SQL_VARCHAR">
					  AND Status = <cfqueryparam value="0" cfsqltype="CF_SQL_INTEGER">
				</cfquery>
			</cfif>

        <cfelse>
        	 <cfquery  result="getsvitals" datasource="#Application.DataSrc#">
                SELECT * FROM #Request.prefix_db_agency#.pWoundsVitals 
                WHERE Description = <cfqueryparam value = "#arguments.Description#" CFSQLType ="CF_SQL_VARCHAR">
                AND  Assmt_ID     = <cfqueryparam value = "#arguments.Assmt_ID#" CFSQLType ="CF_SQL_INTEGER">		
                AND  Status       = <cfqueryparam value = "0" CFSQLType ="CF_SQL_INTEGER">	
            </cfquery>

            <cfquery datasource="#Application.DataSrc#" name="GetVitals">
					SELECT  * FROM   #Request.prefix_db_lookup#.pValue_Lookup
					WHERE   Description = '#Description#'
			</cfquery>
			<cfset Item_ID =  0  />
		    <cfif GetVitals.recordcount GT 0 >
		    	<cfset Item_ID =  #GetVitals.Item_ID#  />		    	
		    </cfif>

		    <cfquery datasource="#Application.DataSrc#" name="GetVital_Param">
				SELECT  * FROM   #Request.prefix_db_agency#.pVital_Param
				WHERE   Item_ID = '#Item_ID#'
			</cfquery>

            <cfif getsvitals.recordcount EQ 0>
	            <cfquery  result="insertpVitals" datasource="#Application.DataSrc#">
	                INSERT INTO  #Request.prefix_db_agency#.pWoundsVitals (Assmt_ID, Status, Pathway_ID, Item_ID,
	                        VitalOrWound, Description, Param_Lo, Param_Hi, Notes, Reading1, pain_location, pain_duration,
	                        pain_exacerbate, pain_relief, pain_med_effectiveness, Date_Create,Created_by,
	                        Date_Change,Change_by)
	                VALUES 
	                        (<cfqueryparam value="#arguments.Assmt_ID#"  cfsqltype="CF_SQL_INTEGER">,
	                        <cfqueryparam value="0"  cfsqltype="CF_SQL_INTEGER">,
	                        <cfqueryparam value="#Item_ID#"  cfsqltype="CF_SQL_INTEGER">,
	                        <cfqueryparam value="#Item_ID#"  cfsqltype="CF_SQL_INTEGER">,
	                        <cfqueryparam value="vital"  cfsqltype="CF_SQL_VARCHAR">,
	                        <cfqueryparam value="#arguments.Description#"  cfsqltype="CF_SQL_VARCHAR">,
	                        <cfqueryparam value="#GetVital_Param.Value_Low#"  cfsqltype="CF_SQL_VARCHAR">,
	                        <cfqueryparam value="#GetVital_Param.Value_High#"  cfsqltype="CF_SQL_VARCHAR">,
	                        <cfqueryparam value="#arguments.Notes#"  cfsqltype="CF_SQL_VARCHAR">,
	                        <cfqueryparam value="#arguments.Reading#"  cfsqltype="CF_SQL_VARCHAR">,
	                        <cfqueryparam value="#arguments.pain_location#"  cfsqltype="CF_SQL_VARCHAR">,
	                        <cfqueryparam value="#arguments.pain_duration#"  cfsqltype="CF_SQL_VARCHAR">,
	                        <cfqueryparam value="#arguments.pain_exacerbate#"  cfsqltype="CF_SQL_VARCHAR">,
	                        <cfqueryparam value="#arguments.pain_relief#"  cfsqltype="CF_SQL_VARCHAR">,
	                        <cfqueryparam value="#arguments.pain_med_effectiveness#"  cfsqltype="CF_SQL_VARCHAR">,
	                        <cfqueryparam value="#now()#" cfsqltype="cf_sql_timestamp">,
	                        <cfqueryparam value = "#session.employeeid#" CFSQLType ="CF_SQL_INTEGER">,
	                        <cfqueryparam value="#now()#" cfsqltype="cf_sql_timestamp">,
	                        <cfqueryparam value = "#session.employeeid#" CFSQLType ="CF_SQL_INTEGER">)
	            </cfquery>
            </cfif>

            <cfif arguments.Schedule_ID NEQ 0 >
            	<cfquery  name="getexisvitals" datasource="#Application.DataSrc#">
				    SELECT * FROM #Request.prefix_db_agency#.pProgress	 
				    WHERE  Assmt_ID     = <cfqueryparam value = "#arguments.Assmt_ID#" CFSQLType ="CF_SQL_INTEGER">	
				    AND   Schedule_ID	= <cfqueryparam value = "#arguments.Schedule_ID#" CFSQLType ="CF_SQL_INTEGER">	
	                AND   Status        = <cfqueryparam value = "0" CFSQLType ="CF_SQL_INTEGER">
	                AND   Item_ID  		= <cfqueryparam value = "#Item_ID#" CFSQLType ="CF_SQL_VARCHAR">
	                AND   Type          =  <cfqueryparam CFSQLType="CF_SQL_VARCHAR" value="vital"> 
				</cfquery> 
				<cfif getexisvitals.recordcount EQ 0>
					<cfquery  name="getwoundvital" datasource="#Application.DataSrc#">
		                SELECT * FROM #Request.prefix_db_agency#.pWoundsVitals 
		                WHERE  Item_ID  		= <cfqueryparam value = "#Item_ID#" CFSQLType ="CF_SQL_VARCHAR">
		                AND  Assmt_ID     = <cfqueryparam value = "#arguments.Assmt_ID#" CFSQLType ="CF_SQL_INTEGER">		
		                AND  Status       = <cfqueryparam value = "0" CFSQLType ="CF_SQL_INTEGER">	
		            </cfquery>

					<cfquery  name="insertpVitals" datasource="#Application.DataSrc#">
			                INSERT INTO  #Request.prefix_db_agency#.pProgress (Assmt_ID, Careplan_ID, Item_ID, Schedule_ID, Description, Status,
			                 Type,  Value_1, Value_2, Notes, Value_Sum, pain_location, pain_duration, pain_exacerbate,
			                 pain_relief, pain_med_effectiveness, Date_Create, Created_by, Date_Change, Change_by)
			                VALUES 
			                        (<cfqueryparam value="#arguments.Assmt_ID#"  cfsqltype="CF_SQL_INTEGER">,
			                        <cfqueryparam value="#getwoundvital.ID#"  cfsqltype="CF_SQL_INTEGER">,
			                        <cfqueryparam value="#getwoundvital.Item_ID#"  cfsqltype="CF_SQL_INTEGER">,
			                        <cfqueryparam value="#arguments.Schedule_ID#"  cfsqltype="CF_SQL_INTEGER">,
			                        <cfqueryparam value="#arguments.Description#"  cfsqltype="CF_SQL_VARCHAR">,
			                        <cfqueryparam value="0"  cfsqltype="CF_SQL_INTEGER">,
			                        <cfqueryparam value="vital"  cfsqltype="CF_SQL_VARCHAR">,
			                        <cfqueryparam value="#reading1#"  cfsqltype="CF_SQL_VARCHAR">,
			                        <cfqueryparam value="#reading2#"  cfsqltype="CF_SQL_VARCHAR">,
			                        <cfqueryparam value="#arguments.Notes#"  cfsqltype="CF_SQL_VARCHAR">,
			                        <cfqueryparam value="#arguments.Reading#"  cfsqltype="CF_SQL_VARCHAR">,
			                        <cfqueryparam value="#arguments.pain_location#"  cfsqltype="CF_SQL_VARCHAR">,
			                        <cfqueryparam value="#arguments.pain_duration#"  cfsqltype="CF_SQL_VARCHAR">,
			                        <cfqueryparam value="#arguments.pain_exacerbate#"  cfsqltype="CF_SQL_VARCHAR">,
			                        <cfqueryparam value="#arguments.pain_relief#"  cfsqltype="CF_SQL_VARCHAR">,
			                        <cfqueryparam value="#arguments.pain_med_effectiveness#"  cfsqltype="CF_SQL_VARCHAR">,
			                        <cfqueryparam value="#now()#" cfsqltype="cf_sql_timestamp">,
			                        <cfqueryparam value = "#session.employeeid#" CFSQLType ="CF_SQL_INTEGER">,
			                        <cfqueryparam value="#now()#" cfsqltype="cf_sql_timestamp">,
			                        <cfqueryparam value = "#session.employeeid#" CFSQLType ="CF_SQL_INTEGER">)
			        </cfquery>
				</cfif>

            </cfif>

        </cfif>	

		<cfreturn 'success' />	     
	</cffunction>

	<cffunction name="getVitalDesc"  access="remote" returnformat="json">   
		<cfargument name="description" required="yes" default="0">

			<cfquery  name="qgetVitalDesc" datasource="#Application.DataSrc#">
			    SELECT * FROM #Request.prefix_db_lookup#.pValue_Lookup WHERE Description = <cfqueryparam CFSQLType="CF_SQL_VARCHAR" value="#arguments.description#"  > 
			</cfquery>


		<cfreturn  QueryToStruct(qgetVitalDesc) />	     
	</cffunction>



	<cffunction name="getVitalDescription"  access="remote" returnformat="json">   
		<cfargument name="description" required="yes" default="0">
		<cfargument name="Assmt_ID" required="yes" default="0">
		<cfargument name="Schedule_ID" required="no" default="0">

			<cfif arguments.Schedule_ID EQ 0 >
				<cfquery  name="getexistingvitals" datasource="#Application.DataSrc#">
				    SELECT * FROM #Request.prefix_db_agency#.pWoundsVitals 
				    WHERE   Assmt_ID     = <cfqueryparam value = "#arguments.Assmt_ID#" CFSQLType ="CF_SQL_INTEGER">		
	                AND  Status       = <cfqueryparam value = "0" CFSQLType ="CF_SQL_INTEGER">
	                AND VitalOrWound =  <cfqueryparam CFSQLType="CF_SQL_VARCHAR" value="vital"  > 
				</cfquery>
			<cfelse>
				<cfquery  name="getexistingvitals" datasource="#Application.DataSrc#">
				    SELECT * FROM #Request.prefix_db_agency#.pProgress	 
				    WHERE  Assmt_ID     = <cfqueryparam value = "#arguments.Assmt_ID#" CFSQLType ="CF_SQL_INTEGER">	
				    AND   Schedule_ID	= <cfqueryparam value = "#arguments.Schedule_ID#" CFSQLType ="CF_SQL_INTEGER">	
	                AND   Status        = <cfqueryparam value = "0" CFSQLType ="CF_SQL_INTEGER">
	                AND   Type          =  <cfqueryparam CFSQLType="CF_SQL_VARCHAR" value="vital"> 
				</cfquery>
			</cfif>
			<cfquery  name="qgetVitalDescriptions" datasource="#Application.DataSrc#">
			    SELECT * FROM #Request.prefix_db_lookup#.pValue_Lookup 
			    WHERE Description NOT IN (<cfqueryparam CFSQLType="CF_SQL_VARCHAR" value="#ValueList(getexistingvitals.Description)#"  list="yes"> )
			    AND Description <> 'wound'
                GROUP BY Item_ID
			</cfquery>

		<cfreturn  QueryToStruct(qgetVitalDescriptions) />	     
	</cffunction>



	<cffunction name="QueryToStruct" access="public" returntype="any" output="false"
    	hint="Converts an entire query or the given record to a struct. This might return a structure (single record) or an array of structures.">
		<cfargument name="Query" type="query" required="true" />
		<cfargument name="Row" type="numeric" required="false" default="0" />

		<cfscript>
			var LOCAL = StructNew();
			if (ARGUMENTS.Row){
				LOCAL.FromIndex = ARGUMENTS.Row;
				LOCAL.ToIndex = ARGUMENTS.Row;
			} else {
				LOCAL.FromIndex = 1;
				LOCAL.ToIndex = ARGUMENTS.Query.RecordCount;
			}
			LOCAL.Columns = ListToArray( ARGUMENTS.Query.ColumnList );
			LOCAL.ColumnCount = ArrayLen( LOCAL.Columns );
			LOCAL.DataArray = ArrayNew( 1 );
			for (LOCAL.RowIndex = LOCAL.FromIndex ; LOCAL.RowIndex LTE LOCAL.ToIndex ; LOCAL.RowIndex = (LOCAL.RowIndex + 1)){
				ArrayAppend( LOCAL.DataArray, StructNew() );
				LOCAL.DataArrayIndex = ArrayLen( LOCAL.DataArray );
				for (LOCAL.ColumnIndex = 1 ; LOCAL.ColumnIndex LTE LOCAL.ColumnCount ; LOCAL.ColumnIndex = (LOCAL.ColumnIndex + 1)){
					LOCAL.ColumnName = LOCAL.Columns[ LOCAL.ColumnIndex ];
					LOCAL.DataArray[ LOCAL.DataArrayIndex ][ LOCAL.ColumnName ] = ARGUMENTS.Query[ LOCAL.ColumnName ][ LOCAL.RowIndex ];
				}
			}
			if (ARGUMENTS.Row){
				return( LOCAL.DataArray[ 1 ] );
			} else {
				return( LOCAL.DataArray );
			}
		</cfscript>
	</cffunction>

</cfcomponent>