123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782 |
- /*
- - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
- 수술예약시간설정 ( SMMMO08800_수술예약시간설정.xrw - JScript )
- - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
- */
- var SELECTED_OPROOMCD = "";
- var SELECTED_GRDOBJ_ID = "";
- var gSTATUS_VAL = ""; //status
- var gOPROOMCD_VAL = ""; //oproomcd
- var gOPREGSTNO_VAL = ""; //opregstno
- var gOPREGSTHISTNO_VAL = ""; //opregsthistno
- var gPID = ""; //pid
- var gOPSCHEDD = ""; //opschedd
- var gPERFDEPTCD = ""; //perfdeptcd
- var gOPFROMTMCD = "";
- var gOPENDTMCD = "";
- var gQUERYFLAG = "";
- var gOPSTATCD = ""; //opstatcd
- var g_startpos = 0; //시작점
- var g_endpos = 0; //끝점
- var g_choiceflag = "N";//선택여부
- /**
- * @desc : 수술예약시간설정 화면 초기화
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fInitialize_SMMMO08800(){
- var param = opener.javascript.getParameter("SPMMO08800_param");
- if(param.length < 1){
- messageBox("수술예약정보를 찾을 수 ", "I004");
- window.close();
- }
-
- fDispRegOpTime(grd_optimelist1); //grid1 정규시간설정
- fDispRegOpTime(grd_optimelist2); //grid2 정규시간설정
- fDispRegOpTime(grd_optimelist3); //grid3 정규시간설정
-
- param = param.split("▦");
- gSTATUS_VAL = param[0];
- gOPROOMCD_VAL = param[1];
- gOPREGSTNO_VAL = param[2];
- gOPREGSTHISTNO_VAL = param[3];
- gPID = param[4];
- gOPSCHEDD = param[5];
- gPERFDEPTCD = param[6];
- gOPFROMTMCD = param[7];
- gOPENDTMCD = param[8];
- gQUERYFLAG = param[9];
- gPERFDRID = param[10];
- gOPSTATCD = param[11];
- SELECTED_OPROOMCD = gOPROOMCD_VAL;
-
- reqHardCodeInfo("/root/send/reqdata", "/root/init/hardcd", 18);
- var hardcd = model.getValue("/root/init/hardcd/hardcd/hardcd");
- if(getUserInfo("dutplcecd")== hardcd || getUserInfo("userid") == "EMR"){ //마취통증의학과의 경우 모든 수술방에 대해 예약입력 가능 권한을 부여
- //if(getUserInfo("dutplcecd") == hardcd){
- reqOpRoomList(getCurrentDate(), "/root/init/oproomlist", "total"); //전체 수술실 조회
- }else{
- reqOpRoomList(gOPSCHEDD, "/root/init/oproomlist", "detl", gPERFDEPTCD, gPERFDRID); //수술방 조회(일별로 예약가능한)
- }
- var depthngnm = "";
- var oproomnode= model.instance1.selectSingleNode("/root/init/oproomlist/oproomlist");
- if(oproomnode == null){
- messageBox("[" + depthngnm + "]등록된 수술방이", "I004");
- window.close();
- return;
- }
- if(gSTATUS_VAL == "r"){ //status 조회인 경우, grdobj를 disabled로 설정
- grd_optimelist1.disabled = true;
- grd_optimelist2.disabled = true;
- grd_optimelist3.disabled = true;
- }else if(gSTATUS_VAL == "x"){
- caption7.visible = "visible";
- combo1.visible = "visible";
- }
- fSetOpRoomNM(Math.ceil(fFindInstanceCount()/3)); //수술방명 설정
- fReqOpRoomScheList(); //수술방 스케줄 조회
- fSetOpScheTimeGrd(); //스케줄 표시
- if(gSTATUS_VAL == "i" || gSTATUS_VAL == "u"){ //status 가 신규인 경우,
- if(gOPFROMTMCD != "" && gOPENDTMCD != ""){ //시작, 종료시간이 설정된 경우에만 실행
- g_choiceflag = "X";
- fFindGridID();
- grdobj = document.controls.item(SELECTED_GRDOBJ_ID);
- if(grdobj != null){ //grid object가 null이 아닌 경우에만 표시
- fChkOpScheTime(grdobj, gOPFROMTMCD.substr(0,4), gOPENDTMCD.substr(0,4), "", "#0000ff"); //grid에 표시될 시작, 종료시간을 check
- }
- }
- }
- }
- /**
- * @desc : 수술방명 설정
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fSetOpRoomNM(curcnt){
- var roomcnt = getNodeSetCnt("/root/init/oproomlist/oproomlist");
- fSetOpRoomCnt(curcnt, roomcnt);
- var curcnt = model.getValue("/root/main/cond/curcnt");
- var tmpval = (curcnt - 1) * 3; // 1, 4, 7..순으로 수술방을 표현하기 위함
- for(var i = 1; i <= 3; i++){
- var xmlnode = model.instance1.selectSingleNode("/root/init/oproomlist/oproomlist[" + (i + tmpval) + "]/oproomnm");
- if(xmlnode == null){
- continue;
- }
- var oproomnm = model.getValue("/root/init/oproomlist/oproomlist[" + (i + tmpval) + "]/oproomnm");
- var oproomcd = model.getValue("/root/init/oproomlist/oproomlist[" + (i + tmpval) + "]/oproomcd");
- var grdid = "grd_optimelist" + "" + i + "";
- var grdObj = document.controls.item(grdid);
- if(grdObj == null){break;}
- grdObj.valueMatrix(0, 0) = oproomnm; //수술방명 설정
- grdObj.valueMatrix(1, 0) = oproomnm;
- grdObj.valueMatrix(0, 1) = oproomcd; //수술방코드 설정
- grdObj.valueMatrix(1, 1) = oproomcd;
- }
- if(grdObj != null){grdObj.refresh();}
- }
- /**
- * @desc : 수술방명 설정
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fReqOpRoomScheList(){
- model.removeNodeset("/root/send/reqdata");
- model.makeValue("/root/send/reqdata/opschedd" , gOPSCHEDD);
- model.makeValue("/root/send/reqdata/perfdeptcd", gPERFDEPTCD);
- model.makeValue("/root/send/reqdata/queryflag" , gQUERYFLAG);
- model.makeValue("/root/send/reqdata/regtmflag" , model.getValue("/root/tmp/regtmflag"));
- if(gQUERYFLAG == "oprsrv" && gSTATUS_VAL == "u"){ //시간설정화면에서 수술예약정보의 데이터를 수정하는 경우
- model.makeValue("/root/send/reqdata/oprsrvno", gOPREGSTNO_VAL); //해당 환자의 수술예약정보는 조회하지 않음. 화면에 표시는 parameter로 처리
- }
- submit("TRMMO08801");
- }
- /**
- * @desc : 수술방 시간 그리드 표시
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fSetOpScheTimeGrd(){
- var totcnt = getNodeSetCnt("/root/main/optimeinfo/optimelist"); //수술방 시간 전체 count
- for(var i = 1 ; i <= totcnt ; i++){
- var oproomcd = model.getValue("/root/main/optimeinfo/optimelist[" + i + "]/oproomcd"); //oproomcd를 구한후,
- var opfromtmcd = model.getValue("/root/main/optimeinfo/optimelist[" + i + "]/opfromtmcd"); //opfromtmcd
- var opendtmcd = model.getValue("/root/main/optimeinfo/optimelist[" + i + "]/opendtmcd"); //opendtmcd
- var usernm = model.getValue("/root/main/optimeinfo/optimelist[" + i + "]/usernm"); //usernm
- var opregstno = model.getValue("/root/main/optimeinfo/optimelist[" + i + "]/opregstno"); //opregstno
- var opregsthistno = model.getValue("/root/main/optimeinfo/optimelist[" + i + "]/opregsthistno"); //opregsthistno
- var pid = model.getValue("/root/main/optimeinfo/optimelist[" + i + "]/pid"); //pid
- for(var j = 1; j < 4; j++){
- var grdid = "grd_optimelist" + "" + j + "";
- var grdobj = document.controls.item(grdid);
- if(oproomcd == grdobj.valueMatrix(0, 1)){ //grid에 설정된 oproomcd와 동일한 경우, 해당 정보를 setting
- if(gSTATUS_VAL == "u" && opregstno == gOPREGSTNO_VAL && opregsthistno == gOPREGSTHISTNO_VAL && pid == gPID){
- var opfromtmcd = gOPFROMTMCD.substr(0,4);
- var opendtmcd = gOPENDTMCD.substr(0,4);
- var color ="#0000ff";
- usernm ="";
- }else{
- var opfromtmcd = opfromtmcd.substr(0,4);
- var opendtmcd = opendtmcd.substr(0,4);
- var color ="#00ff00";
- }
- fChkOpScheTime(grdobj, opfromtmcd, opendtmcd, usernm, color); //grid에 표시될 시작, 종료시간을 check
- }
- }
- }
- }
- /**
- * @desc : 수술방 그리드 시간표시
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fChkOpScheTime(grdobj, fromtime, endtime, usernm, color){
- for(var col = 2; col < grdobj.cols ; col++){
- var header = fGetOpSchdHeaderInfo(grdobj, col); //그리드 상단 시간정보 조회
- if(header == fromtime){ //시작시간과 같은 경우 startpos 설정
- var startpos = col;
- }
- if(header == endtime){ //종료시간과 같은 경우 endpos 설정
- var endpos = col;
- }
- }
- fPaintGrdColor(grdobj, startpos, endpos, usernm, color);
- }
- /**
- * @desc : 수술방 그리드 상단시간 정보 조회
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fGetOpSchdHeaderInfo(grdobj, col){
- var hour = grdobj.valueMatrix(0, col);
- var minutes= grdobj.valueMatrix(1, col);
- if(minutes == "00"){
- nextmin = "10";
- }else if(minutes == "20"){
- nextmin = "30";
- }else if(minutes == "40"){
- nextmin = "50";
- }
- if(minutes == ""){
- minutes = nextmin;
- }
- var header = hour + "" + minutes;
- return header;
- }
- /**
- * @desc : 그리드 색깔 설정 및 데이터 입력
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fPaintGrdColor(grdobj, startpos, endpos, usernm, color){
- for(var i = startpos; i < endpos; i++){
- grdobj.cellStyle("background-color", 2, i) = color;
- grdobj.valueMatrix(2, i) = usernm;
- }
- if(startpos != endpos-1){
- if(color == "#00ff00"){
- grdobj.mergeByFree(2, startpos, 2, endpos-1);
- }
- }
- grdobj.refresh();
- }
- /**
- * @desc : 그리드 클릭시, 색깔 설정
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fSelectOpScheTime(grdobj){
- var extra = model.getValue("/root/main/cond/extra");
- if(extra == "Y"){
- var rtnval = messageBox("정규시간 이외 설정을 해체를", "Q004");
- if(rtnval == 6){
- model.setValue("/root/main/cond/extra" , "N");
- model.setValue("/root/main/cond/oproomcd" , "");
- model.setValue("/root/main/cond/exfromtmcd", "");
- model.setValue("/root/main/cond/exendtmcd" , "");
- cmb_oproom.disabled = true;
- cmb_exfromtmcd.disabled = true;
- cmb_exendtmcd.disabled = true;
- model.refresh();
-
- fCnclOpScheTime();
-
- }else{
- return;
-
- }
- }
-
- var col = grdobj.col;
- if(col < 2){
- return;
- }
- if(grdobj.valueMatrix(0, 1) == ""){
- return;
- }
- if(fChkChngOpRoom(grdobj) == false){
- return;
- }
- SELECTED_OPROOMCD = grdobj.valueMatrix(0, 1);
-
- // 오전과 오후의 진료과가 다른 경우 자신의 해당하는 시간에만 정규 수술의뢰를 할 수 있도록 수정 : 2009. 07. 09 김영학
- SELECTED_time = grdobj.valueMatrix(0, grdobj.col);
- SELECTED_MIN = grdobj.valueMatrix(1, grdobj.col);
- if(SELECTED_MIN == ""){ //값이 없는 부분은 그 전의 값에 따라 15분 또는 45분
- var bfminutes = grdobj.valueMatrix(1, grdobj.col-1);
- if(bfminutes == "00"){
- SELECTED_MIN = "10";
- }else if(bfminutes == "20"){
- SELECTED_MIN = "30";
- }else if(bfminutes == "40"){
- SELECTED_MIN = "50";
- }
- }
-
- var amdeptcd = model.getValue("/root/init/oproomlist/alloproomlist[oproomcd = '"+ SELECTED_OPROOMCD +"' and usescheflag = '1']/perfdeptcd")
- var amdeptnm = model.getValue("/root/init/oproomlist/alloproomlist[oproomcd = '"+ SELECTED_OPROOMCD +"' and usescheflag = '1']/deptnm")
- var pmdeptcd = model.getValue("/root/init/oproomlist/alloproomlist[oproomcd = '"+ SELECTED_OPROOMCD +"' and usescheflag = '2']/perfdeptcd")
- var pmdeptnm = model.getValue("/root/init/oproomlist/alloproomlist[oproomcd = '"+ SELECTED_OPROOMCD +"' and usescheflag = '2']/deptnm")
-
- var oproomnm = model.getValue("/root/init/oproomlist/alloproomlist[oproomcd = '"+ SELECTED_OPROOMCD +"']/oproomnm")
- var perfdeptcd = model.getValue("/root/send/reqdata/perfdeptcd");
- if (amdeptcd != pmdeptcd) {
- if (SELECTED_time + SELECTED_MIN >= "1300" && pmdeptcd != perfdeptcd && pmdeptcd !="-") {
- messageBox("오후시간은 " + pmdeptnm + "로 배정된 시간으로 수술시간 지정이 불가합니다.\n 수술 소요시간이 배정된 시간을 초과되는 경우에는 전달사항에 입력하시기 바랍니다. ", "I");
- fCnclOpScheTime();
- return;
- } else if (SELECTED_time + SELECTED_MIN < "1300" && amdeptcd != perfdeptcd && amdeptcd !="-") {
- messageBox("오전시간은 " + amdeptnm + "로 배정된 시간으로 수술시간 지정이 불가합니다.\n 수술 소요시간이 배정된 시간을 초과되는 경우에는 전달사항에 입력하시기 바랍니다. ", "I");
- fCnclOpScheTime();
- return;
- }
- }
- // 오전과 오후의 진료과가 다른 경우 자신의 해당하는 시간에만 정규 수술의뢰를 할 수 있도록 수정 : 2009. 07. 09 김영학 -- end
-
- if(g_choiceflag == "N"){ //선택이 안된 경우
- var bgcolor = grdobj.cellStyle("background-color", 2, col);
- if(bgcolor == "#0000ff"){
- grdobj.cellStyle("background-color", 2, col) = "#ffffff";
- }else if(bgcolor == "#00ff00"){
- return;
- }else{
- grdobj.cellStyle("background-color", 2, col) = "#0000ff";
-
- }
- g_choiceflag = "Y";
- g_startpos = col;
-
- }else if(g_choiceflag == "Y"){//선택이 된 경우
- g_endpos = col;
- grdobj.cellStyle("background-color", 2, col) = "#0000ff";
-
- for(var i = g_startpos + 1; i < g_endpos; i++){
- if(grdobj.cellStyle("background-color", 2, i) != "white"){
- break;
- }else{
- grdobj.cellStyle("background-color", 2, i) = "#0000ff";
- }
- }
- g_choiceflag = "X";
- g_startpos = 0;
- g_endpos = 0;
- }
- }
- /**
- * @desc : 수술방변경 검사
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fChkChngOpRoom(grdobj){
- var oproomcd = grdobj.valueMatrix(0, 1);
- if(SELECTED_OPROOMCD != oproomcd && SELECTED_OPROOMCD != ""){
-
- if(gSTATUS_VAL != "i"){ //신규인 경우 변경 여부를 묻는다.
- if(gOPSTATCD > 30) {
- var rtnval = messageBox("예정된 수술방에서 수술이 진행되었습니다. 수술방은 변경 ", "E001");
- return false;
- }else{
- var rtnval = messageBox("수술방을 [" + grdobj.valueMatrix(0, 0) + "]로 변경하고 ", "Q003");
- }
- }else{ //신규가 아닌 경우는 변경 여부 없이 바로 진행
- var rtnval = 6
-
- }
-
- if(rtnval == 7){ //아니오를 클릭한 경우
- return false;
-
- }else{
- fClearOpScheGrdInfo();
- var curcnt = model.getValue("/root/main/cond/curcnt");
- fSetOpRoomNM(curcnt);
- fSetOpScheTimeGrd();
- g_choiceflag = "N";
- g_startpos = 0;
- g_endpos = 0;
- model.setValue("/root/main/cond/roomflag", "N"); //방없음 N으로 해체
- model.refresh();
- return true;
- }
- }
- }
- /**
- * @desc : 수술방 count 설정, 현재 page / 총 page
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fSetOpRoomCnt(curcnt, totcnt){
- model.setValue("/root/main/cond/totcnt", Math.ceil(totcnt/3));
- model.setValue("/root/main/cond/curcnt", curcnt);
- model.refresh();
- }
- /**
- * @desc : 수술예약시간 설정 정보 clear
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fClearOpScheGrdInfo(){
- for(var i = 1; i <= 3; i++){
- var grdid = "grd_optimelist" + "" + i + "";
- var grdobj = document.controls.item(grdid);
- grdobj.valueMatrix(0, 0) = ""; //수술방명 설정
- grdobj.valueMatrix(1, 0) = "";
- grdobj.valueMatrix(0, 1) = ""; //수술방코드 설정
- grdobj.valueMatrix(1, 1) = "";
- model.removeNodeset(grdobj.nodeset);
- }
- model.refresh();
- for(var i = 1; i <= 3; i++){
- var grdid = "grd_optimelist" + "" + i + "";
- var grdobj = document.controls.item(grdid);
- grdobj.addrow(true);
- }
-
- }
- /**
- * @desc : 다음 버튼 클릭
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fClkBtnAfter(){
- var totcnt = model.getValue("/root/main/cond/totcnt");
- var curcnt = model.getValue("/root/main/cond/curcnt");
- curcnt++;
- if(curcnt > totcnt){
- curcnt--;
- return;
- }
- fClearOpScheGrdInfo(); //그리드에 설정된 값을 모두 clear
- model.setValue("/root/main/cond/curcnt", curcnt);
- model.refresh();
- fSetOpRoomNM(curcnt);
- fSetOpScheTimeGrd();
- }
- /**
- * @desc : 이전 버튼 클릭
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fClkBtnBefore(){
- var totcnt = model.getValue("/root/main/cond/totcnt");
- var curcnt = model.getValue("/root/main/cond/curcnt");
- curcnt--;
- if(curcnt == 0){
- curcnt++;
- return;
- }
- fClearOpScheGrdInfo(); //그리드에 설정된 값을 모두 clear
- model.setValue("/root/main/cond/curcnt", curcnt);
- model.refresh();
- fSetOpRoomNM(curcnt);
- fSetOpScheTimeGrd();
- }
- /**
- * @desc : 수술예약시간 무결성 확인
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fChkSaveData(){
- var extra = model.getValue("/root/main/cond/extra");
- var roomflag = model.getValue("/root/main/cond/roomflag");
- var startpos = 0;
- var endpos = 0;
- fFindGridID(); //grid id찾기 global변수에 id 설정
- var icnt = 0;
- grdobj = document.controls.item(SELECTED_GRDOBJ_ID);
- for(var col = 2; col <= grdobj.cols; col++){
- var color = grdobj.cellStyle("background-color", 2, col);
- if(color == "#0000ff" && startpos == 0){ //파란색으로 시작되는 지점 구하기
- startpos = col;
- }
-
- if(startpos!=0){icnt++;} //시작지점이 0이 아닌때부터 count함
-
- if(color != "#0000ff" && startpos != 0){ //파란색으로 종료되는 지점 구하기
-
- endpos = col-1;
- break;
- }
- }
-
- if(startpos == 0){ //시작점이 없는 경우는 값이 없는 값으로 넘긴다
- var oproomcd = grdobj.valueMatrix(0, 1);
- var rtnparam = oproomcd + "▦▦"
- opener.javascript.setParameter("SPMMO08800_rtn_param", rtnparam);
- opener.javascript.setParameter("SPMMO08800_rtn_useyn", "Y");
- window.close();
- }
-
- var starthour = grdobj.valueMatrix(0, startpos);
- var startminutes = grdobj.valueMatrix(1, startpos);
- if(startminutes == ""){ //값이 없는 부분은 그 전의 값에 따라 15분 또는 45분
- var bfminutes = grdobj.valueMatrix(1, startpos-1);
- if(bfminutes == "00"){
- startminutes = "10";
- }else if(bfminutes == "20"){
- startminutes = "30";
- }else if(bfminutes == "40"){
- startminutes = "50";
- }
- }
- var opfromtmcd = starthour + "" + startminutes + "" + "00";
-
- var inchour = 0;
- for(var i = 1; i < icnt; i++){
- startminutes = eval(startminutes) + 10;
- if(startminutes == 60){
- inchour++;
- startminutes = 0;
- }
- }
-
- var endhour = eval(starthour) + eval(inchour);
- if(endhour < 10){endhour = "0".concat(endhour);}
- if(startminutes==0){startminutes = "00";}
- var opendtmcd = endhour + "" + startminutes + "" + "00";
- var oproomcd = grdobj.valueMatrix(0, 1);
- var rtnparam = oproomcd + "▦" + opfromtmcd + "▦" + opendtmcd;
- opener.javascript.setParameter("SPMMO08800_rtn_param", rtnparam);
- opener.javascript.setParameter("SPMMO08800_rtn_useyn", "Y");
- model.close();
-
- }
- /**
- * @desc : grd id 찾기, global변수에 id 설정
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fFindGridID(){
- for(var i = 1 ; i <= 3; i++){ //grid id찾기
- var grdid = "grd_optimelist" + i + "";
- var tmpobj = document.controls.item(grdid);
- if(tmpobj.valueMatrix(0, 1) == SELECTED_OPROOMCD){
- SELECTED_GRDOBJ_ID = grdid;
- }
- }
- }
- /**
- * @desc : 해당값이 instance에 몇번째 있는지 확인한다.
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fFindInstanceCount(param){
- if(param != ""){
- var cmpval = param;
- }else{ //param이 없는 경우, opener에서 받은 oproomcd를 기본으로 설정함
- var cmpval = gOPROOMCD_VAL;
- }
-
- var totcnt = getNodeSetCnt("/root/init/oproomlist/oproomlist");
- for(var i = 1; i <= totcnt; i++){
- var oproomcd = model.getValue("/root/init/oproomlist/oproomlist[" + i + "]/oproomcd");
- if(oproomcd == cmpval){
- return i;
- }
- }
- return 1; //선택된 수술방이 없는 경우 첫번째 instance로 무조건 설정함
- }
- /**
- * @desc : 정규시간 이외 instance remove
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fInitExtraTimeSet(){
- if(gOPFROMTMCD == ""){ //parameter로 넘어온 값이 없는 경우, 정규시간 이외 설정 검토를 하지 않음
- return;
-
- }else if(gOPFROMTMCD >= 170000 || gOPFROMTMCD < 80000){ // 오후 5시보다 크고, 오전 8시보다 작은 경우 정규시간 이외 설정
-
- for(var i = 37; i > 0; i--){
- model.removenode("/root/init/M0014/M0014[" + i + "]");
- }
- var extra = model.setValue("/root/main/cond/extra", "Y");
- model.setValue("/root/main/cond/oproomcd" , gOPROOMCD_VAL);
- model.setValue("/root/main/cond/exfromtmcd", gOPFROMTMCD);
- model.setValue("/root/main/cond/exendtmcd" , gOPENDTMCD);
- cmb_exfromtmcd.disabled = false;
- cmb_exendtmcd.disabled = false;
- cmb_oproom.disabled = false;
- }
- model.refresh();
- }
- /**
- * @desc : 수술예약시간 삭제
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fCnclOpScheTime(){
- fClearOpScheGrdInfo();
- var curcnt = model.getValue("/root/main/cond/curcnt");
- fSetOpRoomNM(curcnt);
-
- //var opregstno = model.getValue("/root/main/optimeinfo/optimelist[" + i + "]/opregstno"); //opregstno
- model.removeNode("/root/main/optimeinfo/optimelist[opregstno='" + gOPREGSTNO_VAL + "']");
-
- fSetOpScheTimeGrd();
- g_choiceflag = "N";
- g_startpos = 0;
- g_endpos = 0;
- }
- /**
- * @desc : 수술예약시간 초기화
- * @ -마취스케줄관리 tbl의 시작, 종료시간 조회 정보를 기반으로
- * @ -그리드의 시간표시 범위를 설정함
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fInitOpScheTime(){
- fReqRegOpTime();
- }
- /**
- * @desc : 정규수술시간 조회
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fReqRegOpTime(){
- if(gOPSCHEDD == ""){
- var nextdate = getCurrentDate();
- }else{
- var nextdate = gOPSCHEDD
- }
- model.removeNodeset("/root/send/reqdata");
- model.makeValue("/root/send/reqdata/nextdate", nextdate);
- if(submit("TRMMO05705")){
- var xml = instance1.selectSingleNode("/root/main/scheregtimelist/scheregtimelist");
- if(xml == null){
- model.makeValue("/root/tmp/regtmflag" , "N");
- model.makeValue("/root/main/scheregtimelist/scheregtimelist/regfromtm", "08");
- model.makeValue("/root/main/scheregtimelist/scheregtimelist/regendtm" , "17");
- } else {
- model.makeValue("/root/tmp/regtmflag" , "Y");
- }
- }
- }
- /**
- * @desc : 정규수술시간 조회
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fDispRegOpTime(grdobj){
- var regfromtm = model.getValue("/root/main/scheregtimelist/scheregtimelist/regfromtm");
- var regendtm = model.getValue("/root/main/scheregtimelist/scheregtimelist/regendtm");
-
- var totcol = grdobj.cols;
- for(var i = 2; i < grdobj.cols; i++){ //정규시작 시간까지 column을 hidden
- var time = grdobj.valueMatrix(0, i);
- if(time == regfromtm){
- break;
-
- }else{
- grdobj.colHidden(i) = true;
- }
- }
-
- for(var j = i; i < grdobj.cols; i++){ //정규종료 시간까지 column을 visible
- var time = grdobj.valueMatrix(0, i);
- if(time == regendtm){
- break;
-
- }
- else{
- grdobj.colHidden(i) = false;
- }
- }
-
- // 2008.11.19 종료시간 이후도 hidden 되도록
- for(var x = i; i < grdobj.cols; i++){ //정규종료 시간까지 column을 hidden
- var time = grdobj.valueMatrix(0, i);
- grdobj.colHidden(i) = true;
- }
- // (e)
- }
|