HospitalMapper.xml 60 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175
  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.dbs.consentServer.mapper.HospitalMapper">
  4. <select id="getBaseData" resultType="string">
  5. <![CDATA[
  6. SELECT LISTAGG(DECODE(HARDCDNO, 6580, 'SESSION_TIME|'||TRGTCDNM,
  7. 6581, 'ELECTR_CMP|'||TRGTCDNM,
  8. 6582, 'MY_PATIENT|'||TRGTCDNM), ',')
  9. WITHIN GROUP(ORDER BY HARDCDNO) AS BASE_DATA
  10. FROM EMR.MMBDHRCD
  11. WHERE INSTCD = #{instCd}
  12. AND HARDCDNO IN (6580, 6581, 6582)
  13. ]]>
  14. </select>
  15. <select id="doLogin" resultType="string">
  16. <![CDATA[
  17. SELECT UPWD.PWD_SHA256 AS PWD_SHA256
  18. FROM (
  19. SELECT USERB.USERID AS USERID, USERB.USERNM AS USERNM
  20. FROM COM.ZSUMUSRB USERB,
  21. (SELECT USERID, MAX(USERFROMDD) AS USERFROMDD
  22. FROM COM.ZSUMUSRB
  23. WHERE USERID = #{userId}
  24. GROUP BY USERID
  25. ) MAX_USERB
  26. WHERE USERB.USERID = MAX_USERB.USERID
  27. AND USERB.USERFROMDD = MAX_USERB.USERFROMDD
  28. ) USRB,
  29. COM.ZSUMUPWD UPWD,
  30. COM.ZSUMPWLG PWLG
  31. WHERE UPWD.USERID(+) = USRB.USERID
  32. AND PWLG.USERID(+) = USRB.USERID
  33. ]]>
  34. </select>
  35. <select id="getUserDeptList" parameterType="java.util.HashMap" resultType="com.dbs.consentServer.VO.hospitalVO.GetUserDeptVO">
  36. <![CDATA[
  37. SELECT CODE.CDID AS DUTPLCEINSTCD,
  38. CODE.CDNM AS DUTPLCEINSTNM,
  39. DEPT.DEPTCD AS DUTPLCECD,
  40. DEPT.DEPTHNGNM AS DEPTHNGNM,
  41. CODE.CDNM || ':'|| DEPT.DEPTHNGNM AS DEPTNM,
  42. USRD.FROMDD AS FROMDD,
  43. SEQ.SORTNO AS SORTNO,
  44. CODE.CDID || ':' || DEPT.DEPTCD AS DEPTCD,
  45. NVL(USRD.JOBKINDCD, '1140') AS JOBKINDCD,
  46. NVL((SELECT CDNM
  47. FROM COM.ZBCMCODE
  48. WHERE CDGRUPID = 'R0061'
  49. AND CDID = USRD.JOBKINDCD), '-') AS JOBKINDNM,
  50. NVL((SELECT HOSP.HOSPAPPSTATUS
  51. FROM EMA.EFORM_HOSPUSERS HOSP
  52. WHERE HOSP.HOSPUSER_ID = #{userId}
  53. ), 'I') AS INDEXPAGE,
  54. USRD.USERID AS USERID,
  55. USRB.USERNM AS USERNAME,
  56. CASE WHEN JOBKINDCD LIKE '03%' AND JOBPOSCD IN ('1799','1800') THEN 'A'
  57. WHEN JOBKINDCD LIKE '03%' THEN 'B' ELSE 'C' END DRKIND
  58. FROM COM.ZBCMCODE CODE,
  59. COM.ZSDDDEPT DEPT,
  60. (
  61. SELECT USERB.USERID AS USERID, USERB.USERNM AS USERNM
  62. FROM COM.ZSUMUSRB USERB,
  63. (SELECT USERID, MAX(USERFROMDD) AS USERFROMDD
  64. FROM COM.ZSUMUSRB
  65. WHERE USERID = #{userId}
  66. GROUP BY USERID
  67. ) MAX_USERB
  68. WHERE USERB.USERID = MAX_USERB.USERID
  69. AND USERB.USERFROMDD = MAX_USERB.USERFROMDD
  70. ) USRB,
  71. COM.ZSUMUSRD USRD LEFT OUTER JOIN COM.ZSUMSORT SEQ ON (
  72. USRD.USERID = SEQ.USERID
  73. AND USRD.DUTPLCEINSTCD = SEQ.DUTPLCEINSTCD
  74. AND USRD.DUTPLCECD = SEQ.DUTPLCECD),
  75. (SELECT CDRL.SUBCDSID
  76. FROM COM.ZBCDCDRL CDRL,
  77. COM.ZBCMCODE CODE
  78. WHERE CODE.CDGRUPID = 'Z0011'
  79. AND TO_CHAR(SYSDATE, 'YYYYMMDD') BETWEEN CODE.VALIFROMDD AND CODE.VALITODD
  80. AND CODE.CDID = #{sysCd}
  81. AND CODE.CDSID = CDRL.SUPCDSID) A
  82. WHERE A.SUBCDSID = CODE.CDSID
  83. AND CODE.CDID = USRD.DUTPLCEINSTCD
  84. AND USRD.USERID = #{userId}
  85. AND USRD.USERID = USRB.USERID
  86. AND USRD.DUTPLCECD = DEPT.DEPTCD
  87. AND USRD.DUTPLCEINSTCD = DEPT.INSTCD
  88. AND USRD.PSNWORKYN = 'N'
  89. AND TO_CHAR(SYSDATE, 'YYYYMMDD') BETWEEN CODE.VALIFROMDD AND CODE.VALITODD
  90. AND TO_CHAR(SYSDATE, 'YYYYMMDD') BETWEEN DEPT.VALIFROMDD AND DEPT.VALITODD
  91. AND TO_CHAR(SYSDATE, 'YYYYMMDD') BETWEEN USRD.FROMDD AND USRD.TODD
  92. ORDER BY SORTNO ASC
  93. ]]>
  94. </select>
  95. <select id="getWardList" resultType="com.dbs.consentServer.VO.hospitalVO.GetWardDeptVO">
  96. <![CDATA[
  97. SELECT '' AS deptCd,
  98. '병동(전체)' AS deptNm,
  99. 1 AS sort
  100. FROM DUAL
  101. UNION ALL
  102. SELECT dept.deptcd AS deptcd,
  103. dept.depthngnm AS deptnm,
  104. 2 AS sort
  105. FROM com.zsdddept dept
  106. WHERE dept.instcd = #{instCd}
  107. AND dept.orddeptflag = 'W'
  108. AND dept.orduseyn = 'Y'
  109. AND TO_CHAR(SYSDATE, 'YYYYMMDD') BETWEEN dept.valifromdd AND dept.valitodd
  110. ORDER BY sort, deptnm
  111. ]]>
  112. </select>
  113. <select id="getDeptList" parameterType="java.util.HashMap" resultType="com.dbs.consentServer.VO.hospitalVO.GetWardDeptVO">
  114. <![CDATA[
  115. SELECT '' AS deptCd,
  116. '진료과(전체)' AS deptNm,
  117. 0 AS sort
  118. FROM DUAL
  119. UNION ALL
  120. SELECT deptcd AS deptCd,
  121. depthngnm AS deptNm,
  122. 1 AS sort
  123. FROM com.zsdddept
  124. WHERE instcd = #{instCd}
  125. AND TO_CHAR(CURRENT_DATE,'YYYYMMDD') BETWEEN valifromdd AND valitodd
  126. ]]>
  127. <if test='ordType == "OP"'>
  128. <![CDATA[
  129. AND orddeptflag = 'D'
  130. AND orduseyn = 'Y'
  131. ORDER BY sort, deptnm
  132. ]]>
  133. </if>
  134. <if test='ordType != "OP"'>
  135. <![CDATA[
  136. AND rcptuseyn = 'Y'
  137. ORDER BY sort, deptnm
  138. ]]>
  139. </if>
  140. </select>
  141. <select id="getDoctorList" parameterType="java.util.HashMap" resultType="com.dbs.consentServer.VO.hospitalVO.GetDoctorVO">
  142. <![CDATA[
  143. SELECT '' AS doctorId,
  144. '진료의(전체)' AS doctorNm,
  145. '일반의' AS doctorKind,
  146. '' AS drkind,
  147. 1 AS sort
  148. FROM DUAL
  149. UNION
  150. SELECT b.userid AS doctorId,
  151. b.usernm AS doctorNm,
  152. DECODE(a.jobposcd, '1800', '전공의'
  153. , '1799', '전공의'
  154. , '전문의') AS doctorKind,
  155. CASE
  156. WHEN jobkindcd like '03%' and jobposcd in ('1799','1800')
  157. THEN 'A'
  158. WHEN jobkindcd like '03%' then 'B' else 'C'
  159. END drKind,
  160. 2 AS sort
  161. FROM com.zsumusrd a
  162. , com.zsumusrb b
  163. WHERE a.dutplceinstcd = #{instCd}
  164. AND a.psnworkyn = 'N'
  165. AND NVL(a.tempyn, '-') != 'C'
  166. AND a.jobkindcd LIKE '03%'
  167. ]]>
  168. <if test='ordDeptCd != "" and ordDeptCd != null'>
  169. <![CDATA[
  170. AND a.dutplcecd = #{ordDeptCd}
  171. ]]>
  172. </if>
  173. <![CDATA[
  174. AND #{srchDd} BETWEEN a.fromdd AND a.todd
  175. AND b.userid = a.userid
  176. AND #{srchDd} BETWEEN b.userfromdd AND b.usertodd
  177. ORDER BY sort, doctorid
  178. ]]>
  179. </select>
  180. <select id="getInPatientList" parameterType="PatientListDTO" resultType="GetPatientVO">
  181. <if test='patientState == "C"'>
  182. <![CDATA[
  183. with tmp as
  184. (SELECT /*+ leading(h m c) materialize */ m.instcd,m.pid ,m.cretno,m.orddd
  185. FROM ema.consent_mst c,
  186. emr.mrfmocrprnt m,
  187. emr.mrfhocrprnt h
  188. WHERE c.use_yn = 'Y'
  189. AND c.consent_state IN ('UNFINISHED', 'TEMP', 'ELECTR_CMP')
  190. AND m.instcd = c.hos_type
  191. AND m.ocrtag = c.ocr_number
  192. AND m.instcd = h.instcd
  193. AND m.ocrtag = h.ocrtag
  194. AND m.updtdt = h.updtdt
  195. AND h.statcd = 'P'
  196. AND h.updtdt like #{srchDd}||'%'
  197. AND h.instcd = #{instCd} )
  198. ]]>
  199. </if>
  200. <![CDATA[
  201. SELECT ptbs.pid AS pid,
  202. inpt.indd AS inDd,
  203. inpt.cretno AS cretNo,
  204. inpt.instcd AS instCd,
  205. inpt.ordtype AS ordType,
  206. ptbs.hngnm AS hngNm,
  207. inpt.orddeptcd AS ordDeptCd,
  208. inpt.medispclid AS doctorId,
  209. ptbs.sex ||'/'||com.Fn_zz_getage('','',TO_CHAR(SYSDATE, 'yyyymmdd'),'B',brthdd) AS sa,
  210. com.fn_zs_getdeptnm(inpt.instcd,inpt.orddeptcd,inpt.dschdd) AS deptNm,
  211. com.fn_zs_getusernm(inpt.medispclid,inpt.dschdd) AS doctorNm,
  212. inpt.roomCd AS roomCd,
  213. '' AS opRoomNm,
  214. '' AS oprsRvNo
  215. FROM pam.pmihinpt inpt,
  216. pam.pmcmptbs ptbs
  217. ]]>
  218. <if test='srchYn == "N"'>
  219. <if test='myPatient == "Y"'>
  220. <![CDATA[
  221. , emr.mnwhsetp setp
  222. ]]>
  223. </if>
  224. </if>
  225. <![CDATA[
  226. WHERE inpt.instcd = #{instCd}
  227. ]]>
  228. <if test='pid != "" and pid != null'>
  229. <![CDATA[
  230. AND inpt.pid = #{pid}
  231. ]]>
  232. </if>
  233. <if test='patientState == "A"'>
  234. <!-- 재원 -->
  235. <![CDATA[
  236. and inpt.indschacptstat = 'A'
  237. ]]>
  238. </if>
  239. <if test='patientState == "0"'>
  240. <!-- 입원 -->
  241. <![CDATA[
  242. AND inpt.careinrmdd = #{srchDd}
  243. ]]>
  244. </if>
  245. <if test='patientState == "1"'>
  246. <!-- 퇴원 -->
  247. <![CDATA[
  248. AND inpt.indschacptstat in ('T','D')
  249. AND inpt.dschdd = #{srchDd}
  250. ]]>
  251. </if>
  252. <if test='patientState == "C"'>
  253. <![CDATA[
  254. AND EXISTS (SELECT 1
  255. FROM tmp a
  256. where a.instcd = inpt.instcd
  257. and a.pid = inpt.pid
  258. and a.orddd = inpt.indd
  259. and a.cretno = inpt.cretno )
  260. ]]>
  261. </if>
  262. <if test='patientState != "" and patientState != null'>
  263. <if test='wardCd != "" and wardCd != null'>
  264. <![CDATA[
  265. AND inpt.wardcd = #{wardCd}
  266. ]]>
  267. </if>
  268. <if test='myPatient == "N"'>
  269. <if test='doctorId != "" and doctorId != null'>
  270. <!-- 전공의(A), 담당교수(B), 그외 직종(C) 구분코드-->
  271. <![CDATA[
  272. AND CASE
  273. WHEN #{drKind} = 'A'
  274. THEN inpt.atdoctid
  275. ELSE inpt.medispclid
  276. END = #{doctorId}
  277. ]]>
  278. </if>
  279. </if>
  280. <if test='ordDeptCd != "" and ordDeptCd != null'>
  281. <![CDATA[
  282. AND inpt.orddeptcd = #{ordDeptCd}
  283. ]]>
  284. </if>
  285. </if>
  286. <if test='srchYn == "N"'>
  287. <if test='myPatient == "Y"'>
  288. <![CDATA[
  289. AND setp.nursid = #{userId}
  290. AND setp.pid = inpt.pid
  291. AND setp.fromdt < '99999999999999'
  292. AND setp.todt > SYSTIMESTAMP
  293. AND setp.instcd = #{instCd}
  294. ]]>
  295. </if>
  296. </if>
  297. <![CDATA[
  298. AND inpt.mskind = 'M'
  299. AND inpt.histstat = 'Y'
  300. AND inpt.ordtype in ('I','D')
  301. AND ptbs.instcd = inpt.instcd
  302. AND ptbs.pid = inpt.pid
  303. ORDER BY inpt.roomcd,
  304. ptbs.hngnm,
  305. inpt.indd
  306. ]]>
  307. </select>
  308. <select id="getOutPatientList" parameterType="PatientListDTO" resultType="GetPatientVO">
  309. <if test='patientState == "3"'>
  310. <![CDATA[
  311. with tmp as
  312. (SELECT /*+ leading(h m c) materialize */ m.instcd,m.pid ,m.cretno,m.orddd
  313. FROM ema.consent_mst c,
  314. emr.mrfmocrprnt m,
  315. emr.mrfhocrprnt h
  316. WHERE c.use_yn = 'Y'
  317. AND c.consent_state IN ('UNFINISHED', 'TEMP', 'ELECTR_CMP')
  318. AND m.instcd = c.hos_type
  319. AND m.ocrtag = c.ocr_number
  320. AND m.instcd = h.instcd
  321. AND m.ocrtag = h.ocrtag
  322. AND m.updtdt = h.updtdt
  323. AND h.statcd = 'P'
  324. AND h.updtdt like #{srchDd}||'%'
  325. AND h.instcd = #{instCd} )
  326. ]]>
  327. </if>
  328. <![CDATA[
  329. SELECT ptbs.pid AS pid,
  330. otpt.orddd AS inDd,
  331. otpt.cretno AS cretNo,
  332. otpt.instcd AS instCd,
  333. otpt.ordtype AS ordType,
  334. ptbs.hngnm AS hngNm,
  335. otpt.orddeptcd AS ordDeptCd,
  336. otpt.orddrid AS doctorId,
  337. ptbs.sex ||'/'||com.Fn_zz_getage('','',orddd,'B',brthdd) AS sa,
  338. com.fn_zs_getdeptnm(otpt.instcd,otpt.orddeptcd,otpt.orddd) AS deptnm,
  339. com.fn_zs_getusernm(otpt.orddrid,otpt.orddd) AS doctorNm,
  340. '' AS roomCd,
  341. '' AS opRoomNm,
  342. '' AS oprsRvNo
  343. FROM pam.pmohotpt otpt,
  344. pam.pmcmptbs ptbs
  345. WHERE otpt.instcd = #{instCd}
  346. AND otpt.mskind = 'M'
  347. AND otpt.histstat IN ('R', 'T')
  348. AND otpt.ordtype IN ('O','S')
  349. AND ptbs.instcd = otpt.instcd
  350. AND ptbs.pid = otpt.pid
  351. ]]>
  352. <if test='srchYn == "N"'>
  353. <![CDATA[
  354. AND otpt.orddd = #{srchDd}
  355. ]]>
  356. </if>
  357. <if test='ordDeptCd != "" and ordDeptCd != null'>
  358. <![CDATA[
  359. AND otpt.orddeptcd = #{ordDeptCd}
  360. ]]>
  361. </if>
  362. <if test='doctorId != "" and doctorId != null'>
  363. <![CDATA[
  364. AND otpt.orddrid= #{doctorId}
  365. ]]>
  366. </if>
  367. <if test='patientState == "3"'>
  368. <if test='patientState != "" and patientState != null'>
  369. <if test='srchYn == "N"'>
  370. <if test='patientState != "A"'>
  371. <![CDATA[
  372. AND otpt.elbulbodstat = #{patientState}
  373. ]]>
  374. </if>
  375. </if>
  376. </if>
  377. </if>
  378. <if test='patientState == "3"'>
  379. <![CDATA[
  380. AND EXISTS (SELECT 1
  381. FROM tmp a
  382. where a.instcd = otpt.instcd
  383. and a.pid = otpt.pid
  384. and a.orddd = otpt.orddd
  385. and a.cretno = otpt.cretno )
  386. ]]>
  387. </if>
  388. <if test='pid != "" and pid != null'>
  389. <![CDATA[
  390. AND otpt.pid = #{pid}
  391. ]]>
  392. </if>
  393. <![CDATA[
  394. ORDER BY ptbs.hngnm, otpt.orddd DESC
  395. ]]>
  396. </select>
  397. <select id="getOpPatientList" parameterType="PatientListDTO" resultType="GetPatientVO">
  398. <![CDATA[
  399. SELECT oprs.pid AS pid,
  400. to_char(to_date(inpt.indd,'yyyymmdd'),'yyyymmdd') AS inDd,
  401. inpt.cretno AS cretNo,
  402. inpt.instcd AS instcd,
  403. inpt.ordtype AS ordType,
  404. ptbs.hngnm AS hngNm,
  405. oprs.perfdeptcd AS ordDeptCd,
  406. oprs.perfdrid AS doctorId,
  407. ptbs.sex ||'/'||com.Fn_zz_getage('','',dschdd,'B',brthdd) AS sa,
  408. com.fn_zs_getdeptnm(oprs.instcd,oprs.perfdeptcd,oprs.opcnfmdd) AS deptNm,
  409. com.fn_zs_getusernm(oprs.perfdrid,oprs.opcnfmdd) AS doctorNm,
  410. inpt.roomcd AS roomCd,
  411. oproomcd AS opRoomNm,
  412. oprs.oprsrvno AS oprsRvNo
  413. FROM emr.mmohoprs oprs
  414. ,pam.pmcmptbs ptbs
  415. ,pam.pmihinpt inpt
  416. WHERE oprs.ophistcd = 'O'
  417. AND inpt.histstat = 'Y'
  418. AND inpt.mskind = 'M'
  419. AND ptbs.instcd = oprs.instcd
  420. AND ptbs.pid = oprs.pid
  421. AND inpt.instcd = oprs.instcd
  422. AND inpt.pid = oprs.pid
  423. AND oprs.opcnfmdd BETWEEN inpt.indd AND inpt.dschdd
  424. AND oprs.instcd = #{instCd}
  425. AND oprs.opcnfmdd = #{srchDd}
  426. ]]>
  427. <if test='ordDeptCd !="" and ordDeptCd != null'>
  428. <!-- 과 선택시 -->
  429. <![CDATA[
  430. AND oprs.perfdeptcd = #{ordDeptCd}
  431. ]]>
  432. </if>
  433. <if test='doctorId != "" and doctorId != null'>
  434. <!-- 의사 선택시 -->
  435. <![CDATA[
  436. AND oprs.perfdrid = #{doctorId}
  437. ]]>
  438. </if>
  439. <if test= 'pid != "" and pid != null'>
  440. <!-- 환자 등록번호 -->
  441. <![CDATA[
  442. AND oprs.pid = #{pid}
  443. ]]>
  444. </if>
  445. <if test='patientState =="0"'>
  446. <!-- 미착 -->
  447. <![CDATA[
  448. AND oprs.opstatcd IN ('10', '20')
  449. ]]>
  450. </if>
  451. <if test='patientState =="1"'>
  452. <!-- 준비 -->
  453. <![CDATA[
  454. AND oprs.opstatcd = '30'
  455. ]]>
  456. </if>
  457. <if test='patientState == "2"'>
  458. <!-- 진행 -->
  459. <![CDATA[
  460. AND oprs.opstatcd = '40'
  461. ]]>
  462. </if>
  463. <if test='patientState == "3"'>
  464. <!-- 완료 -->
  465. <![CDATA[
  466. AND oprs.opstatcd IN ('50', '60', '70')
  467. ]]>
  468. </if>
  469. </select>
  470. <select id="getErPatientList" parameterType="PatientListDTO" resultType="GetPatientVO">
  471. <if test='patientState == "C"'>
  472. <![CDATA[
  473. with tmp as
  474. (SELECT /*+ leading(h m c) materialize */ m.instcd,m.pid ,m.cretno,m.orddd
  475. FROM ema.consent_mst c,
  476. emr.mrfmocrprnt m,
  477. emr.mrfhocrprnt h
  478. WHERE c.use_yn = 'Y'
  479. AND c.consent_state IN ('UNFINISHED', 'TEMP', 'ELECTR_CMP')
  480. AND m.instcd = c.hos_type
  481. AND m.ocrtag = c.ocr_number
  482. AND m.instcd = h.instcd
  483. AND m.ocrtag = h.ocrtag
  484. AND m.updtdt = h.updtdt
  485. AND h.statcd = 'P'
  486. AND h.updtdt like #{srchDd}||'%'
  487. AND h.instcd = #{instCd} )
  488. ]]>
  489. </if>
  490. <![CDATA[
  491. SELECT ptbs.pid AS pid,
  492. inpt.indd AS indd,
  493. inpt.cretno AS cretNo,
  494. inpt.instCd AS instCD,
  495. inpt.ordtype AS ordType,
  496. ptbs.hngnm AS hngNm,
  497. inpt.orddeptcd AS ordDeptCd,
  498. inpt.medispclid AS doctorId,
  499. ptbs.sex ||'/'||com.Fn_zz_getage('','',TO_CHAR(SYSDATE, 'yyyymmdd'),'B',brthdd) AS sa,
  500. com.fn_zs_getdeptnm(inpt.instcd,inpt.orddeptcd,inpt.dschdd) AS deptNm,
  501. com.fn_zs_getusernm(inpt.medispclid,inpt.dschdd) AS doctorNm,
  502. inpt.roomcd AS roomCd,
  503. '' AS opRoomNm,
  504. '' AS oprsRvNo
  505. FROM pam.pmihinpt inpt,
  506. pam.pmcmptbs ptbs
  507. WHERE inpt.instcd = #{instCd}
  508. AND inpt.mskind = 'M'
  509. AND inpt.histstat = 'Y'
  510. AND inpt.ordtype = 'E'
  511. AND ptbs.instcd = inpt.instcd
  512. AND ptbs.pid = inpt.pid
  513. ]]>
  514. <if test='patientState == "A"'>
  515. <!-- 재원 -->
  516. <![CDATA[
  517. AND inpt.indschacptstat = 'A'
  518. AND inpt.eroutdt = '-'
  519. ]]>
  520. </if>
  521. <if test='patientState == "0"'>
  522. <!-- 퇴원 -->
  523. <![CDATA[
  524. AND inpt.indschacptstat in ('T','D')
  525. AND inpt.dschdd = #{srchDd}
  526. ]]>
  527. </if>
  528. <if test='patientState == "1"'>
  529. <!-- 퇴실정리 -->
  530. <![CDATA[
  531. AND inpt.indschacptstat = 'A'
  532. AND inpt.eroutdt != '-'
  533. AND inpt.eroutdt != '99991231235959'
  534. AND inpt.dschdd = '99991231'
  535. ]]>
  536. </if>
  537. <if test='patientState == "C"'>
  538. <![CDATA[
  539. AND EXISTS (SELECT 1
  540. FROM tmp a
  541. where a.instcd = inpt.instcd
  542. and a.pid = inpt.pid
  543. and a.orddd = inpt.indd
  544. and a.cretno = inpt.cretno )
  545. ]]>
  546. </if>
  547. <if test='pid != "" and pid != null'>
  548. <![CDATA[
  549. AND inpt.pid = #{pid}
  550. ]]>
  551. </if>
  552. <!-- 상태가 전체가 아니면 -->
  553. <if test='patientState != "" and patientState != null'>
  554. <if test='ordDeptCd != "" and ordDeptCd != null'>
  555. <![CDATA[
  556. AND inpt.orddeptcd = #{ordDeptCd}
  557. ]]>
  558. </if>
  559. <if test='doctorId != "" and doctorId != null'>
  560. <![CDATA[
  561. AND CASE WHEN #{drKind} = 'A' THEN inpt.atdoctid ELSE inpt.medispclid END = #{doctorId}
  562. ]]>
  563. </if>
  564. </if>
  565. <![CDATA[
  566. ORDER BY ptbs.hngnm,inpt.indd,inpt.intm
  567. ]]>
  568. </select>
  569. <select id="getPatientInfoIn" parameterType="PatientInfoDTO" resultType="GetPatientInfoVO">
  570. <![CDATA[
  571. SELECT INPT.ORDDEPTCD AS ordDeptCd,
  572. (SELECT DEPTENGABBR
  573. FROM COM.ZSDDDEPT DEPT
  574. WHERE DEPT.INSTCD = INPT.INSTCD
  575. AND DEPT.DEPTCD = INPT.ORDDEPTCD
  576. AND INPT.INDD BETWEEN DEPT.VALIFROMDD AND DEPT.VALITODD) AS deptEngAbbr,
  577. COM.FN_ZS_GETDEPTNAME(INPT.INSTCD, INPT.ORDDEPTCD, INPT.INDD) AS ordDeptNm,
  578. INPT.PID AS pid,
  579. TO_CHAR(INPT.CRETNO) AS cretNo,
  580. INPT.ROOMCD AS roomCd,
  581. INPT.INDD AS inDd,
  582. INPT.DSCHDD AS dschDd,
  583. INPT.ORDTYPE AS ordType,
  584. INPT.INSTCD AS instCd,
  585. INPT.MEDISPCLID AS mainDrId,
  586. COM.FN_ZS_GETUSERNM(INPT.MEDISPCLID, INPT.INDD) AS mainDrName,
  587. COM.FN_ZS_GETUSERNM(INPT.ERMEDISPCLID, INPT.INDD) AS erDrNm,
  588. TO_CHAR(INPT.FSTRGSTDT) AS firstRgstDt,
  589. PTBS.SEX || '/' || COM.FN_ZZ_GETAGEAS(PTBS.RRGSTNO1,
  590. PTBS.RRGSTNO2,
  591. TO_CHAR(SYSDATE, 'YYYYMMDD'),
  592. 'A', PTBS.BRTHDD) AS sa,
  593. PTBS.HNGNM AS patientName,
  594. PTBS.RRGSTNO1 || '-' || SUBSTR(PTBS.RRGSTNO2, 1, 1) || '******' AS juminNo,
  595. PTBS.ZIPCDADDR || ' ' || DETLADDR AS zipCdAddr,
  596. PTBS.MPPHONTEL AS telNum,
  597. (SELECT CDNM
  598. FROM COM.ZBCMCODE
  599. WHERE CDGRUPID = 'P0008'
  600. AND CDID = INPT.INSUKIND) AS insuKind,
  601. (SELECT DEPT.DEPTENGABBR
  602. FROM COM.ZSDDDEPT DEPT
  603. WHERE DEPT.INSTCD = INPT.INSTCD
  604. AND DEPT.DEPTCD = INPT.WARDCD
  605. AND INPT.INDD BETWEEN DEPT.VALIFROMDD AND DEPT.VALITODD) AS ward,
  606. (SELECT DIAG.DIAGCD
  607. FROM EMR.MMOHDIAG DIAG
  608. WHERE DIAG.INSTCD = #{instCd}
  609. AND DIAG.PID = INPT.PID
  610. AND DIAG.ORDDD = INPT.INDD
  611. AND DIAG.CRETNO = INPT.CRETNO
  612. AND DIAG.ORDDEPTCD = INPT.ORDDEPTCD
  613. AND DIAG.DIAGHISTCD = 'O'
  614. AND DIAG.DIAGTYPECD = 'D'
  615. AND DIAG.DIAGKINDCDFLAG = 'M'
  616. AND ROWNUM = 1
  617. AND DIAG.DIAGHISTNO = (SELECT MAX(DIAGH.DIAGHISTNO)
  618. FROM EMR.MMOHDIAG DIAGH
  619. WHERE DIAGH.INSTCD = #{instCd}
  620. AND DIAGH.PID = INPT.PID
  621. AND DIAGH.ORDDD = INPT.INDD
  622. AND DIAGH.CRETNO = INPT.CRETNO
  623. AND DIAGH.ORDDEPTCD = INPT.ORDDEPTCD
  624. AND DIAGH.DIAGHISTCD = 'O'
  625. AND DIAGH.DIAGTYPECD = 'D'
  626. AND DIAGH.DIAGKINDCDFLAG = 'M')
  627. ) AS dxCd,
  628. (SELECT TERM.DIAGHNGNM
  629. FROM EMR.MMOHDIAG DIAG,
  630. EMR.MMBVDIAG TERM
  631. WHERE DIAG.INSTCD = #{instCd}
  632. AND DIAG.PID = INPT.PID
  633. AND DIAG.ORDDD = INPT.INDD
  634. AND DIAG.CRETNO = INPT.CRETNO
  635. AND DIAG.ORDDEPTCD = INPT.ORDDEPTCD
  636. AND DIAG.DIAGHISTCD = 'O'
  637. AND DIAG.DIAGTYPECD = 'D'
  638. AND DIAG.DIAGKINDCDFLAG = 'M'
  639. AND TERM.INSTCD = DIAG.INSTCD
  640. AND TERM.ORGDIAGCD = DIAG.DIAGCD
  641. AND DIAG.DIAGDD BETWEEN TERM.TERMFROMDD AND TERM.TERMTODD
  642. AND DIAG.DIAGDD BETWEEN TERM.DIAGATTRFROMDD AND TERM.DIAGATTRTODD
  643. AND ROWNUM = 1
  644. AND DIAG.DIAGHISTNO = (SELECT MAX(DIAGH.DIAGHISTNO)
  645. FROM EMR.MMOHDIAG DIAGH
  646. WHERE diagh.instcd = #{instCd}
  647. AND DIAGH.PID = INPT.PID
  648. AND DIAGH.ORDDD = INPT.INDD
  649. AND DIAGH.CRETNO = INPT.CRETNO
  650. AND DIAGH.ORDDEPTCD = INPT.ORDDEPTCD
  651. AND DIAGH.DIAGHISTCD = 'O'
  652. AND DIAGH.DIAGTYPECD = 'D'
  653. AND DIAGH.DIAGKINDCDFLAG = 'M')
  654. ) AS dxNm,
  655. (SELECT LISTAGG(DECODE(ISOLDISPCD, 'A','공기주의(A)',
  656. 'B','혈액주의(B)',
  657. 'C','접촉주의(C)',
  658. 'D','비말주의(D)'), ', ') WITHIN GROUP (ORDER BY ISOLDISPCD) AS gbn
  659. FROM EMA.ASBHISPT
  660. WHERE INSTCD = #{instCd}
  661. AND PID = #{pid}
  662. AND ISOLDISPCD IN ('A', 'B','C', 'D')
  663. AND ((TO_CHAR(SYSDATE,'YYYYMMDD') < SUBSTR(DISPTODT, 1, 8))
  664. OR ((SUBSTR(DISPFROMDT, 1, 8) <= TO_CHAR(SYSDATE,'YYYYMMDD'))
  665. AND SUBSTR(DISPTODT, 1, 8) IS NULL))
  666. ) AS gbn,
  667. OPRS.PERFDRDEPTCD AS opDeptCd,
  668. OPRS.PERFDRDEPT AS opDeptNm,
  669. OPRS.PERFDRNM AS opDrNm,
  670. OPRS.PERFDRID AS opDrId,
  671. OPRS.OPCNFMDD AS opCnfmDd,
  672. OPRS.PERFDRNM AS perfDrNm,
  673. OPRS.PERFDRFLAG AS perfDrFlag,
  674. OPRS.PERFDRDEPT AS perfDrDept,
  675. OPRS.OPDIAGNM AS opDiagNm,
  676. OPRS.OPNM AS opNm,
  677. OPRS.ANSTDRNM1 AS anstDrNm1,
  678. OPRS.ANSTDRFLAG1 AS anstDrFlag1,
  679. OPRS.ANSTDEPTNM1 AS anstDeptNm1,
  680. OPRS.ANSTDRNM2 AS anstDrNm2,
  681. OPRS.ANSTDRFLAG2 AS anstDrFlag2,
  682. OPRS.ANSTDEPTNM2 AS anstDeptNm2,
  683. OPRS.ANSTDRNM3 AS anstDrNm3,
  684. OPRS.ANSTDRFLAG3 AS anstDrFlag3,
  685. OPRS.ANSTDEPTNM3 AS anstDeptNm3,
  686. #{opRsrvNo} AS opRsrvNo,
  687. '' AS orderNo,
  688. '' AS printTime,
  689. '' AS ocrCd,
  690. '' AS inputId,
  691. '' AS inputNm,
  692. '' AS signImg,
  693. '' AS bp,
  694. '' AS dm,
  695. '' AS heart,
  696. '' AS kidney,
  697. '' AS respiration,
  698. '' AS hx,
  699. '' AS allergy,
  700. '' AS drug,
  701. '' AS smoking,
  702. '' AS idio,
  703. '' AS nacrotics,
  704. '' AS airway,
  705. '' AS hemorrhage,
  706. '' AS statusEtc
  707. FROM PAM.PMIHINPT INPT,
  708. PAM.PMCMPTBS PTBS
  709. ]]>
  710. <if test='opRsrvNo != "" and opRsrvNo != null'>
  711. <![CDATA[
  712. , ( SELECT a.opcnfmdd
  713. , a.perfdrid
  714. , a.perfdrnm
  715. , a.perfdrflag
  716. , a.perfdeptcd AS perfdrdeptcd
  717. , a.perfdeptnm AS perfdrdept
  718. , a.opdiagnm
  719. , a.opnm
  720. , MAX(CASE WHEN a.opcnfmno = 1 AND NVL(a.anstdrid, '-') != '-' THEN
  721. COM.FN_ZS_GETUSERNM(a.anstdrid, a.opcnfmdd)
  722. WHEN a.opcnfmno = 1 AND NVL(a.anstdrid1, '-') NOT IN ('-', 'undefined') THEN
  723. COM.FN_ZS_GETUSERNM(a.anstdrid1, a.opcnfmdd)
  724. ELSE ''
  725. END) AS anstdrnm1
  726. , MAX(CASE WHEN a.opcnfmno = 1 AND NVL(a.anstdrid, '-') != '-' THEN
  727. CASE WHEN b.jobposcd IN ('1800', '1799') THEN
  728. '전공의'
  729. ELSE '전문의'
  730. END
  731. WHEN a.opcnfmno = 1 AND NVL(a.anstdrid1, '-') NOT IN ('-', 'undefined') THEN
  732. ( SELECT CASE WHEN c.jobposcd IN ('1800', '1799') THEN
  733. '전공의'
  734. ELSE '전문의'
  735. END
  736. FROM com.zsumusrd c
  737. WHERE c.dutplceinstcd = a.instcd
  738. AND c.userid = a.anstdrid1
  739. AND a.opcnfmdd BETWEEN c.fromdd AND c.todd
  740. AND c.dutplcecd = '2090000000'
  741. AND c.psnworkyn = 'N'
  742. )
  743. ELSE ''
  744. END) AS anstdrflag1
  745. , MAX(CASE WHEN a.opcnfmno = 1 AND NVL(a.anstdrid, '-') != '-' THEN
  746. a.anstdeptnm
  747. WHEN a.opcnfmno = 1 AND NVL(a.anstdrid1, '-') NOT IN ('-', 'undefined') THEN
  748. a.anstdeptnm
  749. ELSE ''
  750. END) AS anstdeptnm1
  751. , MAX(CASE WHEN a.opcnfmno = 2 AND NVL(a.anstdrid, '-') != '-' THEN
  752. COM.FN_ZS_GETUSERNM(a.anstdrid, a.opcnfmdd)
  753. WHEN a.opcnfmno = 2 AND NVL(a.anstdrid2, '-') NOT IN ('-', 'undefined') THEN
  754. COM.FN_ZS_GETUSERNM(a.anstdrid2, a.opcnfmdd)
  755. ELSE ''
  756. END) AS anstdrnm2
  757. , MAX(CASE WHEN a.opcnfmno = 2 AND NVL(a.anstdrid, '-') != '-' THEN
  758. CASE WHEN b.jobposcd IN ('1800', '1799') THEN
  759. '전공의'
  760. ELSE '전문의'
  761. END
  762. WHEN a.opcnfmno = 2 AND NVL(a.anstdrid2, '-') NOT IN ('-', 'undefined') THEN
  763. ( SELECT CASE WHEN c.jobposcd IN ('1800', '1799') THEN
  764. '전공의'
  765. ELSE '전문의'
  766. END
  767. FROM com.zsumusrd c
  768. WHERE c.dutplceinstcd = a.instcd
  769. AND c.userid = a.anstdrid2
  770. AND a.opcnfmdd BETWEEN c.fromdd AND c.todd
  771. AND c.dutplcecd = '2090000000'
  772. AND c.psnworkyn = 'N'
  773. )
  774. ELSE ''
  775. END) AS anstdrflag2
  776. , MAX(CASE WHEN a.opcnfmno = 2 AND NVL(a.anstdrid, '-') != '-' THEN
  777. a.anstdeptnm
  778. WHEN a.opcnfmno = 2 AND NVL(a.anstdrid2, '-') NOT IN ('-', 'undefined') THEN
  779. a.anstdeptnm
  780. ELSE ''
  781. END) AS anstdeptnm2
  782. , MAX(CASE WHEN a.opcnfmno = 3 AND NVL(a.anstdrid, '-') != '-' THEN
  783. COM.FN_ZS_GETUSERNM(a.anstdrid, a.opcnfmdd)
  784. WHEN a.opcnfmno = 3 AND NVL(a.anstdrid3, '-') NOT IN ('-', 'undefined') THEN
  785. COM.FN_ZS_GETUSERNM(a.anstdrid3, a.opcnfmdd)
  786. ELSE ''
  787. END) AS anstdrnm3
  788. , MAX(CASE WHEN a.opcnfmno = 3 AND NVL(a.anstdrid, '-') != '-' THEN
  789. CASE WHEN b.jobposcd IN ('1800', '1799') THEN
  790. '전공의'
  791. ELSE '전문의'
  792. END
  793. WHEN a.opcnfmno = 3 AND NVL(a.anstdrid3, '-') NOT IN ('-', 'undefined') THEN
  794. ( SELECT CASE WHEN c.jobposcd IN ('1800', '1799') THEN
  795. '전공의'
  796. ELSE '전문의'
  797. END
  798. FROM com.zsumusrd c
  799. WHERE c.dutplceinstcd = a.instcd
  800. AND c.userid = a.anstdrid3
  801. AND a.opcnfmdd BETWEEN c.fromdd AND c.todd
  802. AND c.dutplcecd = '2090000000'
  803. AND c.psnworkyn = 'N'
  804. )
  805. ELSE ''
  806. END) AS anstdrflag3
  807. , MAX(CASE WHEN a.opcnfmno = 3 AND NVL(a.anstdrid, '-') != '-' THEN
  808. a.anstdeptnm
  809. WHEN a.opcnfmno = 3 AND NVL(a.anstdrid3, '-') NOT IN ('-', 'undefined') THEN
  810. a.anstdeptnm
  811. ELSE ''
  812. END) AS anstdeptnm3
  813. FROM ( SELECT a.instcd
  814. , a.opcnfmdd
  815. , a.perfdrid
  816. , COM.FN_ZS_GETUSERNM(a.perfdrid, a.opcnfmdd) AS perfdrnm
  817. , CASE WHEN b.jobposcd IN ('1800', '1799') THEN
  818. '전공의'
  819. ELSE '전문의'
  820. END AS perfdrflag
  821. , a.perfdeptcd
  822. , COM.FN_ZS_GETDEPTNM(a.instcd, a.perfdeptcd, a.opcnfmdd) AS perfdeptnm
  823. , MAX(CASE WHEN c.termflag = '0' AND c.termcd = a.diagcd THEN
  824. NVL(c.termhngnm, c.termengnm)
  825. ELSE ''
  826. END) AS opdiagnm
  827. , MAX(CASE WHEN c.termflag = '9' AND c.termcd = a.opcd THEN
  828. NVL(c.termhngnm, c.termengnm)
  829. ELSE ''
  830. END) AS opnm
  831. , d.opcnfmno
  832. , d.anstdrid
  833. , COM.FN_ZS_GETDEPTNM(a.instcd, '2090000000', a.opcnfmdd) AS anstdeptnm
  834. , MAX(e.anstdrid) AS anstdrid1
  835. , MAX(e.anstdrid2) AS anstdrid2
  836. , MAX(e.anstdrid3) AS anstdrid3
  837. FROM emr.mmohoprs a
  838. , com.zsumusrd b
  839. , emr.mrtmterm c
  840. , emr.mmodocad d
  841. , emr.mmodoprs e
  842. WHERE a.instcd = #{instCd}
  843. AND a.oprsrvno = #{opRsrvNo}
  844. AND a.ophistcd = 'O'
  845. AND b.dutplceinstcd = a.instcd
  846. AND b.userid = a.perfdrid
  847. AND b.dutplcecd = a.perfdeptcd
  848. AND a.opcnfmdd BETWEEN b.fromdd AND b.todd
  849. AND c.instcd = a.instcd
  850. AND c.termflag IN ('0', '9')
  851. AND c.termcd IN (a.diagcd, a.opcd)
  852. AND a.opcnfmdd BETWEEN c.termfromdd AND c.termtodd
  853. AND d.instcd(+) = a.instcd
  854. AND d.oprsrvno(+) = a.oprsrvno
  855. AND d.opcnfmno(+) IN (1, 2, 3)
  856. AND e.instcd(+) = a.instcd
  857. AND a.opcnfmdd BETWEEN e.appstartdd(+) AND e.appenddd(+)
  858. AND e.usedwflag(+) = TO_CHAR(TO_DATE(a.opcnfmdd, 'YYYYMMDD'), 'd')
  859. AND e.oproomcd(+) = a.oproomcd
  860. AND CASE WHEN SUBSTR(a.opfromtmcd, 1, 4) BETWEEN '0000' AND '1200' THEN
  861. '1'
  862. ELSE '2'
  863. END = e.usescheflag(+)
  864. GROUP BY a.instcd
  865. , a.opcnfmdd
  866. , a.perfdrid
  867. , a.perfdeptcd
  868. , b.jobposcd
  869. , d.opcnfmno
  870. , d.anstdrid
  871. ) a
  872. , com.zsumusrd b
  873. WHERE b.dutplceinstcd(+) = a.instcd
  874. AND b.userid(+) = a.anstdrid
  875. AND a.opcnfmdd BETWEEN b.fromdd(+) AND b.todd(+)
  876. AND b.dutplcecd(+) = '2090000000'
  877. AND b.psnworkyn(+) = 'N'
  878. GROUP BY a.opcnfmdd
  879. , a.perfdrid
  880. , a.perfdrnm
  881. , a.perfdrflag
  882. , a.perfdeptcd
  883. , a.perfdeptnm
  884. , a.opdiagnm
  885. , a.opnm
  886. ) oprs
  887. ]]>
  888. </if>
  889. <if test='opRsrvNo == ""'>
  890. <![CDATA[
  891. , ( SELECT '' AS opcnfmdd
  892. , '' AS perfdrid
  893. , '' AS perfdrnm
  894. , '' AS perfdrflag
  895. , '' AS perfdrdeptcd
  896. , '' AS perfdrdept
  897. , '' AS opdiagnm
  898. , '' AS opnm
  899. , '' AS anstdrnm1
  900. , '' AS anstdrflag1
  901. , '' AS anstdeptnm1
  902. , '' AS anstdrnm2
  903. , '' AS anstdrflag2
  904. , '' AS anstdeptnm2
  905. , '' AS anstdrnm3
  906. , '' AS anstdrflag3
  907. , '' AS anstdeptnm3
  908. FROM DUAL
  909. ) oprs
  910. ]]>
  911. </if>
  912. <![CDATA[
  913. WHERE 1 = 1
  914. AND INPT.INSTCD = #{instCd}
  915. AND INPT.PID = #{pid}
  916. AND INPT.HISTSTAT = 'Y'
  917. AND INPT.MSKIND = 'M'
  918. AND INPT.CRETNO = #{cretNo}
  919. AND INPT.INDD = #{inDd}
  920. AND PTBS.INSTCD(+) = INPT.INSTCD
  921. AND PTBS.PID(+) = INPT.PID
  922. ]]>
  923. <if test='ordDeptCd != "" and ordDeptCd != null'>
  924. <if test='opRsrvNo == ""'>
  925. <![CDATA[
  926. AND INPT.ORDDEPTCD = #{ordDeptCd}
  927. ]]>
  928. </if>
  929. </if>
  930. <![CDATA[
  931. ORDER BY INPT.FSTRGSTDT DESC
  932. ]]>
  933. </select>
  934. <select id="getPatientInfoOut" parameterType="PatientInfoDTO" resultType="GetPatientInfoVO">
  935. <![CDATA[
  936. SELECT OTPT.ORDDEPTCD AS ordDeptCd,
  937. (SELECT DEPTENGABBR
  938. FROM COM.ZSDDDEPT DEPT
  939. WHERE DEPT.INSTCD = OTPT.INSTCD
  940. AND DEPT.DEPTCD = OTPT.ORDDEPTCD
  941. AND OTPT.ORDDD BETWEEN DEPT.VALIFROMDD AND DEPT.VALITODD) AS deptEngAbbr,
  942. COM.FN_ZS_GETDEPTNAME(OTPT.INSTCD, OTPT.ORDDEPTCD, OTPT.ORDDD) AS ordDeptNm,
  943. OTPT.PID AS pid,
  944. TO_CHAR(OTPT.cretno) AS cretNo,
  945. '' AS roomCd,
  946. OTPT.ORDDD AS inDd,
  947. '' AS dschDd,
  948. OTPT.ORDTYPE AS ordType,
  949. OTPT.INSTCD AS instCd,
  950. OTPT.ORDDRID AS mainDrId,
  951. COM.FN_ZS_GETUSERNM(OTPT.ORDDRID, OTPT.ORDDD) AS mainDrName,
  952. '' AS erDrNm,
  953. TO_CHAR(OTPT.FSTRGSTDT) AS firstRgstDt,
  954. PTBS.SEX || '/' || COM.FN_ZZ_GETAGEAS(PTBS.RRGSTNO1
  955. , PTBS.RRGSTNO2
  956. , TO_CHAR(SYSDATE, 'YYYYMMDD')
  957. , 'A'
  958. , PTBS.BRTHDD) AS sa,
  959. PTBS.HNGNM AS patientName,
  960. PTBS.RRGSTNO1 || '-' || SUBSTR(PTBS.RRGSTNO2, 1, 1) || '******' AS juminNo,
  961. PTBS.ZIPCDADDR || ' ' || PTBS.DETLADDR AS zipCdAddr,
  962. PTBS.MPPHONTEL AS telNum,
  963. (SELECT CDNM
  964. FROM COM.ZBCMCODE
  965. WHERE CDGRUPID = 'P0008'
  966. AND CDID = OTPT.INSUKIND) AS insuKind,
  967. '' AS ward,
  968. (SELECT DIAG.DIAGCD
  969. FROM EMR.MMOHDIAG DIAG
  970. WHERE DIAG.INSTCD = #{instCd}
  971. AND DIAG.PID = OTPT.PID
  972. AND DIAG.ORDDD = OTPT.ORDDD
  973. AND DIAG.CRETNO = OTPT.CRETNO
  974. AND DIAG.DIAGHISTCD = 'O'
  975. AND DIAG.DIAGTYPECD = 'D'
  976. AND DIAG.DIAGKINDCDFLAG = 'M'
  977. AND ROWNUM = 1
  978. AND DIAG.DIAGHISTNO = (SELECT MAX(DIAGH.DIAGHISTNO)
  979. FROM EMR.MMOHDIAG DIAGH
  980. WHERE DIAGH.INSTCD = #{instCd}
  981. AND DIAGH.PID = OTPT.PID
  982. AND DIAGH.ORDDD = OTPT.ORDDD
  983. AND DIAGH.CRETNO = OTPT.CRETNO
  984. AND DIAGH.DIAGHISTCD = 'O'
  985. AND DIAGH.DIAGTYPECD = 'D'
  986. AND DIAGH.DIAGKINDCDFLAG = 'M')
  987. ) AS dxCd,
  988. ( SELECT TERM.DIAGHNGNM
  989. FROM EMR.MMOHDIAG DIAG
  990. , EMR.MMBVDIAG TERM
  991. WHERE DIAG.INSTCD = #{instCd}
  992. AND DIAG.PID = OTPT.PID
  993. AND DIAG.ORDDD = OTPT.ORDDD
  994. AND DIAG.CRETNO = OTPT.CRETNO
  995. AND DIAG.DIAGHISTCD = 'O'
  996. AND DIAG.DIAGTYPECD = 'D'
  997. AND DIAG.DIAGKINDCDFLAG = 'M'
  998. AND TERM.INSTCD = DIAG.INSTCD
  999. AND TERM.ORGDIAGCD = DIAG.DIAGCD
  1000. AND DIAG.DIAGDD BETWEEN TERM.TERMFROMDD AND TERM.TERMTODD
  1001. AND DIAG.DIAGDD BETWEEN TERM.DIAGATTRFROMDD AND TERM.DIAGATTRTODD
  1002. AND ROWNUM = 1
  1003. AND DIAG.DIAGHISTNO = (SELECT MAX(DIAGH.DIAGHISTNO)
  1004. FROM EMR.MMOHDIAG DIAGH
  1005. WHERE DIAGH.INSTCD = #{instCd}
  1006. AND DIAGH.PID = OTPT.PID
  1007. AND DIAGH.ORDDD = OTPT.ORDDD
  1008. AND DIAGH.CRETNO = OTPT.CRETNO
  1009. AND DIAGH.DIAGHISTCD = 'O'
  1010. AND DIAGH.DIAGTYPECD = 'D'
  1011. AND DIAGH.DIAGKINDCDFLAG = 'M')
  1012. ) AS dxNm,
  1013. (SELECT LISTAGG(DECODE(ISOLDISPCD, 'A','공기주의(A)',
  1014. 'B','혈액주의(B)',
  1015. 'C','접촉주의(C)',
  1016. 'D','비말주의(D)'), ', ') WITHIN GROUP (ORDER BY ISOLDISPCD) AS gbn
  1017. FROM EMA.ASBHISPT
  1018. WHERE INSTCD = #{instCd}
  1019. AND PID = #{pid}
  1020. AND ISOLDISPCD IN ('A', 'B','C', 'D')
  1021. AND ((TO_CHAR(SYSDATE,'YYYYMMDD') < SUBSTR(DISPTODT, 1, 8))
  1022. OR ((SUBSTR(DISPFROMDT, 1, 8) <= TO_CHAR(SYSDATE,'YYYYMMDD'))
  1023. AND SUBSTR(DISPTODT, 1, 8) IS NULL))) AS gbn,
  1024. '' AS opDeptCd,
  1025. '' AS opDeptNm,
  1026. '' AS opDrNm,
  1027. '' AS opDrId,
  1028. '' AS opCnfmDd,
  1029. '' AS perfDrNm,
  1030. '' AS perfDrFlag,
  1031. '' AS perfDrDept,
  1032. '' AS opDiagNm,
  1033. '' AS opNm,
  1034. '' AS anstDrNm1,
  1035. '' AS anstDrFlag1,
  1036. '' AS anstDeptNm1,
  1037. '' AS anstDrNm2,
  1038. '' AS anstDrFlag2,
  1039. '' AS anstDeptNm2,
  1040. '' AS anstDrNm3,
  1041. '' AS anstDrFlag3,
  1042. '' AS anstDeptNm3,
  1043. '' AS opRsrvNo,
  1044. '' AS orderNo,
  1045. '' AS printTime,
  1046. '' AS ocrCd,
  1047. '' AS inputId,
  1048. '' AS inputNm,
  1049. '' AS signImg,
  1050. '' AS bp,
  1051. '' AS dm,
  1052. '' AS heart,
  1053. '' AS kidney,
  1054. '' AS respiration,
  1055. '' AS hx,
  1056. '' AS allergy,
  1057. '' AS drug,
  1058. '' AS smoking,
  1059. '' AS idio,
  1060. '' AS nacrotics,
  1061. '' AS airway,
  1062. '' AS hemorrhage,
  1063. '' AS statusEtc
  1064. FROM PAM.PMOHOTPT OTPT
  1065. LEFT OUTER JOIN PAM.PMCMPTBS PTBS
  1066. ON PTBS.PID = OTPT.PID
  1067. AND PTBS.INSTCD = OTPT.INSTCD
  1068. WHERE OTPT.INSTCD = #{instCd}
  1069. AND OTPT.PID = #{pid}
  1070. AND OTPT.ORDDD = #{inDd}
  1071. AND OTPT.HISTSTAT IN ('R', 'T')
  1072. AND OTPT.MSKIND = 'M'
  1073. AND OTPT.CRETNO = #{cretNo}
  1074. ]]>
  1075. </select>
  1076. <insert id="setUserFormSet" parameterType="java.util.HashMap" useGeneratedKeys="true">
  1077. <![CDATA[
  1078. INSERT INTO emr.mrfmsetindx(
  1079. instcd,
  1080. itemindxseq,
  1081. supitemindxseq,
  1082. indxflag,
  1083. indxnm,
  1084. indxcnts,
  1085. deptcd,
  1086. userid,
  1087. linkflag,
  1088. linkcd,
  1089. comnseq,
  1090. fstrgstrid,
  1091. fstrgstdt,
  1092. lastupdtrid,
  1093. lastupdtdt,
  1094. jobkind,
  1095. slipno
  1096. )
  1097. VALUES(
  1098. #{instCd},
  1099. EMR.SQ_MRFMSETINDX_01.NEXTVAL,
  1100. 472,
  1101. 'O',
  1102. '',
  1103. '',
  1104. '',
  1105. #{userId},
  1106. 'Y',
  1107. #{formCd},
  1108. '',
  1109. #{userId},
  1110. systimestamp,
  1111. #{userId},
  1112. systimestamp,
  1113. '',
  1114. '')
  1115. ]]>
  1116. </insert>
  1117. <delete id="delUserFormSet" parameterType="java.util.HashMap">
  1118. <![CDATA[
  1119. UPDATE EMR.MRFMSETINDX
  1120. SET INSTCD = '999'
  1121. WHERE ITEMINDXSEQ = #{idx}
  1122. AND USERID = #{userId}
  1123. AND INSTCD = #{instCd}
  1124. AND LINKCD = #{formCd}
  1125. ]]>
  1126. </delete>
  1127. <select id="getConsentFormCategory" resultType="ConsentFormCategoryVO">
  1128. <![CDATA[
  1129. SELECT FORM_CATEGORY_ID AS categoryId,
  1130. FORM_CATEGORY_CODE AS categoryCode,
  1131. PARENT_FORM_CATEGORY_ID AS parentCategoryId,
  1132. FORM_CATEGORY_NAME AS categoryName
  1133. FROM EMA.CLIP_FORM_CATEGORY
  1134. WHERE USE_YN = 'Y'
  1135. ORDER BY PARENT_FORM_CATEGORY_ID, FORM_CATEGORY_CODE
  1136. ]]>
  1137. </select>
  1138. <update id="updateUserSetUp" parameterType="java.util.HashMap">
  1139. <![CDATA[
  1140. MERGE INTO EMA.EFORM_HOSPUSERS HOSP
  1141. USING DUAL ON (HOSP.HOSPUSER_ID = #{userId} AND HOSP.HOSPITALCD = #{instCd})
  1142. WHEN MATCHED
  1143. THEN UPDATE
  1144. SET HOSP.HOSPAPPSTATUS = #{status}
  1145. WHEN NOT MATCHED
  1146. THEN INSERT (HOSP.HOSPITALCD,
  1147. HOSP.HOSPAPPSTATUS,
  1148. HOSP.HOSPUSER_ID)
  1149. VALUES (#{instCd},
  1150. #{status},
  1151. #{userId})
  1152. ]]>
  1153. </update>
  1154. </mapper>