SMMMO02300.js 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783
  1. /*function list
  2. fMouseRghtBtnPopupPrcp: 오른쪽 마우스 팝업
  3. fMouseRghtBtnPopupSet: 오른쪽 마우스 팝업
  4. fInitialize: 약속처방화면 초기화
  5. fAddPrmsDiagSet : 약속처방 SET 폴더 추가
  6. fUpdtPrmsDiagSet : 약속처방 SET 폴더 수정
  7. fDelPrmsDiagSet : 약속처방 SET 폴더 삭제
  8. fShowWndIptBox : 약속처방 폴더명을 입력할 InputBox를 보여줌.
  9. fSetPrmsDiagInfo : 약속진단 SET정보 SETTING
  10. */
  11. var sPRMSPRCPSETLIST = "/root/main/prmsprcpsetinfo/prmsprcpsetlist";
  12. var sPRMSPRCPSETLIST_HIDDEN = "/root/hidden/prmsprcpsetinfo/prmsprcpsetlist";
  13. var gEXPANDDEPTH = 1;
  14. /**
  15. * @desc : 약속처방 처방Grid 오른쪽 마우스 팝업 처리
  16. * @param :
  17. * @event : onmousedown
  18. * @return : void
  19. * @authur : 마정민 2007. 3. 25
  20. * @---------------------------------------------------
  21. */
  22. function fMouseRghtBtnPopupPrcp(){
  23. if (event.button == 3 && grd_promprcplist.mouseRow >= grd_promprcplist.fixedRows){
  24. app.showPopupMenu(true);
  25. if(grd_promprcplist.isCell(event.target)){
  26. window.setPopupMenu(true, "/root/init/msrght/mouserghtprcp", "label", "func", false);
  27. }else{
  28. window.setPopupMenu(false);
  29. }
  30. }
  31. }
  32. /**
  33. * @desc : 약속처방 Set Grid 오른쪽 마우스 팝업 처리
  34. * @param :
  35. * @event : onmousedown
  36. * @return : void
  37. * @authur : 마정민 2007. 3. 25
  38. * 오지훈 2007. 4. 24 - 마우스포커스가 트리뷰의 cell을 선택한 경우에만 팝업이 뜨게 처리
  39. * @---------------------------------------------------
  40. */
  41. function fMouseRghtBtnPopupSet(){
  42. if(event.button == 3){
  43. var rowpos = trv_promprcpset.mouseRow;
  44. trv_promprcpset.select(rowpos);
  45. }
  46. var srchcond1 = model.getValue("/root/init/srchcond1"); //개인, 과, 타과 구분
  47. var srchcond3 = model.getValue("/root/init/srchcond3"); //약속, prlt 구분
  48. if(srchcond3 == "P" && srchcond1 == "T"){
  49. setPopupMenu("trv_promprcpset", false, "/root/init/msrght/mouserghtset3", "label", "func");
  50. }else{
  51. setPopupMenu("trv_promprcpset", false, "/root/init/msrght/mouserghtset", "label", "func");
  52. }
  53. }
  54. /**
  55. * @desc : 약속처방 SET 폴더 추가
  56. * @
  57. * @param : onmousedown
  58. * @return : void
  59. * @authur : 오지훈 2007. 4. 24
  60. * @---------------------------------------------------
  61. */
  62. function fAddPrmsDiagSet(){
  63. var item = trv_promprcpset.item(trv_promprcpset.selectedIndex);
  64. if(item == null){
  65. return;
  66. }
  67. var rowPos = item.index + 1;
  68. fSetPrmsDiagInfo(rowPos, "i");
  69. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/status", "i");
  70. model.refresh();
  71. var autoflag = model.getValue("/root/init/autoflag");
  72. if(autoflag != "Y"){
  73. group1.attribute("top") = 550;
  74. group1.attribute("height") = 55;
  75. model.setFocus("ipt_setnm");
  76. model.refresh();
  77. }else{
  78. // fShowWndIptBox();
  79. rectangle1.attribute("visibility") = "visible";
  80. caption1.attribute("visibility") = "visible";
  81. input1.attribute("visibility") = "visible";
  82. button2.attribute("visibility") = "visible";
  83. button4.attribute("visibility") = "visible";
  84. model.setFocus("input1");
  85. }
  86. }
  87. /**
  88. * @desc : 약속처방 SET 폴더 수정
  89. * @
  90. * @param :
  91. * @return :
  92. * @---------------------------------------------------
  93. */
  94. function fUpdtPrmsDiagSet(){
  95. var item = trv_promprcpset.item(trv_promprcpset.selectedIndex);
  96. if(item == null){return;}
  97. var rowPos = item.index + 1;
  98. if(fSetPrmsDiagInfo(rowPos, "u")!=-1){
  99. fShowWndIptBox();
  100. }
  101. }
  102. /**
  103. * @desc : 약속처방 SET 폴더 삭제
  104. * @
  105. * @param :
  106. * @return :
  107. * @---------------------------------------------------
  108. */
  109. function fDelPrmsDiagSet(){
  110. var item = trv_promprcpset.item(trv_promprcpset.selectedIndex);
  111. if(item == null){return;}
  112. var rowPos = item.index + 1;
  113. if(fSetPrmsDiagInfo(rowPos, "d")!= -1){
  114. fSavePrmsDiagSet();
  115. }
  116. }
  117. /**
  118. * @desc : 약속처방SET 폴더명을 입력할 InputBox를 보여줌.
  119. * @
  120. * @param : onmousedown
  121. * @return : void
  122. * @authur : 오지훈 2007. 4. 24
  123. * @---------------------------------------------------
  124. */
  125. function fShowWndIptBox(){
  126. if(event.clientY >= 750){
  127. var ypos = 750;
  128. }else{
  129. var ypos = event.clientY
  130. }
  131. if( opener.model.getValue("/root/cp") == "S" ){
  132. if(event.clientY >= 550){
  133. var ypos = 550;
  134. }
  135. }
  136. group1.attribute("top") = ypos;
  137. group1.attribute("height") = 55;
  138. model.setFocus("ipt_setnm");
  139. model.refresh();
  140. }
  141. /**
  142. * @desc : 약속처방 SET정보 SETTING
  143. * @
  144. * @return : void
  145. * @authur : 오지훈 2007. 4. 24
  146. * @---------------------------------------------------
  147. */
  148. function fSetPrmsDiagInfo(rowpos, status){
  149. var setno = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setno");
  150. if(status == "u" && setno == 1){
  151. messageBox("선택한 폴더는 수정", "E001");
  152. return -1;
  153. }else if(status == "d" && setno == 1){
  154. messageBox("선택한 폴더는 삭제", "E001");
  155. return -1;
  156. }
  157. var setnm = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setnm");
  158. if(status == "d"){
  159. var rtnval = messageBox("[" + setnm + "]하위의 모든 폴더가 지워집니다. " + "[" + setnm + "]폴더를", "Q001");
  160. if(rtnval == 7){
  161. return -1;
  162. }
  163. }
  164. var levl = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/levl");
  165. var supsetno = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/supsetno");
  166. var setkindcd = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setkindcd");
  167. var setclscd = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setclscd");
  168. var settrgtcd = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/settrgtcd");
  169. var settypecd = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/settypecd");
  170. var sortno = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/sortno");
  171. var prtlno = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/prtlno");
  172. var ioflag = model.getValue("/root/init/srchcond4");
  173. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/levl" , levl);
  174. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/setno" , setno);
  175. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/setkindcd", setkindcd);
  176. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/setclscd" , setclscd);
  177. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/settrgtcd", settrgtcd);
  178. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/settypecd", settypecd);
  179. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/status" , status);
  180. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/setnm" , setnm);
  181. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/prtlno" , prtlno);
  182. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/ioflag" , ioflag);
  183. if(status == "i"){
  184. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/supsetno" , setno);
  185. }else{
  186. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/supsetno" , supsetno);
  187. }
  188. /*
  189. if(sortno == "")
  190. sortno = 1000;
  191. */
  192. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/sortno" , sortno);
  193. model.refresh();
  194. }
  195. /**
  196. * @desc : 약속처방 SET저장
  197. * @
  198. * @param :
  199. * @return : void
  200. * @authur : 오지훈 2007. 4. 24
  201. * @---------------------------------------------------
  202. */
  203. function fSavePrmsDiagSet(){
  204. var setnm = model.getValue("/root/main/iptbox/setnm");
  205. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/setnm", setnm);
  206. model.copyNode("/root/send/savedata", sPRMSPRCPSETLIST_HIDDEN);
  207. if(submit("TXMMB00601",false)){
  208. model.setValue(trv_promprcpset.attribute("ref"), "");
  209. trv_promprcpset.rebuild();
  210. }
  211. }
  212. /**
  213. * @desc : 약속처방 SET저장
  214. * @
  215. * @param :
  216. * @return : void
  217. * @authur : 오지훈 2007. 4. 24
  218. * @---------------------------------------------------
  219. */
  220. function fOndrop(){
  221. var rowpos = trv_promprcpset.mouseRow + 1;
  222. var levl = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/levl");
  223. var setnm = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setnm");
  224. var x = event.clientX;
  225. var maxposX = 24 + 16 * (levl - 1) + ( 13 * setnm.length);
  226. var minposX = 24 + 16 * (levl - 1);
  227. if(maxposX > x){
  228. fPrmsDiagSetDrop();
  229. }else{
  230. return;
  231. }
  232. }
  233. /**
  234. * @desc : 약속진단SET Drag
  235. * @
  236. * @param :
  237. * @return : void
  238. * @authur : 오지훈 2007. 4. 24
  239. * @---------------------------------------------------
  240. */
  241. function fPrmsDiagSetDrag(){
  242. var item = trv_promprcpset.item(trv_promprcpset.selectedIndex);
  243. if(item == null){return;}
  244. var rowpos = item.index + 1;
  245. fSetPrmsDiagInfo(rowpos, "u");
  246. var setnm = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setnm");
  247. model.setValue("/root/main/iptbox/setnm", setnm);
  248. model.refresh();
  249. //fSavePrmsDiagSet();
  250. }
  251. /**
  252. * @desc : 약속진단SET Drop
  253. * @
  254. * @param :
  255. * @return : void
  256. * @authur : 오지훈 2007. 4. 24
  257. * @---------------------------------------------------
  258. */
  259. function fPrmsDiagSetDrop(){
  260. var rowpos = trv_promprcpset.mouseRow + 1;
  261. var levl = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/levl");
  262. var setno = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setno");
  263. var supsetno = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/supsetno");
  264. var cmplevl = model.getValue(sPRMSPRCPSETLIST_HIDDEN + "/levl");
  265. var cmpsetno = model.getValue(sPRMSPRCPSETLIST_HIDDEN + "/setno");
  266. var cmpsupsetno = model.getValue(sPRMSPRCPSETLIST_HIDDEN + "/supsetno");
  267. if(setno == cmpsetno){
  268. messageBox("동일한 위치로 이동", "E001");
  269. trv_promprcpset.item(trv_promprcpset.mouseRow).attribute("background-color") = "#ffffff";
  270. trv_promprcpset.item(trv_promprcpset.mouseRow).attribute("text-decoration") = "";
  271. return;
  272. }else if(setno == cmpsupsetno){
  273. messageBox("지정된 위치로 이동", "E001");
  274. trv_promprcpset.item(trv_promprcpset.mouseRow).attribute("background-color") = "#ffffff";
  275. trv_promprcpset.item(trv_promprcpset.mouseRow).attribute("text-decoration") = "";
  276. return;
  277. }
  278. //이동하는 SET폴더의 depth가 도착하는 곳보다 낮은 레벨일 경우,
  279. //자신의 child node 아래로 이동하는 것을 방지함.
  280. if(cmplevl < levl){
  281. var rootlevl;
  282. var rootsetno;
  283. while(cmplevl != rootlevl){
  284. rootlevl = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/levl");
  285. rootsetno = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setno");
  286. rowpos--;
  287. }
  288. if(rootsetno == cmpsetno){
  289. messageBox("지정된 위치로 이동", "E001");
  290. trv_promprcpset.item(trv_promprcpset.mouseRow).attribute("background-color") = "#ffffff";
  291. trv_promprcpset.item(trv_promprcpset.mouseRow).attribute("text-decoration") = "";
  292. return;
  293. }
  294. }
  295. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/supsetno" , setno);
  296. model.refresh();
  297. fSavePrmsDiagSet();
  298. }
  299. /**
  300. * @desc : 약속진단SET MouseOver
  301. * @
  302. * @param :
  303. * @return : void
  304. * @authur : 오지훈 2007. 4. 24
  305. * @---------------------------------------------------
  306. */
  307. function fMouseOver(){
  308. var rowpos = trv_promprcpset.mouseRow + 1;
  309. var levl = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/levl");
  310. var setnm = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setnm");
  311. var x = event.clientX;
  312. var maxposX = 24 + 16 * (levl - 1) + ( 10 * setnm.length);
  313. var minposX = 24 + 16 * (levl - 1);
  314. if(maxposX > x){
  315. for ( var i = 0; i < trv_promprcpset.length; i++ ) {
  316. trv_promprcpset.item(i).attribute("background-color") = "#ffffff";
  317. trv_promprcpset.item(i).attribute("text-decoration") = "";
  318. }
  319. trv_promprcpset.item(trv_promprcpset.mouseRow).attribute("background-color") = "#ece1ec";
  320. trv_promprcpset.item(trv_promprcpset.mouseRow).attribute("text-decoration") = "underline";
  321. }else{
  322. return;
  323. }
  324. }
  325. /**
  326. * @desc : TreeView 선택된 item의 background color를 clear함
  327. * @
  328. * @param :
  329. * @return : void
  330. * @authur : 오지훈 2007. 4. 24
  331. * @---------------------------------------------------
  332. */
  333. function fClrTreeViweSelect(){
  334. for(var i = 0; i < trv_promprcpset.length; i++){
  335. trv_promprcpset.item(i).attribute("background-color") = "#ffffff";
  336. trv_promprcpset.item(i).attribute("text-decoration") = "";
  337. }
  338. }
  339. function fReqPrmsDetlSet() {
  340. var item = trv_promprcpset.item(trv_promprcpset.selectedIndex);
  341. if(item == null){
  342. return;
  343. }
  344. var rowpos = item.index + 1;
  345. fSetPrmsDiagInfo(rowpos);
  346. var setno = model.getValue(sPRMSPRCPSETLIST_HIDDEN + "/setno");
  347. var settypecd = model.getValue(sPRMSPRCPSETLIST_HIDDEN + "/settypecd");
  348. if(setno == 1){
  349. return;
  350. }
  351. model.setValue ( "/root/send/cond1", setno);
  352. model.setValue ( "/root/send/cond2", settypecd);
  353. var insukind = opener.model.getValue ( "/root/paminfo/list/insukind");
  354. if (isNull(insukind)){
  355. insukind = model.getValue ( "/root/paminfo/list/insukind");
  356. }
  357. if (!isNull(insukind)){
  358. model.makeValue( "/root/send/cond3", insukind ); //외래follow up
  359. }
  360. model.makeValue("/root/send/prcpdd", opener.model.getValue("/root/init/prcpdd"));
  361. if(submit( "TRMMB00202" )){
  362. fAbsnSrch ( "/root/main/prcp/prcplist", grd_promprcplist );
  363. }
  364. }
  365. function fPrmsSave() {
  366. var setno = model.getValue("/root/hidden/prmsprcpsetinfo/prmsprcpsetlist/setno");
  367. var settypecd = model.getValue("/root/hidden/prmsprcpsetinfo/prmsprcpsetlist/settypecd");
  368. var setnm = model.getValue("/root/hidden/prmsprcpsetinfo/prmsprcpsetlist/setnm");
  369. var srchcond1 = model.getValue("/root/init/srchcond1");
  370. if ( opener.model.getValue("/root/paminfo/list/insukind") != "11" && opener.model.getValue("/root/paminfo/list/insukind") != "21" && opener.model.getValue("/root/paminfo/list/insukind") != "22" ) {
  371. //messageBox ( "처방화면에서 약속처방 등록시는 보험유형과 급비기준이 관련있으므로 [건강보험,의료급여1종,의료급여2종] 환자에서만 약속처방 등록이", "I006" );
  372. //return;
  373. }
  374. if ( srchcond1 == "T" ) {
  375. if (model.getValue ( "/root/main/cond/deptcd" ) != getUserInfo("dutplcecd")) {
  376. messageBox ( "타과 약속처방폴더에는 저장", "E001" );
  377. return;
  378. }
  379. }
  380. //자동폴더 생성 후 약속처방 저장 기능
  381. //2008.07.25 오지훈
  382. if(model.getValue("/root/init/autoflag") != "Y"){
  383. if(setno == 1 || isNull(setnm)){ //최상위 폴더 또는 선택된 약속처방폴더가 없는 경우는 자동으로 폴더를 띄움
  384. trv_promprcpset.select(0);
  385. model.setValue("/root/init/autoflag", "Y");
  386. fAddPrmsDiagSet();
  387. return;
  388. }else{
  389. if ( messageBox( setnm + " 약속처방폴더에 선택하신 처방을", "Q002") == "7" ) {
  390. return;
  391. }
  392. model.setValue("/root/init/autoflag", "N"); //처방저장 후 autoflag N으로 설정
  393. }
  394. }
  395. /*
  396. if(setno == 1){
  397. messageBox ( "최상위 약속처방폴더에는 저장", "E001" );
  398. return;
  399. }
  400. if ( isNull(setnm)) {
  401. //messageBox ( "선택된 약속처방폴더가", "I004" );
  402. trv_promprcpset.select(0);
  403. model.setValue("/root/init/autoflag", "Y");
  404. fAddPrmsDiagSet();
  405. return;
  406. } else {
  407. if ( messageBox( setnm + " 약속처방폴더에 선택하신 처방을", "Q002") == "7" ) {
  408. return;
  409. }
  410. }
  411. */
  412. var curRow = 0;
  413. var grupsnglcnt = 0;
  414. var selectedRows = opener.grd_prcplist.selectedRows;
  415. var pDestNode = model.instances(0).selectSingleNode("/root/save/prcp");
  416. for ( var i=0; i < selectedRows; i++ ) {
  417. var prcpkindcd = opener.model.getValue ( "/root/main/prcp/prcplist[" + opener.grd_prcplist.selectedrow(i) + "]/prcpkindcd");
  418. var prcpnm = opener.model.getValue ( "/root/main/prcp/prcplist[" + opener.grd_prcplist.selectedrow(i) + "]/prcpnm");
  419. var inclprcpno = opener.model.getValue ( "/root/main/prcp/prcplist[" + opener.grd_prcplist.selectedrow(i) + "]/inclprcpno");
  420. var status = opener.model.getValue ( "/root/main/prcp/prcplist[" + opener.grd_prcplist.selectedrow(i) + "]/status");
  421. if ( !isNull(inclprcpno) && inclprcpno != "0" ) {
  422. var grupsnglflag = opener.model.getValue ( "/root/main/prcp/prcplist[" + opener.grd_prcplist.selectedrow(i) + "]/grupsnglflag");
  423. if ( grupsnglflag != "M" ) {
  424. grupsnglcnt++;
  425. continue;
  426. }
  427. }
  428. var hsctlnkno = opener.model.getValue ( "/root/main/prcp/prcplist[" + opener.grd_prcplist.selectedrow(i) + "]/hsctlnkno");
  429. if ( !isNull(hsctlnkno) && hsctlnkno != "0" ) {
  430. var prcpsetcd = opener.model.getValue ( "/root/main/prcp/prcplist[" + opener.grd_prcplist.selectedrow(i) + "]/prcpsetcd");
  431. if ( prcpsetcd != "-" ) {
  432. grupsnglcnt++;
  433. continue;
  434. }
  435. }
  436. if ( status == "S" ) {
  437. continue;
  438. }
  439. if ( fPrmsSaveCheck ( "prms", prcpkindcd, prcpnm )) {
  440. curRow++;
  441. var pSrchNode = opener.model.instances(0).selectSingleNode("/root/main/prcp/prcplist[" + opener.grd_prcplist.selectedrow(i) + "]");
  442. pDestNode.appendChild(pSrchNode.cloneNode(true));
  443. model.setValue("/root/save/prcp/prcplist[" + curRow + "]/prcppkspec", setno + "|" + settypecd);
  444. //model.setValue("/root/main/prcp/prcplist[" + curRow + "]/pampkspec", "Y"); //검색을 다시 할 필요가 없기에 구분자를 넣는다.
  445. model.setValue("/root/save/prcp/prcplist[" + curRow + "]/status", "I");
  446. var drprcpetc2 = model.getValue("/root/save/prcp/prcplist[" + curRow + "]/drprcpetc2"); // 특수주사실 정보가 없으면 저장 시 오류 수정
  447. if ( isNull(drprcpetc2) ) {
  448. model.setValue("/root/save/prcp/prcplist[" + curRow + "]/drprcpetc2", "-");
  449. }
  450. }
  451. }
  452. if ( grupsnglcnt > 0 ) {
  453. messageBox ( "약속처방에는 대표코드만 저장됩니다.", "I" );
  454. }
  455. var savePrcpInfo = model.instances(0).selectNodes( "/root/save/prcp/prcplist" );
  456. if ( savePrcpInfo.length > 0 ) {
  457. //model.setValue ( "/root/send/cond1", getNodeListCSV(savePrcpInfo));
  458. copyNodeListType ( "/root/send/cond1", "/root/save/prcp/prcplist[status!='S']", "replace", model, model); //sort기능 추가 후 약속셋copy 시 컬럼순서때문 오류 수정 (2009.10.28 by JJE)
  459. model.setValue ( "/root/send/cond2", "1" );
  460. model.removeNodeset ( "/root/save/prcp/prcplist" );
  461. if ( !submit ( "TRMMB00203", false )){
  462. model.resetInstanceNode ( "/root/send" );
  463. model.refresh();
  464. return;
  465. }
  466. var prcpErrList = model.instances(0).selectNodes( "/root/result/prcperrlist" );
  467. var xpt = window.screenleft + 100;
  468. var ypt = window.screenTop + 50;
  469. var coord = getRelativeCoordinate ( xpt, ypt );
  470. var mon = coord[0];
  471. xpt = coord[1];
  472. ypt = coord[2];
  473. if ( prcpErrList.length > 0 ) {
  474. if ( !isNull(model.getValue ( "/root/result/prcperrlist[1]/prcpcd"))){
  475. open ( "SPMMO00600", mon, xpt, ypt, "prcpdetl", "/root/result", "/root/result" ); //오류팝업
  476. model.removeNodeset("/root/result/prcperrlist");
  477. }
  478. return;
  479. }
  480. submit("TXMMB00201");
  481. model.removeNodeset("/root/send/cond1/prcplist"); //reset (2009.10.28 by JJE)
  482. fAbsnSrch ( "/root/main/prcp/prcplist", grd_promprcplist );
  483. }
  484. }
  485. function fDelPrmsPrcp() {
  486. //타과 약속처방을 삭제할 수 없도록 처리함
  487. var deptflag = model.getValue("/root/init/srchcond1"); //개인, 과, 타과
  488. var prmsflag = model.getValue("/root/init/srchcond3"); //약속처방, 프로토콜
  489. if(deptflag == "T"){ //타과
  490. var orddeptcd = model.getValue("/root/main/cond/deptcd");
  491. var orddeptnm = cmb_deptset.label;
  492. if(orddeptcd != getUserInfo("dutplcecd")){
  493. messageBox("[" + orddeptnm + "] 약속처방을 삭제", "E001");
  494. return;
  495. }
  496. }
  497. if ( grd_promprcplist.row > 0 ) {
  498. model.setValue ( "/root/main/prcp/prcplist[" + grd_promprcplist.row + "]/status", "I" );
  499. model.refresh();
  500. }
  501. if ( messageBox( "선택된 처방을", "Q001") == "7" ) {
  502. return;
  503. }
  504. for ( var i=1; i < grd_promprcplist.rows; i++ ) {
  505. if ( model.getValue ( "/root/main/prcp/prcplist[" + i + "]/status" ) == "I" ) {
  506. model.setValue ( "/root/main/prcp/prcplist[" + i + "]/status", "D" );
  507. }
  508. }
  509. var savePrcpInfo = model.instances(0).selectNodes( "/root/main/prcp/prcplist" );
  510. //model.setValue ( "/root/send/cond1", getNodeListCSV(savePrcpInfo));
  511. copyNodeListType ( "/root/send/cond1", "/root/main/prcp/prcplist[status!='S']", "replace", model, model); //처방그리드 sort기능 추가 후 약속셋copy 시 컬럼순서때문 오류 수정 (2009.10.28 by JJE)
  512. submit("TXMMB00201");
  513. model.removeNodeset("/root/send/cond1/prcplist"); //reset (2009.10.28 by JJE)
  514. }
  515. /**
  516. * @desc : 대체약 일괄변경
  517. * @return : void
  518. * @authur : 마정민 2007. 6. 19
  519. * @
  520. */
  521. function fAltDrugAll() {
  522. fAltDrug( grd_promprcplist.row, "3" );
  523. trv_promprcpset.dispatch("xforms-select");
  524. }
  525. /**
  526. * @desc : 대체약 폴더내 변경
  527. * @return : void
  528. * @authur : 마정민 2007. 6. 19
  529. * @
  530. */
  531. function fAltDrugFolder () {
  532. fAltDrug( grd_promprcplist.row, "2" );
  533. trv_promprcpset.dispatch("xforms-select");
  534. }
  535. /**
  536. * @desc : 대체약이 있을경우 색처리 및 프로토콜 값 세팅
  537. * @param : strSrc - source 노드
  538. : grdObj - DataGrid
  539. * @return : void
  540. * @authur : 마정민 2007. 7. 03
  541. */
  542. function fAbsnSrch ( strSrc, grdObj ) {
  543. var srcNodeList = model.instances(0).selectNodes( strSrc );
  544. var tempcol16 = "";
  545. var prcpuseflag = "";
  546. var prcpclscd = "";
  547. var settypecd = model.getValue(sPRMSPRCPSETLIST_HIDDEN + "/settypecd" );
  548. var prtlno = model.getValue(sPRMSPRCPSETLIST_HIDDEN + "/prtlno");
  549. for(var i = 1; i <= srcNodeList.length; i++) {
  550. if (settypecd == "C" ) { //프로토콜약속처방이면 프로토콜 값을 세팅한다.
  551. model.setValue ( strSrc + "[" + i + "]/prtlno", prtlno );
  552. }
  553. model.setValue ( strSrc + "[" + i + "]/status", "I" );
  554. tempcol16 = model.getValue ( strSrc + "[" + i + "]/tempcol16");
  555. prcpclscd = model.getValue ( strSrc + "[" + i + "]/prcpclscd");
  556. prcpuseflag = getArrayData (tempcol16, 0, 0, "^", "|" );
  557. grdObj.rowstyle(i, "data", "color") = "#000000"; //기존에 색칠되어 있는 것을 clear 해 준다.
  558. if (prcpuseflag == "D") { // 수가정보에 없는경우
  559. grdObj.rowstyle(i, "data", "color") = "#ff4848";
  560. } else if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) {
  561. var drugmastspec = model.getValue ( strSrc + "[" + i + "]/drugmastspec") + "^";
  562. if ( getArrayData (drugmastspec, 0, 10, "^", "|" ) == "Y" ) { // 품절여부가 Y 이면 색표시를 해준다.
  563. grdObj.rowstyle(i, "data", "color") = "#c0c0c0";
  564. }
  565. }
  566. }
  567. }
  568. /**
  569. * @desc : 폴더 복사
  570. * @
  571. * @param :
  572. * @return :
  573. * @authur : 오지훈 2007. 10. 13
  574. * @---------------------------------------------------
  575. */
  576. function fFolderCopy(){
  577. var item = trv_promprcpset.item(trv_promprcpset.selectedIndex);
  578. if(item == null){return;}
  579. var currow = item.index + 1;
  580. var levl = model.getValue(sPRMSPRCPSETLIST + "[" + currow + "]/levl");
  581. var setno = model.getValue(sPRMSPRCPSETLIST + "[" + currow + "]/setno");
  582. var settypecd = model.getValue(sPRMSPRCPSETLIST + "[" + currow + "]/settypecd");
  583. var setkindcd = model.getValue(sPRMSPRCPSETLIST + "[" + currow + "]/setkindcd");
  584. var settrgtcd = model.getValue(sPRMSPRCPSETLIST + "[" + currow + "]/settrgtcd");
  585. var setclscd = model.getValue(sPRMSPRCPSETLIST + "[" + currow + "]/setclscd");
  586. var setnm = model.getValue(sPRMSPRCPSETLIST + "[" + currow + "]/setnm");
  587. if(setno == 1){
  588. messageBox("즐겨찾기 폴더는 복사", "E001");
  589. return;
  590. }
  591. model.setValue("/root/temp/copy/setno" , setno);
  592. model.setValue("/root/temp/copy/settypecd", settypecd);
  593. model.setValue("/root/temp/copy/setkindcd", setkindcd);
  594. model.setValue("/root/temp/copy/setclscd" , setclscd);
  595. model.setValue("/root/temp/copy/settrgtcd", settrgtcd);
  596. model.setValue("/root/temp/copy/setnm" , setnm);
  597. }
  598. /**
  599. * @desc : 폴더 붙여넣기
  600. * @
  601. * @param :
  602. * @return :
  603. * @authur : 오지훈 2007. 10. 13
  604. * @---------------------------------------------------
  605. */
  606. function fFolderPaste(){
  607. var setno = model.getValue("/root/temp/copy/setno");
  608. if(setno == ""){ //복사할 내용이 없는 경우
  609. return;
  610. }
  611. var item = trv_promprcpset.item(trv_promprcpset.selectedIndex);
  612. if(item == null){return;}
  613. var currow = item.index + 1;
  614. var supsetno = model.getValue(sPRMSPRCPSETLIST + "[" + currow + "]/setno");
  615. var setkindcd = model.getValue(sPRMSPRCPSETLIST + "[" + currow + "]/setkindcd");
  616. var settypecd = model.getValue(sPRMSPRCPSETLIST + "[" + currow + "]/settypecd");
  617. var settrgtcd = model.getValue(sPRMSPRCPSETLIST + "[" + currow + "]/settrgtcd");
  618. var setclscd = model.getValue(sPRMSPRCPSETLIST + "[" + currow + "]/setclscd");
  619. var ioflag = model.getValue(sPRMSPRCPSETLIST + "[" + currow + "]/ioflag");
  620. model.setValue("/root/temp/copy/supsetno" , supsetno);
  621. model.setValue("/root/temp/copy/ioflag" , ioflag);
  622. model.setValue("/root/temp/copy/trgtsettypecd", settypecd);
  623. model.setValue("/root/temp/copy/trgtsetkindcd", setkindcd);
  624. model.setValue("/root/temp/copy/trgtsettrgtcd", settrgtcd);
  625. model.setValue("/root/temp/copy/trgtsetclscd" , setclscd);
  626. //trgtioflag는 저장 후, 재 조회시 화면의 외래/입원구분에 따라 조회하기 위해 설정
  627. model.setValue("/root/temp/copy/trgtioflag" , model.getValue("/root/init/srchcond4"));
  628. model.copyNode("/root/send/savedata", "/root/temp/copy");
  629. submit("TXMMB00607");
  630. }
  631. /**
  632. * @desc : 약속SET폴더 순서 변경
  633. * @
  634. * @param :
  635. * @return :
  636. * @authur : 오지훈 2007. 10. 21
  637. * @---------------------------------------------------
  638. */
  639. function fOpenPrmsSetFolderOrderChng(){
  640. var item = trv_promprcpset.item(trv_promprcpset.selectedIndex);
  641. if(item == null){return;}
  642. var rowpos = item.index + 1;
  643. var setkindcd = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setkindcd");
  644. var setclscd = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setclscd");
  645. var settypecd = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/settypecd");
  646. var procflag = "";
  647. var deptcd = getUserInfo("dutplcecd");
  648. var deptnm = getUserInfo("dutplcenm");
  649. var ioflag = model.getValue("/root/init/srchcond4");
  650. var indx = trv_promprcpset.selectedIndex;
  651. var prmsflag = model.getValue("/root/init/srchcond1");
  652. if(prmsflag != "P"){
  653. procflag = "D";
  654. }
  655. var param = setkindcd + "▦" +
  656. setclscd + "▦" +
  657. settypecd + "▦" +
  658. procflag + "▦" +
  659. deptcd + "▦" +
  660. deptnm + "▦" +
  661. ioflag + "▦" +
  662. indx;
  663. setParameter("SPMMB00800_param", param);
  664. modal("SPMMB00800");
  665. fReqPrmsPrcpSet(settypecd, setkindcd, setclscd, procflag, deptcd, deptnm, ioflag)
  666. var rtnindx = getParameter("SPMMB00800_rtnparam");
  667. if(rtnindx != ""){
  668. trv_promprcpset.select(rtnindx);
  669. trv_promprcpset.expand(rtnindx, true);
  670. }
  671. trv_promprcpset.rebuild();
  672. }
  673. /**
  674. * @desc : 약속처방SET 조회
  675. * @
  676. * @param :
  677. * @return :
  678. * @authur : 오지훈 2007. 10. 21
  679. * @---------------------------------------------------
  680. */
  681. function fReqPrmsPrcpSet(settypecd, setkindcd, setclscd, procflag, deptcd, deptnm, ioflag){
  682. model.removeNodeset("/root/send/reqdata");
  683. model.makeValue("/root/send/reqdata/settypecd", settypecd);
  684. model.makeValue("/root/send/reqdata/setkindcd", setkindcd);
  685. model.makeValue("/root/send/reqdata/setclscd" , setclscd);
  686. model.makeValue("/root/send/reqdata/procflag" , procflag);
  687. model.makeValue("/root/send/reqdata/deptcd" , deptcd);
  688. model.makeValue("/root/send/reqdata/deptnm" , deptnm);
  689. model.makeValue("/root/send/reqdata/ioflag" , ioflag);
  690. submit("TRMMB00601");
  691. }
  692. /**
  693. * @desc : 인자로 넘어온 값을 label 로 같은 아이템의 인덱스를 반환
  694. * @
  695. * @param :
  696. * @return :
  697. * @authur : 오지훈 2008. 06. 12
  698. * @---------------------------------------------------
  699. */
  700. function labelToIndex(label, tree){
  701. for(var i=0; i<tree.length; i++){
  702. if(tree.item(i).label == label)
  703. return i;
  704. }
  705. return -1;
  706. }