SMMMO02100.xjs 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[var arErrorCode = new HashArray();
  3. /**
  4. * @desc : 화면 초기화
  5. * @
  6. * @param : flag: save (처방저장후에는 다시 조회하지 않고 저장후 리턴된 값으로 대신 보인다.)
  7. * @event : void
  8. * @return :
  9. * @authur : 마정민 2007. 3. 13
  10. * @---------------------------------------------------
  11. */
  12. function fInitialize( flag ){
  13. sysf_trace(" SPEED CHECK START OF SMMO02100 fInitialize()");
  14. appf_getCodeList([{dsNm: "ds_M0003", cdGrpId: "M0003"}
  15. , {dsNm: "ds_M0011", cdGrpId: "M0011"}
  16. , {dsNm: "ds_M0029", cdGrpId: "M0029"}], true, true);
  17. ds_init.setColumn(0, "bfprcpdd", oOpener.ds_init.getColumn(0, "prcpdd"));
  18. //Div00.cmb_bfprcpdd.value = oOpener.ds_init.getColumn(0, "prcpdd");
  19. var prcpgenrflag = oOpener.ds_patflag.getColumn(0, "prcpgenrflag" );
  20. //dc처방 색변경을 위한 수정 시작 by 손주연 2008-06-30
  21. //전처방화면이 로드되기전 간호반납의뢰창이 먼저 뜰때 오류발생.
  22. oOpener.ds_root.setColumn(0, "bfinityn", "Y");
  23. //dc처방 색변경을 위한 수정 종료 by 손주연 2008-06-30
  24. //by sonjy 20081027 인증 저장 후 초기화 함수 호출시 마우스 오른쪽 메뉴가 지워지는 현상 수정.
  25. //flag == save일때는 타지 않도록 처리.
  26. ds_mouserght.reset(); // 원래대로 복구하고 deleteRow 하도록 함
  27. if ( prcpgenrflag != "O" && flag != "save" ) {
  28. if ( utlf_isNull(frmf_getParameter("payflagcd")) ) //급비변경 후 메뉴 사라지지 않도록 조건 추가
  29. ds_mouserght.deleteRow(1);
  30. }
  31. if ( oOpener.ds_init.getColumn(0, "detlivw" ) == "m" ) {
  32. grd_bfprcplist.setFormatColProperty(grd_bfprcplist.getBindCellIndex("body", "tempcol6"), "size", ds_init.getColumn(0, "tempcol6exwd"));
  33. grd_bfprcplist.setFormatColProperty(grd_bfprcplist.getBindCellIndex("body", "tempcol7"), "size", ds_init.getColumn(0, "tempcol7exwd"));
  34. }
  35. grd_bfprcplist.visible = true; //컬럼모양이 바뀌는 것을 보여주지 않기 위해 사이즈 조절후 보여준다.
  36. //init: 전처방 처음 띄울 때 최초 조회는 최신 전처방 가져오기 ( 단 입원, 응급은 입원기간 내 )
  37. if (utlf_isNull(prcpgenrflag)){
  38. return;
  39. }
  40. if ( flag == "save" ) {
  41. //20080819 마정민 수정 저장후에는 한 submit에서 가져오는 걸로 수정
  42. if ( !utlf_isNull(oOpener.ds_savertninfo_prcplist.getColumn(1, "prcpcd" ))) {
  43. ds_prcpsrch_prcplist.copyData(oOpener.ds_savertninfo_prcplist);
  44. oOpener.div_all.visible = true;
  45. }
  46. } else { //flag != "save"
  47. fBfPrcpSrch( "init" );
  48. //자가보유처방 조회 (최초 처방창을 열때만 호출한다.) 20100210 by LYJ
  49. var mainObj = frmf_getMainViewer();
  50. var curPrcpObj = mainObj.frmf_findPopup("SMMMO00100");
  51. if(!utlf_isNull(oOpener.objects["ds_hidden_selfhld"]) && oOpener.ds_hidden_selfhld.getColumn(0, "selfopenyn") != "Y") {
  52. if (!utlf_isNull(curPrcpObj)){
  53. curPrcpObj.fSelfHldPrcpSub();
  54. }
  55. }
  56. //kimsj 처방시 미비기록 유무 확인(submit) - (최초 처방창을 열때만 호출.) - SMMMO04100.js에서 message 실행
  57. if (!utlf_isNull(curPrcpObj != null)){
  58. curPrcpObj.fChkValidRecInfo();
  59. }
  60. //var sDutPlceCd = getUserInfo("dutplcecd");
  61. //if(getUserInfo("userid") == "EMR") { // 테스트
  62. /*
  63. if(sDutPlceCd == "4072000000" || sDutPlceCd == "4070700000" ) { // 심사실에서만 분리청구를 위해 사용하는 우측버튼 기능 생성. 2014.03.25 엄영만
  64. if(isNull(model.getValue("/root/init/msrght/mouserght[func='fFreeCalcs']/func"))) { // 기존에 추가되지 않았을경우만 추가.
  65. var ndMouseRght = instance1.selectNodes( "/root/init/msrght/mouserght");
  66. model.makeValue("/root/init/msrght/mouserght["+ndMouseRght.length+ 1 +"]/func", ""); // 분리선 추가
  67. model.makeValue("/root/init/msrght/mouserght["+ndMouseRght.length+ 1 +"]/label", ""); // 분리선 추가
  68. model.makeValue("/root/init/msrght/mouserght["+ndMouseRght.length+ 2 +"]/func", "fFreeCalcs");
  69. model.makeValue("/root/init/msrght/mouserght["+ndMouseRght.length+ 2 +"]/label", "무산정 처리");
  70. }
  71. }
  72. */
  73. }
  74. // //자가보유처방 조회 (최초 처방창을 열때만 호출한다.) 20100210 by LYJ
  75. // if (flag != "save" && oOpener.model.getValue("/root/hidden/selfhld/selfopenyn") != "Y" ){
  76. // var mainObj = getMainViewer();
  77. // var curPrcpObj = mainObj.javascript.getOpenWindow("SMMMO00100");
  78. // if (curPrcpObj != null){
  79. // curPrcpObj.javascript.fSelfHldPrcpSub();
  80. // }
  81. // }
  82. var prcppkspec = ds_prcpsrch_prcplist.getColumn(0, "prcppkspec");
  83. if(utlf_isNull(prcppkspec)) prcppkspec = "";
  84. var prcppkspecArray = prcppkspec.split("|");
  85. if ( utlf_isNull (prcppkspecArray[0] )) {
  86. var orddd = oOpener.ds_paminfo.getColumn(0, "orddd");
  87. if (prcpgenrflag == "O" ) {
  88. ds_init.setColumn(0, "bfprcpdd" , orddd );
  89. } else {
  90. ds_init.setColumn(0, "bfprcpdd" , utlf_getCurrentDate());
  91. }
  92. } else {
  93. ds_init.setColumn(0, "bfprcpdd" , prcppkspecArray[0] );
  94. // 입원이고 입원전 처방이 전처방에 보일때 날짜를 입원당일로 보여준다.
  95. if (prcpgenrflag != "O" ) {
  96. if ( eval ( prcppkspecArray[0]) < oOpener.ds_paminfo.getColumn(0, "indd" )) {
  97. ds_init.setColumn(0, "bfprcpdd" , oOpener.ds_paminfo.getColumn(0, "indd" ));
  98. }
  99. //입원일 때는 follow up 처방 검색을 위해 /root/init/initdd 에 최종 검색일자를 넣어준다.
  100. //followup 처방이 있을 경우는 initdd와 같은 날짜는 folowup 처방과 같이 보여주기 위해서 이다.
  101. ds_init.setColumn(0, "initdd", ds_init.getColumn(0, "bfprcpdd" ));
  102. var prcppkspec_70 = ds_prcpsrch_prcplist.lookup("prcpkindcd", '70', "prcppkspec");
  103. if(utlf_isNull(prcppkspec_70)) prcppkspec_70 = "";
  104. var followupArray = prcppkspec_70.split("|");
  105. if ( !utlf_isNull(followupArray)){
  106. ds_init.setColumn(0, "followup", followupArray[0]);
  107. }
  108. }
  109. }
  110. var addprcpflag = oOpener.ds_init.getColumn(0, "addprcpflag"); //시행부서화면 여부
  111. //전처방 로딩이 완료되면 진료대상자에서 진료기록을 호출하는 로직 추가 (2008.08.28 : 김영학)
  112. if (addprcpflag !="Y") { // 시행부서 화면일 경우에는 호출하는 로직 수행하지않음
  113. //전회처방 복사
  114. fCopyBfPrcp(flag);
  115. if(flag != "save"){
  116. fGetHosOutPrcpResn(); //원외처방 사후관리 팝업 호출, 최초 1회만 (2010.01.18 JJE)
  117. }
  118. var mainObj = frmf_getMainViewer();
  119. var srcOrdPatListwnd = mainObj.frmf_findPopup("SMMMO04100");
  120. //마취기록지에서 처방창을 열경우 마취기록지를 initialize 시키지 않는 로직 추가 (평화IS 이은영GJ요청 : 2008.08.28)
  121. var srcAnstRecwnd = mainObj.frmf_findPopup("SMMMR03700");
  122. var anstrereload = mainObj.frmf_getParameter("SMMMR03700_refresh");
  123. if (!utlf_isNull(srcAnstRecwnd)) {
  124. var anstrereload = srcAnstRecwnd.frmf_getParameter("SMMMR03700_refresh");
  125. }
  126. if (anstrereload != "false") {
  127. var fstopenflag = oOpener.ds_init.getColumn(0, "fstopenflag"); //처방화면이 최초 생성 여부
  128. if (!utlf_isNull(srcOrdPatListwnd)) {
  129. var cpflag= srcOrdPatListwnd.ds_root.getColumn(0, "cpflag");
  130. if(cpflag != "Y"){ //CP가 아닐 경우만, 전처방에서 기록지 변경하는 로직 호출(CP 일 경우는 대상자 리스트 클릭시 동작
  131. if (fstopenflag !="N") {
  132. var answcnt = srcOrdPatListwnd.frmf_getParameter("SMMMO04100_ANSWCNT");
  133. if (answcnt =="004" || utlf_isNull(answcnt)) {
  134. srcOrdPatListwnd.fChngMainEMRScrn();
  135. }
  136. var scrnwnd = frmf_findPopup("SPMMB08400");
  137. if(!utlf_isNull(scrnwnd)){
  138. scrnwnd.fCloseOpenEmrWnd();
  139. }
  140. }
  141. }
  142. }
  143. /* CP 초기화 해주는 로직 처방.js로 이동 김영학 ( 2009.03.16)
  144. //JJE- (추가, srcOrdPatListwnd=null의 Y/N 상관없이 체크해야 함)
  145. var cpWdwFlag= oOpener.model.getValue("/root/cp");
  146. if( fstopenflag == "Y" && cpWdwFlag == "Y" ){ //CP가 open된 첫회만 수행(CP가 열린상태에서 다른환자 선택 시 수행 안함 -> fReconstruct()*2 방지)
  147. //fOpenPrcpMainWnd();
  148. oOpener.javascript.fReconstruct();
  149. }
  150. */
  151. }
  152. } //end if(addprcpflag !="Y")
  153. sysf_trace(" SPEED CHECK END OF SMMO02100 fInitialize()");
  154. }
  155. /**
  156. * @desc : 전회처방을 개인설정에 따라 처방 화면으로 복사 한다.
  157. * @param :
  158. * @id : fCopyBfPrcp
  159. * @event : 처방 화면 로딩(리로딩)시 호출
  160. * @return : void
  161. * @authur : 엄영만 2011. 11. 16
  162. * @---------------------------------------------------
  163. */
  164. function fCopyBfPrcp(flag) {
  165. if (flag == "save") { return; }
  166. var prcpgenrflag = oOpener.ds_patflag.getColumn(0, "prcpgenrflag" );
  167. if (prcpgenrflag != "O") { return; }
  168. var copybfprcpyn = ds_init.getColumn(0, "copybfprcpyn" );
  169. if (copybfprcpyn != "N") { return; }
  170. //start : 환경설정(임시처방 존재시 전처방 자동 copy 기능 사용여부 설정)에 따른 전처방 copy 추가 엄영만 2013.02.06
  171. var findRow = oOpener.ds_initsrch_envinfo.findRowExpr("qestcd == '034' && answcnt == '002'");
  172. var copyTempPrcpYnNode = oOpener.ds_initsrch_envinfo.getColumn(findRow, "answcnt"); //001:사용, 002:사용안함
  173. var existTempPrcpNode = oOpener.ds_main_prcplist.lookup("prcphistcd", 'T', "prcpcd"); //임시저장 처방 정보
  174. if (!utlf_isNull(existTempPrcpNode) && !utlf_isNull(copyTempPrcpYnNode)) {
  175. return;
  176. }
  177. //start : 환경설정(전처방 자동 copy 기능 설정)에 따른 전처방 copy 추가 (요청번호:8586, 2009.11.02 JJE)
  178. findRow = oOpener.ds_initsrch_envinfo.findRowExpr("qestcd == '016' && answcnt == '003'");
  179. var copyPrcpInfoNode = oOpener.ds_initsrch_envinfo.getColumn(findRow, "answcnt"); //001:약만COPY, 002:전체COPY, 003:설정안함
  180. if( /*!oOpener.fIsOnSubmit() && */!utlf_isNull(copyPrcpInfoNode)){
  181. var orgNode = null;
  182. var orgPrcpcdNode = null;
  183. var orgPrcpclscdNode = null;
  184. var orgStatusNode = null;
  185. var orgPrcphistcdNode = null;
  186. var copyPrcpInfo = copyPrcpInfoNode;
  187. var orgPrcpcd = "";
  188. var orgPrcpclscd = "";
  189. var orgPrcphistcd = "";
  190. var copyCnt = 0;
  191. if( ds_prcpsrch_prcplist.rowcount > 0 ){
  192. if(!utlf_isNull(oOpener.objects["ds_migdrugmthd"])) {
  193. var oRemoveDs = oOpener.removeChild("ds_migdrugmthd");
  194. oRemoveDs = null;
  195. }
  196. //copy해야 하는 처방을 select 한다
  197. for( var i = 0; i < ds_prcpsrch_prcplist.rowcount; i++ ){
  198. if(!utlf_isNull(ds_prcpsrch_prcplist.getColumnInfo("prcpcd")))
  199. orgPrcpcd = ds_prcpsrch_prcplist.getColumn(i, "prcpcd");
  200. if(!utlf_isNull(ds_prcpsrch_prcplist.getColumnInfo("prcpclscd")))
  201. orgPrcpclscd = ds_prcpsrch_prcplist.getColumn(i, "prcpclscd");
  202. if(!utlf_isNull(ds_prcpsrch_prcplist.getColumnInfo("prcphistcd")))
  203. orgPrcphistcd = ds_prcpsrch_prcplist.getColumn(i, "prcphistcd");
  204. if(!utlf_isNull(orgPrcpcd) && orgPrcphistcd == "O" && ((copyPrcpInfo=="001" && (orgPrcpclscd=="A2" || orgPrcpclscd=="A4" || orgPrcpclscd=="A6")) || copyPrcpInfo=="002") ){
  205. ds_prcpsrch_prcplist.rowposition = i;
  206. ds_prcpsrch_prcplist.setColumn(i, "status", "I");
  207. copyCnt++;
  208. }
  209. } //end for()
  210. //select된 처방에 대해 addPrcp()
  211. //oOpener의 서브밋 여부를 체크 하여 실행 하도록 수정함.
  212. if(/*!oOpener.fIsOnSubmit() && */copyCnt > 0 ){
  213. ds_init.setColumn(0, "copybfprcpyn" , "Y");
  214. oOpener.frmf_setParameter("SMMMO02100_skipAddPrcpPopYN", "Y");
  215. // 추후 그리드명 확인필요
  216. lf_addPrcp ( "child", ds_prcpsrch_prcplist, ds_main_prcplist, "Y", "status", "I", grd_bfprcplist, "N", "01");
  217. for (var i= 0; i < ds_prcpsrch_prcplist.rowcount; i++){
  218. if (ds_prcpsrch_prcplist.getColumn(i, "status") == "I") {
  219. ds_prcpsrch_prcplist.setColumn(i, "status", "-");
  220. }
  221. }
  222. oOpener.fOldDrugMthdPop();
  223. oOpener.frmf_clearParameter("SMMMO02100_skipAddPrcpPopYN"); //parameter로 상세팝업 호출 여부 체크를 위함
  224. }
  225. }
  226. } //end if(환경설정에 따른 전처방 copy)
  227. //end : 환경설정(전처방 자동 copy 기능 설정)에 따른 전처방 copy 추가
  228. }
  229. /**
  230. * @desc : 전처방을 검색한다.
  231. * @param : flag: 전처방 구분 ( init: 전처방 처음 띄울 때 최초 조회는 최신 전처방 가져오기 ( 단 입원, 응급은 입원기간 내 )
  232. : prcpgenrflag: 외래입원구분
  233. * @id :
  234. * @event :
  235. * @return : void
  236. * @authur : 마정민 2007. 5. 5
  237. * @---------------------------------------------------
  238. */
  239. function fBfPrcpSrch( flag ) {
  240. var cnt = 0;
  241. var orddd = "";
  242. var orddrid = "";
  243. var todd = "";
  244. var pid = oOpener.ds_paminfo.getColumn(0, "pid" );
  245. var prcpdd = ds_init.getColumn(0, "bfprcpdd");
  246. var bfflag = "bfprcp";
  247. var rsrvflag = lf_getDsValue(oOpener.ds_paminfo, 0, "rsrvflag");
  248. if ( oOpener.ds_root.getColumn(0, "addprcp" ) == "Y" || rsrvflag == "P" ) {
  249. bfflag = "addprcp";
  250. }
  251. if (utlf_isNull(flag)) flag ="";
  252. var prcpgenrflag = oOpener.ds_patflag.getColumn(0, "prcpgenrflag" );
  253. if (prcpgenrflag == "O" || prcpgenrflag == "S") {
  254. orddd = prcpdd;
  255. orddrid = oOpener.ds_paminfo.getColumn(0, "orddrid" );
  256. todd = oOpener.ds_paminfo.getColumn(0, "orddd" );
  257. }
  258. else {
  259. orddd = oOpener.ds_paminfo.getColumn(0, "indd" );
  260. todd = utlf_getCurrentDate().toDate().getAddDate(1,"D").getDateFormat();
  261. }
  262. orddeptcd = oOpener.ds_paminfo.getColumn(0, "orddeptcd" );
  263. cretno = oOpener.ds_paminfo.getColumn(0, "cretno" );
  264. var prcpauthflag = oOpener.ds_init.getColumn(0, "prcpauthflag" );
  265. var followup = ds_init.getColumn(0, "followup" );
  266. //by sonjy 20091120 전처방 조회 개인별 설정 추가
  267. var bfprcpviewnode = oOpener.ds_initsrch_envinfo.lookup("qestcd", '018', "answcnt")
  268. var bfprcpviewflag = "";
  269. if( !utlf_isNull(bfprcpviewnode) ) bfprcpviewflag = bfprcpviewnode.text ;
  270. //검색처방일이 followup 날짜와 같다면 followup 처방을 검색한다.
  271. if ( ( prcpdd == followup && !utlf_isNull(prcpdd)) || ( flag == "aft" && !utlf_isNull(followup))) {
  272. //var rtnval = fBfPrcpSrchCom ( pid, orddd, prcpdd, bfflag, flag, orddrid, todd, prcpgenrflag, orddeptcd, cretno, "TRMMO00100", prcpauthflag, followup);
  273. //by sonjy 20091120 전처방 조회 개인별 설정 추가
  274. var rtnval = lf_bfPrcpSrchCom ( pid, orddd, prcpdd, bfflag, flag, orddrid, todd, prcpgenrflag, orddeptcd, cretno, "TRMMO00100", prcpauthflag, followup, bfprcpviewflag);
  275. ds_send.setColumn(0, "cond12", "" );
  276. //followup 검색 초기화
  277. } else {
  278. // var rtnval = fBfPrcpSrchCom ( pid, orddd, prcpdd, bfflag, flag, orddrid, todd, prcpgenrflag, orddeptcd, cretno, "TRMMO00100", prcpauthflag);
  279. //by sonjy 20091120 전처방 조회 개인별 설정 추가
  280. var rtnval = lf_bfPrcpSrchCom ( pid, orddd, prcpdd, bfflag, flag, orddrid, todd, prcpgenrflag, orddeptcd, cretno, "TRMMO00100", prcpauthflag, "", bfprcpviewflag);
  281. }
  282. if(rtnval == true){
  283. oOpener.div_all.visible = true;
  284. }
  285. }
  286. /**
  287. * @desc : 오른쪽 마우스 클릭 D/C
  288. * @ : 신규일 때는 removeNode
  289. * @ : 수정중일 때 원복시킨 후 삭제, D/C 표시
  290. * @ : 삭제, D/C 원복시킬려면 ? 오른쪽 마우스에 삭제, D/C 취소
  291. * @ : 삭제 후 D/C는 불가
  292. * @param :
  293. * @id : grd_prcplist
  294. * @event : 오른쪽 마우스 클릭 삭제
  295. * @return : void
  296. * @authur : 마정민 2007. 3. 26
  297. * @history: vAftClamDcFg 추가 by sonjy vAftClamDcFg가 C이면
  298. * @---------------------------------------------------
  299. */
  300. function fDCRow(vAftClamDcFg) {
  301. //by sonjy 20081022
  302. if( utlf_isNull(vAftClamDcFg) ){
  303. vAftClamDcFg = "";
  304. //청구 후 d/c를 일반 d/c와 함께 낼 수 없도록 처리. by sonjy 20081027
  305. var aftNodeList = ds_prcpsrch_prcplist.getCaseCount("tempcol21 == 'C'");
  306. if( aftNodeList > 0 ){
  307. sysf_messageBox ( "청구 후 D/C는 일반 D/C와 함께 내리실 수 없습니다.", "E" );
  308. return;
  309. }
  310. }
  311. // 아래의 for 문 안으로 이 로직 집어 넣음
  312. // //덤프된 처방은 d/c 할 수 없도로 처리. cha 20090525
  313. // var cvrtbfprcp = model.getValue ( "/root/prcpsrch/prcplist[" + grd_bfprcplist.selectedRow(i) + "]/prcphistcd");
  314. // if( cvrtbfprcp == "M"){
  315. // messageBox ( "Dump된 처방은 D/C 할 수 없습니다.", "E" );
  316. // return;
  317. // }
  318. var prcpgenrflag = oOpener.ds_patflag.getColumn(0, "prcpgenrflag");
  319. var pampkspec = "";
  320. var pamorddd = "";
  321. var pamcretno = "";
  322. var pamstatus = "";
  323. var statcdcnts = 0;
  324. var nurdrugrtn = "";
  325. var dchosoutcnt = 0;
  326. var orghosoutcnt = 0;
  327. var sumhosoutfg = "";
  328. var addprcp = oOpener.ds_init.getColumn(0, "addprcpflag");
  329. var cretno = "";
  330. //SON1006 첫번째 로우값으로 체크하던 로직을 선택된 row를 체크하는 로직으로 변경. START
  331. var selectedRows = grdf_getSelectedRows(grd_bfprcplist);
  332. for( var i = 0 ; i < selectedRows.length ; i++) {
  333. // 위에 있는 이 로직이 여기 있어야 하는 것 아닌가?
  334. var cvrtbfprcp = ds_prcpsrch_prcplist.getColumn(selectedRows[i], "prcphistcd");
  335. if( cvrtbfprcp == "M"){
  336. sysf_messageBox ( "Dump된 처방은 D/C 할 수 없습니다.", "E" );
  337. return;
  338. }
  339. pampkspec = ds_prcpsrch_prcplist.getColumn(selectedRows[i], "pampkspec") + "^";
  340. pamorddd = lf_getArrayData (pampkspec, 0, 1, "^", "|" );
  341. pamcretno = lf_getArrayData (pampkspec, 0, 2, "^", "|" );
  342. pamstatus = ds_prcpsrch_prcplist.getColumn(selectedRows[i], "tempcol1");
  343. if ( prcpgenrflag == "O" ) {
  344. orddd = oOpener.ds_paminfo.getColumn(0, "orddd");
  345. if (pamorddd != orddd ) {
  346. sysf_messageBox ( "진료일에만 D/C를 내리실 수 있습니다.", "E" );
  347. return;
  348. }
  349. //진료환자와 원무정보가 다른 처방은 D/C할 수 없습니다.
  350. cretno = oOpener.ds_paminfo.getColumn(0, "cretno");
  351. if (pamcretno != cretno ) {
  352. sysf_messageBox ( "진료환자와 원무정보가 다른 처방은 D/C할 수", "I004" );
  353. return;
  354. }
  355. //kimsj 20090828 수납 후 D/C 처방시 메세지
  356. if (pamstatus >= "230") {
  357. statcdcnts++;
  358. }
  359. //kimsj 20100105 연속처방 D/c 선택시 청구된 내역 존재할 경우 메세지
  360. if ( pamstatus == "601" ) {
  361. sysf_messageBox ( "연속처방중 청구된 건이 있습니다. \n부분반환을 하시기 바랍니다.", "E" );
  362. return;
  363. }
  364. }
  365. /*
  366. * 진료에서 반환처방등록시 간호에서 반환요청된 처방이 있는 경우 반환요청된 처방임을 알리고 반환처방발행대신에 반환요청 팝업창이 생성되어 반환저장만 가능하도록
  367. * 변경요청번호 : 8869
  368. *by sonjy 20091030 간호투약기록 반환요청 약 check
  369. */
  370. if( prcpgenrflag != "O" && prcpgenrflag != "S" && addprcp != "Y" &&
  371. (ds_prcpsrch_prcplist.getColumn(selectedRows[i], "prcpclscd") == "A2" ||
  372. ds_prcpsrch_prcplist.getColumn(selectedRows[i], "prcpclscd") == "A4" ||
  373. ds_prcpsrch_prcplist.getColumn(selectedRows[i], "prcpclscd") == "A6" ) ){
  374. nurdrugrtn = lf_getArrayData ( ds_prcpsrch_prcplist.getColumn(selectedRows[i], "tempcol10") + "^", 0, 3, "^", "|" ) ;
  375. if( nurdrugrtn == "P" ) {
  376. sysf_messageBox ( ds_prcpsrch_prcplist.getColumn(selectedRows[i], "prcpnm") + "간호에서 반납요청된 처방으로 D/C할 수 없습니다.\n 간호반납 화면에서 확인", "I008" );
  377. if(oOpener != null){
  378. oOpener.ds_initsrchprcp_prcpetccnts.setColumn(0, "drugprcprtnyn", "Y");
  379. oOpener.fDrugPrcpDc();
  380. }
  381. return ;
  382. }
  383. }
  384. /*
  385. * 원외처방전에만 해당되며, 반환시 부분반환은 블러킹하고 전체 반환만 가능하도록(변경요청번호:8829) , 단, admin mode제외
  386. * by sonjy 20091030 부분반환은 블러킹
  387. */
  388. if(prcpgenrflag == "O" && ( oOpener.ds_root.getColumn(0, "admininfo") == "NNNNNNNNNNNNNNNNNNNN" || utlf_isNull( oOpener.ds_root.getColumn(0, "admininfo")) ) &&
  389. (ds_prcpsrch_prcplist.getColumn(selectedRows[i], "prcpclscd") == "A2" ||
  390. ds_prcpsrch_prcplist.getColumn(selectedRows[i], "prcpclscd") == "A4" ||
  391. ds_prcpsrch_prcplist.getColumn(selectedRows[i], "prcpclscd") == "A6") ){
  392. //by sonjy 20091126 현재 환자의 원무정보와 동일 할 경우만 check하도록
  393. sumhosoutfg = lf_getArrayData ( ds_prcpsrch_prcplist.getColumn(selectedRows[i], "tempcol10") + "^", 0, 4, "^", "|" ) ;
  394. if( sumhosoutfg == "Y" && pamcretno == cretno ) dchosoutcnt++;
  395. }
  396. }
  397. /*
  398. * 원외처방전에만 해당되며, 반환시 부분반환은 블러킹하고 전체 반환만 가능하도록(변경요청번호:8829)
  399. * by sonjy 20091030 부분반환은 블러킹
  400. */
  401. if(prcpgenrflag == "O" && dchosoutcnt > 0 && (oOpener.ds_root.getColumn(0, "admininfo" ) == "NNNNNNNNNNNNNNNNNNNN" || utlf_isNull( oOpener.ds_root.getColumn(0, "admininfo")) ) ) {
  402. orghosoutcnt = 0;
  403. cretno = oOpener.ds_paminfo.getColumn(0, "cretno" ); //현재 환자의 원무정보
  404. for( var i = 0; i < ds_prcpsrch_prcplist.rowcount; i++) {
  405. if((ds_prcpsrch_prcplist.getColumn(i, "prcpclscd") == "A2" ||
  406. ds_prcpsrch_prcplist.getColumn(i, "prcpclscd") == "A4" ||
  407. ds_prcpsrch_prcplist.getColumn(i, "prcpclscd") == "A6") ){
  408. pampkspec = ds_prcpsrch_prcplist.getColumn(i, "pampkspec") + "^";
  409. pamorddd = lf_getArrayData (pampkspec, 0, 1, "^", "|" );
  410. pamcretno = lf_getArrayData (pampkspec, 0, 2, "^", "|" );
  411. sumhosoutfg = lf_getArrayData ( ds_prcpsrch_prcplist.getColumn(i, "tempcol10") + "^", 0, 4, "^", "|" ) ;
  412. if( sumhosoutfg == "Y" && pamcretno == cretno ) orghosoutcnt++;
  413. }
  414. }
  415. if( dchosoutcnt != orghosoutcnt ) {
  416. sysf_messageBox ("원외처방전이 출력되어 부분 반환이 불가 합니다.전체 반환 후 처방", "I008");
  417. return ;
  418. }
  419. }
  420. //kimsj 20090828 수납 후 D/C 처방시 메세지
  421. if (statcdcnts > 0) {
  422. if (sysf_messageBox ( "수납이 완료된 환자입니다. 처방을 수정하시겠습니까? \n 수정하신 후에는 환자에게 재수납하실 것을 설명해 주시기 바랍니다.", "Q" ) != "6" ) {
  423. return;
  424. }
  425. }
  426. //SON1006 END
  427. var prcpcslcd = "";
  428. var contprcpspec = "";
  429. var prcplen = "";
  430. var status = "";
  431. var actorddd = "";
  432. var actcretno = "";
  433. var execprcpstatcd = "";
  434. var prcpdd = "";
  435. var execprcpno = "";
  436. var rcptdd = "";
  437. var keyval = "";
  438. var prcpno = "";
  439. var prcphistno = "";
  440. var clamdd = "";
  441. var anticncrprtlnochk = 0;
  442. var nortnchk = 0;
  443. for ( var i = 0; i < selectedRows.length; i++ ) {
  444. //제목은 DC 불가
  445. var tempcol9 = ds_prcpsrch_prcplist.getColumn(selectedRows[i], "tempcol9");
  446. if ( tempcol9 == "N" || tempcol9 == "C" ) {
  447. continue;
  448. }
  449. var prcphistcd = ds_prcpsrch_prcplist.getColumn(selectedRows[i], "prcphistcd");
  450. if ( prcphistcd == "C" ) {
  451. continue;
  452. }
  453. if (ds_prcpsrch_prcplist.getColumn(selectedRows[i], "anticncrprtlno") != "0" ) {
  454. if (anticncrprtlnochk==0) {
  455. sysf_messageBox ( "항암프로토콜 처방은 항암프로토콜 화면에서 가능합니다.", "E" );
  456. }
  457. anticncrprtlnochk++;
  458. continue;
  459. }
  460. //M은 DC 불가, 다선택하면 M도 DC 가능
  461. var chkcol = ds_prcpsrch_prcplist.getColumn(selectedRows[i], "chkcol");
  462. //*************************** **********************************//
  463. var suppdeptspec = lf_getDsValue(ds_prcpsrch_prcplist, selectedRows[i], "suppdeptspec");
  464. var iFind = suppdeptspec.indexOf( "NORTN" );
  465. if ( iFind >= 0) {
  466. //messageBox ( "특수조제실에서 조제완료하였으므로 반환불가합니다. 특수조제실로 문의바랍니다.", "E" );
  467. //퇴원약 처방 출력후 반환도 추가되어서 메시지를 바꿨다.
  468. if ( nortnchk == 0 ) {
  469. sysf_messageBox ( "반환불가한 상태입니다. 약국에 문의바랍니다.", "E" );
  470. }
  471. nortnchk++;
  472. continue;
  473. }
  474. if ( ds_prcpsrch_prcplist.getColumn(selectedRows[i], "tempcol4") == "incldcchk" ) {
  475. continue; // 종속처방 처리 됐으면 d/c 처리 할 필요 없음
  476. }
  477. if (chkcol!="D") {
  478. ds_prcpsrch_prcplist.setColumn(selectedRows[i], "chkcol", "D");
  479. ds_prcpsrch_prcplist.setColumn(selectedRows[i], "tempcol21", vAftClamDcFg) ; //SON20081022 청구 후 D/C
  480. //종속처방 DC 처리
  481. var inclprcpno = ds_prcpsrch_prcplist.getColumn(selectedRows[i], "inclprcpno");
  482. //종속처방 값이 있으면
  483. if ( ds_prcpsrch_prcplist.getColumn(selectedRows[i], "inclprcpno") > 0 ) {
  484. for ( var j = 0; j < ds_prcpsrch_prcplist.rowcount; j++ ) {
  485. if ( inclprcpno == ds_prcpsrch_prcplist.getColumn(j, "inclprcpno")) {
  486. var tempcol9 = ds_prcpsrch_prcplist.getColumn(j, "tempcol9");
  487. if ( tempcol9 == "N" || tempcol9 == "C" ) {
  488. continue;
  489. }
  490. if ( eval(ds_prcpsrch_prcplist.getColumn(j, "tempcol1")) >= 400 && utlf_isNull(vAftClamDcFg) ){
  491. //종속처방에서 상태값이 400이상이면 d/c처리에서 뺀다.
  492. //단, 청구후 d/c가 아닐 경우만...by sonjy 20081027
  493. ds_prcpsrch_prcplist.setColumn(j, "chkcol", "");
  494. ds_prcpsrch_prcplist.setColumn(j, "tempcol21", "");//SON20081022 청구 후 D/C
  495. } else {
  496. if ( ds_prcpsrch_prcplist.getColumn(j, "chkcol") == "D" ) {
  497. //model.setValue ( "/root/prcpsrch/prcplist[" + j + "]/chkcol", "" );
  498. //model.setValue ( "/root/prcpsrch/prcplist[" + j + "]/tempcol4", "incldcchk" );
  499. } else {
  500. ds_prcpsrch_prcplist.setColumn(j, "chkcol", "D");
  501. ds_prcpsrch_prcplist.setColumn(j, "tempcol21", vAftClamDcFg);//SON20081022 청구 후 D/C
  502. ds_prcpsrch_prcplist.setColumn(j, "tempcol4", "incldcchk");
  503. }
  504. }
  505. }
  506. }
  507. }
  508. } else {
  509. ds_prcpsrch_prcplist.setColumn(selectedRows[i], "chkcol", "" );
  510. ds_prcpsrch_prcplist.setColumn(selectedRows[i], "tempcol21", "") ; //SON20081022 청구 후 D/C
  511. //연속처방 클리어 처리
  512. prcpcslcd = ds_prcpsrch_prcplist.getColumn(selectedRows[i], "prcpclscd" );
  513. if ( prcpcslcd == "A6" || prcpcslcd == "F2" ) {
  514. var contprcpspec = ds_prcpsrch_prcplist.getColumn(selectedRows[i], "contprcpspec" );
  515. if ( contprcpspec != "-" ) {
  516. var prcplen = contprcpspec.split("^").length;
  517. var strContprcpspec = "status|actorddd|actcretno|execprcpstatcd|prcpdd|execprcpno|execprcpuniqno|rcptdd|keyval|prcpno|prcphistno|clamdd";
  518. for ( var j = 1; j < prcplen; j++ ) {
  519. status = "^-|";
  520. actorddd = lf_getArrayData ( contprcpspec, j, 1, "^", "|" ) + "|";
  521. actcretno = lf_getArrayData ( contprcpspec, j, 2, "^", "|" ) + "|";
  522. execprcpstatcd = lf_getArrayData ( contprcpspec, j, 3, "^", "|" ) + "|";
  523. prcpdd = lf_getArrayData ( contprcpspec, j, 4, "^", "|" ) + "|";
  524. execprcpno = lf_getArrayData ( contprcpspec, j, 5, "^", "|" ) + "|";
  525. execprcpuniqno = lf_getArrayData ( contprcpspec, j, 6, "^", "|" ) + "|";
  526. rcptdd = lf_getArrayData ( contprcpspec, j, 7, "^", "|" ) + "|";
  527. keyval = lf_getArrayData ( contprcpspec, j, 8, "^", "|" ) + "|";
  528. prcpno = lf_getArrayData ( contprcpspec, j, 9, "^", "|" ) + "|";
  529. prcphistno = lf_getArrayData ( contprcpspec, j, 10, "^", "|" ) + "|";
  530. clamdd = lf_getArrayData ( contprcpspec, j, 11, "^", "|" );
  531. strContprcpspec = strContprcpspec + status + actorddd + actcretno + execprcpstatcd + prcpdd + execprcpno + execprcpuniqno + rcptdd + keyval + prcpno + prcphistno + clamdd;
  532. }
  533. ds_prcpsrch_prcplist.setColumn(selectedRows[i], "contprcpspec", strContprcpspec );
  534. }
  535. }
  536. }
  537. }
  538. //종속처방 DC풀기 처리
  539. for ( var i = 0; i < ds_prcpsrch_prcplist.rowcount; i++ ){
  540. ds_prcpsrch_prcplist.setColumn(i, "tempcol4", "");
  541. //제목은 DC 불가
  542. var tempcol9 = ds_prcpsrch_prcplist.getColumn(i, "tempcol9");
  543. if ( tempcol9 == "N" || tempcol9 == "C" ) {
  544. continue;
  545. }
  546. var prcphistcd = ds_prcpsrch_prcplist.getColumn(i, "prcphistcd" );
  547. if ( prcphistcd == "C" ) {
  548. continue;
  549. }
  550. if ( ds_prcpsrch_prcplist.getColumn(i, "tempcol1" ) >= 400 && utlf_isNull(vAftClamDcFg) ){
  551. //종속처방에서 상태값이 400이상이면 d/c처리에서 뺀다.
  552. //단, 청구후 d/c가 아닐 경우만...by sonjy 20081027
  553. continue;
  554. } else {
  555. if ( ds_prcpsrch_prcplist.getColumn(i, "chkcol") == "" ) {
  556. var inclprcpno = ds_prcpsrch_prcplist.getColumn(i, "inclprcpno" );
  557. if ( inclprcpno > 0 ) { //종속처방 번호가 있는 것중
  558. var inclprcpno = ds_prcpsrch_prcplist.getColumn(i, "inclprcpno" );
  559. for ( var j = 0; j < ds_prcpsrch_prcplist.rowcount; j++ ) {
  560. if ( ds_prcpsrch_prcplist.getColumn(j, "chkcol") == "D" ){ //같은종속처방중 D가 아닌것은 D로 처리
  561. if ( inclprcpno == ds_prcpsrch_prcplist.getColumn(j, "inclprcpno" )) {
  562. if ( eval(ds_prcpsrch_prcplist.getColumn(j, "tempcol1" )) >= 400 && utlf_isNull(vAftClamDcFg) ){
  563. //종속처방에서 상태값이 400이상이면 d/c처리에서 뺀다.
  564. //단, 청구후 d/c가 아닐 경우만...by sonjy 20081027
  565. continue;
  566. } else {
  567. ds_prcpsrch_prcplist.setColumn(j, "chkcol", "");
  568. ds_prcpsrch_prcplist.setColumn(j, "tempcol21", ""); //SON20081022 청구 후 D/C
  569. }
  570. }
  571. }
  572. }
  573. }
  574. }
  575. }
  576. }
  577. }
  578. function fAppendDC() {
  579. for ( var i = 0; i < ds_prcpsrch_prcplist.rowcount; i++ ){
  580. if ( ds_prcpsrch_prcplist.getColumn(i, "chkcol") == "D" ) {
  581. ds_prcpsrch_prcplist.setColumn(i, "status", "C");
  582. var row = oOpener.ds_prcpdc_prcplist.addRow();
  583. oOpener.ds_prcpdc_prcplist.copyRow(row, ds_prcpsrch_prcplist, i);
  584. }
  585. }
  586. }
  587. function fContPrcpDC() {
  588. var selectedRows = grdf_getSelectedRows(grd_bfprcplist);
  589. if ( selectedRows.length > 1 ) {
  590. sysf_messageBox ( "부분D/C는 멀티 선택", "E001" );
  591. return;
  592. }
  593. var currow = ds_prcpsrch_prcplist.rowposition;
  594. //제목은 DC 불가
  595. var tempcol9 = ds_prcpsrch_prcplist.getColumn(currow, "tempcol9");
  596. if ( tempcol9 == "N" ) {
  597. return;
  598. }
  599. //덤프된 처방은 d/c 할 수 없도로 처리. cha 20090525
  600. var cvrtbfprcp = ds_prcpsrch_prcplist.getColumn(currow, "prcphistcd");
  601. if( cvrtbfprcp == "M"){
  602. sysf_messageBox ( "Dump된 처방은 D/C 할 수 없습니다.", "E" );
  603. return;
  604. }
  605. var prcpcslcd = ds_prcpsrch_prcplist.getColumn(currow, "prcpclscd");
  606. //by sonjy 2008-08-28 mset부분d/c시 하나만 d/c되는 경우 발생. 주사이나 종속처방이 아닌경우만 처리.
  607. if ( (prcpcslcd == "A6" || prcpcslcd == "F2" ) && (ds_prcpsrch_prcplist.getColumn(currow, "inclprcpno") )=="0"
  608. ) {
  609. if ( ds_prcpsrch_prcplist.getColumn(currow, "contprcpspec") != "-" ) {
  610. var prcpgenrflag = oOpener.ds_patflag.getColumn(0, "prcpgenrflag");
  611. frmf_setParameter ( "SMMM02100_prcpgenrflag", prcpgenrflag );
  612. fPrcpModal ( "SPMMO11300", 100, 150 );
  613. } else {
  614. ds_prcpsrch_prcplist.setColumn(currow, "chkcol", "D");
  615. }
  616. } else {
  617. //model.setValue ( "/root/prcpsrch/prcplist[" + grd_bfprcplist.row + "]/chkcol", "D" );
  618. //by sonjy 2008-08-28 mset부분d/c시 하나만 d/c되는 경우 발생.
  619. sysf_messageBox ( "부분D/C는 주사 및 재활 연속처방만 가능합니다.", "I" );
  620. }
  621. }
  622. /**
  623. * @desc : 환자급여변경
  624. * @param :
  625. * @id : grd_prcplist
  626. * @event : 오른쪽 마우스 클릭 함수
  627. * @return : void
  628. * @authur : 마정민 2007. 9. 10
  629. * @---------------------------------------------------
  630. */
  631. function fChngPayflagCd() {
  632. //setParameter ( "bfpayflagcd", model.getValue ( "/root/prcpsrch/prcplist[" + grd_bfprcplist.row + "]/payflagcd"));
  633. lf_prcpModal ( "SPMMO14000", 100, 150 );
  634. var payflagcd = "";
  635. if ( utlf_isNull(frmf_getParameter ( "payflagcd" ))){
  636. return;
  637. } else {
  638. payflagcd = frmf_getParameter ( "payflagcd" );
  639. }
  640. var selectedRows = grdf_getSelectedRows(grd_bfprcplist);
  641. ds_prcppaychg_prcppaychglist.clearData();
  642. var row = 0;
  643. for (var i = 0; i < selectedRows.length; i++) {
  644. var orgpayflagcd = ds_prcpsrch_prcplist.getColumn(selectedRows[i], "payflagcd");
  645. if(utlf_isNull(orgpayflagcd)) continue; // 처방 입력 설명행은 체크 하지 않는다. 2013.12.20
  646. if ( payflagcd == orgpayflagcd ) {
  647. var prcpcd = ds_prcpsrch_prcplist.getColumn(selectedRows[i], "prcpcd");
  648. var prcpnm = ds_prcpsrch_prcplist.getColumn(selectedRows[i], "prcpnm");
  649. sysf_messageBox ( "[" + prcpcd + ":" + prcpnm + "] " + "처방은 변경된 급비가", "I004" );
  650. continue;
  651. }
  652. lf_appendChildPrcp ( "ds_reset_prcppaychglist", "ds_prcppaychg_prcppaychglist", "main" );
  653. var prcpgenrflag = oOpener.ds_patflag.getColumn(0, "prcpgenrflag");
  654. ds_prcppaychg_prcppaychglist.setColumn(row, "ioflag", prcpgenrflag);
  655. ds_prcppaychg_prcppaychglist.setColumn(row, "pid", oOpener.ds_paminfo.getColumn(0, "pid"));
  656. var orddd = "";
  657. if ( prcpgenrflag == "O" ){ //외래일때
  658. orddd = oOpener.ds_paminfo.getColumn(0, "orddd");
  659. } else {
  660. orddd = oOpener.ds_paminfo.getColumn(0, "indd");
  661. }
  662. ds_prcppaychg_prcppaychglist.setColumn(row, "orddd", orddd);
  663. ds_prcppaychg_prcppaychglist.setColumn(row, "cretno", oOpener.ds_paminfo.getColumn(0, "cretno"));
  664. ds_prcppaychg_prcppaychglist.setColumn(row, "instcd", oOpener.ds_paminfo.getColumn(0, "instcd"));
  665. var prcppkspec = ds_prcpsrch_prcplist.getColumn(selectedRows[i], "prcppkspec") + "^";
  666. var prcpdd = lf_getArrayData ( prcppkspec, 0, 0, "^", "|" );
  667. var prcpno = lf_getArrayData ( prcppkspec, 0, 1, "^", "|" );
  668. var prcphistno = lf_getArrayData ( prcppkspec, 0, 2, "^", "|" );
  669. ds_prcppaychg_prcppaychglist.setColumn(row, "prcpdd", prcpdd);
  670. ds_prcppaychg_prcppaychglist.setColumn(row, "prcpno", prcpno);
  671. ds_prcppaychg_prcppaychglist.setColumn(row, "payflagcd", payflagcd);
  672. ds_prcppaychg_prcppaychglist.setColumn(row, "deptcd", sysf_getUserInfo("dutplcecd"));
  673. ds_prcppaychg_prcppaychglist.setColumn(row, "userid", sysf_getUserInfo ("userid"));
  674. ds_prcppaychg_prcppaychglist.setColumn(row, "prcphistno", prcphistno);
  675. ds_prcppaychg_prcppaychglist.setColumn(row, "orgpayflagcd", orgpayflagcd);
  676. row++;
  677. }
  678. if ( ds_prcppaychg_prcppaychglist.rowcount > 0 ) {
  679. var oParam = {};
  680. oParam.id = "TXMMO02101";
  681. oParam.service = "prcpmngtapp.PrcpMngt";
  682. oParam.method = "reqExeSetPrcpPayFlag";
  683. oParam.inds = "req=ds_prcppaychg_prcppaychglist";
  684. oParam.outds = "ds_prcperrlist=prcperrlist";
  685. oParam.async = false;
  686. oParam.callback = "cf_TXMMO02101";
  687. tranf_submit(oParam);
  688. }
  689. }
  690. function cf_TXMMO02101(sSvcId, nErrorCode, sErrorMsg) {
  691. if(nErrorCode > -1) {
  692. var errNode = ds_prcperrlist.getCaseCount("flag == '9'");
  693. if (errNode > 0) {
  694. var mon = sysf_getCurrentMonitorNumber();
  695. var xpt = this.getOwnerFrame().position.x + 200;
  696. var ypt = this.getOwnerFrame().position.y + 100;
  697. var objArg = new Object();
  698. objArg.arg_ds_result_prcperrlist = ds_prcperrlist;
  699. frmf_modal("SPMMO21501", "SPMMO21501", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  700. }
  701. oOpener.fInitPaminfo();
  702. //fInitialize("save"); //오른쪽 마우스 메뉴 삭제 오류 수정 by sonjy 20091030
  703. // if문 필요 없는 듯? 확인필요
  704. // if(row > 0){ //급비 변경 후, opener에 savertninfo가 없는 경우 전처방이 제대로 refresh안됨 (2010.03.02 JJE)
  705. fInitialize();
  706. // }
  707. }
  708. frmf_setParameter ( "payflagcd", "");
  709. }
  710. function setPrcpColor(style, tempcol10) {
  711. var colorArray = tempcol10 + "^";
  712. var rtnVal = "";
  713. if(style == "background") {
  714. var backgroundcolor = lf_getArrayData (colorArray, 0, 0, "^", "|" );
  715. rtnVal = (!utlf_isNull(backgroundcolor)) ? backgroundcolor : "#ffffffff";
  716. } else if(style == "fontcolor") {
  717. var fontcolor = lf_getArrayData (colorArray, 0, 1, "^", "|" );
  718. rtnVal = (!utlf_isNull(fontcolor)) ? fontcolor : "#000000ff";
  719. } else if(style == "fonttype") {
  720. var boldflag = lf_getArrayData (colorArray, 0, 2, "^", "|" );
  721. rtnVal = (!utlf_isNull(boldflag)) ? "Dotum,9," + boldflag : "Dotum,9";
  722. }
  723. return rtnVal;
  724. }
  725. /**
  726. * @desc : D/C처방 오류처방 색변경
  727. * @param :
  728. * @id : grd_bfprcplist
  729. * @event : D/C처방 오류발생시
  730. * @return : void
  731. * @authur : 손주연 2008. 6. 30
  732. * @---------------------------------------------------
  733. */
  734. function fSetErrDCRow(DcErrArray) {
  735. if( DcErrArray == null || DcErrArray.length < 1) return ;
  736. var lstDC = new Array();
  737. lstDC = DcErrArray ;
  738. for ( var i = 0; i < lstDC.length; i++ ){
  739. for( var j = 0; j < ds_prcpsrch_prcplist.rowcount; j++ ) {
  740. if( ds_prcpsrch_prcplist.getColumn(j, "chkcol") != "D" ) continue ;
  741. if( ds_prcpsrch_prcplist.getColumn(j, "prcppkspec") == lstDC[i] ){
  742. ds_prcpsrch_prcplist.setColumn(j, "tempcol10", "#ff6600");
  743. }
  744. }
  745. }
  746. }
  747. /**
  748. * @desc : 오른쪽 마우스 클릭 청구후 D/C
  749. * @ : 신규일 때는 removeNode
  750. * @ : 수정중일 때 원복시킨 후 삭제, D/C 표시
  751. * @ : 삭제, D/C 원복시킬려면 ? 오른쪽 마우스에 삭제, D/C 취소
  752. * @ : 삭제 후 D/C는 불가
  753. * @param :
  754. * @id : grd_prcplist
  755. * @event : 오른쪽 마우스 클릭 삭제
  756. * @return : void
  757. * @authur :
  758. * @---------------------------------------------------
  759. */
  760. function fAftDCRow() {
  761. fDCRow("C");
  762. }
  763. function fBtnInit(value){
  764. if (value == "A") {
  765. btn_bfinit.visible = true;
  766. btn_bfreinit.visible = false;
  767. } else if (value == "B") {
  768. btn_bfinit.visible = false;
  769. btn_bfreinit.visible = true;
  770. } else {
  771. btn_bfinit.visible = false;
  772. btn_bfreinit.visible = false;
  773. }
  774. }
  775. /**
  776. * @desc : 원외처방 사후관리 팝업 호출, 최초 1회만 (2010.01.18 JJE)
  777. * @param :
  778. * @return :
  779. * @authur : 전지은, submission은 약제(뱍유미) 제공
  780. * @---------------------------------------------------
  781. */
  782. function fGetHosOutPrcpResn(){
  783. var prcpgenrflag = oOpener.ds_patflag.getColumn(0, "prcpgenrflag" );
  784. var orddd = "";
  785. if (prcpgenrflag == "O" || prcpgenrflag == "S"){
  786. orddd = oOpener.ds_paminfo.getColumn(0, "orddd" );
  787. }else{
  788. orddd = oOpener.ds_paminfo.getColumn(0, "indd" );
  789. }
  790. ds_send_hosoutprcpresninfo.setColumn(0, "pid" , oOpener.ds_paminfo.getColumn(0, "pid" ));
  791. ds_send_hosoutprcpresninfo.setColumn(0, "cretno" , oOpener.ds_paminfo.getColumn(0, "cretno" ));
  792. ds_send_hosoutprcpresninfo.setColumn(0, "orddeptcd", oOpener.ds_paminfo.getColumn(0, "orddeptcd" ));
  793. ds_send_hosoutprcpresninfo.setColumn(0, "orddd" , orddd);
  794. ds_send_hosoutprcpresninfo.setColumn(0, "prcpdd" , ds_init.getColumn(0, "bfprcpdd"));
  795. var oParam = {};
  796. oParam.id = "TRMMO02102";
  797. oParam.service = "prcpmngtapp.PrcpMngt";
  798. oParam.method = "reqGetHosOutPrcpResnInfo";
  799. oParam.inds = "req=ds_send_hosoutprcpresninfo";
  800. oParam.outds = "ds_hosoutprcpresninfo=result";
  801. oParam.async = false;
  802. oParam.callback = "cf_TRMMO02102";
  803. tranf_submit(oParam);
  804. }
  805. function cf_TRMMO02102(sSvcId, nErrorCode, sErrorMsg) {
  806. if(nErrorCode > -1) {
  807. dsf_setDefaultVal(ds_hosoutprcpresninfo, "msg:''");
  808. var rtnMsg = ds_hosoutprcpresninfo.getColumn(0, "msg");
  809. if(!utlf_isNull(rtnMsg)){
  810. sysf_messageBox(rtnMsg, "I");
  811. }
  812. }
  813. }]]></Script>