/* - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ CONSULT ( SMMMO04800_CONSULT.xrw - JScript ) - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */ var sCNSTPATLIST_PATH = "/root/main/cnstpatinfo/cnstpatlist"; var sORDERBY = ""; /** * @desc : 화면 초기화 * @ * @param : * @return : * @author : 오지훈 * @--------------------------------------------------- */ function fInitialize_SMMMO04800(){ model.removeNodeset(sCNSTPATLIST_PATH); model.setValue("/root/main/cond/fromdd" ,((getCurrentDate().toDate()).getAddDate(-3)).getDateFormat()); //시작일자는 3일 전 model.setValue("/root/main/cond/todd" , getCurrentDate()); // 종료일자 model.setValue("/root/main/cond/orddeptcd", getUserInfo("dutplcecd")); //진료과 model.setValue("/root/main/cond/orddrid", "-"); //진료의 model.setValue("/root/main/cond/oproomcd", "-"); //수술방 model.setValue("/root/main/cond/reqflag" , "-"); //의뢰구분 model.setValue("/root/main/cond/replyn" , "-"); //회신구분 model.setValue("/root/main/cond/ioflag", "-"); //진료구분 fReqCnstPatList(model.getValue("/root/main/cond/queryflag")); } /** * @desc : 의뢰(CONSULT)환자 조회 * @ * @param : queryflag - 쿼리구분 * orgin 조회버튼 클릭 * recv 과별받은 건 * req 과별보낸 건 * pid 환자별 보낸 건 * @return : * @author : 오지훈 * @--------------------------------------------------- */ function fReqCnstPatList(queryflag){ model.setValue("/root/main/cond/queryflag", queryflag); model.copyNode("/root/send/reqdata", "/root/main/cond"); //2011.05.01진상찬 페이지 처리추가(10건씩) var offset = parseInt(model.getValue("root/page/curpage")); //1page면 offset은 0, 1page가 아니면 offset은 page수 * 10 (한페이지당 10건씩 보여줌) if(offset == 1) { offset = offset - 1; } else { offset = (offset - 1) * 10; } model.makeValue("/root/send/reqdata/offset", String(offset)); //몇번째 데이터 부터 조회할지 지정 model.makeValue("/root/send/reqdata/pagesize", model.getValue("root/page/pagesize")); //한페이지에 보여줄 건수(10건고정) //if(submit("TRMMO04801")){ if(submit("TRMOB00004")){ var totrow = grd_cnstpatlist.rows; model.setValue("/root/main/totcnt/totcnt", totrow-1); model.copyNode(opener.instance1.selectSingleNode("root/cond/cnstpatlist"), instance1.selectSingleNode("root/main/cond")); model.copyNode(opener.instance1.selectSingleNode("root/temp/cnstpatlist"), instance1.selectSingleNode("root/init")); } ///////////////////////////////// var maxpage = parseInt(model.getValue("/root/main/cnstpatinfo/retcnt/cnspatlistcnt")); //alert(model.getValue("/root/main/cnstpatinfo/retcnt/cnspatlistcnt")); if(maxpage < 10) { model.setValue("/root/page/maxpage", "1"); } else { maxpage = (maxpage / 10) - ((maxpage % 10) / 10) + 1; model.setValue("/root/page/maxpage", String(maxpage)); model.refresh(); } ///////////////////////////////// var orderby = model.getValue("/root/main/cond/orderby"); var sortcol = model.getValue("/root/main/cond/sortcol"); if(sortcol != "" && orderby != ""){ sORDERBY = orderby; //nodeListSort(grd_oppatlist.nodeset, grd_oppatlist.colAttribute(sortcol, "ref"), sORDERBY); grd_cnstpatlist.colsort(sortcol) = sORDERBY grd_cnstpatlist.sort(1, 1, grd_cnstpatlist.rows -1, grd_cnstpatlist.cols -1) = "usersort"; grd_cnstpatlist.gridToInstance(); grd_cnstpatlist.refresh(); } } /** * @desc : 의뢰(consult)환자 환자기본정보설정 * @ * @param : * @return : * @author : 오지훈 * @--------------------------------------------------- */ function fReqCnstPatPamInfo(){ var currow = grd_cnstpatlist.row; var ioflag = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/ioflag"); var pid = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/pid"); var instcd = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/instcd"); var formrecseq = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/formrecseq"); if(ioflag == "O" || ioflag == "S"){ var orddd = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/acptorddd"); var cretno= model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/acptcretno"); return; //외래는 현재 협의 중 }else{ var orddd = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/orddd"); var cretno= model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/cretno"); } var param = "C" + "▦" + ioflag + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd + "▦" + formrecseq; setParameter("condparam", param); modal("SPMMO08900", 1, 0, 0, "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;"); var useyn = getParameter("SPMMO08900_rtn_useyn"); if(useyn == "Y"){ setParameter("SPMMO08900_rtn_useyn", ""); return true; }else{ return false; } } /** * @desc : 환자 선택 후, 환자 정보 조회 및 기록지 화면 연동 * @ * @param : * @return : * @author : 오지훈 * @--------------------------------------------------- */ function fSelectCnstPat(){ var ordrecflag = model.getValue(opener.instance1.selectSingleNode("root/main/cond/ordrecflag")); //기록지연결 여부 var currow = grd_cnstpatlist.row; if(currow < 1){ return; } var ioflag = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/ioflag"); var reqptype = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/reqptype"); var pid = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/pid"); var hngnm = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/hngnm"); if(ioflag == "O"){ messageBox("의뢰환자리스트에서 외래환자의 처방 및 진료기록을 작성", "E001"); return; } //처방, CP화면에 modal 또는 modaless가 뜬 경우, 환자 선택 불가 if(fChkScrnDisable()==false){ return; } //CP환자 여부 확인 if(fChkCPPatValid(currow)==false){ return; } // 진료기록에 수정된 사항이 있을 경우 저장할 것인지 묻는 함수 호출 : 2009. 07. 27 김영학 var mainobj = getMainViewer(); var mainscrnid = mainobj.javascript.getScreenID(); //메인화면의 기록지 ID if(mainscrnid == "SMMMR00100"){ var prvIntRecPamInfRtn = mainobj.window.javascript.fPrevInitRecPamInfo(); if(prvIntRecPamInfRtn == false){ return; }// 기록지에 필수 입력사항을 입력하지 않았을 때 그냥 넘어가 버리는 오류 수정 20100305 LYJ } //상단정보 설정 var mainObj = getMainViewer(); //var mainObj = getViewer("sysMessage"); if(fReqCnstPatPamInfo()==true){ opener.javascript.setParameter("SMMMO04100_reqptype", reqptype); var cpflag = opener.model.getValue("/root/cpflag"); var ordrecflag = opener.model.getValue("/root/main/cond/ordrecflag"); var recflag = opener.model.getValue("/root/main/cond/recflag"); var chngflag = opener.model.getValue("/root/main/cond/chngflag"); var mainObj = getMainViewer(); if (recflag == "Y") { var mainObj = getMainViewer(); curEmrRecObj = getOpenWindow("SMMRI00400"); //활성화된 진료기록 화면 object loading curExamRsltObj = getOpenWindow("SMAER00800"); //활성화된 검사결과 화면 object loading curNurTprObj = getOpenWindow("SMMNR00900"); //활성화된 간호 TPR 화면 object loading curNurBSEMRObj = getOpenWindow("SMMNR02500"); //활성화된 간호 TPR 화면 object loading curGrphObj = getOpenWindow("SPMRF05200"); //활성화된 그래프 서식 화면 object loading curCunsultObj = getOpenWindow("SMMMR05000"); //활성화된 Consult 화면 object loading curExamRsltNewObj = getOpenWindow("SMMMI00100"); //활성화된 검사결과 화면 object loading //if(curEmrRecObj != null){curEmrRecObj.javascript.fClose();} //진료기록 화면 close var wndobj = getOpenWindow("SMMRI00400"); if(wndobj != null) { setParameter("SMMRI00400_param_pid" , model.getValue("/root/source/pid")); setParameter("SMMRI00400_param_chosflag", model.getValue("/root/main/paminfo/list/ordtype")); wndobj.javascript.fInitalize(); activateChild("SMMRI00400"); } if(curExamRsltObj != null){ curExamRsltObj.model.setvalue("/root/send/data/singdata/srchpid", pid ); curExamRsltObj.javascript.btn_srch.dispatch("DOMActivate"); } //검사결과 화면 refresh; if(curNurTprObj != null){ //간호 TPR 화면 refresh : 2008-11-28 : 김영학 ; curNurTprObj.javascript.fInitialize("init"); } //간호 TPR 화면 refresh; if(curNurBSEMRObj != null){ //혈당간호기록 refresh : 2008-12-24 : 김영학 ; curNurBSEMRObj.javascript.fInitialize("init"); } //혈당간호기록 refresh; if(curGrphObj != null){ //그래프 서식 refresh : 2009-01-02 : 박민규 SW 요청 : 김영학 ; curGrphObj.javascript.fInitialize(); } //그래프 서식 refresh; // if(curCunsultObj != null && consulyn !="T"){ if(curCunsultObj != null && consulyn !="T"){ curCunsultObj.javascript.fInitalize(); } //그래프 서식 refresh; if(curExamRsltNewObj != null){ curExamRsltNewObj.model.setvalue("/root/send/data/singdata/srchpid", pid ); curExamRsltNewObj.javascript.btn_srch.dispatch("DOMActivate"); } //검사결과 화면 NEW refresh; curCpObj = mainObj.javascript.getOpenWindow("SMMMP00800"); //활성화된 CP Main 화면 object loading curPrcpObj = mainObj.javascript.getOpenWindow("SMMMO00100"); //활성화된 처방Main 화면 object loading curCpSrchObj = mainObj.javascript.getOpenWindow("SPMMP01200"); //활성화된 CP 검색 화면 object loading if(curPrcpObj != null) {curPrcpObj.javascript.fPrcpWndClose(); } ////활성화된 처방Main 화면이 있는 경우 close if(curCpObj != null){curCpObj.javascript.fCloseGPS();} //활성화된 CP Main화면이 있는 경우 close if(curCpSrchObj != null){curCpSrchObj.javascript.fCpSrchWndClose();} //활성화된 CP검색화면이 있는 경우 close clearParameter("SMMMO04100_ANSWCNT"); opener.javascript.fChngEMRScrn();// 진료기록 Open } else { opener.javascript.fOpenPrcpMainWnd(); //mainObj.window.javascript.openEmrScrn("SMMMO00100"); //처방화면 open } } /* if(fReqCnstPatPamInfo(currow)==true){ opener.javascript.fOpenPrcpMainWnd(); } */ /* if(fReqCnstPatPamInfo()== true){ if(ordrecflag == "N"){ //기록지연결 여부 Y인 경우, main화면 진료기록지 교체, 화면상단정보 설정 및 처방화면 OPEN fOpenOrdRecMainWnd(); }else{ fOpenEmptyWnd(); //기록지연결 여부 N인 경우, main화면 빈화면 교체, 화면상단정보 설정 및 처방화면 OPEN } }*/ } /** * @desc : CP환자 여부 검사 * @ * @param : * @return : * @author : 오지훈 * @--------------------------------------------------- */ function fChkCPPatValid(currow){ var pid = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/pid"); var orddd = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/orddd"); var cretno = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/cretno"); var ioflag = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/ioflag"); var hngnm = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/hngnm"); var orddeptcd = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/orddeptcd"); var acptorddd = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/acptorddd"); var acptcretno = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/acptcretno"); if(ioflag == "O"){ //외래인 경우, 외래접수, 외래생성번호 있는지 확인 후에 처방화면을 open if(acptorddd != "" && acptcretno != ""){ model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "N"); return true; }else{ messageBox("[" + hngnm + "]환자는 외래접수가 되지", "E007"); return false; } } model.removeNodeset("/root/send/reqdata"); model.makeValue("/root/send/reqdata/pid" , pid); model.makeValue("/root/send/reqdata/orddd" , orddd); model.makeValue("/root/send/reqdata/cretno" , cretno); model.makeValue("/root/send/reqdata/hngnm" , hngnm); //추가(2008.08.25) model.makeValue("/root/send/reqdata/prcpgenrflag", ioflag); model.makeValue("/root/send/reqdata/srchtabflag" , "D"); //대상자리스트탭(I/D):조회결과orddd,cretno는 외래이력의 수전정보임 if(submit("TRMMO04303")==true){ //CP적용 여부 확인 var cppatnode = instance1.selectNodes("/root/init/rsltgetdata/getdata"); if(cppatnode.length < 1){ //cp적용환자 tbl에 유효한 데이터가 없는 경우 model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "N"); //처방open return true; }else{ //CP적용환자 tbl에 유효한 데이터가 있는 경우 var appstat = model.getValue("/root/init/rsltgetdata/getdata/appstat"); var cpgnm = model.getValue("/root/init/rsltgetdata/getdata/cpgnm"); var cpgappno = model.getValue("/root/init/rsltgetdata/getdata/cpgappno"); var msgcnts = model.getValue("/root/init/rsltgetdata/getdata/msgcnts"); var msgflag = model.getValue("/root/init/rsltgetdata/getdata/msgflag"); var prtlflagcd = model.getValue("/root/init/rsltgetdata/getdata/prtlflagcd"); //01:CP,02:CPG if(appstat == 52){ //case52: 입원장 CP var rtnval = messageBox(msgcnts, msgflag); if(rtnval == 6){ model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "X"); // CP Main open return true; }else{ model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "N"); if(fUpdtCPPatAppStatVal(41) != false && instance1.selectSingleNode(sCNSTPATLIST_PATH + "[" + currow + "]/cpyn") != null){ //41 : CP 취소 model.setValue(sCNSTPATLIST_PATH + "[" + currow + "]/cpyn", "N"); return; }else{ return false; } } }else{ if( prtlflagcd == "02" && isNull(appstat) && msgflag == "P" ){ //모니터링구분:대상자탐색 Case. CPG & 호출flag:Popup(appyn:평가용여부) //CPG적용대상자 알림 팝업 호출 (2009.05.04) setParameter("SMMMO041_hngnm" , hngnm); setParameter("SMMMO041_pid" , pid); setParameter("SMMMO041_cretno" , cretno); setParameter("SMMMO041_orddd" , orddd); setParameter("SMMMO041_ordtype" , ioflag); setParameter("SMMMO041_orddeptcd" , orddeptcd); setParameter("SMMMO041_slipnm" , model.getValue(instance1.selectSingleNode("root/init/rsltgetdata/getdata/msgcnts"))); //cpgno▦cpghistseq▦cpgnm▦slipno▦slipnm▦valusgeyn▦valunm▦guidedocucnts setParameter("SMMMO041_cpgmntrflag", appstat); //null, SPMMP03200화면에서 cpgmntrflag(M or S)으로 따짐 setParameter("SMMMO041_cpgappno" , cpgappno); //적용중인 CP가 존재하면 값이 있음 setParameter("SMMMO041_cpgnm" , cpgnm); //적용중인 CP가 존재하면 값이 있음 modal("SPMMP03200"); //CP대상자 알람 팝업 if( cpgappno > 0 && cpgappno != getParameter("SPMMP032_cpgappno") && instance1.selectSingleNode(sCNSTPATLIST_PATH + "[" + currow + "]/cpyn") != null){ //진행중인 CP가 있는데 팝업에서 Drop한 경우 CP여부 N으로.. model.setValue(sCNSTPATLIST_PATH + "[" + currow + "]/cpyn", "N"); } if( !isNull(getParameter("SPMMP032_cpgappno")) && getParameter("SPMMP032_cpgappno") > 0 ){ model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "Y"); //CPG적용한 경우, MGPS 호출 }else{ model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "N"); //미적용 시 처방 화면 호출 } clearParameter("SPMMP032_cpgappno"); clearParameter("SMMMO041_hngnm"); clearParameter("SMMMO041_pid"); clearParameter("SMMMO041_cretno"); clearParameter("SMMMO041_orddd"); clearParameter("SMMMO041_ordtype"); clearParameter("SMMMO041_orddeptcd"); clearParameter("SMMMO041_slipnm"); clearParameter("SMMMO041_cpgmntrflag"); clearParameter("SMMMO041_cpgappno"); clearParameter("SMMMO041_cpgnm"); return true; }else{ //case 12 : D0 ~ D1 CP //그외 case : (10 : 진행중...) if( !isNull(msgcnts) && !isNull(msgflag) ){ //12: D0 처방일과 == 입원일 -> Drop 유도 //그외: 오늘날짜 > CP퇴원예정일 -> Drop 유도 messageBox(msgcnts, msgflag); setParameter("SMMMO043_cpgappno", cpgappno); //drop 팝업에서 인식할 수 있는 param setParameter("SMMMO043_drop" , "N"); //drop 팝업에서 인식할 수 있는 param modal("SPMMP02300"); //Drop 팝업 호출 model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "N"); if( getParameter("SMMMO043_drop") == "Y" ){ model.setValue(sINPATLIST_PATH + "[" + currow + "]/cpyn", "N"); }else{ return false; } clearParameter("SMMMO043_cpgappno"); clearParameter("SMMMO043_drop"); return true; } model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "Y"); return true; } } } } }