SMMMO04100.js 46 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295
  1. /*
  2. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  3. 진료대상자리스트 ( SMMMO04100_진료대상자리스트.xrw - JScript )
  4. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  5. */
  6. var curPrcpObj; // 처방 화면 window object
  7. var curCpObj; // CP화면 window object
  8. var curCpSrchObj; // CP검색 화면 window object
  9. var curExamRsltObj; // 검사결과 화면 window object
  10. var curEmrRecObj; // 진료기록 화면 window object
  11. /**
  12. * @desc : 진료대상자 리스트 화면 초기화
  13. * @
  14. * @param :
  15. * @return :
  16. * @author : 오지훈
  17. * @---------------------------------------------------
  18. */
  19. function fInitializeDone_SMMO04100(){
  20. fGetUserEnvOcsOrdAnsw("/root/send/reqdata", "/root/main/interface", "006");
  21. fGetUserEnvOcsOrdAnsw("/root/send/reqdata", "/root/main/ordtab", "007");
  22. /*
  23. //20091201 HJS 미니진료대상자리스트가 뜰때는 진료대상자를 닫아버린다.
  24. var curPatListMiniWnd = getOpenWindow("SPMMO04200");
  25. if ( curPatListMiniWnd != null ) {
  26. curPatListMiniWnd.javascript.fPatListMiniClose();
  27. }
  28. */
  29. var sAbleSelPatlist = fCheckAbleSelPat(); // 환자선택시 진료 가능 부서 여부 체크시 사용
  30. setGlobalVariable("able_sel_patlist", sAbleSelPatlist, "M");
  31. fGethardcdArrayList(new Array(
  32. "dentdept|242"
  33. ),
  34. new Array(
  35. "/root/init"
  36. )
  37. );
  38. var ordtab = getGlobalVariable("ordtab");
  39. if(ordtab.length < 1){ //최초 open, 외래를 기본으로
  40. /*
  41. var jobposcd = getUserInfo("jobposcd");
  42. if (jobposcd == "1775" || jobposcd == "1800") {
  43. btn_in.selected = true;
  44. btn_in.dispatch("DOMActivate");
  45. } else {
  46. btn_out.selected = true;
  47. btn_out.dispatch("DOMActivate");
  48. }
  49. */
  50. var tabinfo = model.getValue("/root/main/ordtab/answcnt");
  51. if (tabinfo == "001") {
  52. var btnobj = document.controls.item("btn_out");
  53. } else if (tabinfo == "002") {
  54. var btnobj = document.controls.item("btn_in");
  55. } else if (tabinfo == "003") {
  56. var btnobj = document.controls.item("btn_er");
  57. } else if (tabinfo == "004") {
  58. var btnobj = document.controls.item("btn_op");
  59. } else if (tabinfo == "005") {
  60. var btnobj = document.controls.item("btn_srch");
  61. } else if (tabinfo == "006") {
  62. var btnobj = document.controls.item("btn_cnst");
  63. } else {
  64. var jobposcd = getUserInfo("jobposcd");
  65. if (jobposcd == "1775" || jobposcd == "1800") {
  66. var btnobj = document.controls.item("btn_in");
  67. } else {
  68. var btnobj = document.controls.item("btn_out");
  69. }
  70. }
  71. btnobj.selected = true;
  72. btnobj.dispatch("DOMActivate");
  73. }else{ //ordtab이 설정된 경우, close후 다시 열린 경우
  74. ordtabarr = ordtab.split("^");
  75. var caseid = ordtabarr[0]; //탭정보
  76. var condlist = ordtabarr[1]; //조회조건
  77. if (caseid =="") {
  78. var tabinfo = model.getValue("/root/main/ordtab/answcnt");
  79. if (tabinfo == "001") {
  80. var btnobj = document.controls.item("btn_out");
  81. } else if (tabinfo == "002") {
  82. var btnobj = document.controls.item("btn_in");
  83. } else if (tabinfo == "003") {
  84. var btnobj = document.controls.item("btn_er");
  85. } else if (tabinfo == "004") {
  86. var btnobj = document.controls.item("btn_op");
  87. } else if (tabinfo == "005") {
  88. var btnobj = document.controls.item("btn_srch");
  89. } else if (tabinfo == "006") {
  90. var btnobj = document.controls.item("btn_cnst");
  91. } else {
  92. var btnobj = document.controls.item("btn_out");
  93. }
  94. } else {
  95. var btnobj = document.controls.item("btn_" + caseid);
  96. }
  97. model.setValue("/root/reopen/reopenflag", "Y");
  98. setCSVToNode("/root/reopen/condlist", condlist, "condlist"); //cond설정
  99. btnobj.selected = true;
  100. btnobj.dispatch("DOMActivate");
  101. }
  102. }
  103. /**
  104. * @desc : 처방Main 화면 Open, CP환자인 경우 CP Main 화면 Open 또는 CP검색화면 Open (CP업무 추가 2007.09.27)
  105. * @
  106. * @param :
  107. * @return :
  108. * @---------------------------------------------------
  109. */
  110. var gsLogParam = "";
  111. function fOpenPrcpMainWnd(sRecFlag){
  112. // 환자 선택 로그 시작
  113. var ordrecflag = model.getValue("/root/main/cond/ordrecflag");
  114. var recnaviyn = model.getValue("/root/main/cond/recnaviyn");
  115. gsLogParam = ""; // 전역 로그변수 초기화
  116. fStartLogCheck("fOpenPrcpMainWnd");
  117. var sLogParam = "";
  118. var step1Elapsed = 0; // 처방 관련 화면 설정 시간
  119. var step2Elapsed = 0; // 기록 화면 설정 설정 시간
  120. var step3Elapsed = 0; // 처방 화면 설정 설정 시간
  121. var cpflag = model.getValue(root.cpflag);
  122. var pid = model.getValue(root.source.pid);
  123. var ordtype = model.getValue("/root/main/paminfo/list/ordtype");
  124. fStartLogTempCheck("fOpenPrcpMainWnd_Step1");
  125. fReloadOrdWnd(pid, ordtype); //활성화된 진료관련 화면 재조회
  126. step1Elapsed = fEndLogTempCheck("fOpenPrcpMainWnd_Step1");
  127. var monitorNumber = app.monitorNumber;
  128. var consulyn = model.getValue("/root/source/consulyn");
  129. var mainObj = getMainViewer();
  130. var curCpObj = mainObj.javascript.getOpenWindow("SMMMP00800"); //활성화된 CP Main 화면 object loading
  131. var curPrcpObj = mainObj.javascript.getOpenWindow("SMMMO00100"); //활성화된 처방Main 화면 object loading
  132. var curCpSrchObj = mainObj.javascript.getOpenWindow("SPMMP01200"); //활성화된 CP 검색 화면 object loading
  133. if (sRecFlag == "Y") { // EMR에 클릭 된경우
  134. if(curPrcpObj != null) { curPrcpObj.javascript.fPrcpWndClose(); } //활성화된 처방Main 화면이 있는 경우 close
  135. if(curCpObj != null) { curCpObj.javascript.fCloseGPS(); } //활성화된 CP Main화면이 있는 경우 close
  136. if(curCpSrchObj != null){ curCpSrchObj.javascript.fCpSrchWndClose(); } //활성화된 CP검색화면이 있는 경우 close
  137. clearParameter("SMMMO04100_ANSWCNT");
  138. fChngEMRScrn();// 진료기록 Open
  139. } else { // EMR에 체크 되지 않은경우
  140. var answcnt = model.getValue("/root/main/interface/answcnt"); // 환경설정의 질문값을 가져온다.
  141. setParameter("SMMMO04100_ANSWCNT", answcnt);
  142. if(cpflag == "N"){ //처방 Main Open
  143. if(curCpObj != null) {curCpObj.javascript.fCloseGPS();} //활성화된 CP Main화면이 있는 경우 close
  144. if(curCpSrchObj != null){curCpSrchObj.javascript.fCpSrchWndClose();} //활성화된 CP검색화면이 있는 경우 close
  145. if(curPrcpObj == null){ //활성화된 처방화면이 없는 경우, 신규화면을 오픈
  146. mainObj.javascript.setParameter("SMMMO00100_ordrecflag", model.getValue("/root/main/cond/ordrecflag"));
  147. mainObj.javascript.setParameter("SMMMO00100_callvisityn", getParameter("SMMMO04100_callvisityn"));// 응급실 콜비짓 여부
  148. var sysMessageobj = getViewer("sysMessage");
  149. if (answcnt == "004"|| answcnt =="") { // 처방창과 기록창 모두 오픈
  150. sysMessageobj.window.javascript.setParameter("SMMMO04100_ANSWCNT", answcnt);
  151. sysMessageobj.window.javascript.open("SMMMO00100", 2, null, null, "SMMMO00100", "", "", "", false);
  152. } else { // 기록창만 블라인드
  153. fChngMainEMRScrn();// 진료기록 Open
  154. if (ordrecflag =="Y") {
  155. clearParameter("SMMMO04100_ANSWCNT");
  156. }
  157. sysMessageobj.window.javascript.open("SMMMO00100", 2, null, null, "SMMMO00100", "", "", "", false);
  158. }
  159. }else{
  160. fStartLogTempCheck("fOpenPrcpMainWnd_Step3");
  161. if(curPrcpObj.javascript.fPrcpSavePatList()){}
  162. curPrcpObj.model.setValue("root/init/bfprcpload" , "N"); //전처방을 초기화한다.
  163. fStartLogCheck("fXReReady");
  164. curPrcpObj.javascript.fXReReady(consulyn);
  165. sLogParam = fgetLogParam();// item02~item10
  166. fEndLogCheck("fXReReady", sLogParam);
  167. step3Elapsed = fEndLogTempCheck("fOpenPrcpMainWnd_Step3");
  168. if (consulyn=="T"){
  169. ordrecflag = "N"
  170. }
  171. if (ordrecflag =="Y") {
  172. clearParameter("SMMMO04100_ANSWCNT");
  173. }
  174. if (consulyn !="T"){
  175. fStartLogTempCheck("fOpenPrcpMainWnd_Step2");
  176. fStartLogCheck("fChngMainEMRScrn");
  177. fChngMainEMRScrn();
  178. recnaviyn = model.getValue("/root/main/cond/recnaviyn");
  179. if(recnaviyn == "N") {
  180. sLogParam = fgetLogParam();// item02~item10
  181. fEndLogCheck("fChngMainEMRScrn", sLogParam);
  182. }
  183. step2Elapsed = fEndLogTempCheck("fOpenPrcpMainWnd_Step2");
  184. }
  185. }
  186. mainObj.window.activate();
  187. } else if(cpflag =="Y"){ //CP Main Open
  188. if(curPrcpObj != null){curPrcpObj.javascript.fPrcpWndClose();} //활성화된 처방Main화면이 있는 경우 close
  189. if(curCpSrchObj != null){curCpSrchObj.javascript.fCpSrchWndClose();} //활성화된 CP검색화면이 있는 경우 close
  190. if(curCpObj == null){ //활성화된 CP화면이 없는 경우, 신규화면을 오픈
  191. mainObj.javascript.setParameter("SMMMO00100_ordrecflag", model.getValue("/root/main/cond/ordrecflag"));
  192. var sysMessageobj = getViewer("sysMessage");
  193. mainObj.window.javascript.open("SMMMP00800", "2", "0", "0", "SMMMP00800", "", "", "", false);
  194. } else{
  195. curCpObj.javascript.fReconstruct();
  196. }
  197. } else if(cpflag =="X"){ //CP 검색 Open
  198. if(curCpObj != null){curCpObj.javascript.fCloseGPS();} //활성화된 CP Main화면이 있는 경우 close
  199. if(curPrcpObj != null){curPrcpObj.javascript.fPrcpWndClose();} //활성화된 처방Main화면이 있는 경우 close
  200. if(curCpSrchObj == null){
  201. mainObj.javascript.open("SPMMP01200", monitorNumber, null, null, "SPMMP01200", "", "", "", false);
  202. }
  203. }
  204. if (consulyn !="T"){ //kskim 중증체류시간 화면(SPMMO21300) 닫기
  205. fCloseSPMMO21300Wnd();
  206. }
  207. }
  208. if (cpflag == "N" && curPrcpObj != null && recnaviyn == "N" ) { // EMR에 클릭 된경우
  209. sLogParam = fgetLogParam() + "|" // item02~item10
  210. + step1Elapsed + "|" // 처방 관련 화면 설정 // item11
  211. + step2Elapsed + "|" // 기록 화면 설정 // item12
  212. + step3Elapsed // 처방 화면 설정 // item13
  213. ;
  214. fEndLogCheck("fOpenPrcpMainWnd", sLogParam);
  215. }
  216. }
  217. /**
  218. * @desc : 공통으로 사용할 속도체크를 위한 로그 정보
  219. * @param :
  220. * @return :
  221. * @---------------------------------------------------
  222. */
  223. function fgetLogParam() {
  224. var sRtn = "";
  225. var sOrdDd = "";
  226. var sOrdDrId = "";
  227. if(isNull(gsLogParam)) {
  228. var pamInfoCvs = getGlobalVariable("paminfo"); //상단정보가 있을 경우는 검색
  229. if(pamInfoCvs != null){ //cvs가 null이 아닌 경우에만 처리함.
  230. model.removeNodeSet ("/root/main/paminfo/list");
  231. setCSVToNode ("/root/main/paminfo", pamInfoCvs);
  232. if( "O" == model.getValue("/root/main/paminfo/list/ioflag")) {
  233. sOrdDd = model.getValue("/root/main/paminfo/list/orddd");
  234. sOrdDrId = model.getValue("/root/main/paminfo/list/orddrid");
  235. } else {
  236. sOrdDd = model.getValue("/root/main/paminfo/list/indd");
  237. sOrdDrId = model.getValue("/root/main/paminfo/list/medispclid");
  238. }
  239. gsLogParam = "userid:" + getUserInfo("userid") + "|" // item02
  240. + "instcd:" + getUserInfo("dutplceinstcd") + "|" // item03
  241. + "pid:" + model.getValue("/root/main/paminfo/list/pid") + "|" // item04
  242. + "orddd:" + sOrdDd + "|" // item05
  243. + "cretno:" + model.getValue("/root/main/paminfo/list/cretno") + "|" // item06
  244. + "orddeptcd:" + model.getValue("/root/main/paminfo/list/orddeptcd") + "|" // item07
  245. + "orddrid:" + sOrdDrId + "|" // item08
  246. + "scrnid:" + model.getValue("/root/main/cond/scrnid") + "|" // item09
  247. + "caseid:" + model.getValue("/root/main/cond/caseid"); // item10
  248. }
  249. }
  250. sRtn = gsLogParam;
  251. return sRtn;
  252. }
  253. /**
  254. * @desc : 활성화된 진료관련 화면 Reload
  255. * : 환자 변경시 활성화된 진료관련 화면 재조회
  256. * @param :
  257. * @return :
  258. * @---------------------------------------------------
  259. */
  260. function fReloadOrdWnd(sPid, sOrdType) {
  261. //활성화된 통합기록 조회 화면 object loading
  262. var sLogParam = fgetLogParam(); // item02~item10
  263. var mainObj = getMainViewer();
  264. var curExamRecObj = getOpenWindow("SMMRI00400");
  265. if(curExamRecObj != null) { //통합기록 조회화면 refresh;
  266. fStartLogCheck("fReloadOrdWnd_SMMRI00400");
  267. mainObj.window.javascript.setParameter("SMMRI00400_param_pid", sPid);
  268. mainObj.window.javascript.setParameter("SMMRI00400_param_chosflag", sOrdType);
  269. curExamRecObj.javascript.fInitalize();
  270. activateChild("SMMRI00400");
  271. fEndLogCheck("fReloadOrdWnd_SMMRI00400", sLogParam);
  272. }
  273. //활성화된 검사결과 화면 object loading
  274. var curExamRsltObj = getOpenWindow("SMAER00800");
  275. if(curExamRsltObj != null){ //검사결과 화면 refresh;
  276. fStartLogCheck("fReloadOrdWnd_SMAER00800");
  277. curExamRsltObj.model.setvalue("/root/send/data/singdata/srchpid", sPid );
  278. curExamRsltObj.javascript.btn_srch.dispatch("DOMActivate");
  279. fEndLogCheck("fReloadOrdWnd_SMAER00800", sLogParam);
  280. }
  281. //활성화된 간호 TPR 화면 object loading
  282. var curNurTprObj = getOpenWindow("SMMNR00900");
  283. if(curNurTprObj != null){ //간호 TPR 화면 refresh : 2008-11-28 : 김영학 ;
  284. fStartLogCheck("fReloadOrdWnd_SMMNR00900");
  285. curNurTprObj.javascript.fInitialize("init");
  286. fEndLogCheck("fReloadOrdWnd_SMMNR00900", sLogParam);
  287. }
  288. //활성화된 간호 TPR 화면 object loading
  289. var curNurBSEMRObj = getOpenWindow("SMMNR02500");
  290. if(curNurBSEMRObj != null){ //혈당간호기록 refresh : 2008-12-24 : 김영학 ;
  291. fStartLogCheck("fReloadOrdWnd_SMMNR02500");
  292. curNurBSEMRObj.javascript.fInitialize("init");
  293. fEndLogCheck("fReloadOrdWnd_SMMNR02500", sLogParam);
  294. }
  295. //활성화된 그래프 서식 화면 object loading
  296. var curGrphObj = getOpenWindow("SPMRF05200");
  297. if(curGrphObj != null){ //그래프 서식 refresh : 2009-01-02 : 박민규 SW 요청 : 김영학 ;
  298. fStartLogCheck("fReloadOrdWnd_SPMRF05200");
  299. curGrphObj.javascript.fInitialize();
  300. fEndLogCheck("fReloadOrdWnd_SPMRF05200", sLogParam);
  301. }
  302. //활성화된 Consult 화면 object loading
  303. var curCunsultObj = getOpenWindow("SMMMR05000");
  304. if(curCunsultObj != null ){ //Consult 화면 refresh;
  305. fStartLogCheck("fReloadOrdWnd_SMMMR05000");
  306. curCunsultObj.javascript.fInitalize();
  307. fEndLogCheck("fReloadOrdWnd_SMMMR05000", sLogParam);
  308. }
  309. //활성화된 검사결과 화면 object loading
  310. var curExamRsltNewObj = getOpenWindow("SMMMI00100");
  311. if(curExamRsltNewObj != null){ //검사결과 화면 NEW refresh;
  312. fStartLogCheck("fReloadOrdWnd_SMMMI00100");
  313. curExamRsltNewObj.model.setvalue("/root/send/data/singdata/srchpid", sPid );
  314. curExamRsltNewObj.javascript.btn_srch.dispatch("DOMActivate");
  315. fEndLogCheck("fReloadOrdWnd_SMMMI00100", sLogParam);
  316. }
  317. }
  318. /**
  319. * @desc : 진료기록화면 Open
  320. * : 메인화면에 기록지가 없는 경우, 새 기록지 open
  321. * @
  322. * @param :
  323. * @return :
  324. * @---------------------------------------------------
  325. */
  326. function fOpenOrdRecMainWnd(param){
  327. var mainObj = getMainViewer();
  328. if(param == ""){
  329. var ordrecflag = model.getValue("/root/main/cond/ordrecflag");
  330. if(ordrecflag == "N"){
  331. var wndid = "SMMMR00100";
  332. }else{
  333. var wndid = "SMMMB08100";
  334. }
  335. }else{
  336. var wndid = "SMMMR03700";
  337. }
  338. var scrnID = mainObj.javascript.getScreenID();
  339. if(scrnID == wndid){
  340. mainObj.javascript.fInitPamInfo();
  341. }else{
  342. mainObj.javascript.navigate(wndid);
  343. }
  344. }
  345. /**
  346. * @desc : 빈xrw open
  347. * @ : 처방화면이 진료대상자에 종속되는 것을 막기위해 main화면에 empty화면을 navigate한다.
  348. * @param :
  349. * @return :
  350. * @---------------------------------------------------
  351. */
  352. function fOpenEmptyWnd(){
  353. var mainObj = getMainViewer();
  354. var scrnID = mainObj.javascript.getScreenID();
  355. if(scrnID == "SMMMB08100"){
  356. mainObj.javascript.fInitPamInfo();
  357. }else{
  358. mainObj.javascript.navigate("SMMMB08100"); //빈기록지 open
  359. }
  360. }
  361. /**
  362. * @desc : 처방에서 저장 후, 현 진료대상자 화면 재조회 처리(iviewer dispatch)
  363. * @
  364. * @param :
  365. * @return :
  366. * @---------------------------------------------------
  367. */
  368. function fPrcpCallPatList(){
  369. iviewer1.window.javascript.btn_req.dispatch("DOMActivate");
  370. }
  371. /**
  372. * @desc : 진료대상자리스트 button disabled control
  373. * @
  374. * @param :
  375. * @return :
  376. * @author : 오지훈
  377. * @---------------------------------------------------
  378. */
  379. function fCtrlBtnDisable(bflag){
  380. btn_out.disabled = bflag;
  381. btn_in.disabled = bflag;
  382. btn_er.disabled = bflag;
  383. btn_op.disabled = bflag;
  384. btn_srch.disabled = bflag;
  385. btn_cnst.disabled = bflag;
  386. model.refresh();
  387. }
  388. /**
  389. * @desc : 외래 tab button 클릭
  390. * @
  391. * @param :
  392. * @return :
  393. * @author : 오지훈
  394. * @---------------------------------------------------
  395. */
  396. function fClkBtnOut(){
  397. model.setValue("/root/main/cond/scrnid", "SMMMO04200");
  398. model.setValue("/root/main/cond/grdid", "grd_outpatlist");
  399. model.setValue("/root/main/cond/caseid", "out");
  400. //진료기록 창에 현재 진료대상자의 Tab id를 넘겨준다. 안치원 대리님 요청사항
  401. setParameter("SMMMO04100_medirec_caseid", model.getValue("/root/main/cond/caseid"));
  402. fCtrlBtnDisable(true); //loading이 완료되기 전에 탭 이동을 막는다.
  403. iviewer1.src="SMMMO04200_외래환자리스트.xrw";
  404. }
  405. /**
  406. * @desc : 입원 tab button 클릭
  407. * @
  408. * @param :
  409. * @return :
  410. * @author : 오지훈
  411. * @---------------------------------------------------
  412. */
  413. function fClkBtnIn(){
  414. model.setValue("/root/main/cond/scrnid", "SMMMO04300");
  415. model.setValue("/root/main/cond/grdid", "grd_inpatlist");
  416. model.setValue("/root/main/cond/caseid", "in");
  417. //진료기록 창에 현재 진료대상자의 Tab id를 넘겨준다. 안치원 대리님 요청사항
  418. setParameter("SMMMO04100_medirec_caseid", model.getValue("/root/main/cond/caseid"));
  419. fCtrlBtnDisable(true); //loading이 완료되기 전에 탭 이동을 막는다.
  420. iviewer1.src="SMMMO04300_입원환자리스트.xrw";
  421. }
  422. /**
  423. * @desc : 응급 tab button 클릭
  424. * @
  425. * @param :
  426. * @return :
  427. * @author : 오지훈
  428. * @---------------------------------------------------
  429. */
  430. function fClkBtnEr(){
  431. model.setValue("/root/main/cond/scrnid", "SMMMO04400");
  432. model.setValue("/root/main/cond/grdid", "grd_erpatlist");
  433. model.setValue("/root/main/cond/caseid", "er");
  434. //진료기록 창에 현재 진료대상자의 Tab id를 넘겨준다. 안치원 대리님 요청사항
  435. setParameter("SMMMO04100_medirec_caseid", model.getValue("/root/main/cond/caseid"));
  436. fCtrlBtnDisable(true); //loading이 완료되기 전에 탭 이동을 막는다.
  437. iviewer1.src="SMMMO04400_응급환자리스트.xrw";
  438. }
  439. /**
  440. * @desc : 수술 tab button 클릭
  441. * @
  442. * @param :
  443. * @return :
  444. * @author : 오지훈
  445. * @---------------------------------------------------
  446. */
  447. function fClkBtnOp(){
  448. model.setValue("/root/main/cond/scrnid", "SMMMO04500");
  449. model.setValue("/root/main/cond/grdid", "grd_oppatlist");
  450. model.setValue("/root/main/cond/caseid", "op");
  451. //진료기록 창에 현재 진료대상자의 Tab id를 넘겨준다. 안치원 대리님 요청사항
  452. setParameter("SMMMO04100_medirec_caseid", model.getValue("/root/main/cond/caseid"));
  453. fCtrlBtnDisable(true); //loading이 완료되기 전에 탭 이동을 막는다.
  454. iviewer1.src="SMMMO04500_수술환자리스트.xrw";
  455. }
  456. /**
  457. * @desc : 환자검색 tab button 클릭
  458. * @
  459. * @param :
  460. * @return :
  461. * @author : 오지훈
  462. * @---------------------------------------------------
  463. */
  464. function fClkBtnSrch(){
  465. model.setValue("/root/main/cond/scrnid", "SMMMO04700");
  466. model.setValue("/root/main/cond/grdid", "grd_srchpatlist");
  467. model.setValue("/root/main/cond/caseid", "srch");
  468. //진료기록 창에 현재 진료대상자의 Tab id를 넘겨준다. 안치원 대리님 요청사항
  469. setParameter("SMMMO04100_medirec_caseid", model.getValue("/root/main/cond/caseid"));
  470. fCtrlBtnDisable(true); //loading이 완료되기 전에 탭 이동을 막는다.
  471. iviewer1.src="SMMMO04700_환자검색.xrw";
  472. }
  473. /**
  474. * @desc : 의뢰 tab button 클릭
  475. * @
  476. * @param :
  477. * @return :
  478. * @author : 오지훈
  479. * @---------------------------------------------------
  480. */
  481. function fClkBtnCnst(){
  482. model.setValue("/root/main/cond/scrnid", "SMMMO04800");
  483. model.setValue("/root/main/cond/grdid", "grd_cnstpatlist");
  484. model.setValue("/root/main/cond/caseid", "cnst");
  485. //진료기록 창에 현재 진료대상자의 Tab id를 넘겨준다. 안치원 대리님 요청사항
  486. setParameter("SMMMO04100_medirec_caseid", model.getValue("/root/main/cond/caseid"));
  487. fCtrlBtnDisable(true); //loading이 완료되기 전에 탭 이동을 막는다.
  488. iviewer1.src="SMMMO04800_의뢰환자리스트.xrw";
  489. }
  490. /**
  491. * @desc : OCS Check Box 클릭시 처리
  492. * : check 할 경우 처방화면만 열리고 진료기록 화면을 열지 않는다.
  493. * @
  494. * @param :
  495. * @return :
  496. * @author : 오지훈
  497. * @---------------------------------------------------
  498. */
  499. function fClkCheckBoxOCS(){
  500. var ordrecflag = model.getValue("/root/main/cond/ordrecflag");
  501. if(ordrecflag == "Y"){
  502. model.setValue("/root/main/cond/ordrecflag", "N");
  503. }else{
  504. model.setValue("/root/main/cond/ordrecflag", "Y");
  505. }
  506. model.setValue("/root/main/cond/chngflag", "Y");
  507. model.refresh();
  508. }
  509. /**
  510. * @desc : ordtab정보 설정
  511. * : 진료대상자 close후, 다시 열리는 경우 최종 정보로 setting할 수 있게 한다.
  512. *
  513. * : ordtab구성
  514. * : 1. 진료대상자 tab id
  515. * : 2. 진료대상자 tab 조회 cond instance
  516. * : 3. 진료대상자 column설정 정보
  517. * : 4. OCS check 여부
  518. * @
  519. * @param :
  520. * @return :
  521. * @author : 오지훈
  522. * @---------------------------------------------------
  523. */
  524. function fSetOrdTabInfo(){
  525. var caseid = model.getValue("/root/main/cond/caseid");
  526. var condlist = getNodeListCSV(model.instance1.selectNodes("/root/cond/" + caseid + "patlist"));
  527. var ordtab = caseid + "^" + condlist;
  528. setGlobalVariable("ordtab", ordtab);
  529. }
  530. /**
  531. * @desc : 화면ID의 grid의 column 순서 조회
  532. * @
  533. * @param :
  534. * @return :
  535. * @author : 오지훈
  536. * @---------------------------------------------------
  537. */
  538. function reqOrderInfoOfCol(scrnid, grdid, compscd){
  539. model.removeNodeset("/root/send/reqdata");
  540. model.makeValue("/root/send/reqdata/scrnid", scrnid);
  541. if (!isNull(compscd)) {
  542. model.makeValue("/root/send/reqdata/compscd", compscd);
  543. }
  544. if(submit("TRMMB01103")){
  545. var xmlnode = model.instance1.selectSingleNode("/root/init/userscrnenvinfo/gridseq");
  546. if(xmlnode != null){
  547. var refdata = model.getValue("/root/init/userscrnenvinfo/gridseq/compsrefcnts");
  548. var sizedata = model.getValue("/root/init/userscrnenvinfo/gridseq/compssizecnts");
  549. var frozencol = model.getValue("/root/init/userscrnenvinfo/gridseq/frozencol");
  550. setOrderInfoOfCol(grdid, refdata, sizedata, frozencol); //외래환자리스트 컬럼 설정
  551. }
  552. }
  553. }
  554. /**
  555. * @desc : 컬럼 순서 정보 설정
  556. * @
  557. * @param : grid ID : 그리드ID
  558. * : refdata : 그리드 ref데이터 구분자 '^'
  559. * : sizedata : 그리드 size데이터 구분자 '^'
  560. * @return :
  561. * @author : 오지훈
  562. * @---------------------------------------------------
  563. */
  564. function setOrderInfoOfCol(grdid, refdata, sizedata, frozencol){
  565. var grdobj = document.controls.item(grdid);
  566. var refarr = refdata.split("^");
  567. var sizearr = sizedata.split("^");
  568. var nFrozenCols = 0;
  569. if(refarr.length > 0) {
  570. for(var i = 0; i < grdobj.cols; i++){
  571. grdobj.colWidth(i) = 0;
  572. }
  573. }
  574. grdobj.mergeCellsFixedRows = "never";
  575. for(var i = 0; i < refarr.length; i++){
  576. var colcnt = grdobj.colref("" + refarr[i] + "");
  577. grdobj.colMove(i, colcnt, "before", false);
  578. var size = sizearr[i];
  579. if(size == 0){ // size of column 0 -> hidden
  580. grdobj.colHidden(i) = true;
  581. }else{
  582. grdobj.colHidden(i) = false;
  583. }
  584. grdobj.colWidth(i) = eval(size);
  585. }
  586. if(!isNull(frozencol)){ // 고정 컬럼 적용
  587. nFrozenCols = grdobj.colRef(frozencol);
  588. if(nFrozenCols>0) {
  589. grdobj.frozenCols = nFrozenCols;
  590. } else {
  591. grdobj.frozenCols = 0;
  592. }
  593. } else {
  594. grdobj.frozenCols = 0;
  595. }
  596. grdobj.mergeCellsFixedRows = "bycolrec";
  597. grdobj.rebuild();
  598. }
  599. /**
  600. * @desc : 컬럼설정 버튼 클릭
  601. * @
  602. * @param :
  603. * @return :
  604. * @author : 오지훈
  605. * @---------------------------------------------------
  606. */
  607. function fClkBtnSetCol(){
  608. var scrnid = model.getValue("/root/main/cond/scrnid");
  609. var grdid = model.getValue("/root/main/cond/grdid");
  610. var caseid = model.getValue("/root/main/cond/caseid");
  611. setParameter("SMMMO04100_param_scrnid", scrnid);
  612. setParameter("SMMMO04100_param_grdid" , grdid);
  613. setParameter("SMMMO04100_param_caseid", caseid);
  614. modal("SPMMB01100");
  615. var useyn = getParameter("SPMMB01100_rtn_useyn");
  616. if(useyn == "Y"){
  617. model.setValue("/root/chngcol/chngcolflag", "Y");
  618. var btnObj = document.controls.item("btn_" + caseid);
  619. btnObj.dispatch("DOMActivate");
  620. }
  621. }
  622. /**
  623. * @desc : 처방화면, CP화면에 modal로 뜬 화면이 있는지 여부를 검사한다.
  624. * @
  625. * @param :
  626. * @return :
  627. * @author : 오지훈
  628. * @---------------------------------------------------
  629. */
  630. function fChkScrnDisable(){
  631. var cpflag = model.getValue(opener.root.cpflag); //cpflag여부
  632. if(cpflag == "N"){
  633. var wndobj = getOpenWindow("SMMMO00100");
  634. }else if(cpflag == "Y"){
  635. var wndobj = getOpenWindow("SMMMP00800");
  636. }
  637. if(wndobj != null){
  638. var varstatus = wndobj.window.javascript.getScreenDisabled();
  639. if(varstatus == true){
  640. return false;
  641. }
  642. }
  643. return true;
  644. }
  645. /**
  646. * @desc : 통합기록 조회 open
  647. * @
  648. * @param :
  649. * @return :
  650. * @author : 오지훈
  651. * @---------------------------------------------------
  652. */
  653. function fClkBtnTotRecSrch(){
  654. var pid = model.getValue("/root/source/pid");
  655. if(pid == ""){
  656. messageBox("통합기록조회를 검색할 환자를", "C002");
  657. return;
  658. }
  659. var mainobj = getMainViewer();
  660. var xpt = window.screenleft + eval(0);
  661. var ypt = window.screenTop + eval(0);
  662. var coord = getRelativeCoordinate ( xpt, ypt );
  663. var mon = coord[0];
  664. xpt = coord[1];
  665. ypt = coord[2];
  666. mainobj.javascript.open("SMAER00800", mon, xpt, ypt, "SMAER00800", "/root/source/pid", "/root/send/data/singdata/srchpid");
  667. }
  668. /**
  669. * @desc : 환자 수술여부 및 수술처방 확인
  670. * @
  671. * @param :
  672. * @return :
  673. * @author : 오지훈
  674. * @---------------------------------------------------
  675. */
  676. function fChkPatOpPrcp(pid, stnddd, cretno){
  677. model.removeNodeset("root/send/reqdata");
  678. model.makeValue("/root/send/reqdata/pid" , pid);
  679. model.makeValue("/root/send/reqdata/stnddd", stnddd);
  680. model.makeValue("/root/send/reqdata/cretno", cretno);
  681. if(submit("TRMMO04109",false)){
  682. var opprcpflag = model.getValue(root.main.opprcpinfo.opprcpinfo.opprcpflag);
  683. if(opprcpflag == "N"){
  684. return false;
  685. }
  686. }
  687. return true;
  688. }
  689. /**
  690. * @desc : 환자 등록번호를 통한 환자 이름 가져오기
  691. * @
  692. * @param :
  693. * @return :
  694. * @author : 김영학
  695. * @---------------------------------------------------
  696. */
  697. function fPatSrch(s_val, flag){
  698. if(flag == "1"){
  699. model.makeValue("/root/tmp/pid", s_val);
  700. } else if(flag == "2"){
  701. model.makeValue("/root/tmp/hngnm", s_val);
  702. }
  703. model.makeValue("/root/tmp/srchcond", flag);
  704. model.makeValue("/root/tmp/autoflag","Y"); // 1건인경우 자동으로닫힘
  705. model.resetInstanceNode("/root/main/patinfo/patinfolist");
  706. modal("SPPMC02500", 1,10, 10, "SPPMC02500", "/root/tmp", "/root/send");
  707. model.refresh();
  708. }
  709. /**
  710. * @desc : CP환자 적용상태값 변경
  711. * @
  712. * @param :
  713. * @return :
  714. * @author : 오지훈
  715. * @---------------------------------------------------
  716. */
  717. function fUpdtCPPatAppStatVal(appstat){
  718. var cpgappno = model.getValue("/root/init/rsltgetdata/getdata/cpgappno");
  719. model.removeNodeset("/root/send/savedata");
  720. model.makeValue("/root/send/savedata/cpgappno", cpgappno);
  721. model.makeValue("/root/send/savedata/appstat" , appstat);
  722. if(submit("TXMMO04301")==false){
  723. return false;
  724. }
  725. }
  726. function fChngEMRScrn(){
  727. model.addLog("EMR OPEN START");
  728. var mainobj = getMainViewer();
  729. var messageobj = getViewer("sysMessage");
  730. var mainscrnid = mainobj.javascript.getScreenID(); //메인화면의 기록지 ID
  731. curFormLoaderObj = getOpenWindow("SSMMR01100"); //활성화된 서식로더창 체크
  732. if(curFormLoaderObj != null){ //서식로더 Close : 2009-06-03 : 이상현 D/L 요청 : 김영학 ;
  733. curFormLoaderObj.javascript.fClose();
  734. } //서식로더 close()
  735. var cpflag = model.getValue("/root/cpflag");
  736. var ordrecflag = model.getValue("/root/main/cond/ordrecflag"); //OCS 체크여부
  737. var chngflag = model.getValue("/root/main/cond/chngflag"); //OCS 체크여부
  738. var dutplcecd = getUserInfo("dutplcecd"); //사용자부서
  739. var operation = getGlobalVariable("operation"); //수술정보
  740. var wndid = "SMMMR00100"; //진료기록화면이 default
  741. var dentdeptcd = model.getValue("/root/init/dentdept/hardcd[hardcd='" + getUserInfo("dutplcecd") + "']/hardcd");
  742. if(dutplcecd == "2090000000" || dutplcecd == "2090300000"){ //사용자부서가 마취통증의학과, 통증클리닉인 경우
  743. if(operation.length > 0){ //수술환자리스트에서 환자 선택된 경우, 메인화면은 '마취환자기록' loading
  744. wndid = "SMMMR03700";
  745. }
  746. }else{
  747. if(ordrecflag == "Y"){
  748. wndid = "SMMMB08100";
  749. }
  750. }
  751. var chngflag = model.setValue("/root/main/cond/chngflag", "N"); //OCS 체크여부
  752. /*
  753. //20091130 HJS - 수진키 다를 경우 블러킹
  754. var pamStr = chkEmrListPaminfo();
  755. var pamKey = pamStr.split("|");
  756. setParameter("SMMMR00100_PATINFO_PID", pamKey[0]);
  757. setParameter("SMMMR00100_PATINFO_ORDDD", pamKey[1]);
  758. setParameter("SMMMR00100_PATINFO_CRETNO", pamKey[2]);
  759. */
  760. if(mainscrnid == wndid){
  761. if(wndid == "SMMMR03700"){
  762. mainobj.javascript.fFormInit();
  763. }else{
  764. mainobj.javascript.fRecMainReady();
  765. }
  766. }else{
  767. mainobj.javascript.navigate(wndid); //진료기록
  768. }
  769. //kskim
  770. //중증체류시간 화면(SPMMO21300) 닫기
  771. fCloseSPMMO21300Wnd();
  772. }
  773. function fChngMainEMRScrn() {
  774. var mainobj = getMainViewer();
  775. var messageobj = getViewer("sysMessage");
  776. var mainscrnid = mainobj.javascript.getScreenID(); //메인화면의 기록지 ID
  777. var cpflag = model.getValue(root.cpflag);
  778. var consulyn = model.getValue("/root/source/consulyn");
  779. model.setValue("/root/main/cond/recnaviyn", "N"); // 메인기록창을 navigate로 실행하면 다음 submit에서 오류 발생 원인 불명확
  780. curFormLoaderObj = getOpenWindow("SSMMR01100"); //활성화된 서식로더창 체크
  781. if(curFormLoaderObj != null){ //서식로더 Close : 2009-06-03 : 이상현 D/L 요청 : 김영학 ;
  782. //knuh 20120104 최원돈 OCS 진료대상자 OCS 조회 시 환자메모를 자동으로 사라지게 설정 SMMMO04100.js, SPMMR05600.js, MMR00100.js
  783. var curMemoObj = getOpenWindow("SPMMR05600");
  784. if(curMemoObj != null){curMemoObj.javascript.window.close();} //환자메모 화면 close
  785. curFormLoaderObj.javascript.fClose();
  786. } //서식로더 close()
  787. if (cpflag =="Y"){
  788. var curPrcpObj= getOpenWindow("SMMMP00800");
  789. } else {
  790. var curPrcpObj= getOpenWindow("SMMMO00100");
  791. }
  792. var ordrecflag = model.getValue("/root/main/cond/ordrecflag"); //OCS 체크여부
  793. if (consulyn=="T"){
  794. ordrecflag = "N"
  795. }//LYJ
  796. var chngflag = model.getValue("/root/main/cond/chngflag"); //OCS 체크여부
  797. if(mainobj != null){
  798. var dutplcecd = getUserInfo("dutplcecd"); //사용자부서
  799. var operation = getGlobalVariable("operation"); //수술정보
  800. var wndid = "SMMMR00100"; //진료기록화면이 default
  801. var dentdeptcd = model.getValue("/root/init/dentdept/hardcd[hardcd='" + getUserInfo("dutplcecd") + "']/hardcd");
  802. if(dutplcecd == "2090000000" || dutplcecd == "2090300000"){ //사용자부서가 마취통증의학과, 통증클리닉인 경우
  803. if(operation.length > 0){ //수술환자리스트에서 환자 선택된 경우, 메인화면은 '마취환자기록' loading
  804. if(ordrecflag == "Y"){
  805. wndid = "SMMMB08100";
  806. }else if ("O" != model.getValue("/root/main/cond/recinfo")) {
  807. wndid = "SMMMR03700";
  808. }
  809. }else{
  810. if(ordrecflag == "Y"){
  811. wndid = "SMMMB08100";
  812. }
  813. }
  814. }else{
  815. if(ordrecflag == "Y"){
  816. wndid = "SMMMB08100";
  817. }
  818. }
  819. if (curPrcpObj != null) {
  820. curPrcpObj.model.setValue("root/init/bfprcpload" , "Y"); //전처방화면 최초 생성 여부
  821. curPrcpObj.model.setValue("root/init/fstopenflag", "N"); //처방화면이 최초 생성 여부
  822. }
  823. model.setValue("/root/main/cond/chngflag", "N"); //OCS 체크여부
  824. if(mainscrnid == wndid){
  825. if(wndid == "SMMMR03700"){
  826. mainobj.javascript.fFormInit();
  827. }else{
  828. mainobj.javascript.fRecMainReady();
  829. }
  830. }else{
  831. model.setValue("/root/main/cond/recnaviyn", "Y");
  832. mainobj.window.javascript.navigate(wndid);
  833. }
  834. }else{ //전처방화면이 최초 생성된 경우, bfprcpload를 Y로 변경, 추후 tab변경시 메인화면 변경이 되지 않게함
  835. if (curPrcpObj != null) {
  836. curPrcpObj.model.setValue("root/init/bfprcpload", "Y"); //전처방화면 최초 생성 여부
  837. }
  838. }
  839. //자가보유처방 조회 (최초 처방창을 열때만 호출한다.) 20100210 by LYJ
  840. var mainObj = getMainViewer();
  841. var curPrcpObj = mainObj.javascript.getOpenWindow("SMMMO00100");
  842. if (opener.model.getValue("/root/hidden/selfhld/selfopenyn") != "Y" ){
  843. if ( curPrcpObj != null){
  844. curPrcpObj.javascript.fSelfHldPrcpModal();
  845. }
  846. }
  847. //kimsj 처방시 미비기록 유무 확인(message) -- SMMMO00100.js, SMMMO02100.js에서 submit 실행
  848. if (curPrcpObj != null){
  849. curPrcpObj.javascript.fValidRecInfoMsg();
  850. }
  851. }
  852. /**
  853. * @desc : 진료기록 오픈시 원무정보체크
  854. * @ : 진료대상자리스트와 상단(혹은 global variable)의 불일치여부 체크를 위해.
  855. * @param :
  856. * @return :
  857. * @---------------------------------------------------
  858. */
  859. function chkEmrListPaminfo(){
  860. if(getScreenID() == "SMMMO04100") {
  861. var pid = "";
  862. var orddd = "";
  863. var cretno = "";
  864. var gridObj = null;
  865. var INSTANCE_PATH = "";
  866. if(getScreenID(iviewer1.document.url) == "SMMMO04200") { // 외래
  867. gridObj = iviewer1.document.controls.item("grd_outpatlist");
  868. INSTANCE_PATH = "/root/main/outpatinfo/outpatlist";
  869. } else if(getScreenID(iviewer1.document.url) == "SMMMO04300") { // 입원
  870. gridObj = iviewer1.document.controls.item("grd_inpatlist");
  871. INSTANCE_PATH = "/root/main/inpatinfo/inpatlist";
  872. } else if(getScreenID(iviewer1.document.url) == "SMMMO04400") { // 응급
  873. gridObj = iviewer1.document.controls.item("grd_erpatlist");
  874. INSTANCE_PATH = "/root/main/erpatinfo/erpatlist";
  875. } else if(getScreenID(iviewer1.document.url) == "SMMMO04500") { // 수술
  876. gridObj = iviewer1.document.controls.item("grd_oppatlist");
  877. INSTANCE_PATH = "/root/main/oppatinfo/oppatlist";
  878. } else if(getScreenID(iviewer1.document.url) == "SMMMO04700") { // 검색
  879. gridObj = iviewer1.document.controls.item("grd_srchpatlist");
  880. INSTANCE_PATH = "/root/main/patsrchinfo/patsrchlist";
  881. } else if(getScreenID(iviewer1.document.url) == "SMMMO04800") { // 의뢰
  882. gridObj = iviewer1.document.controls.item("grd_cnstpatlist");
  883. INSTANCE_PATH = "/root/main/cnstpatinfo/cnstpatlist";
  884. }
  885. pid = iviewer1.model.getValue(INSTANCE_PATH + "[" + gridObj.row + "]/pid");
  886. if(getScreenID(iviewer1.document.url) == "SMMMO04500") { // 수술
  887. if (getPatientInfoDetail("indd") == "") {
  888. orddd = getPatientInfoDetail("orddd");
  889. } else {
  890. orddd = getPatientInfoDetail("indd");
  891. }
  892. cretno = getPatientInfoDetail("cretno");
  893. } else { // 나머지탭.
  894. if (iviewer1.model.getValue(INSTANCE_PATH + "[" + gridObj.row + "]/orddd") == "") {
  895. orddd = iviewer1.model.getValue(INSTANCE_PATH + "[" + gridObj.row + "]/indd");
  896. } else {
  897. orddd = iviewer1.model.getValue(INSTANCE_PATH + "[" + gridObj.row + "]/orddd");
  898. }
  899. cretno = iviewer1.model.getValue(INSTANCE_PATH + "[" + gridObj.row + "]/cretno");
  900. }
  901. return pid+"|"+orddd+"|"+cretno;
  902. } else {
  903. return "";
  904. }
  905. }
  906. /**
  907. * @desc : 화면타이틀을 설정한다
  908. * @ : 형식 : 화면명 + 로그인과 + 로그인한 사용자 + 로그인일시
  909. * @param :
  910. * @return :
  911. * @author : 김영학 2008-11-19
  912. * @---------------------------------------------------
  913. function initWndTitle() {
  914. if (getGlobalVariable("userinfos") != "") {
  915. var scrnTitle = document.title + " " ;
  916. scrnTitle += getUserInfo("dutplcenm") + " ";
  917. scrnTitle += getUserName() + " ";
  918. scrnTitle += getTitleLoginDate() + " ";
  919. document.title = scrnTitle;
  920. }
  921. }
  922. */
  923. /**
  924. * @desc : EMR Check Box 클릭시 처리
  925. * : check 할 경우 진료기록 화면만 연다.
  926. * @
  927. * @param :
  928. * @return :
  929. * @author : 김영학
  930. * @---------------------------------------------------
  931. */
  932. function fClkCheckBoxEMR(){
  933. var recflag = model.getValue("/root/main/cond/recflag");
  934. var consulyn = model.getValue("/root/source/consulyn");
  935. if (consulyn=="T"){
  936. recflag = "N"
  937. }//LYJ
  938. if(recflag == "Y"){
  939. model.setValue("/root/main/cond/recflag", "N");
  940. }else{
  941. model.setValue("/root/main/cond/recflag", "Y");
  942. }
  943. model.setValue("/root/main/cond/chngflag", "Y");
  944. model.refresh();
  945. }
  946. /**
  947. * @desc : 진료대상자 출력
  948. * @
  949. * @param :
  950. * @return :
  951. * @author : 김영학
  952. * @---------------------------------------------------
  953. */
  954. function fPrtPatList() {
  955. iviewer1.window.javascript.fPrtPatList();
  956. }
  957. /**
  958. * @desc : 사용자 답변 조회
  959. * @
  960. * @param :
  961. * @return :
  962. * @author : 김영학
  963. * @---------------------------------------------------
  964. */
  965. function fGetUserEnvOcsOrdAnsw(ref, rsltref, qestcd){
  966. /*
  967. var mmb_rsltref = "/root/hidden/interface";
  968. model.removeNode(mmb_rsltref);
  969. model.makeNode(mmb_rsltref);
  970. model.removeNode(ref);
  971. model.makeValue(ref + "/interqestcd", qestcd);
  972. if(submit("TRMMB01104", "false", ref, mmb_rsltref)==true){
  973. model.makeNode(rsltref);
  974. model.copyNode(rsltref, mmb_rsltref);
  975. model.removeNode(mmb_rsltref);
  976. }
  977. */
  978. model.removeNodeset(rsltref);
  979. model.makeNode(rsltref);
  980. var viewerObj = getViewer("sysMessage");
  981. //KNUH_20110208, 주희경, 로그인 시 미리 데이터를 조회해 놓고 copy해서 쓰는 방식으로 변경
  982. var srcNode = viewerObj.window.instance1.selectSingleNode(gvOrderBasicInfoPath +"/interface[qestcd='"+qestcd+"']");
  983. var targetNode = instance1.selectSingleNode(rsltref);
  984. var srcChildNodes = srcNode.childNodes;
  985. for(i=0; i<srcChildNodes.length; i++)
  986. {
  987. targetNode.appendChild(srcChildNodes.item(i));
  988. }
  989. model.refresh();
  990. }
  991. function fChkRecInCorrectPid(pid, hngnm) {
  992. model.removenode("/root/hidden/recinfo/");
  993. submit("TRMMO04129");
  994. var xmlnode = model.instance1.selectSingleNode("/root/hidden/recinfo/reclist");
  995. if(xmlnode != null){
  996. setParameter("SMMMO04100_pid", pid);
  997. setParameter("SMMMO04100_hngnm", hngnm);
  998. modal("SPMMO17800");
  999. clearParameter("SMMMO04100_pid");
  1000. clearParameter("SMMMO04100_hngnm");
  1001. }
  1002. }
  1003. /**
  1004. * @desc : 진료대상자리스트 닫기.(미니진료대상자리스트 띄울때 닫아버린다.)
  1005. * @
  1006. * @param :
  1007. * @return :
  1008. * @author : 한재상
  1009. * @---------------------------------------------------
  1010. */
  1011. function fPatListClose() {
  1012. window.close();
  1013. }
  1014. /**
  1015. * @desc : 중증체류시간 화면(SPMMO21300) 닫기
  1016. *@author: 김광성(kskim)
  1017. */
  1018. function fCloseSPMMO21300Wnd(){
  1019. var wndobj21300 = getOpenWindow("SPMMO21300");
  1020. var viewerSrc = iviewer1.attribute("src");
  1021. if( viewerSrc != "SMMMO04400_응급환자리스트.xrw" ){
  1022. //alert("SMMMO04400");
  1023. if( wndobj21300 != null ){
  1024. wndobj21300.javascript.fCloseWnd();
  1025. }
  1026. }
  1027. }
  1028. /**
  1029. * @desc : 진료대상자리스트에서 더블클릭시 각 탭에서 블러킹 및 체크 용도로 사용.
  1030. 로직은 추가하되 submission은 각 대상자 화면에 추가해야함.
  1031. * tabkind >>> O:외래, I:입원, E:응급, OP:수술, SRCH:환자검색
  1032. * @author : 한재상(maxizm)
  1033. */
  1034. function fChkBfPrcpLoad(tabkind) {
  1035. var sChkAfterPrcpYn = fGetHardCDList("Y", 221, 3); // 221 후인증 체크 사용여부
  1036. if(sChkAfterPrcpYn == "Y") {
  1037. // 1. 진료대상자에서 후인증관련 블러킹 처리. (전체탭에 대해서)
  1038. model.makeValue("/root/send/aftcert/pid", "");
  1039. model.makeValue("/root/send/aftcert/orddd", "");
  1040. model.makeValue("/root/send/aftcert/cretno", "");
  1041. model.makeValue("/root/send/aftcert/userdeptcd", getUserInfo("dutplcecd")); // 사용자 소속과
  1042. model.makeValue("/root/send/aftcert/userkind", "D"); // 의사 : "D", 그외 : "E"
  1043. model.makeValue("/root/send/aftcert/execkind", "patlist"); // 의사 : "D", 그외 : "E"
  1044. model.makeValue("/root/send/aftcert/orddrid", getUserInfo("userid"));
  1045. submit("TRMMO02705", false);
  1046. if ( parseInt(model.getValue("/root/hidden/aftcert/aftcertcnt")) > 0 ) {
  1047. messageBox("후인증 미비 내역이 존재합니다. 인증 후 진행하시기 바랍니다.", "C");
  1048. modal ( "SMMMO02700");
  1049. return false;
  1050. }
  1051. }
  1052. return true;
  1053. }
  1054. /**
  1055. * @desc : 진료대상자리스트에서 더블클릭시 환자의 정보 조회 및 체크
  1056. * @ 미수금 체크(patuncoinfo), 민원환자체크(complaininfo)
  1057. * @param : pid:환자번호
  1058. * @return : True:계속진행, False:진행 중단
  1059. * @author : 엄영만
  1060. * @---------------------------------------------------
  1061. */
  1062. function fCheckSelectPatInfo(ioflag, pid){
  1063. if (isNull(pid)) { return false; }
  1064. model.removeNodeset("/root/send/reqdata");
  1065. model.makeValue("/root/send/reqdata/pid", pid);
  1066. model.makeValue("/root/send/reqdata/ioflag", ioflag);
  1067. if(submit("TRMMO04114")){
  1068. // 미수금 안내 메세지창 팝업
  1069. var nodePatUnco = instance1.selectNodes("/root/hidden/selectpatinfo/patuncoinfo");
  1070. if( nodePatUnco != null && nodePatUnco.length > 0 ){
  1071. var nPatUncoAmt = model.getValue("/root/hidden/selectpatinfo/patuncoinfo/outuncoamt");
  1072. if (parseInt(nPatUncoAmt) > 0 ) {
  1073. messageBox("미수금("+ nPatUncoAmt +"원)이 있으니 수납 후 진료토록 안내바랍니다.\n\n문의사항:원무과", "I");
  1074. }
  1075. }
  1076. // 민원환자 안내 메세지창 팝업
  1077. //2012/11/29 Start
  1078. if(ioflag=="O" && pid !=""){ //외래일 경우만 처리
  1079. var chk = model.getValue("/root/hidden/selectpatinfo/complaininfo/chk");
  1080. if(chk=="Y"){
  1081. setParameter("SPMMO50200_pid", pid);
  1082. setParameter("SPMMO50200_ioflag", ioflag);
  1083. modal("SPMMO50200_민원확인");
  1084. clearParameter("SPMMO50200_pid");
  1085. clearParameter("SPMMO50200_ioflag");
  1086. }
  1087. }
  1088. //2012/11/29 End
  1089. /*
  1090. var nodeComplain = instance1.selectNodes("/root/hidden/selectpatinfo/complaininfo");
  1091. if( nodeComplain != null && nodeComplain.length > 0 ){
  1092. var sPatName = model.getValue("/root/hidden/selectpatinfo/complaininfo/hngnm");
  1093. var sOrdDate = model.getValue("/root/hidden/selectpatinfo/complaininfo/orddate");
  1094. var sIoFlagNm = model.getValue("/root/hidden/selectpatinfo/complaininfo/ioflagnm");
  1095. var sOfidocAcptDate = model.getValue("/root/hidden/selectpatinfo/complaininfo/ofidocacptdate");
  1096. var sMsg = sPatName + "님은 "+ sIoFlagNm + "(" + sOrdDate + ") 진료받은 환자로 " + sOfidocAcptDate + " 건강보험심사평가원에\n진료비가 적정한지 여부를 요청한 민원제기 된 환자이오니 참조하여 주시기 바랍니다."
  1097. if(getUserInfo("dutplceinstcd") == "031") {
  1098. sMsg = sMsg + "\n\n문의사항:심사팀(6135)"
  1099. } else {
  1100. sMsg = sMsg + "\n\n문의사항:심사팀(2188)"
  1101. }
  1102. messageBox(sMsg , "I");
  1103. }
  1104. */
  1105. }
  1106. return true;
  1107. // modal ("SMPAM00100");
  1108. }
  1109. /**
  1110. * @desc : 진료대상자리스트에서 환자 선택 가능여부 조회
  1111. * @ 로그인 부서를 체크하여 진료가능한 부서 인지 체크 2012.09.03
  1112. * @param : pid:환자번호
  1113. * @return : True:계속진행, False:진행 중단
  1114. * @author : 엄영만
  1115. * @---------------------------------------------------
  1116. */
  1117. function fCheckAbleSelPat() {
  1118. var sRtn = "Y";
  1119. var sUserOrdDeptYn = fGetHardCDList("Y", 335, 3); // 진료부서 체크 사용 여부
  1120. if(sUserOrdDeptYn == "Y" ) { // 환자선택시 진료 가능 부서 여부 체크 추가 2012.09.03 엄영만
  1121. model.makeNode("/root/temp/checkselpatorddept");
  1122. model.makeNode("/root/temp/checkselpatexpdept");
  1123. mmbfGetDeptCodeComboList("/root/send/reqdata", "/root/temp/checkselpatorddept", "O"); // 진료부서 체크 외래 부서 기준으로 체크
  1124. fGetHardCDList("N", 336, 0 , "/root/temp/checkselpatexpdept"); // 336 진료부서 체크 제외 부서
  1125. var sUserDeptCD = getUserInfo("dutplcecd"); // 로그인 부서
  1126. var ordDeptNode = instance1.selectSingleNode("/root/temp/checkselpatorddept/dept[deptcd='"+ sUserDeptCD +"']"); // 진료가능부서
  1127. var expDeptNode = instance1.selectSingleNode("/root/temp/checkselpatexpdept/hardcd[hardcd='"+sUserDeptCD+"']"); // 진료가능부서 체크 제외 부서
  1128. if( ordDeptNode == null && expDeptNode == null) {
  1129. sRtn = "N";
  1130. }
  1131. model.removeNode("/root/temp/checkselpatorddept");
  1132. model.removeNode("/root/temp/checkselpatexpdept");
  1133. }
  1134. return sRtn;
  1135. }