SMMMB02300.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480
  1. /*
  2. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  3. 지시처방조회 ( SMMMB02300_지시처방조회.xrw - JScript )
  4. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  5. */
  6. var sPRCPCLSCDLIST_PATH = "/root/main/prcpclscdlist/prcpclscdlist";
  7. var sORDPRCPCDLIST_PATH = "/root/main/ordprcpcdlist/ordprcpcdlist";
  8. /**
  9. * @desc : 화면 초기화
  10. * @
  11. * @param :
  12. * @return :
  13. * @author : 오지훈
  14. * @---------------------------------------------------
  15. */
  16. function fInitialize_SMMMB02300(sel){
  17. var scrnflag = opener.javascript.getParameter("SMMMB02300_scrnflag");
  18. var prcpcd = opener.javascript.getParameter("SMMMB02300_prcpcd");
  19. if(scrnflag == "Y"){
  20. model.makeValue("/root/send/reqdata");
  21. model.makeValue("/root/send/reqdata/prcpcd", prcpcd);
  22. if(submit("TRMMB02101")){
  23. }
  24. }
  25. model.removeNodeset("/root/main/ordprcpcdlist/ordprcpcdlist");
  26. model.removeNodeset("/root/main/prcp/prcplist");
  27. model.makeValue("/root/send/reqdata/clsflag", "genr");
  28. // 20081106 BMT처방조회 분리 요청
  29. if (sel == "bmt") {
  30. model.makeValue("/root/send/reqdata/clsflag", "bmt");
  31. }
  32. if(submit("TRMMB02102", false)){
  33. }
  34. zbcfGetCodeList(new Array("M0029", "M0005", "M0343" ), new Array("/root/init/payflagcd","/root/init/prcpclscd", "/root/init/hsctdelivepos"));
  35. mmbfGetDeptCodeComboList("/root/send/reqdata", "/root/init/orddept" , "D"); //권한부서코드 콤보
  36. mmbfGetDeptCodeComboList("/root/send/reqdata", "/root/init/orddept2" , "D"); //권한부서코드 콤보
  37. addComboInstance("/root/init/orddept" , "deptcd^depthngnm", "-^-", "dept"); //권한부서콤보 전체항목 추가
  38. fPrcpExecDeptSrch("all");
  39. model.setValue("/root/main/cond/stnddd" , getCurrentDate());
  40. model.setValue("/root/main/cond/prcpinptflag", "-");
  41. model.setValue("/root/main/cond/prcpuseflag" , "-");
  42. model.refresh();
  43. trv_prcpclscdlist.rebuild();
  44. }
  45. /**
  46. * @desc : 지시처방리스트 조회(처방분류코드 조건으로)
  47. * @
  48. * @param :
  49. * @return :
  50. * @author : 오지훈
  51. * @---------------------------------------------------
  52. */
  53. function fSelectPrcpClsCD(){
  54. var item = trv_prcpclscdlist.item(trv_prcpclscdlist.selectedIndex);
  55. var indx = trv_prcpclscdlist.selectedIndex;
  56. if(item == null){return;}
  57. var iRow = item.index + 1;
  58. var prcpclscd1 = model.getValue("/root/main/prcpclscdlist/prcpclscdlist[" + iRow + "]/prcpclscd1");
  59. var prcpclscd2 = model.getValue("/root/main/prcpclscdlist/prcpclscdlist[" + iRow + "]/prcpclscd2");
  60. var prcpclscd3 = model.getValue("/root/main/prcpclscdlist/prcpclscdlist[" + iRow + "]/prcpclscd3");
  61. var levl = model.getValue("/root/main/prcpclscdlist/prcpclscdlist[" + iRow + "]/lvl");
  62. var stnddd = model.getValue("/root/main/cond/stnddd");
  63. model.removeNodeset("/root/send/reqdata");
  64. model.makeValue("/root/send/reqdata/prcpclscd1" , prcpclscd1);
  65. model.makeValue("/root/send/reqdata/prcpclscd2" , prcpclscd2);
  66. model.makeValue("/root/send/reqdata/prcpclscd3" , prcpclscd3);
  67. model.makeValue("/root/send/reqdata/stnddd" , stnddd);
  68. if(levl != 1){
  69. if(submit("TRMMB02303")){
  70. model.removeNodeset("/root/main/prcp/prcplist");
  71. }
  72. }
  73. trv_prcpclscdlist.expand(indx, true);
  74. model.refresh();
  75. }
  76. /**
  77. * @desc : 처방분류 추가
  78. * @
  79. * @param :
  80. * @return :
  81. * @author : 오지훈
  82. * @---------------------------------------------------
  83. */
  84. function fAddPrcpCls(){
  85. var item = trv_prcpclscdlist.item(trv_prcpclscdlist.selectedIndex);
  86. var iRow = item.index + 1;
  87. var lvl = model.getValue(sPRCPCLSCDLIST_PATH + "[" + iRow + "]/lvl");
  88. var prcpclscd1 = model.getValue(sPRCPCLSCDLIST_PATH + "[" + iRow + "]/prcpclscd1");
  89. var prcpclscd2 = model.getValue(sPRCPCLSCDLIST_PATH + "[" + iRow + "]/prcpclscd2");
  90. var prcpclscd3 = model.getValue(sPRCPCLSCDLIST_PATH + "[" + iRow + "]/prcpclscd3");
  91. fSetCasePrcpCls(lvl, prcpclscd1, prcpclscd2, prcpclscd3);
  92. model.refresh();
  93. }
  94. /**
  95. * @desc : 처방분류 수정
  96. * @
  97. * @param :
  98. * @return :
  99. * @author : 오지훈
  100. * @---------------------------------------------------
  101. */
  102. function fUpdtPrcpCls(){
  103. var item = trv_prcpclscdlist.item(trv_prcpclscdlist.selectedIndex);
  104. var iRow = item.index + 1;
  105. var lvl = model.getValue(sPRCPCLSCDLIST_PATH + "[" + iRow + "]/lvl");
  106. var prcpclscd1 = model.getValue(sPRCPCLSCDLIST_PATH + "[" + iRow + "]/prcpclscd1");
  107. var prcpclscd2 = model.getValue(sPRCPCLSCDLIST_PATH + "[" + iRow + "]/prcpclscd2");
  108. var prcpclscd3 = model.getValue(sPRCPCLSCDLIST_PATH + "[" + iRow + "]/prcpclscd3");
  109. model.makeValue("/root/send/savedata/m", "u");
  110. model.makeValue("/root/send/savedata/prcpclscd1", prcpclscd1);
  111. model.makeValue("/root/send/savedata/prcpclscd2", prcpclscd2);
  112. model.makeValue("/root/send/savedata/prcpclscd3", prcpclscd3);
  113. if(btn_genr.selected == true){
  114. model.makeValue("/root/send/savedata/clsflag", "genr");
  115. }else{
  116. model.makeValue("/root/send/savedata/clsflag", "bmt");
  117. }
  118. fShowIptBox();
  119. }
  120. /**
  121. * @desc : 처방분류 삭제
  122. * @
  123. * @param :
  124. * @return :
  125. * @author : 오지훈
  126. * @---------------------------------------------------
  127. */
  128. function fDelPrcpCls(){
  129. var item = trv_prcpclscdlist.item(trv_prcpclscdlist.selectedIndex);
  130. var iRow = item.index + 1;
  131. var lvl = model.getValue(sPRCPCLSCDLIST_PATH + "[" + iRow + "]/lvl");
  132. var prcpclscd1 = model.getValue(sPRCPCLSCDLIST_PATH + "[" + iRow + "]/prcpclscd1");
  133. var prcpclscd2 = model.getValue(sPRCPCLSCDLIST_PATH + "[" + iRow + "]/prcpclscd2");
  134. var prcpclscd3 = model.getValue(sPRCPCLSCDLIST_PATH + "[" + iRow + "]/prcpclscd3");
  135. var clscdflag;
  136. switch(lvl){
  137. case "2" : clscdflag = "lrg"; break;
  138. case "3" : clscdflag = "mdl"; break;
  139. case "4" : clscdflag = "sml"; break;
  140. default : messageBox("신규 처방분류를 삭제 ", "E001"); return;
  141. }
  142. model.makeValue("/root/send/savedata/m", "d");
  143. model.makeValue("/root/send/savedata/clscdflag" , clscdflag);
  144. model.makeValue("/root/send/savedata/prcpclscd1", prcpclscd1);
  145. model.makeValue("/root/send/savedata/prcpclscd2", prcpclscd2);
  146. model.makeValue("/root/send/savedata/prcpclscd3", prcpclscd3);
  147. if(btn_genr.selected == true){
  148. model.makeValue("/root/send/savedata/clsflag", "genr");
  149. }else{
  150. model.makeValue("/root/send/savedata/clsflag", "bmt");
  151. }
  152. if(submit("TXMMB02102")==true){
  153. }
  154. model.refresh();
  155. }
  156. /**
  157. * @desc : 처방분류 추가시, 저장data 설정
  158. * @
  159. * @param :
  160. * @return :
  161. * @author : 오지훈
  162. * @---------------------------------------------------
  163. */
  164. function fSetCasePrcpCls(lvl, prcpclscd1, prcpclscd2, prcpclscd3){
  165. switch(lvl){
  166. //depth level이 1인 경우
  167. case "1" : fSetReqPrcpClsData("i", "lrg", "", "00", "00");
  168. fShowIptBox();
  169. break;
  170. //depth level이 2인 경우
  171. case "2" : fSetReqPrcpClsData("i", "mdl", prcpclscd1, "", "00");
  172. fShowIptBox();
  173. break;
  174. //depth level이 3인 경우
  175. case "3" : fSetReqPrcpClsData("i", "sml", prcpclscd1, prcpclscd2, "");
  176. fShowIptBox();
  177. break;
  178. case "4" : messageBox("신규 처방분류를 생성 ", "E001");
  179. return;
  180. }
  181. }
  182. /**
  183. * @desc : 저장 데이터 설정
  184. * @
  185. * @param :
  186. * @return :
  187. * @author : 오지훈
  188. * @---------------------------------------------------
  189. */
  190. function fSetReqPrcpClsData(status, clscdflag, prcpclscd1, prcpclscd2, prcpclscd3){
  191. model.makeValue("/root/send/savedata/m" , status);
  192. model.makeValue("/root/send/savedata/clscdflag" , clscdflag);
  193. model.makeValue("/root/send/savedata/prcpclscd1", prcpclscd1);
  194. model.makeValue("/root/send/savedata/prcpclscd2", prcpclscd2);
  195. model.makeValue("/root/send/savedata/prcpclscd3", prcpclscd3);
  196. model.makeValue("/root/send/savedata/useflag" , "Y");
  197. model.makeValue("/root/send/savedata/refseq" , "0");
  198. if(btn_genr.selected == true){
  199. model.makeValue("/root/send/savedata/clsflag", "genr");
  200. }else{
  201. model.makeValue("/root/send/savedata/clsflag", "bmt");
  202. }
  203. model.refresh();
  204. }
  205. /**
  206. * @desc : 입력창 Open
  207. * @
  208. * @param :
  209. * @return :
  210. * @author : 오지훈
  211. * @---------------------------------------------------
  212. */
  213. function fShowIptBox(){
  214. group1.attribute("top") = event.clientY;
  215. group1.attribute("height") = 55;
  216. model.setFocus("ipt_prcpclsnm");
  217. model.refresh();
  218. }
  219. /**
  220. * @desc : 신규버튼 클릭
  221. * @
  222. * @param :
  223. * @return :
  224. * @author : 오지훈
  225. * @---------------------------------------------------
  226. */
  227. function fClkBtnNew(){
  228. var item = trv_prcpclscdlist.item(trv_prcpclscdlist.selectedIndex);
  229. if(item != null){
  230. var currow = item.index + 1;
  231. var prcpclscd1 = model.getValue("/root/main/prcpclscdlist/prcpclscdlist[" + currow + "]/prcpclscd1");
  232. var prcpclscd2 = model.getValue("/root/main/prcpclscdlist/prcpclscdlist[" + currow + "]/prcpclscd2");
  233. var prcpclscd3 = model.getValue("/root/main/prcpclscdlist/prcpclscdlist[" + currow + "]/prcpclscd3");
  234. grd_ordprcpcdlist.addRow(false, true);
  235. var trgtrow = grd_ordprcpcdlist.row;
  236. model.setValue(sORDPRCPCDLIST_PATH + "[" + trgtrow + "]/status" , "i");
  237. model.setValue(sORDPRCPCDLIST_PATH + "[" + trgtrow + "]/prcpclscd1" , prcpclscd1);
  238. model.setValue(sORDPRCPCDLIST_PATH + "[" + trgtrow + "]/prcpclscd2" , prcpclscd2);
  239. model.setValue(sORDPRCPCDLIST_PATH + "[" + trgtrow + "]/prcpclscd3" , prcpclscd3);
  240. model.setValue(sORDPRCPCDLIST_PATH + "[" + trgtrow + "]/fromdd" , getCurrentDate());
  241. model.setValue(sORDPRCPCDLIST_PATH + "[" + trgtrow + "]/todd" , "99991231");
  242. model.setValue(sORDPRCPCDLIST_PATH + "[" + trgtrow + "]/prcpuseflag" , "A");
  243. model.setValue(sORDPRCPCDLIST_PATH + "[" + trgtrow + "]/prcpexecdeptcd", "-");
  244. model.setValue(sORDPRCPCDLIST_PATH + "[" + trgtrow + "]/prcpauthdeptcd", "-");
  245. model.setValue(sORDPRCPCDLIST_PATH + "[" + trgtrow + "]/prcpnmupdtflag", "N");
  246. model.setValue(sORDPRCPCDLIST_PATH + "[" + trgtrow + "]/prcpinptflag" , "-");
  247. model.setValue(sORDPRCPCDLIST_PATH + "[" + trgtrow + "]/prcpclscd" , "00");
  248. model.setValue(sORDPRCPCDLIST_PATH + "[" + trgtrow + "]/grupsnglflag" , "S");
  249. grd_ordprcpcdlist.col = grd_ordprcpcdlist.colRef("prcpnm");
  250. grd_ordprcpcdlist.editCell();
  251. grd_ordprcpcdlist.refresh();
  252. }else{
  253. messageBox("처방분류코드를", "C002");
  254. return;
  255. }
  256. }
  257. /**
  258. * @desc : 삭제버튼 클릭
  259. * @
  260. * @param :
  261. * @return :
  262. * @author : 오지훈
  263. * @---------------------------------------------------
  264. */
  265. function fClkBtnDel(){
  266. var currow = grd_ordprcpcdlist.row;
  267. if(currow < 1){
  268. return;
  269. }
  270. var status = model.getValue("/root/main/ordprcpcdlist/ordprcpcdlist[" + currow + "]/status");
  271. if(status == "i"){
  272. model.removeNode("/root/main/ordprcpcdlist/ordprcpcdlist[" + currow + "]");
  273. }else{
  274. model.setValue("/root/main/ordprcpcdlist/ordprcpcdlist[" + currow + "]/status", "d");
  275. }
  276. grd_ordprcpcdlist.refresh();
  277. }
  278. /**
  279. * @desc : 저장버튼 클릭
  280. * @
  281. * @param :
  282. * @return :
  283. * @author : 오지훈
  284. * @---------------------------------------------------
  285. */
  286. function fClkBtnSave(){
  287. var cnt = 0;
  288. for(var i = 1; i < grd_ordprcpcdlist.rows; i++){
  289. var status = grd_ordprcpcdlist.valueMatrix(i, grd_ordprcpcdlist.colref("status"));
  290. if(status != ""){
  291. cnt++;
  292. }
  293. }
  294. if(cnt == 0){
  295. messageBox("저장할 내역이", "I004");
  296. return;
  297. }else{
  298. var savenode = getNodeListCSV(model.instance1.selectNodes("/root/main/ordprcpcdlist/ordprcpcdlist"));
  299. model.removeNodeset("/root/send/savedata");
  300. model.makeValue("/root/send/savedata/save", savenode);
  301. if(submit("TXMMB02101")==true){
  302. fSelectPrcpClsCD();
  303. model.removeNodeset("/root/main/prcp/prcplist");
  304. }
  305. }
  306. model.refresh();
  307. }
  308. /**
  309. * @desc : 수가처방등록 버튼 클릭
  310. * @
  311. * @param :
  312. * @return :
  313. * @author : 오지훈
  314. * @---------------------------------------------------
  315. */
  316. function fClkBtnCalcPrcpRgst(){
  317. var currow = grd_ordprcpcdlist.row;
  318. if(currow < 1){
  319. messageBox("수가 등록할 지시처방을", "C002");
  320. return;
  321. }else{
  322. var status = model.getValue("/root/main/ordprcpcdlist/ordprcpcdlist[" + currow + "]/status");
  323. var direcprcplnkno = model.getValue("/root/main/ordprcpcdlist/ordprcpcdlist[" + currow + "]/direcprcplnkno");
  324. var grupsnglflag = model.getValue("/root/main/ordprcpcdlist/ordprcpcdlist[" + currow + "]/grupsnglflag");
  325. var prcpsetcd = model.getValue("/root/main/ordprcpcdlist/ordprcpcdlist[" + currow + "]/prcpcd");
  326. if(status != "-"){
  327. messageBox("저장되지 않은 지시처방에 수가 등록", "E001");
  328. return;
  329. }else if(grupsnglflag != "J"){
  330. messageBox("그룹이 아닌 지시처방에 수가 등록", "E001");
  331. return;
  332. }
  333. setParameter("SMMMB02100_cond1", direcprcplnkno);
  334. setParameter("SMMMB02100_cond2", prcpsetcd);
  335. modal("SMMMB00900");
  336. clearParameter("SMMMB02100_cond1");
  337. clearParameter("SMMMB02100_cond2");
  338. fDbClkOrdPrcpGrd(currow); //수가처방 등록이 끝난 후 바로 재조회 처리함
  339. }
  340. }
  341. /**
  342. * @desc : 지시처방 그리드 클릭 -> 그룹인 경우 해당 수가리스트를 조회함
  343. * @
  344. * @param : param - row의 위치
  345. * @return :
  346. * @author : 오지훈
  347. * @---------------------------------------------------
  348. */
  349. function fDbClkOrdPrcpGrd(param){
  350. if(param==null){
  351. var currow = grd_ordprcpcdlist.row;
  352. }else{
  353. var currow = param;
  354. }
  355. var status = model.getValue("/root/main/ordprcpcdlist/ordprcpcdlist[" + currow + "]/status"); //신규등록인 경우는 조회를 하지 않는다.
  356. if(status == "i"){
  357. return;
  358. }
  359. if(currow > 0){
  360. var grupsnglflag = model.getValue("/root/main/ordprcpcdlist/ordprcpcdlist[" + currow + "]/grupsnglflag");
  361. if(grupsnglflag == "J"){
  362. var direcprcplnkno = model.getValue("/root/main/ordprcpcdlist/ordprcpcdlist[" + currow + "]/direcprcplnkno");
  363. model.makeValue("/root/send/cond1", direcprcplnkno);
  364. if(submit("TRMMB00911")){
  365. }
  366. }
  367. }
  368. }
  369. /**
  370. * @desc : 지시처방 그리드 값 변경시
  371. * HSCT를 제외한 처방분류의 그룹 설정을 막는다.
  372. * 변경된 사항이 있으면 수정 상태로 설정.
  373. * @
  374. * @param :
  375. * @return :
  376. * @author : 오지훈
  377. * @---------------------------------------------------
  378. */
  379. function fChngGrdOrdPrcp(){
  380. var currow = grd_ordprcpcdlist.row;
  381. var curcol = grd_ordprcpcdlist.col;
  382. var trgtcol = grd_ordprcpcdlist.colRef("grupsnglflag");
  383. if(trgtcol == curcol){ //그룹, 싱글구분을 변경시
  384. var grupsnglflag = grd_ordprcpcdlist.valueMatrix(currow, curcol);
  385. var prcpclscd = grd_ordprcpcdlist.valueMatrix(currow, grd_ordprcpcdlist.colRef("prcpclscd"));
  386. if(grupsnglflag == "J"){ //그룹으로 변경시
  387. if(prcpclscd != '04'){ //HSCT가 아니면
  388. grd_ordprcpcdlist.valueMatrix(currow, curcol) = "S"; //싱글로 복귀
  389. model.refresh();
  390. messageBox("처방분류가 HSCT가 아니면 그룹으로 생성", "E001"); //에러메시지
  391. return;
  392. }
  393. }
  394. }
  395. var status = model.getValue("/root/main/ordprcpcdlist/ordprcpcdlist[" + currow + "]/status");
  396. if(status != "i"){
  397. model.setValue("/root/main/ordprcpcdlist/ordprcpcdlist[" + currow + "]/status", "u");
  398. }
  399. model.refresh();
  400. }
  401. /**
  402. * @desc : 그리드 data 엑셀화일로 저장
  403. * @
  404. * @param :
  405. * @event :
  406. * @return :
  407. * @---------------------------------------------------
  408. */
  409. function fSaveGridToExcel(){
  410. var currow = grd_ordprcpcdlist.row;
  411. var prcpcd = model.getValue("/root/main/ordprcpcdlist/ordprcpcdlist[" + currow + "]/prcpcd");
  412. var prcpdd = model.getValue("/root/main/cond/stnddd");
  413. fPrcpSrchCom ( prcpcd, prcpdd, "11", "TRMMO00100", "-", true, "getPrcpCdSrchInfo" );
  414. appendChildPrcp ( "/root/main/prcp/prcplist", "/root/prcpsrch", "main" );
  415. var srcNodeList = model.instances(0).selectNodes("/root/prcpsrch/prcplist");
  416. for ( i=1; i <= srcNodeList.length; i++ ){
  417. payflagcd = model.getValue ( "/root/prcpsrch/prcplist[" + i + "]/payflagcd" )
  418. cdnm = model.getValue ( "/root/init/payflagcd/M0029[cdid='" + payflagcd + "']/cdnm" );
  419. model.setValue ( "/root/prcpsrch/prcplist[" + i + "]/payflagcd", cdnm );
  420. hsctdelivepos = model.getValue ( "/root/prcpsrch/prcplist[" + i + "]/hsctdelivepos" );
  421. cdnm = model.getValue ( "/root/init/hsctdelivepos/M0343[cdid='" + hsctdelivepos + "']/cdnm" );
  422. model.setValue ( "/root/prcpsrch/prcplist[" + i + "]/hsctdelivepos", cdnm );
  423. prcpexecdeptcd = model.getValue ( "/root/prcpsrch/prcplist[" + i + "]/prcpexecdeptcd" );
  424. cdnm = model.getValue ( "/root/orddept/dept[deptcd='" + prcpexecdeptcd + "']/depthngnm" );
  425. model.setValue ( "/root/prcpsrch/prcplist[" + i + "]/prcpexecdeptcd", cdnm );
  426. }
  427. model.refresh();
  428. var fileName = window.fileDialog("save", ",", false, "BMT처방", "xls", "Excel Files(*.xls)|*.xls|All Files (*.*)|*.*");
  429. if (fileName != ""){
  430. datagrid1.saveExcel(fileName, "SheetName", true, true, "", "", true);
  431. }
  432. }