SPMRJ00600.js 56 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569
  1. /*
  2. (SMMNW04000_중증도.xrw - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. */
  6. var xRecInfo = '/root/main/recgrup/recinfo';
  7. var xRecMasterPath = "/root/main/recgrup/recgruplist"; //중증도기록마스터
  8. var xRecDetailPath = "/root/main/recdetailgrup/recdetailgruplist"; //중증도상세내역
  9. var xRecPntPath = "/root/main/recpntgrup/recpntlist"; //중증도상세점수
  10. var xRecDetailBKPath = "/root/temp/histgrup/histgruplist"; //중증도상세내역 hidden
  11. var recMCurRow = 0; //기록마스터에 현재 선택된 row index
  12. /*
  13. var icuArr = new Array(4);//중환자실리스트 하드코딩
  14. icuArr[0] = '3060100000';//내과중환자실
  15. icuArr[1] = '3060200000';//외과중환자실
  16. icuArr[2] = '3060300000';//신경외과중환자실
  17. icuArr[3] = '3060400000';//순환기계중환자실
  18. icuArr[4] = '3060600000';//2층중환자실
  19. */
  20. /**
  21. * 20080820
  22. * 분류가 선택될때마다 hidden으로 분류군정보를 로드함(인증저장시 필요함)
  23. */
  24. function fLoadBsPnt(totpnt){
  25. var clsflag = model.getValue('/root/cond/clsflag'); //분류구분
  26. var execdt = opener.model.getValue('/root/main/wardrecinfo/recdd'); //기록일자
  27. model.removenode('/root/send');
  28. model.makeValue('/root/send/bspnt/clsflag', "1");
  29. model.makeValue('/root/send/bspnt/recflag', "9");
  30. model.makeValue('/root/send/bspntgrup/execdt', execdt);
  31. model.makeValue('/root/send/bspntgrup/totpnt', totpnt);
  32. if(submit('TRMNW04014')){
  33. var bspntnm = model.getValue('/root/hidden/bspnt/bspntinfo/bspntnm');
  34. return bspntnm;
  35. }else{
  36. messageBox('중증군조회를', 'E009');
  37. return;
  38. }
  39. }
  40. /**
  41. * @ver : 2008.06.20
  42. * @author : dhkim
  43. * @---------------------------------------------------
  44. * @type : function
  45. * @access : public
  46. * @param :
  47. * @return :
  48. * @desc : 그리드 환자정보 리스트 조회
  49. * @---------------------------------------------------
  50. */
  51. function fSearchPatList(){
  52. var wardcd = opener.model.getValue("/root/temp/cond/list/wardcd");
  53. var roomcd = opener.model.getValue("/root/temp/cond/list/roomcd");
  54. var pid = opener.model.getValue("/root/temp/cond/list/pid");
  55. var clsflag = "1";
  56. var recflag = "9";
  57. //기록마스터리셋
  58. model.removenode(xRecMasterPath);
  59. //상세점수리셋
  60. model.removenode('/root/main/recpntgrup/recpntlist');
  61. //상세내역리셋
  62. model.removenode('/root/main/recdetailgrup/recdetailgruplist');
  63. //2008.08.05 dhkim 추가
  64. //중증도/낙상/욕창 내역 조회(grd_recmaster)
  65. fSearchRecMaster(grd_patinfo.row);
  66. }
  67. /**
  68. * @group :
  69. * @ver : 2007.12.05 신혁춘
  70. * 2008.06.09 dhkim 수정
  71. * @by : dhkim
  72. * @---------------------------------------------------
  73. * @type : function
  74. * @access : public
  75. * @param : curRow - 현재 선택된 그리드의 행 인덱스
  76. * @return :
  77. * @desc : 환자정보 그리드 더블클릭 이벤트 발생시 호출됨
  78. * 중증도 구분에 따른 중증도/낙상/욕창 내역 조회
  79. * [임의 코드 부여 clsflag]
  80. * (1) 중증도 구분
  81. * 1: 일반병동
  82. * 2: 신생아 ICU
  83. * 3: 혈액투석
  84. * 4: 중환자실
  85. * 5: 정신과병동
  86. * 10: 중환자실입실(실제 flag는 4(중환자실)로 넘기나 당일 중환자실 입실환자만 조회
  87. * 11: 중환자실퇴실(실제 flag는 4(중환자실)로 넘기나 당일 중환자실 퇴실환자만 조회
  88. * (2) 낙상위험사정구분
  89. * 7: 소아
  90. * 8: 성인
  91. * (3) 욕창위험사정구분
  92. * 9: 욕창(욕창위험사정구분)
  93. *
  94. * *2008.08.05 dhkim 추가
  95. * 해당환자의 입원일자 이전으로 수행일자를 기록하려고 할때에는 blocking처리
  96. * @---------------------------------------------------
  97. */
  98. function fSearchRecMaster(curRow){
  99. //혈액투석의 경우 입원환자 더블클릭 할때에 조회조건에 기본 조회값을 세팅해야함.
  100. //혈액투석의 경우 외래환자 더블클릭은 조회조건 비활성화
  101. var clsflag = "1";//분류구분
  102. var recflag = "9";//기록구분
  103. // var ioflag = model.getValue('/root/main/paminfo/pamlist/ioflag'); //외래/입원구분
  104. // var pid = model.getValue('/root/main/paminfo/pamlist/pid'); //등록번호
  105. // var indd = model.getValue('/root/main/paminfo/pamlist/indd'); //입원일자
  106. // var histstat = model.getValue('/root/main/paminfo/pamlist/histstat'); //이력상태
  107. // var cretno = model.getValue('/root/main/paminfo/pamlist/cretno'); //생성번호
  108. // var seqno = model.getValue('/root/main/paminfo/pamlist/seqno'); //이력번호
  109. // var hngnm = model.getValue('/root/main/paminfo/pamlist/hngnm'); //환자명
  110. var ioflag = opener.model.getValue("/root/temp/cond/list/ioflag"); //외래/입원구분
  111. var pid = opener.model.getValue("/root/temp/cond/list/pid"); //등록번호
  112. var indd = opener.model.getValue("/root/temp/cond/list/indd"); //입원일자
  113. var histstat = opener.model.getValue("/root/temp/cond/list/histstat"); //이력상태
  114. var cretno = opener.model.getValue("/root/temp/cond/list/cretno"); //생성번호
  115. var seqno = opener.model.getValue("/root/temp/cond/list/seqno"); //이력번호
  116. var hngnm = opener.model.getValue("/root/temp/cond/list/hngnm"); //환자명
  117. var execdd = opener.model.getValue('/root/main/wardrecinfo/recdd'); //수행일자
  118. var exectm = opener.model.getValue('/root/main/wardrecinfo/rectm'); //수행시간
  119. if(execdd == null || execdd == ''){
  120. execdd = getCurrentDate();
  121. }
  122. if(exectm == null || exectm == ''){
  123. exectm = getCurrentTime().substring(0, 4);
  124. }
  125. //20081014 i/o조건값 cond 노드에 setting
  126. model.removenode('/root/cond/ioflag');
  127. model.makeValue('/root/cond/ioflag', ioflag);
  128. model.refresh();
  129. //중증도 마스터내역을 조회한다.
  130. model.removenode('/root/send');
  131. model.makeValue('/root/send/clsflag', '1');
  132. model.makeValue('/root/send/recflag', '9');
  133. model.makeValue('/root/send/execdd', execdd);
  134. model.makeValue('/root/send/exectm', exectm);
  135. model.makeValue('/root/send/pid', pid);
  136. model.makeValue('/root/send/indd', indd);
  137. model.makeValue('/root/send/histstat', histstat);
  138. model.makeValue('/root/send/cretno', cretno);
  139. model.makeValue('/root/send/seqno', seqno);
  140. model.makeValue('/root/send/hngnm', hngnm);
  141. model.removenode('/root/main/recgrup');
  142. model.makeNode('/root/main/recgrup');
  143. //상세점수, 상세내역, 상세설명의 현재instance를 remove한다.
  144. model.removenode('/root/main/recpntgrup');
  145. model.removenode('/root/main/recdetailgrup');
  146. model.removenode('/root/main/tar_desccnts');
  147. model.refresh();
  148. //중증도내역 마스터 조회 후 기록정보 조회
  149. if(!submit('TRMNW04011')){
  150. messageBox('중증도내역의 조회를', 'E009');
  151. return;
  152. }else{
  153. //조회갯수 0일때 조회 후 수행일자, 수행시간, 최근 저장일을 세팅
  154. var execdd = opener.model.getValue('/root/main/wardrecinfo/recdd'); //수행일자
  155. var exectm = opener.model.getValue('/root/main/wardrecinfo/rectm'); //수행시간
  156. //중증도 마스터를 조회후 수행일자에 해당하는 내역이 없으면 행추가, 있으면 해당 row select
  157. fSetRecMaster(exectm, execdd);
  158. //환자정보에 선택한 로우정보 set
  159. //grd_patinfo.row = curRow;
  160. //grd_patinfo.topRow = curRow;
  161. //중증도 상세점수조회
  162. fSearchRecPnt();
  163. }
  164. }
  165. /**
  166. * 중증도 마스터를 조회후 수행일자, 기록순번에 해당하는 내역이 없으면 행추가, 있으면 해당 row select
  167. */
  168. function fSetRecMaster(exectm, execdd){
  169. if(grd_recmaster.rows > 1){
  170. grd_recmaster.row = 1;
  171. // var _recseq, _execdd;
  172. // var selRow = 0;
  173. //
  174. // for(var i = 1; i < grd_recmaster.rows; i++){
  175. //
  176. // //_exectm = model.getValue(xRecMasterPath + '[' + i + ']/exectm');
  177. // _execdd = model.getValue(xRecMasterPath + '[' + i + ']/execdd');
  178. //
  179. // //2008.08.07 dhkim 수정. 날짜로만 체크
  180. // //if(exectm == _exectm && execdd == _execdd){
  181. // if(execdd == _execdd){
  182. // selRow = i;
  183. // break;
  184. // }
  185. // }
  186. //
  187. // if(selRow > 0){
  188. // grd_recmaster.row = selRow; //수행일자에 해당하는 row를 선택
  189. // }else{
  190. //
  191. // //수행일자에 해당하는 기록이 없으면 상세내역이 update될때 메세지 뿌림.
  192. // //2008.08.07 dhkim 수정
  193. // //수행일자에 해당하는 기록이 있으면 무조건 가장 최근 행에 포커스 이동.
  194. // //수행일자에 해당하는 기록이 없으면 가장 첫번째행에 포커스 이동.
  195. // grd_recmaster.row = 1;
  196. // //grd_recmaster.insertRow("1", "above");
  197. // //fSetNewRowRecMaster();
  198. // }
  199. }else{
  200. //기록된 내역이 한건도 없을때 신규행을 추가
  201. grd_recmaster.addRow();
  202. fSetNewRowRecMaster();
  203. }
  204. }
  205. /**
  206. * @group :
  207. * @ver : 2008.06.23
  208. * @by : dhkim
  209. * @---------------------------------------------------
  210. * @type : function
  211. * @access : public
  212. * @desc : 기록마스터에 행추가후 값 세팅
  213. * @param :
  214. * @return :
  215. * @---------------------------------------------------
  216. */
  217. function fSetNewRowRecMaster(){
  218. var curRow = grd_recmaster.row;
  219. var execdd = opener.model.getValue('/root/main/wardrecinfo/recdd'); //수행일자
  220. var exectm = opener.model.getValue('/root/main/wardrecinfo/rectm'); //수행시간
  221. model.setValue(xRecMasterPath + '[' + curRow + ']/execdd', execdd);//수행일자
  222. model.setValue(xRecMasterPath + '[' + curRow + ']/exectm', exectm);//수행시간
  223. model.setValue(xRecMasterPath + '[' + curRow + ']/totpnt', 0); //총점
  224. model.setValue(xRecMasterPath + '[' + curRow + ']/execnm', getUserName());//수행자명
  225. model.setValue(xRecMasterPath + '[' + curRow + ']/pid', opener.model.getValue("/root/temp/cond/list/pid"));//등록번호
  226. model.setValue(xRecMasterPath + '[' + curRow + ']/hngnm', opener.model.getValue('/root/temp/cond/list/hngnm'));//환자명
  227. model.setValue(xRecMasterPath + '[' + curRow + ']/recflag', '9');//기록구분
  228. model.setValue(xRecMasterPath + '[' + curRow + ']/clsflag', '1');//분류구분
  229. model.setValue(xRecMasterPath + '[' + curRow + ']/execkind', 0);//분류구분
  230. model.setValue(xRecMasterPath + '[' + curRow + ']/execid', getUserId());//수행자ID
  231. model.setValue(xRecMasterPath + '[' + curRow + ']/indd', opener.model.getValue('/root/temp/cond/list/indd'));//입원일자
  232. model.setValue(xRecMasterPath + '[' + curRow + ']/histstat', opener.model.getValue('/root/temp/cond/list/histstat'));//이력상태
  233. model.setValue(xRecMasterPath + '[' + curRow + ']/cretno', opener.model.getValue('/root/temp/cond/list/cretno'));//생성번호
  234. model.setValue(xRecMasterPath + '[' + curRow + ']/seqno', opener.model.getValue('/root/temp/cond/list/seqno'));//이력일련번호
  235. model.setValue(xRecMasterPath + '[' + curRow + ']/stat', 'i');//그리드상태
  236. model.refresh();
  237. }
  238. /**
  239. * @group :
  240. * @ver : 2007.12.06
  241. * @by : 신혁춘
  242. * @---------------------------------------------------
  243. * @type : function
  244. * @access : public
  245. * @desc : 상세점수조회 셋팅
  246. * @param :
  247. * @return :
  248. * @---------------------------------------------------
  249. */
  250. function fSearchRecPnt(){
  251. var clsflag = model.getValue(xRecInfo + '/clsflag');
  252. var recflag = model.getValue(xRecInfo + '/recflag');
  253. var curRow = grd_recmaster.row;
  254. //마스터가 암것도 없을때나 행추가 상태일때는 조회안하고 바로 리턴한다.
  255. if(grd_recmaster.rows < 2 || model.getValue(xRecMasterPath + '[' + curRow + ']/stat') == 'i' ){
  256. model.removeNodeset("/root/main/recpntgrup/recpntlist");// 중증도 상세점수 클리어
  257. model.refresh();
  258. }
  259. model.removeNodeset("/root/send");
  260. model.makeValue("/root/send/pid", model.getValue(xRecMasterPath+"["+curRow+"]/pid"));
  261. model.makeValue("/root/send/indd", model.getValue(xRecMasterPath+"["+curRow+"]/indd"));
  262. model.makeValue("/root/send/cretno", model.getValue(xRecMasterPath+"["+curRow+"]/cretno"));
  263. model.makeValue("/root/send/execdd", model.getValue(xRecMasterPath+"["+curRow+"]/execdd"));
  264. model.makeValue("/root/send/recseq", model.getValue(xRecMasterPath+"["+curRow+"]/recseq"));
  265. model.makeValue("/root/send/clsflag", '1');
  266. model.makeValue("/root/send/recflag", '9');
  267. //상세내역, 상세설명의 현재instance를 remove한다.
  268. model.removenode('/root/main/recdetailgrup');
  269. model.removenode('/root/main/tar_desccnts');
  270. model.refresh();
  271. //상세점수그리드조회
  272. if(!submit("TRMNW04007")){//상세점수조회
  273. messageBox('상세점수조회를', 'E009');
  274. return;
  275. }else{
  276. //상세점수그리드의 컬럼을 조회한 내역의 갯수만큼 화면에 보여준다.
  277. fColLqidtys();
  278. }
  279. //중증기록 detail 상세내역 그리드리스트를 조회한다.
  280. fSearchRecDetail();
  281. }
  282. /**
  283. * @group :
  284. * @ver : 2007.12.06
  285. * 2008.06.23 dhkim 수정
  286. * @by : 신혁춘
  287. * @---------------------------------------------------
  288. * @type : function
  289. * @access : public
  290. * @desc : 상세점수그리드의 컬럼을 조회한 내역의 갯수만큼 화면에 보여준다.
  291. * @param :
  292. * @return :
  293. * @---------------------------------------------------
  294. */
  295. function fColLqidtys() {
  296. var cnt = model.getValue("/root/main/recpntgrup/recpntlist/cnt");
  297. if(Number(cnt) > 0 ){
  298. var fdx = 0;
  299. var hngnm;
  300. var idx = 0;
  301. fdx = Number(grd_recpnt.colRef("hngnm"));
  302. for(var i = 1 ; i <= cnt ; i++) {
  303. hngnm = model.getValue("/root/main/recpntgrup/pnttitlgruplist["+ i +"]/hngnm");
  304. idx = Number(fdx) + Number(i);
  305. grd_recpnt.colhidden(idx) = false; //조회된 컬럼 갯수만큼 그리드의 필드를 보여줌
  306. //grd_recpnt.colwidth(idx) = hngnm.length * 10; //조회된 컬럼 갯수만큼 그리드의 필드를 100으로 길이 세팅
  307. grd_recpnt.colwidth(idx) = 60; // 컬럼사이즈 fix
  308. //그리드의 타이틀필드값에 상세내역의 타이틀을 세팅
  309. grd_recpnt.valuematrix(0, idx) = hngnm;
  310. grd_recpnt.valuematrix(1, idx) = hngnm;
  311. }
  312. grd_recpnt.colhidden(grd_recpnt.colRef("totpnt")) = false;
  313. grd_recpnt.colhidden(grd_recpnt.colRef("resultcd")) = false;
  314. // grd_recpnt.colhidden(43) = false;//중증도분류코드
  315. // grd_recpnt.colhidden(44) = false;//column 갯수
  316. grd_recpnt.colwidth(grd_recpnt.colRef("totpnt")) = 60;
  317. grd_recpnt.colwidth(grd_recpnt.colRef("resultcd")) = 60;
  318. //상세점수 그리드 1,2번째 컬럼에 등록번호, 환자명 세팅
  319. grd_recpnt.valuematrix(2,1) = model.getValue(xRecMasterPath+"["+grd_recmaster.row+"]/pid");
  320. grd_recpnt.valuematrix(2,2) = model.getValue(xRecMasterPath+"["+grd_recmaster.row+"]/hngnm");
  321. grd_recpnt.refresh();
  322. }
  323. }
  324. /**
  325. * @group :
  326. * @ver : 2007.12.05
  327. * @by : 신혁춘
  328. * @---------------------------------------------------
  329. * @type : function
  330. * @access : public
  331. * @desc : 선택된 중증도 내역에 따른 중증도 상세내역을 조회한다.
  332. * @param :
  333. * @return :
  334. * @---------------------------------------------------
  335. */
  336. function fSearchRecDetail(){
  337. var curRow = grd_recmaster.row;
  338. model.removenode('/root/main/recdetailgrup');
  339. model.makeNode('/root/main/recdetailgrup');
  340. model.removeNodeset("/root/send");
  341. model.makeValue("/root/send/pid", model.getValue(xRecMasterPath+"["+curRow+"]/pid"));
  342. model.makeValue("/root/send/cretno", model.getValue(xRecMasterPath+"["+curRow+"]/cretno"));
  343. model.makeValue("/root/send/indd", model.getValue(xRecMasterPath+"["+curRow+"]/indd"));
  344. model.makeValue("/root/send/seqno", model.getValue(xRecMasterPath+"["+curRow+"]/seqno"));
  345. model.makeValue("/root/send/recseq", model.getValue(xRecMasterPath+"["+curRow+"]/recseq"));
  346. model.makeValue("/root/send/clsflag", '1');
  347. model.makeValue("/root/send/recflag", '9');
  348. model.makeValue("/root/send/execdd", model.getValue(xRecMasterPath+"["+curRow+"]/execdd"));
  349. //상세설명의 현재instance를 remove한다.
  350. model.removenode('/root/main/tar_desccnts');
  351. model.refresh();
  352. //중증도 상세내역 조회
  353. if(submit("TRMNW04006")){
  354. model.copyNode("/root/temp","/root/main");
  355. fShowTreeRecDetailGrup();
  356. }
  357. }
  358. /**
  359. * @group :
  360. * @ver : 2007.12.06
  361. * @by : 신혁춘
  362. * @---------------------------------------------------
  363. * @type : function
  364. * @access : public
  365. * @desc : 중증도 상세내역 트리구조로 변환
  366. * @param :
  367. * @return :
  368. * @---------------------------------------------------
  369. */
  370. function fShowTreeRecDetailGrup(){
  371. //그리드를 depth에 맞게 level을 조정한다.
  372. var dpth = 0;
  373. for(var i=1; i< grd_recdetail.rows; i++){
  374. //grd_recdetail.IsSubtotal(i) = true;
  375. dpth = Number(model.getValue(xRecDetailPath+"[" + (i) + "]/depth"));
  376. if(dpth == 1){
  377. grd_recdetail.outlinelevel(i) = 1;
  378. }else if(dpth == 2){
  379. grd_recdetail.outlinelevel(i) = 2;
  380. }
  381. grd_recdetail.colDisabled(11) = true ;
  382. }
  383. //트리스타일 설정
  384. grd_recdetail.OutlineCol = 3;
  385. grd_recdetail.OutlineBar = 4;
  386. grd_recdetail.allstyle( "all", "background-color" ) = "#FFFFFF" ;
  387. var iRow = grd_recdetail.rows;
  388. var timsval, flag;
  389. for(var i = 1 ; i < grd_recdetail.rows; i++ ){
  390. timsval = model.getValue(xRecDetailPath+"["+ i +"]/timsval");
  391. flag = model.getValue(xRecDetailPath+"["+ i +"]/flag");
  392. //입력필드가 아닐때 점수를 회색으로 보여준다.
  393. if(model.getValue(xRecDetailPath+"["+ i +"]/timsval") == "") {
  394. grd_recdetail.cellstyle("background-color", i,5 ,i,5) = "#C0C0C0";//회색
  395. }
  396. //20080827 구분에 체크되어있고 입력필드일 때 횟수값이 0이면 배경을 노랑색으로 보여준다.
  397. else if(flag == 'Y' && timsval != '' && (timsval == '0' || timsval == 0)){
  398. grd_recdetail.cellstyle("background-color", i,5 ,i,5) = "#FCFF00";//노랑
  399. }
  400. if(model.getValue(xRecDetailPath+"["+ i +"]/supcd") == "00000000") {//level이 상위레벨일때
  401. //색깔(연두색)을 입혀서 보여준다.
  402. grd_recdetail.rowstyle(i, "data", "background-color") = "#c0ff80";
  403. //그리드 체크박스 readonly true로 변경
  404. grd_recdetail.isReadonly(i, 1, i, 1) = true;//체크박스
  405. }else{
  406. //그리드 체크박스 readonly false로 변경
  407. grd_recdetail.isReadonly(i, 1, i, 1) = false;//체크박스
  408. }
  409. var timsinptyn = model.getValue(xRecDetailPath + '[' + i + ']/timsinptyn');//횟수입력여부
  410. if(timsinptyn == 'Y'){
  411. grd_recdetail.isReadonly(i, 5, i, 5) = false;//횟수입력필드 readonly true로 변경
  412. }else if(timsinptyn == 'N'){
  413. grd_recdetail.isReadonly(i, 5, i, 5) = true;//횟수입력필드 readonly false로 변경
  414. }
  415. }
  416. model.refresh();
  417. }
  418. /**
  419. * @group :
  420. * @ver : 2008.06.25
  421. * @by : dhkim
  422. * @---------------------------------------------------
  423. * @type : function
  424. * @access : public
  425. * @param : selRow 현재 선택한 그리드 row idx
  426. * selCol 현재 선택한 그리드 col idx
  427. * _supcd 현재 선택한 그리드 row의 상위코드값
  428. * @desc : 횟수입력시 입력여부가 N이면 값을 원래 값으로 리턴
  429. * col = 1 (구분체크박스), col=5 (횟수)
  430. * @return :
  431. * @---------------------------------------------------
  432. */
  433. function fChangeTimsValValue(selRow, selCol, _supcd){
  434. if(_supcd == '00000000'){
  435. return;
  436. }
  437. if(selCol == 5){//횟수변경 (횟수입력여부가 Y인것만 입력 가능함)
  438. var flag = model.getValue(xRecDetailPath + '[' + selRow + ']/flag');
  439. var timsinptyn = model.getValue(xRecDetailPath + '[' + selRow + ']/timsinptyn');//횟수입력가능여부
  440. if(timsinptyn == 'N'){
  441. return;
  442. }else if(timsinptyn == 'Y'){//횟수 입력가능상태
  443. if(flag == 'N'){
  444. //체크상태가 아닌 데이터에 횟수 입력시 원래상태로 back
  445. model.setValue(xRecDetailPath + '[' + selRow + ']/timsval', model.getValue(xRecDetailPath + '[' + selRow + ']/bktimsval'));
  446. }
  447. }
  448. }
  449. }
  450. /**
  451. * @group :
  452. * @ver : 2008.06.25
  453. * @by : dhkim
  454. * @---------------------------------------------------
  455. * @type : function
  456. * @access : public
  457. * @param : selRow 현재 선택한 그리드 row idx
  458. * selCol 현재 선택한 그리드 col idx
  459. * _supcd 현재 선택한 그리드 row의 상위코드값
  460. * @desc : 체크박스 변경에 따른 선택된 같은 그룹내의 체크박스 값 변경
  461. * col = 1 (구분체크박스)
  462. * @return :
  463. * @---------------------------------------------------
  464. */
  465. function fChangeCheckboxValue(selRow, selCol, _supcd){
  466. var curFlag = model.getValue(xRecDetailPath + '[' + selRow + ']/flag');//현재선택한 체크값
  467. var clsflag = model.getValue('/root/cond/clsflag');
  468. if(_supcd == '00000000'){
  469. return;
  470. }
  471. if(selCol == 1){//체크값 변경
  472. //2008.08.07 dhkim 추가
  473. //중증도중환자실(중환자실입실, 중환자실퇴실 포함), 신생아ICU, 낙상소아는 multi 체크이므로 기존에 체크된 데이터를 해제하지 않는다.
  474. //일반병동, 정신과병동, 혈액투석, 낙상성인, 욕창은 single 체크임
  475. var isMulti = false;
  476. if(clsflag == '4' || clsflag == '6' ||clsflag == '7' || clsflag == '2' || clsflag == '8'){
  477. isMulti = true;
  478. }
  479. var supcd, flag;
  480. for(var i = 1; i < grd_recdetail.rows; i++){
  481. supcd = model.getValue(xRecDetailPath + '[' + i + ']/supcd');
  482. flag = model.getValue(xRecDetailPath + '[' + i + ']/flag');
  483. if(!isMulti){
  484. //같은 그룹내에서 비교
  485. if(supcd != '00000000' && supcd == _supcd && flag == 'Y'){//기존 체크데이터를 해제
  486. //원래 체크되어있던 값을 해제, 상태 삭제로
  487. model.setValue(xRecDetailPath + '[' + i + ']/flag', 'N');
  488. }
  489. }
  490. }
  491. //현재 체크한 값을 선택, 상태 신규로
  492. if(curFlag == 'Y'){
  493. model.setValue(xRecDetailPath + '[' + selRow + ']/flag', 'Y');
  494. //20080827
  495. //횟수값이 입력가능 항목이면 항목에 체크되었을때 횟수필드를 노랑으로 변경
  496. if(model.getValue(xRecDetailPath+"["+ selRow +"]/timsval") != ''){
  497. grd_recdetail.cellstyle("background-color", selRow,5 ,selRow,5) = "#FCFF00";//노랑
  498. }
  499. }else if(curFlag == 'N'){
  500. model.setValue(xRecDetailPath + '[' + selRow + ']/flag', 'N');
  501. //20080827
  502. //횟수값이 입력가능 항목이면 항목에 체크해제되었을때 횟수필드를 하냥으로 변경
  503. if(model.getValue(xRecDetailPath+"["+ selRow +"]/timsval") != ''){
  504. grd_recdetail.cellstyle("background-color", selRow,5 ,selRow,5) = "#FFFFFF";//하양
  505. }
  506. }
  507. model.refresh();
  508. }
  509. }
  510. /**
  511. * @group :
  512. * @ver : 2008.06.25
  513. * @by : dhkim
  514. * @-------------------------------------------------------------------------------------------------------
  515. * @type : function
  516. * @access : public
  517. * @param :
  518. * @return :
  519. * @desc : 저장하기전 전체그리드의 변경된 내역에 따른 그리드 상태값을 변경한다.
  520. * (1) 체크박스 선택여부에 따른 상태값 변경
  521. * 1. 원래값이 Y, 현재Y이면 stat은 '-'
  522. * 2. 원래값이 Y, 현재N이면 stat은 'd'
  523. * 3. 원래값이 N, 현재N이면 stat은 '-'
  524. * 4. 원래값이 N, 현재Y이면 stat은 'i'
  525. * (2) 횟수 입력에 따른 상태값 변경
  526. * 1. 현재 chkbox가 Y이고 timsinptyn(횟수입력여부)이 Y일때만 입력가능함.
  527. * 2. 원래 chkbox가 Y, 현재Y, 현재timsval과 원래 bktimsval값이 다르면 상태값은 'u'로
  528. * 3. 현재 chkbox가 N인 것에 timsval값이 입력되면 timsval값을 원래상태(원래상태값:bkimsval)로 복구
  529. * @-------------------------------------------------------------------------------------------------------
  530. */
  531. function fChangeGridStat(){
  532. var bkflag, bktimsval; //원래 체크박스값, 원래횟수값
  533. var flag, timsval; //변경한체크박스값, 변경한횟수값
  534. var timsinptyn; //횟수입력여부
  535. var stat='-'; //변경할 그리드 상태값
  536. var pntstat = '-'; //상세점수의 stat
  537. for(var i = 1; i <= grd_recdetail.rows - grd_recdetail.fixedRows ; i++){
  538. flag = model.getValue(xRecDetailPath + '[' + i + ']/flag'); //현재체크박스값
  539. timsval = model.getValue(xRecDetailPath + '[' + i + ']/timsval'); //현재횟수값
  540. bkflag = model.getValue(xRecDetailPath + '[' + i + ']/bkflag'); //원래체크박스값
  541. bktimsval = model.getValue(xRecDetailPath + '[' + i + ']/bktimsval'); //원래횟수값
  542. timsinptyn= model.getValue(xRecDetailPath + '[' + i + ']/timsinptyn'); //횟수입력여부
  543. if(bkflag == 'Y' && flag == 'Y'){
  544. if(timsinptyn == 'Y' && (timsval != bktimsval)){
  545. stat = 'u';
  546. pntstat = 'u';
  547. }else{
  548. stat = '-';
  549. }
  550. }else if(bkflag == 'Y' && flag == 'N'){
  551. stat = 'd';
  552. pntstat = 'u';
  553. }else if(bkflag == 'N' && flag == 'N'){
  554. stat = '-';
  555. }else if(bkflag == 'N' && flag == 'Y'){
  556. stat = 'i';
  557. pntstat = 'u';
  558. }
  559. //alert(i + stat);
  560. model.setValue(xRecDetailPath + '[' + i + ']/stat', stat);
  561. //alert(i + stat + ' , ' + );
  562. }
  563. //상세내역이 변경되면 상세점수와 중증도마스터의 stat을 변경상태로 설정한다.
  564. if(pntstat == 'u'){
  565. //중증도점수그리드
  566. grd_recpnt.addStatus(2, 'update');
  567. //중증도 마스터그리드
  568. if(grd_recmaster.rowStatus(grd_recmaster.row) != 1){//상태가 신규상태가 아니면 u로 변경
  569. grd_recmaster.addStatus(grd_recmaster.row, 'update');
  570. model.setValue(xRecMasterPath + '[' + grd_recmaster.row + ']/stat', 'u');
  571. }
  572. }else{
  573. //중증도점수그리드
  574. grd_recpnt.removeStatus(2, 'update');
  575. //중증도 마스터그리드
  576. if(grd_recmaster.rowStatus(grd_recmaster.row) != 1){//상태가 신규상태가 아니면 u로 변경
  577. grd_recmaster.removeStatus(grd_recmaster.row, 'update');
  578. model.setValue(xRecMasterPath + '[' + grd_recmaster.row + ']/stat', '-');
  579. }
  580. }
  581. model.refresh();
  582. }
  583. /**
  584. * @group :
  585. * @ver : 2008.06.27
  586. * @by : dhkim
  587. * @---------------------------------------------------
  588. * @type : function
  589. * @access : public
  590. * @desc : 중증도 내역 삭제를 한다
  591. * @param :
  592. * @return :
  593. * @---------------------------------------------------
  594. */
  595. function fDelete(){
  596. var curRow = grd_recmaster.row;
  597. if(model.getValue(xRecMasterPath + '[' + curRow + ']/stat') == 'i'){
  598. grd_recmaster.deleteRow(curRow);
  599. return;
  600. }else{
  601. //20080926 기록자만이 삭제를 할 수 있다.
  602. var recid = model.getValue(xRecMasterPath + '[' + curRow + ']/execid');
  603. var recnm = model.getValue(xRecMasterPath + '[' + curRow + ']/execnm');
  604. if(recid != getUserId()){
  605. messageBox('기록을 입력한 등록자( ' + recnm + ' )만 해당 기록내역을 삭제하실 수 있습니다.' , 'E');
  606. return ;
  607. }else{
  608. var msg = messageBox('삭제를 진행하시면 입력하신 상세내역도 전부 삭제됩니다. 선택하신 중증도 내역을', 'Q001');
  609. if(msg == 6){
  610. model.removenode('/root/send');
  611. model.setValue(xRecMasterPath + '[' + curRow + ']/stat', 'd');
  612. model.makeValue('/root/send/recmaster', grd_recmaster.getUpdateDataAll('d'));
  613. var pid = opener.model.getValue("/root/temp/cond/list/pid");
  614. var orddd = opener.model.getValue('/root/temp/cond/list/indd');//입원일/진료일
  615. var cretno = opener.model.getValue('/root/temp/cond/list/cretno');//생성번호
  616. var orddeptcd = opener.model.getValue('/root/temp/cond/list/orddeptcd');//진료과
  617. var orddrid = opener.model.getValue('/root/temp/cond/list/medispclid');//진료의
  618. var ioflag = opener.model.getValue('/root/temp/cond/list/ioflag'); //외래/입원구분
  619. var signno = model.getValue(xRecMasterPath + '[' + curRow + ']/signno');//인증번호
  620. /* [각 구분별 기록서식코드]
  621. * 중증도_일반병동 : 0000002439
  622. * 중증도_신생아 ICU : 0000002440
  623. * 중증도_혈액투석 : 0000002441
  624. * 중증도_중환자실 : 0000002442
  625. * 중증도_정신과병동 : 0000002444
  626. * 낙상사정_아동 : 0000002447
  627. * 낙상사정_성인 : 0000002449
  628. * 욕창사정 : 0000002450
  629. */
  630. var recflag = model.getValue('/root/cond/recflag');
  631. var clsflag = model.getValue('/root/cond/clsflag');
  632. var formcd;//기록서식코드
  633. var formnm;//서식명
  634. recflag = '9';
  635. clsflag = '1';
  636. /*p Sign.certreload = true ; // 전자서명 호출시 인증저장 버튼을 누늘때마다 인증서가 뜨도록 처리
  637. // 인증 로직 호출
  638. if(Sign.signprocess() == true){ // ▶ 전자인증 관련 환자 인적 정보를 보내줌.
  639. var wSigninfo = "pid" +"▦" // 01 등록번호
  640. + "orddd" +"▦" // 02 입원일자(입원,응급)/진료일자(외래)
  641. + "cretno" +"▦" // 03 생성번호
  642. + "signno" +"▦" // 04 서명번호(인증번호)
  643. + "recdd" +"▦" // 05 실제 기록이 이루어진 기록일자
  644. + "rectm" +"▦" // 06 실제 기록이 이루어진 기록시간
  645. + "recsaveflag" +"▦" // 07 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  646. + "signflag" +"▦" // 08 서명자료구분(01 : 진료, 02 : 간호, 03 : LIS, 04 : 진료지원)
  647. + "signgenrflag" +"▦" // 09 외래/입원구분(코드정의서 M0010 참조)
  648. + "formcd" +"▦" // 10 각 기록지별 서식코드 0000002473 N57 간호 수술간호기록
  649. + "orddeptcd" +"▦" // 11 진료부서코드
  650. + "orddrid" +"▦" // 12 진료의사ID (집도의)
  651. + "signbfcnts" +"▦" // 13 ▶ 인증할 데이터 정보(미기록 노드 제거된 정보)
  652. + "signaftcnts" +"▦" // 14 ▶ 공인인증 처리후 데이터
  653. + "screenid" +"▦" // 15 ▶ 화면아이디
  654. + "certflag" +"▩" // 16 ▶ 인증여부( T : 임시저장, C : 인증저장)
  655. + pid +"▦" // 01 등록번호
  656. + orddd +"▦" // 02 입원일자(입원,응급)/진료일자(외래)
  657. + cretno +"▦" // 03 생성번호
  658. + signno +"▦" // 04 서명번호(인증번호)
  659. + getCurrentDate() +"▦" // 05 실제 기록이 이루어진 기록일자
  660. + getCurrentTime() +"▦" // 06 실제 기록이 이루어진 기록시간
  661. + "Y" +"▦" // 07 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  662. + "02" +"▦" // 08 서명자료구분(01 : 진료, 02 : 간호, 03 : LIS, 04 : 진료지원)
  663. + ioflag +"▦" // 09 외래/입원구분(코드정의서 M0010 참조)
  664. + formcd +"▦" // 10 각 기록지별 서식코드 (emr.mrfmform)
  665. + orddeptcd +"▦" // 11 진료부서코드
  666. + orddrid +"▦" // 12 진료의사ID
  667. + Sign.signedInfos[1] +"▦" // 13 ▶ 인증할 데이터 정보(미기록 노드 제거된 정보)
  668. + Sign.signedInfos[2] +"▦" // 14 ▶ 공인인증 처리후 데이터
  669. + getScreenID() +"▦" // 15 ▶ 화면아이디
  670. + "C" +"▩"; // 16 ▶ 인증여부( T : 임시저장, C : 인증저장)
  671. model.makeValue("/root/send/signinfo" , wSigninfo);
  672. } else {
  673. return ;
  674. }
  675. */
  676. if(!submit('TXMNW04001')){
  677. messageBox('중증도 내역의 삭제를', 'E009');
  678. return;
  679. }else{
  680. //중증도조회
  681. fSearchRecMaster(grd_patinfo.row);
  682. }
  683. }else if(msg == 7){
  684. return;
  685. }
  686. }
  687. }
  688. }
  689. // ※ 인증데이터 생성함수 만들기
  690. function fMake_SignData(){
  691. // ▶ 기록 관련 인스턴스 전체를 copy, 인증에 저장할 모든 Instance AddNode한다.
  692. Sign.addnode("/root/cond");
  693. Sign.addnode("/root/main/patinfo/patlist[" + (grd_patinfo.row-1) + "]");
  694. Sign.addnode("/root/main/recgrup/recgruplist[" + (grd_recmaster.row) + "]");
  695. Sign.addnode("/root/main/recpntgrup" );
  696. Sign.addnode("/root/main/recdetailgrup");
  697. Sign.addnode("/root/temp/signdata/recpntgrup");
  698. Sign.addnode('/root/temp/signdata/detailinfo');
  699. //alert(model.getValue('/root/temp/signdata/detailinfo/formnm'));
  700. }
  701. //input수행일자에 해당하는 기록일이 있는지 조회
  702. //신규데이터가 아닌것중..(stat != 'i')
  703. //@param : iptExecdd 입력하고자 하는 수행일자(input 컴포넌트)
  704. //@return : arr[0] - 기록여부 (true/false)
  705. // arr[1] - signno (기록여부가 true일때 해당기록의 signno를 할당)
  706. // 20080820 - array로 변경
  707. function fIsRecorded(iptExecdd){
  708. var retArr = new Array(1);
  709. var recorded = false;
  710. var signno = '';
  711. var execdd;
  712. var stat;
  713. for(var i = 1; i < grd_recmaster.rows; i++){
  714. execdd = model.getValue(xRecMasterPath + '[' + i + ']/execdd');
  715. stat = model.getValue(xRecMasterPath + '[' + i + ']/stat');
  716. if(execdd != '' && iptExecdd == execdd && stat != 'i'){
  717. signno = model.getValue(xRecMasterPath + '[' + i + ']/signno');
  718. recorded = true;
  719. retArr[0] = recorded;
  720. retArr[1] = signno;
  721. return retArr;
  722. }
  723. }
  724. retArr[0] = recorded;
  725. retArr[1] = signno;
  726. return retArr;
  727. }
  728. /**
  729. * @group :
  730. * @ver : 2008.06.25
  731. * @by : dhkim
  732. * @-------------------------------------------------------------------------------------------------------
  733. * @type : function
  734. * @access : public
  735. * @param :
  736. * @return :
  737. * @desc : [인증저장]
  738. * 중증도 마스터와 상세내역을 인증저장한다.
  739. * - 저장전 중증도 상세내역 점수의 유효성을 체크한다.
  740. * - 상세내역의 체크된 내역 점수를 합산하여 기록마스터의 totpnt에 set한다.
  741. * - 이미 기록이 입력되어 있는 경우에 -> grd_recmaster에 상태값이 'u'임.
  742. * 기록된 날짜가 조회조건의 수행일자와 같으면 db에 update처리하고
  743. * 기록된 날짜와 조회조건의 수행일자가 다르면 신규로 insert처리한다.(메세지로 알려줄것)
  744. * @-------------------------------------------------------------------------------------------------------
  745. */
  746. function fSignSave(){
  747. //pam=>pat var dschdd = model.getValue("/root/main/paminfo/pamlist/dschdd"); //퇴원일자
  748. //pam=>pat var indd = model.getValue("/root/main/paminfo/pamlist/indd"); //입원일자
  749. var dschdd = opener.model.getValue("/root/temp/cond/list/dschdd"); //퇴원일자
  750. var indd = opener.model.getValue("/root/temp/cond/list/indd"); //입원일자
  751. var execdd = opener.model.getValue("/root/main/wardrecinfo/recdd"); //수행일자
  752. // if((execdd < indd) || (execdd > dschdd)) { //입원,퇴원일자 사이의 수행일자만 입력하도록 블러킹
  753. // messageBox("수행하려는 일자는 입원일자(" +indd.substring(0,4) + "-" + indd.substring(4, 6) + "-" + indd.substring(6) + ")이전 또는 퇴원일자("+dschdd.substring(0,4) + "-" + dschdd.substring(4, 6) + "-" + dschdd.substring(6)+")이후의 일자가 될 수","I004");
  754. // return;
  755. // }
  756. var recMasterStat = model.getValue(xRecMasterPath + '[' + grd_recmaster.row + ']/stat');//기록마스터의 상태값
  757. /*
  758. //1. 신규등록
  759. // 1) 저장된 기록이 하나도 없을때 최초등록의 경우 insert
  760. // 2) input에 수행일자가 해당 기록에 없는 경우... 이미 기록된 내역을 해당 수행일자로 insert
  761. // 2008.08.27 수정요청사항
  762. // 3) input에 수행일자가 해당 기록에 있는 경우... 수정된 내역을 수행일시는 현재일자+현재시간 으로 insert
  763. //recMasterStat이 '-'이라도 저장할 수행일자가 기록내역에 없으면 신규 insert
  764. //--------------------------------------------------------------------------------------------
  765. //2008.08.27 수정요청사항 (기록수정은 진행하지 않는다.)
  766. //2. 수정등록 (사용안함)
  767. // 1) 해당기록의 항목을 선택하여 수정하는 경우 수정한 항목을 update
  768. // 2) input에 수행일자가 해당 기록에 있는 경우... 수정된 내역을 해당수행일자로 update
  769. // (저장할 수행일자가 기록내역에 있으면 이미 저장된 기록내역이 있습니다 메세지 뿌려줄것)
  770. */
  771. //2008.08.27 사용안함-->input수행일자에 해당되는 기록이 이미 입력되어 있는 경우에 db에 update처리
  772. //2008.08.27 변경됨-->input수행일자에 해당되는 기록이 이미 입력되어 있는 경우에 db에 insert처리, 단, 수행일시는 무조건 현재일시로 저장
  773. //input수행일자에 해당되는 기록이 저장되어있지 않은경우 db에 insert처리
  774. var execdd = opener.model.getValue('/root/main/wardrecinfo/recdd');//조회조건의 수행일자
  775. var exectm = opener.model.getValue('/root/main/wardrecinfo/rectm');//조회조건의 수행시간
  776. var recdd = model.getValue(xRecMasterPath + '[' + grd_recmaster.row + ']/execdd');//기록된 일자
  777. var isRecordedArr = fIsRecorded(execdd);//input수행일자에 해당되는 기록이 있는지 여부
  778. //20080820 array로 변경
  779. //arr[0]은 기록여부 true/false
  780. //arr[1]은 기록여부 true일때의 signno
  781. var signno = '';//인증번호
  782. var siflag = 'N';//default 는 N. 기존의 데이터를 그대로 신규로 insert하는경우flag값
  783. // Y인경우 : 1.다른일자의 기록내역은 있으나 input의 수행일자에 해당되는 기록이 없을때..
  784. // 2. input의 수행일자에 해당되는 기록이 있을때..
  785. //저장전 유효성을 체크한다.
  786. if(fIsValid()){
  787. //상세내역의 체크점수를 합산하여 마스터와 상세점수의 totpnt에 set한다.
  788. var totPnt = fSumPnt();
  789. model.setValue(xRecMasterPath + '[' + grd_recmaster.row + ']/totpnt', totPnt);//마스터의 총점
  790. model.setValue('/root/main/recpntgrup/recpntlist/totpnt', totPnt);//상세점수의 총점
  791. //총점에 해당하는 분류군을 조회한후 마스터와 상세점수의 분류군에 set한다.
  792. var bspntnm = fLoadBsPnt(totPnt);
  793. model.setValue(xRecMasterPath + '[' + grd_recmaster.row + ']/resultnm', bspntnm);//마스터의 분류군
  794. model.setValue('/root/main/recpntgrup/recpntlist/resultcd', bspntnm);//상세점수의 총점
  795. //상세내역 체크한 점수를 항목별로 합산하여 상세점수 노드에 set한다.
  796. fSetRecDetailPnt();
  797. //recMasterStat이 '-'경우 'u'로 넘김.
  798. //중증도점수그리드
  799. grd_recpnt.addStatus(2, 'update');
  800. //중증도 마스터그리드
  801. //20080827 상태가 신규가 아니면 u 상태로 db에 복사해 insert로 변경됨...
  802. if(grd_recmaster.rowStatus(grd_recmaster.row) != 1){//상태가 신규상태가 아니면 u로 변경
  803. grd_recmaster.addStatus(grd_recmaster.row, 'update');
  804. model.setValue(xRecMasterPath + '[' + grd_recmaster.row + ']/stat', 'u');
  805. siflag = 'Y';//기존데이터를 복사해 insert하는 경우 Y아니면 N
  806. }
  807. var msg = 6;
  808. if(Number(msg) == 6){//예
  809. model.removenode('/root/send');
  810. model.makeValue('/root/send/sch_execdd', execdd);//조회조건에 있는 수행일자
  811. model.makeValue('/root/send/sch_exectm', exectm);//조회조건에 있는 수행시간
  812. model.makeValue('/root/send/siflag', siflag);//기존데이터를 복사해 insert하는 경우 Y아니면 N
  813. model.makeValue('/root/send/ioflag', model.getValue('/root/cond/ioflag'));//외래입원구분
  814. var pid = model.getValue(xRecMasterPath + "/pid");
  815. var orddd = opener.model.getValue('/root/temp/cond/list/indd');//입원일/진료일
  816. var cretno = opener.model.getValue('/root/temp/cond/list/cretno');//생성번호
  817. var orddeptcd = opener.model.getValue('/root/temp/cond/list/orddeptcd');//진료과
  818. var orddrid = opener.model.getValue('/root/temp/cond/list/medispclid');//진료의
  819. var ioflag = opener.model.getValue('/root/temp/cond/list/ioflag'); //외래/입원구분
  820. //신규(insert)일때는 signno를 초기화한다.
  821. /*
  822. if((recMasterStat == 'i') || (recMasterStat == 'u' && execdd != recdd)){
  823. signno = '';
  824. }else{
  825. signno = model.getValue(xRecMasterPath + "[" + grd_recmaster.row + "]/signno");
  826. }
  827. */
  828. //alert(grd_recmaster.row + '의 signno : ' + signno);
  829. /* [각 구분별 기록서식코드]
  830. * 중증도_일반병동 : 0000002439
  831. * 중증도_신생아 ICU : 0000002440
  832. * 중증도_혈액투석 : 0000002441
  833. * 중증도_중환자실 : 0000002442
  834. * 중증도_정신과병동 : 0000002444
  835. * 낙상사정_아동 : 0000002447
  836. * 낙상사정_성인 : 0000002449
  837. * 욕창사정 : 0000002450
  838. */
  839. var recflag = "9";
  840. var clsflag = "1";
  841. var formcd;//기록서식코드
  842. var formnm;//서식명
  843. if ( Number(model.getValue("/root/cond/checkcnt")) > 0 ) {//상세내역을 하나도 선택안한경우에는 노드 생성하지 않는다.
  844. model.makeValue('/root/send/recmaster', grd_recmaster.getUpdateDataAll('i'));
  845. for( var idx = 1 ; idx <= getNodesetCount(xRecDetailPath) ; idx++){
  846. if ( Number(model.getValue(xRecDetailPath + '[' + idx + ']/basepnt_multi')) > 0 ){
  847. model.setValue( xRecDetailPath + '[' + idx + ']/basepnt',model.getValue(xRecDetailPath + '[' + idx + ']/basepnt_multi'));
  848. }
  849. }
  850. model.makeValue('/root/send/recdetail', grd_recdetail.getUpdateDataAll('i'));
  851. //중증상세을 노드를 만들어서 내보낸다. 응급간호정보조사 인증저장용 데이타 생성
  852. var xDetailPath = '/root/temp/signdata/detailinfo/recdetailgruplist';
  853. opener.model.makeNode(xDetailPath);
  854. copyNodeType("/root/temp/signdata/detailinfo", "/root/main/recdetailgrup", "replace", opener.model, model);
  855. var recpntCnt = getNodesetCount("/root/main/recpntgrup/pnttitlgruplist");
  856. var timsval, hngnm;
  857. var colno;
  858. for(var i = 1; i <= recpntCnt; i++){
  859. if(i < 10){
  860. colno = '0' + i;
  861. }else{
  862. colno = i;
  863. }
  864. timsval = model.getValue("/root/main/recpntgrup/recpntlist/timsval" + colno);
  865. hngnm = model.getValue('/root/main/recpntgrup/pnttitlgruplist[' + i + ']/hngnm');
  866. //alert(colno + ', ' + timsval + ', ' + hngnm + ', ' + i);
  867. opener.model.makeValue('/root/temp/signdata/recpntgrup/recpntlist[' + i + ']/timsval', timsval);
  868. opener.model.makeValue('/root/temp/signdata/recpntgrup/recpntlist[' + i + ']/hngnm', hngnm);
  869. }
  870. opener.model.makeValue("/root/temp/signdata/recpntgrup/viewyn", "Y");
  871. }else {
  872. grd_recmaster.addStatus(grd_recmaster.row, 'delete');
  873. model.setValue(xRecMasterPath + '[' + grd_recmaster.row + ']/stat', 'd');
  874. model.makeValue('/root/send/recmaster', grd_recmaster.getUpdateDataAll('d'));
  875. }
  876. if(!submit('TXMNW04001')){
  877. messageBox('욕창위험사정의 저장을', 'E009');
  878. return false;
  879. }else{
  880. //환자리스트조회
  881. //fSearchPatList();
  882. //중증도조회
  883. //fSearchRecMaster(grd_patinfo.row);
  884. //중증도상세점수조회
  885. //fSearchRecPnt();
  886. var condparam = '';
  887. //중증도/낙상/욕창 내역 조회(grd_recmaster)
  888. //fSearchRecMaster(grd_patinfo.row);
  889. }
  890. }else if(Number(msg) == 7){//아니오
  891. return false;
  892. }
  893. } else {
  894. if ( Number(model.getValue("/root/cond/checkcnt")) < 1 && grd_recpnt.rowStatus(2) < 2 ){
  895. return true;
  896. }else {
  897. return false;
  898. }
  899. }
  900. return true;
  901. }
  902. /**
  903. * @group :
  904. * @ver : 2008.08.20
  905. * @by : dhkim
  906. * @-------------------------------------------------------------------------------------------------------
  907. * @type : function
  908. * @access : public
  909. * @param :
  910. * @return :
  911. * @desc : 상세내역 체크한 점수를 항목별로 합산하여 상세점수 노드에 set한다.
  912. * 0. 항목의 index값을 임시저장
  913. * 1. 항목에 해당하는 명칭 get (pnttitlgruplist)
  914. * 2. 1의 명칭에 해당하는 clstlcd get (recdetailgruplist)
  915. * 3. supcd가 2인 그룹의 첫번째 index를 찾는다.
  916. * 4. 3부터 detail값을 반복하여 supcd가 2인 그룹의 점수를 합산 (recdetailgruplist)
  917. * 5. 상세점수에 0번째 timsval+0 노드에 3값을 세팅 (recpntlist)
  918. */
  919. function fSetRecDetailPnt(){
  920. var recpntTitlCnt = getNodesetCount("/root/main/recpntgrup/pnttitlgruplist");
  921. var titlhngnm;
  922. var clstlcd;
  923. var detlFidx;
  924. var basepnt = 0;
  925. var totpnt = 0;
  926. var flag;
  927. for(var i = 1; i <= recpntTitlCnt; i++){
  928. //1. 항목에 해당하는 명칭 get (pnttitlgruplist)
  929. titlhngnm = model.getValue('/root/main/recpntgrup/pnttitlgruplist[' + i + ']/hngnm');
  930. //2. 1의 명칭에 해당하는 clstlcd get (recdetailgruplist)
  931. clstlcd = model.getValue("/root/main/recdetailgrup/recdetailgruplist[hngnm='" + titlhngnm + "']/clstlcd");
  932. //3. supcd가 2인 그룹의 첫번째 index를 찾는다.
  933. detlFidx = grd_recdetail.findRow(clstlcd, 1, grd_recdetail.colRef("supcd"));
  934. //alert('detlFidx : ' + detlFidx + ', clstlcd : ' + clstlcd );
  935. //4. 3부터 detail값을 반복하여 supcd가 2인 그룹의 점수를 합산 (recdetailgruplist)
  936. for(var j = detlFidx; j <= grd_recdetail.rows; j++){
  937. supcd = model.getValue(xRecDetailPath + '[' + j + ']/supcd');
  938. flag = model.getValue(xRecDetailPath + '[' + j + ']/flag');
  939. //basepnt = model.getValue(xRecDetailPath + '[' + j + ']/basepnt');
  940. //alert('supcd : ' + supcd + ', flag : ' + flag + ', basepnt : ' + basepnt);
  941. if(supcd == clstlcd){
  942. if(flag == 'Y'){//체크된 데이터만 합산한다.
  943. if( model.getValue(xRecDetailPath + '[' + j + ']/timsinptyn') == "Y" ){//횟수입력여부
  944. basepnt = Number(model.getValue(xRecDetailPath + '[' + j + ']/basepnt')) * Number(model.getValue(xRecDetailPath + '[' + j + ']/timsval'));
  945. } else {
  946. basepnt = Number(model.getValue(xRecDetailPath + '[' + j + ']/basepnt'));
  947. }
  948. model.makeValue(xRecDetailPath + '[' + j + ']/basepnt_multi',basepnt);
  949. totpnt += Number(basepnt);
  950. }
  951. }else{
  952. j = grd_recdetail.rows;//for루프를 멈춘다.
  953. }
  954. }
  955. //5. 상세점수에 i번째 timsval+i 노드에 3값을 세팅 (recpntlist)
  956. if(i < 10){
  957. colno = '0' + i;
  958. }else{
  959. colno = i;
  960. }
  961. model.setValue(xRecPntPath + '/timsval' + colno, totpnt);
  962. totpnt = 0; //초기화
  963. basepnt=0;
  964. }
  965. }
  966. /**
  967. * @group :
  968. * @ver : 2008.06.25
  969. * @by : dhkim
  970. * @-------------------------------------------------------------------------------------------------------
  971. * @type : function
  972. * @access : public
  973. * @param :
  974. * @return : totpnt 총점
  975. * @desc : 상세내역 체크된 내역의 점수를 합산한다.
  976. * @-------------------------------------------------------------------------------------------------------
  977. */
  978. function fSumPnt(){
  979. var flag, timsval;
  980. var totPnt = 0;
  981. for(var i = 1; i < grd_recdetail.rows; i++){
  982. flag = model.getValue(xRecDetailPath + '[' + i + ']/flag');
  983. if(flag == 'Y'){
  984. if( model.getValue(xRecDetailPath + '[' + i + ']/timsinptyn') == "Y" ){//횟수입력여부
  985. timsval = Number(model.getValue(xRecDetailPath + '[' + i + ']/basepnt')) * Number(model.getValue(xRecDetailPath + '[' + i + ']/timsval'));
  986. } else {
  987. timsval = Number(model.getValue(xRecDetailPath + '[' + i + ']/basepnt'));
  988. }
  989. totPnt += Number(timsval);
  990. }
  991. }
  992. return totPnt;
  993. }
  994. /**
  995. * @group :
  996. * @ver : 2008.06.25
  997. * @by : dhkim
  998. * @-------------------------------------------------------------------------------------------------------
  999. * @type : function
  1000. * @access : public
  1001. * @param :
  1002. * @return :
  1003. * @desc : 중증도 마스터와 상세내역을 저장하기 전 데이터의 유효성을 체크한다.
  1004. * - 상세내역에 미체크 내역이 있는지 확인한다.
  1005. * - 2008.08.06 dhkim 요구사항 추가
  1006. * [모든항목 필수체크하는경우]
  1007. * 1) 중증도 : 일반병동, 정신과병동(DT, ECT항목은 필수아님), 혈액투석
  1008. * 2) 욕창
  1009. * clsflag = 1, 3, 5, 10(화면내부)
  1010. *
  1011. * [모든항목 필수체크아닌경우]
  1012. * 1) 중증도 : 중환자실, 신생아ICU
  1013. * 2) 낙상 : 성인, 소아
  1014. * clsflag = 2, 4, 8, 9(화면내부)
  1015. * - 2008.08.20 dhkim 요구사항 추가
  1016. * 낙상의 경우 나이를 체크할것.
  1017. * 낙상 소아 : 만 12세 미만 clsflag = 8
  1018. * 낙상 성인 : 만 13세 이상 clsflag = 9
  1019. * - 2008.08.27 dhkim 요구사항 추가
  1020. * 체크된 항목에 대해 횟수 입력필드가 0이면 횟수입력하라는 메세지 띄울것
  1021. * @-------------------------------------------------------------------------------------------------------
  1022. */
  1023. function fIsValid(){
  1024. var supcd;
  1025. var _supcd, _flag, _hngnm, _timsval;
  1026. var isChecked = false;
  1027. var clsflag = model.getValue('/root/cond/clsflag');
  1028. var age = model.getValue("/root/main/patinfo/patlist[" + (grd_patinfo.row-1) + "]/sexage").split('/')[1];
  1029. //환자가 선택되지 않은경우 기록을 입력할수 없다.
  1030. var pid = grd_recpnt.valueMatrix(2, grd_recpnt.colRef("pid"));//20080917 수정
  1031. if(pid == ''){
  1032. messageBox('기록하려는 환자정보가 존재하지 않습니다. 환자를 먼저 선택하신 후 기록을 작성하세요.', 'E');
  1033. return false;
  1034. }
  1035. //20080827
  1036. //체크된 항목에 대해 횟수 입력필드가 0이면 횟수입력하라는 메세지 띄울것
  1037. var checkCnt=0;
  1038. for(var j = 1; j < grd_recdetail.rows; j++){
  1039. _flag = model.getValue(xRecDetailPath + '[' + j + ']/flag');
  1040. _timsval = model.getValue(xRecDetailPath + '[' + j + ']/timsval');
  1041. _hngnm = model.getValue(xRecDetailPath + '[' + j + ']/hngnm');
  1042. //20080827
  1043. //체크된 항목에 대해 횟수 입력필드가 0이면 횟수입력하라는 메세지 띄울것
  1044. if(_flag == 'Y' && _timsval != '' && (_timsval == '0' || _timsval == 0)){
  1045. messageBox('[' + _hngnm + ']의 횟수가 입력되지 않았습니다. 횟수를', 'C001');
  1046. grd_recdetail.topRow = j;
  1047. return false;
  1048. }
  1049. if ( _flag == 'Y' ){
  1050. checkCnt++;
  1051. }
  1052. }
  1053. //checkCnt = 0 이고 grd_recpnt.rowStatus(2) 가 U 인경우 delete로 저장되어야 하므로 true 반환
  1054. if ( checkCnt < 1 && grd_recpnt.rowStatus(2) < 2 ){
  1055. model.setValue("/root/cond/checkcnt","0" );
  1056. //선택된 상세내역이 존재안할경우 저장안함(상세점수의 데이타행이 2번째 행이고 상세내역을 선택하면 grd_recpnt.rowStatus 가 2로 세팅되므로 아무것도 선택안한경우는 이경우임.)
  1057. return false;
  1058. }else if ( checkCnt > 0 && grd_recpnt.rowStatus(2) > 1 ){
  1059. for(var i = 1; i <= grd_recdetail.rows; i++){
  1060. supcd = model.getValue(xRecDetailPath + '[' + i + ']/supcd');
  1061. if(i == (grd_recdetail.rows)){
  1062. if(isChecked == false){//마지막 row의 그룹은 비교할 데이터가 없으므로 체크값이false이면 blocking건다.(20080825)
  1063. messageBox(hngnm + '(이)가 선택되지 않았습니다.' + hngnm + '(를)을', 'C001');//선택하십시오.
  1064. grd_recdetail.topRow = i-1;
  1065. return false;
  1066. }
  1067. }
  1068. if(supcd == '00000000'){
  1069. hngnm = model.getValue(xRecDetailPath + '[' + i + ']/hngnm');
  1070. for(var j = (i + 1); j < grd_recdetail.rows; j++){
  1071. _supcd = model.getValue(xRecDetailPath + '[' + j + ']/supcd');
  1072. //alert('상위 : ' + hngnm + ', 하위 : ' + model.getValue(xRecDetailPath + '[' + j + ']/hngnm') );
  1073. if(supcd == _supcd){
  1074. if(isChecked == false){//다른그룹으로 변경됐을때 isChecked가 false이면 리턴하면서 해당 row를 젤 위로 가도록 보여줌-_-;
  1075. //2008.08.07 dhkim 추가
  1076. //정신과병동 선택했을때 항목중 DT, ECT는 필수아님
  1077. if((clsflag == '5' && hngnm == 'DT')||(clsflag == '5' && hngnm == 'ECT')){
  1078. //skip
  1079. }else{
  1080. messageBox(hngnm + '(이)가 선택되지 않았습니다.' + hngnm + '(를)을', 'C001');//선택하십시오.
  1081. grd_recdetail.topRow = i;
  1082. return false;
  1083. }
  1084. }
  1085. isChecked = false;
  1086. j = grd_recdetail.rows;
  1087. //break;
  1088. }else{
  1089. _flag = model.getValue(xRecDetailPath + '[' + j + ']/flag');
  1090. if(_flag == 'Y'){
  1091. isChecked = true;
  1092. }
  1093. }
  1094. }
  1095. }
  1096. }
  1097. }
  1098. model.setValue("/root/cond/checkcnt",checkCnt );
  1099. return true;
  1100. }
  1101. /**
  1102. * @group :
  1103. * @ver : 2007.12.06
  1104. * @by : 신혁춘
  1105. * @---------------------------------------------------
  1106. * @type : function
  1107. * @access : public
  1108. * @desc : 내환자 정보를 조회한다.
  1109. * @param :
  1110. * @return :
  1111. * @---------------------------------------------------
  1112. */
  1113. function fmisetting(){
  1114. var setid = getUserId();
  1115. var setdeptcd = getUserInfo("dutplcecd");
  1116. model.removeNodeset("/root/send");
  1117. model.removeNodeset("/root/hidden/setting/settingrn");
  1118. if(getScreenMenuParameter() == "SMMND"){
  1119. model.makeValue("/root/send/wardcd", setdeptcd);
  1120. }else{
  1121. model.makeValue("/root/send/wardcd", model.getValue("/root/cond/wardcd"));
  1122. }
  1123. //내환자세팅한 간호사 조회
  1124. if(submit("TRMNW04012")){
  1125. //병동 변경시 내환자 정보 셋팅됨_2009-02-09_SMY수정
  1126. model.setValue("/root/cond/settingrnid", "");
  1127. for(i = 1; i <= getNodesetCount("/root/hidden/setting/settingrn"); i++ ) {
  1128. if (model.getValue("/root/hidden/setting/settingrn[" + i + "]/settingrnid") == setid) {
  1129. model.setValue("/root/cond/settingrnid", setid);
  1130. }
  1131. }
  1132. }
  1133. model.refresh();
  1134. return;
  1135. }
  1136. /**
  1137. * @group :
  1138. * @ver : 2007.12.06
  1139. * @by : 신혁춘
  1140. * @---------------------------------------------------
  1141. * @type : function
  1142. * @access : public
  1143. * @desc : 중증도 상세내역의 설명을 조회한다.
  1144. * @param :
  1145. * @return :
  1146. * @---------------------------------------------------
  1147. */
  1148. function fHistDescs(){
  1149. var iRow = grd_recdetail.row;
  1150. tar_desccnts.value = model.getValue(xRecDetailPath+"["+iRow+"]/desccnts") ;
  1151. tar_desccnts.refresh();
  1152. }
  1153. /**********************************************************************************************************************************************/
  1154. /***********************************************************스크립트정리중입니다******************************************************************/
  1155. /**********************************************************************************************************************************************/
  1156. /**
  1157. * @group :
  1158. * @ver : 2007.12.14
  1159. * @by : 신혁춘
  1160. * @---------------------------------------------------
  1161. * @type : function
  1162. * @access : public
  1163. * @desc : Sign 정보의 인스턴스를 만든다.
  1164. * @param :
  1165. * @return :
  1166. * @---------------------------------------------------
  1167. */
  1168. function fsingnode(){
  1169. var clsrecchk = model.getValue("/root/main/topattribute/clsflag")
  1170. var a = rdo_clsflaga.label;
  1171. var b = rdo_clsflagb.label;
  1172. var c = rdo_clsflagc.label;
  1173. var iRow = grd_recmaster.row
  1174. var xrecgruplistPath = "/root/main/recgrup/recgruplist"
  1175. if(a != ""){
  1176. model.makeValue("/root/main/sing/redord/clsflag",a);
  1177. }
  1178. if(b != ""){
  1179. model.makeValue("/root/main/sing/redord/clsflag",b);
  1180. }
  1181. if(c != ""){
  1182. model.makeValue("/root/main/sing/redord/clsflag",c);
  1183. }
  1184. model.makeValue("/root/main/sing/redord/usernm",model.getValue(xrecgruplistPath+"["+ iRow +"]/usernm"));
  1185. model.makeValue("/root/main/sing/redord/execdt",model.getValue(xrecgruplistPath+"["+ iRow +"]/execdt"));
  1186. model.makeValue("/root/main/sing/redord/exectm",model.getValue(xrecgruplistPath+"["+ iRow +"]/exectm"));
  1187. var hRow = grd_recdetail.rows
  1188. var k = 1
  1189. var o = 1
  1190. var xhistgruplistPath = "/root/main/histgrup/histgruplist"
  1191. var xsinghistgrupPath = "/root/main/sing/histgrup"
  1192. var total = 0
  1193. var only = 0
  1194. var supcd2 = "00000000"
  1195. for(i=0; i <= hRow; i++){
  1196. var flagchk = model.getValue(xhistgruplistPath+"["+i+"]/flag")
  1197. var supcdk = model.getValue(xhistgruplistPath+"["+i+"]/supcd")
  1198. if(supcdk == "00000000"){
  1199. model.makeNode("/root/main/sing/histgrup["+k+"]");
  1200. model.copyNode("/root/main/sing/histgrup["+k+"]", xhistgruplistPath+"["+i+"]");
  1201. k = k + 1
  1202. }
  1203. if(flagchk == "Y"){
  1204. model.makeNode("/root/main/sing/histgrup["+k+"]");
  1205. model.copyNode("/root/main/sing/histgrup["+k+"]", xhistgruplistPath+"["+i+"]");
  1206. k = k + 1
  1207. }
  1208. }
  1209. for(i=0; i <= hRow; i++){
  1210. var flagchk = model.getValue(xhistgruplistPath+"["+i+"]/flag")
  1211. var supcdk = model.getValue(xhistgruplistPath+"["+i+"]/supcd")
  1212. if(supcdk == "00000000"){
  1213. var l = 0
  1214. var grupcd1 = model.getValue(xhistgruplistPath+"["+i+"]/grupcd")
  1215. }
  1216. var supcd1 = model.getValue(xhistgruplistPath+"["+i+"]/supcd")
  1217. var sum1 = model.getValue(xhistgruplistPath+"["+i+"]/sumk")
  1218. var sumk = 0
  1219. if(l==0 && flagchk == "Y" && sum1!="Y"){
  1220. for(k=0; k<=hRow; k++){
  1221. supcd2 = model.getValue(xhistgruplistPath+"["+k+"]/supcd")
  1222. var flagchk1 = model.getValue(xhistgruplistPath+"["+k+"]/flag")
  1223. if(supcd1==supcd2 && supcd1==grupcd1 && flagchk1 == "Y"){
  1224. sumk = sumk + (model.getValue(xhistgruplistPath+"["+k+"]/basepnt") * model.getValue(xhistgruplistPath+"["+k+"]/timsinptyn"));
  1225. total = total + (model.getValue(xhistgruplistPath+"["+k+"]/basepnt") * model.getValue(xhistgruplistPath+"["+k+"]/timsinptyn"));
  1226. model.makeValue(xhistgruplistPath+"["+k+"]/sumk", "Y");
  1227. }
  1228. }
  1229. model.makeNode("/root/main/sing/topsum["+o+"]");
  1230. model.makeValue("/root/main/sing/topsum["+o+"]/sum", sumk);
  1231. if(l==0){
  1232. sumk = 0;
  1233. o = o +1
  1234. }
  1235. }
  1236. }
  1237. model.makeNode("/root/main/sing/topsum["+o+"]");
  1238. model.makeValue("/root/main/sing/topsum["+o+"]/sum", total);
  1239. if(clsrecchk != 7 || clsrecchk != 8 || clsrecchk != 9){
  1240. clsflag = model.getValue("/root/main/topattribute/clsflag") ;
  1241. recflag = "1";
  1242. }
  1243. if (clsrecchk == 8 || clsrecchk == 7){
  1244. clsflag = model.getValue("/root/main/topattribute/clsflag") ;
  1245. recflag = "2";
  1246. }
  1247. if (clsrecchk == 9 ){
  1248. clsflag = model.getValue("/root/main/topattribute/clsflag") ;
  1249. recflag = "3";
  1250. }
  1251. var kRow = grd_recmaster.row
  1252. var xrecgruplistPath = "/root/main/recgrup/recgruplist"
  1253. model.makeValue("/root/send/execdt", model.getValue(xrecgruplistPath+"["+kRow+"]/execdt"))
  1254. model.makeValue("/root/send/clsflag", '1');
  1255. model.makeValue("/root/send/recflag", '9');
  1256. model.makeValue("/root/send/totpnt", total);
  1257. if(submit("TRMNW04014")){
  1258. o = o+1
  1259. model.makeNode("/root/main/sing/topsum["+o+"]");
  1260. model.makeValue("/root/main/sing/topsum["+o+"]/sum", model.getValue("/root/main/sfbp/sfbpinfo/clsgrupkind"));
  1261. }
  1262. }