Jelajahi Sumber

[진료관리] 설정 임계치 유효성 체크 추가.

sjpark 4 tahun lalu
induk
melakukan
c5f93692c4
1 mengubah file dengan 112 tambahan dan 10 penghapusan
  1. 112 10
      src/main/webapp/WEB-INF/jsp/clinic/config.jsp

+ 112 - 10
src/main/webapp/WEB-INF/jsp/clinic/config.jsp

@@ -142,6 +142,29 @@ $(document).ready(function() {
   });
 
   $(document).on('click','#alarmSave',function(){
+
+    var checkValue = {
+      "temperature" : parseFloat($("#temperatureThreshold").val()),
+      "bloodPressureSystolicMin" : parseInt($("#systolicBloodPressureThresholdMin").val(), 10),
+      "bloodPressureSystolicMax" : parseInt($("#systolicBloodPressureThresholdMax").val(), 10),
+      "bloodPressureDiastolicMin" : parseInt($("#diastolicBloodPressureThresholdMin").val(), 10),
+      "bloodPressureDiastolicMax" : parseInt($("#diastolicBloodPressureThresholdMax").val(), 10),
+      "pulseRateMin" : parseInt($("#pulseRateThresholdMin").val(), 10),
+      "pulseRateMax" : parseInt($("#pulseRateThresholdMax").val(), 10),
+      "oxygenSaturation" : parseInt($("#oxygenSaturationThreshold").val(), 10),
+      "bloodSugarMin" : parseInt($("#bloodSugarThresholdMin").val(), 10),
+      "bloodSugarMax" : parseInt($("#bloodSugarThresholdMax").val(), 10)
+    }
+
+    for (const [key, value] of Object.entries(checkValue)) {
+      var errorMessage = (checkValidForPhrData(key, value));
+      if (errorMessage != null) {
+        alert(errorMessage);
+        return;
+      }
+    }
+
+
     const result = confirm("알람 표시 설정을 변경하신 값으로 설정합니다.\n\n설정값의 알람 적용은 현재시간 이후로 수집되는 데이터에 한하여 적용되오니 참고하시기 바랍니다.");
     if(result){
       saveAlarmValue();
@@ -150,6 +173,85 @@ $(document).ready(function() {
   
 });
 
+var PHR_VALUE_DEFAULT = {
+	TEMPERATURE: {
+		VALUE: "",
+		MIN: 20,
+    MAX: 50
+	},
+	BLOOD_PRESSURE_SYSTOLIC: {
+		VALUE: "",
+		MIN: 50,
+    MAX: 250
+	},
+	BLOOD_PRESSURE_DIASTOLIC: {
+		VALUE: "",
+		MIN: 20,
+    MAX: 160
+	},
+	OXYGEN_SATURATION: {
+		VALUE: "",
+		MIN: 60,
+    MAX: 100
+	},
+	PULSE_RATE: {
+		VALUE: "",
+		MIN: 30,
+    MAX: 200
+	},
+	BLOOD_SUGAR: {
+		VALUE: "",
+		MIN: 10,
+    MAX: 600
+	}
+}
+
+function checkValidForPhrData(phrType, phrValue) {
+
+	var errorMessage = null;
+
+	var errorMessagePrefix = null;
+	var phrValueDefault = null;
+	
+	if (phrType === "temperature") {
+		errorMessagePrefix = "체온 임계치를";
+		phrValueDefault = PHR_VALUE_DEFAULT.TEMPERATURE;
+	}
+	else if (phrType === "bloodPressureSystolicMin" || phrType === "bloodPressureSystolicMax") {
+		errorMessagePrefix = "수축기 혈압 임계치를";
+		phrValueDefault = PHR_VALUE_DEFAULT.BLOOD_PRESSURE_SYSTOLIC;
+	}
+	else if (phrType === "bloodPressureDiastolicMin" || phrType === "bloodPressureDiastolicMax") {
+		errorMessagePrefix = "이완기 혈압 임계치를";
+		phrValueDefault = PHR_VALUE_DEFAULT.BLOOD_PRESSURE_DIASTOLIC;
+	}
+	else if (phrType === "oxygenSaturation") {
+		errorMessagePrefix = "산소포화도 임계치를";
+		phrValueDefault = PHR_VALUE_DEFAULT.OXYGEN_SATURATION;
+	}
+	else if (phrType === "pulseRateMin" || phrType === "pulseRateMax") {
+		errorMessagePrefix = "맥박 임계치를";
+		phrValueDefault = PHR_VALUE_DEFAULT.PULSE_RATE;
+	}
+	else if (phrType === "bloodSugarMin" || phrType === "bloodSugarMax") {
+		errorMessagePrefix = "혈당 임계치를";
+		phrValueDefault = PHR_VALUE_DEFAULT.BLOOD_SUGAR;
+	}
+
+	// 널 체크, 숫자 체크, 최대/최소 체크
+	if (!phrValue || phrValue.length === 0) {
+		errorMessage = errorMessagePrefix+" 입력해 주세요.";	
+	}
+	else if (isNaN(phrValue)) {
+		errorMessage = errorMessagePrefix+" 숫자로 입력해 주세요.";
+	}
+	else if (phrValue < phrValueDefault.MIN || phrValue > phrValueDefault.MAX) {
+		errorMessage = errorMessagePrefix+" "+phrValueDefault.MIN+"~"+phrValueDefault.MAX+" 범위 내로 입력해 주세요.";
+	}
+
+	return errorMessage;
+}
+
 </script>
 </head>
 
@@ -248,46 +350,46 @@ $(document).ready(function() {
                     <li class="row fever">
                       <div class="col-lg-4">체온</div>
                       <div class="col-lg-8">
-                        <input id="temperatureThreshold" type="number" class="form-control w120" placeholder="체온" value="<c:out value="${temperatureThreshold}" />"> ℃ 이상시 알람
+                        <input id="temperatureThreshold" type="number" min=20 max=50 step=0.1 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 id="systolicBloodPressureThresholdMin" type="number" class="form-control w120" placeholder="저혈압" value="<c:out value="${systolicBloodPressureThresholdMin}" />"> 이하
+                        <input id="systolicBloodPressureThresholdMin" type="number" min=50 max=250 class="form-control w120" placeholder="저혈압" value="<c:out value="${systolicBloodPressureThresholdMin}" />"> 이하
                         <span>또는</span>
-                        <input id="systolicBloodPressureThresholdMax" type="number" class="form-control w120" placeholder="고혈압" value="<c:out value="${systolicBloodPressureThresholdMax}" />"> 이상시 알람
+                        <input id="systolicBloodPressureThresholdMax" type="number" min=50 max=250 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 id="diastolicBloodPressureThresholdMin" type="number" class="form-control w120" placeholder="저혈압" value="<c:out value="${diastolicBloodPressureThresholdMin}" />"> 이하
+                        <input id="diastolicBloodPressureThresholdMin" type="number" min=20 max=160 class="form-control w120" placeholder="저혈압" value="<c:out value="${diastolicBloodPressureThresholdMin}" />"> 이하
                         <span>또는</span>
-                        <input id="diastolicBloodPressureThresholdMax" type="number" class="form-control w120" placeholder="고혈압" value="<c:out value="${diastolicBloodPressureThresholdMax}" />"> 이상시 알람
+                        <input id="diastolicBloodPressureThresholdMax" type="number" min=20 max=160 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 id="pulseRateThresholdMin" type="number" class="form-control w120" placeholder="최저맥박" value="<c:out value="${pulseRateThresholdMin}" />"> 이하
+                        <input id="pulseRateThresholdMin" type="number" min=30 max=200 class="form-control w120" placeholder="최저맥박" value="<c:out value="${pulseRateThresholdMin}" />"> 이하
                         <span>또는</span>
-                        <input id="pulseRateThresholdMax" type="number" class="form-control w120" placeholder="최고맥박" value="<c:out value="${pulseRateThresholdMax}" />"> 이상시 알람
+                        <input id="pulseRateThresholdMax" type="number" min=30 max=200 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 id="oxygenSaturationThreshold" type="number" class="form-control w120" placeholder="산소포화도" value="<c:out value="${oxygenSaturationThreshold}" />"> % 이하시 알람
+                        <input id="oxygenSaturationThreshold" type="number" min=60 max=100 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 id="bloodSugarThresholdMin" type="number" class="form-control w120" placeholder="저혈당" value="<c:out value="${bloodSugarThresholdMin}" />"> 이하
+                        <input id="bloodSugarThresholdMin" type="number" min=10 max=600 class="form-control w120" placeholder="저혈당" value="<c:out value="${bloodSugarThresholdMin}" />"> 이하
                         <span>또는</span>
-                        <input id="bloodSugarThresholdMax" type="number" class="form-control w120" placeholder="고혈당" value="<c:out value="${bloodSugarThresholdMax}" />"> 이상시 알람
+                        <input id="bloodSugarThresholdMax" type="number" min=10 max=600 class="form-control w120" placeholder="고혈당" value="<c:out value="${bloodSugarThresholdMax}" />"> 이상시 알람
                       </div>
                     </li>
                   </ul>