Kaynağa Gözat

Revert "Revert "대시보드 필터, 진료 관리 설정 1차 완료""

This reverts commit 670a578e530f4fbfeee499b0646b4d69534e2cd9.
huiwon.seo 4 yıl önce
ebeveyn
işleme
48957aace6

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

@@ -10,6 +10,7 @@ import java.io.InputStream;
 import java.security.GeneralSecurityException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 
@@ -201,6 +202,7 @@ public class ClinicController extends LifeCenterController {
 			@RequestParam(value = "page", required = true, defaultValue = "1") int page,
 			@RequestParam(value = "size", required = true, defaultValue = "30") int pageSize,
 			@RequestParam(value = "searchText", required = false, defaultValue = "") String searchText,
+			@RequestParam(value = "filter", required = false, defaultValue = "") String filter,
 			@RequestParam(value = "sortType", required = false, defaultValue = "") String sortType) {
 
 		String centerCode = LifeCenterSessionController.getSession( request, "sesCenterCode" );
@@ -210,6 +212,15 @@ public class ClinicController extends LifeCenterController {
 		dto.setLimitMax(pageSize);
 		dto.setCenterCode(centerCode);
 		dto.setSearchText(searchText);
+		if (!filter.equals("")) {
+			dto.setFilterList(filter.split(","));
+		}
+		if (Calendar.getInstance().get(Calendar.HOUR_OF_DAY) < 12) {
+			dto.setTimeCriterion("AM");
+		} else {
+			dto.setTimeCriterion("PM");
+		}
+		
 		dto.setSortType(sortType);
 
 		int total = clinicService.selectPHRLatestCount(dto);

+ 141 - 0
src/main/java/com/lemon/lifecenter/dto/ClinicConfigurationDTO.java

@@ -0,0 +1,141 @@
+package com.lemon.lifecenter.dto;
+
+public class ClinicConfigurationDTO {
+	private int centerCode;
+	
+	private String temparatureDisplayYN;
+	private String oxygenSaturationDisplayYN;
+	private String pulseRateDisplayYN;
+	private String systolicBloodPressureDisplayYN;
+	private String diastolicBloodPressureDisplayYN;
+	private String bloodSugarDisplayYN;
+	private String symptomDisplayYN;
+	
+	private float temparatureThreshold;
+	private int systolicBloodPressureThresholdMin;
+	private int systolicBloodPressureThresholdMax;
+	private int diastolicBloodPressureThresholdMin;
+	private int diastolicBloodPressureThresholdMax;
+	private int pulseRateThresholdMin;
+	private int pulseRateThresholdMax;
+	private int oxygenSaturationThreshold;
+	private int bloodSugarThresholdMin;
+	private int bloodSugerThresholdMax;
+	
+	private int patientIdx;
+	
+	public int getCenterCode() {
+		return centerCode;
+	}
+	public void setCenterCode(int centerCode) {
+		this.centerCode = centerCode;
+	}
+	public String getTemparatureDisplayYN() {
+		return temparatureDisplayYN;
+	}
+	public void setTemparatureDisplayYN(String temparatureDisplayYN) {
+		this.temparatureDisplayYN = temparatureDisplayYN;
+	}
+	public String getOxygenSaturationDisplayYN() {
+		return oxygenSaturationDisplayYN;
+	}
+	public void setOxygenSaturationDisplayYN(String oxygenSaturationDisplayYN) {
+		this.oxygenSaturationDisplayYN = oxygenSaturationDisplayYN;
+	}
+	public String getPulseRateDisplayYN() {
+		return pulseRateDisplayYN;
+	}
+	public void setPulseRateDisplayYN(String pulseRateDisplayYN) {
+		this.pulseRateDisplayYN = pulseRateDisplayYN;
+	}
+	public String getSystolicBloodPressureDisplayYN() {
+		return systolicBloodPressureDisplayYN;
+	}
+	public void setSystolicBloodPressureDisplayYN(String systolicBloodPressureDisplayYN) {
+		this.systolicBloodPressureDisplayYN = systolicBloodPressureDisplayYN;
+	}
+	public String getDiastolicBloodPressureDisplayYN() {
+		return diastolicBloodPressureDisplayYN;
+	}
+	public void setDiastolicBloodPressureDisplayYN(String diastolicBloodPressureDisplayYN) {
+		this.diastolicBloodPressureDisplayYN = diastolicBloodPressureDisplayYN;
+	}
+	public String getBloodSugarDisplayYN() {
+		return bloodSugarDisplayYN;
+	}
+	public void setBloodSugarDisplayYN(String bloodSugarDisplayYN) {
+		this.bloodSugarDisplayYN = bloodSugarDisplayYN;
+	}
+	public String getSymptomDisplayYN() {
+		return symptomDisplayYN;
+	}
+	public void setSymptomDisplayYN(String symptomDisplayYN) {
+		this.symptomDisplayYN = symptomDisplayYN;
+	}
+	public float getTemparatureThreshold() {
+		return temparatureThreshold;
+	}
+	public void setTemparatureThreshold(float temparatureThreshold) {
+		this.temparatureThreshold = temparatureThreshold;
+	}
+	public int getSystolicBloodPressureThresholdMin() {
+		return systolicBloodPressureThresholdMin;
+	}
+	public void setSystolicBloodPressureThresholdMin(int systolicBloodPressureThresholdMin) {
+		this.systolicBloodPressureThresholdMin = systolicBloodPressureThresholdMin;
+	}
+	public int getSystolicBloodPressureThresholdMax() {
+		return systolicBloodPressureThresholdMax;
+	}
+	public void setSystolicBloodPressureThresholdMax(int systolicBloodPressureThresholdMax) {
+		this.systolicBloodPressureThresholdMax = systolicBloodPressureThresholdMax;
+	}
+	public int getDiastolicBloodPressureThresholdMin() {
+		return diastolicBloodPressureThresholdMin;
+	}
+	public void setDiastolicBloodPressureThresholdMin(int diastolicBloodPressureThresholdMin) {
+		this.diastolicBloodPressureThresholdMin = diastolicBloodPressureThresholdMin;
+	}
+	public int getDiastolicBloodPressureThresholdMax() {
+		return diastolicBloodPressureThresholdMax;
+	}
+	public void setDiastolicBloodPressureThresholdMax(int diastolicBloodPressureThresholdMax) {
+		this.diastolicBloodPressureThresholdMax = diastolicBloodPressureThresholdMax;
+	}
+	public int getPulseRateThresholdMin() {
+		return pulseRateThresholdMin;
+	}
+	public void setPulseRateThresholdMin(int pulseRateThresholdMin) {
+		this.pulseRateThresholdMin = pulseRateThresholdMin;
+	}
+	public int getPulseRateThresholdMax() {
+		return pulseRateThresholdMax;
+	}
+	public void setPulseRateThresholdMax(int pulseRateThresholdMax) {
+		this.pulseRateThresholdMax = pulseRateThresholdMax;
+	}
+	public int getOxygenSaturationThreshold() {
+		return oxygenSaturationThreshold;
+	}
+	public void setOxygenSaturationThreshold(int oxygenSaturationThreshold) {
+		this.oxygenSaturationThreshold = oxygenSaturationThreshold;
+	}
+	public int getBloodSugarThresholdMin() {
+		return bloodSugarThresholdMin;
+	}
+	public void setBloodSugarThresholdMin(int bloodSugarThresholdMin) {
+		this.bloodSugarThresholdMin = bloodSugarThresholdMin;
+	}
+	public int getBloodSugerThresholdMax() {
+		return bloodSugerThresholdMax;
+	}
+	public void setBloodSugerThresholdMax(int bloodSugerThresholdMax) {
+		this.bloodSugerThresholdMax = bloodSugerThresholdMax;
+	}
+	public int getPatientIdx() {
+		return patientIdx;
+	}
+	public void setPatientIdx(int patientIdx) {
+		this.patientIdx = patientIdx;
+	}
+}

+ 64 - 1
src/main/java/com/lemon/lifecenter/dto/PatientPHRLatestDTO.java

@@ -1,6 +1,5 @@
 package com.lemon.lifecenter.dto;
 
-import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Date;
 
@@ -17,20 +16,30 @@ public class PatientPHRLatestDTO {
 	private String todayHospitalizationYN;
 	private Float temperature;
 	private Date temperatureCreateDate;
+	private String temperatureAlarmYN;
 	private Integer oxygenSaturation;
 	private Date oxygenSaturationCreateDate;
+	private String oxygenSaturationAlarmYN;
 	private Integer pulseRate;
 	private Date pulseRateCreateDate;
+	private String pulseRateAlarmYN;
 	private Integer systolicBloodPressure;
 	private Date systolicBloodPressureCreateDate;
+	private String systolicBloodPressureAlarmYN;
 	private Integer diastolicBloodPressure;
 	private Date diastolicBloodPressureCreateDate;
+	private String diastolicBloodPressureAlarmYN;
 	private Integer bloodSugar;
 	private Date bloodSugarCreateDate;
+	private String bloodSugarAlarmYN;
+	private String symptomYN;
+	
 	private int memoCount;
 	private Date symptomLastDate;	
 	private String searchText;	
 	private String sortType;
+	private String[] filterList;
+	private String timeCriterion;
 	private int limit;
 	private int limitMax;
 	
@@ -101,6 +110,12 @@ public class PatientPHRLatestDTO {
 	public Date getTemperatureCreateDate() {
 		return temperatureCreateDate;
 	}
+	public String getTemperatureAlarmYN() {
+		return temperatureAlarmYN;
+	}
+	public void setTemperatureAlarmYN(String temperatureAlarmYN) {
+		this.temperatureAlarmYN = temperatureAlarmYN;
+	}
 	public Integer getOxygenSaturation() {
 		return oxygenSaturation;
 	}
@@ -110,6 +125,12 @@ public class PatientPHRLatestDTO {
 	public Date getOxygenSaturationCreateDate() {
 		return oxygenSaturationCreateDate;
 	}	
+	public String getOxygenSaturationAlarmYN() {
+		return oxygenSaturationAlarmYN;
+	}
+	public void setOxygenSaturationAlarmYN(String oxygenSaturationAlarmYN) {
+		this.oxygenSaturationAlarmYN = oxygenSaturationAlarmYN;
+	}
 	public Integer getPulseRate() {
 		return pulseRate;
 	}
@@ -119,6 +140,12 @@ public class PatientPHRLatestDTO {
 	public Date getPulseRateCreateDate() {
 		return pulseRateCreateDate;
 	}	
+	public String getPulseRateAlarmYN() {
+		return pulseRateAlarmYN;
+	}
+	public void setPulseRateAlarmYN(String pulseRateAlarmYN) {
+		this.pulseRateAlarmYN = pulseRateAlarmYN;
+	}
 	public Integer getSystolicBloodPressure() {
 		return systolicBloodPressure;
 	}
@@ -128,6 +155,12 @@ public class PatientPHRLatestDTO {
 	public Date getSystolicBloodPressureCreateDate() {
 		return systolicBloodPressureCreateDate;
 	}	
+	public String getSystolicBloodPressureAlarmYN() {
+		return systolicBloodPressureAlarmYN;
+	}
+	public void setSystolicBloodPressureAlarmYN(String systolicBloodPressureAlarmYN) {
+		this.systolicBloodPressureAlarmYN = systolicBloodPressureAlarmYN;
+	}
 	public Integer getDiastolicBloodPressure() {
 		return diastolicBloodPressure;
 	}
@@ -137,6 +170,12 @@ public class PatientPHRLatestDTO {
 	public Date getDiastolicBloodPressureCreateDate() {
 		return diastolicBloodPressureCreateDate;
 	}	
+	public String getDiastolicBloodPressureAlarmYN() {
+		return diastolicBloodPressureAlarmYN;
+	}
+	public void setDiastolicBloodPressureAlarmYN(String diastolicBloodPressureAlarmYN) {
+		this.diastolicBloodPressureAlarmYN = diastolicBloodPressureAlarmYN;
+	}
 	public Integer getBloodSugar() {
 		return bloodSugar;
 	}
@@ -146,6 +185,12 @@ public class PatientPHRLatestDTO {
 	public Date getBloodSugarCreateDate() {
 		return bloodSugarCreateDate;
 	}	
+	public String getBloodSugarAlarmYN() {
+		return bloodSugarAlarmYN;
+	}
+	public void setBloodSugarAlarmYN(String bloodSugarAlarmYN) {
+		this.bloodSugarAlarmYN = bloodSugarAlarmYN;
+	}
 	public int getMemoCount() {
 		return memoCount;
 	}
@@ -155,6 +200,12 @@ public class PatientPHRLatestDTO {
 	public Date getSymptomLastDate() {
 		return symptomLastDate;
 	}
+	public String getSymptomYN() {
+		return symptomYN;
+	}
+	public void setSymptomYN(String symptomYN) {
+		this.symptomYN = symptomYN;
+	}
 	public String getSearchText() {
 		return searchText;
 	}
@@ -167,6 +218,18 @@ public class PatientPHRLatestDTO {
 	public void setSortType(String sortType) {
 		this.sortType = sortType;
 	}
+	public String[] getFilterList() {
+		return filterList;
+	}
+	public void setFilterList(String[] filterList) {
+		this.filterList = filterList;
+	}
+	public String getTimeCriterion() {
+		return timeCriterion;
+	}
+	public void setTimeCriterion(String timeCriterion) {
+		this.timeCriterion = timeCriterion;
+	}
 	public int getLimit() {
 		return limit;
 	}

+ 23 - 0
src/main/java/com/lemon/lifecenter/mapper/ClinicConfigurationMapper.java

@@ -0,0 +1,23 @@
+package com.lemon.lifecenter.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+import com.lemon.lifecenter.dto.ClinicConfigurationDTO;
+
+
+@Repository
+@Mapper
+public interface ClinicConfigurationMapper {
+
+	public void insertConfiguration(ClinicConfigurationDTO dto);
+	
+	public ClinicConfigurationDTO selectConfiguration(ClinicConfigurationDTO dto);
+	
+	public ClinicConfigurationDTO selectConfigurationWithPatient(ClinicConfigurationDTO dto);
+	
+	public void updateConfiguration(ClinicConfigurationDTO dto);
+	
+	public void deleteConfiguration(ClinicConfigurationDTO dto);
+	
+}

+ 45 - 0
src/main/java/com/lemon/lifecenter/service/PHRService.java

@@ -5,9 +5,11 @@ import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import com.lemon.lifecenter.dto.ClinicConfigurationDTO;
 import com.lemon.lifecenter.dto.PatientPHRHistoryDTO;
 import com.lemon.lifecenter.dto.PatientPHRLatestDTO;
 import com.lemon.lifecenter.dto.PatientSymptomSimDTO;
+import com.lemon.lifecenter.mapper.ClinicConfigurationMapper;
 import com.lemon.lifecenter.mapper.PatientPHRHistoryMapper;
 import com.lemon.lifecenter.mapper.PatientPHRLatestMapper;
 import com.lemon.lifecenter.mapper.PatientSymptomSimMapper;
@@ -24,28 +26,67 @@ public class PHRService {
 	@Autowired
 	private PatientSymptomSimMapper mapperSymptom;
 	
+	@Autowired
+	private ClinicConfigurationMapper mapperClinicConfiguration;
+	
 	public void insertPHR(PatientPHRHistoryDTO dto) {
 		mapperHistory.insertPHRHistory(dto);
 		
+		// 해당 환자가 속해 있는 센터의 설정 정보 가져오기
+		ClinicConfigurationDTO configurationDTO = new ClinicConfigurationDTO();
+		configurationDTO.setPatientIdx(dto.getPatientIdx());
+		configurationDTO = mapperClinicConfiguration.selectConfigurationWithPatient(configurationDTO);
+		
 		PatientPHRLatestDTO phrLatestDTO = new PatientPHRLatestDTO();
 		phrLatestDTO.setPatientIdx(dto.getPatientIdx());
 		
 		switch (dto.getPhrType()) {
 			case "temperature":
+				String temperatureAlarmYN = "N";
+				if (dto.getPhrValue() >= configurationDTO.getTemparatureThreshold()) {
+					temperatureAlarmYN = "Y";
+				}
 				phrLatestDTO.setTemperature(dto.getPhrValue());
+				phrLatestDTO.setTemperatureAlarmYN(temperatureAlarmYN);
 				break;
 			case "oxygenSaturation":
+				String oxygenSaturationAlarmYN = "N";				
+				if (dto.getPhrValue().intValue() <= configurationDTO.getOxygenSaturationThreshold()) {
+					oxygenSaturationAlarmYN = "Y";
+				}
 				phrLatestDTO.setOxygenSaturation(dto.getPhrValue().intValue());
+				phrLatestDTO.setOxygenSaturationAlarmYN(oxygenSaturationAlarmYN);
 				break;
 			case "pulseRate":
+				String pulseRateAlarmYN = "N";
+				if (dto.getPhrValue().intValue() <= configurationDTO.getPulseRateThresholdMin() || dto.getPhrValue().intValue() >= configurationDTO.getPulseRateThresholdMax()) {
+					pulseRateAlarmYN = "Y";
+				}
 				phrLatestDTO.setPulseRate(dto.getPhrValue().intValue());
+				phrLatestDTO.setPulseRateAlarmYN(pulseRateAlarmYN);
 				break;
 			case "bloodPressure":
+				String systolicBloodPressureAlarmYN = "N";
+				if (dto.getPhrValue().intValue() <= configurationDTO.getSystolicBloodPressureThresholdMin() || dto.getPhrValue().intValue() >= configurationDTO.getSystolicBloodPressureThresholdMax()) {
+					systolicBloodPressureAlarmYN = "Y";
+				}
 				phrLatestDTO.setSystolicBloodPressure(dto.getPhrValue().intValue());
+				phrLatestDTO.setSystolicBloodPressureAlarmYN(systolicBloodPressureAlarmYN);
+				
+				String diastolicBloodPressureAlarmY = "N";
+				if (dto.getPhrValue().intValue() <= configurationDTO.getDiastolicBloodPressureThresholdMin() || dto.getPhrValue().intValue() >= configurationDTO.getDiastolicBloodPressureThresholdMax()) {
+					diastolicBloodPressureAlarmY = "Y";
+				}
 				phrLatestDTO.setDiastolicBloodPressure(dto.getPhrValue2().intValue());
+				phrLatestDTO.setDiastolicBloodPressureAlarmYN(diastolicBloodPressureAlarmY);
 				break;
 			case "bloodSugar":
+				String bloodSugarAlarmYN = "N";
+				if (dto.getPhrValue().intValue() <= configurationDTO.getBloodSugarThresholdMin() || dto.getPhrValue().intValue() >= configurationDTO.getBloodSugerThresholdMax()) {
+					bloodSugarAlarmYN = "Y";
+				}
 				phrLatestDTO.setBloodSugar(dto.getPhrValue().intValue());
+				phrLatestDTO.setBloodSugarAlarmYN(bloodSugarAlarmYN);
 				break;
 		}
 		
@@ -62,6 +103,10 @@ public class PHRService {
     
     public void insertSymptom(PatientSymptomSimDTO dto) {
     	mapperSymptom.insertSymptom(dto);
+    	PatientPHRLatestDTO phrLatestDTO = new PatientPHRLatestDTO();
+		phrLatestDTO.setPatientIdx(dto.getPatientIdx());
+		phrLatestDTO.setSymptomYN("Y");
+    	mapperPHRLatest.insertPHRLatest(phrLatestDTO);		
     }
     
     public int selectSymptomCount(PatientSymptomSimDTO dto) {

+ 136 - 0
src/main/resources/mybatis/mapper/center/clinicConfiguration.xml

@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.lemon.lifecenter.mapper.ClinicConfigurationMapper">
+	<insert id="insertConfiguration" parameterType="ClinicConfigurationDTO" useGeneratedKeys="true">
+	<![CDATA[
+	    INSERT INTO clinic_configuration (
+		center_code,
+		temparature_display_yn,
+		oxygen_saturation_display_yn,
+		pulse_rate_display_yn,
+		systolic_blood_pressure_display_yn,
+		diastolic_blood_pressure_display_yn,
+		blood_sugar_display_yn,
+		symptom_display_yn,
+		temparature_threshold,
+		systolic_blood_pressure_threshold_min,
+		systolic_blood_pressure_threshold_max,
+		diastolic_blood_pressure_threshole_min,
+		diastolic_blood_pressure_threshole_max,
+		pulse_rate_threshold_min,
+		pulse_rate_threshold_max,
+		oxygen_saturation_threshold,
+		blood_sugar_threshold_min,
+		blood_sugar_threshold_max,
+		create_date,
+		update_date
+	) VALUES (
+		#{centerCode},
+		'Y',
+		'Y',
+		'N',
+		'Y',
+		'Y',
+		'N',
+		'Y',
+		37.5,
+		90,
+		149,
+		60,
+		99,
+		55,
+		110,
+		94,
+		70,
+		200,
+		NOW(),
+		NOW()
+	)
+    ]]>
+	</insert>	
+    <select id="selectConfiguration" parameterType="ClinicConfigurationDTO" resultType="ClinicConfigurationDTO">
+    <![CDATA[
+	    SELECT	center_code								AS centerCode,
+				temparature_display_yn					AS temparatureDisplayYN,
+				oxygen_saturation_display_yn			AS oxygenSaturationDisplayYN,
+				pulse_rate_display_yn					AS pulseRateDisplayYN,
+				systolic_blood_pressure_display_yn		AS systolicBloodPressureDisplayYN,
+				diastolic_blood_pressure_display_yn		AS diastolicBloodPressureDisplayYNo,
+				blood_sugar_display_yn					AS bloodSugarDisplayYN,
+				symptom_display_yn						AS symptomDisplayYN,
+				temparature_threshold					AS temparatureThreshold,
+				systolic_blood_pressure_threshold_min	AS systolicBloodPressureThresholdMin,
+				systolic_blood_pressure_threshold_max	AS systolicBloodPressureThresholdMax,
+				diastolic_blood_pressure_threshole_min	AS diastolicBloodPressureThresholdMin,
+				diastolic_blood_pressure_threshole_max	AS diastolicBloodPressureThresholdMax,
+				pulse_rate_threshold_min				AS pulseRateThresholdMin,
+				pulse_rate_threshold_max				AS pulseRateThresholdMax,
+				oxygen_saturation_threshold				AS oxygenSaturationThreshold,
+				blood_sugar_threshold_min				AS bloodSugarThresholdMin,
+				blood_sugar_threshold_max				AS bloodSugerThresholdMax
+		FROM clinic_configuration c, patient_care p
+		WHERE 
+			center_code = p.center_code
+	]]>
+    </select>
+     <select id="selectConfigurationWithPatient" parameterType="ClinicConfigurationDTO" resultType="ClinicConfigurationDTO">
+    <![CDATA[
+	    SELECT	c.center_code								AS centerCode,
+				c.temparature_display_yn					AS temparatureDisplayYN,
+				c.oxygen_saturation_display_yn				AS oxygenSaturationDisplayYN,
+				c.pulse_rate_display_yn						AS pulseRateDisplayYN,
+				c.systolic_blood_pressure_display_yn		AS systolicBloodPressureDisplayYN,
+				c.diastolic_blood_pressure_display_yn		AS diastolicBloodPressureDisplayYNo,
+				c.blood_sugar_display_yn					AS bloodSugarDisplayYN,
+				c.symptom_display_yn						AS symptomDisplayYN,
+				c.temparature_threshold						AS temparatureThreshold,
+				c.systolic_blood_pressure_threshold_min		AS systolicBloodPressureThresholdMin,
+				c.systolic_blood_pressure_threshold_max		AS systolicBloodPressureThresholdMax,
+				c.diastolic_blood_pressure_threshole_min	AS diastolicBloodPressureThresholdMin,
+				c.diastolic_blood_pressure_threshole_max	AS diastolicBloodPressureThresholdMax,
+				c.pulse_rate_threshold_min					AS pulseRateThresholdMin,
+				c.pulse_rate_threshold_max					AS pulseRateThresholdMax,
+				c.oxygen_saturation_threshold				AS oxygenSaturationThreshold,
+				c.blood_sugar_threshold_min					AS bloodSugarThresholdMin,
+				c.blood_sugar_threshold_max					AS bloodSugerThresholdMax
+		FROM clinic_configuration c, patient_care p
+		WHERE 
+			p.patient_idx = #{patientIdx)
+		AND
+			c.center_code = p.center_code
+	]]>
+    </select>
+    <update id="updateConfiguration" parameterType="ClinicConfigurationDTO">
+	<![CDATA[
+	    UPDATE	clinic_configuration
+	       SET	update_date								= NOW(),	
+	       		temparature_display_yn					= #{temparatureDisplayYN},
+				oxygen_saturation_display_yn			= #{oxygenSaturationDisplayYN},
+				pulse_rate_display_yn					= #{pulseRateDisplayYN},
+				systolic_blood_pressure_display_yn		= #{systolicBloodPressureDisplayYN},
+				diastolic_blood_pressure_display_yn		= #{diastolicBloodPressureDisplayYNo},
+				blood_sugar_display_yn					= #{bloodSugarDisplayYN},
+				symptom_display_yn						= #{symptomDisplayYN},
+				temparature_threshold					= #{temparatureThreshold},
+				systolic_blood_pressure_threshold_min	= #{systolicBloodPressureThresholdMin},
+				systolic_blood_pressure_threshold_max	= #{systolicBloodPressureThresholdMax},
+				diastolic_blood_pressure_threshole_min	= #{diastolicBloodPressureThresholdMin},
+				diastolic_blood_pressure_threshole_max	= #{diastolicBloodPressureThresholdMax},
+				pulse_rate_threshold_min				= #{pulseRateThresholdMin},
+				pulse_rate_threshold_max				= #{pulseRateThresholdMax},
+				oxygen_saturation_threshold				= #{oxygenSaturationThreshold},
+				blood_sugar_threshold_min				= #{bloodSugarThresholdMin},
+				blood_sugar_threshold_max				= #{bloodSugerThresholdMax}   
+    	WHERE 
+			center_code = #{centerCode}
+	]]>
+    </update>
+    <delete id="deleteConfiguration" parameterType="ClinicConfigurationDTO">
+	<![CDATA[
+	    DELETE 
+	      FROM clinic_configuration
+	     WHERE center_code = #{centerCode}
+	]]>
+    </delete>
+</mapper>

+ 122 - 19
src/main/resources/mybatis/mapper/patient/patientPHRLatest.xml

@@ -9,32 +9,37 @@
     ]]>
 	    <if test='temperature != null and temperature != ""'>
 	    <![CDATA[
-   			, temperature, temperature_create_date
+   			, temperature, temperature_create_date, temperature_alarm_yn
 	    ]]>
 	    </if>
 	    <if test='oxygenSaturation != null and oxygenSaturation != ""'>
 	    <![CDATA[
-   			, oxygen_saturation, oxygen_saturation_create_date
+   			, oxygen_saturation, oxygen_saturation_create_date, oxygen_saturation_alarm_yn
 	    ]]>
 	    </if>
 	    <if test='pulseRate != null and pulseRate != ""'>
 	    <![CDATA[
-   			, pulse_rate, pulse_rate_create_date
+   			, pulse_rate, pulse_rate_create_date, pulse_rate_alarm_yn
 	    ]]>
 	    </if>
 	    <if test='systolicBloodPressure != null and systolicBloodPressure != ""'>
 	    <![CDATA[
-   			, systolic_blood_pressure, systolic_blood_pressure_create_date
+   			, systolic_blood_pressure, systolic_blood_pressure_create_date, systolic_blood_alarm_yn
 	    ]]>
 	    </if>
 	    <if test='diastolicBloodPressure != null and diastolicBloodPressure != ""'>
 	    <![CDATA[
-   			, diastolic_blood_pressure, diastolic_blood_pressure_create_date
+   			, diastolic_blood_pressure, diastolic_blood_pressure_create_date, diastolic_blood_pressure_alarm_yn
 	    ]]>
 	    </if>
 	    <if test='bloodSugar != null and bloodSugar != ""'>
 	    <![CDATA[
-   			, blood_sugar, blood_sugar_create_date
+   			, blood_sugar, blood_sugar_create_date, blood_sugar_alarm_yn
+	    ]]>
+	    </if>
+	    <if test='symptomYN != null and symptomYN != ""'>
+	    <![CDATA[
+   			, symptom_create_date
 	    ]]>
 	    </if>
     <![CDATA[
@@ -44,32 +49,37 @@
    	]]>
    		<if test='temperature != null and temperature != ""'>
 	    <![CDATA[
-   			, #{temperature}, NOW()
+   			, #{temperature}, NOW(), #{temperatureAlarmYN}
 	    ]]>
 	    </if>
 	    <if test='oxygenSaturation != null and oxygenSaturation != ""'>
 	    <![CDATA[
-   			, #{oxygenSaturation}, NOW()
+   			, #{oxygenSaturation}, NOW(), #{oxygenSaturationAlarmYN}
 	    ]]>
 	    </if>
 	    <if test='pulseRate != null and pulseRate != ""'>
 	    <![CDATA[
-   			, #{pulseRate}, NOW()
+   			, #{pulseRate}, NOW(), #{pulseRateAlarmYN}
 	    ]]>
 	    </if>
 	    <if test='systolicBloodPressure != null and systolicBloodPressure != ""'>
 	    <![CDATA[
-   			, #{systolicBloodPressure}, NOW()
+   			, #{systolicBloodPressure}, NOW(), #{systolicBloodPressureAlarmYN}
 	    ]]>
 	    </if>
 	    <if test='diastolicBloodPressure != null and diastolicBloodPressure != ""'>
 	    <![CDATA[
-   			, #{diastolicBloodPressure}, NOW()
+   			, #{diastolicBloodPressure}, NOW(), #{diastolicBloodPressureAlarmYN}
 	    ]]>
 	    </if>
 	    <if test='bloodSugar != null and bloodSugar != ""'>
 	    <![CDATA[
-   			, #{bloodSugar}, NOW()
+   			, #{bloodSugar}, NOW(), #{bloodSugarAlarmYN}
+	    ]]>
+	    </if>
+	    <if test='symptomYN != null and symptomYN != ""'>
+	    <![CDATA[
+   			, NOW()
 	    ]]>
 	    </if>
     <![CDATA[
@@ -79,32 +89,37 @@
     ]]>
 	    <if test='temperature != null and temperature != ""'>
 	    <![CDATA[
-   			, temperature = #{temperature}, temperature_create_date = NOW()
+   			, temperature = #{temperature}, temperature_create_date = NOW(), temperature_alarm_yn = #{temperatureAlarmYN}
 	    ]]>
 	    </if>
 	    <if test='oxygenSaturation != null and oxygenSaturation != ""'>
 	    <![CDATA[
-   			, oxygen_saturation = #{oxygenSaturation}, oxygen_saturation_create_date = NOW()
+   			, oxygen_saturation = #{oxygenSaturation}, oxygen_saturation_create_date = NOW(), oxygen_saturation_alarm_yn = #{oxygenSaturationAlarmYN}
 	    ]]>
 	    </if>
 	    <if test='pulseRate != null and pulseRate != ""'>
 	    <![CDATA[
-   			, pulse_rate = #{pulseRate}, pulse_rate_create_date = NOW()
+   			, pulse_rate = #{pulseRate}, pulse_rate_create_date = NOW(), pulse_rate_alarm_yn = #{pulseRateAlarmYN}
 	    ]]>
 	    </if>
 	    <if test='systolicBloodPressure != null and systolicBloodPressure != ""'>
 	    <![CDATA[
-   			, systolic_blood_pressure = #{systolicBloodPressure}, systolic_blood_pressure_create_date = NOW()
+   			, systolic_blood_pressure = #{systolicBloodPressure}, systolic_blood_pressure_create_date = NOW(), systolic_blood_alarm_yn = #{systolicBloodPressureAlarmYN}
 	    ]]>
 	    </if>
 	    <if test='diastolicBloodPressure != null and diastolicBloodPressure != ""'>
 	    <![CDATA[
-   			, diastolic_blood_pressure = #{diastolicBloodPressure}, diastolic_blood_pressure_create_date = NOW()
+   			, diastolic_blood_pressure = #{diastolicBloodPressure}, diastolic_blood_pressure_create_date = NOW(), diastolic_blood_pressure_alarm_yn = #{diastolicBloodPressureAlarmYN}
 	    ]]>
 	    </if>
 	    <if test='bloodSugar != null and bloodSugar != ""'>
 	    <![CDATA[
-   			, blood_sugar = #{bloodSugar}, blood_sugar_create_date = NOW()
+   			, blood_sugar = #{bloodSugar}, blood_sugar_create_date = NOW(), blood_sugar_alarm_yn = #{bloodSugarAlarmYN}
+	    ]]>
+	    </if>
+	    <if test='symptomYN != null and symptomYN != ""'>
+	    <![CDATA[
+   			, symptom_create_date = NOW()
 	    ]]>
 	    </if>
 	</insert>
@@ -132,21 +147,109 @@
 	    		END 									AS todayHospitalizationYN,
 	    		p.temperature							AS temperature,
 	    		p.temperature_create_date				AS temperatureCreateDate,
+	    		p.temperature_alarm_yn					AS temperatureAlarmYN,
 	    		p.oxygen_saturation						AS oxygenSaturation,
 	    		p.oxygen_saturation_create_date 		AS oxygenSaturationCreateDate,
+	    		p.oxygen_saturation_alarm_yn			AS oxygenSaturationAlarmYN,
 	    		p.pulse_rate							AS pulseRate,
 	    		p.pulse_rate_create_date				AS pulseRateCreateDate,
+	    		p.pulse_rate_alarm_yn					AS pulseRateAlarmYN,
 	    		p.systolic_blood_pressure				AS systolicBloodPressure,
-	    		p.systolic_blood_pressure_create_date	AS systolicBloodPressureCreateDate,	    		
+	    		p.systolic_blood_pressure_create_date	AS systolicBloodPressureCreateDate,	    	
+    			p.systolic_blood_pressure_alarm_yn		AS systolicBloodPressureAlarmYN,
    				p.diastolic_blood_pressure				AS diastolicBloodPressure,
     			p.diastolic_blood_pressure_create_date	AS diastolicBloodPressureCreateDate,
+    			p.diastolic_blood_pressure_alarm_yn		AS diastolicBloodPressureAlarmYN,
     			p.blood_sugar							AS bloodSugar,
 	    		p.blood_sugar_create_date				AS bloodSugarCreateDate,
+	    		p.blood_sugar_alarm_yn					AS bloodSugarAlarmYN,
 	    		(SELECT count(*) FROM patient_memo m WHERE m.patient_idx = c.patient_idx) AS memoCount,
 	    		(SELECT s.create_date FROM patient_symptom_sim s WHERE s.patient_idx = c.patient_idx AND DATEDIFF(DATE(s.create_date), CURDATE()) = 0 ORDER BY s.create_date DESC LIMIT 1) AS symptomLastDate
 		FROM patient_care c LEFT JOIN patient_phr_latest p ON p.patient_idx = c.patient_idx
 		WHERE c.center_code = #{centerCode} AND c.state = 'H'
 	]]>
+		<if test="filterList != null and filterList.length > 0"> 
+		<![CDATA[
+		AND (
+		]]>
+			<foreach item="filter" index="index" collection="filterList" separator="OR">
+				<choose>
+					<when test="filter == 'newPatient'" >
+					<![CDATA[
+						DATEDIFF(c.hospitalization_date, CURDATE()) = 0
+					]]>
+	                </when>
+	         		<when test="filter == 'alarm'" >
+	         		<![CDATA[
+	         			p.temperature_alarm_yn = 'Y' OR oxygen_saturation_alarm_yn = 'Y' OR pulse_rate_alarm_yn = 'Y' OR systolic_blood_pressure_alarm_yn = 'Y' OR diastolic_blood_pressure_alarm_yn = 'Y' OR blood_sugar_alarm_yn = 'Y'
+	                ]]>
+	                </when>
+	                <when test="filter == 'temperatureBlank' and timeCriterion == 'AM'" >
+	                <![CDATA[
+	                	DATEDIFF(p.temperature_create_date, CURDATE()) != 0
+	                ]]>
+	                </when>
+	                <when test="filter == 'temperatureBlank' and timeCriterion == 'PM'" >
+	                <![CDATA[
+	                	DATEDIFF(p.temperature_create_date, CURDATE()) != 0 OR HOUR(p.temperature_create_date) < 12
+	                ]]>
+	                </when>
+	                <when test="filter == 'bloodPressureBlank' and timeCriterion == 'AM'" >
+	                <![CDATA[
+	                	DATEDIFF(p.temperature_create_date, CURDATE()) != 0
+	                ]]>
+	                </when>
+	                <when test="filter == 'bloodPressureBlank' and timeCriterion == 'PM'" >
+	                <![CDATA[
+	                	DATEDIFF(p.temperature_create_date, CURDATE()) != 0 OR HOUR(p.temperature_create_date) < 12
+	                ]]>
+	                </when>
+	                <when test="filter == 'pulseRateBlank' and timeCriterion == 'AM'" >
+	                <![CDATA[
+	                	DATEDIFF(p.pulse_rate_create_date, CURDATE()) != 0
+	                ]]>
+	                </when>
+	                <when test="filter == 'pulseRateBlank' and timeCriterion == 'PM'" >
+	                <![CDATA[
+	                	DATEDIFF(p.pulse_rate_create_date, CURDATE()) != 0 OR HOUR(p.pulse_rate_create_date) < 12
+	                ]]>
+	                </when>
+	                <when test="filter == 'oxygenSaturationBlank' and timeCriterion == 'AM'" >
+	                <![CDATA[
+	                	DATEDIFF(p.oxygen_saturation_create_date, CURDATE()) != 0
+	                ]]>
+	                </when>
+	                <when test="filter == 'oxygenSaturationBlank' and timeCriterion == 'PM'" >
+	                <![CDATA[
+	                	DATEDIFF(p.oxygen_saturation_create_date, CURDATE()) != 0 OR HOUR(p.oxygen_saturation_create_date) < 12
+	                ]]>
+	                </when>
+	                <when test="filter == 'bloodSugarBlank' and timeCriterion == 'AM'" >
+	                <![CDATA[
+	                	DATEDIFF(p.blood_sugar_create_date, CURDATE()) != 0
+	                ]]>
+	                </when>
+	                <when test="filter == 'bloodSugarBlank' and timeCriterion == 'PM'" >
+	                <![CDATA[
+	                	DATEDIFF(p.blood_sugar_create_date, CURDATE()) != 0 OR HOUR(p.blood_sugar_create_date) < 12
+	                ]]>
+	                </when> 
+	                <when test="filter == 'symptomBlank' and timeCriterion == 'AM'" >
+	                <![CDATA[
+	                	DATEDIFF(p.symptom_create_date, CURDATE()) != 0
+	                ]]>
+	                </when>
+	                <when test="filter == 'symptomBlank' and timeCriterion == 'PM'" >
+	                <![CDATA[
+	                	DATEDIFF(p.symptom_create_date, CURDATE()) != 0 OR HOUR(p.symptom_create_date) < 12
+	                ]]>
+	                </when>              
+	        	</choose>     
+	  		</foreach>
+  		<![CDATA[
+		)
+		]]>
+  		</if>
 		<if test='searchText != null and searchText != ""'>
             <![CDATA[
                AND (c.patient_name LIKE CONCAT('%', #{searchText}, '%') OR c.room_number LIKE CONCAT('%', #{searchText}, '%'))