SMMMO04400.js 50 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276
  1. /*
  2. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  3. 응급환자리스트 ( SMMMO04400_응급환자리스트.xrw - JScript )
  4. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  5. */
  6. var sERPATLIST_PATH = "/root/main/erpatinfo/erpatlist";
  7. var sORDERBY = "";
  8. /**
  9. * @desc : 화면 초기화
  10. * @
  11. * @param :
  12. * @return :
  13. * @author : 오지훈
  14. * @---------------------------------------------------
  15. */
  16. function fInitialize_SMMMO04400(){
  17. model.removeNodeset(sERPATLIST_PATH);
  18. model.setValue("/root/main/cond/srchdd" , getCurrentDate());
  19. var openflag = model.getValue(opener.root.list.erpatlistflag);
  20. var reopenflag = model.getValue(opener.root.reopen.reopenflag); //진료대상자 리스트 open여부
  21. var chngcolflag= model.getValue(opener.root.chngcol.chngcolflag); //컬럼변경 여부
  22. // 하드코드 테이블 한번에 조회하도록 프로그램 수정
  23. fGethardcdArrayList(new Array(
  24. "hardcdno|1" , //응급의학과 부서코드 조회
  25. "colorflag|113", //색깔변경 구분 Flag 조회
  26. "calltime|190", // 응급실 의사호출 관련 자동 호출 시간
  27. "bpcallyn|226" //응급실 BP호출 적용여부
  28. ),
  29. new Array(
  30. "root/init",
  31. "root/init",
  32. "root/init",
  33. "root/init"
  34. )
  35. );
  36. zbcfGetCodeList(new Array("M0623", "M0720"), new Array("/root/init/M0623", "/root/init/M0720")); //공통코드 보험유형 조회
  37. if(openflag == "N"){ //응급환자리스트 최초open
  38. mmbfGetDeptCodeComboList("/root/send/reqdata", "/root/init/orddept" , "D"); //부서코드 콤보
  39. addComboInstance("/root/init/orddept", "deptcd^depthngnm", "-^전체", "dept"); //부서콤보 전체항목 추가
  40. fReqSectionInfo(); //기본구역 정보 조회
  41. addComboInstance("/root/init/section", "typecd^typenm", "-^전체", "section"); //기본구역 전체항목 추가
  42. model.copyNode(opener.root.temp.erpatlist, root.init);
  43. model.setValue(opener.root.list.erpatlistflag, "Y");
  44. if(reopenflag != "Y"){ //다시 열린 경우가 아니면, 기본 조회 조건 설정
  45. model.setValue("/root/main/cond/orddeptcd" , "-"); //getUserInfo("dutplcecd")); //진료과 (2008. 09.03 응급탭의 경우 전체로 조회하도록 요청 : 조범준)
  46. model.setValue("/root/main/cond/medispclid" , "-"); //getUserInfo("userid")); //의사 (2008. 09.03 응급탭의 경우 전체로 조회하도록 요청 : 조범준)
  47. model.setValue("/root/main/cond/atdoctid" , "-");
  48. model.setValue("/root/main/cond/erorddeptcd" , "-");
  49. model.setValue("/root/main/cond/ermedispclid" , "-");
  50. if (model.getValue(root.main.cond.orddeptcd) == "-") {
  51. model.makeValue("/root/init/userlist/usercombo/userid", "-");
  52. model.makeValue("/root/init/userlist/usercombo/usernm", "전체");
  53. model.makeValue("/root/init/userlist2/usercombo/userid", "-");
  54. model.makeValue("/root/init/userlist2/usercombo/usernm", "전체");
  55. model.makeValue("/root/init/eruserlist/usercombo/userid", "-");
  56. model.makeValue("/root/init/eruserlist/usercombo/usernm", "전체");
  57. } else {
  58. addComboInstance("/root/init/userlist", "userid^usernm", "-^전체", "usercombo"); //의사콤보 전체항목 추가
  59. addComboInstance("/root/init/userlist2", "userid^usernm", "-^전체", "usercombo");//의사콤보 전체항목 추가
  60. addComboInstance("/root/init/eruserlist", "userid^usernm", "-^전체", "usercombo"); //의사콤보 전체항목 추가
  61. }
  62. model.refresh();
  63. }else{ //다시 열린 경우, main에 ordtab의 condlist(화면이 닫힐때 설정된 정보)를 그대로 재설정
  64. try {
  65. model.copyNode(root.main.cond, opener.root.reopen.condlist.condlist);
  66. } catch(E) {
  67. model.setValue("/root/main/cond/orddeptcd" , getUserInfo("dutplcecd"));
  68. model.setValue("/root/main/cond/medispclid" , getUserInfo("userid"));
  69. model.setValue("/root/main/cond/atdoctid" , "-");
  70. model.setValue("/root/main/cond/erorddeptcd" , "-");
  71. model.setValue("/root/main/cond/ermedispclid" , "-");
  72. if (model.getValue(root.main.cond.orddeptcd) == "-") {
  73. model.makeValue("/root/init/userlist/usercombo/userid", "-");
  74. model.makeValue("/root/init/userlist/usercombo/usernm", "전체");
  75. model.makeValue("/root/init/userlist2/usercombo/userid", "-");
  76. model.makeValue("/root/init/userlist2/usercombo/usernm", "전체");
  77. model.makeValue("/root/init/eruserlist/usercombo/userid", "-");
  78. model.makeValue("/root/init/eruserlist/usercombo/usernm", "전체");
  79. } else {
  80. addComboInstance("/root/init/userlist", "userid^usernm", "-^전체", "usercombo"); //의사콤보 전체항목 추가
  81. addComboInstance("/root/init/userlist2", "userid^usernm", "-^전체", "usercombo");//의사콤보 전체항목 추가
  82. addComboInstance("/root/init/eruserlist", "userid^usernm", "-^전체", "usercombo"); //의사콤보 전체항목 추가
  83. }
  84. model.refresh();
  85. }
  86. model.setValue(opener.root.reopen.reopenflag, "N");
  87. mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist" , cmb_orddept.value, "0330", "", "M");
  88. addComboInstance("/root/init/userlist", "userid^usernm", "-^전체", "usercombo"); //의사콤보 전체항목 추가
  89. mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist2" , cmb_orddept.value, "0330", "", "A");
  90. addComboInstance("/root/init/userlist2", "userid^usernm", "-^전체", "usercombo"); //의사콤보 전체항목 추가
  91. mmbfGetUserComboList("/root/send/reqdata", "/root/init/eruserlist" , cmb_erorddeptcd.value, "0330");
  92. addComboInstance("/root/init/eruserlist", "userid^usernm", "-^전체", "usercombo"); //의사콤보 전체항목 추가
  93. model.refresh();
  94. }
  95. model.copyNode(opener.root.cond.erpatlist, root.main.cond);
  96. reqOrderInfoOfCol("SMMMO04400", "grd_erpatlist"); //입원환자리스트 컬럼 조회 및 설정
  97. }else if(openflag == "Y"){ //응급환자리스트 다시open
  98. model.copyNode(root.init, opener.root.temp.erpatlist);
  99. model.copyNode(root.main.cond, opener.root.cond.erpatlist);
  100. var xmlnode = model.instance1.selectSingleNode("/root/init/userscrnenvinfo/gridseq");
  101. if(xmlnode != null){
  102. var refdata = model.getValue("/root/init/userscrnenvinfo/gridseq/compsrefcnts");
  103. var sizedata = model.getValue("/root/init/userscrnenvinfo/gridseq/compssizecnts");
  104. var frozencol = model.getValue("/root/init/userscrnenvinfo/gridseq/frozencol");
  105. setOrderInfoOfCol("grd_erpatlist", refdata, sizedata, frozencol); //입원환자리스트 컬럼 설정, 기존에 조회한 내용으로 처리
  106. }
  107. }
  108. if(chngcolflag == "Y"){ //컬럼설정을 통해 재설정 한 경우, 컬럼순서를 다시 조회 처리
  109. reqOrderInfoOfCol("SMMMO04400", "grd_erpatlist"); //외래환자리스트 컬럼 조회 및 설정
  110. model.setValue(opener.root.chngcol.chngcolflag, "N");
  111. }
  112. fReqERPatList();
  113. opener.javascript.fCtrlBtnDisable(false); //응급환자리스트 조회 완료 전에 button disabled
  114. }
  115. /**
  116. * @desc : 응급실Triage
  117. * @
  118. * @param :
  119. * @return :
  120. * @author : 오지훈
  121. * @---------------------------------------------------
  122. */
  123. function fOpenERTriage(){
  124. var iRow = grd_erpatlist.row;
  125. if(iRow < 1){
  126. return;
  127. }
  128. var sa = model.getValue(sERPATLIST_PATH + "[" + iRow + "]/sa");
  129. var temp = sa.split("/");
  130. var paramstr = model.getValue(sERPATLIST_PATH + "[" + iRow + "]/pid") + "▦" +
  131. model.getValue(sERPATLIST_PATH + "[" + iRow + "]/indd") + "▦" +
  132. model.getValue(sERPATLIST_PATH + "[" + iRow + "]/cretno") + "▦" +
  133. temp[0] + "▦" +
  134. temp[1] + "▦" +
  135. model.getValue(sERPATLIST_PATH + "[" + iRow + "]/etctel1") + "▦" +
  136. model.getValue(sERPATLIST_PATH + "[" + iRow + "]/hngnm") + "▦" +
  137. model.getValue(sERPATLIST_PATH + "[" + iRow + "]/orddeptcd") + "▦" +
  138. model.getValue(sERPATLIST_PATH + "[" + iRow + "]/orddeptnm") + "▦" +
  139. model.getValue(sERPATLIST_PATH + "[" + iRow + "]/orddoctid");
  140. setParameter("SPMNE04400_param", paramstr);
  141. modal("SPMNE04400");
  142. setParameter("SPMNE04400_param", "");
  143. fReqERPatList();
  144. }
  145. /**
  146. * @desc : 응급환자리스트 조회
  147. * @
  148. * @param :
  149. * @return :
  150. * @author : 오지훈
  151. * @---------------------------------------------------
  152. */
  153. function fReqERPatList(){
  154. model.removeNodeset("/root/send/reqdata");
  155. model.makeNode("/root/send/reqdata");
  156. model.copyNode("/root/send/reqdata", "/root/main/cond");
  157. var compsrefcnts = model.getValue("/root/init/userscrnenvinfo/gridseq/compsrefcnts");
  158. var compssizecnts = model.getValue("/root/init/userscrnenvinfo/gridseq/compssizecnts");
  159. if(isNull(compsrefcnts)) compsrefcnts = "";
  160. if(isNull(compssizecnts)) compssizecnts = "";
  161. model.makeValue("/root/send/reqdata/compsrefcnts", compsrefcnts);
  162. model.makeValue("/root/send/reqdata/compssizecnts", compssizecnts);
  163. if(submit("TRMMO04401")==true){
  164. model.copyNode(opener.root.temp.erpatlist, root.init);
  165. model.copyNode(opener.root.cond.erpatlist, root.main.cond);
  166. var ercurpatcnt = grd_erpatlist.rows -1;
  167. model.makeValue("/root/main/erpatinfo/erpatcnt/ercurpatcnt", ercurpatcnt);
  168. out_curpatcnt.refresh();
  169. }
  170. var orderby = model.getValue("/root/main/cond/orderby");
  171. var sortcol = model.getValue("/root/main/cond/sortcol");
  172. if(sortcol != "" && orderby != ""){
  173. sORDERBY = orderby;
  174. //nodeListSort(grd_erpatlist.nodeset, grd_erpatlist.colAttribute(sortcol, "ref"), sORDERBY);
  175. grd_erpatlist.colsort(sortcol) = sORDERBY
  176. grd_erpatlist.sort(1, 1, grd_erpatlist.rows -1, grd_erpatlist.cols -1) = "usersort";
  177. grd_erpatlist.gridToInstance();
  178. }
  179. fChngColorERPatList(); //응급 환자 중증 상태에 따라 색깔을 변경
  180. grd_erpatlist.refresh();
  181. }
  182. /**
  183. * @desc : 환자 선택 후, 환자 정보 조회 및 기록지 화면 연동
  184. * @
  185. * @param :
  186. * @return :
  187. * @author : 오지훈
  188. * @---------------------------------------------------
  189. */
  190. function fSelectERPat(){
  191. // 환자 선택 로그 시작
  192. fStartLogCheck("fSelectERPat");
  193. var step1Elapsed = null; // 외래 환자선택 진행 가능여부 체크 시간
  194. var step2Elapsed = null; // 입원 환자선택 상단정보 설정 시간
  195. var step3Elapsed = null; // 처방+기록+그외 팝업창 처리
  196. var ordrecflag = model.getValue(opener.root.main.cond.ordrecflag);
  197. var currow = grd_erpatlist.row;
  198. if(currow < 1){
  199. return;
  200. }
  201. // 진행가능 한지 여부 체크
  202. fStartLogTempCheck("fSelectERPat_Step1");
  203. if( getGlobalVariable("able_sel_patlist", "M") == "N" ) { // 환자 선택 가능 여부 체크 2012.09.03 엄영만
  204. messageBox("현재 로그인한 '"+ getUserInfo("dutplcenm") +"' 부서는 기록저장 및 처방발행이 불가능한 부서 입니다.\n\n다시 로그인 후 진행 하십시오.","E");
  205. return false;
  206. }
  207. if(fChkArrivalTime()== false) { //응급실 콜비짓 여부에 따라 처방/기록 인증저장 제한하기 위한 값 셋팅 20100526 LYJ
  208. model.makeValue("/root/main/cond/callvisityn" , "N");
  209. parent.window.javascript.setParameter("SMMMO04100_callvisityn", "N");
  210. messageBox("응급실 Visit Time을 등록 하지 않으면 기록과 처방은 임시저장만 가능 합니다.", "E");
  211. } else {
  212. model.makeValue("/root/main/cond/callvisityn" , "Y");
  213. parent.window.javascript.setParameter("SMMMO04100_callvisityn", "Y");
  214. }
  215. //처방, CP화면에 modal 또는 modaless가 뜬 경우, 환자 선택 불가
  216. if(fChkScrnDisable()==false){
  217. return;
  218. }
  219. //변경요청(8106) : 응급간호에서 삭제처리한 환자 선택 시 blocking 메세지 처리 추가 (2009.10.09 JJE)
  220. //triage 기록지 여부 체크 전, 삭제환자 여부 체크하여 처방입력 blocking
  221. var instcd = getUserInfo("dutplceinstcd");
  222. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  223. var orddd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  224. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno");
  225. var visitno= model.getValue(sERPATLIST_PATH + "[" + currow + "]/visitno");
  226. fChkInCnclYN(pid, orddd, cretno, "C"); //return 없음, 진료기록창만 호출하므로 아래에서 컨트롤 함
  227. //응급실 의사 결정 관련 알림 팝업 엄영만 2012.07.25
  228. // 메세지 블러킹 처리 2012.08.10 추후 상황을 봐서 진행 하기로 함.
  229. var adflag = model.getValue(sERPATLIST_PATH + "[" + currow + "]/adflag"); // 입원의사결정 상태(공통코드 M0720 A:병실입원, B:병실입원(EICU), C:병실입원(응급입원실), H:귀가, D:DNR, E:기타, X:삭제)
  230. var chosdd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/chosdd"); // 내원시간
  231. if(adflag != "A" && adflag != "B" && adflag != "C" && adflag != "H" && adflag != "D") {
  232. var inDateTime = chosdd.toDate("YYYYMMDDhhmm");
  233. var currentDateTime = new Date();
  234. var sInfoHour = fGetHardCDList("Y", 544, 3); // 응급실 의사결정 정보제공 시간
  235. var sErrHour = fGetHardCDList("Y", 545, 3); // 응급실 의사결정 환자선택 불가 시간
  236. if(isNull(sInfoHour)) {
  237. sInfoHour = "12";
  238. }
  239. if(isNull(sErrHour)) {
  240. sErrHour = "24";
  241. }
  242. var checkDateTime = chosdd.toDate("YYYYMMDDhhmm").getAddDate(parseInt(sErrHour), "h"); // 입원시간 기준 4시간 이후
  243. var nDifferenceSeconde = currentDateTime.getTime() - inDateTime.getTime(); // 초 간격
  244. var nDifferenceHour = Math.floor(nDifferenceSeconde/1000/60/60); // 시간 차이
  245. var nCheckSeconde = 0;
  246. var nCheckHour = 0;
  247. var nCheckMinute = 0;
  248. if ( nDifferenceHour >= parseInt(sInfoHour) && nDifferenceHour < parseInt(sErrHour) && adflag != "E") { // 본원 4시간으로 변경 2016.11.01, 본원 12시간으로 변경 2016.05.02 엄영만
  249. nCheckSeconde = checkDateTime.getTime() - currentDateTime.getTime();
  250. nCheckHour = Math.floor(nCheckSeconde/1000/60/60); // 시간 차이
  251. nCheckMinute = Math.floor((nCheckSeconde/1000/60) % 60); // 분 차이
  252. //경고메시지(20160428 이윤주)
  253. if(messageBox("응급실 환자에 대해 내원시간 기준 "+ sErrHour +"시간이내에 입/퇴원 의사결정을 하셔야 합니다.\n입/퇴원 의사결정까지 " + nCheckHour + "시간 " + nCheckMinute + "분 남았습니다.\n\n입/퇴원 의사결정 하시겠습니까?", "Q999") == "6") {
  254. fIntensionDecision(); // 의사결정 화면 팝업후 종료 처리
  255. return;
  256. }
  257. } else if ( nDifferenceHour >= parseInt(sErrHour) ) {
  258. nCheckSeconde = currentDateTime.getTime() - checkDateTime.getTime();
  259. nCheckHour = Math.floor(nCheckSeconde/1000/60/60); // 시간 차이
  260. nCheckMinute = Math.floor((nCheckSeconde/1000/60) % 60); // 분 차이
  261. if(fContainsHardCD("342", "Y")) { // 342 입퇴원 의사 결정에 따른 처방 블러킹 여부(본원만 블러킹) : 블러킹 처리 2012.12.03 엄영만 => 20160428 이윤주 변경
  262. messageBox("응급실 환자에 대해 내원시간 기준 "+ sErrHour +"시간이내에 입/퇴원 의사결정을 하셔야 합니다.\n\n의사결정이 되지 않을경우 처방 입력이 불가하니 업무에 차질 없도록 협조 부탁 드립니다. -진료처장-\n\n정확한 입/퇴원 의사결정 시간이 " + nCheckHour +"시간 " + nCheckMinute + "분 초과 하였습니다.\n의사결정을 '기타'로 하신경우는 다른항목으로 변경 하셔야 합니다.", "I999");
  263. fIntensionDecision(); // 의사결정 화면 팝업후 종료 처리
  264. return;
  265. } else {
  266. if(messageBox("응급실 환자에 대해 내원시간 기준 "+ sErrHour +"시간이내에 입/퇴원 의사결정을 하셔야 합니다.\n정확한 입/퇴원 의사결정 시간이 " + nCheckHour +"시간 " + nCheckMinute + "분 초과 하였습니다.\n의사결정을 '기타'로 하신경우는 다른항목으로 변경 하셔야 합니다.\n\n입/퇴원 의사결정 하시겠습니까?", "Q999") == "6") {
  267. fIntensionDecision(); // 의사결정 화면 팝업후 종료 처리
  268. return;
  269. }
  270. }
  271. }
  272. }
  273. //CP환자 여부 확인
  274. if(fChkCPPatValid(currow)==false){
  275. return;
  276. }
  277. // 응급환자에 대한 중증체류시간 팝업 띄우는 부분 시작
  278. // 작성일 2010.03.09
  279. // 작성자 김광성(kskim)
  280. // 관련 xrw : SPMMO21300_중증체류시간
  281. var wndobj = getOpenWindow("SPMMO21300");
  282. var sysMessageobj = getViewer("sysMessage");
  283. if( wndobj == null ){
  284. if( !isNull( model.getValue(sERPATLIST_PATH + "[" + currow + "]/recovwardnm") ) ){
  285. var SPMMO21300_param = pid+ "▦" + orddd + "▦" + cretno + "▦" + visitno;
  286. sysMessageobj.window.javascript.setParameter("SPMMO21300_param", SPMMO21300_param);
  287. sysMessageobj.window.javascript.open("SPMMO21300",1,1280 - 300,100,"SPMMO21300", "", "", "", "", "", "" );
  288. sysMessageobj.window.javascript.getOpenWindow("SPMMO21300"); // SPMMO21300 윈도우를 열고나서 윈도우 객체를 가져옴
  289. }
  290. } else {
  291. if( !isNull( model.getValue(sERPATLIST_PATH + "[" + currow + "]/recovwardnm") ) ){
  292. var SPMMO21300_param = pid+ "▦" + orddd + "▦" + cretno + "▦" + visitno;
  293. sysMessageobj.window.javascript.setParameter("SPMMO21300_param", SPMMO21300_param);
  294. wndobj.javascript.fStartWnd(); // SPMMO21300팝업 화면 데이터 reflash기능을 담당
  295. } else {
  296. wndobj.javascript.fCloseWnd();
  297. }
  298. }
  299. // 응급환자에 대한 중증체류시간 팝업 띄우는 부분 끝. kskim
  300. // 진료기록에 수정된 사항이 있을 경우 저장할 것인지 묻는 함수 호출 : 2009. 07. 27 김영학
  301. var mainobj = getMainViewer();
  302. var mainscrnid = mainobj.javascript.getScreenID(); //메인화면의 기록지 ID
  303. if(mainscrnid == "SMMMR00100"){
  304. var prvIntRecPamInfRtn = mainobj.window.javascript.fPrevInitRecPamInfo();
  305. if(prvIntRecPamInfRtn == false){
  306. return;
  307. }// 기록지에 필수 입력사항을 입력하지 않았을 때 그냥 넘어가 버리는 오류 수정 20100305 LYJ
  308. }
  309. step1Elapsed = fEndLogTempCheck("fSelectERPat_Step1");
  310. // 상단정보 설정
  311. fStartLogTempCheck("fSelectERPat_Step2");
  312. if(!fReqERPatPamInfo()) { return; }
  313. step2Elapsed = fEndLogTempCheck("fSelectERPat_Step2");
  314. // 진료기록, 처방화면 연동
  315. fStartLogTempCheck("fSelectERPat_Step3");
  316. var recflag = opener.model.getValue("/root/main/cond/recflag");
  317. var inCnclYN = model.getValue("/root/hidden/erincnclinfo/info/incnclyn"); //응급간호 삭제 여부
  318. if (recflag == "Y" || inCnclYN == "Y") { //inCnclYN 조건 추가 (2009.10.26 by JJE)
  319. opener.javascript.fOpenPrcpMainWnd("Y");
  320. } else {
  321. opener.javascript.fOpenPrcpMainWnd("N");
  322. }
  323. step3Elapsed = fEndLogTempCheck("fSelectERPat_Step3");
  324. var recnaviyn = opener.model.getValue("/root/main/cond/recnaviyn");
  325. var mainObj = getMainViewer();
  326. var curPrcpObj = mainObj.javascript.getOpenWindow("SMMMO00100"); //활성화된 처방Main 화면 object loading
  327. if (curPrcpObj != null && recnaviyn == "N") { // 처방창이 팝업 된경우만 체크
  328. var sLogParam = "userid:" + getUserInfo("userid") + "|" // item02
  329. + "instcd:" + model.getValue(sERPATLIST_PATH + "["+ currow +"]/instcd") + "|" // item03
  330. + "pid:" + model.getValue(sERPATLIST_PATH + "["+ currow +"]/pid") + "|" // item04
  331. + "orddd:" + model.getValue(sERPATLIST_PATH + "["+ currow +"]/indd") + "|" // item05
  332. + "cretno:" + model.getValue(sERPATLIST_PATH + "["+ currow +"]/cretno") + "|" // item06
  333. + "orddeptcd:" + model.getValue(sERPATLIST_PATH + "["+ currow +"]/orddeptcd") + "|" // item07
  334. + "orddrid:" + model.getValue(sERPATLIST_PATH + "["+ currow +"]/medispclid") + "|" // item08
  335. + step1Elapsed + "|" // 진행가능 한지 여부 체크 // item09
  336. + step2Elapsed + "|" // 상단정보 // item10
  337. + step3Elapsed // 처방+기록+그외 팝업창 처리 // item11
  338. ;
  339. fEndLogCheck("fSelectERPat", sLogParam);
  340. }
  341. }
  342. /**
  343. * @desc : 응급환자 상단정보 호출
  344. * @
  345. * @param :
  346. * @return :
  347. * @author : 오지훈
  348. * @---------------------------------------------------
  349. */
  350. function fReqERPatPamInfo(){
  351. var iRow = grd_erpatlist.row;
  352. var pid = model.getValue(sERPATLIST_PATH + "[" + iRow + "]/pid");
  353. var indd = model.getValue(sERPATLIST_PATH + "[" + iRow + "]/indd");
  354. var cretno = model.getValue(sERPATLIST_PATH + "[" + iRow + "]/cretno");
  355. var instcd = model.getValue(sERPATLIST_PATH + "[" + iRow + "]/instcd");
  356. var srchdd = model.getValue("/root/main/cond/srchdd");
  357. var callvisityn = model.getValue("/root/main/cond/callvisityn"); // 응급실 콜비짓 여부 추가 20100526 LYJ
  358. var param = "E" + "▦" + pid + "▦" + indd + "▦" + cretno + "▦" + instcd + "▦" + srchdd + "▦" + callvisityn ;// 응급실 콜비짓 여부 추가 20100526 LYJ
  359. setParameter("condparam", param);
  360. modal("SPMMO08900", 1, "", "", "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  361. var useyn = getParameter("SPMMO08900_rtn_useyn");
  362. if(useyn == "Y"){
  363. setParameter("SPMMO08900_rtn_useyn", "");
  364. return true;
  365. }else{
  366. return false;
  367. }
  368. }
  369. /**
  370. * @desc : 응급실 인턴의사관리
  371. * @
  372. * @param :
  373. * @return :
  374. * @author : 오지훈
  375. * @---------------------------------------------------
  376. */
  377. function fOpenErInternMngt(){
  378. var iRow = grd_erpatlist.row;
  379. if(iRow < 1){
  380. return;
  381. }
  382. var pid = model.getValue(sERPATLIST_PATH + "[" + iRow + "]/pid");
  383. var orddd = model.getValue(sERPATLIST_PATH + "[" + iRow + "]/indd");
  384. var cretno = model.getValue(sERPATLIST_PATH + "[" + iRow + "]/cretno");
  385. var orddeptcd = model.getValue(sERPATLIST_PATH + "[" + iRow + "]/orddeptcd");
  386. var param = pid + "▦" + orddd + "▦" + cretno + "▦" + orddeptcd;
  387. setParameter("SPMMO06300_param", param);
  388. modal("SPMMO06300");
  389. fReqERPatList();
  390. }
  391. /**
  392. * @desc : 그리드 data 엑셀화일로 저장
  393. * @
  394. * @param :
  395. * @return :
  396. * @author : 오지훈
  397. * @---------------------------------------------------
  398. */
  399. function fSaveGridToExcel(){
  400. saveGridToExcel(grd_erpatlist);
  401. }
  402. /**
  403. * @desc : 응급실호출 등록 화면 Open
  404. * @
  405. * @param :
  406. * @return :
  407. * @author : 오지훈
  408. * @---------------------------------------------------
  409. */
  410. function fOpenERCallDr(){
  411. var currow = grd_erpatlist.row;
  412. if(currow < 1){
  413. return;
  414. }
  415. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  416. var orddd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  417. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno");
  418. var visitno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/visitno");
  419. var param = pid + "▦" + orddd + "▦" + cretno + "▦" + visitno;
  420. if(model.getValue("/root/init/calltime/hardcd/hardcd")=="-"){
  421. setParameter("SPMMO06700_param", param);
  422. modal("SPMMO06700");
  423. }else{
  424. setParameter("SPMMO32000_param", param);
  425. modal("SPMMO32000");
  426. }
  427. fReqERPatList();
  428. }
  429. /**
  430. * @desc : 권역외상센터호출 등록 화면 Open 2013.04.03
  431. * @
  432. * @param :
  433. * @return :
  434. * @author : 김지선
  435. * @---------------------------------------------------
  436. */
  437. function fOpenTRCallDr(){
  438. var currow = grd_erpatlist.row;
  439. if(currow < 1){
  440. return;
  441. }
  442. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  443. var nm = model.getValue(sERPATLIST_PATH + "[" + currow + "]/hngnm");
  444. var orddd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  445. var intm = model.getValue(sERPATLIST_PATH + "[" + currow + "]/intm");
  446. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno");
  447. var visitno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/visitno");
  448. var param = pid + "▦" + nm + "▦" + orddd + "▦" + intm + "▦" + cretno + "▦" + visitno;
  449. setParameter("SPMMO08000_param", param);
  450. modal("SPMMO08000");
  451. fReqERPatList();
  452. }
  453. /**
  454. * @desc : 기본구역 조회
  455. * @
  456. * @param :
  457. * @return :
  458. * @author : 오지훈
  459. * @---------------------------------------------------
  460. */
  461. function fReqSectionInfo(){
  462. model.removeNodeset("/root/send/reqdata");
  463. model.makeValue("/root/send/reqdata/baseclsflag" , "B");
  464. model.makeValue("/root/send/reqdata/supbasetypecd", "BD");
  465. submit("TRMMO04402");
  466. }
  467. /**
  468. * @desc : 응급환자 정보에 따라 그리드의 row와 cell font color변경
  469. * @
  470. * @param :
  471. * @return :
  472. * @author : 오지훈
  473. * @---------------------------------------------------
  474. */
  475. function fChngColorERPatList(){
  476. var colorflag = model.getValue("/root/init/colorflag/hardcd/hardcd");
  477. var totrow = grd_erpatlist.rows;
  478. var curcol = grd_erpatlist.colRef("serdiagflag");
  479. var currecovcol = grd_erpatlist.colRef("recovwardnm");
  480. var curadrvflag = grd_erpatlist.colRef("adrvflag");
  481. for(var rowcnt = 1 ; rowcnt < totrow ; rowcnt++){
  482. var serdiagval = model.getValue(sERPATLIST_PATH + "[" + rowcnt + "]/serdiagflag");
  483. var recovwardnm = model.getValue(sERPATLIST_PATH + "[" + rowcnt + "]/recovwardnm");
  484. var color = model.getValue(sERPATLIST_PATH + "[" + rowcnt + "]/color");
  485. var adrvcolor = model.getValue(sERPATLIST_PATH + "[" + rowcnt + "]/adrvcolor");
  486. //var adrvflag = model.getValue(sERPATLIST_PATH + "[" + rowcnt + "]/adrvflag");
  487. if(serdiagval != "-" || serdiagval != ""){
  488. serdiagval = parseInt(serdiagval);
  489. switch(serdiagval){
  490. case 1:
  491. grd_erpatlist.cellstyle("color", rowcnt, curcol) = "#ff0000";
  492. break;
  493. case 2:
  494. grd_erpatlist.cellstyle("color", rowcnt, curcol) = "#ff6600";
  495. break;
  496. case 3:
  497. grd_erpatlist.cellstyle("color", rowcnt, curcol) = "#0000ff";
  498. break;
  499. case 4:
  500. grd_erpatlist.cellstyle("color", rowcnt, curcol) = "#000000";
  501. break;
  502. case 5:
  503. grd_erpatlist.cellstyle("color", rowcnt, curcol) = "#000000";
  504. break;
  505. case 8:
  506. grd_erpatlist.cellstyle("color", rowcnt, curcol) = "#000000";
  507. break;
  508. default:
  509. grd_erpatlist.cellstyle("color", rowcnt, curcol) = "#ffffff";
  510. break;
  511. }
  512. }
  513. if (!isNull(recovwardnm )) {
  514. grd_erpatlist.cellstyle("color", rowcnt, currecovcol) = "#ff0000";
  515. }
  516. if (!isNull(adrvcolor )) {
  517. grd_erpatlist.cellstyle("color", rowcnt, curadrvflag) = "#ff0000";
  518. }
  519. grd_erpatlist.rowStyle(rowcnt, "data", "background-color") = "#" + color;
  520. }
  521. }
  522. /**
  523. * @desc : (응급)관심환자등록창 호출
  524. * @
  525. * @param :
  526. * @return :
  527. * @author : 오지훈
  528. * @---------------------------------------------------
  529. */
  530. function fCallWndConcPatRgst(){
  531. var currow = grd_erpatlist.row;
  532. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  533. var hngnm = model.getValue(sERPATLIST_PATH + "[" + currow + "]/hngnm");
  534. var indd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  535. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno");
  536. var instcd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/instcd");
  537. var seqno = "";
  538. var param = "I" + "▩" + pid + "▩" + hngnm + "▩" + indd + "▩" + cretno + "▩" + seqno + "▩" + instcd;
  539. setParameter("param", param);
  540. open("SPMMO08200");
  541. //modal("SPMMO08200");
  542. //fReqERPatList();
  543. }
  544. /**
  545. * @desc : (응급)주의요망환자창 호출
  546. * @
  547. * @param :
  548. * @return :
  549. * @author : 엄영만
  550. * @---------------------------------------------------
  551. */
  552. function fCallWndWarnPat(){
  553. var nCurRow = grd_erpatlist.row;
  554. var sPid = model.getValue(sERPATLIST_PATH + "[" + nCurRow + "]/pid");
  555. var sHngnm = model.getValue(sERPATLIST_PATH + "[" + nCurRow + "]/hngnm");
  556. setParameter("SMMMO19100_warncd" , sPid);
  557. setParameter("SMMMO19100_warnnm" , sHngnm);
  558. modal("SMMMO19100");
  559. clearParameter("SMMMO19100_warncd");
  560. clearParameter("SMMMO19100_warnnm");
  561. }
  562. /**
  563. * @desc : CP환자 여부 검사
  564. * @
  565. * @param :
  566. * @return :
  567. * @author : 오지훈
  568. * @---------------------------------------------------
  569. */
  570. function fChkCPPatValid(currow){
  571. fChkErTriagePatList();
  572. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  573. var orddd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  574. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno");
  575. var cpyn = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cpyn");
  576. var hngnm = model.getValue(sERPATLIST_PATH + "[" + currow + "]/hngnm");
  577. var orddeptcd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/orddeptcd");
  578. var ioflag = model.getValue(sERPATLIST_PATH + "[" + currow + "]/ioflag");
  579. if(isNull(orddeptcd)) orddeptcd = model.getValue("/root/main/cond/orddeptcd");
  580. if(isNull(ioflag)) ioflag = "E";
  581. model.removeNodeset("/root/send/reqdata");
  582. model.makeValue("/root/send/reqdata/pid" , pid);
  583. model.makeValue("/root/send/reqdata/orddd" , orddd);
  584. model.makeValue("/root/send/reqdata/cretno" , cretno);
  585. model.makeValue("/root/send/reqdata/hngnm" , hngnm);
  586. model.makeValue("/root/send/reqdata/prcpgenrflag", ioflag);
  587. model.makeValue("/root/send/reqdata/srchtabflag" , "E"); //대상자리스트탭 구분
  588. if(submit("TRMMO04303")==true){
  589. var cppatnode = model.instance1.selectNodes("/root/init/rsltgetdata/getdata");
  590. if(cppatnode.length < 1){ //cp적용환자 tbl에 유효한 데이터가 없는 경우
  591. model.setValue(opener.root.cpflag, "N");
  592. return true;
  593. }else{ //CP적용환자 tbl에 유효한 데이터가 있는 경우
  594. var appstat = model.getValue("/root/init/rsltgetdata/getdata/appstat");
  595. var cpgnm = model.getValue("/root/init/rsltgetdata/getdata/cpgnm");
  596. var cpgappno = model.getValue("/root/init/rsltgetdata/getdata/cpgappno");
  597. var msgcnts = model.getValue("/root/init/rsltgetdata/getdata/msgcnts");
  598. var msgflag = model.getValue("/root/init/rsltgetdata/getdata/msgflag");
  599. var prtlflagcd = model.getValue("/root/init/rsltgetdata/getdata/prtlflagcd"); //01:CP,02:CPG
  600. if(appstat == 52){
  601. //case52: 입원장 CP
  602. var rtnval = messageBox(msgcnts, msgflag);
  603. if(rtnval == 6){
  604. model.setValue(opener.root.cpflag, "X"); // CP Main open
  605. return true;
  606. }else{
  607. model.setValue(opener.root.cpflag, "N");
  608. if(fUpdtCPPatAppStatVal(41) != false && instance1.selectSingleNode(sERPATLIST_PATH + "[" + currow + "]/cpyn") != null){ //41 : CP 취소
  609. model.setValue(sERPATLIST_PATH + "[" + currow + "]/cpyn", "N");
  610. return;
  611. }else{
  612. return false;
  613. }
  614. }
  615. }else{
  616. if( prtlflagcd == "02" && isNull(appstat) && msgflag == "P" ){ //모니터링구분:대상자탐색 Case. CPG & 호출flag:Popup(appyn:평가용여부)
  617. //CPG적용대상자 알림 팝업 호출 (2009.05.04)
  618. setParameter("SMMMO041_hngnm" , hngnm);
  619. setParameter("SMMMO041_pid" , pid);
  620. setParameter("SMMMO041_cretno" , cretno);
  621. setParameter("SMMMO041_orddd" , orddd);
  622. setParameter("SMMMO041_ordtype" , ioflag);
  623. setParameter("SMMMO041_orddeptcd" , orddeptcd);
  624. setParameter("SMMMO041_slipnm" , model.getValue(root.init.rsltgetdata.getdata.msgcnts)); //cpgno▦cpghistseq▦cpgnm▦slipno▦slipnm▦valusgeyn▦valunm▦guidedocucnts
  625. setParameter("SMMMO041_cpgmntrflag", appstat); //null, SPMMP03200화면에서 cpgmntrflag(M or S)으로 따짐
  626. setParameter("SMMMO041_cpgappno" , cpgappno); //적용중인 CP가 존재하면 값이 있음
  627. setParameter("SMMMO041_cpgnm" , cpgnm); //적용중인 CP가 존재하면 값이 있음
  628. modal("SPMMP03200"); //CP대상자 알람 팝업
  629. if( cpgappno > 0 && cpgappno != getParameter("SPMMP032_cpgappno") && instance1.selectSingleNode(sERPATLIST_PATH + "[" + currow + "]/cpyn") != null){ //진행중인 CP가 있는데 팝업에서 Drop한 경우 CP여부 N으로..
  630. model.setValue(sERPATLIST_PATH + "[" + currow + "]/cpyn", "N");
  631. }
  632. if( !isNull(getParameter("SPMMP032_cpgappno")) && getParameter("SPMMP032_cpgappno") > 0 ){
  633. model.setValue(opener.root.cpflag, "Y"); //CPG적용한 경우, MGPS 호출
  634. }else{
  635. model.setValue(opener.root.cpflag, "N"); //미적용 시 처방 화면 호출
  636. }
  637. clearParameter("SPMMP032_cpgappno");
  638. clearParameter("SMMMO041_hngnm");
  639. clearParameter("SMMMO041_pid");
  640. clearParameter("SMMMO041_cretno");
  641. clearParameter("SMMMO041_orddd");
  642. clearParameter("SMMMO041_ordtype");
  643. clearParameter("SMMMO041_orddeptcd");
  644. clearParameter("SMMMO041_slipnm");
  645. clearParameter("SMMMO041_cpgmntrflag");
  646. clearParameter("SMMMO041_cpgappno");
  647. clearParameter("SMMMO041_cpgnm");
  648. return true;
  649. }else{
  650. //case 12 : D0 ~ D1 CP
  651. //그외 case : (10 : 진행중...)
  652. if( !isNull(msgcnts) && !isNull(msgflag) ){
  653. //12: D0 처방일과 == 입원일 -> Drop 유도
  654. //그외: 오늘날짜 > CP퇴원예정일 -> Drop 유도
  655. messageBox(msgcnts, msgflag);
  656. setParameter("SMMMO043_cpgappno", cpgappno); //drop 팝업에서 인식할 수 있는 param
  657. setParameter("SMMMO043_drop" , "N"); //drop 팝업에서 인식할 수 있는 param
  658. modal("SPMMP02300");
  659. model.setValue(opener.root.cpflag, "N");
  660. if( getParameter("SMMMO043_drop") == "Y" ){
  661. model.setValue(sINPATLIST_PATH + "[" + currow + "]/cpyn", "N");
  662. }else{
  663. return false;
  664. }
  665. clearParameter("SMMMO043_cpgappno");
  666. clearParameter("SMMMO043_drop");
  667. return true;
  668. }
  669. model.setValue(opener.root.cpflag, "Y");
  670. return true;
  671. }
  672. }
  673. }
  674. }
  675. }
  676. /**
  677. * @desc : CP환자 적용상태값 변경
  678. * @
  679. * @param :
  680. * @return :
  681. * @author : 오지훈
  682. * @---------------------------------------------------
  683. */
  684. function fUpdtCPPatAppStatVal(appstat){
  685. var cpgappno = model.getValue("/root/init/rsltgetdata/getdata/cpgappno");
  686. model.removeNodeset("/root/send/savedata");
  687. model.makeValue("/root/send/savedata/cpgappno", cpgappno);
  688. model.makeValue("/root/send/savedata/appstat" , appstat);
  689. if(submit("TXMMO04301")==false){
  690. return false;
  691. }
  692. }
  693. /**
  694. * @desc : 응급실의사 호출내역
  695. * @
  696. * @param :
  697. * @return :
  698. * @author :
  699. * @---------------------------------------------------
  700. */
  701. function fOpenErCallDrHist(){
  702. var currow = grd_erpatlist.row;
  703. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  704. var hngnm = model.getValue(sERPATLIST_PATH + "[" + currow + "]/hngnm");
  705. setParameter("SPMMO06800_pid", pid);
  706. setParameter("SPMMO06800_hngnm", hngnm);
  707. open("SPMMO06800");
  708. }
  709. /**
  710. * @desc : Visit Time 체크하여 처방창 오픈 유무 결정
  711. * @ 타과나 call time이 없을 경우는 처방창이 열리지만 같은과나 해당의사의 경우
  712. * @ Visit Time이 없을 경우는 처방창이 열리지 않도록 함
  713. * @param :
  714. * @return :
  715. * @author : 김영학
  716. * @---------------------------------------------------
  717. */
  718. function fChkArrivalTime() {
  719. var userdeptcd = getUserInfo("dutplcecd");
  720. var userid = getUserId();
  721. var currow = grd_erpatlist.row;
  722. var orddoctid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/orddoctid");
  723. var orddeptcd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/erorddeptcd");
  724. var erorddeptcd = model.getValue("/root/init/hardcdno/hardcd/hardcd");
  725. if (userdeptcd != erorddeptcd) { // 응급의학과가 아니면 도착시간이 없으면 처방창을 열지 못하도록 함.
  726. if (userid == orddoctid || userdeptcd == orddeptcd) { // 담당의 아이디 조건에서 과 포함함 : 2009. 07. 04)
  727. var visttm = model.getValue(sERPATLIST_PATH + "[" + currow + "]/visttm");
  728. if (visttm =="------") {
  729. return false;
  730. }
  731. }
  732. }
  733. }
  734. /**
  735. * @desc : 진료대상자 리스트 출력
  736. * @param :
  737. * @return :
  738. * @author : 김영학
  739. * @---------------------------------------------------
  740. */
  741. function fPrtPatList() {
  742. var rptid = "RPMMO04104";
  743. var desNode = "/root/main/erpatinfo/erpatlist";
  744. model.makeValue("/root/main/cond/orddeptnm", cmb_orddept.label);
  745. model.makeValue("/root/main/cond/orddrnm", combo5.label);
  746. model.makeValue("/root/main/cond/sectionnm", combo1.label);
  747. exeReportPreview(rptid, "XMLSTR", desNode);
  748. }
  749. /**
  750. * @desc : 중증응급 (마우스 오른쪽 버튼 이벤트 )
  751. * @param :
  752. * @return :
  753. * @author : 김영학
  754. * @---------------------------------------------------
  755. */
  756. function fErRecoverWardRgst() {
  757. var currow = grd_erpatlist.row;
  758. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  759. var indd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  760. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno");
  761. var hngnm = model.getValue(sERPATLIST_PATH + "[" + currow + "]/hngnm");
  762. var recovwardcd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/recovwardcd");
  763. setParameter("SPMNE04600_pid" , pid);
  764. setParameter("SPMNE04600_indd" , indd);
  765. setParameter("SPMNE04600_cretno" , cretno);
  766. setParameter("SPMNE04600_hngnm" , hngnm);
  767. setParameter("SPMNE04600_recovwardcd" , recovwardcd);
  768. modal("SPMNE04600"); // 중증응급등록
  769. fReqERPatList(); // 응급대상자 리스트 재조회
  770. }
  771. /**
  772. * @desc : 중증응급 환자조회
  773. * @param :
  774. * @return :
  775. * @author : 엄영만 2015.05.22
  776. * @---------------------------------------------------
  777. */
  778. function fErRecoverWardSrch() {
  779. open("SPMNE04700"); // 중증응급 환자조회
  780. }
  781. /**
  782. * @desc : Triage기록 작성유무
  783. * @param :
  784. * @return :
  785. * @author : 김영학
  786. * @---------------------------------------------------
  787. */
  788. function fChkErTriagePatList() {
  789. var currow = grd_erpatlist.row;
  790. var messageobj = getViewer("sysMessage");
  791. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  792. var orddd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  793. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno")
  794. var sa = model.getValue(sERPATLIST_PATH + "[" + currow + "]/sa");
  795. var hngnm = model.getValue(sERPATLIST_PATH + "[" + currow + "]/hngnm");
  796. var orddeptcd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/orddeptcd");
  797. var orddeptnm = model.getValue(sERPATLIST_PATH + "[" + currow + "]/orddeptnm");
  798. var orddrid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/orddoctid");
  799. var condparam = sa.split("/");
  800. var sex = condparam[0];
  801. var age = condparam[1];
  802. model.makeValue("/root/send/reqdata/pid" , pid);
  803. model.makeValue("/root/send/reqdata/orddd" , orddd);
  804. model.makeValue("/root/send/reqdata/cretno" , cretno);
  805. if (submit("TRMMO04403")==true) {
  806. var cnts = model.getValue("/root/hidden/pattriagelist/erpatlist/pid");
  807. if (isNull(cnts)) {
  808. if (messageBox ( "Triage 기록이 작성되지 않았습니다. \n 작성하시겠습니까?", "Q" ) == "6" ) {
  809. var param = pid + "▦" + orddd + "▦" + cretno + "▦" + sex + "▦" + age + "▦▦" + hngnm + "▦" + orddeptcd + "▦" + orddeptnm + "▦" + orddrid;
  810. messageobj.window.javascript.setParameter("SPMNE04400_param", param); //parameter
  811. curErTriageObj = getOpenWindow("SPMNE04400"); //활성화된 진료기록 화면 object loading
  812. if (curErTriageObj != null) {
  813. curErTriageObj.window.javascript.fInitialize_SPMNE04400();
  814. curErTriageObj.window.activate();
  815. } else {
  816. //messageobj.window.javascript.open("SPMNE04400", 2, null, null, "SPMNE04400", "", "", "", false);
  817. messageobj.window.javascript.open("SPMNE04400", 2, null, null, "SPMNE04400", "", "", "", false);
  818. curErTriageObj = getOpenWindow("SPMNE04400"); //활성화된 진료기록 화면 object loading
  819. curErTriageObj.window.activate();
  820. }
  821. } else {
  822. curErTriageObj = getOpenWindow("SPMNE04400"); //활성화된 진료기록 화면 object loading
  823. if (curErTriageObj != null) {
  824. curErTriageObj.javascript.button2.dispatch("DOMActivate");
  825. }
  826. }
  827. } else {
  828. curErTriageObj = getOpenWindow("SPMNE04400"); //활성화된 진료기록 화면 object loading
  829. if (curErTriageObj != null) {
  830. curErTriageObj.javascript.button2.dispatch("DOMActivate");
  831. }
  832. }
  833. }
  834. }
  835. /**
  836. * @desc : 간호 TPR 조회
  837. * @
  838. * @param :
  839. * @return :
  840. * @author :박유진 20091102
  841. * @---------------------------------------------------
  842. */
  843. function fCallCareTPRInfo(){
  844. var currow = grd_erpatlist.row;
  845. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  846. var indd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  847. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno");
  848. var instcd = getUserInfo("dutplceinstcd");
  849. setParameter("SMMNR00900_Param", "pid▦indd▦cretno▦instcd▦gbn▩" + pid + "▦" + indd + "▦" + cretno + "▦" + instcd +"▦dr▩");
  850. var curNurTprObj = getOpenWindow("SMMNR00900"); //활성화된 간호 TPR 화면 object loading
  851. if(curNurTprObj != null){ //간호 TPR 화면 refresh
  852. curNurTprObj.javascript.fInitViewer();
  853. curNurTprObj.javascript.fInitialize("init");
  854. } else {
  855. open("SMMNR00900");
  856. }
  857. }
  858. /**
  859. * @desc : 의사 스케쥴등록
  860. * @
  861. * @param :
  862. * @return :
  863. * @author :박유진
  864. * @---------------------------------------------------
  865. */
  866. function fSaveErCallVisit(){
  867. open("SPMMO30000");
  868. }
  869. /**
  870. * @desc : 중증 의사 호출
  871. * @
  872. * @param :
  873. * @return :
  874. * @author : 김영학
  875. * @---------------------------------------------------
  876. */
  877. function fOpenNurseERCallDr(){
  878. var currow = grd_erpatlist.row;
  879. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  880. var orddd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  881. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno")
  882. var visitno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/visitno")
  883. var param = pid + "▦" + orddd + "▦" + cretno + "▦" + visitno;
  884. setParameter("SMMNE05200_param", param);
  885. modal("SMMNE05200");
  886. fReqERPatList();
  887. }
  888. /**
  889. * @desc : 중증 의사 당직 관리
  890. * @
  891. * @param :
  892. * @return :
  893. * @author : 김영학
  894. * @---------------------------------------------------
  895. */
  896. function fOpenNurseERDrScheDrList() {
  897. modal("SMMNE05100");
  898. }
  899. /**
  900. * @desc : 중증의사 Visit 등록
  901. * @
  902. * @param :
  903. * @return :
  904. * @author : 김영학
  905. * @---------------------------------------------------
  906. */
  907. function fOpenNurseERVisitDr() {
  908. modal("SMMNE05300");
  909. }
  910. /**
  911. * @desc : 호출 의사 사용자 관리
  912. * @
  913. * @param :
  914. * @return :
  915. * @author : 김영학
  916. * @---------------------------------------------------
  917. */
  918. function fOpenDrList() {
  919. var bpcallyn = model.getValue("/root/init/bpcallyn/hardcd/hardcd");
  920. if ( !isNull(bpcallyn) && bpcallyn == "Y") {
  921. setParameter("SMMNE05000_bpcallyn", "Y");
  922. setParameter("SMMNE05000_param", "Y^Y^Y^Y^Y^Y^Y");
  923. } else {
  924. setParameter("SMMNE05000_bpcallyn", "N");
  925. setParameter("SMMNE05000_param", "Y^Y^Y^Y^N^Y^Y");
  926. }
  927. modal("SMMNE05000");
  928. }
  929. /**
  930. * @desc : 응급실호출 등록 화면 Open
  931. * @
  932. * @param :
  933. * @return :
  934. * @author : 오지훈
  935. * @---------------------------------------------------
  936. */
  937. function fOpenDrCallDeaction(){
  938. var currow = grd_erpatlist.row;
  939. if(currow < 1){
  940. return;
  941. }
  942. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  943. var orddd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  944. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno");
  945. var visitno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/visitno");
  946. var param = pid + "▦" + orddd + "▦" + cretno + "▦" + visitno;
  947. setParameter("SPMMO32300_param", param);
  948. modal("SPMMO32300");
  949. fReqERPatList();
  950. }
  951. /**
  952. * @desc : 응급실호출 내역추가 화면 Open
  953. * @
  954. * @param :
  955. * @return :
  956. * @author : 김소정
  957. * @---------------------------------------------------
  958. */
  959. function fOpenDrCallAddition(){
  960. var currow = grd_erpatlist.row;
  961. if(currow < 1){
  962. return;
  963. }
  964. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  965. var orddd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  966. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno");
  967. var visitno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/visitno");
  968. var param = pid + "▦" + orddd + "▦" + cretno + "▦" + visitno;
  969. setParameter("SPMMO32400_param", param);
  970. modal("SPMMO32400");
  971. fReqERPatList();
  972. }
  973. /**
  974. * @desc : 전공의 등록
  975. * @
  976. * @param :
  977. * @event : 팝업창 내 환자 적용 EVENT
  978. * @return :
  979. * @author : 오지훈
  980. * @---------------------------------------------------
  981. */
  982. function fRgstCnclAtDoct(){
  983. var mypatinfo = "";
  984. var currow = grd_erpatlist.row
  985. var deptcd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/orddeptcd");
  986. var userdeptcd = getUserInfo("dutplcecd");
  987. if (deptcd != userdeptcd) {
  988. messageBox("환자의 진료과가 다르면 담당의 적용을 할 수 없습니다.", "I");
  989. return;
  990. }
  991. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  992. var indd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  993. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno");
  994. var seqno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/seqno");
  995. var orddeptcd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/orddeptcd");
  996. var tmpstr = "▦" + pid +
  997. "▦" + indd +
  998. "▦" + cretno +
  999. "▦" + seqno +
  1000. "▦" + orddeptcd +
  1001. "▩";
  1002. mypatinfo += tmpstr;
  1003. setParameter("apntflag" , "atdoct"); //화면 적용 구분을 전공의 등록으로 적용
  1004. setParameter("mypatinfo", mypatinfo);
  1005. modal("SPMMO16200");
  1006. fReqERPatList();
  1007. }
  1008. /**
  1009. * @desc : 내 환자 적용/해제
  1010. * @
  1011. * @param :
  1012. * @event : 팝업창 내 환자 적용 EVENT
  1013. * @return :
  1014. * @author : 오지훈
  1015. * @---------------------------------------------------
  1016. */
  1017. function fRgstCnclMyPat(){
  1018. var mypatinfo = "";
  1019. var totrow = grd_erpatlist.rows;
  1020. for(var currow = 1 ; currow < totrow ; currow++){
  1021. if(grd_erpatlist.isSelected(currow)){
  1022. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  1023. var indd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  1024. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno");
  1025. var seqno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/seqno");
  1026. var deptcd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/orddeptcd");
  1027. var tmpstr = "▦" + pid + "▦" + indd + "▦" + cretno + "▦" + seqno + "▦" + deptcd + "▩" ;
  1028. mypatinfo += tmpstr;
  1029. }
  1030. }
  1031. setParameter("apntflag", "mypat"); //화면 적용 구분을 내 환자 적용
  1032. setParameter("mypatinfo", mypatinfo);
  1033. modal("SPMMO10700");
  1034. fReqERPatList();
  1035. }
  1036. /**
  1037. * @desc : 응급환자 의사결정
  1038. * @
  1039. * @param :
  1040. * @return :
  1041. * @author :
  1042. * @---------------------------------------------------
  1043. */
  1044. function fIntensionDecision(){
  1045. var currow = grd_erpatlist.row;
  1046. var pid = model.getValue("/root/main/erpatinfo/erpatlist[" + currow + "]/pid");
  1047. var hngnm = model.getValue("/root/main/erpatinfo/erpatlist[" + currow + "]/hngnm");
  1048. var indd = model.getValue("/root/main/erpatinfo/erpatlist[" + currow + "]/indd");
  1049. var cretno = model.getValue("/root/main/erpatinfo/erpatlist[" + currow + "]/cretno");
  1050. var instcd = getUserInfo("dutplceinstcd");
  1051. setParameter("SSPMMO26000_Param", pid + "▦" + hngnm + "▦" + indd + "▦" + cretno + "▦" + instcd);
  1052. modal("SPMMO26000");
  1053. if(getParameter("adflag").length > 0){
  1054. model.setValue("/root/main/erpatinfo/erpatlist[" + currow + "]/adflag",getParameter("adflag"));
  1055. grd_erpatlist.refresh();
  1056. clearParameter("adflag");
  1057. }
  1058. }
  1059. /**
  1060. * @desc : 빈병상 현황
  1061. * @
  1062. * @param :
  1063. * @return :
  1064. * @author :
  1065. * @---------------------------------------------------
  1066. */
  1067. function fEmptyBedCheck(){
  1068. setParameter("SMPMI00100_MENUPARAM", "A");
  1069. modal("SPPMI02001");
  1070. }
  1071. /**
  1072. * @desc : 입원의뢰서
  1073. * @
  1074. * @param :
  1075. * @return :
  1076. * @author :
  1077. * @---------------------------------------------------
  1078. */
  1079. function fEnterHosReq(){
  1080. var currow = grd_erpatlist.row;
  1081. var pid = model.getValue("/root/main/erpatinfo/erpatlist[" + currow + "]/pid");
  1082. setParameter("SPMMO00100_pid", pid);
  1083. modal("SPMMO00100");
  1084. var rtn = model.getValue("/root/temp/SPMMO00100_rtn");
  1085. if(rtn=="true"){ //입원결정서가 성공적으로 저장됐을시 리스트의 내용을 갱신해준다.
  1086. btn_req.dispatch("DOMActivate");
  1087. }
  1088. }
  1089. /**
  1090. * @desc : 안전사고 보고
  1091. * @param :
  1092. * @return :
  1093. * @author : 엄영만
  1094. * @---------------------------------------------------
  1095. */
  1096. function fPatQi(){
  1097. var currow = grd_erpatlist.row;
  1098. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  1099. var orddd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  1100. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno");
  1101. var ordtype = "E";
  1102. var oprsrvno = "";
  1103. setParameter("SMMQR00100_PARAM2", pid + "▦" + orddd + "▦" + cretno + "▦" + ordtype+"▦" + oprsrvno);
  1104. modal("../../../emr/qiweb/xrw/SMMQR00100", "","", "", "SMMQR00100", "", "");
  1105. }
  1106. /**
  1107. * @desc : 환자라벨출력
  1108. * @param :
  1109. * @return :
  1110. * @author : 엄영만
  1111. * @---------------------------------------------------
  1112. */
  1113. function fPrintPatLabel(){
  1114. var currow = grd_erpatlist.row;
  1115. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  1116. var patnm = model.getValue(sERPATLIST_PATH + "[" + currow + "]/hngnm");
  1117. var sexage = model.getValue(sERPATLIST_PATH + "[" + currow + "]/sa");
  1118. setParameter("SMMMB00100_scrnid", "SMMMO04100");
  1119. setParameter("SMMMB00100_pid", pid);
  1120. setParameter("SMMMB00100_patnm", patnm);
  1121. setParameter("SMMMB00100_sexage", sexage);
  1122. modal("SMMMB00100");
  1123. }