SMMMO04200.js 69 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819
  1. /*
  2. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  3. 외래환자리스트 ( SMMMO04200_외래환자리스트.xrw - JScript )
  4. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  5. */
  6. var sOUTPATLIST_PATH = "/root/main/outpatinfo/outpatlist";
  7. var sORDERBY = "";
  8. /**
  9. * @desc : 화면 초기화
  10. * @
  11. * @param :SMMMO04200
  12. * @return :
  13. * @author : 오지훈
  14. * @---------------------------------------------------
  15. */
  16. function fInitialize_SMMMO04200(){
  17. model.removeNodeset(sOUTPATLIST_PATH);
  18. model.setValue("/root/main/cond/orddd", getCurrentDate());
  19. // 75 당일 선결과 사용 유무조회
  20. // 95 보호자대진 적용여부
  21. // 191 진료대상자 외래 마우스 오른쪽 버튼 메뉴 설정을 위한 값 조회
  22. // 134 20091007 JJE 추가 : 주진료과 의사가 진료지원과의 선택진료의사 선택 여부 조회
  23. // 135 당일 선결과 사용 유무조회
  24. fGethardcdArrayList(new Array(
  25. "dayaftrcptyn|75",
  26. "patprotector|95",
  27. "menu|191",
  28. "selspecordyn|134",
  29. "ordordershow|135"
  30. ),
  31. new Array(
  32. "/root/init",
  33. "/root/init",
  34. "/root/popupmenu",
  35. "/root/init",
  36. "/root/init"
  37. )
  38. );
  39. var openflag = model.getValue(opener.root.list.outpatlistflag); //외래환자리스트 open여부
  40. var reopenflag = model.getValue(opener.root.reopen.reopenflag); //진료대상자 리스트 open여부
  41. var chngcolflag= model.getValue(opener.root.chngcol.chngcolflag); //컬럼변경 여부
  42. if(openflag == "N"){
  43. zbcfGetCodeList(new Array("M0062",
  44. "P0008",
  45. "P0021",
  46. "P0022",
  47. "P1059",
  48. "P0341",
  49. "M0525",
  50. "M0623"),
  51. new Array("/root/init/M0062",
  52. "/root/init/P0008",
  53. "/root/init/P0021",
  54. "/root/init/P0022",
  55. "/root/init/P0159",
  56. "/root/init/P0341",
  57. "/root/init/M0525",
  58. "/root/init/M0623"));
  59. mmbfGetDeptCodeComboList("/root/send/reqdata", "/root/init/orddept", "O");
  60. mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", getUserInfo("dutplcecd"), "0330");
  61. addComboInstance("/root/init/userlist", "userid^usernm", "-^전체", "usercombo"); //의사콤보 전체항목 추가
  62. model.copyNode(opener.root.temp.outpatlist, root.init);
  63. model.setValue(opener.root.list.outpatlistflag, "Y");
  64. //fGrdInit();// 그리드 초기화 SPEED 모드일 경우 컬럼의 수를 제한한다.
  65. if(reopenflag != "Y"){ //다시 열린 경우가 아니면, 기본 조회 조건 설정
  66. model.setValue("/root/main/cond/orddeptcd", getUserInfo("dutplcecd"));
  67. model.setValue("/root/main/cond/orddrid" , getUserInfo("userid"));
  68. var sUserEnv057 = mmbfGetUserEnvQuestValue("057"); // 진료대상자 외래탭 지연환자 표시여부
  69. if(sUserEnv057 == "001") { // 지연환자 표시일경우
  70. var sUserEnv058 = mmbfGetUserEnvQuestValue("058"); // 진료대상자 외래탭 지연환자 지연시간
  71. var sUserEnv059 = mmbfGetUserEnvQuestValue("059"); // 진료대상자 외래탭 지연환자 지연 제외시간
  72. if(sUserEnv058 == "001") { model.setValue("/root/main/cond/delaytime", "10");
  73. } else if(sUserEnv058 == "002") { model.setValue("/root/main/cond/delaytime", "20");
  74. } else if(sUserEnv058 == "003") { model.setValue("/root/main/cond/delaytime", "30");
  75. } else if(sUserEnv058 == "004") { model.setValue("/root/main/cond/delaytime", "40");
  76. } else if(sUserEnv058 == "005") { model.setValue("/root/main/cond/delaytime", "50");
  77. } else if(sUserEnv058 == "006") { model.setValue("/root/main/cond/delaytime", "60");
  78. } else { model.setValue("/root/main/cond/delaytime", "30");
  79. }
  80. if(sUserEnv059 == "001") { model.setValue("/root/main/cond/delayexpt", "0");
  81. } else if(sUserEnv059 == "002") { model.setValue("/root/main/cond/delayexpt", "10");
  82. } else if(sUserEnv059 == "003") { model.setValue("/root/main/cond/delayexpt", "20");
  83. } else if(sUserEnv059 == "004") { model.setValue("/root/main/cond/delayexpt", "30");
  84. } else { model.setValue("/root/main/cond/delayexpt", "10");
  85. }
  86. model.setValue("/root/main/cond/delayflag" , "Y");
  87. } else {
  88. model.setValue("/root/main/cond/delayflag" , "N");
  89. }
  90. model.refresh();
  91. }else{ //다시 열린 경우, main에 ordtab의 condlist(화면이 닫힐때 설정된 정보)를 그대로 재설정
  92. try {
  93. model.copyNode(root.main.cond, opener.root.reopen.condlist.condlist);
  94. } catch(E) {
  95. model.setValue("/root/main/cond/orddeptcd", getUserInfo("dutplcecd"));
  96. model.setValue("/root/main/cond/orddrid" , getUserInfo("userid"));
  97. model.refresh();
  98. }
  99. model.setValue(opener.root.reopen.reopenflag, "N");
  100. mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", cmb_orddept.value, "0330");
  101. addComboInstance("/root/init/userlist", "userid^usernm", "-^전체", "usercombo"); //의사콤보 전체항목 추가
  102. model.refresh();
  103. }
  104. if(cmb_orddrid.label == ""){cmb_orddrid.select(1);} //선택된 의사가 없으면 default로 첫번째 의사를 선택한다.
  105. model.copyNode(opener.root.cond.outpatlist, root.main.cond); //현재 조회조건을 main에 복사
  106. var speedflag = model.getValue("/root/main/cond/speedflag");
  107. if (speedflag != "Y") {
  108. reqOrderInfoOfCol("SMMMO04200", "grd_outpatlist"); //외래환자리스트 컬럼 조회 및 설정
  109. }
  110. }else if(openflag == "Y"){
  111. model.copyNode(root.init, opener.root.temp.outpatlist);
  112. model.copyNode(root.main.cond, opener.root.cond.outpatlist);
  113. var xmlnode = model.instance1.selectSingleNode("/root/init/userscrnenvinfo/gridseq");
  114. if(xmlnode != null){
  115. var refdata = model.getValue("/root/init/userscrnenvinfo/gridseq/compsrefcnts");
  116. var sizedata = model.getValue("/root/init/userscrnenvinfo/gridseq/compssizecnts");
  117. var frozencol = model.getValue("/root/init/userscrnenvinfo/gridseq/frozencol");
  118. setOrderInfoOfCol("grd_outpatlist", refdata, sizedata, frozencol); //외래환자리스트 컬럼 설정, 기존에 조회한 내용으로 처리
  119. }
  120. }
  121. var speedflag = model.getValue("/root/main/cond/speedflag");
  122. if (speedflag != "Y") {
  123. if(chngcolflag == "Y"){ //컬럼설정을 통해 재설정 한 경우, 컬럼순서를 다시 조회 처리
  124. reqOrderInfoOfCol("SMMMO04200", "grd_outpatlist"); //외래환자리스트 컬럼 조회 및 설정
  125. model.setValue(opener.root.chngcol.chngcolflag, "N");
  126. }
  127. }
  128. fReqOutPatList();
  129. opener.javascript.fCtrlBtnDisable(false); //외래환자 리스트 조회가 완료되기 전에는 다른 button을 disabled
  130. }
  131. /**
  132. * @desc : 외래환자 환자 기본정보설정
  133. * @
  134. * @param :
  135. * @return :
  136. * @author : 오지훈
  137. * @---------------------------------------------------
  138. */
  139. function fReqOutPatPamInfo(){
  140. var iRow = grd_outpatlist.row;
  141. var pid = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/pid");
  142. var orddd = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/orddd");
  143. var cretno = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/cretno");
  144. var instcd = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/instcd");
  145. var param = "O" + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd;
  146. setParameter("condparam", param);
  147. modal("SPMMO08900", 1, 0, 0, "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  148. var useyn = getParameter("SPMMO08900_rtn_useyn");
  149. if(useyn == "Y"){
  150. setParameter("SPMMO08900_rtn_useyn", "");
  151. return true;
  152. }else{
  153. return false;
  154. }
  155. }
  156. /**
  157. * @desc : (외래)관심환자등록창 호출
  158. * @
  159. * @param :
  160. * @return :
  161. * @author : 오지훈
  162. * @---------------------------------------------------
  163. */
  164. function fCallWndConcPatRgst(){
  165. var currow = grd_outpatlist.row;
  166. var pid = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/pid");
  167. var hngnm = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/hngnm");
  168. var indd = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddd");
  169. var cretno = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/cretno");
  170. var seqno = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/seqno");
  171. var instcd = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/instcd");
  172. var elbulbodstat = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/elbulbodstat");
  173. if ( elbulbodstat == "9" ) {
  174. messageBox("미접수환자는 진행이 불가능 합니다.","E");
  175. return;
  176. }
  177. var param = "I" + "▩" + pid + "▩" + hngnm + "▩" + indd + "▩" + cretno + "▩" + seqno + "▩" + instcd;
  178. setParameter("param", param);
  179. open("SPMMO08200");
  180. //modal("SPMMO08200");
  181. }
  182. /**
  183. * @desc : (외래)주의요망환자창 호출
  184. * @
  185. * @param :
  186. * @return :
  187. * @author : 엄영만
  188. * @---------------------------------------------------
  189. */
  190. function fCallWndWarnPat(){
  191. var nCurRow = grd_outpatlist.row;
  192. var sPid = model.getValue(sOUTPATLIST_PATH + "[" + nCurRow + "]/pid");
  193. var sHngnm = model.getValue(sOUTPATLIST_PATH + "[" + nCurRow + "]/hngnm");
  194. setParameter("SMMMO19100_warncd" , sPid);
  195. setParameter("SMMMO19100_warnnm" , sHngnm);
  196. modal("SMMMO19100");
  197. clearParameter("SMMMO19100_warncd");
  198. clearParameter("SMMMO19100_warnnm");
  199. fReqOutPatList();
  200. }
  201. /**
  202. * @desc : 외래환자 조회
  203. * @
  204. * @param :
  205. * @return :
  206. * @author : 오지훈
  207. * @---------------------------------------------------
  208. */
  209. function fReqOutPatList(){
  210. model.copyNode("/root/send/reqdata", "/root/main/cond");
  211. var compsrefcnts = model.getValue("/root/init/userscrnenvinfo/gridseq/compsrefcnts");
  212. var compssizecnts = model.getValue("/root/init/userscrnenvinfo/gridseq/compssizecnts");
  213. if(isNull(compsrefcnts)) compsrefcnts = "";
  214. if(isNull(compssizecnts)) compssizecnts = "";
  215. model.makeValue("/root/send/reqdata/compsrefcnts", compsrefcnts);
  216. model.makeValue("/root/send/reqdata/compssizecnts", compssizecnts);
  217. if(submit("TRMMO04201")){
  218. fProcTreatExpt(); //치료제외 삭제 및 숨김처리
  219. model.copyNode(opener.root.temp.outpatlist, root.init);
  220. model.copyNode(opener.root.cond.outpatlist, root.main.cond);
  221. }
  222. var orderby = model.getValue("/root/main/cond/orderby");
  223. var sortcol = model.getValue("/root/main/cond/sortcol");
  224. if(sortcol != "" && orderby != ""){
  225. sORDERBY = orderby;
  226. //alert(grd_outpatlist.colAttribute(sortcol, "ref") + "," + sORDERBY);
  227. //nodeListSort(grd_outpatlist.nodeset, grd_outpatlist.colAttribute(sortcol, "ref"), sORDERBY);
  228. grd_outpatlist.colsort(sortcol) = sORDERBY
  229. grd_outpatlist.sort(1, 1, grd_outpatlist.rows -1, grd_outpatlist.cols -1) = "usersort";
  230. grd_outpatlist.gridToInstance();
  231. }
  232. model.setValue("/root/main/cond/rsltcnt", grd_outpatlist.rows - 1);
  233. model.setValue("/root/main/cond/totcnt", model.getValue("/root/main/outpatinfo/totcnt/totcnt"));
  234. fChngGrdCellColor();
  235. model.refresh();
  236. }
  237. /**
  238. * @desc : 환자 선택 후, 환자 정보 조회 및 기록지 화면 연동
  239. * @
  240. * @param :
  241. * @return :
  242. * @author : 오지훈
  243. * @---------------------------------------------------
  244. */
  245. function fSelectOutPat(){
  246. // 환자 선택 로그 시작
  247. fStartLogCheck("fSelectOutPat");
  248. var step1Elapsed = 0; // 외래 환자선택 진행 가능여부 체크 시간
  249. var step2Elapsed = 0; // 입원 환자선택 상단정보 설정 시간
  250. var step3Elapsed = 0; // 처방+기록+그외 팝업창 처리
  251. var nRow = grd_outpatlist.row;
  252. if(nRow < 1){ return bRtn; }
  253. var elbulbodstat = model.getValue(sOUTPATLIST_PATH + "[" + nRow + "]/elbulbodstat");
  254. if ( elbulbodstat == "9" ) {
  255. messageBox("미접수환자는 진행이 불가능 합니다.","E");
  256. return;
  257. }
  258. var reqptype = model.getValue(sOUTPATLIST_PATH + "["+ nRow +"]/reqptype");
  259. var pid = model.getValue(sOUTPATLIST_PATH + "["+ nRow +"]/pid");
  260. var recflag = opener.model.getValue("/root/main/cond/recflag");
  261. opener.javascript.setParameter("SMMMO04100_reqptype", reqptype);
  262. // 진행가능 한지 여부 체크
  263. fStartLogTempCheck("fSelectOutPat_Step1");
  264. if(!fCheckBfSelectOutPat()) { return; }
  265. step1Elapsed = fEndLogTempCheck("fSelectOutPat_Step1");
  266. // 상단정보 설정
  267. fStartLogTempCheck("fSelectOutPat_Step2");
  268. if(!fReqOutPatPamInfo()) { return; }
  269. step2Elapsed = fEndLogTempCheck("fSelectOutPat_Step2");
  270. // 진료기록, 처방화면 연동
  271. fStartLogTempCheck("fSelectOutPat_Step3");
  272. opener.javascript.fOpenPrcpMainWnd(recflag);
  273. step3Elapsed = fEndLogTempCheck("fSelectOutPat_Step3");
  274. var recnaviyn = opener.model.getValue("/root/main/cond/recnaviyn");
  275. var mainObj = getMainViewer();
  276. var curPrcpObj = mainObj.javascript.getOpenWindow("SMMMO00100"); //활성화된 처방Main 화면 object loading
  277. if (curPrcpObj != null && recnaviyn == "N") { // 처방창이 팝업 된경우만 체크
  278. var sLogParam = "userid:" + getUserInfo("userid") + "|" // item02
  279. + "instcd:" + model.getValue(sOUTPATLIST_PATH + "["+ nRow +"]/instcd") + "|" // item03
  280. + "pid:" + model.getValue(sOUTPATLIST_PATH + "["+ nRow +"]/pid") + "|" // item04
  281. + "orddd:" + model.getValue(sOUTPATLIST_PATH + "["+ nRow +"]/orddd") + "|" // item05
  282. + "cretno:" + model.getValue(sOUTPATLIST_PATH + "["+ nRow +"]/cretno") + "|" // item06
  283. + "orddeptcd:" + model.getValue(sOUTPATLIST_PATH + "["+ nRow +"]/orddeptcd") + "|" // item07
  284. + "orddrid:" + model.getValue(sOUTPATLIST_PATH + "["+ nRow +"]/orddrid") + "|" // item08
  285. + step1Elapsed + "|" // 진행가능 한지 여부 체크 // item09
  286. + step2Elapsed + "|" // 상단정보 // item10
  287. + step3Elapsed // 처방+기록+그외 팝업창 처리 // item11
  288. ;
  289. fEndLogCheck("fSelectOutPat", sLogParam);
  290. }
  291. }
  292. /**
  293. * @desc : 외래 환자 선택후 진행 가능여부 체크 및 메세지 창 팝업.
  294. * @
  295. * @param :
  296. * @return :
  297. * @author : 엄영만
  298. * @---------------------------------------------------
  299. */
  300. function fCheckBfSelectOutPat() {
  301. var nRow = grd_outpatlist.row;
  302. var rsrvflag = model.getValue(sOUTPATLIST_PATH + "["+ nRow +"]/rsrvflag");
  303. var etcordflag = model.getValue(sOUTPATLIST_PATH + "["+ nRow +"]/etcordflag");
  304. var orddrid = model.getValue(sOUTPATLIST_PATH + "["+ nRow +"]/orddrid");
  305. var orddd = model.getValue(sOUTPATLIST_PATH + "["+ nRow +"]/orddd");
  306. var pid = model.getValue(sOUTPATLIST_PATH + "["+ nRow +"]/pid");
  307. var hngnm = model.getValue(sOUTPATLIST_PATH + "["+ nRow +"]/hngnm");
  308. var bfjudgvalue = model.getValue(sOUTPATLIST_PATH + "["+ nRow +"]/bfjudgvalue");
  309. var sSameNameMsg = model.getValue(sOUTPATLIST_PATH + "["+ nRow +"]/samenamemsg");
  310. if( getGlobalVariable("able_sel_patlist", "M") == "N" ) { // 환자 선택 가능 여부 체크 2012.09.03 엄영만
  311. messageBox("현재 로그인한 '"+ getUserInfo("dutplcenm") +"' 부서는 기록저장 및 처방발행이 불가능한 부서 입니다.\n\n다시 로그인 후 진행 하십시오.","E");
  312. return false;
  313. }
  314. var sUseCommonDr = fGetHardCDList("Y", 314, 3); // 일반의 진료 사용 여부
  315. if((orddd >= '20111001') && (sUseCommonDr == "N") && (orddrid == "11111" || orddrid == "EMR") && getUserId() != "EMR" ){
  316. messageBox("일반의사 또는 EⓐR로 접수된 예약은 처방을 입력할 수 없습니다.\n\n진료의사를 변경후 진행 하십시오.","E");
  317. return false;
  318. }
  319. var sBfjudgContinue = fGetHardCDList("Y", 334, 3); // 심사대기 환자선택시 진행 여부(본원:N, 칠곡:Y)
  320. if(sBfjudgContinue == "N" && bfjudgvalue == "심사대기") { // 사전심사 대기중 일경우 환자 선택 불가능 하도록 수정. 심사실요청(20120707012) 2012.07.30 엄영만
  321. messageBox("사전심사가 진행중인 환자입니다.\n\n심사 완료 후 진행 하십시오.","E");
  322. return false;
  323. }
  324. /* 처방 입력 가능 여부 체크
  325. -rsrvflag(예약구분)
  326. S - 슬라이드복사
  327. P - 시행부서처방/APU
  328. 3 - 진단서
  329. 4 - 진료기록
  330. -etcordflag(기타구분)
  331. M - 물리치료
  332. J - 주사
  333. N - 가정간호
  334. E - 실시정산분리
  335. */
  336. if(rsrvflag == "S" || rsrvflag == "3" || rsrvflag == "4" || etcordflag == "E"){ // 주사, 물리치료 제외 특례적용을 위해 진단을 수정 해야 하는 경우가 있음.
  337. messageBox("진료에서 처방을 입력할 수 없는 예약구분입니다.","E");
  338. return false;
  339. }
  340. //처방, CP화면에 modal 또는 modaless가 뜬 경우, 환자 선택 불가
  341. if(!fChkScrnDisable()){ return false; }
  342. //CP환자 여부 확인, update시 에러나면 변경 불가
  343. if(!fChkCPPatValid(nRow)){ return false; }
  344. // 진료기록에 수정된 사항이 있을 경우 저장할 것인지 묻는 함수 호출 : 2009. 07. 27 김영학
  345. var mainobj = getMainViewer();
  346. var mainscrnid = mainobj.javascript.getScreenID(); //메인화면의 기록지 ID
  347. if(mainscrnid == "SMMMR00100"){
  348. var prvIntRecPamInfRtn = mainobj.window.javascript.fPrevInitRecPamInfo();
  349. if(!prvIntRecPamInfRtn){ return false; } // 기록지에 필수 입력사항을 입력하지 않았을 때 그냥 넘어가 버리는 오류 수정 20100305 LYJ
  350. }
  351. if(!isNull(sSameNameMsg)) { // 동명이인 팝업메세지
  352. if("6" != messageBox(sSameNameMsg + "\n\n진행하시겠습니까?", "Q")) {
  353. return false;
  354. }
  355. }
  356. //2011.09.07 엄영만 환자 클릭시 환자정보 체크 SMMMO04100.js 파일 함수 호출 ioflag, pid 인자
  357. if(!fCheckSelectPatInfo("O", pid)){ return false; }
  358. return true;
  359. }
  360. /**
  361. * @desc : 보호자대진 적용, 취소(외래등록 tbl에 etcordflag설정)
  362. * @
  363. * @param : sEtcOrdFlag - 'F' 보호자대진 적용
  364. * : - '-' 보호자대진 취소
  365. * @return :
  366. * @author : 오지훈
  367. * @---------------------------------------------------
  368. */
  369. function fUpdtOutPatPamInfo(sEtcOrdFlag){
  370. var iRow = grd_outpatlist.row;
  371. if(iRow < 1){
  372. return;
  373. }
  374. //20100127 한재상 수정 - 초진은 보호자대진 적용불가.
  375. if ( sEtcOrdFlag == "F" &&
  376. ( model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/fsexamflag") == "D" ||
  377. model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/fsexamflag") == "F" ) ) {
  378. messageBox("초진환자는 보호자 대진적용이 불가능합니다.", "C");
  379. return;
  380. }
  381. var sPID = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/pid");
  382. var sOrdDD = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/orddd");
  383. var sCretNO = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/cretno");
  384. var sInstCD = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/instcd");
  385. var sAcptSeqNO = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/acptseqno");
  386. var sEtcOrdFlag2= model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/etcordflag");
  387. var sHngNM = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/hngnm");
  388. var sUserID = getUserInfo("userid");
  389. var sUserDeptCD = getUserInfo("dutplcecd");
  390. if(sEtcOrdFlag == "C"){
  391. sProcFlag = "C"; //진료취소인 경우 sProcFlag C로 처리
  392. }else if(sEtcOrdFlag == "-"){ //보호자 대진 취소
  393. var msgstr = "취소를";
  394. sProcFlag = "P";
  395. var rtnval = messageBox("[" + sHngNM + "]환자의 보호자 대진 " + msgstr, "Q004");
  396. if(rtnval == 7){ //취소 버튼을 클릭한 경우
  397. return;
  398. }
  399. }else if(sEtcOrdFlag == "F"){ //보호자 대진 적용
  400. if(sEtcOrdFlag2 == "F"){
  401. messageBox("[" + sHngNM + "]환자는 이미 보호자 대진 적용환자", "E008");
  402. return;
  403. }else{
  404. var msgstr = "적용을";
  405. sProcFlag = "P";
  406. }
  407. var rtnval = messageBox("[" + sHngNM + "]환자의 보호자 대진 " + msgstr, "Q004");
  408. if(rtnval == 7){ //취소 버튼을 클릭한 경우
  409. return;
  410. }
  411. }
  412. model.removeNodeset("/root/send/savedata");
  413. model.makeNode("/root/send/savedata/save");
  414. var sSave = "pid▦orddd▦cretno▦instcd▦acptseqno▦userid▦etcordflag▦userdeptcd▦procflag▩";
  415. sSave += sPID + "▦" +
  416. sOrdDD + "▦" +
  417. sCretNO + "▦" +
  418. sInstCD + "▦" +
  419. sAcptSeqNO + "▦" +
  420. sUserID + "▦" +
  421. sEtcOrdFlag + "▦" +
  422. sUserDeptCD + "▦" +
  423. sProcFlag + "▩";
  424. model.makeNode("/root/send/savedata/req");
  425. var sReq = "orddd▦pid▦orddeptcd▦orddrid▦elbulbodstat▦srchdd▦deptflag▩";
  426. sReq += model.getValue("/root/main/cond/orddd") + "▦" +
  427. model.getValue("/root/main/cond/pid") + "▦" +
  428. model.getValue("/root/main/cond/orddeptcd") + "▦" +
  429. model.getValue("/root/main/cond/orddrid") + "▦" +
  430. model.getValue("/root/main/cond/elbulbodstat") + "▦" +
  431. model.getValue("/root/main/cond/orddd") + "▦" +
  432. model.getValue("/root/main/cond/deptflag") + "▩";
  433. model.setValue("/root/send/savedata/save", sSave);
  434. model.setValue("/root/send/savedata/req" , sReq);
  435. if(submit("TXMMO04201")){
  436. }
  437. }
  438. /**
  439. * @desc : 보호자대진 적용
  440. * @
  441. * @param : sEtcOrdFlag - 'F' 보호자대진 적용
  442. *
  443. * @return :
  444. * @author : 오지훈
  445. * @---------------------------------------------------
  446. */
  447. function fRgstPatProtector(){
  448. var currow = grd_outpatlist.row;
  449. if(currow < 1){
  450. return;
  451. }
  452. //마우스 오른쪽버튼 팝업에서 parameter처리가 되지 않아 우선 함수로 나누어 처리, 차후 수정되면 변경예정
  453. var elbulbodstat = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/elbulbodstat");
  454. if ( elbulbodstat == "9" ) {
  455. messageBox("미접수환자는 진행이 불가능 합니다.","E");
  456. return;
  457. }
  458. fUpdtOutPatPamInfo("F");
  459. }
  460. /**
  461. * @desc : 보호자대진 취소
  462. * @
  463. * @param : sEtcOrdFlag - '-' 보호자대진 적용
  464. *
  465. * @return :
  466. * @author : 오지훈
  467. * @---------------------------------------------------
  468. */
  469. function fCnclPatProtector(){
  470. var currow = grd_outpatlist.row;
  471. if(currow < 1){
  472. return;
  473. }
  474. //마우스 오른쪽버튼 팝업에서 parameter처리가 되지 않아 우선 함수로 나누어 처리, 차후 수정되면 변경예정
  475. var elbulbodstat = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/elbulbodstat");
  476. if ( elbulbodstat == "9" ) {
  477. messageBox("미접수환자는 진행이 불가능 합니다.","E");
  478. return;
  479. }
  480. fUpdtOutPatPamInfo("-");
  481. }
  482. /**
  483. * @desc : 진료취소
  484. * @
  485. * @param : sEtcOrdFlag - 'C' 진료취소 적용
  486. * sProcFlag - 'C' 진료취소 flow
  487. *
  488. * @return :
  489. * @author : 오지훈
  490. * @---------------------------------------------------
  491. */
  492. function fPatOrdCncl(){
  493. var currow = grd_outpatlist.row;
  494. if(currow < 1){
  495. return;
  496. }
  497. //마우스 오른쪽버튼 팝업에서 parameter처리가 되지 않아 우선 함수로 나누어 처리, 차후 수정되면 변경예정
  498. var elbulbodstat = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/elbulbodstat");
  499. if ( elbulbodstat == "9" ) {
  500. messageBox("미접수환자는 진행이 불가능 합니다.","E");
  501. return;
  502. }
  503. fUpdtOutPatPamInfo("C");
  504. }
  505. /**
  506. * @desc : 일반유형 변경
  507. * @
  508. * @return :
  509. * @author : 엄영만 2017.02.09
  510. * @---------------------------------------------------
  511. */
  512. function fChangeInsuKind(){
  513. var currow = grd_outpatlist.row;
  514. if(currow < 1){
  515. return;
  516. }
  517. var sPid = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/pid");
  518. var sOrdDd = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddd");
  519. var sCretNo = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/cretno");
  520. var sOrdDeptCd = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddeptcd");
  521. var sInsuKind = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/insukind");
  522. var sDutplceCd = getUserInfo("dutplcecd");
  523. if ( sInsuKind == "51" ) {
  524. messageBox("보험유형이 일반(51)환자는 진행이 불가능 합니다.","E");
  525. return;
  526. }
  527. if (sOrdDeptCd != sDutplceCd) {
  528. messageBox("로그인 부서와 진료과가 다르면 일반유형으로 변경할 수", "I004");
  529. return;
  530. }
  531. if(!fContainsHardCD("555", sOrdDeptCd)) {
  532. messageBox("일반유형으로 변경 기능을 사용할 수 없는 진료과 입니다.", "I999");
  533. return;
  534. }
  535. if("6" == messageBox("보험유형을 일반(51)로 변경 하시겠습니까?", "Q")) {
  536. model.removeNodeset("/root/send/reqdata");
  537. model.makeValue("/root/send/reqdata/pid" , sPid);
  538. model.makeValue("/root/send/reqdata/orddd" , sOrdDd);
  539. model.makeValue("/root/send/reqdata/cretno" , sCretNo);
  540. if(submit("TXMMO04207")==true){
  541. fReqOutPatList();
  542. }
  543. }
  544. }
  545. /**
  546. * @desc : 본인100 보조유형 변경
  547. * @
  548. * @return :
  549. * @author : 엄영만 2017.07.26
  550. * @---------------------------------------------------
  551. */
  552. function fChangeSupKind(){
  553. var currow = grd_outpatlist.row;
  554. if(currow < 1){
  555. return;
  556. }
  557. var sPid = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/pid");
  558. var sOrdDd = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddd");
  559. var sCretNo = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/cretno");
  560. var sOrdDeptCd = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddeptcd");
  561. var sInsuKind = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/insukind");
  562. var sDutplceCd = getUserInfo("dutplcecd");
  563. if ( sInsuKind != "11" ) {
  564. messageBox("보험유형이 건강보험(11) 환자만 진행이 가능 합니다.","E");
  565. return;
  566. }
  567. if (sOrdDeptCd != sDutplceCd) {
  568. messageBox("로그인 부서와 진료과가 다르면 진행할 수", "I004");
  569. return;
  570. }
  571. if("6" == messageBox("보조유형을 전액본인부담(01)로 변경 하시겠습니까?", "Q")) {
  572. model.removeNodeset("/root/send/reqdata");
  573. model.makeValue("/root/send/reqdata/pid" , sPid);
  574. model.makeValue("/root/send/reqdata/orddd" , sOrdDd);
  575. model.makeValue("/root/send/reqdata/cretno" , sCretNo);
  576. if(submit("TXMMO04208")==true){
  577. fReqOutPatList();
  578. }
  579. }
  580. }
  581. /**
  582. * @desc : 일반유형 가접수 생성
  583. * @
  584. * @return :
  585. * @author : 엄영만 2017.07.26
  586. * @---------------------------------------------------
  587. */
  588. function fCreatGenrOtpt(){
  589. var currow = grd_outpatlist.row;
  590. if(currow < 1){
  591. return;
  592. }
  593. var sPid = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/pid");
  594. var sOrdDd = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddd");
  595. var sCretNo = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/cretno");
  596. var sOrdDeptCd = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddeptcd");
  597. var sOrdDrId = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddrid");
  598. var sInsuKind = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/insukind");
  599. var sDutplceCd = getUserInfo("dutplcecd");
  600. if ( sInsuKind == "51" ) {
  601. messageBox("보험유형이 일반(51) 환자는 진행이 불가능 합니다.","E");
  602. return;
  603. }
  604. if (sOrdDeptCd != sDutplceCd) {
  605. messageBox("로그인 부서와 진료과가 다르면 진행할 수", "I004");
  606. return;
  607. }
  608. if("6" == messageBox("보험유형을 일반(51)로 새로운 외래예약을 생성 하시겠습니까?", "Q")) {
  609. model.removeNodeset("/root/send/reqdata");
  610. model.makeValue("/root/send/reqdata/flag" , "I");
  611. model.makeValue("/root/send/reqdata/otpt_pid" , sPid);
  612. model.makeValue("/root/send/reqdata/otpt_orddd" , sOrdDd);
  613. model.makeValue("/root/send/reqdata/otpt_cretno" , sCretNo);
  614. model.makeValue("/root/send/reqdata/otpt_orddeptcd" , sOrdDeptCd);
  615. model.makeValue("/root/send/reqdata/otpt_orddrid" , sOrdDrId);
  616. model.makeValue("/root/send/reqdata/otpt_histstat" , "R");
  617. model.makeValue("/root/send/reqdata/otpt_rsrvflag" , "BB"); // 2017.08.01 보험유형 일반(51) with 이정택
  618. if(submit("TRMMO09101")==true){
  619. fReqOutPatList();
  620. }
  621. }
  622. }
  623. /**
  624. * @desc : 치료제외 삭제 및 숨김처리
  625. * @
  626. * @param :
  627. * @return :
  628. * @author : 오지훈
  629. * @---------------------------------------------------
  630. */
  631. function fProcTreatExpt(){
  632. var dutplcecd = getUserInfo("dutplcecd");
  633. var hardcdno = model.getValue("/root/main/outpatinfo/hardcode[trgtcd = '" + dutplcecd + "']/hardcdno");
  634. if(hardcdno == 2){
  635. model.removeNode("/root/main/outpatinfo/hardcode[hardcdno = '" + 3 + "']");
  636. }else if(hardcdno == 3){
  637. model.removeNode("/root/main/outpatinfo/hardcode[hardcdno = '" + 2 + "']");
  638. }else{
  639. cmb_expt.attribute("visibility") = "hidden";
  640. }
  641. model.refresh();
  642. }
  643. /**
  644. * @desc : 그리드 data 엑셀화일로 저장
  645. * @
  646. * @param :
  647. * @return :
  648. * @author : 오지훈
  649. * @---------------------------------------------------
  650. */
  651. function fSaveGridToExcel(){
  652. saveGridToExcel(grd_outpatlist);
  653. }
  654. /**
  655. * @desc : 협진관리 화면 open
  656. * @
  657. * @param :
  658. * @return :
  659. * @author : 오지훈
  660. * @---------------------------------------------------
  661. */
  662. function fOpenCnstPat(){
  663. var currow = grd_outpatlist.row;
  664. if(currow < 1){
  665. return;
  666. }
  667. var elbulbodstat = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/elbulbodstat");
  668. if ( elbulbodstat == "9" ) {
  669. messageBox("미접수환자는 진행이 불가능 합니다.","E");
  670. return;
  671. }
  672. var pid = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/pid");
  673. var hngnm = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/hngnm");
  674. var sa = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/sexage");
  675. var orddeptcd = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddeptcd");
  676. var orddrid = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddrid");
  677. var orddrnm = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddrnm");
  678. var orddd = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddd");
  679. var cretno = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/cretno");
  680. var coordflag = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/coordflag");
  681. var patinfo = hngnm + "▦" + sa + "▦" + orddeptcd + "▦" + orddrid + "▦" + cretno + "▦" + orddrnm + "▦" + coordflag;
  682. setParameter("SPMMO03600_pid" , pid);
  683. setParameter("SPMMO03600_orddd" , orddd);
  684. setParameter("SPMMO03600_patinfo", patinfo);
  685. setParameter("SPMMO03600_ioflag" , "O");
  686. modal("SPMMO03600");
  687. fReqOutPatList();
  688. }
  689. /**
  690. * @desc : CP환자 여부 검사
  691. * @
  692. * @param :
  693. * @return :
  694. * @author : 오지훈
  695. * @---------------------------------------------------
  696. */
  697. function fChkCPPatValid(currow){
  698. var pid = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/pid");
  699. var orddd = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddd");
  700. var cretno = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/cretno");
  701. var hngnm = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/hngnm");
  702. var orddeptcd = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddeptcd");
  703. var ordtype = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/ordtype");
  704. if(isNull(orddeptcd)) orddeptcd = model.getValue("/root/main/cond/orddeptcd");
  705. if(isNull(ordtype)) ordtype = "O";
  706. model.removeNodeset("/root/send/reqdata");
  707. model.makeValue("/root/send/reqdata/pid" , pid);
  708. model.makeValue("/root/send/reqdata/orddd" , orddd);
  709. model.makeValue("/root/send/reqdata/cretno" , cretno);
  710. model.makeValue("/root/send/reqdata/hngnm" , hngnm); //추가(2008.08.25)
  711. model.makeValue("/root/send/reqdata/prcpgenrflag", ordtype);
  712. model.makeValue("/root/send/reqdata/srchtabflag" , "O"); //대상자리스트탭 구분
  713. if(submit("TRMMO04303")==true){
  714. var cppatnode = model.instance1.selectNodes("/root/init/rsltgetdata/getdata");
  715. if(cppatnode.length < 1){ //cp적용환자 tbl에 유효한 데이터가 없는 경우
  716. model.setValue(opener.root.cpflag, "N"); //처방open
  717. return true;
  718. }else{ //CP적용환자 tbl에 유효한 데이터가 있는 경우
  719. var appyn = model.getValue("/root/init/rsltgetdata/getdata/appyn");
  720. var appstat = model.getValue("/root/init/rsltgetdata/getdata/appstat");
  721. var cpgnm = model.getValue("/root/init/rsltgetdata/getdata/cpgnm");
  722. var cpgappno = model.getValue("/root/init/rsltgetdata/getdata/cpgappno");
  723. var msgcnts = model.getValue("/root/init/rsltgetdata/getdata/msgcnts");
  724. var msgflag = model.getValue("/root/init/rsltgetdata/getdata/msgflag");
  725. var prtlflagcd = model.getValue("/root/init/rsltgetdata/getdata/prtlflagcd"); //01:CP,02:CPG
  726. if(appstat == 11){ //CP적용상태가 11인 경우
  727. var rtnval = messageBox(msgcnts, msgflag);
  728. if(rtnval == 6){ //예 선택, CP Main open, CP적용환자 tbl에 appstat 10 진행중
  729. model.setValue(opener.root.cpflag, "Y");
  730. return fUpdtCPPatAppStatVal(10);
  731. }else{ //아니오 선택, 처방 Main open, CP적용환자 tbl에 appstat 50 : CP Drop
  732. messageBox(msgcnts, msgflag);
  733. setParameter("SMMMO043_cpgappno", cpgappno); //drop 팝업에서 인식할 수 있는 param
  734. setParameter("SMMMO043_drop" , "N"); //drop 팝업에서 인식할 수 있는 param
  735. modal("SPMMP02300"); //Drop 팝업 호출
  736. model.setValue(opener.root.cpflag, "N");
  737. if(getParameter("SMMMO043_drop") == "Y" && instance1.selectSingleNode(sOUTPATLIST_PATH + "[" + currow + "]/cpyn") != null){
  738. model.setValue(sOUTPATLIST_PATH + "[" + currow + "]/cpyn", "N");
  739. }else{
  740. return false;
  741. }
  742. clearParameter("SMMMO043_cpgappno");
  743. clearParameter("SMMMO043_drop");
  744. return true;
  745. }
  746. }else if(appstat == 53){
  747. model.setValue(opener.root.cpflag, "X");
  748. return true;
  749. }else{ //CP적용상태가 11가 아닌 경우, CP Main창 open
  750. if( prtlflagcd == "02" && isNull(appstat) && msgflag == "P" ){ //CPG & 호출flag:Popup & 모니터링구분:대상자탐색 (appyn:평가용여부)
  751. //CPG적용대상자 알림 팝업 호출 (2009.05.04)
  752. setParameter("SMMMO041_hngnm" , hngnm);
  753. setParameter("SMMMO041_pid" , pid);
  754. setParameter("SMMMO041_cretno" , cretno);
  755. setParameter("SMMMO041_orddd" , orddd);
  756. setParameter("SMMMO041_ordtype" , ordtype);
  757. setParameter("SMMMO041_orddeptcd" , orddeptcd);
  758. setParameter("SMMMO041_slipnm" , model.getValue(root.init.rsltgetdata.getdata.msgcnts)); //cpgno▦cpghistseq▦cpgnm▦slipno▦slipnm▦valusgeyn▦valunm▦guidedocucnts
  759. setParameter("SMMMO041_cpgmntrflag", appstat); //null, SPMMP03200화면에서 cpgmntrflag(M or S)으로 따짐
  760. setParameter("SMMMO041_cpgappno" , cpgappno); //적용중인 CP가 존재하면 값이 있음
  761. setParameter("SMMMO041_cpgnm" , cpgnm); //적용중인 CP가 존재하면 값이 있음
  762. modal("SPMMP03200"); //CP대상자 알람 팝업
  763. if( cpgappno > 0 && cpgappno != getParameter("SPMMP032_cpgappno") && instance1.selectSingleNode(sOUTPATLIST_PATH + "[" + currow + "]/cpyn") != null){ //진행중인 CP가 있는데 팝업에서 Drop한 경우 CP여부 N으로..
  764. model.setValue(sOUTPATLIST_PATH + "[" + currow + "]/cpyn", "N");
  765. }
  766. if( !isNull(getParameter("SPMMP032_cpgappno")) && getParameter("SPMMP032_cpgappno") > 0 ){
  767. model.setValue(opener.root.cpflag, "Y"); //CPG적용한 경우, MGPS 호출
  768. }else{
  769. model.setValue(opener.root.cpflag, "N"); //미적용 시 처방 화면 호출
  770. }
  771. clearParameter("SPMMP032_cpgappno");
  772. clearParameter("SMMMO041_hngnm");
  773. clearParameter("SMMMO041_pid");
  774. clearParameter("SMMMO041_cretno");
  775. clearParameter("SMMMO041_orddd");
  776. clearParameter("SMMMO041_ordtype");
  777. clearParameter("SMMMO041_orddeptcd");
  778. clearParameter("SMMMO041_slipnm");
  779. clearParameter("SMMMO041_cpgmntrflag");
  780. clearParameter("SMMMO041_cpgappno");
  781. clearParameter("SMMMO041_cpgnm");
  782. return true;
  783. } else{
  784. model.setValue(opener.root.cpflag, "Y");
  785. return true;
  786. }
  787. }
  788. }
  789. } //end submit
  790. }
  791. /**
  792. * @desc : 진료 보류
  793. * @
  794. * @param :
  795. * @return :
  796. * @author : 오지훈
  797. * @---------------------------------------------------
  798. */
  799. function fPatOrdHold(){
  800. fSetPatOrdStat("3");
  801. }
  802. /**
  803. * @desc : 진료 보류 취소
  804. * @
  805. * @param :
  806. * @return :
  807. * @author : 오지훈
  808. * @---------------------------------------------------
  809. */
  810. function fPatOrdHoldCncl(){
  811. fSetPatOrdStat("4");
  812. }
  813. /**
  814. * @desc : 외래환자 진료상태 변경
  815. * @
  816. * @param :
  817. * @return :
  818. * @author : 오지훈
  819. * @---------------------------------------------------
  820. */
  821. function fSetPatOrdStat(procflag){
  822. var currow = grd_outpatlist.row;
  823. if(currow < 1){
  824. return;
  825. }
  826. var pid = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/pid");
  827. var orddd = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddd");
  828. var cretno= model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/cretno");
  829. var elbulbodstat = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/elbulbodstat");
  830. if(procflag == "4" && elbulbodstat != "3"){ //진료보류 취소
  831. messageBox("진료 상태가 보류인 환자를", "C002");
  832. return;
  833. }
  834. model.removeNodeset("/root/send/reqdata");
  835. model.makeValue("/root/send/reqdata/pid" , pid);
  836. model.makeValue("/root/send/reqdata/orddd" , orddd);
  837. model.makeValue("/root/send/reqdata/cretno" , cretno);
  838. model.makeValue("/root/send/reqdata/procflag", procflag);
  839. if(submit("TXMMO04202")==true){
  840. fReqOutPatList();
  841. }
  842. }
  843. /**
  844. * @desc : 외래환자 진료상태 대기로 변경
  845. * @
  846. * @param :
  847. * @return :
  848. * @author : 김영학
  849. * @---------------------------------------------------
  850. */
  851. function fSetOutPatBodStat(stat){
  852. var currow = grd_outpatlist.row;
  853. if(currow < 1){
  854. return;
  855. }
  856. var pid = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/pid");
  857. var orddd = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddd");
  858. var cretno = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/cretno");
  859. var elbulbodstat = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/elbulbodstat");
  860. var orddrid = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddrid");
  861. var orddeptcd = model.getValue("/root/main/cond/orddeptcd");
  862. var dutplcecd = getUserInfo("dutplcecd");
  863. if (stat =="1") {
  864. if(!(elbulbodstat == "0"||elbulbodstat == "-")){ //진료대기로 변경
  865. messageBox("구분이 접수인 환자를", "C002");
  866. return;
  867. }
  868. if(orddrid == "EMR" || orddrid == "11111") {
  869. messageBox("진료의가 '일반의사' 또는 '의무기록'인 경우 접수 할수 없습니다.\n의사 변경 후 접수 하시기 바랍니다.", "E999");
  870. return;
  871. }
  872. } else if (stat ="0") {
  873. if(elbulbodstat != "1"){ //진료보류 취소
  874. messageBox("구분이 대기인 환자를", "C002");
  875. return;
  876. }
  877. }
  878. if (orddeptcd != dutplcecd) {
  879. messageBox("로그인한과와 진료과가 다르면 진료상태를 변경할 수", "I004");
  880. return;
  881. }
  882. model.removeNodeset("/root/send/reqdata");
  883. model.makeValue("/root/send/reqdata/pid" , pid);
  884. model.makeValue("/root/send/reqdata/orddd" , orddd);
  885. model.makeValue("/root/send/reqdata/cretno" , cretno);
  886. var bodstat = "a"
  887. if (stat == "0") {
  888. bodstat = model.makeValue("/root/send/reqdata/elbulbodstat", "0");
  889. } else if (stat =="1") {
  890. bodstat = model.makeValue("/root/send/reqdata/elbulbodstat", "1");
  891. }
  892. if(submit("TXMMO04203")==true){
  893. fReqOutPatList();
  894. }
  895. }
  896. /**
  897. * @desc : 외래환자 진료상태 대기로 변경
  898. * @
  899. * @param :
  900. * @return :
  901. * @author : 김영학
  902. * @---------------------------------------------------
  903. */
  904. function fPatOrdEnd(){
  905. var currow = grd_outpatlist.row;
  906. if(currow < 1){
  907. return;
  908. }
  909. var elbulbodstat = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/elbulbodstat");
  910. if ( elbulbodstat == "9" ) {
  911. messageBox("미접수환자는 진행이 불가능 합니다.","E");
  912. return;
  913. }
  914. //2018.04.04 DUR 특정질환 검색 로직 추가 엄영만
  915. var sPid = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/pid" );
  916. setParameter("SPMMD00100_ifyn", "Y");
  917. setParameter("SPMMD00100_pid", sPid);
  918. modal("SPMMD00100");
  919. fSetOutPatBodStat("1");
  920. }
  921. /**
  922. * @desc : 외래환자 진료상태 접수로 변경
  923. * @
  924. * @param :
  925. * @return :
  926. * @author : 김영학
  927. * @---------------------------------------------------
  928. */
  929. function fPatOrdEndCncl(){
  930. var currow = grd_outpatlist.row;
  931. if(currow < 1){
  932. return;
  933. }
  934. var elbulbodstat = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/elbulbodstat");
  935. if ( elbulbodstat == "9" ) {
  936. messageBox("미접수환자는 진행이 불가능 합니다.","E");
  937. return;
  938. }
  939. fSetOutPatBodStat("0");
  940. }
  941. /**
  942. * @desc : SPEED 모드 일 경우 컬럼 정
  943. * @
  944. * @param :
  945. * @return :
  946. * @author : 김영학
  947. * @---------------------------------------------------
  948. */
  949. function fGrdInit() {
  950. var speedflag = model.getValue("/root/main/cond/speedflag");
  951. var refdata = model.getValue("/root/init/userscrnenvinfo/gridseq/compsrefcnts");
  952. var sizedata = model.getValue("/root/init/userscrnenvinfo/gridseq/compssizecnts");
  953. var frozencol = model.getValue("/root/init/userscrnenvinfo/gridseq/frozencol");
  954. if (!isNull(refdata)){
  955. setOrderInfoOfCol("grd_outpatlist", refdata, sizedata, frozencol); //외래환자리스트 컬럼 설정, 기존에 조회한 내용으로 처리
  956. }
  957. if (speedflag == "Y") {
  958. grd_outpatlist.colHidden(grd_outpatlist.colRef("elbulbodstat")) = false;
  959. grd_outpatlist.colHidden(grd_outpatlist.colRef("ordtm")) = false;
  960. grd_outpatlist.colHidden(grd_outpatlist.colRef("hngnm")) = false;
  961. grd_outpatlist.colHidden(grd_outpatlist.colRef("pid")) = false;
  962. grd_outpatlist.colHidden(grd_outpatlist.colRef("sexage")) = false;
  963. grd_outpatlist.colHidden(grd_outpatlist.colRef("fsexamflag")) = false;
  964. grd_outpatlist.colHidden(grd_outpatlist.colRef("etcordflag")) = false;
  965. grd_outpatlist.colHidden(grd_outpatlist.colRef("diagnm")) = false;
  966. grd_outpatlist.colHidden(grd_outpatlist.colRef("centcd")) = true;
  967. grd_outpatlist.colHidden(grd_outpatlist.colRef("subdeptcd")) = true;
  968. grd_outpatlist.colHidden(grd_outpatlist.colRef("orddrnm")) = true;
  969. grd_outpatlist.colHidden(grd_outpatlist.colRef("anodeptyn")) = true;
  970. grd_outpatlist.colHidden(grd_outpatlist.colRef("spclflag")) = true;
  971. grd_outpatlist.colHidden(grd_outpatlist.colRef("testrslt")) = true;
  972. grd_outpatlist.colHidden(grd_outpatlist.colRef("serdiag")) = true;
  973. grd_outpatlist.colHidden(grd_outpatlist.colRef("insukind")) = true;
  974. grd_outpatlist.colHidden(grd_outpatlist.colRef("trsmrem")) = true;
  975. grd_outpatlist.colHidden(grd_outpatlist.colRef("conctypenm")) = true;
  976. grd_outpatlist.colHidden(grd_outpatlist.colRef("antidrugflag")) = true;
  977. grd_outpatlist.colHidden(grd_outpatlist.colRef("coordflag")) = true;
  978. grd_outpatlist.colHidden(grd_outpatlist.colRef("cpyn")) = true;
  979. grd_outpatlist.colHidden(grd_outpatlist.colRef("onestop")) = true;
  980. grd_outpatlist.colHidden(grd_outpatlist.colRef("preworkup")) = true;
  981. grd_outpatlist.colHidden(grd_outpatlist.colRef("hsctpreday")) = true;
  982. grd_outpatlist.colHidden(grd_outpatlist.colRef("transtype")) = true;
  983. grd_outpatlist.colHidden(grd_outpatlist.colRef("hsctday")) = true;
  984. grd_outpatlist.colHidden(grd_outpatlist.colRef("postcxday")) = true;
  985. grd_outpatlist.colHidden(grd_outpatlist.colRef("rsrvflag")) = true;
  986. grd_outpatlist.colHidden(grd_outpatlist.colRef("bfjudgvalue")) = true;
  987. } else {
  988. grd_outpatlist.colHidden(grd_outpatlist.colRef("elbulbodstat")) = false;
  989. grd_outpatlist.colHidden(grd_outpatlist.colRef("ordtm")) = false;
  990. grd_outpatlist.colHidden(grd_outpatlist.colRef("hngnm")) = false;
  991. grd_outpatlist.colHidden(grd_outpatlist.colRef("pid")) = false;
  992. grd_outpatlist.colHidden(grd_outpatlist.colRef("sexage")) = false;
  993. grd_outpatlist.colHidden(grd_outpatlist.colRef("fsexamflag")) = false;
  994. grd_outpatlist.colHidden(grd_outpatlist.colRef("etcordflag")) = false;
  995. grd_outpatlist.colHidden(grd_outpatlist.colRef("diagnm")) = false;
  996. grd_outpatlist.colHidden(grd_outpatlist.colRef("centcd")) = false;
  997. grd_outpatlist.colHidden(grd_outpatlist.colRef("subdeptcd")) = false;
  998. grd_outpatlist.colHidden(grd_outpatlist.colRef("orddrnm")) = false;
  999. grd_outpatlist.colHidden(grd_outpatlist.colRef("anodeptyn")) = false;
  1000. grd_outpatlist.colHidden(grd_outpatlist.colRef("spclflag")) = false;
  1001. grd_outpatlist.colHidden(grd_outpatlist.colRef("testrslt")) = false;
  1002. grd_outpatlist.colHidden(grd_outpatlist.colRef("serdiag")) = false;
  1003. grd_outpatlist.colHidden(grd_outpatlist.colRef("insukind")) = false;
  1004. grd_outpatlist.colHidden(grd_outpatlist.colRef("trsmrem")) = false;
  1005. grd_outpatlist.colHidden(grd_outpatlist.colRef("conctypenm")) = false;
  1006. grd_outpatlist.colHidden(grd_outpatlist.colRef("antidrugflag")) = false;
  1007. grd_outpatlist.colHidden(grd_outpatlist.colRef("coordflag")) = false;
  1008. grd_outpatlist.colHidden(grd_outpatlist.colRef("cpyn")) = false;
  1009. grd_outpatlist.colHidden(grd_outpatlist.colRef("onestop")) = false;
  1010. grd_outpatlist.colHidden(grd_outpatlist.colRef("preworkup")) = false;
  1011. grd_outpatlist.colHidden(grd_outpatlist.colRef("hsctpreday")) = false;
  1012. grd_outpatlist.colHidden(grd_outpatlist.colRef("transtype")) = false;
  1013. grd_outpatlist.colHidden(grd_outpatlist.colRef("hsctday")) = false;
  1014. grd_outpatlist.colHidden(grd_outpatlist.colRef("postcxday")) = false;
  1015. grd_outpatlist.colHidden(grd_outpatlist.colRef("rsrvflag")) = false;
  1016. grd_outpatlist.colHidden(grd_outpatlist.colRef("bfjudgvalue")) = false;
  1017. }
  1018. }
  1019. /**
  1020. * @desc : 진료대상자 리스트 출력
  1021. * @
  1022. * @param :
  1023. * @return :
  1024. * @author : 김영학
  1025. * @---------------------------------------------------
  1026. */
  1027. function fPrtPatList() {
  1028. var rptid = "RPMMO04102";
  1029. var desNode = "/root/main/outpatinfo/outpatlist";
  1030. model.makeValue("/root/main/cond/orddeptnm", cmb_orddept.label);
  1031. model.makeValue("/root/main/cond/orddrnm", cmb_orddrid.label);
  1032. exeReportPreview(rptid, "XMLSTR", desNode);
  1033. }
  1034. /**
  1035. * @desc : 진료시작시간을 otpt컬럼에 업데이트
  1036. * @
  1037. * @param :
  1038. * @return :
  1039. * @author : 김영학
  1040. * @---------------------------------------------------
  1041. */
  1042. function fSetOrdStartTm(pid, orddd, cretno, elbulbodstat) {
  1043. model.removenode("/root/send/savedata");
  1044. model.makeValue("/root/send/savedata/pid" , pid);
  1045. model.makeValue("/root/send/savedata/orddd" , orddd);
  1046. model.makeValue("/root/send/savedata/cretno" , cretno);
  1047. model.makeValue("/root/send/savedata/elbulbodstat" , elbulbodstat);
  1048. submit("TXMMO04204");
  1049. }
  1050. /**
  1051. * @desc : 당일선검사 해지
  1052. * @
  1053. * @param :
  1054. * @return :
  1055. * @author : 김영학
  1056. * @---------------------------------------------------
  1057. */
  1058. function fDelDayAftRcpt() {
  1059. var currow = grd_outpatlist.row;
  1060. var pid = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/pid");
  1061. var orddd = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddd");
  1062. var cretno = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/cretno");
  1063. model.makeValue("/root/send/cond1" , pid);
  1064. model.makeValue("/root/send/cond2" , orddd);
  1065. model.makeValue("/root/send/cond3" , cretno);
  1066. model.makeValue("/root/send/cond4" , "N"); //당일결과 체크값
  1067. //model.makeValue("/root/send/cond5" , "2"); // 전광판 상태
  1068. if(submit("TXMMO00114")==true){
  1069. fReqOutPatList();
  1070. var sysMessageobj = getViewer("sysMessage");
  1071. curPrcpObj = sysMessageobj.window.javascript.getOpenWindow("SMMMO00100"); //활성화된 처방Main 화면 object loading
  1072. if (curPrcpObj != null) {
  1073. var prcpPid = curPrcpObj.model.getValue("/root/paminfo/list/pid");
  1074. if (pid == prcpPid) {
  1075. curPrcpObj.model.setValue("/root/paminfo/list/prcptdayaftrcptyn", "N");
  1076. curPrcpObj.model.refresh();
  1077. }
  1078. }
  1079. }
  1080. }
  1081. /**
  1082. * @desc : 당일선검사 적용
  1083. * @
  1084. * @param :
  1085. * @return :
  1086. * @author : 김영학
  1087. * @---------------------------------------------------
  1088. */
  1089. function fAppDayAftRcpt() {
  1090. var currow = grd_outpatlist.row;
  1091. var pid = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/pid");
  1092. var orddd = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddd");
  1093. var cretno = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/cretno");
  1094. model.makeValue("/root/send/cond1" , pid);
  1095. model.makeValue("/root/send/cond2" , orddd);
  1096. model.makeValue("/root/send/cond3" , cretno);
  1097. model.makeValue("/root/send/cond4" , "Y"); // 당일결과 체크값
  1098. //model.makeValue("/root/send/cond5" , "1"); // 전광판 상태
  1099. if(submit("TXMMO00114")==true){
  1100. fReqOutPatList();
  1101. var sysMessageobj = getViewer("sysMessage");
  1102. curPrcpObj = sysMessageobj.window.javascript.getOpenWindow("SMMMO00100"); //활성화된 처방Main 화면 object loading
  1103. if (curPrcpObj != null) {
  1104. var prcpPid = curPrcpObj.model.getValue("/root/paminfo/list/pid");
  1105. if (pid == prcpPid) {
  1106. curPrcpObj.model.setValue("/root/paminfo/list/prcptdayaftrcptyn", "N");
  1107. curPrcpObj.model.refresh();
  1108. }
  1109. }
  1110. }
  1111. }
  1112. /**
  1113. * @desc : 수납 VIP인 경우 VIP알림 팝업
  1114. * @
  1115. * @param :
  1116. * @return :
  1117. * @author : 김영학
  1118. * @---------------------------------------------------
  1119. */
  1120. function fRcptVipResn() {
  1121. //if ( getSystemCd() == "HIS012MDV" || getSystemCd() == "DEV999" ) {
  1122. var currow = grd_outpatlist.row;
  1123. var medamtpostyn = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/medamtpostyn");
  1124. var pid = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/pid");
  1125. var orddd = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddd");
  1126. var cretno = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/cretno");
  1127. if (medamtpostyn == "V") {
  1128. /*
  1129. setParameter("SPMMO17200_rcptvipresncd" , rcptvipresncd);
  1130. setParameter("SPMMO17200_rcptvipetcresn" , rcptvipetcresn);
  1131. setParameter("SPMMO17200_pid" , pid);
  1132. setParameter("SPMMO17200_hngnm" , hngnm);
  1133. */
  1134. setParameter("SPMMO17200_cond" , pid + "▦" + orddd +"▦"+ cretno);
  1135. var argxpt = 310;
  1136. var argypt = 180;
  1137. var xpt = window.screenleft + eval(argxpt);
  1138. var ypt = window.screenTop + eval(argypt);
  1139. var coord = getRelativeCoordinate ( xpt, ypt );
  1140. var mon = coord[0];
  1141. xpt = coord[1];
  1142. ypt = coord[2];
  1143. open ("SPMMO17200", mon, xpt, ypt, "SPMMO17200", "", "", "left:" + xpt + "; height:" + ypt +"; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;", false);
  1144. }
  1145. //}
  1146. }
  1147. /**
  1148. * @desc : 대기환자 색상 설정
  1149. * : 내환자적용 환자는 color instance에 ffffff이외의 값이 들어옴
  1150. * @param :
  1151. * @return :
  1152. * @author : 오지훈
  1153. * @---------------------------------------------------
  1154. */
  1155. function fChngGrdCellColor(){
  1156. for(var currow = 1; currow < grd_outpatlist.rows; currow++){
  1157. var color = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/color");
  1158. if(color == ""){
  1159. color = "ffffff";
  1160. }
  1161. grd_outpatlist.rowStyle(currow, "data", "background-color") = "#" + color;
  1162. var pod = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/pod");
  1163. if( !isNull(pod) && ((pod >= 25 && pod <= 35) || (pod >= 175 && pod <= 185))) { // 수술경과일 1개월, 6개월 글자색 붉은색으로 변경
  1164. grd_outpatlist.cellstyle("color", currow, grd_outpatlist.colRef("pod")) = "#ff0000";
  1165. }
  1166. }
  1167. var ordordershow = model.getValue("/root/init/ordordershow/hardcd/hardcd");
  1168. if(ordordershow == "B" || ordordershow == "A") {
  1169. var row = grd_outpatlist.findRow("ffff99", 1, grd_outpatlist.colRef("color"));
  1170. grd_outpatlist.topRow = row;
  1171. grd_outpatlist.select(parseInt(row)+1, 1, parseInt(row)+1,grd_outpatlist.cols-1) = true;
  1172. }
  1173. grd_outpatlist.refresh();
  1174. }
  1175. /**
  1176. * @group :
  1177. * @ver : 2007.04.11
  1178. * @by : 김병국
  1179. * @---------------------------------------------------
  1180. * @type : function
  1181. * @access : public
  1182. * @desc :
  1183. * @param :
  1184. * @return :
  1185. * @---------------------------------------------------
  1186. */
  1187. /**
  1188. * @desc : 특이환자 메시지
  1189. * @
  1190. * @param :
  1191. * @return :
  1192. * @author : 김영학
  1193. * @---------------------------------------------------
  1194. */
  1195. function fCivilApPatInfo() {
  1196. var currow = grd_outpatlist.row;
  1197. var civilap = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/civilap");
  1198. var pid = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/pid");
  1199. var orddd = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddd");
  1200. if (civilap == "Y") {
  1201. setParameter("SPMMO18300_param" , pid + "▦" + orddd);
  1202. var argxpt = 610;
  1203. var argypt = 180;
  1204. var xpt = window.screenleft + eval(argxpt);
  1205. var ypt = window.screenTop + eval(argypt);
  1206. var coord = getRelativeCoordinate ( xpt, ypt );
  1207. var mon = coord[0];
  1208. xpt = coord[1];
  1209. ypt = coord[2];
  1210. open ("SPMMO18300", mon, xpt, ypt, "SPMMO18300", "", "", "left:" + xpt + "; height:" + ypt +"; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;", false);
  1211. }
  1212. }
  1213. /**
  1214. * @desc : 진료대상자에서 환자 선택시 보호대 대진 적용 (2009.05 .28 김영학)
  1215. * @
  1216. * @param :
  1217. * @return :
  1218. * @author : 김영학
  1219. * @---------------------------------------------------
  1220. */
  1221. function fRgstPatProtectorRepl() {
  1222. var iRow = grd_outpatlist.row;
  1223. var sPID = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/pid");
  1224. var sOrdDD = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/orddd");
  1225. var sCretNO = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/cretno");
  1226. var sInstCD = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/instcd");
  1227. var sAcptSeqNO = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/acptseqno");
  1228. var sEtcOrdFlag = "F"
  1229. var sProcFlag = "P"
  1230. var sHngNM = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/hngnm");
  1231. var sUserID = getUserInfo("userid");
  1232. var sUserDeptCD = getUserInfo("dutplcecd");
  1233. model.removeNodeset("/root/send/savedata");
  1234. model.makeNode("/root/send/savedata/save");
  1235. var sSave = "pid▦orddd▦cretno▦instcd▦acptseqno▦userid▦etcordflag▦userdeptcd▦procflag▩";
  1236. sSave += sPID + "▦" +
  1237. sOrdDD + "▦" +
  1238. sCretNO + "▦" +
  1239. sInstCD + "▦" +
  1240. sAcptSeqNO + "▦" +
  1241. sUserID + "▦" +
  1242. sEtcOrdFlag + "▦" +
  1243. sUserDeptCD + "▦" +
  1244. sProcFlag + "▩";
  1245. model.makeNode("/root/send/savedata/req");
  1246. var sReq = "orddd▦pid▦orddeptcd▦orddrid▦elbulbodstat▦srchdd▦deptflag▩";
  1247. sReq += model.getValue("/root/main/cond/orddd") + "▦" +
  1248. model.getValue("/root/main/cond/pid") + "▦" +
  1249. model.getValue("/root/main/cond/orddeptcd") + "▦" +
  1250. model.getValue("/root/main/cond/orddrid") + "▦" +
  1251. model.getValue("/root/main/cond/elbulbodstat") + "▦" +
  1252. model.getValue("/root/main/cond/orddd") + "▦" +
  1253. model.getValue("/root/main/cond/deptflag") + "▩";
  1254. model.setValue("/root/send/savedata/save", sSave);
  1255. model.setValue("/root/send/savedata/req" , sReq);
  1256. if(submit("TXMMO04201", false)){
  1257. }
  1258. }
  1259. /**
  1260. * @desc : 예방접종 0% 적용
  1261. * @param :
  1262. * @return :
  1263. * @author : 김영학
  1264. * @---------------------------------------------------
  1265. */
  1266. function fPatPreProtect0Appl(){
  1267. fPatEtcOrdinfo("S", "Vacn");
  1268. }
  1269. /**
  1270. * @desc : 예방접종 0% 적용취소
  1271. * @param :
  1272. * @return :
  1273. * @author : 김영학
  1274. * @---------------------------------------------------
  1275. */
  1276. function fPatPreProtect0Cncl(){
  1277. fPatEtcOrdinfo("C", "Vacn");
  1278. }
  1279. /**
  1280. * @desc : 진찰료 0% 적용 (사본발행)
  1281. * @param :
  1282. * @return :
  1283. * @author : 김영학
  1284. * @---------------------------------------------------
  1285. */
  1286. function fPatCopyIss0Appl(){
  1287. fPatEtcOrdinfo("S", "Copy");
  1288. }
  1289. /**
  1290. * @desc : 진찰료 0% 적용 취소 (사본발행)
  1291. * @param :
  1292. * @return :
  1293. * @author : 김영학
  1294. * @---------------------------------------------------
  1295. */
  1296. function fPatCopyIss0Cncl(){
  1297. fPatEtcOrdinfo("C", "Copy");
  1298. }
  1299. /**
  1300. * @desc : 진찰료 50% 적용 (진단서)
  1301. * @param :
  1302. * @return :
  1303. * @author : 김영학
  1304. * @---------------------------------------------------
  1305. */
  1306. function fPatProf50Appl(){
  1307. fPatEtcOrdinfo("S", "Diag");
  1308. }
  1309. /**
  1310. * @desc : 진찰료 50% 적용 취소 (진단서)
  1311. * @param :
  1312. * @return :
  1313. * @author : 김영학
  1314. * @---------------------------------------------------
  1315. */
  1316. function fPatProf50Cncl(){
  1317. fPatEtcOrdinfo("C", "Diag");
  1318. }
  1319. /**
  1320. * @desc : 진찰료 50% 적용 (사본발행)
  1321. * @param :
  1322. * @return :
  1323. * @author : 김영학
  1324. * @---------------------------------------------------
  1325. */
  1326. function fPatCopyIss50Appl(){
  1327. fPatEtcOrdinfo("S", "Copy2");
  1328. }
  1329. /**
  1330. * @desc : 진찰료 50% 적용 취소 (사본발행)
  1331. * @param :
  1332. * @return :
  1333. * @author : 김영학
  1334. * @---------------------------------------------------
  1335. */
  1336. function fPatCopyIss50Cncl(){
  1337. fPatEtcOrdinfo("C", "Copy2");
  1338. }
  1339. /**
  1340. * @desc : 진찰료 0% 적용 (제증명)
  1341. * @param :
  1342. * @return :
  1343. * @author : 김영학
  1344. * @---------------------------------------------------
  1345. */
  1346. function fPatProf0Appl(){
  1347. fPatEtcOrdinfo("S", "Diag2");
  1348. }
  1349. /**
  1350. * @desc : 진찰료 0% 적용 취소 (제증명)
  1351. * @param :
  1352. * @return :
  1353. * @author : 김영학
  1354. * @---------------------------------------------------
  1355. */
  1356. function fPatProf0Cncl(){
  1357. fPatEtcOrdinfo("C", "Diag2");
  1358. }
  1359. /**
  1360. * @desc : 진찰료 변경 적용 및 취소
  1361. * @param :
  1362. * @return :
  1363. * @author : 김영학
  1364. * @---------------------------------------------------
  1365. */
  1366. function fPatEtcOrdinfo(SetFlag, EtcOrdFlag){
  1367. var flag = "";
  1368. var iRow = grd_outpatlist.row; //2010.03.06 JJE
  1369. var etcordflag = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/etcordflag");
  1370. var elbulbodstat = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/elbulbodstat");
  1371. if ( elbulbodstat == "9" ) {
  1372. messageBox("미접수환자는 진행이 불가능 합니다.","E");
  1373. return;
  1374. }
  1375. if(SetFlag == "S"){
  1376. /*
  1377. if(etcordflag != "" && etcordflag != "-"){
  1378. messageBox("이미 등록된 내역이 있습니다.", " I");
  1379. return;
  1380. }
  1381. */
  1382. //등록
  1383. if(EtcOrdFlag == "Diag"){
  1384. flag = "A";
  1385. } else if(EtcOrdFlag == "Copy"){
  1386. flag = "B";
  1387. } else if(EtcOrdFlag == "Vacn"){
  1388. flag = "C";
  1389. } else if(EtcOrdFlag == "Diag2"){
  1390. flag = "D";
  1391. } else if(EtcOrdFlag == "Copy2"){
  1392. flag = "E";
  1393. }
  1394. }else{
  1395. if(etcordflag == "" || etcordflag == "-"){
  1396. messageBox("취소할 내역이 없습니다.", " I");
  1397. return;
  1398. }
  1399. if(EtcOrdFlag == "Diag" || EtcOrdFlag == "Diag2"){
  1400. if(etcordflag != "G"){
  1401. messageBox("취소할 수 없습니다.", " I");
  1402. return;
  1403. }
  1404. }else if(EtcOrdFlag == "Copy"){ //Copy: 진찰료 0%(사본발행) 취소
  1405. if(etcordflag != "K"){
  1406. messageBox("취소할 수 없습니다.", " I");
  1407. return;
  1408. }
  1409. }else if(EtcOrdFlag == "Copy2"){ //Copy2: 진찰료 50%(사본발행) 취소
  1410. if(etcordflag != "D"){
  1411. messageBox("취소할 수 없습니다.", " I");
  1412. return;
  1413. }
  1414. }else if(EtcOrdFlag == "Vacn"){
  1415. if(etcordflag != "L"){
  1416. messageBox("취소할 수 없습니다.", " I");
  1417. return;
  1418. }
  1419. }
  1420. flag = "-"; //취소
  1421. }
  1422. model.removenode("/root/send/data");
  1423. model.makeValue("/root/send/data/flag", flag);
  1424. model.makeValue("/root/send/data/otpt_pid", model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/pid"));
  1425. model.makeValue("/root/send/data/otpt_orddd", model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/orddd"));
  1426. model.makeValue("/root/send/data/otpt_cretno", model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/cretno"));
  1427. if(submit("TXMNO00107")){
  1428. fReqOutPatList();
  1429. }
  1430. }
  1431. /*
  1432. * @desc : 심혈관 원스탑 취소
  1433. *@author: 김광성(kskim)
  1434. */
  1435. function fCvOneStopDel(){
  1436. fCvOneStopInfo("-");
  1437. }
  1438. /**
  1439. * @desc : 심혈관 원스탑 등록
  1440. *@author: 김광성(kskim)
  1441. */
  1442. function fCvOneStopApp(){
  1443. fCvOneStopInfo("H");
  1444. }
  1445. /**
  1446. * @desc : 심혈관 원스탑 등록 및 취소
  1447. *@author: 김광성(kskim)
  1448. */
  1449. function fCvOneStopInfo(setFlag){
  1450. var flag = "";
  1451. var iRow = grd_outpatlist.row;
  1452. var patlistOneStopFlag = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/onestop");
  1453. if( setFlag == "H" ){
  1454. flag = "H";
  1455. }
  1456. else{
  1457. flag = "-";
  1458. }
  1459. model.removenode("/root/send/data");
  1460. model.makeValue("/root/send/data/onestop", flag);
  1461. model.makeValue("/root/send/data/pid", model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/pid"));
  1462. model.makeValue("/root/send/data/orddd", model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/orddd"));
  1463. model.makeValue("/root/send/data/instcd", model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/instcd"));
  1464. model.makeValue("/root/send/data/cretno", model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/cretno"));
  1465. if(submit("TXMMO04205")){
  1466. fReqOutPatList();
  1467. }
  1468. }
  1469. function fOpenChgDrGrup() {
  1470. grp_chgdrinfo.visible = true;
  1471. }
  1472. function fChgDrInfo() {
  1473. var iRow = grd_outpatlist.row;
  1474. // 접수 상태일때만 의사변경 가능하도록 함.
  1475. var elbulbodstat = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/elbulbodstat");
  1476. var orddeptcd = model.getValue("/root/main/cond/orddeptcd");
  1477. if (elbulbodstat != "0" ) {
  1478. messageBox("환자 접수 상태일때만 의사변경이 가능합니다.", "C") ;
  1479. return;
  1480. }
  1481. // 진료과가 같을 경우만 업데이트 가능하도록 함.
  1482. if (orddeptcd != getUserInfo("dutplcecd")) {
  1483. messageBox("로그인한 진료과와 환자의 진료과가 같을 경우만 의사 변경이 가능합니다.", "C") ;
  1484. return;
  1485. }
  1486. var pid = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/pid");
  1487. var orddd = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/orddd");
  1488. var ordtm = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/ordtm");
  1489. var cretno = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/cretno");
  1490. var subdeptcd = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/subdeptcd");
  1491. var centcd = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/centcode");
  1492. var orddrid = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/orddrid");
  1493. var rsrvflag = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/rsrvflag");
  1494. var instcd = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/instcd");
  1495. var fsexamflag = model.getValue(sOUTPATLIST_PATH + "[" + iRow + "]/fsexamflag");
  1496. var chgorddrid = model.getValue("/root/main/cond/chgorddrid");
  1497. if (model.getValue("/root/init/userlist/usercombo[userid= '" + chgorddrid + "']/refseq") == "A") {
  1498. messageBox("선택진료의로 변경은 불가능합니다. 원무팀에서 변경하시기 바랍니다.", "C") ;
  1499. return;
  1500. }
  1501. if (model.getValue("/root/init/userlist/usercombo[userid= '" + orddrid + "']/refseq") == "A") {
  1502. messageBox("선택진료의에서의 변경은 불가능합니다. 원무팀에서 변경하시기 바랍니다.", "C") ;
  1503. return;
  1504. }
  1505. model.makeValue("/root/send/savedata/otpt_workflag" , "J");
  1506. model.makeValue("/root/send/savedata/otpt_pid" , pid);
  1507. model.makeValue("/root/send/savedata/otpt_orddd_old" , orddd);
  1508. model.makeValue("/root/send/savedata/otpt_ordtm_old" , ordtm);
  1509. model.makeValue("/root/send/savedata/otpt_cretno_old" , cretno);
  1510. model.makeValue("/root/send/savedata/otpt_orddeptcd_old" , orddeptcd);
  1511. model.makeValue("/root/send/savedata/otpt_subdeptcd_old" , subdeptcd);
  1512. model.makeValue("/root/send/savedata/otpt_centcd_old" , centcd);
  1513. model.makeValue("/root/send/savedata/otpt_orddrid_old" , orddrid);
  1514. model.makeValue("/root/send/savedata/otpt_rsrvflag_old" , rsrvflag);
  1515. model.makeValue("/root/send/savedata/otpt_orddd_new" , orddd);
  1516. model.makeValue("/root/send/savedata/otpt_ordtm_new" , ordtm);
  1517. model.makeValue("/root/send/savedata/otpt_cretno_new" , cretno);
  1518. model.makeValue("/root/send/savedata/otpt_orddeptcd_new" , orddeptcd);
  1519. model.makeValue("/root/send/savedata/otpt_subdeptcd_new" , subdeptcd);
  1520. model.makeValue("/root/send/savedata/otpt_centcd_new" , centcd);
  1521. model.makeValue("/root/send/savedata/otpt_orddrid_new" , chgorddrid);
  1522. model.makeValue("/root/send/savedata/otpt_rsrvflag_new" , rsrvflag);
  1523. model.makeValue("/root/send/savedata/otpt_updtcnclresn" , "");
  1524. model.makeValue("/root/send/savedata/otpt_instcd" , instcd);
  1525. model.makeValue("/root/send/savedata/otpt_fsexamflag_old" , fsexamflag);
  1526. model.makeValue("/root/send/savedata/checkfsexamyn" , "N");
  1527. model.makeValue("/root/send/savedata/sess_userid" , getUserInfo("userid"));
  1528. // 재조회하기 위한 값을 셋해준다.
  1529. model.makeValue("/root/send/savedata/pid" , model.getValue("/root/main/cond/pid"));
  1530. model.makeValue("/root/send/savedata/orddd" , model.getValue("/root/main/cond/orddd"));
  1531. model.makeValue("/root/send/savedata/orddeptcd" , model.getValue("/root/main/cond/orddeptcd"));
  1532. model.makeValue("/root/send/savedata/orddrid" , model.getValue("/root/main/cond/orddrid"));
  1533. model.makeValue("/root/send/savedata/elbulbodstat" , model.getValue("/root/main/cond/elbulbodstat"));
  1534. model.makeValue("/root/send/savedata/deptflag" , model.getValue("/root/main/cond/deptflag"));
  1535. model.makeValue("/root/send/savedata/chkprcp" , model.getValue("/root/main/cond/chkprcp"));
  1536. model.makeValue("/root/send/savedata/speedflag" , model.getValue("/root/main/cond/speedflag"));
  1537. if ( !submit("TXMMO04206")) {
  1538. messageBox("의사변경에 실패했습니다.", "C");
  1539. }
  1540. grp_chgdrinfo.visible = false;
  1541. fReqOutPatList();
  1542. }
  1543. /**
  1544. * @desc : 안전사고 보고
  1545. * @param :
  1546. * @return :
  1547. * @author : 엄영만
  1548. * @---------------------------------------------------
  1549. */
  1550. function fPatQi(){
  1551. var currow = grd_outpatlist.row;
  1552. var pid = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/pid");
  1553. var orddd = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/orddd");
  1554. var cretno = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/cretno");
  1555. var ordtype = "O";
  1556. var oprsrvno = "";
  1557. setParameter("SMMQR00100_PARAM2", pid + "▦" + orddd + "▦" + cretno + "▦" + ordtype+"▦" + oprsrvno);
  1558. modal("../../../emr/qiweb/xrw/SMMQR00100", "","", "", "SMMQR00100", "", "");
  1559. }
  1560. /**
  1561. * @desc : 외래예약현황출력
  1562. * @param :
  1563. * @return :
  1564. * @author : 엄영만
  1565. * @---------------------------------------------------
  1566. */
  1567. function fPrintOutRsrvState() {
  1568. var sOrdDeptCd = model.getValue("root/main/cond/orddeptcd");
  1569. var sOrdDrId = model.getValue("root/main/cond/orddrid");
  1570. var sOrdDeptNm = model.getValue("/root/init/orddept/dept[deptcd='" + sOrdDeptCd + "']/depthngnm");
  1571. var sOrdDrNm = model.getValue("/root/init/userlist/usercombo[userid='" + sOrdDrId + "']/usernm");
  1572. setParameter("SPMMO90400_orddeptcd", sOrdDeptCd);
  1573. setParameter("SPMMO90400_orddeptnm", sOrdDeptNm);
  1574. setParameter("SPMMO90400_centcd", "-");
  1575. setParameter("SPMMO90400_centnm", "");
  1576. setParameter("SPMMO90400_orddrid", sOrdDrId);
  1577. setParameter("SPMMO90400_orddrnm", sOrdDrNm);
  1578. modal("SPMMO90400");
  1579. }
  1580. /**
  1581. * @desc : 환자라벨출력
  1582. * @param :
  1583. * @return :
  1584. * @author : 엄영만
  1585. * @---------------------------------------------------
  1586. */
  1587. function fPrintPatLabel(){
  1588. var currow = grd_outpatlist.row;
  1589. var pid = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/pid");
  1590. var patnm = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/hngnm");
  1591. var sexage = model.getValue(sOUTPATLIST_PATH + "[" + currow + "]/sexage");
  1592. setParameter("SMMMB00100_scrnid", "SMMMO04100");
  1593. setParameter("SMMMB00100_pid", pid);
  1594. setParameter("SMMMB00100_patnm", patnm);
  1595. setParameter("SMMMB00100_sexage", sexage);
  1596. modal("SMMMB00100");
  1597. }