SMMND03000.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443
  1. /*
  2. 복막투석 예약등록(SMMND03000.xrw - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. */
  6. var rsrvfromdd; //예약시작일자
  7. var rsrvtodd ; //예약종료일자
  8. var ddterm; //예약일자 간격
  9. var rsrvterm = 0; //예약기간
  10. /**
  11. * @group :
  12. * @ver : 2007.05.14
  13. * @by : 김진아
  14. * @---------------------------------------------------
  15. * @type : function
  16. * @access : public
  17. * @desc : 화면 초기화
  18. * @param :
  19. * @return :
  20. * @---------------------------------------------------
  21. */
  22. function fDone(){
  23. //컨트롤 초기화
  24. var sRtn = getCurrentDate(); //현재일자 리턴
  25. model.makeValue("/root/main/cretlist/cretinfo/rsrvfromdd", sRtn);
  26. var node = getGlobalVariable("paminfo");
  27. setCSVToNode("/root/main/paminfo", node);
  28. if(getNodesetCount("/root/main/paminfo") > 0) {
  29. model.makeValue("/root/main/cretlist/cretinfo/pid", model.getValue("/root/main/paminfo/list/pid"));
  30. fSrchPat(); //환자기본정보 조회
  31. }
  32. // model.removeNodeset("/root/main/cretlist/pdrsrvlist"); // 예약정보 그리드 초기화
  33. grd_pdrsrvinfo.refresh();
  34. model.setFocus("ipt_pid");
  35. }
  36. /**
  37. * @group :
  38. * @ver : 2007.05.14
  39. * @by : 김진아
  40. * @---------------------------------------------------
  41. * @type : function
  42. * @access : public
  43. * @desc : 등록번호로 환자를 검색한다.(예약생성시)
  44. * @param :
  45. * @return : 환자명, 환자주민등록번호
  46. * @---------------------------------------------------
  47. */
  48. function fSrchPat()
  49. {
  50. if(model.getValue("/root/main/cretlist/cretinfo/pid") == ""){
  51. return;
  52. }
  53. model.removenode("/root/send");
  54. model.makeNode ("/root/send");
  55. model.makeValue ("/root/send/reqdata/pid" , model.getValue("/root/main/cretlist/cretinfo/pid"));
  56. model.makeValue ("/root/send/reqdata/dialflag", "P");
  57. model.removeNodeset("/root/main/cretlist/getcreinfo/hngnm");
  58. model.removeNodeset("/root/main/cretlist/getcreinfo/rrgstno1");
  59. model.removeNodeset("/root/main/cretlist/getcreinfo/rrgstno2");
  60. model.removeNodeset("/root/main/cretlist/getcreinfo/ioflag");
  61. model.removeNodeset("/root/main/cretlist/getcreinfo/matndialflag"); //유지투석구분
  62. model.removeNodeset("/root/main/cretlist/pdrsrvlist"); // 예약정보 그리드 초기화
  63. opt_hngnm.value = "";
  64. opt_rrgstno1.value = "";
  65. opt_rrgstno2.value = "";
  66. opt_ioflag.value = ""; //입원환자 등록번호
  67. submit("TRMND03001"); //환자기본정보 및 입원내역테이블을 조회한다.
  68. model.makeValue("/root/main/cretlist/cretinfo/pid" , model.getValue("/root/main/cretlist/getcreinfo/pid"));
  69. model.makeValue("/root/main/cretlist/cretinfo/hngnm" , model.getValue("/root/main/cretlist/getcreinfo/hngnm"));
  70. model.makeValue("/root/main/cretlist/cretinfo/rrgstno1" , model.getValue("/root/main/cretlist/getcreinfo/rrgstno1"));
  71. model.makeValue("/root/main/cretlist/cretinfo/rrgstno2" , model.getValue("/root/main/cretlist/getcreinfo/rrgstno2"));
  72. model.makeValue("/root/main/cretlist/cretinfo/ioflag" , model.getValue("/root/main/cretlist/getcreinfo/ioflag"));
  73. model.makeValue("/root/main/cretlist/cretinfo/matndialflag", model.getValue("/root/main/cretlist/getcreinfo/matndialflag"));
  74. fSetDefaultRsrvdd(); // 예약생성초기화
  75. // 복막투석 예약정보의 과거예약내역에 대한 선택항목 체크박스 비활성화
  76. for(var i=1; i<grd_pdrsrvinfo.rows; i++ ){
  77. if(model.getValue("/root/main/cretlist/pdrsrvlist/pdrsrvinfo["+i+"]/disableyn") == "false"){
  78. grd_pdrsrvinfo.isReadOnly(i, grd_pdrsrvinfo.colRef("check")) = true;
  79. }
  80. }
  81. model.refresh();
  82. if(model.getValue("/root/main/cretlist/getcreinfo/matndialflag") == "H"){
  83. messageBox("혈액투석 유지환자", "E008", "복막투석 예약을 수행 할 수 없습니다.");
  84. fClearChildNode("/root/main/cretlist/cretinfo");
  85. model.makeNode("/root/main/cretlist/getcreinfo");
  86. model.removeNodeset("/root/main/cretlist/pdrsrvlist"); // 예약정보 그리드 초기화
  87. fSetDefaultRsrvdd();
  88. model.refresh();
  89. }else if(model.getValue("/root/main/cretlist/getcreinfo/matndialflag") == ""){
  90. messageBox("유지환자가 아닙니다.", "I", "먼저 복막투석 유지환자로 등록하십시오.");
  91. fClearChildNode("/root/main/cretlist/cretinfo");
  92. model.makeNode("/root/main/cretlist/getcreinfo");
  93. model.removeNodeset("/root/main/cretlist/pdrsrvlist"); // 예약정보 그리드 초기화
  94. fSetDefaultRsrvdd();
  95. model.refresh();
  96. }
  97. }
  98. /**
  99. * @group :
  100. * @ver : 2007.05.14
  101. * @by : 김진아
  102. * @---------------------------------------------------
  103. * @type : function
  104. * @access : public
  105. * @desc : 예약일자 지정(저장버튼 클릭 시)
  106. * @param :
  107. * @return :
  108. * @---------------------------------------------------
  109. */
  110. function fSetRsrvdd()
  111. {
  112. rsrvfromdd = model.getValue("/root/main/cretlist/cretinfo/rsrvfromdd"); //예약시작일자
  113. rsrvtodd = model.getValue("/root/main/cretlist/cretinfo/rsrvtodd"); //예약종료일자
  114. ddterm = model.getValue("/root/main/cretlist/cretinfo/rsrvterm"); //예약일자 간격
  115. if(rdo_rsrvopt.value == 2){ //예약범위
  116. rsrvterm = getDateInterval(rsrvfromdd,rsrvtodd);
  117. }
  118. if(rdo_rsrvopt.value == 1){ // 단일 예약일자
  119. model.removeNodeset("/root/hidden");
  120. model.makeNode("/root/hidden/rsrvddlist/rsrvdd");
  121. model.setValue("/root/hidden/rsrvddlist/rsrvdd", model.getValue("/root/main/cretlist/cretinfo/rsrvfromdd"));
  122. }else if(rdo_rsrvopt.value == 2){ // 예약범위 지정
  123. model.removeNodeset("/root/hidden");
  124. //var year = rsrvfromdd.substr(0,4);
  125. //var month = rsrvfromdd.substr(4,2);
  126. //var day = rsrvfromdd.substr(6,2);
  127. //var dd = year + month + day;
  128. var dd = rsrvfromdd;
  129. //에약일자 간격으로 예약기간동안의 예약일자 구하기
  130. for(var i=1; i<=rsrvterm+1; i++){
  131. if(dd <= rsrvtodd){
  132. var insRow = eval(getNodesetCount("/root/hidden/rsrvddlist"))+1;
  133. model.makeNode("/root/hidden/rsrvddlist["+insRow+"]/rsrvdd");
  134. model.setValue("/root/hidden/rsrvddlist["+insRow+"]/rsrvdd", dd);
  135. dd = getDateCalc(dd, ddterm, "+");
  136. //2008-09-16 로직 삭제(양천덕)
  137. // day = parseInt(day) + parseInt(ddterm);
  138. // with(new Date(year, month, 1, 12)) { //MM = 1 .. 12
  139. // setDate(0);
  140. // var lstday = getDate(); //해당월의 마지막 일
  141. // }
  142. //
  143. // if(parseInt(day)>parseInt(lstday)){
  144. // if(month==12){
  145. // year = parseInt(year)+1;
  146. // month =(parseInt(month)+1)-12;
  147. // if(month<10){
  148. // month = "0"+month;
  149. // }
  150. // }else{
  151. // month = (parseInt(month)+1);
  152. // if(month<10){
  153. // month = "0"+month;
  154. // }
  155. // }
  156. // if((parseInt(day)-parseInt(lstday))<10){
  157. // day = "0"+(day-lstday);
  158. // }else{
  159. // day = (parseInt(day)-parseInt(lstday));
  160. // }
  161. // }else{
  162. // if(day<10){
  163. // day = "0"+day;
  164. // }
  165. // }
  166. // dd = year + month + day;
  167. }//end of if
  168. }//end of for
  169. }//end of if
  170. }
  171. function fSetDefaultRsrvdd(){
  172. model.makeValue("/root/main/cretlist/cretinfo/rsrvcnts" , "");
  173. model.makeValue("/root/main/cretlist/cretinfo/rsrvopt" , "1");
  174. model.makeValue("/root/main/cretlist/cretinfo/rsrvfromdd", getCurrentDate());
  175. model.makeValue("/root/main/cretlist/cretinfo/rsrvtodd" , "");
  176. model.makeValue("/root/main/cretlist/cretinfo/rsrvterm" , "");
  177. ipt_rsrvtodd.disabled = true;
  178. ipt_rsrvterm.disabled = true;
  179. }
  180. /**
  181. * @group :
  182. * @ver : 2007.05.14
  183. * @by : 김진아
  184. * @---------------------------------------------------
  185. * @type : function
  186. * @access : public
  187. * @desc : 복막투석 예약 저장(저장버튼 클릭 시)
  188. * @param :
  189. * @return :
  190. * @---------------------------------------------------
  191. */
  192. function fSaveRsrv(){
  193. if(model.getValue("/root/main/cretlist/getcreinfo/matndialflag") == "H"){
  194. messageBox("혈액투석 유지환자", "E008", "복막투석 예약을 수행 할 수 없습니다.");
  195. fClearChildNode("/root/main/cretlist/cretinfo");
  196. fClearChildNode("/root/main/cretlist/getcreinfo");
  197. model.refresh();
  198. } else{
  199. if(model.getValue("/root/main/cretlist/cretinfo/pid") == "") {
  200. messageBox("등록번호는", "I003", "");
  201. return;
  202. }
  203. if(model.getValue("/root/main/cretlist/cretinfo/hngnm")=="") {
  204. messageBox("환자기본 정보 조회 수행을 하지", "E007", "(등록번호 입력 후 엔터키를 누르십시오.)");
  205. model.setFocus("ipt_pid");
  206. return;
  207. }
  208. var sCurrDate = getCurrentDate();
  209. if(sCurrDate > ipt_rsrvfromdd.value){
  210. messageBox("예약일자는 현재일 이전으로 등록할 수 없습니다.","I");
  211. ipt_rsrvfromdd.value = sCurrDate;
  212. return;
  213. }
  214. if(ipt_rsrvtodd.value < ipt_rsrvfromdd.value && rdo_rsrvopt.value == "2"){
  215. messageBox("예약범위 설정이 잘 못되었습니다.","I");
  216. ipt_rsrvtodd.value = ipt_rsrvfromdd.value;
  217. return;
  218. }
  219. if(sCurrDate > ipt_rsrvtodd.value && rdo_rsrvopt.value == "2"){
  220. messageBox("예약일자는 현재일 이전으로 등록할 수 없습니다.","I");
  221. ipt_rsrvtodd.value = ipt_rsrvfromdd.value;
  222. return;
  223. }
  224. if(ipt_rsrvtodd.value < ipt_rsrvfromdd.value && rdo_rsrvopt.value == "2"){
  225. messageBox("예약범위 설정이 잘 못되었습니다.","I");
  226. ipt_rsrvtodd.value = ipt_rsrvfromdd.value;
  227. return;
  228. }
  229. if(model.getValue("/root/main/cretlist/cretinfo/ampmflag")==""){ // 오전,오후구분 추가_20100125
  230. model.setValue("/root/main/cretlist/cretinfo/ampmflag", "4");
  231. }
  232. // if(rdo_rsrvopt.value == 2){ //예약범위
  233. // rsrvterm = getDateInterval(rsrvfromdd,rsrvtodd);
  234. // }
  235. // model.makeValue("/root/send/savedata/pid" ,model.getValue("/root/main/cretlist/cretinfo/pid"));
  236. // model.makeValue("/root/send/savedata/ioflag" ,model.getValue("/root/main/cretlist/cretinfo/ioflag"));
  237. // model.makeValue("/root/send/savedata/rsrvcnts",model.getValue("/root/main/cretlist/cretinfo/rsrvcnts"));
  238. // for(var i=1;i<=rsrvterm+1; i++){
  239. // var dd = model.getValue("/root/hidden/rsrvdd"+i);
  240. // if(dd != ""){
  241. // model.makeValue("/root/send/savedata/status" , "i"); //상태값 지정(insert)
  242. // model.makeValue("/root/send/savedata/dialflag", "P");
  243. // model.makeValue("/root/send/savedata/rsrvdd" , dd );
  244. // model.removeNodeset("/root/main/chkinfo");
  245. //
  246. // var ret = submit("TXMND03001");
  247. // if(model.getValue("/root/main/chkinfo/rtnmgs") != ""){
  248. // messageBox("["+model.getValue("/root/main/chkinfo/rtnmgs")+"]일자에 예약이", "E006", "확인 후 다시 시도하십시오.");
  249. // return;
  250. // }
  251. // }
  252. // }
  253. var sOrddd_Old = "";
  254. var sCretno_Old = "";
  255. var sGenrflagcd_Old = "";
  256. var sSavePid = model.getValue("/root/main/cretlist/cretinfo/pid");
  257. var sSaveioflag = model.getValue("/root/main/cretlist/cretinfo/ioflag");
  258. var sSaversrvcnts = model.getValue("/root/main/cretlist/cretinfo/rsrvcnts");
  259. var sParamPid = sSavePid;
  260. var sParamRsrvdd = model.getValue("/root/main/cretlist/cretinfo/rsrvfromdd");
  261. var sSaveShiftflag = model.getValue("/root/main/cretlist/cretinfo/ampmflag");
  262. /* 진단 copy 로직 시작 */
  263. if(sSaveioflag == "외래" || sSaveioflag == "-" ){
  264. setParameter("preDiagCond", "InjRoom▦"+sParamPid+"▦"+sParamRsrvdd+"▦▦▦/root");
  265. fFindDiagInfo();
  266. var sParamArr = getParameter("preDiagResult").split("▦");
  267. sCretno_Old = sParamArr[3];
  268. sGenrflagcd_Old = sParamArr[4];
  269. sIoFlag = "외래";
  270. if(sParamArr[1] == "" && sParamArr[2] == "" ){
  271. //messageBox("가접수 생성시 진단 Copy할 수진 정보가 선택되지 않았습니다.", "I");
  272. //return;
  273. }else{
  274. if(sGenrflagcd_Old == "O"){
  275. sOrddd_Old = sParamArr[1];
  276. }else{
  277. sOrddd_Old = sParamArr[2];
  278. }
  279. }
  280. }
  281. /* 진단 copy 로직 종료 */
  282. for(var i= 1 ; i <= getNodesetCount("/root/hidden/rsrvddlist") ; i++){
  283. model.makeValue("/root/send/savedata["+i+"]/pid" , sSavePid);
  284. model.makeValue("/root/send/savedata["+i+"]/ioflag" , sSaveioflag);
  285. model.makeValue("/root/send/savedata["+i+"]/rsrvcnts" , sSaversrvcnts);
  286. model.makeValue("/root/send/savedata["+i+"]/status" , "i"); //상태값 지정(insert)
  287. model.makeValue("/root/send/savedata["+i+"]/dialflag" , "P");
  288. model.makeValue("/root/send/savedata["+i+"]/rsrvdd" , model.getValue("/root/hidden/rsrvddlist["+i+"]/rsrvdd"));
  289. model.makeValue("/root/send/savedata["+i+"]/orddd_old" , sOrddd_Old ); // 과거 진료일자
  290. model.makeValue("/root/send/savedata["+i+"]/cretno_old" , sCretno_Old ); // 과거 생성번호
  291. model.makeValue("/root/send/savedata["+i+"]/genrflagcd_old" , sGenrflagcd_Old ); // 과거 외래입원구분
  292. model.makeValue("/root/send/savedata["+i+"]/orddeptcd_old" , "" ); // 과거 진료과
  293. model.makeValue("/root/send/savedata["+i+"]/copyflag" , "Y" ); // 진단 복사 구분 ( Y/N,NULL => N이거나 NULL이면 이전 로직대로 )
  294. model.makeValue("/root/send/savedata["+i+"]/shiftflag" , sSaveShiftflag); // 오전,오후에 따른 shift구분 추가(오전:4,오후:6)_20100125
  295. }
  296. model.removeNodeset("/root/main/chkinfo");
  297. var ret = submit("TXMND03001");
  298. //return Msg 존재 여부 체크
  299. if(getNodesetCount("/root/main/chkinfo") > 0){
  300. var pDupMsg = ""; //중복값 관련 메시지
  301. var pEmpMsg = ""; //의사미지정 관련 메시지
  302. for(var k = 1 ; k <= getNodesetCount("/root/main/chkinfo") ; k++){
  303. if(model.getValue("/root/main/chkinfo["+k+"]/rtnmgsflag")=="dup"){
  304. if(pDupMsg == ""){
  305. pDupMsg += model.getValue("/root/main/chkinfo["+k+"]/rtnmgs");
  306. }else{
  307. pDupMsg += ", " + model.getValue("/root/main/chkinfo["+k+"]/rtnmgs");
  308. }
  309. }else{
  310. if(pEmpMsg == ""){
  311. pEmpMsg += model.getValue("/root/main/chkinfo["+k+"]/rtnmgs").substr(0,4)+"-"
  312. + model.getValue("/root/main/chkinfo["+k+"]/rtnmgs").substr(4,2)+"-"
  313. + model.getValue("/root/main/chkinfo["+k+"]/rtnmgs").substr(6,2);
  314. }else{
  315. pEmpMsg += ", " + model.getValue("/root/main/chkinfo["+k+"]/rtnmgs").substr(0,4)+"-"
  316. + model.getValue("/root/main/chkinfo["+k+"]/rtnmgs").substr(4,2)+"-"
  317. + model.getValue("/root/main/chkinfo["+k+"]/rtnmgs").substr(6,2);
  318. }
  319. }
  320. }
  321. if(pDupMsg != ""){
  322. messageBox("["+pDupMsg+"]일자에 예약이", "E006", "\n확인 후 다시 시도하십시오.");
  323. }
  324. if(pEmpMsg != ""){
  325. messageBox("["+pEmpMsg+"]일자에 예약의사가 지정되지 않았습니다.", "E", "\n확인 후 다시 시도하십시오.");
  326. }
  327. }else{
  328. if(ret == true){ //저장성공
  329. messageBox("", "I001", "");
  330. }
  331. }
  332. }
  333. fSrchPat();//환자기본정보 조회
  334. }
  335. /**
  336. * @group :
  337. * @ver : 2008.02.11
  338. * @by : 김진아
  339. * @---------------------------------------------------
  340. * @type : function
  341. * @access : public
  342. * @desc : 복막투석 예약취소 저장(취소저장 버튼 클릭 시)
  343. * @param :
  344. * @return :
  345. * @---------------------------------------------------
  346. */
  347. function fSaveCncl(){
  348. model.removenode("/root/send");
  349. model.makeNode ("/root/send");
  350. model.makeValue ("/root/send/savedata", grd_pdrsrvinfo.getupdatedataAll("i"));
  351. model.makeValue("/root/temp/rtnmsg/rtnmsg", "");
  352. if(submit("TXMND03002") == true){ //kys-20091222
  353. if(model.getValue("/root/temp/rtnmsg/rtnmsg")=="Y"){ //추가-kys-20091222-예약취소시 기록중인지를 체크한다.
  354. messageBox("예약취소건중 복막투석기록한것이 존재하여 예약취소를 ","E001","확인 후 다시 시도하십시오.");
  355. }
  356. }
  357. }
  358. /**
  359. * @group :
  360. * @ver : 2007.06.30
  361. * @by : 김진아
  362. * @---------------------------------------------------
  363. * @type : function
  364. * @access : public
  365. * @desc : 예약범위 초기화
  366. * @param :
  367. * @return :
  368. * @---------------------------------------------------
  369. */
  370. function fInitRsrvdd() {
  371. if(rdo_rsrvopt.value == 1){ // 단일 예약일자
  372. model.makeValue("/root/main/cretlist/cretinfo/rsrvfromdd", getCurrentDate());
  373. model.makeValue("/root/main/cretlist/cretinfo/rsrvtodd" , "");
  374. model.makeValue("/root/main/cretlist/cretinfo/rsrvterm" , "");
  375. ipt_rsrvtodd.disabled = true;
  376. ipt_rsrvterm.disabled = true;
  377. }else{ // 예약범위 지정
  378. model.makeValue("/root/main/cretlist/cretinfo/rsrvfromdd", getCurrentDate());
  379. model.makeValue("/root/main/cretlist/cretinfo/rsrvtodd" , getCurrentDate());
  380. model.makeValue("/root/main/cretlist/cretinfo/rsrvterm" , "1");
  381. ipt_rsrvtodd.disabled = false;
  382. ipt_rsrvterm.disabled = false;
  383. }
  384. model.refresh();
  385. }
  386. function fUseridPopup(pPath, pNodeID, pNodeNM, pNodeRrgsNo1, pNodeRrgsNo2, pDOC) {
  387. model.removeNodeset("/root/properties/parameters/SendData/SendDatavalue");
  388. modal("SMMNE03700", 1, event.screenX-100, event.screenY-100, "SMMNE03700", "/root/main/cretlist/cretinfo/pid", "/root/init/searchitem");
  389. var pParam = model.getValue("/root/properties/parameters/SendData/SendDatavalue");
  390. var pParamValue = pParam.split("|");
  391. if(pParamValue[0].length > 0){
  392. model.makeValue("/root/main/cretlist/cretinfo/pid" , pParamValue[0]);
  393. model.makeValue("/root/main/cretlist/cretinfo/hngnm" , pParamValue[1]);
  394. model.makeValue("/root/main/cretlist/cretinfo/rrgstno1", pParamValue[2]);
  395. model.makeValue("/root/main/cretlist/cretinfo/rrgstno2", pParamValue[4]);
  396. model.refresh();
  397. }
  398. }