SMMMO04100.xjs 34 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003
  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(){
  166. var cpflag = ds_root.getColumn(0, "cpflag");
  167. var pid = ds_source.getColumn(0, "pid");
  168. var ordrecflag = ds_main_cond.getColumn(0, "ordrecflag");
  169. var mainObj = frmf_getMainViewer();
  170. var monitorNumber = sysf_getCurrentMonitorNumber();
  171. var consulyn = ds_source.getColumn(0, "consulyn");
  172. curEmrRecObj = frmf_findPopup("SMMRI00400"); //활성화된 진료기록 화면 object loading
  173. curExamRsltObj = frmf_findPopup("SMAER00800"); //활성화된 검사결과 화면 object loading
  174. curNurTprObj = frmf_findPopup("SMMNR00900"); //활성화된 간호 TPR 화면 object loading
  175. curNurBSEMRObj = frmf_findPopup("SMMNR02500"); //활성화된 간호 TPR 화면 object loading
  176. curGrphObj = frmf_findPopup("SPMRF05200"); //활성화된 그래프 서식 화면 object loading
  177. curCunsultObj = frmf_findPopup("SMMMR05000"); //활성화된 Consult 화면 object loading
  178. curExamRsltNewObj = frmf_findPopup("SMMMI00100"); //활성화된 검사결과 화면 object loading
  179. var wndobj = frmf_findPopup("SMMRI00400");
  180. if(!utlf_isNull(wndobj)){
  181. frmf_setParameter("SMMRI00400_param_pid" , pid);
  182. frmf_setParameter("SMMRI00400_param_chosflag", utlf_isNull(this.objects["ds_paminfo"]) ? "" : ds_paminfo.getColumn(0, "ordtype"));
  183. wndobj.fInitalize(); // 초기화함수 호출
  184. frmf_setFocusPop("SMMRI00400");
  185. }
  186. if(!utlf_isNull(curExamRsltObj)){ //검사결과 화면 refresh;
  187. curExamRsltObj.ds_singdata.setColumn(0, "srchpid", pid );
  188. curExamRsltObj.btn_srch.onclick.fireEvent(btn_srch, new ClickEventInfo());
  189. } //검사결과 화면 refresh;
  190. if(!utlf_isNull(curNurTprObj)){ //간호 TPR 화면 refresh : 2008-11-28 : 김영학 ;
  191. curNurTprObj.fInitViewer();
  192. curNurTprObj.fInitialize("init");
  193. } //간호 TPR 화면 refresh;
  194. if(!utlf_isNull(curNurBSEMRObj)){ //혈당간호기록 refresh : 2008-12-24 : 김영학 ;
  195. curNurBSEMRObj.fInitialize("init");
  196. } //혈당간호기록 refresh;
  197. if(!utlf_isNull(curGrphObj)){ //그래프 서식 refresh : 2009-01-02 : 박민규 SW 요청 : 김영학 ;
  198. curGrphObj.fInitialize();
  199. } //그래프 서식 refresh;
  200. if(!utlf_isNull(curCunsultObj) && consulyn !="T"){ // Consult refresh : 2009-02-17 : 이상현 D/L 요청 : 김영학 ;
  201. curCunsultObj.fInitalize();
  202. } // Consult refresh
  203. if(!utlf_isNull(curExamRsltNewObj)){ //검사결과 화면 NEW refresh;
  204. curExamRsltNewObj.ds_singdata.setColumn(0, "srchpid", pid );
  205. curExamRsltNewObj.btn_srch.onclick.fireEvent(btn_srch, new ClickEventInfo());
  206. }
  207. curCpObj = mainObj.frmf_findPopup("SMMMP00800"); //활성화된 CP Main 화면 object loading
  208. curPrcpObj = mainObj.frmf_findPopup("SMMMO00100"); //활성화된 처방Main 화면 object loading
  209. curCpSrchObj = mainObj.frmf_findPopup("SPMMP01200"); //활성화된 CP 검색 화면 object loading
  210. var answcnt = interfaceAnswcnt; // 환경설정의 질문값을 가져온다.
  211. frmf_setParameter("SMMMO04100_ANSWCNT", answcnt);
  212. if(cpflag == "N"){ //처방 Main Open
  213. if(!utlf_isNull(curCpObj)){curCpObj.fCloseGPS();} //활성화된 CP Main화면이 있는 경우 close
  214. if(!utlf_isNull(curCpSrchObj)){curCpSrchObj.fCpSrchWndClose();} //활성화된 CP검색화면이 있는 경우 close
  215. if(utlf_isNull(curPrcpObj)){ //활성화된 처방화면이 없는 경우, 신규화면을 오픈
  216. mainObj.frmf_setParameter("SMMMO00100_ordrecflag", ordrecflag);
  217. mainObj.frmf_setParameter("SMMMO00100_callvisityn", frmf_getParameter("SMMMO04100_callvisityn"));// 응급실 콜비짓 여부
  218. var sysMessageobj = frmf_getViewer("sysMessage");
  219. if (answcnt == "004"|| answcnt =="") { // 처방창과 기록창 모두 오픈
  220. sysMessageobj.frmf_setParameter("SMMMO04100_ANSWCNT", answcnt);
  221. sysMessageobj.frmf_open("SMMMO00100", "SMMMO00100", null, false, 2, null, null, 1195, 784, null, null, null, "M");
  222. } else { // 기록창만 블라인드
  223. fChngMainEMRScrn();// 진료기록 Open
  224. if (ordrecflag =="Y") {
  225. frmf_clearParameter("SMMMO04100_ANSWCNT");
  226. }
  227. sysMessageobj.frmf_open("SMMMO00100", "SMMMO00100", null, false, 2, null, null, 1195, 784, null, null, null, "M");
  228. }
  229. mainObj.frmf_setFocus();
  230. }else{
  231. if(curPrcpObj.fPrcpSavePatList()){}
  232. curPrcpObj.ds_init.setColumn(0, "bfprcpload" , "N"); //전처방을 초기화한다.
  233. curPrcpObj.fXReReady(consulyn);
  234. if (consulyn=="T"){
  235. ordrecflag = "N";
  236. }
  237. if (ordrecflag =="Y") {
  238. frmf_clearParameter("SMMMO04100_ANSWCNT");
  239. }
  240. if (consulyn !="T"){
  241. fChngMainEMRScrn();
  242. }
  243. if(ds_main_cond.getColumn("recflag") == "Y")
  244. mainObj.frmf_setFocus();
  245. else
  246. curPrcpObj.frmf_setFocus();
  247. }
  248. } else if(cpflag =="Y"){ //CP Main Open
  249. if(!utlf_isNull(curPrcpObj)){curPrcpObj.fPrcpWndClose();} //활성화된 처방Main화면이 있는 경우 close
  250. if(!utlf_isNull(curCpSrchObj)){curCpSrchObj.fCpSrchWndClose();} //활성화된 CP검색화면이 있는 경우 close
  251. if(utlf_isNull(curCpObj)){ //활성화된 CP화면이 없는 경우, 신규화면을 오픈
  252. mainObj.frmf_setParameter("SMMMO00100_ordrecflag", ordrecflag);
  253. var sysMessageobj = frmf_getViewer("sysMessage");
  254. mainObj.frmf_open("SMMMP00800", "SMMMP00800", null, false, 2, 0, 0, 1228, 942, null, null, null, "M");
  255. } else{
  256. curCpObj.fReconstruct();
  257. }
  258. }else if(cpflag =="X"){ //CP 검색 Open
  259. if(!utlf_isNull(curCpObj)){curCpObj.fCloseGPS();} //활성화된 CP Main화면이 있는 경우 close
  260. if(!utlf_isNull(curPrcpObj)){curPrcpObj.fPrcpWndClose();} //활성화된 처방Main화면이 있는 경우 close
  261. if(utlf_isNull(curCpSrchObj)){
  262. mainObj.frmf_open("SPMMP01200", "SPMMP01200", null, false, monitorNumber, null, null, 1195, 775, null, null, null, "M");
  263. }
  264. }
  265. if (consulyn !="T"){ //kskim 중증체류시간 화면(SPMMO21300) 닫기
  266. fCloseSPMMO21300Wnd();
  267. }
  268. }
  269. /**
  270. * @desc : 처방에서 저장 후, 현 진료대상자 화면 재조회 처리(iviewer dispatch)
  271. * @
  272. * @param :
  273. * @return :
  274. * @---------------------------------------------------
  275. */
  276. function fPrcpCallPatList(){
  277. refreshReqData(Tab00.tabindex, true);
  278. }
  279. /**
  280. * @desc : 외래 tab button 클릭
  281. * @
  282. * @param :
  283. * @return :
  284. * @author : 오지훈
  285. * @---------------------------------------------------
  286. */
  287. function fClkBtnOut(){
  288. ds_main_cond.setColumn(0, "scrnid", "SMMMO04200");
  289. ds_main_cond.setColumn(0, "grdid", "grd_outpatlist");
  290. ds_main_cond.setColumn(0, "caseid", "out");
  291. //진료기록 창에 현재 진료대상자의 Tab id를 넘겨준다. 안치원 대리님 요청사항
  292. frmf_setParameter("SMMMO04100_medirec_caseid", ds_main_cond.getColumn(0, "caseid"));
  293. }
  294. /**
  295. * @desc : 입원 tab button 클릭
  296. * @
  297. * @param :
  298. * @return :
  299. * @author : 오지훈
  300. * @---------------------------------------------------
  301. */
  302. function fClkBtnIn(){
  303. ds_main_cond.setColumn(0, "scrnid", "SMMMO04300");
  304. ds_main_cond.setColumn(0, "grdid", "grd_inpatlist");
  305. ds_main_cond.setColumn(0, "caseid", "in");
  306. //진료기록 창에 현재 진료대상자의 Tab id를 넘겨준다. 안치원 대리님 요청사항
  307. frmf_setParameter("SMMMO04100_medirec_caseid", ds_main_cond.getColumn(0, "caseid"));
  308. }
  309. /**
  310. * @desc : 응급 tab button 클릭
  311. * @
  312. * @param :
  313. * @return :
  314. * @author : 오지훈
  315. * @---------------------------------------------------
  316. */
  317. function fClkBtnEr(){
  318. ds_main_cond.setColumn(0, "scrnid", "SMMMO04400");
  319. ds_main_cond.setColumn(0, "grdid", "grd_erpatlist");
  320. ds_main_cond.setColumn(0, "caseid", "er");
  321. //진료기록 창에 현재 진료대상자의 Tab id를 넘겨준다. 안치원 대리님 요청사항
  322. frmf_setParameter("SMMMO04100_medirec_caseid", ds_main_cond.getColumn(0, "caseid"));
  323. }
  324. /**
  325. * @desc : 수술 tab button 클릭
  326. * @
  327. * @param :
  328. * @return :
  329. * @author : 오지훈
  330. * @---------------------------------------------------
  331. */
  332. function fClkBtnOp(){
  333. ds_main_cond.setColumn(0, "scrnid", "SMMMO04500");
  334. ds_main_cond.setColumn(0, "grdid", "grd_oppatlist");
  335. ds_main_cond.setColumn(0, "caseid", "op");
  336. //진료기록 창에 현재 진료대상자의 Tab id를 넘겨준다. 안치원 대리님 요청사항
  337. frmf_setParameter("SMMMO04100_medirec_caseid", ds_main_cond.getColumn(0, "caseid"));
  338. }
  339. /**
  340. * @desc : 환자검색 tab button 클릭
  341. * @
  342. * @param :
  343. * @return :
  344. * @author : 오지훈
  345. * @---------------------------------------------------
  346. */
  347. function fClkBtnSrch(){
  348. ds_main_cond.setColumn(0, "scrnid", "SMMMO04700");
  349. ds_main_cond.setColumn(0, "grdid", "grd_srchpatlist");
  350. ds_main_cond.setColumn(0, "caseid", "srch");
  351. //진료기록 창에 현재 진료대상자의 Tab id를 넘겨준다. 안치원 대리님 요청사항
  352. frmf_setParameter("SMMMO04100_medirec_caseid", ds_main_cond.getColumn(0, "caseid"));
  353. }
  354. /**
  355. * @desc : 의뢰 tab button 클릭
  356. * @
  357. * @param :
  358. * @return :
  359. * @author : 오지훈
  360. * @---------------------------------------------------
  361. */
  362. function fClkBtnCnst(){
  363. ds_main_cond.setColumn(0, "scrnid", "SMMMO04800");
  364. ds_main_cond.setColumn(0, "grdid", "grd_cnstpatlist");
  365. ds_main_cond.setColumn(0, "caseid", "cnst");
  366. //진료기록 창에 현재 진료대상자의 Tab id를 넘겨준다. 안치원 대리님 요청사항
  367. frmf_setParameter("SMMMO04100_medirec_caseid", ds_main_cond.getColumn(0, "caseid"));
  368. }
  369. /**
  370. * @desc : ordtab정보 설정
  371. * : 진료대상자 close후, 다시 열리는 경우 최종 정보로 setting할 수 있게 한다.
  372. *
  373. * : ordtab구성
  374. * : 1. 진료대상자 tab id
  375. * : 2. 진료대상자 tab 조회 cond instance
  376. * : 3. 진료대상자 column설정 정보
  377. * : 4. OCS check 여부
  378. * @
  379. * @param :
  380. * @return :
  381. * @author : 오지훈
  382. * @---------------------------------------------------
  383. */
  384. function fSetOrdTabInfo(){
  385. var caseid = ds_main_cond.getColumn(0, "caseid");
  386. var condlist = eval("ds_cond_" + caseid + "patlist.saveCSV()");
  387. var ordtab = caseid + "^" + condlist;
  388. sysf_setGlobalVariable("ordtab", ordtab);
  389. }
  390. /**
  391. * @desc : 화면ID의 grid의 column 순서 조회
  392. * @
  393. * @param :
  394. * @return :
  395. * @author : 오지훈
  396. * @---------------------------------------------------
  397. */
  398. function reqOrderInfoOfCol(oInDataSet:Dataset, oOutDataSet:Dataset, scrnid, grid:Grid, compscd){
  399. oInDataSet.clearData();
  400. oInDataSet.addRow();
  401. oInDataSet.setColumn(0, "scrnid", scrnid);
  402. if (!utlf_isNull(compscd)) {
  403. oInDataSet.setColumn(0, "compscd", compscd);
  404. }
  405. var oParam = {};
  406. oParam.id = "TRMMB01103";
  407. oParam.service = "prcpbaseapp.EnvInfoMngt";
  408. oParam.method = "reqGetUserScrnEnvEstb";
  409. oParam.inds = "req=" + oInDataSet.name;
  410. oParam.outds = oOutDataSet.name + "=gridseq";
  411. oParam.async = false;
  412. tranf_submit(oParam);
  413. setOrderInfoOfCol(grid, oOutDataSet); //외래환자리스트 컬럼 설정
  414. }
  415. /**
  416. * @desc : 컬럼 순서 정보 설정
  417. * @
  418. * @param : grid ID : 그리드ID
  419. * : refdata : 그리드 ref데이터 구분자 '^'
  420. * : sizedata : 그리드 size데이터 구분자 '^'
  421. * @return :
  422. * @author : 오지훈
  423. * @---------------------------------------------------
  424. */
  425. var gridProperty = ["displaytype", "edittype", "tooltiptext", "tooltiptype", "mask", "expr",
  426. "text", "combocodecol", "combodatacol", "combodataset", "align", "background", "background2"];
  427. function setOrderInfoOfCol(grid:Grid, oDataSet:Dataset){
  428. if(oDataSet.rowcount <= 0)
  429. return;
  430. var refdata = oDataSet.getColumn(0, "compsrefcnts");
  431. var sizedata = oDataSet.getColumn(0, "compssizecnts");
  432. var frozencol = oDataSet.getColumn(0, "frozencol");
  433. if(utlf_isNull(refdata) || utlf_isNull(sizedata)) return;
  434. var refarr = refdata.split("^");
  435. var sizearr = sizedata.split("^");
  436. var nFrozenCols = grid.getBindCellIndex("body", frozencol);
  437. var oGridDataSet = eval(grid.binddataset);
  438. grid.enableevent = false;
  439. grid.enableredraw = false;
  440. //try {
  441. if(!utlf_isNull(nFrozenCols)) {
  442. for(var i = oGridDataSet.colcount - 1; i >= 0; i--) {
  443. if(i <= nFrozenCols)
  444. grid.setFormatColProperty(i, "band", "body");
  445. }
  446. }
  447. for(var i = 0; i < refarr.length; i++) {
  448. var nCol = i;
  449. var colText = refarr[i];
  450. var col = grid.getBindCellIndex("body", colText);
  451. if(col == -1) continue;
  452. if(i != col) {
  453. var headText = grid.getCellProperty("head", col, "text");
  454. var bodyText = new Array();
  455. for(var j = 0; j < gridProperty.length; j++) {
  456. var cellval = grid.getCellProperty("body", col, gridProperty[j]);
  457. bodyText[j] = cellval;
  458. }
  459. grid.deleteContentsCol(col);
  460. nCol = grid.insertContentsCol(i);
  461. grid.setCellProperty("head", nCol, "text", headText);
  462. for(var j = 0; j < gridProperty.length; j++) {
  463. if(!utlf_isNull(bodyText[j])) {
  464. grid.setCellProperty("body", nCol, gridProperty[j], bodyText[j]);
  465. }
  466. }
  467. }
  468. grid.setFormatColProperty(nCol, "size", sizearr[i]);
  469. grid.setFormatColProperty(nCol, "band", "body");
  470. }
  471. if(!utlf_isNull(nFrozenCols)) {
  472. for(var i = 0; i < oGridDataSet.colcount; i++) {
  473. if(i <= nFrozenCols)
  474. grid.setFormatColProperty(i, "band", "left");
  475. else
  476. break;
  477. }
  478. }
  479. //} finally {
  480. grid.enableevent = true;
  481. grid.enableredraw = true;
  482. //}
  483. }
  484. /**
  485. * @desc : 컬럼설정 버튼 클릭
  486. * @
  487. * @param :
  488. * @return :
  489. * @author : 오지훈
  490. * @---------------------------------------------------
  491. */
  492. function fClkBtnSetCol(){
  493. var scrnid = ds_main_cond.getColumn(0, "scrnid");
  494. var grdid = ds_main_cond.getColumn(0, "grdid");
  495. var caseid = ds_main_cond.getColumn(0, "caseid");
  496. frmf_setParameter("SMMMO04100_param_scrnid", scrnid);
  497. frmf_setParameter("SMMMO04100_param_grdid" , grdid);
  498. frmf_setParameter("SMMMO04100_param_caseid", caseid);
  499. frmf_modal("SPMMB01100", "SPMMB01100", null, null, null, null, null, null, null, null, null, null, "M");
  500. var useyn = frmf_getParameter("SPMMB01100_rtn_useyn");
  501. if(useyn == "Y") {
  502. ds_chngcol.setColumn(0, "chngcolflag", "Y");
  503. frmf_clearParameter("SPMMB01100_rtn_useyn");
  504. // 컬럼 정보 조회하여 다시 환자조회 필요
  505. refreshReqData(Tab00.tabindex, true);
  506. }
  507. }
  508. /**
  509. * @desc : 처방화면, CP화면에 modal로 뜬 화면이 있는지 여부를 검사한다.
  510. * @
  511. * @param :
  512. * @return :
  513. * @author : 오지훈
  514. * @---------------------------------------------------
  515. */
  516. function fChkScrnDisable(){
  517. var cpflag = parent.parent.SMMMO04100_getDSRoot("cpflag"); //cpflag여부
  518. var wndobj = null;
  519. if(cpflag == "N"){
  520. wndobj = frmf_findPopup("SMMMO00100");
  521. }else if(cpflag == "Y"){
  522. wndobj = frmf_findPopup("SMMMP00800");
  523. }
  524. if(!utlf_isNull(wndobj)){
  525. var varstatus = wndobj.frmf_getScreenDisabled();
  526. if(!varstatus){
  527. return false;
  528. }
  529. }
  530. return true;
  531. }
  532. /**
  533. * @desc : 환자 수술여부 및 수술처방 확인
  534. * @
  535. * @param :
  536. * @return :
  537. * @author : 오지훈
  538. * @---------------------------------------------------
  539. */
  540. function fChkPatOpPrcp(pid, stnddd, cretno){
  541. dsf_createDsRow("ds_TRMMO04109", [{col:"pid", type:"string", size:256, val:pid}
  542. ,{col:"stnddd", type:"string", size:256, val:stnddd}
  543. ,{col:"cretno", type:"string", size:256, val:cretno}]);
  544. var oParam = {};
  545. oParam.id = "TRMMO04109";
  546. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  547. oParam.method = "reqGetPatOpPrcpInfo";
  548. oParam.inds = "req=" + "ds_TRMMO04109";
  549. oParam.outds = "ds_opprcpinfo" + "=opprcpinfo";
  550. oParam.async = false;
  551. oParam.callback = "cf_TRMMO04109";
  552. tranf_submit(oParam);
  553. if(arErrorCode.pop("TRMMO04109") >= 0){
  554. var opprcpflag = ds_opprcpinfo.getColumn(0, "opprcpflag");
  555. if(opprcpflag == "N"){
  556. return false;
  557. }
  558. }
  559. return true;
  560. }
  561. function cf_TRMMO04109(sSvcId, nErrorCode, sErrorMsg) {
  562. arErrorCode.push(sSvcId, nErrorCode);
  563. }
  564. /**
  565. * @desc : CP환자 적용상태값 변경
  566. * @
  567. * @param :
  568. * @return :
  569. * @author : 오지훈
  570. * @---------------------------------------------------
  571. */
  572. function fUpdtCPPatAppStatVal(appstat){
  573. var cpgappno = ds_rsltgetdata.getColumn(0, "cpgappno");
  574. var sDsName = dsf_createDsRow("ds_req_TXMMO04301", [{col:"cpgappno", type:"int", size:256, val:cpgappno}
  575. ,{col:"appstat", type:"string", size:256, val:appstat}]);
  576. var oParam = {};
  577. oParam.id = "TXMMO04301";
  578. oParam.service = "prcpmngtapp.CPPrcpMngt";
  579. oParam.method = "reqSetCPPatStatVal";
  580. oParam.inds = "req=" + sDsName;
  581. oParam.async = false;
  582. oParam.callback = "cf_TXMMO04301";
  583. tranf_submit(oParam);
  584. dsf_deleteDs(sDsName);
  585. if(arErrorCode.pop("TXMMO04301") < 0)
  586. return false;
  587. }
  588. function cf_TXMMO04301(sSvcId, nErrorCode, sErrorMsg) {
  589. arErrorCode.push(sSvcId, nErrorCode);
  590. }
  591. function fChngEMRScrn(){
  592. //model.addLog("EMR OPEN START");
  593. var mainobj = frmf_getMainViewer();
  594. var mainscrnid = mainobj.frmf_getScreenID(); //메인화면의 기록지 ID
  595. curFormLoaderObj = frmf_findPopup("SSMMR01100"); //활성화된 서식로더창 체크
  596. if(!utlf_isNull(curFormLoaderObj)){ //서식로더 Close : 2009-06-03 : 이상현 D/L 요청 : 김영학 ;
  597. curFormLoaderObj.fClose();
  598. } //서식로더 close()
  599. var cpflag = ds_root.getColumn(0, "cpflag");
  600. var ordrecflag = ds_main_cond.getColumn(0, "ordrecflag"); //OCS 체크여부
  601. //var chngflag = ds_main_cond.getColumn(0, "chngflag"); //OCS 체크여부
  602. var dutplcecd = sysf_getUserInfo("dutplcecd"); //사용자부서
  603. var operation = sysf_getGlobalVariable("operation"); //수술정보
  604. var wndid = "SMMMR00100"; //진료기록화면이 default
  605. if(dutplcecd == "2090000000" || dutplcecd == "2090300000"){ //사용자부서가 마취통증의학과, 통증클리닉인 경우
  606. if(operation.length > 0){ //수술환자리스트에서 환자 선택된 경우, 메인화면은 '마취환자기록' loading
  607. wndid = "SMMMR03700";
  608. }
  609. }else{
  610. if(ordrecflag == "Y"){
  611. wndid = "SMMMB08100";
  612. }
  613. }
  614. //var chngflag = ds_main_cond.setColumn(0, "chngflag", "N"); //OCS 체크여부
  615. /*
  616. //20091130 HJS - 수진키 다를 경우 블러킹
  617. var pamStr = chkEmrListPaminfo();
  618. var pamKey = pamStr.split("|");
  619. setParameter("SMMMR00100_PATINFO_PID", pamKey[0]);
  620. setParameter("SMMMR00100_PATINFO_ORDDD", pamKey[1]);
  621. setParameter("SMMMR00100_PATINFO_CRETNO", pamKey[2]);
  622. */
  623. if(mainscrnid == wndid){
  624. if(wndid == "SMMMR03700"){
  625. mainobj.fFormInit();
  626. }else{
  627. mainobj.fRecMainReady();
  628. }
  629. }else{
  630. mainobj.frmf_openForm(wndid); //진료기록
  631. }
  632. //kskim
  633. //중증체류시간 화면(SPMMO21300) 닫기
  634. fCloseSPMMO21300Wnd();
  635. }
  636. function fChngMainEMRScrn() {
  637. var mainobj = frmf_getMainViewer();
  638. var mainscrnid = mainobj.frmf_getScreenID(); //메인화면의 기록지 ID
  639. var cpflag = ds_root.getColumn(0, "cpflag");
  640. var consulyn = ds_source.getColumn(0, "consulyn");
  641. var curFormLoaderObj = frmf_findPopup("SSMMR01100"); //활성화된 서식로더창 체크
  642. if(!utlf_isNull(curFormLoaderObj)){ //서식로더 Close : 2009-06-03 : 이상현 D/L 요청 : 김영학 ;
  643. //knuh 20120104 최원돈 OCS 진료대상자 OCS 조회 시 환자메모를 자동으로 사라지게 설정 SMMMO04100.js, SPMMR05600.js, MMR00100.js
  644. var curMemoObj = frmf_findPopup("SPMMR05600");
  645. if(!utlf_isNull(curMemoObj)){curMemoObj.close();} //환자메모 화면 close
  646. curFormLoaderObj.fClose();
  647. } //서식로더 close()
  648. if (cpflag =="Y"){
  649. var curPrcpObj= frmf_findPopup("SMMMP00800");
  650. } else {
  651. var curPrcpObj= frmf_findPopup("SMMMO00100");
  652. }
  653. var ordrecflag = ds_main_cond.getColumn(0, "ordrecflag"); //OCS 체크여부
  654. if (consulyn=="T"){
  655. ordrecflag = "N"
  656. }//LYJ
  657. var chngflag = lf_getDsValue(ds_main_cond, 0, "chngflag"); //OCS 체크여부
  658. if(!utlf_isNull(mainobj)){
  659. var dutplcecd = sysf_getUserInfo("dutplcecd"); //사용자부서
  660. var operation = sysf_getGlobalVariable("operation"); //수술정보
  661. var wndid = "SMMMR00100"; //진료기록화면이 default
  662. if(dutplcecd == "2090000000" || dutplcecd == "2090300000"){ //사용자부서가 마취통증의학과, 통증클리닉인 경우
  663. if(operation.length > 0){ //수술환자리스트에서 환자 선택된 경우, 메인화면은 '마취환자기록' loading
  664. if ("O" != ds_main_cond.getColumn(0, "recinfo")) {
  665. wndid = "SMMMR03700";
  666. }
  667. }else{
  668. if(ordrecflag == "Y"){
  669. wndid = "SMMMB08100";
  670. }
  671. }
  672. }else{
  673. if(ordrecflag == "Y"){
  674. wndid = "SMMMB08100";
  675. }
  676. }
  677. if (!utlf_isNull(curPrcpObj)) {
  678. curPrcpObj.ds_init.setColumn(0, "bfprcpload" , "Y"); //전처방화면 최초 생성 여부
  679. curPrcpObj.ds_init.setColumn(0, "fstopenflag", "N"); //처방화면이 최초 생성 여부
  680. }
  681. ds_main_cond.setColumn(0, "chngflag", "N"); //OCS 체크여부
  682. if(mainscrnid == wndid){
  683. if(wndid == "SMMMR03700"){
  684. mainobj.fFormInit();
  685. }else{
  686. mainobj.fRecMainReady();
  687. }
  688. }else{
  689. mainobj.frmf_openForm(wndid);
  690. }
  691. }else{ //전처방화면이 최초 생성된 경우, bfprcpload를 Y로 변경, 추후 tab변경시 메인화면 변경이 되지 않게함
  692. if (!utlf_isNull(curPrcpObj)) {
  693. curPrcpObj.ds_init.setColumn(0, "bfprcpload", "Y"); //전처방화면 최초 생성 여부
  694. }
  695. }
  696. //자가보유처방 조회 (최초 처방창을 열때만 호출한다.) 20100210 by LYJ
  697. var mainObj = frmf_getMainViewer();
  698. var curPrcpObj = mainObj.frmf_findPopup("SMMMO00100");
  699. if(frmf_checkOpener() && !utlf_isNull(opener.objects["ds_hidden_selfhld"]) && opener.ds_hidden_selfhld.getColumn(0, "selfopenyn") != "Y") {
  700. if (!utlf_isNull(curPrcpObj)){
  701. curPrcpObj.fSelfHldPrcpModal();
  702. }
  703. }
  704. //kimsj 처방시 미비기록 유무 확인(message) -- SMMMO00100.js, SMMMO02100.js에서 submit 실행
  705. if (!utlf_isNull(curPrcpObj)){
  706. curPrcpObj.fValidRecInfoMsg();
  707. }
  708. }
  709. /**
  710. * @desc : 진료대상자 출력
  711. * @
  712. * @param :
  713. * @return :
  714. * @author : 김영학
  715. * @---------------------------------------------------
  716. */
  717. function fPrtPatList() {
  718. Tab00.components[Tab00.tabindex].fPrtPatList();
  719. }
  720. /**
  721. * @desc : 중증체류시간 화면(SPMMO21300) 닫기
  722. *@author: 김광성(kskim)
  723. */
  724. function fCloseSPMMO21300Wnd(){
  725. var wndobj21300 = frmf_findPopup("SPMMO21300");
  726. var viewerSrc = Tab00.tabindex;//iviewer1.attribute("src");
  727. if( Tab00.tabindex != 2 ){ // "SMMMO04400_응급환자리스트"
  728. //alert("SMMMO04400");
  729. if( !utlf_isNull(wndobj21300) ){
  730. wndobj21300.fCloseWnd();
  731. }
  732. }
  733. }
  734. /**
  735. * @desc : 진료대상자리스트에서 더블클릭시 각 탭에서 블러킹 및 체크 용도로 사용.
  736. 로직은 추가하되 submission은 각 대상자 화면에 추가해야함.
  737. * tabkind >>> O:외래, I:입원, E:응급, OP:수술, SRCH:환자검색
  738. * @author : 한재상(maxizm)
  739. */
  740. function fChkBfPrcpLoad(tabkind) {
  741. var sChkAfterPrcpYn = lf_getHardCDList("Y", 221, 3); // 221 후인증 체크 사용여부
  742. if(sChkAfterPrcpYn == "Y") {
  743. // 1. 진료대상자에서 후인증관련 블러킹 처리. (전체탭에 대해서)
  744. ds_req_aftcert.clearData();
  745. ds_req_aftcert.addRow();
  746. ds_req_aftcert.setColumn(0, "pid", "");
  747. ds_req_aftcert.setColumn(0, "orddd", "");
  748. ds_req_aftcert.setColumn(0, "cretno", "");
  749. ds_req_aftcert.setColumn(0, "userdeptcd", sysf_getUserInfo("dutplcecd")); // 사용자 소속과
  750. ds_req_aftcert.setColumn(0, "userkind", "D"); // 의사 : "D", 그외 : "E"
  751. ds_req_aftcert.setColumn(0, "execkind", "patlist"); // 의사 : "D", 그외 : "E"
  752. ds_req_aftcert.setColumn(0, "orddrid", sysf_getUserInfo("userid"));
  753. var oParam = {};
  754. oParam.id = "TRMMO02705";
  755. oParam.service = "prcpmngtapp.PrcpMngt";
  756. oParam.method = "reqGetPatAftPrcpChk";
  757. oParam.inds = "req=" + "ds_req_aftcert";
  758. oParam.outds = "ds_aftcert" + "=aftcert";
  759. oParam.async = false;
  760. tranf_submit(oParam);
  761. if ( ds_aftcert.rowcount > 0 ) {
  762. sysf_messageBox("후인증 미비 내역이 존재합니다. 인증 후 진행하시기 바랍니다.", "C");
  763. frmf_modal("SMMMO02700", "SMMMO02700", null, null, null, null, null, null, null, null, null, null, "M");
  764. return false;
  765. }
  766. }
  767. return true;
  768. }
  769. /**
  770. * @desc : 진료대상자리스트에서 더블클릭시 환자의 정보 조회 및 체크
  771. * @ 미수금 체크(patuncoinfo), 민원환자체크(complaininfo)
  772. * @param : pid:환자번호
  773. * @return : True:계속진행, False:진행 중단
  774. * @author : 엄영만
  775. * @---------------------------------------------------
  776. */
  777. function fCheckSelectPatInfo(ioflag, pid){
  778. if (utlf_isNull(pid)) { return false; }
  779. ds_reqdata3.clearData();
  780. ds_reqdata3.addRow();
  781. ds_reqdata3.setColumn(0, "pid", pid);
  782. ds_reqdata3.setColumn(0, "ioflag", ioflag);
  783. var oParam = {};
  784. oParam.id = "TRMMO04114";
  785. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  786. oParam.method = "reqGetSelectPatInfo";
  787. oParam.inds = "req=" + "ds_reqdata3";
  788. oParam.outds = "ds_patuncoinfo=patuncoinfo" + " ds_complaininfo=complaininfo";
  789. oParam.async = false;
  790. oParam.callback = "cf_TRMMO04114";
  791. tranf_submit(oParam);
  792. if(arErrorCode.pop("TRMMO04114") < 0)
  793. return true;
  794. // 미수금 안내 메세지창 팝업
  795. if( !utlf_isNull(ds_patuncoinfo) && ds_patuncoinfo.rowcount > 0 ){
  796. var nPatUncoAmt = ds_patuncoinfo.getColumn(0, "outuncoamt");
  797. if (parseInt(nPatUncoAmt) > 0 ) {
  798. sysf_messageBox("미수금("+ nPatUncoAmt +"원)이 있으니 수납 후 진료토록 안내바랍니다.\n\n문의사항:원무과", "I");
  799. }
  800. }
  801. // 민원환자 안내 메세지창 팝업
  802. //2012/11/29 Start
  803. if(ioflag=="O" && pid !=""){ //외래일 경우만 처리
  804. var chk = ds_complaininfo.getColumn(0, "chk");
  805. if(chk=="Y"){
  806. frmf_setParameter("SPMMO50200_pid", pid);
  807. frmf_setParameter("SPMMO50200_ioflag", ioflag);
  808. frmf_modal("SPMMO50200", "SPMMO50200", null, null, null, null, null, null, null, null, null, null, "M");
  809. frmf_clearParameter("SPMMO50200_pid");
  810. frmf_clearParameter("SPMMO50200_ioflag");
  811. }
  812. }
  813. //2012/11/29 End
  814. /*
  815. var nodeComplain = instance1.selectNodes("/root/hidden/selectpatinfo/complaininfo");
  816. if( nodeComplain != null && nodeComplain.length > 0 ){
  817. var sPatName = model.getValue("/root/hidden/selectpatinfo/complaininfo/hngnm");
  818. var sOrdDate = model.getValue("/root/hidden/selectpatinfo/complaininfo/orddate");
  819. var sIoFlagNm = model.getValue("/root/hidden/selectpatinfo/complaininfo/ioflagnm");
  820. var sOfidocAcptDate = model.getValue("/root/hidden/selectpatinfo/complaininfo/ofidocacptdate");
  821. var sMsg = sPatName + "님은 "+ sIoFlagNm + "(" + sOrdDate + ") 진료받은 환자로 " + sOfidocAcptDate + " 건강보험심사평가원에\n진료비가 적정한지 여부를 요청한 민원제기 된 환자이오니 참조하여 주시기 바랍니다."
  822. if(getUserInfo("dutplceinstcd") == "031") {
  823. sMsg = sMsg + "\n\n문의사항:심사팀(6135)"
  824. } else {
  825. sMsg = sMsg + "\n\n문의사항:심사팀(2188)"
  826. }
  827. messageBox(sMsg , "I");
  828. }
  829. */
  830. return true;
  831. // modal ("SMPAM00100");
  832. }
  833. function cf_TRMMO04114(sSvcId, nErrorCode, sErrorMsg) {
  834. arErrorCode.push(sSvcId, nErrorCode);
  835. }
  836. /**
  837. * @desc : 진료대상자리스트에서 환자 선택 가능여부 조회
  838. * @ 로그인 부서를 체크하여 진료가능한 부서 인지 체크 2012.09.03
  839. * @param : pid:환자번호
  840. * @return : True:계속진행, False:진행 중단
  841. * @author : 엄영만
  842. * @---------------------------------------------------
  843. */
  844. function fCheckAbleSelPat() {
  845. var sRtn = "Y";
  846. var sUserOrdDeptYn = "Y";//lf_getHardCDList("Y", 335, 3); // 진료부서 체크 사용 여부
  847. if(sUserOrdDeptYn == "Y" ) { // 환자선택시 진료 가능 부서 여부 체크 추가 2012.09.03 엄영만
  848. lf_mmbfGetDeptCodeComboList(ds_checkselpatorddept, "O"); // 진료부서 체크 외래 부서 기준으로 체크
  849. lf_getHardCDList("N", 336, 0 , ds_checkselpatexpdept); // 336 진료부서 체크 제외 부서
  850. var sUserDeptCD = sysf_getUserInfo("dutplcecd"); // 로그인 부서
  851. var ordDeptNode = ds_checkselpatorddept.findRow("deptcd", sUserDeptCD); // 진료가능부서
  852. var expDeptNode = ds_checkselpatexpdept.findRow("hardcd", sUserDeptCD); // 진료가능부서 체크 제외 부서
  853. if( ordDeptNode == -1 && expDeptNode == -1) {
  854. sRtn = "N";
  855. }
  856. ds_checkselpatorddept.clear();
  857. ds_checkselpatexpdept.clear();
  858. }
  859. return sRtn;
  860. }]]></Script>