SMPMB03700.js 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. function fInitRsrvCtrl() {
  2. if (getUserInfo("dutplceinstcd") != "031") {
  3. return;
  4. }
  5. model.resetInstanceNode("/root/ctrl/send/rsrvinfo");
  6. model.resetInstanceNode("/root/ctrl/main/ctrllist/ctrlinfo");
  7. model.resetInstanceNode("/root/ctrl/temp/ctrllist/ctrlinfo");
  8. grd_ctrl.refresh();
  9. grd_ctrl.resizeCells();
  10. grd_ctrl.rebuildStyle();
  11. // 제어 적용 여부 조회
  12. submit("TRPMB03711", false);
  13. if (IS_RSRVUSER) {
  14. btn_rsrv.disabled = false;
  15. }
  16. }
  17. // 예약 제어 정보 조회
  18. function fGetRsrvCtrlList(pExcuroomcd, pRsrvdd, pRsrvtm) {
  19. // 호출 시점
  20. // 1. 검사 선택 후
  21. // 2. 검사실 선택 후
  22. // 3. 검사일 선택 후
  23. // 4. 검사 시각 선택 후
  24. // 5. 예약 직전
  25. if (getUserInfo("dutplceinstcd") != "031") {
  26. return;
  27. }
  28. // 검사 현황 내역의 경로
  29. var row = grd_mainordlist5.row;
  30. var rPath = "/root/main/exculist/mainordlist5[" + row + "]/";
  31. // 선택된 검사 현황의 검사코드가 없으면 진행하지 않음
  32. model.resetInstanceNode("/root/ctrl/send/rsrvinfo");
  33. if (model.getValue(rPath + "calcscorcd") == "") {
  34. return;
  35. }
  36. // 기본 항목
  37. model.makeValue("/root/ctrl/send/rsrvinfo/rsrvplce", "T"); // 예약처 (통합예약)
  38. model.makeValue("/root/ctrl/send/rsrvinfo/suppdeptcd", model.getValue(rPath + "suppdeptcd")); // 수행부서
  39. var excuroomcd = pExcuroomcd;
  40. if (excuroomcd == null || excuroomcd == "") {
  41. excuroomcd = model.getValue(rPath + "excuroomcd");
  42. }
  43. model.makeValue("/root/ctrl/send/rsrvinfo/excuroomcd", excuroomcd); // 검사실
  44. model.makeValue("/root/ctrl/send/rsrvinfo/srchdd", getCurrentDate()); // 조회일
  45. var excucd = model.getValue(rPath + "calcscorcd");
  46. excucd = excucd == "" ? "T" : excucd;
  47. model.makeValue("/root/ctrl/send/rsrvinfo/excucd", excucd); // 검사코드
  48. // 부가 항목 (그리드)
  49. model.makeValue("/root/ctrl/send/rsrvinfo/rsrvexcuroomposscd", model.getValue(rPath + "excuroomnm")); // 예약 가능 검사실
  50. model.makeValue("/root/ctrl/send/rsrvinfo/pid", model.getValue(rPath + "pid")); // 등록번호
  51. model.makeValue("/root/ctrl/send/rsrvinfo/ordflag", model.getValue(rPath + "genrflag")); // 처방발생구분(진료형태)
  52. model.makeValue("/root/ctrl/send/rsrvinfo/orddd", model.getValue(rPath + "orddd")); // 진료일
  53. model.makeValue("/root/ctrl/send/rsrvinfo/cretno", model.getValue(rPath + "cretno")); // 생성번호
  54. model.makeValue("/root/ctrl/send/rsrvinfo/orddeptcd", model.getValue(rPath + "orddeptcd")); // 진료과
  55. model.makeValue("/root/ctrl/send/rsrvinfo/orddrid", model.getValue(rPath + "orddrid")); // 진료의
  56. model.makeValue("/root/ctrl/send/rsrvinfo/prcpdd", model.getValue(rPath + "prcpdd")); // 처방일
  57. model.makeValue("/root/ctrl/send/rsrvinfo/execprcpuniqno", model.getValue(rPath + "prcpdd")); // 처방일자일련번호
  58. var rsrvdt = model.getValue(rPath + "srchrsrvtm");
  59. var rsrvdd = pRsrvdd;
  60. var rsrvtm = pRsrvtm;
  61. if (rsrvdd == null || rsrvdd == "") {
  62. rsrvdd = rsrvdt.substr(0, 8);
  63. }
  64. if (rsrvtm == null || rsrvtm == "") {
  65. rsrvtm = rsrvdt.substr(8, 4);
  66. }
  67. model.makeValue("/root/ctrl/send/rsrvinfo/rsrvdd", rsrvdd); // 예약일
  68. model.makeValue("/root/ctrl/send/rsrvinfo/rsrvtm", rsrvtm); // 예약시각
  69. // 처방 전달 사항
  70. var prcpcmt = model.getValue("/root/main/comment1/prcpcmt");
  71. model.makeValue("/root/ctrl/send/rsrvinfo/prcpcmt", prcpcmt); // 처방 전달 사항
  72. // 환자 전달 사항 (구분자 '|'로 연결)
  73. var cnt = instance1.selectNodes("/root/main/exculist/subordlist3/rows").length;
  74. var patcmt = "";
  75. for (var i = 1; i <= cnt; i++) {
  76. patcmt += model.getValue("/root/main/exculist/subordlist3/rows[" + i + "]/patcmt");
  77. if (i < cnt) {
  78. patcmt += "|";
  79. }
  80. }
  81. model.makeValue("/root/ctrl/send/rsrvinfo/patcmt", patcmt); // 환자 전달 사항
  82. // ref = "/root/ctrl/send/rsrvinfo"
  83. // resultref = "/root/ctrl/temp/ctrllist/ctrlinfo"
  84. submit("TRPMB03710", false);
  85. var tPath = "/root/ctrl/temp/ctrllist/ctrlinfo";
  86. var mPath = "/root/ctrl/main/ctrllist/ctrlinfo";
  87. var cnt = instance1.selectNodes(tPath).length;
  88. var flag = true;
  89. if (cnt == instance1.selectNodes(mPath).length) {
  90. flag = false;
  91. // 데이터 확인 후 기존 데이터와 달라졌을 경우만 그리드에 새로 표시
  92. for (var i = 1; i <= cnt; i++) {
  93. if (model.getValue(tPath + "[" + i + "]/rsrvplce") != model.getValue(mPath + "[" + i + "]/rsrvplce") ||
  94. model.getValue(tPath + "[" + i + "]/suppdeptcd") != model.getValue(mPath + "[" + i + "]/suppdeptcd") ||
  95. model.getValue(tPath + "[" + i + "]/excuroomcd") != model.getValue(mPath + "[" + i + "]/excuroomcd") ||
  96. model.getValue(tPath + "[" + i + "]/excucd") != model.getValue(mPath + "[" + i + "]/excucd") ||
  97. model.getValue(tPath + "[" + i + "]/ctrlseq") != model.getValue(mPath + "[" + i + "]/ctrlseq") ||
  98. model.getValue(tPath + "[" + i + "]/ctrldesc") != model.getValue(mPath + "[" + i + "]/ctrldesc") ||
  99. model.getValue(tPath + "[" + i + "]/ctrlflag") != model.getValue(mPath + "[" + i + "]/ctrlflag") ||
  100. model.getValue(tPath + "[" + i + "]/appflag") != model.getValue(mPath + "[" + i + "]/appflag")) {
  101. flag = true;
  102. break;
  103. }
  104. }
  105. }
  106. if (flag) {
  107. model.resetInstanceNode(mPath);
  108. for (var i = 1; i <= cnt; i++) {
  109. model.makeValue(mPath + "[" + i + "]/rsrvplce", model.getValue(tPath + "[" + i + "]/rsrvplce"));
  110. model.makeValue(mPath + "[" + i + "]/suppdeptcd", model.getValue(tPath + "[" + i + "]/suppdeptcd"));
  111. model.makeValue(mPath + "[" + i + "]/excuroomcd", model.getValue(tPath + "[" + i + "]/excuroomcd"));
  112. model.makeValue(mPath + "[" + i + "]/excucd", model.getValue(tPath + "[" + i + "]/excucd"));
  113. model.makeValue(mPath + "[" + i + "]/ctrlseq", model.getValue(tPath + "[" + i + "]/ctrlseq"));
  114. model.makeValue(mPath + "[" + i + "]/ctrldesc", model.getValue(tPath + "[" + i + "]/ctrldesc"));
  115. model.makeValue(mPath + "[" + i + "]/ctrlflag", model.getValue(tPath + "[" + i + "]/ctrlflag"));
  116. model.makeValue(mPath + "[" + i + "]/appflag", model.getValue(tPath + "[" + i + "]/appflag"));
  117. }
  118. grd_ctrl.refresh();
  119. grd_ctrl.resizeCells();
  120. grd_ctrl.rebuildStyle();
  121. var tPath = "/root/ctrl/temp/termlist/terminfo";
  122. var tCnt = instance1.selectNodes(tPath).length;
  123. // 예약 허용 여부
  124. var rsrvflag = true;
  125. // 제어 적용 여부
  126. var ctrlyn = model.getValue("/root/ctrl/hidden/applyinfo/ctrlyn") == "Y" ? true : false;
  127. // 제어 적용
  128. for (var i = 1; i <= cnt; i++) {
  129. var appflag = model.getValue(mPath + "[" + i + "]/appflag") == "Y" ? true : false;
  130. var ctrlflag = model.getValue(mPath + "[" + i + "]/ctrlflag");
  131. if (ctrlflag == "I") { // 정보 (단순 확인용)
  132. grd_ctrl.rowStyle(i, "data", "background-color") = "#ffffff";
  133. } else if (ctrlflag == "R") { // 예약
  134. grd_ctrl.rowStyle(i, "data", "background-color") = "#ffffa0";
  135. if (!appflag) {
  136. grd_ctrl.rowStyle(i, "data", "color") = "#8c8c8c";
  137. }
  138. if (ctrlyn && appflag) {
  139. btn_rsrv.disabled = true;
  140. rsrvflag = false;
  141. } else if (IS_RSRVUSER && rsrvflag && btn_rsrv.disabled) { // 하나라도 예약 제한이 걸려있는 것이 있으면 버튼 활성화 하지 않음
  142. btn_rsrv.disabled = false;
  143. }
  144. } else if (ctrlflag == "T") { // 통합 예약
  145. grd_ctrl.rowStyle(i, "data", "background-color") = "#ffdcdc";
  146. if (!appflag) {
  147. grd_ctrl.rowStyle(i, "data", "color") = "#8c8c8c";
  148. }
  149. if (RSRV_PLCE != "T") {
  150. if (ctrlyn && appflag) {
  151. btn_rsrv.disabled = true;
  152. rsrvflag = false;
  153. } else if (IS_RSRVUSER && rsrvflag && btn_rsrv.disabled) { // 하나라도 예약 제한이 걸려있는 것이 있으면 버튼 활성화 하지 않음
  154. btn_rsrv.disabled = false;
  155. }
  156. }
  157. } else if (ctrlflag == "P") { // 팝업 메시지
  158. grd_ctrl.rowStyle(i, "data", "background-color") = "#ebebff";
  159. if (!appflag) {
  160. grd_ctrl.rowStyle(i, "data", "color") = "#8c8c8c";
  161. }
  162. for (var j = 1; j <= tCnt; j++) {
  163. // 제어항 확인
  164. if (model.getValue(tPath + "[" + j + "]/rsrvplce") == model.getValue(mPath + "[" + i + "]/rsrvplce") &&
  165. model.getValue(tPath + "[" + j + "]/suppdeptcd") == model.getValue(mPath + "[" + i + "]/suppdeptcd") &&
  166. model.getValue(tPath + "[" + j + "]/excuroomcd") == model.getValue(mPath + "[" + i + "]/excuroomcd") &&
  167. model.getValue(tPath + "[" + j + "]/excucd") == model.getValue(mPath + "[" + i + "]/excucd") &&
  168. model.getValue(tPath + "[" + j + "]/ctrlseq") == model.getValue(mPath + "[" + i + "]/ctrlseq") &&
  169. model.getValue(tPath + "[" + j + "]/itemtype") == "C" &&
  170. model.getValue(tPath + "[" + j + "]/refid") == "POPUP") {
  171. alert(model.getValue(tPath + "[" + j + "]/valnm"));
  172. }
  173. }
  174. }
  175. }
  176. }
  177. }