Преглед изворни кода

[진료관리] 알람 임계치 설정 기능 추가.

sjpark пре 4 година
родитељ
комит
725cd2d0f9

+ 11 - 2
src/main/java/com/lemon/lifecenter/controller/ClinicController.java

@@ -148,12 +148,18 @@ public class ClinicController extends LifeCenterController {
 //			result = clinicService.selectPHRLatestList(dto);
 //		}
 
+    // 알람 임계치 정보
+    ClinicConfigurationDTO configDto = new ClinicConfigurationDTO();
+		configDto.setCenterCode(Integer.parseInt(centerCode));
+		configDto = clinicService.selectConfiguration(configDto);
+
 		ModelAndView mv = setMV("clinic/state");
 
 		mv.addObject("page", page);
 		mv.addObject("searchText", searchText);
 		mv.addObject("filter", filter);
 		mv.addObject("total", total);
+    mv.addObject("config", configDto);
 //		mv.addObject("items", result);
 
 		return mv;
@@ -252,11 +258,14 @@ public class ClinicController extends LifeCenterController {
 
 		String centerCode = LifeCenterSessionController.getSession( request, "sesCenterCode" );
 
-
+		ClinicConfigurationDTO dto = new ClinicConfigurationDTO();
+		dto.setCenterCode(Integer.parseInt(centerCode));
+		
+		dto = clinicService.selectConfiguration(dto);
 
 		ModelAndView mv = setMV("clinic/config");
 
-//		mv.addObject("info", dto);
+		mv.addObject("config", dto);
 
 		return mv;
 	}

+ 4 - 3
src/main/resources/mybatis/mapper/center/clinicConfiguration.xml

@@ -66,9 +66,9 @@
 				oxygen_saturation_threshold				AS oxygenSaturationThreshold,
 				blood_sugar_threshold_min				AS bloodSugarThresholdMin,
 				blood_sugar_threshold_max				AS bloodSugerThresholdMax
-		FROM clinic_configuration c, patient_care p
+		FROM clinic_configuration
 		WHERE 
-			center_code = p.center_code
+			center_code = #{centerCode}
 	]]>
     </select>
      <select id="selectConfigurationWithPatient" parameterType="ClinicConfigurationDTO" resultType="ClinicConfigurationDTO">
@@ -107,7 +107,8 @@
 				blood_pressure_display_yn				= #{bloodPressureDisplayYN},
 				blood_sugar_display_yn					= #{bloodSugarDisplayYN},
 				symptom_display_yn						= #{symptomDisplayYN}
-			center_code = #{centerCode}
+      WHERE
+			  center_code = #{centerCode}
 	]]>
     </update>
     <update id="updateThresholdConfiguration" parameterType="ClinicConfigurationDTO">

+ 113 - 20
src/main/webapp/WEB-INF/jsp/clinic/config.jsp

@@ -7,18 +7,65 @@
 <link rel="stylesheet" href="/resources/bower_components/mdi/css/materialdesignicons.min.css">
 <script>
 
