SMMNP06200.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396
  1. /*
  2. 수술 및 분만현황 안내 진행현황판(SMMNP06200_수술 및 분만 진행현황 전광판.xrw - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. - Programmer : 문창곤
  6. */
  7. var submitIntervalTime = 5 * 1000 ; // 5초
  8. //----------------(20080930)
  9. //var showGrdTime = 7 * 1000 ; // 7초
  10. //var showMsgTime = 10 * 1000 ; // 10초
  11. var showGrdTime = 4 * 1000 ; // 7초
  12. var showMsgTime = 10 * 1000 ; // 10초
  13. //----------------(20080930)
  14. var clockID ; // 하단줄의 시간 interval
  15. var grdintervalID ; // 그리드 조회 interval
  16. var grdintervalIDTop ; // 그리드 상단 올리기 interval
  17. var grdintervalIDDelay ; // 지연
  18. var msgintervalID ; // msg 조회 interval
  19. var msgintervalIDTop ; // msg 상단 올리기 interval
  20. var msgintervalIDDelay ; // 지연
  21. /**
  22. * @group :
  23. * @ver : 2007.10.09
  24. * @by : 문창곤
  25. * @---------------------------------------------------
  26. * @type : function
  27. * @access : public
  28. * @desc : 초기화 작업을 합니다.
  29. * @param :
  30. * @param :
  31. * @return :
  32. * @---------------------------------------------------
  33. */
  34. function fInitialize(){
  35. model.removeNodeset("/root/main/oppatlist/oppatinfo");
  36. model.removeNodeset("/root/main/msglist/msginfo");
  37. model.setValue("/root/main/cond/oppartrtndd", getCurrentDate());
  38. // model.setValue("/root/main/cond/oppartrtndd", "20071011");
  39. model.refresh();
  40. // model.copyNode("/root/send/reqdata", "/root/main/cond");
  41. // setErrorOff(); //submit에서 오류가 발생해도 오류메시지가 나오지 않도록 설정
  42. // submit("TRMNP06201"); //수술환자 보호자 호출메시지 조회.
  43. // setErrorOff(); //submit에서 오류가 발생해도 오류메시지가 나오지 않도록 설정
  44. // submit("TRMNP06200"); //수술 및 분만환자 조회.[조회버튼클릭]
  45. // setGridColor() ;
  46. /*
  47. window.setInterval('model.removenode("/root/main/oppatlist/oppatinfo[1]") ;'
  48. + 'setGridColor() ;'
  49. + 'model.refresh() ;', showGrdTime) ; // 7초
  50. window.setInterval('model.setValue("/root/hidden/callmsg", model.getValue("/root/main/msglist/msginfo[1]/callmsg")) ;'
  51. + 'model.removenode("/root/main/msglist/msginfo[1]") ;'
  52. + 'model.refresh() ;', showMsgTime) ; // 10초
  53. */
  54. // window.setInterval("fshowGrdTime()", showGrdTime) ; // 7초
  55. // window.setInterval("fshowMsgTime()", showMsgTime) ; // 10초
  56. // grdTopintervalID = window.setInterval("fGetOpPartrtnPatListSub2()", showGrdTime) ; // 7초 test
  57. // msgTopintervalID = window.setInterval("fGetCallMessageSub2()", showMsgTime) ; // 10초 test
  58. fSetGrdTimer();
  59. setWindowSize(); //(20080130) 테스트중
  60. model.setFocus("lbl_header");
  61. }
  62. /*
  63. //--------------------------
  64. // 그리드 top row 제거 실행되는 함수
  65. //--------------------------
  66. function fshowGrdTime() {
  67. model.removenode("/root/main/oppatlist/oppatinfo[1]") ;
  68. setGridColor() ;
  69. model.refresh() ;
  70. }
  71. //--------------------------
  72. // Msg display 실행되는 함수
  73. //--------------------------
  74. function fshowMsgTime() {
  75. model.setValue("/root/hidden/callmsg", model.getValue("/root/main/msglist/msginfo[1]/callmsg")) ;
  76. model.removenode("/root/main/msglist/msginfo[1]") ;
  77. model.refresh() ;
  78. }
  79. */
  80. /**
  81. * @group :
  82. * @ver : 2007.10.09
  83. * @by : 문창곤
  84. * @---------------------------------------------------
  85. * @type : function
  86. * @access : public
  87. * @desc : 지정된 시간간격마다 그리드데이터 조회(화면 호출시 처음만 호출된다)
  88. * @param :
  89. * @param :
  90. * @return :
  91. * @---------------------------------------------------
  92. */
  93. function fSetGrdTimer(){
  94. //시간은 1초 단위로 갱신: 무한루프=> 0.1로 변경
  95. //clockID = window.setInterval("clock();", 1000);
  96. clockID = window.setInterval("clock();", 100); //0.1초
  97. //메시지 5초: 무한루프시켜야 함(그리드 test용으로 막음)
  98. msgintervalID = window.setInterval("fGetCallMessage();", submitIntervalTime); //5초
  99. //그리드 5초(상단으로 이동):무한루프시켜야 함
  100. grdintervalID = window.setInterval("fGetOpPartrtnPatList();", submitIntervalTime); //5초
  101. //메시지자료 상단으로 올리기
  102. //msgintervalIDTop = window.setInterval("fGetCallMessageSub1()", showMsgTime); //10초
  103. //그리드자료 상단으로 올리기
  104. //grdintervalIDTop = window.setInterval("fGetOpPartrtnPatListSub1()", showGrdTime); //7초
  105. }
  106. /**
  107. * @group :
  108. * @ver : 2007.10.09
  109. * @by : 문창곤
  110. * @---------------------------------------------------
  111. * @type : function
  112. * @access : public
  113. * @desc : DataTime 조회.
  114. * @param :
  115. * @param :
  116. * @return :
  117. * @---------------------------------------------------
  118. */
  119. function clock() {
  120. var datetime = getCurrentDateTime().substring(0, 4) + "년 "
  121. + getCurrentDateTime().substring(4, 6) + "월 "
  122. + getCurrentDateTime().substring(6, 8) + "일 "
  123. + getCurrentDate().toDate().getDayOfWeek("K") + "요일 "
  124. + getCurrentDateTime().substring(8, 11) + "시 "
  125. + getCurrentDateTime().substring(11, 13) + "분 "
  126. + getCurrentDateTime().substring(13, 15) + "초" ;
  127. model.setValue("/root/hidden/time", datetime) ;
  128. model.refresh();
  129. }
  130. /**
  131. * @group :
  132. * @ver : 2007.10.09
  133. * @by : 문창곤
  134. * @---------------------------------------------------
  135. * @type : function
  136. * @access : public
  137. * @desc : 수술환자 보호자 호출메시지 조회.
  138. * @param :
  139. * @param :
  140. * @return :
  141. * @---------------------------------------------------
  142. */
  143. function fGetCallMessage(){
  144. var sPath = "/root/main/msglist";
  145. if(getNodesetCount(sPath + "/msginfo") == 0) {
  146. //model.removeNodeset("/root/main/msglist/msginfo") ;
  147. model.removeNodeset(sPath) ;
  148. model.refresh();
  149. model.copyNode("/root/send/reqdata", "/root/main/cond") ;
  150. setErrorOff();
  151. if ( submit("TRMNP06201",false) == true) {
  152. model.setValue("/root/init/msgStatus","msg:정상");
  153. model.refresh();
  154. model.setValue("/root/init/msgStatus1", "조회" );
  155. model.refresh();
  156. var msgCnt = getNodesetCount(sPath + "/msginfo") ;
  157. if (msgCnt > 0) {
  158. /*
  159. var TimerID = window.setInterval('window.setinterval("", 5000) ;'
  160. + 'model.setValue("/root/hidden/callmsg", model.getValue("/root/main/msglist/msginfo[1]/callmsg")) ;'
  161. + 'model.removenode("/root/main/msglist/msginfo[1]") ;'
  162. + 'model.refresh() ;', showMsgTime) ;
  163. */
  164. msgintervalIDTop = window.setInterval("fGetCallMessageSub1()", showMsgTime); //10초
  165. }else{
  166. model.setValue("/root/hidden/callmsg", "") ;
  167. tar_callmsg.refresh();
  168. }
  169. } else {
  170. model.setValue("/root/init/msgStatus","msg:장애");
  171. model.removeNodeset(sPath);
  172. model.refresh();
  173. }
  174. }
  175. }
  176. //-------------------------------
  177. // 수술환자 보호자 호출메시지 조회.
  178. //-------------------------------
  179. function fGetCallMessageSub1() {
  180. // var timerID = window.setinterval("", 5000) ; //시간지연
  181. model.setValue("/root/hidden/callmsg", model.getValue("/root/main/msglist/msginfo[1]/callmsg")) ;
  182. model.removenode("/root/main/msglist/msginfo[1]") ;
  183. model.setValue("/root/init/msgStatus1", getNodesetCount("/root/main/msglist/msginfo") );
  184. model.refresh();
  185. if ( getNodesetCount("/root/main/msglist/msginfo") == 0) {
  186. model.setValue("/root/init/msgStatus1", "E:"+msgintervalIDTop );
  187. model.refresh() ;
  188. window.clearInterval(msgintervalIDTop);
  189. }
  190. }
  191. /**
  192. * @group :
  193. * @ver : 2007.10.09
  194. * @by : 문창곤
  195. * @---------------------------------------------------
  196. * @type : function
  197. * @access : public
  198. * @desc : 수술 및 분만환자 조회.[조회버튼클릭]
  199. * @param :
  200. * @param :
  201. * @return :
  202. * @---------------------------------------------------
  203. */
  204. function fGetOpPartrtnPatList(){
  205. var sPath = "/root/main/oppatlist";
  206. if(getNodesetCount(sPath + "/oppatinfo") == 0)
  207. {
  208. //(20080211) oppatinfo까지 된것을 막음)
  209. model.removeNodeset(sPath);
  210. model.refresh();
  211. model.copyNode("/root/send/reqdata", "/root/main/cond");
  212. setErrorOff();
  213. if (submit("TRMNP06200",false) == true) {
  214. model.setValue("/root/init/grdStatus","grd:정상");
  215. model.refresh();
  216. model.setValue("/root/init/grdStatus1", "조회" );
  217. model.refresh() ;
  218. var ndCnt = getNodesetCount(sPath + "/oppatinfo") ;
  219. if ( ndCnt > 0) {
  220. setGridColor() ;
  221. /*
  222. //5초간격으로 자료를 상단으로 올리는 기능
  223. var TimerID = window.setInterval('window.setinterval("", 5000) ;'
  224. + 'model.removenode("/root/main/oppatlist/oppatinfo[1]") ;'
  225. + 'setGridColor() ;'
  226. + 'model.refresh() ;', showGrdTime) ;
  227. */
  228. grdintervalIDTop = window.setInterval("fGetOpPartrtnPatListSub1()", showGrdTime); //100) ; //7초
  229. }
  230. } else {
  231. model.setValue("/root/init/grdStatus","grd:장애");
  232. model.removeNodeset(sPath);
  233. model.refresh();
  234. }
  235. }
  236. }
  237. //----------------------------
  238. // 자료를 상단으로 올리는 기능1
  239. //----------------------------
  240. function fGetOpPartrtnPatListSub1() {
  241. // var timerID = window.setinterval("", 5000) ; //상단올리기 지연시킴
  242. model.removenode("/root/main/oppatlist/oppatinfo[1]") ;
  243. setGridColor() ;
  244. model.setValue("/root/init/grdStatus1", getNodesetCount("/root/main/oppatlist/oppatinfo") );
  245. model.refresh() ;
  246. if ( getNodesetCount("/root/main/oppatlist/oppatinfo") == 0) {
  247. model.setValue("/root/init/grdStatus1", "E:"+grdintervalIDTop );
  248. model.refresh() ;
  249. window.clearInterval(grdintervalIDTop);
  250. }
  251. }
  252. /**
  253. * @group :
  254. * @ver : 2007.10.09
  255. * @by : 문창곤
  256. * @---------------------------------------------------
  257. * @type : function
  258. * @access : public
  259. * @desc : 수술예약번호 해당 호출메시지 검색
  260. * @param :
  261. * @param :
  262. * @return :
  263. * @---------------------------------------------------
  264. */
  265. function getCallMsg(Oprsrvno)
  266. {
  267. var msgCnt = getNodesetCount("/root/main/msglist/msginfo") ;
  268. var RtnValue = "NONE" ;
  269. if(msgCnt > 0)
  270. {
  271. for(var i=1;i<=msgCnt;i++)
  272. {
  273. if(Oprsrvno == model.getValue("/root/main/msglist/msginfo["+ i + "]/oprsrvno"))
  274. {
  275. RtnValue = model.getValue("/root/main/msglist/msginfo["+ i + "]/callmsg") ;
  276. model.removenode("/root/main/msglist/msginfo["+ i + "]");
  277. break ;
  278. }
  279. }
  280. }
  281. return RtnValue ;
  282. }
  283. /**
  284. * @group :
  285. * @ver : 2007.10.09
  286. * @by : 문창곤
  287. * @---------------------------------------------------
  288. * @type : function
  289. * @access : public
  290. * @desc : 'ESC' or 'Q' 키를 누르면 타이머 해제 및 윈도우 닫기
  291. * @param :
  292. * @param :
  293. * @return :
  294. * @---------------------------------------------------
  295. */
  296. function fClearTimer(){
  297. var keyPressed = event.keyCode ;
  298. if(keyPressed == 27 || keyPressed == 81) // 'ESC' or 'Q' 키가 눌려진 경우
  299. {
  300. var answer = messageBox("수술 및 분만 진행현황 안내 프로그램 종료를 ", "Q004") ;
  301. if(answer == 6) {
  302. if (clockID != "") window.clearInterval(clockID);
  303. if (msgintervalID != "") window.clearInterval(msgintervalID);
  304. if (grdintervalID != "") window.clearInterval(grdintervalID);
  305. if (msgintervalIDTop != "") window.clearInterval(msgintervalIDTop);
  306. if (grdintervalIDTop != "") window.clearInterval(grdintervalIDTop);
  307. model.close() ;
  308. }
  309. }
  310. }
  311. /**
  312. * @group :
  313. * @ver : 2007.10.09
  314. * @by : 문창곤
  315. * @---------------------------------------------------
  316. * @type : function
  317. * @access : public
  318. * @desc : 진행상태에 따른 글자색 설정
  319. * @param :
  320. * @param :
  321. * @return :
  322. * @---------------------------------------------------
  323. */
  324. function setGridColor()
  325. {
  326. var ndCnt = getNodesetCount("/root/main/oppatlist/oppatinfo") ;
  327. var status ;
  328. for(var i=1;i<=ndCnt;i++)
  329. {
  330. status = model.getValue("/root/main/oppatlist/oppatinfo["+ i + "]/opstatcd") ;
  331. if(status == "20" || status == "1") // 수술예정 또는 분만대기중 - 검정색
  332. grd_list.cellStyle("color", i, 3) = "#000000" ;
  333. else if(status == "30" || status == "2") // 수술대기 또는 진통중 - 분홍색
  334. grd_list.cellStyle("color", i, 3) = "#FF82FF" ;
  335. else if(status == "40" || status == "3") // 수술중 또는 분만중 - 빨강색
  336. grd_list.cellStyle("color", i, 3) = "#FF0000" ;
  337. else if(status == "50" || status == "4") // 수술종료 또는 분만완료- 파랑색
  338. grd_list.cellStyle("color", i, 3) = "#0000FF" ;
  339. else if(status == "60" || status == "5") // 회복중 또는 절대안정중 - 녹색
  340. grd_list.cellStyle("color", i, 3) = "#00FF00" ;
  341. else if(status == "70" || status == "6") // 퇴실 또는 안정중 - 청녹색
  342. grd_list.cellStyle("color", i, 3) = "#006600" ;
  343. }
  344. }