MMR04800M.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653
  1. /*
  2. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  3. 환자요약 ( MMR04800_환자요약.xrw - JScript )
  4. - Version :
  5. 1) : Ver.1.00.01
  6. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  7. */
  8. //var instance = document.models(0).instances(0);
  9. var instance;// = model.instances.item(0);
  10. var uInfo;// = getUserInfos();
  11. //uInfo = uInfo.split("|");
  12. //if (isPopup()) {
  13. // var pid = parent.model.getValue("/root/send/pid");
  14. //} else {
  15. // var pid = parent.model.getValue("/root/main/paminfo/list/pid");
  16. //}
  17. var pid = "";
  18. /**
  19. * @desc : 화면 초기화
  20. * @
  21. * @param :
  22. * @return :
  23. * @authur : 박종훈
  24. * @---------------------------------------------------
  25. */
  26. function fInitalize()
  27. {
  28. model.setValue("/root/main/patinfo/patinfolist/pid" , model.property("pid"));
  29. model.setValue("/root/main/patinfo/patinfolist/hngnm", model.property("hngnm"));
  30. model.setValue("/root/main/cond/orddeptnm", model.property("deptnm"));
  31. model.setValue("/root/main/cond/orddrnm", model.property("medispclnm"));
  32. model.setValue("/root/main/cond/sexage", model.property("sexage"));
  33. model.setValue("/root/main/cond/wardroomnm", model.property("wardroomnm"));
  34. instance = model.instances.item(0);
  35. uInfo = getUserInfos();
  36. uInfo = uInfo.split("|");
  37. model.makeValue("/root/init/uid", uInfo[0]);
  38. model.makeValue("/root/init/udeptcd", uInfo[8]);
  39. model.setValue("/root/init/reqmedireclist/diffdt", 12); //검색 디폴트 12개월
  40. fAddDateReq("today");
  41. var srchcond = model.getValue("/root/envinit/srchcond/answcnt");
  42. var srchday = model.getValue("/root/envinit/srchday/answcnt");
  43. switch(srchcond)
  44. {
  45. case "001" :
  46. model.setValue("/root/init/schkind", "2");
  47. break;
  48. case "002" :
  49. model.setValue("/root/init/schkind", "3");
  50. break;
  51. case "003" :
  52. model.setValue("/root/init/schkind", "1");
  53. break;
  54. case "" :
  55. model.setValue("/root/init/schkind", "2");
  56. break;
  57. }
  58. radio1.refresh();
  59. switch(srchday)
  60. {
  61. case "001" :
  62. model.setValue("/root/init/reqmedireclist/diffdt", "1");
  63. break;
  64. case "002" :
  65. model.setValue("/root/init/reqmedireclist/diffdt", "3");
  66. break;
  67. case "003" :
  68. model.setValue("/root/init/reqmedireclist/diffdt", "6");
  69. break;
  70. case "004" :
  71. model.setValue("/root/init/reqmedireclist/diffdt", "12");
  72. break;
  73. case "005" :
  74. model.setValue("/root/init/reqmedireclist/diffdt", "-");
  75. break;
  76. }
  77. combo4.refresh();
  78. combo4.dispatch("xforms-value-changed");
  79. pid = model.property("pid"); //세션으로부터 환자등록번호를 파라미터로 받는다.
  80. //model.setValue("/root/main/patinfo/patinfolist/hngnm", model.property("hngnm"));
  81. if ( !isNull ( pid ) )
  82. {
  83. //ipt_pid.value = pid;
  84. model.setValue("/root/main/patinfo/patinfolist/pid", pid);
  85. fPidKeyPress(); //등록번호로 환자 정보조회
  86. fSelect_sub();
  87. //model.refresh();
  88. }
  89. if (isPopup())
  90. {
  91. //btn_detl.attribute("visibility") = "hidden";
  92. //btn_close.attribute("visibility") = "visiblle";
  93. var list = getGlobalVariable("emr_gsv_cmmsrckcond");
  94. if(list != "" && list != null){
  95. model.removeNodeset("/root/send");
  96. setCSVToNode("/root",list,"send");
  97. }
  98. //fSelect_Pop();
  99. } else {
  100. //fSelect_sub();
  101. }
  102. grd_smmlist.autoresize = true;
  103. model.refresh();
  104. }
  105. /**
  106. * @desc : 조회버튼 클릭
  107. * @
  108. * @param :
  109. * @return :
  110. * @authur : 박종훈
  111. * @---------------------------------------------------
  112. */
  113. function fSrchClick()
  114. {
  115. if (isPopup()) {
  116. fSelect_Pop();
  117. } else {
  118. fSelect_sub();
  119. }
  120. }
  121. /**
  122. * @desc : 줄추가
  123. * @
  124. * @param :
  125. * @return :
  126. * @authur : 박종훈
  127. * @---------------------------------------------------
  128. */
  129. function fAddrow()
  130. {
  131. var nodelistSmm = instance.selectNodes("/root/main/smmlist");
  132. var nodelength = nodelistSmm.length;
  133. var smmcnts = model.getValue("/root/main/smmlist[1]/smmcnts");
  134. if(smmcnts != "" || nodelength == 0)
  135. {
  136. //첫줄에 추가셀 생성요청[요청번호 : 12111, TaskNo : 46466, 우선순위 : SY] -박종훈 수정(2010.03.24)
  137. if (nodelength == 0)
  138. {
  139. grd_smmlist.addRow();
  140. }
  141. else
  142. {
  143. grd_smmlist.insertRow(1);
  144. }
  145. model.setValue("/root/main/smmlist[1]/smmdd", getCurrentDate());
  146. grd_smmlist.row = 1;
  147. grd_smmlist.col = 3;
  148. //grd_smmlist.editCell();
  149. //grd_smmlist.refresh();
  150. }
  151. }
  152. /**
  153. * @desc : 조회
  154. * @
  155. * @param :
  156. * @return :
  157. * @authur : 박종훈
  158. * @---------------------------------------------------
  159. */
  160. function fSelect_sub()
  161. {
  162. var srchpid = model.getValue("/root/main/patinfo/patinfolist/pid");
  163. if (srchpid != "")
  164. {
  165. model.removeNodeset("/root/main/smmlist");
  166. model.removeNodeset("/root/send");
  167. model.makeValue("/root/send/pid", srchpid);
  168. model.makeValue("/root/send/validyn", "Y");
  169. model.makeValue("/root/send/schkind", model.getValue("/root/init/schkind"));
  170. model.makeValue("/root/send/getyn", "Y");
  171. model.makeValue("/root/send/fromdd", model.getValue("/root/init/reqmedireclist/recfromdt"));
  172. model.makeValue("/root/send/todd", model.getValue("/root/init/reqmedireclist/rectodt"));
  173. model.makeValue("/root/send/allyn", model.getValue("/root/init/allyn"));
  174. //////////////////////////////////////////////////////////////////////////
  175. //2011.05.01진상찬 페이지 처리추가(10건씩)
  176. var offset = parseInt(model.getValue("root/page/curpage"));
  177. //1page면 offset은 0, 1page가 아니면 offset은 page수 * 10 (한페이지당 10건씩 보여줌)
  178. if(offset == 1)
  179. {
  180. offset = offset - 1;
  181. }
  182. else
  183. {
  184. offset = (offset - 1) * 10;
  185. }
  186. model.makeValue("/root/send/reqdata/offset", String(offset)); //몇번째 데이터 부터 조회할지 지정
  187. model.makeValue("/root/send/reqdata/pagesize", model.getValue("root/page/pagesize")); //한페이지에 보여줄 건수(10건고정)
  188. //submit("TXMMR04801"); 진상찬 submit 수정
  189. submit("TRMOB00009");
  190. var maxpage = parseInt(model.getValue("/root/main/smmlistcnt/maxcnt"));
  191. if(maxpage < 10)
  192. {
  193. model.setValue("/root/page/maxpage", "1");
  194. }
  195. else
  196. {
  197. maxpage = (maxpage / 10) - ((maxpage % 10) / 10) + 1;
  198. model.setValue("/root/page/maxpage", String(maxpage));
  199. }
  200. var reqnodeList = instance1.selectNodes("/root/send");
  201. //////////////////////////////////////////////////////////////////////////
  202. // grd_smmlist.resizeCells();
  203. model.refresh();
  204. //2011-05-24 진상찬: 그리드에 row추가 막음
  205. //fAddrow();
  206. }
  207. else
  208. {
  209. messageBox("환자번호가 ", "I004");
  210. return;
  211. }
  212. }
  213. /**
  214. * @desc : 팝업시 조회
  215. * @
  216. * @param :
  217. * @return :
  218. * @authur : 박종훈
  219. * @---------------------------------------------------
  220. */
  221. function fSelect_Pop()
  222. {
  223. var srchpid = model.getValue("/root/main/patinfo/patinfolist/pid");
  224. if (srchpid != "")
  225. {
  226. model.removeNodeset("/root/main/smmlist");
  227. model.makeValue("/root/send/pid", srchpid);
  228. model.makeValue("/root/send/getyn", "Y");
  229. model.makeValue("/root/send/schkind", model.getValue("/root/init/schkind"));
  230. model.makeValue("/root/send/validyn", model.getValue("/root/init/validyn"));
  231. model.makeValue("/root/send/fromdd", model.getValue("/root/init/reqmedireclist/recfromdt"));
  232. model.makeValue("/root/send/todd", model.getValue("/root/init/reqmedireclist/rectodt"));
  233. model.makeValue("/root/send/allyn", model.getValue("/root/init/allyn"));
  234. //////////////////////////////////////////////////////////////////////////
  235. //2011.05.01진상찬 페이지 처리추가(10건씩)
  236. var offset = parseInt(model.getValue("root/page/curpage"));
  237. //1page면 offset은 0, 1page가 아니면 offset은 page수 * 10 (한페이지당 10건씩 보여줌)
  238. if(offset == 1)
  239. {
  240. offset = offset - 1;
  241. }
  242. else
  243. {
  244. offset = (offset - 1) * 10;
  245. }
  246. model.makeValue("/root/send/reqdata/offset", String(offset)); //몇번째 데이터 부터 조회할지 지정
  247. model.makeValue("/root/send/reqdata/pagesize", model.getValue("root/page/pagesize")); //한페이지에 보여줄 건수(10건고정)
  248. //submit("TXMMR04801"); 진상찬 submit 수정
  249. submit("TRMOB00009");
  250. var maxpage = parseInt(model.getValue("/root/main/smmlistcnt/maxcnt"));
  251. if(maxpage < 10)
  252. {
  253. model.setValue("/root/page/maxpage", "1");
  254. }
  255. else
  256. {
  257. maxpage = (maxpage / 10) - ((maxpage % 10) / 10) + 1;
  258. model.setValue("/root/page/maxpage", String(maxpage));
  259. }
  260. var reqnodeList = instance1.selectNodes("/root/send");
  261. //////////////////////////////////////////////////////////////////////////
  262. if (reqnodeList.length > 0)
  263. {
  264. //alert(model.getValue("/root/send/pid"));
  265. //var csv = getNodeListCSV(reqnodeList);
  266. //setGlobalVariable("emr_gsv_cmmsrckcond",csv);
  267. }
  268. // grd_smmlist.resizeCells();
  269. //2011-05-24 진상찬: 그리드에 row추가 막음
  270. //fAddrow();
  271. model.refresh();
  272. }
  273. else
  274. {
  275. messageBox("환자번호가 ", "I004");
  276. return;
  277. }
  278. }
  279. /**
  280. * @desc : 화면 컨트롤 설정
  281. * @
  282. * @param :
  283. * @return :
  284. * @authur : 박종훈
  285. * @---------------------------------------------------
  286. */
  287. function fResizeGrup(flag, heig, wid)
  288. {
  289. body.attribute("height") = heig;
  290. body.attribute("width") = wid;
  291. var titHeight = parseInt(grup_title.attribute("height"));
  292. var tTop = parseInt(grup_top.attribute("top"));
  293. var tHeight = parseInt(grup_top.attribute("height"));
  294. var bTop = parseInt(grup_body.attribute("top"));
  295. var bHeight = parseInt(grup_body.attribute("height"));
  296. var mTop = parseInt(grup_bottom.attribute("top"));
  297. var mHeight = parseInt(grup_bottom.attribute("height"));
  298. if(flag == "1")
  299. {
  300. btn_excel.attribute("left") = wid - 4 - 56 + "px";
  301. grup_title.attribute("width") = wid - 2;
  302. grup_top.attribute("top") = 0;
  303. grup_top.attribute("height") = 0;
  304. grup_top.attribute("width") = 0;
  305. grup_top.attribute("visibility") = "hidden";
  306. grup_body.attribute("left") = 0;
  307. grup_body.attribute("top") = tTop;
  308. grup_body.attribute("height") = (heig - (tHeight + mHeight) + 1);
  309. grup_body.attribute("width") = wid - 2;
  310. grd_smmlist.attribute("left") = 0;
  311. grd_smmlist.attribute("border-style") = "none";
  312. grd_smmlist.attribute("height") = (heig - (tHeight + mHeight) + 1);
  313. grd_smmlist.attribute("width") = wid - 2;
  314. grup_bottom.attribute("left") = 0;
  315. grup_bottom.attribute("top") = (heig - mHeight - 2);
  316. grup_bottom.attribute("width") = wid - 2;
  317. line12.attribute("x1") = "1px";
  318. line12.attribute("x2") = wid - 2 + "px";
  319. line12.attribute("y1") = "24px";
  320. line12.attribute("y2") = "24px";
  321. line1.attribute("x1") = "1px";
  322. line1.attribute("x2") = wid - 2 + "px";
  323. line1.attribute("y1") = "0px";
  324. line1.attribute("y2") = "0px";
  325. line2.attribute("x1") = "1px";
  326. line2.attribute("x2") = wid - 2 + "px";
  327. line2.attribute("y1") = "0px";
  328. line2.attribute("y2") = "0px";
  329. btn_save.attribute("left") = wid - 4 - 56 + "px";
  330. btn_del.attribute("left") = wid - 6 - 112 + "px";
  331. btn_end.attribute("left") = wid - 8 - 168 + "px";
  332. //btn_close.attribute("left") = wid - 10 - 224 + "px";
  333. }
  334. model.refresh();
  335. }
  336. /**
  337. * @desc : 상세조회 클릭
  338. * @
  339. * @param :
  340. * @return :
  341. * @authur : 박종훈
  342. * @---------------------------------------------------
  343. */
  344. function fClickPop()
  345. {
  346. modal("../../../emr/medirecweb/xrw/SSMMR04800_진료요약기록.xrw", 1, 0, 0, "", "", "");
  347. if(opener.window.javascript.getParameter("SSMMP04800_rtn") == "Y")
  348. fSelect_sub();
  349. g_changeYn = "N";
  350. }
  351. /**
  352. * @desc : 작성자와 사용자의 일치여부
  353. * @
  354. * @param :
  355. * @return :
  356. * @authur : 박종훈
  357. * @---------------------------------------------------
  358. */
  359. function fChkAuth(selrow)
  360. {
  361. var recudpcd = model.getValue("/root/main/smmlist[" + selrow + "]/recdeptcd");
  362. var rtn = true;
  363. if(recudpcd != uInfo[8])
  364. {
  365. rtn = false;
  366. }
  367. return rtn;
  368. }
  369. /**
  370. * @desc : 창닫기전 변경된 내용 저장여부 확인
  371. * @
  372. * @param :
  373. * @return :
  374. * @authur : 박종훈
  375. * @---------------------------------------------------
  376. */
  377. function fClose()
  378. {
  379. var updateData = grd_smmlist.getUpdateData();
  380. var updateData = updateData.split("▩");
  381. if (updateData.length > 3 && (isPopup()))
  382. {
  383. var rtn = messageBox("환자요약에 변경된 정보가 있습니다 ", "Q002");
  384. if (rtn == 6)
  385. fSave();
  386. }
  387. }
  388. /**
  389. * @desc : 환자번호 정보조회
  390. * @id :
  391. * @event : onkeypress
  392. * @return : void
  393. * @authur : 박종훈
  394. */
  395. function fPidKeyPress()
  396. {
  397. var pid = model.getValue("/root/main/patinfo/patinfolist/pid");
  398. model.makeValue("/root/send/srchcond", "1");
  399. model.makeValue("/root/send/pid", pid);
  400. //inputEnterKey("btn_search", "DOMActivate");
  401. //환자등록번호 체크
  402. if(pid.length >= 1 )
  403. {
  404. if(submit("TRPMC02500"))
  405. {
  406. //fSearch는 인적사항 화면을 임포트 해간 화면에서 구현해 주어야 하는 함수이다.
  407. if( getNodesetCount("/root/main/patinfo/patinfolist") > 0 )
  408. {
  409. if (isPopup())
  410. {
  411. //fSelect_Pop();
  412. }
  413. else
  414. {
  415. //fSelect_sub();
  416. }
  417. }
  418. else
  419. {
  420. model.resetInstanceNode("/root/main/patinfo/patinfolist");
  421. messageBox("없는 환자 번호 입니다.", "E999", "");
  422. model.refresh();
  423. }
  424. }
  425. }
  426. else
  427. {
  428. messageBox("환자등록번호를 정확히", "C001");
  429. }
  430. }
  431. /**
  432. * @desc : 환자이름 정보조회
  433. * @id :
  434. * @event : onkeypress
  435. * @return : void
  436. * @authur : 박종훈
  437. */
  438. function fPnmKeyPress()
  439. {
  440. model.makeValue("/root/send/srchcond", "2");
  441. model.makeValue("/root/send/hngnm", ipt_hngnm.currentText);
  442. inputEnterKey("btn_pinfosearch", "DOMActivate");
  443. }
  444. /**
  445. * @desc : 환자정보조회 팝업
  446. * @id :
  447. * @event : DOMActivate
  448. * @return : void
  449. * @authur : 박종훈
  450. */
  451. function fPopPtinfo()
  452. {
  453. modal("SPPMC02500", "1","150", "150", "SPPMC02500", "/root/send", "/root/send");
  454. model.resetInstanceNode("/root/send");
  455. fSelect_Pop();
  456. }
  457. /**
  458. * @desc : 상용구 팝업
  459. * @id :
  460. * @event : DOMActivate
  461. * @return : void
  462. * @authur : 박종훈
  463. */
  464. function fPopCommUse()
  465. {
  466. setParameter("comn_chosflag", "C") // C : 상용구
  467. setParameter("comn_formprogflag", "A") // A: Summary, B : 주호소
  468. setParameter("openmode", "select");
  469. //modal("SPMRF04700");
  470. modal("SPMRF04900");
  471. var rtn = getParameter("comncnts"); //내용
  472. setParameter("comncnts", "");
  473. var re = /▦/i;
  474. var re1 = /▩/i;
  475. rtn = rtn.replace(re, "");
  476. rtn = rtn.replace(re1, "");
  477. var reccnts = model.getValue("/root/main/smmlist[" + grd_smmlist.row + "]/smmcnts");
  478. if (rtn == "")
  479. {
  480. return;
  481. }
  482. if (reccnts == "")
  483. {
  484. model.setValue("/root/main/smmlist[" + grd_smmlist.row + "]/smmcnts", rtn);
  485. fAddrow();
  486. }
  487. else
  488. {
  489. model.setValue("/root/main/smmlist[" + grd_smmlist.row + "]/smmcnts", reccnts + " " + rtn);
  490. grd_smmlist.addStatus(grd_smmlist.row, "update");
  491. }
  492. model.refresh();
  493. // grd_smmlist.resizeCells();
  494. }
  495. /**
  496. * @desc : 진료기록 리스트 조회조건 시작일, 종료일 셋팅
  497. * @id :
  498. * @event :
  499. * @return : void
  500. * @authur : 박종훈
  501. */
  502. function fAddDateReq(diffFlag)
  503. {
  504. var frdd = model.getValue("/root/init/reqmedireclist/recfromdt");
  505. var todd = model.getValue("/root/init/reqmedireclist/rectodt");
  506. var srcdd = new Date();
  507. var destdd = new Date();
  508. var diffdt;
  509. if (diffFlag == "next")
  510. {
  511. srcdd = todd.toDate();
  512. srcdd = srcdd.getAddDate(1, "D");
  513. frdd = srcdd.getDateFormat();
  514. diffdt = parseInt(model.getValue("/root/init/reqmedireclist/diffdt")) * 1;
  515. destdd = srcdd.getAddDate(diffdt, "M");
  516. todd = destdd.getDateFormat();
  517. model.makeValue("/root/init/allyn", "N");
  518. }
  519. else if (diffFlag == "back")
  520. {
  521. srcdd = frdd.toDate();
  522. srcdd = srcdd.getAddDate(-1, "D");
  523. todd = srcdd.getDateFormat();
  524. diffdt = parseInt(model.getValue("/root/init/reqmedireclist/diffdt")) * -1;
  525. destdd = srcdd.getAddDate(diffdt, "M");
  526. frdd = destdd.getDateFormat();
  527. model.makeValue("/root/init/allyn", "N");
  528. }
  529. else if (diffFlag == "today")
  530. {
  531. todd = getCurrentDate();
  532. var today = new Date();
  533. var frday = new Date();
  534. var diffdt = parseInt(model.getValue("/root/init/reqmedireclist/diffdt")) * -1;
  535. frday = today.getAddDate(diffdt , "M");
  536. frdd = frday.getDateFormat();
  537. model.makeValue("/root/init/allyn", "N");
  538. }
  539. else
  540. {
  541. if (model.getValue("/root/init/reqmedireclist/diffdt") != "-")
  542. {
  543. var today = todd.toDate();
  544. var frday = new Date();
  545. var diffdt = parseInt(model.getValue("/root/init/reqmedireclist/diffdt")) * -1;
  546. frday = today.getAddDate(diffdt , "M");
  547. frdd = frday.getDateFormat();
  548. button2.disabled = false;
  549. ipt_formrecdtfr.disabled = false;
  550. ipt_formrecdtto.disabled = false;
  551. button6.disabled = false;
  552. button3.disabled = false;
  553. model.makeValue("/root/init/allyn", "N");
  554. }
  555. else
  556. {
  557. button2.disabled = true;
  558. ipt_formrecdtfr.disabled = true;
  559. ipt_formrecdtto.disabled = true;
  560. button6.disabled = true;
  561. button3.disabled = true;
  562. model.makeValue("/root/init/allyn", "Y");
  563. }
  564. }
  565. model.setValue("/root/init/reqmedireclist/recfromdt", frdd);
  566. model.setValue("/root/init/reqmedireclist/rectodt", todd);
  567. ipt_formrecdtfr.refresh();
  568. ipt_formrecdtto.refresh();
  569. }