SMMNI02020.js 149 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116
  1. /*
  2. 특수주사실 외래항암업무(SMMNI02020.xfm - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. */
  6. var xBizTrgtManListPath = "/root/main/biztrgtman/biztrgtmanlist"
  7. var xBizordsper = "/root/main/rghtlist/ordsperlist";
  8. var xordsperPath = "/root/main/rghtlist/ordsperlist";
  9. //20090213 dhkim 글로벌 변수 선언
  10. var suppdeptcd; //메뉴그룹사용부서코드
  11. var suppdeptnm; //메뉴그룹사용부서명
  12. var drprcpetc2; //BMT, 암센터 구분 (BMT센터 : B, 암센터 : Y)
  13. /**
  14. * @group :
  15. * @ver : 2007.05.29
  16. * @by : 신혁춘
  17. * @---------------------------------------------------
  18. * @type : function
  19. * @access : public
  20. * @desc : 각각의 통계 부분 클릭시
  21. * @param :
  22. * @return :
  23. * @---------------------------------------------------
  24. */
  25. function fStats(flag){
  26. var execnm = model.getValue("/root/main/leftref/execnm");
  27. model.removeNodeset("/root/send");
  28. model.makeValue("/root/send/bizdd",model.getValue("/root/main/leftref/bizdd"));
  29. model.makeValue("/root/send/execflag",model.getValue("/root/main/leftref/execflag"));
  30. model.makeValue("/root/send/exec",model.getValue("/root/main/leftref/exec"));
  31. if(flag == "allseq"){
  32. var chk = opt_allseq.value;
  33. if(chk == "0"){
  34. messageBox("검색할 데이터가","I004");
  35. return;
  36. }
  37. model.makeValue("/root/send/stats","allseq");
  38. }
  39. //항암조제완료클릭시
  40. if(flag == "A71"){
  41. var chk = opt_ant.value;
  42. if(chk == "0"){
  43. messageBox("검색할 데이터가","I004");
  44. return;
  45. }
  46. model.makeValue("/root/send/stats","A71");
  47. }
  48. //혈액불출준비클릭시
  49. if(flag == "B5"){
  50. var chk = opt_antdelive.value;
  51. if(chk == "0"){
  52. messageBox("검색할 데이터가","I004");
  53. return;
  54. }
  55. model.makeValue("/root/send/stats","B5");
  56. }
  57. //20090225 dhkim
  58. //통계건수클릭시 업무대상자리스트 조회조건에 플래그 추가하여 조회함
  59. fbiztrgtman("biztrgt", flag);
  60. }
  61. /**
  62. * 20090303
  63. * dhkim
  64. * 업무대상자리스트 수납상태에 따른 색깔변경
  65. */
  66. function fSetColorRcptStatPrcpList(){
  67. var rcptchk;
  68. for(var i = 1; i < grd_biztrgtman.rows; i++){
  69. rcptchk = model.getValue('/root/main/biztrgtman/biztrgtmanlist[' + i + ']/rcptchk');
  70. //선불수납 : R (default)
  71. if(rcptchk == 'R'){
  72. grd_biztrgtman.cellstyle("background-color", i, 0, i, 15) = '#ffffff';
  73. //break;
  74. }
  75. //당일결과 : Y (연두)
  76. else if(rcptchk == 'Y'){
  77. grd_biztrgtman.cellstyle("background-color", i, 0, i, 15) = '#ccffcc';
  78. //alert(rcptchk + ' ' + model.getValue('/root/main/biztrgtman/biztrgtmanlist[' + i + ']/hngnm'));
  79. }
  80. //후불(진찰료) : F (핑크)
  81. else if(rcptchk == 'F'){
  82. grd_biztrgtman.cellstyle("background-color", i, 0, i, 15) = '#ff99cc';
  83. }
  84. //수납VIP : V (노랑)
  85. else if(rcptchk == 'V'){
  86. grd_biztrgtman.cellstyle("background-color", i, 0, i, 15) = '#ffff00';
  87. }
  88. }
  89. }
  90. /*
  91. * 20090217 dhkim
  92. * 초기화 추가
  93. */
  94. function fInit(){
  95. // 의료수익 Block제어 체크로직(Y : Blocking처리, N : skip)
  96. //공통코드 load
  97. zbcfGetCodeList(new Array("P0453", "M0005"), new Array("/root/init/P0453info", "/root/init/M0005info"));
  98. model.setValue("/root/temp/endyn",model.getValue("/root/init/P0453info/P0453/cdid"));
  99. //처방구분노드추가
  100. var clsCnt = getNodesetCount('/root/init/M0005info/M0005');
  101. clsCnt = eval(clsCnt) + 1;
  102. model.makeValue('/root/init/M0005info/M0005[' + clsCnt + ']/cdid', 'A7');
  103. model.makeValue('/root/init/M0005info/M0005[' + clsCnt + ']/cdnm', '항암');
  104. clsCnt = eval(clsCnt) + 1;
  105. model.makeValue('/root/init/M0005info/M0005[' + clsCnt + ']/cdid', 'A8');
  106. model.makeValue('/root/init/M0005info/M0005[' + clsCnt + ']/cdnm', '예방');
  107. //20090313 dhkim 무균추가
  108. clsCnt = eval(clsCnt) + 1;
  109. model.makeValue('/root/init/M0005info/M0005[' + clsCnt + ']/cdid', 'A9');
  110. model.makeValue('/root/init/M0005info/M0005[' + clsCnt + ']/cdnm', '무균');
  111. model.refresh();
  112. //상단 수행부서명 로그인사용자정보로 세팅
  113. var dutplcecd = getUserInfo("dutplcecd");
  114. var dutplcenm = getUserInfo("dutplcenm");
  115. model.setValue("/root/main/leftref/exec",dutplcecd);
  116. model.setValue("/root/main/leftref/execnm",dutplcenm);
  117. //노드정보 초기화
  118. model.removeNodeset("/root/main/biztrgtman/biztrgtmanlist");
  119. model.removeNodeset("/root/main/rghtlist/ordsperlist");
  120. model.removeNodeset("/root/main/rghtlist/injsperlist");
  121. model.removeNodeset(" /root/main/prcpdetl/prcpdetllist");
  122. model.removeNodeset(" /root/main/rghtlist/snwinfolist");
  123. model.removeNodeset("/root/main/rghtlist/ordrsrvlist");
  124. model.removeNodeset("/root/main/rghtlist/testrsrvlist");
  125. ipt_dd.value = getCurrentDate();// 기준일에 현재날짜(디폴트);
  126. // fbiztrgtman("biztrgt"); //당일업무대상자리스트조회
  127. //20081117 ITC김숙인선생님 요구사항 -> 외래처방미포함 디폴트
  128. model.setValue('/root/main/addoprc', ''); //외래처방미포함 디폴트
  129. model.refresh();
  130. //처방상세내역 그리드의 헤더에 체크박스표시
  131. grd_prcpdetl.fixedcellcheckbox(0, 1) = true;
  132. fpartflaginfo();//부위기준자료조회
  133. //20081121 dhkim 테스트중.
  134. var userid = getUserId();
  135. if(userid == 'DEV512' || userid == 'dev512' || userid == 'enr' || userid == 'ENR'){
  136. btn_nrsdc.attribute('visibility') = 'visible';
  137. }else{
  138. btn_nrsdc.attribute('visibility') = 'hidden';
  139. }
  140. //로그인사용자의 부서정보로 타이틀을 변경 한다.
  141. //20090213 dhkim
  142. //화면 타이틀을 해당 부서에 맞게 변경한다.
  143. suppdeptcd = aezfSetSuppDeptcd();
  144. suppdeptnm = getMenuDeptnm('/root/send/deptcd', suppdeptcd, 'TRMNI02031', '/root/temp/menudeptinfo/deptnm');
  145. model.removenode('/root/menudeptinfo/deptcd');
  146. model.removenode('/root/menudeptinfo/deptnm');
  147. model.makeValue('/root/menudeptinfo/deptcd', suppdeptcd);
  148. model.makeValue('/root/menudeptinfo/deptnm', suppdeptnm);
  149. if(suppdeptnm == null || suppdeptnm == ''){
  150. suppdeptnm = '특수주사실';
  151. }
  152. capt_titl.attribute('text') = suppdeptnm + ' 외래항암업무';
  153. //20090217 dhkim
  154. //간호부서코드테이블에 등록된 bmt와 암센터 주사실의 코드를 조회한다.
  155. //spclcareweb/js/MNS001.js
  156. //fGetNursDept(cdgrupid, sendnode, recivenode, submitid, errmessage)
  157. fGetNursDept('025', '/root/send/cdgrupid', '/root/nursdeptinfo/bmtinfo', 'TRMNI02032', 'bmt센터 간호등록부서조회를 실패하였습니다.');
  158. fGetNursDept('026', '/root/send/cdgrupid', '/root/nursdeptinfo/cncrinfo', 'TRMNI02033', '암센터 간호등록부서조회를 실패하였습니다.');
  159. var bmttempnode = "/root/nursdeptinfo/bmtinfo/nursdeptlist";
  160. var cncrtempnode = "/root/nursdeptinfo/cncrinfo/nursdeptlist";
  161. drprcpetc2 = fGetDrPrcpEtc2(bmttempnode, cncrtempnode);//해당화면이 BMT센터인지 암센터인지 여부를 조회
  162. //20090720 dhkim 업무기준 추가
  163. model.setValue('/root/main/leftref/workflag', '1');//처방일자
  164. model.refresh();
  165. fbiztrgtman("biztrgt"); //당일업무대상자리스트조회
  166. }
  167. /**
  168. * @group :
  169. * @ver : 2007.05.03
  170. 2009.05.12 dhkim 테스트중...통계건수 클릭시 이 펑션 타게 테스트중임(플래그statflag 추가)
  171. * @by : 신혁춘
  172. * @---------------------------------------------------
  173. * @type : function
  174. * @access : public
  175. * @desc : 당일업무대상자리스트조회
  176. * @param :
  177. * @return :
  178. * @---------------------------------------------------
  179. */
  180. function fbiztrgtman(flag, statflag){
  181. var execnm = model.getValue("/root/main/leftref/execnm");
  182. //그리드 내용 클릭시
  183. if(flag == "biztrgt"){
  184. model.removeNodeset("/root/send");
  185. model.makeValue("/root/send/bizdd", model.getValue("/root/main/leftref/bizdd"));
  186. model.makeValue("/root/send/execflag", model.getValue("/root/main/leftref/execflag"));
  187. model.makeValue("/root/send/exec", model.getValue("/root/main/leftref/exec"));
  188. model.makeValue("/root/send/endblkyn", model.getValue("/root/temp/endyn")); // 마감block여부구분
  189. //20090217 dhkim
  190. //사용자정보를 가지고 해당사용자가 bmt주사실사용자인지 암센터사용자인지 여부에 따라 조회구분자가 달라짐
  191. //drprcpetc2는 화면초기화 시에 글로벌변수로 세팅함
  192. model.makeValue("/root/send/drprcpetc2", drprcpetc2);
  193. //20090512 dhkim
  194. //statflag 추가(통계건수 클릭시 이 펑션 타도록 변경)
  195. model.makeValue("/root/send/stats", statflag);
  196. //20090720 dhkim 변경요청내용(itc서미영 : 업무기준추가 -> 예약일자/처방일자 별 조회)
  197. model.makeValue("/root/send/workflag", model.getValue("/root/main/leftref/workflag"));
  198. if(submit("TRMNI02021")){
  199. //20090720 dhkim 그리드 업무일자 컬럼명 변경
  200. var workddstr = model.getValue('/root/main/leftref/workflag');
  201. var workflag = model.getValue('/root/main/leftref/workflag');
  202. if(workddstr == null || workddstr == ''){
  203. workddstr = "업무일자";
  204. }else{
  205. if(workflag == '1'){
  206. workddstr = "처방일자";
  207. }else if(workflag == '2'){
  208. workddstr = "예약일자";
  209. }else{
  210. workddstr = "업무일자";
  211. }
  212. }
  213. grd_biztrgtman.valueMatrix(0, grd_biztrgtman.colRef("workdd")) = workddstr;
  214. //20090303 dhkim 추가
  215. //업무대상자리스트 수납상태에 따른 색깔변경
  216. fSetColorRcptStatPrcpList();
  217. var execnmchk = model.getValue("/root/main/leftref/execnm")
  218. tar_memo.value="";
  219. model.removeNodeset("/root/main/prcpdetl/prcpdetllist");
  220. model.removeNodeset("/root/main/rghtlist/ordrsrvlist");
  221. model.removeNodeset("/root/main/rghtlist/testrsrvlist");
  222. model.removeNodeset("/root/main/rghtlist/ordsperlist");
  223. model.removeNodeset("/root/main/rghtlist/injsperlist");
  224. model.removeNodeset("/root/main/rghtlist/snwinfolist");
  225. ipt_pid.value="";
  226. opt_hngnm.value="";
  227. opt_gndrage.value="";
  228. opt_rrgstno.value="";
  229. grd_snwinfo.refresh();
  230. tar_memo.refresh();
  231. grd_ordrsrv.refresh();
  232. grd_testrsrv.refresh();
  233. grd_ordsper.refresh();
  234. grd_injsper.refresh();
  235. ipt_pid.refresh();
  236. opt_hngnm.refresh();
  237. opt_gndrage.refresh();
  238. opt_rrgstno.refresh();
  239. }
  240. }
  241. /**dhkim 마감처리 어떻게 해야하는지 확인할것
  242. var endcount = model.getValue("/root/main/biztrgtman/endyninfo/endyn"); // 마감여부 check
  243. var endblockyn = model.getValue("/root/temp/endyn"); // 공통Blocki여부 Check
  244. if (endblockyn == 'Y'){ // 공통Block여부가 'Y'인 경우만 체크되도록
  245. if (endcount >= 1) { // 전일 마감되지 않은 건수가 있을경우
  246. alert("전일 Acting된 처방중 마감되지 않은 내역이 있습니다. 전일 마감후 조회하시기 바랍니다.");
  247. model.removeNodeset(xBizTrgtManListPath);
  248. model.removeNodeset("/root/main/biztrgtman/statslist");
  249. model.removeNodeset("/root/main/rghtlist/ordsperlist");
  250. model.removeNodeset("/root/main/rghtlist/injsperlist");
  251. model.removeNodeset(" /root/main/prcpdetl/prcpdetllist");
  252. model.removeNodeset(" /root/main/rghtlist/snwinfolist");
  253. model.removeNodeset("/root/main/rghtlist/ordrsrvlist");
  254. model.removeNodeset("/root/main/rghtlist/testrsrvlist");
  255. model.refresh();
  256. // 주사실 미시행 내역조회 및 마감 화면 open
  257. var actdd = model.getValue("/root/main/leftref/bizdd");
  258. setParameter("fromdd", actdd);
  259. setParameter("todd", actdd);
  260. setParameter("execflag", "2");
  261. setParameter("endflag", "N");
  262. open("SMMNI00200","1","15","128");
  263. }
  264. }
  265. **/
  266. //acting 처리후 다시 조회시
  267. if(flag=="acting"){
  268. model.makeValue("/root/send/bizdd",model.getValue("/root/main/leftref/bizdd"));
  269. model.makeValue("/root/send/execflag",model.getValue("/root/main/leftref/execflag"));
  270. model.makeValue("/root/send/exec",model.getValue("/root/main/leftref/exec"));
  271. model.makeValue("/root/send/endblkyn",model.getValue("/root/temp/endyn")); // 마감block여부구분
  272. //20090217 dhkim
  273. //사용자정보를 가지고 해당사용자가 bmt주사실사용자인지 암센터사용자인지 여부에 따라 조회구분자가 달라짐
  274. //drprcpetc2는 화면초기화 시에 글로벌변수로 세팅함
  275. model.makeValue("/root/send/drprcpetc2", drprcpetc2);
  276. if(submit("TRMNI02021")){
  277. //20090303 dhkim 추가
  278. //업무대상자리스트 수납상태에 따른 색깔변경
  279. fSetColorRcptStatPrcpList();
  280. }
  281. }
  282. }
  283. /**
  284. * @group :
  285. * @ver : 2007.05.10
  286. * @by : 신혁춘
  287. * @---------------------------------------------------
  288. * @type : function
  289. * @access : public
  290. * @desc : 업무대상자 리스트 클릭시..
  291. * @param : flag : acting
  292. * @return :
  293. * @---------------------------------------------------
  294. */
  295. function fBiztrgtClick(flag){
  296. model.makeValue("/root/hidden/flags", "grd_biztrgtman");//처방전출력에 있었음..
  297. if(flag=="acting"){
  298. var TRow = grd_biztrgtman.rows;
  299. var chkpid = model.getValue("/root/send/pid");
  300. var chkorddd = model.getValue("/root/send/orddd");
  301. // alert(chkpid + ' ' + chkorddd);
  302. var pid, orddd, execnmchk;
  303. for(var T = 0; T <= grd_biztrgtman.rows; T++){
  304. pid = model.getValue(xBizTrgtManListPath+"["+T+"]/pid");
  305. orddd = model.getValue(xBizTrgtManListPath+"["+T+"]/orddd");
  306. execnmchk = model.getValue("/root/main/leftref/execnm");
  307. // alert('i=' + T + pid + ' ' + chkpid + ' ' + orddd + ' ' + chkorddd + ' ' + execnmchk);
  308. if(pid == chkpid && orddd == chkorddd){
  309. model.setValue("/root/main/rghtref/rghtreflist/pid", model.getValue(xBizTrgtManListPath+"["+T+"]/pid"));
  310. //오른쪽 환자 데이타 조회에서 등록번호 데이타 입력후 조회
  311. //20090629 dhkim 7/1고시변경으로 인한 리턴값 추가
  312. var rtn = fpidref();
  313. if(!rtn){
  314. return false;
  315. }
  316. grd_biztrgtman.row = T;
  317. break;
  318. }
  319. if (pid != chkpid && orddd != chkorddd){
  320. if (T >= TRow){
  321. tar_memo.value="";
  322. model.removeNodeset("/root/main/rghtlist/ordrsrvlist");
  323. model.removeNodeset("/root/main/rghtlist/testrsrvlist");
  324. model.removeNodeset("/root/main/rghtlist/ordsperlist");
  325. model.removeNodeset("/root/main/rghtlist/injsperlist");
  326. model.removeNodeset("/root/main/rghtlist/snwinfolist");
  327. ipt_pid.value="";
  328. opt_hngnm.value="";
  329. opt_gndrage.value="";
  330. opt_rrgstno.value="";
  331. grd_snwinfo.refresh();
  332. tar_memo.refresh();
  333. grd_ordrsrv.refresh();
  334. grd_testrsrv.refresh();
  335. grd_ordsper.refresh();
  336. grd_injsper.refresh();
  337. ipt_pid.refresh();
  338. opt_hngnm.refresh();
  339. opt_gndrage.refresh();
  340. opt_rrgstno.refresh();
  341. return;
  342. }
  343. }
  344. }
  345. }
  346. if(grd_biztrgtman.row <= 0){
  347. return;
  348. }
  349. if(flag!="acting"){
  350. //화면상단 정보설정
  351. var iRow = grd_biztrgtman.row;
  352. //20090227 dhkim ordtype제거 무조건 'O'로 넘김
  353. //var ordtype = model.getValue(xBizTrgtManListPath+"["+iRow+"]/ordtype");
  354. var ordtype = 'O';
  355. var pid = model.getValue(xBizTrgtManListPath+"["+iRow+"]/pid");
  356. var orddd = model.getValue(xBizTrgtManListPath+"["+iRow+"]/orddd").substr(0, 8);
  357. var cretno = model.getValue(xBizTrgtManListPath+"["+iRow+"]/cretno");
  358. var instcd = model.getValue(xBizTrgtManListPath+"["+iRow+"]/instcd");
  359. //20090227 dhkim orgorddd 제거
  360. //var orgorddd = model.getValue(xBizTrgtManListPath+"["+iRow+"]/orgorddd");
  361. //var param = ordtype + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd + "▦" + '' + "▦" + orgorddd;
  362. var param = ordtype + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd + "▦" + '' + "▦" + '';
  363. //20090212 dhkim 추가
  364. //상단정보세팅전 서울성모 전환환자인지 조회
  365. model.removenode('/root/send');
  366. model.makeValue('/root/send/pid', pid);
  367. if(!submit('TRMNI02030')){
  368. messageBox('상단정보세팅중 전환환자 여부조회를 실패하였습니다.', 'E999');
  369. }else{
  370. var pidflag = model.getValue('/root/bmt/bmtinfo/pidflag');
  371. var hngnm = model.getValue('/root/bmt/bmtinfo/hngnm');
  372. if(hngnm != ''){
  373. hngnm = '"' + hngnm + '"님은 ';
  374. }
  375. if(pidflag == 'Y'){
  376. messageBox(hngnm + '여의도성모에서 서울성모 전환 BMT환자입니다.', 'I999');
  377. }
  378. }
  379. // alert(param);
  380. //상단정보 세팅
  381. setParameter("condparam", param);
  382. modal("SPMMO08900", 1, "", "", "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  383. //오른쪽 환자 데이타 조회에서 등록번호 데이타 입력후 조회
  384. var iRow = grd_biztrgtman.row;
  385. model.setValue("/root/main/rghtref/rghtreflist/pid", model.getValue(xBizTrgtManListPath+"["+iRow+"]/pid"));
  386. //20090629 dhkim 7/1고시변경으로 인한 리턴값 추가
  387. var rtn = fpidref("biztrgrman");
  388. if(!rtn){
  389. return false;
  390. }
  391. //업무대상자리스트에서 해당환자 선택상태로 변경
  392. grd_biztrgtman.row = iRow;
  393. }
  394. //20090218 dhkim 이부분 추가 테스트...
  395. //20090218 dhkim 이부분 추가 당일업무대상자리스트 및 당일업무대상자처방통계건수 재조회
  396. //20090218 dhkim 이부분 추가 fbiztrgtman("acting");
  397. /*
  398. 20090218 dhkim 주석처리 임시 테스트중..
  399. model.removeNodeset("/root/send");
  400. model.makeValue("/root/send/bizdd", model.getValue("/root/main/leftref/bizdd"));
  401. model.makeValue("/root/send/execflag", model.getValue("/root/main/leftref/execflag"));
  402. model.makeValue("/root/send/exec", model.getValue("/root/main/leftref/exec"));
  403. //주사실메인통계조회
  404. if(submit("TRMNI02027")){
  405. /*
  406. model.setValue("/root/main/biztrgtman/statslist/allseq", model.getValue("/root/init/stats/statslists/allseqs"));
  407. model.setValue("/root/main/biztrgtman/statslist/inj", model.getValue("/root/init/stats/statslists/injs"));
  408. model.setValue("/root/main/biztrgtman/statslist/prvn", model.getValue("/root/init/stats/statslists/prvns"));
  409. model.setValue("/root/main/biztrgtman/statslist/ant", model.getValue("/root/init/stats/statslists/ants"));
  410. model.setValue("/root/main/biztrgtman/statslist/blod", model.getValue("/root/init/stats/statslists/blods"));
  411. * /
  412. model.setValue("/root/main/biztrgtman/statslist/antprcpend", model.getValue("/root/init/stats/statslists/antprcpends"));
  413. model.setValue("/root/main/biztrgtman/statslist/antdelive", model.getValue("/root/init/stats/statslists/antdelives"));
  414. }
  415. */
  416. //업무대상자리스트에서 선택
  417. //처방상세내역조회
  418. fSearchPrcpDetail();
  419. }
  420. /**
  421. * @group :
  422. * @ver : 2008.11.03
  423. * @by :
  424. * @---------------------------------------------------
  425. * @type : function
  426. * @access : public
  427. * @desc : 처방상세내역 조회조건(pid, drugdd) set
  428. 더블클릭이벤트가 어떤 그리드에서 발생했는지 set
  429. * @param :
  430. * @return :
  431. * @---------------------------------------------------
  432. */
  433. function fSetPrclDetlCond(pid, drugdd, grdnm, orddd, cretno, orddeptcd, orddrid){
  434. //처방상세내역 조건 set
  435. model.removenode('/root/temp/prcpdetldata');
  436. model.makeValue('/root/temp/prcpdetldata/pid', pid);
  437. model.makeValue('/root/temp/prcpdetldata/drugdd', drugdd);
  438. //더블클릭이벤트가 어떤 그리드에서 발생했는지 set
  439. model.removenode('/root/temp/grdnm');
  440. model.makeValue('/root/temp/grdnm', grdnm);
  441. //반환요청조건 parameter set
  442. model.removenode('/root/temp/prcpretn');
  443. model.makeValue('/root/temp/prcpretn/pid', pid);
  444. model.makeValue('/root/temp/prcpretn/orddd', orddd);
  445. model.makeValue('/root/temp/prcpretn/cretno', cretno);
  446. model.makeValue('/root/temp/prcpretn/orddeptcd', orddeptcd);
  447. model.makeValue('/root/temp/prcpretn/orddrid', orddrid);
  448. model.refresh();
  449. }
  450. /**
  451. * @group :
  452. * @ver : 2008.11.03
  453. * @by :
  454. * @---------------------------------------------------
  455. * @type : function
  456. * @access : public
  457. * @desc : 처방상세내역조회
  458. * @param :
  459. * @return :
  460. * @---------------------------------------------------
  461. */
  462. function fSearchPrcpDetail(){
  463. var iRow = grd_biztrgtman.row;
  464. model.removeNodeset("/root/send");
  465. model.makeValue("/root/send/pid", model.getValue('/root/temp/prcpdetldata/pid'));//등록번호
  466. model.makeValue("/root/send/drugdd", model.getValue('/root/temp/prcpdetldata/drugdd'));//진료일자
  467. model.makeValue("/root/send/exec", model.getValue("/root/main/leftref/exec"));//dutplcecd(세션기관코드)
  468. model.makeValue("/root/send/addoprc", model.getValue('/root/main/addoprc'));//20081030 외래처방포함조회
  469. //20090217 dhkim
  470. //사용자정보를 가지고 해당사용자가 bmt주사실사용자인지 암센터사용자인지 여부에 따라 조회구분자가 달라짐
  471. //drprcpetc2는 화면초기화 시에 글로벌변수로 세팅함
  472. model.makeValue("/root/send/drprcpetc2", drprcpetc2);
  473. //처방상세내역조회1
  474. if(submit("TRMNI02023")){
  475. grd_prcpdetl.rebuildStyle();
  476. var xPrcpDetlPath = "/root/main/prcpdetl/prcpdetllist"
  477. var Row = grd_prcpdetl.rows;
  478. var mixchk = 0;
  479. var execdd, blodcomstat, execprcpstatcd, prcpclscd, drugno, cdnm, endyn, etcprcpresncd, blodcomstat;
  480. //조제완료또는 특조완료인 항암 처방중 mix번호가 같은 처방을 조제완료 상태로 변경하기위한 변수
  481. var mixk, actordddk, rsrvtmk, ordddk;
  482. var mixr, actordddr, rsrvtmr, ordddr;
  483. var rcptchk; //20090305 dhkim 후수납관련필드추가
  484. //20090605 dhkim
  485. var drugnok, drugnor;
  486. //처방상태 값에 따른 처방상세내역 리스트에 상태값 을 나타내는 로직 시작
  487. for(i=1; i<Row; i++){
  488. execdd = model.getValue(xPrcpDetlPath+"[" + i + "]/execrid");
  489. blodcomstat = model.getValue(xPrcpDetlPath+"[" + i + "]/blodcomstat");
  490. execprcpstatcd = model.getValue(xPrcpDetlPath+"[" + i + "]/execprcpstatcd");
  491. prcpclscd = model.getValue(xPrcpDetlPath+"[" + i + "]/prcpclscd");
  492. drugno = model.getValue(xPrcpDetlPath+"[" + i + "]/drugno");
  493. cdnm = model.getValue(xPrcpDetlPath+"[" + i + "]/cdnm");
  494. endyn = model.getValue(xPrcpDetlPath+"[" + i + "]/endyn");
  495. etcprcpresncd = model.getValue(xPrcpDetlPath+"[" + i + "]/etcprcpresncd"); // 수혈반납 및 폐기사유코드
  496. blodcomstat = model.getValue(xPrcpDetlPath+"[" + i + "]/blodcomstat"); // 성분제제상태
  497. stat = model.getValue(xPrcpDetlPath+"[" + i + "]/stat");//[20081118 by dhkim] 처방상태 (강제지정)
  498. //alert('stat : ' + stat);
  499. //20090305 dhkim 후수납관련필드추가
  500. rcptchk = model.getValue(xPrcpDetlPath+"[" + i + "]/rcptchk"); // 후수납상태
  501. //alert('drugno : ' + drugno + ', execprcpstatcd : ' + execprcpstatcd + ', cdnm : ' + cdnm + ', prcpclscd : ' + prcpclscd);
  502. //20090305 dhkim
  503. //특조전송완료 상태로 보여주는 부분 후수납의 경우 230조건 제외할것
  504. //후수납 : rcptchk값이 V, Y, F일때는 230조건 제외,
  505. // rcptchk값이 R일때는 230조건
  506. //20090312 dhkim vip환자의 경우는 수납여부 체크하지 않음
  507. //20090313 dhkim vip환자와 당일선검사환자의 경우는 수납여부 체크하지 않음
  508. if(
  509. (
  510. (rcptchk == 'R' && execprcpstatcd == "230")
  511. || (rcptchk == 'V')
  512. || (rcptchk == 'Y')
  513. //20090428 dhkim 후불 주석품
  514. || (rcptchk == 'F')
  515. )
  516. && drugno != "0" //투약번호 따지고
  517. && cdnm !="마약" //(마약제외)
  518. && stat != "2" //처방상태 (강제지정시 항암으로 위장된 조제완료된 주사처방을 지정 못하게 하기위함)
  519. ){
  520. //alert(rcptchk + ' ' + execprcpstatcd + ' ' + drugno);
  521. grd_prcpdetl.textmatrix(i, 3) = 13; //전송완료
  522. }
  523. /*
  524. //투약번호 따지고 230수납 된 약이면 (마약제외) 전송완료상태
  525. if(drugno != "0" && execprcpstatcd == "230" && cdnm!="마약"
  526. && stat != "2"){//[20081118 by dhkim] 처방상태 (강제지정시 항암으로 위장된 조제완료된 주사처방을 지정 못하게 하기위함)
  527. grd_prcpdetl.textmatrix(i, 3) = 13; //전송완료
  528. }
  529. */
  530. //300조제보류
  531. if(execprcpstatcd == "300"){
  532. grd_prcpdetl.textmatrix(i, 3) = 1; //조제보류
  533. }
  534. //310조제완료 315특조완료 A7항암
  535. //20090316 dhkim 무균(A9)추가
  536. if(execprcpstatcd == "310" || execprcpstatcd == "315" && (prcpclscd == "A7" || prcpclscd == "A9")){
  537. grd_prcpdetl.textmatrix(i, 3) = 2; //조제완료
  538. mixk = model.getValue(xPrcpDetlPath+"["+i+"]/mix");
  539. //alert(mixk);
  540. actordddk = model.getValue(xPrcpDetlPath+"["+i+"]/actorddd");
  541. rsrvtmk = model.getValue(xPrcpDetlPath+"["+i+"]/rsrvtm");
  542. ordddk = model.getValue(xPrcpDetlPath+"["+i+"]/orddd");
  543. drugnok = model.getValue(xPrcpDetlPath+"["+i+"]/drugno");//투약번호
  544. //예약일, 진료일, 처방일, mix번호가 같은 처방을 조제완료상태로 강제변경
  545. for (r=0; r<Row; r++){
  546. mixr = model.getValue(xPrcpDetlPath+"["+r+"]/mix");
  547. actordddr = model.getValue(xPrcpDetlPath+"["+r+"]/actorddd");
  548. rsrvtmr = model.getValue(xPrcpDetlPath+"["+r+"]/rsrvtm");
  549. ordddr = model.getValue(xPrcpDetlPath+"["+r+"]/orddd");
  550. drugnor = model.getValue(xPrcpDetlPath+"["+r+"]/drugnor");
  551. //alert(mixk +','+ mixr +' '+ rsrvtmk +','+ rsrvtmr +' '+ actordddk +','+ actordddr +' '+ ordddk +','+ ordddr);
  552. if(mixk!= '-' && rsrvtmk != '-' && mixk == mixr && actordddr == actordddk && rsrvtmr == rsrvtmk && ordddr == ordddk && drugnor == drugnok && drugnok != 0){
  553. grd_prcpdetl.textmatrix(r, 3) = 2; //조제완료
  554. }
  555. }
  556. }
  557. //처방 상태값 세팅
  558. //처방전출력여부 610실시완료
  559. var printyn = model.getValue(xPrcpDetlPath+"["+i+"]/printyn");
  560. if(printyn == "Y" && execprcpstatcd != "610"){
  561. grd_prcpdetl.cellstyle("background-color", i, 0, i, 19) = '#FFFFCC';//상아색
  562. }
  563. //500접수 505준비 510검사중
  564. if(execprcpstatcd == "500" || execprcpstatcd == "505" || execprcpstatcd == "510"){
  565. grd_prcpdetl.textmatrix(i, 3) = 11 //접수
  566. }
  567. //520검사완료 525불출요청
  568. if(execprcpstatcd == "520" || execprcpstatcd == "525"){
  569. grd_prcpdetl.textmatrix(i, 3) = 4 //준비완료
  570. }
  571. //540반납의뢰
  572. if(execprcpstatcd == "540"){
  573. grd_prcpdetl.textmatrix(i, 3) = 7 //반납의뢰
  574. }
  575. //550반납완료
  576. if(execprcpstatcd == "550"){
  577. grd_prcpdetl.textmatrix(i, 3) = 8 //반납완료
  578. }
  579. //530출고
  580. if(execprcpstatcd == "530"){
  581. if (blodcomstat == "8") {
  582. grd_prcpdetl.textmatrix(i, 3) = 14 //잔여폐기
  583. }
  584. else {
  585. grd_prcpdetl.textmatrix(i, 3) = 5 //불출
  586. }
  587. }
  588. //560폐기의뢰
  589. if(execprcpstatcd == "560"){
  590. if (etcprcpresncd == "07" || etcprcpresncd == "12") {
  591. grd_prcpdetl.textmatrix(i, 3) = 14 //잔여폐기
  592. }
  593. else {
  594. grd_prcpdetl.textmatrix(i, 3) = 9 //폐기의뢰
  595. }
  596. }
  597. //570폐기완료
  598. if(execprcpstatcd == "570"){
  599. grd_prcpdetl.textmatrix(i, 3) = 10 //폐기완료
  600. }
  601. //320출고
  602. if(execprcpstatcd == "320"){
  603. grd_prcpdetl.textmatrix(i, 3) = 5 //출고
  604. }
  605. //B4수혈 610실시완료
  606. if(prcpclscd =="B4"){
  607. if(execprcpstatcd == "610"){
  608. grd_prcpdetl.textmatrix(i, 3) = 12 //실시완료
  609. }
  610. }else{
  611. if(execprcpstatcd == "610"){
  612. grd_prcpdetl.textmatrix(i, 3) = 6 //시행완료
  613. }
  614. }
  615. var mix = model.getValue(xPrcpDetlPath+"["+i+"]/mix");
  616. var actorddd = model.getValue(xPrcpDetlPath+"["+i+"]/actorddd");
  617. var rsrvtm = model.getValue(xPrcpDetlPath+"["+i+"]/rsrvtm");
  618. var orddd = model.getValue(xPrcpDetlPath+"["+i+"]/orddd");
  619. //20091112 dhkim 믹스그룹화 기준을 처방시간별로 변경(약제랑 기준 맞춤- 빈센트에서 오류발생함)
  620. var rgstdd = model.getValue(xPrcpDetlPath+"["+i+"]/rgstdd");
  621. var rgsttm = model.getValue(xPrcpDetlPath+"["+i+"]/rgsttm");
  622. //20090622 dhkim
  623. if(orddd.length > 8){
  624. orddd = orddd.substring(0, 8);
  625. }
  626. //20090903 dhkim 빈센트 오류사항 (믹스지정한 처방상태가 동일하지 않음)
  627. var stat = grd_prcpdetl.textmatrix(i, 3);
  628. var mixs, actorddds, rsrvtms, orddds;
  629. var _rgstdd, _rgsttm;
  630. //항암처방과 mix번호가 같은것 처방종류를 항암으로 display
  631. if(prcpclscd == "A7"){
  632. for(var k=0; k<Row; k++){
  633. mixs = model.getValue(xPrcpDetlPath+"["+k+"]/mix");
  634. actorddds = model.getValue(xPrcpDetlPath+"["+k+"]/actorddd");
  635. rsrvtms = model.getValue(xPrcpDetlPath+"["+k+"]/rsrvtm");
  636. orddds = model.getValue(xPrcpDetlPath+"["+k+"]/orddd");
  637. //20091112 dhkim 믹스그룹화 기준을 처방시간별로 변경(약제랑 기준 맞춤- 빈센트에서 오류발생함)
  638. _rgstdd = model.getValue(xPrcpDetlPath+"["+k+"]/rgstdd");
  639. _rgsttm = model.getValue(xPrcpDetlPath+"["+k+"]/rgsttm");
  640. //20090622 dhkim
  641. if(orddds.length > 8){
  642. orddds = orddds.substring(0, 8);
  643. }
  644. //20091112 dhkim 믹스그룹화 시 rgstdd, rgsttm 조건 추가
  645. if(mix == mixs && mix != '-' && actorddds == actorddd && rsrvtms == rsrvtm && orddds == orddd && rgstdd == _rgstdd && rgsttm == _rgsttm){
  646. // 특조전송시 mix번호 같을때 항암으로 보여주는 로직..
  647. grd_prcpdetl.textmatrix(k, 2) = 'A7';
  648. //20090903 dhkim 빈센트 오류사항 (믹스지정한 처방상태가 동일하지 않음)
  649. grd_prcpdetl.textmatrix(k, 3) = stat;
  650. }
  651. }
  652. }
  653. //20090316 dhkim 무균추가
  654. // 마감처방 색깔표시 되도록
  655. if(prcpclscd == "A9"){
  656. for (var k=0; k<Row; k++){
  657. mixs = model.getValue(xPrcpDetlPath+"["+k+"]/mix");
  658. actorddds = model.getValue(xPrcpDetlPath+"["+k+"]/actorddd");
  659. rsrvtms = model.getValue(xPrcpDetlPath+"["+k+"]/rsrvtm");
  660. orddds = model.getValue(xPrcpDetlPath+"["+k+"]/orddd");
  661. //20091112 dhkim 믹스그룹화 기준을 처방시간별로 변경(약제랑 기준 맞춤- 빈센트에서 오류발생함)
  662. _rgstdd = model.getValue(xPrcpDetlPath+"["+k+"]/rgstdd");
  663. _rgsttm = model.getValue(xPrcpDetlPath+"["+k+"]/rgsttm");
  664. //20090622 dhkim
  665. if(orddds.length > 8){
  666. orddds = orddds.substring(0, 8);
  667. }
  668. //20091112 dhkim 믹스그룹화 시 rgstdd, rgsttm 조건 추가
  669. if(mix == mixs && mix != '-' && actorddds == actorddd && rsrvtms == rsrvtm && orddds == orddd && rgstdd == _rgstdd && rgsttm == _rgsttm){
  670. // 특조전송시 mix번호 같을때 항암으로 보여주는 로직..
  671. grd_prcpdetl.textmatrix(k, 2) = 'A9';
  672. //20090903 dhkim 빈센트 오류사항 (믹스지정한 처방상태가 동일하지 않음)
  673. grd_prcpdetl.textmatrix(k, 3) = stat;
  674. }
  675. }
  676. }
  677. //20090529 dhkim
  678. //혈액 상태중 반납의뢰, 통폐기의뢰, 잔여폐기의뢰, 출고, 접수, 준비완료, 반납완료, 통폐기완료, 잔여폐기완료 상태값 정의
  679. if(prcpclscd == 'B4'){
  680. grd_prcpdetl.textmatrix(i, 3) = model.getValue(xPrcpDetlPath + "[" + i + "]/bloodst");
  681. }
  682. if (endyn == "Y") {
  683. grd_prcpdetl.cellstyle("background-color", i, 0, i, 19) = '#ffcccc';//빨간색
  684. }
  685. } //상태 값을 나타내는 로직 끝
  686. //상세내역 조회후 오른쪽 데이타 조회
  687. fRghtDataList();
  688. //예약일자 변경시 이전 날짜 선택 여부를 위해서 노드를 copy해둠
  689. model.copyNode("/root/hidden/main", "/root/main");
  690. }
  691. }
  692. /**
  693. *20090630 dhkim
  694. *이전 조회내역 클리어
  695. */
  696. function fClearSrch(){
  697. //상병정보
  698. model.removenodeset('/root/main/rghtlist/snwinfolist');
  699. //메모
  700. model.removenodeset('/root/main/rghtlist/memolist/memocnts');
  701. //진료예약정보
  702. model.removenodeset('/root/main/rghtlist/ordrsrvlist');
  703. //검사예약정보
  704. model.removenodeset('/root/main/rghtlist/testrsrvlist');
  705. //진료내역
  706. model.removenodeset('/root/main/rghtlist/ordsperlist');
  707. //미시행주사내역
  708. model.removenodeset('/root/main/rghtlist/injsperlist');
  709. //처방상세내역
  710. model.removenodeset('/root/main/prcpdetl/prcpdetllist');
  711. model.refresh();
  712. }
  713. /**
  714. * @group :
  715. * @ver : 2007.05.04
  716. * @by : 신혁춘
  717. * @---------------------------------------------------
  718. * @type : function
  719. * @access : public
  720. * @desc : 등록번호에 따른 환자정보 검색
  721. * @param :
  722. * @return :
  723. * @---------------------------------------------------
  724. */
  725. function fpidref(flag){
  726. var pid, hngnm ;
  727. model.removeNodeset("/root/send");
  728. pid = ipt_pid.value;
  729. if(pid == ""){
  730. messageBox("환자를 지정하지", "E007");
  731. return false;
  732. }
  733. //20090630 dhkim
  734. //환자세팅하기 전 이전내역 clear
  735. fClearSrch();
  736. //입력한 등록번호의 환자명, 주민번호를 조회
  737. model.makeValue("/root/send/pid", pid);
  738. if(submit("TRMNI02022")){
  739. hngnm = model.getValue("/root/main/rghtref/rghtreflist/hngnm");
  740. if(hngnm==""){
  741. opt_hngnm.value="";
  742. opt_gndrage.value="";
  743. opt_rrgstno.value="";
  744. opt_hngnm.refresh();
  745. opt_gndrage.refresh();
  746. opt_rrgstno.refresh();
  747. model.makeValue("/root/main/rghtref/rghtreflist/pid","");
  748. return false;
  749. }
  750. //20090629 dhkim
  751. //2009.07.01부터 보험료인상에 대한 주사실 액팅 시점의 수납 메시지 관련 원무인터페이스 호출추가
  752. //주사, 혈액에 대해서만
  753. model.removenodeset('/root/send');
  754. model.removenodeset('/root/insurinfo');
  755. model.makeNode('/root/insurinfo');
  756. model.makeValue('/root/send/pid', pid);
  757. model.makeValue('/root/send/instcd', getUserInfo('dutplceinstcd'));
  758. if(submit('TRMNI02035')){
  759. var prcprcptyn = model.getValue('/root/insurinfo/insurlist/prcprcptyn');
  760. if(prcprcptyn == 'Y'){
  761. messageBox('요율변경 대상자입니다.\r\n수납에서 정산할 수 있도록 안내 해 주시기 바랍니다.', 'E');
  762. //return false;
  763. flag = "new";
  764. //return true;//blocking 제외시킴 20090701 (김병로팀장님)
  765. }
  766. }
  767. if(flag == "new"){
  768. //상병정보, 메모, 진료예약정보, 검사예약정보, 진료내역, 미시행 주사내역 조회
  769. fRghtDataList();
  770. model.removeNodeset("/root/main/prcpdetl/prcpdetllist");
  771. model.refresh();
  772. }
  773. }
  774. return true;
  775. }
  776. /**
  777. * @group :
  778. * @ver : 2007.05.11
  779. * @by : 신혁춘
  780. * @---------------------------------------------------
  781. * @type : function
  782. * @access : public
  783. * @desc : 오른쪽 조회시
  784. * @param :
  785. * @return :
  786. * @---------------------------------------------------
  787. */
  788. function fRghtDataList(){
  789. var hngnm = model.getValue("/root/main/rghtref/rghtreflist/hngnm");
  790. if(hngnm==""){
  791. messageBox("환자가 조회되지", "E007")
  792. return;
  793. }
  794. var iRow = grd_biztrgtman.row;
  795. var cretno = model.getValue(xBizTrgtManListPath+"["+iRow+"]/cretno");
  796. var allterm = model.getValue("/root/main/allterm");
  797. var orddd = model.getValue(xBizTrgtManListPath+"["+iRow+"]/orddd");
  798. var bizorddd = model.getValue("/root/main/leftref/bizdd");
  799. var ordsperRow = grd_ordsper.row;
  800. var depthngnm, usernm;
  801. //[20081121 dhkim] 진료내역그리드에 선택되어진 진료내역 있으면 해당일자를 set
  802. if(model.getValue('/root/temp/grdnm') == 'grd_ordsper' && ordsperRow > 0){
  803. orddd = model.getValue('/root/main/rghtlist/ordsperlist[' + ordsperRow + ']/actorddd');
  804. depthngnm = model.getValue('/root/main/rghtlist/ordsperlist[' + ordsperRow + ']/depthngnm');
  805. usernm = model.getValue('/root/main/rghtlist/ordsperlist[' + ordsperRow + ']/usernm');
  806. if(bizorddd == null || bizorddd == ''){
  807. bizorddd = orddd;
  808. }
  809. }
  810. if(orddd == null || orddd == ''){
  811. orddd = getCurrentDate();
  812. }
  813. if(bizorddd == null || bizorddd == ''){
  814. bizorddd = orddd;
  815. }
  816. model.removeNodeset("/root/send");
  817. model.makeValue("/root/send/pid", model.getValue("/root/main/rghtref/rghtreflist/pid"));
  818. model.makeValue("/root/send/allterm", allterm);//전체기간 체크여부
  819. model.makeValue("/root/send/orddd", orddd);
  820. model.makeValue("/root/send/bizorddd", bizorddd);
  821. model.makeValue("/root/send/cretno", cretno);
  822. model.makeValue("/root/send/exec", model.getValue("/root/main/leftref/exec"));
  823. //상병정보, 메모, 진료예약정보, 검사예약정보, 진료내역, 미시행주사내역 조회
  824. if(submit("TRMNI02024")){
  825. var seqno = model.getValue("/root/main/rghtlist/memolist/seqno")
  826. if(seqno == ""){
  827. //메모 데이타 없을시 이전 데이타 삭제
  828. tar_memo.value="";
  829. tar_memo.refresh();
  830. }
  831. var memocnts=model.getValue("/root/main/rghtlist/memolist/memocnts");
  832. if(memocnts == "" || memocnts == null){
  833. model.makeValue("/root/main/rghtlist/memolist/memocnts","");
  834. tar_memo.value = "";
  835. tar_memo.refresh();
  836. }
  837. }
  838. //[20081121 dhkim] 진료내역 재조회후 해당일자 선택된 상태로 변경 grd_ordsper.row = ordsperRow;
  839. if(model.getValue('/root/temp/grdnm') == 'grd_ordsper' && ordsperRow > 0){
  840. var _actorddd, _depthngnm, _usernm;
  841. for(var i = 1; grd_ordsper.rows; i++){
  842. _actorddd = model.getValue('/root/main/rghtlist/ordsperlist[' + i + ']/actorddd');
  843. _depthngnm = model.getValue('/root/main/rghtlist/ordsperlist[' + i + ']/depthngnm');
  844. _usernm = model.getValue('/root/main/rghtlist/ordsperlist[' + i + ']/usernm');
  845. if(orddd == _actorddd && depthngnm == _depthngnm && usernm == _usernm){
  846. grd_ordsper.row = i;
  847. grd_ordsper.topRow = i-1;
  848. return;
  849. }
  850. }
  851. }else{
  852. //20090604 dhkim 최근진료내역 선택상태로 보여줌
  853. if(grd_ordsper.rows > 1){
  854. grd_ordsper.row = 1;
  855. }
  856. }
  857. }
  858. /**
  859. * @group :
  860. * @ver : 2007.05.14
  861. * @by : 신혁춘
  862. * @---------------------------------------------------
  863. * @type : function
  864. * @access : public
  865. * @desc : 오른쪽 메모
  866. * @param :
  867. * @return :
  868. * @---------------------------------------------------
  869. */
  870. function fMemoInsert(){
  871. var memocnts = tar_memo.value;
  872. var seqno = model.getValue("/root/main/rghtlist/memolist/seqno")
  873. var hngnm = model.getValue("/root/main/rghtref/rghtreflist/hngnm");
  874. //메모 데이타 조회시 환자 선택 여부 파악
  875. if(hngnm==""){
  876. messageBox("환자가 선택되지", "E007")
  877. return;
  878. }
  879. model.removeNodeset("/root/send");
  880. model.makeValue("/root/send/pid", model.getValue("/root/main/rghtref/rghtreflist/pid"));
  881. model.makeValue("/root/send/memocnts", memocnts);
  882. model.makeValue("/root/send/seqno",model.getValue("/root/main/rghtlist/memolist/seqno"));
  883. if(submit("TXMNI02021")){
  884. fRghtDataList();
  885. }
  886. }
  887. /**
  888. 20090806 dhkim 주석처리
  889. * @group :
  890. * @ver : 2008.11.03
  891. * @by :
  892. * @---------------------------------------------------
  893. * @type : function
  894. * @access : public
  895. * @desc : acting 취소
  896. * @param :
  897. * @return :
  898. * @---------------------------------------------------
  899. function fActingCancel(){
  900. var iRow = grd_biztrgtman.row;
  901. var Row = grd_prcpdetl.rows;
  902. var jRow = grd_prcpdetl.row;
  903. var oRow = grd_ordsper.row;
  904. var xPrcpDetlPath = "/root/main/prcpdetl/prcpdetllist"
  905. //환자 선택 여부 파악
  906. if(Row==1){
  907. messageBox("환자가 선택되지", "E007")
  908. return;
  909. }
  910. //처방선택여부 파악
  911. var chek = 0;
  912. var kRow = 0;
  913. for (i=1; i<Row; i++){
  914. chek = chek + grd_prcpdetl.textmatrix(i,1);
  915. if(grd_prcpdetl.textmatrix(i,1) == "1"){
  916. kRow = kRow +","+ i
  917. }
  918. }
  919. if(chek==0){
  920. messageBox("하나 이상의 처방내역을", "C002")
  921. return;
  922. }
  923. var kRows = kRow.split(",");
  924. for(i=1; i < kRows.length; i++){
  925. var exec = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/execdd");
  926. var prcpclscd = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/prcpclscd");
  927. var execchk = getCurrentDate();
  928. var execord = exec.substr(0,8);
  929. var endyn = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/endyn");
  930. var act50yn = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/act50yn");
  931. var dracptyn = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/dracptyn");
  932. var dracptdt = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/dracptdt");
  933. if(exec == "-"){
  934. messageBox("Acting을 실시하지 않은 곳은 Acting 취소를", "E001")
  935. return;
  936. }
  937. if(execord != execchk){
  938. messageBox("Acting을 실시한 일자와 현재 일자가 동일하지 않은 곳은 Acting 취소를", "E001")
  939. return;
  940. }
  941. if(prcpclscd == "B4"){
  942. messageBox("혈액은 Acting 취소를", "E001")
  943. return;
  944. }
  945. // 마감된 처방을 Acting취소시 마감반환사유 프로세스 입력되도록
  946. if (endyn == "Y") {
  947. messageBox("마감된 Acting처방을 취소하려면 반환사유를 ", "C001");
  948. model.makeValue("/root/main/cond/list/prcpdd", model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/prcpdd"));
  949. model.makeValue("/root/main/cond/list/prcpno", model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/prcpno"));
  950. model.makeValue("/root/main/cond/list/prcphistno", model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/prcphistno"));
  951. model.makeValue("/root/main/cond/list/execprcpno", model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/execprcpno"));
  952. model.makeValue("/root/main/cond/list/instcd", getUserInfo("dutplceinstcd"));
  953. model.makeValue("/root/main/cond/list/ioflag", "O");
  954. // 반환사유 팝업
  955. modal("SPPAS03000", "2", "100", "100", "SPPAS03000", "root/main/cond", "root/target", "left:100; top:100; width:400; height:400; sysmenu:hidden; min:visible; max:hidden; :hidden; resize:true; caption:visible;", false);
  956. }
  957. } // for end
  958. if(kRows.length >= 3){
  959. var chkactorddd = model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/actorddd");
  960. for (i=1; i<kRows.length; i++){
  961. var chkactorddd1 = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/actorddd");
  962. if(chkactorddd != chkactorddd1){
  963. messageBox("ACting은 동일한 예약일자가 아니면 Acting실시", "E001");
  964. return;
  965. }
  966. }
  967. }
  968. var prcpexecdeptcd = model.getValue("/root/main/leftref/exec");//세션 부서코드(default)
  969. var ordddlong = model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/orddd")
  970. var orddd = ordddlong.substring(0,8);
  971. model.removeNodeset("/root/send");
  972. model.makeValue("/root/send/acting", "N"); // acting : Y, acting취소 : N
  973. model.makeValue("/root/send/pid", model.getValue("/root/main/rghtref/rghtreflist/pid")); // 등록번호
  974. model.makeValue("/root/send/drugdd", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/actorddd")); // 예정일시
  975. model.makeValue("/root/send/prcpexecdeptcd", prcpexecdeptcd); // 실시부서코드
  976. model.makeValue("/root/send/endyn", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/endyn")); // 마감여부
  977. model.makeValue("/root/send/prcpdetl", grd_prcpdetl.getupdatedataAll("i")); // 처방상세내역 그리드
  978. model.makeValue("/root/send/orddd", orddd);
  979. model.makeValue("/root/send/act50yn", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/act50yn"));
  980. model.makeValue("/root/send/dracptyn", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/dracptyn"));
  981. model.makeValue("/root/send/dracptdt", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/dracptdt"));
  982. //Acting취소 실행
  983. if(submit("TXMNI02026")){
  984. //변경내용저장 실행후 업무대상리스트 다시 조회 실시
  985. fbiztrgtman("acting");
  986. if (model.getValue("/root/main/rghtref/rghtreflist/pid") == model.getValue(xBizTrgtManListPath+"["+iRow+"]/pid")){
  987. //처방 상세내역
  988. fBiztrgtClick("acting");
  989. }else if (oRow != ""){
  990. grd_ordsper.row = oRow;
  991. fordsper();
  992. }
  993. //예약일자 변경시 이전 날짜 선택 여부를 위해서 노드를 copy해둠
  994. model.copyNode("/root/hidden/main", "/root/main");
  995. }
  996. }
  997. */
  998. /**
  999. 20090806 dhkim 주석처리
  1000. * @group :
  1001. * @ver : 2007.05.15
  1002. * @by : 신혁춘
  1003. * @---------------------------------------------------
  1004. * @type : function
  1005. * @access : public
  1006. * @desc : acting 채크
  1007. * @param :
  1008. * @return :
  1009. * @---------------------------------------------------
  1010. function fActing(){
  1011. var iRow = grd_biztrgtman.row;
  1012. var Row = grd_prcpdetl.rows;
  1013. var jRow = grd_prcpdetl.row;
  1014. var oRow = grd_ordsper.row;
  1015. var xPrcpDetlPath = "/root/main/prcpdetl/prcpdetllist"
  1016. //acting채크 시 환자 선택 여부 파악
  1017. if(Row==1){
  1018. messageBox("환자가 선택되지", "E007")
  1019. return;
  1020. }
  1021. //처방선택여부 파악
  1022. var chek = 0;
  1023. var kRow = 0;
  1024. for (i=1; i<Row; i++){
  1025. chek = chek + grd_prcpdetl.textmatrix(i,1);
  1026. if(grd_prcpdetl.textmatrix(i,1) == "1"){
  1027. kRow = kRow +","+ i
  1028. }
  1029. }
  1030. if(chek==0){
  1031. messageBox("하나 이상의 처방내역을", "C002")
  1032. return;
  1033. }
  1034. //선택한 처방에 해당하는 row만 돌면서 acting validation을 체크한다.
  1035. var kRows = kRow.split(",");
  1036. for(i=1; i<kRows.length; i++){
  1037. var exec = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/execdd");
  1038. var prcpclscd = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/prcpclscd");
  1039. var execchk = getCurrentDate();
  1040. var execord = exec.substr(0,8);
  1041. var endyn = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/endyn");
  1042. var act50yn = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/act50yn");
  1043. var dracptyn = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/dracptyn");
  1044. var dracptdt = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/dracptdt");
  1045. if(exec != "-"){
  1046. messageBox("Acting을 실시한 곳은 다시 Acting을", "E001")
  1047. return;
  1048. }
  1049. var stat = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/stat");
  1050. var prcpclscd = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/prcpclscd");
  1051. var cdnm = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/cdnm");
  1052. //항암, 주사 가 아니면 조회만 가능
  1053. //20090316 dhkim 무균(A9)추가
  1054. if(prcpclscd != "A7" && prcpclscd != "A6" && prcpclscd != "A8" && prcpclscd != "A9"){
  1055. messageBox("항암, 무균, 주사만 Acting을 할 수 있습니다.", "E");
  1056. return;
  1057. }
  1058. if(prcpclscd == "B4"){
  1059. messageBox("혈액은 수혈 기록을 통해서만 Acting을 할 수 있습니다.", "E")
  1060. return;
  1061. }
  1062. //20090316 dhkim 무균(A9)추가
  1063. if(prcpclscd == "A7" || prcpclscd == "A9"){
  1064. if(stat != "2"){
  1065. messageBox("조제완료 되지 않은 항암, 무균제는 Acting을", "E001")
  1066. return;
  1067. }
  1068. }
  1069. if(cdnm == "마약"){
  1070. if(stat != "5"){
  1071. messageBox("불출 되지 않은 마약은 Acting을", "E001")
  1072. return;
  1073. }
  1074. }
  1075. }
  1076. if(kRows.length >= 3){
  1077. var chkactorddd = model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/actorddd");//맨첫번째 row의 값과 비교
  1078. for (i=1; i<kRows.length; i++){
  1079. var chkactorddd1 = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/actorddd");
  1080. if(chkactorddd != chkactorddd1){
  1081. messageBox("Acting은 동일한 예약일자가 아니면 Acting실시", "E001");
  1082. return;
  1083. }
  1084. }
  1085. }
  1086. // 20081103 dhkim
  1087. // 특수주사실의 경우 외래처방과 입원처방이 동시에 발생가능하고 병동재원환자의 처방에 대해서는 blocking처리함
  1088. model.removeNodeset("/root/send");
  1089. model.makeValue("/root/send/pid",model.getValue("/root/main/rghtref/rghtreflist/pid"));
  1090. //재원환자의 처방acting을 blocking한다.
  1091. if(submit("TRMNI02028")){
  1092. if(model.getValue("/root/init/acting/chking/actingchk") > 0){
  1093. messageBox("현재 입원 환자는 Acting을", "E001")
  1094. return;
  1095. }
  1096. }
  1097. var prcpexecdeptcd = model.getValue("/root/main/leftref/exec");//세션 부서코드(default)
  1098. var ordddlong = model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/orddd");
  1099. var orddd = ordddlong.substring(0,8);
  1100. model.removeNodeset("/root/send");
  1101. model.makeValue("/root/send/acting", "Y"); // acting : Y, acting취소 : N
  1102. model.makeValue("/root/send/pid", model.getValue("/root/main/rghtref/rghtreflist/pid")); // 등록번호
  1103. model.makeValue("/root/send/drugdd", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/actorddd")); // 예정일시
  1104. model.makeValue("/root/send/prcpexecdeptcd", prcpexecdeptcd); // 실시부서코드
  1105. model.makeValue("/root/send/endyn", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/endyn")); // 마감여부
  1106. model.makeValue("/root/send/prcpdetl", grd_prcpdetl.getupdatedataAll("i")); // 처방상세내역 그리드
  1107. model.makeValue("/root/send/orddd", orddd);
  1108. model.makeValue("/root/send/act50yn", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/act50yn")); //
  1109. model.makeValue("/root/send/dracptyn", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/dracptyn")); //
  1110. model.makeValue("/root/send/dracptdt", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/dracptdt")); //
  1111. //Acting실행
  1112. if(submit("TXMNI02022")){
  1113. if (model.getValue("/root/main/rghtref/rghtreflist/pid") == model.getValue(xBizTrgtManListPath+"["+iRow+"]/pid")){
  1114. //처방 상세내역
  1115. fBiztrgtClick("acting");
  1116. }else if (oRow != ""){
  1117. grd_ordsper.row = oRow;
  1118. fordsper();
  1119. }else{
  1120. //변경내용저장 실행후 업무대상리스트 다시 조회 실시
  1121. fbiztrgtman("acting");
  1122. }
  1123. //예약일자 변경시 이전 날짜 선택 여부를 위해서 노드를 copy해둠
  1124. model.copyNode("/root/hidden/main", "/root/main");
  1125. }
  1126. }
  1127. */
  1128. /**
  1129. * @group :
  1130. * @ver : 2007.05.16
  1131. * @by : 신혁춘
  1132. * @---------------------------------------------------
  1133. * @type : function
  1134. * @access : public
  1135. * @desc : 예약일자 이전 날자 채크
  1136. * @param :
  1137. * @return :
  1138. * @---------------------------------------------------
  1139. */
  1140. function rsrvdd(){
  1141. var xPrcpDetlPath = "/root/main/prcpdetl/prcpdetllist";
  1142. var xPrcpDetlBKPath = "/root/hidden/main/prcpdetl/prcpdetllist";
  1143. var sDetlGrupRow = grd_prcpdetl.row;
  1144. var sDetlGrupBKRow = 0;
  1145. var chkdd = model.getValue(xPrcpDetlPath+"["+sDetlGrupRow+"]/flag");
  1146. var setcordflag = model.getValue(xPrcpDetlPath+"["+sDetlGrupRow+"]/etcordflag"); // 원무예약구분
  1147. var sprcpclscdnow = model.getValue(xPrcpDetlPath+"["+sDetlGrupRow+"]/prcpclscdnow"); // 구분
  1148. //Acting 실시 후 일자 변경인지 파악한다.
  1149. var exec = grd_prcpdetl.textmatrix(sDetlGrupRow, 18)
  1150. if(chkdd == "0" || chkdd ==null){
  1151. messageBox("예약일자는 선택을 안하면 변경", "E001");
  1152. model.setValue(xPrcpDetlPath+"["+sDetlGrupRow+"]/actorddd",model.getValue(xPrcpDetlBKPath+"["+sDetlGrupRow+"]/actorddd"));
  1153. return;
  1154. }
  1155. if(exec != "-"){
  1156. messageBox("Acting 실시후 예약일자 선택", "E001");
  1157. model.setValue(xPrcpDetlPath+"["+sDetlGrupRow+"]/actorddd",model.getValue(xPrcpDetlBKPath+"["+sDetlGrupRow+"]/actorddd"));
  1158. return;
  1159. }
  1160. //현제 일자 에서 선택한 일자가 이전 날자인지 아닌지 파악한다.
  1161. var nowdate = getCurrentDate()
  1162. if(model.getValue(xPrcpDetlPath+"["+sDetlGrupRow+"]/actorddd") < nowdate){
  1163. messageBox("예약일자는 이전일자로 선택", "E001");
  1164. model.setValue(xPrcpDetlPath+"["+sDetlGrupRow+"]/actorddd",model.getValue(xPrcpDetlBKPath+"["+sDetlGrupRow+"]/actorddd"));
  1165. frsrvtm("15");
  1166. return;
  1167. }
  1168. frsrvtm("15");
  1169. }
  1170. /**
  1171. * @group :
  1172. * @ver : 2007.05.22
  1173. * @by : 신혁춘
  1174. * @---------------------------------------------------
  1175. * @type : function
  1176. * @access : public
  1177. * @desc : 변경내용저장
  1178. * @param :
  1179. * @return :
  1180. * @---------------------------------------------------
  1181. */
  1182. function fChangeSave(flag){
  1183. var iRow = grd_biztrgtman.row;
  1184. var oRow = grd_ordsper.row;
  1185. var xhiddenPrcpDetlPath = "/root/hidden/main/prcpdetl/prcpdetllist"
  1186. var xPrcpDetlPath = "/root/main/prcpdetl/prcpdetllist"
  1187. var Row = grd_prcpdetl.rows;
  1188. //변경내용저장 시 환자 선택 여부 파악
  1189. if(Row==1){
  1190. messageBox("환자가 선택되지", "E007")
  1191. return;
  1192. }
  1193. var kRow = 0;
  1194. var chek = 0;
  1195. for (i=1; i<Row; i++){
  1196. chek = chek + grd_prcpdetl.textmatrix(i,1);
  1197. if(grd_prcpdetl.textmatrix(i,1) == "1"){
  1198. kRow = kRow +","+ i
  1199. }
  1200. }
  1201. if(chek==0){
  1202. messageBox("하나 이상의 처방내역을", "C002")
  1203. return;
  1204. }
  1205. var kRows = kRow.split(",");
  1206. var chkactorddd = model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/actorddd");
  1207. var chkactorddd1, drugno;
  1208. //20081223 dhkim
  1209. //약번호의 경우 항암 뿐 아니라 마약의 경우에도 따지 므로 메세지를 구분할 필요가 있음
  1210. var cdnm;
  1211. if(kRows.length >= 3){
  1212. for (i=1; i<kRows.length; i++){
  1213. chkactorddd1 = model.getValue(xhiddenPrcpDetlPath+"["+kRows[i]+"]/actorddd");
  1214. drugno = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/drugno");
  1215. //20081223 dhkim
  1216. cdnm = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/cdnm");
  1217. if(drugno != "0"){
  1218. if(cdnm == "마약"){
  1219. messageBox("마약 불출신청 접수 후 예약일자 변경을", "E001");
  1220. }else{
  1221. messageBox("특조전송후 예약일자 변경을", "E001");
  1222. }
  1223. return;
  1224. }
  1225. if(chkactorddd != chkactorddd1){
  1226. messageBox("초기 동일한 예약일자가 아니면 저장", "E001");
  1227. return;
  1228. }
  1229. }
  1230. }
  1231. var lRow = 0;
  1232. var chkactorddd = model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/actorddd");
  1233. for (i=1; i<Row; i++){
  1234. var chkactorddd1 = model.getValue(xhiddenPrcpDetlPath+"["+i+"]/actorddd");
  1235. if(chkactorddd == chkactorddd1){
  1236. lRow = lRow +","+ i
  1237. }
  1238. }
  1239. var lRows = lRow.split(",");
  1240. for (i=1; i<Row; i++){
  1241. var actordddchk = model.getValue(xPrcpDetlPath+"["+i+"]/actorddd");
  1242. var actordddchk1 = model.getValue(xhiddenPrcpDetlPath+"["+i+"]/actorddd");
  1243. if (actordddchk != actordddchk1){
  1244. if (kRow != lRow){
  1245. messageBox("동일한 일자를 모두 선택 하지 않으면 저장", "E001");
  1246. return;
  1247. }
  1248. }
  1249. }
  1250. var vewactorddd1 = model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/actorddd");
  1251. for (i=1; i<kRows.length; i++){
  1252. var vewactorddd2 = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/actorddd");
  1253. if(vewactorddd1 != vewactorddd2){
  1254. messageBox("예약 일자를 모두 동일한 일자로 변경 하지 않으면 저장", "E001");
  1255. return;
  1256. }
  1257. }
  1258. if(flag != "Ant"){
  1259. var prcpexecdeptcd = model.getValue("/root/main/leftref/exec");
  1260. var flag = "Change";
  1261. model.removeNodeset("/root/send");
  1262. model.makeValue("/root/send/pid",model.getValue("/root/main/rghtref/rghtreflist/pid"));
  1263. model.makeValue("/root/send/drugdd",model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/actorddd"));
  1264. model.makeValue("/root/send/ordtm",model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/ordtm"));
  1265. model.makeValue("/root/send/acting",flag);
  1266. model.makeValue("/root/send/prcpexecdeptcd",prcpexecdeptcd);
  1267. model.makeValue("/root/send/prcpdetl",grd_prcpdetl.getupdatedataAll("i"));
  1268. //변경내용저장실행
  1269. if(submit("TXMNI02027")){
  1270. //20081212 dhkim 0원수납 에러메세지 테스트 ..
  1271. if(model.getValue('/root/savechangeinfo/rcptinfo/rcptYn') == 'N'){
  1272. alert(model.getValue('/root/savechangeinfo/rcptinfo/errMsg'));
  1273. }
  1274. //변경내용저장 실행후 업무대상리스트 다시 조회 실시
  1275. fbiztrgtman("acting");
  1276. if (model.getValue("/root/main/rghtref/rghtreflist/pid") == model.getValue(xBizTrgtManListPath+"["+iRow+"]/pid")){
  1277. //업무대상리스트 다시 조회후 현재 Row의 위치에 선택 실시
  1278. grd_biztrgtman.row = iRow;
  1279. //처방 상세내역
  1280. fBiztrgtClick("acting");
  1281. }else if (oRow != ""){
  1282. grd_ordsper.row = oRow;
  1283. fordsper();
  1284. }
  1285. //예약일자 변경시 이전 날짜 선택 여부를 위해서 노드를 copy해둠
  1286. model.copyNode("/root/hidden/main", "/root/main");
  1287. }
  1288. }
  1289. }
  1290. /**
  1291. * @group :
  1292. * @ver : 2007.05.22
  1293. * @by : 신혁춘
  1294. * @---------------------------------------------------
  1295. * @type : function
  1296. * @access : public
  1297. * @desc : 처방전+acting 클릭시
  1298. * @param :
  1299. * @return :
  1300. * @---------------------------------------------------
  1301. */
  1302. function fMpsActing(){
  1303. var mpsacting = checkbox3.value;//처방전+acting
  1304. if(mpsacting=="1"){
  1305. button11.disabled = true;//acting버튼 비활성화
  1306. }else if(mpsacting==""){
  1307. button11.disabled = false;//acting버튼 활성화
  1308. }
  1309. }
  1310. /**
  1311. * @group :
  1312. * @ver : 2007.05.30
  1313. * @by : 신혁춘
  1314. * @---------------------------------------------------
  1315. * @type : function
  1316. * @access : public
  1317. * @desc : 미시행 주사내역 부분 클릭시
  1318. * @param :
  1319. * @return :
  1320. * @---------------------------------------------------
  1321. */
  1322. function finjsper(){
  1323. var iRow = grd_injsper.row;
  1324. var xBizInjSper = "/root/main/rghtlist/injsperlist";
  1325. model.removeNodeset("/root/send");
  1326. model.removeNodeset("/root/hidden/main");
  1327. model.makeValue("/root/send/pid",model.getValue("/root/main/rghtref/rghtreflist/pid"));
  1328. model.makeValue("/root/send/drugdd",model.getValue(xBizInjSper+"["+iRow+"]/actorddd"));
  1329. model.makeValue("/root/send/orddd",model.getValue(xBizInjSper+"["+iRow+"]/orddd"));
  1330. model.makeValue("/root/send/depthngnm",model.getValue(xBizInjSper+"["+iRow+"]/depthngnm"));
  1331. model.makeValue("/root/send/exec",model.getValue("/root/main/leftref/exec"));
  1332. var kRows = grd_ordsper.rows;
  1333. var xOresperPath = "/root/main/rghtlist/ordsperlist"
  1334. for(p=1; p<kRows; p++){
  1335. var drugdd = model.getValue("/root/send/drugdd");
  1336. var depthngnm = model.getValue("/root/send/depthngnm");
  1337. var orddd1 = model.getValue(xOresperPath+"["+p+"]/actorddd");
  1338. var depthngnm1 = model.getValue(xOresperPath+"["+p+"]/depthngnm");
  1339. if(drugdd == orddd1 && depthngnm == depthngnm1){
  1340. grd_ordsper.row = p;
  1341. grd_ordsper.refresh();
  1342. }
  1343. }
  1344. fordsper();
  1345. }
  1346. /**
  1347. * @group :
  1348. * @ver : 2007.06.01
  1349. * @by : 신혁춘
  1350. * @---------------------------------------------------
  1351. * @type : function
  1352. * @access : public
  1353. * @desc : 환자번호 조회 돋보기 클릭시
  1354. * @param :
  1355. * @return :
  1356. * @---------------------------------------------------
  1357. */
  1358. function fPatSrch(){
  1359. modal("../../../pam/patinfomngtweb/xrw/SPPMC02500", "1","150", "150", "SPPMC02500", "/root/source", "/root/send");
  1360. var popupendflag = model.getValue("/root/main/popupendflag");
  1361. if (popupendflag == "ok"){
  1362. model.setValue("/root/main/rghtref/rghtreflist/pid",model.getValue("/root/main/patinfo/patinfolist/pid"));
  1363. model.refresh();
  1364. var pid = "/root/main/rghtref/rghtreflist/pid"
  1365. if (pid != null && pid != "" && pid != " " && pid != "-"){
  1366. //20090629 dhkim 7/1고시변경으로 인한 리턴값 추가
  1367. var rtn = fpidref("new");
  1368. if(!rtn){
  1369. return false;
  1370. }
  1371. }
  1372. }
  1373. }
  1374. /**
  1375. * @group :
  1376. * @ver : 2007.05.30
  1377. * @by : 신혁춘
  1378. * @---------------------------------------------------
  1379. * @type : function
  1380. * @access : public
  1381. * @desc : 진료내역 부분 클릭시
  1382. * @param :
  1383. * @return :
  1384. * @---------------------------------------------------
  1385. */
  1386. function fordsper(){
  1387. var actorddd = model.getValue(xBizordsper+"["+grd_ordsper.row+"]/actorddd"); //진료내역의 처방일
  1388. var pid = model.getValue("/root/main/rghtref/rghtreflist/pid");//등록번호(오른쪽검색)
  1389. var cretno = model.getValue(xBizordsper+"["+grd_ordsper.row+"]/cretno"); //환자생성번호
  1390. //처방상세내역조회
  1391. fSearchPrcpDetail();
  1392. grd_ordsper.row = grd_ordsper.row;
  1393. model.makeValue("/root/hidden/flags","grd_ordsper");
  1394. /*
  1395. var iRow = grd_ordsper.row;
  1396. var xBizordsper = "/root/main/rghtlist/ordsperlist";
  1397. var orddd = model.getValue("/root/main/leftref/bizdd");//업무일자
  1398. model.removeNodeset("/root/send");
  1399. model.removeNodeset("/root/hidden/main");
  1400. model.makeValue("/root/send/orddd", orddd); //업무일자(왼쪽조회조건)
  1401. model.makeValue("/root/send/bizorddd", model.getValue(xBizordsper+"["+iRow+"]/actorddd")); //진료내역의 처방일
  1402. model.makeValue("/root/send/pid", model.getValue("/root/main/rghtref/rghtreflist/pid"));//등록번호(오른쪽검색)
  1403. model.makeValue("/root/send/drugdd", model.getValue(xBizordsper+"["+iRow+"]/actorddd")); //진료내역의 처방일
  1404. model.makeValue("/root/send/cretno", model.getValue(xBizordsper+"["+iRow+"]/cretno")); //진료내역의 생성번호
  1405. model.makeValue("/root/send/addoprc", model.getValue('/root/main/addoprc')); //20081030 외래처방포함조회
  1406. //처방상세내역조회2
  1407. if(submit("TRMNI02023")){
  1408. model.makeValue("/root/hidden/main", "");
  1409. model.copyNode("/root/hidden/main", "/root/main");
  1410. var Row = grd_prcpdetl.rows;
  1411. var Row = grd_prcpdetl.rows;
  1412. var xPrcpDetlPath = "/root/main/prcpdetl/prcpdetllist"
  1413. var Row = grd_prcpdetl.rows;
  1414. var mixchk = 0;
  1415. //처방상태에 따른 처방상세내역 리스트에 상태값 display설정
  1416. for(i=1; i<Row; i++){
  1417. var execdd = model.getValue(xPrcpDetlPath+"["+i+"]/execrid");
  1418. var blodcomstat = model.getValue(xPrcpDetlPath+"["+i+"]/blodcomstat");
  1419. var execprcpstatcd = model.getValue(xPrcpDetlPath+"["+i+"]/execprcpstatcd");
  1420. var prcpclscd = model.getValue(xPrcpDetlPath+"["+i+"]/prcpclscd");
  1421. var drugno = model.getValue(xPrcpDetlPath+"["+i+"]/drugno");
  1422. var cdnm = model.getValue(xPrcpDetlPath+"["+i+"]/cdnm");
  1423. var etcprcpresncd = model.getValue(xPrcpDetlPath+"["+i+"]/etcprcpresncd"); // 수혈반납 및 폐기사유코드
  1424. var blodcomstat = model.getValue(xPrcpDetlPath+"["+i+"]/blodcomstat"); // 성분제제상태
  1425. //230수납, 투약번호따지고 마약이 아닐때 전송완료상태
  1426. if(drugno != "0" && execprcpstatcd == "230" && cdnm!="마약"){
  1427. grd_prcpdetl.textmatrix(i, 3) = 13 //전송완료
  1428. }
  1429. //300조제보류
  1430. if(execprcpstatcd == "300"){
  1431. grd_prcpdetl.textmatrix(i, 3) = 1 //조제보류
  1432. }
  1433. if(execprcpstatcd == "310" || execprcpstatcd == "315" && prcpclscd == "A7"){
  1434. grd_prcpdetl.textmatrix(i, 3) = 2 //조제완료
  1435. var mixk = model.getValue(xPrcpDetlPath+"["+i+"]/mix")
  1436. var actordddk = model.getValue(xPrcpDetlPath+"["+i+"]/actorddd")
  1437. var rsrvtmk = model.getValue(xPrcpDetlPath+"["+i+"]/rsrvtm")
  1438. var ordddk = model.getValue(xPrcpDetlPath+"["+i+"]/orddd")
  1439. for (r=0; r<Row; r++){
  1440. var mixr = model.getValue(xPrcpDetlPath+"["+r+"]/mix");
  1441. var actordddr = model.getValue(xPrcpDetlPath+"["+r+"]/actorddd")
  1442. var rsrvtmr = model.getValue(xPrcpDetlPath+"["+r+"]/rsrvtm")
  1443. var ordddr = model.getValue(xPrcpDetlPath+"["+r+"]/orddd")
  1444. if(mixk == mixr && actordddr == actordddk && rsrvtmr == rsrvtmk && ordddr == ordddk){
  1445. grd_prcpdetl.textmatrix(r, 3) = 2 //조제완료
  1446. }
  1447. }
  1448. }
  1449. var printyn = model.getValue(xPrcpDetlPath+"["+i+"]/printyn")
  1450. if(printyn == "Y" && execprcpstatcd != "610"){
  1451. grd_prcpdetl.cellstyle("background-color", i, 0, i, 19) = '#FFFFCC';
  1452. }
  1453. if(execprcpstatcd == "500" || execprcpstatcd == "505" || execprcpstatcd == "510"){
  1454. grd_prcpdetl.textmatrix(i, 3) = 11 //접수
  1455. }
  1456. if(execprcpstatcd == "520" || execprcpstatcd == "525"){
  1457. grd_prcpdetl.textmatrix(i, 3) = 4 //준비완료
  1458. }
  1459. if(execprcpstatcd == "530"){
  1460. if (blodcomstat == "8") {
  1461. grd_prcpdetl.textmatrix(i, 3) = 14 //잔여폐기
  1462. }
  1463. else {
  1464. grd_prcpdetl.textmatrix(i, 3) = 5 //불출
  1465. }
  1466. }
  1467. if(execprcpstatcd == "540"){
  1468. grd_prcpdetl.textmatrix(i, 3) = 7 //반납의뢰
  1469. }
  1470. if(execprcpstatcd == "550"){
  1471. grd_prcpdetl.textmatrix(i, 3) = 8 //반납완료
  1472. }
  1473. if(execprcpstatcd == "560"){
  1474. if (etcprcpresncd == "07" || etcprcpresncd == "12") {
  1475. grd_prcpdetl.textmatrix(i, 3) = 14 //잔여폐기
  1476. }
  1477. else {
  1478. grd_prcpdetl.textmatrix(i, 3) = 9 //폐기의뢰
  1479. }
  1480. }
  1481. if(execprcpstatcd == "570"){
  1482. grd_prcpdetl.textmatrix(i, 3) = 10 //폐기완료
  1483. }
  1484. if(execprcpstatcd == "320"){
  1485. grd_prcpdetl.textmatrix(i, 3) = 5 //불출
  1486. }
  1487. if(prcpclscd =="B4"){
  1488. if(execprcpstatcd == "610"){
  1489. grd_prcpdetl.textmatrix(i, 3) = 12 //실시완료
  1490. }
  1491. }else{
  1492. if(execprcpstatcd == "610"){
  1493. grd_prcpdetl.textmatrix(i, 3) = 6 //시행완료
  1494. }
  1495. }
  1496. var mix = model.getValue(xPrcpDetlPath+"["+i+"]/mix")
  1497. var actorddd = model.getValue(xPrcpDetlPath+"["+i+"]/actorddd")
  1498. var rsrvtm = model.getValue(xPrcpDetlPath+"["+i+"]/rsrvtm")
  1499. var orddd = model.getValue(xPrcpDetlPath+"["+i+"]/orddd")
  1500. if(prcpclscd == "A7"){
  1501. for (k=0; k<Row; k++){
  1502. var mixs = model.getValue(xPrcpDetlPath+"["+k+"]/mix");
  1503. var actorddds = model.getValue(xPrcpDetlPath+"["+k+"]/actorddd")
  1504. var rsrvtms = model.getValue(xPrcpDetlPath+"["+k+"]/rsrvtm")
  1505. var orddds = model.getValue(xPrcpDetlPath+"["+k+"]/orddd")
  1506. if(mix == mixs && mix != '-' && actorddds == actorddd && rsrvtms == rsrvtm && orddds == orddd){
  1507. grd_prcpdetl.textmatrix(k, 2) = 'A7'
  1508. }
  1509. }
  1510. }
  1511. } //처방 상태값을 나타내는 로직 끝
  1512. submit("TRMNI02024");
  1513. var seqno = model.getValue("/root/main/rghtlist/memolist/seqno")
  1514. if(seqno == ""){
  1515. //메모 데이타 없을시 이전 데이타 삭제
  1516. tar_memo.value="";
  1517. tar_memo.refresh();
  1518. }
  1519. grd_ordsper.row = iRow;
  1520. model.makeValue("/root/hidden/flags","grd_ordsper");
  1521. }else{
  1522. messageBox('처방상세내역 조회를', 'E009');
  1523. return;
  1524. }
  1525. */
  1526. }
  1527. /**
  1528. * @group :
  1529. * @ver : 2007.07.27
  1530. * 2008.11.06 dhkim 수정
  1531. * @by : 신혁춘
  1532. * @---------------------------------------------------
  1533. * @type : function
  1534. * @access : public
  1535. * @desc : type2 호출시 base 파라미터 설정
  1536. * @param :
  1537. * @return :
  1538. * @---------------------------------------------------
  1539. */
  1540. function fBaseMakeParameter() {
  1541. /*
  1542. var param = "";
  1543. rowsep = "▩";
  1544. colsep = "▦";
  1545. param = "recflag" + colsep + "dutplaccd" + colsep + "reclnkkey"+ rowsep+"I" + colsep + "012" + colsep + "31900" + rowsep;
  1546. */
  1547. var pid = model.getValue('/root/main/prcpdetl/prcpdetllist/tp2pid');
  1548. var orddd = model.getValue('/root/main/prcpdetl/prcpdetllist/tp2orddd');
  1549. var cretno = model.getValue('/root/main/prcpdetl/prcpdetllist/tp2cretno');
  1550. var instcd = getUserInfo("dutplceinstcd");
  1551. var recflag = "C"; //기록구분 : C (암센터주사실)
  1552. var dutplcecd = "017"; //부서코드 : 017 (암센터주사실)
  1553. //20090602 dhkim bmt주사실 코드추가
  1554. var bmtrecflag = 'F'; //기록구분 : F (BMT주사실)
  1555. var bmtdutplcecd = '023'; //부서코드 : 023 (BMT주사실)
  1556. //20090602 dhkim 암센터/bmt 주사실 여부에 따라 parameter 값을 세팅한다
  1557. if(drprcpetc2 == 'B'){
  1558. recflag = bmtrecflag;
  1559. dutplcecd = bmtdutplcecd;
  1560. }
  1561. //기록연계키 --> PID+”,”+INDD(ORDDD)+”,”+CRETNO+”,”+INSTCD
  1562. var recInkkey = pid + "," + orddd + "," + cretno + "," + instcd;
  1563. var param = "recflag▦dutplaccd▦reclnkkey▩" + recflag + "▦" + dutplcecd + "▦" + recInkkey + "▩";
  1564. return param;
  1565. }
  1566. /**
  1567. * @group :
  1568. * @ver : 2007.07.27
  1569. * @by : 신혁춘
  1570. * @---------------------------------------------------
  1571. * @type : function
  1572. * @access : public
  1573. * @desc : 간호 기록 연결(값있을때)
  1574. * @param :
  1575. * @return :
  1576. * @---------------------------------------------------
  1577. */
  1578. function fMakeParameter() {
  1579. var acptyn ="";
  1580. var prcpflag="";
  1581. var prcpcd = "";
  1582. var prcpnm = "";
  1583. var prcpvol = "";
  1584. var prcpvolunitflag="";
  1585. var prcpqty = "";
  1586. var prcpqtyunitflag = "";
  1587. var prcptims = "";
  1588. var drugmthdspccd = "";
  1589. var abbrnm = "";
  1590. var prcpdeliverfact = "";
  1591. var datagrouplist = "";
  1592. var datagroup = "";
  1593. var param = "prcpflag▦prcpnm▩";
  1594. for(var i = 1; i < grd_prcpdetl.rows; i++) {
  1595. acptyn = model.getValue("/root/main/prcpdetl/prcpdetllist[" + i + "]/flag"); //체크여부
  1596. if(acptyn == "1") {
  1597. datagrouplist = model.getValue("/root/main/prcpdetl/prcpdetllist[" + i + "]/datagroup"); //용량/수량/횟수/투여경로 str
  1598. datagroup = datagrouplist.split("/");
  1599. prcpflag = model.getValue("/root/main/prcpdetl/prcpdetllist[" + i + "]/prcpclscd"); //주사 혈액등 구분
  1600. prcpcd = model.getValue("/root/main/prcpdetl/prcpdetllist[" + i + "]/prcpcd"); //처방코드
  1601. prcpnm = model.getValue("/root/main/prcpdetl/prcpdetllist[" + i + "]/prcpnm"); //처방명
  1602. prcpvol = datagroup[0]; //용량
  1603. prcpvolunitflag = datagroup[1]; //단위
  1604. prcpqty = datagroup[2]; //수량
  1605. prcpqtyunitflag = datagroup[3]; //단위
  1606. prcptims = datagroup[4]; //횟수
  1607. abbrnm = datagroup[5]; //투약경로
  1608. /*
  1609. - 처방구분(prcpflag)
  1610. A : 투약 (A2:경구, A4:외용, A6:주사)
  1611. H : 처치 (F2:재활, G2:RT, H2:수술, H4:처치)
  1612. T : 검사 (B2:진검, B4:수혈, B6:핵의학검체, C2:영상, C4:ANGIO, C6:핵의학영상(체내), D2: 병리, E2:기능)
  1613. */
  1614. // ① 투약 : 처방코드/처방명/일일용량/단위/일일수량/단위/일수/경로/용법
  1615. // * 주사실의 경우 주사에서 내부적으로 구분됨(A7:항암 , A8:예방)
  1616. //20090316 dhkim 무균(A9)추가
  1617. if(prcpflag =="A2" || prcpflag == "A4" ||
  1618. prcpflag == "A6"|| prcpflag == "A7" || prcpflag == "A8" || prcpflag == "A9") {
  1619. //param += prcpflag.substr(0,1) + "▦" + prcpnm + "▩";
  1620. param += "A" + "▦" + prcpcd + "/" + prcpnm + "/" + prcpvol + "/" + prcpvolunitflag + "/" + prcpqty + "/" + prcpqtyunitflag + "/" + prcptims + "/" + abbrnm + "▩";
  1621. // ② 처치 : 처방명/일일수량/Remark(의사처방의 remark)
  1622. } else if(prcpflag=="F2" || prcpflag=="G2" ||
  1623. prcpflag=="H2" || prcpflag=="H4"){
  1624. prcpdelivefact = model.getValue("root/main/patdetlinfo/prcpspec[" + i + "]/prcpdelivefact");
  1625. param += "H" + "▦" + prcpnm + "/" + prcpqty + prcpdeliverfact + "▩";
  1626. // ③ 검사 : 처방명/일일수량/Remark(의사처방의 remark)
  1627. } else if(prcpflag=="B2" || prcpflag=="B4" || prcpflag=="B6" ||
  1628. prcpflag=="C2" || prcpflag=="C4" || prcpflag=="C6" ||
  1629. prcpflag=="D2" || prcpflag=="E2"){
  1630. prcpdelivefact = model.getValue("root/main/patdetlinfo/prcpspec[" + i + "]/prcpdelivefact");
  1631. param += "T" + "▦" + prcpnm + "/" + prcpqty + prcpdeliverfact + "▩";
  1632. }
  1633. }
  1634. }
  1635. return param;
  1636. }
  1637. /**
  1638. * @group :
  1639. * @ver : 2007.09.04
  1640. * @by : 신혁춘
  1641. * @---------------------------------------------------
  1642. * @type : function
  1643. * @access : public
  1644. * @desc : 부위, 차수, LOT, MIX, AST 예약시간동시적용
  1645. * @param :
  1646. * @return :
  1647. * @---------------------------------------------------
  1648. */
  1649. function frsrvtm(flag) {
  1650. var Row = grd_prcpdetl.rows;
  1651. var jRow=grd_prcpdetl.row;
  1652. var xhiddenPrcpDetlPath = "/root/hidden/main/prcpdetl/prcpdetllist"
  1653. var xPrcpDetlPath = "/root/main/prcpdetl/prcpdetllist"
  1654. var rsrvtm = grd_prcpdetl.textmatrix(jRow,flag);
  1655. var chek = 0
  1656. for (i=1; i<Row; i++){
  1657. chek = chek + grd_prcpdetl.textmatrix(i,1);
  1658. }
  1659. if(chek==0){
  1660. return;
  1661. }
  1662. chek3 = model.getValue(xhiddenPrcpDetlPath+"["+jRow+"]/actorddd");
  1663. chek5 = model.getValue(xhiddenPrcpDetlPath+"["+jRow+"]/mix");
  1664. chek7 = model.getValue(xhiddenPrcpDetlPath+"["+jRow+"]/orddd");
  1665. for (i=1; i<Row; i++){
  1666. chek = grd_prcpdetl.textmatrix(i,1);
  1667. chek2 = model.getValue(xhiddenPrcpDetlPath+"["+i+"]/actorddd");
  1668. chek4 = model.getValue(xhiddenPrcpDetlPath+"["+i+"]/mix");
  1669. chek6 = model.getValue(xhiddenPrcpDetlPath+"["+i+"]/orddd");
  1670. if(chek==1 && flag == 15 && chek2 == chek3){
  1671. grd_prcpdetl.textmatrix(i,flag) = rsrvtm;
  1672. }
  1673. if(chek==1 && flag == 16 && chek2 == chek3){
  1674. grd_prcpdetl.textmatrix(i,flag) = rsrvtm;
  1675. }
  1676. if(chek==1 && flag != 15 && flag != 16){
  1677. grd_prcpdetl.textmatrix(i,flag) = rsrvtm;
  1678. }
  1679. }
  1680. }
  1681. /**
  1682. * @group :
  1683. * @ver : 2007.09.10
  1684. * @by : 신혁춘
  1685. * @---------------------------------------------------
  1686. * @type : function
  1687. * @access : public
  1688. * @desc : 혈액불출관리 연결
  1689. * @param :
  1690. * @return :
  1691. * @---------------------------------------------------
  1692. */
  1693. function fopr() {
  1694. var pid = ipt_pid.value;
  1695. setParameter("pid", pid);
  1696. setParameter("SMMNR010_Param", "OPRC1");
  1697. open("SMMNR01000","1","15","128");
  1698. }
  1699. /*
  1700. 20090316 dhkim
  1701. 미사용 펑션으로 판단되어 주석처리함
  1702. * @deprecated
  1703. * @group :
  1704. * @ver : 2008.10.31
  1705. * @by :
  1706. * @---------------------------------------------------
  1707. * @type : function
  1708. * @access : public
  1709. * @desc : 처방상세내역 조회
  1710. * @param :
  1711. * @return :
  1712. * @---------------------------------------------------
  1713. function fSearchPrcpDetl(flag){
  1714. //처방전출력완료후
  1715. if(flag == 'print'){
  1716. model.removeNodeset("/root/send");
  1717. model.makeValue("/root/send/pid", model.getValue(xBizTrgtManListPath+"["+iRow+"]/pid"));
  1718. model.makeValue("/root/send/drugdd", model.getValue(xBizTrgtManListPath+"["+iRow+"]/orddd"));
  1719. model.makeValue("/root/send/exec", model.getValue("/root/main/leftref/exec"));
  1720. model.makeValue("/root/send/addoprc", model.getValue('/root/main/addoprc'));//20081030 외래처방포함조회
  1721. //처방상세내역조회3
  1722. if(submit("TRMNI02023")){
  1723. var xPrcpDetlPath = "/root/main/prcpdetl/prcpdetllist"
  1724. var Row = grd_prcpdetl.rows;
  1725. var mixchk = 0;
  1726. var rcptchk; //20090305 dhkim 후수납관련필드추가
  1727. //처방상태 값에 따른 처방상세내역 리스트에 상태값 을 나타내는 로직 시작
  1728. for(i=1; i<Row; i++){
  1729. var execdd = model.getValue(xPrcpDetlPath+"["+i+"]/execrid");
  1730. var blodcomstat = model.getValue(xPrcpDetlPath+"["+i+"]/blodcomstat");
  1731. var execprcpstatcd = model.getValue(xPrcpDetlPath+"["+i+"]/execprcpstatcd");
  1732. var prcpclscd = model.getValue(xPrcpDetlPath+"["+i+"]/prcpclscd");
  1733. var drugno = model.getValue(xPrcpDetlPath+"["+i+"]/drugno");
  1734. var cdnm = model.getValue(xPrcpDetlPath+"["+i+"]/cdnm");
  1735. var etcprcpresncd = model.getValue(xPrcpDetlPath+"["+i+"]/etcprcpresncd"); // 수혈반납 및 폐기사유코드
  1736. var blodcomstat = model.getValue(xPrcpDetlPath+"["+i+"]/blodcomstat"); // 성분제제상태
  1737. //20090305 dhkim 후수납관련필드추가
  1738. rcptchk = model.getValue(xPrcpDetlPath+"["+i+"]/rcptchk"); // 후수납상태
  1739. //20090305 dhkim
  1740. //특조전송완료 상태로 보여주는 부분 후수납의 경우 230조건 제외할것
  1741. //후수납 : rcptchk값이 V, Y, F일때는 230조건 제외,
  1742. // rcptchk값이 R일때는 230조건
  1743. //20090312 dhkim vip환자의 경우는 수납여부 체크하지 않음
  1744. if(
  1745. (
  1746. (rcptchk == 'R' && execprcpstatcd == "230")
  1747. || (rcptchk == 'V')
  1748. // || (rcptchk == 'Y')
  1749. // || (rcptchk == 'F')
  1750. )
  1751. && drugno != "0" //투약번호 따지고
  1752. && cdnm !="마약" //(마약제외)
  1753. //stat상태값확인할것
  1754. //&& stat != "2" //처방상태 (강제지정시 항암으로 위장된 조제완료된 주사처방을 지정 못하게 하기위함)
  1755. ){
  1756. //alert(rcptchk + ' ' + execprcpstatcd + ' ' + drugno);
  1757. grd_prcpdetl.textmatrix(i, 3) = 13; //전송완료
  1758. }
  1759. /*
  1760. if(drugno != "0" && execprcpstatcd == "230" && cdnm!="마약"){
  1761. grd_prcpdetl.textmatrix(i, 3) = 13 //전송완료
  1762. }
  1763. * /
  1764. if(execprcpstatcd == "300"){
  1765. grd_prcpdetl.textmatrix(i, 3) = 1 //조제보류
  1766. }
  1767. //20090316 dhkim 무균(A9)추가
  1768. if(execprcpstatcd == "310" || execprcpstatcd == "315" && (prcpclscd == "A7"|| prcpclscd == "A9")){
  1769. grd_prcpdetl.textmatrix(i, 3) = 2 //조제완료
  1770. var mixk = model.getValue(xPrcpDetlPath+"["+i+"]/mix")
  1771. var actordddk = model.getValue(xPrcpDetlPath+"["+i+"]/actorddd")
  1772. var rsrvtmk = model.getValue(xPrcpDetlPath+"["+i+"]/rsrvtm")
  1773. var ordddk = model.getValue(xPrcpDetlPath+"["+i+"]/orddd")
  1774. for (r=0; r<Row; r++){
  1775. var mixr = model.getValue(xPrcpDetlPath+"["+r+"]/mix");
  1776. var actordddr = model.getValue(xPrcpDetlPath+"["+r+"]/actorddd")
  1777. var rsrvtmr = model.getValue(xPrcpDetlPath+"["+r+"]/rsrvtm")
  1778. var ordddr = model.getValue(xPrcpDetlPath+"["+r+"]/orddd")
  1779. if(mixk == mixr && actordddr == actordddk && rsrvtmr == rsrvtmk && ordddr == ordddk && rsrvtmr != '000000'){
  1780. grd_prcpdetl.textmatrix(r, 3) = 2 //조제완료
  1781. }
  1782. }
  1783. }
  1784. var printyn = model.getValue(xPrcpDetlPath+"["+i+"]/printyn")
  1785. if(printyn == "Y" && execprcpstatcd != "610"){
  1786. grd_prcpdetl.cellstyle("background-color", i, 0, i, 19) = '#FFFFCC';
  1787. }
  1788. if(execprcpstatcd == "500" || execprcpstatcd == "505" || execprcpstatcd == "510"){
  1789. grd_prcpdetl.textmatrix(i, 3) = 11 //접수
  1790. }
  1791. if(execprcpstatcd == "520" || execprcpstatcd == "525"){
  1792. grd_prcpdetl.textmatrix(i, 3) = 4 //준비완료
  1793. }
  1794. if(execprcpstatcd == "530"){
  1795. if (blodcomstat == "8") {
  1796. grd_prcpdetl.textmatrix(i, 3) = 14 //잔여폐기
  1797. }
  1798. else {
  1799. grd_prcpdetl.textmatrix(i, 3) = 5 //불출
  1800. }
  1801. }
  1802. if(execprcpstatcd == "540"){
  1803. grd_prcpdetl.textmatrix(i, 3) = 7 //반납의뢰
  1804. }
  1805. if(execprcpstatcd == "550"){
  1806. grd_prcpdetl.textmatrix(i, 3) = 8 //반납완료
  1807. }
  1808. if(execprcpstatcd == "560"){
  1809. if (etcprcpresncd == "07" || etcprcpresncd == "12") {
  1810. grd_prcpdetl.textmatrix(i, 3) = 14 //잔여폐기
  1811. }
  1812. else {
  1813. grd_prcpdetl.textmatrix(i, 3) = 9 //폐기의뢰
  1814. }
  1815. }
  1816. if(execprcpstatcd == "570"){
  1817. grd_prcpdetl.textmatrix(i, 3) = 10 //폐기완료
  1818. }
  1819. if(execprcpstatcd == "320"){
  1820. grd_prcpdetl.textmatrix(i, 3) = 5 //출고
  1821. }
  1822. if(prcpclscd =="B4"){
  1823. if(execprcpstatcd == "610"){
  1824. grd_prcpdetl.textmatrix(i, 3) = 12 //실시완료
  1825. }
  1826. }else{
  1827. if(execprcpstatcd == "610"){
  1828. grd_prcpdetl.textmatrix(i, 3) = 6 //시행완료
  1829. }
  1830. }
  1831. var mix = model.getValue(xPrcpDetlPath+"["+i+"]/mix")
  1832. var actorddd = model.getValue(xPrcpDetlPath+"["+i+"]/actorddd")
  1833. var rsrvtm = model.getValue(xPrcpDetlPath+"["+i+"]/rsrvtm")
  1834. var orddd = model.getValue(xPrcpDetlPath+"["+i+"]/orddd")
  1835. if(prcpclscd == "A7"){
  1836. for (k=0; k<Row; k++){
  1837. var mixs = model.getValue(xPrcpDetlPath+"["+k+"]/mix");
  1838. var actorddds = model.getValue(xPrcpDetlPath+"["+k+"]/actorddd")
  1839. var rsrvtms = model.getValue(xPrcpDetlPath+"["+k+"]/rsrvtm")
  1840. var orddds = model.getValue(xPrcpDetlPath+"["+k+"]/orddd")
  1841. if(mix == mixs && mix != '-' && actorddds == actorddd && rsrvtms == rsrvtm && orddds == orddd){
  1842. grd_prcpdetl.textmatrix(k, 2) = 'A7'
  1843. }
  1844. }
  1845. }
  1846. //20090316 dhkim 무균(A9)추가
  1847. if(prcpclscd == "A7"){
  1848. for (k=0; k<Row; k++){
  1849. var mixs = model.getValue(xPrcpDetlPath+"["+k+"]/mix");
  1850. var actorddds = model.getValue(xPrcpDetlPath+"["+k+"]/actorddd")
  1851. var rsrvtms = model.getValue(xPrcpDetlPath+"["+k+"]/rsrvtm")
  1852. var orddds = model.getValue(xPrcpDetlPath+"["+k+"]/orddd")
  1853. if(mix == mixs && mix != '-' && actorddds == actorddd && rsrvtms == rsrvtm && orddds == orddd){
  1854. grd_prcpdetl.textmatrix(k, 2) = 'A7'
  1855. }
  1856. }
  1857. }
  1858. } // for end
  1859. } //처방 상태값을 나타내는 로직 끝
  1860. }
  1861. }
  1862. */
  1863. /**
  1864. * @group :
  1865. * @ver : 2008.10.31
  1866. * @by :
  1867. * @---------------------------------------------------
  1868. * @type : function
  1869. * @access : public
  1870. * @desc : 처방전출력 미리보기
  1871. * @param :
  1872. * @return :
  1873. * @---------------------------------------------------
  1874. */
  1875. function fPrintPreview(){
  1876. var printday = getCurrentDate();
  1877. var printtime = getCurrentTime();
  1878. var flags = model.getValue("/root/hidden/flags");
  1879. model.makeNode("/root/send/report");
  1880. model.copyNode("/root/send/report", "/root/main/prcpdetl");
  1881. //model.copyNode("/root/send/report", "/root/temp/prcpprt/prcpdetl");
  1882. //return;
  1883. model.makeValue("/root/send/report/only/pid", model.getValue("/root/main/rghtref/rghtreflist/pid"));
  1884. model.makeValue("/root/send/report/only/hngnm", model.getValue("/root/main/rghtref/rghtreflist/hngnm"));
  1885. model.makeValue("/root/send/report/only/gndrage", model.getValue("/root/main/rghtref/rghtreflist/gndrage"));
  1886. //20091015 dhkim 주민번호추가
  1887. model.makeValue("/root/send/report/only/rrgstno", model.getValue("/root/main/rghtref/rghtreflist/rrgstno"));
  1888. model.makeValue("/root/send/report/only/termhngnm", model.getValue("/root/main/rghtlist/snwinfolist/termhngnm"));
  1889. model.makeValue("/root/send/report/only/printdaytime", (printday+printtime));
  1890. model.makeValue("/root/send/report/only/mpsacting", model.getValue("/root/main/mpsacting"));
  1891. //부서명, 주치의명 setting
  1892. if(flags == "grd_ordsper"){//진료내역선택시 세팅된값
  1893. model.makeValue("/root/send/report/only/depthngnm", model.getValue(xordsperPath+"[" + grd_ordsper.row + "]/depthngnm"));
  1894. model.makeValue("/root/send/report/only/usernm", model.getValue(xordsperPath+"[" + grd_ordsper.row + "]/usernm"));
  1895. }else if(flags == "grd_biztrgtman"){//업무대상자리스트 선택시 세팅된값
  1896. model.makeValue("/root/send/report/only/depthngnm", model.getValue(xBizTrgtManListPath+"[" + grd_biztrgtman.row + "]/depthngnm"));
  1897. model.makeValue("/root/send/report/only/usernm", model.getValue(xBizTrgtManListPath+"[" + grd_biztrgtman.row + "]/usernm"));
  1898. }
  1899. //처방전 출력 미리보기
  1900. exeReportPreview("RPMNI02020", "XMLSTR" , "" , "" , "true" , "", "", "", "", "true");
  1901. }
  1902. /**
  1903. * @group :
  1904. * @ver : 2008.10.31
  1905. * @by :
  1906. * @---------------------------------------------------
  1907. * @type : function
  1908. * @access : public
  1909. * @desc : 처방전출력+acting전 validation체크
  1910. * @param :
  1911. * @return :
  1912. * @---------------------------------------------------
  1913. */
  1914. function fIsPrintValid(){
  1915. var mpsacting = model.getValue("/root/main/mpsacting");// 처방전 + acting
  1916. model.removenode("/root/send");
  1917. var Row = grd_prcpdetl.rows;
  1918. var jRow = grd_prcpdetl.row;
  1919. var xPrcpDetlPath = "/root/main/prcpdetl/prcpdetllist";
  1920. var xrexportPath = "/root/send/report/for";
  1921. //처방전출력 연결 시 환자 선택 여부 파악
  1922. if(Row == 1){
  1923. messageBox("환자가 선택되지", "E007");
  1924. return false;
  1925. }
  1926. var chek = 0;
  1927. var kRow = 0;
  1928. for (var i=1; i<Row; i++){
  1929. chek = chek + grd_prcpdetl.textmatrix(i,1);//처방상세내역 체크박스 선택/해제 상태
  1930. if(grd_prcpdetl.textmatrix(i,1) == "1"){
  1931. kRow = kRow +","+ i;
  1932. }
  1933. }
  1934. if(chek==0){
  1935. messageBox("하나 이상의 처방내역을", "C002");
  1936. return false;
  1937. }
  1938. var kRows = kRow.split(",");
  1939. var stat, prcpclscd;
  1940. if(mpsacting == "1"){
  1941. for(i=1; i<kRows.length; i++){
  1942. stat = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/stat");
  1943. prcpclscd = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/prcpclscd");
  1944. if(stat == "6"){
  1945. messageBox("Acting을 실시한 곳은 처방전+Acting을", "E001")
  1946. return false;
  1947. }
  1948. if(prcpclscd == "B4" && stat != "5"){//혈액 불출
  1949. messageBox("불출되지 않은 혈액은 처방전+Acting을", "E001")
  1950. return false;
  1951. }
  1952. //20090316 dhkim 무균(A9)추가
  1953. if((prcpclscd == "A7" || prcpclscd == "A9") && stat != "2"){//항암 조제완료
  1954. messageBox("조제완료되지 않은 항암, 무균은 처방전+Acting을", "E001")
  1955. return false;
  1956. }
  1957. }
  1958. }
  1959. var flag = '';
  1960. var cpCnt = 0;
  1961. //선택한 주사, 항암만 rexpert에 넘기도록 노드를 재구성
  1962. model.removenode('/root/temp/prcpprt/prcpdetl');
  1963. model.makeNode('/root/temp/prcpprt/prcpdetl');
  1964. for(var i = 1; i < Row; i++){
  1965. flag = model.getValue(xPrcpDetlPath+"["+ i +"]/flag");
  1966. prcpclscd = model.getValue(xPrcpDetlPath+"["+ i +"]/flag");
  1967. //항암, 주사처방만 출력되도록 rex에 노드를 넘김
  1968. //20090316 dhkim 무균(A9)추가
  1969. if(flag == '1' && (prcpclscd == 'A6' || prcpclscd == 'A7' || prcpclscd == "A9")){
  1970. model.copyNode('/root/temp/prcpprt/prcpdetl['+cpCnt+']', xPrcpDetlPath + '[' + i + ']');
  1971. cpCnt ++;
  1972. }
  1973. }
  1974. return true;
  1975. }
  1976. /**
  1977. 20090806 dhkim 주석처리
  1978. * @group :
  1979. * @ver : 2007.10.09
  1980. * @by : 신혁춘
  1981. * @---------------------------------------------------
  1982. * @type : function
  1983. * @access : public
  1984. * @desc : 처방전출력 연결
  1985. * @param :
  1986. * @return :
  1987. * @---------------------------------------------------
  1988. function fRexpert() {
  1989. var mpsacting = model.getValue("/root/main/mpsacting");// 처방전 + acting
  1990. //처방전 출력전 valid체크
  1991. if(!fIsPrintValid()){
  1992. return ;
  1993. }
  1994. //처방전출력 미리보기창 open
  1995. fPrintPreview();
  1996. if(mpsacting == "1"){
  1997. fActing("Y");//acting실행
  1998. }else{
  1999. //주사실출력시 엑팅 실시 안하고 출력 여부 저장실시 상태값 update
  2000. model.removenode("/root/send");
  2001. model.makeValue("/root/send/pid", model.getValue("/root/main/rghtref/rghtreflist/pid"));
  2002. model.makeValue("/root/send/prcpdetl", grd_prcpdetl.getupdatedataAll("i"));
  2003. if(submit("TXMNI02025")){
  2004. //처방상세내역조회
  2005. fSearchPrcpDetail();
  2006. }
  2007. }
  2008. var curRow = grd_biztrgtman.row;
  2009. //주사실출력시 엑팅 실시 안하고 출력 여부 저장실시 상태값 update
  2010. model.removenode("/root/send");
  2011. model.makeValue("/root/send/pid", model.getValue("/root/main/rghtref/rghtreflist/pid"));
  2012. model.makeValue("/root/send/prcpdetl", grd_prcpdetl.getupdatedataAll("i"));
  2013. if(submit("TXMNI02025")){
  2014. if(mpsacting == "1"){
  2015. grd_biztrgtman.row = curRow;
  2016. fActing("Y");//acting실행
  2017. }else{
  2018. //처방상세내역조회
  2019. fSearchPrcpDetail();
  2020. }
  2021. }
  2022. }
  2023. */
  2024. /**
  2025. * @group :
  2026. * @ver : 2007.10.15
  2027. * @by : 신혁춘
  2028. * @---------------------------------------------------
  2029. * @type : function
  2030. * @access : public
  2031. * @desc : 환자진료정보 링크
  2032. * @param :
  2033. * @return :
  2034. * @---------------------------------------------------
  2035. */
  2036. function fOpenPrcpSpec() {
  2037. var pid = model.getValue(xBizTrgtManListPath + "[" + grd_biztrgtman.row + "]/pid");
  2038. var orddd = model.getValue(xBizTrgtManListPath + "[" + grd_biztrgtman.row + "]/orddd");
  2039. var param = pid;
  2040. setParameter("SMMMO02500_cond", param);
  2041. open("SMMMO02500");
  2042. }
  2043. /**
  2044. * @group :
  2045. * @ver : 2009.02.24
  2046. * @by : 최영
  2047. * @---------------------------------------------------
  2048. * @type : function
  2049. * @access : public
  2050. * @desc : 환자카드출력
  2051. * @param :
  2052. * @return :
  2053. * @---------------------------------------------------
  2054. */
  2055. function fPreview(btnflag, pid, patnm, age, depthngnm, orddrnm){
  2056. // 20090604 dhkim 환자카드출력 버튼기능 추가로 인해 파라미터값 추가
  2057. if(btnflag != 'btn'){
  2058. var fRow = grd_biztrgtman.row;
  2059. pid = model.getValue("/root/main/biztrgtman/biztrgtmanlist["+fRow+"]/pid");
  2060. patnm = model.getValue("/root/main/biztrgtman/biztrgtmanlist["+fRow+"]/hngnm");
  2061. age = model.getValue("/root/main/biztrgtman/biztrgtmanlist["+fRow+"]/gndrage");
  2062. depthngnm = model.getValue("/root/main/biztrgtman/biztrgtmanlist["+fRow+"]/usernm");
  2063. orddrnm = model.getValue("/root/main/biztrgtman/biztrgtmanlist["+fRow+"]/depthngnm");
  2064. }
  2065. //2010.07.06 김달현 - (요청번호14176) [JCI인증대비] 이름 석자 중 가운데 자리는 별표 처리되도록 수정 요청함
  2066. if(patnm.length > 1){
  2067. patnm = patnm.substring(0, 1) + "*" + patnm.substring(2);
  2068. }
  2069. model.makeValue("/root/hidden1/biztrgtman/pid",pid);
  2070. model.makeValue("/root/hidden1/biztrgtman/patnm",patnm);
  2071. model.makeValue("/root/hidden1/biztrgtman/age",age);
  2072. model.makeValue("/root/hidden1/biztrgtman/depthngnm",depthngnm);
  2073. model.makeValue("/root/hidden1/biztrgtman/orddrnm",orddrnm);
  2074. var rid = "RPMNI02021"; // 레포트명
  2075. var dataType = "XMLSTR"; // 연계방법(XMLSTR/ XMLFILE/ XML)
  2076. var paramsXPath = "/root/hidden1/biztrgtman"; // 매개변수필드 XPath
  2077. var submitId = ""; // SubmitID
  2078. var print = ""; // 출력여부(true, false)
  2079. var printDialog = ""; // 인쇄 창 보임 여부(true, false)
  2080. var fileType = ""; // 저장타입(xls/ pdf/ hml/rtf/ html/ bmp/ txt/ xml )
  2081. var fileName = ""; // 파일명(c:\report\레포트명.저장타입)
  2082. var fileDialog = ""; // 파일 저장 창 보임여부(0 : 숨김[기본]/1 : 보임)
  2083. var closeYn = ""; // 미리보기창닫기여부(출력 후 true로 설정한 경우 미리보기 화면 닫기)
  2084. var monNo = ""; // 모니터 번호
  2085. var parentObjId = ""; // 부모객체명(미리 생성한 부모 객체명, 해당 부모 객체에 레포트 데이터를 생성한다.)
  2086. var printPaperBin = ""; // 트레이번호
  2087. var userService = ""; // 데이터 소스
  2088. var showButton = ""; // 툴바버튼보임여부(visible, hidden)
  2089. var printCount = ""; // 프린트장수(1, 2,..)
  2090. var zoomRate = ""; // 미리보기뷰어 비율(0, 50,...)
  2091. var printOption = ""; // 출력시 선택 옵션
  2092. var dataXPath = ""; // 데이터 XPath
  2093. var mainDataXPath = ""; // 메인리포트 반복XPath
  2094. var subDataXPath = ""; // 서브리포트1 반복Xpath
  2095. exeReportPreview(rid, dataType, paramsXPath, submitId, print, printDialog, fileType, fileName, fileDialog, closeYn, monNo, parentObjId, printPaperBin, userService, showButton, printCount, zoomRate, printOption, dataXPath, mainDataXPath, subDataXPath);
  2096. model.refresh();
  2097. }//fPreview END
  2098. /**
  2099. * @desc : 처방 상세보기
  2100. * @param : 전처방, 연속처방, 처방검색 탭버튼 눌렀을 경우 원복 orgflag => Y
  2101. * @id : btn_detlvw
  2102. * @event : DOMActivate
  2103. * @return : void
  2104. * @authur :
  2105. */
  2106. function fDetlVw ( orgflag ) {
  2107. var grdLeft = 827;
  2108. var grdWidht = 367;
  2109. var grdHeight = 128;
  2110. var extnGrdLeft = 0;
  2111. var extnGrdWidht = 1194;
  2112. var extnGrdHeight = 375;
  2113. var prcpcdCol = grd_injsper.colRef("orddd"); //처방코드 컬럼 index
  2114. var prcpnmCol = grd_injsper.colRef("depthngnm"); //처방명 컬럼 index
  2115. var prcpengnmCol = grd_injsper.colRef("prcpcd"); //처방영문명 컬럼 index
  2116. var prcpspecCol = grd_injsper.colRef("prcpnm"); //처방내역 컬럼 index
  2117. var lineX1 = grdLeft;
  2118. var lineX2 = grdLeft + grdWidht;
  2119. var extnLineX1 = extnGrdLeft;
  2120. var extnLineX2 = lineX2;
  2121. var prcpColsize = 50;
  2122. var prcpnmColsize = 130;
  2123. var prcpengnmColsize = 100;
  2124. var prcpspecColsize = 230;
  2125. if ( model.getValue( "/root/init/detlvw" ) == "p" && orgflag != "y" ) {
  2126. grd_injsper.attribute ( "left" ) = extnGrdLeft;
  2127. grd_injsper.attribute ( "width" ) = extnGrdWidht;
  2128. grd_injsper.attribute ( "height" ) = extnGrdHeight;
  2129. line12.attribute ( "x1" ) = extnLineX1;
  2130. line12.attribute ( "x2" ) = extnLineX2;
  2131. model.setValue( "/root/init/detlvw", "m" );
  2132. grd_injsper.colWidth(prcpcdCol) = grd_injsper.colWidth(prcpcdCol) + prcpColsize;
  2133. if(grd_injsper.colWidth(prcpnmCol) != 0) {
  2134. grd_injsper.colWidth(prcpnmCol) = grd_injsper.colWidth(prcpnmCol) + prcpnmColsize;
  2135. }
  2136. if(grd_injsper.colWidth(prcpengnmCol) != 0) {
  2137. grd_injsper.colWidth(prcpengnmCol) = grd_injsper.colWidth(prcpengnmCol) + prcpengnmColsize;
  2138. }
  2139. grd_injsper.colWidth(prcpspecCol) = grd_injsper.colWidth(prcpspecCol) + prcpspecColsize;
  2140. } else {
  2141. grd_injsper.attribute ( "left" ) = grdLeft;
  2142. grd_injsper.attribute ( "width" ) = grdWidht;
  2143. grd_injsper.attribute ( "height" ) = grdHeight;
  2144. line12.attribute ( "x1" ) = lineX1;
  2145. line12.attribute ( "x2" ) = lineX2;
  2146. model.setValue( "/root/init/detlvw", "p" );
  2147. grd_injsper.colWidth(prcpcdCol) = grd_injsper.colWidth(prcpcdCol) - prcpColsize;
  2148. grd_injsper.colWidth(prcpnmCol) = grd_injsper.colWidth(prcpnmCol) - prcpnmColsize;
  2149. grd_injsper.colWidth(prcpengnmCol) = grd_injsper.colWidth(prcpengnmCol) - prcpengnmColsize;
  2150. grd_injsper.colWidth(prcpspecCol) = grd_injsper.colWidth(prcpspecCol) - prcpspecColsize;
  2151. }
  2152. }
  2153. /*
  2154. 20090316 dhkim 사용하지 않는 펑션으로 주석처리
  2155. / **
  2156. * @group :
  2157. * @ver : 2007.10.29
  2158. * @by : 신혁춘
  2159. * @---------------------------------------------------
  2160. * @type : function
  2161. * @access : public
  2162. * @desc : 특조전송
  2163. * @param :
  2164. * @return :
  2165. * @---------------------------------------------------
  2166. * /
  2167. function fAnticncr() {
  2168. var oRow = grd_ordsper.row;
  2169. var iRow = grd_biztrgtman.row;
  2170. model.removenode("/root/send");
  2171. var Row = grd_prcpdetl.rows;
  2172. var jRow=grd_prcpdetl.row;
  2173. var xPrcpDetlPath = "/root/main/prcpdetl/prcpdetllist"
  2174. var xhiddenPrcpDetlPath = "/root/hidden/main/prcpdetl/prcpdetllist"
  2175. //환자 선택 여부 파악
  2176. if(grd_prcpdetl.rows == 1){
  2177. messageBox("환자가 선택되지", "E007")
  2178. return;
  2179. }
  2180. //데이터가 선택여부와 예약시간 설정여부를 체크한다.
  2181. var chek = 0; //선택여부 체크
  2182. var kRow = 0; //예약시간 입력한 rowid
  2183. var rsrvtm;
  2184. for (var i = 1 ; i < grd_prcpdetl.rows ; i++){
  2185. //선택내역 체크
  2186. chek = chek + grd_prcpdetl.textmatrix(i,1);
  2187. //선택한 처방의 예약시간 설정여부 체크
  2188. if(grd_prcpdetl.textmatrix(i,1) == "1"){
  2189. kRow = kRow + "," + i;
  2190. rsrvtm = model.getValue(xPrcpDetlPath+"["+i+"]/rsrvtm");
  2191. if(rsrvtm == "000000"){
  2192. messageBox("예약시간을", "C002");
  2193. return;
  2194. }
  2195. }
  2196. }
  2197. if(chek==0){
  2198. messageBox("하나 이상의 항암을", "C002");
  2199. return;
  2200. }
  2201. //선택한 처방내역중 항암선택여부 확인
  2202. var kRows = kRow.split(",");//예약시간 입력한 row 정보
  2203. var kchek = 0; //항암선택여부
  2204. var prcpclscd; //항암종류
  2205. for(var i=1; i < kRows.length; i++){ //예약시간 row정보를 돌면서 항암이 선택되었는지를 체크한다.
  2206. prcpclscd = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/prcpclscd");
  2207. if(prcpclscd=="A7"){//항암
  2208. kchek = kchek + 1;
  2209. }
  2210. }
  2211. if(kchek == 0){
  2212. messageBox("하나 이상의 항암을", "C002");
  2213. return;
  2214. }
  2215. //선택된 처방의 acting실시여부를 체크한다.
  2216. //선택된 처방의 특조전송여부를 체크한다.
  2217. var stat;
  2218. var drugnochk;
  2219. for(var i=1; i<kRows.length; i++){
  2220. stat = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/stat");
  2221. if (stat == "6"){//시행완료
  2222. messageBox("Acting을 실시한 곳은 특조전송을", "E001");
  2223. return;
  2224. }
  2225. drugnochk = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/drugno");
  2226. if (drugnochk != "0"){
  2227. messageBox("한번 특조전송을 실시한 곳은 특조전송을", "E001");
  2228. return;
  2229. }
  2230. }
  2231. //이게 무슨코딩인지 난 모르겠네 주석달다 포기
  2232. //선택한 처방내역중
  2233. var a = 0;
  2234. for (var i = 1; i < kRows.length; i++){
  2235. if(i == 1){
  2236. a = i;
  2237. }else{
  2238. a = i - 1;
  2239. }
  2240. if(model.getValue(xhiddenPrcpDetlPath+"["+kRows[a]+"]/actorddd") != model.getValue(xhiddenPrcpDetlPath+"["+kRows[i]+"]/actorddd")){
  2241. var doublek = "dd"
  2242. var drugno = model.getValue(xPrcpDetlPath+"["+i+"]/drugno");
  2243. }
  2244. }
  2245. //이게무슨코딩인지 난 모르겠네
  2246. var chkactorddd = model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/actorddd");//예약시간 입력한 처방중 첫 row의 예약일자
  2247. if(kRows.length >= 3){
  2248. for (var i=1; i<kRows.length; i++){
  2249. var chkactorddd1 = model.getValue(xhiddenPrcpDetlPath+"["+kRows[i]+"]/actorddd");
  2250. var drugno = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/drugno");
  2251. }
  2252. }
  2253. //선택한 처방의 예약일자와 동일한 예약일자의 처방정보 row를 임시저장
  2254. var lRow = 0;
  2255. var chkactorddd = model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/actorddd");//예약시간 입력한 처방중 첫 row의 예약일자
  2256. var chkactorddd1;
  2257. for (var i = 1; i < grd_prcpdetl.rows; i++){
  2258. chkactorddd1 = model.getValue(xhiddenPrcpDetlPath+"["+i+"]/actorddd");
  2259. if(chkactorddd == chkactorddd1){
  2260. lRow = lRow + "," + i;//첫row의 예약일자와 전체그리드돌면서 예약일자가 같으면 row번호 임시저장.
  2261. }
  2262. }
  2263. //동일한 예약일자를 가진 처방정보 임시저장한
  2264. var lRows = lRow.split(",");//선택한 첫 row와 같은 예약일자의 처방정보
  2265. var actordddchk, actordddchk1;
  2266. for (var i = 1; i < grd_prcpdetl.rows; i++){
  2267. actordddchk = model.getValue(xPrcpDetlPath+"["+i+"]/actorddd");
  2268. actordddchk1 = model.getValue(xhiddenPrcpDetlPath+"["+i+"]/actorddd");
  2269. if (actordddchk != actordddchk1){
  2270. if (kRow != lRow){
  2271. messageBox("동일한 일자를 모두 선택 하지 않으면 저장", "E001");
  2272. return;
  2273. }
  2274. }
  2275. }
  2276. var vewactorddd1 = model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/actorddd");
  2277. var vewactorddd4 = model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/actorddd");
  2278. for (i=1; i<kRows.length; i++){
  2279. var vewactorddd2 = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/actorddd");
  2280. var vewactorddd3 = model.getValue(xhiddenPrcpDetlPath+"["+kRows[i]+"]/actorddd");
  2281. if(vewactorddd1 != vewactorddd2 && vewactorddd4==vewactorddd3){
  2282. messageBox("예약 일자를 모두 동일한 일자로 변경 하지 않으면 저장", "E001");
  2283. return;
  2284. }
  2285. }
  2286. //----------------처방을 부분적으로 선택한 상태인지 체크 시작(예약시간지정 체크와 순서변경) [20081120 dhkim]----------------//
  2287. //전송할 항암중 예약일자가 동일한 항암처방의 선택하지 않은 항암이 있는지 확인한다.
  2288. var chkd = 0;
  2289. var flag, prcpclscdnow, actorddd, rsrvtm; //체크값
  2290. var _flag, _prcpclscdnow, _actorddd, _rsrvtm; //체크비교값
  2291. for(var j = 1; j < grd_prcpdetl.rows; j++){
  2292. stat = model.getValue(xPrcpDetlPath+"["+j+"]/stat"); //처방상태
  2293. flag = model.getValue(xPrcpDetlPath+"["+j+"]/flag"); //체크상태
  2294. prcpclscdnow = model.getValue(xPrcpDetlPath+"["+j+"]/prcpclscdnow");//처방종류
  2295. actorddd = model.getValue(xPrcpDetlPath+"["+j+"]/actorddd"); //예약일자 [20081119 dhkim]
  2296. rsrvtm = model.getValue(xPrcpDetlPath+"["+j+"]/rsrvtm"); //예약시간 [20081119 dhkim]
  2297. //항암처방체크해제상태의 항암처방
  2298. if ((flag == "0" || flag == "") && prcpclscdnow == "A7" && stat == ""){
  2299. //[20081119 dhkim] 예약일자까지 체크하는것으로 추가
  2300. for(var i = 1; i < grd_prcpdetl.rows; i++){
  2301. _stat = model.getValue(xPrcpDetlPath+"["+i+"]/stat"); //처방상태비교값
  2302. _flag = model.getValue(xPrcpDetlPath+"["+i+"]/flag"); //체크상태비교값
  2303. _prcpclscdnow = model.getValue(xPrcpDetlPath+"["+i+"]/prcpclscdnow"); //처방종류비교값
  2304. _actorddd = model.getValue(xPrcpDetlPath+"["+i+"]/actorddd"); //예약일자비교값
  2305. _rsrvtm = model.getValue(xPrcpDetlPath+"["+i+"]/rsrvtm"); //예약시간비교값
  2306. if(_flag == '1' && _prcpclscdnow == 'A7' && _stat == "" && actorddd == _actorddd && rsrvtm == _rsrvtm){
  2307. chkd = chkd + 1;
  2308. }
  2309. }
  2310. }
  2311. }
  2312. if(chkd > 0){
  2313. //예약일자가 동일한 처방에 대해서만 메시지를 뿌릴것.
  2314. if(messageBox("예약일시가 동일한 항암처방중 선택되지 않은 항암처방이 있습니다. 전송을 실시 하겠습니까?", "Q") != 6)
  2315. return;
  2316. }
  2317. //----------------처방을 부분적으로 선택한 상태인지 체크 시작(예약시간지정 체크와 순서변경) [20081120 dhkim]----------------//
  2318. if(doublek != "dd"){
  2319. var prcpexecdeptcd = model.getValue("/root/main/leftref/exec");
  2320. var flag = "Change"
  2321. model.removeNodeset("/root/send");
  2322. model.makeValue("/root/send/pid", model.getValue("/root/main/rghtref/rghtreflist/pid"));
  2323. model.makeValue("/root/send/drugdd", model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/actorddd"));
  2324. model.makeValue("/root/send/ordtm", model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/ordtm"));
  2325. model.makeValue("/root/send/acting", flag);
  2326. model.makeValue("/root/send/prcpexecdeptcd", prcpexecdeptcd);
  2327. model.makeValue("/root/send/prcpdetl", grd_prcpdetl.getupdatedataAll("i"));
  2328. model.makeValue("/root/send/anticncr/pid", model.getValue("/root/main/rghtref/rghtreflist/pid"));
  2329. //예약일시 변경을 위한 변경내용저장처리
  2330. if(submit("TXMNI02027")){
  2331. //20081212 dhkim 0원수납 에러메세지 테스트 ..
  2332. if(model.getValue('/root/savechangeinfo/rcptinfo/rcptYn') == 'N'){
  2333. alert(model.getValue('/root/savechangeinfo/rcptinfo/errMsg'));
  2334. }
  2335. //특조전송처리
  2336. if(submit("TXMNI02023")){
  2337. model.makeValue("/root/send/pid", model.getValue("/root/send/anticncr/pid"));
  2338. //변경내용저장 실행후 업무대상리스트 다시 조회 실시
  2339. fbiztrgtman("acting");
  2340. if(model.getValue("/root/main/rghtref/rghtreflist/pid") == model.getValue(xBizTrgtManListPath+"["+iRow+"]/pid")){
  2341. //업무대상리스트 다시 조회후 현재 Row의 위치에 선택 실시
  2342. grd_biztrgtman.row = iRow;
  2343. //처방 상세내역
  2344. fBiztrgtClick("acting");
  2345. }else if (oRow != ""){
  2346. grd_ordsper.row = oRow;
  2347. fordsper();
  2348. }
  2349. //예약일자 변경시 이전 날짜 선택 여부를 위해서 노드를 copy해둠
  2350. model.copyNode("/root/hidden/main", "/root/main");
  2351. messageBox("특조전송을", "I002");
  2352. }
  2353. }
  2354. }else{
  2355. var prcpexecdeptcd = model.getValue("/root/main/leftref/exec");
  2356. var flag = "Change";
  2357. model.removeNodeset("/root/send");
  2358. model.makeValue("/root/send/pid", model.getValue("/root/main/rghtref/rghtreflist/pid"));
  2359. model.makeValue("/root/send/drugdd", model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/actorddd"));
  2360. model.makeValue("/root/send/ordtm", model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/ordtm"));
  2361. model.makeValue("/root/send/acting", flag);
  2362. model.makeValue("/root/send/prcpexecdeptcd", prcpexecdeptcd);
  2363. model.makeValue("/root/send/prcpdetl", grd_prcpdetl.getupdatedataAll("i"));
  2364. model.makeValue("/root/send/anticncr/pid", model.getValue("/root/main/rghtref/rghtreflist/pid"));
  2365. //예약일시 변경을 위한 변경내용저장처리
  2366. if(submit("TXMNI02027")){
  2367. //20081212 dhkim 0원수납 에러메세지 테스트 ..
  2368. if(model.getValue('/root/savechangeinfo/rcptinfo/rcptYn') == 'N'){
  2369. alert(model.getValue('/root/savechangeinfo/rcptinfo/errMsg'));
  2370. }
  2371. //특조전송처리
  2372. if(submit("TXMNI02023")){
  2373. model.makeValue("/root/send/pid", model.getValue("/root/send/anticncr/pid"));
  2374. //변경내용저장 실행후 업무대상리스트 다시 조회 실시
  2375. fbiztrgtman("acting");
  2376. if(model.getValue("/root/main/rghtref/rghtreflist/pid") == model.getValue(xBizTrgtManListPath+"["+iRow+"]/pid")){
  2377. //업무대상리스트 다시 조회후 현제 Row의 위치에 선택 실시
  2378. grd_biztrgtman.row = iRow;
  2379. //처방 상세내역
  2380. fBiztrgtClick("acting");
  2381. }else if (oRow != ""){
  2382. grd_ordsper.row = oRow;
  2383. fordsper();
  2384. }
  2385. //예약일자 변경시 이전 날짜 선택 여부를 위해서 노드를 copy해둠
  2386. model.copyNode("/root/hidden/main", "/root/main");
  2387. messageBox("특조전송을", "I002");
  2388. }
  2389. }
  2390. }
  2391. }
  2392. */
  2393. /**
  2394. * @group :
  2395. * @ver : 2007.11.14
  2396. * @by : 신혁춘
  2397. * @---------------------------------------------------
  2398. * @type : function
  2399. * @access : public
  2400. * @desc : 당일 업무대상자 리스트 상세보기
  2401. * @param :
  2402. * @return :
  2403. * @---------------------------------------------------
  2404. */
  2405. function fDetlVwa ( orgflag ) {
  2406. var grdLeft = 0;
  2407. var grdWidht = 582;
  2408. var grdHeight = 354;
  2409. var extnGrdLeft = 0;
  2410. var extnGrdWidht = 582;
  2411. var extnGrdHeight = 601;
  2412. if ( model.getValue( "/root/init/detlvwa" ) == "p" && orgflag != "y" ) {
  2413. grd_biztrgtman.attribute ( "left" ) = extnGrdLeft;
  2414. grd_biztrgtman.attribute ( "width" ) = extnGrdWidht;
  2415. grd_biztrgtman.attribute ( "height" ) = extnGrdHeight;
  2416. model.setValue( "/root/init/detlvwa", "m" );
  2417. } else {
  2418. grd_biztrgtman.attribute ( "left" ) = grdLeft;
  2419. grd_biztrgtman.attribute ( "width" ) = grdWidht;
  2420. grd_biztrgtman.attribute ( "height" ) = grdHeight;
  2421. model.setValue( "/root/init/detlvwa", "p" );
  2422. }
  2423. }
  2424. /**
  2425. * @group :
  2426. * @ver : 2007.11.14
  2427. * @by : 신혁춘
  2428. * @---------------------------------------------------
  2429. * @type : function
  2430. * @access : public
  2431. * @desc : 처방상세 내역 상세보기
  2432. * @param :
  2433. * @return :
  2434. * @---------------------------------------------------
  2435. */
  2436. function fDetlVwb ( orgflag ) {
  2437. var grdLeft = 0;
  2438. var grdTop = 520;
  2439. var grdWidht = 1194;
  2440. var grdHeight = 217;
  2441. var extnGrdLeft = 0;
  2442. var extnGrdTop = 136;
  2443. var extnGrdWidht = 1194;
  2444. var extnGrdHeight = 601;
  2445. var groLeft = 0;
  2446. var groTop = 492;
  2447. var groWidht = 1195;
  2448. var groHeight = 27;
  2449. var extnGroLeft = 0;
  2450. var extnGroTop = 109;
  2451. var extnGroWidht = 1195;
  2452. var extnGroHeight = 27;
  2453. if ( model.getValue( "/root/init/detlvwb" ) == "p" && orgflag != "y" ) {
  2454. grd_prcpdetl.attribute ( "left" ) = extnGrdLeft;
  2455. grd_prcpdetl.attribute ( "top" ) = extnGrdTop;
  2456. grd_prcpdetl.attribute ( "width" ) = extnGrdWidht;
  2457. grd_prcpdetl.attribute ( "height" ) = extnGrdHeight;
  2458. group4.attribute ( "left" ) = extnGroLeft;
  2459. group4.attribute ( "top" ) = extnGroTop;
  2460. group4.attribute ( "width" ) = extnGroWidht;
  2461. group4.attribute ( "height" ) = extnGroHeight;
  2462. grd_injsper.visible = false;
  2463. line12.visible = false;
  2464. grd_biztrgtman.visible = false;
  2465. caption10.visible = false;
  2466. button2.visible = false;
  2467. line7.visible = false;
  2468. model.setValue( "/root/init/detlvwb", "m" );
  2469. } else {
  2470. grd_prcpdetl.attribute ( "left" ) = grdLeft;
  2471. grd_prcpdetl.attribute ( "top" ) = grdTop;
  2472. grd_prcpdetl.attribute ( "width" ) = grdWidht;
  2473. grd_prcpdetl.attribute ( "height" ) = grdHeight;
  2474. group4.attribute ( "left" ) = groLeft;
  2475. group4.attribute ( "top" ) = groTop;
  2476. group4.attribute ( "width" ) = groWidht;
  2477. group4.attribute ( "height" ) = groHeight;
  2478. grd_injsper.visible = true;
  2479. line12.visible = true;
  2480. grd_biztrgtman.visible = true;
  2481. caption10.visible = true;
  2482. button2.visible = true;
  2483. line7.visible = true;
  2484. model.setValue( "/root/init/detlvwb", "p" );
  2485. }
  2486. }
  2487. /**
  2488. * @group :
  2489. * @ver : 2007.11.20
  2490. * @by : 신혁춘
  2491. * @---------------------------------------------------
  2492. * @type : function
  2493. * @access : public
  2494. * @desc : 부위 기준자료 조회
  2495. * @param :
  2496. * @return :
  2497. * @---------------------------------------------------
  2498. */
  2499. function fpartflaginfo(){
  2500. model.removeNodeset("/root/send");
  2501. model.makeValue("/root/send/baseclsflag","J");
  2502. model.makeValue("/root/send/supbasetypecd","JSA");
  2503. submit("TRMNI02026");
  2504. }
  2505. /**
  2506. * @group :
  2507. * @ver : 2007.11.27
  2508. * @by : 신혁춘
  2509. * @---------------------------------------------------
  2510. * @type : function
  2511. * @access : public
  2512. * @desc : MIX 번호에따른 동시 선택
  2513. * @param :
  2514. * @return :
  2515. * @---------------------------------------------------
  2516. */
  2517. function chkflag(){
  2518. var xPrcpDetlPath = "/root/main/prcpdetl/prcpdetllist";
  2519. var iRow = grd_prcpdetl.row;
  2520. var Row = grd_prcpdetl.rows;
  2521. var chk = model.getValue(xPrcpDetlPath+"["+iRow+"]/flag");
  2522. var mix = model.getValue(xPrcpDetlPath+"["+iRow+"]/mix");
  2523. var actorddd = model.getValue(xPrcpDetlPath+"["+iRow+"]/actorddd");
  2524. var orddd = model.getValue(xPrcpDetlPath+"["+iRow+"]/orddd");
  2525. //20091112 dhkim 믹스그룹화 기준을 처방시간별로 변경(약제랑 기준 맞춤- 빈센트에서 오류발생함)
  2526. var rgstdd = model.getValue(xPrcpDetlPath+"["+iRow+"]/rgstdd");
  2527. var rgsttm = model.getValue(xPrcpDetlPath+"["+iRow+"]/rgsttm");
  2528. if(chk == "1"){
  2529. if(mix == "-"){
  2530. return;
  2531. }else{
  2532. for(var i=0; i<Row; i++){
  2533. var mixs = model.getValue(xPrcpDetlPath+"["+i+"]/mix")
  2534. var actorddds = model.getValue(xPrcpDetlPath+"["+i+"]/actorddd")
  2535. var orddds = model.getValue(xPrcpDetlPath+"["+i+"]/orddd")
  2536. //20091112 dhkim 믹스그룹화 기준을 처방시간별로 변경(약제랑 기준 맞춤- 빈센트에서 오류발생함)
  2537. var _rgstdd = model.getValue(xPrcpDetlPath+"["+i+"]/rgstdd");
  2538. var _rgsttm = model.getValue(xPrcpDetlPath+"["+i+"]/rgsttm");
  2539. //20091112 dhkim 믹스그룹화 시 rgstdd, rgsttm 조건 추가
  2540. if(mix == mixs && actorddd == actorddds && orddd == orddds && rgstdd == _rgstdd && rgsttm == _rgsttm){
  2541. model.setValue(xPrcpDetlPath+"["+i+"]/flag", "1");
  2542. }
  2543. }
  2544. }
  2545. }
  2546. if(chk == "0"){
  2547. if(mix == "-"){
  2548. return;
  2549. }else{
  2550. for(var i=0; i<Row; i++){
  2551. var mixs = model.getValue(xPrcpDetlPath+"["+i+"]/mix")
  2552. var actorddds = model.getValue(xPrcpDetlPath+"["+i+"]/actorddd")
  2553. var orddds = model.getValue(xPrcpDetlPath+"["+i+"]/orddd")
  2554. //20091112 dhkim 믹스그룹화 기준을 처방시간별로 변경(약제랑 기준 맞춤- 빈센트에서 오류발생함)
  2555. var _rgstdd = model.getValue(xPrcpDetlPath+"["+i+"]/rgstdd");
  2556. var _rgsttm = model.getValue(xPrcpDetlPath+"["+i+"]/rgsttm");
  2557. //20091112 dhkim 믹스그룹화 시 rgstdd, rgsttm 조건 추가
  2558. if(mix == mixs && actorddd == actorddds && orddd == orddds && rgstdd == _rgstdd && rgsttm == _rgsttm){
  2559. model.setValue(xPrcpDetlPath+"["+i+"]/flag", "0");
  2560. }
  2561. }
  2562. }
  2563. }
  2564. }
  2565. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  2566. // 20081217 새로 수정한 acting, acting취소, 변경내용저장 을 호출하기 위한 펑션 시작
  2567. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  2568. /**
  2569. * @ver : 20081217
  2570. * @by : dhkim
  2571. * @---------------------------------------------------
  2572. * @desc : 액팅
  2573. * @---------------------------------------------------
  2574. */
  2575. function fPrcpActing(){
  2576. var iRow = grd_biztrgtman.row;
  2577. var Row = grd_prcpdetl.rows;
  2578. var jRow = grd_prcpdetl.row;
  2579. var oRow = grd_ordsper.row;
  2580. var xPrcpDetlPath = "/root/main/prcpdetl/prcpdetllist" ;
  2581. //acting채크 시 환자 선택 여부 파악
  2582. if(Row==1){
  2583. messageBox("환자가 선택되지", "E007");
  2584. return;
  2585. }
  2586. //처방선택여부 파악
  2587. var chek = 0;
  2588. var kRow = 0;
  2589. for (i=1; i<Row; i++){
  2590. chek = chek + grd_prcpdetl.textmatrix(i,1);
  2591. if(grd_prcpdetl.textmatrix(i,1) == "1"){
  2592. kRow = kRow +","+ i;
  2593. }
  2594. //alert('chek : '+chek + ', kRow : ' + kRow);
  2595. }
  2596. if(chek==0){
  2597. messageBox("하나 이상의 처방내역을", "C002");
  2598. return;
  2599. }
  2600. //선택한 처방에 해당하는 row만 돌면서 acting validation을 체크한다.
  2601. var kRows = kRow.split(",");
  2602. for(i=1; i<kRows.length; i++){
  2603. var exec = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/execdd");
  2604. var prcpclscd = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/prcpclscd");
  2605. var execchk = getCurrentDate();
  2606. var execord = exec.substr(0,8);
  2607. var endyn = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/endyn");
  2608. var act50yn = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/act50yn");
  2609. var dracptyn = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/dracptyn");
  2610. var dracptdt = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/dracptdt");
  2611. if(exec != "-"){
  2612. messageBox("Acting을 실시한 곳은 다시 Acting을", "E001");
  2613. return;
  2614. }
  2615. var stat = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/stat");
  2616. var prcpclscd = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/prcpclscd");
  2617. var cdnm = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/cdnm");
  2618. //항암, 주사 가 아니면 조회만 가능
  2619. //20090316 dhkim 무균(A9)추가
  2620. if(prcpclscd != "A7" && prcpclscd != "A6" && prcpclscd != "A8" && prcpclscd != "A9"){
  2621. messageBox("항암, 무균제, 주사만 Acting을 할 수 있습니다.", "E");
  2622. return;
  2623. }
  2624. if(prcpclscd == "B4"){
  2625. messageBox("혈액은 수혈 기록을 통해서만 Acting을 할 수 있습니다.", "E");
  2626. return;
  2627. }
  2628. //20090316 dhkim 무균(A9)추가
  2629. if(prcpclscd == "A7" || prcpclscd == "A9"){
  2630. if(stat != "2"){
  2631. messageBox("조제완료 되지 않은 항암, 무균제는 Acting을", "E001");
  2632. return;
  2633. }
  2634. }
  2635. if(cdnm == "마약"){
  2636. if(stat != "5"){
  2637. messageBox("불출 되지 않은 마약은 Acting을", "E001");
  2638. return;
  2639. }
  2640. }
  2641. }
  2642. //
  2643. if(kRows.length >= 3){
  2644. var chkactorddd = model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/actorddd");//맨첫번째 row의 값과 비교
  2645. for (i=1; i<kRows.length; i++){
  2646. var chkactorddd1 = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/actorddd");
  2647. if(chkactorddd != chkactorddd1){
  2648. messageBox("Acting은 동일한 예약일자가 아니면 Acting실시", "E001");
  2649. return;
  2650. }
  2651. }
  2652. }
  2653. // 20081103 dhkim
  2654. // 특수주사실의 경우 외래처방과 입원처방이 동시에 발생가능하고 병동재원환자의 처방에 대해서는 blocking처리함
  2655. model.removeNodeset("/root/send");
  2656. model.makeValue("/root/send/pid",model.getValue("/root/main/rghtref/rghtreflist/pid"));
  2657. //재원환자의 처방acting을 blocking한다.
  2658. if(submit("TRMNI02028")){
  2659. if(model.getValue("/root/init/acting/chking/actingchk") > 0){
  2660. messageBox("현재 입원 환자는 Acting을", "E001");
  2661. return;
  2662. }
  2663. }
  2664. var prcpexecdeptcd = model.getValue("/root/main/leftref/exec");//세션 부서코드(default)
  2665. var ordddlong = model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/orddd");
  2666. var orddd = ordddlong.substring(0,8);
  2667. // 20090220 dhkim 추가
  2668. var pid = model.getValue("/root/main/rghtref/rghtreflist/pid");
  2669. if(pid == null || pid == ''){
  2670. pid = model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/pid"); // 조회조건에 등록번호 세팅 없을때 그리드에서 등록번호 가져감
  2671. }
  2672. model.removeNodeset("/root/send");
  2673. model.makeValue("/root/send/acting", "Y"); // acting : Y, acting취소 : N
  2674. model.makeValue("/root/send/pid", pid); // 등록번호
  2675. model.makeValue("/root/send/drugdd", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/actorddd")); // 예정일시
  2676. model.makeValue("/root/send/prcpexecdeptcd", prcpexecdeptcd); // 실시부서코드
  2677. model.makeValue("/root/send/endyn", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/endyn")); // 마감여부
  2678. model.makeValue("/root/send/prcpdetl", grd_prcpdetl.getupdatedataAll("i")); // 처방상세내역 그리드
  2679. model.makeValue("/root/send/orddd", orddd);
  2680. model.makeValue("/root/send/act50yn", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/act50yn")); //
  2681. model.makeValue("/root/send/dracptyn", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/dracptyn")); //
  2682. model.makeValue("/root/send/dracptdt", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/dracptdt")); //
  2683. //Acting실행
  2684. if(submit("TXMNI02029")){
  2685. if (oRow != ""){
  2686. grd_ordsper.row = oRow;
  2687. fordsper();
  2688. }else if (model.getValue("/root/main/rghtref/rghtreflist/pid") == model.getValue(xBizTrgtManListPath+"["+iRow+"]/pid")){
  2689. //처방 상세내역
  2690. fBiztrgtClick("acting");
  2691. }else{
  2692. //변경내용저장 실행후 업무대상리스트 다시 조회 실시
  2693. fbiztrgtman("acting");
  2694. }
  2695. //예약일자 변경시 이전 날짜 선택 여부를 위해서 노드를 copy해둠
  2696. model.copyNode("/root/hidden/main", "/root/main");
  2697. }
  2698. }
  2699. /**
  2700. * @ver : 20081217
  2701. * @by : dhkim
  2702. * @---------------------------------------------------
  2703. * @desc : 액팅취소
  2704. * @---------------------------------------------------
  2705. */
  2706. function fPrcpActingCancel(){
  2707. var iRow = grd_biztrgtman.row;
  2708. var Row = grd_prcpdetl.rows;
  2709. var jRow = grd_prcpdetl.row;
  2710. var oRow = grd_ordsper.row;
  2711. var xPrcpDetlPath = "/root/main/prcpdetl/prcpdetllist" ;
  2712. //환자 선택 여부 파악
  2713. if(Row==1){
  2714. messageBox("환자가 선택되지", "E007");
  2715. return;
  2716. }
  2717. //처방선택여부 파악
  2718. var chek = 0;
  2719. var kRow = 0;
  2720. for (i=1; i<Row; i++){
  2721. chek = chek + grd_prcpdetl.textmatrix(i,1);
  2722. if(grd_prcpdetl.textmatrix(i,1) == "1"){
  2723. kRow = kRow +","+ i;
  2724. }
  2725. }
  2726. if(chek==0){
  2727. messageBox("하나 이상의 처방내역을", "C002");
  2728. return;
  2729. }
  2730. var kRows = kRow.split(",");
  2731. for(i=1; i < kRows.length; i++){
  2732. var exec = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/execdd");
  2733. var prcpclscd = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/prcpclscd");
  2734. var execchk = getCurrentDate();
  2735. var execord = exec.substr(0,8);
  2736. var endyn = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/endyn");
  2737. var act50yn = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/act50yn");
  2738. var dracptyn = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/dracptyn");
  2739. var dracptdt = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/dracptdt");
  2740. if(exec == "-"){
  2741. messageBox("Acting을 실시하지 처방은 Acting 취소를", "E001");
  2742. return;
  2743. }
  2744. if(execord != execchk){
  2745. messageBox("당일 Acting한 처방이 아니면 Acting 취소를", "E001");
  2746. return;
  2747. }
  2748. if(prcpclscd == "B4"){
  2749. messageBox("혈액은 Acting 취소를", "E001");
  2750. return;
  2751. }
  2752. // 마감된 처방을 Acting취소시 마감반환사유 프로세스 입력되도록
  2753. if (endyn == "Y") {
  2754. messageBox("마감된 Acting처방을 취소하려면 반환사유를 ", "C001");
  2755. model.makeValue("/root/main/cond/list/prcpdd", model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/prcpdd"));
  2756. model.makeValue("/root/main/cond/list/prcpno", model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/prcpno"));
  2757. model.makeValue("/root/main/cond/list/prcphistno", model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/prcphistno"));
  2758. model.makeValue("/root/main/cond/list/execprcpno", model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/execprcpno"));
  2759. model.makeValue("/root/main/cond/list/instcd", getUserInfo("dutplceinstcd"));
  2760. model.makeValue("/root/main/cond/list/ioflag", "O");
  2761. // 반환사유 팝업
  2762. modal("SPPAS03000", "2", "100", "100", "SPPAS03000", "root/main/cond", "root/target", "left:100; top:100; width:400; height:400; sysmenu:hidden; min:visible; max:hidden; :hidden; resize:true; caption:visible;", false);
  2763. }
  2764. } // for end
  2765. if(kRows.length >= 3){
  2766. var chkactorddd = model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/actorddd");
  2767. for (i=1; i<kRows.length; i++){
  2768. var chkactorddd1 = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/actorddd");
  2769. if(chkactorddd != chkactorddd1){
  2770. messageBox("ACting은 동일한 예약일자가 아니면 Acting실시", "E001");
  2771. return;
  2772. }
  2773. }
  2774. }
  2775. var prcpexecdeptcd = model.getValue("/root/main/leftref/exec");//세션 부서코드(default)
  2776. var ordddlong = model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/orddd");
  2777. var orddd = ordddlong.substring(0,8);
  2778. // 20090220 dhkim 추가
  2779. var pid = model.getValue("/root/main/rghtref/rghtreflist/pid");
  2780. if(pid == null || pid == ''){
  2781. pid = model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/pid"); // 조회조건에 등록번호 세팅 없을때 그리드에서 등록번호 가져감
  2782. }
  2783. model.removeNodeset("/root/send");
  2784. model.makeValue("/root/send/acting", "N"); // acting : Y, acting취소 : N
  2785. model.makeValue("/root/send/pid", pid); // 등록번호
  2786. model.makeValue("/root/send/drugdd", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/actorddd")); // 예정일시
  2787. model.makeValue("/root/send/prcpexecdeptcd", prcpexecdeptcd); // 실시부서코드
  2788. model.makeValue("/root/send/endyn", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/endyn")); // 마감여부
  2789. model.makeValue("/root/send/prcpdetl", grd_prcpdetl.getupdatedataAll("i")); // 처방상세내역 그리드
  2790. model.makeValue("/root/send/orddd", orddd);
  2791. model.makeValue("/root/send/act50yn", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/act50yn"));
  2792. model.makeValue("/root/send/dracptyn", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/dracptyn"));
  2793. model.makeValue("/root/send/dracptdt", model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/dracptdt"));
  2794. //Acting취소 실행
  2795. if(submit("TXMNI02030")){
  2796. //업무대상리스트 다시 조회 실시
  2797. fbiztrgtman("acting");
  2798. if (oRow != ""){
  2799. grd_ordsper.row = oRow;
  2800. fordsper();
  2801. }else if(model.getValue("/root/main/rghtref/rghtreflist/pid") == model.getValue(xBizTrgtManListPath+"["+iRow+"]/pid")){
  2802. //처방 상세내역
  2803. fBiztrgtClick("acting");
  2804. }
  2805. //예약일자 변경시 이전 날짜 선택 여부를 위해서 노드를 copy해둠
  2806. model.copyNode("/root/hidden/main", "/root/main");
  2807. }
  2808. }
  2809. /**
  2810. * @ver : 20081217
  2811. * @by : dhkim
  2812. * @---------------------------------------------------
  2813. * @desc : 변경내용저장
  2814. * @---------------------------------------------------
  2815. */
  2816. function fPrcpChangeSave(){
  2817. var iRow = grd_biztrgtman.row;
  2818. var oRow = grd_ordsper.row;
  2819. var xhiddenPrcpDetlPath = "/root/hidden/main/prcpdetl/prcpdetllist" ;
  2820. var xPrcpDetlPath = "/root/main/prcpdetl/prcpdetllist" ;
  2821. var Row = grd_prcpdetl.rows;
  2822. //변경내용저장 시 환자 선택 여부 파악
  2823. if(Row==1){
  2824. messageBox("환자가 선택되지", "E007");
  2825. return;
  2826. }
  2827. /*
  2828. 잠시주석처리함
  2829. //20081223 dhkim 잠시 코딩하여 테스트
  2830. var chkflag;
  2831. for(var i = 1; i < grd_prcpdetl.rows; i++){
  2832. chkflag = model.getValue(xPrcpDetlPath + '[' + i + ']/flag');
  2833. if(chkflag == '1'){
  2834. }
  2835. }
  2836. */
  2837. var kRow = 0;
  2838. var chek = 0;
  2839. for (i=1; i<Row; i++){
  2840. chek = chek + grd_prcpdetl.textmatrix(i,1);
  2841. if(grd_prcpdetl.textmatrix(i,1) == "1"){
  2842. kRow = kRow +","+ i;
  2843. }
  2844. }
  2845. if(chek==0){
  2846. messageBox("하나 이상의 처방내역을", "C002");
  2847. return;
  2848. }
  2849. var kRows = kRow.split(",");
  2850. var chkactorddd = model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/actorddd");
  2851. var chkactorddd1, drugno;
  2852. //20081223 dhkim
  2853. //약번호의 경우 항암 뿐 아니라 마약의 경우에도 따지 므로 메세지를 구분할 필요가 있음
  2854. var cdnm;
  2855. if(kRows.length >= 3){
  2856. for (i=1; i<kRows.length; i++){
  2857. chkactorddd1 = model.getValue(xhiddenPrcpDetlPath+"["+kRows[i]+"]/actorddd");
  2858. drugno = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/drugno");
  2859. //20081223 dhkim
  2860. cdnm = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/cdnm");
  2861. if(drugno != "0"){
  2862. if(cdnm == "마약"){
  2863. messageBox("마약 불출신청 접수 후 예약일자 변경을", "E001");
  2864. }else{
  2865. messageBox("특조 전송후 예약일자 변경을", "E001");
  2866. }
  2867. return;
  2868. }
  2869. if(chkactorddd != chkactorddd1){
  2870. messageBox("초기 동일한 예약일자가 아니면 저장", "E001");
  2871. return;
  2872. }
  2873. }
  2874. }
  2875. var lRow = 0;
  2876. var chkactorddd = model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/actorddd");
  2877. for (i=1; i<Row; i++){
  2878. var chkactorddd1 = model.getValue(xhiddenPrcpDetlPath+"["+i+"]/actorddd");
  2879. if(chkactorddd == chkactorddd1){
  2880. lRow = lRow +","+ i;
  2881. }
  2882. }
  2883. var lRows = lRow.split(",");
  2884. for (i=1; i<Row; i++){
  2885. var actordddchk = model.getValue(xPrcpDetlPath+"["+i+"]/actorddd");
  2886. var actordddchk1 = model.getValue(xhiddenPrcpDetlPath+"["+i+"]/actorddd");
  2887. if (actordddchk != actordddchk1){
  2888. if (kRow != lRow){
  2889. messageBox("동일한 일자를 모두 선택 하지 않으면 저장", "E001");
  2890. return;
  2891. }
  2892. }
  2893. }
  2894. var vewactorddd1 = model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/actorddd");
  2895. for (i=1; i<kRows.length; i++){
  2896. var vewactorddd2 = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/actorddd");
  2897. if(vewactorddd1 != vewactorddd2){
  2898. messageBox("예약 일자를 모두 동일한 일자로 변경 하지 않으면 저장", "E001");
  2899. return;
  2900. }
  2901. }
  2902. if(flag != "Ant"){
  2903. var prcpexecdeptcd = model.getValue("/root/main/leftref/exec");
  2904. var flag = "Change";
  2905. // 20090220 dhkim 추가
  2906. var pid = model.getValue("/root/main/rghtref/rghtreflist/pid");
  2907. if(pid == null || pid == ''){
  2908. pid = model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/pid"); // 조회조건에 등록번호 세팅 없을때 그리드에서 등록번호 가져감
  2909. }
  2910. model.removeNodeset("/root/send");
  2911. model.makeValue("/root/send/pid", pid);
  2912. model.makeValue("/root/send/drugdd",model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/actorddd"));
  2913. model.makeValue("/root/send/ordtm",model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/ordtm"));
  2914. // 주사예약변경시 외래예약변경IF 파라미터 추가_20090709
  2915. model.makeValue("/root/send/insukind" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/insukind" ));
  2916. model.makeValue("/root/send/suppkind" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/suppkind" ));
  2917. model.makeValue("/root/send/insucd" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/insucd" ));
  2918. model.makeValue("/root/send/suppkindresn" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/suppkindresn"));
  2919. model.makeValue("/root/send/ownbflag" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/ownbflag" ));
  2920. model.makeValue("/root/send/spclcd" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/spclcd" ));
  2921. model.makeValue("/root/send/rareobstflag" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/rareobstflag"));
  2922. model.makeValue("/root/send/acting",flag);
  2923. model.makeValue("/root/send/prcpexecdeptcd",prcpexecdeptcd);
  2924. model.makeValue("/root/send/prcpdetl",grd_prcpdetl.getupdatedataAll("i"));
  2925. //변경내용저장실행
  2926. if(submit("TXMNI02031")){
  2927. //20081212 dhkim 0원수납 에러메세지 테스트 ..
  2928. if(model.getValue('/root/savechangeinfo/rcptinfo/rcptYn') == 'N'){
  2929. alert(model.getValue('/root/savechangeinfo/rcptinfo/errMsg'));
  2930. }
  2931. //변경내용저장 실행후 업무대상리스트 다시 조회 실시
  2932. fbiztrgtman("acting");
  2933. if (model.getValue("/root/main/rghtref/rghtreflist/pid") == model.getValue(xBizTrgtManListPath+"["+iRow+"]/pid")){
  2934. //업무대상리스트 다시 조회후 현재 Row의 위치에 선택 실시
  2935. grd_biztrgtman.row = iRow;
  2936. //처방 상세내역
  2937. fBiztrgtClick("acting");
  2938. }else if (oRow != ""){
  2939. grd_ordsper.row = oRow;
  2940. fordsper();
  2941. }
  2942. //예약일자 변경시 이전 날짜 선택 여부를 위해서 노드를 copy해둠
  2943. model.copyNode("/root/hidden/main", "/root/main");
  2944. }
  2945. }
  2946. }
  2947. /**
  2948. * @ver : 20081217
  2949. * @by : dhkim
  2950. * @---------------------------------------------------
  2951. * @desc : 특조전송
  2952. * @---------------------------------------------------
  2953. */
  2954. function fPrcpAntiCncr(){
  2955. var oRow = grd_ordsper.row;
  2956. var iRow = grd_biztrgtman.row;
  2957. model.removenode("/root/send");
  2958. var Row = grd_prcpdetl.rows;
  2959. var jRow=grd_prcpdetl.row;
  2960. var xPrcpDetlPath = "/root/main/prcpdetl/prcpdetllist" ;
  2961. var xhiddenPrcpDetlPath = "/root/hidden/main/prcpdetl/prcpdetllist" ;
  2962. //환자 선택 여부 파악
  2963. if(grd_prcpdetl.rows == 1){
  2964. messageBox("환자가 선택되지", "E007");
  2965. return;
  2966. }
  2967. //데이터가 선택여부와 예약시간 설정여부를 체크한다.
  2968. var chek = 0; //선택여부 체크
  2969. var kRow = 0; //예약시간 입력한 rowid
  2970. var rsrvtm;
  2971. for (var i = 1 ; i < grd_prcpdetl.rows ; i++){
  2972. //선택내역 체크
  2973. chek = chek + grd_prcpdetl.textmatrix(i,1);
  2974. //선택한 처방의 예약시간 설정여부 체크
  2975. if(grd_prcpdetl.textmatrix(i,1) == "1"){
  2976. kRow = kRow + "," + i;
  2977. rsrvtm = model.getValue(xPrcpDetlPath+"["+i+"]/rsrvtm");
  2978. if(rsrvtm == "000000"){
  2979. messageBox("예약시간을", "C002");
  2980. return;
  2981. }
  2982. }
  2983. }
  2984. if(chek==0){
  2985. messageBox("하나 이상의 무균, 항암을", "C002");
  2986. return;
  2987. }
  2988. //선택한 처방내역중 항암선택여부 확인
  2989. var kRows = kRow.split(",");//예약시간 입력한 row 정보
  2990. var kchek = 0; //항암선택여부
  2991. var prcpclscd; //항암종류
  2992. for(var i=1; i < kRows.length; i++){ //예약시간 row정보를 돌면서 항암이 선택되었는지를 체크한다.
  2993. prcpclscd = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/prcpclscd");
  2994. //20090316 dhkim 무균(A9)추가
  2995. if(prcpclscd=="A7" || prcpclscd =="A9"){//항암, 무균
  2996. kchek = kchek + 1;
  2997. }
  2998. }
  2999. if(kchek == 0){
  3000. messageBox("하나 이상의 무균, 항암을", "C002");
  3001. return;
  3002. }
  3003. //선택된 처방의 acting실시여부를 체크한다.
  3004. //선택된 처방의 특조전송여부를 체크한다.
  3005. var stat;
  3006. var drugnochk;
  3007. for(var i=1; i<kRows.length; i++){
  3008. stat = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/stat");
  3009. if (stat == "6"){//시행완료
  3010. messageBox("Acting을 실시한 곳은 특조전송을", "E001");
  3011. return;
  3012. }
  3013. drugnochk = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/drugno");
  3014. if (drugnochk != "0"){
  3015. messageBox("한번 특조전송을 실시한 곳은 특조전송을", "E001");
  3016. return;
  3017. }
  3018. }
  3019. var chkd = 0;
  3020. for(j=1; j<Row; j++){
  3021. var stat = model.getValue(xPrcpDetlPath+"["+j+"]/stat");
  3022. var flag = model.getValue(xPrcpDetlPath+"["+j+"]/flag");
  3023. var prcpclscdnow = model.getValue(xPrcpDetlPath+"["+j+"]/prcpclscdnow");
  3024. //20090316 dhkim 무균(A9)추가
  3025. if ((flag == "0" || flag == "") && (prcpclscdnow == "A7" || prcpclscdnow == "A9") && stat == ""){
  3026. chkd = chkd + 1;
  3027. }
  3028. }
  3029. if(chkd > 0){
  3030. if(messageBox("특조전송할 처방이 모두 선택되지 않았습니다. 전송을 실시 하겠습니까?", "Q") != 6) return;
  3031. }
  3032. var a = 0;
  3033. for (var i = 1; i < kRows.length; i++){
  3034. if(i == 1){
  3035. a = i;
  3036. }else{
  3037. a = i - 1;
  3038. }
  3039. if(model.getValue(xhiddenPrcpDetlPath+"["+kRows[a]+"]/actorddd") != model.getValue(xhiddenPrcpDetlPath+"["+kRows[i]+"]/actorddd")){
  3040. var doublek = "dd";
  3041. var drugno = model.getValue(xPrcpDetlPath+"["+i+"]/drugno");
  3042. }
  3043. }
  3044. var kRows = kRow.split(",");
  3045. var chkactorddd = model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/actorddd");
  3046. if(kRows.length >= 3){
  3047. for (i=1; i<kRows.length; i++){
  3048. var chkactorddd1 = model.getValue(xhiddenPrcpDetlPath+"["+kRows[i]+"]/actorddd");
  3049. var drugno = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/drugno");
  3050. if(drugno != "0"){
  3051. //messageBox("특조전송후 예약일자 변경을", "E001")
  3052. //return;
  3053. }
  3054. }
  3055. }
  3056. //선택한 처방의 예약일자와 동일한 예약일자의 처방정보 row를 임시저장
  3057. var lRow = 0;
  3058. var chkactorddd = model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/actorddd");//예약시간 입력한 처방중 첫 row의 예약일자
  3059. var chkactorddd1;
  3060. for (var i = 1; i < grd_prcpdetl.rows; i++){
  3061. chkactorddd1 = model.getValue(xhiddenPrcpDetlPath+"["+i+"]/actorddd");
  3062. if(chkactorddd == chkactorddd1){
  3063. lRow = lRow + "," + i;//첫row의 예약일자와 전체그리드돌면서 예약일자가 같으면 row번호 임시저장.
  3064. }
  3065. }
  3066. //동일한 예약일자를 가진 처방정보 임시저장한
  3067. var lRows = lRow.split(",");//선택한 첫 row와 같은 예약일자의 처방정보
  3068. var actordddchk, actordddchk1;
  3069. for (var i = 1; i < grd_prcpdetl.rows; i++){
  3070. actordddchk = model.getValue(xPrcpDetlPath+"["+i+"]/actorddd");
  3071. actordddchk1 = model.getValue(xhiddenPrcpDetlPath+"["+i+"]/actorddd");
  3072. if (actordddchk != actordddchk1){
  3073. if (kRow != lRow){
  3074. messageBox("동일한 일자를 모두 선택 하지 않으면 저장", "E001");
  3075. return;
  3076. }
  3077. }
  3078. }
  3079. var vewactorddd1 = model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/actorddd");
  3080. var vewactorddd4 = model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/actorddd");
  3081. for (i=1; i<kRows.length; i++){
  3082. var vewactorddd2 = model.getValue(xPrcpDetlPath+"["+kRows[i]+"]/actorddd");
  3083. var vewactorddd3 = model.getValue(xhiddenPrcpDetlPath+"["+kRows[i]+"]/actorddd");
  3084. if(vewactorddd1 != vewactorddd2 && vewactorddd4==vewactorddd3){
  3085. messageBox("예약 일자를 모두 동일한 일자로 변경 하지 않으면 저장", "E001");
  3086. return;
  3087. }
  3088. }
  3089. /*
  3090. //----------------처방을 부분적으로 선택한 상태인지 체크 시작(예약시간지정 체크와 순서변경) [20081120 dhkim]----------------//
  3091. //전송할 항암중 예약일자가 동일한 항암처방의 선택하지 않은 항암이 있는지 확인한다.
  3092. var chkd = 0;
  3093. var flag, prcpclscdnow, actorddd, rsrvtm; //체크값
  3094. var _flag, _prcpclscdnow, _actorddd, _rsrvtm; //체크비교값
  3095. for(var j = 1; j < grd_prcpdetl.rows; j++){
  3096. stat = model.getValue(xPrcpDetlPath+"["+j+"]/stat"); //처방상태
  3097. flag = model.getValue(xPrcpDetlPath+"["+j+"]/flag"); //체크상태
  3098. prcpclscdnow = model.getValue(xPrcpDetlPath+"["+j+"]/prcpclscdnow");//처방종류
  3099. actorddd = model.getValue(xPrcpDetlPath+"["+j+"]/actorddd"); //예약일자 [20081119 dhkim]
  3100. rsrvtm = model.getValue(xPrcpDetlPath+"["+j+"]/rsrvtm"); //예약시간 [20081119 dhkim]
  3101. //항암처방체크해제상태의 항암처방
  3102. if ((flag == "0" || flag == "") && prcpclscdnow == "A7" && stat == ""){
  3103. //[20081119 dhkim] 예약일자까지 체크하는것으로 추가
  3104. for(var i = 1; i < grd_prcpdetl.rows; i++){
  3105. _stat = model.getValue(xPrcpDetlPath+"["+i+"]/stat"); //처방상태비교값
  3106. _flag = model.getValue(xPrcpDetlPath+"["+i+"]/flag"); //체크상태비교값
  3107. _prcpclscdnow = model.getValue(xPrcpDetlPath+"["+i+"]/prcpclscdnow"); //처방종류비교값
  3108. _actorddd = model.getValue(xPrcpDetlPath+"["+i+"]/actorddd"); //예약일자비교값
  3109. _rsrvtm = model.getValue(xPrcpDetlPath+"["+i+"]/rsrvtm"); //예약시간비교값
  3110. if(_flag == '1' && _prcpclscdnow == 'A7' && _stat == "" && actorddd == _actorddd && rsrvtm == _rsrvtm){
  3111. chkd = chkd + 1;
  3112. }
  3113. }
  3114. }
  3115. }
  3116. if(chkd > 0){
  3117. //예약일자가 동일한 처방에 대해서만 메시지를 뿌릴것.
  3118. if(messageBox("예약일시가 동일한 항암처방중 선택되지 않은 항암처방이 있습니다. 전송을 실시 하겠습니까?", "Q") != 6)
  3119. return;
  3120. }
  3121. //----------------처방을 부분적으로 선택한 상태인지 체크 시작(예약시간지정 체크와 순서변경) [20081120 dhkim]----------------//
  3122. */
  3123. if(doublek != "dd"){
  3124. var prcpexecdeptcd = model.getValue("/root/main/leftref/exec");
  3125. var flag = "Change";
  3126. // 20090220 dhkim 추가
  3127. var pid = model.getValue("/root/main/rghtref/rghtreflist/pid");
  3128. if(pid == null || pid == ''){
  3129. pid = model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/pid"); // 조회조건에 등록번호 세팅 없을때 그리드에서 등록번호 가져감
  3130. }
  3131. model.removeNodeset("/root/send");
  3132. model.removeNodeset("/root/savechangeinfo");
  3133. model.makeNode("/root/savechangeinfo");
  3134. model.makeValue("/root/send/pid", pid);
  3135. model.makeValue("/root/send/drugdd", model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/actorddd"));
  3136. model.makeValue("/root/send/ordtm", model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/ordtm"));
  3137. // 주사예약변경시 외래예약변경IF 파라미터 추가_20090709
  3138. model.makeValue("/root/send/insukind" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/insukind" ));
  3139. model.makeValue("/root/send/suppkind" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/suppkind" ));
  3140. model.makeValue("/root/send/insucd" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/insucd" ));
  3141. model.makeValue("/root/send/suppkindresn" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/suppkindresn"));
  3142. model.makeValue("/root/send/ownbflag" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/ownbflag" ));
  3143. model.makeValue("/root/send/spclcd" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/spclcd" ));
  3144. model.makeValue("/root/send/rareobstflag" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/rareobstflag"));
  3145. model.makeValue("/root/send/acting", flag);
  3146. model.makeValue("/root/send/prcpexecdeptcd", prcpexecdeptcd);
  3147. model.makeValue("/root/send/prcpdetl", grd_prcpdetl.getupdatedataAll("i"));
  3148. model.makeValue("/root/send/anticncr/pid", model.getValue("/root/main/rghtref/rghtreflist/pid"));
  3149. //예약일시 변경을 위한 변경내용저장처리
  3150. if(submit("TXMNI02031")){
  3151. //20081212 dhkim 0원수납 에러메세지 테스트 ..
  3152. if(model.getValue('/root/savechangeinfo/rcptinfo/rcptYn') == 'N'){
  3153. alert(model.getValue('/root/savechangeinfo/rcptinfo/errMsg'));
  3154. return;//2010.02.17 dhkim
  3155. }
  3156. //특조전송처리
  3157. if(submit("TXMNI02023")){
  3158. model.makeValue("/root/send/pid", model.getValue("/root/send/anticncr/pid"));
  3159. //변경내용저장 실행후 업무대상리스트 다시 조회 실시
  3160. fbiztrgtman("acting");
  3161. if(model.getValue("/root/main/rghtref/rghtreflist/pid") == model.getValue(xBizTrgtManListPath+"["+iRow+"]/pid")){
  3162. //업무대상리스트 다시 조회후 현재 Row의 위치에 선택 실시
  3163. grd_biztrgtman.row = iRow;
  3164. //처방 상세내역
  3165. fBiztrgtClick("acting");
  3166. }else if (oRow != ""){
  3167. grd_ordsper.row = oRow;
  3168. fordsper();
  3169. }
  3170. //예약일자 변경시 이전 날짜 선택 여부를 위해서 노드를 copy해둠
  3171. model.copyNode("/root/hidden/main", "/root/main");
  3172. messageBox("특조전송을", "I002");
  3173. }
  3174. }
  3175. }else{
  3176. var prcpexecdeptcd = model.getValue("/root/main/leftref/exec");
  3177. var flag = "Change";
  3178. // 20090220 dhkim 추가
  3179. var pid = model.getValue("/root/main/rghtref/rghtreflist/pid");
  3180. if(pid == null || pid == ''){
  3181. pid = model.getValue(xPrcpDetlPath+"["+kRows[1]+"]/pid"); // 조회조건에 등록번호 세팅 없을때 그리드에서 등록번호 가져감
  3182. }
  3183. model.removeNodeset("/root/send");
  3184. model.removeNodeset("/root/savechangeinfo");
  3185. model.makeNode("/root/savechangeinfo");
  3186. model.makeValue("/root/send/pid", pid);
  3187. model.makeValue("/root/send/drugdd", model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/actorddd"));
  3188. model.makeValue("/root/send/ordtm", model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/ordtm"));
  3189. model.makeValue("/root/send/acting", flag);
  3190. model.makeValue("/root/send/prcpexecdeptcd", prcpexecdeptcd);
  3191. model.makeValue("/root/send/prcpdetl", grd_prcpdetl.getupdatedataAll("i"));
  3192. model.makeValue("/root/send/anticncr/pid", model.getValue("/root/main/rghtref/rghtreflist/pid"));
  3193. // 주사예약변경시 외래예약변경IF 파라미터 추가_2010.02.17 dhkim
  3194. model.makeValue("/root/send/insukind" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/insukind" ));
  3195. model.makeValue("/root/send/suppkind" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/suppkind" ));
  3196. model.makeValue("/root/send/insucd" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/insucd" ));
  3197. model.makeValue("/root/send/suppkindresn" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/suppkindresn"));
  3198. model.makeValue("/root/send/ownbflag" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/ownbflag" ));
  3199. model.makeValue("/root/send/spclcd" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/spclcd" ));
  3200. model.makeValue("/root/send/rareobstflag" , model.getValue(xhiddenPrcpDetlPath+"["+kRows[1]+"]/rareobstflag"));
  3201. //예약일시 변경을 위한 변경내용저장처리
  3202. if(submit("TXMNI02031")){
  3203. //20081212 dhkim 0원수납 에러메세지 테스트 ..
  3204. if(model.getValue('/root/savechangeinfo/rcptinfo/rcptYn') == 'N'){
  3205. alert(model.getValue('/root/savechangeinfo/rcptinfo/errMsg'));
  3206. return;//2010.02.17 dhkim
  3207. }
  3208. //특조전송처리
  3209. if(submit("TXMNI02023")){
  3210. model.makeValue("/root/send/pid", model.getValue("/root/send/anticncr/pid"));
  3211. //변경내용저장 실행후 업무대상리스트 다시 조회 실시
  3212. fbiztrgtman("acting");
  3213. if(model.getValue("/root/main/rghtref/rghtreflist/pid") == model.getValue(xBizTrgtManListPath+"["+iRow+"]/pid")){
  3214. //업무대상리스트 다시 조회후 현제 Row의 위치에 선택 실시
  3215. grd_biztrgtman.row = iRow;
  3216. //처방 상세내역
  3217. fBiztrgtClick("acting");
  3218. }else if (oRow != ""){
  3219. grd_ordsper.row = oRow;
  3220. fordsper();
  3221. }
  3222. //예약일자 변경시 이전 날짜 선택 여부를 위해서 노드를 copy해둠
  3223. model.copyNode("/root/hidden/main", "/root/main");
  3224. messageBox("특조전송을", "I002");
  3225. }
  3226. }
  3227. }
  3228. }
  3229. /**
  3230. * @ver : 20081217
  3231. * @by : dhkim
  3232. * @---------------------------------------------------
  3233. * @desc : 처방전출력
  3234. * @---------------------------------------------------
  3235. */
  3236. function fPrcpRexpert(){
  3237. var mpsacting = model.getValue("/root/main/mpsacting");// 처방전 + acting
  3238. //처방전 출력전 valid체크
  3239. if(!fIsPrintValid()){
  3240. return ;
  3241. }
  3242. //처방전출력 미리보기창 open
  3243. fPrintPreview();
  3244. if(mpsacting == "1"){
  3245. fPrcpActing("Y");//acting실행
  3246. }else{
  3247. //주사실출력시 엑팅 실시 안하고 출력 여부 저장실시 상태값 update
  3248. model.removenode("/root/send");
  3249. model.makeValue("/root/send/pid", model.getValue("/root/main/rghtref/rghtreflist/pid"));
  3250. model.makeValue("/root/send/prcpdetl", grd_prcpdetl.getupdatedataAll("i"));
  3251. if(submit("TXMNI02025")){
  3252. //처방상세내역조회
  3253. fSearchPrcpDetail();
  3254. }
  3255. }
  3256. }
  3257. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  3258. // 20081217 새로 수정한 acting, acting취소, 변경내용저장 을 호출하기 위한 펑션 종료
  3259. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  3260. /**
  3261. * 20090401 dhkim
  3262. * 화면상단정보 설정
  3263. **/
  3264. function fSetTopInfo(){
  3265. //화면상단 정보설정
  3266. var iRow = grd_biztrgtman.row;
  3267. //20090227 dhkim ordtype제거 무조건 'O'로 넘김
  3268. //var ordtype = model.getValue(xBizTrgtManListPath+"["+iRow+"]/ordtype");
  3269. var ordtype = 'O';
  3270. //20091029 dhkim
  3271. //상단이 현재선택한 row의 정보로 올라가도록 수정함
  3272. var pid = model.getValue("/root/main/rghtref/rghtreflist/pid");
  3273. var orddd = model.getValue("/root/main/rghtlist/ordsperlist["+grd_ordsper.row+"]/actorddd");
  3274. var cretno = model.getValue("/root/main/rghtlist/ordsperlist["+grd_ordsper.row+"]/cretno");
  3275. var instcd = getUserInfo("dutplceinstcd");
  3276. //20090227 dhkim orgorddd 제거
  3277. //var orgorddd = model.getValue(xBizTrgtManListPath+"["+iRow+"]/orgorddd");
  3278. //var param = ordtype + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd + "▦" + '' + "▦" + orgorddd;
  3279. var param = ordtype + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd + "▦" + '' + "▦" + '';
  3280. //20090212 dhkim 추가
  3281. //상단정보세팅전 서울성모 전환환자인지 조회
  3282. model.removenode('/root/send');
  3283. model.makeValue('/root/send/pid', pid);
  3284. if(!submit('TRMNI02030')){
  3285. messageBox('상단정보세팅중 전환환자 여부조회를 실패하였습니다.', 'E999');
  3286. }else{
  3287. var pidflag = model.getValue('/root/bmt/bmtinfo/pidflag');
  3288. var hngnm = model.getValue('/root/bmt/bmtinfo/hngnm');
  3289. if(hngnm != ''){
  3290. hngnm = '"' + hngnm + '"님은 ';
  3291. }
  3292. if(pidflag == 'Y'){
  3293. messageBox(hngnm + '여의도성모에서 서울성모 전환 BMT환자입니다.', 'I999');
  3294. }
  3295. }
  3296. // alert(param);
  3297. //상단정보 세팅
  3298. setParameter("condparam", param);
  3299. modal("SPMMO08900", 1, "", "", "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  3300. }
  3301. /**
  3302. * @date : 20090724
  3303. * @author : dhkim
  3304. * @desc : 예약변경하기전 진단이 있는지 체크하여 이전 진단이 존재하지 않으면 수진선택하도록 팝업호출
  3305. */
  3306. function fPopDiag(curRow){
  3307. /*
  3308. [fFindDiagInfo() 호출정보]
  3309. 진료일 정보를 이용하여 이전 진단명이 존재 외래수진이력 조회 진단명이 없을 경우
  3310. Parameter 값을 이용하여 수진이력 팝업 호출 및 return RESULT
  3311. @param :
  3312. ex) setParameter("preDiagCond", "Etc▦4189074▦20090715▦▦▦/root");
  3313. - 공통
  3314. , jobgubn : 작업구분 : HomeCare-> 가정간호, InjRoom -> 인공신장, Etc : 기타(외래,주사실,진료지원)
  3315. , pid : 등록번호 -> 필수사항
  3316. , orddd : 진료일자 -> 필수사항, 해당 진료일자 이전의 수진이력을 조회함.
  3317. , orddeptcd : 진료과 -> 진료과가 없을 경우 모든 진료과 정보 조회
  3318. , orddrid : 진료의 -> 진료의가 없을 경우 모든 진료의 정보 조회
  3319. , resultXpath : 조회결과가 설정될 hidden Node Xpath -> ex) /root 로 넘어올 경우
  3320. -> 결과는 /root/hidden/ordinfo 밑의 노드에 생성 됨.
  3321. @return : setParameter()로 전달하므로 getParameter("preDiagResult") 로 받아야 함.
  3322. ex) setParameter("preDiagResult", sPid+"▦"+sOrddd+"▦"+sIndd+"▦"+sCretno);
  3323. 설명 : 등록번호▦진료일자▦입원일자▦cretno
  3324. */
  3325. //파라미터 세팅후 호출
  3326. var pid = model.getValue("/root/main/prcpdetl/prcpdetllist[" + curRow + "]/pid");
  3327. var orddd = model.getValue("/root/main/prcpdetl/prcpdetllist[" + curRow + "]/oprc_orddd");
  3328. var orddeptcd = model.getValue("/root/main/prcpdetl/prcpdetllist[" + curRow + "]/oprc_orddeptcd");
  3329. var orddrid = model.getValue("/root/main/prcpdetl/prcpdetllist[" + curRow + "]/oprc_orddrid");
  3330. var retnPath = "/root";
  3331. var setDiagParam = "Etc▦" + pid + "▦" + orddd + "▦" + orddeptcd + "▦" + orddrid + "▦" + retnPath;
  3332. setParameter("preDiagCond", setDiagParam);
  3333. fFindDiagInfo();//careCom.js
  3334. //팝업호출 후 리턴값을 진단복사를 위한 수진키에 새로 세팅 (리턴값이 있을 경우만 세팅함)
  3335. var getDiagParam = getParameter("preDiagResult").split("▦");
  3336. var retPid = getDiagParam[0];
  3337. var retOrddd = getDiagParam[1];
  3338. var retIndd = getDiagParam[2];
  3339. var retCretno = getDiagParam[3];
  3340. var retGenrflagcd = getDiagParam[4];
  3341. if(retPid == null || retPid == ''){
  3342. return;//리턴값이 없으면 빠져나옴.
  3343. }
  3344. //그리드에 리턴값 세팅
  3345. model.setValue("/root/main/prcpdetl/prcpdetllist[" + curRow + "]/pop_cretno", retCretno);
  3346. model.setValue("/root/main/prcpdetl/prcpdetllist[" + curRow + "]/pop_genrflagcd", retGenrflagcd);
  3347. if(retGenrflagcd != 'O'){
  3348. model.setValue("/root/main/prcpdetl/prcpdetllist[" + curRow + "]/pop_orddd", retIndd);
  3349. }else{
  3350. model.setValue("/root/main/prcpdetl/prcpdetllist[" + curRow + "]/pop_orddd", retOrddd);
  3351. }
  3352. // alert(getDiagParam);
  3353. }
  3354. /**
  3355. * 2010.02.25 dhkim
  3356. * 환자라벨출력
  3357. * rghtflag - false: 왼쪽환자그리드리스트클릭
  3358. * true : 오른쪽환자조회화면버튼클릭
  3359. */
  3360. //20100225 dhkim 변경요청사항(요청번호:9796, task:39728)
  3361. function fPrtLabel(rghtflag){
  3362. model.removenode("/root/temp/prtlabel");
  3363. if(rghtflag == true){
  3364. model.makeValue("/root/temp/prtlabel/rghtflag", "T");
  3365. }else{
  3366. model.makeValue("/root/temp/prtlabel/rghtflag", "F");
  3367. }
  3368. model.refresh();
  3369. fOpenLabelPrint_SMMNI02020(rghtflag);
  3370. }
  3371. //2010.02.25 dhkim 추가
  3372. //환자라벨출력
  3373. // rghtflag - false: 왼쪽환자그리드리스트클릭
  3374. // true : 오른쪽환자조회화면버튼클릭
  3375. //20100225 dhkim 변경요청사항(요청번호:9796, task:39728)
  3376. function fOpenLabelPrint_SMMNI02020(rghtflag){
  3377. var left, top;
  3378. if(rghtflag==true){//라벨출력그룹위치 fix
  3379. left = 650;
  3380. top = 50;
  3381. }else{//그리드 포커스에 맞게 이동
  3382. left = event.ScreenX-window.screenleft-10;
  3383. top = event.ScreenY-window.screenTop-150;
  3384. }
  3385. model.removenode("/root/main/cmpatprtcnt");
  3386. model.makeValue("/root/main/cmpatprtcnt","1");
  3387. model.setFocus("ipt_cmpatprtcnt");
  3388. grp_prtlabel.attribute("left") = left;
  3389. grp_prtlabel.attribute("top") = top;
  3390. grp_prtlabel.attribute("visibility") = "visible";
  3391. model.refresh();
  3392. }
  3393. //2010.02.25 dhkim 추가
  3394. //라벨출력실행
  3395. //20100225 dhkim 변경요청사항(요청번호:9796, task:39728)
  3396. function fPrintLabel_SMMNI02020(){
  3397. var rghtflag = model.getValue("/root/temp/prtlabel/rghtflag");
  3398. var pid, patnm, rgstno, sexage;
  3399. var roomcd = "";//외래라 roomcd없음
  3400. var prtcnt = model.getValue("/root/main/cmpatprtcnt");
  3401. orddd = getCurrentDate();//현재일자
  3402. if(rghtflag=="T"){
  3403. pid = model.getValue("/root/main/rghtref/rghtreflist/pid");
  3404. patnm = model.getValue("/root/main/rghtref/rghtreflist/hngnm");
  3405. sexage = model.getValue("/root/main/rghtref/rghtreflist/gndrage");
  3406. rgstno = model.getValue("/root/main/rghtref/rghtreflist/rrgstno");
  3407. }else if(rghtflag=="F"){
  3408. pid = model.getValue("/root/main/biztrgtman/biztrgtmanlist["+grd_biztrgtman.row+"]/pid");
  3409. patnm = model.getValue("/root/main/biztrgtman/biztrgtmanlist["+grd_biztrgtman.row+"]/hngnm");
  3410. sexage = model.getValue("/root/main/biztrgtman/biztrgtmanlist["+grd_biztrgtman.row+"]/gndrage");
  3411. rgstno = model.getValue("/root/main/biztrgtman/biztrgtmanlist["+grd_biztrgtman.row+"]/rrgstno");
  3412. }
  3413. if(pid == null || pid == ''){
  3414. messageBox('등록번호를 입력하세요.', 'E999');
  3415. return false;
  3416. }
  3417. // 환자 정보 라벨 출력
  3418. if(prtcnt > 0){
  3419. //1. 바코드 라벨 설정값 조회
  3420. var scrnid = "SMMNR00600";
  3421. model.removeNodeset("/root/main/barcdprntsetup");
  3422. model.removenode("/root/send");
  3423. model.makeValue("/root/send/scrnid", scrnid);
  3424. submit("TRLLC90101");
  3425. //2. 바코드 라벨 환경설정
  3426. var barcdRef = "/root/main/barcdprntsetup/prntsetupinfo/setupinfo";
  3427. lzzfMakeBrcdPrntObjHanDo("CommAX", barcdRef);
  3428. var portOpenTF = fSetNursBarcdInfo(barcdRef); // CareCom.js 바코드프린터별 환경설정(Zebra,SATO)
  3429. //alert(" pid:"+ pid+" roomcd:"+roomcd+", patnm:"+patnm+", sexage:"+sexage+", rgstno:"+rgstno+", orddd:"+orddd+", prtcnt:"+prtcnt+", portOpenTF :"+portOpenTF)
  3430. //3. 환자라벨출력
  3431. fPrtCarePatNameLabel(barcdRef, pid+" "+roomcd, patnm, sexage, rgstno, orddd, prtcnt, portOpenTF);
  3432. }
  3433. grp_prtlabel.attribute("visibility") = "hidden";
  3434. model.removenode("/root/temp/prtlabel/rghtflag");
  3435. model.refresh();
  3436. }
  3437. //2010.02.25 dhkim 추가
  3438. function fCancelPrint_SMMNI02020(){
  3439. model.removenode("/root/main/cmpatprtcnt");
  3440. model.makeValue("/root/main/cmpatprtcnt","1");
  3441. grp_prtlabel.attribute("visibility") = "hidden";
  3442. }