SMMRI03600.js 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829
  1. //--조회조건 제어
  2. function fCtrlCond(flag) {
  3. chk_compterm1.disabled = flag;
  4. chk_compterm2.disabled = flag;
  5. chk_compterm3.disabled = flag;
  6. if( flag == true ) { //기간별.서식별이 아닌 나머지 경우
  7. model.setValue("/root/main/cond/compterm1", ""); //비교1 checkbox
  8. model.setValue("/root/main/cond/compterm2", ""); //비교2 checkbox
  9. model.setValue("/root/main/cond/compterm3", ""); //비교3 checkbox
  10. ipt_fromdd1.disabled = flag;
  11. ipt_fromdd2.disabled = flag;
  12. ipt_fromdd3.disabled = flag;
  13. ipt_todd1.disabled = flag;
  14. ipt_todd2.disabled = flag;
  15. ipt_todd3.disabled = flag;
  16. ipt_fromdd1.value = "";
  17. ipt_fromdd2.value = "";
  18. ipt_fromdd3.value = "";
  19. ipt_todd1.value = "";
  20. ipt_todd2.value = "";
  21. ipt_todd3.value = "";
  22. }
  23. }
  24. //비교/기간 제어
  25. function fCtrlCompTerm(flag) {
  26. if( flag == "1" ) {
  27. if( model.getValue("/root/main/cond/compterm1") == "" ) {
  28. model.setValue("/root/main/cond/fromdd1", "");
  29. model.setValue("/root/main/cond/todd1", "");
  30. ipt_fromdd1.disabled = true;
  31. ipt_todd1.disabled = true;
  32. model.refresh();
  33. } else {
  34. ipt_fromdd1.disabled = false;
  35. ipt_todd1.disabled = false;
  36. model.refresh();
  37. }
  38. } else if( flag == "2" ) {
  39. if( model.getValue("/root/main/cond/compterm2") == "" ) {
  40. model.setValue("/root/main/cond/fromdd2", "");
  41. model.setValue("/root/main/cond/todd2", "");
  42. ipt_fromdd2.disabled = true;
  43. ipt_todd2.disabled = true;
  44. model.refresh();
  45. } else {
  46. ipt_fromdd2.disabled = false;
  47. ipt_todd2.disabled = false;
  48. model.refresh();
  49. }
  50. } else if( flag == "3" ) {
  51. if( model.getValue("/root/main/cond/compterm3") == "" ) {
  52. model.setValue("/root/main/cond/fromdd3", "");
  53. model.setValue("/root/main/cond/todd3", "");
  54. ipt_fromdd3.disabled = true;
  55. ipt_todd3.disabled = true;
  56. model.refresh();
  57. } else {
  58. ipt_fromdd3.disabled = false;
  59. ipt_todd3.disabled = false;
  60. model.refresh();
  61. }
  62. }
  63. }
  64. function fValidSearch() {
  65. //서식명 "전체"는 기간별.서식별 조회시 가능.
  66. if( model.getValue("/root/main/cond/searchtype") != "2" && model.getValue("/root/main/cond/srcformcd") == "" ) {
  67. messageBox("서식명을 선택하세요.","I003");
  68. model.setFocus("cmb_form");
  69. return false;
  70. }
  71. //기간별.서식별 조회시 - 기간FROM 필수.
  72. if( model.getValue("/root/main/cond/searchtype") == "2" && model.getValue("/root/main/cond/fromdd") == "" ) {
  73. messageBox("기간을 입력하세요.","I003");
  74. model.setFocus("ipt_fromdd");
  75. return false;
  76. }
  77. //기간별.서식별 조회시 - 기간TO 필수.
  78. if( model.getValue("/root/main/cond/searchtype") == "2" && model.getValue("/root/main/cond/todd") == "" ) {
  79. messageBox("기간을 입력하세요.","I003");
  80. model.setFocus("ipt_todd");
  81. return false;
  82. }
  83. //기간별.서식별 조회시 - 비교1 선택시 > 기간1FROM 필수.
  84. if( model.getValue("/root/main/cond/searchtype") == "2" && model.getValue("/root/main/cond/compterm1") == "1" && model.getValue("/root/main/cond/fromdd1") == "" ) {
  85. messageBox("비교1의 기간을 입력하세요.","I003");
  86. model.setFocus("ipt_fromdd1");
  87. return false;
  88. }
  89. //기간별.서식별 조회시 - 비교1 선택시 > 기간1TO 필수.
  90. if( model.getValue("/root/main/cond/searchtype") == "2" && model.getValue("/root/main/cond/compterm1") == "1" && model.getValue("/root/main/cond/todd1") == "" ) {
  91. messageBox("비교1의 기간을 입력하세요.","I003");
  92. model.setFocus("ipt_todd1");
  93. return false;
  94. }
  95. //기간별.서식별 조회시 - 비교2 선택시 > 기간2FROM 필수.
  96. if( model.getValue("/root/main/cond/searchtype") == "2" && model.getValue("/root/main/cond/compterm2") == "1" && model.getValue("/root/main/cond/fromdd2") == "" ) {
  97. messageBox("비교2의 기간을 입력하세요.","I003");
  98. model.setFocus("ipt_fromdd2");
  99. return false;
  100. }
  101. //기간별.서식별 조회시 - 비교2 선택시 > 기간2TO 필수.
  102. if( model.getValue("/root/main/cond/searchtype") == "2" && model.getValue("/root/main/cond/compterm2") == "1" && model.getValue("/root/main/cond/todd2") == "" ) {
  103. messageBox("비교2의 기간을 입력하세요.","I003");
  104. model.setFocus("ipt_todd2");
  105. return false;
  106. }
  107. //기간별.서식별 조회시 - 비교3 선택시 > 기간3FROM 필수.
  108. if( model.getValue("/root/main/cond/searchtype") == "2" && model.getValue("/root/main/cond/compterm3") == "1" && model.getValue("/root/main/cond/fromdd3") == "" ) {
  109. messageBox("비교3의 기간을 입력하세요.","I003");
  110. model.setFocus("ipt_fromdd3");
  111. return false;
  112. }
  113. //기간별.서식별 조회시 - 비교3 선택시 > 기간3TO 필수.
  114. if( model.getValue("/root/main/cond/searchtype") == "2" && model.getValue("/root/main/cond/compterm3") == "1" && model.getValue("/root/main/cond/todd3") == "" ) {
  115. messageBox("비교3의 기간을 입력하세요.","I003");
  116. model.setFocus("ipt_todd3");
  117. return false;
  118. }
  119. return true;
  120. }
  121. function fSearch() {
  122. model.removenode("/root/send/req");
  123. model.removenode("/root/main/list");
  124. // Staffsign 인경우 직종 감추기
  125. if( model.getValue("/root/main/cond/searchtype") == "3" && model.getValue("/root/main/cond/staffsign") == "2") {
  126. grd_list.colWidth(4) = 0; //직종
  127. }else if( model.getValue("/root/main/cond/searchtype") == "3" && model.getValue("/root/main/cond/staffsign") == "1") {
  128. grd_list.colWidth(4) = 52; //직종
  129. }
  130. //조회조건 검증
  131. if( !fValidSearch() ) {
  132. return;
  133. }
  134. cap_cmts.value = ""; //서식의 주석
  135. model.makeValue("/root/send/req/searchtype", model.getValue("/root/main/cond/searchtype"));
  136. model.makeValue("/root/send/req/srcformcd", model.getValue("/root/main/cond/srcformcd"));
  137. model.makeValue("/root/send/req/deptcd", model.getValue("/root/main/cond/deptcd"));
  138. model.makeValue("/root/send/req/detldept", model.getValue("/root/main/cond/detldept"));
  139. model.makeValue("/root/send/req/drid", model.getValue("/root/main/cond/drid"));
  140. model.makeValue("/root/send/req/staffsign", model.getValue("/root/main/cond/staffsign"));
  141. model.makeValue("/root/send/req/cnstopflag", model.getValue("/root/main/cond/cnstopflag"));
  142. model.makeValue("/root/send/req/surgery", model.getValue("/root/main/cond/surgery"));
  143. model.makeValue("/root/send/req/fromdd", model.getValue("/root/main/cond/fromdd"));
  144. model.makeValue("/root/send/req/todd", model.getValue("/root/main/cond/todd"));
  145. model.makeValue("/root/send/req/fromdd1", model.getValue("/root/main/cond/fromdd1"));
  146. model.makeValue("/root/send/req/todd1", model.getValue("/root/main/cond/todd1"));
  147. model.makeValue("/root/send/req/fromdd2", model.getValue("/root/main/cond/fromdd2"));
  148. model.makeValue("/root/send/req/todd2", model.getValue("/root/main/cond/todd2"));
  149. model.makeValue("/root/send/req/fromdd3", model.getValue("/root/main/cond/fromdd3"));
  150. model.makeValue("/root/send/req/todd3", model.getValue("/root/main/cond/todd3"));
  151. submit("TRMRI03601");
  152. //서식의 주석
  153. var strCmts = "";
  154. if( model.getvalue("/root/main/list/cmtslist/cmts") != "" ) {
  155. strCmts = "[주] "+ model.getvalue("/root/main/list/cmtslist/cmts");
  156. }
  157. if( model.getvalue("/root/main/list/cmtslist[2]/cmts") != "" ) {
  158. strCmts += "\n[주] "+ model.getvalue("/root/main/list/cmtslist[2]/cmts");
  159. }
  160. //주석 초기화
  161. if( strCmts == "" ) {
  162. cap_cmts.value = "";
  163. } else {
  164. cap_cmts.value = strCmts;
  165. }
  166. //셀 병합
  167. if( model.getValue("/root/main/cond/searchtype") == "2" ) { //작성현황-기간별.서식별 일 경우 / 셀 병합
  168. grd_list.mergeCells = "byrestriccol";
  169. grd_list.mergeCol(1) = true; //기준
  170. grd_list.mergeCol(2) = false;
  171. grd_list.mergeCol(3) = false;
  172. grd_list.mergeCol(4) = false;
  173. grd_list.mergeCol(5) = false;
  174. grd_list.mergeCol(6) = false;
  175. grd_list.mergeCol(7) = false;
  176. grd_list.mergeCol(8) = false;
  177. grd_list.mergeCol(9) = false;
  178. grd_list.mergeCol(10) = false;
  179. grd_list.mergeCol(11) = false;
  180. grd_list.mergeCol(12) = false;
  181. grd_list.mergeCol(13) = false;
  182. grd_list.merge();
  183. } else if( model.getValue("/root/main/cond/searchtype") == "3" ) { //작성현황-과별.의사별 일 경우 / 셀 병합
  184. grd_list.mergeCells = "bycol";
  185. grd_list.mergeCol(2) = false;
  186. grd_list.mergeCol(3) = true;
  187. grd_list.mergeCol(4) = false;
  188. grd_list.mergeCol(5) = false;
  189. grd_list.mergeCol(6) = false;
  190. grd_list.mergeCol(7) = false;
  191. grd_list.mergeCol(8) = false;
  192. grd_list.mergeCol(9) = false;
  193. grd_list.mergeCol(10) = false;
  194. grd_list.mergeCol(11) = false;
  195. grd_list.mergeCol(12) = false;
  196. grd_list.mergeCol(13) = false;
  197. grd_list.merge();
  198. }
  199. //그래프 처리
  200. if( model.getValue("/root/main/cond/searchtype") == "1" ) { //서식별.진료과별 그래프
  201. fProcGraph1(); //그래프 처리
  202. } else if( model.getValue("/root/main/cond/searchtype") == "2" ) { //기간별.서식별 그래프
  203. fProcGraph2(); //그래프 처리
  204. }
  205. //소계처리
  206. if( model.getValue("/root/main/cond/searchtype") == "1" ) { //서식별.진료과별 소계처리
  207. //0 - 서식명 / 2 - 과
  208. grd_list.subtotal("sum", 0, 6, "#,###", "background-color:#99ff99", 3, "총계"); //대상건수
  209. grd_list.subtotal("sum", 0, 7, "#,###", "background-color:#99ff99", 3, "총계"); //작성
  210. grd_list.subtotal("sum", 0, 8, "#,###", "background-color:#99ff99", 3, "총계"); //시점내작성
  211. grd_list.subtotal("sum", 0, 9, "#,###", "background-color:#99ff99", 3, "총계"); //시점이후작성
  212. grd_list.subtotal("sum", 0,10, "#,###", "background-color:#99ff99", 3, "총계"); //미작성
  213. } else if( model.getValue("/root/main/cond/searchtype") == "3" ) { //과별.의사별 소계처리
  214. //0 - 서식명 / 2 - 과 / 3 - 의사 / 4 - 의사명
  215. grd_list.subtotal("sum", 0, 6, "#,###", "background-color:#99ff99", 3, "총계"); //대상건수
  216. grd_list.subtotal("sum", 0, 8, "#,###", "background-color:#99ff99", 3, "총계"); //시점내작성
  217. grd_list.subtotal("sum", 0, 9, "#,###", "background-color:#99ff99", 3, "총계"); //시점이후작성
  218. grd_list.subtotal("sum", 0,10, "#,###", "background-color:#99ff99", 3, "총계"); //미작성
  219. grd_list.subtotal("sum", 3, 6, "#,###", "background-color:#ffff99", 5, "소계"); //대상건수
  220. grd_list.subtotal("sum", 3, 8, "#,###", "background-color:#ffff99", 5, "소계"); //시점내작성
  221. grd_list.subtotal("sum", 3, 9, "#,###", "background-color:#ffff99", 5, "소계"); //시점이후작성
  222. grd_list.subtotal("sum", 3,10, "#,###", "background-color:#ffff99", 5, "소계"); //미작성
  223. }
  224. var subTot6 = 0; //대상건수
  225. var subTot7 = 0;
  226. var subTot8 = 0;
  227. var subTot9 = 0;
  228. var subTot10 = 0;
  229. //외과 분과별(2) 일 경우 "외과계" 합 총계에서 제거
  230. if( model.getValue("/root/main/cond/surgery") == "2" ) {
  231. for(var i = grd_list.fixedRows; i < grd_list.rows; i++) {
  232. if( grd_list.valueMatrix(i,3) == "외과계" ) {
  233. subTot6 += parseInt(grd_list.valueMatrix(i,6)); //대상건수
  234. subTot7 += parseInt(grd_list.valueMatrix(i,7)); //
  235. subTot8 += parseInt(grd_list.valueMatrix(i,8)); //
  236. subTot9 += parseInt(grd_list.valueMatrix(i,9)); //
  237. subTot10 += parseInt(grd_list.valueMatrix(i,10)); //
  238. }
  239. }
  240. }
  241. model.refresh();
  242. //"외과계" 합 총계에서 제거
  243. if( grd_list.rows > 2 ) {
  244. grd_list.valueMatrix(grd_list.rows-1, 6) -= subTot6;
  245. grd_list.valueMatrix(grd_list.rows-1, 7) -= subTot7;
  246. grd_list.valueMatrix(grd_list.rows-1, 8) -= subTot8;
  247. grd_list.valueMatrix(grd_list.rows-1, 9) -= subTot9;
  248. grd_list.valueMatrix(grd_list.rows-1, 10) -= subTot10;
  249. }
  250. //총계별로 비율 처리
  251. if( model.getValue("/root/main/cond/searchtype") == "1" ) { //서식별.진료과별
  252. if( grd_list.rows > 2 ) {
  253. var rate = 0;
  254. rate = grd_list.valueMatrix(grd_list.rows-1, 7) / grd_list.valueMatrix(grd_list.rows-1, 6) * 100;
  255. grd_list.valueMatrix(grd_list.rows-1, 11) = rate.toFixed(2); //작성율
  256. rate = grd_list.valueMatrix(grd_list.rows-1, 8) / grd_list.valueMatrix(grd_list.rows-1, 6) * 100;
  257. grd_list.valueMatrix(grd_list.rows-1, 12) = rate.toFixed(2); //시점내작성율
  258. rate = grd_list.valueMatrix(grd_list.rows-1, 9) / grd_list.valueMatrix(grd_list.rows-1, 6) * 100
  259. grd_list.valueMatrix(grd_list.rows-1, 13) = rate.toFixed(2); //시점이후작성율
  260. }
  261. } else if( model.getValue("/root/main/cond/searchtype") == "2" && grd_list.rows > 1 ) { //기간별.서식별
  262. /*
  263. var totcnt = 0; //대상건수
  264. var reccnt = 0; //작성건수
  265. var intcnt = 0; //시점내작성
  266. var ovrcnt = 0; //시점이후작성
  267. var noncnt = 0; //미작성
  268. for( var i = 0; i < grd_list.rows-1; i ++ ) {
  269. grd_list.valueMatrix(grd_list.rows-1, 6);
  270. }
  271. var rate = 0;
  272. rate = grd_list.valueMatrix(grd_list.rows-1, 7) / grd_list.valueMatrix(grd_list.rows-1, 6) * 100;
  273. grd_list.valueMatrix(grd_list.rows-1, 11) = rate.toFixed(2); //작성율
  274. rate = grd_list.valueMatrix(grd_list.rows-1, 8) / grd_list.valueMatrix(grd_list.rows-1, 6) * 100;
  275. grd_list.valueMatrix(grd_list.rows-1, 12) = rate.toFixed(2); //시점내작성율
  276. rate = grd_list.valueMatrix(grd_list.rows-1, 9) / grd_list.valueMatrix(grd_list.rows-1, 6) * 100
  277. grd_list.valueMatrix(grd_list.rows-1, 13) = rate.toFixed(2); //시점이후작성율
  278. */
  279. }
  280. }
  281. //그래프 전처리
  282. function fPreSetGraph() {
  283. // 차트 초기화
  284. clearTChart(obj_chart1);
  285. obj_chart1.Panel.MarginTop = 2;
  286. obj_chart1.Panel.MarginLeft = 2;
  287. obj_chart1.Panel.MarginRight = 2;
  288. obj_chart1.Panel.MarginBottom = 2;
  289. obj_chart1.Axis.Bottom.AxisPen.Color = 0x000000;
  290. obj_chart1.Zoom.Enable = false; // zoom 사용하지 않기
  291. obj_chart1.Scroll.Enable = false; // scroll 사용하지 않기
  292. obj_chart1.Legend.Visible = false; // 그래프 참조 박스 띄우지 않기
  293. obj_chart1.Panel.Gradient.Visible = true; // 페널에 그라디언트 적용
  294. obj_chart1.Panel.Gradient.StartColor = 0xffffff;
  295. obj_chart1.Panel.Gradient.EndColor=0xffffff;
  296. obj_chart1.Environment.MouseWheelScroll = false;
  297. //Axis속성
  298. obj_chart1.Axis.Bottom.Automatic= true;
  299. obj_chart1.Axis.Left.Automatic = false;
  300. obj_chart1.Axis.Left.Maximum = 100;
  301. obj_chart1.Axis.Left.minimum= 0;
  302. obj_chart1.Axis.Left.increment= 10;
  303. obj_chart1.Axis.Left.AxisPen.Width = 1
  304. obj_chart1.Axis.Bottom.AxisPen.Width = 1
  305. obj_chart1.Axis.Left.StartPosition = 5
  306. obj_chart1.Axis.Left.EndPosition = 95
  307. obj_chart1.Axis.Bottom.StartPosition = 3;
  308. obj_chart1.Axis.Bottom.EndPosition = 97;
  309. }
  310. //서식별.진료과별 그래프
  311. function fProcGraph1() {
  312. var colorRed = 0x0000ff; //red
  313. var colorGreen = 0x00ff00; //green
  314. var colorYellow = 0x00ffff; //yellow
  315. /**
  316. * Tee Chart 처리 / START
  317. */
  318. fPreSetGraph(); //그래프 전처리
  319. // 차트 타이틀 설정
  320. if( model.getValue("/root/main/cond/fromdd") != "" && model.getValue("/root/main/cond/todd") != "" ) {
  321. var condTerm = model.getValue("/root/main/cond/fromdd") + " ~ " + model.getValue("/root/main/cond/todd");
  322. obj_chart1.Header.Text(0) = cmb_form.label + " 작성율 ( " + condTerm + " )";
  323. } else {
  324. obj_chart1.Header.Text(0) = cmb_form.label + " 작성율";
  325. }
  326. //Axis속성
  327. obj_chart1.Axis.Bottom.Labels.Angle = 270;
  328. obj_chart1.Axis.Bottom.Labels.Font.Size = 9;
  329. obj_chart1.Axis.Bottom.Labels.Font.Name = "@굴림체";
  330. obj_chart1.Legend.visible = true; // Legend Visible
  331. //그래프 옵션: 시점내작성
  332. if( chk_intrec.value == "1" && chk_ovrrec.value == "" && chk_nonrec.value == "" ) {
  333. obj_chart1.Legend.visible = false; // Legend Visible
  334. //차트 타입 설정: 0 = Line / 1 = Bar
  335. obj_chart1.AddSeries(1);
  336. obj_chart1.Series(0).marks.visible = false;
  337. obj_chart1.Series(0).marks.symbol.visible = false;
  338. obj_chart1.Series(0).marks.style = 0; //값 표시
  339. for(var j = grd_list.fixedRows; j < grd_list.rows; j++) {
  340. if( grd_list.valueMatrix(j,3) == "총계" ) return;
  341. if( grd_list.valueMatrix(j,3) == "외과계" ) return;
  342. x = grd_list.valueMatrix(j,3); //과
  343. y = grd_list.valueMatrix(j,12); //시점내 작성률
  344. obj_chart1.Series(0).Color = colorGreen;
  345. obj_chart1.Series(0).Add(y,x,obj_chart1.Series(0).color);
  346. }
  347. }
  348. //그래프 옵션: 시점내작성, 시점이후작성
  349. else if( chk_intrec.value == "1" && chk_ovrrec.value == "1" && chk_nonrec.value == "" ) {
  350. obj_chart1.Legend.visible = true; // Legend Visible
  351. //차트 타입 설정: 0 = Line / 1 = Bar
  352. obj_chart1.AddSeries(1);
  353. obj_chart1.Series(0).marks.visible = false;
  354. obj_chart1.Series(0).marks.symbol.visible = false;
  355. obj_chart1.Series(0).marks.style = 0; //값 표시
  356. obj_chart1.Series(0).Title = "시점내작성율";
  357. for(var j = grd_list.fixedRows; j < grd_list.rows; j++) {
  358. if( grd_list.valueMatrix(j,3) == "총계" ) break;
  359. if( grd_list.valueMatrix(j,3) == "외과계" ) break;
  360. x = grd_list.valueMatrix(j,3); //과
  361. y = grd_list.valueMatrix(j,12); //시점내 작성률
  362. obj_chart1.Series(0).Color = colorGreen;
  363. obj_chart1.Series(0).Add(y,x,obj_chart1.Series(0).color);
  364. }
  365. //차트 타입 설정: 0 = Line / 1 = Bar
  366. obj_chart1.AddSeries(1);
  367. obj_chart1.Series(1).marks.visible = false;
  368. obj_chart1.Series(1).marks.symbol.visible = false;
  369. obj_chart1.Series(1).marks.style = 0; //값 표시
  370. obj_chart1.Series(1).Title = "시점이후작성율";
  371. for(var j = grd_list.fixedRows; j < grd_list.rows; j++) {
  372. if( grd_list.valueMatrix(j,3) == "총계" ) return;
  373. if( grd_list.valueMatrix(j,3) == "외과계" ) return;
  374. x = grd_list.valueMatrix(j,3); //과
  375. y = grd_list.valueMatrix(j,13); //시점이후 작성률
  376. obj_chart1.Series(1).Color = colorYellow;
  377. obj_chart1.Series(1).Add(y,x,obj_chart1.Series(1).color);
  378. }
  379. }
  380. //그래프 옵션: 시점내작성, 미작성
  381. else if( chk_intrec.value == "1" && chk_ovrrec.value == "" && chk_nonrec.value == "1" ) {
  382. //차트 타입 설정: 0 = Line / 1 = Bar
  383. obj_chart1.AddSeries(1);
  384. obj_chart1.Series(0).marks.visible = false;
  385. obj_chart1.Series(0).marks.symbol.visible = false;
  386. obj_chart1.Series(0).marks.style = 0; //값 표시
  387. obj_chart1.Series(0).Title = "시점내작성율";
  388. for(var j = grd_list.fixedRows; j < grd_list.rows; j++) {
  389. if( grd_list.valueMatrix(j,3) == "총계" ) break;
  390. if( grd_list.valueMatrix(j,3) == "외과계" ) break;
  391. x = grd_list.valueMatrix(j,3); //과
  392. y = grd_list.valueMatrix(j,12); //시점내 작성률
  393. obj_chart1.Series(0).Color = colorGreen;
  394. obj_chart1.Series(0).Add(y,x,obj_chart1.Series(0).color);
  395. }
  396. //차트 타입 설정: 0 = Line / 1 = Bar
  397. obj_chart1.AddSeries(1);
  398. obj_chart1.Series(1).marks.visible = false;
  399. obj_chart1.Series(1).marks.symbol.visible = false;
  400. obj_chart1.Series(1).marks.style = 0; //값 표시
  401. obj_chart1.Series(1).Title = "미작성율";
  402. for(var j = grd_list.fixedRows; j < grd_list.rows; j++) {
  403. if( grd_list.valueMatrix(j,3) == "총계" ) return;
  404. if( grd_list.valueMatrix(j,3) == "외과계" ) return;
  405. x = grd_list.valueMatrix(j,3); //과
  406. y = grd_list.valueMatrix(j,14); //미작성률
  407. obj_chart1.Series(1).Color = colorRed;
  408. obj_chart1.Series(1).Add(y,x,obj_chart1.Series(1).color);
  409. }
  410. }
  411. //그래프 옵션: 시점이후작성, 미작성
  412. else if( chk_intrec.value == "" && chk_ovrrec.value == "1" && chk_nonrec.value == "1" ) {
  413. //차트 타입 설정: 0 = Line / 1 = Bar
  414. obj_chart1.AddSeries(1);
  415. obj_chart1.Series(0).marks.visible = false;
  416. obj_chart1.Series(0).marks.symbol.visible = false;
  417. obj_chart1.Series(0).marks.style = 0; //값 표시
  418. obj_chart1.Series(0).Title = "시점이후작성율";
  419. for(var j = grd_list.fixedRows; j < grd_list.rows; j++) {
  420. if( grd_list.valueMatrix(j,3) == "총계" ) break;
  421. if( grd_list.valueMatrix(j,3) == "외과계" ) break;
  422. x = grd_list.valueMatrix(j,3); //과
  423. y = grd_list.valueMatrix(j,13); //시점이후 작성률
  424. obj_chart1.Series(0).Color = colorYellow;
  425. obj_chart1.Series(0).Add(y,x,obj_chart1.Series(0).color);
  426. }
  427. //차트 타입 설정: 0 = Line / 1 = Bar
  428. obj_chart1.AddSeries(1);
  429. obj_chart1.Series(1).marks.visible = false;
  430. obj_chart1.Series(1).marks.symbol.visible = false;
  431. obj_chart1.Series(1).marks.style = 0; //값 표시
  432. obj_chart1.Series(1).Title = "미작성율";
  433. for(var j = grd_list.fixedRows; j < grd_list.rows; j++) {
  434. if( grd_list.valueMatrix(j,3) == "총계" ) return;
  435. if( grd_list.valueMatrix(j,3) == "외과계" ) return;
  436. x = grd_list.valueMatrix(j,3); //과
  437. y = grd_list.valueMatrix(j,14); //미작성률
  438. obj_chart1.Series(1).Color = colorRed;
  439. obj_chart1.Series(1).Add(y,x,obj_chart1.Series(1).color);
  440. }
  441. }
  442. //그래프 옵션: 시점내작성, 시점이후작성, 미작성
  443. else if( chk_intrec.value == "1" && chk_ovrrec.value == "1" && chk_nonrec.value == "1" ) {
  444. //차트 타입 설정: 0 = Line / 1 = Bar
  445. obj_chart1.AddSeries(1);
  446. obj_chart1.Series(0).marks.visible = false;
  447. obj_chart1.Series(0).marks.symbol.visible = false;
  448. obj_chart1.Series(0).marks.style = 0; //값 표시
  449. obj_chart1.Series(0).Title = "시점내작성율";
  450. for(var j = grd_list.fixedRows; j < grd_list.rows; j++) {
  451. if( grd_list.valueMatrix(j,3) == "총계" ) break;
  452. if( grd_list.valueMatrix(j,3) == "외과계" ) break;
  453. x = grd_list.valueMatrix(j,3); //과
  454. y = grd_list.valueMatrix(j,12); //시점내 작성률
  455. obj_chart1.Series(0).Color = colorGreen;
  456. obj_chart1.Series(0).Add(y,x,obj_chart1.Series(0).color);
  457. }
  458. //차트 타입 설정: 0 = Line / 1 = Bar
  459. obj_chart1.AddSeries(1);
  460. obj_chart1.Series(1).marks.visible = false;
  461. obj_chart1.Series(1).marks.symbol.visible = false;
  462. obj_chart1.Series(1).marks.style = 0; //값 표시
  463. obj_chart1.Series(1).Title = "시점이후작성율";
  464. for(var j = grd_list.fixedRows; j < grd_list.rows; j++) {
  465. if( grd_list.valueMatrix(j,3) == "총계" ) break;
  466. if( grd_list.valueMatrix(j,3) == "외과계" ) break;
  467. x = grd_list.valueMatrix(j,3); //과
  468. y = grd_list.valueMatrix(j,13); //시점이후 작성률
  469. obj_chart1.Series(1).Color = colorYellow;
  470. obj_chart1.Series(1).Add(y,x,obj_chart1.Series(1).color);
  471. }
  472. //차트 타입 설정: 0 = Line / 1 = Bar
  473. obj_chart1.AddSeries(1);
  474. obj_chart1.Series(2).marks.visible = false;
  475. obj_chart1.Series(2).marks.symbol.visible = false;
  476. obj_chart1.Series(2).marks.style = 0; //값 표시
  477. obj_chart1.Series(2).Title = "미작성율";
  478. for(var j = grd_list.fixedRows; j < grd_list.rows; j++) {
  479. if( grd_list.valueMatrix(j,3) == "총계" ) return;
  480. if( grd_list.valueMatrix(j,3) == "외과계" ) return;
  481. x = grd_list.valueMatrix(j,3); //과
  482. y = grd_list.valueMatrix(j,14); //미작성률
  483. obj_chart1.Series(2).Color = colorRed;
  484. obj_chart1.Series(2).Add(y,x,obj_chart1.Series(2).color);
  485. }
  486. }
  487. //그래프 옵션: 시점이후작성
  488. else if( chk_intrec.value == "" && chk_ovrrec.value == "1" && chk_nonrec.value == "" ) {
  489. obj_chart1.Legend.visible = false; // Legend Visible
  490. //차트 타입 설정: 0 = Line / 1 = Bar
  491. obj_chart1.AddSeries(1);
  492. obj_chart1.Series(0).marks.visible = false;
  493. obj_chart1.Series(0).marks.symbol.visible = false;
  494. obj_chart1.Series(0).marks.style = 0; //값 표시
  495. obj_chart1.Series(0).Title = "시점이후작성율";
  496. for(var j = grd_list.fixedRows; j < grd_list.rows; j++) {
  497. if( grd_list.valueMatrix(j,3) == "총계" ) return;
  498. if( grd_list.valueMatrix(j,3) == "외과계" ) return;
  499. x = grd_list.valueMatrix(j,3); //과
  500. y = grd_list.valueMatrix(j,13); //시점이후 작성률
  501. obj_chart1.Series(0).Color = colorYellow;
  502. obj_chart1.Series(0).Add(y,x,obj_chart1.Series(0).color);
  503. }
  504. }
  505. //그래프 옵션: 미작성
  506. else if( chk_intrec.value == "" && chk_ovrrec.value == "" && chk_nonrec.value == "1" ) {
  507. obj_chart1.Legend.visible = false; // Legend Visible
  508. //차트 타입 설정: 0 = Line / 1 = Bar
  509. obj_chart1.AddSeries(1);
  510. obj_chart1.Series(0).marks.visible = false;
  511. obj_chart1.Series(0).marks.symbol.visible = false;
  512. obj_chart1.Series(0).marks.style = 0; //값 표시
  513. obj_chart1.Series(0).Title = "미작성율";
  514. for(var j = grd_list.fixedRows; j < grd_list.rows; j++) {
  515. if( grd_list.valueMatrix(j,3) == "총계" ) return;
  516. if( grd_list.valueMatrix(j,3) == "외과계" ) return;
  517. x = grd_list.valueMatrix(j,3); //과
  518. y = grd_list.valueMatrix(j,14); //미작성률
  519. obj_chart1.Series(0).Color = colorRed;
  520. obj_chart1.Series(0).Add(y,x,obj_chart1.Series(0).color);
  521. }
  522. }
  523. /**
  524. * Tee Chart 처리 / END
  525. */
  526. }
  527. //기간별.서식별 그래프
  528. function fProcGraph2() {
  529. /**
  530. * Tee Chart 처리 / START
  531. */
  532. fPreSetGraph(); //그래프 전처리
  533. // 차트 타이틀 설정
  534. //var condTerm = model.getValue("/root/main/cond/fromdd") + " ~ " + model.getValue("/root/main/cond/todd");
  535. obj_chart1.Header.Text(0) = ( cmb_form.label == "전체" ? "전체 서식별" : cmb_form.label ) + " 작성율";
  536. //Axis속성
  537. obj_chart1.Axis.Bottom.Labels.Angle = 0;
  538. obj_chart1.Axis.Bottom.Labels.Font.Size = 8;
  539. obj_chart1.Axis.Bottom.Labels.Font.Name = "굴림체";
  540. var pY = 11;
  541. //그래프 옵션: 시점내작성
  542. if( chk_intrec.value == "1" && chk_ovrrec.value == "" && chk_nonrec.value == "" ) {
  543. pY = 12; //시점내 작성률
  544. }
  545. //그래프 옵션: 시점내작성, 시점이후작성
  546. else if( chk_intrec.value == "1" && chk_ovrrec.value == "1" && chk_nonrec.value == "" ) {
  547. pY = 11; //작성률
  548. }
  549. //그래프 옵션: 시점내작성, 미작성
  550. else if( chk_intrec.value == "1" && chk_ovrrec.value == "" && chk_nonrec.value == "1" ) {
  551. pY = 12; //시점내 작성률
  552. }
  553. //그래프 옵션: 시점이후작성, 미작성
  554. else if( chk_intrec.value == "" && chk_ovrrec.value == "1" && chk_nonrec.value == "1" ) {
  555. pY = 13; //시점이후 작성률
  556. }
  557. //그래프 옵션: 시점내작성, 시점이후작성, 미작성
  558. else if( chk_intrec.value == "1" && chk_ovrrec.value == "1" && chk_nonrec.value == "1" ) {
  559. pY = 11; //작성률
  560. }
  561. //그래프 옵션: 시점이후작성
  562. else if( chk_intrec.value == "" && chk_ovrrec.value == "1" && chk_nonrec.value == "" ) {
  563. pY = 13; //시점이후 작성률
  564. }
  565. //그래프 옵션: 미작성
  566. else if( chk_intrec.value == "" && chk_ovrrec.value == "" && chk_nonrec.value == "1" ) {
  567. return;
  568. }
  569. //-
  570. // 서식명 "전체" 일 경우
  571. //-
  572. if( cmb_form.value == "" ) {
  573. var curSeries = 0;
  574. var seriesColor = new Array(255, 32768, 65535, 16711680, 0, 8421504, 16711935, 8421376, 8388608, 128);
  575. obj_chart1.Legend.visible = true; // Legend Visible
  576. for( var i = 0; i < cmb_form.length-1; i++ ) {
  577. for(var j = grd_list.fixedRows; j < grd_list.rows; j++) {
  578. //그리드의 서식명을 비교하여
  579. //서식명이 같은 경우만 차트를 만들어준다
  580. if( grd_list.valueMatrix(j,0) == model.getvalue("/root/init/rspd/form["+(i+2)+"]/srcformnm") ) {
  581. //차트 타입 설정: 0 = Line / 1 = Bar
  582. obj_chart1.AddSeries(0);
  583. curSeries++;
  584. obj_chart1.Series(curSeries-1).color = seriesColor[i];
  585. break;
  586. }
  587. }
  588. for(var j = grd_list.fixedRows; j < grd_list.rows; j++) {
  589. //그리드의 서식명을 비교하여
  590. //서식명이 같은 경우만 차트를 만들어준다
  591. if( grd_list.valueMatrix(j,0) != model.getvalue("/root/init/rspd/form["+(i+2)+"]/srcformnm") ) {
  592. continue;
  593. }
  594. x = grd_list.valueMatrix(j, 2).substring(0,3) + grd_list.valueMatrix(j, 2).replace(grd_list.valueMatrix(j, 2).substring(0,3), '\r');
  595. y = grd_list.valueMatrix(j, pY); //작성률
  596. obj_chart1.Series(curSeries-1).Add(y,x,seriesColor[i]);
  597. //obj_chart1.Series(curSeries-1).Add(y,x,obj_chart1.Series(curSeries-1).color);
  598. obj_chart1.Series(curSeries-1).asLine.Pointer.visible = true;
  599. obj_chart1.Series(curSeries-1).asLine.LinePen.Width = 2;
  600. obj_chart1.Series(curSeries-1).Title = grd_list.valueMatrix(j,0);
  601. }
  602. }
  603. } else {
  604. obj_chart1.Legend.visible = false; // Legend Visible
  605. //차트 타입 설정: 0 = Line / 1 = Bar
  606. obj_chart1.AddSeries(0);
  607. obj_chart1.Series(0).marks.visible = false;
  608. obj_chart1.Series(0).marks.symbol.visible = true;
  609. obj_chart1.Series(0).marks.style = 0; //값 표시
  610. for(var j = grd_list.fixedRows; j < grd_list.rows; j++) {
  611. x = grd_list.valueMatrix(j, 2).substring(0,3) + grd_list.valueMatrix(j, 2).replace(grd_list.valueMatrix(j, 2).substring(0,3), '\r');
  612. y = grd_list.valueMatrix(j, pY); //작성률
  613. //obj_chart1.Legend.Items.Items(0).Text = grd_list.valueMatrix(j,1);
  614. obj_chart1.Series(0).Add(y,x,obj_chart1.Series(0).color);
  615. obj_chart1.Series(0).asLine.Pointer.visible = true;
  616. }
  617. }
  618. /**
  619. * Tee Chart 처리 / END
  620. */
  621. }
  622. function isNumber(str) {
  623. str += '';
  624. str = str.replace(/^\s*|\s*$/g, '');
  625. if (str == '' || isNaN(str)){
  626. return "N";
  627. }
  628. return "Y";
  629. }
  630. function fReqGetUnPrepDrSmplList(srchflag, srchdata){
  631. model.removeNodeset("/root/send/reqdata");
  632. model.makeValue("/root/send/reqdata/srchflag", srchflag);
  633. model.makeValue("/root/send/reqdata/srchdata", srchdata);
  634. if(submit("TRMRI02901")){
  635. }
  636. }
  637. /**
  638. * @desc 미비환자 내원정보 조회
  639. */
  640. function fReqGetUnPrepPatChosInfo(pid, ioflag, dschflag){
  641. model.removeNodeset("/root/send/reqdata");
  642. model.makeValue("/root/send/reqdata/pid", pid);
  643. model.makeValue("/root/send/reqdata/ioflag", ioflag);
  644. model.makeValue("/root/send/reqdata/dschflag", dschflag);
  645. if(submit("TRMRI02605")){
  646. var nodelist = model.instances(0).selectNodes("/root/main/patinfo/pathistlist");
  647. if(nodelist.length == 0){
  648. model.makeValue("/root/main/cond/pat/pid" , "");
  649. model.makeValue("/root/main/cond/pat/indd" , "");
  650. model.makeValue("/root/main/cond/pat/cretno", "");
  651. model.makeValue("/root/main/cond/pat/hngnm" , "");
  652. model.refresh();
  653. messageBox("환자의 진료내역 정보가", "I004");
  654. return;
  655. }else{
  656. cmb_chosinfo.select(0);
  657. var pid = model.getValue("/root/main/patinfo/pathistlist[rowcnt='" + cmb_chosinfo.value + "']/pid");
  658. var indd = model.getValue("/root/main/patinfo/pathistlist[rowcnt='" + cmb_chosinfo.value + "']/orddd");
  659. var cretno = model.getValue("/root/main/patinfo/pathistlist[rowcnt='" + cmb_chosinfo.value + "']/cretno");
  660. var hngnm = model.getValue("/root/main/patinfo/pathistlist[rowcnt='" + cmb_chosinfo.value + "']/hngnm");
  661. var dschdd = model.getValue("/root/main/patinfo/pathistlist[rowcnt='" + cmb_chosinfo.value + "']/dschdd");
  662. if(dschdd != '재원중'){
  663. indschflag = "D";
  664. }else{
  665. indschflag = "I";
  666. }
  667. model.makeValue("/root/main/cond/pat/pid" , pid);
  668. model.makeValue("/root/main/cond/pat/indd" , indd);
  669. model.makeValue("/root/main/cond/pat/cretno", cretno);
  670. model.makeValue("/root/main/cond/pat/hngnm" , hngnm);
  671. var wndobj = getOpenWindow("SPMRI02700");
  672. if(wndobj != null){
  673. setParameter("SPMRI02700_pid", pid);
  674. wndobj.javascript.fReqGetUnPrepOpList();
  675. wndobj.model.setFocus("grd_unprepoplist");
  676. wndobj.model.refresh();
  677. }
  678. var wndobj2 = getOpenWindow("SPMRI02600");
  679. if(wndobj2 != null){
  680. wndobj2.javascript.gRecLoad = "N";
  681. wndobj2.javascript.fSetPatInfo(pid, indd, cretno, indschflag);
  682. }
  683. if(pid!=""){
  684. btn_requnpreppatbase.dispatch("onclick");
  685. }
  686. }
  687. }
  688. }
  689. /**
  690. * @desc : 엑셀 저장
  691. */
  692. function fSaveExcel(grd){
  693. var fileName = window.fileDialog("save", ",", false, "excel", "xls", "Excel Files(*.xls)|*.xls|All Files (*.*)|*.*");
  694. if (fileName != ""){
  695. grd.saveExcel(fileName, "SheetName", true, true, "", "", "false");
  696. }
  697. }
  698. function fSaveExcel2(){
  699. var fileName = window.fileDialog("save", ",", false, "excel", "xls", "Excel Files(*.xls)|*.xls|All Files (*.*)|*.*");
  700. if (fileName != ""){
  701. grd_list.saveExcel(fileName, "SheetName", true, true, "", "", "false");
  702. }
  703. }