patientPHRLatest.xml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.lemon.lifecenter.mapper.PatientPHRLatestMapper">
  4. <insert id="insertPHRLatest" parameterType="PatientPHRLatestDTO" useGeneratedKeys="true">
  5. <![CDATA[
  6. INSERT INTO patient_phr_latest (
  7. patient_idx
  8. ]]>
  9. <if test='temperature != null and temperature != ""'>
  10. <![CDATA[
  11. , temperature, temperature_create_date, temperature_alarm_yn
  12. ]]>
  13. </if>
  14. <if test='oxygenSaturation != null and oxygenSaturation != ""'>
  15. <![CDATA[
  16. , oxygen_saturation, oxygen_saturation_create_date, oxygen_saturation_alarm_yn
  17. ]]>
  18. </if>
  19. <if test='pulseRate != null and pulseRate != ""'>
  20. <![CDATA[
  21. , pulse_rate, pulse_rate_create_date, pulse_rate_alarm_yn
  22. ]]>
  23. </if>
  24. <if test='systolicBloodPressure != null and systolicBloodPressure != ""'>
  25. <![CDATA[
  26. , systolic_blood_pressure, systolic_blood_pressure_create_date, high_blood_pressure_alarm_yn, low_blood_pressure_alarm_yn
  27. ]]>
  28. </if>
  29. <if test='diastolicBloodPressure != null and diastolicBloodPressure != ""'>
  30. <![CDATA[
  31. , diastolic_blood_pressure, diastolic_blood_pressure_create_date
  32. ]]>
  33. </if>
  34. <if test='(systolicBloodPressure != null and systolicBloodPressure != "") or (diastolicBloodPressure != null and diastolicBloodPressure != "")'>
  35. <![CDATA[
  36. , high_blood_pressure_alarm_yn, low_blood_pressure_alarm_yn
  37. ]]>
  38. </if>
  39. <if test='bloodSugar != null and bloodSugar != ""'>
  40. <![CDATA[
  41. , blood_sugar, blood_sugar_create_date, blood_sugar_alarm_yn
  42. ]]>
  43. </if>
  44. <if test='symptomYN != null and symptomYN != ""'>
  45. <![CDATA[
  46. , symptom_create_date
  47. ]]>
  48. </if>
  49. <![CDATA[
  50. , create_date
  51. ) VALUE (
  52. #{patientIdx}
  53. ]]>
  54. <if test='temperature != null and temperature != ""'>
  55. <![CDATA[
  56. , #{temperature}, NOW(), #{temperatureAlarmYN}
  57. ]]>
  58. </if>
  59. <if test='oxygenSaturation != null and oxygenSaturation != ""'>
  60. <![CDATA[
  61. , #{oxygenSaturation}, NOW(), #{oxygenSaturationAlarmYN}
  62. ]]>
  63. </if>
  64. <if test='pulseRate != null and pulseRate != ""'>
  65. <![CDATA[
  66. , #{pulseRate}, NOW(), #{pulseRateAlarmYN}
  67. ]]>
  68. </if>
  69. <if test='systolicBloodPressure != null and systolicBloodPressure != ""'>
  70. <![CDATA[
  71. , #{systolicBloodPressure}, NOW(), #{highBloodPressureAlarmYN}, #{lowBloodPressureAlarmYN}
  72. ]]>
  73. </if>
  74. <if test='diastolicBloodPressure != null and diastolicBloodPressure != ""'>
  75. <![CDATA[
  76. , #{diastolicBloodPressure}, NOW()
  77. ]]>
  78. </if>
  79. <if test='bloodSugar != null and bloodSugar != ""'>
  80. <![CDATA[
  81. , #{bloodSugar}, NOW(), #{bloodSugarAlarmYN}
  82. ]]>
  83. </if>
  84. <if test='symptomYN != null and symptomYN != ""'>
  85. <![CDATA[
  86. , NOW()
  87. ]]>
  88. </if>
  89. <![CDATA[
  90. , NOW()
  91. )
  92. ON DUPLICATE KEY UPDATE update_date = NOW()
  93. ]]>
  94. <if test='temperature != null and temperature != ""'>
  95. <![CDATA[
  96. , temperature = #{temperature}, temperature_create_date = NOW(), temperature_alarm_yn = #{temperatureAlarmYN}
  97. ]]>
  98. </if>
  99. <if test='oxygenSaturation != null and oxygenSaturation != ""'>
  100. <![CDATA[
  101. , oxygen_saturation = #{oxygenSaturation}, oxygen_saturation_create_date = NOW(), oxygen_saturation_alarm_yn = #{oxygenSaturationAlarmYN}
  102. ]]>
  103. </if>
  104. <if test='pulseRate != null and pulseRate != ""'>
  105. <![CDATA[
  106. , pulse_rate = #{pulseRate}, pulse_rate_create_date = NOW(), pulse_rate_alarm_yn = #{pulseRateAlarmYN}
  107. ]]>
  108. </if>
  109. <if test='systolicBloodPressure != null and systolicBloodPressure != ""'>
  110. <![CDATA[
  111. , systolic_blood_pressure = #{systolicBloodPressure}, systolic_blood_pressure_create_date = NOW()
  112. ]]>
  113. </if>
  114. <if test='diastolicBloodPressure != null and diastolicBloodPressure != ""'>
  115. <![CDATA[
  116. , diastolic_blood_pressure = #{diastolicBloodPressure}, diastolic_blood_pressure_create_date = NOW()
  117. ]]>
  118. </if>
  119. <if test='(systolicBloodPressure != null and systolicBloodPressure != "") or (diastolicBloodPressure != null and diastolicBloodPressure != "")'>
  120. <![CDATA[
  121. , high_blood_alarm_yn = #{highBloodPressureAlarmYN}, low_blood_pressure_alarm_yn = #{lowBloodPressureAlarmYN}
  122. ]]>
  123. </if>
  124. <if test='bloodSugar != null and bloodSugar != ""'>
  125. <![CDATA[
  126. , blood_sugar = #{bloodSugar}, blood_sugar_create_date = NOW(), blood_sugar_alarm_yn = #{bloodSugarAlarmYN}
  127. ]]>
  128. </if>
  129. <if test='symptomYN != null and symptomYN != ""'>
  130. <![CDATA[
  131. , symptom_create_date = NOW()
  132. ]]>
  133. </if>
  134. </insert>
  135. <select id="selectPHRLatestCount" parameterType="PatientPHRLatestDTO" resultType="int">
  136. <![CDATA[
  137. SELECT count(*) AS total
  138. FROM patient_care c LEFT JOIN patient_phr_latest p ON p.patient_idx = c.patient_idx
  139. WHERE c.center_code = #{centerCode} AND c.state = 'H'
  140. ]]>
  141. <if test='searchText != null and searchText != ""'>
  142. <![CDATA[
  143. AND (c.patient_name LIKE CONCAT('%', #{searchText}, '%') OR c.room_number LIKE CONCAT('%', #{searchText}, '%'))
  144. ]]>
  145. </if>
  146. </select>
  147. <select id="selectPHRLatestList" parameterType="PatientPHRLatestDTO" resultType="PatientPHRLatestDTO">
  148. <![CDATA[
  149. SELECT
  150. c.patient_idx AS patientIdx,
  151. c.patient_name AS patientName,
  152. c.ward_number AS wardNumber,
  153. c.room_number AS roomNumber,
  154. CASE WHEN DATEDIFF(c.hospitalization_date, CURDATE()) = 0 THEN 'Y'
  155. ELSE 'N'
  156. END AS todayHospitalizationYN,
  157. p.temperature AS temperature,
  158. p.temperature_create_date AS temperatureCreateDate,
  159. p.temperature_alarm_yn AS temperatureAlarmYN,
  160. p.oxygen_saturation AS oxygenSaturation,
  161. p.oxygen_saturation_create_date AS oxygenSaturationCreateDate,
  162. p.oxygen_saturation_alarm_yn AS oxygenSaturationAlarmYN,
  163. p.pulse_rate AS pulseRate,
  164. p.pulse_rate_create_date AS pulseRateCreateDate,
  165. p.pulse_rate_alarm_yn AS pulseRateAlarmYN,
  166. p.systolic_blood_pressure AS systolicBloodPressure,
  167. p.systolic_blood_pressure_create_date AS systolicBloodPressureCreateDate,
  168. p.diastolic_blood_pressure AS diastolicBloodPressure,
  169. p.diastolic_blood_pressure_create_date AS diastolicBloodPressureCreateDate,
  170. p.high_blood_pressure_alarm_yn AS highBloodPressureAlarmYN,
  171. p.low_blood_pressure_alarm_yn AS lowBloodPressureAlarmYN,
  172. p.blood_sugar AS bloodSugar,
  173. p.blood_sugar_create_date AS bloodSugarCreateDate,
  174. p.blood_sugar_alarm_yn AS bloodSugarAlarmYN,
  175. (SELECT count(*) FROM patient_memo m WHERE m.patient_idx = c.patient_idx) AS memoCount,
  176. (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
  177. FROM patient_care c LEFT JOIN patient_phr_latest p ON p.patient_idx = c.patient_idx
  178. WHERE c.center_code = #{centerCode} AND c.state = 'H'
  179. ]]>
  180. <if test="filterList != null and filterList.length > 0">
  181. <![CDATA[
  182. AND (
  183. ]]>
  184. <foreach item="filter" index="index" collection="filterList" separator="OR">
  185. <choose>
  186. <when test="filter == 'newPatient'" >
  187. <![CDATA[
  188. DATEDIFF(c.hospitalization_date, CURDATE()) = 0
  189. ]]>
  190. </when>
  191. <when test="filter == 'alarm'" >
  192. <![CDATA[
  193. 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'
  194. ]]>
  195. </when>
  196. <when test="filter == 'temperatureBlank' and timeCriterion == 'AM'" >
  197. <![CDATA[
  198. DATEDIFF(p.temperature_create_date, CURDATE()) != 0
  199. ]]>
  200. </when>
  201. <when test="filter == 'temperatureBlank' and timeCriterion == 'PM'" >
  202. <![CDATA[
  203. DATEDIFF(p.temperature_create_date, CURDATE()) != 0 OR HOUR(p.temperature_create_date) < 12
  204. ]]>
  205. </when>
  206. <when test="filter == 'bloodPressureBlank' and timeCriterion == 'AM'" >
  207. <![CDATA[
  208. DATEDIFF(p.temperature_create_date, CURDATE()) != 0
  209. ]]>
  210. </when>
  211. <when test="filter == 'bloodPressureBlank' and timeCriterion == 'PM'" >
  212. <![CDATA[
  213. DATEDIFF(p.temperature_create_date, CURDATE()) != 0 OR HOUR(p.temperature_create_date) < 12
  214. ]]>
  215. </when>
  216. <when test="filter == 'pulseRateBlank' and timeCriterion == 'AM'" >
  217. <![CDATA[
  218. DATEDIFF(p.pulse_rate_create_date, CURDATE()) != 0
  219. ]]>
  220. </when>
  221. <when test="filter == 'pulseRateBlank' and timeCriterion == 'PM'" >
  222. <![CDATA[
  223. DATEDIFF(p.pulse_rate_create_date, CURDATE()) != 0 OR HOUR(p.pulse_rate_create_date) < 12
  224. ]]>
  225. </when>
  226. <when test="filter == 'oxygenSaturationBlank' and timeCriterion == 'AM'" >
  227. <![CDATA[
  228. DATEDIFF(p.oxygen_saturation_create_date, CURDATE()) != 0
  229. ]]>
  230. </when>
  231. <when test="filter == 'oxygenSaturationBlank' and timeCriterion == 'PM'" >
  232. <![CDATA[
  233. DATEDIFF(p.oxygen_saturation_create_date, CURDATE()) != 0 OR HOUR(p.oxygen_saturation_create_date) < 12
  234. ]]>
  235. </when>
  236. <when test="filter == 'bloodSugarBlank' and timeCriterion == 'AM'" >
  237. <![CDATA[
  238. DATEDIFF(p.blood_sugar_create_date, CURDATE()) != 0
  239. ]]>
  240. </when>
  241. <when test="filter == 'bloodSugarBlank' and timeCriterion == 'PM'" >
  242. <![CDATA[
  243. DATEDIFF(p.blood_sugar_create_date, CURDATE()) != 0 OR HOUR(p.blood_sugar_create_date) < 12
  244. ]]>
  245. </when>
  246. <when test="filter == 'symptomBlank' and timeCriterion == 'AM'" >
  247. <![CDATA[
  248. DATEDIFF(p.symptom_create_date, CURDATE()) != 0
  249. ]]>
  250. </when>
  251. <when test="filter == 'symptomBlank' and timeCriterion == 'PM'" >
  252. <![CDATA[
  253. DATEDIFF(p.symptom_create_date, CURDATE()) != 0 OR HOUR(p.symptom_create_date) < 12
  254. ]]>
  255. </when>
  256. </choose>
  257. </foreach>
  258. <![CDATA[
  259. )
  260. ]]>
  261. </if>
  262. <if test='searchText != null and searchText != ""'>
  263. <![CDATA[
  264. AND (c.patient_name LIKE CONCAT('%', #{searchText}, '%') OR c.room_number LIKE CONCAT('%', #{searchText}, '%'))
  265. ]]>
  266. </if>
  267. <choose>
  268. <when test='sortType != null and sortType == "name"'>
  269. <![CDATA[
  270. ORDER BY c.patient_name ASC
  271. ]]>
  272. </when>
  273. <otherwise>
  274. <![CDATA[
  275. ORDER BY c.ward_number ASC, c.room_number ASC
  276. ]]>
  277. </otherwise>
  278. </choose>
  279. <![CDATA[
  280. LIMIT #{limit}, #{limitMax}
  281. ]]>
  282. </select>
  283. </mapper>