SMMNV08103.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. /* ---------------------------------------------------------------------
  2. 대기안내 환자진행현황 (대기안내공통 - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. : Create By YeoWon Lim
  6. : 2015.05.02
  7. ----------------------------------------------------------------------*/
  8. var clockID ; // 하단줄의 시간 interval
  9. var grdintervalID ; // 그리드 조회 interval
  10. var grdToggle;
  11. var subdeptCount; // 표시할 세부과 갯수
  12. var initSubdeptCount;
  13. /**
  14. * @group :
  15. * @ver : 2008.02.13
  16. * @by : 임여원
  17. * @---------------------------------------------------
  18. * @type : function
  19. * @access : public
  20. * @desc : 대기안내 환자조회화면초기화
  21. * @param :
  22. * @param :
  23. * @return :
  24. * @---------------------------------------------------
  25. */
  26. function fInitialize(){
  27. model.setValue("/root/main/cond/bizdd", getCurrentDate());
  28. // 상단에 세부 진료과명 셋팅 2010.06.09 kskim
  29. var dipaddr = getUserInfo("ipaddr");
  30. //alert(ipaddr);
  31. model.makeValue("/root/main/req/dipaddr", dipaddr);
  32. if( submit("TRMNV08002", "true", "/root/main/req", "/root/hidden/wgopeninfo") ){
  33. initSubdeptCount = getNodesetCount("/root/hidden/wgopeninfo/wgopeninfolist"); //emr.mnvhwgem 테이블에서 표시할 세부진료과 정보 조회 2010.06.09 kskim
  34. subdeptCount = initSubdeptCount;
  35. //alert("subdeptCount: " + subdeptCount);
  36. }
  37. model.removenode("/root/main/waitroominfo/waitroominfolist");
  38. model.refresh();
  39. fSetTimer();
  40. }
  41. /**
  42. * @group :
  43. * @ver : 2007.10.09
  44. * @by : 문창곤
  45. * @---------------------------------------------------
  46. * @type : function
  47. * @access : public
  48. * @desc : 지정된 시간간격마다 그리드데이터 조회(화면 호출시 처음만 호출된다)
  49. * @param :
  50. * @param :
  51. * @return :
  52. * @---------------------------------------------------
  53. */
  54. function fSetTimer(){
  55. clockID = window.setInterval("clock();" , 1000); //1초
  56. grdintervalID = window.setInterval("fGetOpdWaitRoomInfo();", 9000);
  57. grdToggle = window.setInterval("fGetOpdWaitRoomToggle();", 3000);
  58. }
  59. /* --------------------------------------------------*/
  60. /* type : function */
  61. /* access : public */
  62. /* desc : 외래 대기실 진행현황 조회 */
  63. /* --------------------------------------------------*/
  64. var maxGroup = 12; //대대기에 표시할 진료실 최대 개수
  65. var perGroup = 3; //대대기 한 화면에 표시할 진료실 개수
  66. var maxPatGroup = 5; //대대기 한개의 진료실에 보여질 최대 환자 수
  67. function fGetOpdWaitRoomInfo(){
  68. var sPath = "/root/main/opdinfo";
  69. model.removenode("/root/send");
  70. model.makeValue("/root/send/bizdd", model.getValue("/root/main/cond/bizdd"));
  71. model.makeValue("/root/send/subdeptcd", model.getValue("/root/hidden/wgopeninfo/wgopeninfolist[" + subdeptCount + "]/subdeptcd"));
  72. model.makeValue("/root/send/centcd", model.getValue("/root/hidden/wgopeninfo/wgopeninfolist[" + subdeptCount + "]/centcd"));
  73. model.makeValue("/root/send/orddeptcd", model.getValue("/root/hidden/wgopeninfo/wgopeninfolist[" + subdeptCount + "]/orddeptcd"));
  74. // model.makeValue("/root/send/centcd", '-');
  75. // model.makeValue("/root/send/orddeptcd", '2120000000');
  76. model.makeValue("/root/send/ordroomcd", model.getValue("/root/hidden/wgopeninfo/wgopeninfolist[" + subdeptCount + "]/ordroomcd"));
  77. //model.makeValue("/root/send/orddrid", model.getValue("/root/main/ordroominfo/ordroominfolist[" + subdeptCount + "]/orddrid"));
  78. // 환자조회 시 세부과코드 추가 2010.06.09 kskim
  79. model.makeValue("/root/send/subdeptcd", model.getValue("/root/hidden/wgopeninfo/wgopeninfolist[" + subdeptCount + "]/subdeptcd"));
  80. setErrorOff();
  81. if (submit("TRMNV08003", false, "/root/send", "/root/main/waitroominfo")) {
  82. // 상단 세부과 정보 셋팅 2010.06.09 kskim
  83. var subdeptnm = model.getValue("/root/hidden/wgopeninfo/wgopeninfolist[" + subdeptCount + "]/subdeptnm");
  84. var appendnm = "치과 ";
  85. var appendsubdeptnm = appendnm.concat(subdeptnm);
  86. model.makeValue("/root/main/waitroominfo/waitroomtitle/deptnm",appendsubdeptnm);
  87. model.setValue("/root/main/cond/bizdd", getCurrentDate());
  88. fClearPatMsg(); //환자개인메세지 내용 초기화 2010.06.09 kskim
  89. var i, z, y;
  90. var itemid;
  91. var drnm, chgdrnm;
  92. var patnm, chgpatnm;
  93. for(i = 1; i <= getNodesetCount("/root/main/waitroominfo/waitroominfolist") && i <= maxGroup; i++ ) {
  94. itemid = "room" + i;
  95. drnm = ""; //20100104-kys(세로로 표현 진료의)
  96. chgdrnm = ""; //20100104-kys(세로로 표현 진료의)
  97. patnm = ""; //환자명사이에 space를 넣어서 조회되게-20100108-kys
  98. chgpatnm = ""; //환자명사이에 space를 넣어서 조회되게-20100108-kys
  99. //진료실 숫자만 표기-kys-20100105
  100. //document.all.item(itemid+"_roomnm").value = model.getValue("/root/main/waitroominfo/waitroominfolist[" + i + "]/ordroomhngnm"); // 치과 세부 진료과 대대기 안내 진료실명 필요 없어서 추석처리 2010.06.09 kskim
  101. // document.all.item(itemid+"_roomnumb").value = model.getValue("/root/main/waitroominfo/waitroominfolist[" + i + "]/ordroomnumb");
  102. // document.all.item(itemid+"_roomnm").value = model.getValue("/root/main/waitroominfo/waitroominfolist[" + i + "]/ordroomnm");
  103. //document.all.item(itemid+"_drnm").value = model.getValue("/root/main/waitroominfo/waitroominfolist[" + i + "]/orddrnm");
  104. document.all.item(itemid+"_delytm").value = model.getValue("/root/main/waitroominfo/waitroominfolist[" + i + "]/delytm"); // 주석처리 사유: 환자 개인메세지 처리 위해 주석처리 2010.06.07 kskim
  105. drnm = model.getValue("/root/main/waitroominfo/waitroominfolist[" + i + "]/orddrnm"); //20100104-kys(세로로 표현 진료의)
  106. for(z = 0; z < drnm.length; z++){
  107. if(z + 1 == drnm.length){
  108. chgdrnm = chgdrnm + drnm.substring(z , z + 1);
  109. }else{
  110. chgdrnm = chgdrnm + drnm.substring(z , z + 1) + String.fromCharCode(10);
  111. }
  112. }
  113. document.all.item(itemid+"_drnm").value = chgdrnm;
  114. var m = 1;
  115. for(m = 1; m <= 5; m++ ) { //한 그룹에 표시할 환자수
  116. document.all.item(itemid+"_pat"+m).value = "";
  117. document.all.item(itemid+"_pid"+m).value = ""; //등록번호추가-kys-20091230
  118. }
  119. var k = 1;
  120. for(j = 1; j <= getNodesetCount("/root/main/waitroominfo/waitroompatlist"); j++ ) {
  121. if(model.getValue("/root/main/waitroominfo/waitroominfolist[" + i + "]/orddrid") == model.getValue("/root/main/waitroominfo/waitroompatlist[" + j + "]/orddrid") && k <=5) { //한 그룹에 표시할 환자수
  122. //환자명사이에 space를 넣어서 조회되게-20100108-kys
  123. patnm = model.getValue("/root/main/waitroominfo/waitroompatlist[" + j + "]/patnm");
  124. for(y = 0; y < patnm.length; y++){
  125. if(y + 1 == patnm.length){
  126. chgpatnm = chgpatnm + patnm.substring(y , y + 1);
  127. }else{
  128. chgpatnm = chgpatnm + patnm.substring(y , y + 1) + " ";
  129. }
  130. }
  131. document.all.item(itemid+"_pat"+k).value = chgpatnm;
  132. patnm = "";
  133. chgpatnm = "";
  134. //document.all.item(itemid+"_pat"+k).value = model.getValue("/root/main/waitroominfo/waitroompatlist[" + j + "]/patnm");
  135. document.all.item(itemid+"_pid"+k).value = model.getValue("/root/main/waitroominfo/waitroompatlist[" + j + "]/pid"); //등록번호추가-kys-20091230
  136. document.all.item(itemid+"_patmsg"+k).value = model.getValue("/root/main/waitroominfo/waitroompatlist[" + j + "]/patmsg"); //환자개인메세지 정보 추가 2010.06.07 kskim
  137. k = k+1;
  138. }
  139. }
  140. }
  141. } else {
  142. model.setValue("/root/init/grdStatus","grd:장애");
  143. model.removeNodeset(sPath);
  144. model.refresh();
  145. }
  146. // 세부진료과 정보가 두개 일 때 조회 번갈가면 정보 조회 2010.06.09 kskim
  147. if(subdeptCount == 2){
  148. subdeptCount = subdeptCount - 1;
  149. }
  150. else if(subdeptCount == 1 && initSubdeptCount == 2){
  151. subdeptCount = subdeptCount + 1;
  152. }
  153. }
  154. /* --------------------------------------------------*/
  155. /* type : function */
  156. /* access : public */
  157. /* desc : 외래 대기실 진행현황 조회 */
  158. /* --------------------------------------------------*/
  159. var tempTo = 1;
  160. function fGetOpdWaitRoomToggle(){
  161. for(i = 1; i <= maxGroup; i++ ) {
  162. itemid = "room" + i;
  163. document.all.item(itemid).visible = false;
  164. }
  165. if (getNodesetCount("/root/main/waitroominfo/waitroominfolist") <= 3 ) {
  166. for(i = 1; i <= getNodesetCount("/root/main/waitroominfo/waitroominfolist"); i++ ) {
  167. itemid = "room" + i;
  168. document.all.item(itemid).visible = true;
  169. }
  170. } else if (getNodesetCount("/root/main/waitroominfo/waitroominfolist") <= 6 ) {
  171. if (tempTo == 1 || tempTo == 3 || tempTo == 4) {
  172. for(i = 1; i <= getNodesetCount("/root/main/waitroominfo/waitroominfolist") && i <= 3; i++ ) {
  173. itemid = "room" + i;
  174. document.all.item(itemid).visible = true;
  175. }
  176. tempTo = 2;
  177. } else {
  178. for(i = 4; i <= getNodesetCount("/root/main/waitroominfo/waitroominfolist") && i <= 6; i++ ) {
  179. itemid = "room" + i;
  180. document.all.item(itemid).visible = true;
  181. }
  182. tempTo = 1;
  183. }
  184. } else if (getNodesetCount("/root/main/waitroominfo/waitroominfolist") <= 9) {
  185. if (tempTo == 1) {
  186. for(i = 1; i <= getNodesetCount("/root/main/waitroominfo/waitroominfolist") && i<=3; i++ ) {
  187. itemid = "room" + i;
  188. document.all.item(itemid).visible = true;
  189. }
  190. tempTo = 2;
  191. } else if (tempTo == 2) {
  192. for(i = 4; i <= getNodesetCount("/root/main/waitroominfo/waitroominfolist") && i<=6; i++ ) {
  193. itemid = "room" + i;
  194. document.all.item(itemid).visible = true;
  195. }
  196. tempTo = 3;
  197. } else {
  198. for(i = 7; i <= getNodesetCount("/root/main/waitroominfo/waitroominfolist") && i<=9; i++ ) {
  199. itemid = "room" + i;
  200. document.all.item(itemid).visible = true;
  201. }
  202. tempTo = 1;
  203. }
  204. } else {
  205. if (tempTo == 1) {
  206. for(i = 1; i <= getNodesetCount("/root/main/waitroominfo/waitroominfolist") && i<=3; i++ ) {
  207. itemid = "room" + i;
  208. document.all.item(itemid).visible = true;
  209. }
  210. tempTo = 2;
  211. } else if (tempTo == 2) {
  212. for(i = 4; i <= getNodesetCount("/root/main/waitroominfo/waitroominfolist") && i<=6; i++ ) {
  213. itemid = "room" + i;
  214. document.all.item(itemid).visible = true;
  215. }
  216. tempTo = 3;
  217. } else if (tempTo == 3) {
  218. for(i = 7; i <= getNodesetCount("/root/main/waitroominfo/waitroominfolist") && i<=9; i++ ) {
  219. itemid = "room" + i;
  220. document.all.item(itemid).visible = true;
  221. }
  222. tempTo = 4;
  223. } else {
  224. for(i = 10; i <= getNodesetCount("/root/main/waitroominfo/waitroominfolist") && i<=12; i++ ) {
  225. itemid = "room" + i;
  226. document.all.item(itemid).visible = true;
  227. }
  228. tempTo = 1;
  229. }
  230. }
  231. }
  232. /**
  233. * @group :
  234. * @ver : 2007.10.09
  235. * @by : 문창곤
  236. * @---------------------------------------------------
  237. * @type : function
  238. * @access : public
  239. * @desc : DataTime 조회.
  240. * @param :
  241. * @param :
  242. * @return :
  243. * @---------------------------------------------------
  244. */
  245. function clock() {
  246. var tdate = getCurrentDateTime().substring(0, 4) + "년 "
  247. + getCurrentDateTime().substring(4, 6) + "월 "
  248. + getCurrentDateTime().substring(6, 8) + "일 "
  249. + getCurrentDate().toDate().getDayOfWeek("K") + "요일 "
  250. var ttime = getCurrentDateTime().substring(8, 11) + ":"
  251. + getCurrentDateTime().substring(11, 13)
  252. model.setValue("/root/hidden/date", tdate) ;
  253. model.setValue("/root/hidden/time", ttime) ;
  254. model.refresh();
  255. }
  256. /**
  257. * @group :
  258. * @ver : 2007.10.09
  259. * @by : 문창곤
  260. * @---------------------------------------------------
  261. * @type : function
  262. * @access : public
  263. * @desc : 'ESC' or 'Q' 키를 누르면 타이머 해제 및 윈도우 닫기
  264. * @param :
  265. * @param :
  266. * @return :
  267. * @---------------------------------------------------
  268. */
  269. function fClearTimer(){
  270. var keyPressed = event.keyCode ;
  271. if(keyPressed == 27 || keyPressed == 81) // 'ESC' or 'Q' 키가 눌려진 경우
  272. {
  273. var answer = messageBox("진행현황 안내 프로그램 종료합니다.", "I") ;
  274. if(answer == 1) {
  275. fCloseBoard();
  276. }
  277. }
  278. }
  279. function fCloseBoard(){
  280. if (clockID != "") window.clearInterval(clockID);
  281. if (grdintervalID != "") window.clearInterval(grdintervalID);
  282. if (grdToggle != "") window.clearInterval(grdToggle);
  283. model.close() ;
  284. }
  285. //var maxGroup = 12; //대대기에 표시할 진료실 최대 개수
  286. //var perGroup = 4; //대대기 한 화면에 표시할 진료실 개수
  287. //var maxPatGroup = 5; //대대기 한개의 진료실에 보여질 최대 환자 수
  288. // 메세지 내용 초기화
  289. function fClearPatMsg(){
  290. var roomid = "room";
  291. var msgid = "patmsg";
  292. for(var roomidx = 1; roomidx <= maxGroup; roomidx++){
  293. document.all.item("room" + roomidx + "_drnm").value = "";
  294. for(var msgidx = 1; msgidx <= maxPatGroup; msgidx++){
  295. document.all.item("room" + roomidx + "_pat" + msgidx).value = "";
  296. document.all.item("room" + roomidx + "_pid" + msgidx).value = "";
  297. document.all.item("room" + roomidx + "_patmsg" + msgidx).value = "";
  298. }
  299. }
  300. }