SMMMO04100.xjs 44 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/*
  3. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  4. 진료대상자리스트 ( SMMMO04100_진료대상자리스트.xfdl - JScript )
  5. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  6. */
  7. var arErrorCode = new HashArray();
  8. var interfaceAnswcnt = "";
  9. var ordtabAnswcnt = "";
  10. var curPrcpObj; // 처방 화면 window object
  11. var curCpObj; // CP화면 window object
  12. var curCpSrchObj; // CP검색 화면 window object
  13. var curExamRsltObj; // 검사결과 화면 window object
  14. var curEmrRecObj; // 진료기록 화면 window object
  15. /**
  16. * @desc : 진료대상자 리스트 화면 초기화
  17. * @
  18. * @param :
  19. * @return :
  20. * @author : 오지훈
  21. * @---------------------------------------------------
  22. */
  23. function fInitializeDone_SMMO04100(){
  24. interfaceAnswcnt = lf_mmbfGetUserEnvQuestValue("006");
  25. ordtabAnswcnt = lf_mmbfGetUserEnvQuestValue("007");
  26. /*
  27. //20091201 HJS 미니진료대상자리스트가 뜰때는 진료대상자를 닫아버린다.
  28. var curPatListMiniWnd = getOpenWindow("SPMMO04200");
  29. if ( curPatListMiniWnd != null ) {
  30. curPatListMiniWnd.javascript.fPatListMiniClose();
  31. }
  32. */
  33. var sAbleSelPatlist = fCheckAbleSelPat(); // 환자선택시 진료 가능 부서 여부 체크시 사용
  34. sysf_setGlobalVariable("able_sel_patlist", sAbleSelPatlist, "M");
  35. lf_gethardcdArrayList(new Array(
  36. "dentdept|242"
  37. ),
  38. new Array(
  39. "ds_init"
  40. )
  41. );
  42. var ordtab = sysf_getGlobalVariable("ordtab");
  43. var tabIndex = 0;
  44. if(utlf_isNull(ordtab) || ordtab.length < 1 || ordtab.split("^")[1] == "CSV:utf-8"){ //최초 open, 외래를 기본으로
  45. /*
  46. var jobposcd = getUserInfo("jobposcd");
  47. if (jobposcd == "1775" || jobposcd == "1800") {
  48. btn_in.selected = true;
  49. btn_in.dispatch("DOMActivate");
  50. } else {
  51. btn_out.selected = true;
  52. btn_out.dispatch("DOMActivate");
  53. }
  54. */
  55. var tabinfo = ordtabAnswcnt;
  56. if (tabinfo == "001") {
  57. tabIndex = 0;
  58. } else if (tabinfo == "002") {
  59. tabIndex = 1;
  60. } else if (tabinfo == "003") {
  61. tabIndex = 2;
  62. } else if (tabinfo == "004") {
  63. tabIndex = 3;
  64. } else if (tabinfo == "005") {
  65. tabIndex = 4;
  66. } else if (tabinfo == "006") {
  67. tabIndex = 5;
  68. } else {
  69. var jobposcd = sysf_getUserInfo("jobposcd");
  70. if (jobposcd == "1775" || jobposcd == "1800") {
  71. tabIndex = 1;
  72. } else {
  73. tabIndex = 0;
  74. }
  75. }
  76. }else{ //ordtab이 설정된 경우, close후 다시 열린 경우
  77. var ordtabarr = ordtab.split("^");
  78. var caseid = ordtabarr[0]; //탭정보
  79. var condlist = ordtabarr[1]; //조회조건
  80. if (caseid =="") {
  81. var tabinfo = ordtabAnswcnt;
  82. if (tabinfo == "001") {
  83. tabIndex = 0;
  84. } else if (tabinfo == "002") {
  85. tabIndex = 1;
  86. } else if (tabinfo == "003") {
  87. tabIndex = 2;
  88. } else if (tabinfo == "004") {
  89. tabIndex = 3;
  90. } else if (tabinfo == "005") {
  91. tabIndex = 4;
  92. } else if (tabinfo == "006") {
  93. tabIndex = 5;
  94. } else {
  95. tabIndex = 0;
  96. }
  97. } else if(caseid == "out"){
  98. tabIndex = 0;
  99. } else if(caseid == "in"){
  100. tabIndex = 1;
  101. } else if(caseid == "er"){
  102. tabIndex = 2;
  103. } else if(caseid == "op"){
  104. tabIndex = 3;
  105. } else if(caseid == "srch"){
  106. tabIndex = 4;
  107. } else if(caseid == "cnst"){
  108. tabIndex = 5;
  109. }
  110. ds_reopen.setColumn(0, "reopenflag", "Y");
  111. ds_reopen_condlist.loadCSV(condlist); //cond설정
  112. }
  113. changeTab(tabIndex);
  114. }
  115. function changeTab(tabIndex, bRefresh) {
  116. switch(tabIndex) {
  117. case 0:
  118. default :
  119. fClkBtnOut();
  120. break;
  121. case 1:
  122. fClkBtnIn();
  123. break;
  124. case 2:
  125. fClkBtnEr();
  126. break;
  127. case 3:
  128. fClkBtnOp();
  129. break;
  130. case 4:
  131. fClkBtnSrch();
  132. break;
  133. case 5:
  134. fClkBtnCnst();
  135. break;
  136. }
  137. if(bRefresh) {
  138. var bResetColumn = bRefresh;
  139. if(ds_chngcol.getColumn(0, "chngcolflag") == "Y")
  140. ds_chngcol.setColumn(0, "chngcolflag", "N");
  141. else
  142. bResetColumn = false;
  143. refreshReqData(tabIndex, bRefresh);
  144. } else {
  145. Tab00.tabindex = tabIndex;
  146. }
  147. }
  148. function refreshReqData(nTabIndex, bResetColumn) {
  149. var childlist = Tab00.components;
  150. var childcomp = childlist[nTabIndex];
  151. if(!utlf_isNull(childcomp)) {
  152. try {
  153. childcomp.refreshReqInterface(bResetColumn);
  154. } catch(e) {
  155. }
  156. }
  157. }
  158. /**
  159. * @desc : 처방Main 화면 Open, CP환자인 경우 CP Main 화면 Open 또는 CP검색화면 Open (CP업무 추가 2007.09.27)
  160. * @
  161. * @param :
  162. * @return :
  163. * @---------------------------------------------------
  164. */
  165. function fOpenPrcpMainWnd(sRecFlag){
  166. utlf_addLog("진료기록, 처방화면 동시 시작, fOpenPrcpMainWnd()");
  167. var cpflag = ds_root.getColumn(0, "cpflag");
  168. var pid = ds_source.getColumn(0, "pid");
  169. var ordrecflag = ds_main_cond.getColumn(0, "ordrecflag");
  170. var ordtype = utlf_isNull(this.objects["ds_paminfo"]) ? "" : ds_paminfo.getColumn(0, "ordtype");
  171. fReloadOrdWnd(pid, ordtype); //활성화된 진료관련 화면 재조회
  172. var monitorNumber = sysf_getCurrentMonitorNumber();
  173. var consulyn = ds_source.getColumn(0, "consulyn");
  174. var mainObj = frmf_getMainViewer();
  175. var curCpObj = mainObj.frmf_findPopup("SMMMP00800"); //활성화된 CP Main 화면 object loading
  176. var curPrcpObj = mainObj.frmf_findPopup("SMMMO00100"); //활성화된 처방Main 화면 object loading
  177. var curCpSrchObj = mainObj.frmf_findPopup("SPMMP01200"); //활성화된 CP 검색 화면 object loading
  178. if(sRecFlag == "Y") { // EMR에 클릭 된경우
  179. if(!utlf_isNull(curPrcpObj)) { curPrcpObj.fPrcpWndClose(); } //활성화된 처방Main 화면이 있는 경우 close
  180. if(!utlf_isNull(curCpObj)) { curCpObj.fCloseGPS(); } //활성화된 CP Main화면이 있는 경우 close
  181. if(!utlf_isNull(curCpSrchObj)){ curCpSrchObj.fCpSrchWndClose(); } //활성화된 CP검색화면이 있는 경우 close
  182. frmf_setParameter("SMMMO04100_ANSWCNT");
  183. fChngEMRScrn();// 진료기록 Open
  184. mainObj.frmf_setFocus();
  185. } else { // EMR에 체크 되지 않은경우
  186. var objArg = {};
  187. objArg.plgv_scrnId = "SMMMO04100";
  188. var answcnt = interfaceAnswcnt; // 환경설정의 질문값을 가져온다.
  189. frmf_setParameter("SMMMO04100_ANSWCNT", answcnt);
  190. if(cpflag == "N"){ //처방 Main Open
  191. // 허만호, CP화면에서 '취소' 수행 시 CPMAIN이 닫히면서 아래의 로직을 수행하지 않아 아래쪽으로 위치이동
  192. //if(!utlf_isNull(curCpObj)){curCpObj.fCloseGPS();} //활성화된 CP Main화면이 있는 경우 close. // 허만호, CP화면에서 '취소' 수행 시 CPMAIN이 닫히면서 아래의 로직을 수행하지 않아 아래쪽으로 위치이동
  193. if(!utlf_isNull(curCpSrchObj)){curCpSrchObj.fCpSrchWndClose();} //활성화된 CP검색화면이 있는 경우 close
  194. if(utlf_isNull(curPrcpObj)){ //활성화된 처방화면이 없는 경우, 신규화면을 오픈
  195. mainObj.frmf_setParameter("SMMMO00100_ordrecflag", ordrecflag);
  196. mainObj.frmf_setParameter("SMMMO00100_callvisityn", frmf_getParameter("SMMMO04100_callvisityn"));// 응급실 콜비짓 여부
  197. var sysMessageobj = frmf_getViewer("sysMessage");
  198. if (answcnt == "004"|| utlf_isNull(answcnt)) { // 처방창과 기록창 모두 오픈
  199. // 2015.03.25 기록과 처방창을 동시에 열기 위해 추가함(기존의 전처방에서 기록 띄우던 로직 제거)
  200. //20150717
  201. utlf_addLog("처방 화면 없을 때 진료메인 시작(창오픈), fOpenPrcpMainWnd(), fChngMainEMRScrn()");
  202. fChngMainEMRScrn();
  203. utlf_addLog("처방 화면 없을 때 진료메인 종료(창오픈), fOpenPrcpMainWnd(), fChngMainEMRScrn()");
  204. //20150717
  205. utlf_addLog("처방 화면 없을 때 처방 화면 시작(창오픈), fOpenPrcpMainWnd(), frmf_open(SMMMO00100)");
  206. sysMessageobj.frmf_setParameter("SMMMO04100_ANSWCNT", answcnt);
  207. sysMessageobj.frmf_open("SMMMO00100", "SMMMO00100", objArg, false, 2, null, null, 1195, 784, null, null, null, "M");
  208. utlf_addLog("처방 화면 없을 때 처방 화면 종료(창오픈), fOpenPrcpMainWnd(), frmf_open(SMMMO00100)");
  209. } else { // 기록창만 블라인드
  210. //20150717
  211. fChngMainEMRScrn();// 진료기록 Open
  212. //20150717
  213. if (ordrecflag =="Y") {
  214. frmf_clearParameter("SMMMO04100_ANSWCNT");
  215. }
  216. sysMessageobj.frmf_open("SMMMO00100", "SMMMO00100", objArg, false, 2, null, null, 1195, 784, null, null, null, "M");
  217. }
  218. mainObj.frmf_setFocus();
  219. }else{
  220. if(curPrcpObj.fPrcpSavePatList()){}
  221. // 2015.03.25 기록과 처방창을 동시에 열기 위해 순서변경함, 여기서부터 (기존의 전처방에서 기록 띄우던 로직 제거)
  222. if (consulyn=="T"){
  223. ordrecflag = "N";
  224. }
  225. if (ordrecflag =="Y") {
  226. frmf_clearParameter("SMMMO04100_ANSWCNT");
  227. }
  228. if (consulyn !="T"){
  229. //20150717
  230. utlf_addLog("처방 화면 있을 때 진료메인 시작, fOpenPrcpMainWnd(), fChngMainEMRScrn()");
  231. fChngMainEMRScrn();
  232. utlf_addLog("처방 화면 있을 때 진료메인 종료, fOpenPrcpMainWnd(), fChngMainEMRScrn()");
  233. //20150717
  234. }
  235. utlf_addLog("처방 화면 있을 때 처방 화면 재시작, fOpenPrcpMainWnd(), fXReReady()");
  236. curPrcpObj.ds_init.setColumn(0, "bfprcpload" , "N"); //전처방을 초기화한다.
  237. //20150717
  238. curPrcpObj.fXReReady(consulyn);
  239. // curPrcpObj.lf_onInitOrdListPopup();
  240. //20150717
  241. utlf_addLog("처방 화면 있을 때 처방 화면 재종료, fOpenPrcpMainWnd(), fXReReady()");
  242. //자가보유처방 조회 (최초 처방창을 열때만 호출한다.) 20100210 by LYJ
  243. if (!utlf_isNull(curPrcpObj)){
  244. curPrcpObj.fSelfHldPrcpModal();
  245. }
  246. //kimsj 처방시 미비기록 유무 확인(message) -- SMMMO00100.js, SMMMO02100.js에서 submit 실행
  247. if (!utlf_isNull(curPrcpObj)){
  248. curPrcpObj.fValidRecInfoMsg();
  249. }
  250. // 2015.03.25 기록과 처방창을 동시에 열기 위해 순서변경함, 여기까지 (기존의 전처방에서 기록 띄우던 로직 제거)
  251. // if (consulyn=="T"){
  252. // ordrecflag = "N";
  253. // }
  254. // if (ordrecflag =="Y") {
  255. // frmf_clearParameter("SMMMO04100_ANSWCNT");
  256. // }
  257. //
  258. // if (consulyn !="T"){
  259. // fChngMainEMRScrn();
  260. // }
  261. if(ordrecflag == "Y")
  262. curPrcpObj.frmf_setFocus();
  263. mainObj.frmf_setFocus();
  264. }
  265. // 처방이 로드되고 CP 닫음
  266. if(!utlf_isNull(curCpObj)){ //활성화된 CP Main화면이 있는 경우 close
  267. this.setTimer(0, 5000);
  268. }
  269. } else if(cpflag =="Y"){ //CP Main Open
  270. if(!utlf_isNull(curPrcpObj)){curPrcpObj.fPrcpWndClose();} //활성화된 처방Main화면이 있는 경우 close
  271. if(!utlf_isNull(curCpSrchObj)){curCpSrchObj.fCpSrchWndClose();} //활성화된 CP검색화면이 있는 경우 close
  272. if(utlf_isNull(curCpObj)){ //활성화된 CP화면이 없는 경우, 신규화면을 오픈
  273. mainObj.frmf_setParameter("SMMMO00100_ordrecflag", ordrecflag);
  274. var sysMessageobj = frmf_getViewer("sysMessage");
  275. mainObj.frmf_open("SMMMP00800", "SMMMP00800", objArg, false, 2, 0, 0, 1228, 942, null, null, null, "M");
  276. } else{
  277. curCpObj.fReconstruct();
  278. }
  279. }else if(cpflag =="X"){ //CP 검색 Open
  280. if(!utlf_isNull(curCpObj)){curCpObj.fCloseGPS();} //활성화된 CP Main화면이 있는 경우 close
  281. if(!utlf_isNull(curPrcpObj)){curPrcpObj.fPrcpWndClose();} //활성화된 처방Main화면이 있는 경우 close
  282. if(utlf_isNull(curCpSrchObj)){
  283. mainObj.frmf_open("SPMMP01200", "SPMMP01200", objArg, false, monitorNumber, null, null, 1195, 775, null, null, null, "M");
  284. }
  285. }
  286. if (consulyn !="T"){ //kskim 중증체류시간 화면(SPMMO21300) 닫기
  287. fCloseSPMMO21300Wnd();
  288. }
  289. }
  290. utlf_addLog("진료기록, 처방화면 동시 종료, fOpenPrcpMainWnd()");
  291. }
  292. /**
  293. * @desc : 활성화된 진료관련 화면 Reload
  294. * : 환자 변경시 활성화된 진료관련 화면 재조회
  295. * @param :
  296. * @return :
  297. * @---------------------------------------------------
  298. */
  299. function fReloadOrdWnd(sPid, sOrdType) {
  300. //활성화된 통합기록 조회 화면 object loading
  301. var mainObj = frmf_getMainViewer();
  302. var consulyn = ds_source.getColumn(0, "consulyn");
  303. var curExamRecObj = frmf_findPopup("SMMRI00400");
  304. if(!utlf_isNull(curExamRecObj)) { //통합기록 조회화면 refresh;
  305. mainObj.frmf_setParameter("SMMRI00400_param_pid" , sPid);
  306. mainObj.frmf_setParameter("SMMRI00400_param_chosflag", utlf_isNull(this.objects["ds_paminfo"]) ? "" : ds_paminfo.getColumn(0, "ordtype"));
  307. // utlf_addLog("통합기록조회 초기화 시작, fOpenPrcpMainWnd(), wndobj.fInitalize");
  308. curExamRecObj.fInitalize();
  309. // utlf_addLog("통합기록조회 초기화 종료, fOpenPrcpMainWnd(), wndobj.fInitalize");
  310. frmf_setFocusPop("SMMRI00400");
  311. }
  312. //활성화된 검사결과 화면 object loadinge
  313. var curExamRsltObj = frmf_findPopup("SMAER00800");
  314. if(!utlf_isNull(curExamRsltObj)){ //검사결과 화면 refresh;
  315. curExamRsltObj.fChangePid(sPid);
  316. /*
  317. curExamRsltObj.ds_singdata.setColumn(0, "srchpid", sPid );
  318. utlf_addLog("통합검사결과 재조회 시작, fOpenPrcpMainWnd(), curExamRsltObj.group3.grp_sea.btn_srch.onclick");
  319. curExamRsltObj.group3.grp_sea.btn_srch.onclick.fireEvent(curExamRsltObj.group3.grp_sea.btn_srch, new ClickEventInfo());
  320. utlf_addLog("통합검사결과 재조회 종료, fOpenPrcpMainWnd(), curExamRsltObj.group3.grp_sea.btn_srch.onclick");
  321. */
  322. } //검사결과 화면 refresh;
  323. //활성화된 간호 TPR 화면 object loading
  324. var curNurTprObj = frmf_findPopup("SMMNR00900");
  325. if(!utlf_isNull(curNurTprObj)){ //간호 TPR 화면 refresh : 2008-11-28 : 김영학 ;
  326. curNurTprObj.fInitialize("init");
  327. curNurTprObj.fInitViewer();
  328. curNurTprObj.lf_emrSetTimer();
  329. } //간호 TPR 화면 refresh;
  330. //활성화된 간호 TPR 화면 object loading
  331. var curNurBSEMRObj = frmf_findPopup("SMMNR02500");
  332. if(!utlf_isNull(curNurBSEMRObj)){ //혈당간호기록 refresh : 2008-12-24 : 김영학 ;
  333. curNurBSEMRObj.fInitialize("init");
  334. } //혈당간호기록 refresh;
  335. //활성화된 그래프 서식 화면 object loading
  336. var curGrphObj = frmf_findPopup("SPMRF05200");
  337. if(!utlf_isNull(curGrphObj)){ //그래프 서식 refresh : 2009-01-02 : 박민규 SW 요청 : 김영학 ;
  338. curGrphObj.fInitialize();
  339. } //그래프 서식 refresh;
  340. // [요청번호:20180905021] 성장곡선(2017) 관련 요청드립니다.
  341. var curGrphNewObj = frmf_findPopup("SPMRF06100");
  342. if(!utlf_isNull(curGrphNewObj)){
  343. curGrphNewObj.fInitialize();
  344. }
  345. //활성화된 Consult 화면 object loading
  346. var curCunsultObj = frmf_findPopup("SMMMR05000");
  347. if(!utlf_isNull(curCunsultObj) && consulyn !="T"){ // Consult refresh : 2009-02-17 : 이상현 D/L 요청 : 김영학 ;
  348. curCunsultObj.fInitalize();
  349. } // Consult refresh
  350. //활성화된 검사결과 화면 object loading
  351. var curExamRsltNewObj = frmf_findPopup("SMMMI00100");
  352. if(!utlf_isNull(curExamRsltNewObj)){ //검사결과 화면 NEW refresh;
  353. curExamRsltNewObj.ds_singdata.setColumn(0, "srchpid", sPid );
  354. utlf_addLog("통합검사결과 재조회 시작, fOpenPrcpMainWnd(), curExamRsltNewObj.group3.grp_sea.btn_srch.onclick");
  355. curExamRsltNewObj.group3.grp_sea.btn_srch.onclick.fireEvent(curExamRsltNewObj.group3.grp_sea.btn_srch, new ClickEventInfo());
  356. utlf_addLog("통합검사결과 재조회 종료, fOpenPrcpMainWnd(), curExamRsltNewObj.group3.grp_sea.btn_srch.onclick");
  357. }
  358. }
  359. /**
  360. * @desc : 처방에서 저장 후, 현 진료대상자 화면 재조회 처리(iviewer dispatch)
  361. * @
  362. * @param :
  363. * @return :
  364. * @---------------------------------------------------
  365. */
  366. function fPrcpCallPatList(){
  367. refreshReqData(Tab00.tabindex, true);
  368. }
  369. /**
  370. * @desc : 외래 tab button 클릭
  371. * @
  372. * @param :
  373. * @return :
  374. * @author : 오지훈
  375. * @---------------------------------------------------
  376. */
  377. function fClkBtnOut(){
  378. ds_main_cond.setColumn(0, "scrnid", "SMMMO04200");
  379. ds_main_cond.setColumn(0, "grdid", "grd_outpatlist");
  380. ds_main_cond.setColumn(0, "caseid", "out");
  381. //진료기록 창에 현재 진료대상자의 Tab id를 넘겨준다. 안치원 대리님 요청사항
  382. frmf_setParameter("SMMMO04100_medirec_caseid", ds_main_cond.getColumn(0, "caseid"));
  383. }
  384. /**
  385. * @desc : 입원 tab button 클릭
  386. * @
  387. * @param :
  388. * @return :
  389. * @author : 오지훈
  390. * @---------------------------------------------------
  391. */
  392. function fClkBtnIn(){
  393. ds_main_cond.setColumn(0, "scrnid", "SMMMO04300");
  394. ds_main_cond.setColumn(0, "grdid", "grd_inpatlist");
  395. ds_main_cond.setColumn(0, "caseid", "in");
  396. //진료기록 창에 현재 진료대상자의 Tab id를 넘겨준다. 안치원 대리님 요청사항
  397. frmf_setParameter("SMMMO04100_medirec_caseid", ds_main_cond.getColumn(0, "caseid"));
  398. }
  399. /**
  400. * @desc : 응급 tab button 클릭
  401. * @
  402. * @param :
  403. * @return :
  404. * @author : 오지훈
  405. * @---------------------------------------------------
  406. */
  407. function fClkBtnEr(){
  408. ds_main_cond.setColumn(0, "scrnid", "SMMMO04400");
  409. ds_main_cond.setColumn(0, "grdid", "grd_erpatlist");
  410. ds_main_cond.setColumn(0, "caseid", "er");
  411. //진료기록 창에 현재 진료대상자의 Tab id를 넘겨준다. 안치원 대리님 요청사항
  412. frmf_setParameter("SMMMO04100_medirec_caseid", ds_main_cond.getColumn(0, "caseid"));
  413. }
  414. /**
  415. * @desc : 수술 tab button 클릭
  416. * @
  417. * @param :
  418. * @return :
  419. * @author : 오지훈
  420. * @---------------------------------------------------
  421. */
  422. function fClkBtnOp(){
  423. ds_main_cond.setColumn(0, "scrnid", "SMMMO04500");
  424. ds_main_cond.setColumn(0, "grdid", "grd_oppatlist");
  425. ds_main_cond.setColumn(0, "caseid", "op");
  426. //진료기록 창에 현재 진료대상자의 Tab id를 넘겨준다. 안치원 대리님 요청사항
  427. frmf_setParameter("SMMMO04100_medirec_caseid", ds_main_cond.getColumn(0, "caseid"));
  428. }
  429. /**
  430. * @desc : 환자검색 tab button 클릭
  431. * @
  432. * @param :
  433. * @return :
  434. * @author : 오지훈
  435. * @---------------------------------------------------
  436. */
  437. function fClkBtnSrch(){
  438. ds_main_cond.setColumn(0, "scrnid", "SMMMO04700");
  439. ds_main_cond.setColumn(0, "grdid", "grd_srchpatlist");
  440. ds_main_cond.setColumn(0, "caseid", "srch");
  441. //진료기록 창에 현재 진료대상자의 Tab id를 넘겨준다. 안치원 대리님 요청사항
  442. frmf_setParameter("SMMMO04100_medirec_caseid", ds_main_cond.getColumn(0, "caseid"));
  443. }
  444. /**
  445. * @desc : 의뢰 tab button 클릭
  446. * @
  447. * @param :
  448. * @return :
  449. * @author : 오지훈
  450. * @---------------------------------------------------
  451. */
  452. function fClkBtnCnst(){
  453. ds_main_cond.setColumn(0, "scrnid", "SMMMO04800");
  454. ds_main_cond.setColumn(0, "grdid", "grd_cnstpatlist");
  455. ds_main_cond.setColumn(0, "caseid", "cnst");
  456. //진료기록 창에 현재 진료대상자의 Tab id를 넘겨준다. 안치원 대리님 요청사항
  457. frmf_setParameter("SMMMO04100_medirec_caseid", ds_main_cond.getColumn(0, "caseid"));
  458. }
  459. /**
  460. * @desc : ordtab정보 설정
  461. * : 진료대상자 close후, 다시 열리는 경우 최종 정보로 setting할 수 있게 한다.
  462. *
  463. * : ordtab구성
  464. * : 1. 진료대상자 tab id
  465. * : 2. 진료대상자 tab 조회 cond instance
  466. * : 3. 진료대상자 column설정 정보
  467. * : 4. OCS check 여부
  468. * @
  469. * @param :
  470. * @return :
  471. * @author : 오지훈
  472. * @---------------------------------------------------
  473. */
  474. function fSetOrdTabInfo(){
  475. var caseid = ds_main_cond.getColumn(0, "caseid");
  476. var condlist = eval("ds_cond_" + caseid + "patlist.saveCSV()");
  477. var ordtab = caseid + "^" + condlist;
  478. sysf_setGlobalVariable("ordtab", ordtab);
  479. }
  480. /**
  481. * @desc : 화면ID의 grid의 column 순서 조회
  482. * @
  483. * @param :
  484. * @return :
  485. * @author : 오지훈
  486. * @---------------------------------------------------
  487. */
  488. function reqOrderInfoOfCol(oInDataSet:Dataset, oOutDataSet:Dataset, scrnid, grid:Grid, compscd){
  489. oInDataSet.clearData();
  490. oInDataSet.addRow();
  491. oInDataSet.setColumn(0, "scrnid", scrnid);
  492. if (!utlf_isNull(compscd)) {
  493. oInDataSet.setColumn(0, "compscd", compscd);
  494. }
  495. var oParam = {};
  496. oParam.id = "TRMMB01103";
  497. oParam.service = "prcpbaseapp.EnvInfoMngt";
  498. oParam.method = "reqGetUserScrnEnvEstb";
  499. oParam.inds = "req=" + oInDataSet.name;
  500. oParam.outds = oOutDataSet.name + "=gridseq";
  501. oParam.async = false;
  502. tranf_submit(oParam);
  503. setOrderInfoOfCol(grid, oOutDataSet); //외래환자리스트 컬럼 설정
  504. }
  505. /**
  506. * @desc : 컬럼 순서 정보 설정
  507. * @
  508. * @param : grid ID : 그리드ID
  509. * : refdata : 그리드 ref데이터 구분자 '^'
  510. * : sizedata : 그리드 size데이터 구분자 '^'
  511. * @return :
  512. * @author : 오지훈
  513. * @---------------------------------------------------
  514. */
  515. var gridProperty = ["displaytype", "edittype", "tooltiptext", "tooltiptype", "mask", "expr",
  516. "text", "combocodecol", "combodatacol", "combodataset", "align", "background", "background2", "color", "color2", "selectcolor"];
  517. function setOrderInfoOfCol(grid:Grid, oDataSet:Dataset){
  518. if(oDataSet.rowcount <= 0)
  519. return;
  520. var refdata = oDataSet.getColumn(0, "compsrefcnts");
  521. var sizedata = oDataSet.getColumn(0, "compssizecnts");
  522. var frozencol = oDataSet.getColumn(0, "frozencol");
  523. if(utlf_isNull(refdata) || utlf_isNull(sizedata)) return;
  524. var refarr = refdata.split("^");
  525. var sizearr = sizedata.split("^");
  526. var nFrozenCols = grid.getBindCellIndex("body", frozencol);
  527. var oGridDataSet = eval(grid.binddataset);
  528. grid.enableevent = false;
  529. grid.enableredraw = false;
  530. //try {
  531. if(!utlf_isNull(nFrozenCols)) {
  532. for(var i = oGridDataSet.colcount - 1; i >= 0; i--) {
  533. if(i <= nFrozenCols)
  534. grid.setFormatColProperty(i, "band", "body");
  535. }
  536. }
  537. for(var i = 1; i < grid.getFormatColCount(); i++) {
  538. grid.setFormatColProperty(i, "size", 0);
  539. }
  540. for(var i = 0; i < refarr.length; i++) {
  541. var nCol = i;
  542. var colText = refarr[i];
  543. var col = grid.getBindCellIndex("body", colText);
  544. if(col == -1) continue;
  545. if(i != col) {
  546. var headText = grid.getCellProperty("head", col, "text");
  547. var bodyText = new Array();
  548. for(var j = 0; j < gridProperty.length; j++) {
  549. var cellval = grid.getCellProperty("body", col, gridProperty[j]);
  550. bodyText[j] = cellval;
  551. }
  552. grid.deleteContentsCol(col);
  553. nCol = grid.insertContentsCol(i);
  554. grid.setCellProperty("head", nCol, "text", headText);
  555. if(grid.name == "grd_oppatlist") { // 수술대상자 리스트 제목 왼쪽정렬
  556. grid.setCellProperty("head", nCol, "align", "left");
  557. }
  558. for(var j = 0; j < gridProperty.length; j++) {
  559. if(!utlf_isNull(bodyText[j])) {
  560. grid.setCellProperty("body", nCol, gridProperty[j], bodyText[j]);
  561. }
  562. }
  563. }
  564. grid.setFormatColProperty(nCol, "size", sizearr[i]);
  565. grid.setFormatColProperty(nCol, "band", "body");
  566. }
  567. if(!utlf_isNull(nFrozenCols)) {
  568. for(var i = 0; i < oGridDataSet.colcount; i++) {
  569. if(i <= nFrozenCols)
  570. grid.setFormatColProperty(i, "band", "left");
  571. else
  572. break;
  573. }
  574. }
  575. //} finally {
  576. grid.enableevent = true;
  577. grid.enableredraw = true;
  578. //}
  579. }
  580. /**
  581. * @desc : 컬럼설정 버튼 클릭
  582. * @
  583. * @param :
  584. * @return :
  585. * @author : 오지훈
  586. * @---------------------------------------------------
  587. */
  588. function fClkBtnSetCol(){
  589. var scrnid = ds_main_cond.getColumn(0, "scrnid");
  590. var grdid = ds_main_cond.getColumn(0, "grdid");
  591. var caseid = ds_main_cond.getColumn(0, "caseid");
  592. frmf_setParameter("SMMMO04100_param_scrnid", scrnid);
  593. frmf_setParameter("SMMMO04100_param_grdid" , grdid);
  594. frmf_setParameter("SMMMO04100_param_caseid", caseid);
  595. frmf_modal("SPMMB01100", "SPMMB01100", null, null, null, null, null, null, null, null, null, null, "M");
  596. var useyn = frmf_getParameter("SPMMB01100_rtn_useyn");
  597. if(useyn == "Y") {
  598. ds_chngcol.setColumn(0, "chngcolflag", "Y");
  599. frmf_clearParameter("SPMMB01100_rtn_useyn");
  600. // 컬럼 정보 조회하여 다시 환자조회 필요
  601. refreshReqData(Tab00.tabindex, true);
  602. }
  603. }
  604. /**
  605. * @desc : 처방화면, CP화면에 modal로 뜬 화면이 있는지 여부를 검사한다.
  606. * @
  607. * @param :
  608. * @return :
  609. * @author : 오지훈
  610. * @---------------------------------------------------
  611. */
  612. function fChkScrnDisable(){
  613. var cpflag = parent.parent.SMMMO04100_getDSRoot("cpflag"); //cpflag여부
  614. var wndobj = null;
  615. if(cpflag == "N"){
  616. wndobj = frmf_findPopup("SMMMO00100");
  617. }else if(cpflag == "Y"){
  618. wndobj = frmf_findPopup("SMMMP00800");
  619. }
  620. if(!utlf_isNull(wndobj)){
  621. var varstatus = wndobj.frmf_getScreenDisabled();
  622. if(varstatus){
  623. return false;
  624. }
  625. }
  626. return true;
  627. }
  628. /**
  629. * @desc : 환자 수술여부 및 수술처방 확인
  630. * @
  631. * @param :
  632. * @return :
  633. * @author : 오지훈
  634. * @---------------------------------------------------
  635. */
  636. function fChkPatOpPrcp(pid, stnddd, cretno){
  637. dsf_createDsRow("ds_TRMMO04109", [{col:"pid", type:"string", size:256, val:pid}
  638. ,{col:"stnddd", type:"string", size:256, val:stnddd}
  639. ,{col:"cretno", type:"string", size:256, val:cretno}]);
  640. var oParam = {};
  641. oParam.id = "TRMMO04109";
  642. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  643. oParam.method = "reqGetPatOpPrcpInfo";
  644. oParam.inds = "req=" + "ds_TRMMO04109";
  645. oParam.outds = "ds_opprcpinfo" + "=opprcpinfo";
  646. oParam.async = false;
  647. oParam.callback = "cf_TRMMO04109";
  648. tranf_submit(oParam);
  649. if(arErrorCode.pop("TRMMO04109") >= 0){
  650. var opprcpflag = ds_opprcpinfo.getColumn(0, "opprcpflag");
  651. if(opprcpflag == "N"){
  652. return false;
  653. }
  654. }
  655. return true;
  656. }
  657. function cf_TRMMO04109(sSvcId, nErrorCode, sErrorMsg) {
  658. arErrorCode.push(sSvcId, nErrorCode);
  659. }
  660. /**
  661. * @desc : CP환자 적용상태값 변경
  662. * @
  663. * @param :
  664. * @return :
  665. * @author : 오지훈
  666. * @---------------------------------------------------
  667. */
  668. function fUpdtCPPatAppStatVal(appstat){
  669. var cpgappno = ds_rsltgetdata.getColumn(0, "cpgappno");
  670. var sDsName = dsf_createDsRow("ds_req_TXMMO04301", [{col:"cpgappno", type:"int", size:256, val:cpgappno}
  671. ,{col:"appstat", type:"string", size:256, val:appstat}]);
  672. var oParam = {};
  673. oParam.id = "TXMMO04301";
  674. oParam.service = "prcpmngtapp.CPPrcpMngt";
  675. oParam.method = "reqSetCPPatStatVal";
  676. oParam.inds = "req=" + sDsName;
  677. oParam.async = false;
  678. oParam.callback = "cf_TXMMO04301";
  679. tranf_submit(oParam);
  680. dsf_deleteDs(sDsName);
  681. if(arErrorCode.pop("TXMMO04301") < 0)
  682. return false;
  683. }
  684. function cf_TXMMO04301(sSvcId, nErrorCode, sErrorMsg) {
  685. arErrorCode.push(sSvcId, nErrorCode);
  686. }
  687. function fChngEMRScrn(){
  688. //model.addLog("EMR OPEN START");
  689. var mainobj = frmf_getMainViewer();
  690. var mainscrnid = mainobj.frmf_getScreenID(); //메인화면의 기록지 ID
  691. utlf_addLog( "mainobj.frmf_getScreenID() : " + mainobj.frmf_getScreenID() + " || frmf_getScreenID() : " + frmf_getScreenID() );
  692. curFormLoaderObj = frmf_findPopup("SSMMR01100"); //활성화된 서식로더창 체크
  693. if(!utlf_isNull(curFormLoaderObj)){ //서식로더 Close : 2009-06-03 : 이상현 D/L 요청 : 김영학 ;
  694. curFormLoaderObj.fClose();
  695. } //서식로더 close()
  696. curFormLoaderObj = frmf_findPopup("SSMMR01100_4");
  697. if(!utlf_isNull(curFormLoaderObj)){
  698. curFormLoaderObj.fClose();
  699. }
  700. var cpflag = ds_root.getColumn(0, "cpflag");
  701. var ordrecflag = ds_main_cond.getColumn(0, "ordrecflag"); //OCS 체크여부
  702. //var chngflag = ds_main_cond.getColumn(0, "chngflag"); //OCS 체크여부
  703. var dutplcecd = sysf_getUserInfo("dutplcecd"); //사용자부서
  704. var operation = utlf_transNullToEmpty(sysf_getGlobalVariable("operation")); //수술정보
  705. var wndid = "SMMMR00100"; //진료기록화면이 default
  706. var objArg = {};
  707. objArg.plgv_scrnId = "SMMMO04100";
  708. if(Tab00.tabindex == 0) objArg.plgv_caseid = "out";
  709. else if(Tab00.tabindex == 1) objArg.plgv_caseid = "in";
  710. else if(Tab00.tabindex == 2) objArg.plgv_caseid = "er";
  711. else if(Tab00.tabindex == 3) objArg.plgv_caseid = "op";
  712. else if(Tab00.tabindex == 4) objArg.plgv_caseid = "srch";
  713. if(dutplcecd == "2090000000" || dutplcecd == "2090300000"){ //사용자부서가 마취통증의학과, 통증클리닉인 경우
  714. if(operation.length > 0){ //수술환자리스트에서 환자 선택된 경우, 메인화면은 '마취환자기록' loading
  715. wndid = "SMMMR03700";
  716. }
  717. }else{
  718. if(ordrecflag == "Y"){
  719. wndid = "SMMMB08100";
  720. }
  721. }
  722. //var chngflag = ds_main_cond.setColumn(0, "chngflag", "N"); //OCS 체크여부
  723. /*
  724. //20091130 HJS - 수진키 다를 경우 블러킹
  725. var pamStr = chkEmrListPaminfo();
  726. var pamKey = pamStr.split("|");
  727. setParameter("SMMMR00100_PATINFO_PID", pamKey[0]);
  728. setParameter("SMMMR00100_PATINFO_ORDDD", pamKey[1]);
  729. setParameter("SMMMR00100_PATINFO_CRETNO", pamKey[2]);
  730. */
  731. if(mainscrnid == wndid){
  732. if(wndid == "SMMMR03700"){
  733. mainobj.fFormInit();
  734. }else{
  735. utlf_addLog("진료기록 메인 화면 재시작, fChngEMRScrn(), fRecMainReady()");
  736. //20150717
  737. mainobj.fRecMainReady();
  738. //mainobj.lf_onInitOrdListPopup();
  739. //20150717
  740. utlf_addLog("진료기록 메인 화면 재시작 종료, fChngEMRScrn(), fRecMainReady()");
  741. }
  742. }else{
  743. utlf_addLog("진료기록 메인 화면 시작, fChngEMRScrn(), frmf_openForm()");
  744. mainobj.frmf_openForm(wndid, "", objArg); //진료기록
  745. utlf_addLog("진료기록 메인 화면 종료, fChngEMRScrn(), frmf_openForm()");
  746. }
  747. //kskim
  748. //중증체류시간 화면(SPMMO21300) 닫기
  749. fCloseSPMMO21300Wnd();
  750. }
  751. function fChngMainEMRScrn() {
  752. var mainobj = frmf_getMainViewer();
  753. var mainscrnid = mainobj.frmf_getScreenID(); //메인화면의 기록지 ID
  754. var cpflag = ds_root.getColumn(0, "cpflag");
  755. var consulyn = ds_source.getColumn(0, "consulyn");
  756. var curFormLoaderObj = frmf_findPopup("SSMMR01100"); //활성화된 서식로더창 체크
  757. if(!utlf_isNull(curFormLoaderObj)){ //서식로더 Close : 2009-06-03 : 이상현 D/L 요청 : 김영학 ;
  758. //knuh 20120104 최원돈 OCS 진료대상자 OCS 조회 시 환자메모를 자동으로 사라지게 설정 SMMMO04100.js, SPMMR05600.js, MMR00100.js
  759. var curMemoObj = frmf_findPopup("SPMMR05600");
  760. if(!utlf_isNull(curMemoObj)){curMemoObj.close();} //환자메모 화면 close
  761. curFormLoaderObj.fClose();
  762. } //서식로더 close()
  763. curFormLoaderObj = frmf_findPopup("SSMMR01100_4");
  764. if(!utlf_isNull(curFormLoaderObj)){
  765. curFormLoaderObj.fClose();
  766. }
  767. if (cpflag =="Y"){
  768. var curPrcpObj= frmf_findPopup("SMMMP00800");
  769. } else {
  770. var curPrcpObj= frmf_findPopup("SMMMO00100");
  771. }
  772. var ordrecflag = ds_main_cond.getColumn(0, "ordrecflag"); //OCS 체크여부
  773. if (consulyn=="T"){
  774. ordrecflag = "N"
  775. }//LYJ
  776. var chngflag = lf_getDsValue(ds_main_cond, 0, "chngflag"); //OCS 체크여부
  777. if(!utlf_isNull(mainobj)){
  778. var dutplcecd = sysf_getUserInfo("dutplcecd"); //사용자부서
  779. var operation = sysf_getGlobalVariable("operation"); //수술정보
  780. var wndid = "SMMMR00100"; //진료기록화면이 default
  781. if(dutplcecd == "2090000000" || dutplcecd == "2090300000"){ //사용자부서가 마취통증의학과, 통증클리닉인 경우
  782. if(operation.length > 0){ //수술환자리스트에서 환자 선택된 경우, 메인화면은 '마취환자기록' loading
  783. if(ordrecflag == "Y"){
  784. wndid = "SMMMB08100";
  785. }else if ("O" != ds_main_cond.getColumn(0, "recinfo")) {
  786. wndid = "SMMMR03700";
  787. }
  788. }else{
  789. if(ordrecflag == "Y"){
  790. wndid = "SMMMB08100";
  791. }
  792. }
  793. }else{
  794. if(ordrecflag == "Y"){
  795. wndid = "SMMMB08100";
  796. }
  797. }
  798. if (!utlf_isNull(curPrcpObj)) {
  799. curPrcpObj.ds_init.setColumn(0, "bfprcpload" , "Y"); //전처방화면 최초 생성 여부
  800. curPrcpObj.ds_init.setColumn(0, "fstopenflag", "N"); //처방화면이 최초 생성 여부
  801. }
  802. ds_main_cond.setColumn(0, "chngflag", "N"); //OCS 체크여부
  803. if(mainscrnid == wndid){
  804. if(wndid == "SMMMR03700"){
  805. mainobj.fFormInit();
  806. }else{
  807. utlf_addLog("진료기록 메인 화면 재시작, fChngMainEMRScrn(), fRecMainReady()");
  808. mainobj.fRecMainReady();
  809. utlf_addLog("진료기록 메인 화면 재시작 종료, fChngMainEMRScrn(), fRecMainReady()");
  810. }
  811. }else{
  812. utlf_addLog("진료기록 메인 화면 시작, fChngMainEMRScrn(), frmf_openForm()");
  813. mainobj.frmf_openForm(wndid);
  814. utlf_addLog("진료기록 메인 화면 종료, fChngMainEMRScrn(), frmf_openForm()");
  815. }
  816. }else{ //전처방화면이 최초 생성된 경우, bfprcpload를 Y로 변경, 추후 tab변경시 메인화면 변경이 되지 않게함
  817. if (!utlf_isNull(curPrcpObj)) {
  818. curPrcpObj.ds_init.setColumn(0, "bfprcpload", "Y"); //전처방화면 최초 생성 여부
  819. }
  820. }
  821. // 2015.03.25 기록과 처방창을 동시에 열기 위해 제거함, 이 부분은 따로 호출 하도록 함(기존의 전처방에서 기록 띄우던 로직 제거)
  822. // //자가보유처방 조회 (최초 처방창을 열때만 호출한다.) 20100210 by LYJ
  823. // var mainObj = frmf_getMainViewer();
  824. // var curPrcpObj = mainObj.frmf_findPopup("SMMMO00100");
  825. //
  826. // if(frmf_checkOpener() && !utlf_isNull(opener.objects["ds_hidden_selfhld"]) && opener.ds_hidden_selfhld.getColumn(0, "selfopenyn") != "Y") {
  827. // if (!utlf_isNull(curPrcpObj)){
  828. // curPrcpObj.fSelfHldPrcpModal();
  829. // }
  830. // }
  831. //
  832. // //kimsj 처방시 미비기록 유무 확인(message) -- SMMMO00100.js, SMMMO02100.js에서 submit 실행
  833. // if (!utlf_isNull(curPrcpObj)){
  834. // curPrcpObj.fValidRecInfoMsg();
  835. // }
  836. }
  837. /**
  838. * @desc : 진료대상자 출력
  839. * @
  840. * @param :
  841. * @return :
  842. * @author : 김영학
  843. * @---------------------------------------------------
  844. */
  845. function fPrtPatList() {
  846. Tab00.components[Tab00.tabindex].fPrtPatList();
  847. }
  848. /**
  849. * @desc : 중증체류시간 화면(SPMMO21300) 닫기
  850. *@author: 김광성(kskim)
  851. */
  852. function fCloseSPMMO21300Wnd(){
  853. var wndobj21300 = frmf_findPopup("SPMMO21300");
  854. var viewerSrc = Tab00.tabindex;//iviewer1.attribute("src");
  855. if( Tab00.tabindex != 2 ){ // "SMMMO04400_응급환자리스트"
  856. //alert("SMMMO04400");
  857. if( !utlf_isNull(wndobj21300) ){
  858. wndobj21300.fCloseWnd();
  859. }
  860. }
  861. }
  862. /**
  863. * @desc : 진료대상자리스트에서 더블클릭시 각 탭에서 블러킹 및 체크 용도로 사용.
  864. 로직은 추가하되 submission은 각 대상자 화면에 추가해야함.
  865. * tabkind >>> O:외래, I:입원, E:응급, OP:수술, SRCH:환자검색
  866. * @author : 한재상(maxizm)
  867. */
  868. function fChkBfPrcpLoad(tabkind) {
  869. var sChkAfterPrcpYn = lf_getHardCDList("Y", 221, 3); // 221 후인증 체크 사용여부
  870. if(sChkAfterPrcpYn == "Y") {
  871. // 1. 진료대상자에서 후인증관련 블러킹 처리. (전체탭에 대해서)
  872. ds_req_aftcert.clearData();
  873. ds_req_aftcert.addRow();
  874. ds_req_aftcert.setColumn(0, "pid", "");
  875. ds_req_aftcert.setColumn(0, "orddd", "");
  876. ds_req_aftcert.setColumn(0, "cretno", "");
  877. ds_req_aftcert.setColumn(0, "userdeptcd", sysf_getUserInfo("dutplcecd")); // 사용자 소속과
  878. ds_req_aftcert.setColumn(0, "userkind", "D"); // 의사 : "D", 그외 : "E"
  879. ds_req_aftcert.setColumn(0, "execkind", "patlist"); // 의사 : "D", 그외 : "E"
  880. ds_req_aftcert.setColumn(0, "orddrid", sysf_getUserInfo("userid"));
  881. var oParam = {};
  882. oParam.id = "TRMMO02705";
  883. oParam.service = "prcpmngtapp.PrcpMngt";
  884. oParam.method = "reqGetPatAftPrcpChk";
  885. oParam.inds = "req=" + "ds_req_aftcert";
  886. oParam.outds = "ds_aftcert" + "=aftcert";
  887. oParam.async = false;
  888. tranf_submit(oParam);
  889. if ( ds_aftcert.rowcount > 0 ) {
  890. sysf_messageBox("후인증 미비 내역이 존재합니다. 인증 후 진행하시기 바랍니다.", "C");
  891. frmf_modal("SMMMO02700", "SMMMO02700", null, null, null, null, null, null, null, null, null, null, "M");
  892. return false;
  893. }
  894. }
  895. return true;
  896. }
  897. /**
  898. * @desc : 진료대상자리스트에서 더블클릭시 환자의 정보 조회 및 체크
  899. * @ 미수금 체크(patuncoinfo), 민원환자체크(complaininfo)
  900. * @param : pid:환자번호
  901. * @return : True:계속진행, False:진행 중단
  902. * @author : 엄영만
  903. * @---------------------------------------------------
  904. */
  905. function fCheckSelectPatInfo(ioflag, pid){
  906. if (utlf_isNull(pid)) { return false; }
  907. ds_reqdata3.clearData();
  908. ds_reqdata3.addRow();
  909. ds_reqdata3.setColumn(0, "pid", pid);
  910. ds_reqdata3.setColumn(0, "ioflag", ioflag);
  911. var oParam = {};
  912. oParam.id = "TRMMO04114";
  913. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  914. oParam.method = "reqGetSelectPatInfo";
  915. oParam.inds = "req=" + "ds_reqdata3";
  916. oParam.outds = "ds_patuncoinfo=patuncoinfo" + " ds_complaininfo=complaininfo";
  917. oParam.async = false;
  918. oParam.callback = "cf_TRMMO04114";
  919. tranf_submit(oParam);
  920. if(arErrorCode.pop("TRMMO04114") < 0)
  921. return true;
  922. // 미수금 안내 메세지창 팝업
  923. if( !utlf_isNull(ds_patuncoinfo) && ds_patuncoinfo.rowcount > 0 ){
  924. var nPatUncoAmt = ds_patuncoinfo.getColumn(0, "outuncoamt");
  925. if (parseInt(nPatUncoAmt) > 0 ) {
  926. sysf_messageBox("미수금("+ nPatUncoAmt +"원)이 있으니 수납 후 진료토록 안내바랍니다.\n\n문의사항:원무과", "I");
  927. }
  928. }
  929. // 민원환자 안내 메세지창 팝업
  930. //2012/11/29 Start
  931. if(ioflag=="O" && pid !=""){ //외래일 경우만 처리
  932. var chk = ds_complaininfo.getColumn(0, "chk");
  933. if(chk=="Y"){
  934. frmf_setParameter("SPMMO50200_pid", pid);
  935. frmf_setParameter("SPMMO50200_ioflag", ioflag);
  936. frmf_modal("SPMMO50200", "SPMMO50200", null, null, null, null, null, null, null, null, null, null, "P");
  937. frmf_clearParameter("SPMMO50200_pid");
  938. frmf_clearParameter("SPMMO50200_ioflag");
  939. }
  940. }
  941. //2012/11/29 End
  942. /*
  943. var nodeComplain = instance1.selectNodes("/root/hidden/selectpatinfo/complaininfo");
  944. if( nodeComplain != null && nodeComplain.length > 0 ){
  945. var sPatName = model.getValue("/root/hidden/selectpatinfo/complaininfo/hngnm");
  946. var sOrdDate = model.getValue("/root/hidden/selectpatinfo/complaininfo/orddate");
  947. var sIoFlagNm = model.getValue("/root/hidden/selectpatinfo/complaininfo/ioflagnm");
  948. var sOfidocAcptDate = model.getValue("/root/hidden/selectpatinfo/complaininfo/ofidocacptdate");
  949. var sMsg = sPatName + "님은 "+ sIoFlagNm + "(" + sOrdDate + ") 진료받은 환자로 " + sOfidocAcptDate + " 건강보험심사평가원에\n진료비가 적정한지 여부를 요청한 민원제기 된 환자이오니 참조하여 주시기 바랍니다."
  950. if(getUserInfo("dutplceinstcd") == "031") {
  951. sMsg = sMsg + "\n\n문의사항:심사팀(6135)"
  952. } else {
  953. sMsg = sMsg + "\n\n문의사항:심사팀(2188)"
  954. }
  955. messageBox(sMsg , "I");
  956. }
  957. */
  958. return true;
  959. // modal ("SMPAM00100");
  960. }
  961. function cf_TRMMO04114(sSvcId, nErrorCode, sErrorMsg) {
  962. arErrorCode.push(sSvcId, nErrorCode);
  963. }
  964. /**
  965. * @desc : 진료대상자리스트에서 환자 선택 가능여부 조회
  966. * @ 로그인 부서를 체크하여 진료가능한 부서 인지 체크 2012.09.03
  967. * @param : pid:환자번호
  968. * @return : True:계속진행, False:진행 중단
  969. * @author : 엄영만
  970. * @---------------------------------------------------
  971. */
  972. function fCheckAbleSelPat() {
  973. var sRtn = "Y";
  974. var sUserOrdDeptYn = "Y";//lf_getHardCDList("Y", 335, 3); // 진료부서 체크 사용 여부
  975. if(sUserOrdDeptYn == "Y" ) { // 환자선택시 진료 가능 부서 여부 체크 추가 2012.09.03 엄영만
  976. lf_mmbfGetDeptCodeComboList(ds_checkselpatorddept, "O"); // 진료부서 체크 외래 부서 기준으로 체크
  977. lf_getHardCDList("N", 336, 0 , ds_checkselpatexpdept); // 336 진료부서 체크 제외 부서
  978. var sUserDeptCD = sysf_getUserInfo("dutplcecd"); // 로그인 부서
  979. var ordDeptNode = ds_checkselpatorddept.findRow("deptcd", sUserDeptCD); // 진료가능부서
  980. var expDeptNode = ds_checkselpatexpdept.findRow("hardcd", sUserDeptCD); // 진료가능부서 체크 제외 부서
  981. if( ordDeptNode == -1 && expDeptNode == -1) {
  982. sRtn = "N";
  983. }
  984. ds_checkselpatorddept.clear();
  985. ds_checkselpatexpdept.clear();
  986. }
  987. return sRtn;
  988. }
  989. /****************************************************************************************
  990. * Function : lf_loadRecAndPrcpWnd
  991. * Description : EMR, OCS 체크박스에 따라 기록 OPEN, 처방 창 OPEN
  992. * Argument :
  993. * return type :
  994. * Creater :
  995. *****************************************************************************************/
  996. function lf_loadRecAndPrcpWnd(){
  997. var ordrecflag = ds_main_cond.getColumn(0, "ordrecflag");
  998. var recflag = ds_main_cond.getColumn(0, "recflag");
  999. var chngflag = ds_main_cond.getColumn(0, "chngflag");
  1000. var prcpWndObj = frmf_findPopup("SMMMO00100");
  1001. var frmcount = 0; //총팝업화면 갯수
  1002. var viewerObj = frmf_getViewer("patientInfo");
  1003. viewerObj.lv_sCallCount = 0;
  1004. utlf_addLog("SMMMO04100 recflag : " + recflag + " || ordrecflag : " + ordrecflag);
  1005. if (recflag == "Y" && ordrecflag == "N"){ //기록만 오픈.
  1006. viewerObj.lv_sPopCount = 1;
  1007. if(!utlf_isNull(prcpWndObj)) prcpWndObj.close(); //열려있는 처방 창 닫기.
  1008. fChngEMRScrn();//lf_openRecMainWnd();
  1009. }else if (recflag == "N" && ordrecflag == "Y"){ //처방화면만 오픈
  1010. viewerObj.lv_sPopCount = 1;
  1011. lf_hideRecMainWnd(); //기록화면 숨기기.
  1012. fOpenPrcpMainWnd();
  1013. }else{ //기록, 처방화면 모두 오픈.
  1014. viewerObj.lv_sPopCount = 2;
  1015. fOpenPrcpMainWnd();
  1016. fChngEMRScrn();//lf_openRecMainWnd();
  1017. }
  1018. //진료대상자리스트 화면 뒤로 보내기
  1019. this.parent.winlevel="bottom";
  1020. if(!utlf_isNull(prcpWndObj)){
  1021. prcpWndObj.setFocus();
  1022. }
  1023. }
  1024. /****************************************************************************************
  1025. * Function : lf_hideRecMainWnd
  1026. * Description : 기록화면 숨기기
  1027. * Argument :
  1028. * return type :
  1029. * Creater :
  1030. *****************************************************************************************/
  1031. function lf_hideRecMainWnd(){
  1032. frmf_setDefaultWorkForm();
  1033. }
  1034. function fSendSmsPatList(grid:Grid, oDataSet:Dataset){
  1035. if(oDataSet.rowcount <= 0){
  1036. return;
  1037. }
  1038. ds_hidden_smsdata.clearData();
  1039. ds_hidden_smsdata.addRow();
  1040. ds_hidden_smsdata.setColumn(0,"bizabbr", "EMR");
  1041. ds_hidden_smsdata.setColumn(0,"msgcnts", "");
  1042. ds_hidden_smsdata.setColumn(0,"rsrvyn", "");
  1043. ds_hidden_smsdata.setColumn(0,"rsrvdate", "");
  1044. ds_hidden_smsdata.setColumn(0,"rsrvtime", "");
  1045. ds_hidden_smsdata.setColumn(0,"replytelno", sysf_getUserInfo("mpphonno"));
  1046. ds_hidden_smsdata_recvr.clearData();
  1047. var selectedRows = grdf_getSelectedRows(grid);
  1048. for( var i = 0 ; i < selectedRows.length ; i++) {
  1049. ds_hidden_smsdata_recvr.addRow();
  1050. ds_hidden_smsdata_recvr.setColumn(ds_hidden_smsdata_recvr.rowcount -1, "chk", "1");
  1051. ds_hidden_smsdata_recvr.setColumn(ds_hidden_smsdata_recvr.rowcount -1, "recvrnm", oDataSet.getColumn(selectedRows[i], "hngnm"));
  1052. ds_hidden_smsdata_recvr.setColumn(ds_hidden_smsdata_recvr.rowcount -1, "recvrtelno", oDataSet.getColumn(selectedRows[i], "mpphontel"));
  1053. }
  1054. var objArg = new Object();
  1055. objArg.arg_ds_main = ds_hidden_smsdata;
  1056. objArg.arg_ds_recvr = ds_hidden_smsdata_recvr;
  1057. frmf_open("SPZMS00100", "SPZMS00100", objArg, "","1", "700", "400", "", "", "", "", "","M");
  1058. }
  1059. ]]></Script>