SMMMO02900.js 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760
  1. //===================================================================
  2. // 공통으로 사용하는 함수
  3. //===================================================================
  4. /**
  5. * @desc : 화면 초기화
  6. * @
  7. * @param :
  8. * @return :
  9. * @author : 엄영만
  10. * @---------------------------------------------------
  11. */
  12. function fInitialize_SMMMO02900(){
  13. var cur_day = getCurrentDate();
  14. var idate = new Date();
  15. var peveDate = idate.getAddDate(-1, "D");
  16. model.setValue("/root/main/cond/orddd", cur_day);
  17. model.setValue("/root/main/cond/userid", getUserId());
  18. fGrdInit() ;
  19. mainObj = getMainViewer();
  20. curCpObj = mainObj.javascript.getOpenWindow("SMMMP00800"); //활성화된 CP Main 화면 object loading
  21. curPrcpObj = mainObj.javascript.getOpenWindow("SMMMO00100"); //활성화된 처방Main 화면 object loading
  22. mmbfGetDeptCodeComboList("/root/send/reqdata", "/root/init/orddept", "D");
  23. mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", getUserInfo("dutplcecd"), "0330");
  24. addComboInstance("/root/init/userlist", "userid^usernm", "-^전체", "usercombo"); //의사콤보 전체항목 추가
  25. if(opener.root.prcppatlist.childNodes.length > 0) { // 최초 오픈이 아니면
  26. model.copyNode(root.main.cond, opener.root.prcppatlist);
  27. } else { // 최초 오픈일때
  28. model.setValue("/root/main/cond/orddeptcd", getUserInfo("dutplcecd"));
  29. model.setValue("/root/main/cond/orddrid" , getUserInfo("userid"));
  30. var sUserEnv057 = mmbfGetUserEnvQuestValue("057"); // 진료대상자 외래탭 지연환자 표시여부
  31. if(sUserEnv057 == "001") { // 지연환자 표시일경우
  32. var sUserEnv058 = mmbfGetUserEnvQuestValue("058"); // 진료대상자 외래탭 지연환자 지연시간
  33. var sUserEnv059 = mmbfGetUserEnvQuestValue("059"); // 진료대상자 외래탭 지연환자 지연 제외시간
  34. if(sUserEnv058 == "001") { model.setValue("/root/main/cond/delaytime", "10");
  35. } else if(sUserEnv058 == "002") { model.setValue("/root/main/cond/delaytime", "20");
  36. } else if(sUserEnv058 == "003") { model.setValue("/root/main/cond/delaytime", "30");
  37. } else if(sUserEnv058 == "004") { model.setValue("/root/main/cond/delaytime", "40");
  38. } else if(sUserEnv058 == "005") { model.setValue("/root/main/cond/delaytime", "50");
  39. } else if(sUserEnv058 == "006") { model.setValue("/root/main/cond/delaytime", "60");
  40. } else { model.setValue("/root/main/cond/delaytime", "30");
  41. }
  42. if(sUserEnv059 == "001") { model.setValue("/root/main/cond/delayexpt", "0");
  43. } else if(sUserEnv059 == "002") { model.setValue("/root/main/cond/delayexpt", "10");
  44. } else if(sUserEnv059 == "003") { model.setValue("/root/main/cond/delayexpt", "20");
  45. } else if(sUserEnv059 == "004") { model.setValue("/root/main/cond/delayexpt", "30");
  46. } else { model.setValue("/root/main/cond/delayexpt", "10");
  47. }
  48. model.setValue("/root/main/cond/delayflag" , "Y");
  49. } else {
  50. model.setValue("/root/main/cond/delayflag" , "N");
  51. }
  52. }
  53. fChkGetData() ;
  54. }
  55. /**
  56. * @desc : 환자 수술여부 및 수술처방 확인
  57. * @ 수정 : 미니진료대상자에 맞게끔 내용 수정
  58. * @
  59. * @param :
  60. * @return :
  61. * @author : 오지훈
  62. * @---------------------------------------------------
  63. */
  64. function fChkMiniPatOpPrcp(pid, stnddd){
  65. model.removeNodeset("/root/send/reqdata");
  66. model.makeValue("/root/send/reqdata/pid" , pid);
  67. model.makeValue("/root/send/reqdata/stnddd", stnddd);
  68. if(submit("TRMMO04109")){
  69. var opprcpflag = model.getValue("/root/main/opprcpinfo/opprcpinfo/opprcpflag");
  70. if(opprcpflag == "N"){
  71. return false;
  72. }
  73. }
  74. return true;
  75. }
  76. /**
  77. * @desc : 처방화면, CP화면에 modal로 뜬 화면이 있는지 여부를 검사한다.
  78. * @ 수정 : 미니진료대상자에 맞게끔 내용 수정
  79. * @
  80. * @param :
  81. * @return :
  82. * @author : 오지훈
  83. * @---------------------------------------------------
  84. */
  85. function fChkScrnModal(){
  86. var cpflag = model.getValue(root.cpflag); //cpflag여부
  87. if(cpflag == "N"){
  88. var wndobj = getOpenWindow("SMMMO00100");
  89. }else if(cpflag == "Y"){
  90. var wndobj = getOpenWindow("SMMMP00800");
  91. }
  92. if(wndobj != null){
  93. var status = wndobj.javascript.getScreenDisabled();
  94. if(status == true){
  95. return false;
  96. }
  97. }
  98. }
  99. /**
  100. * @desc : 처방Main 화면 Open, CP환자인 경우 CP Main 화면 Open 또는 CP검색화면 Open (CP업무 추가 2007.09.27)
  101. * @
  102. * @param :
  103. * @return :
  104. * @---------------------------------------------------
  105. */
  106. function fOpenPrcpMainWnd(){
  107. var cpflag = model.getValue("/root/cpflag");
  108. var iRow = "";
  109. var pid = "";
  110. var ordtype = model.getValue("/root/main/cond/ordtype");
  111. if(ordtype == "O") {
  112. iRow = grd_outpatlist.row;
  113. pid = model.getValue("/root/main/outpatinfo/outpatlist[" + iRow + "]/pid");
  114. } else {
  115. iRow = grd_inpatlist.row;
  116. pid = model.getValue("/root/main/inpatinfo/inpatlist[" + iRow + "]/pid");
  117. }
  118. var mainObj = getMainViewer();
  119. var monitorNumber = app.monitorNumber;
  120. var monitorResolutions = app.monitorResolution;
  121. var monitorResolutionsArr = monitorResolutions.split('|');
  122. var resolution = monitorResolutionsArr[monitorNumber-1];
  123. var resolution_width = resolution.split(',')[0];
  124. var resolution_height = resolution.split(',')[1];
  125. //alert(monitorNumber);
  126. curEmrRecObj = getOpenWindow("SMMRI00400"); //활성화된 진료기록 화면 object loading
  127. curExamRsltObj = getOpenWindow("SMAER00800"); //활성화된 검사결과 화면 object loading
  128. curNurTprObj = getOpenWindow("SMMNR00900"); //활성화된 간호 TPR 화면 object loading
  129. curNurBSEMRObj = getOpenWindow("SMMNR02500"); //활성화된 간호 TPR 화면 object loading
  130. curGrphObj = getOpenWindow("SPMRF05200"); //활성화된 그래프 서식 화면 object loading
  131. curCunsultObj = getOpenWindow("SMMMR05000"); //활성화된 Consult 화면 object loading
  132. curExamRsltNewObj = getOpenWindow("SMMMI00100"); //활성화된 검사결과 화면 object loading
  133. var wndobj = getOpenWindow("SMMRI00400");
  134. if(wndobj != null){
  135. wndobj.javascript.fClose(); //진료기록 화면 close
  136. //wndobj.javascript.fInitalize(); // 초기화함수 호출
  137. //activateChild("SMMRI00400");
  138. }
  139. if(curExamRsltObj != null){ //검사결과 화면 refresh;
  140. curExamRsltObj.model.setvalue("/root/send/data/singdata/srchpid", pid );
  141. curExamRsltObj.javascript.btn_srch.dispatch("DOMActivate");
  142. } //검사결과 화면 refresh;
  143. if(curNurTprObj != null){ //간호 TPR 화면 refresh : 2008-11-28 : 김영학 ;
  144. curNurTprObj.javascript.fInitViewer();
  145. curNurTprObj.javascript.fInitialize("init");
  146. } //간호 TPR 화면 refresh;
  147. if(curNurBSEMRObj != null){ //혈당간호기록 refresh : 2008-12-24 : 김영학 ;
  148. curNurBSEMRObj.javascript.fInitialize("init");
  149. } //혈당간호기록 refresh;
  150. if(curGrphObj != null){ //그래프 서식 refresh : 2009-01-02 : 박민규 SW 요청 : 김영학 ;
  151. curGrphObj.javascript.fInitialize();
  152. } //그래프 서식 refresh;
  153. if(curCunsultObj != null && consulyn !="T"){ // Consult refresh : 2009-02-17 : 이상현 D/L 요청 : 김영학 ;
  154. curCunsultObj.javascript.fInitalize();
  155. } // Consult refresh
  156. if(curExamRsltNewObj != null){ //검사결과 화면 NEW refresh;
  157. curExamRsltNewObj.model.setvalue("/root/send/data/singdata/srchpid", pid );
  158. curExamRsltNewObj.javascript.btn_srch.dispatch("DOMActivate");
  159. }
  160. curCpObj = mainObj.javascript.getOpenWindow("SMMMP00800"); //활성화된 CP Main 화면 object loading
  161. curPrcpObj = mainObj.javascript.getOpenWindow("SMMMO00100"); //활성화된 처방Main 화면 object loading
  162. curCpSrchObj = mainObj.javascript.getOpenWindow("SPMMP01200"); //활성화된 CP 검색 화면 object loading
  163. if(cpflag == "N"){ //처방 Main Open
  164. if(curCpObj != null){curCpObj.javascript.fCloseGPS();} //활성화된 CP Main화면이 있는 경우 close
  165. if(curCpSrchObj != null){curCpSrchObj.javascript.fCpSrchWndClose();} //활성화된 CP검색화면이 있는 경우 close
  166. if(curPrcpObj == null){ //활성화된 처방화면이 없는 경우, 신규화면을 오픈
  167. var xpt = (resolution_width - 1210)/2;
  168. var ypt = (resolution_height- 784)/2;
  169. mainObj.javascript.setParameter("SMMMO00100_ordrecflag", model.getValue("/root/main/cond/ordrecflag"));
  170. mainObj.javascript.open("SMMMO00100", monitorNumber, xpt, ypt, "SMMMO00100", "", "", "", false);
  171. fChngMainEMRScrn();
  172. }else{
  173. if(curPrcpObj.javascript.fPrcpSavePatList()){}
  174. curPrcpObj.model.setValue("/root/init/bfprcpload" , "N"); //전처방을 초기화한다.
  175. //curPrcpObj.javascript.fInitializeConDone();
  176. //curPrcpObj.javascript.fInitializeReady();
  177. curPrcpObj.javascript.fXReReady();
  178. curPrcpObj.model.setValue("/root/init/fstopenflag", "Y"); //처방최초 open여부를 재설정, 진료기록을 열기위해
  179. //curPrcpObj.javascript.fChngMainScrn();
  180. fChngMainEMRScrn();
  181. }
  182. } else if(cpflag =="Y"){ //CP Main Open
  183. if(curPrcpObj != null){curPrcpObj.javascript.fPrcpWndClose();} //활성화된 처방Main화면이 있는 경우 close
  184. if(curCpSrchObj != null){curCpSrchObj.javascript.fCpSrchWndClose();} //활성화된 CP검색화면이 있는 경우 close
  185. if(curCpObj == null){ //활성화된 CP화면이 없는 경우, 신규화면을 오픈
  186. var xpt = (resolution_width - 1236)/2;
  187. var ypt = (resolution_height- 985)/2;
  188. mainObj.javascript.setParameter("SMMMO00100_ordrecflag", model.getValue("/root/main/cond/ordrecflag"));
  189. mainObj.javascript.open("SMMMP00800", monitorNumber, xpt, ypt, "SMMMP00800", "", "", "sysmenu:hidden; min:visible; max:visible; icon:visible", false);
  190. //JJE- 삭제
  191. //fChngMainEMRScrn();
  192. } else{
  193. curCpObj.javascript.fReconstruct();
  194. }
  195. }else if(cpflag =="X"){ //CP 검색 Open
  196. if(curCpObj != null){curCpObj.javascript.fCloseGPS();} //활성화된 CP Main화면이 있는 경우 close
  197. if(curPrcpObj != null){curPrcpObj.javascript.fPrcpWndClose();} //활성화된 처방Main화면이 있는 경우 close
  198. if(curCpSrchObj == null){
  199. mainObj.javascript.open("SPMMP01200", monitorNumber, xpt, ypt, "SPMMP01200", "", "", "", false);
  200. }
  201. }
  202. }
  203. function fChngMainEMRScrn() {
  204. var mainobj = getMainViewer();
  205. var mainscrnid = mainobj.javascript.getScreenID(); //메인화면의 기록지 ID
  206. var cpflag = model.getValue("/root/cpflag");
  207. if (cpflag =="Y"){
  208. var curPrcpObj= getOpenWindow("SMMMP00800");
  209. } else {
  210. var curPrcpObj= getOpenWindow("SMMMO00100");
  211. }
  212. var fstopenflag = curPrcpObj.model.getValue("/root/init/fstopenflag"); //처방화면이 최초 생성 여부
  213. var bfprcpload = curPrcpObj.model.getValue("/root/init/bfprcpload"); //전처방화면 최초 생성 여부
  214. var cpflag = curPrcpObj.model.getValue("/root/cp"); //CP화면여부
  215. var ordrecflag = model.getValue("/root/main/cond/ordrecflag"); //OCS 체크여부
  216. var chngflag = model.getValue("/root/main/cond/chngflag"); //OCS 체크여부
  217. if(mainobj != null){
  218. var dutplcecd = getUserInfo("dutplcecd"); //사용자부서
  219. var operation = getGlobalVariable("operation"); //수술정보
  220. var wndid = "SMMMR00100"; //진료기록화면이 default
  221. if(fstopenflag !="N" || chngflag == "Y"){ //처방화면이 최초로 열린 경우, 진료대상자의 ocs체크값이 변경된 경우에는 메인화면 변경
  222. if(bfprcpload != "Y"){ //전처방화면이 로딩된 여부,(단순히 tab변경인 경우에는 메인화면 변경 로직을 처리하지 않음
  223. /*
  224. if(cpflag == "Y"){ //CP화면인 경우, CP초기화 후, 메인화면 변경 수행
  225. var cpendflag = curPrcpObj.javascript.fReconstruct();
  226. if(cpendflag == "True"){
  227. }
  228. }
  229. */
  230. //if(cpendflag == "True"){ //CPMain의 fReconstruct()가 완료된 이후 진료기록 변경로직을 수행
  231. if(dutplcecd == "2090000000" || dutplcecd == "2090300000"){ //사용자부서가 마취통증의학과, 통증클리닉인 경우
  232. if(operation.length > 0){ //수술환자리스트에서 환자 선택된 경우, 메인화면은 '마취환자기록' loading
  233. wndid = "SMMMR03700";
  234. }else{
  235. if(ordrecflag == "Y"){
  236. wndid = "SMMMR00100";
  237. }
  238. }
  239. }else{
  240. if(ordrecflag == "Y"){
  241. wndid = "SMMMR00100";
  242. }
  243. }
  244. curPrcpObj.model.setValue("/root/init/bfprcpload" , "Y");
  245. curPrcpObj.model.setValue("/root/init/fstopenflag", "N");
  246. if(mainscrnid == wndid){
  247. if(wndid == "SMMMR03700"){
  248. mainobj.javascript.fFormInit();
  249. }else{
  250. mainobj.javascript.fInitRecPamInfo();
  251. }
  252. }else{
  253. //if(cpflag != "Y"){
  254. mainobj.javascript.navigate(wndid);
  255. //}
  256. }
  257. //}
  258. }else{ //전처방화면이 최초 생성된 경우, bfprcpload를 Y로 변경, 추후 tab변경시 메인화면 변경이 되지 않게함
  259. curPrcpObj.model.setValue("/root/init/bfprcpload", "Y");
  260. }
  261. }
  262. }
  263. }
  264. //===================================================================
  265. // 입원에서 사용하는 함수들
  266. //===================================================================
  267. /**
  268. * @desc : 환자 선택 후, 환자 정보 조회 및 기록지 화면 연동
  269. * @ 수정 : 미니진료대상자에 맞게끔 내용 수정
  270. * @
  271. * @param :
  272. * @return :
  273. * @author : 김영학
  274. * @---------------------------------------------------
  275. */
  276. function fMiniInPat(){
  277. var ordrecflag = "Y";
  278. var currow = grd_inpatlist.row;
  279. if(currow < 1){
  280. return;
  281. }
  282. //처방, CP화면에 modal 또는 modaless가 뜬 경우, 환자 선택 불가
  283. if(fChkScrnModal()==false){
  284. return;
  285. }
  286. var pid = model.getValue("/root/main/inpatinfo/inpatlist[" + currow + "]/pid");
  287. var hngnm = model.getValue("/root/main/inpatinfo/inpatlist[" + currow + "]/hngnm");
  288. var reqptype = model.getValue("/root/main/inpatinfo/inpatlist[" + currow + "]/reqptype");
  289. var stnddd = model.getValue("/root/main/cond/orddd");
  290. setParameter("SPMMO04200_openflag", "SPMMO04200");
  291. //환자수술 여부 및 수술처방 확인, 수술처방이 없는 경우 처방화면을 blocking
  292. if(fChkMiniPatOpPrcp(pid, stnddd)==false){
  293. var opcnfmdd = model.getValue("/root/main/opprcpinfo/opprcpinfo/opcnfmdd");
  294. opcnfmdd = opcnfmdd.substring(0, 4) + "-" + opcnfmdd.substring(4, 6) + "-" + opcnfmdd.substring(6, 8);
  295. messageBox("[" + hngnm + "]환자의 [" + opcnfmdd + "]일자 수술 처방을", "C001");
  296. }
  297. //CP환자 여부 확인
  298. if(fChkCPMiniPatValid(currow)==false){
  299. return;
  300. }
  301. //상단정보 설정 및 진료기록 처방화면 연동
  302. var mainObj = getMainViewer();
  303. /*
  304. if(fReqInPatPamInfo()==true){
  305. opener.javascript.setParameter("SMMMO04100_reqptype", reqptype);
  306. var cpflag = opener.model.getValue("/root/cpflag");
  307. var ordrecflag = opener.model.getValue("/root/main/cond/ordrecflag");
  308. var mainObj = getMainViewer();
  309. if(cpflag == "Y"){
  310. mainObj.window.javascript.openEmrScrn("SMMMP00800"); //CP처방 화면
  311. }else if(cpflag == "X"){
  312. mainObj.window.javascript.openEmrScrn("SPMMP01200"); //CP검색 화면
  313. }else{
  314. opener.javascript.setParameter("SMMMO04100_reqptype", reqptype);
  315. opener.javascript.fOpenPrcpMainWnd();
  316. }
  317. if(cpflag == "Y" || cpflag == "X"){
  318. if(ordrecflag == "Y"){
  319. mainObj.window.javascript.openEmrScrn("SMMMB08100"); //empty
  320. }else{
  321. mainObj.window.javascript.openEmrScrn("SMMMR00100"); //진료기록
  322. }
  323. }
  324. }
  325. */
  326. //상단정보 설정
  327. if(fReqMiniInPatPamInfo()==true){
  328. setParameter("SMMMO04100_reqptype", reqptype);
  329. fOpenPrcpMainWnd();
  330. }
  331. }
  332. /**
  333. * @desc : 입원환자 환자 기본정보설정
  334. * @ 수정 : 미니진료대상자에 맞게끔 내용 수정
  335. * @
  336. * @param :
  337. * @return :
  338. * @author : 오지훈
  339. * @---------------------------------------------------
  340. */
  341. function fReqMiniInPatPamInfo(){
  342. var iRow = grd_inpatlist.row;
  343. var pid = model.getValue("/root/main/inpatinfo/inpatlist[" + iRow + "]/pid");
  344. var indd = model.getValue("/root/main/inpatinfo/inpatlist[" + iRow + "]/indd");
  345. var cretno = model.getValue("/root/main/inpatinfo/inpatlist[" + iRow + "]/cretno");
  346. var instcd = model.getValue("/root/main/inpatinfo/inpatlist[" + iRow + "]/instcd");
  347. var srchdd = model.getValue("/root/main/cond/indd"); //조회일자
  348. var param;
  349. param = "I" + "▦" + pid + "▦" + indd + "▦" + cretno + "▦" + instcd + "▦" + srchdd;
  350. setParameter("condparam", param);
  351. modal("SPMMO08900", 1, "", "", "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  352. var useyn = getParameter("SPMMO08900_rtn_useyn");
  353. if(useyn == "Y"){
  354. setParameter("SPMMO08900_rtn_useyn", "");
  355. return true;
  356. }else{
  357. return false;
  358. }
  359. }
  360. /**
  361. * @desc : CP환자 여부 검사
  362. * @
  363. * @param :
  364. * @return :
  365. * @author : 오지훈
  366. * @---------------------------------------------------
  367. */
  368. function fChkCPMiniPatValid(currow){
  369. var pid = model.getValue("/root/main/inpatinfo/inpatlist[" + currow + "]/pid");
  370. var orddd = model.getValue("/root/main/inpatinfo/inpatlist[" + currow + "]/indd");
  371. var cretno = model.getValue("/root/main/inpatinfo/inpatlist[" + currow + "]/cretno");
  372. var cpyn = model.getValue("/root/main/inpatinfo/inpatlist[" + currow + "]/cpyn");
  373. var hngnm = model.getValue("/root/main/inpatinfo/inpatlist[" + currow + "]/hngnm");
  374. //입원환자이나 외래CP가 진행중인 경우, 경고 메시지를 띄운다. (박유미요청)
  375. //2008. 07. 25 오지훈
  376. model.removeNodeset("/root/send/reqdata");
  377. model.makeValue("/root/send/reqdata/pid" , pid);
  378. model.makeValue("/root/send/reqdata/orddd", orddd);
  379. if(submit("TRMMO04303")==true){
  380. var outcppatnode = model.instance1.selectNodes("/root/init/getdata/getdata");
  381. if(outcppatnode.length > 0){
  382. messageBox("외래 cp적용중인 환자입니다. 외래 CP Drop을", "C003");
  383. model.setValue(opener.root.cpflag, "N");
  384. return false;
  385. }
  386. }
  387. model.removeNodeset("/root/send/reqdata");
  388. model.makeValue("/root/send/reqdata/pid" , pid);
  389. model.makeValue("/root/send/reqdata/orddd" , orddd);
  390. model.makeValue("/root/send/reqdata/cretno" , cretno);
  391. model.makeValue("/root/send/reqdata/prcpgenrflag", "I");
  392. if(submit("TRMMO04303")==true){
  393. var cppatnode = model.instance1.selectNodes("/root/init/rsltgetdata/getdata");
  394. if(cppatnode.length < 1){ //cp적용환자 tbl에 유효한 데이터가 없는 경우
  395. model.setValue(root.cpflag, "N");
  396. return true;
  397. }else{ //CP적용환자 tbl에 유효한 데이터가 있는 경우
  398. var appstat = model.getValue("/root/init/rsltgetdata/getdata/appstat");
  399. var cpgnm = model.getValue("/root/init/rsltgetdata/getdata/cpgnm");
  400. if(appstat == 12){ //CP적용상태가 12인 경우, 무조건 CP(M-GPS)창을 띄운다
  401. model.setValue(root.cpflag, "Y");
  402. return true;
  403. }else if(appstat == 52){
  404. var rtnval = messageBox("[" + hngnm + "]환자에게 CP를", "Q003");
  405. if(rtnval == 6){ //예, CP Main open, CP적용환자 tbl에 appstat 10 진행중
  406. model.setValue(root.cpflag, "X");
  407. return true;
  408. }else{
  409. model.setValue(root.cpflag, "N");
  410. return fUpdtCPPatAppStatVal(41); //41 : CP취소
  411. }
  412. }else{ //CP적용상태가 12가 아닌 경우, CP Main창 open
  413. model.setValue(root.cpflag, "Y");
  414. return true;
  415. }
  416. }
  417. }
  418. }
  419. //===================================================================
  420. // 외래에서 사용하는 함수들
  421. //===================================================================
  422. /**
  423. * @desc : 환자 선택 후, 환자 정보 조회 및 기록지 화면 연동
  424. * @
  425. * @param :
  426. * @return :
  427. * @author : 오지훈
  428. * @---------------------------------------------------
  429. */
  430. function fMiniOutPat(){
  431. var ordrecflag = "Y";
  432. var currow = grd_outpatlist.row;
  433. if(currow < 1){
  434. return;
  435. }
  436. //처방, CP화면에 modal 또는 modaless가 뜬 경우, 환자 선택 불가
  437. if(fChkScrnModal()==false){
  438. return;
  439. }
  440. var pid = model.getValue("/root/main/outpatinfo/outpatlist[" + currow + "]/pid");
  441. var stnddd = model.getValue("/root/main/outpatinfo/outpatlist[" + currow + "]/orddd");
  442. var hngnm = model.getValue("/root/main/outpatinfo/outpatlist[" + currow + "]/hngnm");
  443. var reqptype = model.getValue("/root/main/outpatinfo/outpatlist[" + currow + "]/reqptype");
  444. setParameter("SPMMO04200_openflag", "SPMMO04200");
  445. //환자수술 여부 및 수술처방 확인, 수술처방이 없는 경우 처방화면을 blocking
  446. if(fChkPatOpPrcp(pid, stnddd)==false){
  447. var opcnfmdd = model.getValue("/root/main/opprcpinfo/opprcpinfo/opcnfmdd");
  448. opcnfmdd = opcnfmdd.substring(0, 4) + "-" + opcnfmdd.substring(5, 6) + "-" + opcnfmdd.substring(7, 8);
  449. messageBox("[" + hngnm + "]환자의 [" + opcnfmdd + "]일자 수술 처방을", "C001");
  450. }
  451. //CP환자 여부 확인, update시 에러나면 변경 불가
  452. if(fChkCPMiniOutPatValid(currow)==false){
  453. return;
  454. }
  455. //상단정보 설정 및 진료기록, 처방화면 연동
  456. var mainObj = getMainViewer();
  457. //2011.09.07 엄영만 환자 클릭시 환자정보 체크 SMMMO04100.js 파일 함수 호출 ioflag, pid 인자
  458. if(!fCheckSelectPatInfo("O", pid)){ return false; }
  459. //상단정보 설정
  460. if(fReqMiniOutPatPamInfo()==true){
  461. setParameter("SMMMO04100_reqptype", reqptype);
  462. fOpenPrcpMainWnd();
  463. }
  464. }
  465. /**
  466. * @desc : CP환자 여부 검사
  467. * @
  468. * @param :
  469. * @return :
  470. * @author : 오지훈
  471. * @---------------------------------------------------
  472. */
  473. function fChkCPMiniOutPatValid(currow){
  474. var pid = model.getValue("/root/main/outpatinfo/outpatlist[" + currow + "]/pid");
  475. var orddd = model.getValue("/root/main/outpatinfo/outpatlist[" + currow + "]/orddd");
  476. var cretno = model.getValue("/root/main/outpatinfo/outpatlist[" + currow + "]/cretno");
  477. var cpyn = model.getValue("/root/main/outpatinfo/outpatlist[" + currow + "]/cpyn");
  478. var hngnm = model.getValue("/root/main/outpatinfo/outpatlist[" + currow + "]/hngnm");
  479. model.removeNodeset("/root/send/reqdata");
  480. model.makeValue("/root/send/reqdata/pid" , pid);
  481. model.makeValue("/root/send/reqdata/orddd" , orddd);
  482. model.makeValue("/root/send/reqdata/cretno" , cretno);
  483. model.makeValue("/root/send/reqdata/prcpgenrflag", "O");
  484. if(submit("TRMMO04303")==true){
  485. var cppatnode = model.instance1.selectNodes("/root/init/rsltgetdata/getdata");
  486. if(cppatnode.length < 1){ //cp적용환자 tbl에 유효한 데이터가 없는 경우
  487. model.setValue(root.cpflag, "N"); //처방open
  488. return true;
  489. }else{ //CP적용환자 tbl에 유효한 데이터가 있는 경우
  490. var appstat = model.getValue("/root/init/rsltgetdata/getdata/appstat");
  491. var cpgnm = model.getValue("/root/init/rsltgetdata/getdata/cpgnm");
  492. if(appstat == 11){ //CP적용상태가 11인 경우
  493. var rtnval = messageBox("[" + hngnm + "]환자의 [" + cpgnm + "] CP를", "Q003");
  494. if(rtnval == 6){ //예 선택, CP Main open, CP적용환자 tbl에 appstat 10 진행중
  495. model.setValue(root.cpflag, "N");
  496. return fUpdtCPPatAppStatVal(51);
  497. }else{ //아니오 선택, 처방 Main open, CP적용환자 tbl에 appstat 51 drop out
  498. model.setValue(root.cpflag, "Y");
  499. return fUpdtCPPatAppStatVal(10);
  500. }
  501. }else if(appstat == 53){
  502. model.setValue(root.cpflag, "X");
  503. return true;
  504. }else{ //CP적용상태가 11가 아닌 경우, CP Main창 open
  505. model.setValue(root.cpflag, "Y");
  506. return true;
  507. }
  508. }
  509. }
  510. }
  511. /**
  512. * @desc : 외래환자 환자 기본정보설정
  513. * @ 수정 : 미니진료대상자에 맞게끔 내용 수정
  514. * @
  515. * @param :
  516. * @return :
  517. * @author : 오지훈
  518. * @---------------------------------------------------
  519. */
  520. function fReqMiniOutPatPamInfo(){
  521. var iRow = grd_outpatlist.row;
  522. var pid = model.getValue("/root/main/outpatinfo/outpatlist[" + iRow + "]/pid");
  523. var orddd = model.getValue("/root/main/outpatinfo/outpatlist[" + iRow + "]/orddd");
  524. var cretno = model.getValue("/root/main/outpatinfo/outpatlist[" + iRow + "]/cretno");
  525. var instcd = model.getValue("/root/main/outpatinfo/outpatlist[" + iRow + "]/instcd");
  526. var param = "O" + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd;
  527. setParameter("condparam", param);
  528. modal("SPMMO08900", 1, 0, 0, "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  529. var useyn = getParameter("SPMMO08900_rtn_useyn");
  530. if(useyn == "Y"){
  531. setParameter("SPMMO08900_rtn_useyn", "");
  532. return true;
  533. }else{
  534. return false;
  535. }
  536. }
  537. /*===============================================================================
  538. @desc : 검색구분에 대한 항목 선택시 각 화면 선택
  539. ===============================================================================*/
  540. function fGrdInit() {
  541. var sOrdType = model.getValue("/root/main/cond/ordtype");
  542. if (sOrdType =='O'){
  543. model.setValue("/root/main/cond/orddd" , getCurrentDate());
  544. rdo_patflag.visible = true;
  545. rdo_patflagstat.visible = false;
  546. caption4.visible = true;
  547. model.toggle("case1");
  548. } else if (sOrdType =='I') {
  549. model.setValue("/root/main/cond/orddd" , getCurrentDate());
  550. rdo_patflag.visible = false;
  551. rdo_patflagstat.visible = true;
  552. model.toggle("case2");
  553. }
  554. model.refresh();
  555. }
  556. /*===============================================================================
  557. @desc : 입원시 조회
  558. ===============================================================================*/
  559. function fInPatList() {
  560. model.removeNodeset("/root/main/inpatinfo/inpatlist");
  561. model.removeNodeset("/root/main/outpatinfo/outpatlist");
  562. model.resetInstanceNode("/root/send/reqdata");
  563. model.copyNode("/root/send/reqdata", "/root/main/cond");
  564. submit("TRMMO04205");
  565. window.modelesstopmost = true;
  566. }
  567. /*===============================================================================
  568. @desc : 외래시 조회
  569. ===============================================================================*/
  570. function fOutPatList() {
  571. model.removeNodeset("/root/main/inpatinfo/inpatlist");
  572. model.removeNodeset("/root/main/outpatinfo/outpatlist");
  573. model.resetInstanceNode("/root/send/reqdata");
  574. model.copyNode("/root/send/reqdata", "/root/main/cond");
  575. if(submit("TRMMO02901")){
  576. model.copyNode(opener.root.prcppatlist, root.main.cond); // 현재 조회 조건을 처방화면에 인스턴스에 복사 한다. 대상자 화면 다시 열때 참조
  577. }
  578. window.modelesstopmost = true;
  579. }
  580. function fInitialize() {
  581. //관심슬립콤보 아이템추가
  582. if (model.getValue ("/root/main/cond/clsflag") == "P" ){
  583. model.setValue("/root/main/cond/userid", getUserInfo("userid"));
  584. } else if ( model.getValue ("/root/main/cond/clsflag") == "G" ) {
  585. model.setValue("/root/main/cond/userid", getUserInfo("dutplcecd"));
  586. }
  587. model.copyNode("/root/send/reqdata", "/root/main/cond");
  588. submit("TRMMB00101");
  589. addComboItem("cmb_concslip","","","above");
  590. }
  591. function fChkGetData() {
  592. var sOrdType = model.getValue("/root/main/cond/ordtype");
  593. if(sOrdType =="O") {
  594. fOutPatList();
  595. } else if (sOrdType == "I") {
  596. fInPatList() ;
  597. }
  598. fChngGrdCellColor(sOrdType);
  599. }
  600. /**
  601. * @desc : 대기환자 색상 설정
  602. * : 내환자적용 환자는 color instance에 ffffff이외의 값이 들어옴
  603. * @param :
  604. * @return :
  605. * @author : 오지훈
  606. * @---------------------------------------------------
  607. */
  608. function fChngGrdCellColor(sOrdType){
  609. var sColor = "";
  610. if(sOrdType == "O") {
  611. for(var currow = 1; currow < grd_outpatlist.rows; currow++){
  612. sColor = model.getValue("/root/main/outpatinfo/outpatlist[" + currow + "]/color");
  613. if(sColor == ""){
  614. sColor = "ffffff";
  615. }
  616. grd_outpatlist.rowStyle(currow, "data", "background-color") = "#" + sColor;
  617. }
  618. grd_outpatlist.refresh();
  619. }
  620. }