SMADT30100.js 74 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908
  1. /**
  2. * 파 일 명 : SMADT30100.js
  3. * 설 명 : 마약향정처방관리 Javascriot
  4. * 설 계 자 : 공두경
  5. * 작 성 자 : 공두경
  6. * 수정이력 : 2007.08.10 / 최초작성 / 공두경
  7. */
  8. var nextFlag = "GO";
  9. var gTimer = null;
  10. var sleepTime= 1000;
  11. var autocnt = 1;
  12. var rtnprntflag = 'N'; // 20110422_laboru_경북대병원_반환처방전 반환확인 시 자동출력 될때 메시지 창 안뜨게 하기
  13. var totqtyflag = 'Y'; // 201120712 경북대병원_반환처방전 반환수량 (-) 뜨게하기 김치국
  14. /**
  15. * 초기화
  16. */
  17. function fInit() {
  18. grd_narclist.fixedcellcheckbox(0,1) = true;
  19. grd_sprelist.fixedcellcheckbox(0,1) = true;
  20. grd_outnarc.fixedcellcheckbox(0,1) = true;
  21. //구분 초기화(전체)
  22. //model.setValue("/root/temp/srchinfo/narcflag", "M");
  23. model.setValue("/root/temp/srchinfo/narcflag", "T");
  24. model.setValue("/root/temp/srchinfo/srchdrugkind", "T");
  25. model.setValue("/root/temp/srchinfo/drugflag", "I");
  26. // fChkIOTotal();
  27. model.setValue("/root/temp/srchinfo/narcstat", "T");
  28. rdo_cncl.disabled = true;
  29. model.setValue("/root/temp/srchinfo/cnclstat", "");
  30. rdo_rtn.disabled = true;
  31. model.setValue("/root/temp/srchinfo/rtnstat", "");
  32. model.setValue("/root/temp/srchinfo/narctypeflag", "T");
  33. model.setValue("/root/temp/srchinfo/srchioflag", "I");
  34. ////자동시 표기 김치국 20170329
  35. cap_automess.visible = false;
  36. fChgIOFlag();
  37. //토글초기화
  38. model.setValue("/root/temp/srchinfo/srchroot", "M");
  39. model.toggle("case1");
  40. //조회날짜 초기화
  41. model.setValue("/root/temp/srchinfo/fst_dd", getCurrentDate());
  42. model.setValue("/root/temp/srchinfo/last_dd", getCurrentDate());
  43. //병동 Combo 조회
  44. model.setValue("/root/send/srchcond/deptflag", "W");
  45. submit("TRADT30101");
  46. astfAddCombo("/root/temp/srchcond", "ward", "wardcd,wardnm", ",");
  47. //로그인 사용자 셋팅
  48. var userid = getUserId();
  49. model.setValue("/root/temp/srchinfo/srchid", userid);
  50. fChgUserID();
  51. model.refresh();
  52. //바코드프린터설정 초기화
  53. model.setValue("/root/send/scrnid", getScreenID());
  54. submit("TRLLC90101");
  55. var comm = model.getValue("/root/main/barcdprntsetup/prntsetupinfo/setupinfo/comm02/comm");
  56. var prntkind = model.getValue("/root/main/barcdprntsetup/prntsetupinfo/setupinfo/prntkind");
  57. if(comm == "2") {
  58. model.setValue("/root/main/barcdprntsetup/prntsetupinfo/setupinfo/comm02/comm", "1");
  59. }
  60. if(prntkind == "1") {
  61. model.setValue("/root/main/barcdprntsetup/prntsetupinfo/setupinfo/prntkind", "5");
  62. }
  63. //라벨 출력 형식 옵션
  64. submit("TRADT30106");
  65. //잔량옵션
  66. submit("TRADT30107");
  67. // 출고부서 조회, 설정
  68. submit("TRADT01106");
  69. if(combo1.length == 1) {
  70. combo1.select(0);
  71. } else {
  72. // 2010.01.25 pymi 입원주사조제실 제거
  73. if(model.getValue("/root/init/misdeptlist/deptlist[1]/deptcd") == "3242104000") {
  74. combo1.choices.itemset.attribute("nodeset") = "/root/init/misdeptlist/deptlist[deptcd != '3242104000' ]";
  75. combo1.refresh();
  76. } else {
  77. combo1.select(0); // 20101019_laboru_경북대병원_cmc 셋팅을 경북대병원용으로 변경
  78. }
  79. // (e)
  80. }
  81. //1일기준인지 1회기준인지 체크하여 컬럼을 hidden
  82. var colHidnValue = grdBaseColHidn("D");
  83. //var colHidnValue = "C";
  84. //1회 기준
  85. if( colHidnValue == "C") {
  86. grd_outnarc.colHidden(grd_outnarc.colRef("prcpvol")) = true;
  87. grd_outnarc.colHidden(grd_outnarc.colRef("prcpvolunit")) = true;
  88. grd_outnarc.colHidden(grd_outnarc.colRef("dayprcpqty")) = true;
  89. grd_outnarc.colHidden(grd_outnarc.colRef("dayprcpqtyunit")) = true;
  90. grd_narclist.colHidden(grd_narclist.colRef("prcpvol")) = true;
  91. grd_narclist.colHidden(grd_narclist.colRef("prcpvolunit")) = true;
  92. grd_narclist.colHidden(grd_narclist.colRef("dayprcpqty")) = true;
  93. grd_narclist.colHidden(grd_narclist.colRef("dayprcpqtyunit")) = true;
  94. } else {
  95. grd_outnarc.colHidden(grd_outnarc.colRef("prcpvol2")) = true;
  96. grd_outnarc.colHidden(grd_outnarc.colRef("prcpvolunit2")) = true;
  97. grd_outnarc.colHidden(grd_outnarc.colRef("prcpqty2")) = true;
  98. grd_outnarc.colHidden(grd_outnarc.colRef("prcpqtyunit2")) = true;
  99. grd_narclist.colHidden(grd_narclist.colRef("prcpvol2")) = true;
  100. grd_narclist.colHidden(grd_narclist.colRef("prcpvolunit2")) = true;
  101. grd_narclist.colHidden(grd_narclist.colRef("prcpqty2")) = true;
  102. grd_narclist.colHidden(grd_narclist.colRef("prcpqtyunit2")) = true;
  103. }
  104. }
  105. /**
  106. * 마약리스트 조회
  107. */
  108. function fGetNarcData() {
  109. //이선경 2008-07-22 start (조회시 마약종류를 조회조건에 추가)
  110. var narccdlist = "";
  111. for(var i=1; i < datagrid1.rows; i++) {
  112. if(model.getValue("/root/temp/srchcond/narclist[" + i + "]/sel") == "Y") {
  113. if(narccdlist == "") {
  114. narccdlist = "'" + model.getValue("/root/temp/srchcond/narclist[" + i + "]/narccd") + "'";
  115. } else {
  116. narccdlist += ",'" + model.getValue("/root/temp/srchcond/narclist[" + i + "]/narccd") + "'";
  117. }
  118. }
  119. }
  120. model.setValue("/root/temp/srchinfo/narccd", narccdlist);
  121. //이선경 2008-07-22 start (조회시 마약종류를 조회조건에 추가)
  122. grd_narclist.fixedcellischeck(0, 1) = false;
  123. grd_outnarc.fixedcellischeck(0, 1) = false;
  124. model.copyNode("/root/send/srchinfo","/root/temp/srchinfo");
  125. if( model.getValue("/root/temp/srchinfo/prtab") == "Y") { // 향정반환반납장부 출력조건 2009.05.18 pymi
  126. model.setValue("/root/send/srchinfo/cnclflag", "Y");
  127. model.setValue("/root/send/srchinfo/rtnflag", "Y");
  128. model.setValue("/root/send/srchinfo/rtnstat", "T");
  129. model.setValue("/root/send/srchinfo/cnclstat", "T");
  130. model.setValue("/root/send/srchinfo/narcstat", "");
  131. }
  132. // (e)
  133. /*if(model.getValue("/root/send/srchinfo/narcflag") == "H" ) {
  134. submit("TRADT30105");
  135. }*///주석처리 20090901 이선경 조회하는 로직안으로 옮김(향정이 반환대상이면 반환신청으로 잔량대상이면 잔량신청으로 업데이트 후 조회)
  136. if(chk_auto.value != "Y") {
  137. submit("TRADT30102");
  138. } else if(chk_auto.value == "Y") {
  139. submit("TRADT30110");
  140. }
  141. }
  142. /**
  143. * 바코드 변경시
  144. */
  145. function fChgBarcode() {
  146. var sBar = model.getValue("/root/temp/srchinfo/barcode").toUpperCase();
  147. model.setValue("/root/temp/srchinfo/barcode", sBar);
  148. if(sBar.length >= 21){
  149. if(model.getValue("/root/temp/userinfo/userinfo/userid") == ""){
  150. messageBox("사용자ID가 없습니다. 사용자ID부터","C001");
  151. model.setValue("/root/temp/srchinfo/srchid","");
  152. model.setFocus("ipt_srchid");
  153. } else if(sBar.substr(0,1) != "M" && sBar.substr(0,1) != "H"){
  154. messageBox("바코드 정보가 다릅니다. 바코드를 다시","C001");
  155. model.setValue("/root/temp/srchinfo/barcode","");
  156. model.setFocus("input9");
  157. } else {
  158. //바코드로 먼저 해당처방을 조회함
  159. fGetNarcData();
  160. //바코드로 Acting처리가 가능한 처방인지 체크함
  161. //바코드로 처리가능한 Acting : 조제완료, 불출, 잔량반납확인, 반환확인
  162. //바코드로 조회시 데이터는 한건만 조회됨.
  163. if(sBar.substr(2,1) == "O" || sBar.substr(2,1) == "E" || sBar.substr(2,1) == "D"){
  164. if(model.getValue("/root/temp/srchinfo/srchroot") == "M"){
  165. if(model.getValue("/root/main/narclist/narclist["+1+"]/narcstat")=="3"){
  166. //바코드로 취소는 불가능 조회만가능
  167. model.setValue("/root/main/narclist/narclist["+1+"]/sel","Y");
  168. fNarcActing("Prcp");
  169. return;
  170. } else if(model.getValue("/root/main/narclist/narclist["+1+"]/narcstat")=="4"){
  171. //바코드로 취소는 불가능 조회만가능
  172. model.setValue("/root/main/narclist/narclist["+1+"]/sel","Y");
  173. //fNarcActing("Drug");
  174. messageBox("불출확인은 마약불출화면에서 마약수령자가 처리해야합니다.","I900");
  175. return;
  176. }
  177. } else {
  178. if(model.getValue("/root/main/narclist/narclist["+1+"]/narcstat")=="7"){
  179. //반납신청상태가 아니면 반납확인을 할수없음.
  180. //반납확인상태이면 조회만 가능
  181. fNarcActing("Spre");
  182. return;
  183. }
  184. }
  185. } else {
  186. if(model.getValue("/root/main/narclist/narclist["+1+"]/narcstat")=="9"){
  187. //반환신청상태가 아니면 반환확인을 할수없음.
  188. //그외 상태는 조회만 가능
  189. fNarcActing("Rtn");
  190. return;
  191. }
  192. }
  193. model.setValue("/root/temp/srchinfo/barcode","");
  194. model.refresh();
  195. }
  196. } else {
  197. messageBox("바코드 정보가 다릅니다.\n다시","C001");
  198. model.setValue("/root/temp/srchinfo/barcode","");
  199. model.setFocus("input9");
  200. }
  201. model.refresh();
  202. }
  203. /**
  204. * 바코드 변경시
  205. */
  206. function fChgBarcodeSpre() {
  207. var sBar = model.getValue("/root/temp/srchinfo/barcodespre").toUpperCase();
  208. model.setValue("/root/temp/srchinfo/barcodespre", sBar);
  209. if(sBar.length >= 21){
  210. if(model.getValue("/root/temp/userinfo/userinfo/userid") == ""){
  211. messageBox("사용자ID가 없습니다. 사용자ID부터","C001");
  212. model.setValue("/root/temp/srchinfo/srchid","");
  213. model.setFocus("ipt_srchid");
  214. } else if(sBar.substr(0,1) != "M" && sBar.substr(0,1) != "H"){
  215. messageBox("바코드 정보가 다릅니다. 바코드를 다시","C001");
  216. model.setValue("/root/temp/srchinfo/barcode","");
  217. model.setValue("/root/temp/srchinfo/barcodespre","");
  218. model.setFocus("input1");
  219. } else {
  220. //바코드로 먼저 해당처방을 조회함
  221. model.setValue("/root/temp/srchinfo/barcode",model.getValue("/root/temp/srchinfo/barcodespre"));
  222. fGetNarcData();
  223. //바코드로 Acting처리가 가능한 처방인지 체크함
  224. //바코드로 처리가능한 Acting : 조제완료, 불출, 잔량반납확인, 반환확인
  225. //바코드로 조회시 데이터는 한건만 조회됨.
  226. model.setValue("/root/main/narclist/narclist["+1+"]/sel","Y");
  227. fNarcActing("Spre");
  228. model.setValue("/root/temp/srchinfo/barcode","");
  229. model.setValue("/root/temp/srchinfo/barcodespre","");
  230. model.refresh();
  231. }
  232. } else {
  233. messageBox("바코드 정보가 다릅니다.\n다시","C001");
  234. model.setValue("/root/temp/srchinfo/barcodespre","");
  235. model.setFocus("input1");
  236. }
  237. model.refresh();
  238. }
  239. /**
  240. * 마약 Acting 버튼 클릭시
  241. */
  242. function fNarcActing(sActing) {
  243. if(model.getValue("/root/temp/userinfo/userinfo/userid") == ""){
  244. messageBox("사용자ID가 없습니다. 사용자ID를 먼저","C001");
  245. model.setValue("/root/temp/srchinfo/srchid","");
  246. model.setFocus("ipt_srchid");
  247. model.refresh();
  248. return;
  249. }
  250. var iActing_Cnt = 0; // 행위 구분을 위한 카운트값
  251. var sActing_nm = ""; // 해당 행위의 명칭
  252. var sActingAfter = "";
  253. var selCnt = 0;
  254. var RtnCnfmYN = "N";
  255. var chkAll = model.getValue("/root/send/chkall"); // 20101206 wify 경북대병원 일괄처리 추가
  256. var chkAll1 = model.getValue("/root/send/chkall1"); // 20101214 wify 경북대병원 일괄처리 추가(불출까지)
  257. //액팅전 체크표시 cash
  258. fChkCash("before");
  259. model.removeNodeset("/root/send/narcinfo/narclist");
  260. // **** 체크박스 선택 값 카운트 Start ****
  261. for(var i = grd_narclist.fixedRows; i < grd_narclist.rows; i++){
  262. var sel = model.getValue("/root/main/narclist/narclist["+i+"]/sel");
  263. var sNarcStat = model.getValue("/root/main/narclist/narclist["+i+"]/narcstat");
  264. if(sel == "Y" && sNarcStat != "1") selCnt++; // 선택된 값(sel == "Y") 들 중 미신청 값은 제외
  265. }
  266. if(selCnt == 0) {
  267. messageBox("선택된 데이터가","I004");
  268. return;
  269. }
  270. //실출고부서 값 확인(조제확인/ 반환확인 시)
  271. if((sActing == "Prcp" || sActing == "Rtn" ) && model.getValue("/root/temp/srchinfo/stocdeptcd") == "") {
  272. messageBox("실출고부서를 지정하십시오 ","I999");
  273. return;
  274. }
  275. // **** 체크박스 선택 값 카운트 End ****
  276. for(var i = grd_narclist.fixedRows; i < grd_narclist.rows; i++){
  277. var sel = model.getValue("/root/main/narclist/narclist["+i+"]/sel"); // 선택여부
  278. var sNarcStat = model.getValue("/root/main/narclist/narclist["+i+"]/narcstat"); // 불출상태
  279. var sCnclStat = model.getValue("/root/main/narclist/narclist["+i+"]/cnclstat"); // 반환상태
  280. var sRtnStat = model.getValue("/root/main/narclist/narclist["+i+"]/rtnstat"); // 반납상태
  281. var sDrugFlag = model.getValue("/root/main/narclist/narclist["+i+"]/drugflag"); // 마약/향정구분
  282. var sReturnFlag = model.getValue("/root/main/narclist/narclist["+i+"]/returnflag"); // 반납여부
  283. var sDrugKind = model.getValue("/root/main/narclist/narclist["+i+"]/drugkind"); // 발생구분
  284. var sIOflag = model.getValue("/root/main/narclist/narclist["+i+"]/ioflag"); // 입원/외래구분
  285. var sPrcphistcd = model.getValue("/root/main/narclist/narclist["+i+"]/prcphistcd"); // 처방상태
  286. var sPid = model.getValue("/root/main/narclist/narclist["+i+"]/pid"); // 환자번호
  287. var sPrcpcd = model.getValue("/root/main/narclist/narclist["+i+"]/prcpcd"); // 약품코드
  288. var sDrugno = model.getValue("/root/main/narclist/narclist["+i+"]/drugno"); // 약품코드
  289. var sMsg = "*투약번호 : "+sDrugno+" *환자번호 : "+ sPid+ " *약품코드 : "+ sPrcpcd + "\n";
  290. //=========================================== 제한조건 체크 Start ================================================//
  291. // 변수명 parameter 명칭 동작가능상태 //
  292. //------------------------------------------------------------------------------------------------------------//
  293. // sCnclStat 1. 7 : 반환종료 sCnclStat == "7" ( 진행불가 ) //
  294. //------------------------------------------------------------------------------------------------------------//
  295. // sActing
  296. // 1. Prcp : 조제확인 sNarcStat == "3" [출력완료] //
  297. // 2. PrcpCncl : 조제취소 sNarcStat == "4" [조제완료] //
  298. // 3. Drug : 불출확인 sNarcStat == "4" [조제완료] //
  299. // 4. DrugCncl : 불출취소 sNarcStat == "5" [불출] //
  300. // 5. Rtn : 반환확인 sCnclStat == "1" [반환신청] //
  301. // 6. RtnCncl : 반환취소 (2009-05-05 추가) sCnclStat == "2" [반환확인] //
  302. // 7. Spre : 잔량확인 sRtnStat == "1" [잔량신청] //
  303. // 8. SpreCncl : 잔량취소 (2009-05-05 추가) sRtnStat == "2" [잔량확인] //
  304. //============================================================================================================//
  305. if(sel == 'Y'){
  306. // *** 반환종료 *** 처방 메시지 처리 (진행불가) Start
  307. if(sCnclStat == "7" && (sNarcStat == "3" || sNarcStat == "4")){
  308. //메세지처리 반환종료 된 처방입니다.
  309. messageBox(sMsg+"반환종료 되었습니다. 반환처방전을 출력","I008");
  310. return;
  311. } else if(sCnclStat == "7" && sNarcStat == "2"){
  312. //메세지처리 : 반환종료되었습니다.
  313. messageBox(sMsg+"반환종료 되었습니다.","");
  314. return;
  315. }
  316. // *** 반환종료 *** 처방 메시지 처리 (진행불가) End
  317. // 20101214 wify 경북대병원 일괄처리(Prcpdrug)추가
  318. if(sActing == "Prcpdrug") {
  319. if(chkAll == "") {
  320. messageBox("일괄처리가 체크되지", "E007");
  321. return;
  322. }
  323. if(sNarcStat == "2" && chkAll == "Y") {
  324. astfCopyNodeSet("/root/send/narcinfo/narclist", "/root/main/narclist/narclist["+i+"]");
  325. sActing_nm = "불출"
  326. iActing_Cnt++;
  327. } else { // 불출상태가 [미신청]일때
  328. sActing_nm = "불출"
  329. }
  330. }else if(sActing == "Prcp"){ // ***조제확인*** 출력완료 일 때만 기능 동작
  331. //이선경 2008-07-23 start
  332. /*
  333. if(sPrcphistcd == "D"){
  334. if(messageBox("반환된 처방입니다. 조제완료를", "Q002") == "7") {
  335. //messageBox("반환된 처방입니다. 조제완료를 할 수 없습니다.", "I900")
  336. return;
  337. }
  338. }
  339. */
  340. // 한영현/간호 ITC 협의사항 - 'D'인 처방도 정상적인 흐름으로 처리 후 다시 반환처리 - 2009.06.04 (목) 김귀남
  341. //이선경 2008-07-23 end
  342. // 20101206 wify 경북대병원 일괄처리 추가.. 일괄처리시 불출신청 체크 안함.
  343. if(sNarcStat == "2" && chkAll == ""){ // [불출신청] 상태일 때
  344. messageBox("마약처방전이 출력되지","E007");
  345. return;
  346. }
  347. if(parseInt(sNarcStat, 10) > 3){ // [출력완료] 상태 이상일 때
  348. messageBox("이미 조제완료된 처방","E008");
  349. return;
  350. }
  351. // 20101206 wify 경북대병원 일괄처리시 조제완료까지 처리
  352. if(sNarcStat == "2" && chkAll == "Y") {
  353. astfCopyNodeSet("/root/send/narcinfo/narclist", "/root/main/narclist/narclist["+i+"]");
  354. sActing_nm = "조제완료";
  355. iActing_Cnt++;
  356. } else { // 불출상태가 [미신청]일때
  357. sActing_nm = "조제완료";
  358. }
  359. if(sNarcStat == "3"){ // [출력완료] 일 때만 기능 동작
  360. astfCopyNodeSet("/root/send/narcinfo/narclist", "/root/main/narclist/narclist["+i+"]");
  361. sActing_nm = "조제완료";
  362. iActing_Cnt++;
  363. } else { // 불출상태가 [미신청]일때
  364. sActing_nm = "조제완료";
  365. }
  366. } else if(sActing == "PrcpCncl"){ // ***조제취소***
  367. //이선경 2008-07-23 start
  368. if(sCnclStat != ""){
  369. if(messageBox("반환된 처방입니다. 조제취소를", "Q002") == "7") {
  370. return;
  371. }
  372. }
  373. //이선경 2008-07-23 end
  374. if(sNarcStat == "4"){ // [조제완료] 상태일 때
  375. astfCopyNodeSet("/root/send/narcinfo/narclist", "/root/main/narclist/narclist["+i+"]");
  376. iActing_Cnt++;
  377. }
  378. sActing_nm = "조제취소";
  379. } else if(sActing == "Drug"){ // ***불출확인***
  380. //이선경 2008-07-23 start
  381. /*
  382. if(sPrcphistcd == "D"){
  383. if(messageBox("반환된 처방입니다. 불출확인를", "Q002") == "7") {
  384. return;
  385. }
  386. }
  387. */
  388. // 한영현/간호 ITC 협의사항 - 'D'인 처방도 정상적인 흐름으로 처리 후 다시 반환처리 - 2009.06.04 (목) 김귀남
  389. //이선경 2008-07-23 end
  390. // 20101214 wify 경북대병원 일괄처리 추가 (출력 --> 불출까지)
  391. if(sNarcStat == "4" && chkAll == "Y" && chkAll1 == "Y"){ // [조제완료] 상태일 때
  392. astfCopyNodeSet("/root/send/narcinfo/narclist", "/root/main/narclist/narclist["+i+"]");
  393. iActing_Cnt++;
  394. sActing_nm = "불출";
  395. }
  396. if(sNarcStat == "4"){ // [조제완료] 상태일 때
  397. astfCopyNodeSet("/root/send/narcinfo/narclist", "/root/main/narclist/narclist["+i+"]");
  398. iActing_Cnt++;
  399. }
  400. sActing_nm = "불출";
  401. } else if(sActing == "DrugCncl"){ // ***불출취소***
  402. //이선경 2008-07-23 start
  403. if(sCnclStat != ""){
  404. if(messageBox("반환된 처방입니다. 불출취소를", "Q002") == "7") {
  405. return;
  406. }
  407. }
  408. //이선경 2008-07-23 end
  409. if(sNarcStat == "5"){ // [불출] 상태일 때
  410. astfCopyNodeSet("/root/send/narcinfo/narclist", "/root/main/narclist/narclist["+i+"]");
  411. iActing_Cnt++;
  412. }
  413. sActing_nm = "불출취소";
  414. } else if(sActing == "Spre"){ // ***잔량확인***
  415. //alert(sActing);
  416. // 20091111 이선경 수정 : 잔량확인 가능한 조건 변경
  417. // 1. 잔량이 0 이 아닌 경우 (실제 잔량이 있는 경우)는 잔량신청일 경우만 잔량확인이 되도록
  418. // 2. 잔량이 0 인 경우(빈 앰플반납하는 경우)는 부서확인일 경우만 잔량확인이 되도록
  419. // 20091201 이선경 수정 : 처방상태가 O 인 경우만 잔량확인 가능하도록 조건 추가
  420. //if( model.getValue("/root/init/nartype/item/nartype") == "Y" || sRtnStat == "1"){ // [잔량신청] 일 때
  421. var spreqty = model.getValue("/root/main/narclist/narclist["+i+"]/spreqty");
  422. if(sPrcphistcd == 'O' && ((spreqty > 0 && sRtnStat == "1") || (spreqty == "0" && sNarcStat >= "6" ))) {
  423. astfCopyNodeSet("/root/send/narcinfo/narclist", "/root/main/narclist/narclist["+i+"]");
  424. iActing_Cnt++;
  425. // [반환신청] 이거나 [외래] 경구약 혹은 외용제이면서 처방상태(sReturnFlag)가 [D/C]일 경우
  426. // 반환일시가 존재할때.
  427. if((sCnclStat == "1" || (sIOflag == "O" && (sDrugKind == "N" || sDrugKind == "Y") && sReturnFlag == "Y"))
  428. && model.getValue("/root/main/narclist/narclist["+i+"]/rtndt") != ""){
  429. var vb_prcpcd = model.getValue("/root/main/narclist/narclist["+i+"]/prcpcd");
  430. var vb_Chk = messageBox(vb_prcpcd+"마약에 대해 반환확인 데이터가 존재합니다.\n반환확인을 ", "Q004");
  431. if(vb_Chk == 6){
  432. model.makeValue("/root/send/narcinfo/narclist["+getNodesetCount("/root/send/narcinfo/narclist")+"]/acting_after", "Rtn");
  433. }
  434. }
  435. } else {
  436. messageBox(sMsg+"잔량 처리 대상이 아닙니다", "");
  437. }
  438. sActing_nm = "잔량반납확인";
  439. } else if(sActing == "SpreCncl"){ // ***잔량취소***
  440. if(sRtnStat == "2"){ // [잔량확인] 일 때
  441. astfCopyNodeSet("/root/send/narcinfo/narclist", "/root/main/narclist/narclist["+i+"]");
  442. iActing_Cnt++;
  443. }
  444. sActing_nm = "잔량취소";
  445. } else if(sActing == "Rtn"){ // ***반환확인***
  446. /*
  447. 1. 입원 약주사, 외래주사는 간호사가 반환신청을 함
  448. 2. 퇴원/외박/외출은 약국에서 반환을 수행(삭제, 간호에서 반환신청해야함)
  449. 3. 외래 원내 약/외용약은 약국에서 반환을 수행
  450. */
  451. //이선경 2008-07-23 start
  452. if( sIOflag !="O" && sCnclStat == "1" && sPrcphistcd == "E" && sDrugFlag !="L" && sDrugFlag != 'G'){
  453. //messageBox("간호투약확인후 반환확인을 ", "C002");
  454. //return;
  455. }
  456. //이선경 2008-07-23 end
  457. if(sCnclStat == "1"){ // [반환신청]상태일 때 (입원/외래 공통)
  458. /*} else if((sDrugFlag == "L" || sDrugFlag == "G") && (parseInt(sNarcStat,10) < 6 ) && sReturnFlag == "Y"){
  459. if(model.getValue("/root/main/narclist/narclist["+i+"]/rtnqty") != ""){
  460. astfCopyNodeSet("/root/send/narcinfo/narclist", "/root/main/narclist/narclist["+i+"]");
  461. iActing_Cnt++;
  462. } else {
  463. messageBox("반환량이 없습니다. 반환량을","C001");
  464. return;
  465. }*/
  466. if(model.getValue("/root/main/narclist/narclist["+i+"]/rtnqty") != ""){
  467. //if( sIOflag =="O" || sDrugFlag =="L" || sDrugFlag == 'G'){
  468. //병동추가 처방도 반환확인시 ast.adthdrug에 반환정보 insert
  469. if(model.getValue("/root/temp/srchinfo/narcflag") == "H") {
  470. fIptRtnCnts(i);
  471. }
  472. //}
  473. astfCopyNodeSet("/root/send/narcinfo/narclist", "/root/main/narclist/narclist["+i+"]");
  474. iActing_Cnt++;
  475. } else {
  476. messageBox("반환량이 없습니다. 반환량을","C001");
  477. return;
  478. }
  479. if(sRtnStat == "1" && model.getValue("/root/main/narclist/narclist["+i+"]/rtndt") != ""){
  480. var vb_Chk = messageBox("잔량확인 데이터가 존재합니다.\n잔랑반납확인을 ", "Q004");
  481. if(vb_Chk == 6){
  482. model.makeValue("/root/send/narcinfo/narclist["+getNodesetCount("/root/send/narcinfo/narclist")+"]/acting_after", "Spre");
  483. }
  484. }
  485. } else if(sIOflag == "O" && (sDrugKind == "N" || sDrugKind == "Y") && sReturnFlag == "Y"){ // [외래] 경구/외용약이면서 prcphistcd가 D,C 일 때
  486. if(model.getValue("/root/main/narclist/narclist["+i+"]/rtnqty") == "" ){
  487. messageBox("반환량이 없습니다. 반환량을","C001");
  488. return;
  489. }
  490. if(isNaN(model.getValue("/root/main/narclist/narclist["+i+"]/rtnqty"))){
  491. messageBox("반환량은 숫자로","C001");
  492. model.setValue("/root/main/narclist/narclist["+i+"]/rtnqty", "");
  493. return;
  494. }
  495. astfCopyNodeSet("/root/send/narcinfo/narclist", "/root/main/narclist/narclist["+i+"]");
  496. iActing_Cnt++;
  497. if(sRtnStat == "1" && model.getValue("/root/main/narclist/narclist["+i+"]/rtndt") != ""){
  498. var vb_prcpcd = model.getValue("/root/main/narclist/narclist["+i+"]/prcpcd");
  499. var vb_Chk = messageBox(vb_prcpcd+"마약에 대해 잔량확인 데이터가 존재합니다.\n잔랑반납확인을 ", "Q004");
  500. if(vb_Chk == 6){
  501. model.makeValue("/root/send/narcinfo/narclist["+getNodesetCount("/root/send/narcinfo/narclist")+"]/acting_after", "Spre");
  502. }
  503. }
  504. }
  505. sActing_nm = "반환확인";
  506. RtnCnfmYN = "Y";
  507. rtnprntflag = "Y";
  508. } else if(sActing == "RtnCncl"){ // ***반환취소***
  509. if(sCnclStat == "2"){ // [반환확인] 일 때
  510. astfCopyNodeSet("/root/send/narcinfo/narclist", "/root/main/narclist/narclist["+i+"]");
  511. iActing_Cnt++;
  512. }
  513. sActing_nm = "반환취소";
  514. }
  515. }
  516. }
  517. //=========================================== 제한조건 체크 Start ===========================================
  518. if(iActing_Cnt == 0 && model.getValue("/root/temp/srchinfo/barcode") == ""){
  519. messageBox("선택된 데이터중에 ["+sActing_nm+"]할 데이터가 없거나 \n선택된 데이터가","I004");
  520. return;
  521. } else if(iActing_Cnt == 0 && model.getValue("/root/temp/srchinfo/barcode") != ""){
  522. messageBox("이미","I001");
  523. model.setValue("/root/temp/srchinfo/barcode","");
  524. model.setFocus("input9");
  525. model.refresh();
  526. return;
  527. }
  528. /*
  529. if ( model.getValue("/root/init/lbltype/item/lbltype3") == "Y" ){
  530. if ( model.getValue("/root/send/lblskip") != "Y" ){
  531. fNarcLBLPrint("Prnt");
  532. }
  533. } else {
  534. if(sActing == "Prcp" && model.getValue("/root/temp/srchinfo/srchioflag") == "I" && model.getValue("/root/temp/srchinfo/drugflag") != "L"){
  535. if ( model.getValue("/root/send/lblskip") != "Y" ){
  536. fNarcLBLPrint("Prnt");
  537. }
  538. }
  539. }
  540. */
  541. model.copyNode("/root/send/narcinfo/srchinfo","/root/temp/srchinfo");
  542. model.copyNode("/root/send/narcinfo/userinfo","/root/temp/userinfo/userinfo");
  543. model.makeValue("/root/send/narcinfo/srchinfo/acting", sActing);
  544. /*
  545. if ( model.getValue("/root/init/lbltype/item/lbltype3") == "Y" ){
  546. if ( model.getValue("/root/send/lblskip") != "Y" ){
  547. submit("TXADT30102"); //라벨 출력 횟수 저장
  548. }
  549. } else {
  550. if(sActing == "Prcp" && model.getValue("/root/temp/srchinfo/srchioflag") == "I" && model.getValue("/root/temp/srchinfo/drugflag") != "L"){
  551. if ( model.getValue("/root/send/lblskip") != "Y" ){
  552. submit("TXADT30102"); //라벨 출력 횟수 저장
  553. }
  554. }
  555. }
  556. */
  557. //20091015 이선경 수정 : 조제확인시 라벨자동출력은 fNarcLBLPrint 함수에서 처방조회시 가져온 ioflag로 체크해서 출력 여부 결정
  558. //(수정원인 : 외래,병동 전체 조회 후 조제확인시 라벨자동출력이 안되는 현상이 있음)
  559. //if ( model.getValue("/root/send/lblskip") != "Y" && sActing == "Prcp"){
  560. // 20101221 wify 경북대병원 처방전 일괄처리할때 라벨도 같이 출력 되도록 함.
  561. if ( model.getValue("/root/send/lblskip") != "Y" && sActing == "Prcpdrug"){
  562. //fNarcLBLPrint("Prnt");
  563. fNarcLBLPrintR("Prnt");
  564. submit("TXADT30102"); //라벨 출력 횟수 저장
  565. }
  566. // 2013년 3월26일 김치국 아래 수행을 밑으로 내림
  567. //submit("TXADT30101");
  568. //액팅전 체크표시 다시 표시
  569. //grd_narclist.fixedcellischeck(0, 1) = false;
  570. //grd_outnarc.fixedcellischeck(0, 1) = false;
  571. //fChkCash("after");
  572. // 반환처방전 자동출력 2009.07.30 pymi
  573. if(sActing_nm == "반환확인" || RtnCnfmYN == "Y") {
  574. fNarcPrint();
  575. }
  576. // 2013년 3월26일 김치국 아래 수행을 밑으로 내림
  577. submit("TXADT30101");
  578. //액팅전 체크표시 다시 표시
  579. grd_narclist.fixedcellischeck(0, 1) = false;
  580. grd_outnarc.fixedcellischeck(0, 1) = false;
  581. fChkCash("after");
  582. model.setValue("/root/temp/srchinfo/barcode","");
  583. model.setFocus("input9");
  584. model.refresh();
  585. }
  586. /**
  587. * 마약처방전 출력
  588. */
  589. function fNarcPrint() {
  590. if(model.getValue("/root/temp/userinfo/userinfo/userid") == ""){
  591. messageBox("사용자ID가 없습니다. 사용자ID를 먼저","C001");
  592. model.setValue("/root/temp/srchinfo/barcode","");
  593. model.setFocus("input9");
  594. model.refresh();
  595. return;
  596. }
  597. var chkAll = model.getValue("/root/send/chkall"); // 20101206 wify 경북대병원 일괄처리 추가
  598. //액팅전 체크표시 cash
  599. fChkCash("before");
  600. for(var i = grd_narclist.fixedRows; i < grd_narclist.rows; i++){
  601. var sel = model.getValue("/root/main/narclist/narclist["+i+"]/sel");
  602. var narcstat = model.getValue("/root/main/narclist/narclist["+i+"]/narcstat"); // 불출상태
  603. var cnclstat = model.getValue("/root/main/narclist/narclist["+i+"]/cnclstat"); // 반환상태
  604. var ioflag = model.getValue("/root/main/narclist/narclist["+i+"]/ioflag"); // 입원외래구분
  605. var prntdt = model.getValue("/root/main/narclist/narclist["+i+"]/prntdt"); // 처방전출력일시
  606. var sPid = model.getValue("/root/main/narclist/narclist["+i+"]/pid"); // 환자번호
  607. var sPrcpcd = model.getValue("/root/main/narclist/narclist["+i+"]/prcpcd"); // 처방명
  608. var sDrugno = model.getValue("/root/main/narclist/narclist["+i+"]/drugno"); // 투약번호
  609. var rpt = model.getValue("/root/temp/reprnt"); //재출력구분 20101221 wify 경북대병원 처방전 재출력 추가
  610. var msg = "*투약번호 : "+sDrugno+" *환자번호 : "+ sPid+ " *약품코드 : "+ sPrcpcd + "\n";
  611. var result = "";
  612. var prntyn = ""; // 출력가능 여부
  613. /*이선경 2008-07-23 start
  614. if(sel == 'Y' && narcstat != "1")
  615. *///이선경 2008-07-23 end
  616. if(sel == 'Y'){
  617. // 20101221 wify 경북대병원 처방전 재출력시 재출력 체크 하지 않게 함.
  618. if (rpt=="Y" && narcstat == "1" || rpt == "Y" && narcstat == "2") {
  619. alert("일괄처리후 재출력할수 있습니다.");
  620. return;
  621. }
  622. if(prntdt != "" && narcstat > 2 && rpt != "Y" && rtnprntflag != "Y") {
  623. var prntdata = prntdt.substring(0,4) + "년" + prntdt.substring(4,6) + "월" + prntdt.substring(6,8) + "일" +
  624. prntdt.substring(8,10) + ":" + prntdt.substring(10,12) + ":" + prntdt.substring(12,14);
  625. result = messageBox(prntdata + "에 출력한 처방입니다. 재출력을","Q003");
  626. } else {
  627. result = "6";
  628. }
  629. if(result == "6") {
  630. model.copyNode("/root/send/prntinfo","/root/main/narclist/narclist["+i+"]");
  631. model.makeValue("/root/send/prntinfo/prntid", model.getValue("/root/temp/userinfo/userinfo/userid"));
  632. // ************************ [반환처방전] 출력 ************************
  633. if(cnclstat != ""){
  634. if(ioflag == "I"){
  635. // 반환신청, 반환확인, 반환종료시(출력완료, 조제완료 일 때만) 반환처방전 출력 가능
  636. // 20091201 이선경 수정 : 반환신청일때는 제외, 반환확인, 반환종료상태만 가능
  637. // 2013년 3월 26일 김치국 반환신청(cnclstat == "1")일때도 처방전 출력으로 원복
  638. if(cnclstat == "1" || cnclstat == "2" || (parseInt(narcstat) >= 3 && parseInt(narcstat) <= 4 && cnclstat == "7")){
  639. // if(cnclstat == "2" || (parseInt(narcstat) >= 3 && parseInt(narcstat) <= 4 && cnclstat == "7")){
  640. model.makeValue("/root/send/prntinfo/prntflag", "D");
  641. prntyn = "Y";
  642. } else {
  643. if(cnclstat == "7" ){
  644. //메세지처리 반환종료 된 처방입니다.
  645. messageBox(msg+"반환","I002");
  646. continue;
  647. } else {
  648. //메세지처리 반환확인해야 합니다.
  649. messageBox(msg+"반환확인시 반환처방전 출력","I006");
  650. continue;
  651. }
  652. continue;
  653. }
  654. } else {
  655. if(cnclstat == "0"){
  656. //반환확인후 출력가능합니다.
  657. messageBox(msg+"반환확인후 출력","I006");
  658. continue;
  659. } else {
  660. model.makeValue("/root/send/prntinfo/prntflag", "D");
  661. prntyn = "Y";
  662. }
  663. }
  664. // ************************ [마약처방전] 출력 ************************
  665. } else {
  666. if(narcstat == "1"){
  667. //불출신청이 되어야 출력가능합니다.
  668. messageBox(msg+"불출신청 이후 출력","I006");
  669. continue;
  670. } else {
  671. model.makeValue("/root/send/prntinfo/prntflag", "O");
  672. prntyn = "Y";
  673. }
  674. }
  675. if(prntyn == "Y"){
  676. submit("TRADT30103");
  677. if(model.getValue("/root/main/prntlist/patinfo/drugno") != ""){
  678. //처방전에 DUR이 존재하면 RFADT30105 존재하지 않으면 RFADT30100 출력
  679. var resn = model.getValue("/root/main/prntlist/resn/resnnm");
  680. // 반환일경우 수량에 (-) 표시
  681. if (cnclstat == '0' || cnclstat == '1' || cnclstat == '2' || cnclstat == '7' )
  682. {
  683. var totdrugqty = model.getValue("/root/main/prntlist/prntlist/totdrugqty") ;
  684. totdrugqty = totdrugqty * -1 ;
  685. model.setValue("/root/main/prntlist/prntlist/totdrugqty", totdrugqty );
  686. }
  687. if( resn == ""){
  688. //1일기준인지 1회기준인지 체크하여 컬럼을 hidden
  689. var colHidnValue = grdBaseColHidn("D");
  690. if( colHidnValue == "C") {//1회 기준
  691. model.makeValue("/root/main/prntlist/patinfo/prcpvolchk", "Y");
  692. }
  693. //20101119_wify_경북대병원_마약처방전 폼 변경
  694. // RFADT30100 ==> RFADT30106
  695. // RFADT30105 ==> RFADT30107
  696. exeReportPreview("RFADT30106", "XMLSTR", "", "", "true","","","","","true");
  697. }else{
  698. exeReportPreview("RFADT30107", "XMLSTR", "", "", "true","","","","","true");
  699. }
  700. }
  701. }
  702. }
  703. }
  704. }
  705. // 20101206 wify 경북대병원 처방전 출력후 체크표시 및 출력완료 표시
  706. if ( chkAll == "" ) {
  707. fGetNarcData();
  708. //액팅전 체크표시 다시 표시
  709. grd_narclist.fixedcellischeck(0, 1) = false;
  710. grd_outnarc.fixedcellischeck(0, 1) = false;
  711. fChkCash("after");
  712. }
  713. }
  714. /**
  715. * 마약라벨 출력
  716. */
  717. function fNarcLBLPrint(chk) {
  718. var reprint="";
  719. model.copyNode("/root/init/barcdprntsetup", "/root/main/barcdprntsetup");
  720. //20091015 이선경 수정 : 자동출력 기본이 병동(퇴원제외)만이나 lbltype3이 "Y"이면 외래, 퇴원도 모두 출력됨
  721. var lbltype3 = model.getValue("/root/init/lbltype/item/lbltype3");
  722. for(var i = grd_narclist.fixedRows; i < grd_narclist.rows; i++){
  723. var sel = model.getValue("/root/main/narclist/narclist["+i+"]/sel");
  724. var sNarcStat = model.getValue("/root/main/narclist/narclist["+i+"]/narcstat");
  725. var ioflag = model.getValue("/root/main/narclist/narclist["+i+"]/ioflag");
  726. var drugflag = model.getValue("/root/main/narclist/narclist["+i+"]/drugflag");
  727. var sPrcphistcd = model.getValue("/root/main/narclist/narclist["+ i +"]/prcphistcd"); // 2010.03.15 pymi
  728. //model.removeNodeset("/root/send/narcinfo/narclist");
  729. //20091015 이선경 수정 : 조제확인시 라벨자동출력은 fNarcLBLPrint 함수에서 처방조회시 가져온 ioflag로 체크해서 출력 여부 결정
  730. //(수정원인 : 외래,병동 전체 조회 후 조제확인시 라벨자동출력이 안되는 현상이 있음)
  731. if(sel == 'Y' && ((chk == "Prnt" && sNarcStat == "3" && sPrcphistcd != "D" && (lbltype3 == "Y" || (ioflag == "I" && drugflag != "L" && drugflag != "G"))) || (chk == "Reprnt" && parseInt(sNarcStat,10) > 3))){ // 2010.03.15 pymi 반환완료된 처방 제외
  732. // Comm 설정
  733. //CommAX.CommPort = "1"; // 출력 Port
  734. //CommAX.Settings = "9600,n,8,1"; // Comm 설정
  735. PrnKind = model.getvalue("/root/init/barcdprntsetup/prntsetupinfo/setupinfo/prntkind");
  736. PrnMarginLeft = model.getvalue("/root/init/barcdprntsetup/prntsetupinfo/setupinfo/blank/left");
  737. PrnMarginTop = model.getvalue("/root/init/barcdprntsetup/prntsetupinfo/setupinfo/blank/top");
  738. var commkind = model.getvalue("/root/init/barcdprntsetup/prntsetupinfo/setupinfo/commkind")
  739. if ( PrnKind ==7 ) {
  740. CommAX.PrnKind =4;
  741. } else {
  742. CommAX.PrnKind =PrnKind;
  743. }
  744. if(commkind == "02") {
  745. CommAX.PortNm = 1;
  746. } else {
  747. CommAX.PortNm = 2;
  748. }
  749. if(commkind == "01") {
  750. CommAX.PrtNm = model.getvalue("/root/init/barcdprntsetup/prntsetupinfo/setupinfo/comm01/setupval");
  751. }
  752. var sSndMsg = ""; //라벨출력내용
  753. if ( model.getValue("/root/main/narclist/narclist["+i+"]/lblprnttims")>0 ){
  754. reprint ="(재)";
  755. }
  756. //astfCopyNodeSet("/root/send/narcinfo/narclist", "/root/main/narclist/narclist["+i+"]");
  757. //if ( CommAX.PortOpen() == true) {
  758. //시작(X, Y)
  759. sSndMsg += astfStartFormat(0, 0, "S");
  760. //라벨이름
  761. var nm = "";
  762. if(model.getValue("/root/main/narclist/narclist["+i+"]/narcflag") == "M") {
  763. nm = "마 약";
  764. }else {
  765. nm = "향 정";
  766. }
  767. sSndMsg += astfPrintOut(50, 40, 10, nm,"");
  768. //처방일자
  769. sSndMsg += astfPrintOut(245, 40, 34, fGetDateString(model.getValue("/root/main/narclist/narclist["+i+"]/prcpdd")),"");
  770. //환자번호
  771. sSndMsg += astfPrintOut(245, 75, 34, model.getValue("/root/main/narclist/narclist["+i+"]/pid"),"");
  772. //수행부서명
  773. var issdept = model.getValue("/root/main/narclist/narclist["+i+"]/issdeptcdnm");
  774. sSndMsg += astfPrintOut(35, 120, 3,issdept.substring(0, 5) ,"");
  775. //병실
  776. sSndMsg += astfPrintOut(150, 120, 3, "("+model.getValue("/root/main/narclist/narclist["+i+"]/roomcd") + ")","");
  777. //환자이름+투약번호
  778. var sPid_Drugno = model.getValue("/root/main/narclist/narclist["+i+"]/patnm")
  779. + " (" + model.getValue("/root/main/narclist/narclist["+i+"]/drugno")+reprint + ")";
  780. sSndMsg += astfPrintOut(245, 120, 3, sPid_Drugno,"");
  781. //선그리기
  782. sSndMsg += astfGraphicBox(10, 155, 450, 0, 3);
  783. //마약코드
  784. sSndMsg += astfPrintOut(30, 170, 3, model.getValue("/root/main/narclist/narclist["+i+"]/prcpcd"),"");
  785. //1일기준인지 1회기준인지 체크
  786. var colHidnValue = grdBaseColHidn("D");
  787. if( colHidnValue == "C") {//1회 기준
  788. //일용량
  789. sSndMsg += astfPrintOut(250, 170, 4, model.getValue("/root/main/narclist/narclist["+i+"]/prcpvol2")+model.getValue("/root/main/narclist/narclist["+i+"]/prcpvolunit"),"");
  790. //일수량
  791. sSndMsg += astfPrintOut(360, 170, 4, model.getValue("/root/main/narclist/narclist["+i+"]/prcpqty2")+model.getValue("/root/main/narclist/narclist["+i+"]/prcpqtyunit"),"");
  792. } else {
  793. //일용량
  794. sSndMsg += astfPrintOut(250, 170, 4, model.getValue("/root/main/narclist/narclist["+i+"]/prcpvol")+model.getValue("/root/main/narclist/narclist["+i+"]/prcpvolunit"),"");
  795. //일수량
  796. sSndMsg += astfPrintOut(360, 170, 4, model.getValue("/root/main/narclist/narclist["+i+"]/totdrugqty")+model.getValue("/root/main/narclist/narclist["+i+"]/prcpqtyunit"),"");
  797. }
  798. //마약명칭
  799. sSndMsg += astfPrintOut(30, 210, 28, "("+model.getValue("/root/main/narclist/narclist["+i+"]/drugnm")+")","");
  800. // 바코드(21자리) : 마약구분(1)+입원/외래구분(1)+반납구분(1)+처방일자(8)+처방번호(10)
  801. var narcflag = model.getValue("/root/main/narclist/narclist["+i+"]/narcflag");
  802. var ioflag = model.getValue("/root/main/narclist/narclist["+i+"]/ioflag");
  803. var returnflag = model.getValue("/root/main/narclist/narclist["+i+"]/returnflag");
  804. if(returnflag ==""){
  805. returnflag = "O";
  806. } else {
  807. returnflag = "D";
  808. }
  809. var prcpdd = model.getValue("/root/main/narclist/narclist["+i+"]/prcpdd");
  810. var prcpno = model.getValue("/root/main/narclist/narclist["+i+"]/prcpno");
  811. var drugseqno ="";
  812. if ( ioflag =="O" ){
  813. drugseqno = model.getValue("/root/main/narclist/narclist["+i+"]/drugseqno");
  814. }
  815. var iLen = prcpno.length;
  816. for(var j=iLen; j<10; j++) {
  817. prcpno = "0" + prcpno;
  818. }
  819. var sResult = narcflag+ioflag+returnflag+prcpdd+prcpno+drugseqno;
  820. //바코드(변환)
  821. if(PrnKind == "2" || PrnKind == "7" ) {
  822. sSndMsg += astfBarCode_Code39(100, 242, "N", 40, sResult, "S");
  823. } else {
  824. sSndMsg += astfBarCode_Code39(30, 245, "N", 40, sResult, "S");
  825. }
  826. //sSndMsg += astfPrintOut(30, 310, 28, sResult,"");
  827. //처방입력일시
  828. sSndMsg += astfPrintOut(30, 310, 28, "처방입력일시 : "+fGetDateString(model.getValue("/root/main/narclist/narclist["+i+"]/rgstdt")),"");
  829. sSndMsg += astfEndFormat(0);
  830. CommAX.SendMsg(sSndMsg);
  831. sSndMsg = "";
  832. gTimer = window.setInterval("fStopTimer()",10000);
  833. //CommAX.PortClose();
  834. model.refresh();
  835. //}
  836. }
  837. }
  838. //submit("TXADT30102");
  839. }
  840. /**
  841. *
  842. */
  843. function fStopTimer() {
  844. window.clearinterval(gTimer);
  845. }
  846. function fGetDateString( s ){
  847. var dates = "";
  848. if(s.length >8){
  849. dates = s.substring(0,4) +"/" +s.substring(4,6)+"/" +s.substring(6,8)+" "+s.substring(8,10)+":"+s.substring(10,12)+":"+s.substring(12,14);
  850. } else {
  851. dates = s.substring(0,4) +"/" +s.substring(4,6)+"/" +s.substring(6,8);
  852. }
  853. return dates;
  854. }
  855. /**
  856. * 반환량입력시
  857. */
  858. function fIptRtnCnts(rowid) {
  859. var RtnCnts = model.getValue("/root/main/narclist/narclist["+rowid+"]/rtnqty");
  860. var RtnCnfmDt = model.getValue("/root/main/rtnlist/rtnlist["+rowid+"]/rtncnfmdt");
  861. if(RtnCnts != ""){
  862. //반납의뢰인 약품만 반납처리함
  863. if(RtnCnfmDt != ""){
  864. messageBox("반환종료된 약품","E008");
  865. return;
  866. }
  867. //반납량을 입력하지 않았을 경우
  868. if(RtnCnts == "0"){
  869. messageBox("반환량을","C001");
  870. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtnqty", "");
  871. return;
  872. }
  873. if(isNaN(RtnCnts)){
  874. messageBox("반환량은 숫자로","C001");
  875. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtnqty", "");
  876. return;
  877. }
  878. //반납로직을 위한 변수 선언
  879. var IOFlag = model.getValue("/root/main/narclist/narclist["+rowid+"]/ioflag");
  880. var PrcpClscd = model.getValue("/root/main/narclist/narclist["+rowid+"]/prcpclscd");
  881. var PrcpGenrflag = model.getValue("/root/main/narclist/narclist["+rowid+"]/prcpgenrflag");
  882. var PrcpKindcd = model.getValue("/root/main/narclist/narclist["+rowid+"]/prcpkindcd");
  883. if(IOFlag == "O"){
  884. //수가계산방식에 따른 변화량
  885. var sCalcmthdcd = model.getValue("/root/main/narclist/narclist["+rowid+"]/calcmthdcd");
  886. //반납재고량 계산을 위한 변수 선언
  887. var DeliveCrite = model.getValue("/root/main/narclist/narclist["+rowid+"]/delivecrite");
  888. var iRtnCnts = parseInt(RtnCnts, 10);
  889. var iLimitCnts = 0;
  890. var PrcpQty = parseFloat(model.getValue("/root/main/narclist/narclist["+rowid+"]/prcpqty"));
  891. var DayPrcpQty = parseFloat(model.getValue("/root/main/narclist/narclist["+rowid+"]/dayprcpqty"));
  892. var PrcpTims = parseInt(model.getValue("/root/main/narclist/narclist["+rowid+"]/prcptims"), 10);
  893. var PrcpDayno = parseInt(model.getValue("/root/main/narclist/narclist["+rowid+"]/prcpdayno"), 10);
  894. var RtnStocQty = 0;
  895. if(PrcpClscd == "A4" || sCalcmthdcd == 4){
  896. //외래 외용제 (수량반납)
  897. if(sCalcmthdcd == 4){
  898. iLimitCnts = DayPrcpQty;
  899. } else if(sCalcmthdcd == 5){
  900. iLimitCnts = DayPrcpQty*PrcpDayno;
  901. } else {
  902. iLimitCnts = DayPrcpQty*PrcpDayno;
  903. }
  904. if(iRtnCnts > iLimitCnts){
  905. messageBox("반납 가능한 양을","E003");
  906. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtncnts", "");
  907. return;
  908. }
  909. RtnStocQty = fCalStocQty("Q", DeliveCrite, iRtnCnts, "", "", rowid);
  910. //투약내역에 들어간 반납결과 수치 계산
  911. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtndrugtims", model.getValue("/root/main/narclist/narclist["+rowid+"]/prcptims"));
  912. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtndrugdayno", model.getValue("/root/main/narclist/narclist["+rowid+"]/prcpdayno"));
  913. } else if(PrcpGenrflag == "O" ||
  914. ((PrcpGenrflag == "I" || PrcpGenrflag == "E" || PrcpGenrflag == "D") && (PrcpKindcd == "50" || PrcpKindcd == "60" || PrcpKindcd == "70")) ){
  915. //외래 약주사 또는 입원에서 전환된 퇴원/외출/외박약 (일수반납)
  916. iLimitCnts = PrcpDayno;
  917. if(iRtnCnts > iLimitCnts){
  918. messageBox("반납 가능한 양을","E003");
  919. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtncnts", "");
  920. return;
  921. }
  922. /*if(PrcpClscd == "A6"){
  923. //주사제 처리 반납량 따로 계산
  924. RtnStocQty = fCalStocQty("I", DeliveCrite, iRtnCnts, PrcpQty, PrcpTims);
  925. } else {
  926. RtnStocQty = fCalStocQty("D", DeliveCrite, iRtnCnts, PrcpQty, PrcpTims);
  927. }*/
  928. RtnStocQty = fCalStocQty("D", DeliveCrite, iRtnCnts, PrcpQty, PrcpTims, rowid);
  929. //투약내역에 들어간 반납결과 수치 계산
  930. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtndrugtims", model.getValue("/root/main/narclist/narclist["+rowid+"]/prcptims"));
  931. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtndrugdayno", iRtnCnts);
  932. } else if(PrcpGenrflag == "I" || PrcpGenrflag == "E" || PrcpGenrflag == "D"){
  933. //입원에서 전환된 그외 처방 (횟수반납)
  934. iLimitCnts = PrcpTims*PrcpDayno;
  935. if(iRtnCnts > iLimitCnts){
  936. messageBox("반납 가능한 양을","E003");
  937. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtncnts", "");
  938. return;
  939. }
  940. RtnStocQty = fCalStocQty("T", DeliveCrite, iRtnCnts, PrcpQty, "", "", rowid);
  941. //투약내역에 들어간 반납결과 수치 계산
  942. var temp = iRtnCnts%PrcpDayno;
  943. var RtnDrugDayno = 0;
  944. var RtnDrugTims = 0;
  945. RtnDrugTims = iRtnCnts;
  946. RtnDrugDayno = 1;
  947. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtndrugtims", RtnDrugTims);
  948. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtndrugdayno", RtnDrugDayno);
  949. }
  950. } else if(IOFlag == "I"){
  951. //반납재고량 계산을 위한 변수 선언
  952. var DeliveCrite = model.getValue("/root/main/narclist/narclist["+rowid+"]/delivecrite");
  953. var iRtnCnts = parseInt(RtnCnts, 10);
  954. var iLimitCnts = 0;
  955. var PrcpQty = parseFloat(model.getValue("/root/main/narclist/narclist["+rowid+"]/prcpqty"));
  956. var DayPrcpQty = parseFloat(model.getValue("/root/main/narclist/narclist["+rowid+"]/dayprcpqty"));
  957. var PrcpTims = parseInt(model.getValue("/root/main/narclist/narclist["+rowid+"]/prcptims"), 10);
  958. var PrcpDayno = parseInt(model.getValue("/root/main/narclist/narclist["+rowid+"]/prcpdayno"), 10);
  959. var RtnStocQty = 0;
  960. if(PrcpClscd == "A4"){
  961. //외래 외용제 (수량반납)
  962. if(sCalcmthdcd == 4){
  963. iLimitCnts = DayPrcpQty;
  964. } else if(sCalcmthdcd == 5){
  965. iLimitCnts = DayPrcpQty*PrcpDayno;
  966. } else {
  967. iLimitCnts = DayPrcpQty*PrcpDayno;
  968. }
  969. if(iRtnCnts > iLimitCnts){
  970. messageBox("반납 가능한 양을","E003");
  971. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtncnts", "");
  972. return;
  973. }
  974. RtnStocQty = fCalStocQty("Q", DeliveCrite, iRtnCnts, "", "", rowid);
  975. //투약내역에 들어간 반납결과 수치 계산
  976. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtndrugtims", model.getValue("/root/main/narclist/narclist["+rowid+"]/prcptims"));
  977. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtndrugdayno", model.getValue("/root/main/narclist/narclist["+rowid+"]/prcpdayno"));
  978. } else if(PrcpGenrflag == "O" ||
  979. ((PrcpGenrflag == "I" || PrcpGenrflag == "E" || PrcpGenrflag == "D") && (PrcpKindcd == "50" || PrcpKindcd == "60" || PrcpKindcd == "70")) ){
  980. //외래 약주사 또는 입원에서 전환된 퇴원/외출/외박약 (일수반납)
  981. iLimitCnts = PrcpDayno;
  982. if(iRtnCnts > iLimitCnts){
  983. messageBox("반납 가능한 양을","E003");
  984. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtncnts", "");
  985. return;
  986. }
  987. RtnStocQty = fCalStocQty("D", DeliveCrite, iRtnCnts, PrcpQty, PrcpTims, rowid);
  988. //투약내역에 들어간 반납결과 수치 계산
  989. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtndrugtims", model.getValue("/root/main/narclist/narclist["+rowid+"]/prcptims"));
  990. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtndrugdayno", iRtnCnts);
  991. } else if(PrcpGenrflag == "I" || PrcpGenrflag == "E" || PrcpGenrflag == "D"){
  992. //입원에서 전환된 그외 처방 (횟수반납)
  993. iLimitCnts = PrcpTims*PrcpDayno;
  994. if(iRtnCnts > iLimitCnts){
  995. messageBox("반납 가능한 양을","E003");
  996. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtncnts", "");
  997. return;
  998. }
  999. RtnStocQty = fCalStocQty("T", DeliveCrite, iRtnCnts, PrcpQty, "", rowid);
  1000. //투약내역에 들어간 반납결과 수치 계산
  1001. var temp = iRtnCnts%PrcpDayno;
  1002. var RtnDrugDayno = 0;
  1003. var RtnDrugTims = 0;
  1004. RtnDrugTims = iRtnCnts;
  1005. RtnDrugDayno = 1;
  1006. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtndrugtims", RtnDrugTims);
  1007. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtndrugdayno", RtnDrugDayno);
  1008. }
  1009. }
  1010. model.setValue("/root/main/narclist/narclist["+rowid+"]/rtnstocqty", fChkFloat(RtnStocQty));
  1011. model.setValue("/root/main/narclist/narclist["+rowid+"]/sel", "Y");
  1012. //rowid++;
  1013. //grd_outnarc.isSelected(rowid) = true;
  1014. model.refresh();
  1015. }
  1016. }
  1017. /**
  1018. *
  1019. */
  1020. function fChkFloat(qty) {
  1021. var fQty = parseFloat(qty);
  1022. var fRst = "";
  1023. if(fQty%1 == 0){
  1024. fRst = parseInt(qty);
  1025. } else {
  1026. fRst = qty;
  1027. }
  1028. return fRst;
  1029. }
  1030. /**
  1031. * 병동/외래구분 체크시
  1032. */
  1033. function fChkIOFlag() {
  1034. var chk = model.getValue("/root/temp/srchinfo/srchioflag");
  1035. if(chk.length == 7){
  1036. model.setValue("/root/temp/srchinfo/iototalflag", "T");
  1037. } else {
  1038. model.setValue("/root/temp/srchinfo/iototalflag", "");
  1039. }
  1040. model.refresh();
  1041. }
  1042. /**
  1043. * userid 변경시
  1044. */
  1045. function fChgUserID() {
  1046. var sUserid = model.getValue("/root/temp/srchinfo/srchid");
  1047. // 20100728_경북대_laboru_userid 길이체크 삭제
  1048. //if(sUserid.length == 8 || sUserid.length == 9 || sUserid.length == 10){
  1049. model.setValue("/root/send/userinfo/userid", sUserid);
  1050. submit("TRADT30104");
  1051. if(model.getValue("/root/temp/userinfo/userinfo/userid") == ""){
  1052. messageBox("사용자ID 정보가 없습니다.\n다시","C001");
  1053. model.setValue("/root/temp/srchinfo/srchid","");
  1054. model.setFocus("ipt_srchid");
  1055. } else {
  1056. model.setValue("/root/temp/srchinfo/srchid","");
  1057. model.setFocus("ipt_srchid");
  1058. model.refresh();
  1059. model.setFocus("input9");
  1060. }
  1061. /*} else {
  1062. messageBox("사용자ID 정보가 다릅니다.\n다시","C001");
  1063. model.setValue("/root/temp/srchinfo/srchid","");
  1064. model.setFocus("ipt_srchid");
  1065. }*/
  1066. model.refresh();
  1067. }
  1068. /**
  1069. * 토글클릭시
  1070. */
  1071. function fClickToggle(chk) {
  1072. if(chk == "1"){
  1073. model.setValue("/root/temp/srchinfo/srchroot", "M");
  1074. } else if(chk == "2"){
  1075. model.setValue("/root/temp/srchinfo/srchroot", "R");
  1076. }
  1077. fChgSwitch();
  1078. fGetNarcData();
  1079. }
  1080. /**
  1081. * 입원외래구분 클릭시
  1082. */
  1083. function fChgIOFlag() {
  1084. var ioflag = model.getValue("/root/temp/srchinfo/srchioflag");
  1085. // ========================== 병동, 퇴원/외박/외출 radio 컨트롤 visible ==========================
  1086. if(ioflag == "O"){
  1087. model.setValue("/root/temp/srchinfo/drugflag", "");
  1088. rdo_drugflag.visible = false;
  1089. grd_outnarc.colhidden(grd_outnarc.colRef("prcpkindnm")) = true; //20090811 처방구분숨기기
  1090. if(model.getValue("/root/temp/srchinfo/narcflag") == "H") {
  1091. combo2.select(3);//외래향정일때 실시일자
  1092. } else {
  1093. combo2.select(1);//그외 적용일자
  1094. }
  1095. } else if(ioflag == "I"){
  1096. model.setValue("/root/temp/srchinfo/drugflag", "I");
  1097. rdo_drugflag.visible = true;
  1098. grd_outnarc.colhidden(grd_outnarc.colRef("prcpkindnm")) = false; //20090811 처방구분보이기
  1099. combo2.select(1);//그외 적용일자
  1100. }
  1101. // =========================================================================================
  1102. // ========================== 병동 Combo 조회===========================
  1103. model.makeValue("/root/send/srchcond/deptflag", "W");
  1104. submit("TRADT30401");
  1105. model.copyNode("/root/temp/drugdeptinfo","/root/temp/srchcond"); //수행부서 셋팅
  1106. //astfAddCombo("/root/temp/drugdeptinfo", "dept", "deptcd,deptnm", "2010302030,소화기센터내시경실"); //수행부서 셋팅
  1107. astfAddCombo("/root/temp/drugdeptinfo", "dept", "deptcd,deptnm", "3073100000,수술실 마취"); //수행부서 셋팅
  1108. astfAddCombo("/root/temp/drugdeptinfo", "dept", "deptcd,deptnm", "3073300000,수술실 회복실"); //수행부서 셋팅
  1109. astfAddCombo("/root/temp/drugdeptinfo", "dept", "deptcd,deptnm", ",");
  1110. astfAddCombo("/root/temp/srchcond", "dept", "deptcd,deptnm", "3073100000,수술실 마취"); //불출신청부서 셋팅
  1111. astfAddCombo("/root/temp/srchcond", "dept", "deptcd,deptnm", "3073300000,수술실 회복실"); //불출신청부서 셋팅
  1112. // astfAddCombo("/root/temp/drugdeptinfo", "dept", "deptcd,deptnm", "2010702000,인공신장실"); //불출신청부서 셋팅
  1113. submit("TRADT30405");
  1114. copyNodeListType("/root/temp/drugdeptinfo","/root/temp/dutdeptinfo/dept ", "after");
  1115. copyNodeListType("/root/temp/srchcond","/root/temp/dutdeptinfo/dept ", "after");
  1116. astfAddCombo("/root/temp/srchcond", "dept", "deptcd,deptnm", ",");
  1117. model.refresh();
  1118. fChgSwitch();
  1119. fGetNarcData();
  1120. submit("TRADT30101");
  1121. }
  1122. /**
  1123. * switch case변경
  1124. */
  1125. function fChgSwitch() {
  1126. var srchroot = model.getValue("/root/temp/srchinfo/srchroot");
  1127. var ioflag = model.getValue("/root/temp/srchinfo/srchioflag");
  1128. var drugflag = model.getValue("/root/temp/srchinfo/drugflag");
  1129. if(srchroot == "M"){
  1130. if(ioflag == "O"){
  1131. model.toggle("case3");
  1132. } else {
  1133. if(drugflag == "L"){
  1134. model.toggle("case3");
  1135. } else {
  1136. model.toggle("case1");
  1137. }
  1138. }
  1139. } else if(srchroot == "R"){
  1140. model.toggle("case2");
  1141. }
  1142. model.refresh();
  1143. }
  1144. /**
  1145. * 환자별 조회인지 체크
  1146. */
  1147. function fChkPatSearch(param_grid) {
  1148. var pid = model.getValue("/root/temp/srchinfo/pid");
  1149. if(pid != "" && param_grid.rows != 0){
  1150. for(var i = param_grid.fixedRows; i < param_grid.rows; i++){
  1151. if(model.getValue("/root/main/narclist/narclist["+i+"]/narcstat") != "1"){
  1152. model.setValue("/root/main/narclist/narclist["+i+"]/sel", "Y");
  1153. }
  1154. }
  1155. model.refresh();
  1156. }
  1157. }
  1158. /**
  1159. * 액팅후 체크표시 cach
  1160. */
  1161. function fChkCash(chk) {
  1162. var pid = model.getValue("/root/temp/srchinfo/pid");
  1163. var param_grid = "";
  1164. if(switch1.selectedIndex == 0){
  1165. param_grid = grd_narclist;
  1166. } else {
  1167. param_grid = grd_outnarc;
  1168. }
  1169. //if(pid != "" && param_grid.rows != 0){
  1170. if(param_grid.rows != 0){ // 2009.07.30 pymi
  1171. if(chk == "before"){
  1172. model.removeNodeset("/root/temp/chkcashinfo/narclist");
  1173. for(var i = param_grid.fixedRows; i < param_grid.rows; i++){
  1174. if(model.getValue("/root/main/narclist/narclist["+i+"]/sel") == "Y"){
  1175. astfCopyNodeSet("/root/temp/chkcashinfo/narclist", "/root/main/narclist/narclist["+i+"]");
  1176. }
  1177. }
  1178. } else if (chk == "after"){
  1179. for(var a = 1; a <= getNodesetCount("/root/temp/chkcashinfo/narclist"); a++){
  1180. var cash_prcpdd = model.getValue("/root/temp/chkcashinfo/narclist["+a+"]/prcpdd");
  1181. var cash_prcpno = model.getValue("/root/temp/chkcashinfo/narclist["+a+"]/prcpno");
  1182. for(var b = param_grid.fixedRows; b < param_grid.rows; b++){
  1183. var search_prcpdd = model.getValue("/root/main/narclist/narclist["+b+"]/prcpdd");
  1184. var search_prcpno = model.getValue("/root/main/narclist/narclist["+b+"]/prcpno");
  1185. if(cash_prcpdd == search_prcpdd && cash_prcpno == search_prcpno){
  1186. model.setValue("/root/main/narclist/narclist["+b+"]/sel", "Y");
  1187. }
  1188. }
  1189. }
  1190. } else {
  1191. }
  1192. model.refresh();
  1193. }
  1194. }
  1195. /**
  1196. * 불출계산에 따른 반납재고량 계산
  1197. * 계산 방식
  1198. * 원처방 불출량(totdrugqty) - 살아있는처방 불출량 계산 = 반환된 불출량
  1199. */
  1200. function fCalStocQty(RtnType, DeliveCrite, RtnCnts, Qty, Tims, rowid) {
  1201. var dResult = 0;
  1202. var PackVol = parseFloat(model.getValue("/root/main/narclist/narclist["+rowid+"]/packvol"));
  1203. var NearIntNum = 0;
  1204. var RoundNum = 0;
  1205. //alert("Start : " + DeliveCrite + ", " + pQty + ", " + pRtnTims);
  1206. //수가계산방식에 따른 변화량
  1207. var sCalcmthdcd = model.getValue("/root/main/narclist/narclist["+rowid+"]/calcmthdcd");
  1208. if ( Tims == null ) { Tims =1; }
  1209. if(RtnType == "Q"){
  1210. //수량반납
  1211. //외용약만 수량반납하므로 무조건 올림처리
  1212. dResult = Math.ceil(RtnCnts);
  1213. } else if(RtnType == "T"){
  1214. //횟수반납
  1215. // 횟수반납시에는 RtnCnts가 횟수이므로 Tims는 제외
  1216. //살아있는 처방 불출량 계산을 위한 횟수 변환
  1217. var iPrcptims = model.getValue("/root/main/narclist/narclist["+rowid+"]/prcptims");
  1218. var itotdrugqty = model.getValue("/root/main/narclist/narclist["+rowid+"]/totdrugqty");
  1219. if(iPrcptims == RtnCnts){
  1220. //살아있는 처방이 없으므로 불출량은 원처방 불출량(totdrugqty)임
  1221. return itotdrugqty;
  1222. } else {
  1223. //살아있는 처방이 있으면 살아있는 처방의 횟수를 계산
  1224. RtnCnts = iPrcptims - RtnCnts;
  1225. }
  1226. // 1 : 단가*수량*횟수*일수
  1227. // 4 : 단가*수량
  1228. // 5 : 단가*수량*일수
  1229. if(sCalcmthdcd == "1"){
  1230. //초기화 없이 다 계산처리함
  1231. } else if(sCalcmthdcd == "4" || sCalcmthdcd == "5"){
  1232. //횟수, 일수 1로 초기화
  1233. RtnCnts = "1";
  1234. }
  1235. if (DeliveCrite == "1") {
  1236. // 처방대로
  1237. dResult = Math.round(Qty*RtnCnts*1000)/1000;
  1238. } else if (DeliveCrite == "2") {
  1239. // 1/4 1회 올림 --> 1/2 1회 올림 수정
  1240. /*NearIntNum = Math.floor(Qty);
  1241. RoundNum = Qty - NearIntNum;
  1242. if(RoundNum >= 0.5){
  1243. dResult = Math.round((NearIntNum+0.5)*RtnCnts*1000)/1000;
  1244. } else {
  1245. dResult = Math.round((NearIntNum+1)*RtnCnts*1000)/1000;
  1246. }*/
  1247. dResult = Math.round(Math.ceil(Qty)*Tims*RtnCnts*1000)/1000;
  1248. } else if (DeliveCrite == "3") {
  1249. // 1/2 1회 올림
  1250. dResult = Math.round(Math.ceil(Qty)*RtnCnts*1000)/1000;
  1251. } else if (DeliveCrite == "4") {
  1252. // 1/4 1일 올림
  1253. NearIntNum = Math.floor(Qty*Tims);
  1254. RoundNum = (Qty*Tims) - NearIntNum;
  1255. if(RoundNum >= 0.5){
  1256. dResult = Math.round((NearIntNum+0.5)*(RtnCnts/Tims)*1000)/1000;
  1257. } else {
  1258. dResult = Math.round((NearIntNum+1)*(RtnCnts/Tims)*1000)/1000;
  1259. }
  1260. } else if (DeliveCrite == "5") {
  1261. // 1/2 1일 올림
  1262. //alert(Tims);
  1263. dResult = Math.round(Math.ceil(Qty*Tims)*(RtnCnts/Tims)*1000)/1000;
  1264. } else if (DeliveCrite == "6") {
  1265. // 계산후 올림
  1266. dResult = Math.ceil(Qty*RtnCnts);
  1267. }
  1268. // 원처방 불출량(totdrugqty) - 살아있는처방 불출량 계산 = 반환된 불출량
  1269. dResult = itotdrugqty - dResult;
  1270. } else if(RtnType == "D"){
  1271. //일수반납
  1272. //살아있는 처방 불출량 계산을 위한 횟수 변환
  1273. var iPrcpDayno = model.getValue("/root/main/narclist/narclist["+rowid+"]/prcpdayno");
  1274. var itotdrugqty = model.getValue("/root/main/narclist/narclist["+rowid+"]/totdrugqty");
  1275. if(iPrcpDayno == RtnCnts){
  1276. //살아있는 처방이 없으므로 불출량은 원처방 불출량(totdrugqty)임
  1277. return itotdrugqty;
  1278. } else {
  1279. //살아있는 처방이 있으면 살아있는 처방의 횟수를 계산
  1280. RtnCnts = iPrcpDayno - RtnCnts;
  1281. }
  1282. // 1 : 단가*수량*횟수*일수
  1283. // 4 : 단가*수량
  1284. // 5 : 단가*수량*일수
  1285. if(sCalcmthdcd == "1"){
  1286. //초기화 없이 다 계산처리함
  1287. } else if(sCalcmthdcd == "4"){
  1288. //횟수, 일수 1로 초기화
  1289. Tims = "1";
  1290. RtnCnts = "1";
  1291. } else if(sCalcmthdcd == "5"){
  1292. //횟수 1로 초기화
  1293. Tims = "1";
  1294. }
  1295. if (DeliveCrite == "1") {
  1296. // 처방대로
  1297. dResult = Math.round(Qty*Tims*RtnCnts*1000)/1000;
  1298. } else if (DeliveCrite == "2") {
  1299. // 1/4 1회 올림 --> 1/2 1회 올림 수정
  1300. /*NearIntNum = Math.floor(Qty);
  1301. RoundNum = Qty - NearIntNum;
  1302. if(RoundNum >= 0.5){
  1303. dResult = Math.round((NearIntNum+0.5)*Tims*RtnCnts*1000)/1000;
  1304. } else {
  1305. dResult = Math.round((NearIntNum+1)*Tims*RtnCnts*1000)/1000;
  1306. }*/
  1307. dResult = Math.round(Math.ceil(Qty)*Tims*RtnCnts*1000)/1000;
  1308. } else if (DeliveCrite == "3") {
  1309. // 1/2 1회 올림
  1310. dResult = Math.round(Math.ceil(Qty)*Tims*RtnCnts*1000)/1000;
  1311. } else if (DeliveCrite == "4") {
  1312. // 1/4 1일 올림
  1313. NearIntNum = Math.floor(Qty*Tims);
  1314. RoundNum = (Qty*Tims) - NearIntNum;
  1315. if(RoundNum >= 0.5){
  1316. dResult = Math.round((NearIntNum+0.5)*RtnCnts*1000)/1000;
  1317. } else {
  1318. dResult = Math.round((NearIntNum+1)*RtnCnts*1000)/1000;
  1319. }
  1320. } else if (DeliveCrite == "5") {
  1321. // 1/2 1일 올림
  1322. dResult = Math.round(Math.ceil(Qty*Tims)*RtnCnts*1000)/1000;
  1323. } else if (DeliveCrite == "6") {
  1324. // 계산후 올림
  1325. dResult = Math.ceil(Qty*Tims*RtnCnts);
  1326. }
  1327. // 원처방 불출량(totdrugqty) - 살아있는처방 불출량 계산 = 반환된 불출량
  1328. dResult = itotdrugqty - dResult;
  1329. }
  1330. //model.alert("End : " + dResult);
  1331. return dResult;
  1332. }
  1333. /**
  1334. * 마약라벨 출력
  1335. */
  1336. function fNarcLBLPrintR(chk) {
  1337. var reprint="";
  1338. //20091015 이선경 수정 : 자동출력 기본이 병동(퇴원제외)만이나 lbltype3이 "Y"이면 외래, 퇴원도 모두 출력됨
  1339. var lbltype3 = model.getValue("/root/init/lbltype/item/lbltype3");
  1340. var prcpclscdflag = "N";
  1341. for(var i = 1; i <= getNodesetCount("/root/main/narclist/narclist") ; i++){
  1342. var sel = model.getValue("/root/main/narclist/narclist["+i+"]/sel");
  1343. var sNarcStat = model.getValue("/root/main/narclist/narclist["+i+"]/narcstat");
  1344. var ioflag = model.getValue("/root/main/narclist/narclist["+i+"]/ioflag");
  1345. var drugflag = model.getValue("/root/main/narclist/narclist["+i+"]/drugflag");
  1346. var sPrcphistcd = model.getValue("/root/main/narclist/narclist["+ i +"]/prcphistcd"); // 2010.03.15 pymi
  1347. //20091015 이선경 수정 : 조제확인시 라벨자동출력은 fNarcLBLPrint 함수에서 처방조회시 가져온 ioflag로 체크해서 출력 여부 결정
  1348. //(수정원인 : 외래,병동 전체 조회 후 조제확인시 라벨자동출력이 안되는 현상이 있음)
  1349. //if(sel == 'Y' && ((chk == "Prnt" && sNarcStat == "3" && sPrcphistcd != "D" && (lbltype3 == "Y" || (ioflag == "I" && drugflag != "L" && drugflag != "G"))) || (chk == "Reprnt" && parseInt(sNarcStat,10) > 3))){ // 2010.03.15 pymi 반환완료된 처방 제외
  1350. if(sel == 'Y' && ((chk == "Prnt" && sNarcStat == "2" && sPrcphistcd != "D" && (lbltype3 == "Y" || (ioflag == "I" && drugflag != "L" && drugflag != "G"))) || (chk == "Reprnt" && parseInt(sNarcStat,10) > 3))){ // 2010.03.15 pymi 반환완료된 처방 제외
  1351. PrnKind = model.getvalue("/root/init/barcdprntsetup/prntsetupinfo/setupinfo/prntkind");
  1352. PrnMarginLeft = model.getvalue("/root/init/barcdprntsetup/prntsetupinfo/setupinfo/blank/left");
  1353. PrnMarginTop = model.getvalue("/root/init/barcdprntsetup/prntsetupinfo/setupinfo/blank/top");
  1354. var commkind = model.getvalue("/root/init/barcdprntsetup/prntsetupinfo/setupinfo/commkind")
  1355. if(model.getValue("/root/main/narclist/narclist["+i+"]/prcpclscd") == "A6") {
  1356. prcpclscdflag = "Y"; // 20120724_주사라벨이 아닐때만
  1357. }
  1358. if ( model.getValue("/root/main/narclist/narclist["+i+"]/lblprnttims")>0 ){
  1359. reprint ="(재)";
  1360. }
  1361. // 바코드(21자리) : 마약구분(1)+입원/외래구분(1)+반납구분(1)+처방일자(8)+처방번호(10)
  1362. var narcflag = model.getValue("/root/main/narclist/narclist["+i+"]/narcflag");
  1363. var ioflag = model.getValue("/root/main/narclist/narclist["+i+"]/ioflag");
  1364. var returnflag = model.getValue("/root/main/narclist/narclist["+i+"]/returnflag");
  1365. if(returnflag ==""){
  1366. returnflag = "O";
  1367. } else {
  1368. returnflag = "D";
  1369. }
  1370. var prcpdd = model.getValue("/root/main/narclist/narclist["+i+"]/prcpdd");
  1371. var prcpno = model.getValue("/root/main/narclist/narclist["+i+"]/prcpno");
  1372. var drugseqno ="";
  1373. if ( ioflag =="O" ){
  1374. drugseqno = model.getValue("/root/main/narclist/narclist["+i+"]/drugseqno");
  1375. }
  1376. var iLen = prcpno.length;
  1377. for(var j=iLen; j<10; j++) {
  1378. prcpno = "0" + prcpno;
  1379. }
  1380. var sResult = narcflag+ioflag+returnflag+prcpdd+prcpno+drugseqno;
  1381. model.makeValue("/root/main/narclist/narclist["+i+"]/barcode", sResult);
  1382. //라벨이름
  1383. var nm = "";
  1384. if(model.getValue("/root/main/narclist/narclist["+i+"]/narcflag") == "M") {
  1385. nm = "마 약";
  1386. }else {
  1387. nm = "향 정";
  1388. }
  1389. model.setValue("/root/main/narclist/narclist["+i+"]/drugkindnm", nm);
  1390. model.setValue("/root/main/narclist/narclist["+i+"]/prcpdd", fGetDateString(model.getValue("/root/main/narclist/narclist["+i+"]/prcpdd")) );
  1391. // issdeptcdnm 글자 수 5자이상 자르기 안되게 수정 2011.9.23. jmkim
  1392. var issdept = model.getValue("/root/main/narclist/narclist["+i+"]/issdeptcdnm");
  1393. // var issdept = model.getValue("/root/main/narclist/narclist["+i+"]/issdeptcdnm").substring(0, 5); - original ver. 2011.9.23 jmkim
  1394. model.setValue("/root/main/narclist/narclist["+i+"]/issdeptcdnm", issdept + "("+model.getValue("/root/main/narclist/narclist["+i+"]/roomcd") + ")" );
  1395. // issdeptcdnm(발행부서) 문자열 길이가 15자 이상일 때 체크 2011.9.23 jmkim ex. 508병동(무균)(1111)
  1396. var issdeptcdnmvalue = model.getvalue("/root/main/narclist/narclist["+i+"]/issdeptcdnm");
  1397. if(issdeptcdnmvalue.length >= 15)
  1398. model.makeValue("/root/main/narclist/narclist["+i+"]/issdeptcdnmlengthflag", "Y");
  1399. var sPid_Drugno = model.getValue("/root/main/narclist/narclist["+i+"]/patnm")
  1400. + " (" + model.getValue("/root/main/narclist/narclist["+i+"]/drugno")+reprint + ")";
  1401. model.setValue("/root/main/narclist/narclist["+i+"]/patnm", sPid_Drugno);
  1402. // var colHidnValue = grdBaseColHidn("D");
  1403. // if( colHidnValue == "C") { // 1회기준
  1404. // 일용량 + 일수량
  1405. // var unit = model.getValue("/root/main/narclist/narclist["+i+"]/prcpvol2")+model.getValue("/root/main/narclist/narclist["+i+"]/prcpvolunit") + " "
  1406. // + model.getValue("/root/main/narclist/narclist["+i+"]/prcpqty2")+model.getValue("/root/main/narclist/narclist["+i+"]/prcpqtyunit");
  1407. // } else {
  1408. // var unit = model.getValue("/root/main/narclist/narclist["+i+"]/prcpvol")+model.getValue("/root/main/narclist/narclist["+i+"]/prcpvolunit") + " "
  1409. // + model.getValue("/root/main/narclist/narclist["+i+"]/totdrugqty")+model.getValue("/root/main/narclist/narclist["+i+"]/prcpqtyunit");
  1410. // }
  1411. // var unit = model.getValue("/root/main/narclist/narclist["+i+"]/prcpvol")+model.getValue("/root/main/narclist/narclist["+i+"]/prcpvolunit") + " "
  1412. // + model.getValue("/root/main/narclist/narclist["+i+"]/totdrugqty")+model.getValue("/root/main/narclist/narclist["+i+"]/prcpqtyunit");
  1413. // 2015년 1월 15일 김치국
  1414. var unit = model.getValue("/root/main/narclist/narclist["+i+"]/totdrugqty")+model.getValue("/root/main/narclist/narclist["+i+"]/prcpqtyunit");
  1415. model.makeValue("/root/main/narclist/narclist["+i+"]/unit", unit);
  1416. model.setValue("/root/main/narclist/narclist["+i+"]/drugnm", "("+model.getValue("/root/main/narclist/narclist["+i+"]/drugnm")+")" );
  1417. // 20120719_일일수량과 영문상품명 추가
  1418. model.makeValue("/root/main/narclist/narclist["+i+"]/qtyname",model.getValue("/root/main/narclist/narclist["+i+"]/totdrugqty") + " " + model.getValue("/root/main/narclist/narclist["+i+"]/lblnm"));
  1419. var day = model.getValue("/root/main/narclist/narclist["+i+"]/prcpdayno");
  1420. var prcptims = model.getValue("/root/main/narclist/narclist["+i+"]/prcptims");
  1421. var prcpqty2 = model.getValue("/root/main/narclist/narclist["+i+"]/prcpqty2");
  1422. var prcpqtyunit = model.getValue("/root/main/narclist/narclist["+i+"]/prcpqtyunit");
  1423. model.makeValue("/root/main/narclist/narclist["+i+"]/narcunit", "1일 " + prcptims + "회 " + prcpqty2 + prcpqtyunit + "씩 " + day + "일분");
  1424. var rgstdt = "처방입력일시 : "+ fGetDateString(model.getValue("/root/main/narclist/narclist["+i+"]/rgstdt")) ;
  1425. model.setValue("/root/main/narclist/narclist["+i+"]/rgstdt" , rgstdt);
  1426. } else {
  1427. model.removeNode("/root/main/narclist/narclist["+i+"]");
  1428. i--;
  1429. }
  1430. }
  1431. var instcd = getUserInfo("dutplceinstcd");
  1432. if(chk_auto.value != "Y") {
  1433. //makeReportPreview(0,0,10, 10, "");
  1434. //fPrintRexbar("RFADT30111", "false");
  1435. /* var printnm = "";
  1436. var infoXPath = "";
  1437. if(infoXPath == "" || infoXPath == "undefined" || infoXPath == null) infoXPath = "/root/main/barcdprntsetup/prntsetupinfo";
  1438. if(model.getValue(infoXPath + "/setupinfo/rexgbn") != "1") return false;
  1439. printnm = model.getValue(infoXPath + "/setupinfo/pcl/pcllist[barnm='"+"RFADT30111"+"']/prtnm");*/
  1440. //fPrintRexbar("RFADT30111","true");
  1441. var posx = '';
  1442. var posy = '';
  1443. posx = model.getValue("/root/main/barcdprntsetup/prntsetupinfo/setupinfo/pcl/pcllist[barnm='"+"RFADT30111"+"']/xpos");
  1444. posy = model.getValue("/root/main/barcdprntsetup/prntsetupinfo/setupinfo/pcl/pcllist[barnm='"+"RFADT30111"+"']/ypos");
  1445. if(posx == '') posx = "0";
  1446. if(posy == '') posy = "0";
  1447. var printnm = model.getValue("/root/main/barcdprntsetup/prntsetupinfo/setupinfo/pcl/pcllist[barnm='"+"RFADT30111"+"']/prtnm");
  1448. // alert("row 1651, SMADT30100.js");
  1449. if(instcd == "031") { // 20120724_임시로 본원, 칠곡 구분
  1450. // 2015년 4월9일 김치국 마약처방을 ATC출력물로 통일
  1451. // exeReportPreview("RFADT30111", "XMLSTR", "", "", printnm,"","","","","true","","","","","","","",'offsetx=' + posx + ';offsety=' + posy + ';',"","","");
  1452. // alert("row 1655, SMADT30100.js, RFADT30113");
  1453. exeReportPreview("RFADT30113", "XMLSTR", "", "", printnm,"","","","","true","","","","","","","",'offsetx=' + posx + ';offsety=' + posy + ';',"","","");
  1454. // exeReportPreview("RFADT62303", "XMLSTR", "", "", printnm,"","","","","true","","","","","","","",'offsetx=' + posx + ';offsety=' + posy + ';',"","","");
  1455. } else {
  1456. // alert("row 1655, SMADT30100.js, RFADT30111");
  1457. if(prcpclscdflag == "Y" ) {
  1458. exeReportPreview("RFADT30111", "XMLSTR", "", "", printnm,"","","","","true","","","","","","","",'offsetx=' + posx + ';offsety=' + posy + ';',"","","");
  1459. } else {
  1460. exeReportPreview("RFADT30112", "XMLSTR", "", "", printnm,"","","","","true","","","","","","","",'offsetx=' + posx + ';offsety=' + posy + ';',"","","");
  1461. }
  1462. }
  1463. } else if(chk_auto.value == "Y") {
  1464. if(instcd == "031") { // 20120724_임시로 본원, 칠곡 구분
  1465. // 2015년 4월9일 김치국 마약처방을 ATC출력물로 통일
  1466. // exeReportPreview("RFADT30111", "XMLSTR", "", "", printnm,"","","","","true","","","","","","","",'offsetx=' + posx + ';offsety=' + posy + ';',"","","");
  1467. exeReportPreview("RFADT30113", "XMLSTR", "", "", printnm,"","","","","true","","","","","","","",'offsetx=' + posx + ';offsety=' + posy + ';',"","","");
  1468. } else {
  1469. if(prcpclscdflag == "Y" ) {
  1470. exeReportPreview("RFADT30111", "XMLSTR", "", "", printnm,"","","","","true","","","","","","","",'offsetx=' + posx + ';offsety=' + posy + ';',"","","");
  1471. } else {
  1472. exeReportPreview("RFADT30112", "XMLSTR", "", "", printnm,"","","","","true","","","","","","","",'offsetx=' + posx + ';offsety=' + posy + ';',"","","");
  1473. }
  1474. }
  1475. //exeReportPreview("RFADT30111", "XMLSTR", "", "", "true","","","","","true");
  1476. }
  1477. submit("TRADT30102");
  1478. model.refresh();
  1479. }
  1480. function fAutoOutNarc() {
  1481. // 실불출신청 대상 조회
  1482. fGetNarcData();
  1483. autocnt = autocnt + 1;
  1484. cap_automess.value = '자동 출력 '+autocnt+'번 실행중!.';
  1485. //if ( autocnt == 1 ){
  1486. // cap_automess.value = '자동 출력 *';
  1487. // autocnt = 2;
  1488. //}else if ( autocnt == 2 ) {
  1489. // cap_automess.value = '자동 출력 +';
  1490. // autocnt = 1;
  1491. //}
  1492. //alert('call fAutoOutNarc : '+ getNodesetCount("/root/temp/narclist/narclist") + ", flag : " + nextFlag );
  1493. if(getNodesetCount("/root/temp/narclist/narclist") > 0 && nextFlag == "GO") {
  1494. nextflag ="STOP";
  1495. model.removeNodeset("/root/main/narclist/narclist");
  1496. model.makeNode("/root/main/narclist/narclist");
  1497. var i = grd_narclist.fixedRows;
  1498. model.copyNode("/root/main/narclist/narclist", "/root/temp/narclist/narclist[1]");
  1499. model.setValue("/root/main/narclist/narclist/sel", "Y");
  1500. //grd_narclist.refresh();
  1501. fNarcActing_auto("Prcpdrug");
  1502. }
  1503. }
  1504. function fNarcActing_auto(sActing) {
  1505. if(model.getValue("/root/temp/userinfo/userinfo/userid") == ""){
  1506. messageBox("사용자ID가 없습니다. 사용자ID를 먼저","C001");
  1507. model.setValue("/root/temp/srchinfo/srchid","");
  1508. model.setFocus("ipt_srchid");
  1509. model.refresh();
  1510. return;
  1511. }
  1512. var iActing_Cnt = 0; // 행위 구분을 위한 카운트값
  1513. var sActing_nm = ""; // 해당 행위의 명칭
  1514. var sActingAfter = "";
  1515. var selCnt = 0;
  1516. var RtnCnfmYN = "N";
  1517. var chkAll = model.getValue("/root/send/chkall"); // 20101206 wify 경북대병원 일괄처리 추가
  1518. var chkAll1 = model.getValue("/root/send/chkall1"); // 20101214 wify 경북대병원 일괄처리 추가(불출까지)
  1519. //액팅전 체크표시 cash
  1520. fChkCash("before");
  1521. model.removeNodeset("/root/send/narcinfo/narclist");
  1522. // **** 체크박스 선택 값 카운트 Start ****
  1523. /*for(var i = grd_narclist.fixedRows; i < grd_narclist.rows; i++){
  1524. var sel = model.getValue("/root/main/narclist/narclist["+i+"]/sel");
  1525. var sNarcStat = model.getValue("/root/main/narclist/narclist["+i+"]/narcstat");
  1526. if(sel == "Y" && sNarcStat != "1") selCnt++; // 선택된 값(sel == "Y") 들 중 미신청 값은 제외
  1527. }
  1528. if(selCnt == 0) {
  1529. messageBox("선택된 데이터가","I004");
  1530. return;
  1531. }*/
  1532. //실출고부서 값 확인(조제확인/ 반환확인 시)
  1533. /*if((sActing == "Prcp" || sActing == "Rtn" ) && model.getValue("/root/temp/srchinfo/stocdeptcd") == "") {
  1534. messageBox("실출고부서를 지정하십시오 ","I999");
  1535. return;
  1536. }*/
  1537. // **** 체크박스 선택 값 카운트 End ****
  1538. // debugger;
  1539. for(var i = grd_narclist.fixedRows; i < grd_narclist.rows; i++){
  1540. var sel = model.getValue("/root/main/narclist/narclist["+i+"]/sel");
  1541. var narcstat = model.getValue("/root/main/narclist/narclist["+i+"]/narcstat"); // 불출상태
  1542. var cnclstat = model.getValue("/root/main/narclist/narclist["+i+"]/cnclstat"); // 반환상태
  1543. var ioflag = model.getValue("/root/main/narclist/narclist["+i+"]/ioflag"); // 입원외래구분
  1544. var prntdt = model.getValue("/root/main/narclist/narclist["+i+"]/prntdt"); // 처방전출력일시
  1545. var sPid = model.getValue("/root/main/narclist/narclist["+i+"]/pid"); // 환자번호
  1546. var sPrcpcd = model.getValue("/root/main/narclist/narclist["+i+"]/prcpcd"); // 처방명
  1547. var sDrugno = model.getValue("/root/main/narclist/narclist["+i+"]/drugno"); // 투약번호
  1548. var rpt = model.getValue("/root/temp/reprnt"); //재출력구분 20101221 wify 경북대병원 처방전 재출력 추가
  1549. if(sel == "Y"){
  1550. // 20101214 wify 경북대병원 일괄처리(Prcpdrug)추가
  1551. if(sActing == "Prcpdrug") {
  1552. if(chkAll == "") {
  1553. messageBox("일괄처리가 체크되지", "E007");
  1554. return;
  1555. }
  1556. if(narcstat == "2" && chkAll == "Y") {
  1557. astfCopyNodeSet("/root/send/narcinfo/narclist", "/root/main/narclist/narclist["+i+"]");
  1558. sActing_nm = "불출"
  1559. iActing_Cnt++;
  1560. //} else { // 불출상태가 [미신청]일때
  1561. // sActing_nm = "불출"
  1562. //}
  1563. } else { // 불출신청 상태가 아닌데 일괄처리시 진행안되게 수정 2014.8.28 김치국
  1564. messageBox("불출신청 자료만 일괄처리로 처리 할 수 있습니다.");
  1565. return;
  1566. }
  1567. }
  1568. // 처방전
  1569. model.copyNode("/root/send/prntinfo","/root/main/narclist/narclist["+i+"]");
  1570. model.makeValue("/root/send/prntinfo/prntid", model.getValue("/root/temp/userinfo/userinfo/userid"));
  1571. model.makeValue("/root/send/prntinfo/prntflag", "O");
  1572. submit("TRADT30103");
  1573. if(model.getValue("/root/main/prntlist/patinfo/drugno") != ""){
  1574. //처방전에 DUR이 존재하면 RFADT30105 존재하지 않으면 RFADT30100 출력
  1575. var resn = model.getValue("/root/main/prntlist/resn/resnnm");
  1576. if( resn == ""){
  1577. //1일기준인지 1회기준인지 체크하여 컬럼을 hidden
  1578. var colHidnValue = grdBaseColHidn("D");
  1579. if( colHidnValue == "C") {//1회 기준
  1580. model.makeValue("/root/main/prntlist/patinfo/prcpvolchk", "Y");
  1581. }
  1582. //20101119_wify_경북대병원_마약처방전 폼 변경
  1583. // RFADT30100 ==> RFADT30106
  1584. // RFADT30105 ==> RFADT30107
  1585. exeReportPreview("RFADT30106", "XMLSTR", "", "", "true","","","","","true");
  1586. }else{
  1587. exeReportPreview("RFADT30107", "XMLSTR", "", "", "true","","","","","true");
  1588. }
  1589. nextFlag ="GO";
  1590. fSleep(sleepTime);
  1591. }
  1592. //
  1593. }
  1594. }
  1595. model.copyNode("/root/send/narcinfo/srchinfo","/root/temp/srchinfo");
  1596. model.copyNode("/root/send/narcinfo/userinfo","/root/temp/userinfo/userinfo");
  1597. model.makeValue("/root/send/narcinfo/srchinfo/acting", sActing);
  1598. //20091015 이선경 수정 : 조제확인시 라벨자동출력은 fNarcLBLPrint 함수에서 처방조회시 가져온 ioflag로 체크해서 출력 여부 결정
  1599. //(수정원인 : 외래,병동 전체 조회 후 조제확인시 라벨자동출력이 안되는 현상이 있음)
  1600. //if ( model.getValue("/root/send/lblskip") != "Y" && sActing == "Prcp"){
  1601. // 20101221 wify 경북대병원 처방전 일괄처리할때 라벨도 같이 출력 되도록 함.
  1602. if ( nextFlag =="GO" && model.getValue("/root/send/lblskip") != "Y" && sActing == "Prcpdrug"){
  1603. //fNarcLBLPrint("Prnt");
  1604. fNarcLBLPrintR("Prnt");
  1605. submit("TXADT30102"); //라벨 출력 횟수 저장
  1606. }
  1607. //model.makeValue("", model.getValue("/root/temp/srchinfo/srchdeptcd"));
  1608. submit("TXADT30101");
  1609. //액팅전 체크표시 다시 표시
  1610. //grd_narclist.fixedcellischeck(0, 1) = false;
  1611. //grd_outnarc.fixedcellischeck(0, 1) = true;
  1612. fChkCash("after");
  1613. //nextflag ="Y";
  1614. //model.setValue("/root/temp/srchinfo/barcode","");
  1615. //model.setFocus("input9");
  1616. model.refresh();
  1617. }
  1618. function fSleep(numberMillis) {
  1619. var now = new Date();
  1620. var exitTime = now.getTime() + numberMillis;
  1621. while (true) {
  1622. now = new Date();
  1623. if (now.getTime() > exitTime)
  1624. return;
  1625. }
  1626. }
  1627. //불출확인서 출력시 출력일자 설정
  1628. function fSetNarcPrintDt() {
  1629. if (getNodesetCount(grd_narclist.nodeset) == 0)
  1630. return;
  1631. model.setValue("/root/send/prntdt/narcdata",grd_narclist.getUpdateDataAll("u"));
  1632. submit("TXADT30104");
  1633. }
  1634. //재출력 선택시 출력일자(콤보박스) 조회
  1635. function fGetNarcPrintDt() {
  1636. var narccdlist = "";
  1637. for(var i=1; i < datagrid1.rows; i++) {
  1638. if(model.getValue("/root/temp/srchcond/narclist[" + i + "]/sel") == "Y") {
  1639. if(narccdlist == "") {
  1640. narccdlist = "'" + model.getValue("/root/temp/srchcond/narclist[" + i + "]/narccd") + "'";
  1641. } else {
  1642. narccdlist += ",'" + model.getValue("/root/temp/srchcond/narclist[" + i + "]/narccd") + "'";
  1643. }
  1644. }
  1645. }
  1646. model.setValue("/root/temp/srchinfo/narccd", narccdlist);
  1647. //이선경 2008-07-22 start (조회시 마약종류를 조회조건에 추가)
  1648. grd_narclist.fixedcellischeck(0, 1) = false;
  1649. grd_outnarc.fixedcellischeck(0, 1) = false;
  1650. model.copyNode("/root/send/srchinfo","/root/temp/srchinfo");
  1651. if( model.getValue("/root/temp/srchinfo/prtab") == "Y") { // 향정반환반납장부 출력조건 2009.05.18 pymi
  1652. model.setValue("/root/send/srchinfo/cnclflag", "Y");
  1653. model.setValue("/root/send/srchinfo/rtnflag", "Y");
  1654. model.setValue("/root/send/srchinfo/rtnstat", "T");
  1655. model.setValue("/root/send/srchinfo/cnclstat", "T");
  1656. model.setValue("/root/send/srchinfo/narcstat", "");
  1657. }
  1658. // (e)
  1659. submit("TRADT30111");
  1660. }