SPMMO21300_중증체류시간.xrw 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. 제 목 : SPMMO21300_중증체류시간
  4. 작성자 : 김광성(kskim)
  5. 작성일 : 2010.03.10
  6. 관련xrw : SPMMO21300_중증체류시간,
  7. SMMMO04400_응급환자리스트.xrw,
  8. SMMMO04100.xrw
  9. 관련 js : SMMMO4100.js
  10. -->
  11. <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">
  12. <xhtml:head>
  13. <xhtml:title>중증체류시간</xhtml:title>
  14. <model id="model1">
  15. <instance id="instance1">
  16. <root xmlns="">
  17. <reqdata>
  18. <instcd/>
  19. <pid/>
  20. <indd/>
  21. <cretno/>
  22. <visitno/>
  23. </reqdata>
  24. <time>
  25. <list>
  26. <doortime/>
  27. <activatetime/>
  28. <curtime/>
  29. </list>
  30. </time>
  31. <savedata>
  32. <doortime/>
  33. <activatetime/>
  34. <curtime/>
  35. <intervalid/>
  36. </savedata>
  37. </root>
  38. </instance>
  39. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  40. <script type="javascript" src="../../../com/basiccodeweb/js/ZBC001.js"/>
  41. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  42. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  43. <script type="javascript" ev:event="xforms-ready">
  44. <![CDATA[
  45. fStartWnd();
  46. ]]>
  47. </script>
  48. <submission id="TRMMO21301" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/reqdata" resultref="/root/time"/>
  49. </model>
  50. <script type="javascript">
  51. <![CDATA[
  52. // window.setInterval()을 사용하기 전 기존에 사용 중인 인터벌이 있을 경우 자원 해제
  53. function fCleanIntervalId(){
  54. if (!isNull( model.getValue("/root/savedata/intervalid")) ){
  55. window.clearInterval( model.getValue("/root/savedata/intervalid") );
  56. }
  57. }
  58. // 윈도우 화면 닫기
  59. function fCloseWnd(){
  60. window.close();
  61. }
  62. // 진료대상자 리스트에서 다른환자 선택시 중증체류시간 화면 새로고침
  63. function fStartWnd(){
  64. // doortime : 내원 후 경과 시간
  65. // activatetime : 응급실 중증호출 후 경과 시간
  66. fInitData(); // 환자검색에 필요한 환자정보 opener로 부터 가져온 후, 데이터 초기화
  67. fCalcTime(); // doortime과 activatetime 시간계산
  68. fCleanIntervalId(); // window.setInterval()을 사용하기 전 기존에 사용 중인 인터벌이 있을 경우 자원 해제
  69. fSetInterval(); // window.setInterval()을 설정
  70. window.modelessTopmost= true;
  71. }
  72. // window.setInterval()을 설정
  73. function fSetInterval(){
  74. var intervalId = window.setInterval( "fCalcTime()", 1000);
  75. model.setValue("/root/savedata/intervalid", intervalId);
  76. }
  77. // 환자검색에 필요한 데이터 초기화
  78. // 환자검색에 필요한 환자정보 데이터를 페이지 xml값에 할당
  79. function fInitData(){
  80. var param = opener.javascript.getParameter("SPMMO21300_param");
  81. var paramvalue = param.split("▦");
  82. var pid = paramvalue[0];
  83. var indd = paramvalue[1];
  84. var cretno = paramvalue[2];
  85. var visitno = paramvalue[3];
  86. model.setValue("/root/reqdata/pid", pid);
  87. model.setValue("/root/reqdata/indd", indd);
  88. model.setValue("/root/reqdata/cretno", cretno);
  89. model.setValue("/root/reqdata/visitno", visitno);
  90. submit("TRMMO21301"); // doortime, activatetime 값을 db로 부터 가죠오기
  91. }
  92. // 시, 분 출력시 한자리 숫자 앞에 '0'문자열을 붙여서 주는 함수
  93. function fAddZero(n){
  94. return n < 10 ? "0" + n : n;
  95. }
  96. // 날짜 문자열 형식이 'yyyymmddhh24mi'인 문자열을 Date객체로 변화해 주는 함수
  97. function fCvDate(time){
  98. var year = time.substr(0, 4);
  99. var month = time.substr(4, 2) - 1 ; // 1월=0 ~ 12월=11
  100. var day = time.substr(6, 2);
  101. var hours = time.substr(8, 2);
  102. var minutes = time.substr(10, 2);
  103. return new Date(year, month, day, hours, minutes);
  104. }
  105. // 현재 시간과 사용자가 함수에 넘겨주는 Date객체와의 시간 차이를 시, 분 단위로 출력해 주는 함수
  106. function fCalcPassingTimes(dbDate){
  107. var curClientTime = new Date();
  108. var rstMilionse = curClientTime.getTime() - dbDate.getTime();
  109. var passingSecond = Math.floor( (rstMilionse / 1000) % 60 );
  110. var passingMin = Math.floor( (rstMilionse / (1000 * 60)) % 60 );
  111. var passingHours = Math.floor(rstMilionse / ( 1000 * 60 * 60 ));
  112. return fAddZero(passingHours) + "시간 " + fAddZero(passingMin) + "분 " + fAddZero(passingSecond) + "초";
  113. }
  114. // 중증체류시간 계산하기 위해 가장 먼저 실행되는 함수
  115. function fCalcTime(){
  116. var doorTime = null;
  117. var activateTime = null;
  118. doorTime = model.getValue("/root/time/list/doortime");
  119. activateTime = model.getValue("/root/time/list/activatetime");
  120. // door to now(내원 시간 계산)
  121. if( !isNull( doorTime)){
  122. doorTime = fCvDate( model.getValue("/root/time/list/doortime") );
  123. var doorTimeSt = fCalcPassingTimes(doorTime);
  124. model.setValue("/root/savedata/doortime", doorTimeSt);
  125. }
  126. else{
  127. model.setValue("/root/savedata/doortime", "no data");
  128. }
  129. // activate to now(중증호출 시간 계산)
  130. if( !isNull( activateTime)){
  131. activateTime = fCvDate( model.getValue("/root/time/list/activatetime") );
  132. var activateTimeSt = fCalcPassingTimes(activateTime);
  133. model.setValue("/root/savedata/activatetime", activateTimeSt);
  134. }
  135. else{
  136. model.setValue("/root/savedata/activatetime", "no data");
  137. }
  138. opt_doortime.refresh();
  139. opt_activatetime.refresh();
  140. }
  141. ]]>
  142. </script>
  143. </xhtml:head>
  144. <xhtml:body pagewidth="250" pageheight="110" style="font-family:Arial; font-size:11pt; font-weight:bold; border-style:solid; margin-left:8; margin-top:8; margin-right:8; margin-bottom:8; ">
  145. <output id="opt_doortime" ref="/root/savedata/doortime" style="left:8px; top:20px; width:216px; height:29px; font-family:HY헤드라인M; font-size:16pt; color:#ff0000; text-align:center; vertical-align:middle; background-color:#dddddd; border-width:1px; border-style:solid; "/>
  146. <caption id="caption1" style="left:11px; top:-1px; width:92px; height:26px; font-family:Arial; font-size:9pt; vertical-align:middle; ">Door to Now</caption>
  147. <output id="opt_activatetime" ref="/root/savedata/activatetime" style="left:8px; top:65px; width:216px; height:29px; font-family:HY헤드라인M; font-size:16pt; color:#ff0000; text-align:center; vertical-align:middle; background-color:#dddddd; border-width:1px; border-style:solid; "/>
  148. <caption id="caption2" style="left:11px; top:43px; width:107px; height:26px; font-family:Arial; font-size:9pt; vertical-align:middle; ">Activate to Now</caption>
  149. </xhtml:body>
  150. </xhtml:html>