SMMNE05400.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. /*
  2. 응급실 당직 전문의 (on-call) 스케줄관리(SMMNE05100.xfm - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. - Create : 2012.08.01
  6. */
  7. //당직스케줄 그리드의 수정상태값
  8. var isEdited = 'N';
  9. //화면초기화
  10. function fInit(){
  11. /*var instcd = getUserInfo("dutplceinstcd");
  12. if (instcd == "031") {
  13. caption3.value = "* 위 당직 전문의는 환자 및 보호자의 요청이 아닌 응급실 근무의사의 의학적 판단에 따른 요청으로 직접진료 여부가 결정됩니다.";
  14. } else {
  15. caption3.value = "* 칠곡경북대학교병원은 특정질환 전문병원으로서 응급실에 내원하는 환자분의 증상(진단) 또는 병원의 의료인력과 시설에 따라 필요시 진료가 가능한 상급의료기관으로 전원할 수 있음을 양해해 주시기 바랍니다.";
  16. }*/
  17. var curym = getCurrentDate().substring(0, 6);
  18. var worktitle = curym.substring(0, 4) + '년 ' + curym.substring(4, 6) + '월 전문의 당직리스트';
  19. cpt_worktitle.text = worktitle;
  20. model.makeValue("/root/cond/srchym", curym);
  21. model.refresh();
  22. model.removenode("/root/send");
  23. model.makeValue("/root/send/srchym", curym);
  24. model.makeValue("/root/send/gbn", 'E');
  25. // 당직 기준 진료과 가져오기
  26. submit("TRMNE05401");
  27. }
  28. //당직대상자리스트를 조회한다
  29. function fGetWorkScheduleList(orddeptcd){
  30. var srchym = model.getValue("/root/cond/srchym");
  31. var worktitle = srchym.substring(0, 4) + '년 ' + srchym.substring(4, 6) + '월 전문의 당직리스트';
  32. cpt_worktitle.text = worktitle;
  33. cpt_worktitle.refresh();
  34. if(orddeptcd == null || orddeptcd == ''){
  35. orddept = cmb_orddeptcd.value;
  36. }
  37. model.removenode('/root/send');
  38. model.makeValue('/root/send/srchym', srchym);
  39. model.makeValue("/root/send/gbn", 'E');
  40. model.makeValue('/root/send/orddeptcd', orddeptcd);
  41. model.makeValue('/root/send/monthcnt', getDayCountForMonth(srchym.substring(0, 4), srchym.substring(4, 6)));//조회년월의 마지막일
  42. if(submit("TRMNE05403")){
  43. //글로벌변수 초기화
  44. isEdited = 'N';
  45. //당직대상자의 선택제거
  46. grd_drlist.row = 0;
  47. //당직리스트의 선택제거
  48. grd_workerlist.row = 0;
  49. //당직리스트색깔 초기화
  50. for(var i = 1; i <= grd_workerlist.rows; i++){
  51. grd_workerlist.cellstyle("background-color", i, 0, i, 6) = '#ffffff';
  52. grd_workerlist.cellStyle("background-image", i, 0, i, 6) = '';
  53. }
  54. }
  55. }
  56. //그리드가 변경상태인지 조회한다.
  57. function isScheduleRefresh(isClose){
  58. var drStr;
  59. for(var i = 1; i < grd_workerlist.rows; i++){
  60. if(instance1.selectSingleNode("/root/orgscheinfo/workinfo/workerinfolist[" + i + "]") != null){
  61. if(instance1.selectSingleNode("/root/orgscheinfo/workinfo/workerinfolist[" + i + "]").xml
  62. != instance1.selectSingleNode("/root/main/workerinfo/workerinfolist[" + i + "]").xml){
  63. isEdited = 'Y';
  64. drStr += model.getValue('/root/main/workerinfo/workerinfolist[' + i + ']/workdd') + '일자 변경';
  65. break;
  66. }
  67. }
  68. }
  69. if(isEdited == 'Y'){
  70. //20090703 dhkim 창을 닫을때와 새로 조회할때의 메세지를 다르게 구성 Q003(계속진행하시겠습니까?)
  71. if(isClose){
  72. var saveYn = messageBox('수정하신 스케줄을 저장하지 않고 창을 닫으시겠습니까?', 'Q');//Q: 6:예, 7:아니오.
  73. } else{
  74. var saveYn = messageBox('수정하신 스케줄을 저장하지 않고 새로운 내역을', 'Q005');//Q005:조회하시겠습니까? 6:예, 7:아니오.
  75. }
  76. if(saveYn == 6){
  77. return 'Y';
  78. } else{
  79. return 'N';
  80. }
  81. }
  82. }
  83. function fGetDrInfo(orddeptcd) {
  84. if(orddeptcd == null || orddeptcd == ""){
  85. messageBox("선택된 진료과가 없습니다.", "E999");
  86. }
  87. model.removenode('/root/send');
  88. model.makeValue('/root/send/drinfo/orddeptcd', orddeptcd);
  89. model.makeValue('/root/send/drinfo/srchym', model.getValue('/root/cond/srchym'));
  90. model.makeValue('/root/send/drinfo/gbn', 'E');
  91. if(!submit("TRMNE05402")){
  92. messageBox("진료과별 당직대상자 조회를 실패하였습니다.", "E999");
  93. return false;
  94. }
  95. }
  96. /**
  97. * @desc : 이전 년버튼 클릭시 - 전년도+월로 세팅
  98. * @
  99. * @param :
  100. * @return :
  101. * @author : dhkim 20090610
  102. * @---------------------------------------------------
  103. */
  104. function fClkBfYear(srchym){
  105. var yyear = srchym.substring(0, 4);
  106. var mmont = srchym.substring(4, 6);
  107. yyear--;
  108. srchym = yyear + mmont;
  109. model.setValue('/root/cond/srchym', srchym);
  110. model.refresh();
  111. }
  112. /**
  113. * @desc : 다음 년버튼 클릭시 - 다음년도+월로 세팅
  114. * @
  115. * @param :
  116. * @return :
  117. * @author : dhkim 20090610
  118. * @---------------------------------------------------
  119. */
  120. function fClkAfYear(srchym){
  121. var yyear = srchym.substring(0, 4);
  122. var mmont = srchym.substring(4, 6);
  123. yyear++;
  124. srchym = yyear + mmont;
  125. model.setValue('/root/cond/srchym', srchym);
  126. model.refresh();
  127. }
  128. /**
  129. * @desc : 이전 달버튼 클릭시 - 년도+전월 세팅
  130. * @
  131. * @param :
  132. * @return :
  133. * @author : dhkim 20090610
  134. * @---------------------------------------------------
  135. */
  136. function fClkBfMonth(srchym){
  137. var yyear = srchym.substring(0, 4);
  138. var mmont = srchym.substring(4, 6);
  139. mmont = mmont.toDate('MM').getAddDate(-1, "M").getDateFormat('MM');
  140. if(mmont == '12'){
  141. yyear--;
  142. }
  143. srchym = yyear + mmont;
  144. model.setValue('/root/cond/srchym', srchym);
  145. model.refresh();
  146. }
  147. /**
  148. * @desc : 다음 달버튼 클릭시 - 년도+다음월 세팅
  149. * @
  150. * @param :
  151. * @return :
  152. * @author : dhkim 20090610
  153. * @---------------------------------------------------
  154. */
  155. function fClkAfMonth(srchym){
  156. var yyear = srchym.substring(0, 4);
  157. var mmont = srchym.substring(4, 6);
  158. mmont = mmont.toDate('MM').getAddDate(+1, "M").getDateFormat('MM');
  159. if(mmont == '01'){
  160. yyear++;
  161. }
  162. srchym = yyear + mmont;
  163. model.setValue('/root/cond/srchym', srchym);
  164. model.refresh();
  165. }
  166. //셀색상을 선택색으로 변경되지 않도록 원래색상으로 유지한다
  167. function fSetCellColor(clickRow, clickCol, clickColNm){
  168. var curColor = grd_workerlist.cellstyle("background-color", clickRow, clickCol, clickRow, clickCol);
  169. grd_workerlist.cellstyle("background-color", clickRow, clickCol, clickRow, clickCol) = curColor;
  170. }
  171. /**
  172. * @group :
  173. * @ver : 2009.06.11
  174. * @by : dhkim
  175. * @---------------------------------------------------
  176. * @type : function
  177. * @access : public
  178. * @desc : 당직대상자 마우스 오른쪽메뉴 mouse down
  179. * @param :
  180. * @return :
  181. * @---------------------------------------------------
  182. */
  183. function fMouseDownGridRow(){
  184. var rows = grd_workerlist.rows;
  185. var row = grd_workerlist.mouseRow-1;
  186. var col = grd_workerlist.mouseCol;
  187. if(row + 1 <= rows && rows > 2 && row > 0){
  188. if(event.button == 3){
  189. window.setPopupMenu(true, "/root/init/menu/item", "name", "func", false);
  190. }
  191. }else{
  192. window.setPopupMenu(false);
  193. }
  194. }
  195. function fSetWorkDr(setFlag){
  196. //선택된 당직대상자정보(id, nm)
  197. var drid = model.getValue('/root/main/drinfo/drinfolist[' + grd_drlist.row + ']/drid');
  198. var drnm = model.getValue('/root/main/drinfo/drinfolist[' + grd_drlist.row + ']/drnm');
  199. var orddeptcd = model.getValue('/root/main/drinfo/drinfolist[' + grd_drlist.row + ']/orddeptcd');
  200. var nzone = model.getValue('/root/main/drinfo/drinfolist[' + grd_drlist.row + ']/nzone');
  201. var hpno = model.getValue('/root/main/drinfo/drinfolist[' + grd_drlist.row + ']/hpno');
  202. //현재날짜+시간(yyyymmddhhss)
  203. var currentDD = getCurrentDateTime().replace(" ", "").substring(0, 12);
  204. var errYn = 'N'; //과거일자 선택여부
  205. var cells = grd_workerlist.selectedCells; //선택된 쎌의 배열
  206. var sRow, sCol, sColNm; //선택된 쎌의 row, col 값, 선택된 col의 필드명
  207. var selectedDD; //선택된일자
  208. for(var i = 0; i < cells.length; i++){
  209. sRow = cells.item(i).row;
  210. sCol = cells.item(i).col;
  211. sColNm = grd_workerlist.colAttribute(sCol, "ref");
  212. selectedDD = model.getValue('/root/main/workerinfo/workerinfolist[' + sRow + ']/workdd');
  213. //현재일자보다 이전일자의 스케줄을 변경하지 못하게 blocking한다.
  214. // if(selectedDD < currentDD){
  215. // errYn = 'Y';
  216. // }else{
  217. if(sCol != 0){//일자셀 선택의 경우는 변경하지 않음
  218. //의사추가의경우
  219. if(setFlag == 'ADD'){
  220. //점검로직 추가
  221. if (fCheckValid(selectedDD, "E", "-", sColNm, drid)) {
  222. //선택된 쎌에 의사이름 쎄팅
  223. model.setValue('/root/main/workerinfo/workerinfolist['+ sRow + ']/drnm', drnm);
  224. model.setValue('/root/main/workerinfo/workerinfolist['+ sRow + ']/drid', drid);
  225. model.setValue('/root/main/workerinfo/workerinfolist['+ sRow + ']/nzone', nzone);
  226. model.setValue('/root/main/workerinfo/workerinfolist['+ sRow + ']/hpno', hpno);
  227. model.setValue('/root/main/workerinfo/workerinfolist['+ sRow + ']/orddeptcd', orddeptcd);
  228. grd_workerlist.rowStatus(sRow) = "2";
  229. //선택된 쎌 색상 변경
  230. grd_workerlist.cellStyle('background-color', sRow, sCol) = "#F4A6EE";
  231. //지우개 이미지 삭제
  232. grd_workerlist.cellStyle("background-image", sRow, sCol) = '';
  233. }
  234. }
  235. //의사삭제의경우
  236. else{
  237. //셀에 데이터가 세팅되어 있는경우만 삭제되게
  238. var drnm = model.getValue('/root/main/workerinfo/workerinfolist['+ sRow + ']/' + sColNm);
  239. if(drnm != ''){
  240. //선택된 쎌에 의사이름 쎄팅
  241. //model.setValue('/root/main/workerinfo/workerinfolist['+ sRow + ']/' + sColNm, '');
  242. model.setValue('/root/main/workerinfo/workerinfolist['+ sRow + ']/drid' + sColNm.substring(4), '-');
  243. //선택된 쎌에 삭제 이미지 세팅
  244. //grd_workerlist.cellStyle("background-image", 1, 1) = '../../../emr/ercareweb/img/icon_close.gif';
  245. grd_workerlist.cellStyle("background-image", sRow, sCol) = '../../../com/commonweb/images/icon_eraser.gif';
  246. grd_workerlist.cellStyle("background-position", sRow, sCol) = 'center';
  247. //배경색을 흰색으로 초기화
  248. grd_workerlist.cellStyle('background-color', sRow, sCol) = "#ffffff";
  249. }
  250. // }
  251. }
  252. }
  253. }
  254. //과거일자만 빼고 나머지 일자는 변경가능하도록 한다
  255. if(errYn == 'Y'){
  256. messageBox('과거일자의 스케줄은 변경하실 수 없습니다.', 'E999');
  257. return false;
  258. }
  259. }
  260. function fSaveWorkDr(){
  261. model.removeNodeset("/root/send");
  262. var orddeptcd = model.getValue("/root/main/workerinfo/workerinfolist[1]/orddeptcd");
  263. var srchym = model.getValue("/root/cond/srchym");
  264. var gbn = 'E';
  265. sHeader = "gbn▦workdd▦duty▦drid▦orddeptcd▩";
  266. sData = "";
  267. for(i = grd_workerlist.fixedRows; i < grd_workerlist.rows; i++) {
  268. //if(grd_workerlist.rowStatus(i) == "2") {
  269. sData += "E▦"
  270. + grd_workerlist.ValueMatrix(i, grd_workerlist.colRef("workdd")) + "▦"
  271. + "A▦"
  272. + grd_workerlist.ValueMatrix(i, grd_workerlist.colRef("drid")) + "▦"
  273. + grd_workerlist.ValueMatrix(i, grd_workerlist.colRef("orddeptcd")) + "▩"
  274. //}
  275. }
  276. model.makeValue("/root/send/workerlist", sHeader + sData);
  277. model.makeValue("/root/send/saveinfo/orddeptcd", orddeptcd);
  278. model.makeValue("/root/send/saveinfo/srchym", srchym);
  279. model.makeValue("/root/send/saveinfo/gbn", gbn);
  280. model.makeValue("/root/send/saveinfo/monthcnt", getDayCountForMonth(srchym.substring(0, 4), srchym.substring(4, 6)));//조회년월의 마지막일
  281. if(submit("TXMNE05401")){
  282. //당직리스트색깔 초기화
  283. for(var i = 1; i <= grd_workerlist.rows; i++){
  284. grd_workerlist.cellstyle("background-color", i, 0, i, 6) = '#ffffff';
  285. grd_workerlist.cellStyle("background-image", i, 0, i, 6) = '';
  286. }
  287. //fGetWorkScheduleList(orddeptcd);//당직자리스트를 조회한다
  288. }
  289. }
  290. function fDelWorkDr(workdd, orddeptcd) {
  291. model.makeValue("/root/send/deldata/workdd", workdd);
  292. model.makeValue("/root/send/deldata/orddeptcd", orddeptcd);
  293. model.makeValue("/root/send/deldata/gbn", "E");
  294. model.makeValue("/root/send/deldata/duty", "A");
  295. if(submit("TXMNE05402")){
  296. fGetWorkScheduleList(orddeptcd);//당직자리스트를 조회한다
  297. }
  298. }
  299. function fCheckValid(selDD, selGbn, selPlc, sColNm, drid) {
  300. // 시작/종료일시 기준자료 조회
  301. model.removenodeset("/root/send/basicinfo");
  302. model.makeValue("/root/send/basicinfo/workdd", selDD);
  303. model.makeValue("/root/send/basicinfo/hugbn", 'Y');
  304. model.makeValue("/root/send/basicinfo/duty", 'A');
  305. model.makeValue("/root/send/basicinfo/cdgrupid", 'P15');
  306. submit("TRMNE05404");
  307. var fromtm = model.getValue("/root/init/basicinfo/stime");
  308. var totm = model.getValue("/root/init/basicinfo/etime");
  309. // 휴진내역이 있는지 점검
  310. var selDuty = sColNm.substr(5, 1).toUpperCase();
  311. var fromdt, todt;
  312. model.removenodeset("/root/send/validinfo");
  313. model.makeValue("/root/send/validinfo/workdd", selDD);
  314. model.makeValue("/root/send/validinfo/gbn", selGbn);
  315. model.makeValue("/root/send/validinfo/placecd", selPlc);
  316. model.makeValue("/root/send/validinfo/duty", selDuty);
  317. model.makeValue("/root/send/validinfo/drid", drid);
  318. model.makeValue("/root/send/validinfo/fromtm", fromtm);
  319. model.makeValue("/root/send/validinfo/totm", totm);
  320. submit("TRMNE09002");
  321. var sValidYn = model.getValue("/root/temp/validinfo/validyn");
  322. var sScheYn = model.getValue("/root/temp/validinfo/scheyn");
  323. var sHoliYn = model.getValue("/root/temp/validinfo/holiyn");
  324. if (sValidYn == "N") {
  325. if (sScheYn == "Y" && sHoliYn == "N") {
  326. messageBox("같은 일자에 등록된 당직 정보가 있습니다.", "E999");
  327. }
  328. if (sScheYn == "N" && sHoliYn == "Y") {
  329. messageBox("해당 일자에 등록된 휴진 정보가 있습니다.", "E999");
  330. }
  331. if (sScheYn == "Y" && sHoliYn == "Y") {
  332. messageBox("같은 일자에 등록된 당직정보와 해당 일자에 등록된 휴진 정보가 있습니다.", "E999");
  333. }
  334. return false;
  335. }
  336. return true;
  337. }