SPMMO21300_중증체류시간.xfdl 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FDL version="1.5">
  3. <TypeDefinition url="..\..\..\default_typedef.xml"/>
  4. <Form id="SPMMO21300" position="absolute 0 0 250 133" titletext="중증체류시간" oninit="SPMMO21300_oninit" onload="SPMMO21300_onload" ontimer="SPMMO21300_ontimer" class="frm_POP">
  5. <Layouts>
  6. <Layout>
  7. <Edit readonly="true" position="absolute 8 51 239 80" align="align:center middle;" id="opt_doortime"/>
  8. <Static text="Door to Now" position="absolute 11 30 103 56" align="align:center middle;" id="caption1" style="font:돋움,9,bold;"/>
  9. <Edit readonly="true" position="absolute 8 96 239 125" align="align:center middle;" id="opt_activatetime"/>
  10. <Static text="Activate to Now" position="absolute 11 74 118 100" align="align:center middle;" id="caption2" style="font:돋움,9,bold;"/>
  11. <Button id="Button00" taborder="1" onclick="Button00_onclick" class="btn_POP_cls" position="absolute 230 11 244 24"/>
  12. <Static id="stt_titleText" text="중증체류시간" class="sta_POP_title" position="absolute 12 8 154 28"/>
  13. </Layout>
  14. </Layouts>
  15. <Objects>
  16. <Dataset id="ds_reqdata" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  17. <ColumnInfo>
  18. <Column id="instcd" type="STRING" size="256"/>
  19. <Column id="pid" type="STRING" size="256"/>
  20. <Column id="indd" type="STRING" size="256"/>
  21. <Column id="cretno" type="STRING" size="256"/>
  22. <Column id="visitno" type="STRING" size="256"/>
  23. </ColumnInfo>
  24. <Rows>
  25. <Row>
  26. <Col id="instcd"/>
  27. <Col id="pid"/>
  28. <Col id="indd"/>
  29. <Col id="cretno"/>
  30. <Col id="visitno"/>
  31. </Row>
  32. </Rows>
  33. </Dataset>
  34. <Dataset id="ds_timelist" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  35. <ColumnInfo>
  36. <Column id="doortime" type="STRING" size="256"/>
  37. <Column id="activatetime" type="STRING" size="256"/>
  38. <Column id="curtime" type="STRING" size="256"/>
  39. </ColumnInfo>
  40. <Rows>
  41. <Row>
  42. <Col id="doortime"/>
  43. <Col id="activatetime"/>
  44. <Col id="curtime"/>
  45. </Row>
  46. </Rows>
  47. </Dataset>
  48. <Dataset id="ds_savedata" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  49. <ColumnInfo>
  50. <Column id="doortime" type="STRING" size="256"/>
  51. <Column id="activatetime" type="STRING" size="256"/>
  52. <Column id="curtime" type="STRING" size="256"/>
  53. <Column id="intervalid" type="STRING" size="256"/>
  54. </ColumnInfo>
  55. <Rows>
  56. <Row>
  57. <Col id="doortime"/>
  58. <Col id="activatetime"/>
  59. <Col id="curtime"/>
  60. <Col id="intervalid"/>
  61. </Row>
  62. </Rows>
  63. </Dataset>
  64. </Objects>
  65. <Bind>
  66. <BindItem id="item0" compid="opt_doortime" propid="value" datasetid="ds_savedata" columnid="doortime"/>
  67. <BindItem id="item1" compid="opt_activatetime" propid="value" datasetid="ds_savedata" columnid="activatetime"/>
  68. </Bind>
  69. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  70. * System Name :
  71. * Job Name :
  72. * Creator :
  73. * Make Date : 2014-12-10
  74. * Description :
  75. *---------------------------------------------------------------------------------------
  76. * Modify Date Modifier Modify Description
  77. *---------------------------------------------------------------------------------------
  78. * 2014-12-10 Live Converter TF->XP
  79. *
  80. *---------------------------------------------------------------------------------------
  81. ****************************************************************************************/
  82. include "com_commonxp::comm_main.xjs";
  83. var arErrorCode = new HashArray();
  84. var intervalId;
  85. function fCleanIntervalId(){
  86. if (!utlf_isNull( ds_savedata.getColumn(0,"intervalid")) ){
  87. this.killTimer(intervalId );
  88. }
  89. }
  90. function fSetInterval(){
  91. //var intervalId = window.setInterval( "fCalcTime()", 1000);
  92. this.setTimer(intervalId, 1000);
  93. ds_savedata.setColumn(0,"intervalid", intervalId);
  94. }
  95. // 환자검색에 필요한 데이터 초기화
  96. // 환자검색에 필요한 환자정보 데이터를 페이지 xml값에 할당
  97. function fInitData(){
  98. var param = opener.frmf_getParameter("SPMMO21300_param");
  99. var paramvalue = param.split("▦");
  100. var pid = paramvalue[0];
  101. var indd = paramvalue[1];
  102. var cretno = paramvalue[2];
  103. var visitno = paramvalue[3];
  104. ds_reqdata.setColumn(0,"pid", pid);
  105. ds_reqdata.setColumn(0,"indd", indd);
  106. ds_reqdata.setColumn(0,"cretno", cretno);
  107. ds_reqdata.setColumn(0,"visitno", visitno);
  108. var oParam = {};
  109. oParam.id = "TRMMO21301";
  110. oParam.service = "prcpmngtapp.ErMngt";
  111. oParam.method = "getDoorActivateTimeInfo";
  112. oParam.inds = "req=ds_reqdata";
  113. oParam.outds = "ds_timelist=list";
  114. oParam.async = false;
  115. oParam.callback = "cf_TRMMO21301";
  116. tranf_submit(oParam);
  117. }
  118. function cf_TRMMO21301(sSvcId, nErrorCode, sErrorMsg) {
  119. if(nErrorCode < 0) return;
  120. }
  121. // 시, 분 출력시 한자리 숫자 앞에 '0'문자열을 붙여서 주는 함수
  122. function fAddZero(n){
  123. return n < 10 ? "0" + n : n;
  124. }
  125. // 날짜 문자열 형식이 'yyyymmddhh24mi'인 문자열을 Date객체로 변화해 주는 함수
  126. function fCvDate(time){
  127. var year = time.substr(0, 4);
  128. var month = time.substr(4, 2) - 1 ; // 1월=0 ~ 12월=11
  129. var day = time.substr(6, 2);
  130. var hours = time.substr(8, 2);
  131. var minutes = time.substr(10, 2);
  132. return new Date(year, month, day, hours, minutes);
  133. }
  134. // 현재 시간과 사용자가 함수에 넘겨주는 Date객체와의 시간 차이를 시, 분 단위로 출력해 주는 함수
  135. function fCalcPassingTimes(dbDate){
  136. var curClientTime = new Date();
  137. var rstMilionse = curClientTime.getTime() - dbDate.getTime();
  138. var passingSecond = Math.floor( (rstMilionse / 1000) % 60 );
  139. var passingMin = Math.floor( (rstMilionse / (1000 * 60)) % 60 );
  140. var passingHours = Math.floor(rstMilionse / ( 1000 * 60 * 60 ));
  141. return fAddZero(passingHours) + "시간 " + fAddZero(passingMin) + "분 " + fAddZero(passingSecond) + "초";
  142. }
  143. // 중증체류시간 계산하기 위해 가장 먼저 실행되는 함수
  144. function fCalcTime(){
  145. var doorTime = null;
  146. var activateTime = null;
  147. doorTime = ds_timelist.getColumn(0,"doortime");
  148. activateTime = ds_timelist.getColumn(0,"activatetime");
  149. // door to now(내원 시간 계산)
  150. if( !utlf_isNull( doorTime)){
  151. doorTime = fCvDate( ds_timelist.getColumn(0,"doortime") );
  152. var doorTimeSt = fCalcPassingTimes(doorTime);
  153. ds_savedata.setColumn(0,"doortime", doorTimeSt);
  154. }
  155. else{
  156. ds_savedata.setColumn(0,"doortime", "no data");
  157. }
  158. // activate to now(중증호출 시간 계산)
  159. if( !utlf_isNull( activateTime)){
  160. activateTime = fCvDate( ds_timelist.getColumn(0,"activatetime") );
  161. var activateTimeSt = fCalcPassingTimes(activateTime);
  162. ds_savedata.setColumn(0,"activatetime", activateTimeSt);
  163. }
  164. else{
  165. ds_savedata.setColumn(0,"activatetime", "no data");
  166. }
  167. }
  168. function SPMMO21300_oninit(obj:Form, e:InitEventInfo)
  169. {
  170. frmf_initForm(obj);
  171. }
  172. function SPMMO21300_onload(obj:Form, e:LoadEventInfo)
  173. {
  174. fInitData(); // 환자검색에 필요한 환자정보 opener로 부터 가져온 후, 데이터 초기화
  175. fCalcTime(); // doortime과 activatetime 시간계산
  176. fCleanIntervalId(); // window.setInterval()을 사용하기 전 기존에 사용 중인 인터벌이 있을 경우 자원 해제
  177. fSetInterval(); // window.setInterval()을 설정
  178. //window.modelessTopmost= true;
  179. }
  180. function SPMMO21300_ontimer(obj:Form, e:TimerEventInfo)
  181. {
  182. if( e.timerid == 0 ){
  183. fCalcTime();
  184. }
  185. }
  186. function Button00_onclick(obj:Button, e:ClickEventInfo)
  187. {
  188. this.close();
  189. }
  190. ]]></Script>
  191. </Form>
  192. </FDL>