SMMMO04200.xjs 49 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/*
  3. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  4. 외래환자리스트 ( SMMMO04200_외래환자리스트.xfdl - JScript )
  5. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  6. */
  7. var arErrorCode = new HashArray();
  8. /**
  9. * @desc : 화면 초기화
  10. * @
  11. * @param :
  12. * @return :
  13. * @author : 오지훈
  14. * @---------------------------------------------------
  15. */
  16. function fInitialize_SMMMO04200() {
  17. ds_cond.setColumn(0, "orddd", utlf_getCurrentDate());
  18. // 75 당일 선결과 사용 유무조회
  19. // 95 보호자대진 적용여부
  20. // 191 진료대상자 외래 마우스 오른쪽 버튼 메뉴 설정을 위한 값 조회
  21. // 134 20091007 JJE 추가 : 주진료과 의사가 진료지원과의 선택진료의사 선택 여부 조회
  22. // 135 당일 선결과 사용 유무조회
  23. lf_gethardcdArrayList(new Array(
  24. "dayaftrcptyn|75",
  25. "patprotector|95",
  26. "menu|191",
  27. "selspecordyn|134",
  28. "ordordershow|135",
  29. "hardcd|445"
  30. ),
  31. new Array(
  32. "ds_dayaftrcptyn",
  33. "ds_patprotector",
  34. "ds_menu",
  35. "ds_selspecordyn",
  36. "ds_ordordershow",
  37. "ds_hardcd"
  38. )
  39. );
  40. frmf_createPopupMenuDs("pmn_menu", "pmn_menu_onmenuclick", ds_menu);
  41. appf_getCodeList([{dsNm: "ds_M0062", cdGrpId: "M0062"}
  42. , {dsNm: "ds_P0008", cdGrpId: "P0008"}
  43. , {dsNm: "ds_P0021", cdGrpId: "P0021"}
  44. , {dsNm: "ds_P0022", cdGrpId: "P0022"}
  45. , {dsNm: "ds_P1059", cdGrpId: "P1059"}
  46. , {dsNm: "ds_P0341", cdGrpId: "P0341"}
  47. , {dsNm: "ds_M0525", cdGrpId: "M0525"}
  48. , {dsNm: "ds_M0623", cdGrpId: "M0623"}], true);
  49. var dutplcecd = sysf_getUserInfo("dutplcecd");
  50. var orddrid = sysf_getUserInfo("userid");
  51. var reopenflag = parent.parent.ds_reopen.getColumn(0, "reopenflag"); //진료대상자 리스트 open여부
  52. if(reopenflag == "Y"){ //다시 열린 경우, main에 ordtab의 condlist(화면이 닫힐때 설정된 정보)를 그대로 재설정
  53. try {
  54. ds_cond.copyData(parent.parent.ds_reopen_condlist);
  55. dutplcecd = ds_cond.getColumn(0, "orddeptcd");
  56. orddrid = ds_cond.getColumn(0, "orddrid");
  57. } catch(E) {
  58. }
  59. parent.parent.ds_reopen.setColumn(0, "reopenflag", "N");
  60. } else {
  61. var sUserEnv057 = lf_mmbfGetUserEnvQuestValue("057"); // 진료대상자 외래탭 지연환자 표시여부
  62. if(sUserEnv057 == "001") { // 지연환자 표시일경우
  63. var sUserEnv058 = lf_mmbfGetUserEnvQuestValue("058"); // 진료대상자 외래탭 지연환자 지연시간
  64. var sUserEnv059 = lf_mmbfGetUserEnvQuestValue("059"); // 진료대상자 외래탭 지연환자 지연 제외시간
  65. if(sUserEnv058 == "001") { ds_cond.setColumn(0, "delaytime", "10");
  66. } else if(sUserEnv058 == "002") { ds_cond.setColumn(0, "delaytime", "20");
  67. } else if(sUserEnv058 == "003") { ds_cond.setColumn(0, "delaytime", "30");
  68. } else if(sUserEnv058 == "004") { ds_cond.setColumn(0, "delaytime", "40");
  69. } else if(sUserEnv058 == "005") { ds_cond.setColumn(0, "delaytime", "50");
  70. } else if(sUserEnv058 == "006") { ds_cond.setColumn(0, "delaytime", "60");
  71. } else { ds_cond.setColumn(0, "delaytime", "30");
  72. }
  73. if(sUserEnv059 == "001") { ds_cond.setColumn(0, "delayexpt", "0");
  74. } else if(sUserEnv059 == "002") { ds_cond.setColumn(0, "delayexpt", "10");
  75. } else if(sUserEnv059 == "003") { ds_cond.setColumn(0, "delayexpt", "20");
  76. } else if(sUserEnv059 == "004") { ds_cond.setColumn(0, "delayexpt", "30");
  77. } else { ds_cond.setColumn(0, "delayexpt", "10");
  78. }
  79. ds_cond.setColumn(0, "delayflag" , "Y");
  80. } else {
  81. ds_cond.setColumn(0, "delayflag" , "N");
  82. }
  83. }
  84. setDeptCodeList(dutplcecd);
  85. setUserList(dutplcecd, orddrid);
  86. reqOrderInfoOfCol(ds_reqdata1, ds_gridseq, "SMMMO04200", grd_outpatlist); //외래환자리스트 컬럼 조회 및 설정
  87. if(Div00.chk_speedflag.value == "Y")
  88. fGrdInit();
  89. fReqOutPatList();
  90. }
  91. function setDeptCodeList(sDeptcd, sOrddd){
  92. lf_mmbfGetDeptCodeComboList(ds_orddept, "O", sOrddd);
  93. if(!utlf_isNull(sDeptcd))
  94. Div00.cmb_orddeptcd.value = sDeptcd;
  95. }
  96. function setUserList(sOrddeptcd, sUserid, sOrddd){
  97. lf_mmbfGetUserComboList(ds_userlist, sOrddeptcd, "0330", "", "", sOrddd);
  98. frmf_addComboItem("Div00.cmb_orddrid"); //의사콤보 전체항목 추가
  99. if(utlf_isNull(sUserid)) {
  100. Div00.cmb_orddrid.index = 1;
  101. } else {
  102. Div00.cmb_orddrid.value = sUserid;
  103. }
  104. }
  105. /**
  106. * @desc : 외래환자 환자 기본정보설정
  107. * @
  108. * @param :
  109. * @return :
  110. * @author : 오지훈
  111. * @---------------------------------------------------
  112. */
  113. function fReqOutPatPamInfo(){
  114. var iRow = ds_outpatlist.rowposition;
  115. var pid = ds_outpatlist.getColumn(iRow, "pid");
  116. var orddd = ds_outpatlist.getColumn(iRow, "orddd");
  117. var cretno = ds_outpatlist.getColumn(iRow, "cretno");
  118. var instcd = ds_outpatlist.getColumn(iRow, "instcd");
  119. var param = "O" + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd;
  120. return appf_initPatientInfo(param);
  121. }
  122. /**
  123. * @desc : (외래)관심환자등록창 호출
  124. * @
  125. * @param :
  126. * @return :
  127. * @author : 오지훈
  128. * @---------------------------------------------------
  129. */
  130. function fCallWndConcPatRgst(){
  131. var currow = ds_outpatlist.rowposition;
  132. var pid = ds_outpatlist.getColumn(currow, "pid");
  133. var hngnm = ds_outpatlist.getColumn(currow, "hngnm");
  134. var indd = ds_outpatlist.getColumn(currow, "orddd");
  135. var cretno = ds_outpatlist.getColumn(currow, "cretno");
  136. var seqno = "";//ds_outpatlist.getColumn(currow, "seqno");
  137. var instcd = ds_outpatlist.getColumn(currow, "instcd");
  138. var elbulbodstat = ds_outpatlist.getColumn(currow, "elbulbodstat");
  139. if ( elbulbodstat == "9" ) {
  140. sysf_messageBox("미접수환자는 진행이 불가능 합니다.","E");
  141. return;
  142. }
  143. var param = "I" + "▩" + pid + "▩" + hngnm + "▩" + indd + "▩" + cretno + "▩" + seqno + "▩" + instcd;
  144. frmf_setParameter("param", param);
  145. frmf_modal("SPMMO08200", "SPMMO08200", null, null, null, null, null, null, null, null, null, null, "M");
  146. fReqOutPatList();
  147. }
  148. /**
  149. * @desc : (외래)주의요망환자창 호출
  150. * @
  151. * @param :
  152. * @return :
  153. * @author : 엄영만
  154. * @---------------------------------------------------
  155. */
  156. function fCallWndWarnPat(){
  157. var nCurRow = ds_outpatlist.rowposition;
  158. var sPid = ds_outpatlist.getColumn(nCurRow, "pid");
  159. var sHngnm = ds_outpatlist.getColumn(nCurRow, "hngnm");
  160. frmf_setParameter("SMMMO19100_warncd", sPid);
  161. frmf_setParameter("SMMMO19100_warnnm", sHngnm);
  162. frmf_modal("SMMMO19100", "SMMMO19100", null, null, null, null, null, null, null, null, null, null, "M");
  163. frmf_clearParameter("SMMMO19100_warncd");
  164. frmf_clearParameter("SMMMO19100_warnnm");
  165. fReqOutPatList();
  166. }
  167. /**
  168. * @desc : 외래환자 조회
  169. * @
  170. * @param :
  171. * @return :
  172. * @author : 오지훈
  173. * @---------------------------------------------------
  174. */
  175. function fReqOutPatList() {
  176. parent.parent.ds_cond_outpatlist.copyData(ds_cond);
  177. ds_reqOutPat.copyData(ds_cond);
  178. var compsrefcnts = ds_gridseq.getColumn(0, "compsrefcnts");
  179. var compssizecnts = ds_gridseq.getColumn(0, "compssizecnts");
  180. if(utlf_isNull(compsrefcnts)) compsrefcnts = "";
  181. if(utlf_isNull(compssizecnts)) compssizecnts = "";
  182. ds_reqOutPat.addColumn("compsrefcnts", "string", 1024);
  183. ds_reqOutPat.addColumn("compssizecnts", "string", 1024);
  184. ds_reqOutPat.setColumn(0, "compsrefcnts", compsrefcnts);
  185. ds_reqOutPat.setColumn(0, "compssizecnts", compssizecnts);
  186. ds_outpatlist.enableevent = false;
  187. if(!utlf_isNull(ds_outpatlist.getColumnInfo("sexage")))
  188. ds_outpatlist.updateColID("sexage", "sa");
  189. var oParam = {};
  190. oParam.id = "TRMMO04201";
  191. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  192. oParam.method = "reqGetOutPatList";
  193. oParam.inds = "req=" + "ds_reqOutPat";
  194. oParam.outds = "ds_outpatlist=outpatlist" + " ds_hardcode=hardcode" + " ds_totcnt=totcnt";
  195. oParam.async = true;
  196. oParam.callback = "cf_TRMMO04201";
  197. tranf_submit(oParam);
  198. }
  199. function cf_TRMMO04201(sSvcId, nErrorCode, sErrorMsg) {
  200. if(!utlf_isNull(ds_outpatlist.getColumnInfo("sa")))
  201. ds_outpatlist.updateColID("sa", "sexage");
  202. if(nErrorCode > -1) {
  203. fProcTreatExpt(); //치료제외 삭제 및 숨김처리
  204. }
  205. var orderby = ds_cond.getColumn(0, "orderby");
  206. var sortcol = ds_cond.getColumn(0, "sortcol");
  207. if(sortcol != "" && orderby != "")
  208. ds_outpatlist.keystring.current = "S:" + orderby + sortcol;
  209. ds_cond.setColumn(0, "rsltcnt", ds_outpatlist.rowcount);
  210. ds_cond.setColumn(0, "totcnt", ds_totcnt.getColumn(0, "totcnt"));
  211. ds_outpatlist.enableevent = true;
  212. }
  213. /**
  214. * @desc : 환자 선택 후, 환자 정보 조회 및 기록지 화면 연동
  215. * @
  216. * @param :
  217. * @return :
  218. * @author : 오지훈
  219. * @---------------------------------------------------
  220. */
  221. function fSelectOutPat(){
  222. //model.addlog("SPEED CHECK START OF fSelectOutPat()");
  223. var nRow = ds_outpatlist.rowposition;
  224. if(nRow < 0){ return bRtn; }
  225. var elbulbodstat = ds_outpatlist.getColumn(nRow, "elbulbodstat");
  226. if ( elbulbodstat == "9" ) {
  227. sysf_messageBox("미접수환자는 진행이 불가능 합니다.","E");
  228. return;
  229. }
  230. //var reqptype = ds_outpatlist.getColumn(nRow, "reqptype"); // 해당 컬럼 없음
  231. var pid = ds_outpatlist.getColumn(nRow, "pid");
  232. var recflag = parent.parent.SMMMO04100_getDSMainCond("recflag");
  233. //parent.parent.frmf_setParameter("SMMMO04100_reqptype", reqptype);
  234. // 진행가능 한지 여부 체크
  235. //model.addlog(" SPEED CHECK START OF fCheckBfSelectOutPat()");
  236. if(!fCheckBfSelectOutPat()) { return; }
  237. //model.addlog(" SPEED CHECK END OF fCheckBfSelectOutPat()");
  238. // 상단정보 설정
  239. //model.addlog(" SPEED CHECK START OF fReqOutPatPamInfo()");
  240. if(!fReqOutPatPamInfo()) { return; }
  241. //model.addlog(" SPEED CHECK END OF fReqOutPatPamInfo()");
  242. // 진료기록, 처방화면 연동
  243. //model.addlog(" SPEED CHECK START OF fOpenPrcpMainWnd()");
  244. if (recflag == "Y") {
  245. var mainObj = frmf_getMainViewer();
  246. var curEmrRecObj = frmf_findPopup("SMMRI00400"); //활성화된 통합기록 조회 화면 object loading
  247. var curExamRsltObj = frmf_findPopup("SMAER00800"); //활성화된 검사결과 화면 object loading
  248. var curNurTprObj = frmf_findPopup("SMMNR00900"); //활성화된 간호 TPR 화면 object loading
  249. var curNurBSEMRObj = frmf_findPopup("SMMNR02500"); //활성화된 간호 TPR 화면 object loading
  250. var curGrphObj = frmf_findPopup("SPMRF05200"); //활성화된 그래프 서식 화면 object loading
  251. var curCunsultObj = frmf_findPopup("SMMMR05000"); //활성화된 Consult 화면 object loading
  252. var curExamRsltNewObj = frmf_findPopup("SMMMI00100"); //활성화된 검사결과 화면 object loading
  253. var curCpObj = mainObj.frmf_findPopup("SMMMP00800"); //활성화된 CP Main 화면 object loading
  254. var curPrcpObj = mainObj.frmf_findPopup("SMMMO00100"); //활성화된 처방Main 화면 object loading
  255. var curCpSrchObj = mainObj.frmf_findPopup("SPMMP01200"); //활성화된 CP 검색 화면 object loading
  256. if(!utlf_isNull(curEmrRecObj)) { //통합기록 조회화면 refresh;
  257. frmf_setParameter("SMMRI00400_param_pid" , parent.parent.SMMMO04100_getPid());
  258. frmf_setParameter("SMMRI00400_param_chosflag", "");//model.getValue("/root/main/paminfo/list/ordtype")); 어디에 있는 노드지?
  259. curEmrRecObj.fInitalize();
  260. frmf_setFocusPop("SMMRI00400");
  261. }
  262. if(!utlf_isNull(curExamRsltObj)){ //검사결과 화면 refresh;
  263. curExamRsltObj.ds_singdata.setColumn(0, "srchpid", pid );
  264. curExamRsltObj.btn_srch.onclick.fireEvent(curExamRsltObj.btn_srch, new ClickEventInfo);
  265. }
  266. if(!utlf_isNull(curNurTprObj)){ //간호 TPR 화면 refresh : 2008-11-28 : 김영학 ;
  267. curNurTprObj.fInitialize("init");
  268. }
  269. if(!utlf_isNull(curNurBSEMRObj)){ //혈당간호기록 refresh : 2008-12-24 : 김영학 ;
  270. curNurBSEMRObj.fInitialize("init");
  271. }
  272. if(!utlf_isNull(curGrphObj)){ //그래프 서식 refresh : 2009-01-02 : 박민규 SW 요청 : 김영학 ;
  273. curGrphObj.fInitialize();
  274. }
  275. if(!utlf_isNull(curCunsultObj)){ //Consult 화면 refresh;
  276. curCunsultObj.fInitalize();
  277. }
  278. if(!utlf_isNull(curExamRsltNewObj)){ //검사결과 화면 NEW refresh;
  279. curExamRsltNewObj.ds_singdata.setColumn(0, "srchpid", pid );
  280. curExamRsltNewObj.btn_srch.onclick.fireEvent(curExamRsltNewObj.btn_srch, new ClickEventInfo);
  281. }
  282. if(!utlf_isNull(curPrcpObj)) { //활성화된 처방Main 화면이 있는 경우 close
  283. curPrcpObj.fPrcpWndClose();
  284. }
  285. if(!utlf_isNull(curCpObj)){ //활성화된 CP Main화면이 있는 경우 close
  286. curCpObj.fCloseGPS();
  287. }
  288. if(!utlf_isNull(curCpSrchObj)){ //활성화된 CP검색화면이 있는 경우 close
  289. curCpSrchObj.fCpSrchWndClose();
  290. }
  291. frmf_clearParameter("SMMMO04100_ANSWCNT");
  292. parent.parent.fChngEMRScrn();// 진료기록 Open
  293. } else {
  294. parent.parent.fOpenPrcpMainWnd();
  295. }
  296. //model.addlog(" SPEED CHECK END OF fOpenPrcpMainWnd()");
  297. //model.addlog("SPEED CHECK END OF fSelectOutPat()");
  298. }
  299. /**
  300. * @desc : 외래 환자 선택후 진행 가능여부 체크 및 메세지 창 팝업.
  301. * @
  302. * @param :
  303. * @return :
  304. * @author : 엄영만
  305. * @---------------------------------------------------
  306. */
  307. function fCheckBfSelectOutPat() {
  308. var nRow = ds_outpatlist.rowposition;
  309. var rsrvflag = ds_outpatlist.getColumn(nRow, "rsrvflag");
  310. var etcordflag = ds_outpatlist.getColumn(nRow, "etcordflag");
  311. var orddrid = ds_outpatlist.getColumn(nRow, "orddrid");
  312. var orddd = ds_outpatlist.getColumn(nRow, "orddd");
  313. var pid = ds_outpatlist.getColumn(nRow, "pid");
  314. var hngnm = ds_outpatlist.getColumn(nRow, "hngnm");
  315. var bfjudgvalue = ds_outpatlist.getColumn(nRow, "bfjudgvalue");
  316. if( sysf_getGlobalVariable("able_sel_patlist", "M") == "N" ) { // 환자 선택 가능 여부 체크 2012.09.03 엄영만
  317. sysf_messageBox("현재 로그인한 '"+ sysf_getUserInfo("dutplcenm") +"' 부서는 기록저장 및 처방발행이 불가능한 부서 입니다.\n\n다시 로그인 후 진행 하십시오.","E");
  318. return false;
  319. }
  320. var sUseCommonDr = lf_getHardCDList("Y", 314, 3); // 일반의 진료 사용 여부
  321. if((orddd >= '20111001') && (sUseCommonDr == "N") && (orddrid == "11111" || orddrid == "EMR") && sysf_getUserId() != "EMR" ){
  322. sysf_messageBox("일반의사 또는 EⓐR로 접수된 예약은 처방을 입력할 수 없습니다.\n\n진료의사를 변경후 진행 하십시오.","E");
  323. return false;
  324. }
  325. var sBfjudgContinue = lf_getHardCDList("Y", 334, 3); // 심사대기 환자선택시 진행 여부(본원:N, 칠곡:Y)
  326. if(sBfjudgContinue == "N" && bfjudgvalue == "심사대기") { // 사전심사 대기중 일경우 환자 선택 불가능 하도록 수정. 심사실요청(20120707012) 2012.07.30 엄영만
  327. sysf_messageBox("사전심사가 진행중인 환자입니다.\n\n심사 완료 후 진행 하십시오.","E");
  328. return false;
  329. }
  330. /* 처방 입력 가능 여부 체크
  331. -rsrvflag(예약구분)
  332. S - 슬라이드복사
  333. P - 시행부서처방/APU
  334. 3 - 진단서
  335. 4 - 진료기록
  336. -etcordflag(기타구분)
  337. M - 물리치료
  338. J - 주사
  339. N - 가정간호
  340. E - 실시정산분리
  341. */
  342. if(rsrvflag == "S" || rsrvflag == "3" || rsrvflag == "4" || etcordflag == "E"){ // 주사, 물리치료 제외 특례적용을 위해 진단을 수정 해야 하는 경우가 있음.
  343. sysf_messageBox("진료에서 처방을 입력할 수 없는 예약구분입니다.","E");
  344. return false;
  345. }
  346. //처방, CP화면에 modal 또는 modaless가 뜬 경우, 환자 선택 불가
  347. if(!fChkScrnDisable()){ return false; }
  348. //CP환자 여부 확인, update시 에러나면 변경 불가
  349. if(!fChkCPPatValid(nRow)){ return false; }
  350. // 진료기록에 수정된 사항이 있을 경우 저장할 것인지 묻는 함수 호출 : 2009. 07. 27 김영학
  351. var mainobj = frmf_getMainViewer();
  352. var mainscrnid = mainobj.frmf_getScreenID(); //메인화면의 기록지 ID
  353. if(mainscrnid == "SMMMR00100"){
  354. var prvIntRecPamInfRtn = mainobj.fPrevInitRecPamInfo();
  355. if(!prvIntRecPamInfRtn){ return false; } // 기록지에 필수 입력사항을 입력하지 않았을 때 그냥 넘어가 버리는 오류 수정 20100305 LYJ
  356. }
  357. var chkSameNameNodeCount = ds_outpatlist.getCaseCount("hngnm == '" + hngnm + "'");
  358. if (chkSameNameNodeCount > 1) {
  359. sysf_messageBox("동명이인이 있습니다. ", "I");
  360. }
  361. //2011.09.07 엄영만 환자 클릭시 환자정보 체크 SMMMO04100.js 파일 함수 호출 ioflag, pid 인자
  362. if(!fCheckSelectPatInfo("O", pid)){ return false; }
  363. return true;
  364. }
  365. /**
  366. * @desc : 보호자대진 적용, 취소(외래등록 tbl에 etcordflag설정)
  367. * @
  368. * @param : sEtcOrdFlag - 'F' 보호자대진 적용
  369. * : - '-' 보호자대진 취소
  370. * @return :
  371. * @author : 오지훈
  372. * @---------------------------------------------------
  373. */
  374. function fUpdtOutPatPamInfo(sEtcOrdFlag){
  375. var iRow = ds_outpatlist.rowposition;
  376. if(iRow < 0){
  377. return;
  378. }
  379. //20100127 한재상 수정 - 초진은 보호자대진 적용불가.
  380. if ( sEtcOrdFlag == "F" &&
  381. ( ds_outpatlist.getColumn(iRow, "fsexamflag") == "D" ||
  382. ds_outpatlist.getColumn(iRow, "fsexamflag") == "F" ) ) {
  383. sysf_messageBox("초진환자는 보호자 대진적용이 불가능합니다.", "C");
  384. return;
  385. }
  386. var sPID = ds_outpatlist.getColumn(iRow, "pid");
  387. var sOrdDD = ds_outpatlist.getColumn(iRow, "orddd");
  388. var sCretNO = ds_outpatlist.getColumn(iRow, "cretno");
  389. var sInstCD = ds_outpatlist.getColumn(iRow, "instcd");
  390. var sAcptSeqNO = ds_outpatlist.getColumn(iRow, "acptseqno");
  391. var sEtcOrdFlag2= ds_outpatlist.getColumn(iRow, "etcordflag");
  392. var sHngNM = ds_outpatlist.getColumn(iRow, "hngnm");
  393. var sUserID = sysf_getUserInfo("userid");
  394. var sUserDeptCD = sysf_getUserInfo("dutplcecd");
  395. if(sEtcOrdFlag == "C"){
  396. sProcFlag = "C"; //진료취소인 경우 sProcFlag C로 처리
  397. }else if(sEtcOrdFlag == "-"){ //보호자 대진 취소
  398. var msgstr = "취소를";
  399. sProcFlag = "P";
  400. var rtnval = sysf_messageBox("[" + sHngNM + "]환자의 보호자 대진 " + msgstr, "Q004");
  401. if(rtnval == 7){ //취소 버튼을 클릭한 경우
  402. return;
  403. }
  404. }else if(sEtcOrdFlag == "F"){ //보호자 대진 적용
  405. if(sEtcOrdFlag2 == "F"){
  406. sysf_messageBox("[" + sHngNM + "]환자는 이미 보호자 대진 적용환자", "E008");
  407. return;
  408. }else{
  409. var msgstr = "적용을";
  410. sProcFlag = "P";
  411. }
  412. var rtnval = sysf_messageBox("[" + sHngNM + "]환자의 보호자 대진 " + msgstr, "Q004");
  413. if(rtnval == 7){ //취소 버튼을 클릭한 경우
  414. return;
  415. }
  416. }
  417. ds_savedata_save.clearData();
  418. ds_savedata_save.addRow();
  419. ds_savedata_save.setColumn(0, "pid", sPID);
  420. ds_savedata_save.setColumn(0, "orddd", sOrdDD);
  421. ds_savedata_save.setColumn(0, "cretno", sCretNO);
  422. ds_savedata_save.setColumn(0, "instcd", sInstCD);
  423. ds_savedata_save.setColumn(0, "acptseqno", sAcptSeqNO);
  424. ds_savedata_save.setColumn(0, "userid", sUserID);
  425. ds_savedata_save.setColumn(0, "etcordflag", sEtcOrdFlag);
  426. ds_savedata_save.setColumn(0, "userdeptcd", sUserDeptCD);
  427. ds_savedata_save.setColumn(0, "procflag", sProcFlag);
  428. ds_savedata_req.clearData();
  429. ds_savedata_req.addRow();
  430. ds_savedata_req.setColumn(0, "orddd", ds_cond.getColumn(0, "orddd"));
  431. ds_savedata_req.setColumn(0, "pid", ds_cond.getColumn(0, "pid"));
  432. ds_savedata_req.setColumn(0, "orddeptcd", ds_cond.getColumn(0, "orddeptcd"));
  433. ds_savedata_req.setColumn(0, "orddrid", ds_cond.getColumn(0, "orddrid"));
  434. ds_savedata_req.setColumn(0, "elbulbodstat", ds_cond.getColumn(0, "elbulbodstat"));
  435. ds_savedata_req.setColumn(0, "srchdd", ds_cond.getColumn(0, "orddd"));
  436. ds_savedata_req.setColumn(0, "deptflag", ds_cond.getColumn(0, "deptflag"));
  437. ds_outpatlist.enableevent = false;
  438. if(!utlf_isNull(ds_outpatlist.getColumnInfo("sexage")))
  439. ds_outpatlist.updateColID("sexage", "sa");
  440. var oParam = {};
  441. oParam.id = "TXMMO04201";
  442. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  443. oParam.method = "reqSetOutPatPamInfo";
  444. oParam.inds = "save=" + "ds_savedata_save" + " req=" + "ds_savedata_req";
  445. oParam.outds = "ds_outpatlist=outpatlist";
  446. oParam.async = false;
  447. tranf_submit(oParam);
  448. if(!utlf_isNull(ds_outpatlist.getColumnInfo("sa")))
  449. ds_outpatlist.updateColID("sa", "sexage");
  450. ds_outpatlist.enableevent = true;
  451. }
  452. /**
  453. * @desc : 보호자대진 적용
  454. * @
  455. * @param : sEtcOrdFlag - 'F' 보호자대진 적용
  456. *
  457. * @return :
  458. * @author : 오지훈
  459. * @---------------------------------------------------
  460. */
  461. function fRgstPatProtector(){
  462. var currow = ds_outpatlist.rowposition;
  463. if(currow < 0){
  464. return;
  465. }
  466. //마우스 오른쪽버튼 팝업에서 parameter처리가 되지 않아 우선 함수로 나누어 처리, 차후 수정되면 변경예정
  467. var elbulbodstat = ds_outpatlist.getColumn(currow, "elbulbodstat");
  468. if ( elbulbodstat == "9" ) {
  469. sysf_messageBox("미접수환자는 진행이 불가능 합니다.","E");
  470. return;
  471. }
  472. fUpdtOutPatPamInfo("F");
  473. }
  474. /**
  475. * @desc : 보호자대진 취소
  476. * @
  477. * @param : sEtcOrdFlag - '-' 보호자대진 적용
  478. *
  479. * @return :
  480. * @author : 오지훈
  481. * @---------------------------------------------------
  482. */
  483. function fCnclPatProtector(){
  484. var currow = ds_outpatlist.rowposition;
  485. if(currow < 0){
  486. return;
  487. }
  488. //마우스 오른쪽버튼 팝업에서 parameter처리가 되지 않아 우선 함수로 나누어 처리, 차후 수정되면 변경예정
  489. var elbulbodstat = ds_outpatlist.getColumn(currow, "elbulbodstat");
  490. if ( elbulbodstat == "9" ) {
  491. sysf_messageBox("미접수환자는 진행이 불가능 합니다.","E");
  492. return;
  493. }
  494. fUpdtOutPatPamInfo("-");
  495. }
  496. /**
  497. * @desc : 진료취소
  498. * @
  499. * @param : sEtcOrdFlag - 'C' 진료취소 적용
  500. * sProcFlag - 'C' 진료취소 flow
  501. *
  502. * @return :
  503. * @author : 오지훈
  504. * @---------------------------------------------------
  505. */
  506. function fPatOrdCncl(){
  507. var currow = ds_outpatlist.rowposition;
  508. if(currow < 0){
  509. return;
  510. }
  511. //마우스 오른쪽버튼 팝업에서 parameter처리가 되지 않아 우선 함수로 나누어 처리, 차후 수정되면 변경예정
  512. var elbulbodstat = ds_outpatlist.getColumn(currow, "elbulbodstat");
  513. if ( elbulbodstat == "9" ) {
  514. sysf_messageBox("미접수환자는 진행이 불가능 합니다.","E");
  515. return;
  516. }
  517. fUpdtOutPatPamInfo("C");
  518. }
  519. /**
  520. * @desc : 치료제외 삭제 및 숨김처리
  521. * @
  522. * @param :
  523. * @return :
  524. * @author : 오지훈
  525. * @---------------------------------------------------
  526. */
  527. function fProcTreatExpt(){
  528. var dutplcecd = sysf_getUserInfo("dutplcecd");
  529. var row = ds_hardcode.findRow("trgtcd", dutplcecd);
  530. if(row == -1) return;
  531. var hardcdno = ds_hardcode.getColumn(row, "hardcdno");
  532. if(hardcdno == 2){
  533. var row3 = ds_hardcode.findRow("hardcdno", 3);
  534. if(row3 != -1)
  535. ds_hardcode.deleteRow(row3);
  536. //model.removeNode("/root/main/outpatinfo/hardcode[hardcdno = '" + 3 + "']");
  537. } else if(hardcdno == 3){
  538. var row2 = ds_hardcode.findRow("hardcdno", 2);
  539. if(row2 != -1)
  540. ds_hardcode.deleteRow(row2);
  541. //model.removeNode("/root/main/outpatinfo/hardcode[hardcdno = '" + 2 + "']");
  542. } else{
  543. Div00.cmb_expt.visible = false;
  544. }
  545. }
  546. /**
  547. * @desc : 그리드 data 엑셀화일로 저장
  548. * @
  549. * @param :
  550. * @return :
  551. * @author : 오지훈
  552. * @---------------------------------------------------
  553. */
  554. function fSaveGridToExcel(){
  555. grdf_exportExcel(grd_outpatlist, "외래환자리스트", "외래");
  556. }
  557. /**
  558. * @desc : 협진관리 화면 open
  559. * @
  560. * @param :
  561. * @return :
  562. * @author : 오지훈
  563. * @---------------------------------------------------
  564. */
  565. function fOpenCnstPat(){
  566. var currow = ds_outpatlist.rowposition;
  567. if(currow < 0){
  568. return;
  569. }
  570. var elbulbodstat = ds_outpatlist.getColumn(currow, "elbulbodstat");
  571. if ( elbulbodstat == "9" ) {
  572. sysf_messageBox("미접수환자는 진행이 불가능 합니다.","E");
  573. return;
  574. }
  575. var pid = ds_outpatlist.getColumn(currow, "pid");
  576. var hngnm = ds_outpatlist.getColumn(currow, "hngnm");
  577. var sa = ds_outpatlist.getColumn(currow, "sexage");
  578. var orddeptcd = ds_outpatlist.getColumn(currow, "orddeptcd");
  579. var orddrid = ds_outpatlist.getColumn(currow, "orddrid");
  580. var orddrnm = ds_outpatlist.getColumn(currow, "orddrnm");
  581. var orddd = ds_outpatlist.getColumn(currow, "orddd");
  582. var cretno = ds_outpatlist.getColumn(currow, "cretno");
  583. var coordflag = ds_outpatlist.getColumn(currow, "coordflag");
  584. var patinfo = hngnm + "▦" + sa + "▦" + orddeptcd + "▦" + orddrid + "▦" + cretno + "▦" + orddrnm + "▦" + coordflag;
  585. frmf_setParameter("SPMMO03600_pid", pid);
  586. frmf_setParameter("SPMMO03600_orddd", orddd);
  587. frmf_setParameter("SPMMO03600_patinfo", patinfo);
  588. frmf_setParameter("SPMMO03600_ioflag", "O");
  589. frmf_modal("SPMMO03600", "SPMMO03600", null, null, null, null, null, null, null, null, null, null, "M");
  590. fReqOutPatList();
  591. }
  592. /**
  593. * @desc : CP환자 여부 검사
  594. * @
  595. * @param :
  596. * @return :
  597. * @author : 오지훈
  598. * @---------------------------------------------------
  599. */
  600. function fChkCPPatValid(currow){
  601. var pid = ds_outpatlist.getColumn(currow, "pid");
  602. var orddd = ds_outpatlist.getColumn(currow, "orddd");
  603. var cretno = ds_outpatlist.getColumn(currow, "cretno");
  604. var hngnm = ds_outpatlist.getColumn(currow, "hngnm");
  605. var orddeptcd = "";//ds_outpatlist.getColumn(currow, "orddeptcd");
  606. var ordtype = "";//ds_outpatlist.getColumn(currow, "ordtype");
  607. var cpyn = ds_outpatlist.getColumn(currow, "cpyn");
  608. if(utlf_isNull(orddeptcd)) orddeptcd = ds_cond.getColumn(0, "orddeptcd");
  609. if(utlf_isNull(ordtype)) ordtype = "O";
  610. ds_reqdata2.clearData();
  611. ds_reqdata2.addRow();
  612. ds_reqdata2.setColumn(0, "pid" , pid);
  613. ds_reqdata2.setColumn(0, "orddd" , orddd);
  614. ds_reqdata2.setColumn(0, "cretno" , cretno);
  615. ds_reqdata2.setColumn(0, "hngnm" , hngnm); //추가(2008.08.25)
  616. ds_reqdata2.setColumn(0, "prcpgenrflag", ordtype);
  617. ds_reqdata2.setColumn(0, "srchtabflag" , "O"); //대상자리스트탭 구분
  618. var oParam = {};
  619. oParam.id = "TRMMO04303";
  620. oParam.service = "prcpbaseapp.CpMngt";
  621. oParam.method = "reqGePattValidity";
  622. oParam.inds = "req=" + "ds_reqdata2";
  623. oParam.outds = "ds_rsltgetdata=getdata";
  624. oParam.async = false;
  625. oParam.callback = "cf_TRMMO04303";
  626. tranf_submit(oParam);
  627. if(arErrorCode.pop("TRMMO04303") < 0)
  628. return false;
  629. var cppatnode = ds_rsltgetdata.rowcount;//model.instance1.selectNodes("/root/init/rsltgetdata/getdata");
  630. if(cppatnode < 1){ //cp적용환자 tbl에 유효한 데이터가 없는 경우
  631. parent.parent.SMMMO04100_setDSRoot("cpflag", "N"); //처방open
  632. return true;
  633. }else{ //CP적용환자 tbl에 유효한 데이터가 있는 경우
  634. dsf_setDefaultVal(ds_rsltgetdata, "appyn:Y");
  635. var appyn = ds_rsltgetdata.getColumn(0, "appyn");
  636. var appstat = ds_rsltgetdata.getColumn(0, "appstat");
  637. var cpgnm = ds_rsltgetdata.getColumn(0, "cpgnm");
  638. var cpgappno = ds_rsltgetdata.getColumn(0, "cpgappno");
  639. var msgcnts = ds_rsltgetdata.getColumn(0, "msgcnts");
  640. var msgflag = ds_rsltgetdata.getColumn(0, "msgflag");
  641. var prtlflagcd = ds_rsltgetdata.getColumn(0, "prtlflagcd"); //01:CP,02:CPG
  642. if(appstat == 11){ //CP적용상태가 11인 경우
  643. var rtnval = sysf_messageBox(msgcnts, msgflag);
  644. if(rtnval == 6){ //예 선택, CP Main open, CP적용환자 tbl에 appstat 10 진행중
  645. parent.parent.SMMMO04100_setDSRoot("cpflag", "Y");
  646. return fUpdtCPPatAppStatVal(10);
  647. }else{ //아니오 선택, 처방 Main open, CP적용환자 tbl에 appstat 50 : CP Drop
  648. sysf_messageBox(msgcnts, msgflag);
  649. frmf_setParameter("SMMMO043_cpgappno", cpgappno); //drop 팝업에서 인식할 수 있는 param
  650. frmf_setParameter("SMMMO043_drop" , "N"); //drop 팝업에서 인식할 수 있는 param
  651. frmf_modal("SPMMP02300", "SPMMP02300", null, null, null, null, null, null, null, null, null, null, "M"); //Drop 팝업 호출
  652. parent.parent.SMMMO04100_setDSRoot("cpflag", "N");
  653. if(frmf_getParameter("SMMMO043_drop") == "Y" && !utlf_isNull(cpyn)){
  654. ds_outpatlist.setColumn(currow, "cpyn", "N");
  655. }else{
  656. return false;
  657. }
  658. frmf_clearParameter("SMMMO043_cpgappno");
  659. frmf_clearParameter("SMMMO043_drop");
  660. return true;
  661. }
  662. }else if(appstat == 53){
  663. parent.parent.SMMMO04100_setDSRoot("cpflag", "X");
  664. return true;
  665. }else{ //CP적용상태가 11가 아닌 경우, CP Main창 open
  666. if( prtlflagcd == "02" && utlf_isNull(appstat) && msgflag == "P" ){ //CPG & 호출flag:Popup & 모니터링구분:대상자탐색 (appyn:평가용여부)
  667. //CPG적용대상자 알림 팝업 호출 (2009.05.04)
  668. frmf_setParameter("SMMMO041_hngnm" , hngnm);
  669. frmf_setParameter("SMMMO041_pid" , pid);
  670. frmf_setParameter("SMMMO041_cretno" , cretno);
  671. frmf_setParameter("SMMMO041_orddd" , orddd);
  672. frmf_setParameter("SMMMO041_ordtype" , ordtype);
  673. frmf_setParameter("SMMMO041_orddeptcd" , orddeptcd);
  674. frmf_setParameter("SMMMO041_slipnm" , msgcnts); //cpgno▦cpghistseq▦cpgnm▦slipno▦slipnm▦valusgeyn▦valunm▦guidedocucnts
  675. frmf_setParameter("SMMMO041_cpgmntrflag", appstat); //null, SPMMP03200화면에서 cpgmntrflag(M or S)으로 따짐
  676. frmf_setParameter("SMMMO041_cpgappno" , cpgappno); //적용중인 CP가 존재하면 값이 있음
  677. frmf_setParameter("SMMMO041_cpgnm" , cpgnm); //적용중인 CP가 존재하면 값이 있음
  678. frmf_modal("SPMMP03200", "SPMMP03200", null, null, null, null, null, null, null, null, null, null, "P"); //CP대상자 알람 팝업
  679. if( cpgappno > 0 && cpgappno != frmf_getParameter("SPMMP032_cpgappno") && !utlf_isNull(cpyn)){ //진행중인 CP가 있는데 팝업에서 Drop한 경우 CP여부 N으로..
  680. ds_outpatlist.setColumn(currow, "cpyn", "N");
  681. }
  682. if( !isNull(frmf_getParameter("SPMMP032_cpgappno")) && frmf_getParameter("SPMMP032_cpgappno") > 0 ){
  683. parent.parent.SMMMO04100_setDSRoot("cpflag", "Y"); //CPG적용한 경우, MGPS 호출
  684. }else{
  685. parent.parent.SMMMO04100_setDSRoot("cpflag", "N"); //미적용 시 처방 화면 호출
  686. }
  687. frmf_clearParameter("SPMMP032_cpgappno");
  688. frmf_clearParameter("SMMMO041_hngnm");
  689. frmf_clearParameter("SMMMO041_pid");
  690. frmf_clearParameter("SMMMO041_cretno");
  691. frmf_clearParameter("SMMMO041_orddd");
  692. frmf_clearParameter("SMMMO041_ordtype");
  693. frmf_clearParameter("SMMMO041_orddeptcd");
  694. frmf_clearParameter("SMMMO041_slipnm");
  695. frmf_clearParameter("SMMMO041_cpgmntrflag");
  696. frmf_clearParameter("SMMMO041_cpgappno");
  697. frmf_clearParameter("SMMMO041_cpgnm");
  698. return true;
  699. } else{
  700. parent.parent.SMMMO04100_setDSRoot("cpflag", "Y");
  701. return true;
  702. }
  703. }
  704. }
  705. }
  706. function cf_TRMMO04303(sSvcId, nErrorCode, sErrorMsg) {
  707. arErrorCode.push(sSvcId, nErrorCode);
  708. }
  709. /**
  710. * @desc : 외래환자 진료상태 대기로 변경
  711. * @
  712. * @param :
  713. * @return :
  714. * @author : 김영학
  715. * @---------------------------------------------------
  716. */
  717. function fSetOutPatBodStat(stat){
  718. var currow = ds_outpatlist.rowposition;
  719. if(currow < 0){
  720. return;
  721. }
  722. var pid = ds_outpatlist.getColumn(currow, "pid");
  723. var orddd = ds_outpatlist.getColumn(currow, "orddd");
  724. var cretno = ds_outpatlist.getColumn(currow, "cretno");
  725. var elbulbodstat = ds_outpatlist.getColumn(currow, "elbulbodstat");
  726. var orddrid = ds_outpatlist.getColumn(currow, "orddrid");
  727. var orddeptcd = ds_outpatlist.getColumn(currow, "orddeptcd");
  728. var dutplcecd = sysf_getUserInfo("dutplcecd");
  729. if (stat =="1") {
  730. if(!(elbulbodstat == "0"||elbulbodstat == "-")){ //진료대기로 변경
  731. sysf_messageBox("구분이 접수인 환자를", "C002");
  732. return;
  733. }
  734. if(orddrid == "EMR" || orddrid == "11111") {
  735. sysf_messageBox("진료의가 '일반의사' 또는 '의무기록'인 경우 접수 할수 없습니다.\n의사 변경 후 접수 하시기 바랍니다.", "E999");
  736. return;
  737. }
  738. } else if (stat ="0") {
  739. if(elbulbodstat != "1"){ //진료보류 취소
  740. sysf_messageBox("구분이 대기인 환자를", "C002");
  741. return;
  742. }
  743. }
  744. if (orddeptcd != dutplcecd) {
  745. sysf_messageBox("로그인한과와 진료과가 다르면 진료상태를 변경할 수", "I004");
  746. return;
  747. }
  748. ds_reqdata.clearData();
  749. ds_reqdata.addRow();
  750. ds_reqdata.setColumn(0, "pid", pid);
  751. ds_reqdata.setColumn(0, "orddd", orddd);
  752. ds_reqdata.setColumn(0, "cretno", cretno);
  753. var bodstat = "a";
  754. if (stat == "0") {
  755. ds_reqdata.setColumn(0, "elbulbodstat", "0");
  756. } else if (stat =="1") {
  757. ds_reqdata.setColumn(0, "elbulbodstat", "1");
  758. }
  759. var oParam = {};
  760. oParam.id = "TXMMO04203";
  761. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  762. oParam.method = "reqExeBodStat";
  763. oParam.inds = "req=" + "ds_reqdata";
  764. oParam.async = false;
  765. oParam.callback = "cf_TXMMO04203";
  766. tranf_submit(oParam);
  767. }
  768. function cf_TXMMO04203(sSvcId, nErrorCode, sErrorMsg) {
  769. if(nErrorCode > -1)
  770. fReqOutPatList();
  771. }
  772. /**
  773. * @desc : 외래환자 진료상태 대기로 변경
  774. * @
  775. * @param :
  776. * @return :
  777. * @author : 김영학
  778. * @---------------------------------------------------
  779. */
  780. function fPatOrdEnd(){
  781. var currow = ds_outpatlist.rowposition;
  782. if(currow < 0){
  783. return;
  784. }
  785. var elbulbodstat = ds_outpatlist.getColumn(currow, "elbulbodstat");
  786. if ( elbulbodstat == "9" ) {
  787. sysf_messageBox("미접수환자는 진행이 불가능 합니다.","E");
  788. return;
  789. }
  790. fSetOutPatBodStat("1");
  791. }
  792. /**
  793. * @desc : 외래환자 진료상태 접수로 변경
  794. * @
  795. * @param :
  796. * @return :
  797. * @author : 김영학
  798. * @---------------------------------------------------
  799. */
  800. function fPatOrdEndCncl(){
  801. var currow = ds_outpatlist.rowposition;
  802. if(currow < 0){
  803. return;
  804. }
  805. var elbulbodstat = ds_outpatlist.getColumn(currow, "elbulbodstat");
  806. if ( elbulbodstat == "9" ) {
  807. sysf_messageBox("미접수환자는 진행이 불가능 합니다.","E");
  808. return;
  809. }
  810. fSetOutPatBodStat("0");
  811. }
  812. function fGrdInit() {
  813. if (Div00.chk_speedflag.value == "Y") {
  814. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "centcd"), "size", 0);
  815. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "subdeptcd"), "size", 0);
  816. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "orddrnm"), "size", 0);
  817. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "anodeptyn"), "size", 0);
  818. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "spclflag"), "size", 0);
  819. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "testrslt"), "size", 0);
  820. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "serdiag"), "size", 0);
  821. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "insukind"), "size", 0);
  822. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "trsmrem"), "size", 0);
  823. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "conctypenm"), "size", 0);
  824. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "antidrugflag"), "size", 0);
  825. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "coordflag"), "size", 0);
  826. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "cpyn"), "size", 0);
  827. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "onestop"), "size", 0);
  828. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "preworkup"), "size", 0);
  829. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "hsctpreday"), "size", 0);
  830. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "transtype"), "size", 0);
  831. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "hsctday"), "size", 0);
  832. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "postcxday"), "size", 0);
  833. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "rsrvflag"), "size", 0);
  834. grd_outpatlist.setFormatColProperty(grd_outpatlist.getBindCellIndex("body", "bfjudgvalue"), "size", 0);
  835. } else {
  836. setOrderInfoOfCol(grd_outpatlist, ds_gridseq); //외래환자리스트 컬럼 설정
  837. }
  838. }
  839. /**
  840. * @desc : 진료대상자 리스트 출력
  841. * @
  842. * @param :
  843. * @return :
  844. * @author : 김영학
  845. * @---------------------------------------------------
  846. */
  847. function fPrtPatList() {
  848. if(utlf_isNull(ds_cond.getColumnInfo("orddeptnm"))) ds_cond.addColumn("orddeptnm", "string");
  849. if(utlf_isNull(ds_cond.getColumnInfo("orddrnm"))) ds_cond.addColumn("orddrnm", "string");
  850. ds_cond.setColumn(0, "orddeptnm", Div00.cmb_orddeptcd.text);
  851. ds_cond.setColumn(0, "orddrnm", Div00.cmb_orddrid.text);
  852. var objDOM = rptf_createDOM(); // DOM 객체 설정
  853. rptf_setNodeListToDOM(objDOM, "/root/main/outpatinfo/outpatlist", ds_outpatlist); // 데이터셋 1
  854. rptf_setNodeListToDOM(objDOM, "/root/main/cond", ds_cond); // 데이터셋 2
  855. //sysf_trace(objDOM.documentElement.source); // XML 내용출력
  856. var objParam = new Object();
  857. objParam.xml_data_XML1 = objDOM.documentElement.source; // 최상의노드 XML 스트링 추출
  858. var option = "open=1;save=1;directprint=0;print=1;zoom=0;callback=cbf_rpt_onFinishPrintXML";
  859. rptf_exeReportPreview30(["RPMMO04102"],[objParam], option);
  860. }
  861. function fChngGrdCellColor(color){
  862. if(color == undefined || color == "" || color == "ffffff")
  863. color = "default";
  864. else
  865. color = "#" + color;
  866. return color;
  867. }
  868. /**
  869. * @desc : 예방접종 0% 적용
  870. * @param :
  871. * @return :
  872. * @author : 김영학
  873. * @---------------------------------------------------
  874. */
  875. function fPatPreProtect0Appl(){
  876. fPatEtcOrdinfo("S", "Vacn");
  877. }
  878. /**
  879. * @desc : 예방접종 0% 적용취소
  880. * @param :
  881. * @return :
  882. * @author : 김영학
  883. * @---------------------------------------------------
  884. */
  885. function fPatPreProtect0Cncl(){
  886. fPatEtcOrdinfo("C", "Vacn");
  887. }
  888. /**
  889. * @desc : 진찰료 0% 적용 (사본발행)
  890. * @param :
  891. * @return :
  892. * @author : 김영학
  893. * @---------------------------------------------------
  894. */
  895. function fPatCopyIss0Appl(){
  896. fPatEtcOrdinfo("S", "Copy");
  897. }
  898. /**
  899. * @desc : 진찰료 0% 적용 취소 (사본발행)
  900. * @param :
  901. * @return :
  902. * @author : 김영학
  903. * @---------------------------------------------------
  904. */
  905. function fPatCopyIss0Cncl(){
  906. fPatEtcOrdinfo("C", "Copy");
  907. }
  908. /**
  909. * @desc : 진찰료 50% 적용 (진단서)
  910. * @param :
  911. * @return :
  912. * @author : 김영학
  913. * @---------------------------------------------------
  914. */
  915. function fPatProf50Appl(){
  916. fPatEtcOrdinfo("S", "Diag");
  917. }
  918. /**
  919. * @desc : 진찰료 50% 적용 취소 (진단서)
  920. * @param :
  921. * @return :
  922. * @author : 김영학
  923. * @---------------------------------------------------
  924. */
  925. function fPatProf50Cncl(){
  926. fPatEtcOrdinfo("C", "Diag");
  927. }
  928. /**
  929. * @desc : 진찰료 50% 적용 (사본발행)
  930. * @param :
  931. * @return :
  932. * @author : 김영학
  933. * @---------------------------------------------------
  934. */
  935. function fPatCopyIss50Appl(){
  936. fPatEtcOrdinfo("S", "Copy2");
  937. }
  938. /**
  939. * @desc : 진찰료 50% 적용 취소 (사본발행)
  940. * @param :
  941. * @return :
  942. * @author : 김영학
  943. * @---------------------------------------------------
  944. */
  945. function fPatCopyIss50Cncl(){
  946. fPatEtcOrdinfo("C", "Copy2");
  947. }
  948. /**
  949. * @desc : 진찰료 0% 적용 (제증명)
  950. * @param :
  951. * @return :
  952. * @author : 김영학
  953. * @---------------------------------------------------
  954. */
  955. function fPatProf0Appl(){
  956. fPatEtcOrdinfo("S", "Diag2");
  957. }
  958. /**
  959. * @desc : 진찰료 0% 적용 취소 (제증명)
  960. * @param :
  961. * @return :
  962. * @author : 김영학
  963. * @---------------------------------------------------
  964. */
  965. function fPatProf0Cncl(){
  966. fPatEtcOrdinfo("C", "Diag2");
  967. }
  968. /**
  969. * @desc : 진찰료 변경 적용 및 취소
  970. * @param :
  971. * @return :
  972. * @author : 김영학
  973. * @---------------------------------------------------
  974. */
  975. function fPatEtcOrdinfo(SetFlag, EtcOrdFlag){
  976. var flag = "";
  977. var iRow = ds_outpatlist.rowposition;; //2010.03.06 JJE
  978. var etcordflag = ds_outpatlist.getColumn(iRow, "etcordflag");
  979. var elbulbodstat = ds_outpatlist.getColumn(iRow, "elbulbodstat");
  980. if ( elbulbodstat == "9" ) {
  981. sysf_messageBox("미접수환자는 진행이 불가능 합니다.","E");
  982. return;
  983. }
  984. if(SetFlag == "S"){
  985. /*
  986. if(etcordflag != "" && etcordflag != "-"){
  987. messageBox("이미 등록된 내역이 있습니다.", " I");
  988. return;
  989. }
  990. */
  991. //등록
  992. if(EtcOrdFlag == "Diag"){
  993. flag = "A";
  994. } else if(EtcOrdFlag == "Copy"){
  995. flag = "B";
  996. } else if(EtcOrdFlag == "Vacn"){
  997. flag = "C";
  998. } else if(EtcOrdFlag == "Diag2"){
  999. flag = "D";
  1000. } else if(EtcOrdFlag == "Copy2"){
  1001. flag = "E";
  1002. }
  1003. }else{
  1004. if(etcordflag == "" || etcordflag == "-"){
  1005. sysf_messageBox("취소할 내역이 없습니다.", "I");
  1006. return;
  1007. }
  1008. if(EtcOrdFlag == "Diag" || EtcOrdFlag == "Diag2"){
  1009. if(etcordflag != "G"){
  1010. sysf_messageBox("취소할 수 없습니다.", "I");
  1011. return;
  1012. }
  1013. }else if(EtcOrdFlag == "Copy"){ //Copy: 진찰료 0%(사본발행) 취소
  1014. if(etcordflag != "K"){
  1015. sysf_messageBox("취소할 수 없습니다.", "I");
  1016. return;
  1017. }
  1018. }else if(EtcOrdFlag == "Copy2"){ //Copy2: 진찰료 50%(사본발행) 취소
  1019. if(etcordflag != "D"){
  1020. sysf_messageBox("취소할 수 없습니다.", "I");
  1021. return;
  1022. }
  1023. }else if(EtcOrdFlag == "Vacn"){
  1024. if(etcordflag != "L"){
  1025. sysf_messageBox("취소할 수 없습니다.", "I");
  1026. return;
  1027. }
  1028. }
  1029. flag = "-"; //취소
  1030. }
  1031. ds_data.clearData();
  1032. ds_data.addRow();
  1033. ds_data.setColumn(0, "flag", flag);
  1034. ds_data.setColumn(0, "otpt_pid", ds_outpatlist.getColumn(iRow, "pid"));
  1035. ds_data.setColumn(0, "otpt_orddd", ds_outpatlist.getColumn(iRow, "orddd"));
  1036. ds_data.setColumn(0, "otpt_cretno", ds_outpatlist.getColumn(iRow, "cretno"));
  1037. var oParam = {};
  1038. oParam.id = "TXMNO00107";
  1039. oParam.service = "outcareapp.OutCareMngt";
  1040. oParam.method = "reqSetEtcOrdFlagUpdt";
  1041. oParam.inds = "req=" + "ds_data";
  1042. oParam.async = false;
  1043. oParam.callback = "cf_TXMNO00107";
  1044. tranf_submit(oParam);
  1045. }
  1046. function cf_TXMNO00107(sSvcId, nErrorCode, sErrorMsg) {
  1047. if(nErrorCode > -1) {
  1048. fReqOutPatList();
  1049. }
  1050. }
  1051. function fOpenChgDrGrup() {
  1052. div_chgdrinfo.visible = true;
  1053. }
  1054. function fChgDrInfo() {
  1055. var iRow = ds_outpatlist.rowposition;
  1056. // 접수 상태일때만 의사변경 가능하도록 함.
  1057. var elbulbodstat = ds_outpatlist.getColumn(iRow, "elbulbodstat");
  1058. var orddeptcd = ds_cond.getColumn(0, "orddeptcd");
  1059. if (elbulbodstat != "0" ) {
  1060. sysf_messageBox("환자 접수 상태일때만 의사변경이 가능합니다.", "C") ;
  1061. return;
  1062. }
  1063. // 진료과가 같을 경우만 업데이트 가능하도록 함.
  1064. if (orddeptcd != sysf_getUserInfo("dutplcecd")) {
  1065. sysf_messageBox("로그인한 진료과와 환자의 진료과가 같을 경우만 의사 변경이 가능합니다.", "C") ;
  1066. return;
  1067. }
  1068. var pid = ds_outpatlist.getColumn(iRow, "pid");
  1069. var orddd = ds_outpatlist.getColumn(iRow, "orddd");
  1070. var ordtm = ds_outpatlist.getColumn(iRow, "ordtm");
  1071. var cretno = ds_outpatlist.getColumn(iRow, "cretno");
  1072. var subdeptcd = "";//ds_outpatlist.getColumn(iRow, "subdeptcd"); // 해당 컬럼 없음
  1073. var centcd = ds_outpatlist.getColumn(iRow, "centcode");
  1074. var orddrid = ds_outpatlist.getColumn(iRow, "orddrid");
  1075. var rsrvflag = ds_outpatlist.getColumn(iRow, "rsrvflag");
  1076. var instcd = ds_outpatlist.getColumn(iRow, "instcd");
  1077. var fsexamflag = ds_outpatlist.getColumn(iRow, "fsexamflag");
  1078. var chgorddrid = ds_cond.getColumn(0, "chgorddrid");
  1079. if (ds_userlist.lookup("userid", chgorddrid, "refseq") == "A") {
  1080. sysf_messageBox("선택진료의로 변경은 불가능합니다. 원무팀에서 변경하시기 바랍니다.", "C") ;
  1081. return;
  1082. }
  1083. if (ds_userlist.lookup("userid", orddrid, "refseq") == "A") {
  1084. sysf_messageBox("선택진료의에서의 변경은 불가능합니다. 원무팀에서 변경하시기 바랍니다.", "C") ;
  1085. return;
  1086. }
  1087. ds_savedata.clearData();
  1088. ds_savedata.addRow();
  1089. ds_savedata.setColumn(0, "otpt_workflag" , "J");
  1090. ds_savedata.setColumn(0, "otpt_pid" , pid);
  1091. ds_savedata.setColumn(0, "otpt_orddd_old" , orddd);
  1092. ds_savedata.setColumn(0, "otpt_ordtm_old" , ordtm);
  1093. ds_savedata.setColumn(0, "otpt_cretno_old" , cretno);
  1094. ds_savedata.setColumn(0, "otpt_orddeptcd_old" , orddeptcd);
  1095. ds_savedata.setColumn(0, "otpt_subdeptcd_old" , subdeptcd);
  1096. ds_savedata.setColumn(0, "otpt_centcd_old" , centcd);
  1097. ds_savedata.setColumn(0, "otpt_orddrid_old" , orddrid);
  1098. ds_savedata.setColumn(0, "otpt_rsrvflag_old" , rsrvflag);
  1099. ds_savedata.setColumn(0, "otpt_orddd_new" , orddd);
  1100. ds_savedata.setColumn(0, "otpt_ordtm_new" , ordtm);
  1101. ds_savedata.setColumn(0, "otpt_cretno_new" , cretno);
  1102. ds_savedata.setColumn(0, "otpt_orddeptcd_new" , orddeptcd);
  1103. ds_savedata.setColumn(0, "otpt_subdeptcd_new" , subdeptcd);
  1104. ds_savedata.setColumn(0, "otpt_centcd_new" , centcd);
  1105. ds_savedata.setColumn(0, "otpt_orddrid_new" , chgorddrid);
  1106. ds_savedata.setColumn(0, "otpt_rsrvflag_new" , rsrvflag);
  1107. ds_savedata.setColumn(0, "otpt_updtcnclresn" , "");
  1108. ds_savedata.setColumn(0, "otpt_instcd" , instcd);
  1109. ds_savedata.setColumn(0, "otpt_fsexamflag_old" , fsexamflag);
  1110. ds_savedata.setColumn(0, "checkfsexamyn" , "N");
  1111. ds_savedata.setColumn(0, "sess_userid" , sysf_getUserInfo("userid"));
  1112. // 재조회하기 위한 값을 셋해준다.
  1113. ds_savedata.setColumn(0, "pid" , ds_cond.getColumn(0, "pid"));
  1114. ds_savedata.setColumn(0, "orddd" , ds_cond.getColumn(0, "orddd"));
  1115. ds_savedata.setColumn(0, "orddeptcd" , ds_cond.getColumn(0, "orddeptcd"));
  1116. ds_savedata.setColumn(0, "orddrid" , ds_cond.getColumn(0, "orddrid"));
  1117. ds_savedata.setColumn(0, "elbulbodstat" , ds_cond.getColumn(0, "elbulbodstat"));
  1118. ds_savedata.setColumn(0, "deptflag" , ds_cond.getColumn(0, "deptflag"));
  1119. ds_savedata.setColumn(0, "chkprcp" , ds_cond.getColumn(0, "chkprcp"));
  1120. ds_savedata.setColumn(0, "speedflag" , ds_cond.getColumn(0, "speedflag"));
  1121. var oParam = {};
  1122. oParam.id = "TXMMO04206";
  1123. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  1124. oParam.method = "reqExeChgPatDrInfo";
  1125. oParam.inds = "req=" + "ds_savedata";
  1126. oParam.async = false;
  1127. oParam.callback = "cf_TXMMO04206";
  1128. tranf_submit(oParam);
  1129. }
  1130. function cf_TXMMO04206(sSvcId, nErrorCode, sErrorMsg) {
  1131. if(nErrorCode != 0) {
  1132. sysf_messageBox("의사변경에 실패했습니다.", "C");
  1133. }
  1134. div_chgdrinfo.visible = false;
  1135. fReqOutPatList();
  1136. }
  1137. /**
  1138. * @desc : 안전사고 보고
  1139. * @param :
  1140. * @return :
  1141. * @author : 엄영만
  1142. * @---------------------------------------------------
  1143. */
  1144. function fPatQi(){
  1145. var currow = ds_outpatlist.rowposition;
  1146. var pid = ds_outpatlist.getColumn(currow, "pid");
  1147. var orddd = ds_outpatlist.getColumn(currow, "orddd");
  1148. var cretno = ds_outpatlist.getColumn(currow, "cretno");
  1149. var ordtype = "O";
  1150. var oprsrvno = "";
  1151. frmf_setParameter("SMMQR00100_PARAM2", pid + "▦" + orddd + "▦" + cretno + "▦" + ordtype+"▦" + oprsrvno);
  1152. frmf_modal("SMMQR00100", "SMMQR00100", null, null, null, null, null, null, null, null, null, null, "M");
  1153. }]]></Script>