123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433 |
- <?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.PatientPHRLatestMapper">
- <insert id="insertPHRLatest" parameterType="PatientPHRLatestDTO" useGeneratedKeys="true">
- <![CDATA[
- INSERT INTO patient_phr_latest (
- patient_idx
- ]]>
- <if test='temperature != null and temperature != ""'>
- <![CDATA[
- , temperature, temperature_create_date, temperature_alarm_yn
- ]]>
- </if>
- <if test='oxygenSaturation != null and oxygenSaturation != ""'>
- <![CDATA[
- , 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_alarm_yn
- ]]>
- </if>
- <if test='systolicBloodPressure != null and systolicBloodPressure != ""'>
- <![CDATA[
- , systolic_blood_pressure, systolic_blood_pressure_create_date
- ]]>
- </if>
- <if test='diastolicBloodPressure != null and diastolicBloodPressure != ""'>
- <![CDATA[
- , diastolic_blood_pressure, diastolic_blood_pressure_create_date
- ]]>
- </if>
- <if test='(systolicBloodPressure != null and systolicBloodPressure != "") or (diastolicBloodPressure != null and diastolicBloodPressure != "")'>
- <![CDATA[
- , high_blood_pressure_alarm_yn, low_blood_pressure_alarm_yn
- ]]>
- </if>
- <if test='bloodSugar != null and bloodSugar != ""'>
- <![CDATA[
- , blood_sugar, blood_sugar_create_date, blood_sugar_alarm_yn
- ]]>
- </if>
- <if test='symptomYN != null and symptomYN != ""'>
- <![CDATA[
- , symptom_create_date
- ]]>
- </if>
- <![CDATA[
- , create_date
- ) VALUE (
- #{patientIdx}
- ]]>
- <if test='temperature != null and temperature != ""'>
- <![CDATA[
- , #{temperature}, #{temperatureCreateDate}, #{temperatureAlarmYN}
- ]]>
- </if>
- <if test='oxygenSaturation != null and oxygenSaturation != ""'>
- <![CDATA[
- , #{oxygenSaturation}, #{oxygenSaturationCreateDate}, #{oxygenSaturationAlarmYN}
- ]]>
- </if>
- <if test='pulseRate != null and pulseRate != ""'>
- <![CDATA[
- , #{pulseRate}, #{pulseRateCreateDate}, #{pulseRateAlarmYN}
- ]]>
- </if>
- <if test='systolicBloodPressure != null and systolicBloodPressure != ""'>
- <![CDATA[
- , #{systolicBloodPressure}, #{systolicBloodPressureCreateDate}
- ]]>
- </if>
- <if test='diastolicBloodPressure != null and diastolicBloodPressure != ""'>
- <![CDATA[
- , #{diastolicBloodPressure}, #{diastolicBloodPressureCreateDate}
- ]]>
- </if>
- <if test='(systolicBloodPressure != null and systolicBloodPressure != "") or (diastolicBloodPressure != null and diastolicBloodPressure != "")'>
- <![CDATA[
- , #{highBloodPressureAlarmYN}, #{lowBloodPressureAlarmYN}
- ]]>
- </if>
- <if test='bloodSugar != null and bloodSugar != ""'>
- <![CDATA[
- , #{bloodSugar}, #{bloodSugarCreateDate}, #{bloodSugarAlarmYN}
- ]]>
- </if>
- <if test='symptomYN != null and symptomYN != ""'>
- <![CDATA[
- , #{symptomCreateDate}
- ]]>
- </if>
- <![CDATA[
- , NOW()
- )
- ]]>
- </insert>
- <update id="updatePHRLatest" parameterType="PatientPHRLatestDTO">
- <![CDATA[
- UPDATE patient_phr_latest
- SET update_date = NOW()
- ]]>
- <if test='temperature != null and temperature != ""'>
- <![CDATA[
- , temperature = #{temperature}, temperature_create_date = #{temperatureCreateDate}, temperature_alarm_yn = #{temperatureAlarmYN}
- ]]>
- </if>
- <if test='oxygenSaturation != null and oxygenSaturation != ""'>
- <![CDATA[
- , oxygen_saturation = #{oxygenSaturation}, oxygen_saturation_create_date = #{oxygenSaturationCreateDate}, oxygen_saturation_alarm_yn = #{oxygenSaturationAlarmYN}
- ]]>
- </if>
- <if test='pulseRate != null and pulseRate != ""'>
- <![CDATA[
- , pulse_rate = #{pulseRate}, pulse_rate_create_date = #{pulseRateCreateDate}, pulse_rate_alarm_yn = #{pulseRateAlarmYN}
- ]]>
- </if>
- <if test='systolicBloodPressure != null and systolicBloodPressure != ""'>
- <![CDATA[
- , systolic_blood_pressure = #{systolicBloodPressure}, systolic_blood_pressure_create_date = #{systolicBloodPressureCreateDate}
- ]]>
- </if>
- <if test='diastolicBloodPressure != null'>
- <![CDATA[
- , diastolic_blood_pressure = #{diastolicBloodPressure}, diastolic_blood_pressure_create_date = #{diastolicBloodPressureCreateDate}
- ]]>
- </if>
- <if test='(systolicBloodPressure != null and systolicBloodPressure != "") or (diastolicBloodPressure != null and diastolicBloodPressure != "")'>
- <![CDATA[
- , high_blood_pressure_alarm_yn = #{highBloodPressureAlarmYN}, low_blood_pressure_alarm_yn = #{lowBloodPressureAlarmYN}
- ]]>
- </if>
- <if test='bloodSugar != null and bloodSugar != ""'>
- <![CDATA[
- , blood_sugar = #{bloodSugar}, blood_sugar_create_date = #{bloodSugarCreateDate}, blood_sugar_alarm_yn = #{bloodSugarAlarmYN}
- ]]>
- </if>
- <if test='symptomYN != null and symptomYN != ""'>
- <![CDATA[
- , symptom_create_date = #{symptomCreateDate} ]]>
- </if>
- <![CDATA[
- WHERE patient_idx = #{patientIdx}
- ]]>
- <if test='temperature != null and temperature != ""'>
- <![CDATA[
- AND (temperature_create_date IS NULL OR temperature_create_date <= #{temperatureCreateDate})
- ]]>
- </if>
- <if test='oxygenSaturation != null and oxygenSaturation != ""'>
- <![CDATA[
- AND (oxygen_saturation_create_date IS NULL OR oxygen_saturation_create_date <= #{oxygenSaturationCreateDate})
- ]]>
- </if>
- <if test='bloodSugar != null and bloodSugar != ""'>
- <![CDATA[
- AND (blood_sugar_create_date IS NULL OR blood_sugar_create_date <= #{bloodSugarCreateDate})
- ]]>
- </if>
- <if test='pulseRate != null and pulseRate != ""'>
- <![CDATA[
- AND (pulse_rate_create_date IS NULL OR pulse_rate_create_date <= #{pulseRateCreateDate})
- ]]>
- </if>
- <if test='systolicBloodPressure != null and systolicBloodPressure != "" and diastolicBloodPressure == null and diastolicBloodPressure == ""'>
- <![CDATA[
- AND (systolic_blood_pressure_create_date IS NULL OR systolic_blood_pressure_create_date <= #{systolicBloodPressureCreateDate})
- ]]>
- </if>
- <if test='diastolicBloodPressure != null and diastolicBloodPressure != "" and systolicBloodPressure == null and systolicBloodPressure == ""'>
- <![CDATA[
- AND (diastolic_blood_pressure_create_date IS NULL OR diastolic_blood_pressure_create_date <= #{diastolicBloodPressureCreateDate})
- ]]>
- </if>
- <if test='systolicBloodPressure != null and systolicBloodPressure != "" and diastolicBloodPressure != null and diastolicBloodPressure != ""'>
- <![CDATA[
- AND (systolic_blood_pressure_create_date IS NULL OR systolic_blood_pressure_create_date <= #{systolicBloodPressureCreateDate} OR diastolic_blood_pressure_create_date IS NULL OR diastolic_blood_pressure_create_date < #{diastolicBloodPressureCreateDate})
- ]]>
- </if>
- <if test='symptomYN != null and symptomYN != ""'>
- <![CDATA[
- AND (symptom_create_date IS NULL OR symptom_create_date <= #{symptomCreateDate})
- ]]>
- </if>
- </update>
- <select id="selectPHRLatest" parameterType="PatientPHRLatestDTO" resultType="PatientPHRLatestDTO">
- <![CDATA[
- SELECT patient_idx AS patientIdx
- FROM patient_phr_latest
- WHERE patient_idx = #{patientIdx}
- ]]>
- </select>
- <select id="selectPHRLatestCount" parameterType="PatientPHRLatestDTO" resultType="int">
- <![CDATA[
- SELECT count(*) AS total
- 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="AND">
- <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 high_blood_pressure_alarm_yn = 'Y' OR low_blood_pressure_alarm_yn = 'Y' OR blood_sugar_alarm_yn = 'Y')
- ]]>
- </when>
- <when test="filter == 'temperatureBlank' and timeCriterion == 'AM'" >
- <![CDATA[
- ((p.temperature IS NULL) OR (DATEDIFF(p.temperature_create_date, CURDATE()) != 0))
- ]]>
- </when>
- <when test="filter == 'temperatureBlank' and timeCriterion == 'PM'" >
- <![CDATA[
- ((p.temperature IS NULL) OR (DATEDIFF(p.temperature_create_date, CURDATE()) != 0 OR HOUR(p.temperature_create_date) < 12))
- ]]>
- </when>
- <when test="filter == 'bloodPressureBlank' and timeCriterion == 'AM'" >
- <![CDATA[
- ((p.systolic_blood_pressure IS NULL OR diastolic_blood_pressure IS NULL) OR (DATEDIFF(p.systolic_blood_pressure_create_date, CURDATE()) != 0 OR DATEDIFF(p.diastolic_blood_pressure_create_date, CURDATE()) != 0))
- ]]>
- </when>
- <when test="filter == 'bloodPressureBlank' and timeCriterion == 'PM'" >
- <![CDATA[
- ((p.systolic_blood_pressure IS NULL OR diastolic_blood_pressure IS NULL) OR (DATEDIFF(p.systolic_blood_pressure_create_date, CURDATE()) != 0 OR HOUR(p.systolic_blood_pressure_create_date) < 12 OR DATEDIFF(p.diastolic_blood_pressure_create_date, CURDATE()) != 0 OR HOUR(p.diastolic_blood_pressure_create_date) < 12))
- ]]>
- </when>
- <when test="filter == 'pulseRateBlank' and timeCriterion == 'AM'" >
- <![CDATA[
- ((p.pulse_rate IS NULL) OR (DATEDIFF(p.pulse_rate_create_date, CURDATE()) != 0))
- ]]>
- </when>
- <when test="filter == 'pulseRateBlank' and timeCriterion == 'PM'" >
- <![CDATA[
- ((p.pulse_rate IS NULL) OR (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[
- ((p.oxygen_saturation IS NULL) OR (DATEDIFF(p.oxygen_saturation_create_date, CURDATE()) != 0))
- ]]>
- </when>
- <when test="filter == 'oxygenSaturationBlank' and timeCriterion == 'PM'" >
- <![CDATA[
- ((p.oxygen_saturation IS NULL) OR (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[
- ((p.blood_sugar IS NULL) OR (DATEDIFF(p.blood_sugar_create_date, CURDATE()) != 0))
- ]]>
- </when>
- <when test="filter == 'bloodSugarBlank' and timeCriterion == 'PM'" >
- <![CDATA[
- ((p.blood_sugar IS NULL) OR (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[
- ((p.symptom_create_date IS NULL) OR (DATEDIFF(p.symptom_create_date, CURDATE()) != 0))
- ]]>
- </when>
- <when test="filter == 'symptomBlank' and timeCriterion == 'PM'" >
- <![CDATA[
- ((p.symptom_create_date IS NULL) OR (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}, '%'))
- ]]>
- </if>
- </select>
- <select id="selectPHRLatestList" parameterType="PatientPHRLatestDTO" resultType="PatientPHRLatestDTO">
- <![CDATA[
- SELECT
- c.patient_idx AS patientIdx,
- c.patient_name AS patientName,
- c.ward_number AS wardNumber,
- c.room_number AS roomNumber,
- CASE WHEN DATEDIFF(c.hospitalization_date, CURDATE()) = 0 THEN 'Y'
- ELSE 'N'
- 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.diastolic_blood_pressure AS diastolicBloodPressure,
- p.diastolic_blood_pressure_create_date AS diastolicBloodPressureCreateDate,
- p.high_blood_pressure_alarm_yn AS highBloodPressureAlarmYN,
- p.low_blood_pressure_alarm_yn AS lowBloodPressureAlarmYN,
- 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.recorded_date), CURDATE()) = 0 ORDER BY s.recorded_date DESC LIMIT 1) AS symptomLastDate,
- m.stress_total AS stressTotal,
- m.depressed_total AS depressedTotal,
- m.depressed_nine AS depressedNine,
- m.vas_total AS vasTotal,
- m.create_date AS mentalCreateDate,
- m.agree_yn AS agreeYn
- FROM patient_care c LEFT JOIN patient_phr_latest p ON p.patient_idx = c.patient_idx
- LEFT JOIN ( SELECT * FROM mental_health_total WHERE patient_idx = c.patient_idx ORDER BY idx DESC limit 1 ) m ON m.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="AND">
- <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 high_blood_pressure_alarm_yn = 'Y' OR low_blood_pressure_alarm_yn = 'Y' OR blood_sugar_alarm_yn = 'Y')
- ]]>
- </when>
- <when test="filter == 'temperatureBlank' and timeCriterion == 'AM'" >
- <![CDATA[
- ((p.temperature IS NULL) OR (DATEDIFF(p.temperature_create_date, CURDATE()) != 0))
- ]]>
- </when>
- <when test="filter == 'temperatureBlank' and timeCriterion == 'PM'" >
- <![CDATA[
- ((p.temperature IS NULL) OR (DATEDIFF(p.temperature_create_date, CURDATE()) != 0 OR HOUR(p.temperature_create_date) < 12))
- ]]>
- </when>
- <when test="filter == 'bloodPressureBlank' and timeCriterion == 'AM'" >
- <![CDATA[
- ((p.systolic_blood_pressure IS NULL OR diastolic_blood_pressure IS NULL) OR (DATEDIFF(p.systolic_blood_pressure_create_date, CURDATE()) != 0 OR DATEDIFF(p.diastolic_blood_pressure_create_date, CURDATE()) != 0))
- ]]>
- </when>
- <when test="filter == 'bloodPressureBlank' and timeCriterion == 'PM'" >
- <![CDATA[
- ((p.systolic_blood_pressure IS NULL OR diastolic_blood_pressure IS NULL) OR (DATEDIFF(p.systolic_blood_pressure_create_date, CURDATE()) != 0 OR HOUR(p.systolic_blood_pressure_create_date) < 12 OR DATEDIFF(p.diastolic_blood_pressure_create_date, CURDATE()) != 0 OR HOUR(p.diastolic_blood_pressure_create_date) < 12))
- ]]>
- </when>
- <when test="filter == 'pulseRateBlank' and timeCriterion == 'AM'" >
- <![CDATA[
- ((p.pulse_rate IS NULL) OR (DATEDIFF(p.pulse_rate_create_date, CURDATE()) != 0))
- ]]>
- </when>
- <when test="filter == 'pulseRateBlank' and timeCriterion == 'PM'" >
- <![CDATA[
- ((p.pulse_rate IS NULL) OR (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[
- ((p.oxygen_saturation IS NULL) OR (DATEDIFF(p.oxygen_saturation_create_date, CURDATE()) != 0))
- ]]>
- </when>
- <when test="filter == 'oxygenSaturationBlank' and timeCriterion == 'PM'" >
- <![CDATA[
- ((p.oxygen_saturation IS NULL) OR (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[
- ((p.blood_sugar IS NULL) OR (DATEDIFF(p.blood_sugar_create_date, CURDATE()) != 0))
- ]]>
- </when>
- <when test="filter == 'bloodSugarBlank' and timeCriterion == 'PM'" >
- <![CDATA[
- ((p.blood_sugar IS NULL) OR (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[
- ((p.symptom_create_date IS NULL) OR (DATEDIFF(p.symptom_create_date, CURDATE()) != 0))
- ]]>
- </when>
- <when test="filter == 'symptomBlank' and timeCriterion == 'PM'" >
- <![CDATA[
- ((p.symptom_create_date IS NULL) OR (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}, '%'))
- ]]>
- </if>
- <choose>
- <when test='sortType != null and sortType == "name"'>
- <![CDATA[
- ORDER BY c.patient_name ASC
- ]]>
- </when>
- <otherwise>
- <![CDATA[
- ORDER BY c.ward_number ASC, c.room_number ASC
- ]]>
- </otherwise>
- </choose>
- <![CDATA[
- LIMIT #{limit}, #{limitMax}
- ]]>
- </select>
- </mapper>
|