SMMNV07400_수술진행현황전광판.xrw 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373
  1. <?xml version="1.0" encoding="EUC-KR"?>
  2. <?xml-stylesheet href="../../../com/commonweb/css/common.css" type="text/css" ?>
  3. <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2002/01/xforms" xmlns:ev="http://www.w3.org/2001/xml-events">
  4. <xhtml:head>
  5. <xhtml:title>수술 및 분만 진행현황 안내</xhtml:title>
  6. <model id="model1">
  7. <instance id="instance1">
  8. <root xmlns="">
  9. <main>
  10. <cond>
  11. <oppartrtndd/>
  12. <count/>
  13. <toggle/>
  14. </cond>
  15. <oppatlist/>
  16. <pregpatinfo/>
  17. <menuitems>
  18. <gnrlmenu>
  19. <item>
  20. <name>종료</name>
  21. <func>fCloseBoard</func>
  22. </item>
  23. </gnrlmenu>
  24. </menuitems>
  25. <date>
  26. <tdate/>
  27. <ttime/>
  28. </date>
  29. </main>
  30. <send>
  31. <reqdata/>
  32. </send>
  33. <init>
  34. <msglist>
  35. <msginfo>
  36. <calltm/>
  37. <callmsg>빠른 쾌유를 빕니다.</callmsg>
  38. <oprsrvno/>
  39. </msginfo>
  40. <msginfo>
  41. <calltm/>
  42. <callmsg>항상 최선을 다하는 수술실이 되겠습니다.</callmsg>
  43. <oprsrvno/>
  44. </msginfo>
  45. <msginfo>
  46. <calltm/>
  47. <callmsg>문의사항 시 인터폰을 이용해 주시기 바랍니다</callmsg>
  48. <oprsrvno/>
  49. </msginfo>
  50. </msglist>
  51. </init>
  52. <hidden>
  53. <callmsg/>
  54. </hidden>
  55. </root>
  56. </instance>
  57. <script type="javascript" ev:event="xforms-ready">
  58. <![CDATA[
  59. clockID = window.setInterval("clock();" , 1000); //1초
  60. fOpInit();
  61. fGetCallMessage();
  62. DelTempFolderID = window.setInterval("fdelTempFolers();", DelTempFolderTime); //6시간
  63. model.setFocus("line1");
  64. ]]>
  65. </script>
  66. <submission id="TRMNV02002" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/reqdata" resultref="/root/main/msg"/>
  67. <submission id="TRMNV05302" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/reqdata" resultref="/root/main/msg"/>
  68. <submission id="TRMNV06301" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/main/cond" resultref="/root/hidden/patlist"/>
  69. </model>
  70. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  71. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  72. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  73. <script type="javascript" src="../../../com/basiccodeweb/js/ZBC001.js"/>
  74. <script type="javascript">
  75. <![CDATA[
  76. var IntervalTime1 = 5 * 1000 ; // 5초
  77. var IntervalTime2 = 10 * 1000 ; // 10초 (수술)
  78. var IntervalTime3 = 6 * 1000 ; // 11초 (의정부 그림)
  79. var IntervalTime4 = 8 * 1000 ; // 10초 (분만)
  80. var DelTempFolderTime = 6 * 60 * 60 * 1000 ; // 6시간
  81. var showMsgTime = 9 * 1000 ; // 9초 메시지
  82. var cnts = 0;
  83. var getlListOpInterval = "";
  84. var getlListPicInterval = "";
  85. var msgintervalIDTop = "";
  86. var DelTempFolderID = "";
  87. var clockID ="";
  88. var printno = 8;
  89. var toNodeno= 0;
  90. var fromNodeno= 0;
  91. function fOpInit() {
  92. model.removeNodeset("/root/hidden/patlist/");
  93. model.removeNodeset("/root/main/msglist/msginfo");
  94. model.removenode("/root/main/oppatlist/oppatlist1");
  95. model.makeValue("/root/main/cond/oppartrtndd", getCurrentDate());
  96. model.makeValue("/root/main/cond/flag", "O");
  97. submit("TRMNV06301");
  98. for(var i = 1 ; i <= 8 ; i ++){
  99. model.makeNode("/root/main/oppatlist/oppatlist1/oppatinfo1["+i+"]");
  100. model.copyNode("/root/main/oppatlist/oppatlist1/oppatinfo1["+i+"]", "/root/hidden/patlist/oppatinfo1["+i+"]");
  101. }
  102. model.refresh();
  103. fDispChngColor();
  104. getlListOpInterval = window.setInterval("fGetNextOpPatList()", IntervalTime2); //10초
  105. }
  106. function fGetNextOpPatList() {
  107. // 50초 이후에는 분만현황으로 바꿔주기 위함
  108. count = model.getValue("/root/main/cond/count");
  109. var cnts = getNodesetCount("/root/main/oppatlist/oppatlist1/oppatinfo1");
  110. if (count >= 5 ) {
  111. if(!isNull(getlListOpInterval)) {
  112. window.clearInterval(getlListOpInterval);
  113. model.setValue("/root/main/cond/toggle", "PIC");
  114. model.setValue("/root/main/cond/count", "0");
  115. fPicInit();
  116. }
  117. } else {
  118. count++
  119. model.setValue("/root/main/cond/count", count);
  120. }
  121. var togglenm = model.getValue("/root/main/cond/toggle");
  122. if (togglenm ==""||count==1) {
  123. togglenm = "OP1";
  124. model.setValue("/root/main/cond/toggle", togglenm);
  125. togglenm = model.getValue("/root/main/cond/toggle");
  126. model.toggle(togglenm);
  127. printno=0;
  128. }
  129. var Nodes = instance1.selectNodes("/root/hidden/patlist/oppatinfo1");
  130. model.removenode("/root/main/oppatlist/oppatlist1");
  131. fromNodeno=printno+1; // 전광판의 첫 행
  132. toNodeno= fromNodeno + 7 ; // 마지막행
  133. if(fromNodeno>Nodes.length){
  134. printno=0;
  135. fromNodeno=printno+1; // 전광판의 첫 행
  136. toNodeno= fromNodeno + 7 ; // 마지막행
  137. }
  138. if(toNodeno>Nodes.length){
  139. toNodeno=Nodes.length;
  140. }
  141. if (Nodes.length==0){
  142. fromNodeno=1;
  143. toNodeno = fromNodeno+7;
  144. }
  145. var grdcnt = 1;
  146. for(var i = fromNodeno ; i <= toNodeno ; i ++){
  147. model.makeNode("/root/main/oppatlist/oppatlist1/oppatinfo1["+ grdcnt +"]");
  148. model.copyNode("/root/main/oppatlist/oppatlist1/oppatinfo1["+ grdcnt +"]", "/root/hidden/patlist/oppatinfo1["+i+"]");
  149. grdcnt ++
  150. printno++;
  151. }
  152. fDispChngColor();
  153. if (printno==Nodes.length){
  154. printno=0;
  155. }
  156. model.refresh();
  157. }
  158. /**
  159. * @desc : 진행상태에 따른 색 변경
  160. * @
  161. * @param :
  162. * @return : 수술중 : 녹색
  163. * @ 회복중 , 수술종료 : 남색
  164. * @ 병실이동 : 파란색
  165. * @ 대기 : 검정색
  166. * @author : 김영학
  167. * @---------------------------------------------------
  168. */
  169. function fDispChngColor(){
  170. for(var i = 1; i < grd_op1.rows; i++){
  171. var color = model.getValue("/root/main/oppatlist/oppatlist1/oppatinfo1[" + i + "]/color");
  172. if(!isNull(color)){
  173. grd_op1.rowStyle(i, "all", "color") = "#" + color;
  174. }else{
  175. grd_op1.rowStyle(i, "all", "color") = "#" + "000000";
  176. }
  177. }
  178. grd_op1.refresh();
  179. }
  180. // for(var i = 1; i < grd_op2.rows; i++){
  181. // var color = model.getValue("/root/main/oppatlist/oppatlist2/oppatinfo2[" + i + "]/color");
  182. // if(!isNull(color)){
  183. // grd_op2.rowStyle(i, "all", "color") = "#" + color;
  184. // }
  185. // }
  186. // for(var i = 1; i < grd_op3.rows; i++){
  187. // var color = model.getValue("/root/main/oppatlist/oppatlist3/oppatinfo3[" + i + "]/color");
  188. // if(!isNull(color)){
  189. // grd_op3.rowStyle(i, "all", "color") = "#" + color;
  190. // }
  191. // }
  192. // for(var i = 1; i < grd_op4.rows; i++){
  193. // var color = model.getValue("/root/main/oppatlist/oppatlist4/oppatinfo4[" + i + "]/color");
  194. // if(!isNull(color)){
  195. // grd_op4.rowStyle(i, "all", "color") = "#" + color;
  196. // }
  197. // }
  198. // for(var i = 1; i < grd_op5.rows; i++){
  199. // var color = model.getValue("/root/main/oppatlist/oppatlist5/oppatinfo5[" + i + "]/color");
  200. // if(!isNull(color)){
  201. // grd_op5.rowStyle(i, "all", "color") = "#" + color;
  202. // }
  203. // }
  204. // grd_op1.refresh();
  205. // grd_op2.refresh();
  206. // grd_op3.refresh();
  207. // grd_op4.refresh();
  208. // grd_op5.refresh();
  209. // }
  210. function fPicInit(){
  211. model.toggle("PIC");
  212. model.refresh();
  213. getlListPicInterval = window.setInterval("fGetNextPicPatList()", IntervalTime3); //5초
  214. }
  215. function fGetNextPicPatList() {
  216. var togglenm = model.getValue("/root/main/cond/toggle");
  217. count = model.getValue("/root/main/cond/count");
  218. model.refresh();
  219. if (count >= 2 ) {
  220. if(!isNull(getlListPicInterval)) {
  221. window.clearInterval(getlListPicInterval);
  222. piccnts = 0;
  223. model.setValue("/root/main/cond/toggle", "");
  224. model.setValue("/root/main/cond/count", 0);
  225. fOpInit();
  226. }
  227. } else {
  228. count++
  229. model.setValue("/root/main/cond/count", count);
  230. }
  231. model.refresh()
  232. }
  233. //로그를 지우는 함수
  234. function fdelTempFolers()
  235. {
  236. var fso = new ActiveXObject("Scripting.FileSystemObject");
  237. var fldr = fso.GetFolder("C:\\Program Files\\himed\\components\\TrustForm\\TFViewer");
  238. var fc = new Enumerator(fldr.SubFolders);
  239. for(;!fc.atEnd(); fc.moveNext())
  240. {
  241. fc.item().Delete();
  242. }
  243. }
  244. /**
  245. * @group :
  246. * @ver : 2007.10.09
  247. * @by : 문창곤
  248. * @---------------------------------------------------
  249. * @type : function
  250. * @access : public
  251. * @desc : 수술환자 보호자 호출메시지 조회.
  252. * @param :
  253. * @param :
  254. * @return :
  255. * @---------------------------------------------------
  256. */
  257. function fGetCallMessage(){
  258. var sPath = "/root/main/msglist";
  259. if(getNodesetCount(sPath + "/msginfo") == 0) {
  260. model.removeNodeset(sPath);
  261. model.copyNode("/root/send/reqdata", "/root/main/cond") ;
  262. setErrorOff();
  263. submit("TRMNV05302",false);
  264. copyNodeListType("/root/main/msglist", "/root/init/msglist/msginfo", "after");
  265. msgintervalIDTop = window.setInterval("fGetCallMessageSub1()", showMsgTime); //10초
  266. model.refresh();
  267. }
  268. }
  269. //-------------------------------
  270. // 수술환자 보호자 호출메시지 조회.
  271. //-------------------------------
  272. function fGetCallMessageSub1() {
  273. if (cnts > 0 ) {
  274. model.removenode("/root/main/msglist/msginfo[1]") ;
  275. }
  276. model.setValue("/root/hidden/callmsg", model.getValue("/root/main/msglist/msginfo[1]/callmsg")) ;
  277. cnts ++;
  278. model.refresh();
  279. if ( getNodesetCount("/root/main/msglist/msginfo") == 0) {
  280. cnts = 0;
  281. window.clearInterval(msgintervalIDTop);
  282. fGetCallMessage();
  283. }
  284. }
  285. function fCloseBoard(){
  286. if (getlListOpInterval != "") window.clearInterval(getlListOpInterval);
  287. if (getlListPicInterval != "") window.clearInterval(getlListPicInterval);
  288. if (msgintervalIDTop != "") window.clearInterval(msgintervalIDTop);
  289. if (DelTempFolderID != "") window.clearInterval(DelTempFolderID);
  290. if (clockID != "") window.clearInterval(clockID);
  291. window.close();
  292. }
  293. function clock() {
  294. var tdate = getCurrentDateTime().substring(0, 4) + "년 "
  295. + getCurrentDateTime().substring(4, 6) + "월 "
  296. + getCurrentDateTime().substring(6, 8) + "일 "
  297. // + getCurrentDate().toDate("YYYYMMDD").getDayOfWeek("K") + "요일 "
  298. var ttime = getCurrentDateTime().substring(8, 11) + ":"
  299. + getCurrentDateTime().substring(11, 13) + ":"
  300. + getCurrentDateTime().substring(13, 15)
  301. model.setValue("/root/main/date/tdate", tdate) ;
  302. model.setValue("/root/main/date/ttime", ttime) ;
  303. model.refresh();
  304. }
  305. ]]>
  306. </script>
  307. </xhtml:head>
  308. <xhtml:body pagewidth="1020" pageheight="730" guideline="2,726;2,486;1,1039;" style="margin-left:4; margin-top:0; margin-right:4; margin-bottom:0; ">
  309. <switch id="switch1" class="sw_no_border" style="left:0px; top:0px; width:1010px; height:640px; ">
  310. <case id="OP1" selected="true">
  311. <datagrid id="grd_op1" nodeset="/root/main/oppatlist/oppatlist1/oppatinfo1" class="datagrid_op" overflow="hidden" scroll="auto" caption="병실^환자명^수술과^진행상태^이동위치^caption1" colsep="^" colwidth="120, 170, 230, 210, 270" dataheight="64px" extendlastcol="noscroll" frozenrows="7" mergecellsfixedrows="bycolrec" rowheight="90" rowsep="|" style="left:0px; top:100px; width:1002px; height:532px; font-size:24pt; text-align:center; vertical-align:middle; background-color:#c0c0c0; ">
  312. <col ref="roomcd" style="font-family:HY각헤드라인M; font-size:18pt; font-weight:bold; "/>
  313. <col ref="patnm" style="font-family:HY각헤드라인M; font-size:18pt; font-weight:bold; "/>
  314. <col ref="orddept" style="font-family:HY각헤드라인M; font-size:18pt; font-weight:bold; "/>
  315. <col ref="opstatnm" style="font-family:HY각헤드라인M; font-size:18pt; font-weight:bold; "/>
  316. <col ref="patposplcecd" style="font-family:HY각헤드라인M; font-size:18pt; font-weight:bold; "/>
  317. </datagrid>
  318. <caption id="caption4" style="left:290px; top:70px; width:230px; height:54px; font-family:HY헤드라인M; font-size:29pt; color:#ffffff; text-align:center; background-color:#008080; border-color:#c0c0c0; border-style:solid; ">수술과</caption>
  319. <caption id="caption5" style="left:120px; top:70px; width:170px; height:54px; font-family:HY헤드라인M; font-size:29pt; color:#ffffff; text-align:center; background-color:#008080; border-color:#c0c0c0; border-style:solid; ">환자명</caption>
  320. <caption id="caption7" style="left:0px; top:70px; width:120px; height:54px; font-family:HY헤드라인M; font-size:29pt; color:#ffffff; text-align:center; background-color:#008080; border-color:#c0c0c0; border-style:solid; ">병 실</caption>
  321. <caption id="caption8" style="left:520px; top:70px; width:210px; height:54px; font-family:HY헤드라인M; font-size:29pt; color:#ffffff; text-align:center; background-color:#008080; border-color:#c0c0c0; border-style:solid; ">진행상태</caption>
  322. <caption id="caption2" style="left:730px; top:70px; width:270px; height:54px; font-family:HY헤드라인M; font-size:29pt; color:#ffffff; text-align:center; background-color:#008080; border-color:#c0c0c0; border-style:solid; ">이동위치</caption>
  323. </case>
  324. <case id="PIC">
  325. <img id="img1" src="../../../emr/waitguideweb/images/his014pic.jpg" style="left:0px; top:70px; width:1001px; height:560px; background-stretch:stretch; "/>
  326. </case>
  327. </switch>
  328. <img id="img1" src="../../../com/commonweb/images/logo014.gif" style="left:0px; top:0px; width:181px; height:59px; background-stretch:stretch; "/>
  329. <caption id="caption26" style="left:5px; top:0px; width:1001px; height:75px; font-family:HY헤드라인M; font-size:36pt; font-weight:bold; color:#000080; text-align:center; vertical-align:middle; ">수술 진행현황 안내</caption>
  330. <textarea id="tar_callmsg" ref="/root/hidden/callmsg" overflow="visible" scroll="autovscroll" style="left:0px; top:640px; width:1005px; height:92px; font-family:HY각헤드라인M; font-size:32pt; font-weight:bold; color:#003366; text-align:center; vertical-align:middle; "/>
  331. <line id="line25" class="line_1" style="x1:0px; y1:634px; x2:1004px; y2:634px; "/>
  332. <caption id="caption27" ref="/root/main/date/tdate" style="left:665px; top:5px; width:330px; height:30px; font-family:HY각헤드라인M; font-size:18pt; text-align:right; "/>
  333. <caption id="caption28" ref="/root/main/date/ttime" style="left:770px; top:35px; width:215px; height:30px; font-family:HY각헤드라인M; font-size:18pt; text-align:right; "/>
  334. <script type="javascript" ev:event="onmousedown">
  335. <![CDATA[
  336. if(event.button == 3) {
  337. window.setPopupMenu(true, "/root/main/menuitems/gnrlmenu/item", "name", "func", false);
  338. }
  339. ]]>
  340. </script>
  341. <script type="javascript" ev:event="DOMFocusOut">
  342. <![CDATA[
  343. window.setPopupMenu(false);
  344. ]]>
  345. </script>
  346. </xhtml:body>
  347. </xhtml:html>