SMMNV05100_수술진행현황전광판(성모).xrw 14 KB

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