SMMND02700.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432
  1. /*
  2. HD Scheduling_개인별예약현황 (SMMND02700.xrw - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. */
  6. var sRtn = getCurrentDate(); //현재일자
  7. var rsrvdd1 = model.getValue("/root/temp/savedata/rsrvdd1");
  8. var rsrvdd2 = model.getValue("/root/temp/savedata/rsrvdd2");
  9. var rsrvterm = getDateInterval(rsrvdd1,rsrvdd2); //두 일자의 차이를 일자로 리턴
  10. /**
  11. * @group :
  12. * @ver : 2007.04.19
  13. * @by : 김진아
  14. * @---------------------------------------------------
  15. * @type : function
  16. * @access : public
  17. * @desc : 화면 초기화
  18. * @param :
  19. * @return :
  20. * @---------------------------------------------------
  21. */
  22. function fDone(){
  23. model.makeNode("/root/temp/savedata/status");
  24. model.setValue("/root/temp/savedata/status","i");
  25. //fGetDate(rsrvdd1,rsrvdd2);
  26. //fInitCellColor(rsrvdd1,rsrvdd2);
  27. }
  28. // 화면 open시 화면 스타일 초기화 기능을 수행한다.
  29. function fInitStyle() {
  30. //font style
  31. grd_calendar.cellStyle("color",1 , 0, 6, 0) = "#ff0000";
  32. grd_calendar.cellStyle("color",1 , 6, 6, 6) = "#0000ff";
  33. grd_calendar.cellStyle("font-size",1 , 0, 1, 6) = "12px";
  34. grd_calendar.cellStyle("font-size",2 , 0, 2, 6) = "12px";
  35. grd_calendar.cellStyle("font-size",3 , 0, 3, 6) = "12px";
  36. grd_calendar.cellStyle("font-size",4 , 0, 4, 6) = "12px";
  37. grd_calendar.cellStyle("font-size",5 , 0, 5, 6) = "12px";
  38. grd_calendar.cellStyle("font-size",6 , 0, 6, 6) = "12px";
  39. grd_calendar.cellStyle("font-size",7 , 0, 7, 6) = "12px";
  40. }
  41. //화면 컨트롤 초기화
  42. function fInitControl()
  43. {
  44. //서버 일자로 처리
  45. today = (model.getValue("/root/temp/savedata/getdatelist/getdate/savedate")).toDate("YYYYMMDD");
  46. var isYear, isMonth, ls_day;
  47. isYear = (today.getYear()).toString();
  48. isMonth = (today.getMonth() + 1).toString();
  49. //1~9월까지 숫자 앞에 0을 붙여준다. ex) 1 -> 01
  50. if ((isMonth.toString()).length == 1) isMonth = ("0".concat(isMonth.toString()));
  51. thisMonth = isYear.concat(isMonth);
  52. if (thisMonth < '200001')
  53. {
  54. model.setValue("/root/main/year","2000");
  55. model.setValue("/root/main/month","01");
  56. model.refresh();
  57. }
  58. else
  59. {
  60. model.setValue("/root/main/year",isYear);
  61. model.setValue("/root/main/month",isMonth);
  62. model.refresh();
  63. }
  64. }
  65. //해당 일자의 병원 일정 정보를 얻어 온다
  66. function fGetHospitalCalendar()
  67. {
  68. var dd = (model.getValue("/root/main/year")).concat(model.getValue("/root/main/month"));
  69. model.makeNode("/root/send/date");
  70. model.setValue("/root/send/date", dd);
  71. model.removeNodeset("/root/main/caldatalist");
  72. model.removeNodeset("/root/main/caldatalist/caldatainfo");
  73. if (submit("TRMND01109") == true) return true;
  74. else return false;
  75. }
  76. /**
  77. * @group :
  78. * @ver : 2007.05.21
  79. * @by : 김진아
  80. * @---------------------------------------------------
  81. * @type : function
  82. * @access : public
  83. * @desc : 달력정보 및 일자별 예약인원수를 달력에 표시
  84. * @param :
  85. * @return :
  86. * @---------------------------------------------------
  87. */
  88. function fCreateCalendar()
  89. {
  90. //TFclearNodeValue("/root/main/cal");
  91. //서버로 자료 요청
  92. if ( fGetHospitalCalendar() != true ){
  93. alert(" line 222 : 데이터를 가져오지 못했습니다.");
  94. //에러로 인한 초기화면으로 세팅
  95. fInitControl();
  96. //fCreateCalendar();
  97. return false;
  98. }else{
  99. model.resetInstanceNode("/root/main/cal");
  100. }
  101. grd_calendar.cellStyle("color", 1 , 0, 6, 6) = "#000000"; //평일
  102. grd_calendar.cellStyle("color", 1 , 0, 6, 0) = "#ff0000"; //일요일
  103. grd_calendar.cellStyle("color", 1 , 6, 6, 6) = "#0000ff"; //토요일
  104. var row, col;
  105. var sDW = "sun mon tue wed thu fri sat";
  106. var sDay = sDW.split(" ");
  107. var xPath = "/root/main/caldatalist/caldatainfo"
  108. for ( i = 1; i <= getNodesetCount(xPath); i++) {
  109. row = model.getValue(xPath + "[" + i + "]/weekno" );
  110. col = model.getValue(xPath + "[" + i + "]/dw" ) - 1;
  111. buff = model.getValue(xPath + "[" + i + "]/holiflag");
  112. if( buff == "1"){ //공휴일
  113. grd_calendar.cellStyle("color", row, col, row, col) = "#ff0000";
  114. }
  115. model.setValue("/root/main/cal/weeks[" + row + "]/"+sDay[col], model.getValue(xPath+"[" + i + "]/day" ));
  116. } //end of for
  117. model.refresh();
  118. } //end of func
  119. //지정된 일자에 해당하는 cell에 색상을 표시한다.
  120. function fInitCellColor(rsrvdd1, rsrvdd2){
  121. //달력초기화
  122. for(var i=0;i<7;i++){
  123. for(var j=0;j<7;j++){
  124. grd_calendar.cellStyle("background-color", i, j) = "white";
  125. }
  126. }
  127. var dw = model.getValue("/root/temp/savedata/dw");
  128. var dwcol; //요일값 하나씩 가져오기 위한 변수
  129. for(var i=0;i<13;i=i+2){ //체크박스의 value값
  130. for(var j=1;j<7;j++){
  131. var dd = model.getValue("/root/send/date");
  132. if(dw.substr(i,1)!=""){
  133. dwcol = parseInt(dw.substr(i,1)); //체크박스에서 요일선택 시 구분하여 하나씩 가져오기
  134. //fInitCellColor(j,dwcol); //지정된 일자에 해당하는 cell에 색상 지정
  135. if(grd_calendar.textmatrix(j,dwcol) < 10){
  136. dd = dd + "0" + grd_calendar.textmatrix(j,dwcol);
  137. }else{
  138. dd = dd + grd_calendar.textmatrix(j,dwcol);
  139. }
  140. if((dd>=rsrvdd1) && (dd<=rsrvdd2) && (grd_calendar.textmatrix(j,dwcol)!="")){
  141. grd_calendar.cellStyle("background-color", j, dwcol) = "#cc99ff";
  142. }
  143. }
  144. }
  145. }
  146. model.refresh();
  147. }
  148. /**
  149. * @group :
  150. * @ver : 2007.04.19
  151. * @by : 김진아
  152. * @---------------------------------------------------
  153. * @type : function
  154. * @access : public
  155. * @desc : 예약정보 저장 기간 지정
  156. * @param :
  157. * @return :
  158. * @---------------------------------------------------
  159. */
  160. function fGetDate(rsrvdd1, rsrvdd2){
  161. var dd = model.getValue("/root/send/date"); //해당 년,월
  162. var iValuedd;
  163. for(var i=1;i<7;i++){
  164. for(var j=0;j<7;j++){
  165. if(grd_calendar.textmatrix(i,j)<10){
  166. iValuedd = "0" + grd_calendar.textmatrix(i,j); //셀의 일자
  167. }else{
  168. iValuedd = grd_calendar.textmatrix(i,j);
  169. }
  170. if((dd+iValuedd) == rsrvdd1){
  171. model.makeValue("/root/main/datelist/dateinfo/startfocus", (i +" "+j)); //예약시작시점의 위치값을 startdate에 넣어줌.
  172. }
  173. if((dd+iValuedd) == rsrvdd2){
  174. model.makeValue("/root/main/datelist/dateinfo/endfocus", (i +" "+j)); //예약종료시점의 위치값을 enddate에 넣어줌.
  175. }
  176. }//end of for
  177. }//end of for
  178. }
  179. /**
  180. * @group :
  181. * @ver : 2007.04.19
  182. * @by : 김진아
  183. * @---------------------------------------------------
  184. * @type : function
  185. * @access : public
  186. * @desc : 예약정보 저장시
  187. * @param :
  188. * @return :
  189. * @---------------------------------------------------
  190. */
  191. function fSaveInfo(){
  192. var sMatnDial = model.getValue ( "/root/temp/savedata/matndialflag" ); // 유지환자 투석구분
  193. var xSavePath = "/root/temp/savedata";
  194. var xRsltSavePath = "/root/send/savedata";
  195. if( sMatnDial == "P" ){ //복막유지환자로 등록되어 있는 경우
  196. messageBox("복막투석 유지환자로 등록되어 있는 환자", "E008", "투석구분을 변경하십시오.");
  197. model.close();
  198. } else {
  199. model.copyNode("/root/send" , "/root/temp");
  200. if( sMatnDial == "H" ){ //투석유지환자로 등록되어 있는 경우
  201. if(model.getValue( xRsltSavePath + "/matnflag") != "1" ){ //유지환자(1:유지구분)가 아님
  202. if( model.getValue( xRsltSavePath + "/maintepatrgstdd") == sRtn ){ //오늘일자
  203. model.makeNode ( xRsltSavePath + "/status" );
  204. model.setValue ( xRsltSavePath + "/status", "u" ); //상태값 지정(update)
  205. }else if( model.getValue( xRsltSavePath + "/maintepatrgstdd") < sRtn){ //과거일자
  206. model.makeNode ( xRsltSavePath + "/status" );
  207. model.setValue ( xRsltSavePath + "/status", "i" ); //상태값 지정(insert)
  208. }
  209. model.makeValue("/root/send/savedata/dialflag", "H");
  210. if(submit("TXMND02702") == true) { // 유지환자등록 저장
  211. messageBox("혈액투석 유지환자로 등록 처리되었습니다.", "I001", "간호정보조사지를 기록하십시요.");
  212. }
  213. }
  214. } else if( sMatnDial == "" ){ //유지환자 등록 기록이 없는 경우
  215. model.makeNode ( xRsltSavePath + "/status" );
  216. model.setValue ( xRsltSavePath + "/status" , "i" ); //상태값 지정(insert)
  217. model.makeValue( xRsltSavePath + "/dialflag", "H" );
  218. if(submit("TXMND02702") == true) { // 유지환자등록 저장
  219. messageBox("혈액투석 유지환자로 등록", "I001", "간호정보조사지를 기록하십시요.");
  220. }
  221. }
  222. if(getNodesetCount(xSavePath +"/getdatelist/getdate") > 0){
  223. var sOrddd_Old = "";
  224. var sCretno_Old = "";
  225. var sGenrflagcd_Old = "";
  226. var sIoFlag = model.getValue(xSavePath +"/ioflag");
  227. var sParamPid = model.getValue(xSavePath +"/pid");
  228. var sParamRsrvdd = model.getValue(xSavePath +"/getdatelist/getdate["+1+"]/savedate");
  229. /* 진단 copy 로직 시작 */
  230. if(sIoFlag == "외래" || sIoFlag == "-" ){
  231. setParameter("preDiagCond", "InjRoom▦"+sParamPid+"▦"+sParamRsrvdd+"▦▦▦/root");
  232. fFindDiagInfo();
  233. var sParamArr = getParameter("preDiagResult").split("▦");
  234. sCretno_Old = sParamArr[3];
  235. sGenrflagcd_Old = sParamArr[4];
  236. sIoFlag = "외래";
  237. if(sParamArr[1] == "" && sParamArr[2] == "" ){
  238. //messageBox("가접수 생성시 진단 Copy할 수진 정보가 선택되지 않았습니다.", "I");
  239. //return;
  240. }else{
  241. if(sGenrflagcd_Old == "O"){
  242. sOrddd_Old = sParamArr[1];
  243. }else{
  244. sOrddd_Old = sParamArr[2];
  245. }
  246. }
  247. }
  248. /* 진단 copy 로직 종료 */
  249. model.removenode("/root/send");
  250. model.makeNode("/root/send");
  251. for(var i = 1 ; i <= getNodesetCount(xSavePath +"/getdatelist/getdate") ; i++){
  252. var insRow = eval(getNodesetCount(xRsltSavePath))+1;
  253. model.makeValue(xRsltSavePath+"["+insRow+"]/rsrvdd" , model.getValue(xSavePath +"/getdatelist/getdate["+insRow+"]/savedate"));
  254. model.makeValue(xRsltSavePath+"["+insRow+"]/pid" , model.getValue(xSavePath +"/pid") );
  255. model.makeValue(xRsltSavePath+"["+insRow+"]/shiftflag" , model.getValue(xSavePath +"/shiftflag") );
  256. model.makeValue(xRsltSavePath+"["+insRow+"]/dialseatflag" , model.getValue(xSavePath +"/dialseatflag") );
  257. model.makeValue(xRsltSavePath+"["+insRow+"]/status" , model.getValue(xSavePath +"/status") );
  258. model.makeValue(xRsltSavePath+"["+insRow+"]/ioflag" , sIoFlag );
  259. model.makeValue(xRsltSavePath+"["+insRow+"]/dialflag" , "H" );
  260. model.makeValue(xRsltSavePath+"["+insRow+"]/rsrvcnts" , model.getValue(xSavePath +"/rsrvcnts") );
  261. model.makeValue(xRsltSavePath+"["+insRow+"]/matnflag" , model.getValue(xSavePath +"/matnflag") );
  262. model.makeValue(xRsltSavePath+"["+insRow+"]/infcflag" , model.getValue(xSavePath +"/infcflag") );
  263. model.makeValue(xRsltSavePath+"["+insRow+"]/orddd_old" , sOrddd_Old ); // 과거 진료일자
  264. model.makeValue(xRsltSavePath+"["+insRow+"]/cretno_old" , sCretno_Old ); // 과거 생성번호
  265. model.makeValue(xRsltSavePath+"["+insRow+"]/genrflagcd_old" , sGenrflagcd_Old ); // 과거 외래입원구분
  266. model.makeValue(xRsltSavePath+"["+insRow+"]/orddeptcd_old" , "" ); // 과거 진료과
  267. model.makeValue(xRsltSavePath+"["+insRow+"]/copyflag" , "Y" ); // 진단 복사 구분 ( Y/N,NULL => N이거나 NULL이면 이전 로직대로 )
  268. //centcd 추가 2012.10.29 by kya
  269. model.makeValue(xRsltSavePath+"["+insRow+"]/centcd" , model.getValue(xSavePath +"/centcd") ); //센터코드
  270. if(model.getValue(xSavePath +"/shiftflag") == "5"){ //응급Shift인경우 1,2,3Shift와의 시간이 같을경우 구분을 위해 ordtm을 setting한다.-kys-20091217
  271. var currenttime = getCurrentTime().substr(0,4);
  272. if(currenttime == "0730"){
  273. currenttime = "0731";
  274. }else if(currenttime == "1300"){
  275. currenttime = "1301";
  276. }else if(currenttime == "1700"){
  277. currenttime = "1701";
  278. }
  279. model.makeValue(xRsltSavePath+"["+insRow+"]/ordtm" , currenttime); //진료예약시간-kys-20091217
  280. }
  281. }
  282. model.removeNodeset("/root/main/retmsginfo");
  283. var sResltStat = submit("TXMND02701");
  284. if(getNodesetCount("/root/main/retmsginfo") > 0){
  285. var pDupMsg = ""; //중복값 관련 메시지
  286. var pEmpMsg = ""; //의사미지정 관련 메시지
  287. for(var k = 1 ; k <= getNodesetCount("/root/main/retmsginfo") ; k++){
  288. if(model.getValue("/root/main/retmsginfo["+k+"]/rtnmgsflag")=="dup"){
  289. if(pDupMsg == ""){
  290. pDupMsg += model.getValue("/root/main/retmsginfo["+k+"]/rtnmsg");
  291. }else{
  292. pDupMsg += ", " + model.getValue("/root/main/retmsginfo["+k+"]/rtnmsg");
  293. }
  294. }else{
  295. if(pEmpMsg == ""){
  296. pEmpMsg += model.getValue("/root/main/retmsginfo["+k+"]/rtnmsg").substr(0,4)+"-"
  297. + model.getValue("/root/main/retmsginfo["+k+"]/rtnmsg").substr(4,2)+"-"
  298. + model.getValue("/root/main/retmsginfo["+k+"]/rtnmsg").substr(6,2);
  299. }else{
  300. pEmpMsg += ", " + model.getValue("/root/main/retmsginfo["+k+"]/rtnmsg").substr(0,4)+"-"
  301. + model.getValue("/root/main/retmsginfo["+k+"]/rtnmsg").substr(4,2)+"-"
  302. + model.getValue("/root/main/retmsginfo["+k+"]/rtnmsg").substr(6,2);
  303. }
  304. }
  305. }
  306. if(pDupMsg != ""){
  307. messageBox("["+pDupMsg+"]일자에 예약이", "E006", "\n확인 후 다시 시도하십시오.");
  308. }
  309. if(pEmpMsg != ""){
  310. messageBox("["+pEmpMsg+"]일자에 예약의사가 지정되지 않았습니다.", "E", "\n확인 후 다시 시도하십시오.");
  311. }
  312. }
  313. if( sResltStat == true){
  314. model.close();
  315. } else {
  316. messageBox("저장을 실패했습니다.", "E");
  317. return;
  318. }
  319. }else{
  320. messageBox("예약등록할 정보가 존재하지 않습니다.","I");
  321. //model.close();
  322. }
  323. // for(var i=1;i<=rsrvterm+1;i++) {
  324. // //var dd = model.getValue("/root/main/datelist/dateinfo/getdate"+i);
  325. // var dd = model.getValue("/root/send/savedata/getdatelist/getdate"+i);
  326. // if(dd != "") {
  327. // model.removeNodeset("/root/send/savedata/rsrvdd" );
  328. // model.makeValue ("/root/send/savedata/rsrvdd" , dd );
  329. // model.makeValue ("/root/send/savedata/dialflag", "H");
  330. // var sResltStat = submit("TXMND02701"); // 예약정보 저장
  331. //
  332. // if(model.getValue("/root/main/retmsginfo/retmsg") != ""){
  333. // messageBox("지정된 외래예약의사가","I004", "외래의사지정 후 다시 시도하십시오.");
  334. // model.close();
  335. // return;
  336. // }
  337. //
  338. // }
  339. // }
  340. }
  341. }
  342. /**
  343. * @group :
  344. * @ver : 2007.05.15
  345. * @by : 김진아
  346. * @---------------------------------------------------
  347. * @type : function
  348. * @access : public
  349. * @desc : 유지환자 리스트 입력
  350. * @param :
  351. * @return :
  352. * @---------------------------------------------------
  353. */
  354. /*
  355. function fSaveMatnInfo(){
  356. var sMatnDial = model.getValue ( "/root/send/savedata/matndialflag" ); // 유지환자 투석구분
  357. var xSavePath = "/root/send/savedata";
  358. if( sMatnDial == "P" ){ //복막유지환자로 등록되어 있는 경우
  359. messageBox("복막투석 유지환자로 등록되어 있는 환자", "E008", "투석구분을 변경하십시오.");
  360. } else if( sMatnDial == "H" ){ //투석유지환자로 등록되어 있는 경우
  361. if(model.getValue( xSavePath + "/matnflag") != "1" ){ //유지환자(1:유지구분)가 아님
  362. if( model.getValue( xSavePath + "/maintepatrgstdd") == sRtn ){ //오늘일자
  363. model.makeNode ( xSavePath + "/status" );
  364. model.setValue ( xSavePath + "/status", "u" ); //상태값 지정(update)
  365. }else if( model.getValue( xSavePath + "/maintepatrgstdd") < sRtn){ //과거일자
  366. model.makeNode ( xSavePath + "/status" );
  367. model.setValue ( xSavePath + "/status", "i" ); //상태값 지정(insert)
  368. }
  369. model.makeValue("/root/send/savedata/dialflag", "H");
  370. submit("TXMND02702");
  371. }
  372. } else if( sMatnDial == "" ){ //유지환자 등록 기록이 없는 경우
  373. model.makeNode ( xSavePath + "/status" );
  374. model.setValue ( xSavePath + "/status" , "i" ); //상태값 지정(insert)
  375. model.makeValue( xSavePath + "/dialflag", "H" );
  376. submit("TXMND02702");
  377. }
  378. }
  379. */