SMMNP06200.xjs 14 KB

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