Browse Source

[phr] 의료진이 phrdata 입력시 min, max, default 값 처리되도록 수정.

sjpark 4 years ago
parent
commit
af2554d87a
1 changed files with 125 additions and 15 deletions
  1. 125 15
      src/main/webapp/WEB-INF/jsp/clinic/info.jsp

+ 125 - 15
src/main/webapp/WEB-INF/jsp/clinic/info.jsp

@@ -8,6 +8,39 @@
 <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.min.js"></script>
 <script>
 
+var PHR_VALUE_DEFAULT = {
+	TEMPERATURE: {
+		VALUE: 36.5,
+		MIN: 20,
+		MAX: 50
+	},
+	BLOOD_PRESSURE_SYSTOLIC: {
+		VALUE: 120,
+		MIN: 50,
+		MAX: 250
+	},
+	BLOOD_PRESSURE_DIASTOLIC: {
+		VALUE: 80,
+		MIN: 20,
+		MAX: 160
+	},
+	OXYGEN_SATURATION: {
+		VALUE: 95,
+		MIN: 60,
+		MAX: 100
+	},
+	PULSE_RATE: {
+		VALUE: 65,
+		MIN: 30,
+		MAX: 200
+	},
+	BLOOD_SUGAR: {
+		VALUE: 120,
+		MIN: 10,
+		MAX: 600
+	}
+}
+
 function dateFormatter(date) {
 	return moment(date).format("YYYY-MM-DD HH:mm:ss");
 }
