SMMMB03200.js 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805
  1. //변수선언
  2. var prcpclscd = 2;
  3. var prcpKindCdCol = 3; //처방종류 index
  4. var prcpnmCol = 5; //처방명 컬럼 index
  5. var prcpVolCol = 6; //용량 컬럼 index
  6. var prcpQtyCol = 8; //수량 컬럼 index
  7. var prcpTimsCol = 10; //횟수 컬럼 index
  8. var prcpDayNoCol = 11; //일수 컬럼 index
  9. var prcpDeliveFactCol = 15; //전달사항 컬럼 index
  10. var prcpHopeHdCol = 18; //희망일자 컬럼 index
  11. var ContPrcpDdRow = 6; //지정일 instance row
  12. var prcpNode = "/root/main/prcp/prcplist";
  13. var diagNode = "/root/main/diaginfo/diagcdlist";
  14. var prcpgenrflag = ""; //외래입원구분
  15. /**
  16. * @desc : 처방화면 초기화
  17. * @param :
  18. * @id : model1
  19. * @event : xforms-ready
  20. * @return : void
  21. * @authur : 마정민 2007. 3. 14
  22. * @---------------------------------------------------
  23. */
  24. function fInitializeReady() {
  25. model.recalculate();
  26. model.setfocus( "grd_prcplist" );
  27. grd_prcplist.dispatch("onentercell");
  28. }
  29. function fPromPrcpSrch(srchflag) {
  30. if(event.keyCode == "13") {
  31. var setno = model.getValue("/root/hidden/prmsprcpsetdetlset/setno");
  32. var setnm = model.getValue("/root/hidden/prmsprcpsetdetlset/setnm");
  33. if(setno == 1){
  34. messageBox("최상위 약속처방 폴더에서 검색", "E001");
  35. return;
  36. }
  37. if ( isNull(setnm)) {
  38. messageBox("선택된 약속처방폴더가", "I004");
  39. return;
  40. }
  41. if ( srchflag == "prcpcd") {
  42. var prcpnm = grd_prcplist.valuematrix(grd_prcplist.row, grd_prcplist.colRef("prcpcd"));
  43. } else {
  44. var prcpnm = grd_prcplist.valuematrix(grd_prcplist.row, grd_prcplist.colRef("prcpnm"));
  45. }
  46. var isHangul = fIsHangul (prcpnm);
  47. //한글일때는 1글자만 넣어도 검색가능
  48. if ( isNull(prcpnm)) {
  49. messageBox("검색어를", "C001");
  50. return;
  51. } else if ( isHangul == "E" ){
  52. //영문,숫자일때는 3글자 넣어야 검색가능
  53. if ( prcpnm.length < 3 ){
  54. messageBox("3글자 이상", "C001");
  55. return;
  56. }
  57. }
  58. if (prcpnm.charAt ( 0 ) == "/"){
  59. if ( prcpnm.length == 1 ){
  60. messageBox("검색할 수술명을", "C001");
  61. return;
  62. }
  63. var curRow = grd_prcplist.row;
  64. var srchRow = grd_prcplist.rows -1;
  65. var xpt = window.screenleft + 180;
  66. var ypt = window.screenTop + 80;
  67. //modael ( "SPMMO05100", 1, xpt, ypt );
  68. modal ( "SPMMO05100", 1, xpt, ypt ); //BY SONJY 2008-09-06 오타 수정.
  69. } else {
  70. if ( srchflag == "prcpcd") {
  71. fPrcpSrchCom ( prcpnm, model.getValue ( "/root/init/prcpdd" ), "11", "TRMMB00201", "", false, "getPrcpCdOldSrchInfo", isHangul );
  72. } else if ( srchflag == "prcpnm") {
  73. fPrcpSrchCom ( prcpnm, model.getValue ( "/root/init/prcpdd" ), "11", "TRMMB00201", "", false, "getPrcpNmSrchInfo", isHangul );
  74. } else {
  75. fPrcpSrchCom ( prcpnm, model.getValue ( "/root/init/prcpdd" ), "11", "TRMMB00201", "", false, "getPrcpSrchInfo", isHangul );
  76. }
  77. var srchLength = model.instances(0).selectNodes( "/root/prcpsrch/prcplist" ).length;
  78. var curRow = grd_prcplist.row;
  79. var nextRow = grd_prcplist.row + 1;
  80. if( srchLength > 1) {
  81. if ( grd_prcplist.row <= 13) {
  82. import1.attribute ( "top" ) = 71 + ( grd_prcplist.row - 1) * 23;
  83. } else if ( grd_prcplist.row <= 27) {
  84. import1.attribute ( "top" ) = (grd_prcplist.row - 1) * 23 - 300;
  85. } else if ( grd_prcplist.row > 27 ) {
  86. import1.attribute ( "top" ) = 24 * 23 - 224;
  87. }
  88. import1.visible = true;
  89. model.refresh();
  90. model.setfocus( "grd_prcpsrchlist" );
  91. grd_prcpsrchlist.select( 1, 1, 1, 1) = true;
  92. } else if( srchLength == 1) {
  93. srchRow = addPrcpDetl ( "import" , "/root/prcpsrch/prcplist" , "/root/main/prcp" , 1 , grd_prcplist.row, "02" );
  94. if ( srchRow != 0 ) {
  95. focusMain ( srchRow );
  96. }
  97. } else {
  98. messageBox ( "검색된 내용이", "I004" );
  99. grd_prcplist.dispatch("onentercell");
  100. }
  101. model.refresh();
  102. model.recalculate();
  103. }
  104. }
  105. }
  106. function fReqGetPrmsSet() {
  107. model.setValue("/root/send/cond1", model.getValue("/root/hidden/prmsprcpsetdetlset/setno"));
  108. model.setValue("/root/send/cond2", model.getValue("/root/hidden/prmsprcpsetdetlset/settypecd"));
  109. model.setValue("/root/send/setkindcd", opener.model.getValue("/root/send/reqdata/setkindcd"));
  110. model.setValue("/root/send/setclscd", opener.model.getValue("/root/send/reqdata/setclscd"));
  111. model.setValue("/root/send/settypecd", opener.model.getValue("/root/send/reqdata/settypecd"));
  112. model.setValue("/root/send/procflag", opener.model.getValue("/root/send/reqdata/procflag"));
  113. model.setValue("/root/send/deptcd", opener.model.getValue("/root/send/reqdata/deptcd"));
  114. model.setValue("/root/send/deptnm", opener.model.getValue("/root/send/reqdata/deptnm"));
  115. model.setValue("/root/send/userid", opener.model.getValue("/root/send/reqdata/userid"));
  116. model.setValue("/root/send/usernm", opener.model.getValue("/root/send/reqdata/usernm"));
  117. submit("TRMMB00252", false);
  118. appendChildPrcp ( "/root/reset/prcplist", "/root/main/prcp", "main" ); //검색라인추가
  119. model.refresh();
  120. model.recalculate();
  121. //2008.06.05 appendchild로 grid row추가 후 instance정보가 흐트러짐
  122. grd_prcplist.row = grd_prcplist.rows - 1;
  123. grd_prcplist.col = grd_prcplist.colRef("prcpcd");
  124. btn_editcell.dispatch("DOMActivate");
  125. }
  126. /**
  127. * @desc : 처방수정.
  128. * @ : 신규일때는 수정표시 안함.
  129. * @ : 삭제,D/C 상태일때는 취소후 수정.
  130. * @param :
  131. * @id : grd_prcplist
  132. * @event : xforms-value-changed
  133. * @return : void
  134. * @authur : 마정민 2007. 6. 4
  135. * @---------------------------------------------------
  136. */
  137. function fPrcpUpdate() {
  138. var status = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row+ "]/status" );
  139. if (status=="-") {
  140. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row+ "]/status", "U" );
  141. model.refresh();
  142. model.recalculate();
  143. }
  144. }
  145. /**
  146. * @desc : 오른쪽 마우스 클릭 삭제
  147. * @ : 신규일 때는 removeNode
  148. * @ : 수정중일 때 원복시킨 후 삭제, D/C 표시
  149. * @ : 삭제, D/C 원복시킬려면 ? 오른쪽 마우스에 삭제 및 D/C 원복
  150. * @ : D/C 후 삭제는 불가
  151. * @param :
  152. * @id : grd_prcplist
  153. * @event : 오른쪽 마우스 클릭 삭제
  154. * @return : void
  155. * @authur : 마정민 2007. 6. 4
  156. * @---------------------------------------------------
  157. */
  158. function fPrmsDeleteRow() {
  159. //타부서의 약속처방을 삭제할 수 없도록 처리. 2008-01-18 오지훈
  160. var prmsflag = opener.model.getValue("/root/main/cond/prmsflag");
  161. if(prmsflag == "T"){
  162. var orddeptcd = opener.model.getValue("/root/main/cond/deptsetcd");
  163. var orddeptnm = opener.cmb_deptset.label;
  164. if(orddeptcd = getUserInfo("dutplcecd")){ //
  165. messageBox("[" + orddeptnm +"] 약속처방을 삭제", "E001");
  166. return;
  167. }
  168. }
  169. var selectedRows = grd_prcplist.selectedRows;
  170. var node = instance1.selectSingleNode("/root/main/prcp");
  171. var cnt=0;
  172. for (i= selectedRows-1; i >= 0; i--) {
  173. var status = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/status" );
  174. if (status=="-") {
  175. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i)+ "]/status", "D" );
  176. } else if ( status =="I" ) {
  177. //신규입력(I)은 removeNode 이다.
  178. model.removeNode ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]" );
  179. //삭제시 데이터를
  180. } else if (status=="S") {
  181. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/prcpnm", "" );
  182. } else if (status=="D") {
  183. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i)+ "]/status", "-" );
  184. } else if (status=="U") {
  185. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i)+ "]/status", "D" );
  186. }
  187. }
  188. model.refresh();
  189. model.recalculate();
  190. }
  191. /**
  192. * @desc : 처방 오른쪽 마우스 팝업 처리
  193. * @param :
  194. * @id : grd_prcplist
  195. * @event : onmousedown
  196. * @return : void
  197. * @authur : 마정민 2007. 6. 4
  198. * @---------------------------------------------------
  199. */
  200. function fMouseRghtBtnPopup() {
  201. if (event.button == 3) {
  202. if(grd_prcplist.isCell(event.target) && grd_prcplist.mouseRow >= grd_prcplist.fixedRows){
  203. app.showPopupMenu(true);
  204. window.setPopupMenu(true, "/root/init/msrght/mouserght", "label", "func", false);
  205. } else {
  206. window.setPopupMenu(false);
  207. }
  208. }
  209. }
  210. function fPrmsPrcpSave() {
  211. var setno = model.getValue ("/root/hidden/prmsprcpsetdetlset/setno" );
  212. var settypecd = model.getValue ("/root/hidden/prmsprcpsetdetlset/settypecd" );
  213. var setnm = model.getValue( "/root/hidden/prmsprcpsetdetlset/setnm");
  214. if(setno == 1){
  215. model.alert ( "최상위 약속처방폴더에는 저장하실 수 없습니다.");
  216. return;
  217. }
  218. if ( isNull(setnm)) {
  219. model.alert ( "선택된 약속처방폴더가 없습니다.");
  220. return;
  221. } else {
  222. if ( messageBox( setnm + " 약속처방폴더에 선택하신 처방을", "Q002") == "7" ) {
  223. return;
  224. }
  225. }
  226. for ( var i=1; i < grd_prcplist.rows-1; i++ ) {
  227. if ( model.getValue ( "/root/main/prcp/prcplist[" + i + "]/status" ) == "I" ) {
  228. model.setValue("/root/main/prcp/prcplist[" + i + "]/prcpkindcd", "20" );
  229. model.setValue("/root/main/prcp/prcplist[" + i + "]/prcppkspec", setno + "|" + settypecd);
  230. }
  231. var drprcpetc2 = model.getValue("/root/main/prcp/prcplist[" + i + "]/drprcpetc2"); // 특수주사실 정보가 없으면 저장 시 오류 수정
  232. if ( isNull(drprcpetc2) ) {
  233. model.setValue("/root/main/prcp/prcplist[" + i + "]/drprcpetc2", "-");
  234. }
  235. }
  236. var savePrcpInfo = model.instances(0).selectNodes( "/root/main/prcp/prcplist" );
  237. //model.setValue ( "/root/send/cond1", getNodeListCSV(savePrcpInfo));
  238. copyNodeListType ( "/root/send/cond1", "/root/main/prcp/prcplist[status!='S']", "replace", model, model); //sort기능 추가 후 약속셋copy 시 컬럼순서때문 오류 수정 (2009.10.28 by JJE)
  239. model.setValue ( "/root/send/cond2", "1" );
  240. if ( !submit ( "TRMMB00203", false )){
  241. model.removeNodeset("/root/send/cond1/prcplist"); //reset (2009.10.28 by JJE)
  242. model.resetInstanceNode ( "/root/send" );
  243. model.refresh();
  244. return;
  245. }
  246. var prcpErrList = model.instances(0).selectNodes( "/root/result/prcperrlist" );
  247. var xpt = window.screenleft + 100;
  248. var ypt = window.screenTop + 50;
  249. var coord = getRelativeCoordinate ( xpt, ypt );
  250. var mon = coord[0];
  251. xpt = coord[1];
  252. ypt = coord[2];
  253. if ( prcpErrList.length > 0 ) {
  254. if ( !isNull(model.getValue ( "/root/result/prcperrlist[1]/prcpcd"))){
  255. open ( "SPMMO00600", mon, xpt, ypt, "prcpdetl", "/root/result", "/root/result" ); //오류팝업
  256. model.removeNodeset("/root/result/prcperrlist");
  257. }
  258. return;
  259. }
  260. if (submit("TXMMB00201", false)) {
  261. appendChildPrcp ( "/root/reset/prcplist", "/root/main/prcp", "main" ); //검색라인추가
  262. model.refresh();
  263. model.recalculate();
  264. }
  265. model.removeNodeset("/root/send/cond1/prcplist"); //reset (2009.10.28 by JJE)
  266. }
  267. /**
  268. * @desc : 약속처방 복사하기 기능
  269. * @param :
  270. * @id : grd_prcplist
  271. * @event : onmousedown
  272. * @return : void
  273. * @authur : 마정민 2007. 6. 12
  274. * @---------------------------------------------------
  275. */
  276. function fCopyRow () {
  277. var selectedRows = grd_prcplist.selectedRows;
  278. var cnt=0;
  279. for (var i=0; i< selectedRows; i++) {
  280. if (model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status") != "S" ){ //검색은 드래그 안한다.
  281. fPrcpBuffer( ++cnt, grd_prcplist.selectedrow(i), "/root/prcpdrag", prcpNode );
  282. }
  283. }
  284. var srcNodeList = model.instances(0).selectNodes("/root/prcpdrag/prcplist");
  285. for ( i=1 ; i<=srcNodeList.length ; i++ ) {
  286. model.setValue ( "/root/prcpdrag/prcplist[" + i + "]/status" , "I" );
  287. }
  288. }
  289. /**
  290. * @desc : 약속처방 붙혀넣기 기능
  291. * @param :
  292. * @id : grd_prcplist
  293. * @event : onmousedown
  294. * @return : void
  295. * @authur : 마정민 2007. 6. 12
  296. * @---------------------------------------------------
  297. */
  298. function fPasteRow () {
  299. var srcNodeList = model.instances(0).selectNodes("/root/prcpdrag/prcplist");
  300. var destNode = model.instances(0).selectSingleNode("/root/main/prcp");
  301. var row = grd_prcplist.rows-1;
  302. for (var i=1; i<srcNodeList.length+1; i++) {
  303. row = row++;
  304. model.duplicate( "/root/main/prcp", "/root/prcpdrag/prcplist[" + i + "]", "*[" + row + "]");
  305. model.setValue ( "/root/main/prcp/prcplist[" + row + "]/status", "I" );
  306. }
  307. model.refresh();
  308. }
  309. /**
  310. * @desc : SET폴더 삭제시, 약속처방 데이터 삭제
  311. * @
  312. * @param :
  313. * @return :
  314. * @---------------------------------------------------
  315. */
  316. function fClrGridData(){
  317. model.removeNodeset("/root/main/prcp/prcplist");
  318. model.refresh();
  319. }
  320. /**
  321. * @desc : 믹스번호처리
  322. * @return : void
  323. * @authur : 마정민 2007.10.09
  324. */
  325. function fMixNoCnt() {
  326. var selectedRows = grd_prcplist.selectedRows;
  327. var cnt = 0;
  328. for ( var i=selectedRows-1; i >= 0; i-- ){
  329. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  330. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  331. if ( selprcpclscd == "A6" ) {
  332. cnt++
  333. } else {
  334. grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  335. }
  336. }
  337. if ( cnt <= 1 ) {
  338. messageBox ( "Mix할 처방이 ", "E014");
  339. } else {
  340. var selectedRows = grd_prcplist.selectedRows;
  341. var prcpmixno = eval(model.getValue ( "/root/init/prcpmixno" )) + 1;
  342. for (var i=0; i< selectedRows; i++) {
  343. model.setValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpmixno", prcpmixno );
  344. fSetCpVal(grd_prcplist.selectedrow(i), "U");
  345. // if ( model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status" ) == "-" ) {
  346. // model.setValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status", "U" );
  347. // }
  348. }
  349. model.setValue ( "/root/init/prcpmixno", prcpmixno );
  350. for (var i=1; i < grd_prcplist.rows; i++) {
  351. var chkPrcpmixno = model.getValue ( prcpNode + "[" + i + "]/prcpmixno" );
  352. //믹스번호가 있는 것중에
  353. if ( chkPrcpmixno != "-" && !isNull(chkPrcpmixno)) {
  354. //삭제를 제외하고 값이 한개 밖에 없으면 mix를 해제해 준다.
  355. var srcNodeList = model.instances(0).selectNodes ( prcpNode + "[prcpmixno='" + chkPrcpmixno + "']" );
  356. if ( srcNodeList.length <= 1) {
  357. model.setValue ( prcpNode + "[" + i + "]/prcpmixno", "-" );
  358. // if ( model.getValue ( prcpNode + "[" + i + "]/status" ) == "-" ) {
  359. // model.setValue ( prcpNode + "[" + i + "]/status", "U" );
  360. // }
  361. }
  362. }
  363. }
  364. }
  365. }
  366. /**
  367. * @desc : 믹스번호취소처리
  368. * @return : void
  369. * @authur : 마정민 2007.10.16
  370. */
  371. function fMixNoDel() {
  372. var selectedRows = grd_prcplist.selectedRows;
  373. var cnt = 0;
  374. for ( var i=selectedRows-1; i >= 0; i-- ){
  375. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  376. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  377. if ( selprcpclscd == "A6" ) {
  378. cnt++
  379. } else {
  380. grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  381. }
  382. }
  383. var selectedRows = grd_prcplist.selectedRows;
  384. for (var i=0; i< selectedRows; i++) {
  385. model.setValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpmixno", "-" );
  386. fSetCpVal(grd_prcplist.selectedrow(i), "U");
  387. // if ( model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status" ) == "-" ) {
  388. // model.setValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status", "U" );
  389. // }
  390. }
  391. for (var i=1; i < grd_prcplist.rows; i++) {
  392. var chkPrcpmixno = model.getValue ( prcpNode + "[" + i + "]/prcpmixno" );
  393. //믹스번호가 있는 것중에
  394. if ( chkPrcpmixno != "-" && !isNull(chkPrcpmixno)) {
  395. //삭제를 제외하고 값이 한개 밖에 없으면 mix를 해제해 준다.
  396. var srcNodeList = model.instances(0).selectNodes ( prcpNode + "[prcpmixno='" + chkPrcpmixno + "']" );
  397. if ( srcNodeList.length <= 1) {
  398. model.setValue ( prcpNode + "[" + i + "]/prcpmixno", "-" );
  399. // if ( model.getValue ( prcpNode + "[" + i + "]/status" ) == "-" ) {
  400. // model.setValue ( prcpNode + "[" + i + "]/status", "U" );
  401. // }
  402. }
  403. }
  404. }
  405. }
  406. /**
  407. * @desc : 처방화면 오른쪽 마우스 클릭 처방 붙혀넣기
  408. * @return : void
  409. * @authur : 마정민 2007. 10. 22
  410. */
  411. function fPrcpPaste() {
  412. model.setValue ( "/root/init/cropflag", "N" );
  413. srcNodeList = model.instances(0).selectNodes("/root/prcpdrag/prcplist");
  414. var destNode = model.instances(0).selectSingleNode("/root/main/prcp");
  415. var dropRow = grd_prcplist.row;
  416. var endRow = grd_prcplist.rows -1;
  417. if ( dropRow == endRow ) {
  418. dropRow = dropRow -1;
  419. }
  420. for ( var i= 1; i<=srcNodeList.length ; i++){
  421. row = dropRow + i;
  422. model.duplicate( "/root/main/prcp", "/root/prcpdrag/prcplist[" + i + "]", "*[" + row + "]");
  423. fSetCpVal( row, "I");
  424. }
  425. model.removeNodeset ( "/root/prcpdrag/prcplist" );
  426. model.recalculate();
  427. model.refresh();
  428. }
  429. /**
  430. * @desc : 처방화면 오른쪽 마우스 클릭 처방 잘라내기
  431. * @return : void
  432. * @authur : 마정민 2007. 10. 22
  433. */
  434. function fPrcpCrop() {
  435. if ( model.getValue ("/root/init/cropflag") == "Y" ) {
  436. if (messageBox ( "잘라낸 데이터가 이미 있습니다. 잘라내시겠습니까?", "Q" ) != "6" ) {
  437. return;
  438. }
  439. }
  440. var selectedRows = grd_prcplist.selectedRows;
  441. var cnt=0;
  442. for (var i = selectedRows-1; i >= 0; i--) {
  443. if ( model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status" ) != "S" ){ //검색은 드래그 안한다.
  444. fPrcpBuffer( ++cnt, grd_prcplist.selectedrow(i), "/root/prcpdrag", prcpNode );
  445. if ( model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status" ) == "I" ) {
  446. model.removenode ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]" );
  447. } else {
  448. model.setValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status", "D" )
  449. }
  450. }
  451. model.setValue ( "/root/init/cropflag", "Y" );
  452. }
  453. var srcNodeList = model.instances(0).selectNodes("/root/prcpdrag/prcplist");
  454. for ( i=1 ; i<=srcNodeList.length ; i++ ) {
  455. model.setValue ( "/root/prcpdrag/prcplist[" + i + "]/status" , "I" );
  456. }
  457. model.refresh();
  458. }
  459. /**
  460. * @desc : 처방상세 일괄입력
  461. * @param :
  462. * @return : void
  463. * @authur : 마정민 2007. 6. 30
  464. */
  465. function fPrcpDetlCom() {
  466. var xpt = 510;
  467. var ypt = 180;
  468. var header = "";
  469. var useyn = "";
  470. var value = "";
  471. var cnt = 0;
  472. var selectedRows = grd_prcplist.selectedRows;
  473. var prcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(0) + "]/prcpclscd" );
  474. var prnscrID = getScreenID(); //LYJ 2010.01.02 PRN처방 팝업 뜨는 조건위해 화면 ID 추가
  475. //fPrcpModal ( "SPMMO 10400", xpt, ypt ); //일괄입력 공통
  476. if ( prcpclscd == "A2" || prcpclscd == "A4" ) { //약
  477. for ( var i=selectedRows-1; i >= 0; i-- ){
  478. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  479. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  480. if ( selprcpclscd != "A2" && selprcpclscd != "A4" ) {
  481. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  482. cnt++;
  483. }
  484. }
  485. if ( cnt > 0) {
  486. fPrcpModal ( "SPMMO10400", xpt, ypt );
  487. } else {
  488. setParameter ( "SPMMO12100_prnchk", prnscrID); //LYJ 2010.01.02 PRN처방 팝업 뜨는 조건위해 화면 ID 추가
  489. fPrcpModal ( "SPMMO12100", xpt, ypt );
  490. }
  491. } else if ( prcpclscd == "A6" ) { //주사
  492. for ( var i=selectedRows-1; i >= 0; i-- ){
  493. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  494. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  495. if ( selprcpclscd != prcpclscd ) {
  496. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  497. cnt++;
  498. }
  499. }
  500. if ( cnt > 0) {
  501. fPrcpModal ( "SPMMO10400", xpt, ypt );
  502. } else {
  503. setParameter ( "SPMMO12200_prnchk", prnscrID); //LYJ 2010.01.02 PRN처방 팝업 뜨는 조건위해 화면 ID 추가
  504. fPrcpModal ( "SPMMO12200", xpt, ypt );
  505. }
  506. } else if ( prcpclscd == "F2" ) { //재활
  507. for ( var i=selectedRows-1; i >= 0; i-- ){
  508. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  509. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  510. if ( selprcpclscd != prcpclscd ) {
  511. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  512. cnt++;
  513. }
  514. }
  515. if ( cnt > 0) {
  516. fPrcpModal ( "SPMMO10400", xpt, ypt );
  517. } else {
  518. fPrcpModal ( "SPMMO11200", xpt, ypt );
  519. }
  520. } else if ( prcpclscd == "C2" || prcpclscd == "C6" || prcpclscd == "E2" ) {
  521. //방사선 검사(기능검사, 내시경,천자,생검, 방사선, 핵의학영상, 방사선치료)
  522. for ( var i=selectedRows-1; i >= 0; i-- ){
  523. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  524. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  525. if ( selprcpclscd != "C2" && selprcpclscd != "C6" && selprcpclscd != "E2" ) {
  526. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  527. cnt++;
  528. }
  529. }
  530. if ( cnt > 0) {
  531. fPrcpModal ( "SPMMO10400", xpt, ypt );
  532. } else {
  533. setParameter ( "SPMMO12300_prcpclscd", prcpclscd );
  534. fPrcpModal ( "SPMMO12300", xpt, ypt );
  535. setParameter ( "SPMMO12300_prcpclscd", "" );
  536. }
  537. } else if ( prcpclscd == "B2" || prcpclscd == "B6" ) { //진단검사 (검체검사), 핵의학 체내
  538. for ( var i=selectedRows-1; i >= 0; i-- ){
  539. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  540. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  541. if ( selprcpclscd != "B2" && selprcpclscd != "B6" ) {
  542. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  543. cnt++;
  544. }
  545. }
  546. if ( cnt > 0) {
  547. fPrcpModal ( "SPMMO10400", xpt, ypt );
  548. } else {
  549. setParameter ( "SPMMO12400_prcpclscd", prcpclscd );
  550. fPrcpModal ( "SPMMO12400", xpt, ypt );
  551. setParameter ( "SPMMO12400_prcpclscd", "" );
  552. }
  553. } else if ( prcpclscd == "H2" ) { //수술, 처치, 치과
  554. for ( var i=selectedRows-1; i >= 0; i-- ){
  555. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  556. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  557. if ( selprcpclscd != "H2" && selprcpclscd != "H4" ) {
  558. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  559. cnt++;
  560. }
  561. }
  562. if ( cnt > 0) {
  563. fPrcpModal ( "SPMMO10400", xpt, ypt );
  564. } else {
  565. fPrcpModal ( "SPMMO12600", xpt, ypt );
  566. }
  567. } else if ( prcpclscd == "K2" ) {
  568. for ( var i=selectedRows-1; i >= 0; i-- ){
  569. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  570. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  571. if ( selprcpclscd != "K2" ) {
  572. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  573. cnt++;
  574. }
  575. }
  576. if ( cnt > 0) {
  577. fPrcpModal ( "SPMMO10400", xpt, ypt );
  578. } else {
  579. fPrcpModal ( "SPMMO13500", xpt, ypt );
  580. }
  581. } else if ( prcpclscd == "03" ) { //식이
  582. for ( var i=selectedRows-1; i >= 0; i-- ){
  583. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  584. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  585. if ( selprcpclscd != prcpclscd ) {
  586. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  587. cnt++;
  588. }
  589. }
  590. if ( cnt > 0) {
  591. fPrcpModal ( "SPMMO10400", xpt, ypt );
  592. } else {
  593. fPrcpModal ( "SPMMO12700", xpt, ypt );
  594. }
  595. } else if ( prcpclscd == "I2" || prcpclscd == "I4" ) { //마취
  596. for ( var i=selectedRows-1; i >= 0; i-- ){
  597. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  598. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  599. if ( selprcpclscd != "I2" && selprcpclscd != "I4") {
  600. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  601. cnt++;
  602. }
  603. }
  604. if ( cnt > 0) {
  605. fPrcpModal ( "SPMMO10400", xpt, ypt );
  606. } else {
  607. fPrcpModal ( "SPMMO12800", xpt, ypt );
  608. }
  609. } else if ( prcpclscd == "C4" ) { //angio
  610. for ( var i=selectedRows-1; i >= 0; i-- ){
  611. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  612. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  613. if ( selprcpclscd != prcpclscd ) {
  614. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  615. cnt++;
  616. }
  617. }
  618. if ( cnt > 0) {
  619. fPrcpModal ( "SPMMO10400", xpt, ypt );
  620. } else {
  621. fPrcpModal ( "SPMMO12900", xpt, ypt );
  622. }
  623. } else if ( prcpclscd == "D2" ) { //병리
  624. for ( var i=selectedRows-1; i >= 0; i-- ){
  625. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  626. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  627. if ( selprcpclscd != prcpclscd ) {
  628. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  629. cnt++;
  630. }
  631. }
  632. if ( cnt > 0) {
  633. fPrcpModal ( "SPMMO10400", xpt, ypt );
  634. } else {
  635. fPrcpModal ( "SPMMO13000", xpt, ypt );
  636. }
  637. } else if ( prcpclscd == "M2" ) { //재료
  638. for ( var i=selectedRows-1; i >= 0; i-- ){
  639. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  640. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  641. if ( selprcpclscd != prcpclscd ) {
  642. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  643. cnt++;
  644. }
  645. }
  646. if ( cnt > 0) {
  647. fPrcpModal ( "SPMMO10400", xpt, ypt );
  648. } else {
  649. fPrcpModal ( "SPMMO13600", xpt, ypt );
  650. }
  651. } else if ( prcpclscd == "G2" ) { //RT
  652. for ( var i=selectedRows-1; i >= 0; i-- ){
  653. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  654. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  655. if ( selprcpclscd != prcpclscd ) {
  656. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  657. cnt++;
  658. }
  659. }
  660. if ( cnt > 0) {
  661. fPrcpModal ( "SPMMO10400", xpt, ypt );
  662. } else {
  663. fPrcpModal ( "SPMMO13700", xpt, ypt );
  664. }
  665. } else if ( prcpclscd == "H4" ) { //처치
  666. for ( var i=selectedRows-1; i >= 0; i-- ){
  667. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  668. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  669. if ( selprcpclscd != prcpclscd ) {
  670. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  671. cnt++;
  672. }
  673. }
  674. if ( cnt > 0) {
  675. fPrcpModal ( "SPMMO10400", xpt, ypt );
  676. } else {
  677. fPrcpModal ( "SPMMO13800", xpt, ypt );
  678. }
  679. } else if ( prcpclscd == "B4" ) { //수혈 (혈액수혈)
  680. for ( var i=selectedRows-1; i >= 0; i-- ){
  681. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  682. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  683. if ( selprcpclscd != prcpclscd ) {
  684. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  685. cnt++;
  686. }
  687. }
  688. if ( cnt > 0) {
  689. fPrcpModal ( "SPMMO10400", xpt, ypt );
  690. } else {
  691. fPrcpModal ( "SPMMO12500", xpt, ypt );
  692. }
  693. }
  694. fBatIpt ( "batipt_rtn1_useyn", "batipt_rtn1" );
  695. }
  696. /**
  697. * @desc : PreWorkUp 처리 오른쪽 마우스 클릭
  698. * @return : void
  699. * @authur : 마정민 2007. 4. 30
  700. */
  701. function fPreWorkUp () {
  702. var selectedRows = grd_prcplist.selectedRows;
  703. for (var i=0; i< selectedRows; i++) {
  704. if ( model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/trnptbftestflag" ) == "Y" ) {
  705. model.setValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/trnptbftestflag", "N" )
  706. } else {
  707. model.setValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/trnptbftestflag", "Y" )
  708. }
  709. makePrcpNm( prcpNode, grd_prcplist.selectedrow(i) );
  710. fSetCpVal(grd_prcplist.selectedrow(i), "U");
  711. }
  712. }
  713. /**
  714. * @desc : 그리드 data 엑셀화일로 저장
  715. * @
  716. * @param :
  717. * @return :
  718. * @author : EMR 2010. 4.
  719. * @---------------------------------------------------
  720. */
  721. function fSaveGridToExcel(){
  722. saveGridToExcel(grd_prcplist);
  723. }