SPMMR03300_아파치환자그래프.xrw 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. <?xml version="1.0" encoding="EUC-KR"?>
  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>APACHE II 환자 그래프</xhtml:title>
  6. <model id="model1">
  7. <instance id="instance1">
  8. <root xmlns="">
  9. <main>
  10. <apachelist>
  11. <apache>
  12. <apchdd/>
  13. <ad/>
  14. <result/>
  15. </apache>
  16. </apachelist>
  17. <apchinfo>
  18. <dd>
  19. <ddlist>
  20. <apchdd/>
  21. </ddlist>
  22. </dd>
  23. </apchinfo>
  24. </main>
  25. <send>
  26. <fromdd/>
  27. <todd/>
  28. <pid/>
  29. <orddd/>
  30. <range/>
  31. <status/>
  32. <ward/>
  33. <orddept/>
  34. <outchk/>
  35. <scorechk/>
  36. <scoredown/>
  37. <scoreup/>
  38. </send>
  39. <hidden>
  40. <temp>
  41. <apachelist/>
  42. </temp>
  43. </hidden>
  44. <init/>
  45. <grd_temp>
  46. <grid>
  47. <ad/>
  48. <apchdd/>
  49. </grid>
  50. </grd_temp>
  51. </root>
  52. </instance>
  53. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  54. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  55. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  56. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  57. <script type="javascript" src="../../../com/commonweb/js/tchartHelper.js"/>
  58. <script type="javascript" src="../../../emr/commonweb/js/EMRCommon.js"/>
  59. <script type="javascript" src="../../../com/departmentcodeweb/js/ZSD001.js"/>
  60. <script type="javascript" src="../../../com/basiccodeweb/js/ZBC001.js"/>
  61. <script type="javascript" src="../../../com/zipcodeweb/js/ZBP001.js"/>
  62. <script type="javascript" ev:event="xforms-ready">
  63. <![CDATA[
  64. fGetRefInfo();
  65. ]]>
  66. </script>
  67. <submission id="TRMMR03300" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/apachelist"/>
  68. <submission id="TRMMR03301" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/apchinfo/dd"/>
  69. </model>
  70. <script type="javascript">
  71. <![CDATA[
  72. function fGetRefInfo(){
  73. /*
  74. model.setValue("/root/send/pid", opener.javascript.getParameter("SPMMR03300_pid"));
  75. model.setValue("/root/send/fromdd", opener.javascript.getParameter("SPMMR03300_fromdd"));
  76. model.setValue("/root/send/todd", opener.javascript.getParameter("SPMMR03300_todd"));
  77. model.refresh();
  78. var cols = grd_apachelist.cols-grd_apachelist.fixedCols;
  79. for( var i = 0; i < cols; i++ ) {
  80. grd_apachelist.removeColumn(false);
  81. }
  82. model.removeNodeset("/root/main/apachelist");
  83. model.makeNode("/root/main/apachelist/row");
  84. model.refresh();
  85. submit("TRMMR03300" , false);
  86. model.resetInstanceNode("/root/send");
  87. var gridCaption = model.getValue("/root/hidden/temp/apachelist/header/caption");
  88. //ref 정보
  89. var gridColRef = model.getValue("/root/hidden/temp/apachelist/header/colref");
  90. var gridColRefArray = gridColRef.split("^");
  91. var gridColType = model.getValue("/root/hidden/temp/apachelist/header/type");
  92. var gridColTypeArray = gridColType.split("^");
  93. for( var i = 1; i < gridColRefArray.length; i++ ) {
  94. grd_apachelist.addColumn("ref:" + gridColRefArray[i] + "; type:"+gridColTypeArray[i]+"; ", false);
  95. }
  96. grd_apachelist.colWidth(0) = 0;
  97. //grd_apachelist.colWidth(1) = 120;
  98. for( i = 1; i < grd_apachelist.cols; i++ ) {
  99. grd_apachelist.colWidth(i) = 70;
  100. }
  101. grd_apachelist.caption = gridCaption;
  102. var node = instance1.selectSingleNode("/root/main");
  103. node.replaceChild(instance1.root.hidden.temp.apachelist, instance1.root.main.apachelist);
  104. grd_apachelist.rowheight(0) = 30;
  105. grd_apachelist.rebuild();
  106. drawLine(TChart1, grd_apachelist, 1, "ApacheScore/Dethrate", true);
  107. drawLine(TChart1, grd_apachelist, 2, "ApacheScore/Dethrate", false);
  108. */
  109. //20090804
  110. // model.removenode("/root/send");
  111. // model.makeValue("/root/send/pid", opener.javascript.getParameter("SPMMR03300_pid"));
  112. // model.makeValue("/root/send/fromdd", opener.javascript.getParameter("SPMMR03300_fromdd"));
  113. // model.makeValue("/root/send/todd", opener.javascript.getParameter("SPMMR03300_todd"));
  114. // model.makeValue("/root/send/orddd", opener.javascript.getParameter("SPMMR03300_orddd"));
  115. //
  116. // submit("TRMMR03300", false);
  117. //
  118. // //fSetFontColor();
  119. //
  120. // //과별현황 셋팅
  121. // var cols = datagrid1.cols-datagrid1.fixedCols;
  122. // var rows = datagrid1.rows-datagrid1.fixedRows;
  123. //
  124. // for( var i = datagrid1.cols; i >= datagrid1.fixedCols; i-- ) {
  125. // datagrid1.deleteColumn(i,false);
  126. // }
  127. //
  128. // model.removeNodeset("/root/main/apchinfo/apchddlist");
  129. // datagrid1.caption = "작성일자";
  130. // var caption = datagrid1.caption;
  131. //
  132. // if(getNodesetCount("/root/main/apachelist/apache") > 0) {
  133. // if(datagrid1.rows-datagrid1.fixedRows < 3) {
  134. // datagrid1.addRow(false);
  135. // datagrid1.addRow(false);
  136. //
  137. // datagrid1.valueMatrix(1,0) = "A";
  138. // datagrid1.valueMatrix(2,0) = "D";
  139. // }
  140. //
  141. // var tempapchdd = "";
  142. // var apchdd ="";
  143. // var ad ="";
  144. // var result ="";
  145. //
  146. // for(i=1; i <= getNodesetCount("/root/main/apachelist/apache"); i++ ) {
  147. // apchdd = model.getValue("/root/main/apachelist/apache["+ i +"]/apchdd");
  148. // ad = model.getValue("/root/main/apachelist/apache["+ i +"]/ad");
  149. // result = model.getValue("/root/main/apachelist/apache["+ i +"]/result");
  150. //
  151. // if(apchdd != tempapchdd ) {
  152. // datagrid1.addColumn("ref:"+ apchdd +"; type:output;text-align:center;", false);
  153. // caption = caption + "^"+ apchdd;
  154. // datagrid1.valueMatrix(1, datagrid1.cols-1) = "0";
  155. // datagrid1.valueMatrix(2, datagrid1.cols-1) = "0";
  156. //
  157. // tempapchdd = apchdd;
  158. // }
  159. //
  160. // if (ad == "A") {
  161. // datagrid1.valueMatrix(1, datagrid1.cols-1) = result;
  162. // } else {
  163. // datagrid1.valueMatrix(2, datagrid1.cols-1) = result;
  164. // }
  165. // }
  166. //
  167. // datagrid1.colWidthMax = "60";
  168. // datagrid1.caption = caption;
  169. //
  170. // }
  171. //
  172. // drawLineAll(Tchart1, datagrid1, "ApacheScore/Dethrate Rate Chart");
  173. // //drawLine(TChart1, grd_apachelist, 1, "ApacheScore/Dethrate", true);
  174. // //drawLine(TChart1, grd_apachelist, 2, "ApacheScore/Dethrate", false);
  175. //
  176. // model.refresh();
  177. init_grid();
  178. model.removenode("/root/send");
  179. model.makeValue("/root/send/pid", opener.javascript.getParameter("SPMMR03300_pid"));
  180. model.makeValue("/root/send/fromdd", opener.javascript.getParameter("SPMMR03300_fromdd"));
  181. model.makeValue("/root/send/todd", opener.javascript.getParameter("SPMMR03300_todd"));
  182. model.makeValue("/root/send/orddd", opener.javascript.getParameter("SPMMR03300_orddd"));
  183. model.makeValue("/root/send/range", opener.javascript.getParameter("SPMMR03300_range"));
  184. model.makeValue("/root/send/status", opener.javascript.getParameter("SPMMR03300_status"));
  185. model.makeValue("/root/send/ward", opener.javascript.getParameter("SPMMR03300_ward"));
  186. model.makeValue("/root/send/orddept", opener.javascript.getParameter("SPMMR03300_orddept"));
  187. model.makeValue("/root/send/outchk", opener.javascript.getParameter("SPMMR03300_outchk"));
  188. model.makeValue("/root/send/scorechk", opener.javascript.getParameter("SPMMR03300_scorechk"));
  189. model.makeValue("/root/send/scoredown", opener.javascript.getParameter("SPMMR03300_scoredown"));
  190. model.makeValue("/root/send/scoreup", opener.javascript.getParameter("SPMMR03300_scoreup"));
  191. submit("TRMMR03301"); //아파치 작성된 일자 리스트
  192. submit("TRMMR03300"); //아파치 일자별 결과값 리스트
  193. // 원본 데이터 그리드 : datagrid2
  194. // 그래프 생성 될 데이터 그리드 : datagrid1
  195. // 티챠트가 거지 같아서 그리드 이름은 꼭 datagrid1 이어야 제대로 가져 온다.
  196. // 원본 데이터 갯수
  197. var row_cnt = datagrid2.rows;
  198. var day_cnt = datagrid3.rows; // 아파치 작성일자 리스트
  199. // 캡션 날짜, inputdate의 최소 날짜에서 최대 날짜 까지를 그리드에 몽땅 그려 준다.
  200. var min_date = "2100-12-31";
  201. var max_date = "1900-12-31";
  202. // min,max 날짜 구하기 , full search 할 수 밖에 없다.
  203. for( i = 1 ; i < day_cnt ; i++ ){
  204. if( min_date > datagrid3.textmatrix(i,0)){
  205. min_date = datagrid3.textmatrix(i,0);
  206. }
  207. if( max_date < datagrid3.textmatrix(i,0)){
  208. max_date = datagrid3.textmatrix(i,0);
  209. }
  210. }
  211. // 구한 날짜를 날짜 형식으로 변형한다. ( 날짜가 하루씩 증가해야 하니까.. )
  212. var minyear = min_date.substr(0,4);
  213. var minmon = min_date.substr(5,2);
  214. var minday = min_date.substr(8,2);
  215. // 날짜 계산을 위해서 여기서 1달 작은 값을 넣고 밑에서는 +1달을 해 준다.
  216. // 월을 0~11 까지로 출력하기 때문에 이런 뻘짓이 필요하다. 이렇게 안 하면 내년에 1월이 00으로 찍힌다.
  217. var tmp_min_date = new Date(minyear,minmon-1,minday);
  218. // 성능 대박 향상을 위한 caption_tmp!!! 컬럼 추가 될때 마다 캡션값을 입력하면 컬럼 하나씩 들어가는게 눈에 보인다.
  219. // 고로.. 변수에 저장해 두었다가 마지막에 찍어 주자.
  220. var caption_tmp = datagrid1.caption;
  221. // 날짜가 하루 더 많다. 그래서 하루 빼줬다.
  222. tmp_min_date.setDate(tmp_min_date.getDate()-1);
  223. // 컬럼 추가, 그리드 캡션 지정, 최대날짜와 같다면 루프 종료
  224. // ## 검색된 건수가 없으면 종료, 요거 없으면 무한 루프!!!! ##
  225. for(k = 1; k < day_cnt; k++){
  226. tmp_min_date.setDate(tmp_min_date.getDate()+1);
  227. // 그리드에서 비교를 위해 날짜 포맷 설정
  228. ty = tmp_min_date.getYear();
  229. tm = tmp_min_date.getMonth()+1;
  230. td = tmp_min_date.getDate();
  231. if(tm < 10)
  232. tm = "0" + tm;
  233. if(td < 10)
  234. td = "0" + td;
  235. tt = ty + "-" + tm + "-" + td;
  236. // 최대날짜가 되면 컬럼 생성을 중지한다.
  237. // if(tt == max_date)
  238. // {
  239. // datagrid1.addColumn("ref:d" + tt + "; type: output;",false);
  240. // datagrid1.caption = caption_tmp + "^" + tt;
  241. // break;
  242. // }
  243. // 최대날짜까지 컬럼 추가
  244. datagrid1.addColumn("ref:d" + tt + "; type: output;",false);
  245. caption_tmp = caption_tmp + "^" + tt;
  246. }
  247. for(j = 1; j < day_cnt; j++){
  248. //아파치 작성일자 추가
  249. //아파치 일자와 그리드 날짜가 동일할 때
  250. if(datagrid1.textmatrix(0,j) != datagrid3.textmatrix(j,0)){
  251. datagrid1.textmatrix(0,j) = datagrid3.textmatrix(j,0); //날짜는 0 로우에..add_row_cnt-i-1
  252. }
  253. }
  254. // 로우 생성, subteam,dev 입력
  255. var add_row_cnt = 1;
  256. var col_cnt = 1;
  257. var cmp_dev = "시작은암것두엄는거다";
  258. // 원본 데이터를 첨 부터 끝까지 읽어 내려가면서 그래프 기준이 될 데이터 그리드를 생성한다.
  259. for( i = 1 ; i < row_cnt ; i++ )
  260. {
  261. // 앞에 이름과 현재 로우의 dev가 다르면 로우를 추가한다. (dev로 sort 해서 가져 왔심)
  262. // 앞에 이름과 같은데 팀이 달라도 로우를 추가 한다. 두탕 뛰는 개발자 색출
  263. if (cmp_dev != datagrid2.textmatrix(i,0)){
  264. datagrid1.addRow(false);
  265. // fixed컬럼에 dev, subteam에 해당팀, 개발자 입력
  266. datagrid1.textmatrix(add_row_cnt,0) = datagrid2.textmatrix(i,0);
  267. add_row_cnt = add_row_cnt + 1;
  268. }
  269. // 데이터 맵핑
  270. for ( c = 1 ; c < datagrid1.cols ; c++ ) {
  271. // input date가 같다면 해당 셀에 데이터 맵핑
  272. if (datagrid1.textmatrix(0,c) == datagrid2.textmatrix(i,1)){
  273. // 통계 데이터 맵핑
  274. datagrid1.textmatrix(add_row_cnt-1,c) = datagrid2.textmatrix(i,2);
  275. }else{
  276. // 빈 셀은 0으로 채워 준다 -> 값이 비었을 경우 티차트에서 에러 발생.
  277. if (datagrid1.textmatrix(add_row_cnt-1,c) == ""){
  278. datagrid1.textmatrix(add_row_cnt-1,c) = "0";
  279. }
  280. }
  281. }
  282. // 현재 행의 개발자,Subteam 을 저장해 두었다가 다음 행과 비교한다.
  283. cmp_dev = datagrid2.textmatrix(i,0);
  284. }
  285. // 챠트 그리기
  286. drawLineAll(Tchart1, datagrid1, "Project Rate Chart");
  287. //drawLine(Tchart1, datagrid1, 1, "ApacheScore/Dethrate", true);
  288. //drawLine(Tchart1, datagrid1, 2, "ApacheScore/Dethrate", false);
  289. }
  290. function init_grid()
  291. {
  292. // 컬럼 캡션 초기화
  293. datagrid1.caption = "작성일자";
  294. var cols = datagrid1.cols-datagrid1.fixedCols;
  295. for( var i = 0; i < cols; i++ ) {
  296. //그리드의 컬럼 삭제
  297. datagrid1.removeColumn(false);
  298. }
  299. // 노드 초기화
  300. model.removeNodeset("/root/main/apachelist/apache");
  301. model.removeNodeset("/root/grd_temp/grid");
  302. model.resetInstanceNode("/root/grd_temp/grid");
  303. model.resetInstanceNode("/root/main/apachelist/apache");
  304. // 차트 초기화
  305. clearTChart(Tchart1);
  306. }
  307. ]]>
  308. </script>
  309. </xhtml:head>
  310. <xhtml:body pagewidth="710" pageheight="600">
  311. <group id="grp_btn" scroll="auto" style="left:0px; top:555px; width:690px; height:40px; ">
  312. <button id="button35" class="btn4_letter2" style="left:625px; top:0px; width:56px; height:22px; ">
  313. <caption>닫기</caption>
  314. <script type="javascript" ev:event="DOMActivate">
  315. <![CDATA[
  316. window.close();
  317. ]]>
  318. </script>
  319. </button>
  320. <shape id="roundrect1" appearance="roundrect" ellipsewidth="20" ellipseheight="20" style="left:15px; top:0px; width:390px; height:25px; "/>
  321. <caption id="caption1" style="left:30px; top:5px; width:165px; height:15px; ">* A : APACHE|| score (점)</caption>
  322. <caption id="caption3" style="left:235px; top:5px; width:185px; height:15px; ">D : Predicted death rate(%)</caption>
  323. </group>
  324. <caption id="caption2" ref="/root/hidden/forminfo/formnm" class="tit_2" style="left:0px; top:10px; width:172px; height:14px; ">APACHE II - 환자 그래프</caption>
  325. <line id="line2" class="line_1" style="x1:0px; y1:26px; x2:702px; y2:26px; "/>
  326. <object id="Tchart1" clsid="{fab9b41c-87d6-474d-ab7e-f07d78f2422e}" style="left:15px; top:40px; width:675px; height:410px; "/>
  327. <datagrid id="datagrid1" nodeset="/root/grd_temp/grid" allowselection="false" caption="작성일자" colsep="^" colwidth="60" ellipsis="true" fixedcols="1" mergecellsfixedrows="bycolrec" rowsep="|" tooltip="true" style="left:15px; top:455px; width:675px; height:85px; text-align:center; ">
  328. <col ref="ad"/>
  329. </datagrid>
  330. <datagrid id="datagrid3" nodeset="/root/main/apchinfo/dd/ddlist" visibility="hidden" caption="작성일자" colsep="^" colwidth="60" dataheight="23" defaultrows="0" extendlastcol="scroll" fixedcols="8" mergecellsfixedrows="bycolrec" rowheight="23" rowsep="|" tooltip="true" style="left:540px; top:460px; width:65px; height:115px; ">
  331. <col ref="apchdd"/>
  332. </datagrid>
  333. <datagrid id="datagrid2" nodeset="/root/main/apachelist/apache" visibility="hidden" caption="작성일자^1^2" colsep="^" colwidth="60, 60, 60" dataheight="23" defaultrows="0" extendlastcol="scroll" fixedcols="3" mergecellsfixedrows="bycolrec" rowheight="23" rowsep="|" tooltip="true" style="left:325px; top:450px; width:200px; height:150px; ">
  334. <col ref="ad"/>
  335. <col ref="apchdd"/>
  336. <col ref="result"/>
  337. </datagrid>
  338. </xhtml:body>
  339. </xhtml:html>