123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- <?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, high_blood_pressure_alarm_yn, low_blood_pressure_alarm_yn
- ]]>
- </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}, NOW(), #{temperatureAlarmYN}
- ]]>
- </if>
- <if test='oxygenSaturation != null and oxygenSaturation != ""'>
- <![CDATA[
- , #{oxygenSaturation}, NOW(), #{oxygenSaturationAlarmYN}
- ]]>
- </if>
- <if test='pulseRate != null and pulseRate != ""'>
- <![CDATA[
- , #{pulseRate}, NOW(), #{pulseRateAlarmYN}
- ]]>
- </if>
- <if test='systolicBloodPressure != null and systolicBloodPressure != ""'>
- <![CDATA[
- , #{systolicBloodPressure}, NOW(), #{highBloodPressureAlarmYN}, #{lowBloodPressureAlarmYN}
- ]]>
- </if>
- <if test='diastolicBloodPressure != null and diastolicBloodPressure != ""'>
- <![CDATA[
- , #{diastolicBloodPressure}, NOW()
- ]]>
- </if>
- <if test='bloodSugar != null and bloodSugar != ""'>
- <![CDATA[
- , #{bloodSugar}, NOW(), #{bloodSugarAlarmYN}
- ]]>
- </if>
- <if test='symptomYN != null and symptomYN != ""'>
- <![CDATA[
- , NOW()
- ]]>
- </if>
- <![CDATA[
- , NOW()
- )
- ON DUPLICATE KEY UPDATE update_date = NOW()
- ]]>
- <if test='temperature != null and temperature != ""'>
- <![CDATA[
- , 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_alarm_yn = #{oxygenSaturationAlarmYN}
- ]]>
- </if>
- <if test='pulseRate != null and pulseRate != ""'>
- <![CDATA[
- , 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()
- ]]>
- </if>
- <if test='diastolicBloodPressure != null and diastolicBloodPressure != ""'>
- <![CDATA[
- , diastolic_blood_pressure = #{diastolicBloodPressure}, diastolic_blood_pressure_create_date = NOW()
- ]]>
- </if>
- <if test='(systolicBloodPressure != null and systolicBloodPressure != "") or (diastolicBloodPressure != null and diastolicBloodPressure != "")'>
- <![CDATA[
- , high_blood_alarm_yn = #{highBloodPressureAlarmYN}, low_blood_pressure_alarm_yn = #{lowBloodPressureAlarmYN}
- ]]>
- </if>
- <if test='bloodSugar != null and bloodSugar != ""'>
- <![CDATA[
- , 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>
- <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='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.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 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[
- 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}, '%'))
- ]]>
- </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>
|