SMMMB00200.xjs 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254
  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 < 325 ) {
  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 <= 13 ) {
  87. div_all.div_srch.position.y = 48 + (currow * grd_row_height); //78 -> 48
  88. } else if ( currow <= 25 ) {
  89. div_all.div_srch.position.y = (currow * grd_row_height) + 23 - div_all.div_srch.position.height; //29 -> 23
  90. } else if ( currow > 25 ){
  91. div_all.div_srch.position.y = grd_row_height * 25 + 45 - div_all.div_srch.position.height; // 55 -> 45
  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_init.setColumn(0, "prcpmixno", 0); // 약속셋 변경시 기본 믹스번호 초기화
  108. ds_send.clearData();
  109. ds_send.addRow();
  110. ds_send.setColumn(0, "cond1", ds_prmsprcpsetdetlset.getColumn(0, "setno"));
  111. ds_send.setColumn(0, "cond2", ds_prmsprcpsetdetlset.getColumn(0, "settypecd"));
  112. var oParam = {};
  113. oParam.id = "TRMMB00202";
  114. oParam.service = "prcpbaseapp.PrmsPrcpMngt";
  115. oParam.method = "reqGetPrmsPrcpDetlSetList";
  116. oParam.inds = "req=ds_send";
  117. oParam.outds = "ds_main_prcplist=prcplist";
  118. oParam.async = false;
  119. oParam.callback = "cf_TRMMB00202";
  120. tranf_submit(oParam);
  121. if(arErrorCode.pop("TRMMB00203") >= 0) {
  122. 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:-");
  123. }
  124. lf_appendChildPrcp ( "ds_reset_prcplist", "ds_main_prcplist", "main" ); //검색라인추가
  125. ds_main_prcplist.rowposition = ds_main_prcplist.rowcount - 1;
  126. div_all.grd_prcplist.setCellPos(div_all.grd_prcplist.getBindCellIndex("body", "prcpcd"));
  127. div_all.grd_prcplist.showEditor(true);
  128. //2008.06.05 appendchild로 grid row추가 후 instance정보가 흐트러짐
  129. //grd_prcplist.row = grd_prcplist.rows - 1;
  130. //grd_prcplist.col = grd_prcplist.colRef("prcpcd");
  131. //btn_editcell.dispatch("DOMActivate");
  132. }
  133. function cf_TRMMB00202(sSvcId, nErrorCode, sErrorMsg) {
  134. arErrorCode.push(sSvcId, nErrorCode);
  135. 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:-");
  136. }
  137. function fPrmsPrcpSave() {
  138. var setno = ds_prmsprcpsetdetlset.getColumn(0,"setno");
  139. var settypecd = ds_prmsprcpsetdetlset.getColumn(0,"settypecd");
  140. var setnm = ds_prmsprcpsetdetlset.getColumn(0,"setnm");
  141. var sPrcpcd = "";
  142. var sStatus = "";
  143. var sSubjNm = "";
  144. if(setno == 1){
  145. alert("최상위 약속처방폴더에는 저장하실 수 없습니다.");
  146. return;
  147. }
  148. if (utlf_isNull(setnm)) {
  149. alert( "선택된 약속처방폴더가 없습니다.");
  150. return;
  151. } else {
  152. if ( sysf_messageBox(setnm + " 약속처방폴더에 선택하신 처방을", "Q002") == "7" ) {
  153. return;
  154. }
  155. }
  156. //kimsj 임상연구 - 연구코드와 처방코드, 처방권한 여부 확인(에러체크)
  157. if ( oOpener.frmf_getScreenID() == "SMMMB08300" ) {
  158. sSubjNm = oOpener.ds_hidden_subjlist.getColumn(0, "subjno");
  159. ds_reqdata.clearData();
  160. ds_reqdata.addRow();
  161. ds_reqdata.setColumn(0, "subjno", oOpener.ds_main_subjlist.lookup("subjno", sSubjNm, "subjid"));
  162. var oParam = {};
  163. oParam.id = "TRMMB08302";
  164. oParam.service = "prcpbaseapp.PrcpClsMngt";
  165. oParam.method = "reqGetSubjRgtInfo";
  166. oParam.inds = "req=ds_reqdata";
  167. oParam.outds = "ds_druglist=druglist ds_userlist=userlist";
  168. oParam.async = false;
  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. sysf_trace(ds_cond1.saveXML());
  213. ds_cond2.clearData();
  214. ds_cond2.addRow();
  215. ds_cond2.setColumn(0, "inptflag", "1");
  216. 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:-");
  217. var oParam = {};
  218. oParam.id = "TRMMB00203";
  219. oParam.service = "prcpbaseapp.PrmsPrcpMngt";
  220. oParam.method = "reqGetPrcpSaveChk";
  221. oParam.inds = "saveFlagInfo=ds_cond2 savePrcpInfo=ds_cond1";
  222. oParam.outds = "ds_prcperrlist=prcperrlist";
  223. oParam.async = false;
  224. oParam.callback = "cf_TRMMB00203";
  225. tranf_submit(oParam);
  226. var errCode = arErrorCode.pop("TRMMB00203");
  227. if(errCode < 0) {
  228. ds_cond1.clearData();
  229. ds_cond2.clearData();
  230. ds_main_prcplist.enableevent = true;
  231. return;
  232. }
  233. var mon = sysf_getCurrentMonitorNumber();
  234. var xpt = this.getOwnerFrame().position.x + 100;
  235. var ypt = this.getOwnerFrame().position.y + 50;
  236. if ( ds_prcperrlist.rowCount > 0 ) {
  237. if ( !utlf_isNull(ds_prcperrlist.getColumn(0, "prcpcd"))){
  238. dsf_createDs("ds_result_prcperrlist_clone");
  239. ds_result_prcperrlist_clone.copyData(ds_result_prcperrlist);
  240. var objArg = new Object();
  241. objArg.arg_ds_result_prcperrlist = ds_result_prcperrlist_clone;
  242. frmf_open("SPMMO00600", "SPMMO00600", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M"); //오류팝업
  243. ds_prcperrlist.clearData();
  244. }
  245. ds_main_prcplist.enableevent = true;
  246. return;
  247. }
  248. 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:-");
  249. var currow = ds_main_prcplist.rowposition;
  250. var oParam2 = {};
  251. oParam2.id = "TXMMB00201";
  252. oParam2.service = "prcpbaseapp.PrmsPrcpMngt";
  253. oParam2.method = "reqExeSavePrmsPrcpDetlSet";
  254. oParam2.inds = "savePrmsPrcpInfo=ds_cond1";
  255. oParam2.outds = "ds_main_prcplist=prcplist";
  256. oParam2.async = false;
  257. oParam2.callback = "cf_TXMMB00201";
  258. tranf_submit(oParam2);
  259. var errCode = arErrorCode.pop("TXMMB00201");
  260. if(errCode >= 0) {
  261. 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:-");
  262. lf_appendChildPrcp ( "ds_reset_prcplist", "ds_main_prcplist", "main" ); //검색라인추가
  263. }
  264. ds_cond1.clearData(); //reset (2009.10.28 by JJE)
  265. ds_main_prcplist.enableevent = true;
  266. ds_main_prcplist.selectRow(currow);
  267. ds_main_prcplist.rowposition = currow;
  268. div_all.grd_prcplist.setCellPos(div_all.grd_prcplist.getCellPos());
  269. }
  270. function cf_TRMMB00203(sSvcId, nErrorCode, sErrorMsg) {
  271. arErrorCode.push(sSvcId, nErrorCode);
  272. }
  273. function cf_TRMMB08302(sSvcId, nErrorCode, sErrorMsg) {
  274. arErrorCode.push(sSvcId, nErrorCode);
  275. }
  276. function cf_TXMMB00201(sSvcId, nErrorCode, sErrorMsg) {
  277. arErrorCode.push(sSvcId, nErrorCode);
  278. }
  279. /**
  280. * @desc : 약속처방 복사하기 기능
  281. * @param :
  282. * @id : grd_prcplist
  283. * @event : onmousedown
  284. * @return : void
  285. * @authur : 마정민 2007. 6. 12
  286. * @---------------------------------------------------
  287. */
  288. function fCopyRow () {
  289. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  290. var cnt=0;
  291. var sStatus = "";
  292. var sTempcol16 = "";
  293. var sPrcpuseflag = "";
  294. for (var i = 0; i < selectedRows.length; i++) {
  295. sStatus = ds_main_prcplist.getColumn(selectedRows[i], "status");
  296. sTempcol16 = ds_main_prcplist.getColumn(selectedRows[i], "tempcol16");
  297. if(!utlf_isNull(sTempcol16)) {
  298. sPrcpuseflag = lf_getArrayData (sTempcol16, 0, 0, "^", "|" );
  299. }
  300. if (sStatus != "S" && sPrcpuseflag != "D"){ //검색, 수가 종료은 드래그 안한다.
  301. fPrcpBuffer( ++cnt, selectedRows[i], "ds_prcpdrag_prcplist", "ds_main_prcplist" );
  302. }
  303. }
  304. for ( var i = 0 ; i < ds_prcpdrag_prcplist.rowcount; i++ ) {
  305. ds_prcpdrag_prcplist.setColumn(i, "status" , "I" );
  306. }
  307. }
  308. /**
  309. * @desc : 엑셀저장
  310. * @
  311. * @param : sechflag S:싱글(처방리스트에서 호출) T:트리하위까지(트리에서 호출) P:개인 약속셋 전체 D:부서약속셋 전체
  312. * settrgtcd sechflag 값이 P 또는 D일때 사번 또는 부서코드
  313. * ioflag sechflag 값이 P 또는 D일때 진료구분 (O:외래, I:입원)
  314. * @return :
  315. * @author : 엄영만 (2012.01.30)
  316. * @---------------------------------------------------
  317. */
  318. function fsaveToExcel(sechflag, settrgtcd, ioflag){
  319. var setno = ds_prmsprcpsetdetlset.getColumn(0,"setno");
  320. var settypecd = ds_prmsprcpsetdetlset.getColumn(0,"settypecd");
  321. var setnm = ds_prmsprcpsetdetlset.getColumn(0,"setnm");
  322. //파일 이름 사용 불가 문자열 처리
  323. // var specialChars = /[/\~!#$^&*+|:;?"<>']/; // 특수기호 처리 // TF에선 이렇게 해도 되지만 XP에서 이렇게 하면 에러남
  324. var specialChars = /[\/\~!#$^&*+|:;?"<>']/; // 특수기호 처리 // 이와 같이 '\'을 하나 더 넣어 수정함
  325. setnm = setnm.split(specialChars).join(" ");
  326. var sTitle = "약속처방 " + setnm;
  327. ds_send.setColumn(0,"cond1",setno);
  328. ds_send.setColumn(0,"cond2",settypecd);
  329. ds_send.setColumn(0,"cond3",sechflag);
  330. ds_send.setColumn(0,"cond4",settrgtcd);
  331. ds_send.setColumn(0,"cond5",ioflag);
  332. var oParam = {};
  333. oParam.id = "TRMMB00202";
  334. oParam.service = "prcpbaseapp.PrmsPrcpMngt";
  335. oParam.method = "reqGetPrmsPrcpSetExcelList";
  336. oParam.inds = "req=ds_send";
  337. oParam.outds = "ds_excel_prcplist=prcplist";
  338. oParam.async = false;
  339. oParam.callback = "cf_TRMMB00202";
  340. tranf_submit(oParam);
  341. dsf_setDefaultVal(ds_excel_prcplist, "hosinhosoutflag:-");
  342. grdf_exportExcel(grid_excel,sTitle,sTitle, true);
  343. }
  344. /**
  345. * @desc : 오른쪽 마우스 클릭 삭제
  346. * @ : 신규일 때는 removeNode
  347. * @ : 수정중일 때 원복시킨 후 삭제, D/C 표시
  348. * @ : 삭제, D/C 원복시킬려면 ? 오른쪽 마우스에 삭제 및 D/C 원복
  349. * @ : D/C 후 삭제는 불가
  350. * @param :
  351. * @id : grd_prcplist
  352. * @event : 오른쪽 마우스 클릭 삭제
  353. * @return : void
  354. * @authur : 마정민 2007. 6. 4
  355. * @---------------------------------------------------
  356. */
  357. function fPrmsDeleteRow() {
  358. var currow = ds_main_prcplist.rowposition;
  359. //타부서의 약속처방을 삭제할 수 없도록 처리. 2008-01-18 오지훈
  360. var prmsflag = utlf_isNull(oOpener.objects["ds_cond"]) ? "" : oOpener.ds_cond.getColumn(0,"prmsflag");
  361. sysf_trace("prmsflag : " + prmsflag);
  362. if(prmsflag == "T"){
  363. var orddeptcd = oOpener.ds_cond.getColumn(0,"deptsetcd");
  364. var orddeptnm = oOpener.TabSet.tabPrcp.Div01.cmb_deptset.text;
  365. sysf_trace("orddeptcd : " + orddeptcd);
  366. if(orddeptcd = sysf_getUserInfo("dutplcecd")){ //
  367. sysf_messageBox("[" + orddeptnm +"] 약속처방을 삭제", "E001");
  368. return;
  369. }
  370. }
  371. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  372. var cnt=0;
  373. ds_main_prcplist.enableevent = false;
  374. for (var i = selectedRows.length - 1; i >= 0; i--) {
  375. var status = ds_main_prcplist.getColumn(selectedRows[i], "status");
  376. if (status == "-") {
  377. ds_main_prcplist.setColumn(selectedRows[i], "status", "D");
  378. } else if ( status == "I" ) {
  379. //신규입력(I)은 removeNode 이다.
  380. ds_main_prcplist.deleteRow(selectedRows[i]);
  381. //삭제시 데이터를
  382. } else if (status == "S") {
  383. ds_main_prcplist.setColumn(selectedRows[i], "prcpnm", "");
  384. } else if (status == "D") {
  385. ds_main_prcplist.setColumn(selectedRows[i], "status", "-");
  386. } else if (status == "U") {
  387. ds_main_prcplist.setColumn(selectedRows[i], "status", "D");
  388. }
  389. }
  390. ds_main_prcplist.enableevent = true;
  391. div_all.grd_prcplist.setFocus();
  392. ds_main_prcplist.selectRow(currow);
  393. ds_main_prcplist.rowposition = currow;
  394. div_all.grd_prcplist.setCellPos(div_all.grd_prcplist.getCellPos());
  395. }
  396. /**
  397. * @desc : 처방화면 오른쪽 마우스 클릭 처방 붙혀넣기
  398. * @return : void
  399. * @authur : 마정민 2007. 10. 22
  400. */
  401. function fPrcpPaste() {
  402. ds_init.setColumn(0, "cropflag", "N" );
  403. var dropRow = ds_main_prcplist.rowposition;
  404. var endRow = ds_main_prcplist.rowcount -1;
  405. if ( dropRow == endRow ) {
  406. dropRow = dropRow -1;
  407. }
  408. for ( var i= 0; i < ds_prcpdrag_prcplist.rowcount; i++){
  409. row = dropRow + i;
  410. ds_main_prcplist.insertRow(row);
  411. ds_main_prcplist.copyRow(row, ds_prcpdrag_prcplist, i);
  412. //model.duplicate( "/root/main/prcp", "/root/prcpdrag/prcplist[" + i + "]", "*[" + row + "]");
  413. fSetCpVal( row, "I");
  414. }
  415. ds_prcpdrag_prcplist.clearData();
  416. }
  417. /**
  418. * @desc : 처방화면 오른쪽 마우스 클릭 처방 잘라내기
  419. * @return : void
  420. * @authur : 마정민 2007. 10. 22
  421. */
  422. function fPrcpCrop() {
  423. if ( ds_init.getColumn(0, "cropflag") == "Y" ) {
  424. if (sysf_messageBox ( "잘라낸 데이터가 이미 있습니다. 잘라내시겠습니까?", "Q" ) != "6" ) {
  425. return;
  426. }
  427. }
  428. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  429. var cnt = 0;
  430. var sStatus = "";
  431. var sTempcol16 = "";
  432. var sPrcpuseflag = "";
  433. for (var i = selectedRows.length - 1; i >= 0; i--) {
  434. sStatus = ds_main_prcplist.getColumn(selectedRows[i], "status");
  435. sTempcol16 = ds_main_prcplist.getColumn(selectedRows[i], "tempcol16");
  436. if(!utlf_isNull(sTempcol16)) {
  437. sPrcpuseflag = lf_getArrayData (sTempcol16, 0, 0, "^", "|" );
  438. }
  439. if (sStatus != "S" && sPrcpuseflag != "D"){ //검색, 수가 종료 드래그 안한다.
  440. fPrcpBuffer( ++cnt, selectedRows[i], "ds_prcpdrag_prcplist", "ds_main_prcplist" );
  441. if ( ds_main_prcplist.getColumn(selectedRows[i], "status") == "I" ) { // ds_main_prcplist.getColumn(selectedRows[i] + "]/status") == "I"
  442. ds_main_prcplist.deleteRow(selectedRows[i]);
  443. } else {
  444. ds_main_prcplist.setColumn(selectedRows[i], "status", "D");
  445. }
  446. }
  447. ds_init.setColumn(0, "cropflag", "Y");
  448. }
  449. for ( var i = 0 ; i < ds_prcpdrag_prcplist.rowcount; i++ ) {
  450. ds_prcpdrag_prcplist.setColumn(i, "status" , "I" );
  451. }
  452. }
  453. /**@desc : 처방상세 일괄입력
  454. * @param :
  455. * @return : void
  456. * @authur : 마정민 2007. 6. 30
  457. */
  458. function fPrcpDetlCom() {
  459. var xpt = 510;
  460. var ypt = 180;
  461. var header = "";
  462. var useyn = "";
  463. var value = "";
  464. var cnt = 0;
  465. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  466. var prcpclscd = ds_main_prcplist.getColumn(selectedRows[0], "prcpclscd");
  467. var prnscrID = frmf_getScreenID();
  468. //fPrcpModal ( "SPMMO 10400", xpt, ypt ); //일괄입력 공통
  469. if ( prcpclscd == "A2" || prcpclscd == "A4" ) { //약
  470. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  471. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  472. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  473. if ( selprcpclscd != "A2" && selprcpclscd != "A4" ) {
  474. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  475. cnt++;
  476. }
  477. }
  478. if (cnt > 0) {
  479. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  480. } else {
  481. frmf_setParameter ( "SPMMO12100_prnchk", prnscrID);
  482. lf_prcpModal ( "SPMMO12100", xpt, ypt );
  483. }
  484. } else if ( prcpclscd == "A6" ) { //주사
  485. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  486. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  487. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  488. if ( selprcpclscd != prcpclscd ) {
  489. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  490. cnt++;
  491. }
  492. }
  493. if ( cnt > 0) {
  494. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  495. } else {
  496. frmf_setParameter ( "SPMMO12200_prnchk", prnscrID);
  497. lf_prcpModal ( "SPMMO12200", xpt, ypt );
  498. }
  499. } else if ( prcpclscd == "F2" ) { //재활
  500. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  501. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  502. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  503. if ( selprcpclscd != prcpclscd ) {
  504. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  505. cnt++;
  506. }
  507. }
  508. if ( cnt > 0) {
  509. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  510. } else {
  511. lf_prcpModal ( "SPMMO11200", xpt, ypt );
  512. }
  513. } else if ( prcpclscd == "C2" || prcpclscd == "C6" || prcpclscd == "E2" ) {
  514. //방사선 검사(기능검사, 내시경,천자,생검, 방사선, 핵의학영상, 방사선치료)
  515. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  516. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  517. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  518. if ( selprcpclscd != "C2" && selprcpclscd != "C6" && selprcpclscd != "E2" ) {
  519. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  520. cnt++;
  521. }
  522. }
  523. if ( cnt > 0) {
  524. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  525. } else {
  526. frmf_setParameter ( "SPMMO12300_prcpclscd", prcpclscd );
  527. lf_prcpModal ( "SPMMO12300", xpt, ypt );
  528. frmf_setParameter ( "SPMMO12300_prcpclscd", "" );
  529. }
  530. } else if ( prcpclscd == "B2" || prcpclscd == "B6" ) { //진단검사 (검체검사), 핵의학 체내
  531. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  532. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  533. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  534. if ( selprcpclscd != "B2" && selprcpclscd != "B6" ) {
  535. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  536. cnt++;
  537. }
  538. }
  539. if ( cnt > 0) {
  540. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  541. } else {
  542. frmf_setParameter ( "SPMMO12400_prcpclscd", prcpclscd );
  543. lf_prcpModal ( "SPMMO12400", xpt, ypt );
  544. frmf_setParameter ( "SPMMO12400_prcpclscd", "" );
  545. }
  546. } else if ( prcpclscd == "H2" ) { //수술, 처치, 치과
  547. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  548. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  549. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  550. if ( selprcpclscd != "H2" && selprcpclscd != "H4" ) {
  551. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  552. cnt++;
  553. }
  554. }
  555. if ( cnt > 0) {
  556. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  557. } else {
  558. lf_prcpModal ( "SPMMO12600", xpt, ypt );
  559. }
  560. } else if ( prcpclscd == "K2" ) {
  561. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  562. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  563. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  564. if ( selprcpclscd != "K2" ) {
  565. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  566. cnt++;
  567. }
  568. }
  569. if ( cnt > 0) {
  570. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  571. } else {
  572. lf_prcpModal ( "SPMMO13500", xpt, ypt );
  573. }
  574. } else if ( prcpclscd == "03" ) { //식이
  575. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  576. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  577. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  578. if ( selprcpclscd != prcpclscd ) {
  579. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  580. cnt++;
  581. }
  582. }
  583. if ( cnt > 0) {
  584. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  585. } else {
  586. lf_prcpModal ( "SPMMO12700", xpt, ypt );
  587. }
  588. } else if ( prcpclscd == "I2" || prcpclscd == "I4" ) { //마취
  589. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  590. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  591. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  592. if ( selprcpclscd != "I2" && selprcpclscd != "I4") {
  593. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  594. cnt++;
  595. }
  596. }
  597. if ( cnt > 0) {
  598. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  599. } else {
  600. lf_prcpModal ( "SPMMO12800", xpt, ypt );
  601. }
  602. } else if ( prcpclscd == "C4" ) { //angio
  603. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  604. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  605. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  606. if ( selprcpclscd != prcpclscd ) {
  607. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  608. cnt++;
  609. }
  610. }
  611. if ( cnt > 0) {
  612. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  613. } else {
  614. lf_prcpModal ( "SPMMO12900", xpt, ypt );
  615. }
  616. } else if ( prcpclscd == "D2" ) { //병리
  617. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  618. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  619. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  620. if ( selprcpclscd != prcpclscd ) {
  621. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  622. cnt++;
  623. }
  624. }
  625. if ( cnt > 0) {
  626. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  627. } else {
  628. lf_prcpModal ( "SPMMO13000", xpt, ypt );
  629. }
  630. } else if ( prcpclscd == "M2" ) { //재료
  631. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  632. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  633. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  634. if ( selprcpclscd != prcpclscd ) {
  635. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  636. cnt++;
  637. }
  638. }
  639. if ( cnt > 0) {
  640. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  641. } else {
  642. lf_prcpModal ( "SPMMO13600", xpt, ypt );
  643. }
  644. } else if ( prcpclscd == "G2" ) { //RT
  645. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  646. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  647. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  648. if ( selprcpclscd != prcpclscd ) {
  649. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  650. cnt++;
  651. }
  652. }
  653. if ( cnt > 0) {
  654. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  655. } else {
  656. lf_prcpModal ( "SPMMO13700", xpt, ypt );
  657. }
  658. } else if ( prcpclscd == "H4" ) { //처치
  659. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  660. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  661. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  662. if ( selprcpclscd != prcpclscd ) {
  663. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  664. cnt++;
  665. }
  666. }
  667. if ( cnt > 0) {
  668. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  669. } else {
  670. lf_prcpModal ( "SPMMO13800", xpt, ypt );
  671. }
  672. } else if ( prcpclscd == "B4" ) { //수혈 (혈액수혈)
  673. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  674. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  675. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  676. if ( selprcpclscd != prcpclscd ) {
  677. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  678. cnt++;
  679. }
  680. }
  681. if ( cnt > 0) {
  682. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  683. } else {
  684. lf_prcpModal ( "SPMMO12500", xpt, ypt );
  685. }
  686. }
  687. ds_main_prcplist.enableevent = false;
  688. fBatIpt ( "batipt_rtn1_useyn", "batipt_rtn1" );
  689. ds_main_prcplist.enableevent = true;
  690. }
  691. /**
  692. * @desc : fMoveGridRows 그리드 선택행 이동
  693. * @param : grd_id 그리드 아이디
  694. * flag 이동방향('UP' or 'DOWN')
  695. * @return : void
  696. */
  697. function fMoveGridRows(btnFlag) {
  698. var grdObj = div_all.grd_prcplist; //document.controls.item(grd_id);
  699. var row = ds_main_prcplist.rowposition; //grdObj.row;
  700. //var fixRow = grdObj.fixedRows;
  701. var delRow = null;
  702. var insRow = null;
  703. var MaxRow = null;
  704. var MinRow = null;
  705. var i = null;
  706. var sStatus = "";
  707. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist); //var selectedRows = Array(selectedCnt);
  708. //멀티로 선택된 로우 개수
  709. var selectedCnt = selectedRows.length; //grdObj.selectedRows;
  710. if(selectedCnt < 1){
  711. alert("선택한 행이 없습니다.");
  712. return;
  713. }
  714. for(i = 0; i < selectedCnt; i++) {
  715. //selectedRows[i] = grdObj.selectedRow(i);
  716. if(i == 0){
  717. MaxRow = selectedRows[i]; //grdObj.selectedRow(i);
  718. MinRow = selectedRows[i]; //grdObj.selectedRow(i);
  719. } else {
  720. if ( MaxRow < selectedRows[i] ) // grdObj.selectedRow(i)
  721. MaxRow = selectedRows[i]; //grdObj.selectedRow(i);
  722. if ( MinRow > selectedRows[i] )
  723. MinRow = selectedRows[i];
  724. }
  725. }
  726. // if( MinRow < fixRow ){
  727. // alert("고정된 행은 선택할 수 없습니다.");
  728. // return;
  729. // }
  730. switch (btnFlag) {
  731. case "top": // 아래에서 위로 올릴때
  732. if(selectedRows[0] == 0){
  733. alert("최상위 행은 위로 이동할 수 없습니다.");
  734. return;
  735. }
  736. div_all.grd_prcplist.enable = false; //grdObj.disabled = true;
  737. for(i = 0; i < selectedCnt; i++){
  738. // grdObj.isSelected(selectedRows[i]) = false; // 선택취소
  739. insRow = selectedRows[i] - 1;
  740. delRow = selectedRows[i] + 1;
  741. ds_main_prcplist.insertRow(insRow); //grdObj.insertRow(insRow, "above", false);
  742. ds_main_prcplist.copyRow(insRow, ds_main_prcplist, delRow); //model.copyNode(grdObj.nodeset + "[" + insRow + "]", grdObj.nodeset + "[" + delRow + "]");
  743. ds_main_prcplist.deleteRow(delRow); //grdObj.deleteRow(delRow, true);
  744. sStatus = ds_main_prcplist.getColumn(insRow, "status"); //model.getValue ( prcpNode + "[" + insRow + "]/status");
  745. if( sStatus == "-") {
  746. ds_main_prcplist.setColumn(insRow, "status", "U"); //model.setValue ( prcpNode + "[" + insRow + "]/status", "U");
  747. }
  748. sStatus = ds_main_prcplist.getColumn(insRow + 1, "status"); //model.getValue ( prcpNode + "[" + (insRow+1) + "]/status");
  749. if( sStatus == "-" ) {
  750. ds_main_prcplist.setColumn(insRow + 1, "status", "U"); //model.setValue ( prcpNode + "[" + (insRow+1) + "]/status", "U");
  751. }
  752. }
  753. //grdObj.refresh()
  754. ds_main_prcplist.selectRow(MinRow - 1); //grdObj.row = MinRow-1;
  755. for(i = 0; i < selectedCnt; i++) {
  756. //grdObj.AddListSelect(selectedRows[i]-1);
  757. }
  758. div_all.grd_prcplist.enable = true; //grdObj.disabled = false;
  759. break;
  760. case "bottom": // 위에서 아래로 내릴때
  761. if(MaxRow == ds_main_prcplist.rowcount - 1){
  762. alert("최하위 행은 아래로 이동할 수 없습니다.");
  763. return;
  764. }
  765. div_all.grd_prcplist.enable = false; //grdObj.disabled = true;
  766. for(i = selectedCnt - 1; i >= 0; i--){
  767. //grdObj.isSelected(selectedRows[i]) = false; // 선택취소
  768. insRow = selectedRows[i] + 1;
  769. delRow = selectedRows[i];
  770. ds_main_prcplist.insertRow(insRow + 1); //grdObj.insertRow(insRow, "below" , false);
  771. ds_main_prcplist.copyRow(insRow + 1, ds_main_prcplist, delRow); //model.copyNode(grdObj.nodeset + "[" + (insRow+1) + "]", grdObj.nodeset + "[" + delRow + "]");
  772. ds_main_prcplist.deleteRow(delRow); //grdObj.deleteRow(delRow, true);
  773. sStatus = ds_main_prcplist.getColumn(insRow, "status"); // model.getValue ( prcpNode + "[" + insRow + "]/status");
  774. if( sStatus == "-") {
  775. ds_main_prcplist.setColumn(insRow, "status", "U"); //model.setValue ( prcpNode + "[" + insRow + "]/status", "U");
  776. }
  777. sStatus = ds_main_prcplist.getColumn(insRow - 1, "status"); //model.getValue ( prcpNode + "[" + (insRow-1) + "]/status");
  778. if( sStatus == "-") {
  779. ds_main_prcplist.setColumn(insRow - 1, "status", "U"); //model.setValue ( prcpNode + "[" + (insRow-1) + "]/status", "U");
  780. }
  781. }
  782. //grdObj.refresh();
  783. ds_main_prcplist.selectRow(MinRow + 1); //grdObj.row = MinRow+1;
  784. for(i = 0; i < selectedCnt; i++) {
  785. //grdObj.AddListSelect(selectedRows[i]+1);
  786. }
  787. div_all.grd_prcplist.enable = true; //grdObj.disabled = false;
  788. break;
  789. default:
  790. alert("fMoveGridRows() flag 값은 UP 또는 DOWN만 가능 합니다.");
  791. return;
  792. }
  793. fAbsnSrch(prcpNode, grdObj );
  794. /*
  795. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  796. var frstRow = 0;
  797. if( btnFlag == "top" ) frstRow = selectedRows[0];
  798. else if( btnFlag == "bottom" ) frstRow = selectedRows[selectedRows.length - 1];
  799. var allRows = ds_main_prcplist.rowcount - 1; //caption, search row
  800. var addChkRow = 0;
  801. var cnt = 0;
  802. var chngYN = 0; //선택된 row인지 체크
  803. var rowNum = 0;
  804. var chkNum = 0; //위, 아래 row의 mset여부에 따라 달라지는 +/- row
  805. var moveCnt = 0;
  806. var iRow = 0;
  807. var addNum = 0; //추가해야할 num
  808. //var pmFlag = 0; //rowNum + - 여부 : 0 or else
  809. var selInclprcpno = "";
  810. var chkInclprcpno = "";
  811. var inclprcpnoExistYN = "N";
  812. var inclprcpnoCVS = "";
  813. var inclprcpnoItem = "";
  814. var printRow = new Array();
  815. var printRow2 = new Array();
  816. var selRows = new Array();
  817. if( selectedRows.length < 1 ) {
  818. alert("선택한 행이 없습니다.");
  819. return;
  820. }
  821. if(btnFlag == "top" && frstRow == 0){
  822. alert("최상위 행은 위로 이동할 수 없습니다.");
  823. return;
  824. }
  825. if(btnFlag == "bottom" && frstRow == ds_main_prcplist.rowcount - 2){
  826. alert("최하위 행은 아래로 이동할 수 없습니다.");
  827. return;
  828. }
  829. ds_main_prcplist.enableevent = false;
  830. dsf_createDs("ds_tmp_moveprcp");
  831. for(var i = selectedRows.length - 1; i >= 0; i--){
  832. if(ds_main_prcplist.getColumn(selectedRows[i], "inclprcpno") > "0" && ds_main_prcplist.getColumn(selectedRows[i], "prcpsetcd") == "-")
  833. inclprcpnoCVS = inclprcpnoCVS + ds_main_prcplist.getColumn(selectedRows[i], "inclprcpno") + "|";
  834. }
  835. inclprcpnoItem = inclprcpnoCVS.split("|");
  836. //전체 row를 보면서 rowSeq를 설정해 줌 , rowseq순으로 /root/tmp_moveprcp => /root/main/prcp 로 이동
  837. if( btnFlag == "top" ){
  838. for( var i = ds_main_prcplist.rowcount - 1; i >= 0; i-- ){
  839. iRow = i;
  840. chkNum = 0;
  841. chngYN = 0;
  842. addNum = 0;
  843. //pmFlag = 0;
  844. if( iRow >= 0 ){
  845. chkInclprcpno = ds_main_prcplist.getColumn(iRow, "inclprcpno");
  846. if( inclprcpnoItem.length - 1 > 0 ){
  847. for(var k = 0; k < inclprcpnoItem.length - 1; k++){ //copy대상의 mset
  848. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  849. chngYN = 1;
  850. }
  851. }
  852. }
  853. if( chngYN == 0 && ds_main_prcplist.getSelect(iRow) == true && chkInclprcpno == "0" ) chngYN = 1;
  854. if( chngYN == 1 ){ //선택된 row이면(선택된모코드의 자코드도 포함)
  855. addChkRow = iRow - 1;
  856. selInclprcpno = "";
  857. if( addChkRow >= 0 && addChkRow < ds_main_prcplist.rowcount ){
  858. for(var j = addChkRow; j >= 0; j--){
  859. addYN = "N";
  860. chkInclprcpno = ds_main_prcplist.getColumn(j, "inclprcpno");
  861. if( inclprcpnoItem.length - 1 > 0 ){
  862. for(var k = 0; k < inclprcpnoItem.length - 1; k++){ //copy대상의 mset
  863. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  864. //addNum++;
  865. addYN = "Y";
  866. }
  867. }
  868. }
  869. if( addYN != "Y" && ds_main_prcplist.getSelect(j) == true && chkInclprcpno == "0" ){
  870. //addNum++;
  871. addYN = "Y";
  872. }
  873. if( addYN != "Y" ){
  874. if( chkInclprcpno != "0" ){ // && chkInclprcpno != inclprcpnoItem[k]
  875. if( utlf_isNull(selInclprcpno) ) selInclprcpno = ds_main_prcplist.getColumn(j, "inclprcpno");
  876. if( !utlf_isNull(selInclprcpno) && selInclprcpno == chkInclprcpno && utlf_isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  877. chkNum++;
  878. }
  879. else{
  880. if( printRow.length <= 0 ){
  881. if( utlf_isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  882. chkNum++;
  883. }
  884. break;
  885. }
  886. }
  887. }
  888. }
  889. }
  890. }
  891. if( chngYN > 0 ){
  892. rowNum = i - printRow.length;
  893. moveCnt++;
  894. selRows[selRows.length] = rowNum;
  895. //임시처방은 순서변경 시 수정모드로 상태를 세팅해줌
  896. if( ds_main_prcplist.getColumn(i, "status") == "-") ds_main_prcplist.setColumn(i, "status", "U" );
  897. }else{
  898. if( printRow.length > 0 ){
  899. for( var p = 0; p < printRow.length; p++ ){
  900. if( printRow[p] == i ) addNum = moveCnt;
  901. }
  902. }
  903. rowNum = i + addNum;
  904. if( printRow.length == 0 || (printRow.length > 0 && i == printRow[printRow.length-1]) ){
  905. moveCnt = 0;
  906. printRow = new Array();
  907. }
  908. }
  909. //검색 row는 rowseq 변동 없음
  910. if( ds_main_prcplist.getColumn(i, "status") == "S" ) rowNum = i;
  911. ds_main_prcplist.addColumn("rowseq", "string");
  912. ds_main_prcplist.setColumn(i, "rowseq", rowNum);
  913. printRow2[i-1] = rowNum;
  914. }
  915. } else{
  916. for( var i = 0; i < ds_main_prcplist.rowcount; i++ ){
  917. iRow = i;
  918. chkNum = 0;
  919. chngYN = 0;
  920. addNum = 0;
  921. //pmFlag = 0;
  922. if( iRow < ds_main_prcplist.rowcount - 1){
  923. chkInclprcpno = ds_main_prcplist.getColumn(iRow, "inclprcpno");
  924. if( inclprcpnoItem.length - 1 > 0 ){
  925. for(var k = 0; k < inclprcpnoItem.length - 1; k++){ //copy대상의 mset
  926. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  927. chngYN = 1;
  928. }
  929. }
  930. }
  931. if( chngYN == 0 && ds_main_prcplist.getSelect(iRow) == true && chkInclprcpno == "0" ) chngYN = 1;
  932. if( chngYN == 1 ){ //선택된 row이면(선택된모코드의 자코드도 포함)
  933. addChkRow = iRow + 1;
  934. selInclprcpno = "";
  935. if( addChkRow >= 0 && addChkRow < ds_main_prcplist.rowcount ){
  936. for(var j = addChkRow; j < allRows; j++){
  937. addYN = "N";
  938. chkInclprcpno = ds_main_prcplist.getColumn(j, "inclprcpno");
  939. if( inclprcpnoItem.length - 1 > 0 ){
  940. for(var k = 0; k < inclprcpnoItem.length - 1; k++){ //copy대상의 mset
  941. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  942. //addNum++;
  943. addYN = "Y";
  944. }
  945. }
  946. }
  947. if( addYN != "Y" && ds_main_prcplist.getSelect(j) == true && chkInclprcpno == "0" ){
  948. //addNum++;
  949. addYN = "Y";
  950. }
  951. if( addYN != "Y" ){
  952. if( chkInclprcpno != "0" ){ // && chkInclprcpno != inclprcpnoItem[k]
  953. if( utlf_isNull(selInclprcpno) ) selInclprcpno = ds_main_prcplist.getColumn(j, "inclprcpno");
  954. if( !utlf_isNull(selInclprcpno) && selInclprcpno == chkInclprcpno && utlf_isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  955. chkNum++;
  956. }
  957. else{
  958. if( printRow.length <= 0 ){
  959. if( utlf_isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  960. chkNum++;
  961. }
  962. break;
  963. }
  964. }
  965. }
  966. }
  967. }
  968. }
  969. if( chngYN > 0 ){
  970. rowNum = i + printRow.length;
  971. moveCnt++;
  972. selRows[selRows.length] = rowNum;
  973. //임시처방은 순서변경 시 수정모드로 상태를 세팅해줌
  974. if( ds_main_prcplist.getColumn(i, "status") == "-") ds_main_prcplist.setColumn(i, "status", "U" );
  975. }else{
  976. if( printRow.length > 0 ){
  977. for( var p = 0; p < printRow.length; p++ ){
  978. if( printRow[p] == i ) addNum = moveCnt;
  979. }
  980. }
  981. rowNum = i - addNum;
  982. if( printRow.length == 0 || (printRow.length > 0 && i == printRow[printRow.length-1]) ){
  983. moveCnt = 0;
  984. printRow = new Array();
  985. }
  986. }
  987. //검색 row는 rowseq 변동 없음
  988. if( ds_main_prcplist.getColumn(i, "status") == "S" ) rowNum = i;
  989. ds_main_prcplist.addColumn("rowseq", "string");
  990. ds_main_prcplist.setColumn(i, "rowseq", rowNum);
  991. printRow2[i-1] = rowNum;
  992. }
  993. }
  994. //alert( printRow2 );
  995. ds_tmp_moveprcp.copyData(ds_main_prcplist);
  996. //처방 인스턴스로 이동 후 refresh
  997. ds_main_prcplist.clearData();
  998. for( var i = 0; i < ds_tmp_moveprcp.rowcount; i++ ){
  999. var findRow = ds_tmp_moveprcp.findRow("rowseq", i);
  1000. var row = ds_main_prcplist.addRow();
  1001. ds_main_prcplist.copyRow(row, ds_tmp_moveprcp, findRow);
  1002. }
  1003. ds_main_prcplist.deleteColumn("rowseq");
  1004. dsf_deleteDs("ds_tmp_moveprcp");
  1005. ds_main_prcplist.applyChange();
  1006. //이동된 row를 select 처리함
  1007. if( selRows.length > 0 ){
  1008. for(var i = 0; i < selRows.length; i++){
  1009. ds_main_prcplist.selectRow(selRows[i]);
  1010. }
  1011. ds_main_prcplist.rowposition = selRows[selRows.length - 1];
  1012. }
  1013. ds_main_prcplist.enableevent = true;
  1014. */
  1015. }
  1016. function fAbsnSrch (tempcol16, prcpclscd, drugmastspec) {
  1017. var prcpuseflag = lf_getArrayData (tempcol16, 0, 0, "^", "|" );
  1018. var result = "#000000ff"; //기존에 색칠되어 있는 것을 clear 해 준다.
  1019. if (prcpuseflag == "D") { // 수가정보에 없는경우
  1020. result = "#ff4848ff";
  1021. } else if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) {
  1022. if ( lf_getArrayData (drugmastspec, 0, 10, "^", "|" ) == "Y" ) { // 품절여부가 Y 이면 색표시를 해준다.
  1023. result = "#c0c0c0ff";
  1024. }
  1025. }
  1026. return result;
  1027. }
  1028. /**
  1029. * @desc : SET폴더 삭제시, 약속처방 데이터 삭제
  1030. * @
  1031. * @param :
  1032. * @return :
  1033. * @---------------------------------------------------
  1034. */
  1035. function fClrGridData(){
  1036. ds_main_prcplist.clearData();
  1037. }
  1038. /**
  1039. * @desc : 약속처방 붙혀넣기 기능
  1040. * @param :
  1041. * @id : grd_prcplist
  1042. * @event : onmousedown
  1043. * @return : void
  1044. * @authur : 마정민 2007. 6. 12
  1045. * @---------------------------------------------------
  1046. */
  1047. function fPasteRow () {
  1048. //ds_prcpdrag_prcplist var srcNodeList = model.instances(0).selectNodes("/root/prcpdrag/prcplist");
  1049. //var destNode = model.instances(0).selectSingleNode("/root/main/prcp");
  1050. var row = ds_main_prcplist.rowcount - 1; //grd_prcplist.rows-1;
  1051. for (var i = 0; i < ds_prcpdrag_prcplist.rowcount; i++) {
  1052. row = row++;
  1053. ds_main_prcplist.copyRow(row, ds_prcpdrag_prcplist, i);
  1054. ds_main_prcplist.setColumn(row, "status", "I");
  1055. // model.duplicate( "/root/main/prcp", "/root/prcpdrag/prcplist[" + i + "]", "*[" + row + "]");
  1056. // model.setValue ( "/root/main/prcp/prcplist[" + row + "]/status", "I" );
  1057. }
  1058. }]]></Script>