SMMRC00100.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597
  1. var ClickTab = false;
  2. var displayflag = "N";
  3. /**
  4. * @desc : 사용자의 권한을 체크하여 버튼셋팅.
  5. * btn_r 조회버튼, btn_x 저장 및 수정 버튼, btn_p : 출력버튼
  6. * @
  7. * @param :
  8. * @return :
  9. * @authur : 김선태 2007. 5. 8
  10. * @---------------------------------------------------
  11. */
  12. function fchkAuth()
  13. {
  14. for(var i=0; i<= document.controls.length-1 ; i++){
  15. if(document.controls.item(i).elementName == "xforms:button"){
  16. if(document.controls.item(i).attribute("id").substr(0,6) == "btn_r_"){
  17. document.controls.item(i).disabled = !checkAuth("R");
  18. }
  19. if(document.controls.item(i).attribute("id").substr(0,6) == "btn_x_"){
  20. document.controls.item(i).disabled = !checkAuth("X");
  21. }
  22. if(document.controls.item(i).attribute("id").substr(0,6) == "btn_p_"){
  23. document.controls.item(i).disabled = !checkAuth("P");
  24. }
  25. }
  26. }
  27. }
  28. /**
  29. * @desc : excel 저장 하기
  30. * @
  31. * @param :
  32. * @return :
  33. * @authur : 이은영 2008.07.14
  34. * @---------------------------------------------------
  35. */
  36. function fExcel(gridObj, title){
  37. if (title == null) { title = "" }
  38. var fileName = window.fileDialog("save", ",", false, title + "_" + getCurrentDate(), "xls", "Excel Files(*.xls)|*.xls|All Files (*.*)|*.*");
  39. if (fileName != "") {
  40. gridObj.saveExcel(fileName, "SheetName", true, true, "", "", true);
  41. }
  42. }
  43. /**
  44. * @desc : 폼초기화
  45. * @
  46. * @param :
  47. * @return :
  48. * @authur : 이은영 2008.03.18
  49. * @---------------------------------------------------
  50. */
  51. function fFormInit()
  52. {
  53. // 2007.12.20. 부서코드가 의료정보(3230000000)가 아닌 경우 : 현위치조회 텝만 가능함...
  54. var deptcd = getUserInfo("dutplcecd");
  55. // KNUH_20101207_박성호_start_의무기록 부서코드 가져오기
  56. mmbfGetHardCodeInfo("/root/send/reqdata", "/root/temp/hardcd", 5501);
  57. //if (deptcd == "3230000000") {
  58. if(model.getValue("/root/temp/hardcd/hardcd[hardcd='" + deptcd + "']/hardcd") != "")
  59. {
  60. // KNUH_20101207_박성호_end
  61. btn_ChrtLend.visible= true ;
  62. btn_ChrtRtn.visible = true ;
  63. btn_Receipt.visible = true ;
  64. displayflag = "Y";
  65. // 체크번호생성제외 보여주기 (default : 'Y')
  66. chkyn.visible = true ;
  67. model.setValue("/root/hidden/chkyn", "Y");
  68. } else {
  69. btn_ChrtLend.visible= false ;
  70. btn_ChrtRtn.visible = false ;
  71. btn_Receipt.visible = false ;
  72. // 체크번호생성제외 안 보여주기 (default : '')
  73. chkyn.visible = false ;
  74. model.setValue("/root/hidden/chkyn", "");
  75. }
  76. //컨트롤 권한 설정
  77. fchkAuth();
  78. btn_ChrtInfo.dispatch("onclick");
  79. //공통코드 가져오기...
  80. //M0392:챠트미대출사유코드
  81. //M0412:과보관사유코드
  82. //M0424:차트상태(분실)코드
  83. zbcfGetCodeList(new Array("M0392","M0412","M0424"), new Array("/root/init/M0392","/root/init/M0412","/root/init/M0424"));
  84. if (displayflag == "Y") {
  85. // 2009.01.28. 단축키 처리를 위해 로딩 처리..
  86. fClickTab();
  87. }
  88. var pid ;
  89. if (isPopup() == true) {
  90. // param 환자정보
  91. pid = opener.javascript.getParameter("pid");
  92. }
  93. if ( pid == null || pid == "" ) {
  94. // 상단 환자정보
  95. var node = getGlobalVariable("paminfo");
  96. model.removeNodeset("/root/init/paminfo/list");
  97. setCSVToNode("/root/init/paminfo", node);
  98. pid = model.getValue("/root/init/paminfo/list/pid");
  99. }
  100. if ( pid == null ) { pid == ""; }
  101. if ( pid != "" ) {
  102. model.makeValue("/root/send/reqdata/pid", pid);
  103. model.refresh();
  104. event.keyCode = "13";
  105. ipt_pid.dispatch("onkeydown");
  106. }
  107. }
  108. /**
  109. * @desc : 접수 탭 클릭...
  110. * @
  111. * @param :
  112. * @return :
  113. * @authur : 이은영 2008.03.18
  114. * @---------------------------------------------------
  115. */
  116. function fClickTab()
  117. {
  118. if (ClickTab == false)
  119. {
  120. ClickTab = true;
  121. // 대출용도, 대출과, 차트과, 차트담당자, 보관장소
  122. model.makeValue("/root/send/reqdata/ioflag" , "A"); //2010,12,28, 주희경 입원/외래 모두 조회 하도록 변경
  123. model.makeValue("/root/send/reqdata/useyn" , "");
  124. model.makeValue("/root/send/reqdata/allwardyn", "");
  125. submit("TRMRC00100");
  126. // 외래차트접수현황
  127. iv_Receipt.src = "SSMRC03200_외래차트접수현황.xrw";
  128. iv_Receipt.window.javascript.fFormInit();
  129. // 외래차트대출
  130. iv_ChrtLend.src = "SSMRC03300_외래차트대출.xrw";
  131. iv_ChrtLend.window.javascript.fFormInit();
  132. // 외래차트반납
  133. iv_ChrtRtn.src = "SSMRC03400_외래차트반납.xrw";
  134. iv_ChrtRtn.window.javascript.fFormInit();
  135. //공통코드 가져오기...
  136. //M0392:챠트미대출사유코드
  137. copyNode(iv_Receipt.model , model, "/root/init/M0392", "/root/init/M0392");
  138. copyNode(iv_ChrtLend.model, model, "/root/init/M0392", "/root/init/M0392");
  139. //M0412:과보관사유코드
  140. copyNode(iv_ChrtRtn.model , model, "/root/init/M0412", "/root/init/M0412");
  141. //M0424:차트상태(분실)코드
  142. copyNode(iv_ChrtLend.model , model, "/root/init/M0424", "/root/init/M0424");
  143. copyNode(iv_ChrtRtn.model , model, "/root/init/M0424", "/root/init/M0424");
  144. //대출마스터정보 가져오기...
  145. copyNode(iv_Receipt.model , model, "/root/init/lendmastinfo", "/root/init/lendmastinfo");
  146. copyNode(iv_ChrtLend.model, model, "/root/init/lendmastinfo", "/root/init/lendmastinfo");
  147. copyNode(iv_ChrtRtn.model , model, "/root/init/lendmastinfo", "/root/init/lendmastinfo");
  148. // 2009.02.10. 화면 초기화..
  149. iv_Receipt.model.refresh();
  150. iv_ChrtLend.model.refresh();
  151. iv_ChrtRtn.model.refresh();
  152. }
  153. }
  154. /**
  155. * @desc : 현위치조회
  156. * @
  157. * @param :
  158. * @return :
  159. * @authur : 이은영 2008.03.18
  160. * @---------------------------------------------------
  161. */
  162. function fChartHistory()
  163. {
  164. if(isXPathTextNull("/root/send/reqdata/pid")){
  165. messageBox("환자번호를 입력해 주세요.", "I999", "");
  166. return;
  167. }
  168. model.removeNodeset("/root/main/chrtinfo/chrtlist");
  169. model.removeNodeset("/root/main/chrtinfo/emrlist");
  170. model.removeNodeset("/root/main/chrtinfo/pamlist");
  171. model.removeNodeset("/root/main/chrtinfo/inpam");
  172. model.removeNodeset("/root/main/chrtinfo/chngroom");
  173. model.removeNodeset("/root/main/chrtinfo/healexam");
  174. model.removeNodeset("/root/main/chrtinfo/chrtlendlist");
  175. var result = fCheckPid(ipt_pid, "/root/send/reqdata/pnm", "/root/send/reqdata/rrgstno");
  176. if (result.length > 0) {
  177. // 종이 차트 조회
  178. submit("TRMRC00144");
  179. // EMR 기록 조회
  180. submit("TRMRC00145");
  181. // 건진내역조회
  182. submit("TRMRC00146");
  183. if(grd_chrtlist.rows > 0){
  184. var medirecno = model.getValue("/root/main/chrtinfo/chrtlist[1]/medirecno");
  185. if (medirecno != "") {
  186. model.makeValue("/root/send/reqdata/ioflag", "O");
  187. model.makeValue("/root/send/reqdata/medirecno", medirecno);
  188. model.makeValue("/root/send/reqdata/pid", model.getValue("/root/main/chrtinfo/chrtlist[1]/pid"));
  189. submit("TRMRC00170");
  190. }
  191. }
  192. }
  193. // 2008.12.17. 상태에 따라 로우 색상 지정해 주기..
  194. initGridStyle("grd_chrtlist");
  195. var gridObj = grd_chrtlist;
  196. for ( var i = 1 ; i < gridObj.rows ; i++)
  197. {
  198. if(gridObj.valueMatrix(i , gridObj.colRef("lendyn")) == "Y"){
  199. gridObj.rowstyle(i, "data", "background-color") = "#ffccff"; // 대출중 (핑크색)
  200. }
  201. if(gridObj.valueMatrix(i , gridObj.colRef("chrtstat")) == "01"){
  202. gridObj.rowstyle(i, "data", "color") = "#ff0000"; // 분실차트 (빨간색)
  203. }
  204. }
  205. // 2008.12.17. 상태에 따라 로우 색상 지정해 주기..
  206. initGridStyle("grd_chrtlendlist");
  207. var gridObj = grd_chrtlendlist;
  208. for ( var i = 1 ; i < gridObj.rows ; i++)
  209. {
  210. if(gridObj.valueMatrix(i , gridObj.colRef("rtndt")) == ""){
  211. gridObj.rowstyle(i, "data", "background-color") = "#ffccff"; // 대출중 (핑크색)
  212. }
  213. }
  214. // 2009.06.02. 의정부인 경우.. 응급실, 건진센터 구영상 조회하기..
  215. var instcd = getUserInfo("dutplceinstcd");
  216. if (instcd == "013") {
  217. submit("TRMRC00147");
  218. var msgER = "";
  219. var msgAH = "";
  220. var dataCnt = getNodesetCnt(model, "/root/main/chrtinfo/oldimglist");
  221. for (var i = 1 ; i <= dataCnt ; i++)
  222. {
  223. var cls = model.getValue("/root/main/chrtinfo/oldimglist["+ i +"]/cls");
  224. var cnt = model.getValue("/root/main/chrtinfo/oldimglist["+ i +"]/cnt");
  225. // 구영상 응급의학과
  226. if (cls == "E") {
  227. msgER = "▣ 구영상 응급의학과 (" + cnt + "건)";
  228. }
  229. // 구영상 건진
  230. if (cls == "S") {
  231. msgAH = "▣ 구영상 건진 (" + cnt + "건)";
  232. }
  233. }
  234. model.setValue("/root/hidden/cap_oldimgER", msgER);
  235. cap_oldimgER.refresh();
  236. model.setValue("/root/hidden/cap_oldimgAH", msgAH);
  237. cap_oldimgAH.refresh();
  238. }
  239. }
  240. /**
  241. * @desc : 등록된 환자번호인지 체킹한다..
  242. * @
  243. * @param : iptObj - 환자번호 입력 컨트롤 (pid)
  244. * @return :
  245. * @authur : 이은영 2008.09.17
  246. * @---------------------------------------------------
  247. */
  248. function fGetPidNo(iptObj, ref)
  249. {
  250. var chkyn = model.getValue(ref);
  251. if (chkyn == "Y") {
  252. if (iptObj.currentText.length > 0) {
  253. var pid = iptObj.currentText;
  254. pid = getCretCheckNo(pid, getUserInfo("dutplceinstcd"));
  255. model.makeValue(iptObj.attribute("ref"), pid);
  256. iptObj.refresh();
  257. }
  258. }
  259. }
  260. /**
  261. * @desc : 등록된 환자번호인지 체킹한다..
  262. * @
  263. * @param : iptObj - 환자번호 입력 컨트롤 (pid)
  264. * @return : pnm - 환자명
  265. * @authur : 이은영 2008.03.18
  266. * @---------------------------------------------------
  267. */
  268. function fCheckPid(iptObj, refPnm, refRrgstno)
  269. {
  270. model.makeValue("/root/send/req/srchcond", "1");
  271. model.makeValue("/root/send/req/pid", iptObj.currentText);
  272. //환자등록번호 체크
  273. if(iptObj.currentText.length > 0 ){
  274. // 2008.12.11. 초기화 없애기..
  275. model.makeValue(refRrgstno, "");
  276. model.resetInstanceNode("/root/main/result/patinfo");
  277. model.makeNode("/root/main/result/patinfo");
  278. if(submit("TRPMC02500", "", "/root/send/req", "/root/main/result/patinfo")){
  279. //fSearch는 인적사항 화면을 임포트 해간 화면에서 구현해 주어야 하는 함수이다.
  280. if( getNodesetCount("/root/main/result/patinfo/patinfolist") > 0 ){
  281. model.copyNode("/root/main/patinfo", "/root/main/result/patinfo");
  282. //* 2009.04.07. 이중번호 메세지 ( 14257937 박용석 -> 13275912 신옥순 )
  283. var sBindPid = model.getValue("/root/main/result/patinfo/patinfolist/bindpid");
  284. if( sBindPid != '-' && sBindPid != '' && sBindPid != ' ' ){
  285. //합번된 등록번호 메세지 처리
  286. var sPid = model.getValue("/root/main/result/patinfo/patinfolist/pid");
  287. var sHngnm = model.getValue("/root/main/result/patinfo/patinfolist/hngnm");
  288. var retValue = messageBox(sPid + " (" + sHngnm + ") 환자의 등록번호가 [ " + sBindPid + " ] 로 합번 되었습니다. 합번된 등록번호로 재조회 하시겠습니까?", "Q999", "");
  289. if( retValue == '6' ){
  290. model.makeValue(iptObj.attribute("ref"), sBindPid);
  291. iptObj.refresh();
  292. fCheckPid(iptObj, refPnm, refRrgstno);
  293. return "";
  294. }
  295. }
  296. //*/
  297. var pid = model.getValue("/root/main/result/patinfo/patinfolist/pid");
  298. var pnm = model.getValue("/root/main/result/patinfo/patinfolist/hngnm");
  299. // 2008.12.11. 주민번호 표시하기..
  300. var rrgstno1 = model.getValue("/root/main/result/patinfo/patinfolist/rrgstno1");
  301. var rrgstno2 = model.getValue("/root/main/result/patinfo/patinfolist/rrgstno2");
  302. var rrgstno = rrgstno1 + "-" + rrgstno2.substring(0,3) + "****" ;
  303. if (refPnm != null)
  304. {
  305. model.makeValue(refPnm, pnm);
  306. }
  307. if (refRrgstno != null)
  308. {
  309. model.makeValue(refRrgstno, rrgstno);
  310. }
  311. return pnm;
  312. } else {
  313. model.resetInstanceNode("/root/main/patinfo/patinfolist");
  314. messageBox("없는 환자 번호 입니다.", "E999", "");
  315. model.refresh();
  316. return "";
  317. }
  318. } else { // 2009.01.14. 합본처리 에러메세지 처리후..
  319. return "";
  320. }
  321. }else{
  322. messageBox("환자등록번호를 정확히", "C001");
  323. return "";
  324. }
  325. }
  326. /**
  327. * @desc : 환자등록번호 조회 팝업
  328. * @
  329. * @param : refPid - 환자번호 참고 node path
  330. * refPnm - 환자명 참고 node path
  331. * @return :
  332. * @authur : 이은영 2008.03.18
  333. * @---------------------------------------------------
  334. */
  335. function fGetPid(refPid, refPnm, refRrgstno)
  336. {
  337. //조회건수가 1건일 경우 팝업창을 바로 닫는다.
  338. model.makeValue("/root/hidden/tmp/pidpopupinfo/checkfnexam", "1");
  339. model.makeValue("/root/hidden/tmp/pidpopupinfo/autoflag", "N");
  340. if( model.getValue("/root/hidden/tmp/pidpopupinfo/srchcond") == '' ){
  341. model.makeValue("/root/hidden/tmp/pidpopupinfo/srchcond", '2');
  342. }
  343. modal("SPPMC02500", "1","150", "150", "SPPMC02500", "/root/hidden/tmp/pidpopupinfo", "/root/send");
  344. model.resetInstanceNode("/root/source");
  345. //환자번호 copy
  346. var popupendflag = model.getValue("/root/main/popupendflag");
  347. if (popupendflag == "ok")
  348. {
  349. model.makeValue(refPid, model.getValue("/root/main/patinfo/patinfolist/pid"));
  350. if (refPnm == null) { refPnm = "" }
  351. if (refPnm != "") {
  352. model.makeValue(refPnm, model.getValue("/root/main/patinfo/patinfolist/hngnm"));
  353. }
  354. if (refRrgstno == null) { refRrgstno = "" }
  355. if (refRrgstno != "") {
  356. var rrgstno1 = model.getValue("/root/main/patinfo/patinfolist/rrgstno1");
  357. var rrgstno2 = model.getValue("/root/main/patinfo/patinfolist/rrgstno2");
  358. var rrgstno = rrgstno1 + "-" + rrgstno2.substring(0,3) + "****";
  359. model.makeValue(refRrgstno, rrgstno);
  360. }
  361. model.refresh();
  362. }
  363. }
  364. /**
  365. * @desc : 단축키 선택시 커서이동
  366. * @
  367. * @param :
  368. * @return :
  369. * @authur : 이은영 2009.01.28
  370. * @---------------------------------------------------
  371. */
  372. function fKeyDown(){
  373. if (displayflag == "Y")
  374. {
  375. // F7 : 118, F8 : 119 , F9 : 120, F10 : 121
  376. var keyCode = event.keyCode;
  377. if (keyCode == "118") {
  378. fAccessKey1();
  379. } else if (keyCode == "119") {
  380. fAccessKey2();
  381. } else if (keyCode == "120") {
  382. fAccessKey3();
  383. } else if (keyCode == "121") {
  384. fAccessKey4();
  385. }
  386. }
  387. }
  388. /**
  389. * @desc : 단축키 선택시 커서이동
  390. * @
  391. * @param :
  392. * @return :
  393. * @authur : 이은영 2009.01.28
  394. * @---------------------------------------------------
  395. */
  396. function fAccessKey1(){
  397. // 2009.01.28. 단축키 처리..
  398. model.toggle("ChrtInfo");
  399. btn_ChrtInfo.selected = "true";
  400. btn_ChrtInfo.refresh();
  401. // 커서위치 - 등록번호..
  402. model.setFocus("ipt_pid");
  403. ipt_pid.refresh();
  404. }
  405. /**
  406. * @desc : 단축키 선택시 커서이동
  407. * @
  408. * @param :
  409. * @return :
  410. * @authur : 이은영 2009.01.28
  411. * @---------------------------------------------------
  412. */
  413. function fAccessKey2(){
  414. // 2009.01.28. 단축키 처리..
  415. model.toggle("Receipt");
  416. btn_Receipt.selected = "true";
  417. btn_Receipt.refresh();
  418. // 2009.01.28. 단축키 처리..
  419. iv_Receipt.model.setFocus("btn_r_receipt");
  420. iv_Receipt.btn_r_receipt.refresh();
  421. // 접수이력조회
  422. iv_Receipt.window.javascript.fGetReqRendAppList();
  423. }
  424. /**
  425. * @desc : 단축키 선택시 커서이동
  426. * @
  427. * @param :
  428. * @return :
  429. * @authur : 이은영 2009.01.28
  430. * @---------------------------------------------------
  431. */
  432. function fAccessKey3(){
  433. // 2009.01.28. 단축키 처리..
  434. model.toggle("ChrtLend");
  435. btn_ChrtLend.selected = "true";
  436. btn_ChrtLend.refresh();
  437. // 커서위치 - 대출 바코드..
  438. iv_ChrtLend.window.javascript.fMoveCursor();
  439. }
  440. /**
  441. * @desc : 단축키 선택시 커서이동
  442. * @
  443. * @param :
  444. * @return :
  445. * @authur : 이은영 2009.01.28
  446. * @---------------------------------------------------
  447. */
  448. function fAccessKey4(){
  449. // 2009.01.28. 단축키 처리..
  450. model.toggle("ChrtRtn");
  451. btn_ChrtRtn.selected = "true";
  452. btn_ChrtRtn.refresh();
  453. // 커서위치 - 반납 바코드..
  454. iv_ChrtRtn.window.javascript.fMoveCursor();
  455. }
  456. /**
  457. * @desc : 하드코드 조회
  458. * @
  459. * @param : ref - reference path
  460. * rsltref - result reference path
  461. * hardcd - 하드코드
  462. * @return :
  463. * @author : 오지훈
  464. * @---------------------------------------------------
  465. */
  466. function mmbfGetHardCodeInfo(ref, rsltref, hardcd){
  467. var mmb_rsltref = "/root/hidden/mmb/hardcd";
  468. model.removeNode(mmb_rsltref);
  469. model.makeNode(mmb_rsltref);
  470. model.removeNode(ref);
  471. model.makeValue(ref + "/hardcd", hardcd);
  472. if(submit("TRMMB04103", "false", ref, mmb_rsltref)==true){
  473. model.copyNode(rsltref, mmb_rsltref);
  474. model.removeNode(mmb_rsltref);
  475. }
  476. model.refresh();
  477. }
  478. /**
  479. * @desc : 영상전환 설정
  480. * @
  481. * @param :
  482. * @return :
  483. * @authur : 정창혁 20121126
  484. * @---------------------------------------------------
  485. */
  486. function fTransFilm() {
  487. if (grd_chrtlist.row < grd_chrtlist.fixedRows)
  488. return;
  489. var sMsg = "영상전환 하시겠습니까?";
  490. if (grd_chrtlist.valueMatrix(grd_chrtlist.row, grd_chrtlist.colRef("chrtflag")) == "I") {
  491. sMsg = "영상전환을 취소하시겠습니까?";
  492. model.makeValue("/root/send/reqtrans/transyn", "N");
  493. } else if (grd_chrtlist.valueMatrix(grd_chrtlist.row, grd_chrtlist.colRef("chrtflag")) == "P" || grd_chrtlist.valueMatrix(grd_chrtlist.row, grd_chrtlist.colRef("chrtflag")) == "") {
  494. sMsg = "영상전환 하시겠습니까?";
  495. model.makeValue("/root/send/reqtrans/transyn", "Y");
  496. } else {
  497. model.makeValue("/root/send/reqtrans/transyn", "");
  498. return;
  499. }
  500. model.makeValue("/root/send/reqtrans/medirecno", grd_chrtlist.valueMatrix(grd_chrtlist.row, grd_chrtlist.colRef("medirecno")));
  501. if (messageBox(sMsg, "Q000") == 7) {
  502. return;
  503. }
  504. if (submit("TXMRC00151")) {
  505. btn_SrchChrtInfo.dispatch("DOMActivate");
  506. }
  507. }