+function ajaxErrorHandler(request, status, error){
+	if (request.status === 0) {
+        alert('Not connect.\n Verify Network.');
+    } 
+    else if (request.status == 400) {
+        alert('Server understood the request, but request content was invalid. [400]' + '\n\n' + request.responseText);
+    } 
+    else if (request.status == 401) {
+        alert('Unauthorized access. [401]' + '\n\n' + request.responseText);
+    } 
+    else if (request.status == 403) {
+        alert('Forbidden resource can not be accessed. [403]' + '\n\n' + request.responseText);
+    } 
+    else if (request.status == 404) {
+        alert('Requested page not found. [404]' + '\n\n' + request.responseText);
+    } 
+    else if (request.status == 500) {
+        alert('Internal server error. [500]' + '\n\n' + request.responseText);
+    } 
+    else if (request.status == 503) {
+        alert('Service unavailable. [503]' + '\n\n' + request.responseText);
+    } 
+    else if (status === 'parsererror') {
+        alert('Requested JSON parse failed. [Failed]' + '\n\n' + request.responseText);
+    } 
+    else if (status === 'timeout') {
+        alert('Time out error. [Timeout]' + '\n\n' + request.responseText);
+    } 
+    else if (status === 'abort') {
+        alert('Ajax request aborted. [Aborted]' + '\n\n' + request.responseText);
+    } 
+    else {
+        alert('Uncaught Error.' + '\n\n' + request.responseText);
+    }
+}
+
 function saveDisplayItem() {
 
+  var centerCode = "${data._SES_CENTER_CODE}";
+  
   var temperatureDisplayYN = $('input:checkbox[id="displayItemTemperature"]').is(":checked") == true ? "Y" : "N";
-  var systolicBloodPressureDisplayYN = $('input:checkbox[id="displayItemBloodPressure"]').is(":checked") == true ? "Y" : "N";
-  var diastolicBloodPressureDisplayYN = $('input:checkbox[id="displayItemBloodPressure"]').is(":checked") == true ? "Y" : "N";
+  var bloodPressureDisplayYN = $('input:checkbox[id="displayItemBloodPressure"]').is(":checked") == true ? "Y" : "N";
   var pulseRateDisplayYN = $('input:checkbox[id="displayItemPulseRate"]').is(":checked") == true ? "Y" : "N";
   var oxygenSaturationDisplayYN = $('input:checkbox[id="displayItemOxygenSaturation"]').is(":checked") == true ? "Y" : "N";
   var bloodSugarDisplayYN = $('input:checkbox[id="displayItemBloodSugar"]').is(":checked") == true ? "Y" : "N";
   var symptomDisplayYN = $('input:checkbox[id="displayItemSymptom"]').is(":checked") == true ? "Y" : "N";
 
+  var params = {
+    centerCode: centerCode,
+    temperatureDisplayYN: temperatureDisplayYN, 
+    bloodPressureDisplayYN: bloodPressureDisplayYN,
+    pulseRateDisplayYN: pulseRateDisplayYN,
+    oxygenSaturationDisplayYN: oxygenSaturationDisplayYN,
+    bloodSugarDisplayYN: bloodSugarDisplayYN,
+    symptomDisplayYN: symptomDisplayYN,
+  };
+
   $.ajax({
-        url      : "./api/configuration",
+        url      : "./api/configuration/display",
         data     : params,
         method   : "PATCH",
         dataType : "json",
@@ -32,8 +79,36 @@ function saveDisplayItem() {
 }
 
 function saveAlarmValue() {
+
+  var centerCode = "${data._SES_CENTER_CODE}";
+
+  var temperatureThreshold = parseFloat($("#temperatureThreshold").val());
+  var systolicBloodPressureThresholdMin = parseInt($("#systolicBloodPressureThresholdMin").val(), 10);
+  var systolicBloodPressureThresholdMax = parseInt($("#systolicBloodPressureThresholdMax").val(), 10);
+  var diastolicBloodPressureThresholdMin = parseInt($("#diastolicBloodPressureThresholdMin").val(), 10);
+  var diastolicBloodPressureThresholdMax = parseInt($("#diastolicBloodPressureThresholdMax").val(), 10);
+  var pulseRateThresholdMin = parseInt($("#pulseRateThresholdMin").val(), 10);
+  var pulseRateThresholdMax = parseInt($("#pulseRateThresholdMax").val(), 10);
+  var oxygenSaturationThreshold = parseInt($("#oxygenSaturationThreshold").val(), 10);
+  var bloodSugarThresholdMin = parseInt($("#bloodSugarThresholdMin").val(), 10);
+  var bloodSugerThresholdMax = parseInt($("#bloodSugerThresholdMax").val(), 10);
+
+  var params = {
+    centerCode: centerCode,
+    temperatureThreshold, temperatureThreshold,
+    systolicBloodPressureThresholdMin, systolicBloodPressureThresholdMin,
+    systolicBloodPressureThresholdMax, systolicBloodPressureThresholdMax,
+    diastolicBloodPressureThresholdMin, diastolicBloodPressureThresholdMin,
+    diastolicBloodPressureThresholdMax, diastolicBloodPressureThresholdMax,
+    pulseRateThresholdMin, pulseRateThresholdMin,
+    pulseRateThresholdMax, pulseRateThresholdMax,
+    oxygenSaturationThreshold, oxygenSaturationThreshold,
+    bloodSugarThresholdMin, bloodSugarThresholdMin,
+    bloodSugerThresholdMax, bloodSugerThresholdMax,
+  }
+
   $.ajax({
-        url      : "./api/configuration",
+        url      : "./api/configuration/threshold",
         data     : params,
         method   : "PATCH",
         dataType : "json",
@@ -111,12 +186,19 @@ $(document).ready(function() {
                     </div>
                     <div class="col-lg-8">
                       <ul class="displayList">
-                        <li class="displayItem"><label><input id="displayItemTemperature" type="checkbox" name="" value="" checked><span>체온</span></label></li>
-                        <li class="displayItem"><label><input id="displayItemBloodPressure" type="checkbox" name="" value="" checked><span>혈압</span></label></li>
-                        <li class="displayItem"><label><input id="displayItemPulseRate" type="checkbox" name="" value=""><span>맥박</span></label></li>
-                        <li class="displayItem"><label><input id="displayItemOxgenSaturation" type="checkbox" name="" value="" checked><span>산소포화도</span></label></li>
-                        <li class="displayItem"><label><input id="displayItemBloodSugar" type="checkbox" name="" value=""><span>혈당</span></label></li>
-                        <li class="displayItem"><label><input id="displayItemSymptom" type="checkbox" name="" value="" checked><span>임상증상</span></label></li>
+                        <c:set var="temperatureCheck" value="${config.temperatureDisplayYN == 'Y' ? 'checked' : ''}" />
+                        <c:set var="bloodPressureCheck" value="${config.bloodPressureDisplayYN == 'Y' ? 'checked' : ''}" />
+                        <c:set var="pulseRateCheck" value="${config.pulseRateDisplayYN == 'Y' ? 'checked' : ''}" />
+                        <c:set var="oxygenSaturationCheck" value="${config.oxygenSaturationDisplayYN == 'Y' ? 'checked' : ''}" />
+                        <c:set var="bloodSugarCheck" value="${config.bloodSugarDisplayYN == 'Y' ? 'checked' : ''}" />
+                        <c:set var="symptomCheck" value="${config.symptomDisplayYN == 'Y' ? 'checked' : ''}" />
+
+                        <li class="displayItem"><label><input id="displayItemTemperature" type="checkbox" name="" value="Y" <c:out value="${temperatureCheck}" />><span>체온</span></label></li>
+                        <li class="displayItem"><label><input id="displayItemBloodPressure" type="checkbox" name="" value="Y" <c:out value="${bloodPressureCheck}" />><span>혈압</span></label></li>
+                        <li class="displayItem"><label><input id="displayItemPulseRate" type="checkbox" name="" value="Y" <c:out value="${pulseRateCheck}" />><span>맥박</span></label></li>
+                        <li class="displayItem"><label><input id="displayItemOxygenSaturation" type="checkbox" name="" value="Y" <c:out value="${oxygenSaturationCheck}" />><span>산소포화도</span></label></li>
+                        <li class="displayItem"><label><input id="displayItemBloodSugar" type="checkbox" name="" value="Y" <c:out value="${bloodSugarCheck}" />><span>혈당</span></label></li>
+                        <li class="displayItem"><label><input id="displayItemSymptom" type="checkbox" name="" value="Y" <c:out value="${symptomCheck}" />><span>임상증상</span></label></li>
                       </ul>
                     </div>
                   </div>
@@ -141,49 +223,60 @@ $(document).ready(function() {
                     </div>
 									</div> -->
                   <ul class="legend">
+                    <c:set var="temperatureThreshold" value="${config.temperatureThreshold}" />
+                    <c:set var="systolicBloodPressureThresholdMin" value="${config.systolicBloodPressureThresholdMin}" />
+                    <c:set var="systolicBloodPressureThresholdMax" value="${config.systolicBloodPressureThresholdMax}" />
+                    <c:set var="diastolicBloodPressureThresholdMin" value="${config.diastolicBloodPressureThresholdMin}" />
+                    <c:set var="diastolicBloodPressureThresholdMax" value="${config.diastolicBloodPressureThresholdMax}" />
+                    <c:set var="pulseRateThresholdMin" value="${config.pulseRateThresholdMin}" />
+                    <c:set var="pulseRateThresholdMax" value="${config.pulseRateThresholdMax}" />
+                    <c:set var="oxygenSaturationThreshold" value="${config.oxygenSaturationThreshold}" />
+                    <c:set var="bloodSugarThresholdMin" value="${config.bloodSugarThresholdMin}" />
+                    <c:set var="bloodSugerThresholdMax" value="${config.bloodSugerThresholdMax}" />
+
                     <li class="row fever">
                       <div class="col-lg-4">체온</div>
                       <div class="col-lg-8">
-                        <input type="number" class="form-control w120" placeholder="체온" value="37.5"> ℃ 이상시 알람
+                        <input id="temperatureThreshold" type="number" class="form-control w120" placeholder="체온" value="<c:out value="${temperatureThreshold}" />"> ℃ 이상시 알람
                       </div>
                     </li>
                     <li class="row bloodPressure">
                       <div class="col-lg-4">수축기 혈압</div>
                       <div class="col-lg-8">
-                        <input type="number" class="form-control w120" placeholder="저혈압" value="90"> 이하
+                        <input id="systolicBloodPressureThresholdMin" type="number" class="form-control w120" placeholder="저혈압" value="<c:out value="${systolicBloodPressureThresholdMin}" />"> 이하
                         <span>또는</span>
-                        <input type="number" class="form-control w120" placeholder="고혈압" value="149"> 이상시 알람
+                        <input id="systolicBloodPressureThresholdMax" type="number" class="form-control w120" placeholder="고혈압" value="<c:out value="${systolicBloodPressureThresholdMax}" />"> 이상시 알람
                         
                       </div>
                     </li>
                     <li class="row bloodPressure">
                       <div class="col-lg-4">이완기 혈압</div>
                       <div class="col-lg-8">
-                        <input type="number" class="form-control w120" placeholder="저혈압" value="60"> 이하
+                        <input id="diastolicBloodPressureThresholdMin" type="number" class="form-control w120" placeholder="저혈압" value="<c:out value="${diastolicBloodPressureThresholdMin}" />"> 이하
                         <span>또는</span>
-                        <input type="number" class="form-control w120" placeholder="고혈압" value="99"> 이상시 알람
+                        <input id="diastolicBloodPressureThresholdMax" type="number" class="form-control w120" placeholder="고혈압" value="<c:out value="${diastolicBloodPressureThresholdMax}" />"> 이상시 알람
                       </div>
                     </li>
                     <li class="row pulse">
                       <div class="col-lg-4">맥박</div>
                       <div class="col-lg-8">
-                        <input type="number" class="form-control w120" placeholder="최저맥박" value="55"> 이하
+                        <input id="pulseRateThresholdMin" type="number" class="form-control w120" placeholder="최저맥박" value="<c:out value="${pulseRateThresholdMin}" />"> 이하
                         <span>또는</span>
-                        <input type="number" class="form-control w120" placeholder="최고맥박" value="110"> 이상시 알람
+                        <input id="pulseRateThresholdMax" type="number" class="form-control w120" placeholder="최고맥박" value="<c:out value="${pulseRateThresholdMax}" />"> 이상시 알람
                       </div>
                     </li>
                     <li class="row oxygen">
                       <div class="col-lg-4">산소포화도</div>
                       <div class="col-lg-8">
-                        <input type="number" class="form-control w120" placeholder="산소포화도" value="94"> % 이하시 알람
+                        <input id="oxygenSaturationThreshold" type="number" class="form-control w120" placeholder="산소포화도" value="<c:out value="${oxygenSaturationThreshold}" />"> % 이하시 알람
                       </div>
                     </li>
                     <li class="row sugar">
                       <div class="col-lg-4">혈당</div>
                       <div class="col-lg-8">
-                        <input type="number" class="form-control w120" placeholder="저혈당" value="70"> 이하
+                        <input id="bloodSugarThresholdMin" type="number" class="form-control w120" placeholder="저혈당" value="<c:out value="${bloodSugarThresholdMin}" />"> 이하
                         <span>또는</span>
-                        <input type="number" class="form-control w120" placeholder="고혈당" value="200"> 이상시 알람
+                        <input id="bloodSugerThresholdMax" type="number" class="form-control w120" placeholder="고혈당" value="<c:out value="${bloodSugerThresholdMax}" />"> 이상시 알람
                       </div>
                     </li>
                   </ul>

+ 7 - 7
src/main/webapp/WEB-INF/jsp/clinic/state.jsp

@@ -439,31 +439,31 @@ $(document).ready(function() {
 					<ul class="legend">
 						<li class="row fever">
 							<div class="col-lg-4">체온</div>
-							<div class="col-lg-8">37.5 이상</div>
+							<div class="col-lg-8"><c:out value="${config.temperatureThreshold}" /> 이상</div>
 						</li>
 						<li class="row bloodPressure">
 							<div class="col-lg-4">고혈압</div>
-							<div class="col-lg-8">수축기 149 이상<br>이완기 99 이상</div>
+							<div class="col-lg-8">수축기 <c:out value="${config.systolicBloodPressureThresholdMax}" /> 이상<br>이완기 <c:out value="${config.diastolicBloodPressureThresholdMax}" /> 이상</div>
 						</li>
 						<li class="row bloodPressure">
 							<div class="col-lg-4">저혈압</div>
-							<div class="col-lg-8">수축기 90 이하<br>이완기 60 이하</div>
+							<div class="col-lg-8">수축기 <c:out value="${config.systolicBloodPressureThresholdMin}" /> 이하<br>이완기 <c:out value="${config.diastolicBloodPressureThresholdMin}" /> 이하</div>
 						</li>
             <li class="row pulse">
 							<div class="col-lg-4">맥박</div>
-							<div class="col-lg-8">최저 55 이하<br>최고 110 이상</div>
+							<div class="col-lg-8">최저 <c:out value="${config.pulseRateThresholdMin}" /> 이하<br>최고 <c:out value="${config.pulseRateThresholdMax}" /> 이상</div>
 						</li>
 						<li class="row oxygen">
 							<div class="col-lg-4">산소포화도</div>
-							<div class="col-lg-8">94% 이하</div>
+							<div class="col-lg-8"><c:out value="${config.oxygenSaturationThreshold}" />% 이하</div>
 						</li>
 						<li class="row sugar">
 							<div class="col-lg-4">고혈당</div>
-							<div class="col-lg-8">200 이상</div>
+							<div class="col-lg-8"><c:out value="${config.bloodSugerThresholdMax}" /> 이상</div>
 						</li>
 						<li class="row sugar">
 							<div class="col-lg-4">저혈당</div>
-							<div class="col-lg-8">70 이하</div>
+							<div class="col-lg-8"><c:out value="${config.bloodSugarThresholdMin}" /> 이하</div>
 						</li>
 					</ul>
 				</div>