SMMNV01000.js 18 KB

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