SMMMB00200.xjs 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[//변수선언
  3. var prcpclscd = 2;
  4. var prcpKindCdCol = 3; //처방종류 index
  5. var prcpnmCol = 5; //처방명 컬럼 index
  6. var prcpVolCol = 6; //용량 컬럼 index
  7. var prcpQtyCol = 8; //수량 컬럼 index
  8. var prcpTimsCol = 10; //횟수 컬럼 index
  9. var prcpDayNoCol = 11; //일수 컬럼 index
  10. var prcpDeliveFactCol = 15; //전달사항 컬럼 index
  11. var prcpHopeHdCol = 18; //희망일자 컬럼 index
  12. var ContPrcpDdRow = 6; //지정일 instance row
  13. var prcpNode = "/root/main/prcp/prcplist";
  14. var diagNode = "/root/main/diaginfo/diagcdlist";
  15. var prcpgenrflag = ""; //외래입원구분
  16. var arErrorCode = new HashArray();
  17. var e1 = new GridEditEventInfo();
  18. /**
  19. * @desc : 처방화면 초기화
  20. * @param :
  21. * @id : model1
  22. * @event : xforms-ready
  23. * @return : void
  24. * @---------------------------------------------------
  25. */
  26. function fInitializeReady() {
  27. div_all.grd_prcplist.setFocus();
  28. div_all.grd_prcplist_onenteredit(grd_prcplist,e1);
  29. }
  30. function fPromPrcpSrch(srchflag) {
  31. var setno = ds_prmsprcpsetdetlset.getColumn(0, "setno");
  32. var setnm = ds_prmsprcpsetdetlset.getColumn(0, "setnm");
  33. if(setno == 1){
  34. sysf_messageBox("최상위 약속처방 폴더에서 검색", "E001");
  35. return;
  36. }
  37. if (utlf_isNull(setnm)) {
  38. sysf_messageBox("선택된 약속처방폴더가", "I004");
  39. return;
  40. }
  41. if (srchflag == "prcpcd") {
  42. var prcpnm = lf_getDsValue(ds_main_prcplist, ds_main_prcplist.rowposition, "prcpcd");
  43. } else {
  44. var prcpnm = lf_getDsValue(ds_main_prcplist, ds_main_prcplist.rowposition, "prcpnm");
  45. }
  46. var isHangul = utlf_isHangul (prcpnm);
  47. //한글일때는 1글자만 넣어도 검색가능
  48. if (utlf_isNull(prcpnm)) {
  49. sysf_messageBox("검색어를", "C001");
  50. return;
  51. } else if ( isHangul == "E" ){
  52. //영문,숫자일때는 3글자 넣어야 검색가능
  53. if ( prcpnm.length < 3 ){
  54. sysf_messageBox("3글자 이상", "C001");
  55. return;
  56. }
  57. }
  58. if (prcpnm.charAt ( 0 ) == "/"){
  59. if ( prcpnm.length == 1 ){
  60. sysf_messageBox("검색할 수술명을", "C001");
  61. return;
  62. }
  63. fPrcpModal ( "SPMMO05100", 180, 80 ); //BY SONJY 2008-09-06 오타 수정.
  64. } else {
  65. if ( srchflag == "prcpcd") {
  66. lf_prcpSrchCom ( prcpnm, ds_init.getColumn(0, "prcpdd"), "11", "TRMMB00201", "", "getPrcpCdOldSrchInfo", isHangul );
  67. } else if ( srchflag == "prcpnm") {
  68. lf_prcpSrchCom ( prcpnm, ds_init.getColumn(0, "prcpdd"), "11", "TRMMB00201", "", "getPrcpNmSrchInfo", isHangul );
  69. } else {
  70. lf_prcpSrchCom ( prcpnm, ds_init.getColumn(0, "prcpdd"), "11", "TRMMB00201", "", "getPrcpSrchInfo", isHangul );
  71. }
  72. var srchLength = ds_prcpsrch_prcplist.rowcount;
  73. var currow = ds_main_prcplist.rowposition;
  74. if( srchLength > 1) {
  75. if ( srchLength * grd_row_height < 360 ) {
  76. div_all.div_srch.grd_prcpsrchlist.position.height = ( srchLength + 1 ) * grd_row_height + 3;
  77. div_all.div_srch.btn_copy.position.y = ( srchLength + 1 ) * grd_row_height + 8;
  78. div_all.div_srch.btn_cancel.position.y = ( srchLength + 1 ) * grd_row_height + 8;
  79. div_all.div_srch.position.height = ( srchLength + 1 ) * grd_row_height + 33;
  80. } else {
  81. div_all.div_srch.grd_prcpsrchlist.position.height = 325;
  82. div_all.div_srch.btn_copy.position.y = 331;
  83. div_all.div_srch.btn_cancel.position.y = 331;
  84. div_all.div_srch.position.height = 351;
  85. }
  86. if ( currow <= 10 ) {
  87. div_all.div_srch.position.y = 78 + currow * grd_row_height;
  88. } else if ( currow <= 23 ) {
  89. div_all.div_srch.position.y = currow * grd_row_height + 29 - div_all.div_srch.position.height;
  90. } else if ( currow > 23 ){
  91. div_all.div_srch.position.y = grd_row_height * 23 + 55 - div_all.div_srch.position.height;
  92. }
  93. div_all.div_srch.visible = true;
  94. div_all.div_srch.setPrcpSrchListFocus();
  95. } else if( srchLength == 1) {
  96. srchRow = lf_addPrcpDetl ( "import" , "ds_prcpsrch_prcplist" , "ds_main_prcplist", 0, currow, "02" );
  97. if ( srchRow != 0 ) {
  98. lf_focusMain ( srchRow );
  99. }
  100. } else {
  101. sysf_messageBox ( "검색된 내용이", "I004" );
  102. div_all.grd_prcplist.showEditor(true);
  103. }
  104. }
  105. }
  106. function fReqGetPrmsSet() {
  107. ds_send.clearData();
  108. ds_send.addRow();
  109. ds_send.setColumn(0, "cond1", ds_prmsprcpsetdetlset.getColumn(0, "setno"));
  110. ds_send.setColumn(0, "cond2", ds_prmsprcpsetdetlset.getColumn(0, "settypecd"));
  111. var oParam = {};
  112. oParam.id = "TRMMB00202";
  113. oParam.service = "prcpbaseapp.PrmsPrcpMngt";
  114. oParam.method = "reqGetPrmsPrcpDetlSetList";
  115. oParam.inds = "req=ds_send";
  116. oParam.outds = "ds_main_prcplist=prcplist";
  117. oParam.async = false;
  118. oParam.callback = "cf_TRMMB00202";
  119. tranf_submit(oParam);
  120. if(arErrorCode.pop("TRMMB00203") >= 0) {
  121. dsf_setDefaultVal(ds_main_prcplist, "hosinhosoutflag:-,hosinprcpresncd:00,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,aftcertflag:-,aftcertdrid:-,prcpvalidd:00000000,spynpy1:-,specdrid:-,anticncrdayno:0,druglnkno:0,rehbprcpcurefreqflag:0,dietprcpgenrflag:-,irpayflag:N,irflag:N,procerdietflag:N,diagtestconttestintvlflag:N,drugindependpackflag:N,diagtestconttestbasetm:0,diagtestconttestorgtims:0,ermediscmngtresncd:-,rehbprcpenddd:-,matrallsizespecid:-,rehbprcpcurepartcd:-,lowdrugresncd:N,tfdtlcd:-,dnorreqlnkno:0,subcretno:0,exptmthdfact:-,lowdrugresnetcfact:-,diagtestconttestcdspec:-,drgacptflag:-,drprcpetc1:-,drprcpetc2:-,drprcpetc3:-,drprcpetc4:-,drprcpetc5:-,drprcpetc6:-,drprcpetc7:-,drprcpetc8:-,drprcpetc9:-,drprcpetc10:-");
  122. }
  123. lf_appendChildPrcp ( "ds_reset_prcplist", "ds_main_prcplist", "main" ); //검색라인추가
  124. ds_main_prcplist.rowposition = ds_main_prcplist.rowcount - 1;
  125. div_all.grd_prcplist.setCellPos(div_all.grd_prcplist.getBindCellIndex("body", "prcpcd"));
  126. div_all.grd_prcplist.showEditor(true);
  127. //2008.06.05 appendchild로 grid row추가 후 instance정보가 흐트러짐
  128. //grd_prcplist.row = grd_prcplist.rows - 1;
  129. //grd_prcplist.col = grd_prcplist.colRef("prcpcd");
  130. //btn_editcell.dispatch("DOMActivate");
  131. }
  132. function cf_TRMMB00202(sSvcId, nErrorCode, sErrorMsg) {
  133. arErrorCode.push(sSvcId, nErrorCode);
  134. dsf_setDefaultVal(ds_main_prcplist, "hosinhosoutflag:-,hosinprcpresncd:00,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,aftcertflag:-,aftcertdrid:-,prcpvalidd:00000000,spynpy1:-,specdrid:-,anticncrdayno:0,druglnkno:0,rehbprcpcurefreqflag:0,dietprcpgenrflag:-,irpayflag:N,irflag:N,procerdietflag:N,diagtestconttestintvlflag:N,drugindependpackflag:N,diagtestconttestbasetm:0,diagtestconttestorgtims:0,ermediscmngtresncd:-,rehbprcpenddd:-,matrallsizespecid:-,rehbprcpcurepartcd:-,lowdrugresncd:N,tfdtlcd:-,dnorreqlnkno:0,subcretno:0,exptmthdfact:-,lowdrugresnetcfact:-,diagtestconttestcdspec:-,drgacptflag:-,drprcpetc1:-,drprcpetc2:-,drprcpetc3:-,drprcpetc4:-,drprcpetc5:-,drprcpetc6:-,drprcpetc7:-,drprcpetc8:-,drprcpetc9:-,drprcpetc10:-");
  135. }
  136. function fPrmsPrcpSave() {
  137. var setno = ds_prmsprcpsetdetlset.getColumn(0,"setno");
  138. var settypecd = ds_prmsprcpsetdetlset.getColumn(0,"settypecd");
  139. var setnm = ds_prmsprcpsetdetlset.getColumn(0,"setnm");
  140. var sPrcpcd = "";
  141. var sStatus = "";
  142. var sSubjNm = "";
  143. if(setno == 1){
  144. alert("최상위 약속처방폴더에는 저장하실 수 없습니다.");
  145. return;
  146. }
  147. if (utlf_isNull(setnm)) {
  148. alert( "선택된 약속처방폴더가 없습니다.");
  149. return;
  150. } else {
  151. if ( sysf_messageBox(setnm + " 약속처방폴더에 선택하신 처방을", "Q002") == "7" ) {
  152. return;
  153. }
  154. }
  155. //kimsj 임상연구 - 연구코드와 처방코드, 처방권한 여부 확인(에러체크)
  156. if ( oOpener.frmf_getScreenID() == "SMMMB08300" ) {
  157. sSubjNm = oOpener.ds_hidden_subjlist.getColumn(0, "subjno");
  158. ds_reqdata.clearData();
  159. ds_reqdata.addRow();
  160. ds_reqdata.setColumn(0, "subjno", oOpener.ds_main_subjlist.lookup("subjno", sSubjNm, "subjid"));
  161. var oParam = {};
  162. oParam.id = "TRMMB08302";
  163. oParam.service = "prcpbaseapp.PrcpClsMngt";
  164. oParam.method = "reqGetSubjRgtInfo";
  165. oParam.inds = "req=ds_reqdata";
  166. oParam.outds = "ds_druglist=druglist ds_userlist=userlist";
  167. oParam.async = false;
  168. oParam.callback = "cf_TRMMB08302";
  169. tranf_submit(oParam);
  170. if ( utlf_isNull(ds_userlist.lookup("empid", sysf_getUserInfo ("userid"), "empid")) ) {
  171. sysf_messageBox ( "임상연구의 처방", "E002"); //" 권한이 없습니다."
  172. return;
  173. }
  174. for ( var i = 0; i < ds_main_prcplist.rowcount; i++ ) {
  175. sStatus = ds_main_prcplist.getColumn(i, "status");
  176. sPrcpcd = ds_main_prcplist.getColumn(i, "prcpcd");
  177. if ( sStatus != "S" && sStatus != "D" && sPrcpcd.substring(0,3) == "XD-" ) {
  178. if ( utlf_isNull(ds_druglist.lookup("drugcd", sPrcpcd, "drugcd")) ) {
  179. sysf_messageBox ( "["+sPrcpcd+"] 코드는 해당 임상연구에 부합하는 처방코드가 아닙니다. \n\n삭제 후 다시 저장하시기 바랍니다.", "E");
  180. return;
  181. }
  182. }
  183. }
  184. }
  185. //end kimsj 임상연구
  186. ds_main_prcplist.enableevent = false;
  187. for ( var i = 0; i < ds_main_prcplist.rowcount; i++ ) {
  188. var tempcol16 = ds_main_prcplist.getColumn(i, "tempcol16");
  189. if(!utlf_isNull(tempcol16)) {
  190. var prcpuseflag = lf_getArrayData (tempcol16, 0, 0, "^", "|");
  191. if(prcpuseflag == "D" && ds_main_prcplist.getColumn(i, "status") == "U") {
  192. var prcpnm = ds_main_prcplist.getColumn(i, "prcpnm");
  193. alert ( prcpnm + "은 수가 또는 검사실 사용종료 되어 수정 할 수 없습니다. 삭제만 가능합니다.");
  194. ds_main_prcplist.enableevent = true;
  195. return;
  196. }
  197. }
  198. if ( ds_main_prcplist.getColumn(i, "status") == "I" ) {
  199. ds_main_prcplist.setColumn(i, "prcpkindcd", "20");
  200. ds_main_prcplist.setColumn(i, "prcppkspec", setno + "|" + settypecd);
  201. }
  202. var drprcpetc2 = ds_main_prcplist.getColumn(i, "drprcpetc2") ; // 특수주사실 정보가 없으면 저장 시 오류 수정
  203. if ( utlf_isNull(drprcpetc2) ) {
  204. ds_main_prcplist.setColumn(i, "drprcpetc2", "-")
  205. }
  206. }
  207. dsf_createDs("ds_prcplist_temp");
  208. ds_prcplist_temp.copyData(ds_main_prcplist);
  209. ds_prcplist_temp.filter("status != 'S'");
  210. ds_cond1.copyData(ds_prcplist_temp, true);
  211. dsf_deleteDs("ds_prcplist_temp");
  212. ds_cond2.clearData();
  213. ds_cond2.addRow();
  214. ds_cond2.setColumn(0, "inptflag", "1");
  215. dsf_setDefaultVal(ds_cond1, "hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,rehbprcpcurefreqflag:0,dietprcpgenrflag:N,irpayflag:N,irflag:N,procerdietflag:N,diagtestconttestintvlflag:N,drugindependpackflag:N,diagtestconttestbasetm:0,diagtestconttestorgtims:0,matrallsizespecid:-,rehbprcpcurepartcd:-,tfdtlcd:N,exptmthdfact:-,diagtestconttestcdspec:-,nullcolumncd:-,nullvalexistyn:N,rehbprcpenddd:-,drgacptflag:-");
  216. var oParam = {};
  217. oParam.id = "TRMMB00203";
  218. oParam.service = "prcpbaseapp.PrmsPrcpMngt";
  219. oParam.method = "reqGetPrcpSaveChk";
  220. oParam.inds = "saveFlagInfo=ds_cond2 savePrcpInfo=ds_cond1";
  221. oParam.outds = "ds_prcperrlist=prcperrlist";
  222. oParam.async = false;
  223. oParam.callback = "cf_TRMMB00203";
  224. tranf_submit(oParam);
  225. var errCode = arErrorCode.pop("TRMMB00203");
  226. if(errCode < 0) {
  227. ds_cond1.clearData();
  228. ds_cond2.clearData();
  229. ds_main_prcplist.enableevent = true;
  230. return;
  231. }
  232. var mon = sysf_getCurrentMonitorNumber();
  233. var xpt = this.getOwnerFrame().position.x + 100;
  234. var ypt = this.getOwnerFrame().position.y + 50;
  235. if ( ds_prcperrlist.rowCount > 0 ) {
  236. if ( !utlf_isNull(ds_prcperrlist.getColumn(0, "prcpcd"))){
  237. dsf_createDs("ds_result_prcperrlist_clone");
  238. ds_result_prcperrlist_clone.copyData(ds_result_prcperrlist);
  239. var objArg = new Object();
  240. objArg.arg_ds_result_prcperrlist = ds_result_prcperrlist_clone;
  241. frmf_open("SPMMO00600", "SPMMO00600", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M"); //오류팝업
  242. ds_prcperrlist.clearData();
  243. }
  244. ds_main_prcplist.enableevent = true;
  245. return;
  246. }
  247. dsf_setDefaultVal(ds_cond1, "prcpdelivefact:-,hosinhosoutflag:-,hosinprcpresncd:00,clincstdyflag:N,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,rehbprcpcurefreqflag:0,dietprcpgenrflag:N,irpayflag:N,irflag:N,procerdietflag:N,diagtestconttestintvlflag:N,drugindependpackflag:N,diagtestconttestbasetm:0,diagtestconttestorgtims:0,matrallsizespecid:-,rehbprcpcurepartcd:-,tfdtlcd:N,exptmthdfact:-,diagtestconttestcdspec:-,nullcolumncd:-,nullvalexistyn:N,rehbprcpenddd:-,drgacptflag:-,drprcpetc1:-,drprcpetc2:-,drprcpetc3:-,drprcpetc4:-,drprcpetc5:-,drprcpetc6:-,drprcpetc7:-,drprcpetc8:-,drprcpetc9:-,drprcpetc10:-");
  248. var currow = ds_main_prcplist.rowposition;
  249. var oParam2 = {};
  250. oParam2.id = "TXMMB00201";
  251. oParam2.service = "prcpbaseapp.PrmsPrcpMngt";
  252. oParam2.method = "reqExeSavePrmsPrcpDetlSet";
  253. oParam2.inds = "savePrmsPrcpInfo=ds_cond1";
  254. oParam2.outds = "ds_main_prcplist=prcplist";
  255. oParam2.async = false;
  256. oParam2.callback = "cf_TXMMB00201";
  257. tranf_submit(oParam2);
  258. var errCode = arErrorCode.pop("TXMMB00201");
  259. if(errCode >= 0) {
  260. dsf_setDefaultVal(ds_main_prcplist, "hosinhosoutflag:-,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,aftcertflag:-,aftcertdrid:-,prcpvalidd:00000000,spynpy1:-,specdrid:-,anticncrdayno:0,druglnkno:0,rehbprcpcurefreqflag:0,dietprcpgenrflag:-,irpayflag:N,irflag:N,procerdietflag:N,diagtestconttestintvlflag:N,drugindependpackflag:N,diagtestconttestbasetm:0,diagtestconttestorgtims:0,ermediscmngtresncd:-,rehbprcpenddd:-,matrallsizespecid:-,rehbprcpcurepartcd:-,lowdrugresncd:N,tfdtlcd:-,dnorreqlnkno:0,subcretno:0,exptmthdfact:-,lowdrugresnetcfact:-,diagtestconttestcdspec:-,drgacptflag:-,drprcpetc1:-,drprcpetc2:-,drprcpetc3:-,drprcpetc4:-,drprcpetc5:-,drprcpetc6:-,drprcpetc7:-,drprcpetc8:-,drprcpetc9:-,drprcpetc10:-");
  261. lf_appendChildPrcp ( "ds_reset_prcplist", "ds_main_prcplist", "main" ); //검색라인추가
  262. }
  263. ds_cond1.clearData(); //reset (2009.10.28 by JJE)
  264. ds_main_prcplist.enableevent = true;
  265. ds_main_prcplist.selectRow(currow);
  266. ds_main_prcplist.rowposition = currow;
  267. div_all.grd_prcplist.setCellPos(div_all.grd_prcplist.getCellPos());
  268. }
  269. function cf_TRMMB00203(sSvcId, nErrorCode, sErrorMsg) {
  270. arErrorCode.push(sSvcId, nErrorCode);
  271. }
  272. function cf_TRMMB08302(sSvcId, nErrorCode, sErrorMsg) {
  273. arErrorCode.push(sSvcId, nErrorCode);
  274. }
  275. function cf_TXMMB00201(sSvcId, nErrorCode, sErrorMsg) {
  276. arErrorCode.push(sSvcId, nErrorCode);
  277. }
  278. /**
  279. * @desc : 엑셀저장
  280. * @
  281. * @param : sechflag S:싱글(처방리스트에서 호출) T:트리하위까지(트리에서 호출) P:개인 약속셋 전체 D:부서약속셋 전체
  282. * settrgtcd sechflag 값이 P 또는 D일때 사번 또는 부서코드
  283. * ioflag sechflag 값이 P 또는 D일때 진료구분 (O:외래, I:입원)
  284. * @return :
  285. * @author : 엄영만 (2012.01.30)
  286. * @---------------------------------------------------
  287. */
  288. function fsaveToExcel(sechflag, settrgtcd, ioflag){
  289. var setno = ds_prmsprcpsetdetlset.getColumn(0,"setno");
  290. var settypecd = ds_prmsprcpsetdetlset.getColumn(0,"settypecd");
  291. var setnm = ds_prmsprcpsetdetlset.getColumn(0,"setnm");
  292. //파일 이름 사용 불가 문자열 처리
  293. // var specialChars = /[/\~!#$^&*+|:;?"<>']/; // 특수기호 처리 // TF에선 이렇게 해도 되지만 XP에서 이렇게 하면 에러남
  294. var specialChars = /[\/\~!#$^&*+|:;?"<>']/; // 특수기호 처리 // 이와 같이 '\'을 하나 더 넣어 수정함
  295. setnm = setnm.split(specialChars).join(" ");
  296. var sTitle = "약속처방 " + setnm;
  297. ds_send.setColumn(0,"cond1",setno);
  298. ds_send.setColumn(0,"cond2",settypecd);
  299. ds_send.setColumn(0,"cond3",sechflag);
  300. ds_send.setColumn(0,"cond4",settrgtcd);
  301. ds_send.setColumn(0,"cond5",ioflag);
  302. var oParam = {};
  303. oParam.id = "TRMMB00202";
  304. oParam.service = "prcpbaseapp.PrmsPrcpMngt";
  305. oParam.method = "reqGetPrmsPrcpSetExcelList";
  306. oParam.inds = "req=ds_send";
  307. oParam.outds = "ds_excel_prcplist=prcplist";
  308. oParam.async = false;
  309. oParam.callback = "cf_TRMMB00202";
  310. tranf_submit(oParam);
  311. dsf_setDefaultVal(ds_excel_prcplist, "hosinhosoutflag:-");
  312. grdf_exportExcel(grid_excel,sTitle,sTitle, true);
  313. }
  314. /**
  315. * @desc : 오른쪽 마우스 클릭 삭제
  316. * @ : 신규일 때는 removeNode
  317. * @ : 수정중일 때 원복시킨 후 삭제, D/C 표시
  318. * @ : 삭제, D/C 원복시킬려면 ? 오른쪽 마우스에 삭제 및 D/C 원복
  319. * @ : D/C 후 삭제는 불가
  320. * @param :
  321. * @id : grd_prcplist
  322. * @event : 오른쪽 마우스 클릭 삭제
  323. * @return : void
  324. * @authur : 마정민 2007. 6. 4
  325. * @---------------------------------------------------
  326. */
  327. function fPrmsDeleteRow() {
  328. var currow = ds_main_prcplist.rowposition;
  329. //타부서의 약속처방을 삭제할 수 없도록 처리. 2008-01-18 오지훈
  330. var prmsflag = utlf_isNull(oOpener.objects["ds_cond"]) ? "" : oOpener.ds_cond.getColumn(0,"prmsflag");
  331. if(prmsflag == "T"){
  332. var orddeptcd = oOpener.ds_cond.getColumn(0,"deptsetcd");
  333. var orddeptnm = oOpener.cmb_deptset.text;
  334. if(orddeptcd = sysf_getUserInfo("dutplcecd")){ //
  335. sysf_messageBox("[" + orddeptnm +"] 약속처방을 삭제", "E001");
  336. return;
  337. }
  338. }
  339. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  340. var cnt=0;
  341. ds_main_prcplist.enableevent = false;
  342. for (var i = selectedRows.length - 1; i >= 0; i--) {
  343. var status = ds_main_prcplist.getColumn(selectedRows[i], "status");
  344. if (status == "-") {
  345. ds_main_prcplist.setColumn(selectedRows[i], "status", "D");
  346. } else if ( status == "I" ) {
  347. //신규입력(I)은 removeNode 이다.
  348. ds_main_prcplist.deleteRow(selectedRows[i]);
  349. //삭제시 데이터를
  350. } else if (status == "S") {
  351. ds_main_prcplist.setColumn(selectedRows[i], "prcpnm", "");
  352. } else if (status == "D") {
  353. ds_main_prcplist.setColumn(selectedRows[i], "status", "-");
  354. } else if (status == "U") {
  355. ds_main_prcplist.setColumn(selectedRows[i], "status", "D");
  356. }
  357. }
  358. ds_main_prcplist.enableevent = true;
  359. div_all.grd_prcplist.setFocus();
  360. ds_main_prcplist.selectRow(currow);
  361. ds_main_prcplist.rowposition = currow;
  362. div_all.grd_prcplist.setCellPos(div_all.grd_prcplist.getCellPos());
  363. }
  364. /**
  365. * @desc : fMoveGridRows 그리드 선택행 이동
  366. * @param : grd_id 그리드 아이디
  367. * flag 이동방향('UP' or 'DOWN')
  368. * @return : void
  369. */
  370. function fMoveGridRows(btnFlag) {
  371. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  372. var frstRow = 0;
  373. if( btnFlag == "top" ) frstRow = selectedRows[0];
  374. else if( btnFlag == "bottom" ) frstRow = selectedRows[selectedRows.length - 1];
  375. var allRows = ds_main_prcplist.rowcount - 1; //caption, search row
  376. var addChkRow = 0;
  377. var cnt = 0;
  378. var chngYN = 0; //선택된 row인지 체크
  379. var rowNum = 0;
  380. var chkNum = 0; //위, 아래 row의 mset여부에 따라 달라지는 +/- row
  381. var moveCnt = 0;
  382. var iRow = 0;
  383. var addNum = 0; //추가해야할 num
  384. //var pmFlag = 0; //rowNum + - 여부 : 0 or else
  385. var selInclprcpno = "";
  386. var chkInclprcpno = "";
  387. var inclprcpnoExistYN = "N";
  388. var inclprcpnoCVS = "";
  389. var inclprcpnoItem = "";
  390. var printRow = new Array();
  391. var printRow2 = new Array();
  392. var selRows = new Array();
  393. if( selectedRows.length < 1 ) {
  394. alert("선택한 행이 없습니다.");
  395. return;
  396. }
  397. if(btnFlag == "top" && frstRow == 0){
  398. alert("최상위 행은 위로 이동할 수 없습니다.");
  399. return;
  400. }
  401. if(btnFlag == "bottom" && frstRow == ds_main_prcplist.rowcount - 2){
  402. alert("최하위 행은 아래로 이동할 수 없습니다.");
  403. return;
  404. }
  405. ds_main_prcplist.enableevent = false;
  406. dsf_createDs("ds_tmp_moveprcp");
  407. for(var i = selectedRows.length - 1; i >= 0; i--){
  408. if(ds_main_prcplist.getColumn(selectedRows[i], "inclprcpno") > "0" && ds_main_prcplist.getColumn(selectedRows[i], "prcpsetcd") == "-")
  409. inclprcpnoCVS = inclprcpnoCVS + ds_main_prcplist.getColumn(selectedRows[i], "inclprcpno") + "|";
  410. }
  411. inclprcpnoItem = inclprcpnoCVS.split("|");
  412. //전체 row를 보면서 rowSeq를 설정해 줌 , rowseq순으로 /root/tmp_moveprcp => /root/main/prcp 로 이동
  413. if( btnFlag == "top" ){
  414. for( var i = ds_main_prcplist.rowcount - 1; i >= 0; i-- ){
  415. iRow = i;
  416. chkNum = 0;
  417. chngYN = 0;
  418. addNum = 0;
  419. //pmFlag = 0;
  420. if( iRow >= 0 ){
  421. chkInclprcpno = ds_main_prcplist.getColumn(iRow, "inclprcpno");
  422. if( inclprcpnoItem.length - 1 > 0 ){
  423. for(var k = 0; k < inclprcpnoItem.length - 1; k++){ //copy대상의 mset
  424. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  425. chngYN = 1;
  426. }
  427. }
  428. }
  429. if( chngYN == 0 && ds_main_prcplist.getSelect(iRow) == true && chkInclprcpno == "0" ) chngYN = 1;
  430. if( chngYN == 1 ){ //선택된 row이면(선택된모코드의 자코드도 포함)
  431. addChkRow = iRow - 1;
  432. selInclprcpno = "";
  433. if( addChkRow >= 0 && addChkRow < ds_main_prcplist.rowcount ){
  434. for(var j = addChkRow; j >= 0; j--){
  435. addYN = "N";
  436. chkInclprcpno = ds_main_prcplist.getColumn(j, "inclprcpno");
  437. if( inclprcpnoItem.length - 1 > 0 ){
  438. for(var k = 0; k < inclprcpnoItem.length - 1; k++){ //copy대상의 mset
  439. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  440. //addNum++;
  441. addYN = "Y";
  442. }
  443. }
  444. }
  445. if( addYN != "Y" && ds_main_prcplist.getSelect(j) == true && chkInclprcpno == "0" ){
  446. //addNum++;
  447. addYN = "Y";
  448. }
  449. if( addYN != "Y" ){
  450. if( chkInclprcpno != "0" ){ // && chkInclprcpno != inclprcpnoItem[k]
  451. if( utlf_isNull(selInclprcpno) ) selInclprcpno = ds_main_prcplist.getColumn(j, "inclprcpno");
  452. if( !utlf_isNull(selInclprcpno) && selInclprcpno == chkInclprcpno && utlf_isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  453. chkNum++;
  454. }
  455. else{
  456. if( printRow.length <= 0 ){
  457. if( utlf_isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  458. chkNum++;
  459. }
  460. break;
  461. }
  462. }
  463. }
  464. }
  465. }
  466. }
  467. if( chngYN > 0 ){
  468. rowNum = i - printRow.length;
  469. moveCnt++;
  470. selRows[selRows.length] = rowNum;
  471. //임시처방은 순서변경 시 수정모드로 상태를 세팅해줌
  472. if( ds_main_prcplist.getColumn(i, "status") == "-") ds_main_prcplist.setColumn(i, "status", "U" );
  473. }else{
  474. if( printRow.length > 0 ){
  475. for( var p = 0; p < printRow.length; p++ ){
  476. if( printRow[p] == i ) addNum = moveCnt;
  477. }
  478. }
  479. rowNum = i + addNum;
  480. if( printRow.length == 0 || (printRow.length > 0 && i == printRow[printRow.length-1]) ){
  481. moveCnt = 0;
  482. printRow = new Array();
  483. }
  484. }
  485. //검색 row는 rowseq 변동 없음
  486. if( ds_main_prcplist.getColumn(i, "status") == "S" ) rowNum = i;
  487. ds_main_prcplist.addColumn("rowseq", "string");
  488. ds_main_prcplist.setColumn(i, "rowseq", rowNum);
  489. printRow2[i-1] = rowNum;
  490. }
  491. } else{
  492. for( var i = 0; i < ds_main_prcplist.rowcount; i++ ){
  493. iRow = i;
  494. chkNum = 0;
  495. chngYN = 0;
  496. addNum = 0;
  497. //pmFlag = 0;
  498. if( iRow < ds_main_prcplist.rowcount - 1){
  499. chkInclprcpno = ds_main_prcplist.getColumn(iRow, "inclprcpno");
  500. if( inclprcpnoItem.length - 1 > 0 ){
  501. for(var k = 0; k < inclprcpnoItem.length - 1; k++){ //copy대상의 mset
  502. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  503. chngYN = 1;
  504. }
  505. }
  506. }
  507. if( chngYN == 0 && ds_main_prcplist.getSelect(iRow) == true && chkInclprcpno == "0" ) chngYN = 1;
  508. if( chngYN == 1 ){ //선택된 row이면(선택된모코드의 자코드도 포함)
  509. addChkRow = iRow + 1;
  510. selInclprcpno = "";
  511. if( addChkRow >= 0 && addChkRow < ds_main_prcplist.rowcount ){
  512. for(var j = addChkRow; j < allRows; j++){
  513. addYN = "N";
  514. chkInclprcpno = ds_main_prcplist.getColumn(j, "inclprcpno");
  515. if( inclprcpnoItem.length - 1 > 0 ){
  516. for(var k = 0; k < inclprcpnoItem.length - 1; k++){ //copy대상의 mset
  517. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  518. //addNum++;
  519. addYN = "Y";
  520. }
  521. }
  522. }
  523. if( addYN != "Y" && ds_main_prcplist.getSelect(j) == true && chkInclprcpno == "0" ){
  524. //addNum++;
  525. addYN = "Y";
  526. }
  527. if( addYN != "Y" ){
  528. if( chkInclprcpno != "0" ){ // && chkInclprcpno != inclprcpnoItem[k]
  529. if( utlf_isNull(selInclprcpno) ) selInclprcpno = ds_main_prcplist.getColumn(j, "inclprcpno");
  530. if( !utlf_isNull(selInclprcpno) && selInclprcpno == chkInclprcpno && utlf_isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  531. chkNum++;
  532. }
  533. else{
  534. if( printRow.length <= 0 ){
  535. if( utlf_isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  536. chkNum++;
  537. }
  538. break;
  539. }
  540. }
  541. }
  542. }
  543. }
  544. }
  545. if( chngYN > 0 ){
  546. rowNum = i + printRow.length;
  547. moveCnt++;
  548. selRows[selRows.length] = rowNum;
  549. //임시처방은 순서변경 시 수정모드로 상태를 세팅해줌
  550. if( ds_main_prcplist.getColumn(i, "status") == "-") ds_main_prcplist.setColumn(i, "status", "U" );
  551. }else{
  552. if( printRow.length > 0 ){
  553. for( var p = 0; p < printRow.length; p++ ){
  554. if( printRow[p] == i ) addNum = moveCnt;
  555. }
  556. }
  557. rowNum = i - addNum;
  558. if( printRow.length == 0 || (printRow.length > 0 && i == printRow[printRow.length-1]) ){
  559. moveCnt = 0;
  560. printRow = new Array();
  561. }
  562. }
  563. //검색 row는 rowseq 변동 없음
  564. if( ds_main_prcplist.getColumn(i, "status") == "S" ) rowNum = i;
  565. ds_main_prcplist.addColumn("rowseq", "string");
  566. ds_main_prcplist.setColumn(i, "rowseq", rowNum);
  567. printRow2[i-1] = rowNum;
  568. }
  569. }
  570. //alert( printRow2 );
  571. ds_tmp_moveprcp.copyData(ds_main_prcplist);
  572. //처방 인스턴스로 이동 후 refresh
  573. ds_main_prcplist.clearData();
  574. for( var i = 0; i < ds_tmp_moveprcp.rowcount; i++ ){
  575. var findRow = ds_tmp_moveprcp.findRow("rowseq", i);
  576. var row = ds_main_prcplist.addRow();
  577. ds_main_prcplist.copyRow(row, ds_tmp_moveprcp, findRow);
  578. }
  579. ds_main_prcplist.deleteColumn("rowseq");
  580. dsf_deleteDs("ds_tmp_moveprcp");
  581. ds_main_prcplist.applyChange();
  582. //이동된 row를 select 처리함
  583. if( selRows.length > 0 ){
  584. for(var i = 0; i < selRows.length; i++){
  585. ds_main_prcplist.selectRow(selRows[i]);
  586. }
  587. ds_main_prcplist.rowposition = selRows[selRows.length - 1];
  588. }
  589. ds_main_prcplist.enableevent = true;
  590. }
  591. function fAbsnSrch (tempcol16, prcpclscd, drugmastspec) {
  592. var prcpuseflag = lf_getArrayData (tempcol16, 0, 0, "^", "|" );
  593. var result = "#000000ff"; //기존에 색칠되어 있는 것을 clear 해 준다.
  594. if (prcpuseflag == "D") { // 수가정보에 없는경우
  595. result = "#ff4848ff";
  596. } else if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) {
  597. if ( lf_getArrayData (drugmastspec, 0, 10, "^", "|" ) == "Y" ) { // 품절여부가 Y 이면 색표시를 해준다.
  598. result = "#c0c0c0ff";
  599. }
  600. }
  601. return result;
  602. }
  603. /**
  604. * @desc : SET폴더 삭제시, 약속처방 데이터 삭제
  605. * @
  606. * @param :
  607. * @return :
  608. * @---------------------------------------------------
  609. */
  610. function fClrGridData(){
  611. ds_main_prcplist.clearData();
  612. }]]></Script>