patient.xml 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729
  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.PatientMapper">
  4. <select id="selectPatientCount" parameterType="PatientDTO" resultType="int">
  5. <![CDATA[
  6. SELECT count(*) AS total
  7. FROM PATIENT_CARE
  8. WHERE 1 = 1
  9. AND USE_YN = 'Y'
  10. ]]>
  11. <if test='centerCode != "0"'>
  12. <![CDATA[
  13. AND CENTER_CODE = #{centerCode}
  14. ]]>
  15. </if>
  16. <if test='state != "ALL"'>
  17. <![CDATA[
  18. AND STATE = #{state}
  19. ]]>
  20. </if>
  21. <if test='patientName != null and patientName != ""'>
  22. <![CDATA[
  23. AND ( UPPER(PATIENT_NAME) LIKE CONCAT('%', UPPER(#{patientName}), '%')
  24. OR ROOM_NUMBER LIKE CONCAT('%', #{patientName}, '%')
  25. OR WARD_NUMBER LIKE CONCAT('%', #{patientName}, '%') )
  26. ]]>
  27. </if>
  28. <if test='state == "ALL"'>
  29. <![CDATA[
  30. AND (DATE_FORMAT(HOSPITALIZATION_DATE, '%Y-%m-%d') BETWEEN
  31. ]]>
  32. <choose>
  33. <when test='startDate != null and startDate != ""'>#{startDate}</when>
  34. <when test='startDate != null and startDate == ""'>'1900-01-01'</when>
  35. <otherwise>'1900-01-01'</otherwise>
  36. </choose>
  37. <![CDATA[
  38. AND
  39. ]]>
  40. <choose>
  41. <when test='endDate != null and endDate != ""'>#{endDate}</when>
  42. <when test='endDate != null and endDate == ""'>DATE_FORMAT( NOW(), '%Y-%m-%d' )</when>
  43. <otherwise>DATE_FORMAT( NOW(), '%Y-%m-%d' )</otherwise>
  44. </choose>
  45. <![CDATA[
  46. OR DATE_FORMAT(DISISOLATION_DATE, '%Y-%m-%d') BETWEEN
  47. ]]>
  48. <choose>
  49. <when test='startDate != null and startDate != ""'>#{startDate}</when>
  50. <when test='startDate != null and startDate == ""'>'1900-01-01'</when>
  51. <otherwise>'1900-01-01'</otherwise>
  52. </choose>
  53. <![CDATA[
  54. AND
  55. ]]>
  56. <choose>
  57. <when test='endDate != null and endDate != ""'>#{endDate}</when>
  58. <when test='endDate != null and endDate == ""'>DATE_FORMAT( NOW(), '%Y-%m-%d' )</when>
  59. <otherwise>DATE_FORMAT( NOW(), '%Y-%m-%d' )</otherwise>
  60. </choose>
  61. <![CDATA[)]]>
  62. </if>
  63. <if test='state =="H"'>
  64. <![CDATA[
  65. AND DATE_FORMAT(HOSPITALIZATION_DATE, '%Y-%m-%d') BETWEEN
  66. ]]>
  67. <choose>
  68. <when test='startDate != null and startDate != ""'>#{startDate}</when>
  69. <when test='startDate != null and startDate == ""'>'1900-01-01'</when>
  70. <otherwise>'1900-01-01'</otherwise>
  71. </choose>
  72. <![CDATA[
  73. AND
  74. ]]>
  75. <choose>
  76. <when test='endDate != null and endDate != ""'>#{endDate}</when>
  77. <when test='endDate != null and endDate == ""'>DATE_FORMAT( NOW(), '%Y-%m-%d' )</when>
  78. <otherwise>DATE_FORMAT( NOW(), '%Y-%m-%d' )</otherwise>
  79. </choose>
  80. </if>
  81. <if test='state != "H" and state != "ALL"'>
  82. <![CDATA[
  83. AND DATE_FORMAT(DISISOLATION_DATE, '%Y-%m-%d') BETWEEN
  84. ]]>
  85. <choose>
  86. <when test='startDate != null and startDate != ""'>#{startDate}</when>
  87. <when test='startDate != null and startDate == ""'>'1900-01-01'</when>
  88. <otherwise>'1900-01-01'</otherwise>
  89. </choose>
  90. <![CDATA[
  91. AND
  92. ]]>
  93. <choose>
  94. <when test='endDate != null and endDate != ""'>#{endDate}</when>
  95. <when test='endDate != null and endDate == ""'>DATE_FORMAT( NOW(), '%Y-%m-%d' )</when>
  96. <otherwise>DATE_FORMAT( NOW(), '%Y-%m-%d' )</otherwise>
  97. </choose>
  98. </if>
  99. </select>
  100. <select id="selectPatientList" parameterType="PatientDTO" resultType="PatientDTO">
  101. <![CDATA[
  102. SELECT pc.PATIENT_IDX AS patientIdx,
  103. PATIENT_NAME AS patientName,
  104. CASE WHEN GENDER = 'M' THEN '남'
  105. WHEN GENDER = 'F' THEN '여'
  106. ELSE ''
  107. END AS gender,
  108. (SELECT TRUNC((SYSDATE-TO_DATE(JUMIN, 'YYYYMMDD'))/365) + 1) AS age,
  109. DATE_FORMAT(JUMIN, '%Y-%m-%d') AS jumin,
  110. ward_number AS wardNumber,
  111. room_number AS roomNumber,
  112. DATE_FORMAT(FINAL_CLINIC_DATE, '%Y-%m-%d') AS finamClinicDate,
  113. DATE_FORMAT(HOSPITALIZATION_DATE, '%Y-%m-%d') AS hospitalizationDate,
  114. DATE_FORMAT(CONFIRMATION_DATE, '%Y-%m-%d') AS confirmationDate,
  115. DATE_FORMAT(EXPECTED_DISCHARGE_DATE, '%Y-%m-%d') AS expectedDischargeDate,
  116. DATE_FORMAT(DISISOLATION_DATE, '%Y-%m-%d') AS disisolationDate,
  117. CASE WHEN STATE = 'H' THEN '입소'
  118. WHEN STATE = 'D' THEN '퇴소'
  119. WHEN STATE = 'T' THEN '지정병원 이송'
  120. WHEN STATE = 'E' THEN '기타'
  121. ELSE ''
  122. END AS state,
  123. center_code AS centerCode,
  124. ( SELECT center_name
  125. FROM center_info
  126. WHERE center_code = pc.center_code ) AS centerName,
  127. CAST( temperature AS STRING ) AS temperature,
  128. DATE_FORMAT(temperature_create_date, '%Y-%m-%d %H:%i') AS temperatureCreateDate,
  129. CAST( oxygen_saturation AS STRING ) AS oxygenSaturation,
  130. DATE_FORMAT(oxygen_saturation_create_date, '%Y-%m-%d %H:%i') AS oxygenSaturationCreateDate,
  131. CAST( pulse_rate AS STRING ) AS pulseRate,
  132. DATE_FORMAT(pulse_rate_create_date, '%Y-%m-%d %H:%i') AS pulseRateCreateDate,
  133. CAST( systolic_blood_pressure AS STRING ) AS systolicBloodPressure,
  134. DATE_FORMAT(systolic_blood_pressure_create_date, '%Y-%m-%d %H:%i') AS systolicBloodPressureCreateDate,
  135. CAST( diastolic_blood_pressure AS STRING ) AS diastolicBloodPressure,
  136. DATE_FORMAT(diastolic_blood_pressure_create_date, '%Y-%m-%d %H:%i') AS diastolicBloodPressureCreateDate,
  137. CAST( blood_sugar AS STRING ) AS bloodSugar,
  138. DATE_FORMAT(blood_sugar_create_date, '%Y-%m-%d %H:%i') AS bloodSugarCreateDate,
  139. cough_check AS coughCheck,
  140. dyspnea_check AS dyspneaCheck,
  141. cold_fit_check AS coldFitCheck,
  142. muscle_pain_check AS musclePainCheck,
  143. headache_check AS headacheCheck,
  144. sore_throat_check AS soreThroatCheck,
  145. smell_palate_check AS smellPalateCheck,
  146. fatigue_check AS fatigueCheck,
  147. appetite_loss_check AS appetiteLossCheck,
  148. sputum_check AS sputumCheck,
  149. ocin_check AS ocinCheck,
  150. vomiting_check AS vomitingCheck,
  151. diarrhea_check AS diarrheaCheck,
  152. dizziness_check AS dizzinessCheck,
  153. nose_check AS noseCheck,
  154. etc_check AS etcCheckSymptom,
  155. etc_content AS etcContentSymptom,
  156. DATE_FORMAT(pss.create_date, '%Y-%m-%d %H:%i') AS createDate,
  157. pc.foreigner_yn AS foreignerYn,
  158. pc.manager_id AS managerId
  159. FROM PATIENT_CARE pc
  160. LEFT JOIN patient_phr_latest pl
  161. ON pl.patient_idx = pc.patient_idx
  162. LEFT JOIN ( SELECT *
  163. FROM patient_symptom_sim
  164. WHERE patient_idx = pc.patient_idx
  165. AND idx = ( SELECT MAX(idx)
  166. FROM patient_symptom_sim
  167. WHERE patient_idx = pc.patient_idx
  168. )
  169. ) AS pss
  170. ON pss.patient_idx = pc.patient_idx
  171. WHERE 1 = 1
  172. AND pc.use_yn = 'Y'
  173. ]]>
  174. <if test='centerCode != "0"'>
  175. <![CDATA[
  176. AND CENTER_CODE = #{centerCode}
  177. ]]>
  178. </if>
  179. <if test='state != "ALL"'>
  180. <![CDATA[
  181. AND STATE = #{state}
  182. ]]>
  183. </if>
  184. <if test='patientName != null and patientName != ""'>
  185. <![CDATA[
  186. AND ( UPPER(PATIENT_NAME) LIKE CONCAT('%', UPPER(#{patientName}), '%')
  187. OR ROOM_NUMBER LIKE CONCAT('%', #{patientName}, '%')
  188. OR WARD_NUMBER LIKE CONCAT('%', #{patientName}, '%') )
  189. ]]>
  190. </if>
  191. <if test='state == "ALL"'>
  192. <![CDATA[
  193. AND (DATE_FORMAT(HOSPITALIZATION_DATE, '%Y-%m-%d') BETWEEN
  194. ]]>
  195. <choose>
  196. <when test='startDate != null and startDate != ""'>#{startDate}</when>
  197. <when test='startDate != null and startDate == ""'>'1900-01-01'</when>
  198. <otherwise>'1900-01-01'</otherwise>
  199. </choose>
  200. <![CDATA[
  201. AND
  202. ]]>
  203. <choose>
  204. <when test='endDate != null and endDate != ""'>#{endDate}</when>
  205. <when test='endDate != null and endDate == ""'>DATE_FORMAT( NOW(), '%Y-%m-%d' )</when>
  206. <otherwise>DATE_FORMAT( NOW(), '%Y-%m-%d' )</otherwise>
  207. </choose>
  208. <![CDATA[
  209. OR DATE_FORMAT(DISISOLATION_DATE, '%Y-%m-%d') BETWEEN
  210. ]]>
  211. <choose>
  212. <when test='startDate != null and startDate != ""'>#{startDate}</when>
  213. <when test='startDate != null and startDate == ""'>'1900-01-01'</when>
  214. <otherwise>'1900-01-01'</otherwise>
  215. </choose>
  216. <![CDATA[
  217. AND
  218. ]]>
  219. <choose>
  220. <when test='endDate != null and endDate != ""'>#{endDate}</when>
  221. <when test='endDate != null and endDate == ""'>DATE_FORMAT( NOW(), '%Y-%m-%d' )</when>
  222. <otherwise>DATE_FORMAT( NOW(), '%Y-%m-%d' )</otherwise>
  223. </choose>
  224. <![CDATA[)]]>
  225. </if>
  226. <if test='state =="H"'>
  227. <![CDATA[
  228. AND DATE_FORMAT(HOSPITALIZATION_DATE, '%Y-%m-%d') BETWEEN
  229. ]]>
  230. <choose>
  231. <when test='startDate != null and startDate != ""'>#{startDate}</when>
  232. <when test='startDate != null and startDate == ""'>'1900-01-01'</when>
  233. <otherwise>'1900-01-01'</otherwise>
  234. </choose>
  235. <![CDATA[
  236. AND
  237. ]]>
  238. <choose>
  239. <when test='endDate != null and endDate != ""'>#{endDate}</when>
  240. <when test='endDate != null and endDate == ""'>DATE_FORMAT( NOW(), '%Y-%m-%d' )</when>
  241. <otherwise>DATE_FORMAT( NOW(), '%Y-%m-%d' )</otherwise>
  242. </choose>
  243. </if>
  244. <if test='state != "H" and state != "ALL"'>
  245. <![CDATA[
  246. AND DATE_FORMAT(DISISOLATION_DATE, '%Y-%m-%d') BETWEEN
  247. ]]>
  248. <choose>
  249. <when test='startDate != null and startDate != ""'>#{startDate}</when>
  250. <when test='startDate != null and startDate == ""'>'1900-01-01'</when>
  251. <otherwise>'1900-01-01'</otherwise>
  252. </choose>
  253. <![CDATA[
  254. AND
  255. ]]>
  256. <choose>
  257. <when test='endDate != null and endDate != ""'>#{endDate}</when>
  258. <when test='endDate != null and endDate == ""'>DATE_FORMAT( NOW(), '%Y-%m-%d' )</when>
  259. <otherwise>DATE_FORMAT( NOW(), '%Y-%m-%d' )</otherwise>
  260. </choose>
  261. </if>
  262. <![CDATA[
  263. ORDER BY
  264. ]]>
  265. <if test='sortType == ""'>
  266. <if test='centerCode != "0"'>
  267. <![CDATA[
  268. center_code,
  269. ]]>
  270. </if>
  271. <![CDATA[
  272. PATIENT_NAME ASC
  273. ]]>
  274. </if>
  275. <if test='sortType != null and sortType != ""'>
  276. <if test='sortType == "room_number"'>
  277. <![CDATA[
  278. ward_number, ${sortType}
  279. ]]>
  280. </if>
  281. <if test='sortType != "room_number"'>
  282. <![CDATA[
  283. ${sortType}
  284. ]]>
  285. </if>
  286. </if>
  287. <if test='sort != null and sort != ""'>
  288. <![CDATA[
  289. ${sort}
  290. ]]>
  291. </if>
  292. <![CDATA[
  293. LIMIT ${limit}, ${limitMax}
  294. ]]>
  295. </select>
  296. <insert id="insertPatientCare" parameterType="PatientDTO" useGeneratedKeys="true">
  297. <selectKey keyProperty="patientIdx" resultType="int" order="AFTER">
  298. <![CDATA[
  299. SELECT CURRENT_VAL AS patientIdx FROM db_serial WHERE NAME = 'patient_care_ai_patient_idx';
  300. ]]>
  301. </selectKey>
  302. <![CDATA[
  303. INSERT
  304. INTO patient_care
  305. ( patient_number, patient_name, gender, ward_number, room_number, hospitalization_date, state,
  306. center_code, jumin, patient_phone, guardian_phone, symptom_start_date, confirmation_date, disisolation_date,
  307. basal_disease_yn, drug_yn, drug_content, pregnancy_status, pregnancy_week, id, pw,
  308. create_date, create_by, update_by, servey_yn, foreigner_yn, manager_id, patient_etc,
  309. expected_discharge_date, use_yn )
  310. VALUES ( #{patientNumber}, #{patientName}, #{gender}, #{wardNumber}, #{roomNumber}, #{hospitalizationDate}, #{state},
  311. #{centerCode}, #{jumin}, #{patientPhone}, #{guardianPhone}, #{symptomStartDate}, #{confirmationDate}, #{disisolationDate},
  312. #{basalDiseaseYn}, #{drugYn}, #{drugContent}, #{pregnancyStatus}, #{pregnancyWeek}, #{id}, #{pw},
  313. NOW(), #{createBy}, '', #{serveyYn}, #{foreignerYn}, #{managerId}, #{patientEtc},
  314. #{expectedDischargeDate}, 'Y' )
  315. ]]>
  316. </insert>
  317. <insert id="insertPatientDisease" parameterType="PatientDTO" useGeneratedKeys="true">
  318. <![CDATA[
  319. INSERT
  320. INTO patient_disease
  321. ( patient_idx, high_blood_pressure_check, low_blood_pressure_check, organ_transplant_check, diabetes_check,
  322. respiratory_disease_check, heart_disease, liver_disease, `operation`, operation_content,
  323. allergy_check, kidney_disease, cancer_check, cancer_name, etc_check,
  324. etc_content )
  325. VALUES ( #{patientIdx}, #{highBloodPressureCheck}, #{lowBloodPressureCheck}, #{organTransplantCheck}, #{diabetesCheck},
  326. #{respiratoryDiseaseCheck}, #{heartDisease}, #{liverDisease}, #{operation}, #{operationContent},
  327. #{allergyCheck}, #{kidneyDisease}, #{cancerCheck}, #{cancerName}, #{etcCheck},
  328. #{etcContent} )
  329. ]]>
  330. </insert>
  331. <insert id="insertPatientSymptom" parameterType="PatientDTO" useGeneratedKeys="true">
  332. <![CDATA[
  333. INSERT
  334. INTO patient_symptom
  335. ( patient_idx, fever_check, cough_check, colic, cold_fit_check, sputum_check,
  336. ocin_check, fever_right, fever_left, fatigue_check, etc_check, etc_content,
  337. chest_pain, nose_check, vomiting_check, muscle_pain_check, sore_throat_check, diarrhea_check,
  338. headache_check, dyspnea_check, pulse_rate, respiration_rate, blood_pressure_level, oxygen_saturation )
  339. VALUES ( #{patientIdx}, #{feverCheck}, #{coughCheck}, #{colic}, #{coldFitCheck}, #{sputumCheck},
  340. #{ocinCheck}, #{feverRight}, #{feverLeft}, #{fatigueCheck}, #{etcCheck}, #{etcContent},
  341. #{chestPain}, #{noseCheck}, #{vomitingCheck}, #{musclePainCheck}, #{soreThroatCheck}, #{diarrheaCheck},
  342. #{headacheCheck}, #{dyspneaCheck}, #{pulseRate}, #{respirationRate}, #{bloodPressureLevel}, #{oxygenSaturation} )
  343. ]]>
  344. </insert>
  345. <select id="selectPatientOne" parameterType="PatientDTO" resultType="PatientDTO">
  346. <![CDATA[
  347. SELECT PC.PATIENT_IDX AS patientIdx,
  348. PC.PATIENT_NUMBER AS patientNumber,
  349. PC.PATIENT_NAME AS patientName,
  350. PC.GENDER AS gender,
  351. PC.WARD_NUMBER AS wardNumber,
  352. PC.ROOM_NUMBER AS roomNumber,
  353. PC.FINAL_CLINIC_DATE AS finalClinicDate,
  354. DATE_FORMAT(PC.HOSPITALIZATION_DATE, '%Y-%m-%d') AS hospitalizationDate,
  355. PC.STATE AS state,
  356. PC.CENTER_CODE AS centerCode,
  357. PC.JUMIN AS jumin,
  358. PC.PATIENT_PHONE AS patientPhone,
  359. PC.GUARDIAN_PHONE AS guardianPhone,
  360. DATE_FORMAT(PC.SYMPTOM_START_DATE, '%Y-%m-%d') AS symptomStartDate,
  361. DATE_FORMAT(PC.CONFIRMATION_DATE, '%Y-%m-%d') AS confirmationDate,
  362. DATE_FORMAT(PC.DISISOLATION_DATE, '%Y-%m-%d') AS disisolationDate,
  363. PC.BASAL_DISEASE_YN AS basalDiseaseYn,
  364. PC.DRUG_YN AS drugYn,
  365. PC.DRUG_CONTENT AS drugContent,
  366. PC.PREGNANCY_STATUS AS pregnancyStatus,
  367. PC.PREGNANCY_WEEK AS pregnancyWeek,
  368. PC.ID AS id,
  369. PC.PW AS pw,
  370. PC.CREATE_DATE AS createDate,
  371. PC.CREATE_BY AS createBy,
  372. PC.UPDATE_BY AS updateBy,
  373. PC.SERVEY_YN AS serveyYn,
  374. PC.FOREIGNER_YN AS foreignerYn,
  375. PC.MANAGER_ID AS managerId,
  376. PC.PATIENT_ETC AS patientEtc,
  377. DATE_FORMAT(PC.EXPECTED_DISCHARGE_DATE, '%Y-%m-%d') AS expectedDischargeDate,
  378. PS.FEVER_CHECK AS feverCheck,
  379. PS.COUGH_CHECK AS coughCheck,
  380. PS.COLIC AS colic,
  381. PS.COLD_FIT_CHECK AS coldFitCheck,
  382. PS.SPUTUM_CHECK AS sputumCheck,
  383. PS.OCIN_CHECK AS ocinCheck,
  384. PS.FEVER_RIGHT AS feverRight,
  385. PS.FEVER_LEFT AS feverLeft,
  386. PS.FATIGUE_CHECK AS fatigueCheck,
  387. PS.ETC_CHECK AS etcCheckSymptom,
  388. PS.ETC_CONTENT AS etcContentSymptom,
  389. PS.CHEST_PAIN AS chestPain,
  390. PS.NOSE_CHECK AS noseCheck,
  391. PS.VOMITING_CHECK AS vomitingCheck,
  392. PS.MUSCLE_PAIN_CHECK AS musclePainCheck,
  393. PS.SORE_THROAT_CHECK AS soreThroatCheck,
  394. PS.DIARRHEA_CHECK AS diarrheaCheck,
  395. PS.HEADACHE_CHECK AS headacheCheck,
  396. PS.DYSPNEA_CHECK AS dyspneaCheck,
  397. PS.PULSE_RATE AS pulseRate,
  398. PS.RESPIRATION_RATE AS respirationRate,
  399. PS.BLOOD_PRESSURE_LEVEL AS bloodPressureLevel,
  400. PS.OXYGEN_SATURATION AS oxygenSaturation,
  401. PD.HIGH_BLOOD_PRESSURE_CHECK AS highBloodPressureCheck,
  402. PD.LOW_BLOOD_PRESSURE_CHECK AS lowBloodPressureCheck,
  403. PD.ORGAN_TRANSPLANT_CHECK AS organTransplantCheck,
  404. PD.DIABETES_CHECK AS diabetesCheck,
  405. PD.RESPIRATORY_DISEASE_CHECK AS respiratoryDiseaseCheck,
  406. PD.HEART_DISEASE AS heartDisease,
  407. PD.LIVER_DISEASE AS liverDisease,
  408. PD.`OPERATION` AS `operation`,
  409. PD.OPERATION_CONTENT AS operationContent,
  410. PD.ALLERGY_CHECK AS allergyCheck,
  411. PD.KIDNEY_DISEASE AS kidneyDisease,
  412. PD.CANCER_CHECK AS cancerCheck,
  413. PD.CANCER_NAME AS cancerName,
  414. PD.ETC_CHECK AS etcCheckDisease,
  415. PD.ETC_CONTENT AS etcContentDisease,
  416. (SELECT CI.CENTER_NAME
  417. FROM CENTER_INFO CI
  418. WHERE CI.CENTER_CODE = PC.CENTER_CODE) AS centerName
  419. FROM PATIENT_CARE PC
  420. LEFT JOIN PATIENT_SYMPTOM PS
  421. ON PC.PATIENT_IDX = PS.PATIENT_IDX
  422. LEFT JOIN PATIENT_DISEASE PD
  423. ON PC.PATIENT_IDX = PD.PATIENT_IDX
  424. WHERE 1 = 1
  425. AND PC.USE_YN = 'Y'
  426. AND PC.PATIENT_IDX = #{patientIdx}
  427. ]]>
  428. </select>
  429. <update id="updatePatientCare" parameterType="PatientDTO" useGeneratedKeys="true">
  430. <![CDATA[
  431. UPDATE patient_care
  432. SET patient_number = #{patientNumber},
  433. patient_name = #{patientName},
  434. gender = #{gender},
  435. ward_number = #{wardNumber},
  436. room_number = #{roomNumber},
  437. hospitalization_date = #{hospitalizationDate},
  438. state = #{state},
  439. jumin = #{jumin},
  440. patient_phone = #{patientPhone},
  441. guardian_phone = #{guardianPhone},
  442. symptom_start_date = #{symptomStartDate},
  443. confirmation_date = #{confirmationDate},
  444. disisolation_date = #{disisolationDate},
  445. basal_disease_yn = #{basalDiseaseYn},
  446. drug_yn = #{drugYn},
  447. drug_content = #{drugContent},
  448. pregnancy_status = #{pregnancyStatus},
  449. pregnancy_week = #{pregnancyWeek},
  450. id = #{id},
  451. pw = #{pw},
  452. update_date = NOW(),
  453. update_by = #{updateBy},
  454. servey_yn = #{serveyYn},
  455. foreigner_yn = #{foreignerYn},
  456. manager_id = #{managerId},
  457. patient_etc = #{patientEtc}
  458. ]]>
  459. <if test='expectedDischargeDate != null and expectedDischargeDate != ""'>
  460. <![CDATA[
  461. , expected_discharge_date = #{expectedDischargeDate}
  462. ]]>
  463. </if>
  464. <![CDATA[
  465. WHERE patient_idx = #{patientIdx}
  466. ]]>
  467. </update>
  468. <update id="updatePatientCareServey" parameterType="PatientDTO" useGeneratedKeys="true">
  469. <![CDATA[
  470. UPDATE PATIENT_CARE
  471. SET UPDATE_DATE = NOW(),
  472. UPDATE_BY = #{updateBy},
  473. basal_disease_yn = #{basalDiseaseYn},
  474. SERVEY_YN = 'N'
  475. WHERE PATIENT_IDX = #{patientIdx}
  476. ]]>
  477. </update>
  478. <update id="updatePatientDisease" parameterType="PatientDTO" useGeneratedKeys="true">
  479. <![CDATA[
  480. UPDATE patient_disease
  481. SET high_blood_pressure_check = #{highBloodPressureCheck},
  482. low_blood_pressure_check = #{lowBloodPressureCheck},
  483. organ_transplant_check = #{organTransplantCheck},
  484. diabetes_check = #{diabetesCheck},
  485. respiratory_disease_check = #{respiratoryDiseaseCheck},
  486. heart_disease = #{heartDisease},
  487. liver_disease = #{liverDisease},
  488. `operation` = #{operation},
  489. operation_content = #{operationContent},
  490. allergy_check = #{allergyCheck},
  491. kidney_disease = #{kidneyDisease},
  492. cancer_check = #{cancerCheck},
  493. cancer_name = #{cancerName},
  494. etc_check = #{etcCheck},
  495. etc_content=#{etcContent}
  496. WHERE patient_idx = #{patientIdx}
  497. ]]>
  498. </update>
  499. <update id="updatePatientSymptom" parameterType="PatientDTO" useGeneratedKeys="true">
  500. <![CDATA[
  501. UPDATE patient_symptom
  502. SET fever_check = #{feverCheck},
  503. cough_check = #{coughCheck},
  504. colic = #{colic},
  505. cold_fit_check = #{coldFitCheck},
  506. sputum_check = #{sputumCheck},
  507. ocin_check = #{ocinCheck},
  508. fever_right = #{feverRight},
  509. fever_left = #{feverLeft},
  510. fatigue_check = #{fatigueCheck},
  511. etc_check = #{etcCheck},
  512. etc_content = #{etcContent},
  513. chest_pain = #{chestPain},
  514. nose_check = #{noseCheck},
  515. vomiting_check = #{vomitingCheck},
  516. muscle_pain_check = #{musclePainCheck},
  517. sore_throat_check = #{soreThroatCheck},
  518. diarrhea_check = #{diarrheaCheck},
  519. headache_check = #{headacheCheck},
  520. dyspnea_check = #{dyspneaCheck},
  521. pulse_rate = #{pulseRate},
  522. respiration_rate = #{respirationRate},
  523. blood_pressure_level = #{bloodPressureLevel},
  524. oxygen_saturation = #{oxygenSaturation}
  525. WHERE patient_idx = #{patientIdx}
  526. ]]>
  527. </update>
  528. <select id="selectPatientPhrHistoryTotal" parameterType="PatientHealthDTO" resultType="int">
  529. <![CDATA[
  530. SELECT COUNT(*) TOTAL
  531. FROM patient_phr_history
  532. WHERE patient_idx = #{patientIdx}
  533. AND DATE_FORMAT(create_date, '%Y-%m-%d') = #{createDate}
  534. ]]>
  535. </select>
  536. <select id="selectPatientPhrHistoryData" parameterType="PatientHealthDTO" resultType="PatientHealthDTO">
  537. <![CDATA[
  538. SELECT MAX( CASE WHEN ampm = 'am' AND H.phr_type= 'temperature' THEN CONCAT( P.phr_value, '/', DATE_FORMAT( H.create_date, '%Y-%m-%d %H:%i:%s' ) ) END ) AS amTemperature,
  539. MAX( CASE WHEN ampm = 'pm' AND H.phr_type= 'temperature' THEN CONCAT( H.phr_value, '/', DATE_FORMAT( H.create_date, '%Y-%m-%d %H:%i:%s' ) ) END ) AS pmTemperature,
  540. MAX( CASE WHEN ampm = 'am' AND H.phr_type= 'pulseRate' THEN CONCAT( H.phr_value, '/', DATE_FORMAT( H.create_date, '%Y-%m-%d %H:%i:%s' ) ) END ) AS amPulseRate,
  541. MAX( CASE WHEN ampm = 'pm' AND H.phr_type= 'pulseRate' THEN CONCAT( H.phr_value, '/', DATE_FORMAT( H.create_date, '%Y-%m-%d %H:%i:%s' ) ) END ) AS pmPulseRate,
  542. MAX( CASE WHEN ampm = 'am' AND H.phr_type= 'bloodPressure' THEN CONCAT( H.phr_value, '/', DATE_FORMAT( H.create_date, '%Y-%m-%d %H:%i:%s' ) ) END ) AS amSystolicBloodPressure,
  543. MAX( CASE WHEN ampm = 'pm' AND H.phr_type= 'bloodPressure' THEN CONCAT( H.phr_value, '/', DATE_FORMAT( H.create_date, '%Y-%m-%d %H:%i:%s' ) ) END ) AS pmSystolicBloodPressure,
  544. MAX( CASE WHEN ampm = 'am' AND H.phr_type= 'bloodPressure' THEN CONCAT( H.phr_value_2, '/', DATE_FORMAT( H.create_date, '%Y-%m-%d %H:%i:%s' ) ) END ) AS amDiastolicBloodPressure,
  545. MAX( CASE WHEN ampm = 'pm' AND H.phr_type= 'bloodPressure' THEN CONCAT( H.phr_value_2, '/', DATE_FORMAT( H.create_date, '%Y-%m-%d %H:%i:%s' ) ) END ) AS pmDiastolicBloodPressure,
  546. MAX( CASE WHEN ampm = 'am' AND H.phr_type= 'oxygenSaturation' THEN CONCAT( H.phr_value, '/', DATE_FORMAT( H.create_date, '%Y-%m-%d %H:%i:%s' ) ) END ) AS amOxygenSaturation,
  547. MAX( CASE WHEN ampm = 'pm' AND H.phr_type= 'oxygenSaturation' THEN CONCAT( H.phr_value, '/', DATE_FORMAT( H.create_date, '%Y-%m-%d %H:%i:%s' ) ) END ) AS pmOxygenSaturation,
  548. MAX( CASE WHEN ampm = 'am' AND H.phr_type= 'bloodSugar' THEN CONCAT( H.phr_value, '/', DATE_FORMAT( H.create_date, '%Y-%m-%d %H:%i:%s' ) ) END ) AS amBloodSugar,
  549. MAX( CASE WHEN ampm = 'pm' AND H.phr_type= 'bloodSugar' THEN CONCAT( H.phr_value, '/', DATE_FORMAT( H.create_date, '%Y-%m-%d %H:%i:%s' ) ) END ) AS pmBloodSugar
  550. FROM ( SELECT MAX( idx ) max_idx,
  551. CAST( phr_value AS STRING ) AS phr_value,
  552. CAST( phr_value_2 AS STRING ) AS phr_value_2,
  553. IF( DATE_FORMAT( create_date, '%H:%i') <= '12:00', 'am', 'pm' ) ampm
  554. FROM patient_phr_history
  555. WHERE patient_idx = #{patientIdx}
  556. AND DATE_FORMAT( create_date, '%Y-%m-%d' ) = #{createDate}
  557. GROUP BY ampm, phr_type
  558. ) P, patient_phr_history H
  559. WHERE P.max_idx = H.idx
  560. GROUP BY patient_idx
  561. ]]>
  562. </select>
  563. <select id="selectPatientSymptomSimTotal" parameterType="PatientHealthDTO" resultType="int">
  564. <![CDATA[
  565. SELECT COUNT(*) TOTAL
  566. FROM patient_symptom_sim
  567. WHERE patient_idx = #{patientIdx}
  568. AND DATE_FORMAT(create_date, '%Y-%m-%d') = #{createDate}
  569. ]]>
  570. </select>
  571. <select id="selectPatientSymptomSimData" parameterType="PatientHealthDTO" resultType="PatientDTO">
  572. <![CDATA[
  573. SELECT A.idx,
  574. ampm,
  575. patient_idx AS patientIdx,
  576. cough_check AS coughCheck,
  577. dyspnea_check AS dyspneaCheck,
  578. cold_fit_check AS coldFitCheck,
  579. muscle_pain_check AS musclePainCheck,
  580. headache_check AS headacheCheck,
  581. sore_throat_check AS soreThroatCheck,
  582. smell_palate_check AS smellPalateCheck,
  583. fatigue_check AS fatigueCheck,
  584. appetite_loss_check AS appetiteLossCheck,
  585. sputum_check AS sputumCheck,
  586. ocin_check AS ocinCheck,
  587. vomiting_check AS vomitingCheck,
  588. diarrhea_check AS diarrheaCheck,
  589. dizziness_check AS dizzinessCheck,
  590. nose_check AS noseCheck,
  591. etc_check AS etcCheck,
  592. etc_content AS etcContent,
  593. recorded_by_name AS recordedByName,
  594. recorded_by_id AS recordedById,
  595. DATE_FORMAT( create_date, '%Y-%m-%d %H:%i:%s' ) AS createDate
  596. FROM patient_symptom_sim P, ( SELECT MAX( idx ) idx,
  597. S.ampm
  598. FROM ( SELECT idx,
  599. IF( DATE_FORMAT( create_date, '%H:%i') <= '12:00', 'am', 'pm' ) ampm
  600. FROM patient_symptom_sim
  601. WHERE patient_idx = #{patientIdx}
  602. AND DATE_FORMAT(create_date, '%Y-%m-%d') = #{createDate}
  603. ) S
  604. GROUP BY ampm
  605. ) A
  606. WHERE A.idx = P.idx
  607. ]]>
  608. </select>
  609. <select id="selectPatientOneCount" parameterType="PatientDTO" resultType="int">
  610. <![CDATA[
  611. SELECT COUNT(*) CNT
  612. FROM patient_care
  613. WHERE patient_idx = #{patientIdx}
  614. AND USE_YN = 'Y'
  615. ]]>
  616. </select>
  617. <!-- 환자삭제 / 환자의 모든 기록을 삭제함 /생치 관리자만 삭제가 가능하다 -->
  618. <delete id="deletePatientCare" parameterType="PatientDTO">
  619. <![CDATA[
  620. DELETE FROM patient_care WHERE patient_idx = #{patientIdx}
  621. ]]>
  622. </delete>
  623. <!-- 환자삭제 / 플레그값 yn으로 설계변경 -->
  624. <update id="updatePatientCareUseYn" parameterType="PatientDTO">
  625. <![CDATA[
  626. UPDATE patient_care
  627. SET use_yn = #{useYn},
  628. delete_reason = #{deleteReason},
  629. update_date = NOW(),
  630. state = 'E'
  631. WHERE patient_idx = #{patientIdx}
  632. ]]>
  633. </update>
  634. <select id="selectMunJinCount" parameterType="PatientDTO" resultType="int">
  635. <![CDATA[
  636. SELECT COUNT(*) AS CNT
  637. FROM PATIENT_CARE
  638. WHERE 1 = 1
  639. AND USE_YN = 'Y'
  640. AND SERVEY_YN = 'N'
  641. AND PATIENT_IDX = #{patientIdx}
  642. ]]>
  643. </select>
  644. <update id="updatePatientCenterInfo" parameterType="PatientDTO">
  645. <![CDATA[
  646. UPDATE patient_care
  647. SET center_code = #{newCenterCode}
  648. WHERE patient_idx = #{patientIdx}
  649. AND center_code = #{oldCenterCode}
  650. ]]>
  651. </update>
  652. <insert id="insertCenterChangeLog" parameterType="PatientDTO">
  653. <![CDATA[
  654. INSERT
  655. INTO center_change_log
  656. ( patient_idx, old_center_code, new_center_code, change_date, update_by, comment )
  657. VALUES ( #{patientIdx}, #{oldCenterCode}, #{newCenterCode}, NOW(), #{updateBy}, #{comment} )
  658. ]]>
  659. </insert>
  660. </mapper>