SMMNR07800.js 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983
  1. /***************************************************************************************************
  2. *
  3. * @ create-date : 2008-06-16
  4. * @ author : dhkim
  5. * @ pgm-name : 중증도조회
  6. * @ pgm-code : SMMNR07800
  7. * @ src : emr/carerecweb/xrw/SMMNR07800_중증도조회.xrw
  8. * @ description : 중증도 조회 화면에서 사용하는 스크립트
  9. *
  10. ***************************************************************************************************/
  11. /*********************************************************************************************************************************************
  12. * + description +
  13. * 20080902
  14. * 왼편의 화면의 트리를 클릭했을때 보여지는 오른쪽 그리드들은 각각 switch case별로 별도의 화면으로 분리되어있다.
  15. * 중증도및 위험사정에서 기록한 내역들을 조회하는 화면이며,
  16. * 중증기록화면에서 입력하는 중증도기록, 낙상기록, 욕창기록이 따로 작성되는 것과 마찬가지로
  17. * 본 조회화면도 중증도(중환자실, 일반병동), 낙상(성인, 아동), 욕창별로 별도의 화면에서 조회기능을 구현한다.
  18. * 각 상세분류화면의 경우 중환자실, 일반병동, 낙상성인, 낙상소아, 욕창 5가지가 있는데,
  19. * 기록화면에서 항목별 필수입력+single체크 로 작성되는 일반병동, 욕창은 조회시 그리드항목타이틀과 점수를 각각 따로 조회하고,
  20. * 기록화면에서 항목별 필수입력이아니고 multi체크로 작성되는 중환자실, 낙상성인, 낙상소아 는 조회시 그리드의 항목은 fix되어있으며, sql이 client에서 구현된다.
  21. * == 추후에는 욕창, 일반병동 상세분류도 같은형식으로 수정하여 패턴을 똑같이 맞추는게 관리가 편할듯...
  22. *********************************************************************************************************************************************/
  23. /**
  24. * @group :
  25. * @ver : 2008-06-16
  26. * @by : dhkim
  27. * @------------------------------------------------------------------------------------------------
  28. * @type : function
  29. * @access : public
  30. * @param :
  31. * @return :
  32. * @desc : 화면을 초기화한다.
  33. * @------------------------------------------------------------------------------------------------
  34. */
  35. function fInit(){
  36. //중증도 기록에서 사용하는 부서코드 조회_20090416_SMY추가(EMR_MNWMCODE)
  37. submit("TRMNW04001");
  38. trv_seridiagflag.select(1); //트리뷰 디폴트 선택
  39. var trv_idx = trv_seridiagflag.focusIndex;
  40. if(trv_idx == null || trv_idx == -1){
  41. trv_idx = 1;//default
  42. }
  43. //조회조건을 초기화
  44. model.makeValue('/root/cond/schfromdd', getCurrentDate());
  45. model.makeValue('/root/cond/schtodd', getCurrentDate());
  46. model.makeValue('/root/cond/infromdd', '');
  47. model.makeValue('/root/cond/intodd', '');
  48. model.makeValue('/root/cond/schtomon', getCurrentDate().substring(0, 6));
  49. model.makeValue('/root/cond/schtoyear', getCurrentDate().substring(0, 4));
  50. model.makeValue('/root/cond/schcode', model.getValue("/root/cond/grupcd"));
  51. model.makeValue('/root/cond/wardflag','1');
  52. //병동 조회
  53. fGetWard();
  54. addComboItem("cmb_bspntcd", "- 전체 -", "", "above" );
  55. //20080820 세션의 부서코드를 디폴트로 세팅
  56. var wardcd = getUserInfo("dutplcecd");
  57. model.makeValue('/root/cond/wardcd', wardcd);//로그인한 사원의부서 default
  58. //20080820 주석처리
  59. //var wardcd = '3060000000';
  60. //model.makeValue('/root/cond/wardcd', wardcd);//중환자실 default
  61. //분류조회
  62. //fGetClsFlag(wardcd, model.getValue('/root/hidden/treeitem/serdiaglist['+ trv_idx + ']/recflag')); //20090319_SMY_주석처리
  63. model.refresh();
  64. //addComboItem("cmb_wardcd", "전체", "1000000000", "above");
  65. //addComboItem("cmb_bspntcd", "전체", "", "above");
  66. //중증도 조회
  67. //fSearch();
  68. }
  69. /**
  70. * @group :
  71. * @ver : 2008-06-16
  72. * @by : dhkim
  73. * @------------------------------------------------------------------------------------------------
  74. * @type : function
  75. * @access : public
  76. * @param :
  77. * @return :
  78. * @desc : 병동 분류별, 트리뷰(중증도, 낙상, 욕창)구분별 분류군 코드 조회
  79. * [병동코드정보wardcd]
  80. * 3060000000 - 중환자실
  81. * 3060100000 - 내과중환자실
  82. * 3060200000 - 외과중환자실
  83. * 3060300000 - 신경외과중환자실
  84. * 3060400000 - 순환기계중환자실
  85. * 3060600000 - 2층중환자실
  86. * 2110201000 - 신생아중환자실
  87. * 3050122000 - 10층동병동
  88. * [분류군정보recflag]
  89. * 1 - 중증도
  90. * 2 - 낙상
  91. * 3 - 욕창
  92. * clsflag(recflag=1)(1:일반병동, 2:신생아ICU, 3: 혈액투석, 4:중환자실, 5: 정신과병동)
  93. * (recflag=2)(1:아동, 2: 성인)
  94. * (recflag=3)(1:욕창)
  95. * @------------------------------------------------------------------------------------------------
  96. */
  97. function fGetClsFlag(wardcd, recflag){ //사용하지 않음_20090319_SMY확인_호출하는 부분은 다 주석처리함
  98. var clsflag;//분류군구분
  99. //병동분류별
  100. if((wardcd == null || wardcd == '') && (recflag == null || recflag == '')){
  101. cmb_bspntcd.attribute('visibility') = 'hidden';
  102. return;
  103. }else{
  104. cmb_bspntcd.attribute('visibility') = 'visible';
  105. }
  106. //1. tree view 가 중증도일때
  107. // wardcd가 중환자실, 내과중환자실, 외과중환자실, 신경외과중환자실, 순환기계중환자실 이면 중환자실의 분류군 load
  108. // wardcd가 신생아중환자실 이면 신생아ICU 분류군 load
  109. // wardcd가 10층동병동 이면 정신과병동 분류군 load
  110. // wardcd가 그 나머지일때는 일반병동 분류군 load
  111. //2. tree view 가 낙상성인일때 낙상성인 분류군 load
  112. //3. tree view 가 낙상소아일때 낙상소아 분류군 load
  113. //4. tree view 가 욕창일때 욕창 분류군 load
  114. if(recflag == '1'){
  115. if(wardcd == '3060000000' || wardcd == '3060100000' || wardcd == '3060200000' || wardcd == '3060300000' || wardcd == '3060400000'|| wardcd == '3060600000'){
  116. clsflag = '4';//중환자실
  117. }else if(wardcd == '3050122000'){
  118. clsflag = '5';//정신과병동
  119. }else if(wardcd == '2110201000'){
  120. clsflag = '2';//신생아ICU
  121. }else{
  122. clsflag = '1';//일반병동
  123. }
  124. }else if(recflag == '2'){
  125. clsflag = '1';//낙상소아
  126. }else if(recflag == '2'){
  127. clsflag = '2';//낙상성인
  128. }else if(recflag == '3'){
  129. clsflag = '1';//욕창
  130. }
  131. if(!submit('TRMNR07801')){ //return null
  132. messageBox('분류군조회를', 'E004');
  133. return;
  134. }
  135. }
  136. /**
  137. * @group :
  138. * @ver : 2008-06-16
  139. * @by : dhkim
  140. * @------------------------------------------------------------------------------------------------
  141. * @type : function
  142. * @access : public
  143. * @param :
  144. * @return :
  145. * @desc : 전체 병동 검색
  146. * @------------------------------------------------------------------------------------------------
  147. */
  148. function fGetWard(){
  149. model.removeNodeset("/root/send");
  150. model.makeValue("/root/send/wardflag",model.getValue("/root/cond/wardflag"));
  151. submit("TRMNW04003"); //병동 조회
  152. addComboItem("cmb_wardcd", "- 전체 -", "", "above" );
  153. }
  154. /**
  155. * @group :
  156. * @ver : 2008-06-16
  157. * @by : dhkim
  158. * @------------------------------------------------------------------------------------------------
  159. * @type : function
  160. * @access : public
  161. * @param :
  162. * @return :
  163. * @desc : 트리뷰의 인덱스가 변경될 때마다 화면에 보여지는 그룹을 트리뷰의 인덱스에 맞게 변경한다.
  164. * @------------------------------------------------------------------------------------------------
  165. */
  166. function fShowSelectedIndexGrup(idx){
  167. if(model.getValue("/root/cond/wardflag") == "3") {//혈액투석선택
  168. cmb_wardcd2.visible=false;
  169. if(idx == "9" ||idx == "10" ){
  170. messageBox("부서가 혈액투석인 경우는 조회", "E001");
  171. return;
  172. }else if(idx == "12" ||idx == "13" ){
  173. messageBox("부서가 혈액투석인 경우는 조회", "E001");
  174. return;
  175. }else if(idx == "15"||idx == "16" ){
  176. messageBox("부서가 혈액투석인 경우는 조회", "E001");
  177. return;
  178. }
  179. }else {
  180. cmb_wardcd2.visible=true;
  181. }
  182. if(idx == null || idx == 0){
  183. idx = 2;//default
  184. }
  185. if(trv_seridiagflag.focusIndex == "4") {
  186. if(model.getValue("/root/cond/wardflag") == "1" || model.getValue("/root/cond/wardflag") == "3") {
  187. var trv_idx = idx+1;
  188. var hngnm = model.getValue('root/hidden/treeitem/serdiaglist['+ trv_idx + ']/hngnm');
  189. var grupcd = model.getValue('root/hidden/treeitem/serdiaglist['+ trv_idx + ']/grupcd');
  190. model.toggle("case" + grupcd);
  191. var recflag = model.getValue('root/hidden/treeitem/serdiaglist['+ trv_idx + ']/recflag');
  192. var clsflag = model.getValue('root/hidden/treeitem/serdiaglist['+ trv_idx + ']/clsflag');
  193. var sqlflag = model.getValue('root/hidden/treeitem/serdiaglist['+ trv_idx + ']/sqlflag');
  194. } else {
  195. var hngnm = "중증도 통계-기간별(중환자)";
  196. var grupcd = "15";
  197. model.toggle("case" + grupcd);
  198. var recflag = "1";
  199. var clsflag = "'2','4'";
  200. var sqlflag = '9';
  201. }
  202. }
  203. else{
  204. var trv_idx = idx+1;
  205. var hngnm = model.getValue('root/hidden/treeitem/serdiaglist['+ trv_idx + ']/hngnm');
  206. var grupcd = model.getValue('root/hidden/treeitem/serdiaglist['+ trv_idx + ']/grupcd');
  207. model.toggle("case" + grupcd);
  208. var recflag = model.getValue('root/hidden/treeitem/serdiaglist['+ trv_idx + ']/recflag');
  209. var clsflag = model.getValue('root/hidden/treeitem/serdiaglist['+ trv_idx + ']/clsflag');
  210. var sqlflag = model.getValue('root/hidden/treeitem/serdiaglist['+ trv_idx + ']/sqlflag');
  211. }
  212. if(model.getValue("/root/cond/wardflag") =="3") {
  213. var clsflag = "3";
  214. }
  215. if(sqlflag == "7" || sqlflag =="8") { //중증도 월별, 년별.
  216. grp_sea.visible = false;
  217. grp_sea2.visible = true;
  218. if(grupcd == "13") { //중증도 월별
  219. ipt_schtomon.visible = true;
  220. ipt_schtoyear.visible = false;
  221. } else if(grupcd == "14") { //중증도 년별
  222. ipt_schtomon.visible = false;
  223. ipt_schtoyear.visible = true;
  224. }
  225. } else {
  226. grp_sea.visible = true;
  227. grp_sea2.visible = false;
  228. }
  229. model.makeValue("/root/cond/recflag", recflag);
  230. model.makeValue("/root/cond/clsflag", clsflag);
  231. model.makeValue("/root/cond/sqlflag", sqlflag);
  232. fSearch();
  233. }
  234. function fSaveExcel() {
  235. var idx = trv_seridiagflag.focusIndex;
  236. if(trv_seridiagflag.focusIndex == null || trv_seridiagflag.focusIndex == 0 ){
  237. idx = 3;//default
  238. }
  239. if(trv_seridiagflag.focusIndex == -1) {
  240. idx = 2;
  241. }
  242. var trv_idx = trv_seridiagflag.focusIndex;
  243. if(trv_idx == "-1") {
  244. trv_idx =1;
  245. }
  246. // var grupcd = model.getValue('/root/hidden/treeitem/serdiaglist[' + trv_idx + ']/grupcd');
  247. var grupcd = 0;
  248. if(model.getValue("/root/cond/wardflag") == "1") {//병동선택
  249. if(trv_idx == "1") {
  250. grupcd = "1";
  251. }else if(trv_idx == "2") {
  252. grupcd = "5";
  253. }else if(trv_idx == "3") {
  254. grupcd = "6";
  255. }else if(trv_idx == "4") {
  256. grupcd = "12";
  257. }else if(trv_idx == "5") {
  258. grupcd = "13";
  259. }else if(trv_idx == "6") {
  260. grupcd = "14";
  261. }else if(trv_idx == "9") {
  262. grupcd = "7";
  263. }else if(trv_idx == "10") {
  264. grupcd = "8";
  265. }else if(trv_idx == "12") {
  266. grupcd = "7";
  267. }else if(trv_idx == "13") {
  268. grupcd = "9";
  269. }else if(trv_idx == "15") {
  270. grupcd = "10";
  271. }else if(trv_idx == "16") {
  272. grupcd = "11";
  273. }
  274. }else if(model.getValue("/root/cond/wardflag") == '2') {//중환자실선택
  275. if(trv_idx == "1") {
  276. grupcd = "1";
  277. }else if(trv_idx == "2") {
  278. grupcd = "4";
  279. }else if(trv_idx == "3") {
  280. return;
  281. }else if(trv_idx == "4") {
  282. grupcd = "12";
  283. }else if(trv_idx == "5") {
  284. grupcd = "13";
  285. }else if(trv_idx == "6") {
  286. grupcd = "14";
  287. }else if(trv_idx == "9") {
  288. grupcd = "7";
  289. }else if(trv_idx == "10") {
  290. grupcd = "8";
  291. }else if(trv_idx == "12") {
  292. grupcd = "7";
  293. }else if(trv_idx == "13") {
  294. grupcd = "9";
  295. }else if(trv_idx == "15") {
  296. grupcd = "10";
  297. }else if(trv_idx == "16") {
  298. grupcd = "11";
  299. }
  300. } else if(model.getValue("/root/cond/wardflag") == '3') {//혈액투석
  301. if(trv_idx == "1") {
  302. grupcd = "17";
  303. }else if(trv_idx == "2") {
  304. grupcd = "16";
  305. }else if(trv_idx == "3") {
  306. return;
  307. }else if(trv_idx == "4") {
  308. grupcd = "12";
  309. }else if(trv_idx == "5") {
  310. grupcd = "13";
  311. }else if(trv_idx == "6") {
  312. grupcd = "14";
  313. }else if(trv_idx == "9") {
  314. return;
  315. }else if(trv_idx == "10") {
  316. return;
  317. }else if(trv_idx == "12") {
  318. return;
  319. }else if(trv_idx == "13") {
  320. return;
  321. }else if(trv_idx == "15") {
  322. return;
  323. }else if(trv_idx == "16") {
  324. return;
  325. }
  326. }
  327. var hngnm = model.getValue('/root/hidden/treeitem/serdiaglist[' + (trv_idx+1) + ']/hngnm');
  328. hngnm=hngnm.setReplaceWord("/","_");
  329. var grdName;
  330. if(grupcd == "1") {
  331. grdName="grd_seridiag";
  332. }else if(grupcd == "2") {
  333. grdName = "grd_seriindsch";
  334. }else if(grupcd == "3") {
  335. grdName = "grd_seritotal";
  336. }else if(grupcd == "4") {
  337. grdName = "grd_seriroom";
  338. }else if(grupcd == "5") {
  339. grdName = "grd_ward";
  340. }else if(grupcd == "6") {
  341. grdName = "grd_basecare";
  342. }else if(grupcd == "7") {
  343. grdName = "grd_fallseridiag";
  344. }else if(grupcd == "8") {
  345. grdName = "grd_falladult";
  346. }else if(grupcd == "9") {
  347. grdName = "grd_fallchild";
  348. }else if(grupcd == "10") {
  349. grdName = "grd_bedsrseridiag";
  350. }else if(grupcd == "11") {
  351. grdName = "grd_bedsr";
  352. }else if(grupcd == "12") {
  353. grdName = "grd_totalwardterm";
  354. }else if(grupcd == "13") {
  355. grdName = "grd_totalwardmon";
  356. }else if(grupcd == "14") {
  357. grdName = "grd_totalwardyear";
  358. }else if(grupcd == "15") {
  359. grdName = "grd_totalserterm";
  360. }else if(grupcd == "16") {
  361. grdName = "grd_bloodroom1";
  362. }else if(grupcd == "17") {
  363. grdName = "grd_dmpg1";
  364. }
  365. var grd = document.controls.item(grdName);
  366. var fileName = window.fileDialog("save", ",", false, hngnm, "xls", "All Files (*.*)|*.*|Excel Files(*.xls)|*.xls");
  367. if (fileName != "") {
  368. grd.saveExcel(fileName, "SheetName", true, true, "", "", false);
  369. }
  370. }
  371. /**
  372. * @group :
  373. * @ver : 2008-06-16
  374. * @by : dhkim
  375. * @------------------------------------------------------------------------------------------------
  376. * @type : function
  377. * @access : public
  378. * @param :
  379. * @return :
  380. * @desc : 중증도 조회
  381. * @------------------------------------------------------------------------------------------------
  382. */
  383. function fSearch(){
  384. //중증도 기록에서 사용하는 부서코드 조회_20090416_SMY추가
  385. var icuwardcd = "";
  386. var wardcd = "";
  387. var grupcd = "";
  388. var recflag = "";
  389. var clsflag = "";
  390. var sqlflag = "";
  391. var trv_idx = trv_seridiagflag.focusIndex;
  392. if(trv_seridiagflag.focusIndex == null || trv_seridiagflag.focusIndex == -1){
  393. trv_idx = 1;//default
  394. }
  395. for(i = 1; i <= getNodesetCount("/root/init/icucdgrup/icucdgruplist"); i++){
  396. wardcd = model.getValue("/root/init/icucdgrup/icucdgruplist[" + i + "]/wardcd");
  397. if( model.getValue("/root/init/icucdgrup/icucdgruplist[" + i + "]/clsflag") == '2'
  398. || model.getValue("/root/init/icucdgrup/icucdgruplist[" + i + "]/clsflag") == '4'
  399. ){//중환자실
  400. if(icuwardcd == ""){
  401. icuwardcd = "'" + wardcd + "'";
  402. }else{
  403. icuwardcd += "," + "'" + wardcd + "'";
  404. }
  405. }
  406. }
  407. /*
  408. sqlflag값_20090319_SMY주석추가
  409. 0 : 2depth 타이틀
  410. 1 : 환자별 중증도, 환자별 낙상, 환자별 욕창
  411. 3 : 중환자실 입실/퇴실
  412. 4 : 중증도통계
  413. 2b: 중환자 상세분류, 환자별 상세분류, 낙상 상세분류, 욕창 상세분류
  414. 5 : 기본간호
  415. 6 : 중증도 통계 - 기간별
  416. 7 : 중증도 통계 - 월간
  417. 8 : 중증도 통계 - 년간
  418. 9 : 중증도 통계 - 기간별(중환자)
  419. */
  420. if(model.getValue("/root/cond/wardflag") == "1") {//병동선택
  421. if(trv_idx == "1") {
  422. model.makeValue("/root/cond/grupcd", "1");
  423. model.makeValue("/root/cond/recflag", "1");
  424. model.makeValue("/root/cond/clsflag", "'1','5'");
  425. model.makeValue("/root/cond/sqlflag", "1");
  426. grupcd = "1";
  427. recflag = "1";
  428. clsflag = "'1','5'";
  429. sqlflag = "1";
  430. model.toggle("case" + grupcd);
  431. }else if(trv_idx == "2") {
  432. if(model.getValue("/root/cond/wardcd") == "") {
  433. // messageBox("부서를 선택한 경우만 조회가능합니다.", "I");
  434. // return;
  435. }
  436. model.makeValue("/root/cond/grupcd", "5");
  437. model.makeValue("/root/cond/recflag", "1");
  438. model.makeValue("/root/cond/clsflag", "'1','5'");
  439. model.makeValue("/root/cond/sqlflag", "2b");
  440. grupcd = "5";
  441. recflag = "1";
  442. clsflag = "'1','5'";
  443. sqlflag = "2b";
  444. model.toggle("case" + grupcd);
  445. }else if(trv_idx == "3") {
  446. model.makeValue("/root/cond/grupcd", "6");
  447. model.makeValue("/root/cond/recflag", "1");
  448. model.makeValue("/root/cond/clsflag", "'1','5'");
  449. model.makeValue("/root/cond/sqlflag", "5");
  450. grupcd = "6";
  451. recflag = "1";
  452. clsflag = "'1','5'";
  453. sqlflag = "5";
  454. model.toggle("case" + grupcd);
  455. }else {
  456. if(trv_idx == "4"){
  457. grupcd ="12";
  458. model.makeValue("/root/cond/clsflag", "'1','5'");
  459. }else if(trv_idx == "5" ||trv_idx == "6"){
  460. model.makeValue("/root/cond/clsflag", "'1','5'");
  461. }else if(trv_idx == "9" ||trv_idx == "10" ){
  462. model.makeValue("/root/cond/clsflag", "'2'");
  463. }else if(trv_idx == "12" ||trv_idx == "13" ){
  464. model.makeValue("/root/cond/clsflag", "'1'");
  465. }else if(trv_idx == "15"||trv_idx == "16" ){
  466. model.makeValue("/root/cond/clsflag", "'1'");
  467. }
  468. model.setValue("/root/cond/infromdd","");
  469. model.setValue("/root/cond/intodd","");
  470. model.toggle("case" + grupcd);
  471. }
  472. }else if(model.getValue("/root/cond/wardflag") == '2') {//중환자실선택
  473. if(trv_idx == "1") {
  474. model.makeValue("/root/cond/grupcd", "1");
  475. model.makeValue("/root/cond/recflag", "1");
  476. model.makeValue("/root/cond/clsflag", "'2','4'");
  477. model.makeValue("/root/cond/sqlflag", "1");
  478. grupcd = "1";
  479. recflag = "1";
  480. clsflag = "'2','4'";
  481. sqlflag = "1";
  482. model.toggle("case" + grupcd);
  483. }else if(trv_idx == "2") {
  484. model.makeValue("/root/cond/grupcd", "4");
  485. model.makeValue("/root/cond/recflag", "1");
  486. model.makeValue("/root/cond/clsflag", "'2','4'");
  487. model.makeValue("/root/cond/sqlflag", "2b");
  488. grupcd = "4";
  489. recflag = "1";
  490. clsflag = "'2','4'";
  491. sqlflag = "2b";
  492. model.toggle("case" + grupcd);
  493. }else if(trv_idx == "3") {
  494. messageBox("부서가 병동인 경우만 조회가능합니다.", "I");
  495. return;
  496. /* --aaa
  497. model.makeValue("/root/cond/grupcd", "6");
  498. model.makeValue("/root/cond/recflag", "1");
  499. model.makeValue("/root/cond/clsflag", "'2','4'");
  500. model.makeValue("/root/cond/sqlflag", "5");
  501. grupcd = "6";
  502. recflag = "1";
  503. clsflag = "'2','4'";
  504. sqlflag = "5";
  505. model.toggle("case" + grupcd);
  506. */
  507. }else {
  508. if(trv_idx == "4"){
  509. grupcd = "15";
  510. model.makeValue("/root/cond/clsflag", "'2','4'");
  511. }else if(trv_idx == "5" ||trv_idx == "6"){
  512. model.makeValue("/root/cond/clsflag", "'2','4'");
  513. }else if(trv_idx == "9" ||trv_idx == "10" ){
  514. model.makeValue("/root/cond/clsflag", "'2'");
  515. }else if(trv_idx == "12" ||trv_idx == "13" ){
  516. model.makeValue("/root/cond/clsflag", "'1'");
  517. }else if(trv_idx == "15"||trv_idx == "16" ){
  518. model.makeValue("/root/cond/clsflag", "'1'");
  519. }
  520. model.setValue("/root/cond/infromdd","");
  521. model.setValue("/root/cond/intodd","");
  522. model.toggle("case" + grupcd);
  523. }
  524. } else if(model.getValue("/root/cond/wardflag") == '3') {//혈액투석
  525. if(trv_idx == "1") {
  526. model.makeValue("/root/cond/grupcd", "17");
  527. model.makeValue("/root/cond/recflag", "1");
  528. model.makeValue("/root/cond/clsflag", "'3'");
  529. model.makeValue("/root/cond/sqlflag", "1");
  530. grupcd = "17";
  531. sqlflag = "1";
  532. recflag = "1";
  533. clsflag = "'3'";
  534. model.toggle("case" + grupcd);
  535. }else if(trv_idx == "2") {
  536. model.makeValue("/root/cond/grupcd", "16");
  537. model.makeValue("/root/cond/recflag", "1");
  538. model.makeValue("/root/cond/clsflag", "'3'");
  539. model.makeValue("/root/cond/sqlflag", "2b");
  540. grupcd = "16";
  541. sqlflag = "2b";
  542. recflag = "1";
  543. clsflag = "'3'";
  544. model.toggle("case" + grupcd);
  545. }else if(trv_idx == "3") {
  546. messageBox("부서가 병동인 경우만 조회가능합니다.", "I");
  547. //messageBox("부서가 병동,중환자실인 경우만 조회가능합니다.", "I");--aaa
  548. return;
  549. }else {
  550. if(trv_idx == "4"){
  551. grupcd ="12";
  552. model.makeValue("/root/cond/clsflag", "'3'");
  553. }else if(trv_idx == "5" ||trv_idx == "6"){
  554. model.makeValue("/root/cond/clsflag", "'3'");
  555. }
  556. model.setValue("/root/cond/infromdd","");
  557. model.setValue("/root/cond/intodd","");
  558. model.toggle("case" + grupcd);
  559. }
  560. }
  561. model.removenode('/root/send');
  562. model.makeValue('/root/send/schfromdd', model.getValue('/root/cond/schfromdd'));
  563. model.makeValue('/root/send/schtodd', model.getValue('/root/cond/schtodd'));
  564. model.makeValue('/root/send/wardcd', model.getValue('/root/cond/wardcd'));
  565. model.makeValue('/root/send/icuwardcd', icuwardcd); //20090416_SMY추가
  566. model.makeValue('/root/send/recflag', model.getValue('/root/cond/recflag'));
  567. model.makeValue('/root/send/clsflag', model.getValue('/root/cond/clsflag'));
  568. model.makeValue('/root/send/infromdd', model.getValue('/root/cond/infromdd'));
  569. model.makeValue('/root/send/intodd', model.getValue('/root/cond/intodd'));
  570. model.makeValue('/root/send/dschflag', model.getValue('/root/cond/dschflag'));
  571. model.makeValue('/root/send/schcode', '1');
  572. model.makeValue('/root/send/bspntcd', model.getValue('/root/cond/bspntcd'));
  573. model.makeValue('/root/send/sqlflag', model.getValue('/root/cond/sqlflag'));
  574. model.makeValue('/root/send/wardflag', model.getValue('/root/cond/wardflag'));
  575. if(trv_idx != "1" && trv_idx != "2" && trv_idx != "3" ) {
  576. var recflag = model.getValue('root/hidden/treeitem/serdiaglist['+ (trv_idx+1) + ']/recflag');
  577. var clsflag = model.getValue('root/hidden/treeitem/serdiaglist['+ (trv_idx+1) + ']/clsflag');
  578. var sqlflag = model.getValue('/root/hidden/treeitem/serdiaglist[' + (trv_idx+1) + ']/sqlflag');
  579. }
  580. if(trv_seridiagflag.focusIndex == "4") { //중증도 통계-기간별 선택시(중환자)
  581. if(model.getValue("/root/cond/wardflag") == "1" ||model.getValue("/root/cond/wardflag") == "3") {
  582. recflag = "1";
  583. sqlflag = "6";
  584. model.makeValue('/root/send/recflag', "1");
  585. model.makeValue('/root/send/sqlflag', "6");
  586. }
  587. if(model.getValue("/root/cond/wardflag") == "2" ) {
  588. var grupcd = "15";
  589. var recflag = "1";
  590. var clsflag = "'2','4'";
  591. var sqlflag = '9';
  592. }
  593. }
  594. if(sqlflag == "7" || sqlflag =="8") { //중증도 월별, 년별.
  595. grp_sea.visible = false;
  596. grp_sea2.visible = true;
  597. if(grupcd == "13") { //중증도 월별
  598. ipt_schtomon.visible = true;
  599. ipt_schtoyear.visible = false;
  600. } else if(grupcd == "14") { //중증도 년별
  601. ipt_schtomon.visible = false;
  602. ipt_schtoyear.visible = true;
  603. }
  604. } else {
  605. grp_sea.visible = true;
  606. grp_sea2.visible = false;
  607. }
  608. if(sqlflag == "3") {
  609. model.makeValue('/root/send/rdoflag', model.getValue('/root/cond/rdoflag'));
  610. } else if(sqlflag == "7") {
  611. model.makeValue('/root/send/schtodd', model.getValue("/root/cond/schtomon"));
  612. if(model.getValue("/root/cond/wardflag") != "3" ) {
  613. if(model.getValue("/root/cond/schtomon") == "" && model.getValue("/root/cond/wardcd") == "" ) {
  614. messageBox("병동과 조회월을 선택하여주세요.", "E");
  615. } else if(model.getValue("/root/cond/schtomon") == "" && model.getValue("/root/cond/wardcd") != "") {
  616. messageBox("병동과 조회월을 선택하여주세요.", "E");
  617. } else if(model.getValue("/root/cond/schtomon") != "" && model.getValue("/root/cond/wardcd") == "") {
  618. // messageBox("병동을 선택하여 주세요.", "E");
  619. } else if(model.getValue("/root/cond/schtomon") == "" && model.getValue("/root/cond/wardcd") != "") {
  620. // messageBox("조회일자를 선택여주세요.", "E");
  621. }
  622. }
  623. } else if(sqlflag == "8") {
  624. model.makeValue('/root/send/schtodd', model.getValue("/root/cond/schtoyear"));
  625. model.refresh();
  626. }
  627. var grdNm;
  628. var grdNm2;
  629. if(sqlflag == "7" || sqlflag =="8") {
  630. //중증도 통계(월별, 년별)
  631. if(!submit('TRMNR07803')){ //sfdr.wardcd = #wardcd#
  632. messageBox('중증도 통계(월별, 년별) 조회를', 'E009');
  633. return false;
  634. } else {
  635. if(sqlflag == "7") {
  636. grdNm = "grd_totalwardmon";
  637. } else {
  638. grdNm = "grd_totalwardyear";
  639. }
  640. totalWardTerm(grdNm, sqlflag);
  641. }
  642. }else if(sqlflag == "9") {
  643. //중증도 통계(기간별 중환자)
  644. if(!submit('TRMNR07804')) { //and sfdr.wardcd in ('3060000000', '3060100000', '3060200000', '3060300000', '3060400000', '3060600000', #wardcd#)
  645. messageBox('중증도 통계(기간별 중환자) 조회를', 'E009');
  646. return false;
  647. }
  648. }else {
  649. var rdoflag = model.getValue('/root/cond/rdoflag');
  650. if(rdoflag == null || rdoflag == ''){
  651. rdoflag = 'A';
  652. }
  653. model.setValue('/root/cond/rdoflag', rdoflag);
  654. model.refresh();
  655. model.makeValue('/root/send/wardflag', model.getValue('/root/cond/wardflag'));
  656. if(!submit('TRMNR07802')){
  657. messageBox('중증도 조회를', 'E009');
  658. return false;
  659. } else {
  660. /**
  661. * 20080902
  662. * sqlflag
  663. * 1:환자별중증도 //and inpt.wardcd = #wardcd# -- 20081005 dhkim sfrd에서 inpt로 수정
  664. * 2a:상세분류( 사용안함) 2b:상세분류(일반병동,욕창, 중환자, 낙상성인, 낙상아동) -- 20080902 변경 //and inpt.wardcd = #wardcd# -- 20081005 dhkim sfrd에서 inpt로 수정
  665. * 3:중환자입실/퇴실 //and inpt.wardcd IN ('3060000000', '3060100000', '3060200000', '3060300000', '3060400000', '3060600000', #wardcd#)
  666. * 4:중증도통계 5:병동기본간호 6:중증도통계기간별(병동) //and inpt.wardcd = #wardcd# -- 20081006 sfrd를 inpt로 수정
  667. * 7:중증도통계 월간 8:중증도통계 년간 9:중증도 통계 기간별중환자
  668. */
  669. //중증도상세분류(사용안함 ---- 아이템을 그리드내에서 동적으로 변경)조회 --20080902 변경
  670. if(sqlflag == "2a") {
  671. seridiagdetl(grdNm);//중증도 종류에 따라 타이틀을 유동적으로 변경한다.
  672. setTotalGridInfo(grdNm2);//상세정보중. 분류군과 분류군에 따른 집계를 보여주기위한 곳.
  673. }
  674. //중증도상세분류(일반병동,욕창, 중환자실, 낙상성인, 낙상소아 ----- 아이템을 그리드헤더에 fix)조회 --20080902 변경
  675. else if(sqlflag == "2b") {
  676. //중환자실
  677. if(recflag == "1" && clsflag == "'2','4'") {
  678. grdNm = "grd_seriroom";
  679. grdNm2 = "grd_totalseriroom";
  680. }
  681. //병동
  682. if(recflag == "1" && clsflag == "'1','5'") {
  683. grdNm = "grd_ward";
  684. grdNm2 = "grd_totalward";
  685. }
  686. //혈액투석
  687. if(recflag == "" && clsflag == "") {
  688. grdNm = "grd_ward";
  689. grdNm2 = "grd_totalward";
  690. }
  691. //혈액투석
  692. if(recflag == "1" && clsflag == "'3'") {
  693. grdNm = "grd_bloodroom1";
  694. grdNm2 = "grd_bloodroom";
  695. }
  696. //낙상성인
  697. if(recflag =="2" && clsflag == "2") {
  698. grdNm = "grd_falladult";
  699. grdNm2 = "grd_totalfalladult";
  700. }
  701. //낙상소아
  702. if(recflag == "2" && clsflag == "1") {
  703. grdNm = "grd_fallchild";
  704. grdNm2 = "grd_totalfallchild";
  705. }
  706. //욕창
  707. if(recflag == "3" && clsflag == "1") {
  708. grdNm = "grd_bedsr";
  709. grdNm2 = "grd_totalbedsr";
  710. }
  711. setTotalGridInfo(grdNm2);//상세정보중. 분류군과 분류군에 따른 집계를 보여주기위한 곳.
  712. if(recflag == "1" && clsflag == "'2','4'") { //중증도중환자상세분류일때 병실이 신생아중환자실일경우
  713. for(var i=1;i<=(grd_seriroom.rows-1);i++) {
  714. if(model.getValue("/root/main/gridgrup/recpntlist["+i+"]/wardnm") == "신생아중환자실"
  715. ||model.getValue("/root/main/gridgrup/recpntlist["+i+"]/wardnm") == "신생아중환자실Unit") {
  716. model.setValue("/root/main/gridgrup/recpntlist["+i+"]/timsval11",model.getValue("/root/main/gridgrup/recpntlist["+i+"]/timsval01"));
  717. model.setValue("/root/main/gridgrup/recpntlist["+i+"]/timsval12",model.getValue("/root/main/gridgrup/recpntlist["+i+"]/timsval02"));
  718. model.setValue("/root/main/gridgrup/recpntlist["+i+"]/timsval13",model.getValue("/root/main/gridgrup/recpntlist["+i+"]/timsval03"));
  719. model.setValue("/root/main/gridgrup/recpntlist["+i+"]/timsval14",model.getValue("/root/main/gridgrup/recpntlist["+i+"]/timsval04"));
  720. model.setValue("/root/main/gridgrup/recpntlist["+i+"]/timsval15",model.getValue("/root/main/gridgrup/recpntlist["+i+"]/timsval05"));
  721. model.setValue("/root/main/gridgrup/recpntlist["+i+"]/timsval17",model.getValue("/root/main/gridgrup/recpntlist["+i+"]/timsval07"));
  722. model.setValue("/root/main/gridgrup/recpntlist["+i+"]/timsval18",model.getValue("/root/main/gridgrup/recpntlist["+i+"]/timsval08"));
  723. model.setValue("/root/main/gridgrup/recpntlist["+i+"]/timsval19",model.getValue("/root/main/gridgrup/recpntlist["+i+"]/timsval09"));
  724. }
  725. }
  726. }
  727. }
  728. //중증도통계기간별(병동)
  729. else if(sqlflag == "6") {
  730. totalWardTerm("grd_totalwardterm", sqlflag);
  731. model.refresh();
  732. }
  733. //환자별중증도
  734. if(sqlflag == "1") {
  735. if(clsflag =="'3'" && recflag =="1") {
  736. grdNm = "grd_dmpg1";
  737. grdNm2 = "grd_dmpg";
  738. setTotalGridInfo(grdNm2);//상세정보중. 분류군과 분류군에 따른 집계를 보여주기위한 곳.
  739. } else {
  740. grdNm = "grd_seridiag";
  741. grdNm2 = "grd_totalward1";
  742. setTotalGridInfo(grdNm2);//상세정보중. 분류군과 분류군에 따른 집계를 보여주기위한 곳.
  743. }
  744. }
  745. }
  746. }
  747. addComboItem("cmb_bspntcd", "- 전체 -", "", "above" );
  748. }
  749. /**
  750. * @group :
  751. * @ver : 2008-07-10
  752. * @by : dark9258(김병국)
  753. * @------------------------------------------------------------------------------------------------
  754. * @type : function
  755. * @access : public
  756. * @param : 그리드명.
  757. * @return : 없음
  758. * @desc : 중증도 종류에 따라 타이틀을 유동적으로 변경한다.
  759. * @------------------------------------------------------------------------------------------------
  760. */
  761. function seridiagdetl(grdNm) {
  762. var datagrid = document.controls.item(grdNm);
  763. var cnt = Number(model.getValue("/root/main/gridgrup/titlelist/cnt"));
  764. //가져온 분류군들중 title맨처음 항목의 위치를 가져온다.
  765. var fdx = 0;
  766. fdx = Number(datagrid.colRef("hd"));
  767. var hngnm;
  768. var idx = 0;
  769. for(var i = 1; i <= cnt; i++) {
  770. hngnm = model.getValue("/root/main/gridgrup/titlelist[" + i + "]/hngnm");
  771. idx = Number(fdx) + Number(i);
  772. datagrid.colhidden(idx) = false; //조회된 컬럼 갯수만큼 그리드의 필드를 보여줌
  773. datagrid.colwidth(idx) = 80; //조회된 컬럼 갯수만큼 그리드의 필드를 100으로 길이 세팅
  774. //그리드의 타이틀필드값에 상세내역의 타이틀을 세팅
  775. datagrid.valuematrix(0, idx) = hngnm;
  776. datagrid.valuematrix(1, idx) = hngnm;
  777. }
  778. datagrid.colhidden(datagrid.colRef("totpnt")) = false;
  779. datagrid.colhidden(datagrid.colRef("resultcd")) = false;
  780. datagrid.colwidth(datagrid.colRef("totpnt")) = 100;
  781. datagrid.colwidth(datagrid.colRef("resultcd")) = 100;
  782. datagrid.refresh();
  783. }
  784. function setTotalGridInfo(grdNm2) {
  785. var datagrid = document.controls.item(grdNm2);
  786. var grdCnt = model.getValue("/root/main/gridgrup/bspnttotal/cnt");
  787. var bspntnm;
  788. var totalnm;
  789. var bspntnmWidth;
  790. var totalnmWidth;
  791. var width = 0;
  792. for(var i = 0; i < grdCnt; i++) {
  793. //상세정보중. 분류군과 분류군에 따른 집계를 보여주기위한 곳.
  794. bspntnm = model.getValue("/root/main/gridgrup/bspnttotal/bspntnm"+ i);
  795. totalnm = model.getValue("/root/main/gridgrup/bspnttotal/total"+ i);
  796. if(bspntnm.length < 6) {
  797. bspntnmWidth = 70;
  798. } else {
  799. bspntnmWidth = bspntnm.length * 15;
  800. }
  801. if(totalnm.length < 6) {
  802. totalnmWidth = 40;
  803. } else {
  804. totalnmWidth = totalnm.length * 10;
  805. }
  806. datagrid.colHidden(i*2) = false;
  807. datagrid.colWidth(i*2) = bspntnmWidth;
  808. datagrid.colHidden(i*2+1) = false;
  809. datagrid.colWidth(i*2+1) = totalnmWidth;
  810. width += bspntnmWidth + totalnmWidth;
  811. }
  812. datagrid.attribute("width") = width + 2;
  813. datagrid.attribute("left") = (928-width) / 2;
  814. }
  815. /**
  816. * @group :
  817. * @ver : 2008-07-10
  818. * @by : dark9258(김병국)
  819. * @------------------------------------------------------------------------------------------------
  820. * @type : function
  821. * @access : public
  822. * @param : 그리드명.
  823. * @return : 없음
  824. * @desc : 중증도 종류에 따라 타이틀을 유동적으로 변경한다.
  825. * @------------------------------------------------------------------------------------------------
  826. */
  827. function totalWardTerm(datagrid, sqlflag) {
  828. //넘어온 그리드 명을 가진 그리드 객체를 가져옴.
  829. var datagridnm = datagrid;
  830. var datagrid = document.controls.item(datagrid);
  831. var cnt = Number(model.getValue("/root/main/gridgrup/titlewardterm/cnt"));
  832. //가져온 분류군들중 title맨처음 항목의 위치를 가져온다.
  833. var fdx = 0;
  834. if(sqlflag == "6") {
  835. fdx = Number(datagrid.colRef("roomcd")) + 1;
  836. } else if(sqlflag == "9") {
  837. }
  838. else {
  839. fdx = Number(datagrid.colRef("execdd")) + 1;
  840. }
  841. var hngnm;
  842. var idx = 0;
  843. if(model.getValue("/root/cond/wardflag") == "3" && datagridnm == "grd_totalwardterm") { //혈액투석(중증도 통계-기간별)
  844. datagrid.colhidden(datagrid.colRef("roomcd")) = true;
  845. } else {
  846. datagrid.colhidden(datagrid.colRef("roomcd")) = false;
  847. }
  848. for(var i = 0; i < cnt; i++) {
  849. //분류군과 분류군%를 가로로 컬럼으로 셋팅하기 위한곳.
  850. bspntnm = model.getValue("/root/main/gridgrup/titlewardterm/bspntnm" + i); //분류군
  851. bspntpnm = model.getValue("/root/main/gridgrup/titlewardterm/bspntpnm" + i); //분류군%
  852. idx = Number(fdx) + Number(i) * 2;
  853. datagrid.colhidden(idx) = false; //조회된 컬럼 갯수만큼 그리드의 필드를 보여줌
  854. datagrid.colhidden(idx + 1) = false;
  855. datagrid.colwidth(idx) = (bspntnm.length > 5) ? bspntnm.length * 10 : 50; //조회된 컬럼 갯수만큼 그리드의 필드를 100으로 길이 세팅
  856. datagrid.colwidth(idx + 1) = (bspntpnm.length > 5) ? bspntnm.length * 10 : 50; //조회된 컬럼 갯수만큼 그리드의 필드를 100으로 길이 세팅
  857. //그리드의 타이틀필드값에 상세내역의 타이틀을 세팅
  858. datagrid.valuematrix(0, idx) = bspntnm;
  859. datagrid.valuematrix(0, idx + 1) = bspntpnm;
  860. }
  861. datagrid.refresh();
  862. }