123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437 |
- var RSRV_PLCE = "";
- function fInitRsrvCtrl() {
-
- model.resetInstanceNode("/root/ctrl/send/rsrvinfo");
- model.resetInstanceNode("/root/ctrl/main/ctrllist/ctrlinfo");
- model.resetInstanceNode("/root/ctrl/temp/ctrllist/ctrlinfo");
-
- grd_ctrl.refresh();
- grd_ctrl.resizeCells();
- grd_ctrl.rebuildStyle();
-
- btn_rsrv.disabled = false;
- btn_cncl.disabled = false;
-
- model.resetInstanceNode("/root/temp/pmsglist/pmsginfo");
- }
- // 예약 제어 정보 조회
- function fGetRsrvCtrlList(grd, pRow, pExcuRoomCd, pRsrvDd, pRsrvTm) {
-
- // 호출 시점
- // 1. 검사 선택 후
- // 2. 검사실 선택 후
- // 3. 검사 시각 선택 후
-
- // 예약 적용까지의 딜레이 동안 버튼이 클릭될 수 있기 때문에
- // 미리 예약 버튼을 비활성화 해두고 적용한다.
- var prevRsrvBtnFlag = btn_rsrv.disabled;
- btn_rsrv.disabled = true;
-
- var path = grd.nodeset;
-
- var cnt = instance1.selectNodes(path).length;
- if (cnt < 1 || model.getValue(path + "/calcscorcd") == "") {
- return;
- }
-
- model.resetInstanceNode("/root/ctrl/send/rsrvinfo");
-
- var ctrlIdx = 1;
-
- for (var i = 1; i <= cnt; i++) {
-
- path = grd.nodeset + "[" + i + "]/";
-
- if (i != pRow && model.getValue(path + "chk") != "Y") {
- continue;
- }
-
- var ctrlPath = "/root/ctrl/send/rsrvinfo[" + ctrlIdx + "]/";
-
- ctrlIdx++;
-
- // 기본 항목
- model.makeValue(ctrlPath + "srchdd", getCurrentDate()); // 조회기준일
- model.makeValue(ctrlPath + "instcd", getUserInfo("dutplceinstcd")); // 기관코드
- model.makeValue(ctrlPath + "userid", getUserId()); // 사용자ID
- model.makeValue(ctrlPath + "userdept", getUserInfo("dutplcecd")); // 사용자부서
- model.makeValue(ctrlPath + "rsrvplce", RSRV_PLCE); // 예약처 (통합예약)
-
- model.makeValue(ctrlPath + "age", model.getValue("/root/main/ptinfo/age")); // 나이
- model.makeValue(ctrlPath + "creatine", model.getValue("/root/main/ptinfo/creatine")); // Creatine 수치 설정
-
- // 검사 현황 항목
- for (var j = 0; j < grd.cols; j++) {
- var ref = grd.colAttribute(j, "ref");
- model.makeValue(ctrlPath + ref, model.getValue(path + ref));
- }
-
- // 예약 가능 검사실 처리
- if (model.getValue(ctrlPath + "rsrvexcuroomposscd") == "") {
- model.makeValue(ctrlPath + "rsrvexcuroomposscd", model.getValue(ctrlPath + "excuroomnm"));
- }
-
- // 검사실 설정
- if (pExcuRoomCd != null) {
- model.makeValue(ctrlPath + "excuroomcd", pExcuRoomCd);
- }
-
- // 예약일, 예약 시각 설정
- var rsrvdd = "";
- var rsrvtm = "";
-
- var srchrsrvtm = model.getValue(path + "srchrsrvtm");
-
- if (pRsrvDd != null) {
- rsrvdd = pRsrvDd;
- } else if (srchrsrvtm.length == 12) {
- rsrvdd = srchrsrvtm.substr(0, 8);
- }
-
- if (pRsrvTm != null) {
- rsrvtm = pRsrvTm;
- } else if (srchrsrvtm.length == 12) {
- rsrvtm = srchrsrvtm.substr(8, 4);
- }
-
- model.makeValue(ctrlPath + "rsrvdd", rsrvdd); // 예약일
- model.makeValue(ctrlPath + "rsrvtm", rsrvtm); // 예약시각
-
- // 예약 현황
- model.makeValue(ctrlPath + "stat", "0"); // 가용 현황
-
- // 가용 현황, 이전 검사 종료 여부, 본인 제외 가용 현황 설정
- model.makeValue(ctrlPath + "capastat", "9"); // 가용 현황
- model.makeValue(ctrlPath + "tmflag", ""); // 이전 검사 종료 여부
- model.makeValue(ctrlPath + "excapastat", "9"); // 본인 제외 가용 현황
- model.makeValue(ctrlPath + "avtm", "0"); // 가용 시간
- model.makeValue(ctrlPath + "ertmflag", "N"); // 긴급 시각 여부
-
- var rPath = "/root/main3/rmrvlist/rmrvinfo";
-
- for (var j = 1; j <= instance1.selectNodes(rPath).length; j++) {
-
- if (model.getValue(rPath + "[" + j + "]/rsrvtm") != rsrvtm) {
- continue;
- }
-
- // 예약 현황
- var stat = Number(model.getValue(rPath + "[" + j + "]/stat"));
- model.setValue(ctrlPath + "stat", stat);
-
- // 가용 현황
- var capa = Number(model.getValue(rPath + "[" + j + "]/capa"));
- model.setValue(ctrlPath + "capastat", capa - stat);
-
- // 이전 검사 종료 여부
- var tmflag = model.getValue(rPath + "[" + j + "]/tmflag");
- model.setValue(ctrlPath + "tmflag", tmflag);
-
- if (pRsrvTm != null) {
-
- // 본인 제외 가용 현황
- var excnt = instance1.selectNodes(rPath + "[rsrvtm='" + rsrvtm + "' and pid = '" + model.getValue(path + "pid") + "']").length;
- model.setValue(ctrlPath + "excapastat", capa - stat + excnt);
-
- // 가용 시간
- var rcnt = instance1.selectNodes(rPath).length;
- for (var k = 1; k <= rcnt; k++) {
-
- var nexttm = model.getValue(rPath + "[" + k + "]/rsrvtm");
-
- if (nexttm > Number(rsrvtm) && model.getValue(rPath + "[" + k + "]/stat") != "0") {
- model.setValue(ctrlPath + "avtm", fGetMinInterval(nexttm, rsrvtm));
- break;
- }
-
- if (k == rcnt) {
- model.setValue(ctrlPath + "avtm", fGetMinInterval(nexttm, rsrvtm));
- }
- }
- }
-
- // 긴급 시각 여부
- model.setValue(ctrlPath + "ertmflag", model.getValue(rPath + "[" + j + "]/ertmflag"));
- }
- }
-
- // 환자 전달 사항 (구분자 '|'로 연결) (아직 쓰지 말자..)
- /*
- cnt = instance1.selectNodes("/root/main/ptcmtlist/ptcmtinfo").length;
- var patcmt = "";
- for (var i = 1; i <= cnt; i++) {
- patcmt += model.getValue("/root/main/ptcmtlist/ptcmtinfo[" + i + "]/patcmt");
- if (i < cnt) {
- patcmt += "|";
- }
- }
- model.makeValue("/root/ctrl/send/rsrvinfo/patcmt", patcmt); // 환자 전달 사항
- */
-
- // ref : /root/ctrl/send/rsrvinfo
- // resultref : /root/ctrl/temp/ctrllist/ctrlinfo
- submit("TRPEA00210", false);
-
- var tPath = "/root/ctrl/temp/ctrllist/ctrlinfo";
- var mPath = "/root/ctrl/main/ctrllist/ctrlinfo";
-
- cnt = instance1.selectNodes(tPath).length;
-
- var flag = false;
-
- // 데이터 확인 후 기존 데이터와 달라졌을 경우만 그리드에 새로 표시
- if (instance1.selectNodes(tPath + "[ctrldesc != '']").length == instance1.selectNodes(mPath).length) {
- for (var i = 1; i <= cnt; i++) {
-
- if (model.getValue(tPath + "[" + i + "]/ctrldesc") == "") {
- continue;
- }
-
- if (instance1.selectNodes(mPath + "[rsrvplce = '" + model.getValue(tPath + "[" + i + "]/rsrvplce") + "' and"
- + " suppdeptcd = '" + model.getValue(tPath + "[" + i + "]/suppdeptcd") + "' and"
- + " excuroomcd = '" + model.getValue(tPath + "[" + i + "]/excuroomcd") + "' and"
- + " excucd = '" + model.getValue(tPath + "[" + i + "]/excucd") + "' and"
- + " ctrlseq = '" + model.getValue(tPath + "[" + i + "]/ctrlseq") + "' and"
- + " ctrlflag = '" + model.getValue(tPath + "[" + i + "]/ctrlflag") + "' and"
- + " appflag = '" + model.getValue(tPath + "[" + i + "]/appflag") + "']").length < 1) {
-
- flag = true;
- break;
- }
- }
- } else {
- flag = true;
- }
-
- if (!flag) {
-
- btn_rsrv.disabled = prevRsrvBtnFlag;
-
- } else {
-
- model.resetInstanceNode(mPath);
-
- btn_cncl.disabled = false;
-
- var idx = 1;
- for (var i = 1; i <= cnt; i++) {
-
- // 제어 내역 설명이 없는 행은 표시하지 않음
- if (model.getValue(tPath + "[" + i + "]/ctrldesc") == "") {
- continue;
- }
-
- model.makeValue(mPath + "[" + idx + "]/rsrvplce", model.getValue(tPath + "[" + i + "]/rsrvplce"));
- model.makeValue(mPath + "[" + idx + "]/suppdeptcd", model.getValue(tPath + "[" + i + "]/suppdeptcd"));
- model.makeValue(mPath + "[" + idx + "]/excuroomcd", model.getValue(tPath + "[" + i + "]/excuroomcd"));
- model.makeValue(mPath + "[" + idx + "]/excucd", model.getValue(tPath + "[" + i + "]/excucd"));
- model.makeValue(mPath + "[" + idx + "]/ctrlseq", model.getValue(tPath + "[" + i + "]/ctrlseq"));
- model.makeValue(mPath + "[" + idx + "]/ctrldesc", model.getValue(tPath + "[" + i + "]/ctrldesc"));
- model.makeValue(mPath + "[" + idx + "]/ctrlflag", model.getValue(tPath + "[" + i + "]/ctrlflag"));
- model.makeValue(mPath + "[" + idx + "]/appflag", model.getValue(tPath + "[" + i + "]/appflag"));
-
- idx++;
- }
-
- grd_ctrl.refresh();
- grd_ctrl.rebuildStyle();
-
- // 제어 적용 예외 여부
- var excpflag = false;
- for (var i = 1; i <= instance1.selectNodes("/root/ctrl/hidden/excplist/excpinfo").length; i++) {
- if (getUserId() == model.getValue("/root/ctrl/hidden/excplist/excpinfo[" + i + "]/userid")) {
- excpflag = true;
- break;
- }
- }
-
- var rsrvCtrlFlag = false;
-
- cnt = instance1.selectNodes(mPath).length;
-
- // 제어 적용
- for (var i = 1; i <= cnt; i++) {
-
- var appflag = model.getValue(mPath + "[" + i + "]/appflag") == "Y" ? true : false;
-
- var ctrlflag = model.getValue(mPath + "[" + i + "]/ctrlflag");
-
- if (ctrlflag.indexOf("I") >= 0) { // 정보 (단순 확인용)
- grd_ctrl.rowStyle(i, "data", "background-color") = "#ffffff";
- }
-
- if (ctrlflag.indexOf("R") >= 0) { // 예약 제한
-
- grd_ctrl.rowStyle(i, "data", "background-color") = "#ffffa0";
-
- if (appflag) {
- grd_ctrl.rowStyle(i, "data", "font-weight") = "bold";
- } else {
- grd_ctrl.rowStyle(i, "data", "font-weight") = "";
- }
-
- if (!excpflag && appflag) {
- rsrvCtrlFlag = true;
- }
- }
-
- if (ctrlflag.indexOf("C") >= 0) { // 취소 제한
-
- grd_ctrl.rowStyle(i, "data", "background-color") = "#ffffa0";
-
- if (appflag) {
- grd_ctrl.rowStyle(i, "data", "font-weight") = "bold";
- } else {
- grd_ctrl.rowStyle(i, "data", "font-weight") = "";
- }
-
- if (!excpflag && appflag) {
- btn_cncl.disabled = true;
- }
- }
-
- if (ctrlflag.indexOf("T") >= 0) { // 통합 예약
-
- if (grd_ctrl.rowStyle(i, "data", "background-color") != "#ffffa0") {
- grd_ctrl.rowStyle(i, "data", "background-color") = "#ffdcdc";
- }
-
- // 통합 예약 담당 적용
- tPath = "/root/init/stafflist/P0127info";
- var tCnt = instance1.selectNodes(tPath).length;
- for (var j = 1; j <= tCnt; j++) {
- if (model.getValue(tPath + "[" + j + "]/cdid") == getUserId()) {
- appflag = false;
- break;
- }
- }
-
- if (appflag) {
- grd_ctrl.rowStyle(i, "data", "font-weight") = "bold";
- } else {
- grd_ctrl.rowStyle(i, "data", "font-weight") = "";
- }
-
- if (!excpflag && appflag) {
- rsrvCtrlFlag = true;
- //btn_cncl.disabled = true;
- }
-
- /*
- if (RSRV_PLCE != "T") {
- if (!excpflag && appflag) {
- btn_rsrv.disabled = true;
- btn_cncl.disabled = true;
- }
- }
- */
- }
-
- if (ctrlflag.indexOf("P") >= 0) { // 팝업 메시지
-
- if (grd_ctrl.rowStyle(i, "data", "background-color") != "#ffffa0" &&
- grd_ctrl.rowStyle(i, "data", "background-color") != "#ffdcdc") {
- grd_ctrl.rowStyle(i, "data", "background-color") = "#ebebff";
- }
-
- if (appflag) {
-
- tPath = "/root/ctrl/temp/termlist/terminfo";
- var tCnt = instance1.selectNodes(tPath).length;
-
- for (var j = 1; j <= tCnt; j++) {
- // 제어항 확인
- if (model.getValue(tPath + "[" + j + "]/rsrvplce") == model.getValue(mPath + "[" + i + "]/rsrvplce") &&
- model.getValue(tPath + "[" + j + "]/suppdeptcd") == model.getValue(mPath + "[" + i + "]/suppdeptcd") &&
- model.getValue(tPath + "[" + j + "]/excuroomcd") == model.getValue(mPath + "[" + i + "]/excuroomcd") &&
- model.getValue(tPath + "[" + j + "]/excucd") == model.getValue(mPath + "[" + i + "]/excucd") &&
- model.getValue(tPath + "[" + j + "]/ctrlseq") == model.getValue(mPath + "[" + i + "]/ctrlseq") &&
- model.getValue(tPath + "[" + j + "]/itemtype") == "C" &&
- model.getValue(tPath + "[" + j + "]/itemid") == "POPUP") {
-
- var msg = model.getValue(tPath + "[" + j + "]/valnm");
-
- if (instance1.selectNodes("/root/temp/pmsglist/pmsginfo[msg='" + msg + "']").length > 0) {
- continue;
- }
-
- var mcnt = instance1.selectNodes("/root/temp/pmsglist/pmsginfo[msg != '']").length;
-
- model.makeValue("/root/temp/pmsglist/pmsginfo[" + ( mcnt + 1 ) + "]/msg", msg);
-
- if (getUserInfo("dutplceinstcd") == "031") {
- model.setValue("/root/temp/alertmsg", msg);
- tar_alertmsg.refresh();
- grp_msg.visible = true;
- } else {
- messageBox(msg, "E999");
- }
- }
- }
- }
- }
- }
-
- grd_ctrl.resizeCells();
-
- // 예약 버튼에 제어 적용
- btn_rsrv.disabled = rsrvCtrlFlag;
- }
- }
- function fGetMinInterval(pVal1, pVal2) {
- var str1Front = pVal1.substr(0, 2);
- var str1Rear = pVal1.substr(2, 2);
-
- var val1 = Number(str1Front) * 60 + Number(str1Rear);
-
- var str2Front = pVal2.substr(0, 2);
- var str2Rear = pVal2.substr(2, 2);
-
- var val2 = Number(str2Front) * 60 + Number(str2Rear);
-
- return val1 - val2;
- }
- function setExcuEndTime() {
-
- var startTm = "";
- var tmSum = 0;
-
- var cnt = instance1.selectNodes("/root/main/exculist/excuinfo").length;
-
- for (var i = 1; i <= cnt; i++) {
- if (i == EXCU_SEL_ROW || model.getValue("/root/main/exculist/excuinfo[" + i + "]/chk") == "Y") {
- var excutm = model.getValue("/root/main/exculist/excuinfo[" + i + "]/excutm");
- if (excutm.isNumber()) {
- tmSum += Number(excutm);
- }
-
- if (startTm == "") {
- startTm = model.getValue("/root/main/exculist/excuinfo[" + i + "]/srchrsrvtm").substr(8, 4);
- }
- }
- }
-
- var endTm = "";
- if (startTm.isNumber()) {
- endTm = ( parseInt(startTm / 100) + parseInt(tmSum / 60) + parseInt( ( startTm % 100 + tmSum % 60 ) / 60) ) * 100
- + ( startTm % 100 + tmSum % 60 ) % 60;
- }
-
- endTm = endTm < 1000 ? "0" + endTm : String(endTm);
-
- if (tmSum > 0) {
- model.setValue("/root/temp/tmsum", parseInt(tmSum / 60) + ":" + ( tmSum % 60 ));
- model.setValue("/root/temp/endtm", endTm.substr(0, 2) + ":" + endTm.substr(2, 2));
- } else {
- model.setValue("/root/temp/tmsum", "");
- model.setValue("/root/temp/endtm", "");
- }
-
- cap_tmsum.refresh();
- cap_endtm.refresh();
- }
|