SPMNR03300.xjs 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/*
  3. 투약시간 관리(SPMNR03300_투약시간관리.xrw - JScript )
  4. - Version :
  5. 1) : Ver.1.00.01
  6. */
  7. var xPathList1 = ds_hidden_param1_list;
  8. var xPathList2 = ds_hidden_param2_list;
  9. var xPathdrugmthdinfo = ds_main_drugmthdinfo;
  10. var xPathdrugmthdlist = ds_main_drugmthdlist_drugmthdlist;
  11. var carebaseddarr = new Array;
  12. var carebasetmarr = new Array;
  13. var gray = "#c0c0c0";
  14. var yellow = "#ffff00";
  15. var yellowishgreen = "#80ff00";
  16. var red = "#ff0000";
  17. var sky = "#00ffff";
  18. var blue = "#0000ff";
  19. var white = "#ffffff";
  20. var yellowishgreen = "#80ff00"
  21. /**
  22. * @group :
  23. * @ver : 2007.06.23
  24. * @by : 최경용
  25. * @---------------------------------------------------
  26. * @type : function
  27. * @access : public
  28. * @desc : 투약시간 관리 초기값 셋팅
  29. * @param :
  30. * @param :
  31. * @return :
  32. * @---------------------------------------------------
  33. */
  34. function fInitialize(){
  35. var param1 = opener.frmf_getParameter("SPMNR03300_param1"); //"/root/temp/warddruginfo/warddruglist"
  36. var param2 = opener.frmf_getParameter("SPMNR03300_param2"); //"/root/temp/warddruginfo/warddruglist/for"
  37. dsf_setCSVToDs("ds_hidden_param1_list", param1); //prcpno별 row
  38. dsf_setCSVToDs("ds_hidden_param2_list", param2); //prcpno의 하위 tims별 row
  39. //---------------(20080912)
  40. var calctims = xPathList1.getColumn(0, "calctims");
  41. //---------------(20080912)
  42. var tims = xPathList1.getColumn(0, "tims");
  43. var drugmthdspccd = xPathList1.getColumn(0, "drugmthdspccd");
  44. var drugtmspec = utlf_transNullToEmpty(xPathList1.getColumn(0, "drugbasetmspec")).split(" ");
  45. //alert(drugtmspec);
  46. var mthdcd = xPathList1.getColumn(0, "mthdcd");
  47. var mthdcnts4 = xPathList1.getColumn(0, "mthdcnts4");
  48. var prcpclscd = xPathList1.getColumn(0, "prcpclscd");
  49. var prcphopedd = xPathList1.getColumn(0, "prcphopedd");
  50. var indd = xPathList1.getColumn(0, "indd"); //(20080620)
  51. var temp_tims = 0;
  52. var medrexecdd = "";
  53. xPathdrugmthdinfo.setColumn(0, "tims", xPathList1.getColumn(0, "tims"));
  54. if(prcpclscd == "A6"){
  55. xPathdrugmthdinfo.setColumn(0, "abbrnm", mthdcnts4);
  56. }else{
  57. xPathdrugmthdinfo.setColumn(0, "abbrnm", drugmthdspccd);
  58. }
  59. xPathdrugmthdinfo.setColumn(0, "prcphopedd", prcphopedd);
  60. xPathdrugmthdinfo.setColumn(0, "indd", indd);
  61. //-------------(20080912)
  62. //for(var i = 1; i <= tims; i++){
  63. for( var i=0 ; i<calctims ; i++ ){
  64. //-------------(20080912)
  65. //if(i != 0){
  66. ds_main_drugmthdlist_drugmthdlist.addRow();
  67. //}
  68. xPathdrugmthdlist.setColumn(i, "mthdcd", mthdcd);
  69. if( !utlf_isNull(drugtmspec[i]) && !utlf_isNull(drugtmspec) ){
  70. if( drugtmspec[i] > 0 ){
  71. xPathdrugmthdlist.setColumn(i, "drugmthdday", Math.floor(Number(drugtmspec[i]) / 2400));
  72. xPathdrugmthdlist.setColumn(i, "c_drugmthdday", Math.floor(Number(drugtmspec[i]) / 2400));
  73. }else{
  74. xPathdrugmthdlist.setColumn(i, "drugmthdday", Math.ceil(Number(drugtmspec[i]) / 2400));
  75. xPathdrugmthdlist.setColumn(i, "c_drugmthdday", Math.ceil(Number(drugtmspec[i]) / 2400));
  76. }
  77. if( Number(drugtmspec[i]) < 0 ){
  78. temp_tims = -Number(drugtmspec[i] % 2400);
  79. temp_tims = fCarec_GetFillZeno(temp_tims, 4,0);
  80. }else{
  81. temp_tims = drugtmspec[i] % 2400;
  82. temp_tims = fCarec_GetFillZeno(temp_tims, 4,0);
  83. }
  84. xPathdrugmthdlist.setColumn(i, "drugmthdtime", temp_tims);
  85. xPathdrugmthdlist.setColumn(i, "c_drugmthdtime", temp_tims);
  86. }
  87. //투약여부
  88. if( xPathList2.getColumn(i, "medrexecdd") != '00000000' ){
  89. xPathdrugmthdlist.setColumn(i, "medrexecflag", "Y");
  90. } else {
  91. xPathdrugmthdlist.setColumn(i, "medrexecflag", "N");
  92. }
  93. }
  94. //--------------------------------------------------------
  95. //처방 1개 기준시간을 변경할 경우 실시한 횟수는 변경 불가
  96. //공통으로 설정된 것을 변경하는 것이 아니라.
  97. //한 자료에 대한 시간대를 변경하는것이다.
  98. //--------------------------------------------------------
  99. if( xPathList1.rowcount == 1 ){
  100. var sExprEdit1 = "expr:(";
  101. var sExprEdit2 = "expr:(";
  102. var sExprBack = "EXPR(";
  103. for( var k=0 ; k<xPathList2.rowcount ; k++ ){
  104. medrexecdd = xPathList2.getColumn(k, "medrexecdd");
  105. if(medrexecdd != "00000000"){
  106. sExprEdit1 += "currow == "+k+" && (self.col == "+3+" || self.col == "+4+") ? 'none' : ";
  107. sExprEdit2 += "currow == "+k+" && (self.col == "+3+" || self.col == "+4+") ? 'none' : ";
  108. sExprBack += "currow == "+k+" ? '"+yellow+"' : ";
  109. }
  110. }
  111. sExprEdit1 += "'text')";
  112. sExprEdit2 += "'mask')";
  113. sExprBack += "'')";
  114. for( var i=0 ; i<grd_mthd.getCellCount("Body") ; i++ ){
  115. if( i==3 ){
  116. grd_mthd.setCellProperty("Body", i, "edittype", sExprEdit1);
  117. grd_mthd.setCellProperty("Body", i, "background", sExprBack);
  118. grd_mthd.setCellProperty("Body", i, "background2", sExprBack);
  119. }else if( i==4 ){
  120. grd_mthd.setCellProperty("Body", i, "edittype", sExprEdit2);
  121. grd_mthd.setCellProperty("Body", i, "background", sExprBack);
  122. grd_mthd.setCellProperty("Body", i, "background2", sExprBack);
  123. }else{
  124. grd_mthd.setCellProperty("Body", i, "background", sExprBack);
  125. grd_mthd.setCellProperty("Body", i, "background2", sExprBack);
  126. }
  127. }
  128. }
  129. //-------------(20080912)
  130. //if(model.getValue(xPathdrugmthdinfo + "/tims") == "1"){
  131. if( xPathdrugmthdinfo.getColumn(0, "calctims") == "1" ){
  132. //-------------(20080912)
  133. ipt_sinterval.enable = false;
  134. ipt_hinterval.enable = false;
  135. ipt_minterval.enable = false;
  136. btn_interval.enable = false;
  137. }
  138. //----------------(20080603)
  139. // 투약기준시간관리에서 공통&용법 중 default가 'N'인 것만 추출하여 콤보를 구성함
  140. ds_main_drugmthdinfo.setColumn(0, "abbrcd", ds_main_drugmthdlist_drugmthdlist.getColumn(0, "mthdcd"));
  141. ds_send_reqdata.setColumn(0, "direccd", ds_main_drugmthdinfo.getColumn(0, "abbrcd")); //desc=용법코드
  142. //----------(20080912)
  143. //외용약은 횟수3이나 시간대정보는 1로 설정되어 있음
  144. //model.makeValue(sPath + "/exectims",model.getValue("/root/main/drugmthdinfo/tims") ); //desc=처방횟수
  145. ds_send_reqdata.setColumn(0, "exectims", ds_main_drugmthdinfo.getColumn(0, "calctims")); //desc=처방횟수
  146. //----------(20080912)
  147. ds_send_reqdata.setColumn(0, "flag", "3"); //desc=구분
  148. ds_send_reqdata.setColumn(0, "deptcd", "ALL"); //desc=부서코드
  149. ds_send_reqdata.setColumn(0, "prcpcd", "ALL"); //desc=약품코드
  150. var oParam = {};
  151. oParam.id = "TRMNR03301";
  152. oParam.service = "caremedirecapp.CareMediRec";
  153. oParam.method = "reqGetTimeData";
  154. oParam.inds = "reqdata=ds_send_reqdata";
  155. oParam.outds = "ds_temp_timeinfo_timelist=timelist";
  156. oParam.async = false;
  157. //oParam.callback = "cf_TRMNR03301";
  158. tranf_submit(oParam);
  159. //------------------------------
  160. }
  161. /**
  162. * @group :
  163. * @ver : 2008.06.03
  164. * @by : 김보성
  165. * @---------------------------------------------------
  166. * @type : function
  167. * @access : public
  168. * @desc : 투약기준시간정보에서 공통&용법에서 DEFALUT!='Y'인것을 추출한다.
  169. * @param :
  170. * @return :
  171. * @---------------------------------------------------
  172. * @param :
  173. */
  174. function fTimeApply() {
  175. //var stime = model.getValue("/root/main/drugmthdinfo/drugtmspec"); //화면으로 계산된 시간대(value) 2200 0800 label
  176. //var stime = model.getValue("/root/main/drugmthdinfo/drugtmspeccal"); //화면으로 계산된 시간대(label) 2200 3200 value
  177. //var stime = cmb_mthd.label;
  178. var stime = cmb_mthd.value;
  179. var sPath = "ds_main_drugmthdlist_drugmthdlist";
  180. if( utlf_isNull(stime) ){
  181. sysf_messageBox("공통지정시간이 선택되지 않았습니다","E999");
  182. return;
  183. }
  184. //---------------------------------------------------------
  185. var drugtmspec = stime.split(" ");
  186. var tims = drugtmspec.length;
  187. var prcpno = xPathList1.getColumn(0, "prcpno");
  188. var prcpdd = xPathList1.getColumn(0, "prcpdd");
  189. var prcpcd = xPathList1.getColumn(0, "prcpcd");
  190. var execprcptims = xPathList1.getColumn(0, "tims");
  191. var carebasedd = "";
  192. var carebasetm = "";
  193. var execprcpnoarr = xPathList1.getColumn(0, "execprcpnoarr").split(" ");
  194. var execuniqnoarr = xPathList1.getColumn(0, "execuniqnoarr").split(" ");
  195. var carebasetmspec = "";
  196. var tmcalculate = 0;
  197. var interval = 0;
  198. var sExprBack = "EXPR(";
  199. for( var i=0 ; i<tims ; i++ ){
  200. carebasedd = parseInt(drugtmspec[i] / 2400); //기준 day
  201. carebasetm = fCarec_GetFillZeno((drugtmspec[i] % 2400),4,0); //기준 시간대
  202. carebaseddarr[i] = carebasedd;
  203. carebasetmarr[i] = carebasetm;
  204. if( xPathdrugmthdlist.getColumn(i, "medrexecflag") == "Y" ){
  205. carebasedd = xPathdrugmthdlist.getColumn(i, "c_drugmthdday");
  206. carebasetm = xPathdrugmthdlist.getColumn(i, "c_drugmthdtime");
  207. sysf_messageBox("투약된 자료는 수정할수 없습니다.","E999");
  208. } else {
  209. xPathdrugmthdlist.setColumn(i, "c_drugmthdday", carebasedd);
  210. xPathdrugmthdlist.setColumn(i, "c_drugmthdtime", carebasetm);
  211. sExprBack += "currow == "+i+" ? '"+gray+"' : ";
  212. }
  213. tmcalculate = (Number(carebasetm) + Number(carebasedd) * 2400);
  214. tmcalculate = fCarec_GetFillZeno(tmcalculate,4,0);
  215. if( i == 0 ){
  216. carebasetmspec += tmcalculate;
  217. }else{
  218. carebasetmspec += " " + tmcalculate;
  219. }
  220. }
  221. sExprBack += "'')";
  222. for( var i=0 ; i<grd_mthd.getCellCount("Body") ; i++ ){
  223. grd_mthd.setCellProperty("Body", i, "background", sExprBack);
  224. grd_mthd.setCellProperty("Body", i, "background2", sExprBack);
  225. }
  226. //-----------------(20080605)
  227. //fSaveMthdInfo(carebasetmspec,"N");
  228. //opener.javascript.setParameter("SPMNR03300_RtnParamYN", "Y");
  229. //model.close();
  230. }
  231. /**
  232. * @group :
  233. * @ver : 2007.06.23
  234. * @by : 최경용
  235. * @---------------------------------------------------
  236. * @type : function
  237. * @access : public
  238. * @desc : 투약시간 변경(시간입력)
  239. * @param :
  240. * @return :
  241. * @---------------------------------------------------
  242. * @param :
  243. */
  244. function fSaveDrugmthd(){
  245. var tims = xPathList1.getColumn(0, "tims");
  246. var prcpno = "";
  247. var prcpdd = "";
  248. var prcpcd = "";
  249. var execprcptims = "";
  250. var carebasedd = "";
  251. var carebasetm = "";
  252. var execprcpnoarr = "";
  253. var execuniqnoarr = "";
  254. var prcphistnoarr = "";
  255. var carebasetmspec = "";
  256. var tmcalculate = 0;
  257. //check(20080606)
  258. //--------------(20080912)
  259. var calctims = xPathList1.getColumn(0, "calctims");
  260. //for(var i = 1; i <= tims; i++){
  261. for( var i=0 ; i<calctims ; i++ ){
  262. //--------------(20080912)
  263. carebasedd = xPathdrugmthdlist.getColumn(i, "c_drugmthdday");
  264. carebasetm = xPathdrugmthdlist.getColumn(i, "c_drugmthdtime");
  265. //alert(carebasedd + "/" + carebasetm);
  266. carebaseddarr[i] = carebasedd;
  267. carebasetmarr[i] = carebasetm;
  268. if(carebasedd < 0){
  269. tmcalculate = (-Number(carebasetm) + (Number(carebasedd) * 2400));
  270. }else{
  271. tmcalculate = (Number(carebasetm) + (Number(carebasedd) * 2400));
  272. }
  273. //alert(tmcalculate);
  274. tmcalculate = fCarec_GetFillZeno(tmcalculate, 4,0);
  275. //입력사항 체크
  276. if(carebasedd != "-3" && carebasedd != "-2" && carebasedd != "-1" && carebasedd != "0" &&
  277. carebasedd != "3" && carebasedd != "2" && carebasedd != "1"){
  278. sysf_messageBox("Day는 -3일 ~ 3일만 입력할수 있습니다.","I999");
  279. return;
  280. }
  281. if(carebasetm.length != 4 || !utlf_isNum(carebasetm)){
  282. sysf_messageBox("기준시간은 4자리를 입력해야 합니다.","I999");
  283. return;
  284. }
  285. if(!utlf_isValidDateTime(carebasetm, "hhmm")){
  286. sysf_messageBox("기준시간이 시간 형식에 맞지 않습니다.","I999");
  287. return;
  288. }
  289. //-----------------------------(20080620)
  290. //입원일이전으로 투약시간대를 변경하지 못하게 한다.
  291. var sindd = ds_main_drugmthdinfo.getColumn(0, "indd"); //입원일
  292. var sprcphopedd = ds_main_drugmthdinfo.getColumn(0, "prcphopedd"); //적용일
  293. //alert (sprcphopedd + "/" + carebasedd);
  294. var scalcdd = getDateAddc(sprcphopedd, carebasedd); //계산일
  295. if (scalcdd < sindd) {
  296. sysf_messageBox("입원일이전으로 계산되었습니다. 확인하십시오.","I999");
  297. return;
  298. }
  299. //-----------------------------
  300. //-----------------------------(20080617)
  301. //여러가지 문제가 걸려있음
  302. //순서를 변경하면 안됨(막을지를 테스트 중)
  303. //막는대신에 시간대를 정렬해야한다.
  304. //-----------------------------
  305. // if(i != 1){
  306. // if(model.getValue(xPathdrugmthdlist + "[" + (i-1) + "]/c_drugmthdday") >= carebasedd &&
  307. // model.getValue(xPathdrugmthdlist + "[" + (i-1) + "]/c_drugmthdtime") > carebasetm){
  308. // messageBox((i-1) + "회차 시간보다 " + i + "회차 시간이\n작을 수 없습니다.","I999");
  309. // return;
  310. // }
  311. // }
  312. //-------------------------------
  313. if( i == 0 ){
  314. carebasetmspec += tmcalculate;
  315. }else{
  316. carebasetmspec += " " + tmcalculate;
  317. }
  318. }
  319. //test
  320. //return;
  321. //-----------------(20080605)
  322. //설정하고 저장함
  323. fSaveMthdInfo(carebasetmspec,"Y");
  324. //opener.javascript.setParameter("SPMNR03300_RtnParamYN", "Y");
  325. //model.close();
  326. //-----------------
  327. }
  328. /**
  329. * @group :
  330. * @ver : 2007.06.23
  331. * @by : 최경용
  332. * @---------------------------------------------------
  333. * @type : function
  334. * @access : public
  335. * @desc : 투약시간 변경(Interval 지정)
  336. * @param :
  337. * @param :
  338. * @return :
  339. * @---------------------------------------------------
  340. */
  341. function fSaveInterval(){
  342. var tims = xPathList1.getColumn(0, "tims"); //xPathList1 : "/root/hidden/param1/list" //yjh1
  343. var prcpno = xPathList1.getColumn(0, "prcpno");
  344. var prcpdd = xPathList1.getColumn(0, "prcpdd");
  345. var prcpcd = xPathList1.getColumn(0, "prcpcd");
  346. var execprcptims = xPathList1.getColumn(0, "tims");
  347. var carebasedd = "";
  348. var carebasetm = "";
  349. var execprcpnoarr = xPathList1.getColumn(0, "execprcpnoarr").split(" ");
  350. var execuniqnoarr = xPathList1.getColumn(0, "execuniqnoarr").split(" ");
  351. var carebasetmspec = "";
  352. var tmcalculate = 0;
  353. var s_interval = utlf_transNullToEmpty(ds_main_drugmthdinfo.getColumn(0, "s_interval"));
  354. var h_interval = utlf_transNullToEmpty(ds_main_drugmthdinfo.getColumn(0, "h_interval"));
  355. var m_interval = utlf_transNullToEmpty(ds_main_drugmthdinfo.getColumn(0, "m_interval"));
  356. var interval = 0;
  357. //---------------(20080912)
  358. var calctims = xPathList1.getColumn(0, "calctims"); //xPathList1 : "/root/hidden/param1/list"
  359. var sExprBack = "EXPR(";
  360. var bolExpr1 = false;
  361. var bolExpr2 = false;
  362. //for(var i = 1; i <= tims; i++){
  363. for( var i=0 ; i<calctims ; i++ ){
  364. //---------------(20080912)
  365. //추민수start -> 노란색 Expr살리기
  366. if(grd_mthd.getCellProperty("Body", i, "background").length > 8 || grd_mthd.getCellProperty("Body", i, "background2").length > 8)
  367. {
  368. sExprBack = grd_mthd.getCellProperty("Body", i, "background").replace("'')", "");
  369. }
  370. //추민수 end
  371. if( i == 0 ){
  372. interval = Number(s_interval); //interval 지정(시작)
  373. }else{
  374. interval = Number(fCarec_GetIntervalTime(s_interval.substr(0,2), s_interval.substr(2,2), h_interval, m_interval, i));
  375. }
  376. carebasedd = parseInt(interval / 2400);
  377. carebasetm = fCarec_GetFillZeno((interval % 2400),4,0);
  378. carebaseddarr[i] = carebasedd;
  379. carebasetmarr[i] = carebasetm;
  380. //투약되었으면 변경할수 없다.
  381. if( xPathdrugmthdlist.getColumn(i, "medrexecflag") != "Y" ){
  382. xPathdrugmthdlist.setColumn(i, "c_drugmthdday", carebasedd);
  383. xPathdrugmthdlist.setColumn(i, "c_drugmthdtime", carebasetm);
  384. //grd_mthd.cellstyle("background-color",i+1,grd_mthd.colref("c_drugmthdday"),i+1,grd_mthd.colref("c_drugmthdtime")) = gray;
  385. sExprBack += "currow == "+i+" ? '"+gray+"' : ";
  386. } else {
  387. carebasedd = xPathdrugmthdlist.getColumn(i, "c_drugmthdday");
  388. carebasetm = xPathdrugmthdlist.getColumn(i, "c_drugmthdtime");
  389. sysf_messageBox("구분이 'Y'인 경우 투약된 자료로 변경할 수 없습니다.","E999");
  390. }
  391. tmcalculate = (Number(carebasetm) + Number(carebasedd) * 2400);
  392. tmcalculate = fCarec_GetFillZeno(tmcalculate,4,0);
  393. if( i == 0 ){
  394. carebasetmspec += tmcalculate;
  395. }else{
  396. carebasetmspec += " " + tmcalculate;
  397. }
  398. }
  399. sExprBack += "'')";
  400. for( var i=0 ; i<grd_mthd.getCellCount("Body") ; i++ ){
  401. grd_mthd.setCellProperty("Body", i, "background", sExprBack);
  402. grd_mthd.setCellProperty("Body", i, "background2", sExprBack);
  403. }
  404. //-----------------(20080605)
  405. //fSaveMthdInfo(carebasetmspec,"N");
  406. //opener.javascript.setParameter("SPMNR03300_RtnParamYN", "Y");
  407. //model.close();
  408. //-----------------
  409. }
  410. /**
  411. * @group :
  412. * @ver : 2007.06.23
  413. * @by : 최경용
  414. * @---------------------------------------------------
  415. * @type : function
  416. * @access : public
  417. * @desc : 투약시간 저장
  418. * @param :
  419. * @param :
  420. * @return :
  421. * @---------------------------------------------------
  422. */
  423. function fSaveMthdInfo(carebasetmspec,saveflag){
  424. var execprcptims = "";
  425. var prcpno = "";
  426. var prcpdd = "";
  427. var prcpcd = "";
  428. var execprcptims = "";
  429. var execprcpnoarr = "";
  430. var execuniqnoarr = "";
  431. var prcphistnoarr = "";
  432. var carebasedd = "";
  433. var carebasetm = "";
  434. var tims = xPathList1.getColumn(0, "tims");
  435. //------------(20080912)
  436. //var tims = model.getValue(xPathList1 + "/tims");
  437. var calctims = xPathList1.getColumn(0, "calctims");
  438. //------------(20080912)
  439. var drugtmspec = xPathList1.getColumn(0, "drugtmspec");
  440. //---------------(20080617)
  441. //시간대가 순서에 관계없이 변경되므로 시간대를 정렬해야한다.
  442. //-------------------------
  443. //-3200 -3000 2100
  444. var carebasetmspec_bak = carebasetmspec;
  445. carebasetmspec = sortHashKeysString(carebasetmspec);
  446. ////alert(carebasetmspec);
  447. //return;
  448. //-------------------------
  449. //-----------------(20081104)
  450. var listcnt = -1;
  451. //-----------------(20081104)
  452. ds_send_savedata_mthdinfo.clearData();
  453. //hidden정보 : prcpno별 row
  454. for( var j=0 ; j<xPathList1.rowcount ; j++ ){ //xPathList1 : /root/hidden/param1/list :
  455. execprcptims = xPathList1.getColumn(j, "tims");
  456. prcpno = xPathList1.getColumn(j, "prcpno");
  457. prcpdd = xPathList1.getColumn(j, "prcpdd");
  458. prcpcd = xPathList1.getColumn(j, "prcpcd");
  459. execprcptims = xPathList1.getColumn(j, "tims");
  460. execprcpnoarr = xPathList1.getColumn(j, "execprcpnoarr").split(" ");
  461. execuniqnoarr = xPathList1.getColumn(j, "execuniqnoarr").split(" ");
  462. prcphistnoarr = xPathList1.getColumn(j, "prcphistnoarr").split(" ");
  463. // <execprcpnoarr>1 2 3</execprcpnoarr>
  464. // <execuniqnoarr>23634 23635 23636</execuniqnoarr>
  465. // <prcphistnoarr>1 1 1</prcphistnoarr>
  466. //-----------(20080912)
  467. //for(var k = 1; k <= tims; k++){ ///xPathdrugmthdlist : root/main/drugmthdlist/drugmthdlist(화면상의 정보)
  468. for( var k=0 ; k<calctims ; k++ ){ ///xPathdrugmthdlist : root/main/drugmthdlist/drugmthdlist(화면상의 정보)
  469. //-----------(20080912)
  470. carebasedd = xPathdrugmthdlist.getColumn(k, "c_drugmthdday"); //변경일자(입력값)
  471. carebasetm = xPathdrugmthdlist.getColumn(k, "c_drugmthdtime"); //변경시각(입력값)
  472. ds_hidden_mthdinfo.setColumn(0, "prcpno", prcpno);
  473. ds_hidden_mthdinfo.setColumn(0, "prcpdd", prcpdd);
  474. ds_hidden_mthdinfo.setColumn(0, "prcpcd", prcpcd);
  475. ds_hidden_mthdinfo.setColumn(0, "execprcptims", execprcptims);
  476. ds_hidden_mthdinfo.setColumn(0, "prcphistno", prcphistnoarr[k]);
  477. ds_hidden_mthdinfo.setColumn(0, "execprcpno", execprcpnoarr[k]);
  478. ds_hidden_mthdinfo.setColumn(0, "execprcpuniqno", execuniqnoarr[k]);
  479. //carebaseddarr : 전역변수
  480. //carebasetmarr : 전역변수
  481. //-------------------(20081012)
  482. //처방일기준으로
  483. //model.setValue("/root/hidden/mthdinfo/carebasedd", getDateAddc(prcpdd, carebaseddarr[k-1]));
  484. var prcphopedd = xPathList1.getColumn(j, "prcphopedd");
  485. //처방희망일기준으로
  486. ds_hidden_mthdinfo.setColumn(0, "carebasedd", getDateAddc(prcphopedd, carebaseddarr[k]));
  487. //-------------------(20081012)
  488. ds_hidden_mthdinfo.setColumn(0, "carebasetm", carebasetmarr[k] + "00");
  489. ds_hidden_mthdinfo.setColumn(0, "pid", xPathList1.getColumn(0, "pid"));
  490. ds_hidden_mthdinfo.setColumn(0, "carebasetmspec", carebasetmspec);
  491. //---------------------(20081104)
  492. //if(model.getValue(xPathList2 + "[" + k + "]/medrexistyn") == "N" || drugtmspec == ""){
  493. listcnt ++;
  494. //alert(j + "/" + k + "/" + listcnt);
  495. //alert(model.getValue(xPathList2 + "[" + listcnt + "]/medrexistyn"));
  496. if( xPathList2.getColumn(listcnt, "medrexistyn") == "N" || utlf_isNull(drugtmspec) ){
  497. //---------------------(20081104)
  498. ds_hidden_mthdinfo.setColumn(0, "status", "I");
  499. }else{
  500. ds_hidden_mthdinfo.setColumn(0, "status", "U");
  501. }
  502. ds_send_savedata_mthdinfo.addRow();
  503. ds_send_savedata_mthdinfo.copyRow(ds_send_savedata_mthdinfo.rowcount-1, ds_hidden_mthdinfo, 0);
  504. }
  505. }
  506. //alert("저장전:" + saveflag);
  507. if (saveflag == "Y") {
  508. var oParam = {};
  509. oParam.id = "TXMNR03301";
  510. oParam.service = "caremedirecapp.CareMediRec";
  511. oParam.method = "reqExeDrugBaseInfo";
  512. oParam.inds = "reqcond=ds_send_savedata_mthdinfo";
  513. oParam.outds = "";
  514. oParam.async = false;
  515. //oParam.callback = "cf_TXMNR03301";
  516. tranf_submit(oParam);
  517. opener.frmf_setParameter("SPMNR03300_RtnParamYN", "Y");
  518. close();
  519. }
  520. }
  521. /*
  522. 정렬하기
  523. */
  524. function sortHashKeysString(sColString){
  525. var sColArray = new Array;
  526. //string -> 배열로
  527. var sCol = sColString.split(" ");
  528. var temp = "";
  529. for(var i = 0; i < sCol.length; i++){
  530. //sColArray[i] = Number(sCol[i]);
  531. sColArray[i] = fCarec_GetFillZeno(sCol[i],4,0);
  532. }
  533. //배열 정렬
  534. for(var i = 0; i < sColArray.length; i++){
  535. for(var j = 0; j < sColArray.length; j++){
  536. if(sort2(sColArray[i],sColArray[j]) == false){
  537. temp = fCarec_GetFillZeno(sColArray[i],4,0);
  538. sColArray[i] = fCarec_GetFillZeno(sColArray[j],4,0);
  539. sColArray[j] = fCarec_GetFillZeno(temp,4,0);
  540. }
  541. }
  542. }
  543. //중복제거(중복가능)
  544. // sColString = "";
  545. // for(var i = 0; i < sColArray.length; i++){
  546. // if ( sColArray[i] == "") continue;
  547. //
  548. // for(var j = i+1; j < sColArray.length; j++){
  549. // if ( sColArray[i] == sColArray[j]) sColArray[j] = "";
  550. // }
  551. // }
  552. //배열 -> string
  553. sColString = "";
  554. for(var i = 0; i < sColArray.length; i++){
  555. //횟수1인 처방에 대해서 기준시간을 00:00으로 변경시 발생되는 오류 수정_20091109_SMY
  556. //if (sColArray[i] == "0000") continue;
  557. sColString += sColArray[i] + " ";
  558. }
  559. //마지막 " " 제거
  560. sColString = sColString.substr(0,sColString.length-1);
  561. //string 리턴
  562. return sColString;
  563. }
  564. //--------------------(20080605)
  565. // 음수끼리의 정렬은 반대임(기능추가)
  566. // -1800 < -2000 임 시간이므로
  567. //--------------------
  568. function sort2(a,b){
  569. // 두변수가 전부 음수인 경우(음수,음수) -1800 < -2000
  570. if ( parseInt(a) < 0 && parseInt(b) < 0 ) {
  571. if(parseInt(a) < parseInt(b)){
  572. return true;
  573. }else if(parseInt(a) > parseInt(b)){
  574. return false;
  575. }else{
  576. var sort = new Array(a,b);
  577. sort.sort();
  578. return (sort[0] == a)? false:true;
  579. }
  580. } else {
  581. //그외경우 (음수,양수/양수,음수/양수,양수)
  582. if(parseInt(a) > parseInt(b)){
  583. return true;
  584. }else if(parseInt(a) < parseInt(b)){
  585. return false;
  586. }else{
  587. var sort = new Array(a,b);
  588. sort.sort();
  589. return (sort[0] == a)? false:true;
  590. }
  591. }
  592. }
  593. ]]></Script>