@@ -43,6 +76,52 @@ function nonFaceStart() {
 /*
  * 건강정보이력 탭 처리
  */
+
+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 === "bloodPressureSystolic") {
+		errorMessagePrefix = "수축기 혈압을";
+		phrValueDefault = PHR_VALUE_DEFAULT.BLOOD_PRESSURE_SYSTOLIC;
+	}
+	else if (phrType === "bloodPressureDiastolic") {
+		errorMessagePrefix = "이완기 혈압을";
+		phrValueDefault = PHR_VALUE_DEFAULT.BLOOD_PRESSURE_DIASTOLIC;
+	}
+	else if (phrType === "oxygenSaturation") {
+		errorMessagePrefix = "산소포화도를";
+		phrValueDefault = PHR_VALUE_DEFAULT.OXYGEN_SATURATION;
+	}
+	else if (phrType === "pulseRate") {
+		errorMessagePrefix = "맥박을";
+		phrValueDefault = PHR_VALUE_DEFAULT.PULSE_RATE;
+	}
+	else if (phrType === "bloodSugar") {
+		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;
+}
  
 function handlePhrData() {
 	var phrType = $("#phrTypeSelect option:selected").val();
@@ -51,31 +130,55 @@ function handlePhrData() {
 		phrValueSystolic = $("#phrValueSystolic").val();
 		phrValueDiastolic = $("#phrValueDiastolic").val();
 
-		if (!phrValueSystolic || phrValueSystolic.length === 0) {
-			alert("수축기 혈압을 입력해 주세요.");
+		// 유효성 체크
+		var errorMessage = checkValidForPhrData("bloodPressureSystolic", phrValueSystolic);
+		if (errorMessage) {
+			alert(errorMessage);
+			$("#phrValueSystolic").focus();
 			return;
 		}
-		if (!phrValueDiastolic || phrValueDiastolic.length === 0) {
-			alert("이완기 혈압을 입력해 주세요.");
+
+		errorMessage = checkValidForPhrData("bloodPressureDiastolic", phrValueDiastolic);
+		if (errorMessage) {
+			alert(errorMessage);
+			$("#phrValueDiastolic").focus();
 			return;
 		}
 
+		// 저장 진행
 		createPhrData(${patientIdx}, "bloodPressure", phrValueSystolic, phrValueDiastolic);
 
-		$("#phrValueSystolic").val("");
-		$("#phrValueDiastolic").val("");
+		$("#phrValueSystolic").val(PHR_VALUE_DEFAULT.BLOOD_PRESSURE_SYSTOLIC.VALUE);
+		$("#phrValueDiastolic").val(PHR_VALUE_DEFAULT.BLOOD_PRESSURE_DIASTOLIC.VALUE);
 	}
 	else {
 		phrValue = $("#phrValue").val();
 		
-		if (!phrValue || phrValue.length === 0) {
-			alert("값을 입력해 주세요.");
+		// 유효성 체크
+		var errorMessage = checkValidForPhrData(phrType, phrValue);
+		if (errorMessage) {
+			alert(errorMessage);
+			$("#phrValue").focus();
 			return;
 		}
 
+		// 저장 진행
 		createPhrData(${patientIdx}, phrType, phrValue);
 
-		$("#phrValue").val("");
+		var phrValueDefault = "";
+		if (phrType === "temperature") {
+			phrValueDefault = PHR_VALUE_DEFAULT.TEMPERATURE;
+		}
+		else if (phrType === "oxygenSaturation") {
+			phrValueDefault = PHR_VALUE_DEFAULT.OXYGEN_SATURATION;
+		}
+		else if (phrType === "pulseRate") {
+			phrValueDefault = PHR_VALUE_DEFAULT.PULSE_RATE;
+		}
+		else if (phrType === "bloodSugar") {
+			phrValueDefault = PHR_VALUE_DEFAULT.BLOOD_SUGAR;
+		}
+		$("#phrValue").val(phrValueDefault);
 	}
 
 	$("#defaultModalPrimary_1").modal("hide");
@@ -470,44 +573,51 @@ $(document).ready(function() {
 	$(document).on('click','[data-target="#defaultModalPrimary_1"]',function(){
 		var selectData = $('#phrTypeSelect').find('option:selected').val();
 		var healthInfoHTML = '';
+		var phrValueDefault = null;
 		if(selectData == 'temperature'){
+			phrValueDefault = PHR_VALUE_DEFAULT.TEMPERATURE;
 			healthInfoHTML += '<th>체온</th>';
 			healthInfoHTML += '<td>';
 			healthInfoHTML += '	<div class="form-group mb-xl-0">';
-			healthInfoHTML += '		<input id="phrValue" class="form-control" type="number" placeholder="체온 입력" value="36.5" step="0.1">';
+			healthInfoHTML += '		<input id="phrValue" class="form-control" type="number" placeholder="체온 입력" min="'+phrValueDefault.MIN+'" max="'+phrValueDefault.MAX+'" value="'+phrValueDefault.VALUE+'" step="0.1">';
 			healthInfoHTML += '	</div>';
 			healthInfoHTML += '</td>';
 		}
 		else if(selectData == 'bloodPressure'){
+			phrValueDefault1 = PHR_VALUE_DEFAULT.BLOOD_PRESSURE_SYSTOLIC;
+			phrValueDefault2 = PHR_VALUE_DEFAULT.BLOOD_PRESSURE_DIASTOLIC;
 			healthInfoHTML += '<th>혈압</th>';
 			healthInfoHTML += '<td>';
 			healthInfoHTML += '	<div class="form-group mb-xl-0">';
-			healthInfoHTML += '		<input id="phrValueSystolic" class="form-control mb-2" type="number" placeholder="수축기 혈압 입력" value="120">';
-			healthInfoHTML += '		<input id="phrValueDiastolic" class="form-control mb-2" type="number" placeholder="이완기 혈압 입력" value="80">';
+			healthInfoHTML += '		<input id="phrValueSystolic" class="form-control mb-2" type="number" placeholder="수축기 혈압 입력" min="'+phrValueDefault1.MIN+'" max="'+phrValueDefault1.MAX+'" value="'+phrValueDefault1.VALUE+'">';
+			healthInfoHTML += '		<input id="phrValueDiastolic" class="form-control mb-2" type="number" placeholder="이완기 혈압 입력" min="'+phrValueDefault2.MIN+'" max="'+phrValueDefault2.MAX+'" value="'+phrValueDefault2.VALUE+'">';
 			healthInfoHTML += '	</div>';
 			healthInfoHTML += '</td>';
 		}
 		else if(selectData == 'pulseRate'){
+			phrValueDefault = PHR_VALUE_DEFAULT.PULSE_RATE;
 			healthInfoHTML += '<th>맥박</th>';
 			healthInfoHTML += '<td>';
 			healthInfoHTML += '	<div class="form-group mb-xl-0">';
-			healthInfoHTML += '		<input id="phrValue" class="form-control" type="number" placeholder="맥박 입력" value="65">';
+			healthInfoHTML += '		<input id="phrValue" class="form-control" type="number" placeholder="맥박 입력"min="'+phrValueDefault.MIN+'" max="'+phrValueDefault.MAX+'" value="'+phrValueDefault.VALUE+'">';
 			healthInfoHTML += '	</div>';
 			healthInfoHTML += '</td>';
 		}
 		else if(selectData == 'oxygenSaturation'){
+			phrValueDefault = PHR_VALUE_DEFAULT.OXYGEN_SATURATION;
 			healthInfoHTML += '<th>산소포화도</th>';
 			healthInfoHTML += '<td>';
 			healthInfoHTML += '	<div class="form-group mb-xl-0">';
-			healthInfoHTML += '		<input id="phrValue" class="form-control" type="number" placeholder="산소포화도 입력" value="95">';
+			healthInfoHTML += '		<input id="phrValue" class="form-control" type="number" placeholder="산소포화도 입력" min="'+phrValueDefault.MIN+'" max="'+phrValueDefault.MAX+'" value="'+phrValueDefault.VALUE+'">';
 			healthInfoHTML += '	</div>';
 			healthInfoHTML += '</td>';
 		}
 		else if(selectData == 'bloodSugar'){
+			phrValueDefault = PHR_VALUE_DEFAULT.BLOOD_SUGAR;
 			healthInfoHTML += '<th>혈당</th>';
 			healthInfoHTML += '<td>';
 			healthInfoHTML += '	<div class="form-group mb-xl-0">';
-			healthInfoHTML += '		<input id="phrValue" class="form-control" type="number" placeholder="혈당 입력" value="120"">';
+			healthInfoHTML += '		<input id="phrValue" class="form-control" type="number" placeholder="혈당 입력" min="'+phrValueDefault.MIN+'" max="'+phrValueDefault.MAX+'" value="'+phrValueDefault.VALUE+'"">';
 			healthInfoHTML += '	</div>';
 			healthInfoHTML += '</td>';
 		}