SMMMO00100.xjs 727 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/*function list
  3. fBaseCdInit: 처방화면 공통코드 초기화
  4. fInitializeScreen: 처방화면 세팅 초기화
  5. fInitializeConDone: 처방화면 초기화 ( xforms-model-construct-done )
  6. fInitializeReady: 처방화면 초기화( xforms-ready )
  7. fDetlVw: 처방상세보기
  8. fPrcpSrch: 처방검색(처방 그리드에서 처방명 쓰고 엔터치면 실행)
  9. fPrcpDetl: 처방상세팝업
  10. fPrcpDetlApp: 처방상세 입력내용을 메인에 적용
  11. fMouseRghtBtnPopup: 오른쪽 마우스 팝업
  12. fDrugInfo: 오른쪽 마우스 팝업 약정보
  13. fDeleteRow: 오른쪽 마우스 클릭 삭제
  14. fCnclDel: 오른쪽 마우스 클릭 삭제,D/C 취소
  15. fPrcpBuffer: 함수 호출시 선택된 데이터를 특정 노드에 담아둔다.
  16. fDelUndo: 마지막 삭제시 버퍼에 담겨둔 것을 되살린다.
  17. fGridDrag: drag 시 이동할 grid 인스턴스 저장
  18. fGridDrop: drop위치에 인스턴스 mapping, 본체 remove, 이동한 row select
  19. fSaveExistCheck: 처방 데이터 저장시 저장할 데이터가 있는 지 check
  20. fPrcpSave: 처방 데이터 저장
  21. fPrcpSavePatList: 진료대상자 리스트에서 환자 호출시 저장할 데이터가 있을 시 저장한다.
  22. fPrcpSort: 처방정렬
  23. bfDrugCalc: 용량, 수량, 횟수의 수정전 값을 instance에 넣어둔다.
  24. DrugCalc: 용량, 수량, 횟수를 수정했을 때 값계산
  25. fPreWorkUp: PreWorkUp 오른쪽 마우스 클릭 ( BMT )
  26. fPrcpDdCheck: 정규, 추가처방 처리
  27. fTempPrcp: 임시처방
  28. fDiagSrch: 진단검색
  29. fDaigMouseRghtBtnPopup: 진단 오른쪽 마우스 클릭
  30. fDiagDeleteRow: 환자진단삭제
  31. fDiagUpdate: 환자진단수정
  32. fPatDiagSrch: 환자진단검색
  33. fMediDayNo: 투약일수조회
  34. fDiagDetlVw: 진단상세보기
  35. fDentifmla: 치식
  36. fPrcpdelivefact: 전달사항 일괄입력
  37. fReqfrm: 병리의뢰지 호출하기
  38. fGetSpc: 진단검사 검체 호출
  39. fPrmsPrcp: 약속처방등록
  40. fBaseMthd: 경구약 기본용법 조회
  41. fScrnInitialize: 처방화면 초기화
  42. fPrcpCopy: 처방화면 오른쪽 마우스 클릭 처방복사
  43. fInitPaminfo: 전처방에서 급비변경후 환자정보 다시 SETTING
  44. fPrcpWndClose : 처방화면 close
  45. fSubjPrcpChk : 임상연구탭 view가능 여부 체크
  46. fInitPrcpWnd : 처방화면 초기화
  47. fXformsReady : 처방화면 초기화 (처음 열린 경우 )
  48. fXReReady : 처방화면 초기화 (다시 열린 경우)
  49. */
  50. //변수선언
  51. var prcpKindCdCol = 3; //처방종류 index
  52. var prcpnmCol = 5; //처방명 컬럼 index
  53. var bfPrcpdd = ""; //처방일자를 바꾸기 전의 값을 담아둠
  54. var diagnmCol = 4;
  55. var SubmitTF_SMMMO00110 = false; //MM)00101.js 에서 fPrcpSave()를 호출 시, 서브밋 성공여부 담음.(2008.01.29)
  56. var arErrorCode = new HashArray();
  57. /**@desc : 처방화면 공통코드 초기화
  58. * @id : model1
  59. * @event : xforms-model-construct-done
  60. * @return : void
  61. * @authur : 마정민 2007. 3. 14
  62. */
  63. function fBaseCdInit() {
  64. lf_mmbfGetDeptCodeComboList(ds_issdept, "I");
  65. lf_prcpExecDeptSrch("all");
  66. appf_getCodeList([{dsNm: "ds_M0003", cdGrpId: "M0003"}
  67. , {dsNm: "ds_M0005", cdGrpId: "M0005"}
  68. , {dsNm: "ds_M0011", cdGrpId: "M0011"}
  69. , {dsNm: "ds_P0034", cdGrpId: "P0034"}
  70. , {dsNm: "ds_M0029", cdGrpId: "M0029"}
  71. , {dsNm: "ds_M0046", cdGrpId: "M0046"}
  72. , {dsNm: "ds_M0007", cdGrpId: "M0007"}
  73. , {dsNm: "ds_M0545", cdGrpId: "M0545"}], true);
  74. lf_getHardCDList("N", 274, null, ds_c6specdrlist);
  75. lf_getHardCDList("N", 275, null, ds_autosetprcplist);
  76. lf_getHardCDList("N", 282, null, ds_securelimitdeptlist);
  77. lf_getHardCDList("N", 285, null, ds_specprcpdrinfo); // 영상의학과 선택진료 교수 자동 배정
  78. lf_getHardCDList("N", 287, null, ds_d2specdrlist); // 병리과 의사 자동배정
  79. lf_getHardCDList("N", 289, null, ds_b2specdrlist); // 진검 선택진료 의사 자동배정
  80. lf_getHardCDList("N", 270, null, ds_init_operationroominfo); // 일일수술실 수술방을 조회한다.
  81. //20110211 mjm 추가 선택진료의 로그인 했을 때 가져오는 것으로 수정
  82. if ( !utlf_isNull(ds_initsrch_usercombo) && ds_initsrch_usercombo.rowcount > 0 ) {
  83. if ( ds_specdrinfo.rowcount < 1 )
  84. ds_specdrinfo.copyData(ds_initsrch_usercombo);
  85. } else {
  86. sysf_messageBox("현재 프로그램 배포로 인해 진료에 필요한 데이터를 재조회 해야합니다. 죄송하지만 반드시 다시 로그인 해주시기 바랍니다.", "");
  87. lf_mmbfGetUserComboList(ds_specdrinfo, sysf_getUserInfo("dutplcecd"), "0330", "", "M", "", "", "", "Y"); // 선택진료의사 리스트를 조회한다.
  88. }
  89. }
  90. /**@desc : 처방화면 세팅 초기화
  91. * @id : model1
  92. * @event : xforms-model-construct-done
  93. * @return : void
  94. * @authur : 마정민 2007. 3. 14
  95. */
  96. function fInitializeScreen() {
  97. //처방화면 위치 선정 2008. 06. 02 오지훈, 두번째 모니터에서 띄어진 경우 중간에 띄지 않는 문제 해결
  98. //var xpt = window.screenleft + eval(0);
  99. //var ypt = window.screenTop + eval(0);
  100. //var coord = getRelativeCoordinate ( xpt, ypt );
  101. //alert(xpt + "," + ypt);
  102. //window.left = xpt;
  103. //window.top = ypt;
  104. //처방화면 초기화시 일일 용량으로 할지 1회 용량으로 할지에 따라서 보여지는 컬럼값 변경
  105. // DB에 저장된 병원기준값을 가지고 와서 보여주는 컬럼을 셋팅한다.
  106. var colHidnValue = lf_grdBaseColHidn("D");
  107. lf_grdBaseColHidn(colHidnValue);
  108. //처방화면 초기화
  109. ds_main_prcplist.selectRow(ds_main_prcplist.rowcount - 1);
  110. ds_main_prcplist.rowposition = ds_main_prcplist.rowcount - 1;
  111. div_all.grd_prcplist.setCellPos(prcpnmCol);
  112. //진단화면 초기화
  113. ds_main_diagcdlist.selectRow(ds_main_diagcdlist.rowcount - 1);
  114. ds_main_diagcdlist.rowposition = ds_main_diagcdlist.rowcount - 1;
  115. div_all.grd_diaglist.setCellPos(diagnmCol);
  116. div_all.grd_prcplist.setFocus();
  117. }
  118. /**@desc : 처방화면 초기화
  119. * @id : model1
  120. * @event : xforms-model-construct-done
  121. * @return : void
  122. * @authur : 마정민 2007. 3. 14
  123. */
  124. function fInitializeConDone(saveFlag) {
  125. //처방 속도개선을 위한 시간 체크 set 20101027 LYJ
  126. try {
  127. var SMMMO00100_S = new Date();
  128. var ordPatObj = frmf_findPopup("SMMMO04100");
  129. var SMMMO04100_chk = ordPatObj.frmf_getParameter("SMMMO04100_chk");
  130. if(!utlf_isNull(ordPatObj) && SMMMO04100_chk == "Y"){
  131. ordPatObj.frmf_setParameter("SMMMO00100_S3",SMMMO00100_S.getTime());
  132. }
  133. } catch(e) {
  134. }
  135. //xforms-ready 에 썼더니 변하는게 보인다.
  136. // 2007.12.07 추가 (Cp창이 열려있다면 close)
  137. ds_main_prcplist.clearData();
  138. lf_appendChildPrcp ( "ds_reset_prcplist", "ds_main_prcplist", "main", "S" ); //검색라인추가
  139. var prcpgenrflag = "";
  140. var patFlagCvs = sysf_getGlobalVariable("patflag");
  141. if(!utlf_isNull(patFlagCvs) && patFlagCvs.length != 0 ){ //cvs가 null이 아닌 경우에만 처리함.
  142. dsf_setCSVToDs("ds_patflag", patFlagCvs); //상단화면 정보 초기화
  143. prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  144. }
  145. var pamInfoCvs = sysf_getGlobalVariable("paminfo");
  146. var insukindcd = appf_getPatientInfoDetail("insukind");
  147. var vopt_insuinfo = "";
  148. if(!utlf_isNull(pamInfoCvs)){ //cvs가 null이 아닌 경우에만 처리함.
  149. dsf_setCSVToDs("ds_paminfo", pamInfoCvs); //상단화면 정보 초기화
  150. ds_init.setColumn(0, "pid", ds_paminfo.getColumn(0, "pid" ));
  151. var vopt_patinfo = ds_paminfo.getColumn(0, "dispnm2" ) + " " + ds_paminfo.getColumn(0, "sex" ) + "/" + ds_paminfo.getColumn(0, "age" );
  152. var roomcd = lf_getDsValue(ds_paminfo, 0, "roomcd");
  153. if (!utlf_isNull(roomcd)){
  154. vopt_patinfo = vopt_patinfo + " " + roomcd + "호";
  155. }
  156. if(prcpgenrflag == "O" && ds_paminfo.getColumn(0, "dnoracptyn" ) == "Y") {
  157. vopt_patinfo = vopt_patinfo + " [donor w/u]";
  158. }
  159. if( (prcpgenrflag == "I" || prcpgenrflag == "E" || prcpgenrflag == "D") && appf_getPatientInfoDetail("drgyn") == "Y" ) { //DRG 환자 표시 2013.05.06 엄영만
  160. vopt_patinfo = vopt_patinfo + " [DRG]";
  161. }
  162. ds_init.setColumn(0, "patinfo", vopt_patinfo);
  163. if (insukindcd == "21"){
  164. vopt_insuinfo = "[의료급여1]";
  165. }else if (insukindcd == "22"){
  166. vopt_insuinfo = "[의료급여2]";
  167. }else if (insukindcd == "81"){
  168. vopt_insuinfo = "[장기요양]";
  169. }else{
  170. vopt_insuinfo = "[" + appf_getPatientInfo("insukind") + "]" ;
  171. }
  172. ds_init.setColumn(0, "insuinfo", vopt_insuinfo );
  173. var sReMark = lf_getDsValue(ds_paminfo, 0, "warnmsg"); // 주의요망 환자 메세지
  174. if ( insukindcd == "31" || insukindcd =="41"){
  175. if(!utlf_isNull(sReMark)) {
  176. sReMark = sReMark + "\n\n";
  177. }
  178. if (appf_getPatientInfoDetail("ioflag") == "O"){
  179. sReMark = sReMark + "자보/산재 환자입니다. \n관련 처방을 모두 [급여]로 처방하여 주시기 바랍니다.\n기왕증은 건강보험으로 재접수하여 처방해 주시기 바랍니다.";
  180. }else {
  181. sReMark = sReMark + "자보/산재 환자입니다. \n관련 처방은 모두 [급여]로 처방하여 주시기 바랍니다. \n그 외 처방은 처방 상세팝업에서 기왕증 체크 후 처방해 주시기 바랍니다.";
  182. }
  183. }
  184. if(!utlf_isNull(sReMark)) {
  185. ds_paminfo.addColumn("remark", "string");
  186. ds_paminfo.setColumn(0, "remark", sReMark);
  187. div_all.group_rmk.visible = true;
  188. }
  189. }
  190. //PRN 적용여부를 실시간으로 가져와서 체크한다. 2010-01-02 by LYJ
  191. lf_getHardCDList("N", "173", null, ds_prnprcpyninfo);
  192. ds_save_saveflaginfo.setColumn(0, "prnprcpyninfo", ds_prnprcpyninfo.getColumn(0, "hardcd"));
  193. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ){ //외래일때
  194. div_all.cmb_prcpkind.visible = false;
  195. div_all.cal_prcpdd.visible = false;
  196. div_all.cmb_issdept.visible = true;
  197. div_all.cmb_hosinprcpresn.visible = true;
  198. div_all.btn_issdept.visible = true;
  199. div_all.caption1.visible = true;
  200. div_all.Div00.button21.visible = true; //kimsj 되의뢰버튼
  201. div_all.cmb_issdept.position.x = 454;
  202. div_all.btn_issdept.position.x = 558;
  203. div_all.cmb_hosinprcpresn.position.x = 695;
  204. div_all.cmb_hosinprcpresn.position.width = 240; //298-58=240
  205. div_all.btn_prcpsave2.enable = true; // 진료예약 + 인증저장
  206. //btn_prcpsave3.enable = true; // 가셔야할 곳 출력 및 인증저장
  207. div_all.chk_patgolistprtyn.enable = true;
  208. div_all.btn_prtpattogo.visible = true;
  209. div_all.grd_prcplist.setFormatColProperty(prcpKindCdCol, "size", 0);
  210. ds_init.setColumn(0, "prcpkindcd", "20" ); //처방종류(추가)
  211. ds_init.setColumn(0, "prcpdd", ds_paminfo.getColumn(0, "orddd"));
  212. //20110104. mjm수정. 경부의 원무 프로세스상 원무의 환자원내 사유를 가져오지 않게 주석처리
  213. //2013.08.08 엄영만 수정 정신과 해바라기센터 의뢰 환자의 원내 사유 설정.
  214. if( "2030000000" == ds_paminfo.getColumn(0, "orddeptcd") && "29" == ds_paminfo.getColumn(0, "hosoutexptresncd") ) {
  215. ds_init.setColumn(0, "hosinprcpresncd", "29"); // 협진(한양방, 양한방, 양양방)환자 정신과 해바라기센터 의뢰 환자 체크
  216. } else {
  217. //2013/09/30 인증 저장됐을시 인증저장 된 값으로 원내처방사유를 세팅(이정택)
  218. if(saveFlag=="save"){
  219. ds_init.setColumn(0, "hosinprcpresncd", ds_paminfo.getColumn(0, "hosoutexptresncd"));
  220. }else{
  221. ds_init.setColumn(0, "hosinprcpresncd", "00");
  222. }
  223. }
  224. //20080927 마정민 수정. 외래환자가 암센터인경우는 발행처를 암센터로 한다.
  225. // 20101227 김영학 수정 외래환자가 센터로 접수한 경우는 발행처를 센터로 한다.
  226. // 2010. 12. 31 특정 센터만 발행처를 센터로 한다. 칠곡병원 김진경 선생님 요청
  227. var patcentcd = ds_paminfo.getColumn(0, "centcd" );
  228. var patorddeptcd = ds_paminfo.getColumn(0, "orddeptcd" );
  229. if(lf_ContainsHardCD("264", patorddeptcd)) { // 진료과가 포함 되면 진료과로 설정 (센터내 특정진료과만 집계를 틀리게 하기 위해) 2013.12.11 엄영만
  230. ds_root.setColumn(0, "issdept", patorddeptcd);
  231. } else if(lf_ContainsHardCD("264", patcentcd)) {
  232. ds_root.setColumn(0, "issdept", patcentcd);
  233. } else {
  234. ds_root.setColumn(0, "issdept", patorddeptcd);
  235. }
  236. } else { //입원, 응급일때
  237. if (prcpgenrflag == "I") {
  238. ds_init.setColumn(0, "hosinprcpresncd", "00");
  239. div_all.Div00.button21.visible = false; //kimsj 되의뢰버튼 - 입원일 경우 보이지 않도록 설정
  240. } else {
  241. ds_init.setColumn(0, "hosinprcpresncd", ds_paminfo.getColumn(0, "hosoutexptresncd"));
  242. div_all.Div00.button21.visible = true; //kimsj 되의뢰버튼
  243. }
  244. // 응급실 발행부서 관련 셋팅. 응급실 환자의 경우 센서스에 등록되어 있는 부서코드로 발행부서를 셋팅해준다.2012.04.24 엄영만
  245. var erissdeptcd = ds_paminfo.getColumn(0, "erissdeptcd");
  246. if (prcpgenrflag == "E" && !utlf_isNull(erissdeptcd) && erissdeptcd != "-") {
  247. ds_root.setColumn(0, "issdept", erissdeptcd);
  248. } else {
  249. ds_root.setColumn(0, "issdept", ds_paminfo.getColumn(0, "wardcd" ));
  250. }
  251. if ( saveFlag != "save" || utlf_isNull(ds_init.getColumn(0, "prcpdd"))) {
  252. ds_init.setColumn(0, "prcpdd", utlf_getCurrentDate());
  253. }
  254. div_all.cmb_hosinprcpresn.visible = false;
  255. div_all.cmb_prcpkind.visible = true;
  256. div_all.cal_prcpdd.visible = true;
  257. div_all.cmb_issdept.visible = true;
  258. div_all.caption1.visible = false;
  259. div_all.btn_issdept.visible = true;
  260. div_all.grd_prcplist.setFormatColProperty(prcpKindCdCol, "size", 55);
  261. div_all.cmb_issdept.position.x = 662;
  262. div_all.btn_issdept.position.x = 764;
  263. div_all.btn_prcpsave2.enable = false; // 진료예약 + 인증저장
  264. div_all.chk_patgolistprtyn.enable = false;
  265. div_all.btn_prtpattogo.visible = false;
  266. //by sonjy 20081020 입원 일때만 정규 처방 시간 check
  267. // by 김영학 2010. 12. 29 정규처방 입력시간을 하드코드 테이블 활용 수정 ( 261번)
  268. lf_getHardCDList("N", "261", null, ds_nomalordertm);
  269. var nomalordrendtm = ds_nomalordertm.lookup("cdseqno", '1', "hardcd");
  270. var nomalordrstrttm = ds_nomalordertm.lookup("cdseqno", '2', "hardcd");
  271. if ( eval (utlf_getCurrentTime().substr (0,2)) <= parseInt(nomalordrendtm) && prcpgenrflag == "I") { //처방종류: 4시전이면 정규
  272. ds_init.setColumn(0, "prcpkindcd", "10" );
  273. } else if ( eval (utlf_getCurrentTime().substr (0,2)) >= parseInt(nomalordrstrttm) && prcpgenrflag == "I" ) { //9시 이후면 정규, 날짜는 다음날짜
  274. ds_init.setColumn(0, "prcpkindcd", "10" );
  275. var nextDay = utlf_getCurrentDate().toDate().getAddDate(1,"D").getDateFormat(); //다음날을 찾는다.
  276. ds_init.setColumn(0, "prcpdd", nextDay );
  277. } else { //추가처방
  278. ds_init.setColumn(0, "prcpkindcd", "20" );
  279. }
  280. if ( prcpgenrflag == "E" || prcpgenrflag == "D" ) {
  281. div_all.cmb_hosinprcpresn.visible = true;
  282. ds_init.setColumn(0, "prcpkindcd", "20" );
  283. div_all.cmb_hosinprcpresn.position.x = 786;
  284. div_all.cmb_hosinprcpresn.position.width = 147; //204-57=147
  285. }
  286. }
  287. //@@@ 조영제 부작용 관리팝업 한번만 띄우기 위해 관련 paramter를 저장 후에 초기화 하도록 수정 (2010.07.16 JJE)
  288. frmf_clearParameter("SPAER01900_popupYN");
  289. frmf_clearParameter("SPAER01900_prcpcd");
  290. frmf_clearParameter("SPAER01900_lnkno");
  291. //협진명을 처방화면에 표시, 2008.04.26 오지훈
  292. var cnsttypenm = appf_getPatientInfoDetail("coopteamnm");
  293. if(utlf_isNull(cnsttypenm)){
  294. div_all.Div00.stt_cnsttypenm.visible = false;
  295. div_all.Div00.btn_cnstconf.visible = false;
  296. }else{
  297. ds_init.setColumn(0, "cnsttypenm", cnsttypenm);
  298. div_all.Div00.stt_cnsttypenm.visible = true;
  299. div_all.Div00.btn_cnstconf.visible = true;
  300. }
  301. // 선택진료 위임여부를 처방화면에 표시 , 2008. 05. 29 김영학
  302. var specordtypenm = appf_getPatientInfoDetail("specordtypenm");
  303. if (specordtypenm == "-" || utlf_isNull(specordtypenm)) {
  304. ds_init.setColumn(0, "specordtypenm", "");
  305. div_all.Div00.stt_specordtypenm.visible = false;
  306. } else {
  307. ds_init.setColumn(0, "specordtypenm", specordtypenm);
  308. div_all.Div00.stt_specordtypenm.visible = true;
  309. }
  310. //의뢰서회신 관련 정보 처리 kimsj 20100208 수정 (회신정보 없을 경우 보이지 않도록 수정)
  311. if(ds_paminfo.getColumn(0, "replyn")=="N"){
  312. ds_init.setColumn(0, "repltypenm", ds_paminfo.getColumn(0, "repltypenm"));
  313. } else {
  314. ds_init.setColumn(0, "repltypenm", "");
  315. }
  316. //중증등록 유효기간 만료 표시 [중증등록 종료일자 기준 -1개월 ~ +18개월] kimsj 100818
  317. var sdoaendchk = appf_getPatientInfoDetail("sdoaendchk");
  318. if (sdoaendchk == "Y") {
  319. ds_init.setColumn(0, "sdoaendnm", "[중증등록 유효기간 만료]");
  320. div_all.Div00.stt_sdoaendnm.visible = true;
  321. } else {
  322. ds_init.setColumn(0, "sdoaendnm", "");
  323. div_all.Div00.stt_sdoaendnm.visible = false;
  324. }
  325. //20080731 마정민 수정 수술탭에서 선택한 것은 수술후에서 수술중으로 처리
  326. var operationFlagCvs = sysf_getGlobalVariable("operation");
  327. if(!utlf_isNull(operationFlagCvs) && operationFlagCvs.length != 0 ){ //cvs가 null이 아닌 경우에만 처리함.
  328. dsf_setCSVToDs("ds_operation", operationFlagCvs ); //상단화면 정보 초기화
  329. ds_init.setColumn(0, "prcpkindcd", "35" );
  330. } else {
  331. ds_operation.clearData();
  332. }
  333. bfPrcpdd = ds_init.getColumn(0, "prcpdd");
  334. if(utlf_isNull(pamInfoCvs)){
  335. return;
  336. }
  337. //20080818 마정민 수정. 처방 저장후 불러오는 건은 app에서 호출하는 걸로 수정.
  338. if ( saveFlag == "save" ){
  339. ds_initsrchprcp_prcpetccnts.copyData(ds_savertninfo_prcpetccnts);
  340. ds_initsrchprcp_rsrvcvrtprcp.copyData(ds_savertninfo_rsrvcvrtprcp);
  341. ds_initsrchprcp_saveserdiagcont.copyData(ds_savertninfo_saveserdiagcont);
  342. ds_initsrchprcp_saveresindenture.copyData(ds_savertninfo_saveresindenture);
  343. } else {
  344. fInitSrch();
  345. }
  346. if ( prcpgenrflag == "O" ){ //외래일때
  347. //20090316 마정민 수정. login 정보에서 당인선검사 사용여부 가져옴
  348. if ( !utlf_isNull(ds_initsrch_pretest) && ds_initsrch_pretest.getColumn(0, "trgtcd") == "Y" ) {
  349. div_all.chk_aftrcpt.visible = true;
  350. }
  351. } else {
  352. div_all.chk_aftrcpt.visible = false;
  353. }
  354. //20090428 마정민 추가. 외래수술로 추가
  355. if (!utlf_isNull(ds_operation.getColumn(0, "oprsrvno"))){
  356. div_all.chk_aftrcpt.visible = false;
  357. div_all.cmb_prcpkind.visible = true;
  358. }
  359. if ( ds_init.getColumn(0, "setprcpyn") == "Y" && saveFlag != "save" ){
  360. if ( ds_root.getColumn(0, "cp" ) != "Y" ) {
  361. //전처방의 로딩여부 초기화, bfprcpload를 N으로 설정해야 진료기록을 띄울 수 있음 2008.02.12 오지훈
  362. ds_init.getColumn(0, "bfprcpload", "N");
  363. div_all.Tab_prcp.tabindex = 1;
  364. div_all.Tab_prcp.tp_bfprcp.fInitialize();
  365. }
  366. }
  367. //ivw_prcp3추가 관련 로직 이동 및 변경.. by sonjy 2008-08-20 start
  368. // iviewer 관련 확인필요
  369. if ( ds_init.getColumn(0, "detlivw") == "m" ) {
  370. div_all.Tab_prcp.components[div_all.Tab_prcp.tabindex].fIvwDetlVwCom();
  371. } else if ( ds_init.getColumn(0, "detlvw" ) == "m" ) {
  372. fDetlVw("y");
  373. }
  374. if( div_all.Tab_prcp.tabindex == 1 ) {
  375. if ( ds_init.getColumn(0, "detlivw") == "m" ) {
  376. div_all.Tab_prcp.tp_bfprcp.fIvwDetlVwCom("bf");
  377. } else if ( ds_init.getColumn(0, "detlvw" ) == "m" ) {
  378. fDetlVw("y");
  379. }
  380. }
  381. //ivw_prcp3추가 관련 로직 이동 및 변경.. by sonjy 2008-08-20 end
  382. if ( ds_anst.getColumn(0, "paramyn") != "Y" ) {
  383. if ( !utlf_isNull(ds_operation.getColumn(0, "oprsrvno")) && prcpgenrflag == "O") {
  384. div_all.cmb_prcpkind.enable = false;
  385. } else {
  386. div_all.cmb_prcpkind.enable = true;
  387. }
  388. }
  389. // 외래에서 로그인 한 의사의 부서와 환자의 부서가 같지 않을 경우 인증저장 버튼 비활성 - 20081015 by Moonsh
  390. var orddeptcd = ds_paminfo.getColumn(0, "orddeptcd"); // 환자의 진료과
  391. var instcd = sysf_getUserInfo("dutplceinstcd"); // 로그인 사용자의 기관기호
  392. var userdeptcd = sysf_getUserInfo("dutplcecd"); // 로그인 사용자의 부서코드
  393. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag" ); // 입원, 외래 정보
  394. var oprsrvinfo = ds_operation.getColumn(0, "oprsrvno");
  395. var chkDisbBtnYN = "N"; //20091015 by JJE 추가
  396. if ( prcpgenrflag == "O" ){
  397. if ( orddeptcd != userdeptcd ) {
  398. if ( utlf_isNull(oprsrvinfo) ) {
  399. if(instcd == "032" && orddeptcd == "2110000000" && lf_ContainsHardCD("445", userdeptcd)) {
  400. // 2014.04.01 엄영만 칠곡 소아청소년과 분과 관련 이전 처방을 DC 할수 있도록 하기 위해 조건 추가
  401. } else {
  402. div_all.btn_prcpsave.enable = false;
  403. div_all.btn_prcpsave2.enable = false;
  404. div_all.btn_prcpsave.tooltiptext = "선생님의 부서와 환자의 부서가 같지 않아서 인증 저장을 할 수 없습니다.";
  405. div_all.btn_prcpsave2.tooltiptext = "선생님의 부서와 환자의 부서가 같지 않아서 인증 저장을 할 수 없습니다.";
  406. chkDisbBtnYN = "Y"; //20091015 by JJE 추가
  407. }
  408. }
  409. }
  410. }
  411. //20140407 엄영만 직종코드가 의사가 아니면 인증저장 버튼 비활성화 처리
  412. var jobkindcd = sysf_getUserInfo("jobkindcd");
  413. if ( !lf_ContainsHardCD("69", jobkindcd)) {
  414. div_all.btn_prcpsave.enable = false;
  415. div_all.btn_prcpsave2.enable = false;
  416. div_all.btn_prcpsave.tooltiptext = "의사직종의 사용자가 아니므로 인증저장 할 수 없습니다.";
  417. div_all.btn_prcpsave2.tooltiptext = "의사직종의 사용자가 아니므로 인증저장 할 수 없습니다.";
  418. chkDisbBtnYN = "Y"; //20091015 by JJE 추가
  419. }
  420. if ( prcpgenrflag == "E" ){
  421. var mainObj = frmf_getMainViewer();
  422. var ordPatObj = mainObj.frmf_findPopup("SMMMO04100");
  423. if(ordPatObj != null){ //두 객체값이 다른 경우 새로운 진료대상자 화면을 open함
  424. var callvisityn = ordPatObj.frmf_getParameter("SMMMO04100_callvisityn");
  425. ds_tmp.setColumn(0, "callvisityn",callvisityn)
  426. if (callvisityn == "N") {
  427. div_all.btn_prcpsave.enable = false;
  428. div_all.btn_prcpsave2.enable = false;
  429. div_all.btn_prcpsave.tooltiptext = "응급실 Visit Time을 등록 하지 않으면 기록과 처방은 임시저장만 가능 합니다.";
  430. div_all.btn_prcpsave2.tooltiptext = "응급실 Visit Time을 등록 하지 않으면 기록과 처방은 임시저장만 가능 합니다.";
  431. chkDisbBtnYN = "Y";
  432. }
  433. }
  434. }// 응급실 call visit 하지 않으면 처방 인증저장만 가능 20100527 by LYJ
  435. //20091015 by JJE 처방 창 사용 도중 저장버튼 비활성화 처리 될 수 있으므로(fChkInCnclYN() 추가에 따라) 화면 환자 전환 시 활성화 처리 필요
  436. if(chkDisbBtnYN == "N"){
  437. div_all.btn_tempsave.tooltiptext = "";
  438. div_all.btn_prcpsave.tooltiptext = "";
  439. div_all.btn_prcpsave2.tooltiptext = "";
  440. div_all.btn_tempsave.enable = true;
  441. div_all.btn_prcpsave.enable = true;
  442. div_all.btn_prcpsave2.enable = true;
  443. }
  444. //DUR-S by sonjy 20091207 환자 선택이 바뀔때 이전 difguid초기화 durappyn : "A:DUR전체사용", "Y:DUR중 저함량제외", "나머지:DUR 사용안함" , "K:경북대용 DUR"
  445. if ( ds_initsrch_durappyn.getColumn(0, "trgtcd" ) == "A" || ds_initsrch_durappyn.getColumn(0, "trgtcd" ) == "Y") {
  446. if( saveFlag != "save" ) ds_init.setColumn(0, "bf_difguid", "");
  447. }//DUR-E
  448. if(typeof(div_all.div_prcpdetail) == "object" && div_all.div_prcpdetail.visible) { // 처방 상세화면이 표시 되어 있으면 초기화
  449. div_all.div_prcpdetail.fPrcpClick();
  450. }
  451. }
  452. /**@desc : 처방화면 초기화
  453. * @id : model1
  454. * @event : xforms-ready
  455. * @return : void
  456. * @authur : 마정민 2007. 3. 14
  457. */
  458. function fInitializeReady(diag) {
  459. var patFlagCvs = sysf_getGlobalVariable("patflag");
  460. if(utlf_isNull(patFlagCvs) || patFlagCvs.length == 0 ) {
  461. sysf_messageBox ( "환자정보가", "I004" );
  462. close();
  463. return;
  464. }
  465. //진단검색 호출
  466. if (utlf_isNull(diag)){
  467. fPatDiagSrch();
  468. }
  469. //처방 Lock 정보 호출
  470. //fgetPrcpLock();
  471. fInitializeScreen();
  472. //CP화면에서는 마지막에 처리
  473. if ( ds_root.getColumn(0, "cp" ) != "Y" ) {
  474. fDrugPrcpDc();
  475. fTempPrcp();
  476. //외래검사처방 입원전환 ( 주사연속처방, 물리치료 연속처방은 제외 )
  477. fSaveRsrvPrcpCvrt();
  478. fPainCnt();
  479. }
  480. }
  481. /**@desc : 처방 상세보기
  482. * @param : 전처방, 연속처방, 처방검색 탭버튼 눌렀을 경우 원복 orgflag => Y
  483. * @id : btn_detlvw
  484. * @event : DOMActivate
  485. * @return : void
  486. * @authur : 마정민 2007. 3. 12
  487. */
  488. function fDetlVw ( orgflag ) {
  489. var grdLeft = 382;
  490. var extnGrdLeft = -2;
  491. var drugmthdspccdnm = 72;
  492. var col = div_all.grd_prcplist.getBindCellIndex("body", "drugmthdspccdnm");
  493. var oldWidth = div_all.grd_prcplist.getFormatColProperty(col, "size");
  494. if ( ds_init.getColumn(0, "detlvw") == "p" && orgflag != "y" ) {
  495. div_all.Splitter00.position.x = extnGrdLeft;
  496. ds_init.setColumn(0, "detlvw", "m");
  497. div_all.grd_prcplist.setFormatColProperty(col, "size", parseInt(oldWidth) - parseInt(drugmthdspccdnm));
  498. } else {
  499. div_all.Splitter00.position.x = grdLeft;
  500. ds_init.setColumn(0, "detlvw", "p" );
  501. div_all.grd_prcplist.setFormatColProperty(col, "size", parseInt(oldWidth) + parseInt(drugmthdspccdnm));
  502. }
  503. }
  504. /**@desc : 처방검색(처방 그리드에서 처방명 쓰고 엔터)
  505. * @id : grd_prcplist
  506. * @event : onendedit
  507. * @return : void
  508. * @authur : 마정민 2007. 3. 14
  509. */
  510. function fPrcpSrch(srchflag) {
  511. var currow = ds_main_prcplist.rowposition;
  512. if ((ds_main_prcplist.getColumn(currow, "prcpflag") == "2" &&
  513. ds_main_prcplist.getColumn(currow, "drugmastspec") == "Y") ||
  514. ds_main_prcplist.getColumn(currow, "status") != "S"){
  515. ds_init_rowmodify.clearData();
  516. ds_init_rowmodify.addRow();
  517. return;
  518. }
  519. if ( gridprcpsrchflag == "Y" ) {
  520. gridprcpsrchflag = "N";
  521. ds_init_rowmodify.clearData();
  522. ds_init_rowmodify.addRow();
  523. return;
  524. }
  525. var prcpnm = lf_getDsValue(ds_main_prcplist, currow, "prcpnm");
  526. if ( srchflag == "prcpcd") {
  527. prcpnm = lf_getDsValue(ds_main_prcplist, currow, "prcpcd" );
  528. }
  529. prcpnm = prcpnm.getTrim();
  530. // 신규처방 수정모드일때 검색 글자수에 대한 flag 셋팅 - 20090630 by Moonsh
  531. var modiflag = ds_init_rowmodify.getColumn(0, "modiflag");
  532. //by sonjy 20100405 처방검색시 제한 글자수 setting
  533. var srchprcpnmlimit = 3;
  534. var srchprcpcdlimit = 2;
  535. var srchhnglimit = 2;
  536. var ds_srchprcplimitlist = this.objects["ds_initsrch_srchprcplimit"];
  537. if( !utlf_isNull(ds_srchprcplimitlist) && ds_srchprcplimitlist.rowcount > 0 ){
  538. for( var n = 0 ; n < ds_srchprcplimitlist.rowcount; n++ ){
  539. if( ds_srchprcplimitlist.getColumn(n, "trgtcd") == "prcpnm" && !utlf_isNull(ds_srchprcplimitlist.getColumn(n, "trgtcdnm")) ){
  540. srchprcpnmlimit = ds_srchprcplimitlist.getColumn(n, "trgtcdnm");
  541. } else if( ds_srchprcplimitlist.getColumn(n, "trgtcd") == "prcpcd" && !utlf_isNull(ds_srchprcplimitlist.getColumn(n, "trgtcdnm")) ){
  542. srchprcpcdlimit = ds_srchprcplimitlist.getColumn(n, "trgtcdnm");
  543. } else if( ds_srchprcplimitlist.getColumn(n, "trgtcd") == "hangul" && !utlf_isNull(ds_srchprcplimitlist.getColumn(n, "trgtcdnm")) ){
  544. srchhnglimit = ds_srchprcplimitlist.getColumn(n, "trgtcdnm") ;
  545. }
  546. }
  547. }
  548. var isHangul = utlf_isHangul (prcpnm);
  549. //한글일때는 1글자만 넣어도 검색가능
  550. if ( utlf_isNull(prcpnm)) {
  551. if ( modiflag == "Y" ) {
  552. ds_init_rowmodify.setColumn(0, "srchnoflag", "Y"); // 검색없는 flag 셋팅 - 20090630 by Moonsh
  553. }
  554. sysf_messageBox ( "처방 검색어를", "C001" );
  555. return;
  556. } else if ( isHangul == "E" ){
  557. //영문,숫자일때는 4글자 넣어야 검색가능
  558. if ( srchflag == "prcpcd") {
  559. //by sonjy 20100405 처방검색시 제한 글자수 setting
  560. //if ( prcpnm.length < 2 ){
  561. if ( prcpnm.length < parseInt(srchprcpcdlimit) ){
  562. if ( modiflag == "Y" ) {
  563. ds_init_rowmodify.setColumn(0, "srchnoflag", "Y"); // 검색없는 flag 셋팅 - 20090630 by Moonsh
  564. }
  565. //messageBox ( "2글자 이상", "C001" );
  566. sysf_messageBox ( srchprcpcdlimit + "글자 이상", "C001" );
  567. return;
  568. }
  569. } else {
  570. //if ( prcpnm.length < 3 ){
  571. if ( prcpnm.length < parseInt(srchprcpnmlimit) ){
  572. if ( modiflag == "Y" ) {
  573. ds_init_rowmodify.setColumn(0, "srchnoflag", "Y"); // 검색없는 flag 셋팅 - 20090630 by Moonsh
  574. }
  575. //messageBox ( "3글자 이상", "C001" );
  576. sysf_messageBox ( srchprcpnmlimit + "글자 이상", "C001" );
  577. return;
  578. }
  579. }
  580. } else if ( isHangul == "H" ) {
  581. //by sonjy 20100405 처방검색시 제한 글자수 setting
  582. //if ( prcpnm.length < 3 ){
  583. if ( prcpnm.length < parseInt(srchhnglimit) ){
  584. if ( modiflag == "Y" ) {
  585. ds_init_rowmodify.setColumn(0, "srchnoflag", "Y"); // 검색없는 flag 셋팅 - 20090630 by Moonsh
  586. }
  587. //messageBox ( "한글은 3글자 이상", "C001" );
  588. sysf_messageBox ( "한글은 " + srchhnglimit + "글자 이상", "C001" );
  589. return;
  590. }
  591. }
  592. if (prcpnm.charAt ( 0 ) == "/"){
  593. if ( prcpnm.length == 1 ){
  594. if ( modiflag == "Y" ) {
  595. ds_init_rowmodify.setColumn(0, "srchnoflag", "Y"); // 검색없는 flag 셋팅 - 20090630 by Moonsh
  596. }
  597. sysf_messageBox ( "검색할 수술명이", "I004" );
  598. return;
  599. }
  600. // var curRow = grd_prcplist.row;
  601. // var srchRow = grd_prcplist.rows -1;
  602. lf_prcpModal ( "SPMMO05100", 180, 80 );
  603. } else {
  604. //첫글자에 *가 있는 경우, contains검색수행
  605. // 2008.06.28 오지훈
  606. // if( prcpnm.charAt(0) == "*" && srchflag != "prcpcd"){
  607. var containflag = false;
  608. if( srchflag != "prcpcd"){
  609. //prcpnm = prcpnm.substring(1, prcpnm.length);
  610. containflag = true;
  611. }
  612. prcpnm = prcpnm.getTrim();
  613. if ( srchflag == "prcpcd") {
  614. lf_prcpSrchCom ( prcpnm, ds_init.getColumn(0, "prcpdd"), ds_paminfo.getColumn(0, "insukind"), "TRMMO00100", "", "getPrcpCdOldSrchInfo", isHangul , containflag);
  615. } else if ( srchflag == "prcpnm") {
  616. lf_prcpSrchCom ( prcpnm, ds_init.getColumn(0, "prcpdd"), ds_paminfo.getColumn(0, "insukind"), "TRMMO00100", "", "getPrcpNmSrchInfo", isHangul , containflag);
  617. } else {
  618. lf_prcpSrchCom ( prcpnm, ds_init.getColumn(0, "prcpdd"), ds_paminfo.getColumn(0, "insukind"), "TRMMO00100", "", "getPrcpSrchInfo", isHangul , containflag);
  619. }
  620. var srchLength = ds_prcpsrch_prcplist.rowcount;
  621. if( srchLength > 1) {
  622. // 처방 코드 수정 모드 관련 import 화면 관련 셋팅 - 20090630 by Moonsh
  623. // setValue => 타부서 프로그램(마취기록)에서 오류발생 => makeValue로 수정 by sonjy 20091009
  624. ds_init_rowmodify.setColumn(0, "importflag", "Y");
  625. var modiflag = ds_init_rowmodify.getColumn(0, "modiflag");
  626. var modirow = ds_init_rowmodify.getColumn(0, "modirow");
  627. if ( srchLength * grd_row_height < 325 ) {
  628. div_all.div_srch.grd_prcpsrchlist.position.height = ( srchLength + 1 ) * grd_row_height + 3;
  629. div_all.div_srch.btn_copy.position.y = ( srchLength + 1 ) * grd_row_height + 8;
  630. div_all.div_srch.btn_cancel.position.y = ( srchLength + 1 ) * grd_row_height + 8;
  631. div_all.div_srch.position.height = ( srchLength + 1 ) * grd_row_height + 33;
  632. } else {
  633. div_all.div_srch.grd_prcpsrchlist.position.height = 325;
  634. div_all.div_srch.btn_copy.position.y = 331;
  635. div_all.div_srch.btn_cancel.position.y = 331;
  636. div_all.div_srch.position.height = 351;
  637. }
  638. // 처방 코드 수정 모드일때 import 화면 위치 재설정 - 20090630 by Moonsh
  639. if ( modiflag == "Y" ){
  640. currow = ds_main_prcplist.rowposition = modirow;
  641. }
  642. if ( currow <= 10 ) {
  643. div_all.div_srch.position.y = 218 + currow * grd_row_height;
  644. } else if ( currow <= 23 ) {
  645. div_all.div_srch.position.y = currow * grd_row_height + 169 - div_all.div_srch.position.height;
  646. } else if ( currow > 23 ){
  647. div_all.div_srch.position.y = grd_row_height * 23 + 195 - div_all.div_srch.position.height;
  648. }
  649. div_all.div_srch.visible = true;
  650. div_all.div_srch.setPrcpSrchListFocus();
  651. } else if( srchLength == 1) {
  652. lf_addPrcp ( "import", "ds_prcpsrch_prcplist", "ds_main_prcplist", "N", "prcpcd", ds_prcpsrch_prcplist.getColumn(0, "prcpcd"), div_all.div_srch.grd_prcpsrchlist, "Y", "00");
  653. //2011.10.19 엄영만 위에 로직으로 변경 추후 아래는 삭제 해야함.
  654. //srchRow = addPrcpDetl ( "import" , "/root/prcpsrch/prcplist" , "/root/main/prcp" , 1 , grd_prcplist.row, "00" );
  655. //if (srchRow !=0 ) {
  656. //srchRow = fAddSetPrcpChk ( "import" , "/root/prcpsrch/prcplist" , "/root/main/prcp" , 1 , srchRow, "00" );
  657. // srchrownum = fAddSetPrcpChkKNUH ( "import" , "/root/prcpsrch/prcplist" , "/root/main/prcp" , 1 , srchRow, "00" );
  658. // if (srchrownum != srchRow) {
  659. // srchRow = srchrownum;
  660. // DrugCalc ( "drprcpetc8" , parseInt(srchRow) -1 ); // 용량보정을 해준다.
  661. // }
  662. // fHosinPrcpResnChk ("main", "/root/main/prcp/" );
  663. // focusMain ( srchRow );
  664. //}
  665. //fPrcpColor();
  666. } else {
  667. sysf_messageBox ( "검색된 내용이", "I004" );
  668. // 처방 코드 수정 모드 관련 검색 내용이 없을 경우 변경 Row 초기화 후 리턴 - 20090630 by Moonsh
  669. var modiflag = ds_init_rowmodify.getColumn(0, "modiflag");
  670. if ( modiflag == "Y" ) {
  671. var grdcnt = ds_main_prcplist.rowcount - 1;
  672. ds_main_prcplist.setColumn(grdcnt, "prcpcd", "");
  673. var modirow = ds_init_rowmodify.getColumn(0, "modirow");
  674. var modiprcpcd = ds_init_rowmodify.getColumn(0, "modiprcpcd");
  675. ds_main_prcplist.setColumn(modirow, "prcpcd", modiprcpcd);
  676. ds_main_prcplist.rowposition = modirow;
  677. ds_init_rowmodify.clearData();
  678. ds_init_rowmodify.addRow();
  679. } else {
  680. div_all.grd_prcplist.showEditor(true);
  681. }
  682. }
  683. }
  684. }
  685. /**@desc : 처방상세팝업
  686. * @param : row: 팝업을 띄울 row
  687. : vxpt: x좌표
  688. : vypt: y좌표
  689. : flag: 처방복사시 자동 팝업인지 체크. 자동 팝업일 경우에는 화면을 refresh 해줘 어느로우에서 팝업을 띄우는지 확인가능하게 한다.
  690. * @return : void
  691. * @authur : 마정민 2007. 3. 14
  692. */
  693. function fPrcpDetl( row, vxpt, vypt, flag ) {
  694. var curRow = 0;
  695. if ( utlf_isNull(row)) {
  696. curRow = ds_main_prcplist.rowposition;
  697. } else {
  698. curRow = row;
  699. }
  700. var sStatus = ds_main_prcplist.getColumn(curRow, "status");
  701. var prcpClsCd = ds_main_prcplist.getColumn(curRow, "prcpclscd");
  702. var prcpinptflag = ds_main_prcplist.getColumn(curRow, "prcpinptflag");
  703. if ( sStatus == "I" || sStatus == "U" || sStatus == "-" ) {
  704. if(typeof(div_all.div_prcpdetail) == "object" && div_all.div_prcpdetail.visible) { // 처방화면 처방상세 기능 사용시 2014.07.16 엄영만
  705. if(flag == "auto") {
  706. if(prcpClsCd == "B4" || prcpClsCd == "C2" || prcpClsCd == "C6") {
  707. // 수혈, 영상 상세창 팝업 되도록
  708. } else if(prcpClsCd == "K2") { //KNUH, 약속처방 복사 시 치식 팝업이 한번만 뜨고 다른 치과처방에 동일하게 적용되도록 함.(2011.03.28 JJE)
  709. if(flag == "auto" && prcpinptflag == "02" && !utlf_isNull(this.objects["ds_main_toot_prcplist"])){
  710. } else {
  711. // 잠시 보류 확인 필요
  712. // event.defaultAction = "cancel";
  713. return true;
  714. }
  715. } else {
  716. // event.defaultAction = "cancel";
  717. return true;
  718. }
  719. } else {
  720. // event.defaultAction = "cancel";
  721. return true;
  722. }
  723. }
  724. if ( utlf_isNull ( vxpt )) vxpt = 400;
  725. if ( utlf_isNull(vypt)) {
  726. var arrCellRect = div_all.grd_prcplist.getCellRect(ds_main_prcplist.rowposition, div_all.grd_prcplist.getCellPos());
  727. if (arrCellRect.bottom <= 408 ) {
  728. vypt = div_all.grd_prcplist.position.top + arrCellRect.bottom + 40;
  729. } else {
  730. vypt = div_all.grd_prcplist.position.top + arrCellRect.bottom - 200;
  731. }
  732. }
  733. var mon = sysf_getCurrentMonitorNumber();
  734. var xpt = this.getOwnerFrame().position.x + parseInt(vxpt);
  735. var ypt = this.getOwnerFrame().position.y + parseInt(vypt);
  736. dsf_createDs("ds_temp_main_prcplist");
  737. dsf_copyColInfo(ds_temp_main_prcplist, ds_main_prcplist);
  738. ds_temp_main_prcplist.addRow();
  739. ds_temp_main_prcplist.copyRow(0, ds_main_prcplist, curRow);
  740. var objArg = new Object();
  741. objArg.arg_ds_main_prcplist = ds_temp_main_prcplist;
  742. if ( ( prcpClsCd == "A2" || prcpClsCd == "A4" ) && prcpinptflag != "35") { //약 20100507 자가보유처방은 팝업 뜨지 않는다. by LYJ
  743. var prnscrID = frmf_getScreenID();
  744. // PRN 처방 프로세스의 적용범위( 처방까지 or 마스터만)에 따라 상세 팝업의 기능을 결정하기위한 파라메터 set
  745. // 2010-01-02 by LYJ
  746. frmf_setParameter ( "SPMMO01100_prcp", prnscrID);
  747. frmf_setParameter ( "SPMMO01100_prndetl", ds_main_prcplist.getColumn(curRow, "drprcpetc6"));
  748. frmf_modal("SPMMO01100", "SPMMO01100", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  749. //20090218 마정민 추가 산제불가 및 주의 약은 대체처방 팝업을 띄운다.
  750. frmf_clearParameter ( "SPMMB10100_chkyn" );
  751. if ( frmf_getParameter ( "SPMMO01100_powdaltdrug" ) == "2" ){
  752. lf_altDrug ( curRow, "4" );
  753. } else if ( frmf_getParameter ( "SPMMO01100_powdaltdrug" ) == "1" ){
  754. lf_altDrug ( curRow, "5" );
  755. }
  756. //확인을 눌렀을 경우. 단 선택된 대체약이 있을 때만 SPMMB10100_chkyn = Y 처리해 준다.
  757. if ( frmf_getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  758. var addRow = ds_main_prcplist.rowcount - 2;
  759. fPrcpBuffer( 1, addRow, "ds_prcpdrag_prcplist", "ds_main_prcplist" ); // 대체약 버퍼에 복사
  760. ds_main_prcplist.deleteRow(addRow); // 대체약 삭제
  761. ds_main_prcplist.deleteRow(curRow); // 기존약 삭제
  762. ds_main_prcplist.insertRow(curRow);
  763. ds_main_prcplist.copyRow(curRow, ds_prcpdrag_prcplist, 0); // 기존약을 대체약으로 변경
  764. ds_main_prcplist.setColumn(curRow, "powdflag", "Y");
  765. ds_prcpdrag_prcplist.clearData();
  766. lf_makePrcpNm ( prcpNode, curRow );
  767. ds_main_prcplist.selectRow(curRow);
  768. div_all.grd_prcplist.setCellPos(div_all.grd_prcplist.getCellPos());
  769. } else {
  770. if ( frmf_getParameter ( "SPMMO01100_powdaltdrug" ) == "1" ) {
  771. ds_main_prcplist.setColumn(curRow, "powdflag", "Y");
  772. lf_makePrcpNm ( prcpNode, curRow );
  773. }
  774. }
  775. frmf_clearParameter ( "SPMMO01100_powdaltdrug" );
  776. frmf_clearParameter ( "SPMMB10100_chkyn" );
  777. } else if ( prcpClsCd == "A6" && prcpinptflag !="35" ) { //주사 20100507 자가보유처방은 팝업 뜨지 않는다. by LYJ
  778. var prnscrID = frmf_getScreenID();
  779. // PRN 처방 프로세스의 적용범위( 처방까지 or 마스터만)에 따라 상세 팝업의 기능을 결정하기위한 파라메터 set
  780. // 2010-01-02 by LYJ
  781. frmf_setParameter ( "SPMMO01200_prcp", prnscrID);
  782. frmf_setParameter ( "SPMMO01200_prndetl", ds_main_prcplist.getColumn(curRow, "drprcpetc6"));
  783. frmf_modal("SPMMO01200", "SPMMO01200", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  784. frmf_clearParameter ( "SPMMO01200_prcp");
  785. } else if ( prcpClsCd == "F2" ) { //재활
  786. frmf_modal("SPMMO01800", "SPMMO01800", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  787. } else if ( prcpClsCd == "C2" || prcpClsCd == "C6" || prcpClsCd == "E2" ) {
  788. //방사선 검사(기능검사, 내시경,천자,생검, 방사선, 핵의학영상)
  789. frmf_modal("SPMMO01300", "SPMMO01300", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  790. //start: 영상 검사의 자동 팝업 시 취소 할 경우 처방창에 처방이 떨어지지 않도록 (2010.02.02 JJE)
  791. if( utlf_isNull(this.objects["ds_prcptemp_prcplist"]) && flag == "auto") frmf_setParameter("cnclCopyPrcpYN_Param", "Y"); // 자동팝업 자동팝업일 경우에만 삭제하도록 "auto" 조건추가
  792. //end
  793. } else if ( prcpClsCd == "G2" ) { //RT
  794. frmf_modal("SPMMO13300", "SPMMO13300", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  795. } else if ( prcpClsCd == "B2" || prcpClsCd == "B6" ) { //진단검사 (검체검사), 핵의학 체내
  796. frmf_modal("SPMMO01400", "SPMMO01400", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  797. } else if ( prcpClsCd == "B4" ) { //수혈 (혈액수혈)
  798. frmf_modal("SPMMO01500", "SPMMO01500", objArg, false, mon, xpt, ypt - 80, null, null, null, null, null, "M");
  799. } else if ( prcpClsCd == "H2" ) { //수술
  800. frmf_modal("SPMMO01600", "SPMMO01600", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  801. //치과 수술 처방(대분류:치과, 중분류:치과수술)인 경우 치식 팝업 호출 (요청번호:8731 2009.10.26 by JJE)
  802. if( frmf_getParameter("SPMMO01600_returnParam") == "Y" ){ //수술팝업에서 '확인'한 경우에만 치식팝업 호출(from 서소영선생님요청)
  803. var tempcol2 = ds_main_prcplist.getColumn(curRow, "tempcol2" );
  804. var tootfact = ds_main_prcplist.getColumn(curRow, "tootfact" );
  805. //by sonjy 20100304 수술/치식 필수입력일경우로 제한 조건 추가 및 치실필수입력 추가. (여의도 상황실 오류 ):
  806. //기존은 치과 수술 처방(대분류:치과, 중분류:치과수술)경우 팝업으로 되어 있었음.
  807. var prcpessninptflag = ds_main_prcplist.getColumn(curRow, "prcpessninptflag" );
  808. //if(tempcol2.substr(0, 5) == "17|02" && tootfact == "-" ){
  809. if(( prcpessninptflag == "2" || ( prcpessninptflag == "5" && tempcol2.substr(0, 5) == "17|02" ) ) && tootfact == "-" ){
  810. ds_main_prcplist.selectRow(curRow);
  811. div_all.grd_prcplist.setCellPos(1);
  812. fDentifmla("OP");
  813. }
  814. }
  815. frmf_clearParameter("SPMMO01600_returnParam");
  816. } else if ( prcpClsCd == "H4" ) { //처치
  817. frmf_modal("SPMMO13100", "SPMMO13100", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  818. } else if ( prcpClsCd == "K2" ) { //치과
  819. //KNUH, 약속처방 복사 시 치식 팝업이 한번만 뜨고 다른 치과처방에 동일하게 적용되도록 함.(2011.03.28 JJE)
  820. if( flag == "auto" && prcpinptflag == "02" && !utlf_isNull(this.objects["ds_main_toot_prcplist"]) ){
  821. ds_prcptemp_prcplist.clear();
  822. ds_prcptemp_prcplist.copyData(ds_main_toot_prcplist);
  823. ds_prcptemp_prcplist.setColumn(0, "prcpcd" , ds_main_prcplist.getColumn(curRow, "prcpcd" ));
  824. ds_prcptemp_prcplist.setColumn(0, "prcpnm" , ds_main_prcplist.getColumn(curRow, "prcpnm" ));
  825. ds_prcptemp_prcplist.setColumn(0, "orgprcpnm" , ds_main_prcplist.getColumn(curRow, "orgprcpnm" ));
  826. ds_prcptemp_prcplist.setColumn(0, "tempcol2" , ds_main_prcplist.getColumn(curRow, "tempcol2" ));
  827. ds_prcptemp_prcplist.setColumn(0, "erprcpflag" , ds_main_prcplist.getColumn(curRow, "erprcpflag" ));
  828. ds_prcptemp_prcplist.setColumn(0, "nigtprcpflag" , ds_main_prcplist.getColumn(curRow, "nigtprcpflag" ));
  829. ds_prcptemp_prcplist.setColumn(0, "payflagcd" , ds_main_prcplist.getColumn(curRow, "payflagcd" ));
  830. ds_prcptemp_prcplist.setColumn(0, "prcpdelivefact" , ds_main_prcplist.getColumn(curRow, "prcpdelivefact" ));
  831. ds_prcptemp_prcplist.setColumn(0, "precureprcpflag", ds_main_prcplist.getColumn(curRow, "precureprcpflag" ));
  832. ds_prcptemp_prcplist.setColumn(0, "prcpqty" , ds_main_prcplist.getColumn(curRow, "prcpqty" ));
  833. ds_prcptemp_prcplist.setColumn(0, "prcpvol" , ds_main_prcplist.getColumn(curRow, "prcpvol" ));
  834. ds_prcptemp_prcplist.setColumn(0, "prcptims" , ds_main_prcplist.getColumn(curRow, "prcptims" ));
  835. ds_prcptemp_prcplist.setColumn(0, "drprcpetc7" , ds_main_prcplist.getColumn(curRow, "drprcpetc7" ));
  836. ds_prcptemp_prcplist.setColumn(0, "drprcpetc8" , ds_main_prcplist.getColumn(curRow, "drprcpetc8" ));
  837. ds_prcptemp_prcplist.setColumn(0, "choiordflag" , ds_main_prcplist.getColumn(curRow, "choiordflag" ));
  838. ds_prcptemp_prcplist.setColumn(0, "specdrid" , ds_main_prcplist.getColumn(curRow, "specdrid" ));
  839. ds_prcptemp_prcplist.setColumn(0, "prcpexecdeptcd" , ds_main_prcplist.getColumn(curRow, "prcpexecdeptcd" ));
  840. ds_prcptemp_prcplist.setColumn(0, "powdflag" , ds_main_prcplist.getColumn(curRow, "powdflag" ));
  841. }else{
  842. frmf_modal("SPMMO13200", "SPMMO13200", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  843. if( flag == "auto" && prcpinptflag == "02" ){
  844. dsf_createDs("ds_main_toot_prcplist");
  845. ds_main_toot_prcplist.copyData(ds_prcptemp_prcplist);
  846. }
  847. }
  848. } else if ( prcpClsCd == "03" ) { //식이
  849. frmf_modal("SPMMO01700", "SPMMO01700", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  850. } else if ( prcpClsCd == "I2" || prcpClsCd == "I4" ) { //마취
  851. frmf_modal("SPMMO02000", "SPMMO02000", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  852. } else if ( prcpClsCd == "C4" ) { //angio
  853. frmf_modal("SPMMO02100", "SPMMO02100", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  854. //start: 영상 검사의 자동 팝업 시 취소 할 경우 처방창에 처방이 떨어지지 않도록 (2010.02.02 JJE)
  855. if( utlf_isNull(this.objects["ds_prcptemp_prcplist"]) && flag == "auto") frmf_setParameter("cnclCopyPrcpYN_Param", "Y"); // 자동팝업 자동팝업일 경우에만 삭제하도록 "auto" 조건추가
  856. //end
  857. } else if ( prcpClsCd == "D2" ) { //병리
  858. frmf_modal("SPMMO02200", "SPMMO02200", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  859. } else if ( prcpClsCd == "M2" ) { //재료
  860. frmf_modal("SPMMO13400", "SPMMO13400", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  861. } else if ( prcpClsCd == "Z0" ) { // 기타일 경우 처치와 같은 화면으로 오픈한다. 2010. 12. 29)
  862. frmf_modal("SPMMO13100", "SPMMO13100", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  863. }
  864. if ( utlf_isNull(this.objects["ds_prcptemp_prcplist"]) || ds_prcptemp_prcplist.rowcount == 0 ) return false;
  865. fPrcpDetlApp ( prcpClsCd, "ds_prcptemp_prcplist", "ds_main_prcplist", curRow );
  866. //M-SET 모처방인 경우, prcphopedd를 자처방에 동일하게 적용
  867. //2008. 07. 22 오지훈
  868. var prcpSetCd = ds_main_prcplist.getColumn(curRow, "prcpsetcd" );
  869. var inclPrcpNo = ds_main_prcplist.getColumn(curRow, "inclprcpno" );
  870. var prcpHopeDD = ds_main_prcplist.getColumn(curRow, "prcphopedd" );
  871. if(prcpSetCd == "-" && inclPrcpNo > 0){ //모처방인 경우, prcphopedd
  872. //alert(prcpSetCd + "," + inclPrcpNo + "," + prcpHopeDD);
  873. for(var i = 0; i < ds_main_prcplist.rowposition; i++){
  874. if(inclPrcpNo == ds_main_prcplist.getColumn(i, "inclprcpno")){
  875. ds_main_prcplist.setColumn(i, "prcphopedd", prcpHopeDD);
  876. }
  877. }
  878. }
  879. /* 수혈적응증 미 입력시 수혈 처방 삭제 처리 */
  880. if ( frmf_getParameter ( "SPMMO01500_bprcpadapt" ) == "D" ){
  881. fDeleteRow();
  882. //화면 닫은후 focus를 다시 grid로 이동시킨다.
  883. div_all.grd_prcplist.setFocus();
  884. //더블 클릭 후 edit 모드로 가는 것을 막는다.
  885. // 확인필요
  886. //event.defaultAction = "cancel";
  887. //model.recalculate();
  888. return false;
  889. }
  890. //화면 닫은후 focus를 다시 grid로 이동시킨다.
  891. div_all.grd_prcplist.setFocus();
  892. //더블 클릭 후 edit 모드로 가는 것을 막는다.
  893. // 확인필요
  894. //event.defaultAction = "cancel";
  895. ds_main_prcplist.selectRow(curRow);
  896. div_all.grd_prcplist.setCellPos(prcpnmCol);
  897. return true;
  898. } else if ( sStatus == "S" ) { //검색안된 것은 더블클릭해도 뜰 것이 없다.
  899. div_all.grd_prcplist.showEditor();
  900. return false;
  901. }
  902. }
  903. /**@desc : 처방상세 입력내용을 메인에 적용
  904. * @param : prcpClsCd - 처방분류
  905. * : strSrc - 소스노드
  906. * : strDest - 목적지노드
  907. * : row - 수정할 row
  908. * @authur : 마정민 2007. 3. 14
  909. */
  910. function fPrcpDetlApp ( prcpClsCd, strSrc, strDest, row ) {
  911. var ds_src = this.objects[strSrc];
  912. var ds_dest = this.objects[strDest];
  913. var srchRow = ds_main_prcplist.rowcount - 1;
  914. var curRow = row;
  915. gGridUpdateChk("det_per"); // 임시저장 수정 모드
  916. if (!utlf_isNull(ds_src) && ds_src.rowcount > 0) {
  917. /*if ( prcpClsCd == "B2" || prcpClsCd == "B6" ) { //진단검사 (검체검사), 핵의학 체내
  918. for(var i = 1; i <= srcNodeList.length; i++) {
  919. makePrcpNm ( strSrc, i );
  920. if ( i == 1 ){ //연속검사이건 아니건 팝업 띄운 row는 replace
  921. var srcSingleNode = instance1.selectSingleNode(prcpNode + "[" + curRow + "]" );
  922. destNode.replaceChild( srcNodeList.item(i-1).cloneNode(true), srcSingleNode);
  923. } else {//추가된 내용은 검색뒤에 붙음
  924. model.duplicate ( strDest, strSrc + "[" + i + "]", "*[" + srchRow + "]" );
  925. srchRow++;
  926. }
  927. }
  928. } else*/
  929. if ( prcpClsCd == "03" ) { //식이
  930. var chkcnt = frmf_getParameter( "SPMMO01700_chkcnt" );
  931. var dietcnt = 0;
  932. //팝업에서 체크한 값이 1이고 처방화면의 식이처방도 1개이면 값을 없는다.
  933. var srcNodeListChk = ds_main_prcplist.getCaseCount("prcpclscd == '03'");
  934. if ( chkcnt == "1" && srcNodeListChk == 1 ) {
  935. lf_makePrcpNm ( strSrc, 0 );
  936. ds_dest.copyRow(curRow, ds_src, 0);
  937. } else {
  938. for(var i = 0; i < ds_src.rowcount; i++) {
  939. lf_makePrcpNm ( strSrc, i );
  940. var dietprcpgenrflag = ds_src.getColumn(i, "dietprcpgenrflag");
  941. var findRow = ds_main_prcplist.findRowExpr("prcpclscd == '03' && dietprcpgenrflag == '" + dietprcpgenrflag + "'");
  942. var checkFlag = ds_main_prcplist.getColumn(curRow, "dietprcpgenrflag");
  943. if ( checkFlag == "-" ) {
  944. ds_dest.copyRow(curRow, ds_src, i);
  945. } else if (findRow != -1) {
  946. ds_dest.copyRow(findRow, ds_src, i);
  947. } else { //추가된 내용은 duplicate
  948. ds_dest.insertRow(srchRow);
  949. ds_dest.copyRow(srchRow, ds_src, i);
  950. dietcnt++; //식이 자동팝업 때문에 추가했다.
  951. srchRow++;
  952. }
  953. }
  954. }
  955. } else {
  956. lf_makePrcpNm ( strSrc, 0 );
  957. ds_dest.copyRow(curRow, ds_src, 0);
  958. }
  959. ds_src.clearData();
  960. ds_main_prcplist.setColumn(curRow, "tempcol9", "");
  961. fSetCpVal( row, "U");
  962. }
  963. }
  964. function fDrugInfo() {
  965. ds_hidden_receivedata.setColumn(0, "srchdrugcd", ds_main_prcplist.getColumn(ds_main_prcplist.rowposition, "prcpcd"));
  966. //open("SMADB01900",0,0,0,"SMADB01900","약코드","/root/hidden/receivedata/srchdrugcd");
  967. //2008. 07. 08 오지훈
  968. //약품편람 조회 화면 open시 약코드 parameter기본 설정
  969. var objArg = new Object();
  970. objArg.arg_ds_hidden_receivedata = ds_hidden_receivedata;
  971. frmf_open("SMADB01900", "SMADB01900", objArg, null, 0, 0, 0, null, null, null, null, null, "M"); //오류팝업
  972. }
  973. function fPrnDrugInfo() {
  974. ds_hidden_receivedata.setColumn(0, "srchdrugcd", ds_main_prcplist.getColumn(ds_main_prcplist.rowposition, "prcpcd"));
  975. //2011. 05. 23 엄영만
  976. //PRN 조회창 open시 약코드 parameter기본 설정
  977. frmf_setParameter("SPMMO33800_search_code", ds_hidden_receivedata.getColumn(0, "srchdrugcd"));
  978. frmf_open("SPMMO33800", "SPMMO33800", null, null, 0, 0, 0, null, null, null, null, null, "M");
  979. }
  980. /**@desc : 선택제외 삭제
  981. * @return : void
  982. * @authur : 마정민 2007. 10. 16
  983. */
  984. function fDeleteElseRow() {
  985. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  986. for (var i = 0; i < selectedRows.length; i++) {
  987. ds_main_prcplist.setColumn(selectedRows[i], "tempcol6", "select");
  988. }
  989. div_all.grd_prcplist.selectAll();
  990. for ( var i = 0; i < ds_main_prcplist.rowcount; i++ ) {
  991. if ( ds_main_prcplist.getColumn(i, "tempcol6") == "select" ) {
  992. ds_main_prcplist.selectRow(i, false);
  993. }
  994. ds_main_prcplist.setColumn(i, "tempcol6", "");
  995. }
  996. fDeleteRow();
  997. }
  998. /**@desc : 오른쪽 마우스 클릭 삭제
  999. * @ : 신규일 때는 removeNode
  1000. * @ : 수정중일 때 원복시킨 후 삭제, D/C 표시
  1001. * @ : 삭제, D/C 원복시킬려면 ? 오른쪽 마우스에 삭제 및 D/C 원복
  1002. * @ : D/C 후 삭제는 불가
  1003. * @id : grd_prcplist
  1004. * @event : 오른쪽 마우스 클릭 삭제
  1005. * @return : void
  1006. * @authur : 마정민 2007. 3. 26
  1007. */
  1008. function fDeleteRow(flag) {
  1009. var currow = ds_main_prcplist.rowposition;
  1010. var curcol = div_all.grd_prcplist.getCellPos();
  1011. var selectedRows;
  1012. if( ds_root.getColumn(0, "cp") == "Y" && ds_main_prcplist.getColumn(0, "status") == "S" ){
  1013. selectedRows = grdf_getSelectedRows(grd_errprcplist); // 추후 CPGMAIN 작업 후 그리드 경로 확인필요
  1014. } else {
  1015. selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  1016. }
  1017. var cnt = 0;
  1018. if ( flag != "noselect" ){
  1019. if (ds_main_prcplist.rowposition < 0 ){
  1020. return;
  1021. }
  1022. }
  1023. //SON0919 원내/원외사유 처리 관련 추가 by sonjy start
  1024. var hosinprcpresncd = "";
  1025. var prcpkindcd = "";
  1026. //SON0919 end
  1027. if ( flag != "noselect" ){
  1028. for (var i = selectedRows.length - 1; i >= 0; i--){
  1029. var status = ds_main_prcplist.getColumn(selectedRows[i], "status");// i가 아니라 selectedRows[i] 아닌가? 추후 확인필요
  1030. // TF : model.getValue ( prcpNode + "[" + i + "]/status" );
  1031. if ( status != "D" ) {
  1032. //처방에서 실수로 복사할 경우 지우지 못하면 문제가 됨으로 일단 주석으로 막았다.
  1033. //응급의료관리료 삭제시
  1034. /*if ( model.getValue ( "/root/patflag/list/prcpgenrflag" ) =="E" ) {
  1035. var prcpcd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpcd" );
  1036. if ( "AC103" == prcpcd || "ACD0005" == prcpcd ){
  1037. messageBox ( "응급의료관리료는 삭제가 불가합니다. 오른쪽마우스 > 응급의료관리료를 이용하여 수정하여 주십시오", "E" );
  1038. continue;
  1039. }
  1040. }*/
  1041. var deleteflag = ds_main_prcplist.getColumn(selectedRows[i], "tempcol6");
  1042. if ( deleteflag != "D" ) { //이미 삭제 표시된것은 제외하고
  1043. //종속처방 체크
  1044. var inclprcpno = ds_main_prcplist.getColumn(selectedRows[i], "inclprcpno");
  1045. if ( !utlf_isNull(inclprcpno) && inclprcpno != "-" ) {
  1046. if ( eval(inclprcpno) > 0 ) { //종속처방이면
  1047. for ( var j = 0; j < ds_main_prcplist.rowcount; j++ ) {
  1048. if ( inclprcpno == ds_main_prcplist.getColumn(j, "inclprcpno")) { // 같은 종속처방은 모두 삭제이다.
  1049. ds_main_prcplist.setColumn(j, "tempcol6", "D");
  1050. }
  1051. }
  1052. }
  1053. }
  1054. ds_main_prcplist.setColumn(selectedRows[i], "tempcol6", "D");
  1055. }
  1056. } else {
  1057. // 같은 종속처방은 모두 살아난다.
  1058. var inclprcpno = ds_main_prcplist.getColumn(selectedRows[i], "inclprcpno" );
  1059. if ( !utlf_isNull(inclprcpno) && inclprcpno != "-" ) {
  1060. if ( eval(inclprcpno) > 0 ) { //종속처방이면
  1061. for ( var j = 0; j < ds_main_prcplist.rowcount; j++ ) {
  1062. if ( inclprcpno == ds_main_prcplist.getColumn(j, "inclprcpno" )) {
  1063. ds_main_prcplist.setColumn(j, "status", "-" );
  1064. }
  1065. }
  1066. }
  1067. }
  1068. }
  1069. }
  1070. }
  1071. var grdrows = ds_main_prcplist.rowcount;
  1072. for (var i = grdrows - 1 ; i >= 0; i-- ) {
  1073. if ( ds_main_prcplist.getColumn(i, "tempcol6") == "D" ) {
  1074. ds_main_prcplist.setColumn(i, "tempcol6", ""); //삭제 표시 clear
  1075. ds_main_prcplist.setColumn(i, "prcpmixno", "-"); //mix clear
  1076. var status = ds_main_prcplist.getColumn(i, "status");
  1077. if (status == "S" ) {
  1078. ds_main_prcplist.setColumn(i, "prcpnm", "");
  1079. } else if ( status == "I" || status == "" ) {
  1080. //SON0919 원내/원외사유 처리 관련 추가 by sonjy start
  1081. //SON1107 DSC 퇴원약도 외래에 준하여 처리. 변경개발요청서 20081013-93에 의거 => 간호준비될때까지 원복 ...
  1082. prcpkindcd = ds_main_prcplist.getColumn(i, "prcpkindcd");
  1083. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  1084. if( prcpgenrflag == "O" ||
  1085. (prcpgenrflag == "E" && ds_init.getColumn(0, "erresn") != "G3" && prcpkindcd == "60" ) ||
  1086. (prcpgenrflag == "D" && prcpkindcd == "60" ) ){
  1087. if( hosinprcpresncd == "" && ( ds_main_prcplist.getColumn(i, "hosinprcpresncd") == "45" || ds_main_prcplist.getColumn(i, "hosinprcpresncd") == "47") ) {
  1088. hosinprcpresncd = ds_main_prcplist.getColumn(i, "hosinprcpresncd") ;
  1089. }
  1090. }
  1091. //SON0919 end
  1092. fPrcpBuffer( ++cnt, i, "ds_prcpdel_prcplist", "ds_main_prcplist" );
  1093. ds_main_prcplist.deleteRow(i);
  1094. lastDeletedRow = i;
  1095. } else if ( status == "-" || status == "U" ) {
  1096. ds_main_prcplist.setColumn(i, "status", "D" );
  1097. } else if ( status =="D" ) {
  1098. ds_main_prcplist.setColumn(i, "status", "-" );
  1099. }
  1100. }
  1101. }
  1102. for (var i = grdrows - 1; i >= 1; i-- ) {
  1103. var chkPrcpmixno = ds_main_prcplist.getColumn(i, "prcpmixno" );
  1104. if ( chkPrcpmixno != "-" && !utlf_isNull(chkPrcpmixno)) {
  1105. //믹스번호가 있고 삭제가 아닌 것중에 혼자 남아 있는 믹스번호라면 풀어준다.
  1106. var srcNodeList = ds_main_prcplist.getCaseCount("prcpmixno == '" + chkPrcpmixno + "'");
  1107. if ( srcNodeList <= 1) {
  1108. ds_main_prcplist.setColumn(i, "prcpmixno", "-");
  1109. }
  1110. }
  1111. }
  1112. // 처방 신규코드에서 수정 모드가 아닐때만 rebuild - 20090630 by Moonsh
  1113. // 추후 색상 확인필요
  1114. // var modiflag = ds_init_rowmodify.getColumn(0, "modiflag");
  1115. // if ( modiflag != "Y" ){
  1116. // grd_prcplist.rebuild();
  1117. // fPrcpColor();
  1118. // }
  1119. //SON0919 원내원외관련 추가 by sonjy
  1120. if( !utlf_isNull(hosinprcpresncd) ){
  1121. lf_chngHosinPrcpResn();
  1122. }
  1123. //SON0919 end
  1124. var firstRow = selectedRows[0];
  1125. var lastRow = selectedRows[selectedRows.length - 1];
  1126. if(currow > firstRow) {
  1127. if(lastRow > ds_main_prcplist.rowcount - 1)
  1128. lastRow = ds_main_prcplist.rowcount - 1;
  1129. ds_main_prcplist.selectRow(lastRow);
  1130. ds_main_prcplist.rowposition = lastRow;
  1131. } else {
  1132. ds_main_prcplist.selectRow(firstRow);
  1133. ds_main_prcplist.rowposition = firstRow;
  1134. }
  1135. div_all.grd_prcplist.setCellPos(curcol);
  1136. if(typeof(div_all.div_prcpdetail) == "object" && div_all.div_prcpdetail.visible) { // 처방상세화면 재설정
  1137. div_all.div_prcpdetail.fPrcpClick();
  1138. }
  1139. }
  1140. /**@desc : 함수 호출시 선택된 데이터를 특정 노드에 담아둔다.
  1141. * @param1 : bufCnt: 첫번째 cnt일때 기존 노드를 삭제하기 위한 count
  1142. * @param2 : bufRow: 노드에 담아놓을 그리드 row
  1143. * @param4 : strDest: 목적지 주소값
  1144. * @param3 : strSrc: 출발지 주소값
  1145. * @return : void
  1146. * @authur : 마정민 2007. 4. 3
  1147. */
  1148. function fPrcpBuffer( bufCnt, bufRow, strDest, strSrc ) {
  1149. var ds_src = this.objects[strSrc];
  1150. var ds_dest = this.objects[strDest];
  1151. if (bufCnt == 1) { //첫번째 데이터이면 기존 노드를 삭제한다.
  1152. ds_dest.clearData();
  1153. }
  1154. //대상노드로 복사한다.
  1155. var toRow = ds_dest.addRow();
  1156. ds_dest.copyRow(toRow, ds_src, bufRow);
  1157. }
  1158. /**@desc : 마지막 삭제시 버퍼에 담겨둔 것을 되살린다.
  1159. * @id : btn_undo
  1160. * @event : DOMActivate
  1161. * @return : void
  1162. * @authur : 마정민 2007. 4. 3
  1163. */
  1164. function fDelUndo () {
  1165. //fGetRsrvPrcp();
  1166. if ( ds_prcpdel_prcplist.rowcount == 0 ) {
  1167. sysf_messageBox ( "되살릴 삭제 데이터가", "I004" );
  1168. return;
  1169. }
  1170. var prcpdd = ds_init.getColumn(0, "prcpdd");
  1171. //삭제시 루프가 뒤에서 부터돌며 buffer instance에 저장하기 때문에 불러 올때도 뒤어서부터 불러와 삭제시 순서를 맞춘다.
  1172. var insRow = ds_main_prcplist.rowcount - 1;
  1173. for (var i = ds_prcpdel_prcplist.rowcount - 1; i >= 0; i--) {
  1174. //대상노드로 복사한다.
  1175. ds_prcpdel_prcplist.setColumn(i, "prcppkspec", prcpdd + "|0|0|" + sysf_getUserInfo("dutplceinstcd"));
  1176. var prcphopedd = ds_prcpdel_prcplist.getColumn(i, "prcphopedd" );
  1177. if ( utlf_isNull(prcphopedd) || prcphopedd == "-" ) {
  1178. prcphopedd = prcpdd;
  1179. }
  1180. if ( prcphopedd < prcpdd ) {
  1181. ds_prcpdel_prcplist.setColumn(i, "prcphopedd", prcpdd );
  1182. }
  1183. ds_main_prcplist.insertRow(insRow);
  1184. ds_main_prcplist.copyRow(insRow, ds_prcpdel_prcplist, i);
  1185. insRow++;
  1186. }
  1187. //되살리기 한번만 해달라는 장효은 선생님 요청
  1188. ds_prcpdel_prcplist.clearData();
  1189. }
  1190. /**@desc : 처방 데이터 저장시 저장할 데이터가 있는 지 check
  1191. * @param : prcpflag: 저장 위치 구분. 0은 메인
  1192. * @return : 0:인증저장(진단+상병), 1:인증저장(진단), 2:인증저장(처방), 4:임시저장(처방), 5:임시저장DC(처방), 6:임시저장(진단+처방), 7:임시저장(진단)
  1193. * @authur : 마정민 2007. 4. 04
  1194. */
  1195. function fSaveExistCheck(savekindflag, patyn) {
  1196. var prcpCnt = 0;
  1197. var tempPrcpCnt = 0;
  1198. var tempDcPrcpCnt = 0;
  1199. var tempDiagPrcpCnt = 0;
  1200. var diagCnt = 0;
  1201. var status = "";
  1202. if (utlf_isNull(savekindflag)) savekindflag = "0";
  1203. if ( savekindflag == "0" ) {
  1204. for ( var i = 0; i < ds_main_prcplist.rowcount; i++ ) {
  1205. var status = lf_getDsValue(ds_main_prcplist, i, "status");
  1206. if (patyn == "Y") {
  1207. if ( status != "S" && status != "-" )
  1208. prcpCnt++;
  1209. } else {
  1210. if ( status != "S" )
  1211. prcpCnt++;
  1212. }
  1213. }
  1214. prcpCnt += ds_prcpdc_prcplist.rowcount;
  1215. for ( var i = 0; i < ds_main_diagcdlist.rowcount; i++ ) {
  1216. var status = lf_getDsValue(ds_main_diagcdlist, i, "status");
  1217. if (patyn == "Y") {
  1218. if ( status != "S" && status != '-' && status != 'T' )
  1219. diagCnt++;
  1220. } else {
  1221. if ( status != "S" && status != '-' )
  1222. diagCnt++;
  1223. }
  1224. }
  1225. } else if ( savekindflag == "1" ) {
  1226. for ( var i = 0; i < ds_main_prcplist.rowcount; i++ ) {
  1227. var status = lf_getDsValue(ds_main_prcplist, i, "status");
  1228. if ( status != "S" && status != "-" ){
  1229. tempPrcpCnt++;
  1230. }
  1231. }
  1232. tempDcPrcpCnt += ds_prcpdc_prcplist.rowcount;
  1233. if ( tempDcPrcpCnt > 0 )
  1234. return 5;
  1235. for ( var i = 0; i < ds_main_diagcdlist.rowcount; i++ ) {
  1236. var status = lf_getDsValue(ds_main_diagcdlist, i, "status");
  1237. if ( status != "S" && status != '-' )
  1238. diagCnt++;
  1239. }
  1240. if ( diagCnt > 0 && tempPrcpCnt > 0 && savekindflag == "1" ) {
  1241. return 6;
  1242. }
  1243. if ( diagCnt > 0 && tempPrcpCnt == 0 && savekindflag == "1" ) {
  1244. return 7;
  1245. }
  1246. }
  1247. if ( prcpCnt > 0 && diagCnt > 0) { // 처방도 존재, 진단도 존재
  1248. return 0;
  1249. } else if ( diagCnt > 0 ) { // 진단만 존재
  1250. return 1;
  1251. } else if ( prcpCnt > 0 ) { // 처방만 존채
  1252. return 2;
  1253. } else if ( tempPrcpCnt > 0 ) { // 임시처방만 존재
  1254. return 4;
  1255. }
  1256. return -1;
  1257. }
  1258. /**@desc : 처방 데이터 저장
  1259. * @param : prcpflag: 처방구분 0: ( 의사처방, CP, 항암프로토콜, 임시), 2:간호, 4:지원부서
  1260. savekindflag: 0:인증저장, 1:임시저장
  1261. prcpchkflag: 저장하시겠습니까 등 메시지를 띄울것인지 check
  1262. * @return : true, false
  1263. * @authur : 마정민 2007. 4. 04
  1264. */
  1265. function fPrcpSave( prcpflag, savekindflag, saveNode, prcpchkflag ) {
  1266. var startStepDate = new Date(); // 각 업부 시작 시간
  1267. var stepElapsed = null;
  1268. var endStepDate = null; // 각 업부 종료후 시간
  1269. var sRTC_Code = "ds_prcpsave_rtc_codeinfo"; // 처방저장 실시간 체크(RealTimeCheck)변수 노드 경로
  1270. var sRTC_Pat = "ds_prcpsave_rtc_patinfo"; // 처방저장 실시간 체크(RealTimeCheck)변수 노드 경로
  1271. dsf_createDs(sRTC_Code);
  1272. dsf_createDs(sRTC_Pat);
  1273. ds_TRMMO00148.setColumn(0, "instcd", ds_paminfo.getColumn(0, "instcd"));
  1274. ds_TRMMO00148.setColumn(0, "ioflag", ds_paminfo.getColumn(0, "ioflag"));
  1275. ds_TRMMO00148.setColumn(0, "pid", ds_paminfo.getColumn(0, "pid"));
  1276. if(ds_paminfo.getColumn(0, "ioflag") == "O" || ds_paminfo.getColumn(0, "ioflag") == "S") {
  1277. ds_TRMMO00148.setColumn(0, "orddd", ds_paminfo.getColumn(0, "orddd" ));
  1278. } else {
  1279. ds_TRMMO00148.setColumn(0, "orddd", ds_paminfo.getColumn(0, "indd" ));
  1280. }
  1281. ds_TRMMO00148.setColumn(0, "cretno", ds_paminfo.getColumn(0, "cretno" ));
  1282. ds_TRMMO00148.setColumn(0, "userid", sysf_getUserInfo("userid") );
  1283. ds_TRMMO00148.setColumn(0, "userdeptcd", sysf_getUserInfo("dutplcecd") );
  1284. var oParam = {};
  1285. oParam.id = "TRMMO00148";
  1286. oParam.service = "prcpmngtapp.PrcpMngt";
  1287. oParam.method = "reqGetPrcpSaveRTCInfo";
  1288. oParam.inds = "req=ds_TRMMO00148";
  1289. oParam.outds = sRTC_Pat + "=patinfo " + sRTC_Code + "=codeinfo";
  1290. oParam.async = false;
  1291. tranf_submit(oParam); // 처방저장 실시간 체크(RealTimeCheck)변수 설정
  1292. ds_main_prcplist.enableevent = false;
  1293. // 작업 완료후 다시 try catch 걸어야 함
  1294. // try {
  1295. var ds_codeinfo = this.objects[sRTC_Code];
  1296. var sNewLogic = ds_codeinfo.lookup("hardcdno", '430', "trgtcd"); // 신규로직 적용여부
  1297. var findRow431 = ds_codeinfo.findRowExpr("hardcdno == '431' && trgtcd == '" + sysf_getUserInfo("userid") + "'");
  1298. if(sNewLogic == "Y") {
  1299. fPrcpSave_new( prcpflag, savekindflag, saveNode, prcpchkflag );
  1300. } else if (sNewLogic == "S" && !utlf_isNull(ds_codeinfo.getColumn(findRow431, "trgtcd"))) {
  1301. fPrcpSave_new( prcpflag, savekindflag, saveNode, prcpchkflag );
  1302. } else {
  1303. fPrcpSave_old( prcpflag, savekindflag, saveNode, prcpchkflag );
  1304. }
  1305. // } catch(err) {
  1306. // sysf_messageBox ( "fPrcpSave() 실행 중 오류가 발생 하였습니다. 전산실(6598)로 연락 부탁드립니다.", "E" );
  1307. // } finally {
  1308. dsf_deleteDs(sRTC_Code);
  1309. dsf_deleteDs(sRTC_Pat);
  1310. ds_main_prcplist.enableevent = true;
  1311. // }
  1312. //endStepDate = new Date(); // 각 업부 종료후 시간
  1313. //stepElapsed = endStepDate.getTime() - startStepDate.getTime(); // 화면 오류 체크전 처리 소요시간
  1314. // 속도체크를 위한 모니터링 로그 데이터 생성.
  1315. //reqSetMonitoringLog( "PrcpSave" + sNewLogic, stepElapsed);
  1316. }
  1317. function fPrcpSave_new( sPrcpFlag, sSaveKindFlag, saveNode, sPrcpChkFlag ) {
  1318. //model.addlog("SPEED CHECK START OF fPrcpSave()");
  1319. //model.addlog(" SPEED CHECK START OF 처방가능체크(화면)");
  1320. var sRTC_Code = "ds_prcpsave_rtc_codeinfo"; // 처방저장 실시간 체크(RealTimeCheck)변수 노드 경로
  1321. var sRTC_Pat = "ds_prcpsave_rtc_patinfo"; // 처방저장 실시간 체크(RealTimeCheck)변수 노드 경로
  1322. var ds_rtc_patinfo = this.objects[sRTC_Pat];
  1323. //처방 시간을 계산하기 위해 변수 추가 2012.11.19 엄영만
  1324. var startStepDate = new Date(); // 각 업부 시작 시간
  1325. var endStepDate = null; // 각 업부 종료후 시간
  1326. var step1Elapsed = null; // 화면 오류 체크전 처리 소요시간
  1327. var step2Elapsed = null; // 서버 오류 체크 소요시간
  1328. var step3Elapsed = null; // 화면 서버 오류 처리 소요시간
  1329. var step4Elapsed = null; // 서버 실제 저장 소요시간
  1330. var step5Elapsed = null; // 화면 저장후 처리 소요 시간
  1331. var nPrcpCnt = 0; // 처방 갯수
  1332. var nDiagCnt = 0; // 진단 갯수
  1333. var mon = sysf_getCurrentMonitorNumber();
  1334. var xpt = this.getOwnerFrame().position.x + 200;
  1335. var ypt = this.getOwnerFrame().position.y + 100;
  1336. var sCpFlag = ds_root.getColumn(0, "cp"); // CP 여부
  1337. var sAddPrcp = ds_root.getColumn(0, "addprcp"); // 시행부서 처방여부
  1338. var sPrcpAuthFlag = ds_init.getColumn(0, "prcpauthflag"); // 처방권한구분
  1339. var sPrcpGenrFlag = ds_patflag.getColumn(0, "prcpgenrflag"); // ioflag O:외래, S:검진, I:입원, E:응급, D:DSC
  1340. var sTuningYn = getTuningYn(); //튜닝 적용여부를 실시간으로 가져와서 체크한다. 2013-03-12 by 박황백
  1341. var sAftDcYn = "N"; //청구후 d/c처방 여부 by sonjy 20081027
  1342. var sUserId = sysf_getUserInfo ("userid");
  1343. var sInstCd = ds_paminfo.getColumn(0, "instcd");
  1344. var sPid = ds_paminfo.getColumn(0, "pid");
  1345. var sCretNo = ds_paminfo.getColumn(0, "cretno");
  1346. var sOrdDeptCd = ds_paminfo.getColumn(0, "orddeptcd");
  1347. var sPrcpDd = ds_init.getColumn(0, "prcpdd");
  1348. var sOrdDd = "";
  1349. var sOrdDrId = "";
  1350. if ( sPrcpGenrFlag == "O" || sPrcpGenrFlag == "S" ) {
  1351. sOrdDd = ds_paminfo.getColumn(0, "orddd");
  1352. sOrdDrId = ds_paminfo.getColumn(0, "orddrid");
  1353. } else {
  1354. sOrdDd = ds_paminfo.getColumn(0, "indd");
  1355. sOrdDrId = ds_paminfo.getColumn(0, "medispclid");
  1356. }
  1357. var pop_DrgAbleYn = "N"; // DRG적용 찹 팝업 여부
  1358. var pop_MedicineConsult = "N"; // 복약상담의뢰 창 팝업 여부 2011.10.24 엄영만 (칠곡 약제부 이석미 요청)
  1359. var pop_EnConsult = "N"; // TPN 영양 상담 여부
  1360. //by sonjy 20091120 전처방 개인별 조회 option 추가
  1361. var bfprcpviewnode = ds_initsrch_envinfo.lookup("qestcd", '018', "answcnt");
  1362. var sBfPrcpViewFlag = "";
  1363. if( !utlf_isNull(bfprcpviewnode) ) {
  1364. sBfPrcpViewFlag = bfprcpviewnode;
  1365. }
  1366. /***********************************************************************************************************
  1367. * 1. 화면 오류 체크 및 저장 데이터 구성
  1368. ***********************************************************************************************************/
  1369. var curCpObj = frmf_findPopup("SPMMO00600"); //활성화된 CP Main 화면 object loading
  1370. if(!utlf_isNull(curCpObj)) curCpObj.fClose();
  1371. if( utlf_isNull(sPrcpFlag)) sPrcpFlag = "0";
  1372. if( utlf_isNull(sSaveKindFlag)) sSaveKindFlag = "0";
  1373. if( utlf_isNull(saveNode)) saveNode = "ds_main_prcplist";
  1374. //20091208 HJS DUR적용여부를 임시적으로 실시간으로 가져와서 체크한다.
  1375. lf_reqHardCodeInfo(ds_hidden_durappinfo, "119");
  1376. ds_initsrch_durappyn.setColumn(0, "trgtcd", ds_hidden_durappinfo.getColumn(0, "hardcd"));
  1377. //PRN 적용여부를 실시간으로 가져와서 체크한다. 2010-01-02 by LYJ
  1378. lf_reqHardCodeInfo(ds_hidden_prnprcpyninfo, "173");
  1379. ds_save_saveflaginfo.setColumn(0, "prnprcpyninfo", ds_hidden_prnprcpyninfo.getColumn(0, "hardcd") );
  1380. //전처방 탭이 아닌 탭에 포커싱 될 때 인증저장 시 DC처방 저장되지 않음. "btn_ivbfprcp.selected &&" 조건 삭제 (JJE)
  1381. if ( sCpFlag != "Y" ) {
  1382. if ( ds_init.getColumn(0, "setprcpyn") == "Y" ) {
  1383. div_all.Tab_prcp.tp_bfprcp.fAppendDC();
  1384. }
  1385. } else {
  1386. if ( prtlprcpstatus_SMMMO00110 != "U" ) { //OCS활성화된 경우만 체크 && btn_ivbfprcp.selected && btn_init.visible == false && btn_reinit.visible == false //CP에서 DC+추가처방발행 안돼서 해당 조건 삭제(2010.07.06 JJE)
  1387. var dcNode = div_all.Tap_prcp.tp_bfprcp.ds_prcpsrch_prcplist.findRow("chkcol", "D"); // DC처방
  1388. if( dcNode != -1 && ds_init.getColumn(0, "setprcpyn") == "Y" ){
  1389. div_all.Tap_prcp.tp_bfprcp.fAppendDC();
  1390. }
  1391. ds_save_saveflaginfo.setColumn(0, "prtlflag", prtlFlag_SMMMO00110 ); //MMPHPTCP의 prtlflag(프로토콜구분)이 '-'이거나 '01'이면 CP (DC저장을 위함)
  1392. }
  1393. }
  1394. var sSaveDataFlag = fSaveExistCheck( sSaveKindFlag );
  1395. if ( sSaveDataFlag == -1 ) {
  1396. if ( sPrcpGenrFlag == "O" ) {
  1397. sSaveDataFlag = 3;
  1398. } else {
  1399. sysf_messageBox ( "저장할", "E013" );
  1400. return false;
  1401. }
  1402. } else if ( sSaveDataFlag == 5 ) {
  1403. sysf_messageBox ( "처방DC는 임시저장", "E001" );
  1404. return false;
  1405. }
  1406. // 처방 저장시 화면에서 처장 가능 한지 체크 한다.
  1407. var sIprcAddYn = lf_getDsValue(ds_paminfo, 0, "iprcaddyn"); // 추가처방 발행여부(심사실 가퇴원 환자)는 처방저장 가능 체크 제외 2012.04.16
  1408. if(sIprcAddYn != "Y" && !fCheckBeforePrcpSave( sPrcpFlag, sSaveKindFlag, saveNode, sPrcpChkFlag )) return false;
  1409. var sSaveOk = "N";
  1410. if ( sPrcpChkFlag != "N" ) { // sPrcpChkFlag가 N 이면 메시지를 안물어보고 넘어간다.
  1411. if ( sPrcpChkFlag == "clickpatlist" ){ sSaveOk = "Y"; } // 진료대상자리스트에서 선택되었을때는 메세지 띄우지 않는다. 20100317 LYJ
  1412. if ( sPrcpChkFlag != "drugdc" ) sPrcpChkFlag = "Y"; //반환요청이 아니라면 Y로 해준다.
  1413. if (ds_initsrch_prcpetccnts.getColumn(0, "admiprcpyn") == "Y" ) { //admission 처방이 없는데
  1414. if ( !utlf_isNull(ds_main_prcplist.lookup("prcpkindcd", '10', "prcpcd")) ) { //정규처방이 존재하면
  1415. if ( "7" == sysf_messageBox ( "입원당일 Admission 처방이 존재하지 않습니다. 그래도 정규처방을", "Q002" )) return false;
  1416. else sSaveOk = "Y"; //질문을 한번만 하려고 수정
  1417. }
  1418. }
  1419. if ( sSaveOk == "N" ) {
  1420. if ( sSaveDataFlag == 6 ) {
  1421. if( sysf_messageBox ( "", "Q002" ) == "6" ) {
  1422. sSaveOk = "Y";
  1423. } else {
  1424. sSaveOk = "N";
  1425. }
  1426. } else {
  1427. if( sysf_messageBox ( "", "Q002" ) == "6" ) sSaveOk = "Y";
  1428. }
  1429. }
  1430. } else {
  1431. sSaveOk = "Y"
  1432. }
  1433. if( sSaveOk != "Y" ) { return false; }
  1434. if (sSaveKindFlag != 1) { // 처방 저장전 체크 해야 할 것들
  1435. if (!fPrcpSaveChkBf(sPrcpChkFlag)) return false;
  1436. }
  1437. //저장등록정보(saveRgstInfo)
  1438. if ("I" == sPrcpGenrFlag || "E" == sPrcpGenrFlag || "D" == sPrcpGenrFlag) {
  1439. ds_paminfo.setColumn(0, "dethdt", ds_rtc_patinfo.getColumn(0, "dethdt")); // 인증저장데이터 생성위치 변경에 따라 사망일자를 실시간 조회 하여 설정 2013.06.05 엄영만
  1440. }
  1441. ds_send_cond2.copyData(ds_paminfo);
  1442. //저장처방정보(savePrcpInfo)
  1443. // 미완성 처방 저장 시, '-' 까지 함께 저장하려 하기때문에 I 만 저장하도록 분기 (2008.10.15 JJE) (s)
  1444. if( sCpFlag != "Y" ){
  1445. ds_send_cond3.copyData(ds_main_prcplist);
  1446. }else{
  1447. fClearSaveInstance();
  1448. fAppendSaveNode( "ds_send_cond3", saveNode );
  1449. }
  1450. fAppendSaveNode( "ds_send_cond3", "ds_prcper_prcplist" );
  1451. fAppendSaveNode( "ds_send_cond3", "ds_prcpdc_prcplist" );
  1452. nPrcpCnt = ds_send_cond3.rowcount - 1;
  1453. //청구후 d/c처방 여부 setting by sonjy 20081027 => 청구후 d/c일 경우 산정특례 및 법정전염병등의 처방저장 후 로직을 탈필요가 없음.
  1454. var aftdclist = ds_prcpdc_prcplist.getCaseCount("tempcol21 == 'C'");
  1455. if( aftdclist.length > 0 ) sAftDcYn = "Y";
  1456. if ( sPrcpChkFlag == "drugdc" ) { //약/주사 D/C 요청 중에 반납요청된 것은 D/C 처리한다.( 저장로직에서 사용 )
  1457. ds_send_cond14.copyData(ds_prcpdc_prcplist);
  1458. }
  1459. //setValue 후에 prcpdc 에 옮겨 놓은 prcplist를 클리어 한다.
  1460. ds_prcpdc_prcplist.clearData();
  1461. //저장진단정보(saveDiagInfo)
  1462. nDiagCnt = ds_main_diagcdlist.rowcount - 1;
  1463. ds_send_cond4.copyData(ds_main_diagcdlist);
  1464. // 처방 진단 암호화 정보 생성(인증서창 팝업)
  1465. if ( sSaveKindFlag != 1 && signyn == "Y" ) {
  1466. var sSignBfPrcpConts = lf_getSignBfConts("1", "ds_paminfo", "ds_send_cond3"); // 암호화전 인증저장 처방 데이터
  1467. var sSignBfDiagConts = lf_getSignBfConts("2", "ds_paminfo", "ds_main_diagcdlist"); // 암호화전 인증저장 진단 데이터
  1468. var sSignAfPrcpConts = ""; // 암호화후 인증저장 처방 데이터
  1469. var sSignAfDiagConts = ""; // 암호화후 인증저장 진단 데이터
  1470. var bSignOpt = false;
  1471. // 응급실환자중 하드코드에 등록되어 있는 과 의사가 로그인 후 처방을 낼 경우에는 인증저장을 한번만 하게 함.(외래와 동일하게 처리)
  1472. var sPD = ds_securelimitdeptlist.lookup("hardcd", sysf_getUserInfo("dutplcecd"), "hardcd");
  1473. if ( sPrcpGenrFlag != "O" && !(sPrcpGenrFlag == "E" && !utlf_isNull(sPD)) ) {
  1474. bSignOpt = true;
  1475. }
  1476. // 입원 또는 응급일 경우 // 20111201 knuh 최원돈
  1477. // 기록/처방 직전 인증저장이 정해진 시간(분 단위, 하드코드 401) 이내이면 인증서를 띄우지 않음(1/2)
  1478. // SMMMO00100.js, MMR01300.js, MMR00100.js, SPMRF05200.js
  1479. // 띄우지 않는 로직
  1480. var ls_emrinptsavetime = lf_getHardCDList("Y", 401, 3);
  1481. var ll_emrinptsavetime = utlf_isNull(ls_emrinptsavetime) ? 0 : parseInt(ls_emrinptsavetime) * -1;
  1482. if ( ( sPrcpGenrFlag == "I"
  1483. || sPrcpGenrFlag == "E")
  1484. && ll_emrinptsavetime < 0
  1485. && sysf_getGlobalVariable("emrinptsavetime") >= utlf_getCurrentDateTime().toDate("YYYYMMDD hhmmss").getAddDate(ll_emrinptsavetime, "m").getDateFormat("YYYYMMDD hhmmss"))
  1486. {
  1487. bSignOpt = false;
  1488. }
  1489. if(!utlf_isNull(sSignBfPrcpConts)) {
  1490. sSignAfPrcpConts = lf_saveSign ( sSignBfPrcpConts, sUserId, bSignOpt); //처방인증
  1491. if ( sSignAfPrcpConts != "N" ) {
  1492. if (utlf_isNull( sSignAfPrcpConts )) { return false; }
  1493. bSignOpt = false; //진단에서 또 안띄우기 위해서 false로 수정
  1494. }
  1495. }
  1496. if(!utlf_isNull(sSignBfDiagConts)) {
  1497. sSignAfDiagConts = lf_saveSign ( sSignBfDiagConts, sUserId, bSignOpt); //진단인증
  1498. if ( sSignAfDiagConts != "N") {
  1499. if (utlf_isNull(sSignAfDiagConts)) { return false; }
  1500. }
  1501. }
  1502. }
  1503. // 저장구분정보(saveFlagInfo)
  1504. ds_save_saveflaginfo.setColumn(0, "savedataflag", sSaveDataFlag); // 저장자료구분 0:진단 및 처방, 1:진단, 2:처방, 4:처방임시저장, 6:진단 및 처방 임시저장, 7:진단임시저장
  1505. ds_save_saveflaginfo.setColumn(0, "saveflag", sPrcpGenrFlag); // 저장구분 O:외래, I:입원, E:응급, S:건진
  1506. ds_save_saveflaginfo.setColumn(0, "prcpflag", sPrcpFlag); // 처방구분 0:의사처방, 2:간호, 3:지원부서, 5:Admission, 6:CP, 7:항암프로토콜, 8:임시처방
  1507. ds_save_saveflaginfo.setColumn(0, "inptflag", "0"); // 입력구분 0:의사, 1:간호사(간호에서 사용), 3:지원부서
  1508. ds_save_saveflaginfo.setColumn(0, "deptcd", sysf_getUserInfo("dutplcecd")); // 부서코드
  1509. ds_save_saveflaginfo.setColumn(0, "deptnm", sysf_getUserInfo("dutplcenm")); // 부서명
  1510. ds_save_saveflaginfo.setColumn(0, "userid", sysf_getUserInfo("userid")); // 사용자ID
  1511. ds_save_saveflaginfo.setColumn(0, "usernm", sysf_getUserInfo("usernm")); // 사용자명
  1512. ds_save_saveflaginfo.setColumn(0, "prcpdd", sPrcpDd);
  1513. ds_save_saveflaginfo.setColumn(0, "divyn", sPrcpChkFlag); // 용량분할 할건지
  1514. ds_save_saveflaginfo.setColumn(0, "durappyn", ds_initsrch_durappyn.getColumn(0, "trgtcd")); // 2010.11.24 이선경 수정 : 경북대용 DUR flag값을 던져줘야 함
  1515. ds_save_saveflaginfo.setColumn(0, "nonprgflag", fCompareNonPrgDiag());
  1516. ds_save_saveflaginfo.setColumn(0, "ipaddress", sysf_getUserInfo("ipaddr")); // 사용자 ipaddress정보
  1517. ds_save_saveflaginfo.setColumn(0, "screenid", frmf_getScreenID()); // 사용자 화면 정보
  1518. ds_save_saveflaginfo.setColumn(0, "savekindflag", sSaveKindFlag); // 처방저장구분 0: 인증저장, 1:임시저장
  1519. ds_save_saveflaginfo.setColumn(0, "cpflag", sCpFlag); // CP처방 Flag
  1520. //2014/02/10 주석처리
  1521. //ds_save_saveflaginfo.setColumn(0, "preworkup", "N"); // preworkup 여부 디폴트값
  1522. //2014/02/10
  1523. ds_save_saveflaginfo.setColumn(0, "signbfprcpconts", sSignBfPrcpConts); // 인증저장 암호화 전 처방 데이터
  1524. ds_save_saveflaginfo.setColumn(0, "signbfdiagconts", sSignBfDiagConts); // 인증저장 암호화 전 진단 데이터
  1525. ds_save_saveflaginfo.setColumn(0, "signafprcpconts", sSignAfPrcpConts); // 인증저장 암호화 전 처방 데이터
  1526. ds_save_saveflaginfo.setColumn(0, "signafdiagconts", sSignAfDiagConts); // 인증저장 암호화 전 진단 데이터
  1527. ds_save_saveflaginfo.setColumn(0, "aftdcyn", sAftDcYn); // 청구후 DC 여부
  1528. ds_save_saveflaginfo.setColumn(0, "addprcp", sAddPrcp); // 시행부서 처방여부
  1529. ds_save_saveflaginfo.setColumn(0, "bfprcpviewflag", sBfPrcpViewFlag); // 전처방 개인별 조회 option
  1530. ds_save_saveflaginfo.setColumn(0, "prcpauthflag", sPrcpAuthFlag); // 처방권한구분
  1531. ds_save_saveflaginfo.setColumn(0, "dschprcpyn", ds_hidden.getColumn(0, "dschprcpyn")); // 퇴원처방 발행 여부
  1532. // 현재 사용하지 않음 추후 삭제 검토 엄영만 2013.11.07
  1533. ds_save_saveflaginfo.setColumn(0, "judgtrgtchkyn", "N" ); //정밀 심사대상 약제(뇌대사개선제, 뇌혈류개선제, 뇌증상개선제) 체크 (2010.01.28 JJE)
  1534. ds_save_saveflaginfo.setColumn(0, "idementiachk", "" ); //by sonjy 20100420 / 치매약제(dementia drug) 복용 시 FF621601 검사 처방 ALERT 팝업 메시지 요청(외래, 신경과인 경우만 체크)
  1535. ds_save_saveflaginfo.setColumn(0, "idementiachkcode", "" ); //by sonjy 20100420 / 치매약제(dementia drug) 복용 시 FF621601 검사 처방 ALERT 팝업 메시지 요청(외래, 신경과인 경우만 체크)
  1536. // 현재 사용하지 않음 추후 삭제 검토 엄영만 2013.11.07
  1537. if ( sSaveKindFlag == 1 ) {
  1538. ds_save_saveflaginfo.setColumn(0, "signyn", "N" ); // 임시저장
  1539. } else {
  1540. ds_save_saveflaginfo.setColumn(0, "signyn", signyn); // 인증저장
  1541. }
  1542. if ( sAddPrcp == "Y" ) {
  1543. ds_save_saveflaginfo.setColumn(0, "pseuacptflag", !utlf_isNull(this.objects["ds_formerkey"]) ? ds_formerkey.getColumn(0, "pseuacptflag") : "");
  1544. ds_save_saveflaginfo.setColumn(0, "admininfo", ds_root.getColumn(0, "admininfo"));
  1545. } else {
  1546. ds_save_saveflaginfo.setColumn(0, "pseuacptflag", "N");
  1547. ds_save_saveflaginfo.setColumn(0, "admininfo", "NNNNNNNNNNNNNNNNNNNN");
  1548. }
  1549. ds_send_cond1.copyData(ds_save_saveflaginfo);
  1550. // DUR 점검결과 전문(DUR 처방전간 체크시 필요함.)
  1551. ds_send_cond5.clearData(); // 처음 체크시에는 값이 없음.
  1552. //20080909 시행부서처방 (진단 복사할 원무정보)
  1553. if ( !utlf_isNull(this.objects["ds_formerkey"]) && ds_formerkey.getColumn(0, "pseuacptflag") == "Y" ) {
  1554. ds_send_cond15.copyData(ds_formerkey);
  1555. } else {
  1556. ds_send_cond15.clearData();
  1557. }
  1558. endStepDate = new Date(); // 각 업부 종료후 시간
  1559. step1Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 화면 오류 체크전 처리 소요시간
  1560. startStepDate = new Date(); // 각 업부 시작 시간
  1561. //model.addlog(" SPEED CHECK END OF 처방가능체크(화면)");
  1562. //model.addlog(" SPEED CHECK START OF 저장 데이터 생성(오류/사유)");
  1563. /***********************************************************************************************************
  1564. * 2. APP 오류 체크 및 저장 처리
  1565. ***********************************************************************************************************/
  1566. // XP에선 mapfile에서 처리하던 default가 안되니 여기서 일괄 처리함
  1567. dsf_setDefaultVal(ds_send_cond1, "divyn:N,pseuacptflag:N,admininfo:N,durappyn:N,nonprgflag:N,preworkup:N,prtlflag:-,cpflag:-,cpgappno:0,prtlprcpstatus:-,msgdd:-,msgno:0,histno:0,resaveyn:Y,checkerrcnt:0,checkresncnt:0,checkinfocnt:0,checketccnt:0,screenid:-,ipaddress:-,savekindflag:-,divchkflag:-,dschyn:N,drgcheck:N,durrechk:-,ocrtagval:-,medicosultnyn:N,aftdcyn:N,addprcp:N,bfprcpviewflag:-,prcpauthflag:-,dschprcpyn:N,dschoutyn:N,enconsultyn:N");
  1568. if ( sPrcpGenrFlag == "O" || sPrcpGenrFlag == "S" )
  1569. dsf_setDefaultVal(ds_send_cond2, "orddeptnm:-,orddrnm:-");
  1570. else
  1571. dsf_setDefaultVal(ds_send_cond2, "orddeptnm:-,orddrnm:-,dschprcpyn:N");
  1572. dsf_setDefaultVal(ds_send_cond3, "prcpvol:0,prcpqty:0,prcptims:0,prcpdayno:0,prcpdelivefact:-,clinccmtcnts:-,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,anticncrdayno:0,druglnkno:0,cvrtbfprcpgenrflag:-,cvrtbforddd:00000000,cvrtbfcretno:0,drgacptflag:-");
  1573. dsf_setTypeFormat(ds_send_cond3, "prcpvol:FLOAT^prcpqty:FLOAT^prcptims:INT^prcpdayno:INT");
  1574. dsf_setDefaultVal(ds_send_cond14, "hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,subcretno:0,drgacptflag:-");
  1575. var sReSaveYn = "Y"; // 처음 한번은 Call 하도록 설정(오류가 있을경우 화면에서 처리 하고, 다시 Call 하도록
  1576. while (sReSaveYn == "Y") {
  1577. // XP : submit 외래, 입원 두개 통합해도 될듯 하나 TF 소스 형태 유지 함
  1578. if ( sPrcpGenrFlag == "O" || sPrcpGenrFlag == "S" ) { //건진일 경우 외래와 동일 처리 BY SONJY 2008-09-03
  1579. // 화면과 DB의 columnid가 서로 다른 경우에 대한 처리
  1580. if(!utlf_isNull(ds_send_cond15.getColumnInfo("orddd")))
  1581. ds_send_cond15.updateColID("orddd", "diagdd");
  1582. // ds_saveinvaliprcplist columnid가 전체가 다 다르다(CP에서 쓰는 건데 CP 화면 작업후 확인필요)
  1583. // ds_delprcplist 은 status의 columnid가 다르다(CP에서 쓰는 건데 CP 화면 작업후 확인필요)
  1584. var oParam = {};
  1585. oParam.id = "TXMMO00121";
  1586. oParam.service = "prcpmngtapp.PrcpMngt";
  1587. oParam.method = "reqExePrcpSave";
  1588. oParam.inds = "saveFlagInfo=ds_send_cond1 saveRgstInfo=ds_send_cond2 savePrcpInfo=ds_send_cond3 saveDiagInfo=ds_send_cond4 kDurChkRslt=ds_send_cond5 saveDrugDcInfo=ds_send_cond14 copyDiagInfo=ds_send_cond15";
  1589. oParam.outds = "ds_result_saveflaginfo=saveflaginfo ds_result_prcperrlist=prcperrlist ds_result_prcplist=prcplist ds_result_savetnmlist=savetnmlist ds_result_savecncrlist=savecncrlist ds_result_kdurchkrslt=kdurchkrslt ds_result_chemoprcplist=chemoprcplist ds_result_geneconsent=geneconsent ds_result_atadconsent=atadconsent ds_result_comnconsent=comnconsent ds_result_invalprcplist=invalprcplist ds_result_specconsent=specconsent ds_result_diagcdlist=diagcdlist ds_result_bfprcplist=bfprcplist ds_result_prcpetccnts=prcpetccnts ds_result_rsrvcvrtprcp=rsrvcvrtprcp ds_result_saveestmspclcs=saveestmspclcs ds_result_saveserdiagappfrm=saveserdiagappfrm ds_result_savelglydis=savelglydis ds_result_saverareobst=saverareobst ds_result_saveresindenture=saveresindenture ds_result_dschestmspclcs=dschestmspclcs ds_result_dschserdiagappfrm=dschserdiagappfrm ds_result_dschlglydis=dschlglydis ds_result_dschrareobst=dschrareobst ds_result_dschresindenture=dschresindenture";
  1590. oParam.async = false;
  1591. oParam.transaction = false;
  1592. oParam.callback = "cf_TXMMO00121";
  1593. tranf_submit(oParam);
  1594. // 화면과 DB의 columnid가 서로 다른 경우에 대한 처리(transaction 후 다시 원래대로)
  1595. if(!utlf_isNull(ds_send_cond15.getColumnInfo("diagdd")))
  1596. ds_send_cond15.updateColID("diagdd", "orddd");
  1597. if(arErrorCode.pop("TXMMO00121") < 0) {
  1598. if (sCpFlag != "Y" || sSaveKindFlag == 1 ) { //조건추가(2008.09.01 JJE)
  1599. ds_send_cond1.clearData();
  1600. ds_send_cond2.clearData();
  1601. ds_send_cond3.clearData();
  1602. ds_send_cond4.clearData();
  1603. ds_send_cond5.clearData();
  1604. ds_send_cond14.clearData();
  1605. ds_send_cond15.clearData();
  1606. ds_result_saveflaginfo.clearData();
  1607. ds_result_prcperrlist.clearData();
  1608. ds_result_prcplist.clearData();
  1609. ds_result_savetnmlist.clearData();
  1610. ds_result_savecncrlist.clearData();
  1611. ds_result_kdurchkrslt.clearData();
  1612. ds_result_chemoprcplist.clearData();
  1613. ds_result_geneconsent.clearData();
  1614. ds_result_atadconsent.clearData();
  1615. ds_result_comnconsent.clearData();
  1616. ds_result_invalprcplist.clearData();
  1617. ds_result_specconsent.clearData();
  1618. ds_result_diagcdlist.clearData();
  1619. ds_result_bfprcplist.clearData();
  1620. ds_result_prcpetccnts.clearData();
  1621. ds_result_rsrvcvrtprcp.clearData();
  1622. ds_result_saveestmspclcs.clearData();
  1623. ds_result_saveserdiagappfrm.clearData();
  1624. ds_result_savelglydis.clearData();
  1625. ds_result_saverareobst.clearData();
  1626. ds_result_saveresindenture.clearData();
  1627. ds_result_dschestmspclcs.clearData();
  1628. ds_result_dschserdiagappfrm.clearData();
  1629. ds_result_dschlglydis.clearData();
  1630. ds_result_dschrareobst.clearData();
  1631. ds_result_dschresindenture.clearData();
  1632. }
  1633. fClearSaveInstance();
  1634. return false;
  1635. }
  1636. dsf_setDefaultVal(ds_result_saveflaginfo, "divyn:N,pseuacptflag:N,admininfo:N,durappyn:N,nonprgflag:N,prtlflag:-,cpflag:-,cpgappno:0,prtlprcpstatus:-,msgdd:-,msgno:0,histno:0,resaveyn:Y,checkerrcnt:0,checkresncnt:0,checkinfocnt:0,checketccnt:0,screenid:-,ipaddress:-,savekindflag:-,divchkflag:-,dschyn:N,drgcheck:N,durrechk:-,ocrtagval:-,medicosultnyn:N,aftdcyn:N,addprcp:N,bfprcpviewflag:-,prcpauthflag:-,dschprcpyn:N,dschoutyn:N,enconsultyn:N");
  1637. dsf_setDefaultVal(ds_result_prcplist, "prcpvol:0,prcpqty:0,prcptims:0,prcpdayno:0,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,anticncrdayno:0,druglnkno:0,drgacptflag:-");
  1638. dsf_setDefaultVal(ds_result_invalprcplist, "status:-,prcpvol:0,prcpqty:0,prcptims:0,prcpdayno:0,drugspd:0,nigtprcpflag:N,mealcalrcnts:0,mealprotcnts:0,prcprefseq:0,ordreqlnkno:0,testreqlnkno:0,prcplnkno:0,prtlno:0,inclprcpno:0,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,aftcertflag:-,aftcertdrid:-,prcpvalidd:00000000,specdrid:-,anticncrprtlno:0,anticncrdayno:0,druglnkno:0,drgacptflag:-");
  1639. dsf_setDefaultVal(ds_result_bfprcplist, "prcpvol:0,prcpvolunitnm:-,prcpqty:0,prcpqtyunitnm:-,prcptims:0,prcpdayno:0,drugmthdspccdnm:-,drugmthdspccd:-,hsctdelivepos:0,etcprcpflag:-,drgacptflag:-");
  1640. } else {
  1641. // 화면과 DB의 columnid가 서로 다른 경우에 대한 처리
  1642. if(!utlf_isNull(ds_send_cond2.getColumnInfo("dschrgstacptchar")))
  1643. ds_send_cond2.updateColID("dschrgstacptchar", "dschrgstacptcharid");
  1644. if(!utlf_isNull(ds_send_cond15.getColumnInfo("orddd")))
  1645. ds_send_cond15.updateColID("orddd", "diagdd");
  1646. var oParam = {};
  1647. oParam.id = "TXMMO00122";
  1648. oParam.service = "prcpmngtapp.PrcpMngt";
  1649. oParam.method = "reqExePrcpSave";
  1650. oParam.inds = "saveFlagInfo=ds_send_cond1 saveRgstInfo=ds_send_cond2 savePrcpInfo=ds_send_cond3 saveDiagInfo=ds_send_cond4 kDurChkRslt=ds_send_cond5 saveDrugDcInfo=ds_send_cond14 copyDiagInfo=ds_send_cond15";
  1651. oParam.outds = "ds_result_saveflaginfo=saveflaginfo ds_result_prcperrlist=prcperrlist ds_result_prcplist=prcplist ds_result_savetnmlist=savetnmlist ds_result_savecncrlist=savecncrlist ds_result_kdurchkrslt=kdurchkrslt ds_result_chemoprcplist=chemoprcplist ds_result_geneconsent=geneconsent ds_result_atadconsent=atadconsent ds_result_comnconsent=comnconsent ds_result_invalprcplist=invalprcplist ds_result_specconsent=specconsent ds_result_diagcdlist=diagcdlist ds_result_bfprcplist=bfprcplist ds_result_prcpetccnts=prcpetccnts ds_result_rsrvcvrtprcp=rsrvcvrtprcp ds_result_saveestmspclcs=saveestmspclcs ds_result_saveserdiagappfrm=saveserdiagappfrm ds_result_savelglydis=savelglydis ds_result_saverareobst=saverareobst ds_result_saveresindenture=saveresindenture ds_result_dschestmspclcs=dschestmspclcs ds_result_dschserdiagappfrm=dschserdiagappfrm ds_result_dschlglydis=dschlglydis ds_result_dschrareobst=dschrareobst ds_result_dschresindenture=dschresindenture";
  1652. oParam.async = false;
  1653. oParam.transaction = false;
  1654. oParam.callback = "cf_TXMMO00122";
  1655. tranf_submit(oParam);
  1656. // 화면과 DB의 columnid가 서로 다른 경우에 대한 처리(transaction 후 다시 원래대로)
  1657. if(!utlf_isNull(ds_send_cond2.getColumnInfo("dschrgstacptcharid")))
  1658. ds_send_cond2.updateColID("dschrgstacptcharid", "dschrgstacptchar");
  1659. if(!utlf_isNull(ds_send_cond15.getColumnInfo("diagdd")))
  1660. ds_send_cond15.updateColID("diagdd", "orddd");
  1661. // ds_saveinvaliprcplist columnid가 전체가 다 다르다(CP에서 쓰는 건데 CP 화면 작업후 확인필요)
  1662. // ds_delprcplist 은 status의 columnid가 다르다(CP에서 쓰는 건데 CP 화면 작업후 확인필요)
  1663. if(arErrorCode.pop("TXMMO00122") < 0) {
  1664. if (sCpFlag != "Y" || sSaveKindFlag == 1 ) { //조건추가(2008.09.01 JJE)
  1665. ds_send_cond1.clearData();
  1666. ds_send_cond2.clearData();
  1667. ds_send_cond3.clearData();
  1668. ds_send_cond4.clearData();
  1669. ds_send_cond5.clearData();
  1670. ds_send_cond14.clearData();
  1671. ds_send_cond15.clearData();
  1672. ds_result_saveflaginfo.clearData();
  1673. ds_result_prcperrlist.clearData();
  1674. ds_result_prcplist.clearData();
  1675. ds_result_savetnmlist.clearData();
  1676. ds_result_savecncrlist.clearData();
  1677. ds_result_kdurchkrslt.clearData();
  1678. ds_result_chemoprcplist.clearData();
  1679. ds_result_geneconsent.clearData();
  1680. ds_result_atadconsent.clearData();
  1681. ds_result_comnconsent.clearData();
  1682. ds_result_invalprcplist.clearData();
  1683. ds_result_specconsent.clearData();
  1684. ds_result_diagcdlist.clearData();
  1685. ds_result_bfprcplist.clearData();
  1686. ds_result_prcpetccnts.clearData();
  1687. ds_result_rsrvcvrtprcp.clearData();
  1688. ds_result_saveestmspclcs.clearData();
  1689. ds_result_saveserdiagappfrm.clearData();
  1690. ds_result_savelglydis.clearData();
  1691. ds_result_saverareobst.clearData();
  1692. ds_result_saveresindenture.clearData();
  1693. ds_result_dschestmspclcs.clearData();
  1694. ds_result_dschserdiagappfrm.clearData();
  1695. ds_result_dschlglydis.clearData();
  1696. ds_result_dschrareobst.clearData();
  1697. ds_result_dschresindenture.clearData();
  1698. }
  1699. fClearSaveInstance();
  1700. return false;
  1701. }
  1702. dsf_setDefaultVal(ds_result_saveflaginfo, "divyn:N,pseuacptflag:N,admininfo:N,durappyn:N,nonprgflag:N,prtlflag:-,cpflag:-,cpgappno:0,prtlprcpstatus:-,msgdd:-,msgno:0,histno:0,resaveyn:Y,checkerrcnt:0,checkresncnt:0,checkinfocnt:0,checketccnt:0,screenid:-,ipaddress:-,savekindflag:-,divchkflag:-,dschyn:N,drgcheck:N,durrechk:-,ocrtagval:-,medicosultnyn:N,aftdcyn:N,addprcp:N,bfprcpviewflag:-,prcpauthflag:-,dschprcpyn:N,dschoutyn:N,enconsultyn:N");
  1703. dsf_setDefaultVal(ds_result_prcplist, "prcpvol:0,prcpqty:0,prcptims:0,prcpdayno:0,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,anticncrdayno:0,druglnkno:0,drgacptflag:-");
  1704. dsf_setDefaultVal(ds_result_invalprcplist, "status:-,prcpvol:0,prcpqty:0,prcptims:0,prcpdayno:0,drugspd:0,nigtprcpflag:N,mealcalrcnts:0,mealprotcnts:0,prcprefseq:0,ordreqlnkno:0,testreqlnkno:0,prcplnkno:0,prtlno:0,inclprcpno:0,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,aftcertflag:-,aftcertdrid:-,prcpvalidd:00000000,specdrid:-,anticncrprtlno:0,anticncrdayno:0,druglnkno:0,drgacptflag:-");
  1705. dsf_setDefaultVal(ds_result_bfprcplist, "prcpvol:0,prcpvolunitnm:-,prcpqty:0,prcpqtyunitnm:-,prcptims:0,prcpdayno:0,drugmthdspccdnm:-,drugmthdspccd:-,clinccmtcnts:'',hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,drgacptflag:-");
  1706. }
  1707. sReSaveYn = ds_result_saveflaginfo.getColumn(0, "resaveyn"); // 다시 오류 체크 할지 여부
  1708. if (sReSaveYn == "Y") { // 오류, 사유, 정보, 기타처리, DUR 처방전간 체크 중 하나라도 있으면 'Y'
  1709. var sCheckErrCnt = ds_result_saveflaginfo.getColumn(0, "checkerrcnt"); // 에러 항목
  1710. var sCheckResnCnt = ds_result_saveflaginfo.getColumn(0, "checkresncnt"); // 사유 입력 항목
  1711. var sCheckInfoCnt = ds_result_saveflaginfo.getColumn(0, "checkinfocnt"); // 정보 확인 항목
  1712. var sCheckEtcCnt = ds_result_saveflaginfo.getColumn(0, "checketccnt"); // 기타 처리 항목
  1713. if(sCheckErrCnt > 0) { // 에러 항목이 존재 하면
  1714. if ( ds_result_prcperrlist.rowcount > 0) {
  1715. var sFlag = "";
  1716. var nErrorCnt = 0; // 에러 오류 처리
  1717. var nBfJudgCnt = 0; // 사전심사 관련 내용은 따로 처리하기 위해서 로직 추가
  1718. for ( var i = 0; i < ds_result_prcperrlist.rowcount; i++ ) {
  1719. sFlag = ds_result_prcperrlist.getColumn(i, "flag" );
  1720. if ( sFlag == "1" ) {
  1721. nErrorCnt++;
  1722. nBfJudgCnt = 0;
  1723. break;
  1724. } else if (sFlag == "9") { // 사전심사에 관련한 에러내용은 따로 처리한다. 2010. 10. 08 김영학
  1725. nBfJudgCnt++;
  1726. }
  1727. }
  1728. if ( nErrorCnt > 0 ) { // 처방 오류 처리
  1729. dsf_createDs("ds_result_prcperrlist_clone");
  1730. ds_result_prcperrlist_clone.copyData(ds_result_prcperrlist);
  1731. var objArg = new Object();
  1732. objArg.arg_ds_result_prcperrlist = ds_result_prcperrlist_clone;
  1733. frmf_open("SPMMO00600", "SPMMO00600", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M"); //오류팝업
  1734. var nErrRow = -1;
  1735. var nDcRow = 0;
  1736. var sDcPrcpPkSpec = "";
  1737. var DcErrArray = new Array();
  1738. for ( var i = 0; i < ds_result_prcperrlist.rowcount; i++ ) {
  1739. if (ds_result_prcperrlist.getColumn(i, "flag") == "1") {
  1740. nErrRow = ds_result_prcperrlist.getColumn(i, "errrow");
  1741. nErrRow -= 1;
  1742. sDcPrcpPkSpec = ds_result_prcperrlist.getColumn(i, "dcprcppkspec");
  1743. if ( !utlf_isNull(nErrRow) && nErrRow >= 0 && nErrRow < ds_main_prcplist.rowcount - 1 ) {
  1744. ds_main_prcplist.setColumn(nErrRow, "tempcol9", "#ff6600");
  1745. //응급처방 할 수 없는 처방코드 수정
  1746. //if(model.getValue("/root/main/prcp/prcplist[" + nErrRow + "]/erprcpflag") == "Y"){
  1747. // model.setValue("/root/main/prcp/prcplist[" + nErrRow + "]/erprcpflag", 'N');
  1748. // model.setValue("/root/main/prcp/prcplist[" + nErrRow + "]/prcpnm", model.getValue("/root/main/prcp/prcplist[" + nErrRow + "]/orgprcpnm") );
  1749. // model.setValue("/root/main/prcp/prcplist[" + nErrRow + "]/prcprefseq","0" );
  1750. //}
  1751. } else if ( !utlf_isNull(sDcPrcpPkSpec) ){ //dc처방 색변경을 위한 수정 시작 by 손주연 2008-06-30
  1752. DcErrArray[nDcRow] = sDcPrcpPkSpec ;
  1753. nDcRow ++;
  1754. } //dc처방 색변경을 위한 수정 종료 by 손주연 2008-06-30
  1755. }
  1756. }
  1757. if( nDcRow > 0 ){ //dc처방 색변경을 위한 수정 시작 by 손주연 2008-06-30
  1758. if( div_all.Tab_prcp.tabindex == 1 && ds_root.getColumn(0, "bfinityn") == "Y" )
  1759. div_all.Tab_prcp.tp_bfprcp.fSetErrDCRow(DcErrArray);
  1760. } //dc처방 색변경을 위한 수정 종료 by 손주연 2008-06-30
  1761. fClearSaveInstance();
  1762. ds_result_prcperrlist.clearData();
  1763. return false;
  1764. } else if ( nBfJudgCnt > 0) { // 사전심사 요구 처리
  1765. frmf_clearParameter("SPMMO21500_rntValue"); //parameter 초기화(2011.01.31 JJE)
  1766. var objArg = new Object();
  1767. objArg.arg_ds_result_saveflaginfo = ds_result_saveflaginfo;
  1768. objArg.arg_ds_result_savedrprcplist = ds_result_savedrprcplist;
  1769. objArg.arg_ds_result_prcperrlist = ds_result_prcperrlist;
  1770. frmf_modal("SPMMO21500", "SPMMO21500", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M"); //오류팝업
  1771. var bfRtnValue = frmf_getParameter("SPMMO21500_rntValue");
  1772. if (bfRtnValue == "REQ") {
  1773. ds_result_prcperrlist.clearData();
  1774. var findRow = ds_main_prcplist.findRowExpr("status == 'I' || status == 'D' || status == 'U'");
  1775. if ( findRow == -1 || utlf_isNull(ds_main_prcplist.getColumn(findRow, "prcpcd"))) {
  1776. findRow = ds_main_diagcdlist.findRowExpr("status == 'I' || status == 'D' || status == 'U'");
  1777. if (findRow == -1 || utlf_isNull(ds_main_diagcdlist.getColumn(findRow, "diagcd"))) {
  1778. sysf_messageBox ( "사전심사할 처방 및 진단이 없습니다.", "E" );
  1779. fClearSaveInstance();
  1780. return false;
  1781. }
  1782. }
  1783. if ( !fPrcpSave_new("0", "1")) {
  1784. ds_prcpdc_prcplist.clearData();
  1785. }
  1786. fClearSaveInstance();
  1787. return false;
  1788. } else if (bfRtnValue == "chgPayFlag") {
  1789. ds_result_prcperrlist.clearData();
  1790. var savePrcpListLen = ds_main_prcplist.getCaseCount("status != 'S'");
  1791. var saveDiagListLen = ds_main_diagcdlist.getCaseCount("status != 'S' && status != '-'");
  1792. if ( savePrcpListLen > 0 || saveDiagListLen >0 ) {
  1793. fPrcpSave_new( sPrcpFlag, sSaveKindFlag, "", "N" );
  1794. }
  1795. return false;
  1796. } else {
  1797. fClearSaveInstance();
  1798. ds_result_prcperrlist.clearData();
  1799. return false;
  1800. }
  1801. } // End of 사전심사처리
  1802. } else {
  1803. sysf_messageBox ("처방 저장시 오류가 발생하였습니다. 전산실(6598)로 문의 바랍니다." , "E" );
  1804. return false;
  1805. }
  1806. } // End of 에러 항목이 존재 하면
  1807. if(sCheckResnCnt > 0) { // 사유 입력 항목이 존재 하면
  1808. frmf_clearParameter("SPMMO90200_rtn");
  1809. var objArg = new Object();
  1810. objArg.arg_ds_result_saveflaginfo = ds_result_saveflaginfo;
  1811. objArg.arg_ds_result_prcperrlist = ds_result_prcperrlist;
  1812. frmf_modal("SPMMO90200", "SPMMO90200", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  1813. if(frmf_getParameter("SPMMO90200_rtn") != "Y") { return false; }
  1814. } // End of 사유 입력 항목이 존재 하면
  1815. if(sCheckInfoCnt > 0) { // 정보 확인 항목이 존재 하면
  1816. frmf_clearParameter("SPMMO90100_rtn");
  1817. var objArg = new Object();
  1818. objArg.arg_ds_result_saveflaginfo = ds_result_saveflaginfo;
  1819. frmf_modal("SPMMO90100", "SPMMO90100", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  1820. if(frmf_getParameter("SPMMO90100_rtn") != "Y") { return false; }
  1821. } // End of 정보 확인 항목이 존재 하면
  1822. if(sCheckEtcCnt > 0) { // 기타 처리 항목이 존재 하면
  1823. // 01. T10001, T10002 용량 분할 처리 T10001:일반 약품 용량 분할, T10002:항암 약품 용량 분할
  1824. var sDivChkFlag = ds_result_saveflaginfo.getColumn(0, "divchkflag"); // 용량 분할 처리
  1825. if (ds_initsrch_durappyn.getColumn(0, "trgtcd") != "A" ) { // 경북대용 DUR 적용시에는 저함량 용량분할 체크 후 DUR 로직체크 함 durappyn : "A-전체 DUR", "Y-저함량제외 DUR", "나머지-DUR 사용안함" , "K:경북대용 DUR"
  1826. if ( sDivChkFlag == "N" ) {
  1827. if ( ds_result_prcplist.rowcount > 0 ) { // 용량분할, 저함량
  1828. if ( !utlf_isNull(ds_result_prcplist.getColumn(0, "prcpcd"))){
  1829. //by sonjy 20090714 변경요청서 처리 : 저함량 용량분할창 닫기버튼 삭제처리
  1830. var objArg = new Object();
  1831. objArg.arg_ds_main_prcplist = ds_result_prcplist;
  1832. frmf_modal("SPADB62400", "SPADB62400", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  1833. fClearSaveInstance();
  1834. }
  1835. fPrcpSave_new( sPrcpFlag, sSaveKindFlag, "", "N" ); // by sonjy 20100303 수정 임시처방저장시 인증저장으로 가는 오류 수정.
  1836. return false;
  1837. }
  1838. } else if (sDivChkFlag == "A") {
  1839. //20090420 마정민 수정 항암용량분할은 기존에는 서버에서 불할되어 바로 저장체크로직으로 갔지만 보험제한규정에 걸려서
  1840. //다시저장할때 분할된 내용이 화면이 표시가 되지 않아 용량분할이 되지 않음.
  1841. //항암용량분할도 화면에 표시하게 수정
  1842. ds_main_prcplist.clearData();
  1843. //용량분할시 서버체크로직에서 default="0" 으로 세팅하여 넘겨서 화면에 0 으로 조회되여 다시 ''로 초기화, 서버로직 수정은 추후검토, 2009-07-05. CHC
  1844. for (var i = 0; i < ds_result_prcplist.rowcount; i++) {
  1845. if(ds_result_prcplist.getColumn(i, "status") == "S") {
  1846. ds_result_prcplist.setColumn(i, "prcpvol", "");
  1847. ds_result_prcplist.setColumn(i, "prcpqty", "");
  1848. ds_result_prcplist.setColumn(i, "prcptims", "");
  1849. ds_result_prcplist.setColumn(i, "prcpdayno", "");
  1850. break;
  1851. }
  1852. }
  1853. ds_main_prcplist.appendData(ds_result_prcplist, true);
  1854. fPrcpSave_new( sPrcpFlag, sSaveKindFlag, "", "N" ); // by sonjy 20100303 수정 임시처방저장시 인증저장으로 가는 오류 수정.
  1855. return false;
  1856. }
  1857. } // End of 용량 분할 처리
  1858. // 02. T10003 퇴원예고에러발생여부
  1859. var sDschYn = ds_result_saveflaginfo.getColumn(0, "dschyn");
  1860. if(sDschYn == "Y"){ //퇴원예고 되지 않은 사항에서 퇴원처방을 했을경우 퇴원예고 창을 띄움
  1861. sysf_messageBox ("퇴원예고를 해야만 퇴원 및 퇴원후외래,입원전검사(전일/당일) 처방을 저장할 수 있습니다." , "E" );
  1862. preDsch();
  1863. return false;
  1864. }
  1865. // 03. T10004 DRG적용 처방체크
  1866. pop_DrgAbleYn = ds_result_saveflaginfo.getColumn(0, "drgcheck"); // DRG적용 처방체크
  1867. // 04. T10005 항암제 상세정보 입력 2013.08.13 엄영만
  1868. for ( var i = 0; i < ds_result_chemoprcplist.rowcount; i++ ) {
  1869. frmf_clearParameter ( "SPMMO23000_rtn1" );
  1870. dsf_createDs("ds_result_chemoprcplist_clone");
  1871. dsf_copyColInfo(ds_result_chemoprcplist_clone, ds_result_chemoprcplist);
  1872. ds_result_chemoprcplist_clone.addRow();
  1873. ds_result_chemoprcplist_clone.copyRow(0, ds_result_chemoprcplist, i);
  1874. var objArg = new Object();
  1875. objArg.arg_ds_main_chemoinfo = ds_result_chemoprcplist_clone;
  1876. frmf_modal("SPMMO23000", "SPMMO23000", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  1877. if ( frmf_getParameter ( "SPMMO23000_rtn1" ) != "Y" ){
  1878. dsf_deleteDs("ds_result_chemoprcplist_clone");
  1879. return false;
  1880. }
  1881. }
  1882. dsf_deleteDs("ds_result_chemoprcplist_clone");
  1883. // 05. T10006 병기분류/항암차수 정보 입력
  1884. if (!utlf_isNull(ds_result_savetnmlist.getColumn(0, "pid")) || !utlf_isNull(ds_result_savecncrlist.getColumn(0, "pid"))) {
  1885. frmf_clearParameter("SPMMO08400_rtn1");
  1886. var objArg = new Object();
  1887. objArg.arg_ds_tempresult_savetnmlist = ds_result_savetnmlist;
  1888. objArg.arg_ds_tempresult_savecncrlist = ds_result_savecncrlist;
  1889. frmf_modal("SPMMO08400", "SPMMO08400", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  1890. if(frmf_getParameter ( "SPMMO08400_rtn1" ) != "Y") { return false; }
  1891. }
  1892. // 06. T10007 유전자검사 동의서 처리
  1893. if (!utlf_isNull(ds_result_geneconsent.getColumn(0, "prcpcd")) && sCpFlag != "Y") {
  1894. dsf_deleteDs("ds_hidden_gene2_savedata"); // 유전자 검사 동의서 저장 노드 초기화
  1895. dsf_deleteDs("ds_hidden_geneunitlist2"); // 유전자 검사 동의서 출력물 노드 초기화
  1896. var objArg = new Object();
  1897. objArg.arg_ds_main_prcplist = ds_result_geneconsent;
  1898. frmf_modal("SPMMO21001", "SPMMO21001", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M"); // 유전자 동의서
  1899. var geneInfoNodes = this.objects["ds_hidden_geneunitlist2"]; // 유전자 동의서 서식 데이터
  1900. if( utlf_isNull(geneInfoNodes) || geneInfoNodes.rowcount <= 0) { // 유전자 동의서 서식 데이터
  1901. return false;
  1902. } else {
  1903. dsf_createDs("ds_hidden_gene_savedata"); // TXMMO21001 input 노드 주소
  1904. if(ds_hidden_gene2_savedata.rowcount > 0){ // 유전자 동의서 저장 데이터 노드 주소
  1905. ds_hidden_gene_savedata.copyData(ds_hidden_gene2_savedata);
  1906. }
  1907. var oParam = {};
  1908. oParam.id = "TXMMO21001";
  1909. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  1910. oParam.method = "reqExeSaveGeneInsptAgree";
  1911. oParam.inds = "savedata=ds_hidden_gene_savedata";
  1912. oParam.outds = "ds_result_saveinfo=saveinfo";
  1913. oParam.async = false;
  1914. oParam.callback = "cf_TXMMO21001";
  1915. tranf_submit(oParam);
  1916. if(arErrorCode.pop("TXMMO21001") > -1) { // 유전자 동의서 저장
  1917. var objDOM = rptf_createDOM(); // DOM 객체 설정
  1918. rptf_setNodeListToDOM(objDOM, "/root/hidden/geneunitlist2", ds_hidden_geneunitlist2); // 데이터셋 1
  1919. var objParam = new Object();
  1920. objParam.xml_data_XML1 = objDOM.documentElement.source; // 최상의노드 XML 스트링 추출
  1921. var option = "open=1;save=1;directprint=0;print=1;zoom=0;callback=cbf_rpt_onFinishPrintXML";
  1922. rptf_exeReportPreview30(["RPMMO21002"],[objParam], option);
  1923. fOcrAutoPrint(ds_result_geneconsent.getColumn(0, "prcpcd") + "▦");
  1924. if(!fSaveOCRIF(ds_result_geneconsent.getColumn(0, "ocrtag")
  1925. , ds_result_geneconsent.getColumn(0, "pid")
  1926. , ds_result_geneconsent.getColumn(0, "orddd")
  1927. , ds_result_geneconsent.getColumn(0, "cretno")
  1928. , ds_result_geneconsent.getColumn(0, "prcpgenrflag")
  1929. , ds_result_geneconsent.getColumn(0, "orddeptcd")
  1930. , ds_result_geneconsent.getColumn(0, "orddrid")
  1931. , ds_result_geneconsent.getColumn(0, "formcd")
  1932. , ds_result_geneconsent.getColumn(0, "formfromdt")
  1933. , "", "", 1) ) {
  1934. sysf_messageBox("유전자검사동의서 IF 저장시 오류발생", "I");
  1935. }
  1936. }
  1937. }
  1938. }
  1939. // 07. T10008 인체 유래물 동의서 처리
  1940. if (!utlf_isNull(ds_result_atadconsent.getColumn(0, "prcpcd")) && sCpFlag != "Y") {
  1941. dsf_deleteDs("ds_hidden_gene_savedata"); // 유전자 검사 동의서 저장 노드 초기화
  1942. dsf_deleteDs("ds_hidden_geneunitlist"); // 인체 유래물 동의서 서식 데이터 출력물 노드 초기화
  1943. var objArg = new Object();
  1944. objArg.arg_ds_main_prcplist = ds_result_atadconsent;
  1945. frmf_modal("SPMMO21000", "SPMMO21000", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M"); // 인체 유래물 동의서
  1946. var atadInfoNodes = this.objects["ds_hidden_geneunitlist"]; // 인체 유래물 동의서 서식 데이터
  1947. if( utlf_isNull(atadInfoNodes) || atadInfoNodes.rowcount <= 0) {
  1948. return false;
  1949. } else {
  1950. var oParam = {};
  1951. oParam.id = "TXMMO21001";
  1952. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  1953. oParam.method = "reqExeSaveGeneInsptAgree";
  1954. oParam.inds = "savedata=ds_hidden_gene_savedata";
  1955. oParam.outds = "ds_result_saveinfo=saveinfo";
  1956. oParam.async = false;
  1957. oParam.callback = "cf_TXMMO21001";
  1958. tranf_submit(oParam);
  1959. if(arErrorCode.pop("TXMMO21001") > -1) { // 인체 유래물 동의서 저장
  1960. var objDOM = rptf_createDOM(); // DOM 객체 설정
  1961. rptf_setNodeListToDOM(objDOM, "/root/hidden/geneunitlist", ds_hidden_geneunitlist); // 데이터셋 1
  1962. var objParam = new Object();
  1963. objParam.xml_data_XML1 = objDOM.documentElement.source; // 최상의노드 XML 스트링 추출
  1964. var option = "open=1;save=1;directprint=0;print=1;zoom=0;callback=cbf_rpt_onFinishPrintXML";
  1965. rptf_exeReportPreview30(["RPMMO21001"],[objParam], option);
  1966. fOcrAutoPrint(ds_result_atadconsent.getColumn(0, "prcpcd") + "▦");
  1967. if(!fSaveOCRIF(ds_result_atadconsent.getColumn(0, "ocrtag")
  1968. , ds_result_atadconsent.getColumn(0, "pid")
  1969. , ds_result_atadconsent.getColumn(0, "orddd")
  1970. , ds_result_atadconsent.getColumn(0, "cretno")
  1971. , ds_result_atadconsent.getColumn(0, "prcpgenrflag")
  1972. , ds_result_atadconsent.getColumn(0, "orddeptcd")
  1973. , ds_result_atadconsent.getColumn(0, "orddrid")
  1974. , ds_result_atadconsent.getColumn(0, "formcd")
  1975. , ds_result_atadconsent.getColumn(0, "formfromdt")
  1976. , "", "", 1) ) {
  1977. sysf_messageBox("인체 유래물 기증 동의서 IF 저장시 오류발생", "I");
  1978. }
  1979. }
  1980. }
  1981. }
  1982. // 08. T10009 처방 일반 동의서 처리
  1983. if (!utlf_isNull(ds_result_comnconsent.getColumn(0, "prcpcd")) && sCpFlag != "Y") {
  1984. ocrcalcscorcd = "";
  1985. for (var i = 0; i < ds_result_comnconsent.rowcount; i++) {
  1986. ocrcalcscorcd = ocrcalcscorcd + ds_result_comnconsent.getColumn(i, "prcpcd") + "▦";
  1987. }
  1988. fOcrAutoPrint(ocrcalcscorcd); //OCR 자동출력 ocrcalcscorcd 값은 MMO001에 global로 선언.
  1989. // 추후 SPMRF04500_OCR팝업 작업 완료후 SPMRF04500_OCRTAGvalue 관련 확인필요
  1990. var sOcrTagVal = frmf_getParameter("SPMRF04500_OCRTAGvalue");
  1991. if(!utlf_isNull(sOcrTagVal)){
  1992. sOcrTagVal = sOcrTagVal.replaceAll("▦", "|");
  1993. frmf_setParameter("SPMRF04500_OCRTAGvalue", "");
  1994. ds_result_saveflaginfo.setColumn(0, "ocrtagval", sOcrTagVal); // 동의서 출력후 다시 체크시 처방 정보에 OCR Tag번호(drprcpetc3) 설정 하기위해
  1995. }
  1996. ocrcalcscorcd = "";
  1997. }
  1998. } // End of 기타 처리 항목이 존재 하면
  1999. // 저장 3단계로 구성 - 저장 구분 정보를 재설정 한다. 2013.10.14 엄영만
  2000. ds_send_cond1.copyData(ds_result_saveflaginfo);
  2001. // DUR 점검결과 전문 - 심평원 체크(처방전간) 로직으로 인해 화면에서 다시 값을 서버로 보낸다. 2013.10.31 엄영만
  2002. ds_send_cond5.copyData(ds_result_kdurchkrslt);
  2003. } else {
  2004. prcpsaveyn = "Y";
  2005. if(sCpFlag == "Y") {
  2006. prcpsaveyn_SMMMO00110 = "Y";
  2007. if(sSaveKindFlag != 1){
  2008. SubmitTF_SMMMO00110 = true;
  2009. dsf_createDs("ds_main_invalprcplist");
  2010. ds_main_invalprcplist.copyData(ds_result_invalprcplist);
  2011. }
  2012. }
  2013. // 저장 성공시 saveflag 정보 관련 변수값 설정.
  2014. pop_MedicineConsult = ds_result_saveflaginfo.getColumn(0, "medicosultnyn"); // 복약상담의뢰 창 팝업 여부 2011.10.24 엄영만 (칠곡 약제부 이석미 요청)
  2015. pop_DrgAbleYn = ds_result_saveflaginfo.getColumn(0, "drgcheck"); // DRG적용 처방체크
  2016. pop_EnConsult = ds_result_saveflaginfo.getColumn(0, "enconsultyn"); // TPN 영양 상담 여부
  2017. if(sTuningYn == "Y") {
  2018. // 처방저장후 화면 처리 관련 노드 설정
  2019. dsf_createDs("ds_savertninfo_prcpetccnts"); // 처방 기본 설정 정보
  2020. dsf_createDs("ds_savertninfo_rsrvcvrtprcp"); // 외래 예약처방을 입원으로 전환대상
  2021. dsf_createDs("ds_savertninfo_prcplist"); // 저장후 전처방 리스트
  2022. dsf_createDs("ds_savertninfo_saveestmspclcs"); // 중증/특례 적용정보
  2023. dsf_createDs("ds_savertninfo_saveserdiagappfrm"); // 중증/특례 신청서 정보
  2024. dsf_createDs("ds_savertninfo_savelglydis"); // by sonjy 2008-07-28 희귀난치대상자 구분
  2025. dsf_createDs("ds_savertninfo_saverareobst"); // 법정전염병 처방시 첫번째 상병의 신고서만 호출 2010-01-21 pyj
  2026. dsf_createDs("ds_savertninfo_saveresindenture"); // 레진상 완전 틀니
  2027. dsf_createDs("ds_savertninfo_dschestmspclcs"); // 퇴원후 외래 중증/특례 적용정보
  2028. dsf_createDs("ds_savertninfo_dschserdiagappfrm"); // 퇴원후 외래 중증/특례 신청서 정보
  2029. dsf_createDs("ds_savertninfo_dschlglydis"); // 퇴원후 외래 by sonjy 2008-07-28 희귀난치대상자 구분
  2030. dsf_createDs("ds_savertninfo_dschrareobst"); // 퇴원후 외래 법정전염병 처방시 첫번째 상병의 신고서만 호출 2010-01-21 pyj
  2031. dsf_createDs("ds_savertninfo_dschresindenture"); // 퇴원후 외래레진상 완전 틀니
  2032. ds_savertninfo_prcpetccnts.copyData(ds_result_prcpetccnts);
  2033. ds_savertninfo_rsrvcvrtprcp.copyData(ds_result_rsrvcvrtprcp);
  2034. ds_savertninfo_prcplist.copyData(ds_result_bfprcplist);
  2035. // 산정특례정보
  2036. ds_savertninfo_saveestmspclcs.copyData(ds_result_saveestmspclcs);
  2037. ds_savertninfo_saveserdiagappfrm.copyData(ds_result_saveserdiagappfrm);
  2038. ds_savertninfo_savelglydis.copyData(ds_result_savelglydis);
  2039. ds_savertninfo_saverareobst.copyData(ds_result_saverareobst);
  2040. ds_savertninfo_saveresindenture.copyData(ds_result_saveresindenture);
  2041. // 퇴원후 외래 산정특례정보
  2042. ds_savertninfo_dschestmspclcs.copyData(ds_result_dschestmspclcs);
  2043. ds_savertninfo_dschserdiagappfrm.copyData(ds_result_dschserdiagappfrm);
  2044. ds_savertninfo_dschlglydis.copyData(ds_result_dschlglydis);
  2045. ds_savertninfo_dschrareobst.copyData(ds_result_dschrareobst);
  2046. ds_savertninfo_dschresindenture.copyData(ds_result_dschresindenture);
  2047. }
  2048. }
  2049. }
  2050. endStepDate = new Date(); // 각 업부 종료후 시간
  2051. step2Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 서버 오류 체크 소요시간
  2052. startStepDate = new Date(); // 각 업부 시작 시간
  2053. /***********************************************************************************************************
  2054. * 3. 처방 저장후 화면 처리
  2055. ***********************************************************************************************************/
  2056. fClearSaveInstance();
  2057. appf_setPatientInfoDetailByKey("prcpsaveyn", sPid+ "|" + ds_init.getColumn(0, "prcpobjsaveyn")); // 처방이 저장된것을 상단에 올려준다.
  2058. //선택진료 동의서를 출력한다.
  2059. fPrltPartSpclDrList(); // 2010.12.30 김영학 경북대 버젼 수정
  2060. //2011.01.09 외래 예약 창을 팝업 한다.
  2061. if (sSaveKindFlag == "0" && sPrcpGenrFlag == "O" && sAddPrcp != "Y" && ds_init.getColumn(0, "prcpsavebtnflag") == "2"){
  2062. frmf_setParameter("SMPMO00300_PARM1", sOrdDeptCd); //진료과코드
  2063. frmf_setParameter("SMPMO00300_PARM2", sOrdDrId); //진료의사코드
  2064. frmf_setParameter("SMPMO00300_PARM3", sPid); //환자번호
  2065. lf_prcpModal ("SMPMO00300", 0, 80);
  2066. frmf_clearParameter("SMPMO00300_PARM1");
  2067. frmf_clearParameter("SMPMO00300_PARM2");
  2068. frmf_clearParameter("SMPMO00300_PARM3");
  2069. }
  2070. if(sTuningYn == "Y") {
  2071. // 처방저장후 화면 처리 관련
  2072. if( sCpFlag == "Y" && sAddPrcp != "Y" ){ //20080910 마정민 수정. 시행부서처방은 산정특례 체크 안한다.
  2073. //JJE 조건추가 2008.09.08 인증저장인 경우, M-GPS의 적용 버튼 이벤트에서 (당일+미래처방 저장 처리가 모두 끝난 후) fGetPrcpSaveAftInfo()를 직접 호출하므로, 임시저장 때에만 여기에서 수행함.
  2074. if( sSaveKindFlag == 1 ){
  2075. fExeAfterPrcpSave(prcpsaveyn ,"Y");
  2076. }
  2077. }else{
  2078. if( sSaveKindFlag == 1 ) {
  2079. sAftDcYn = "Y"; //임시저장일 경우 산정특례 및 법정전염병 타지 않도록....by sonjy 20081123
  2080. }
  2081. fExeAfterPrcpSave(prcpsaveyn ,sAftDcYn); //청구후 d/c가 아닐 경우만 타도록 parameter 추가 . by sonjy 20081027
  2082. }
  2083. ds_main_diagcdlist.copyData(ds_result_diagcdlist); // 진단 정보 복사
  2084. } else {
  2085. // 산정특례 체크
  2086. if( sCpFlag == "Y" && sAddPrcp != "Y" ){ //20080910 마정민 수정. 시행부서처방은 산정특례 체크 안한다.
  2087. //JJE 조건추가 2008.09.08
  2088. //인증저장인 경우, M-GPS의 적용 버튼 이벤트에서 (당일+미래처방 저장 처리가 모두 끝난 후) fGetPrcpSaveAftInfo()를 직접 호출하므로, 임시저장 때에만 여기에서 수행함.
  2089. if( sSaveKindFlag == 1 ){
  2090. fGetPrcpSaveAftInfo(prcpsaveyn ,"Y");
  2091. }
  2092. }else{
  2093. if( sSaveKindFlag == 1 ) {
  2094. sAftDcYn = "Y"; //임시저장일 경우 산정특례 및 법정전염병 타지 않도록....by sonjy 20081123
  2095. }
  2096. fGetPrcpSaveAftInfo ( prcpsaveyn ,sAftDcYn); //청구후 d/c가 아닐 경우만 타도록 parameter 추가 . by sonjy 20081027
  2097. }
  2098. }
  2099. // 처방 저장후 환자 가셔야 할 곳을 출력한다. 2011. 01. 05. 김영학 외래 환자만 출력한다.
  2100. if (sSaveKindFlag == "0" && sCpFlag != "Y" && (sPrcpGenrFlag == "O" || sPrcpGenrFlag == "S")){
  2101. var returnVal = lf_getHardCDList("Y", 268, 3);
  2102. var patgolistprtyn = ds_init.getColumn(0, "patgolistprtyn");
  2103. if ((returnVal == "N" || patgolistprtyn == "Y") && ds_paminfo.getColumn(0, "ordtype") == "O" ) {
  2104. fPrltPatTogoPlceList();
  2105. }
  2106. }
  2107. if (sSaveKindFlag != 1) {
  2108. var prcpsaveyn = "N";
  2109. if ( sSaveDataFlag == "0" || sSaveDataFlag == "2" ) {
  2110. prcpsaveyn = "Y";
  2111. }
  2112. // 추후 input dataset 확인필요(일단은 가장 적합해 보이는 ds_send_cond3 으로 셋팅함)
  2113. if(sTuningYn != "Y") {
  2114. //수술중처방 마약집계호출
  2115. if ( ds_init.getColumn(0, "drugbatch") == "Y" ) {
  2116. var oParam = {};
  2117. oParam.id = "TXMMO00106";
  2118. oParam.service = "prcpmngtapp.PrcpMngt";
  2119. oParam.method = "reqExeDrugBatch";
  2120. oParam.inds = "savedrprcplist=ds_send_cond3";
  2121. oParam.async = false;
  2122. tranf_submit(oParam);
  2123. }
  2124. if ( sPrcpGenrFlag == "E" ) { //응급일 때 진료지원 예약모듈 호출
  2125. var oParam = {};
  2126. oParam.id = "TXMMO00110";
  2127. oParam.service = "prcpmngtapp.PrcpMngt";
  2128. oParam.method = "reqExeSetAutoRoomAssignIF";
  2129. oParam.inds = "savedrprcplist=ds_send_cond3";
  2130. oParam.async = false;
  2131. tranf_submit(oParam);
  2132. }
  2133. }
  2134. }
  2135. ds_main_prcplist.clearData();
  2136. lf_appendChildPrcp("ds_reset_prcplist", "ds_main_prcplist", "main");
  2137. ds_result_saveflaginfo.clearData();
  2138. ds_result_prcperrlist.clearData();
  2139. ds_result_prcplist.clearData();
  2140. ds_result_savetnmlist.clearData();
  2141. ds_result_savecncrlist.clearData();
  2142. ds_result_kdurchkrslt.clearData();
  2143. ds_result_chemoprcplist.clearData();
  2144. ds_result_geneconsent.clearData();
  2145. ds_result_saveinfo.clearData();
  2146. ds_result_atadconsent.clearData();
  2147. ds_result_comnconsent.clearData();
  2148. ds_result_invalprcplist.clearData();
  2149. ds_result_specconsent.clearData();
  2150. ds_result_diagcdlist.clearData();
  2151. ds_result_bfprcplist.clearData();
  2152. ds_result_prcpetccnts.clearData();
  2153. ds_result_rsrvcvrtprcp.clearData();
  2154. ds_result_saveestmspclcs.clearData();
  2155. ds_result_saveserdiagappfrm.clearData();
  2156. ds_result_savelglydis.clearData();
  2157. ds_result_saverareobst.clearData();
  2158. ds_result_saveresindenture.clearData();
  2159. ds_result_dschestmspclcs.clearData();
  2160. ds_result_dschserdiagappfrm.clearData();
  2161. ds_result_dschlglydis.clearData();
  2162. ds_result_dschrareobst.clearData();
  2163. ds_result_dschresindenture.clearData();
  2164. ds_send_cond1.clearData();
  2165. ds_send_cond2.clearData();
  2166. ds_send_cond3.clearData();
  2167. ds_send_cond4.clearData();
  2168. ds_send_cond5.clearData();
  2169. ds_send_cond14.clearData();
  2170. ds_send_cond15.clearData();
  2171. //추가처방화면이면
  2172. if ( sAddPrcp == "Y" ) {
  2173. // 추가처방 화면 작업 후 확인필요
  2174. fAddPrcpInitConDone( "", "", "", "", "", "Y" , "" );
  2175. }
  2176. var param;
  2177. var operation = sysf_getGlobalVariable("operation"); //수술예약정보 set
  2178. var sIoFlag = ds_paminfo.getColumn(0, "ioflag");
  2179. if ( sIoFlag == "O" || sIoFlag == "S" ) {
  2180. //ioflag▦pid▦orddd▦cretno▦instcd▦acptseqno▦orgorddd▦
  2181. //외래/입원구분▦등록번호▦진료일자▦생성번호▦기관코드▦등록일련번호▦원진료일자▦
  2182. var sAcptSeqNo = ds_paminfo.getColumn(0, "acptseqno" );
  2183. var sOrgOrdDd = ds_paminfo.getColumn(0, "orgorddd" );
  2184. param = sIoFlag + "▦" + sPid + "▦" + sOrdDd + "▦" + sCretNo + "▦" + sInstCd + "▦" + sAcptSeqNo + "▦" + sOrgOrdDd;
  2185. } else {
  2186. //ioflag▦pid▦indd▦cretno▦seqno▦instcd▦prcpdd▦
  2187. //입원/입원구분▦등록번호▦입원일자▦생성번호▦일련번호▦기관코드▦처방적용일
  2188. var sInPrcpDd = sPrcpDd;
  2189. if( sIoFlag == "D" ) { // DSC는 입원으로 처리
  2190. sIoFlag = "I";
  2191. }
  2192. //청구 후 D/C관련 추가 처리...prcpdd를 퇴원환자일 경우 퇴원일을 넘겨 준다. 그렇지 않을 경우 상단 정보 오류남. by sonjy 20081027
  2193. if( ds_paminfo.getColumn(0, "indschacptstat") == "D" && ds_paminfo.getColumn(0, "dschdd") != "99991231" && !utlf_isNull(ds_paminfo.getColumn(0, "dschdd")) ){
  2194. sInPrcpDd = ds_paminfo.getColumn(0, "dschdd");
  2195. }
  2196. param = sIoFlag + "▦" + sPid + "▦" + sOrdDd + "▦" + sCretNo + "▦" + sInstCd + "▦" + sInPrcpDd;
  2197. }
  2198. var useyn;
  2199. if ( sAddPrcp != "Y" ){//&& sPrcpChkFlag != "clickpatlist" 진료대상자리스트에서 선택되었을때는 메세지 띄우지 않는다. 20100317 LYJ
  2200. useyn = appf_initPatientInfo(param);
  2201. }
  2202. //기존의 수술예약번호가 있는 경우에는 reset처리
  2203. if( !utlf_isNull(operation) ){
  2204. sysf_setGlobalVariable("operation", operation);
  2205. }
  2206. if(useyn){
  2207. if(sTuningYn == "Y") {
  2208. fPatDiagSrch("save");
  2209. } else {
  2210. if ( sSaveDataFlag != "2" ) {
  2211. fPatDiagSrch();
  2212. }
  2213. }
  2214. if ( sCpFlag == "Y" && sSaveKindFlag != 1 ){ //JJE CP일 경우, 당일+미래처방 모두 저장 후 맨 마지막에 진료대상자를 조회한다 (2008.09.11)
  2215. return true;
  2216. }
  2217. fInitializeConDone("save");
  2218. fTempPrcp("save");
  2219. //20080818 마정민 수정: 전처방 조회 저장후 바로 가져오는 걸로 수정
  2220. //ivw_prcp3.window.javascript.fInitialize("init");
  2221. if ( sCpFlag != "Y" && div_all.Tab_prcp.tabindex != 1) {
  2222. div_all.Tab_prcp.tabindex = 1;
  2223. }else if ( div_all.Tab_prcp.tabindex != 1 ) {
  2224. div_all.Tab_prcp.tabindex = 1;
  2225. }
  2226. //20090327 마정민수정: 차상위 로직추가
  2227. if ( ds_paminfo.getColumn(0, "scndyn") == "Y" && sPrcpGenrFlag == "O" && sSaveKindFlag != 1 ) {
  2228. fScndChk();
  2229. }
  2230. fInitializeScreen();
  2231. //종속처방번호, 믹스번호, hsctlnkno 초기화
  2232. ds_init.setColumn(0, "inclprcpno", 0 );
  2233. ds_init.setColumn(0, "hsctlnkno", 0 );
  2234. ds_init.setColumn(0, "prcpmixno", 0 );
  2235. var ordPatObj = frmf_findPopup("SMMMO04100");
  2236. if(!utlf_isNull(ordPatObj)){ //두 객체값이 다른 경우 새로운 진료대상자 화면을 open함
  2237. ordPatObj.fPrcpCallPatList();
  2238. }
  2239. var ordMiniPatObj = frmf_findPopup("SPMMO04200");
  2240. if(!utlf_isNull(ordMiniPatObj)){ //두 객체값이 다른 경우 새로운 진료대상자 화면을 open함
  2241. ordMiniPatObj.fChkGetData();
  2242. }
  2243. }
  2244. //model.addlog(" SPEED CHECK END OF 화면 재조회(상단/처방/대상자)");
  2245. //model.addlog(" SPEED CHECK END OF 저장 후 처리");
  2246. //model.addlog("SPEED CHECK END OF fPrcpSave()");
  2247. // 입원 또는 응급일 경우 기록/처방 직전 인증저장이 정해진 시간(분 단위, 하드코드 401) 이내이면 인증서를 띄우지 않음. 인증저장된 시간을 저장. 20111201 knuh 최원돈
  2248. // SMMMO00100.js, MMR01300.js, MMR00100.js, SPMRF05200.js
  2249. if ((sPrcpGenrFlag == "I" || sPrcpGenrFlag == "E") && sSaveKindFlag != 1 ) {
  2250. sysf_setGlobalVariable("emrinptsavetime", utlf_getCurrentDateTime());
  2251. }
  2252. if(pop_MedicineConsult == "Y") { // 복약상담의뢰 창 팝업 여부 2011.10.24 엄영만 (칠곡 약제부 이석미 요청)
  2253. frmf_modal("SPADC62100", "SPADC62100", null, null, null, 200, 200, null, null, null, null, null, "M");
  2254. }
  2255. if(pop_EnConsult == "Y") { // TPN 영양 상담 여부 창 팝업 여부 2014.03.24 엄영만 (본원영양팀 이민지 요청), 1주 이상으로 변경 2014.10.27
  2256. if( sysf_messageBox("정맥영양(PN) 1주이상 지속 처방되어 환자 모니터링되었습니다.\n\n영양집중지원팀(NST)으로 의뢰하시겠습니까?(문의5213)","Q999") == 6 ){
  2257. dsf_createDsRow("ds_temp", [{col:"cnstinfo", type:"string", size:256, val:"0000000770"}]); // 정맥영양상담의뢰
  2258. var objArg = new Object();
  2259. objArg.arg_ds_temp = ds_temp;
  2260. frmf_modal("SPADB62300", "SPADB62300", objArg, null, 1, 0, 0, null, null, null, null, null, "M");
  2261. }
  2262. }
  2263. if (pop_DrgAbleYn == "Y") { // DRG 정보화면 팝업. 2013.06.25
  2264. if ( sysf_messageBox ( "DRG 적용 가능한 수술처방이 저장 되었습니다.\nDRG 임시대상자로 등록 하시겠습니까?","Q") == "6" ) {
  2265. frmf_setParameter("pid", sPid);
  2266. frmf_setParameter("indd", sOrdDd);
  2267. frmf_setParameter("cretno", sCretNo);
  2268. frmf_setParameter("prcpyn", "Y"); // 처방 화면에서 오픈
  2269. frmf_modal("SPPIJ03201", "SPPIJ03201", null, null, null, 200, 200, null, null, null, null, null, "M");
  2270. }
  2271. }
  2272. endStepDate = new Date(); // 각 업부 종료후 시간
  2273. step5Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 화면 저장후 처리 소요 시간
  2274. if(sPrcpFlag == "0" && sSaveKindFlag == "0" && sAddPrcp != "Y") {
  2275. // 속도체크를 위한 모니터링 로그 데이터 생성.
  2276. reqSetMonitoringLog( "PrcpSave" // type
  2277. , sSaveDataFlag // item01 : 저장 데이터 유형 0:인증저장(진단+상병), 1:인증저장(진단), 2:인증저장(처방), 4:임시저장(처방), 5:임시저장DC(처방), 6:임시저장(진단+처방), 7:임시저장(진단)
  2278. , sPrcpGenrFlag // item02 : 진료유형 (O:외래, S:건강검진, I:입원, E:응급, D:일일수술,낮병동)
  2279. , "0" // item03 : 입력구분 (코드정의서 M0034 참조) inptflag
  2280. , sPid // item04 : 등록번호
  2281. , sOrdDd // item05 : 진료(입원)일자
  2282. , sCretNo // item06 : 생성번호
  2283. , sOrdDeptCd // item07 : 진료부서
  2284. , nPrcpCnt // item08 : 처방갯수
  2285. , nDiagCnt // item09 : 진단갯수
  2286. , (step1Elapsed + step2Elapsed + step5Elapsed) // item10 : 전체소요시간
  2287. , step1Elapsed // item11 : 화면 오류체크 소요시간
  2288. , step2Elapsed // item12 : 서버 오류체크 소요시간
  2289. , step3Elapsed // item13 : 화면 오류처리 소요시간
  2290. , step4Elapsed // item14 : 서버 저장처리 소요시간
  2291. , step5Elapsed // item15 : 화면 저장후처리 소요시간
  2292. , (step2Elapsed + step5Elapsed) // item16 : 서버 저장처리 소요시간 + 화면 저장후처리 소요시간
  2293. , sTuningYn // 튜닝로직 적용여부
  2294. );
  2295. }
  2296. return true;
  2297. }
  2298. function cf_TXMMO00121(sSvcId, nErrorCode, sErrorMsg) {
  2299. arErrorCode.push(sSvcId, nErrorCode);
  2300. }
  2301. function cf_TXMMO00122(sSvcId, nErrorCode, sErrorMsg) {
  2302. arErrorCode.push(sSvcId, nErrorCode);
  2303. }
  2304. function cf_TXMMO21001(sSvcId, nErrorCode, sErrorMsg) {
  2305. arErrorCode.push(sSvcId, nErrorCode);
  2306. }
  2307. function fPrcpSave_old( prcpflag, savekindflag, saveNode, prcpchkflag ) {
  2308. //model.addlog("SPEED CHECK START OF fPrcpSave()");
  2309. //model.addlog(" SPEED CHECK START OF 처방가능체크(화면)");
  2310. //처방 시간을 계산하기 위해 변수 추가 2012.11.19 엄영만
  2311. var startStepDate = new Date(); // 각 업부 시작 시간
  2312. var endStepDate = null; // 각 업부 종료후 시간
  2313. var step1Elapsed = null; // 화면 오류 체크전 처리 소요시간
  2314. var step2Elapsed = null; // 서버 오류 체크 소요시간
  2315. var step3Elapsed = null; // 화면 서버 오류 처리 소요시간
  2316. var step4Elapsed = null; // 서버 실제 저장 소요시간
  2317. var step5Elapsed = null; // 화면 저장후 처리 소요 시간
  2318. var nPrcpCnt = 0; // 처방 갯수
  2319. var nDiagCnt = 0; // 진단 갯수
  2320. var mon = sysf_getCurrentMonitorNumber();
  2321. var xpt = this.getOwnerFrame().position.x + 200;
  2322. var ypt = this.getOwnerFrame().position.y + 100;
  2323. var curCpObj = frmf_findPopup("SPMMO00600"); //활성화된 CP Main 화면 object loading
  2324. var nodelistRecNode = "";
  2325. if(!utlf_isNull(curCpObj)) curCpObj.fClose();
  2326. if( utlf_isNull(prcpflag)) prcpflag = "0";
  2327. if( utlf_isNull(savekindflag)) savekindflag = "0";
  2328. if( utlf_isNull(saveNode)) saveNode = "ds_main_prcplist";
  2329. //20091208 HJS DUR적용여부를 임시적으로 실시간으로 가져와서 체크한다.
  2330. lf_reqHardCodeInfo(ds_hidden_durappinfo, "119");
  2331. ds_initsrch_durappyn.setColumn(0, "trgtcd", ds_hidden_durappinfo.getColumn(0, "hardcd"));
  2332. //PRN 적용여부를 실시간으로 가져와서 체크한다. 2010-01-02 by LYJ
  2333. lf_reqHardCodeInfo(ds_hidden_prnprcpyninfo, "173");
  2334. ds_save_saveflaginfo.setColumn(0, "prnprcpyninfo", ds_hidden_prnprcpyninfo.getColumn(0, "hardcd") );
  2335. //청구후 d/c처방 여부 by sonjy 20081027
  2336. var aftdcyn = "N";
  2337. //전처방 탭이 아닌 탭에 포커싱 될 때 인증저장 시 DC처방 저장되지 않음. "btn_ivbfprcp.selected &&" 조건 삭제 (JJE)
  2338. if ( ds_root.getColumn(0, "cp") != "Y" ) {
  2339. if ( ds_init.getColumn(0, "setprcpyn") == "Y" ) {
  2340. div_all.Tab_prcp.tp_bfprcp.fAppendDC();
  2341. }
  2342. } else {
  2343. if ( prtlprcpstatus_SMMMO00110 != "U" ) { //OCS활성화된 경우만 체크 && btn_ivbfprcp.selected && btn_init.visible == false && btn_reinit.visible == false //CP에서 DC+추가처방발행 안돼서 해당 조건 삭제(2010.07.06 JJE)
  2344. var dcNode = div_all.Tap_prcp.tp_bfprcp.ds_prcpsrch_prcplist.findRow("chkcol", "D"); // DC처방
  2345. if( dcNode != -1 && ds_init.getColumn(0, "setprcpyn") == "Y" ){
  2346. div_all.Tap_prcp.tp_bfprcp.fAppendDC();
  2347. }
  2348. ds_save_saveflaginfo.setColumn(0, "prtlflag", prtlFlag_SMMMO00110 ); //MMPHPTCP의 prtlflag(프로토콜구분)이 '-'이거나 '01'이면 CP (DC저장을 위함)
  2349. }
  2350. }
  2351. var savedataflag = fSaveExistCheck( savekindflag );
  2352. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag" );
  2353. if ( savedataflag == -1 ) {
  2354. if ( prcpgenrflag == "O" ) {
  2355. savedataflag = 3;
  2356. } else {
  2357. sysf_messageBox ( "저장할", "E013" );
  2358. return false;
  2359. }
  2360. } else if ( savedataflag == 5 ) {
  2361. sysf_messageBox ( "처방DC는 임시저장", "E001" );
  2362. return false;
  2363. }
  2364. // 처방 저장시 화면에서 처장 가능 한지 체크 한다.
  2365. var sIprcAddYn = ds_paminfo.getColumn(0, "iprcaddyn"); // 추가처방 발행여부(심사실 가퇴원 환자)는 처방저장 가능 체크 제외 2012.04.16
  2366. if(sIprcAddYn != "Y" && !fCheckBeforePrcpSave( prcpflag, savekindflag, saveNode, prcpchkflag )) return false;
  2367. var saveok = "N";
  2368. if ( prcpchkflag != "N" ) { // prcpchkflag가 N 이면 메시지를 안물어보고 넘어간다.
  2369. if ( prcpchkflag == "clickpatlist" ){
  2370. saveok = "Y";
  2371. } // 진료대상자리스트에서 선택되었을때는 메세지 띄우지 않는다. 20100317 LYJ
  2372. if ( prcpchkflag != "drugdc" ) prcpchkflag = "Y"; //반환요청이 아니라면 Y로 해준다.
  2373. if (ds_initsrch_prcpetccnts.getColumn(0, "admiprcpyn") == "Y" ) { //admission 처방이 없는데
  2374. if ( !utlf_isNull(ds_main_prcplist.lookup("prcpkindcd", '10', "prcpcd")) ) { //정규처방이 존재하면
  2375. if ( "7" == sysf_messageBox ( "입원당일 Admission 처방이 존재하지 않습니다. 그래도 정규처방을", "Q002" )) return false;
  2376. else saveok = "Y"; //질문을 한번만 하려고 수정
  2377. }
  2378. }
  2379. if ( saveok == "N" ) {
  2380. if ( savedataflag == 6 ) {
  2381. if( sysf_messageBox ( "", "Q002" ) == "6" ) {
  2382. saveok = "Y";
  2383. } else {
  2384. saveok = "N";
  2385. }
  2386. } else {
  2387. if( sysf_messageBox ( "", "Q002" ) == "6" ) saveok = "Y";
  2388. }
  2389. }
  2390. } else {
  2391. saveok = "Y"
  2392. }
  2393. //by sonjy 20091103 처방인증저장 시점 용량 보정여부 확인 팝업 성빈센트만...적용
  2394. //if( prcpchkflag != "N" && saveok == "Y" && prcpflag == "0" && savekindflag == "0" && model.getValue ( "/root/usge" ) == "prcp" ){
  2395. // var chngprcpvollst = model.instances(0).selectNodes( "/root/main/prcp/prcplist[tempcol22 !='' and (prcpclscd='A2' or prcpclscd='A4' or prcpclscd='A6')]" );
  2396. // if( chngprcpvollst != null && chngprcpvollst.length > 0 ) {
  2397. // fPrcpModal("SPMMO20900", 20, 50);
  2398. // if( getParameter ( "SPMMO20900_rtn1") != "Y" ) return false;
  2399. // }
  2400. //}
  2401. // 오류 체크시 체크 하도록 변경 2013.01.28 엄영만
  2402. if( saveok != "Y" ) { return false; }
  2403. if (savekindflag != 1) { // 처방 저장전 체크 해야 할 것들
  2404. if (!fPrcpSaveChkBf(prcpchkflag)) return false;
  2405. }
  2406. // 저장구분정보(saveFlagInfo)
  2407. ds_save_saveflaginfo.setColumn(0, "savedataflag", savedataflag ); // 저장자료구분 0:진단 및 처방, 1:진단, 2:처방, 4:처방임시저장, 6:진단 및 처방 임시저장, 7:진단임시저장
  2408. ds_save_saveflaginfo.setColumn(0, "saveflag", prcpgenrflag); // 저장구분 O:외래, I:입원, E:응급, S:건진
  2409. ds_save_saveflaginfo.setColumn(0, "prcpflag", prcpflag ); // 처방구분 0:의사처방, 2:간호, 3:지원부서, 5:Admission, 6:CP, 7:항암프로토콜, 8:임시처방
  2410. ds_save_saveflaginfo.setColumn(0, "inptflag", "0" ); // 입력구분 0:의사, 1:간호사(간호에서 사용), 3:지원부서
  2411. ds_save_saveflaginfo.setColumn(0, "deptcd", sysf_getUserInfo("dutplcecd")); // 부서코드
  2412. ds_save_saveflaginfo.setColumn(0, "deptnm", sysf_getUserInfo("dutplcenm")); // 부서명
  2413. ds_save_saveflaginfo.setColumn(0, "userid", sysf_getUserInfo("userid")); // 사용자ID
  2414. ds_save_saveflaginfo.setColumn(0, "usernm", sysf_getUserInfo("usernm")); // 사용자명
  2415. ds_save_saveflaginfo.setColumn(0, "prcpdd", ds_init.getColumn(0, "prcpdd"));
  2416. ds_save_saveflaginfo.setColumn(0, "divyn", prcpchkflag ); // 용량분할 할건지
  2417. ds_save_saveflaginfo.setColumn(0, "durappyn", ds_initsrch_durappyn.getColumn(0, "trgtcd" ) ); // 2010.11.24 이선경 수정 : 경북대용 DUR flag값을 던져줘야 함
  2418. ds_save_saveflaginfo.setColumn(0, "nonprgflag", fCompareNonPrgDiag());
  2419. // 현재 사용하지 않음 추후 삭제 검토 엄영만 2013.11.07
  2420. ds_save_saveflaginfo.setColumn(0, "judgtrgtchkyn", "N" ); //정밀 심사대상 약제(뇌대사개선제, 뇌혈류개선제, 뇌증상개선제) 체크 (2010.01.28 JJE)
  2421. ds_save_saveflaginfo.setColumn(0, "idementiachk", "" ); //by sonjy 20100420 / 치매약제(dementia drug) 복용 시 FF621601 검사 처방 ALERT 팝업 메시지 요청(외래, 신경과인 경우만 체크)
  2422. ds_save_saveflaginfo.setColumn(0, "idementiachkcode", "" ); //by sonjy 20100420 / 치매약제(dementia drug) 복용 시 FF621601 검사 처방 ALERT 팝업 메시지 요청(외래, 신경과인 경우만 체크)
  2423. // 현재 사용하지 않음 추후 삭제 검토 엄영만 2013.11.07
  2424. if ( savekindflag == 1 ) {
  2425. ds_save_saveflaginfo.setColumn(0, "signyn", "N" ); // 임시저장
  2426. } else {
  2427. ds_save_saveflaginfo.setColumn(0, "signyn", signyn);
  2428. }
  2429. if ( ds_root.getColumn(0, "addprcp" ) == "Y" ) {
  2430. ds_save_saveflaginfo.setColumn(0, "pseuacptflag", !utlf_isNull(this.objects["ds_formerkey"]) ? ds_formerkey.getColumn(0, "pseuacptflag") : "");
  2431. ds_save_saveflaginfo.setColumn(0, "admininfo", ds_root.getColumn(0, "admininfo"));
  2432. } else {
  2433. ds_save_saveflaginfo.setColumn(0, "pseuacptflag", "N");
  2434. ds_save_saveflaginfo.setColumn(0, "admininfo", "NNNNNNNNNNNNNNNNNNNN");
  2435. }
  2436. ds_send_cond1.copyData(ds_save_saveflaginfo);
  2437. //저장등록정보(saveRgstInfo)
  2438. ds_send_cond2.copyData(ds_paminfo);
  2439. //저장처방정보(savePrcpInfo)
  2440. // 미완성 처방 저장 시, '-' 까지 함께 저장하려 하기때문에 I 만 저장하도록 분기 (2008.10.15 JJE) (s)
  2441. if( ds_root.getColumn(0, "cp") != "Y" ){
  2442. ds_send_cond3.copyData(ds_main_prcplist);
  2443. }else{
  2444. fClearSaveInstance();
  2445. fAppendSaveNode( "ds_send_cond3", saveNode );
  2446. }
  2447. fAppendSaveNode( "ds_send_cond3", "ds_prcper_prcplist" );
  2448. fAppendSaveNode( "ds_send_cond3", "ds_prcpdc_prcplist" );
  2449. nPrcpCnt = ds_send_cond3.rowcount - 1;
  2450. //청구후 d/c처방 여부 setting by sonjy 20081027 => 청구후 d/c일 경우 산정특례 및 법정전염병등의 처방저장 후 로직을 탈필요가 없음.
  2451. var aftdclist = ds_prcpdc_prcplist.getCaseCount("tempcol21 == 'C'");
  2452. if( aftdclist.length > 0 ) sAftDcYn = "Y";
  2453. if ( prcpchkflag == "drugdc" ) { //약/주사 D/C 요청 중에 반납요청된 것은 D/C 처리한다.( 저장로직에서 사용 )
  2454. ds_send_cond14.copyData(ds_prcpdc_prcplist);
  2455. }
  2456. //setValue 후에 prcpdc 에 옮겨 놓은 prcplist를 클리어 한다.
  2457. ds_prcpdc_prcplist.clearData();
  2458. //저장진단정보(saveDiagInfo)
  2459. nDiagCnt = ds_main_diagcdlist.rowcount - 1;
  2460. ds_send_cond4.copyData(ds_main_diagcdlist);
  2461. endStepDate = new Date(); // 각 업부 종료후 시간
  2462. step1Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 화면 오류 체크전 처리 소요시간
  2463. startStepDate = new Date(); // 각 업부 시작 시간
  2464. //model.addlog(" SPEED CHECK END OF 처방가능체크(화면)");
  2465. //model.addlog(" SPEED CHECK START OF 저장 데이터 생성(오류/사유)");
  2466. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ) { //건진일 경우 외래와 동일 처리 BY SONJY 2008-09-03
  2467. dsf_setDefaultVal(ds_send_cond1, "divyn:N,pseuacptflag:N,admininfo:N,durappyn:N,nonprgflag:N");
  2468. dsf_setDefaultVal(ds_send_cond2, "orddeptnm:-,orddrnm:-");
  2469. dsf_setDefaultVal(ds_send_cond3, "prcpvol:0,prcpqty:0,prcptims:0,prcpdayno:0,prcpdelivefact:-,clinccmtcnts:-,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,anticncrdayno:0,druglnkno:0,cvrtbfprcpgenrflag:-,cvrtbforddd:00000000,cvrtbfcretno:0,drgacptflag:-");
  2470. dsf_setTypeFormat(ds_send_cond3, "prcpvol:FLOAT^prcpqty:FLOAT^prcptims:INT^prcpdayno:INT");
  2471. // 화면과 비지니스단의 columnid가 달라 확인필요
  2472. // ds_saveexecprcplist, ds_savediaglist, ds_savepamlist, ds_signprcplist, ds_signdiaglist, ds_savematrprcplist, ds_a, ds_screenResultList, ds_screenRenList
  2473. // ds_dementiainfo, ds_bfjudgeprcplist, ds_antibioreq, ds_antibioprcp, ds_kdurchkinfo, ds_kdurchklist, ds_kdurchkrslt, ds_kdurcnclyn
  2474. var oParam = {};
  2475. oParam.id = "TRMMO00103";
  2476. oParam.service = "prcpmngtapp.PrcpMngt";
  2477. oParam.method = "reqGetPrcpSaveChk";
  2478. oParam.inds = "saveFlagInfo=ds_send_cond1 saveRgstInfo=ds_send_cond2 savePrcpInfo=ds_send_cond3 saveDiagInfo=ds_send_cond4";
  2479. oParam.outds = "ds_result_prcperrlist=prcperrlist ds_result_prcplist=prcplist ds_result_savedrprcplist=savedrprcplist ds_result_saveexecprcplist=saveexecprcplist ds_result_savediaglist=savediaglist ds_result_savepamlist=savepamlist ds_result_signprcplist=signprcplist ds_result_signdiaglist=signdiaglist ds_result_savetnmlist=savetnmlist ds_result_savecncrlist=savecncrlist ds_result_duplprcplist=duplprcplist ds_result_savematrprcplist=savematrprcplist ds_result_limprcplist=limprcplist ds_result_comduplprcplist=comduplprcplist ds_result_divinfo=divinfo ds_result_a=a ds_result_patientInfoList=patientInfoList ds_result_drugInofList=drugInofList ds_result_screenResultList=screenResultList ds_result_screenRenList=screenRenList ds_result_dementiainfo=dementiainfo ds_result_bfjudgeprcplist=bfjudgeprcplist ds_result_spclhdrugprcplist=spclhdrugprcplist ds_result_checkprcpresn=checkprcpresn ds_result_antibioreq=antibioreq ds_result_antibioprcp=antibioprcp ds_result_kdurchkinfo=kdurchkinfo ds_result_kdurchklist=kdurchklist ds_result_kdurchkrslt=kdurchkrslt ds_result_kdurcnclyn=kdurcnclyn ds_result_warnprcplist=warnprcplist ds_result_drgableprcplist=drgableprcplist ds_result_chemoprcplist=chemoprcplist ds_result_geneconsentlist=geneconsentlist";
  2480. oParam.async = false;
  2481. oParam.callback = "cf_TRMMO00103";
  2482. tranf_submit(oParam);
  2483. if(arErrorCode.pop("TRMMO00103") < 0) {
  2484. if (ds_root.getColumn(0, "cp") != "Y" || savekindflag == 1 ) { //조건추가(2008.09.01 JJE)
  2485. ds_send_cond1.clearData();
  2486. ds_send_cond2.clearData();
  2487. ds_send_cond3.clearData();
  2488. ds_send_cond4.clearData();
  2489. }
  2490. fClearSaveInstance();
  2491. return false;
  2492. }
  2493. dsf_setDefaultVal(ds_result_prcplist, "prcpvol:0,prcpqty:0,prcptims:0,prcpdayno:0,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,anticncrdayno:0,druglnkno:0,drgacptflag:-");
  2494. dsf_setDefaultVal(ds_result_savedrprcplist, "hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,drgacptflag:-");
  2495. } else {
  2496. dsf_setDefaultVal(ds_send_cond1, "divyn:N,pseuacptflag:N,admininfo:N,durappyn:N,nonprgflag:N");
  2497. dsf_setDefaultVal(ds_send_cond2, "orddeptnm:-,orddrnm:-,dschprcpyn:N");
  2498. if(!utlf_isNull(ds_send_cond2.getColumnInfo("dschrgstacptchar")))
  2499. ds_send_cond2.updateColID("dschrgstacptchar", "dschrgstacptcharid");
  2500. dsf_setDefaultVal(ds_send_cond3, "prcpvol:0,prcpqty:0,prcpdelivefact:-,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,anticncrdayno:0,druglnkno:0,cvrtbfprcpgenrflag:-,cvrtbforddd:00000000,cvrtbfcretno:0,drgacptflag:-");
  2501. dsf_setTypeFormat(ds_send_cond3, "prcpvol:FLOAT^prcpqty:FLOAT^prcptims:INT^prcpdayno:INT");
  2502. var oParam = {};
  2503. oParam.id = "TRMMO00104";
  2504. oParam.service = "prcpmngtapp.PrcpMngt";
  2505. oParam.method = "reqGetPrcpSaveChk";
  2506. oParam.inds = "saveFlagInfo=ds_send_cond1 saveRgstInfo=ds_send_cond2 savePrcpInfo=ds_send_cond3 saveDiagInfo=ds_send_cond4";
  2507. oParam.outds = "ds_result_prcperrlist=prcperrlist ds_result_prcplist=prcplist ds_result_savedrprcplist=savedrprcplist ds_result_saveexecprcplist=saveexecprcplist ds_result_savediaglist=savediaglist ds_result_savepamlist=savepamlist ds_result_signprcplist=signprcplist ds_result_signdiaglist=signdiaglist ds_result_savetnmlist=savetnmlist ds_result_savecncrlist=savecncrlist ds_result_duplprcplist=duplprcplist ds_result_savematrprcplist=savematrprcplist ds_result_dschflaginfo=dschflaginfo ds_result_dschpamlist=dschpamlist ds_result_dschdrprcplist=dschdrprcplist ds_result_dschexecprcplist=dschexecprcplist ds_result_dschmatrprcplist=dschmatrprcplist ds_result_limprcplist=limprcplist ds_result_divinfo=divinfo ds_result_a=a ds_result_patientInfoList=patientInfoList ds_result_drugInofList=drugInofList ds_result_screenResultList=screenResultList ds_result_screenRenList=screenRenList ds_result_saveetcchklist=saveetcchklist ds_result_dementiainfo=dementiainfo ds_result_bfjudgeprcplist=bfjudgeprcplist ds_result_amidschprcpinfo=amidschprcpinfo ds_result_checkprcpresn=checkprcpresn ds_result_antibioreq=antibioreq ds_result_antibioprcp=antibioprcp ds_result_kdurchkinfo=kdurchkinfo ds_result_kdurchklist=kdurchklist ds_result_kdurchkrslt=kdurchkrslt ds_result_kdurcnclyn=kdurcnclyn ds_result_warnprcplist=warnprcplist ds_result_drgableprcplist=drgableprcplist ds_result_chemoprcplist=chemoprcplist ds_result_geneconsentlist=geneconsentlist";
  2508. oParam.async = false;
  2509. oParam.callback = "cf_TRMMO00104";
  2510. tranf_submit(oParam);
  2511. if(!utlf_isNull(ds_send_cond2.getColumnInfo("dschrgstacptcharid")))
  2512. ds_send_cond2.updateColID("dschrgstacptcharid", "dschrgstacptchar");
  2513. if(arErrorCode.pop("TRMMO00104") < 0) {
  2514. if (ds_root.getColumn(0, "cp") != "Y" || savekindflag == 1 ) { //조건추가(2008.09.01 JJE)
  2515. ds_send_cond1.clearData();
  2516. ds_send_cond2.clearData();
  2517. ds_send_cond3.clearData();
  2518. ds_send_cond4.clearData();
  2519. }
  2520. fClearSaveInstance();
  2521. return false;
  2522. }
  2523. dsf_setDefaultVal(ds_result_prcplist, "prcpvol:0,prcpqty:0,prcptims:0,prcpdayno:0,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,anticncrdayno:0,druglnkno:0,drgacptflag:-");
  2524. dsf_setDefaultVal(ds_result_savedrprcplist, "hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,drgacptflag:-");
  2525. dsf_setDefaultVal(ds_result_dschdrprcplist, "dschdr_hsctdelivepos:0,dschdr_hsctlnkno:0,dschdr_etcprcpflag:-,dschdr_drgacptflag:-");
  2526. }
  2527. endStepDate = new Date(); // 각 업부 종료후 시간
  2528. step2Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 서버 오류 체크 소요시간
  2529. startStepDate = new Date(); // 각 업부 시작 시간
  2530. //model.addlog(" SPEED CHECK END OF 저장 데이터 생성(오류/사유)");
  2531. //model.addlog(" SPEED CHECK START OF 저장 데이터 보정(오류/사유)");
  2532. //model.addlog(" SPEED CHECK START OF 오류/사유 처리");
  2533. //퇴원예고 되지 않은 사항에서 퇴원처방을 했을경우 퇴원예고 창을 띄움
  2534. if(ds_result_saveetcchklist.getColumn(0, "dschyn") == "Y"){
  2535. sysf_messageBox ("퇴원예고를 해야만 퇴원 및 퇴원후외래,입원전검사(전일/당일) 처방을 저장할 수 있습니다." , "E" );
  2536. preDsch();
  2537. return false;
  2538. }
  2539. //DUR-S, 2009-10-01 차현철
  2540. // 저함량 용량분할의 경우 기존 것을 사용함으로 DUR을 뒤에 수행
  2541. // 경북대용 DUR 적용시에는 저함량 용량분할 체크 후 DUR 로직체크 함
  2542. // durappyn : "A-전체 DUR", "Y-저함량제외 DUR", "나머지-DUR 사용안함" , "K:경북대용 DUR"
  2543. if (ds_initsrch_durappyn.getColumn(0, "trgtcd") != "A" ) {
  2544. if ( ds_result_divinfo.getColumn(0, "divchkflag") == "N" ) {
  2545. if ( ds_result_prcplist.rowcount > 0 ) { // 용량분할, 저함량
  2546. if ( !utlf_isNull(ds_result_prcplist.getColumn(0, "prcpcd"))){
  2547. //by sonjy 20090714 변경요청서 처리 : 저함량 용량분할창 닫기버튼 삭제처리
  2548. xpt = this.getOwnerFrame().position.x + 100;
  2549. ypt = this.getOwnerFrame().position.y + 50;
  2550. var objArg = new Object();
  2551. objArg.arg_ds_main_prcplist = ds_result_prcplist;
  2552. frmf_modal("SPADB62400", "SPADB62400", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  2553. fClearSaveInstance();
  2554. }
  2555. fPrcpSave_old( prcpflag, savekindflag, "", "N" ); // by sonjy 20100303 수정 임시처방저장시 인증저장으로 가는 오류 수정.
  2556. return false;
  2557. }
  2558. } else if (ds_result_divinfo.getColumn(0, "divchkflag") == "A") {
  2559. //20090420 마정민 수정 항암용량분할은 기존에는 서버에서 불할되어 바로 저장체크로직으로 갔지만 보험제한규정에 걸려서
  2560. //다시저장할때 분할된 내용이 화면이 표시가 되지 않아 용량분할이 되지 않음.
  2561. //항암용량분할도 화면에 표시하게 수정
  2562. ds_main_prcplist.clearData();
  2563. var srcNodeList = model.instances(0).selectNodes("/root/result/prcplist");
  2564. var destNode = model.instances(0).selectSingleNode("/root/main/prcp");
  2565. //용량분할시 서버체크로직에서 default="0" 으로 세팅하여 넘겨서 화면에 0 으로 조회되여 다시 ''로 초기화, 서버로직 수정은 추후검토, 2009-07-05. CHC
  2566. for (var i = 0; i < ds_result_prcplist.rowcount; i++) {
  2567. if(ds_result_prcplist.getColumn(i, "status") == "S") {
  2568. ds_result_prcplist.setColumn(i, "prcpvol", "");
  2569. ds_result_prcplist.setColumn(i, "prcpqty", "");
  2570. ds_result_prcplist.setColumn(i, "prcptims", "");
  2571. ds_result_prcplist.setColumn(i, "prcpdayno", "");
  2572. break;
  2573. }
  2574. }
  2575. ds_main_prcplist.appendData(ds_result_prcplist, true);
  2576. fPrcpSave_old( prcpflag, savekindflag, "", "N" ); // by sonjy 20100303 수정 임시처방저장시 인증저장으로 가는 오류 수정.
  2577. return false;
  2578. }
  2579. }
  2580. if ( ds_result_prcperrlist.rowcount > 0 ) {
  2581. if ( !utlf_isNull(ds_result_prcperrlist.getColumn(0, "prcpcd"))){
  2582. //20080928 마정민 수정 병용금기, 연령금기만 있을 경우에는 사유입력하면 처방 낼수 있도록 처리
  2583. var flag = "";
  2584. var errPrcpCd = "";
  2585. var errRowNum = "";
  2586. var errorCnt = 0;
  2587. var bfJudgErrorCnt = 0; // 사전심사 관련 내용은 따로 처리하기 위해서 로직 추가
  2588. var kdurCnt = 0;// 2010-11-29 이선경 추가 : 경북대용 DUR 최대용량, 최대기간, 최대용량 저함량 사유입력후 처방저장 가능
  2589. var kimbuCnt = 0;// 2010-11-29 이선경 추가 : 경북대용 DUR 임부금기체크 후 경고 메시지후 처방저장 가능
  2590. for ( var i = 0; i < ds_result_prcperrlist.rowcount; i++ ) {
  2591. flag = ds_result_prcperrlist.getColumn(i, "flag" );
  2592. if ( flag == "1" ) {
  2593. errorCnt++;
  2594. } else if (flag == "9") { // 사전심사에 관련한 에러내용은 따로 처리한다. 2010. 10. 08 김영학
  2595. if ( prcpgenrflag == "O" ) {
  2596. //외래 사전심사인 경우 사전심사 팝업을 띄우고
  2597. bfJudgErrorCnt++;
  2598. }else{
  2599. //입원 사전심사인 경우 바로 비급여로 변경 (2010.12.30 JJE, 경북대 이은정선생님 요청)
  2600. errPrcpCd = ds_result_prcperrlist.getColumn(i, "prcpcd" );
  2601. errRowNum = ds_result_prcperrlist.getColumn(i, "errrow" );
  2602. var ChngInsuKindList = ds_result_savedrprcplist.getCaseCount("prcpcd == '" + errPrcpCd + "'");
  2603. if( ChngInsuKindList > 0 ){
  2604. for(var bfRow = 0; bfRow < ds_result_savedrprcplist.rowcount; bfRow++ ) {
  2605. if(ds_result_savedrprcplist.getColumn(bfRow, "prcpcd") == errPrcpCd) {
  2606. var chngPayFlagCd = "";
  2607. if( errRowNum == "2" ) chngPayFlagCd = errRowNum; //일반
  2608. else chngPayFlagCd = "1"; //비급여
  2609. ds_result_savedrprcplist.setColumn(bfRow, "payflagcd", chngPayFlagCd);
  2610. }
  2611. }
  2612. }
  2613. }
  2614. } else if (flag == "4") { // 2010-11-29 이선경 추가 : 경북대용 DUR 임부금기체크 후 경고 메시지띄우는 경우
  2615. kimbuCnt++;
  2616. } else if (flag == "5") { // 2010-11-29 이선경 추가 : 경북대용 DUR 최대용량 사유입력후 처방저장 가능
  2617. kdurCnt++;
  2618. } else if (flag == "6") { // 2010-11-29 이선경 추가 : 경북대용 DUR 최대기간 사유입력후 처방저장 가능
  2619. kdurCnt++;
  2620. } else if (flag == "7") { // 2010-11-29 이선경 추가 : 경북대용 DUR 저함량 사유입력후 처방저장 가능
  2621. kdurCnt++;
  2622. }
  2623. }
  2624. xpt = this.getOwnerFrame().position.x + 180;
  2625. ypt = this.getOwnerFrame().position.y + 50;
  2626. if ( errorCnt > 0 ) {
  2627. dsf_createDs("ds_result_prcperrlist_clone");
  2628. ds_result_prcperrlist_clone.copyData(ds_result_prcperrlist);
  2629. var objArg = new Object();
  2630. objArg.arg_ds_result_prcperrlist = ds_result_prcperrlist_clone;
  2631. frmf_open("SPMMO00600", "SPMMO00600", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M"); //오류팝업
  2632. } else {
  2633. // 사전심사 요구창 팝업
  2634. if ( bfJudgErrorCnt > 0) {
  2635. frmf_clearParameter("SPMMO21500_rntValue"); //parameter 초기화(2011.01.31 JJE)
  2636. var objArg = new Object();
  2637. objArg.arg_ds_result_saveflaginfo = ds_result_saveflaginfo;
  2638. objArg.arg_ds_result_savedrprcplist = ds_result_savedrprcplist;
  2639. objArg.arg_ds_result_prcperrlist = ds_result_prcperrlist;
  2640. frmf_modal("SPMMO21500", "SPMMO21500", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M"); //오류팝업
  2641. }
  2642. }
  2643. if ( errorCnt > 0 ) {
  2644. var errrow = -1;
  2645. //dc처방 색변경을 위한 수정 시작 by 손주연 2008-06-30
  2646. var DcErrArray = new Array();
  2647. var dcprcppkspec = "";
  2648. var iDcRow = 0 ;
  2649. //dc처방 색변경을 위한 수정 종료 by 손주연 2008-06-30
  2650. for ( var i = 0; i < ds_result_prcperrlist.rowcount; i++ ) {
  2651. if (ds_result_prcperrlist.getColumn(i, "flag") == "1") {
  2652. errrow = ds_result_prcperrlist.getColumn(i, "errrow");
  2653. errrow -= 1;
  2654. //dc처방 색변경을 위한 수정 시작 by 손주연 2008-06-30
  2655. dcprcppkspec = ds_result_prcperrlist.getColumn(i, "dcprcppkspec");
  2656. //dc처방 색변경을 위한 수정 종료 by 손주연 2008-06-30
  2657. if ( !utlf_isNull(errrow) && errrow >= 0 && errrow < ds_main_prcplist.rowcount -1 ) {
  2658. ds_main_prcplist.setColumn(errrow, "tempcol9", "#ff6600");
  2659. //응급처방 할 수 없는 처방코드 수정
  2660. if(ds_main_prcplist.getColumn(errrow, "erprcpflag") == "Y"){
  2661. ds_main_prcplist.setColumn(errrow, "erprcpflag", 'N');
  2662. ds_main_prcplist.setColumn(errrow, "prcpnm", ds_main_prcplist.getColumn(errrow, "orgprcpnm"));
  2663. ds_main_prcplist.setColumn(errrow, "prcprefseq","0");
  2664. }
  2665. } else if ( !utlf_isNull(dcprcppkspec) ){ //dc처방 색변경을 위한 수정 시작 by 손주연 2008-06-30
  2666. DcErrArray[iDcRow] = dcprcppkspec ;
  2667. iDcRow ++;
  2668. }
  2669. //dc처방 색변경을 위한 수정 종료 by 손주연 2008-06-30
  2670. }
  2671. }
  2672. //dc처방 색변경을 위한 수정 시작 by 손주연 2008-06-30
  2673. if( iDcRow > 0 ){
  2674. if( div_all.Tab_prcp.tabindex == 1
  2675. && ds_root.getColumn(0, "bfinityn") == "Y" ){
  2676. div_all.Tab_prcp.tp_bfprcp.fSetErrDCRow(DcErrArray);
  2677. }
  2678. }
  2679. //dc처방 색변경을 위한 수정 종료 by 손주연 2008-06-30
  2680. fClearSaveInstance();
  2681. ds_result_prcperrlist.clearData();
  2682. return false;
  2683. }
  2684. if ( bfJudgErrorCnt > 0 ) { // 사전심사 관련 메시지 창이 떴을 경우 이벤트처리
  2685. var bfRtnValue = frmf_getParameter("SPMMO21500_rntValue");
  2686. if (bfRtnValue == "REQ") {
  2687. ds_result_prcperrlist.clearData();
  2688. var findRow = ds_main_prcplist.findRowExpr("status == 'I' || status == 'D' || status == 'U'");
  2689. if ( findRow == -1 || utlf_isNull(ds_main_prcplist.getColumn(findRow, "prcpcd"))) {
  2690. findRow = ds_main_diagcdlist.findRowExpr("status == 'I' || status == 'D' || status == 'U'");
  2691. if (findRow == -1 || utlf_isNull(ds_main_diagcdlist.getColumn(findRow, "diagcd"))) {
  2692. sysf_messageBox ( "사전심사할 처방 및 진단이 없습니다.", "E" );
  2693. fClearSaveInstance();
  2694. return false;
  2695. }
  2696. }
  2697. if ( !fPrcpSave_old("0", "1")) {
  2698. ds_prcpdc_prcplist.clearData();
  2699. }
  2700. fClearSaveInstance();
  2701. return false;
  2702. } else if (bfRtnValue == "chgPayFlag") {
  2703. ds_result_prcperrlist.clearData();
  2704. var savePrcpListLen = ds_main_prcplist.getCaseCount("status != 'S'");
  2705. var saveDiagListLen = ds_main_diagcdlist.getCaseCount("status != 'S' && status != '-'");
  2706. if ( savePrcpListLen > 0 || saveDiagListLen >0 ) {
  2707. //fPrcpSave_old( "", "", "", "N" );
  2708. fPrcpSave_old( prcpflag, savekindflag, "", "N" );
  2709. }
  2710. return false;
  2711. } else {
  2712. fClearSaveInstance();
  2713. ds_result_prcperrlist.clearData();
  2714. return false;
  2715. }
  2716. }
  2717. }
  2718. }
  2719. //kimsj 수혈동의서 메세지
  2720. if ( !utlf_isNull(this.objects["ds_hidden_ocrbldyn"]) && ds_hidden_ocrbldyn.getColumn(0, "ocrmsgyn") == "Y" ) {
  2721. var ocryndaymsg = ds_hidden_ocrbldyn.getColumn(0, "ocrynday" );
  2722. sysf_messageBox("첫 수혈이거나 마지막 수혈시행일로부터 " + ocryndaymsg + "일 이상이 경과하였으니 \n 수혈동의서를 작성해주시기 바랍니다.", "E");
  2723. ds_hidden_ocrbldyn.setColumn(0, "ocrmsgyn", "");
  2724. }
  2725. if (savekindflag != 1) { //임시저장이 아닐때
  2726. for ( var i = 0; i < ds_result_antibioreq.rowcount; i++ ) {// 제한항생제 신청정보
  2727. var sMsg = ds_result_antibioreq.getColumn(i, "msg");
  2728. if ( sMsg != "" && sysf_messageBox ( sMsg, "Q" ) != "6") {
  2729. fClearSaveInstance();
  2730. ds_result_antibioreq.clearData();
  2731. return false;
  2732. }
  2733. }
  2734. var qestflagcnt = 0;
  2735. if ( ds_result_limprcplist.rowcount > 0 ) { // 보험제한처방
  2736. for ( var i = 0; i < ds_result_limprcplist.rowcount; i++ ) {
  2737. if ( ds_result_limprcplist.getColumn(i, "qestflag") != "M" ) {
  2738. qestflagcnt++;
  2739. }
  2740. }
  2741. if ( qestflagcnt == 0 && getRegistryPrcp ( "limprcp|" + utlf_getCurrentDate()) == "Y" ) {
  2742. } else {
  2743. if ( !utlf_isNull(ds_result_limprcplist.getColumn(0, "calcscorcd"))) {
  2744. xpt = this.getOwnerFrame().position.x + 100;
  2745. ypt = this.getOwnerFrame().position.y + 50;
  2746. var rowid = 0
  2747. for ( var k = 0; k < ds_result_limprcplist.rowcount; k++ ){
  2748. rowid = eval(ds_result_limprcplist.getColumn(k, "rowid"));
  2749. var displayprcpnm = rowid + ". " + ds_result_limprcplist.getColumn(k, "calcscorcd" ) + "\n" + "[" + ds_result_limprcplist.getColumn(k, "prcpnm") + "]";
  2750. ds_result_limprcplist.setColumn(k, "displayprcpnm", displayprcpnm);
  2751. }
  2752. var objArg = new Object();
  2753. objArg.arg_ds_result_limprcplist = ds_result_limprcplist;
  2754. frmf_modal("SPMMO00900", "SPMMO00900", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  2755. ds_result_limprcplist.clearData();
  2756. if ( frmf_getParameter ( "SPMMO00900_rtnyn" ) == "Y" ) {
  2757. frmf_clearParameter ( "SPMMO00900_rtnyn" );
  2758. var savePrcpListLen = ds_main_prcplist.getCaseCount("status != 'S'");
  2759. var saveDiagListLen = ds_main_diagcdlist.getCaseCount("status != 'S' && status != '-'");
  2760. if ( savePrcpListLen > 0 || saveDiagListLen >0 ) {
  2761. //fPrcpSave_old( "", "", "", "N" );
  2762. fPrcpSave_old( prcpflag, savekindflag, "", "N" );
  2763. }
  2764. return false;
  2765. } else if ( frmf_getParameter ( "SPMMO00900_rtnyn" ) == "C" ) {
  2766. //msg만 있는 것이라면 그냥 진행함
  2767. } else {
  2768. return false;
  2769. }
  2770. }
  2771. }
  2772. } // 보험제한처방끝
  2773. if ( ds_result_duplprcplist.rowcount > 0 ) { //처방중복체크
  2774. if ( !utlf_isNull(ds_result_duplprcplist.getColumn(0, "prcpnm"))){
  2775. xpt = this.getOwnerFrame().position.x + 100;
  2776. ypt = this.getOwnerFrame().position.y + 50;
  2777. frmf_clearParameter ( "SPMMO14100_rtn1" )
  2778. var objArg = new Object();
  2779. objArg.arg_ds_result_duplprcplist = ds_result_duplprcplist;
  2780. frmf_modal("SPMMO14100", "SPMMO14100", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  2781. if ( frmf_getParameter ( "SPMMO14100_rtn1" ) != "Y" ) {
  2782. ds_result_duplprcplist.clearData();
  2783. return false;
  2784. }
  2785. }
  2786. }
  2787. if ( ds_result_warnprcplist.rowcount > 0 ) { //주의요망 처방체크
  2788. if ( !utlf_isNull(ds_result_warnprcplist.getColumn(0, "prcpnm"))){
  2789. xpt = this.getOwnerFrame().position.x + 100;
  2790. ypt = this.getOwnerFrame().position.y + 50;
  2791. frmf_clearParameter ( "SPMMO14101_rtn1" );
  2792. var objArg = new Object();
  2793. objArg.arg_ds_result_warnprcplist = ds_result_warnprcplist;
  2794. frmf_modal("SPMMO14101", "SPMMO14101", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  2795. if ( frmf_getParameter ( "SPMMO14101_rtn1" ) != "Y" ) {
  2796. ds_result_duplprcplist.clearData();
  2797. return false;
  2798. }
  2799. }
  2800. }
  2801. var pop_DrgAbleYn = "N"; // DRG적용 찹 팝업 여부
  2802. if ( ds_result_drgableprcplist.rowcount > 0 ) { //DRG적용 처방체크
  2803. if ( !utlf_isNull(ds_result_drgableprcplist.getColumn(0, "drgcheck"))) {
  2804. pop_DrgAbleYn = ds_result_drgableprcplist.getColumn(0, "drgcheck");
  2805. }
  2806. }
  2807. //DUR - E
  2808. //향정신성 의약품 30일 이상 처방일 경우 처방 사유를 입력받도록 수정
  2809. if ( ds_result_spclhdrugprcplist.rowcount > 0 ) { //처방중복체크(성분)
  2810. if ( !utlf_isNull(ds_result_spclhdrugprcplist.getColumn(0, "prcpnm"))){
  2811. xpt = this.getOwnerFrame().position.x + 100;
  2812. ypt = this.getOwnerFrame().position.y + 50;
  2813. frmf_clearParameter ( "SPMMO21800_rtn1" );
  2814. var objArg = new Object();
  2815. objArg.arg_ds_result_spclhdrugprcplist = ds_result_spclhdrugprcplist;
  2816. frmf_modal("SPMMO21800", "SPMMO21800", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  2817. if ( frmf_getParameter ( "SPMMO21800_rtn1" ) != "Y" ) {
  2818. ds_result_spclhdrugprcplist.clearData();
  2819. return false;
  2820. }
  2821. }
  2822. }
  2823. //처방 사유 입력창 팝업 여부 (2011.12.28 엄영만)
  2824. if ( ds_result_checkprcpresn.rowcount > 0 ) { // 처방사유 입력항목이 있을경우 팝업
  2825. if ( !utlf_isNull(ds_result_checkprcpresn.getColumn(0, "prcpcd"))){
  2826. xpt = this.getOwnerFrame().position.x + 100;
  2827. ypt = this.getOwnerFrame().position.y + 50;
  2828. frmf_clearParameter ( "SPMMO50100_rtn1" );
  2829. var objArg = new Object();
  2830. objArg.arg_ds_result_checkprcpresn = ds_result_checkprcpresn;
  2831. frmf_modal("SPMMO50100", "SPMMO50100", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  2832. if ( frmf_getParameter ( "SPMMO50100_rtn1" ) != "Y" ) {
  2833. ds_result_checkprcpresn.clearData();
  2834. return false;
  2835. }
  2836. }
  2837. }
  2838. //급성심근경색 퇴원약 아스피린 및 베타차단체 처방 여부 (2011.09.16 엄영만)
  2839. if ( ds_result_amidschprcpinfo.rowcount > 0 ) { //아스피린 및 베타차단체 처방 여부
  2840. //급성심근경색 퇴원약 아스피린 미처방사유
  2841. if (ds_result_amidschprcpinfo.getColumn(0, "asprinyn") == "N"){
  2842. xpt = this.getOwnerFrame().position.x + 100;
  2843. ypt = this.getOwnerFrame().position.y + 50;
  2844. frmf_clearParameter ( "SPMMO21900_rtn1" );
  2845. frmf_clearParameter ( "SPMMO21900_hardcdno" );
  2846. frmf_clearParameter ( "SPMMO21900_title" );
  2847. frmf_clearParameter ( "SPMMO21900_resncode" );
  2848. frmf_clearParameter ( "SPMMO21900_resncmt" );
  2849. frmf_setParameter("SPMMO21900_hardcdno", "311"); // 하드코드 311 급성심근경색 퇴원약 아스피린 미처방사유
  2850. frmf_setParameter("SPMMO21900_title", "급성심근경색 퇴원약 아스피린 미처방사유");
  2851. frmf_modal("SPMMO21900", "SPMMO21900", null, false, mon, xpt, ypt, null, null, null, null, null, "M");
  2852. if ( frmf_getParameter ( "SPMMO21900_rtn1" ) != "Y" ) {
  2853. ds_result_amidschprcpinfo.clearData();
  2854. return false;
  2855. }
  2856. if(utlf_isNull(this.objects["ds_result_savesujinresn"])) {
  2857. dsf_createDs("ds_result_savesujinresn");
  2858. ds_result_savesujinresn.addColumn("resn_resndd", "string");
  2859. ds_result_savesujinresn.addColumn("resn_pid", "string");
  2860. ds_result_savesujinresn.addColumn("resn_orddd", "string");
  2861. ds_result_savesujinresn.addColumn("resn_cretno", "string");
  2862. ds_result_savesujinresn.addColumn("resn_orddeptcd", "string");
  2863. ds_result_savesujinresn.addColumn("resn_ordtype", "string");
  2864. ds_result_savesujinresn.addColumn("resn_prcpdd", "string");
  2865. ds_result_savesujinresn.addColumn("resn_prcpno", "string");
  2866. ds_result_savesujinresn.addColumn("resn_prcphistno", "string");
  2867. ds_result_savesujinresn.addColumn("resn_resnflag", "string");
  2868. ds_result_savesujinresn.addColumn("resn_resncd", "string");
  2869. ds_result_savesujinresn.addColumn("resn_resncnts", "string");
  2870. }
  2871. var row = ds_result_savesujinresn.addRow();
  2872. ds_result_savesujinresn.setColumn(row, "resn_resndd" , ds_initsrchcond.getColumn(0, "prcpdd"));
  2873. ds_result_savesujinresn.setColumn(row, "resn_pid" , ds_initsrchcond.getColumn(0, "pid"));
  2874. ds_result_savesujinresn.setColumn(row, "resn_orddd" , ds_initsrchcond.getColumn(0, "orddd"));
  2875. ds_result_savesujinresn.setColumn(row, "resn_cretno" , ds_initsrchcond.getColumn(0, "cretno"));
  2876. ds_result_savesujinresn.setColumn(row, "resn_orddeptcd" , ds_initsrchcond.getColumn(0, "orddeptcd"));
  2877. ds_result_savesujinresn.setColumn(row, "resn_ordtype" , ds_initsrchcond.getColumn(0, "ioflag"));
  2878. ds_result_savesujinresn.setColumn(row, "resn_prcpdd" , ds_initsrchcond.getColumn(0, "prcpdd"));
  2879. ds_result_savesujinresn.setColumn(row, "resn_prcpno" , "0");
  2880. ds_result_savesujinresn.setColumn(row, "resn_prcphistno", "0");
  2881. ds_result_savesujinresn.setColumn(row, "resn_resnflag" , "005");
  2882. ds_result_savesujinresn.setColumn(row, "resn_resncd" , frmf_getParameter("SPMMO21900_resncode"));
  2883. ds_result_savesujinresn.setColumn(row, "resn_resncnts" , frmf_getParameter("SPMMO21900_resncmt"));
  2884. }
  2885. //급성심근경색 퇴원약 베타차단제 미처방사유
  2886. if (ds_result_amidschprcpinfo.getColumn(0, "antibetayn") == "N"){
  2887. xpt = this.getOwnerFrame().position.x + 100;
  2888. ypt = this.getOwnerFrame().position.y + 50;
  2889. frmf_clearParameter ( "SPMMO21900_rtn1" );
  2890. frmf_clearParameter ( "SPMMO21900_hardcdno" );
  2891. frmf_clearParameter ( "SPMMO21900_title" );
  2892. frmf_clearParameter ( "SPMMO21900_resncode" );
  2893. frmf_clearParameter ( "SPMMO21900_resncmt" );
  2894. frmf_setParameter("SPMMO21900_hardcdno", "312"); // 하드코드 312 급성심근경색 퇴원약 베타차단제 미처방사유
  2895. frmf_setParameter("SPMMO21900_title", "급성심근경색 퇴원약 베타차단제 미처방사유");
  2896. frmf_modal("SPMMO21900", "SPMMO21900", null, false, mon, xpt, ypt, null, null, null, null, null, "M");
  2897. if ( frmf_getParameter ( "SPMMO21900_rtn1" ) != "Y" ) {
  2898. ds_result_amidschprcpinfo.clearData();
  2899. return false;
  2900. }
  2901. if(utlf_isNull(this.objects["ds_result_savesujinresn"])) {
  2902. dsf_createDs("ds_result_savesujinresn");
  2903. ds_result_savesujinresn.addColumn("resn_resndd", "string");
  2904. ds_result_savesujinresn.addColumn("resn_pid", "string");
  2905. ds_result_savesujinresn.addColumn("resn_orddd", "string");
  2906. ds_result_savesujinresn.addColumn("resn_cretno", "string");
  2907. ds_result_savesujinresn.addColumn("resn_orddeptcd", "string");
  2908. ds_result_savesujinresn.addColumn("resn_ordtype", "string");
  2909. ds_result_savesujinresn.addColumn("resn_prcpdd", "string");
  2910. ds_result_savesujinresn.addColumn("resn_prcpno", "string");
  2911. ds_result_savesujinresn.addColumn("resn_prcphistno", "string");
  2912. ds_result_savesujinresn.addColumn("resn_resnflag", "string");
  2913. ds_result_savesujinresn.addColumn("resn_resncd", "string");
  2914. ds_result_savesujinresn.addColumn("resn_resncnts", "string");
  2915. }
  2916. var row = ds_result_savesujinresn.addRow();
  2917. ds_result_savesujinresn.setColumn(row, "resn_resndd" , ds_initsrchcond.getColumn(0, "prcpdd"));
  2918. ds_result_savesujinresn.setColumn(row, "resn_pid" , ds_initsrchcond.getColumn(0, "pid"));
  2919. ds_result_savesujinresn.setColumn(row, "resn_orddd" , ds_initsrchcond.getColumn(0, "orddd"));
  2920. ds_result_savesujinresn.setColumn(row, "resn_cretno" , ds_initsrchcond.getColumn(0, "cretno"));
  2921. ds_result_savesujinresn.setColumn(row, "resn_orddeptcd" , ds_initsrchcond.getColumn(0, "orddeptcd"));
  2922. ds_result_savesujinresn.setColumn(row, "resn_ordtype" , ds_initsrchcond.getColumn(0, "ioflag"));
  2923. ds_result_savesujinresn.setColumn(row, "resn_prcpdd" , ds_initsrchcond.getColumn(0, "prcpdd"));
  2924. ds_result_savesujinresn.setColumn(row, "resn_prcpno" , "0");
  2925. ds_result_savesujinresn.setColumn(row, "resn_prcphistno", "0");
  2926. ds_result_savesujinresn.setColumn(row, "resn_resnflag" , "006");
  2927. ds_result_savesujinresn.setColumn(row, "resn_resncd" , frmf_getParameter("SPMMO21900_resncode"));
  2928. ds_result_savesujinresn.setColumn(row, "resn_resncnts" , frmf_getParameter("SPMMO21900_resncmt"));
  2929. }
  2930. }
  2931. //병기분류
  2932. if ( !utlf_isNull(ds_result_savetnmlist.getColumn(0, "pid" )) || !utlf_isNull(ds_result_savecncrlist.getColumn(0, "pid"))) {
  2933. xpt = this.getOwnerFrame().position.x + 300;
  2934. ypt = this.getOwnerFrame().position.y;
  2935. frmf_clearParameter ( "SPMMO08400_rtn1" );
  2936. var objArg = new Object();
  2937. objArg.arg_ds_result_savetnmlist = ds_result_savetnmlist;
  2938. objArg.arg_ds_result_savecncrlist = ds_result_savecncrlist;
  2939. frmf_modal("SPMMO08400", "SPMMO08400", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  2940. if ( frmf_getParameter ( "SPMMO08400_rtn1" ) != "Y" ){
  2941. return false;
  2942. }
  2943. }
  2944. // 항암제 상세정보 입력 2013.08.13 엄영만
  2945. if ( ds_result_chemoprcplist.rowcount > 0 ) { //항암제 상세정보 입력
  2946. xpt = this.getOwnerFrame().position.x + 100;
  2947. ypt = this.getOwnerFrame().position.y + 50;
  2948. for ( var i = 0; i < ds_result_chemoprcplist.rowcount; i++ ) {
  2949. frmf_clearParameter ( "SPMMO23000_rtn1" );
  2950. dsf_createDs("ds_result_chemoprcplist_clone");
  2951. dsf_copyColInfo(ds_result_chemoprcplist_clone, ds_result_chemoprcplist);
  2952. ds_result_chemoprcplist_clone.copyRow(0, ds_result_chemoprcplist, i);
  2953. var objArg = new Object();
  2954. objArg.arg_ds_main_chemoinfo = ds_result_chemoprcplist_clone;
  2955. frmf_modal("SPMMO23000", "SPMMO23000", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  2956. dsf_deleteDs("ds_result_chemoprcplist_clone");
  2957. if ( frmf_getParameter ( "SPMMO23000_rtn1" ) != "Y" ){
  2958. return false;
  2959. }
  2960. }
  2961. }
  2962. /*
  2963. // 20100108 한재상 - 유전자검사 동의서 출력방식 변경 (OCR -> REX)
  2964. var atadPrcpNodes = instance1.selectNodes("/root/result/savedrprcplist[tempcol13='A' and status='I']");
  2965. model.removeNodeSet("/root/hidden/atadinfo");
  2966. model.removeNodeSet("/root/hidden/geneunitlist");
  2967. if( atadPrcpNodes.length > 0 ) {
  2968. model.makeValue("/root/hidden/atadinfo", "");
  2969. for(var m=0; m < atadPrcpNodes.length; m++ ){
  2970. var node = atadPrcpNodes.item(m);
  2971. var atadNode = node.selectSingleNode("tempcol14");
  2972. var atadNodeArray = atadNode.text.split("▦");
  2973. model.makeValue("/root/init/atadinfo/row/instcd", atadNodeArray[0]);
  2974. model.makeValue("/root/init/atadinfo/row/prcpdd", atadNodeArray[1]);
  2975. model.makeValue("/root/init/atadinfo/row/prcpno", atadNodeArray[2]);
  2976. model.makeValue("/root/init/atadinfo/row/pid", atadNodeArray[3]);
  2977. model.makeValue("/root/init/atadinfo/row/orddd", atadNodeArray[4]);
  2978. model.makeValue("/root/init/atadinfo/row/cretno", atadNodeArray[5]);
  2979. model.makeValue("/root/init/atadinfo/row/patnm", getPatientInfoDetail("hngnm") );
  2980. //alert(atadNode+" ## "+atadNodeArray[7]);
  2981. var gender = atadNodeArray[7].substr(6, 1);
  2982. var regYY = parseInt(atadNodeArray[7].substr(0, 2));
  2983. if(gender == '3' || gender == '4' || gender == '7' || gender == '8') {
  2984. regYY += 2000;
  2985. } else if(gender == '0' || gender == '9') {
  2986. regYY += 1800;
  2987. } else {
  2988. regYY += 1900;
  2989. }
  2990. model.makeValue("/root/init/atadinfo/row/rrgstno", regYY + atadNodeArray[7].substr(2, 5));
  2991. model.makeValue("/root/init/atadinfo/row/drnm", getUserInfo("usernm") );
  2992. gender = atadNodeArray[9].substr(6, 1);
  2993. regYY = parseInt(atadNodeArray[9].substr(0, 2));
  2994. if(gender == '3' || gender == '4' || gender == '7' || gender == '8') {
  2995. regYY += 2000;
  2996. } else if(gender == '0' || gender == '9') {
  2997. regYY += 1800;
  2998. } else {
  2999. regYY += 1900;
  3000. }
  3001. model.makeValue("/root/init/atadinfo/row/drbrthdd", regYY + atadNodeArray[9].substr(2, 4));
  3002. model.makeValue("/root/init/atadinfo/row/prcpcd", atadNodeArray[10]);
  3003. model.makeValue("/root/init/atadinfo/row/prcpnm", atadNodeArray[11]);
  3004. model.makeValue("/root/init/atadinfo/row/deptengabbr", atadNodeArray[12]);
  3005. model.makeValue("/root/init/atadinfo/row/roomcd", atadNodeArray[13]);
  3006. model.makeValue("/root/init/atadinfo/row/prcpgenrflag", atadNodeArray[14]);
  3007. model.makeValue("/root/init/atadinfo/row/centcd", model.getValue("/root/paminfo/list/centnm") );
  3008. model.makeValue("/root/init/atadinfo/row/ocrtag", atadNodeArray[16]);
  3009. model.makeValue("/root/init/atadinfo/row/formcd", atadNodeArray[17]);
  3010. model.makeValue("/root/init/atadinfo/row/formfromdt", atadNodeArray[18]);
  3011. model.makeValue("/root/init/atadinfo/row/pagenum", atadNodeArray[19]);
  3012. //model.makeValue("/root/init/atadinfo/row/pagenum", "3");
  3013. model.makeValue("/root/init/atadinfo/row/execprcpuniqno", atadNodeArray[20]);
  3014. model.makeValue("/root/init/atadinfo/row/pattelno", atadNodeArray[21]);
  3015. model.makeValue("/root/init/atadinfo/row/pataddr", atadNodeArray[22]);
  3016. model.makeValue("/root/init/atadinfo/row/patsex", atadNodeArray[23]);
  3017. model.makeValue("/root/init/atadinfo/row/instnm", atadNodeArray[24]);
  3018. model.makeValue("/root/init/atadinfo/row/insttelno", atadNodeArray[25]);
  3019. copyNodeType("/root/hidden/atadinfo", "/root/init/atadinfo", "after");
  3020. }
  3021. modal("SPMMO21000", "", "", "", "", "/root/hidden/atadinfo", "/root/main/prcplist");
  3022. var atadInfoNodes = instance1.selectNodes("/root/hidden/geneunitlist");
  3023. if( atadInfoNodes.length > 0 ) { }
  3024. else return false;
  3025. }
  3026. */
  3027. // 20130911 김영기 - 유전자검사 동의서 및 인체 유래물 동의서 수정 (둘중 하나를 선택을 위한)
  3028. var atadPrcpNodes = ds_result_savedrprcplist.getCaseCount("tempcol13 == 'A' && status == 'I')");
  3029. var sCopyAtadNode = "ds_hidden_atadinfo";
  3030. var sCopyGeneNode = "ds_hidden_geneinfo";
  3031. var sFormcd = "";
  3032. dsf_deleteDs(sCopyAtadNode);
  3033. dsf_deleteDs(sCopyGeneNode);
  3034. dsf_deleteDs("ds_hidden_geneunitlist"); // 인체유래물 동의서 출력물 노드 초기화
  3035. dsf_deleteDs("ds_hidden_geneunitlist2"); // 유전자 검사 동의서 출력물 노드 초기화
  3036. if( atadPrcpNodes > 0 ) {
  3037. dsf_createDs(sCopyAtadNode);
  3038. dsf_createDs(sCopyGeneNode);
  3039. var nGeneConsentCount = ds_result_geneconsentlist.rowcount;
  3040. for(var m = 0; m < nGeneConsentCount; m++ ){
  3041. sFormcd = ds_result_geneconsentlist.getColumn(m, "formcd");
  3042. // 유전자 동의서 : 1300014609 , 인체유래물 동의서 : 1000007185
  3043. var oDsSet;
  3044. if(sFormcd == "1300014609"){
  3045. oDsSet = this.objects[sCopyGeneNode];
  3046. }else{
  3047. oDsSet = this.objects[sCopyAtadNode];
  3048. }
  3049. oDsSet.addColumn("instcd", "string");
  3050. oDsSet.addColumn("prcpdd", "string");
  3051. oDsSet.addColumn("prcpno", "string");
  3052. oDsSet.addColumn("pid", "string");
  3053. oDsSet.addColumn("orddd", "string");
  3054. oDsSet.addColumn("cretno", "string");
  3055. oDsSet.addColumn("patnm", "string");
  3056. oDsSet.addColumn("rrgstno", "string");
  3057. oDsSet.addColumn("drnm", "string");
  3058. oDsSet.addColumn("prcpcd", "string");
  3059. oDsSet.addColumn("prcpnm", "string");
  3060. oDsSet.addColumn("deptengabbr", "string");
  3061. oDsSet.addColumn("roomcd", "string");
  3062. oDsSet.addColumn("prcpgenrflag", "string");
  3063. oDsSet.addColumn("centcd", "string");
  3064. oDsSet.addColumn("ocrtag", "string");
  3065. oDsSet.addColumn("formcd", "string");
  3066. oDsSet.addColumn("formfromdt", "string");
  3067. oDsSet.addColumn("pagenum", "string");
  3068. oDsSet.addColumn("execprcpuniqno", "string");
  3069. oDsSet.addColumn("pattelno", "string");
  3070. oDsSet.addColumn("pataddr", "string");
  3071. oDsSet.addColumn("patsex", "string");
  3072. oDsSet.addColumn("instnm", "string");
  3073. oDsSet.addColumn("insttelno", "string");
  3074. var row = oDsSet.addRow();
  3075. oDsSet.setColumn(row, "instcd", ds_result_geneconsentlist.getColumn(m, "instcd"));
  3076. oDsSet.setColumn(row, "prcpdd", ds_result_geneconsentlist.getColumn(m, "prcpdd"));
  3077. oDsSet.setColumn(row, "prcpno", ds_result_geneconsentlist.getColumn(m, "prcpno"));
  3078. oDsSet.setColumn(row, "pid", ds_result_geneconsentlist.getColumn(m, "pid"));
  3079. oDsSet.setColumn(row, "orddd", ds_result_geneconsentlist.getColumn(m, "orddd"));
  3080. oDsSet.setColumn(row, "cretno", ds_result_geneconsentlist.getColumn(m, "cretno"));
  3081. oDsSet.setColumn(row, "patnm", getPatientInfoDetail("hngnm") );
  3082. //alert(atadNode+" ## "+atadNodeArray[7]);
  3083. var rrgstno = ds_result_geneconsentlist.getColumn(m, "rrgstno");
  3084. var gender = rrgstno.substr(6, 1);
  3085. var regYY = parseInt(rrgstno.substr(0, 2));
  3086. if(gender == '3' || gender == '4' || gender == '7' || gender == '8') {
  3087. regYY += 2000;
  3088. } else if(gender == '0' || gender == '9') {
  3089. regYY += 1800;
  3090. } else {
  3091. regYY += 1900;
  3092. }
  3093. oDsSet.setColumn(row, "rrgstno", regYY + rrgstno.substr(2, 5));
  3094. oDsSet.setColumn(row, "drnm", sysf_getUserInfo("usernm") );
  3095. oDsSet.setColumn(row, "prcpcd", ds_result_geneconsentlist.getColumn(m, "prcpcd"));
  3096. oDsSet.setColumn(row, "prcpnm", ds_result_geneconsentlist.getColumn(m, "prcpnm"));
  3097. oDsSet.setColumn(row, "deptengabbr", ds_result_geneconsentlist.getColumn(m, "deptengabbr"));
  3098. oDsSet.setColumn(row, "roomcd", ds_result_geneconsentlist.getColumn(m, "roomcd"));
  3099. oDsSet.setColumn(row, "prcpgenrflag", ds_result_geneconsentlist.getColumn(m, "saveflag"));
  3100. oDsSet.setColumn(row, "centcd", ds_paminfo.getColumn(0, "centnm"));
  3101. oDsSet.setColumn(row, "ocrtag", ds_result_geneconsentlist.getColumn(m, "seq"));
  3102. oDsSet.setColumn(row, "formcd", ds_result_geneconsentlist.getColumn(m, "formcd"));
  3103. oDsSet.setColumn(row, "formfromdt", ds_result_geneconsentlist.getColumn(m, "formfromdt"));
  3104. oDsSet.setColumn(row, "pagenum", ds_result_geneconsentlist.getColumn(m, "pagenum"));
  3105. //model.makeValue("/root/init/atadinfo/row/pagenum", "3");
  3106. oDsSet.setColumn(row, "execprcpuniqno", ds_result_geneconsentlist.getColumn(m, "execprcpuniqno"));
  3107. oDsSet.setColumn(row, "pattelno", ds_result_geneconsentlist.getColumn(m, "pattelno"));
  3108. oDsSet.setColumn(row, "pataddr", ds_result_geneconsentlist.getColumn(m, "pataddr"));
  3109. oDsSet.setColumn(row, "patsex", ds_result_geneconsentlist.getColumn(m, "patsex"));
  3110. oDsSet.setColumn(row, "instnm", ds_result_geneconsentlist.getColumn(m, "instnm"));
  3111. oDsSet.setColumn(row, "insttelno", ds_result_geneconsentlist.getColumn(m, "insttelno"));
  3112. //copyNodeType("/root/hidden/atadinfo", "/root/init/atadinfo", "after");
  3113. }
  3114. //modal("SPMMO21000", "", "", "", "", "/root/hidden/atadinfo", "/root/main/prcplist");
  3115. var objArg = new Object();
  3116. objArg.arg_ds_main_prcplist = oDsSet;
  3117. if(this.objects[sCopyGeneNode].rowcount > 0){
  3118. frmf_modal("SPMMO21001", "SPMMO21001", objArg, null, null, null, null, null, null, null, null, null, "M"); // 유전자 동의서
  3119. }
  3120. if(this.objects[sCopyAtadNode].rowcount > 0){
  3121. frmf_modal("SPMMO21000", "SPMMO21000", objArg, null, null, null, null, null, null, null, null, null, "M"); // 인체 유래물 동의서
  3122. }
  3123. var atadInfoNodes = this.objects["ds_hidden_geneunitlist"]; // 인체 유래물 동의서 서식 데이터
  3124. var geneInfoNodes = this.objects["ds_hidden_geneunitlist2"]; // 유전자 동의서 서식 데이터
  3125. if( (utlf_isNull(atadInfoNodes) || atadInfoNodes.rowcount <= 0) && (utlf_isNull(geneInfoNodes) || geneInfoNodes.rowcount <= 0)) { return false; }
  3126. //else return false;
  3127. }
  3128. }
  3129. //20080620 마정민 수정 마감후 반환 체크 및 사유 입력
  3130. fEndAftDC();
  3131. fClearSaveInstance();
  3132. //model.addlog(" SPEED CHECK END OF 오류/사유 처리");
  3133. //model.addlog(" SPEED CHECK START OF DUR처리(처방전내)");
  3134. //2011-12-19 mjm 경북대 새로운 DUR 적용
  3135. if( ds_initsrch_durappyn.getColumn(0, "trgtcd") == "K" && lf_getHardCDList("Y", 404, 3) == "Y" ) { //20111219 구DUR 적용 ( HARDCDNO => 404 )
  3136. //2010-11-29 이선경 추가 : 경북대용 DUR 최대용량, 최대기간, 최대용량 저함량 사유입력후 처방저장 가능
  3137. if( kdurCnt > 0 ) {
  3138. frmf_clearParameter ( "SPMMO16101_rtn1" );
  3139. frmf_clearParameter ( "SPMMO16101_rtn2" );
  3140. var objArg = new Object();
  3141. objArg.arg_ds_result_prcperrlist = ds_result_prcperrlist;
  3142. frmf_modal("SPMMO16101", "SPMMO16101", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  3143. if ( frmf_getParameter ( "SPMMO16101_rtn1" ) != "Y" ) {
  3144. for (var i = 0; i < ds_main_prcplist.rowcount; i++) {
  3145. ds_main_prcplist.setColumn(i, "tempcol19", "");
  3146. }
  3147. return false;
  3148. } else {
  3149. if ( frmf_getParameter ( "SPMMO16101_rtn2" ) == "D" ){
  3150. fPrcpSave_old( prcpflag, savekindflag, "", "N" );
  3151. return false;
  3152. }
  3153. }
  3154. }
  3155. //2010-11-29 이선경 추가 : 경북대용 DUR 임부금기 체크중 falg값이 4인 경우 경고메시지 띄우고 처방저장 가능
  3156. if( kimbuCnt > 0 ) {
  3157. var flag = "";
  3158. var prcpcd = "";
  3159. var prcpnm = "";
  3160. var prcperr = "";
  3161. var sAlertMsg = "";
  3162. for(var j = 0; j < ds_result_prcperrlist.rowcount; j++) {
  3163. flag = ds_result_prcperrlist.getColumn(j, "flag");
  3164. if(flag == "4") {
  3165. prcpcd = ds_result_prcperrlist.getColumn(j, "prcpcd");
  3166. prcpnm = ds_result_prcperrlist.getColumn(j, "prcpnm");
  3167. prcperr = ds_result_prcperrlist.getColumn(j, "prcperr");
  3168. if(utlf_isNull(sAlertMsg)) {
  3169. sAlertMsg = "[의약품 처방지원 서비스(DUR) 정보]\n 아래의 처방은 한번 더 확인 하시기 바랍니다.!";
  3170. }
  3171. sAlertMsg = sAlertMsg + "\n\n" + prcpnm + "[" + prcpcd + "]" + "은(는) " + prcperr;
  3172. var srcNodeList = ds_main_prcplist;
  3173. for (var i = 0; i < ds_main_prcplist.rowcount; i++) {
  3174. ds_main_prcplist.setColumn(i, "tempcol19", "");
  3175. }
  3176. }
  3177. }
  3178. if (!utlf_isNull(sAlertMsg)) {
  3179. sysf_messageBox(sAlertMsg, "I999");
  3180. }
  3181. }
  3182. }
  3183. //model.addlog(" SPEED CHECK END OF DUR처리(처방전내)");
  3184. //model.addlog(" SPEED CHECK START OF 동의서출력");
  3185. if ( savekindflag != 1 && signyn == "Y" ) {
  3186. var signbfcnts = ds_result_signprcplist.getColumn(0, "signbfcnts");
  3187. var setnode = "ds_result_signprcplist";
  3188. var signid = sysf_getUserInfo ("userid");
  3189. var signopt = false;
  3190. // 응급실환자중 하드코드에 등록되어 있는 과 의사가 로그인 후 처방을 낼 경우에는 인증저장을 한번만 하게 함.(외래와 동일하게 처리)
  3191. var sPD = ds_securelimitdeptlist.lookup("hardcd", sysf_getUserInfo("dutplcecd"), "hardcd");
  3192. if ( prcpgenrflag != "O" && !(prcpgenrflag == "E" && !utlf_isNull(sPD)) ) {
  3193. signopt = true;
  3194. }
  3195. // 입원 또는 응급일 경우 // 20111201 knuh 최원돈
  3196. // 기록/처방 직전 인증저장이 정해진 시간(분 단위, 하드코드 401) 이내이면 인증서를 띄우지 않음(1/2)
  3197. // SMMMO00100.js, MMR01300.js, MMR00100.js, SPMRF05200.js
  3198. // 띄우지 않는 로직
  3199. var ls_emrinptsavetime = lf_getHardCDList("Y", 401, 3);
  3200. var ll_emrinptsavetime = ls_emrinptsavetime == "" ? 0 : parseInt(ls_emrinptsavetime) * -1;
  3201. if ( ( prcpgenrflag == "I"
  3202. || prcpgenrflag == "E")
  3203. && ll_emrinptsavetime < 0
  3204. && sysf_getGlobalVariable("emrinptsavetime") >= utlf_getCurrentDateTime().toDate("YYYYMMDD hhmmss").getAddDate(ll_emrinptsavetime, "m").getDateFormat("YYYYMMDD hhmmss"))
  3205. {
  3206. signopt = false;
  3207. }
  3208. // setnode 정리 해야 함
  3209. //처방인증
  3210. var v_stext = lf_saveSign ( signbfcnts, signid, signopt, setnode );
  3211. if ( v_stext != "N" ) {
  3212. if (utlf_isNull( v_stext )) {
  3213. return false;
  3214. }
  3215. fAppendSaveNode( "ds_send_cond2", "ds_result_signprcplist" ); //의사처방데이터
  3216. signopt = false; //진단에서 또 안띄우기 위해서 false로 수정
  3217. }
  3218. signbfcnts = ds_result_signdiaglist.getColumn(0, "signbfcnts");
  3219. setnode = "ds_result_signdiaglist";
  3220. //진단인증
  3221. v_stext = lf_saveSign ( signbfcnts, signid, signopt, setnode );
  3222. if ( v_stext != "N") {
  3223. if (utlf_isNull(v_stext)) {
  3224. return false;
  3225. }
  3226. fAppendSaveNode( "ds_send_cond2", "ds_result_signdiaglist" ); //의사진단명데이터
  3227. }
  3228. }
  3229. if (savekindflag != 1) {
  3230. //JJE (CP는 당일+미래 모든처방 저장 종료 후 한꺼번에 출력) //CP 임시처방 저장시 수행하도록 수정(2008.10.20 JJE)
  3231. if ( ds_root.getColumn(0, "cp") != "Y" ) {
  3232. if (!utlf_isNull(ocrcalcscorcd)){ //OCR 자동출력 ocrcalcscorcd 값은 MMO001에 global로 선언. 값은 fPrcpSaveChkaft에서 체크한다.
  3233. fOcrAutoPrint(ocrcalcscorcd);
  3234. fSetOcrTagNum(); // 영상학과에서 OCR 확인을 위해 코드별 테그 셋팅 - 20081029 by MoonSH
  3235. ocrcalcscorcd = "";
  3236. }
  3237. }
  3238. /*
  3239. // 20100108 한재상 - 유전자검사 동의서 출력방식 변경 (OCR -> REX)
  3240. var atadInfoNodes = instance1.selectNodes("/root/hidden/geneunitlist");
  3241. if( atadPrcpNodes.length > 0 ) {
  3242. if(submit("TXMMO21001")){
  3243. exeReportPreview("RPMMO21001", "XMLSTR" , "/root/hidden/geneunitlist" , "" , "true" , "", "", "", "", "", "", "grp_report");
  3244. fOcrAutoPrint(model.getValue("/root/init/atadinfo/row/prcpcd")+ "▦");
  3245. var orddrid = ""
  3246. if (model.getValue("/root/hidden/atadinfo/row[1]/prcpgenrflag") == "O" || model.getValue("/root/hidden/atadinfo/row[1]/prcpgenrflag") == "S" ) {
  3247. orddrid = model.getValue("/root/paminfo/list/orddrid")
  3248. } else {
  3249. orddrid = model.getValue("/root/paminfo/list/medispclid");
  3250. }
  3251. if( ! fSaveOCRIF(model.getValue("/root/hidden/atadinfo/row[1]/ocrtag")
  3252. , model.getValue("/root/hidden/atadinfo/row[1]/pid")
  3253. , model.getValue("/root/hidden/atadinfo/row[1]/orddd")
  3254. , model.getValue("/root/hidden/atadinfo/row[1]/cretno")
  3255. , model.getValue("/root/hidden/atadinfo/row[1]/prcpgenrflag")
  3256. , model.getValue("/root/paminfo/list/orddeptcd")
  3257. , orddrid
  3258. , model.getValue("/root/hidden/atadinfo/row[1]/formcd")
  3259. , model.getValue("/root/hidden/atadinfo/row[1]/formfromdt")
  3260. , "", "", 1) ) {
  3261. messageBox("유전자검사동의서 IF 저장시 오류발생", "I");
  3262. }
  3263. }
  3264. }
  3265. */
  3266. // 20130917 김영기 유전자 및 인체 유래물 동의서 출력을 위해 로직 수정
  3267. var atadInfoNodes = this.objects["ds_hidden_geneunitlist"]; // 인체 유래물 동의서
  3268. var geneInfoNodes = this.objects["ds_hidden_geneunitlist2"]; // 유전자 동의서
  3269. if( atadPrcpNodes > 0 ) {
  3270. if(ds_hidden_gene2_savedata.rowcount > 0){ // 유전자 동의서 저장 데이터 노드 주소
  3271. var ds_hidden_gene = this.objects["ds_hidden_gene_savedata"];
  3272. if(utlf_isNull(ds_hidden_gene) || ds_hidden_gene.rowcount <= 0){ // TXMMO21001 input 노드 주소
  3273. dsf_createDs("ds_hidden_gene_savedata");
  3274. dsf_copyColInfo(ds_hidden_gene_savedata, ds_hidden_gene2_savedata);
  3275. }
  3276. ds_hidden_gene_savedata.appendData(ds_hidden_gene2_savedata, true);
  3277. }
  3278. var oParam = {};
  3279. oParam.id = "TXMMO21001";
  3280. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  3281. oParam.method = "reqExeSaveGeneInsptAgree";
  3282. oParam.inds = "savedata=ds_hidden_gene_savedata";
  3283. oParam.outds = "ds_result_saveinfo=saveinfo";
  3284. oParam.async = false;
  3285. oParam.callback = "cf_TXMMO21001";
  3286. tranf_submit(oParam);
  3287. if(arErrorCode.pop("TXMMO21001") > -1) { // 유전자 동의서 저장
  3288. if(atadInfoNodes > 0){
  3289. var objDOM = rptf_createDOM(); // DOM 객체 설정
  3290. rptf_setNodeListToDOM(objDOM, "/root/hidden/geneunitlist", ds_hidden_geneunitlist); // 데이터셋 1
  3291. var objParam = new Object();
  3292. objParam.xml_data_XML1 = objDOM.documentElement.source; // 최상의노드 XML 스트링 추출
  3293. var option = "open=1;save=1;directprint=0;print=1;zoom=0;callback=cbf_rpt_onFinishPrintXML";
  3294. rptf_exeReportPreview30(["RPMMO21001"],[objParam], option);
  3295. fOcrAutoPrint(ds_init_atadinfo.getColumn(0, "prcpcd")+ "▦");
  3296. var orddrid = ""
  3297. if (ds_hidden_atadinfo.getColumn(0, "prcpgenrflag") == "O" || ds_hidden_atadinfo.getColumn(0, "/prcpgenrflag") == "S" ) {
  3298. orddrid = ds_paminfo.getColumn(0, "orddrid")
  3299. } else {
  3300. orddrid = ds_paminfo.getColumn(0, "medispclid");
  3301. }
  3302. if( ! fSaveOCRIF(ds_hidden_atadinfo.getColumn(0, "ocrtag")
  3303. , ds_hidden_atadinfo.getColumn(0, "pid")
  3304. , ds_hidden_atadinfo.getColumn(0, "orddd")
  3305. , ds_hidden_atadinfo.getColumn(0, "cretno")
  3306. , ds_hidden_atadinfo.getColumn(0, "prcpgenrflag")
  3307. , ds_paminfo.getColumn(0, "orddeptcd")
  3308. , orddrid
  3309. , ds_hidden_atadinfo.getColumn(0, "formcd")
  3310. , ds_hidden_atadinfo.getColumn(0, "formfromdt")
  3311. , "", "", 1) ) {
  3312. sysf_messageBox("인체 유래물 기증 동의서 IF 저장시 오류발생", "I");
  3313. }
  3314. }
  3315. if(geneInfoNodes > 0){
  3316. var objDOM = rptf_createDOM(); // DOM 객체 설정
  3317. rptf_setNodeListToDOM(objDOM, "/root/hidden/geneunitlist2", ds_hidden_geneunitlist2); // 데이터셋 1
  3318. var objParam = new Object();
  3319. objParam.xml_data_XML1 = objDOM.documentElement.source; // 최상의노드 XML 스트링 추출
  3320. var option = "open=1;save=1;directprint=0;print=1;zoom=0;callback=cbf_rpt_onFinishPrintXML";
  3321. rptf_exeReportPreview30(["RPMMO21002"],[objParam], option);
  3322. fOcrAutoPrint(ds_init_geneinfo.getColumn(0, "prcpcd")+ "▦");
  3323. var orddrid = ""
  3324. if (ds_hidden_geneinfo.getColumn(0, "prcpgenrflag") == "O" || ds_hidden_geneinfo.getColumn(0, "prcpgenrflag") == "S" ) {
  3325. orddrid = ds_paminfo.getColumn(0, "orddrid")
  3326. } else {
  3327. orddrid = ds_paminfo.getColumn(0, "medispclid");
  3328. }
  3329. if( ! fSaveOCRIF(ds_hidden_geneinfo.getColumn(0, "ocrtag")
  3330. , ds_hidden_geneinfo.getColumn(0, "pid")
  3331. , ds_hidden_geneinfo.getColumn(0, "orddd")
  3332. , ds_hidden_geneinfo.getColumn(0, "cretno")
  3333. , ds_hidden_geneinfo.getColumn(0, "prcpgenrflag")
  3334. , ds_paminfo.getColumn(0, "orddeptcd")
  3335. , orddrid
  3336. , ds_hidden_geneinfo.getColumn(0, "formcd")
  3337. , ds_hidden_geneinfo.getColumn(0, "formfromdt")
  3338. , "", "", 1) ) {
  3339. sysf_messageBox("유전자검사동의서 IF 저장시 오류발생", "I");
  3340. }
  3341. }
  3342. }
  3343. dsf_deleteDs("ds_hidden_gene_savedata");
  3344. dsf_deleteDs("ds_hidden_gene2_savedata");
  3345. }
  3346. //선택진료 동의서를 출력한다.
  3347. // 2010. 12. 30 김영학 경북대 버젼 수정
  3348. var returnVal = lf_getHardCDList("Y", 266, 3);
  3349. if (returnVal == "Y" ) {
  3350. fPrltPartSpclDrList();
  3351. }
  3352. }
  3353. //2011. 01. 09 인증저장전 환자의 진료예약여부를 확인한다.
  3354. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ) {
  3355. // 외래 예약 창을 팝업 한다.
  3356. if (savekindflag == "0" && ds_root.getColumn(0, "addprcp") != "Y"){
  3357. var returnVal = lf_getHardCDList("Y", 269, 3);
  3358. var prcpsavebtnflag = ds_init.getColumn(0, "prcpsavebtnflag");
  3359. if ((returnVal == "N" || prcpsavebtnflag == "2") && ds_paminfo.getColumn(0, "ordtype") == "O" ) {
  3360. var maxdayno = 0;
  3361. for (var rowno = 0 ; rowno < ds_main_prcplist.rowcount; rowno++) {
  3362. var chkmaxdayno = ds_main_prcplist.getColumn(rowno, "maxdayno");
  3363. if (chkmaxdayno <= maxdayno ) {
  3364. maxdayno = maxdayno;
  3365. } else {
  3366. maxdayno = chkmaxdayno;
  3367. }
  3368. }
  3369. var todd = (utlf_getCurrentDate().toDate()).getAddDate(maxdayno);
  3370. frmf_setParameter("SMPMO00300_PARM1", ds_paminfo.getColumn(0, "orddeptcd")); //진료과코드
  3371. frmf_setParameter("SMPMO00300_PARM2", orddrid); //진료의사코드
  3372. frmf_setParameter("SMPMO00300_PARM3", ds_paminfo.getColumn(0, "pid")); //환자번호
  3373. frmf_setParameter("SMPMO00300_PARM4", todd); // 예약일자
  3374. lf_prcpModal ("SMPMO00300", 0, 80);
  3375. frmf_clearParameter("SMPMO00300_PARM1");
  3376. frmf_clearParameter("SMPMO00300_PARM2");
  3377. frmf_clearParameter("SMPMO00300_PARM3");
  3378. frmf_clearParameter("SMPMO00300_PARM4");
  3379. }
  3380. }
  3381. }
  3382. fAppendSaveNode( "ds_send_cond2", "ds_result_savedrprcplist" ); //의사처방데이터
  3383. fAppendSaveNode( "ds_send_cond2", "ds_result_saveexecprcplist" ); //실시처방 저장데이터
  3384. fAppendSaveNode( "ds_send_cond2", "ds_result_savediaglist" ); //진단저장 저장데이터
  3385. fAppendSaveNode( "ds_send_cond2", "ds_result_savepamlist" ); //원무정보 저장데이터
  3386. fAppendSaveNode( "ds_send_cond2", "ds_result_savematrprcplist" ); //재료처방정보 저장데이터
  3387. fAppendSaveNode( "ds_send_cond2", "ds_result_savesujinresn" ); //수진별 처방사유 데이터 (2011.09.15 엄영만) 급성심근경색 환자 퇴원약(베타차단제,아스피린) 미발행 사유 입력을 위해 생성
  3388. fAppendSaveNode( "ds_send_cond2", "ds_result_bfjudgeprcplist" ); //외래 사전심사 중 누적관련 처방 데이터 (2010.12.27 JJE)
  3389. fAppendSaveNode( "ds_send_cond2", "ds_result_kdurchklist" ); //DUR 점검일반 전문(20120101 고시시행 11/11/24cys)
  3390. fAppendSaveNode( "ds_send_cond2", "ds_result_kdurchkinfo" ); //DUR 점검약품 전문
  3391. fAppendSaveNode( "ds_send_cond2", "ds_result_kdurchkrslt" ); //DUR 점검결과 전문
  3392. fAppendSaveNode( "ds_send_cond2", "ds_result_kdurcnclyn" ); //DUR 취소전문
  3393. if ( prcpgenrflag != "O" && prcpgenrflag != "S" ) {
  3394. //퇴원후 외래처방 저장 setting
  3395. fAppendSaveNode( "ds_send_cond2", "ds_result_dschflaginfo" );
  3396. fAppendSaveNode( "ds_send_cond2", "ds_result_dschpamlist" );
  3397. fAppendSaveNode( "ds_send_cond2", "ds_result_dschdrprcplist" );
  3398. fAppendSaveNode( "ds_send_cond2", "ds_result_dschexecprcplist" );
  3399. fAppendSaveNode( "ds_send_cond2", "ds_result_dschmatrprcplist" );
  3400. //제한항생제 관련
  3401. fAppendSaveNode( "ds_send_cond2", "ds_result_antibioreq" ); //제한항생제 신청정보 (2013.01.10 엄영만)
  3402. fAppendSaveNode( "ds_send_cond2", "ds_result_antibioprcp" ); //제한항생제 처방정보 (2013.01.10 엄영만)
  3403. }
  3404. //20080909 시행부서처방
  3405. if ( !utlf_isNull(this.objects["ds_formerkey"]) && ds_formerkey.getColumn(0, "pseuacptflag") == "Y" ) {
  3406. ds_send_cond15.copyData(ds_formerkey);
  3407. }
  3408. endStepDate = new Date(); // 각 업부 종료후 시간
  3409. step3Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 화면 서버 오류 처리 소요시간
  3410. startStepDate = new Date(); // 각 업부 시작 시간
  3411. //model.addlog(" SPEED CHECK START OF 동의서출력");
  3412. //model.addlog(" SPEED CHECK END OF 저장 데이터 보정(오류/사유)");
  3413. //model.addlog(" SPEED CHECK START OF 데이터(처방/진단/기타) 저장");
  3414. if ( ds_root.getColumn(0, "cp") == "Y" && savekindflag != 1 ) {
  3415. //openLoadingBar("저장중입니다."); //로딩메세지 open (미래처방 오류리스트 팝업처리로 인해 막음)
  3416. if ( prcpgenrflag == "O" ) {
  3417. dsf_setDefaultVal(ds_send_cond1, "pseuacptflag:N,admininfo:N");
  3418. dsf_setDefaultVal(ds_result_savedrprcplist, "clinccmtcnts:-,hosinprcpresncd:00,prcpdelivefact:-,druglnkno:0,ermediscmngtresncd:-,dnorreqlnkno:0,subcretno:0,drgacptflag:-");
  3419. dsf_setDefaultVal(ds_result_saveinvaliprcplist, "prcpdelivefact:-,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,anticncrprtlno:0,anticncrdayno:0,druglnkno:0,subcretno:0,drgacptflag:-");
  3420. var oParam = {};
  3421. oParam.id = "TXMMP00804";
  3422. oParam.service = "prcpmngtapp.CPPrcpMngt";
  3423. oParam.method = "reqExeSavePrtcPrcp";
  3424. oParam.inds = "saveflaginfo=ds_send_cond1 savedrprcplist=ds_result_savedrprcplist saveexecprcplist=ds_result_saveexecprcplist savediaglist=ds_result_savediaglist savepamlist=ds_result_savepamlist signprcplist=ds_result_signprcplist signdiaglist=ds_result_signdiaglist savematrprcplist=ds_result_savematrprcplist saveinvaliprcplist=ds_result_saveinvaliprcplist req=ds_result_req steplist=ds_result_steplist delprcplist=ds_result_delprcplist dessprcplist=ds_result_dessprcplist pessprcplist=ds_result_pessprcplist";
  3425. oParam.outds = "ds_main_invalprcplist=prcplist";
  3426. oParam.async = false;
  3427. oParam.callback = "cf_TXMMP00804";
  3428. tranf_submit(oParam);
  3429. SubmitTF_SMMMO00110 = (arErrorCode.pop("TXMMP00804") < 0) ? false : true;
  3430. if ( !SubmitTF_SMMMO00110 ) { //TXMMO00101
  3431. fClearDatasets("O");
  3432. return false;
  3433. }
  3434. dsf_setDefaultVal(ds_main_invalprcplist, "status:-,prcpvol:0,prcpqty:0,prcptims:0,prcpdayno:0,drugspd:0,nigtprcpflag:N,mealcalrcnts:0,mealprotcnts:0,prcprefseq:0,ordreqlnkno:0,testreqlnkno:0,prcplnkno:0,prtlno:0,inclprcpno:0,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,aftcertflag:-,aftcertdrid:-,prcpvalidd:00000000,specdrid:-,anticncrprtlno:0,anticncrdayno:0,druglnkno:0,drgacptflag:-");
  3435. }else {
  3436. var oParam = {};
  3437. oParam.id = "TXMMP00803";
  3438. oParam.service = "prcpmngtapp.CPPrcpMngt";
  3439. oParam.method = "reqExeSavePrtcPrcp";
  3440. oParam.inds = "saveflaginfo=ds_send_cond1 savedrprcplist=ds_result_savedrprcplist saveexecprcplist=ds_result_saveexecprcplist savediaglist=ds_result_savediaglist savepamlist=ds_result_savepamlist signprcplist=ds_result_signprcplist signdiaglist=ds_result_signdiaglist savematrprcplist=ds_result_savematrprcplist dschflaginfo=ds_result_dschflaginfo dschpamlist=ds_result_dschpamlist dschdrprcplist=ds_result_dschdrprcplist dschexecprcplist=ds_result_dschexecprcplist dschmatrprcplist=ds_result_dschmatrprcplist savePrcpInfo=ds_result_savePrcpInfo saveinvaliprcplist=ds_result_saveinvaliprcplist req=ds_result_req steplist=ds_result_steplist delprcplist=ds_result_delprcplist dessprcplist=ds_result_dessprcplist pessprcplist=ds_result_pessprcplist";
  3441. oParam.outds = "ds_main_invalprcplist=prcplist";
  3442. oParam.async = false;
  3443. oParam.callback = "cf_TXMMP00803";
  3444. tranf_submit(oParam);
  3445. SubmitTF_SMMMO00110 = (arErrorCode.pop("TXMMP00803") < 0) ? false : true;
  3446. if ( !SubmitTF_SMMMO00110 ) { //TXMMO00103
  3447. fClearDatasets();
  3448. return false;
  3449. }
  3450. }
  3451. } else {
  3452. // 20100412 퇴원처방 저장/DC 시 입퇴원요약지 기록 인터페이스 태우도록 by LYJ
  3453. if ( ds_init.getColumn(0, "setprcpyn") == "Y" ) {
  3454. nodelistRecNode = ds_result_savedrprcplist.getCaseCount("prcpkindcd == 60");
  3455. }
  3456. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ) {
  3457. var oParam = {};
  3458. oParam.id = "TXMMO00101";
  3459. oParam.service = "prcpmngtapp.PrcpMngt";
  3460. oParam.method = "reqExeSavePrcp";
  3461. oParam.inds = "saveflaginfo=ds_send_cond1 savedrprcplist=ds_result_savedrprcplist saveexecprcplist=ds_result_saveexecprcplist savediaglist=ds_result_savediaglist savepamlist=ds_result_savepamlist signprcplist=ds_result_signprcplist signdiaglist=ds_result_signdiaglist savematrprcplist=ds_result_savematrprcplist copydiaginfo=ds_result_copydiaginfo savesujinresn=ds_result_savesujinresn bfjudgeprcplist=ds_result_bfjudgeprcplist kdurchkinfo=ds_result_kdurchkinfo kdurchklist=ds_result_kdurchklist kdurchkrslt=ds_result_kdurchkrslt kdurcnclyn=ds_result_kdurcnclyn";
  3462. oParam.outds = "ds_result1_prcperrlist=prcperrlist ds_result1_kdurchkrslt=kdurchkrslt";
  3463. oParam.async = false;
  3464. oParam.callback = "cf_TXMMO00101";
  3465. tranf_submit(oParam);
  3466. if(arErrorCode.pop("TXMMO00101") < 0) {
  3467. fClearDatasets("O");
  3468. ds_send_cond1.clearData();
  3469. ds_send_cond2.clearData();
  3470. ds_send_cond3.clearData();
  3471. ds_send_cond4.clearData();
  3472. ds_send_cond5.clearData();
  3473. ds_send_cond14.clearData();
  3474. ds_send_cond15.clearData();
  3475. return false;
  3476. }
  3477. //심평원 처방전간 사유가 있으면 입력 20120101 고시
  3478. if (ds_result1_prcperrlist.rowcount > 0) {
  3479. //사유팝업
  3480. dsf_createDs("ds_result_kdurchkrslt");
  3481. ds_result_kdurchkrslt.copyData(ds_result1_kdurchkrslt);
  3482. for(var i = ds_result_kdurchkrslt.rowcount - 1; i >= 0; i--) {
  3483. if(utlf_isNull(ds_result_kdurchkrslt.getColumn(i, "rslt_cmpt_cd")))
  3484. ds_result_kdurchkrslt.deleteRow(i);
  3485. }
  3486. ds_result_kdurchkrslt.applyChange();
  3487. //DUR 점검결과 전문
  3488. dsf_createDs("ds_result_prcperrlist");
  3489. ds_result_prcperrlist.copyData(ds_result1_prcperrlist);
  3490. for(var i = ds_result_prcperrlist.rowcount - 1; i >= 0; i--) {
  3491. if(utlf_isNull(ds_result_prcperrlist.getColumn(i, "flag")))
  3492. ds_result_prcperrlist.deleteRow(i);
  3493. }
  3494. ds_result_prcperrlist.applyChange();
  3495. frmf_clearParameter ( "SPMMO16101_rtn1" );
  3496. frmf_clearParameter ( "SPMMO16101_rtn2" );
  3497. var objArg = new Object();
  3498. objArg.arg_ds_result_prcperrlist = ds_result1_prcperrlist;
  3499. frmf_modal("SPMMO16101", "SPMMO16101", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  3500. if ( frmf_getParameter ( "SPMMO16101_rtn1" ) != "Y" ) {
  3501. for (var i = 0; i < ds_main_prcplist.rowcount; i++) {
  3502. ds_main_prcplist.setColumn(i, "tempcol19" , "");
  3503. }
  3504. return false;
  3505. } else {
  3506. if ( frmf_getParameter ( "SPMMO16101_rtn2" ) == "D" ){
  3507. fPrcpSave_old( prcpflag, savekindflag, "", "N" );
  3508. return false;
  3509. }
  3510. }
  3511. ds_result1_prcperrlist.clearData();
  3512. ds_result1_kdurchkrslt.clearData();
  3513. ds_send_cond2.clearData();
  3514. fAppendSaveNode( "ds_send_cond2", "ds_result_kdurchkrslt" ); //DUR 점검결과 전문
  3515. fAppendSaveNode( "ds_send_cond2", "ds_result_kdurcnclyn" ); //DUR 취소전문
  3516. dsf_setDefaultVal(ds_send_cond1, "pseuacptflag:N,admininfo:N");
  3517. dsf_setDefaultVal(ds_result_savedrprcplist, "clinccmtcnts:-,hosinprcpresncd:00,prcpdelivefact:-,druglnkno:0,ermediscmngtresncd:-,dnorreqlnkno:0,subcretno:0,drgacptflag:-");
  3518. var oParam = {};
  3519. oParam.id = "TXMMO00118";
  3520. oParam.service = "prcpmngtapp.PrcpMngt";
  3521. oParam.method = "reqExeSavePrcp2";
  3522. oParam.inds = "saveflaginfo=ds_send_cond1 savedrprcplist=ds_result_savedrprcplist saveexecprcplist=ds_result_saveexecprcplist savediaglist=ds_result_savediaglist savepamlist=ds_result_savepamlist signprcplist=ds_result_signprcplist signdiaglist=ds_result_signdiaglist savematrprcplist=ds_result_savematrprcplist copydiaginfo=ds_result_copydiaginfo savesujinresn=ds_result_savesujinresn bfjudgeprcplist=ds_result_bfjudgeprcplist kdurchkinfo=ds_result_kdurchkinfo kdurchklist=ds_result_kdurchklist kdurchkrslt=ds_result_kdurchkrslt kdurcnclyn=ds_result_durcnclyn";
  3523. oParam.async = false;
  3524. oParam.callback = "cf_TXMMO00118";
  3525. tranf_submit(oParam);
  3526. if(arErrorCode.pop("TXMMO00118") < 0) {
  3527. fClearDatasets("O");
  3528. ds_send_cond1.clearData();
  3529. ds_send_cond2.clearData();
  3530. ds_send_cond3.clearData();
  3531. ds_send_cond4.clearData();
  3532. ds_send_cond5.clearData();
  3533. ds_send_cond14.clearData();
  3534. ds_send_cond15.clearData();
  3535. return false;
  3536. }
  3537. }
  3538. } else {
  3539. dsf_setDefaultVal(ds_send_cond1, "admininfo:N");
  3540. dsf_setDefaultVal(ds_result_savedrprcplist, "clinccmtcnts:-,hosinprcpresncd:00,druglnkno:0,dnorreqlnkno:0,subcretno:0,drgacptflag:-");
  3541. dsf_setDefaultVal(ds_result_dschdrprcplist, "hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,ermediscmngtresncd:-,drgacptflag:-");
  3542. dsf_setDefaultVal(ds_result_savePrcpInfo, "hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,subcretno:0,drgacptflag:-");
  3543. var oParam = {};
  3544. oParam.id = "TXMMO00103";
  3545. oParam.service = "prcpmngtapp.PrcpMngt";
  3546. oParam.method = "reqExeSavePrcp";
  3547. oParam.inds = "saveflaginfo=ds_send_cond1 savedrprcplist=ds_result_savedrprcplist saveexecprcplist=ds_result_saveexecprcplist savediaglist=ds_result_savediaglist savepamlist=ds_result_savepamlist signprcplist=ds_result_signprcplist signdiaglist=ds_result_signdiaglist savematrprcplist=ds_result_savematrprcplist dschflaginfo=ds_result_dschflaginfo dschpamlist=ds_result_dschpamlist dschdrprcplist=ds_result_dschdrprcplist dschexecprcplist=ds_result_dschexecprcplist dschmatrprcplist=ds_result_dschmatrprcplist savePrcpInfo=ds_result_savePrcpInfo copydiaginfo=ds_result_copydiaginfo savesujinresn=ds_result_savesujinresn bfjudgeprcplist=ds_result_bfjudgeprcplist antibioreq=ds_result_antibioreq antibioprcp=ds_result_antibioprcp kdurchkinfo=ds_result_kdurchkinfo kdurchklist=ds_result_kdurchklist kdurchkrslt=ds_result_kdurchkrslt kdurcnclyn=ds_result_kdurcnclyn";
  3548. oParam.outds = "ds_result1_prcperrlist=prcperrlist ds_result1_kdurchkrslt=kdurchkrslt";
  3549. oParam.async = false;
  3550. oParam.callback = "cf_TXMMO00103";
  3551. tranf_submit(oParam);
  3552. if(arErrorCode.pop("TXMMO00103") < 0) {
  3553. fClearDatasets();
  3554. ds_send_cond1.clearData();
  3555. ds_send_cond2.clearData();
  3556. ds_send_cond3.clearData();
  3557. ds_send_cond4.clearData();
  3558. ds_send_cond5.clearData();
  3559. ds_send_cond14.clearData();
  3560. ds_send_cond15.clearData();
  3561. return false;
  3562. }
  3563. //model.addlog(" SPEED CHECK START OF DUR처리(처방전간)");
  3564. //심평원 처방전간 사유가 있으면 입력 20120101 고시
  3565. if (ds_result1_prcperrlist.rowcount > 0) {
  3566. //사유팝업
  3567. dsf_createDs("ds_result_kdurchkrslt");
  3568. ds_result_kdurchkrslt.copyData(ds_result1_kdurchkrslt);
  3569. for(var i = ds_result_kdurchkrslt.rowcount - 1; i >= 0; i--) {
  3570. if(utlf_isNull(ds_result_kdurchkrslt.getColumn(i, "rslt_cmpt_cd")))
  3571. ds_result_kdurchkrslt.deleteRow(i);
  3572. }
  3573. ds_result_kdurchkrslt.applyChange();
  3574. //DUR 점검결과 전문
  3575. dsf_createDs("ds_result_prcperrlist");
  3576. ds_result_prcperrlist.copyData(ds_result1_prcperrlist);
  3577. for(var i = ds_result_prcperrlist.rowcount - 1; i >= 0; i--) {
  3578. if(utlf_isNull(ds_result_prcperrlist.getColumn(i, "flag")))
  3579. ds_result_prcperrlist.deleteRow(i);
  3580. }
  3581. ds_result_prcperrlist.applyChange();
  3582. frmf_clearParameter ( "SPMMO16101_rtn1" );
  3583. frmf_clearParameter ( "SPMMO16101_rtn2" );
  3584. var objArg = new Object();
  3585. objArg.arg_ds_result_prcperrlist = ds_result1_prcperrlist;
  3586. frmf_modal("SPMMO16101", "SPMMO16101", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  3587. if ( frmf_getParameter ( "SPMMO16101_rtn1" ) != "Y" ) {
  3588. for (var i = 0; i < ds_main_prcplist.rowcount; i++) {
  3589. ds_main_prcplist.setColumn(i, "tempcol19" , "");
  3590. }
  3591. return false;
  3592. } else {
  3593. if ( frmf_getParameter ( "SPMMO16101_rtn2" ) == "D" ){
  3594. fPrcpSave_old( prcpflag, savekindflag, "", "N" );
  3595. return false;
  3596. }
  3597. }
  3598. ds_result1_prcperrlist.clearData();
  3599. ds_result1_kdurchkrslt.clearData();
  3600. ds_send_cond2.clearData();
  3601. fAppendSaveNode( "ds_send_cond2", "ds_result_kdurchkrslt" ); //DUR 점검결과 전문
  3602. fAppendSaveNode( "ds_send_cond2", "ds_result_kdurcnclyn" ); //DUR 취소전문
  3603. dsf_setDefaultVal(ds_send_cond1, "admininfo:N");
  3604. dsf_setDefaultVal(ds_result_savedrprcplist, "clinccmtcnts:-,hosinprcpresncd:00,druglnkno:0,dnorreqlnkno:0,subcretno:0,drgacptflag:-");
  3605. dsf_setDefaultVal(ds_result_dschdrprcplist, "hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,ermediscmngtresncd:-,drgacptflag:-");
  3606. dsf_setDefaultVal(ds_result_savePrcpInfo, "hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,subcretno:0,drgacptflag:-", true);
  3607. var oParam = {};
  3608. oParam.id = "TXMMO00119";
  3609. oParam.service = "prcpmngtapp.PrcpMngt";
  3610. oParam.method = "reqExeSavePrcp2";
  3611. oParam.inds = "saveflaginfo=ds_send_cond1 savedrprcplist=ds_result_savedrprcplist saveexecprcplist=ds_result_saveexecprcplist savediaglist=ds_result_savediaglist savepamlist=ds_result_savepamlist signprcplist=ds_result_signprcplist signdiaglist=ds_result_signdiaglist savematrprcplist=ds_result_savematrprcplist dschflaginfo=ds_result_dschflaginfo dschpamlist=ds_result_dschpamlist dschdrprcplist=ds_result_dschdrprcplist dschexecprcplist=ds_result_dschexecprcplist dschmatrprcplist=ds_result_dschmatrprcplist savePrcpInfo=ds_result_savePrcpInfo copydiaginfo=ds_result_copydiaginfo savesujinresn=ds_result_savesujinresn bfjudgeprcplist=ds_result_bfjudgeprcplist kdurchkinfo=ds_result_kdurchkinfo kdurchklist=ds_result_kdurchklist kdurchkrslt=ds_result_kdurchkrslt kdurcnclyn=ds_result_kdurcnclyn";
  3612. oParam.async = false;
  3613. oParam.callback = "cf_TXMMO00119";
  3614. tranf_submit(oParam);
  3615. if(arErrorCode.pop("TXMMO00119") < 0) {
  3616. fClearDatasets();
  3617. ds_send_cond1.clearData();
  3618. ds_send_cond2.clearData();
  3619. ds_send_cond3.clearData();
  3620. ds_send_cond4.clearData();
  3621. ds_send_cond5.clearData();
  3622. ds_send_cond14.clearData();
  3623. ds_send_cond15.clearData();
  3624. return false;
  3625. }
  3626. }
  3627. //model.addlog(" SPEED CHECK END OF DUR처리(처방전간)");
  3628. }
  3629. appf_setPatientInfoDetailByKey("prcpsaveyn", pid+ "|" + ds_init.getColumn(0, "prcpobjsaveyn")); // 처방이 저장된것을 상단에 올려준다.
  3630. }
  3631. endStepDate = new Date(); // 각 업부 종료후 시간
  3632. step4Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 서버 실제 저장 소요시간
  3633. startStepDate = new Date(); // 각 업부 시작 시간
  3634. //model.addlog(" SPEED CHECK END OF 데이터(처방/진단/기타) 저장");
  3635. //model.addlog(" SPEED CHECK START OF 저장 후 처리");
  3636. //model.addlog(" SPEED CHECK START OF 산정특례 처리");
  3637. var sChkMedicineConsultYn = lf_getHardCDList("Y", 315, 3); // 315 퇴원약 처방시 복약상담의뢰 자동팝업 사용 여부
  3638. var pop_MedicineConsult = "N"; // 복약상담의뢰 창 팝업 여부 2011.10.24 엄영만 (칠곡 약제부 이석미 요청)
  3639. if ( sChkMedicineConsultYn == "Y" && prcpflag == '0' && savekindflag == '0' ) {
  3640. var findRow = ds_main_prcplist.findRowExpr("(prcpgenrflag == 'I' || prcpgenrflag == 'E') && (prcpkindcd == '60') && (prcpclscd == 'A2' || prcpclscd == 'A4' || prcpclscd = 'A6')");
  3641. if( findRow != -1 && !utlf_isNull(ds_main_prcplist.getColumn(findRow, "prcpcd")) ){
  3642. pop_MedicineConsult = "Y";
  3643. }
  3644. }
  3645. if ( ds_result_savedrprcplist.rowcount > 0 ) {
  3646. prcpsaveyn = "Y";
  3647. //JJE 2008.09.08
  3648. if(ds_root.getColumn(0, "cp") == "Y") prcpsaveyn_SMMMO00110 = "Y";
  3649. }
  3650. //20080910 마정민 수정. 시행부서처방은 산정특례 체크 안한다.
  3651. if( ds_root.getColumn(0, "cp") == "Y" && ds_root.getColumn(0, "addprcp") != "Y" ){
  3652. //JJE 조건추가 2008.09.08
  3653. //인증저장인 경우, M-GPS의 적용 버튼 이벤트에서 (당일+미래처방 저장 처리가 모두 끝난 후) fGetPrcpSaveAftInfo()를 직접 호출하므로, 임시저장 때에만 여기에서 수행함.
  3654. if( savekindflag == 1 ){
  3655. fGetPrcpSaveAftInfo ( prcpsaveyn ,"Y");
  3656. }
  3657. }else{
  3658. if( savekindflag == 1 ) {
  3659. aftdcyn = "Y"; //임시저장일 경우 산정특례 및 법정전염병 타지 않도록....by sonjy 20081123
  3660. }
  3661. fGetPrcpSaveAftInfo ( prcpsaveyn ,aftdcyn); //청구후 d/c가 아닐 경우만 타도록 parameter 추가 . by sonjy 20081027
  3662. }
  3663. //model.addlog(" SPEED CHECK END OF 산정특례 처리");
  3664. //model.addlog(" SPEED CHECK START OF 가야할곳 출력");
  3665. // 처방 저장후 환자 가셔야 할 곳을 출력한다.
  3666. // 2011. 01. 05. 김영학
  3667. // 외래 환자만 출력한다.
  3668. if (savekindflag == "0" && ds_root.getColumn(0, "addprcp" ) != "Y" && ds_root.getColumn(0, "cp") != "Y"
  3669. && (prcpgenrflag == "O" || prcpgenrflag == "S")){
  3670. var returnVal = lf_getHardCDList("Y", 268, 3);
  3671. var patgolistprtyn = ds_init.getColumn(0, "patgolistprtyn");
  3672. if ((returnVal == "N" || patgolistprtyn == "Y") && ds_paminfo.getColumn(0, "ordtype") == "O") {
  3673. fPrltPatTogoPlceList();
  3674. }
  3675. }
  3676. //model.addlog(" SPEED CHECK END OF 가야할곳 출력");
  3677. //model.addlog(" SPEED CHECK START OF 화면 재조회(상단/처방/대상자)");
  3678. if (savekindflag != 1) {
  3679. var prcpsaveyn = "N";
  3680. if ( savedataflag == "0" || savedataflag == "2" ) {
  3681. prcpsaveyn = "Y";
  3682. }
  3683. //수술중처방 마약집계호출
  3684. if ( ds_init.getColumn(0, "drugbatch") == "Y" ) {
  3685. var oParam = {};
  3686. oParam.id = "TXMMO00106";
  3687. oParam.service = "prcpmngtapp.PrcpMngt";
  3688. oParam.method = "reqExeDrugBatch";
  3689. oParam.inds = "savedrprcplist=ds_send_cond3";
  3690. oParam.async = false;
  3691. tranf_submit(oParam);
  3692. }
  3693. if ( sPrcpGenrFlag == "E" ) { //응급일 때 진료지원 예약모듈 호출
  3694. var oParam = {};
  3695. oParam.id = "TXMMO00110";
  3696. oParam.service = "prcpmngtapp.PrcpMngt";
  3697. oParam.method = "reqExeSetAutoRoomAssignIF";
  3698. oParam.inds = "savedrprcplist=ds_send_cond3";
  3699. oParam.async = false;
  3700. tranf_submit(oParam);
  3701. }
  3702. }
  3703. ds_main_prcplist.clearData();
  3704. lf_appendChildPrcp("ds_reset_prcplist", "ds_main_prcplist", "main");
  3705. fClearDatasets();
  3706. ds_result1_prcperrlist.clearData();
  3707. ds_result1_kdurchkrslt.clearData();
  3708. ds_send_cond1.clearData();
  3709. ds_send_cond2.clearData();
  3710. ds_send_cond3.clearData();
  3711. ds_send_cond4.clearData();
  3712. ds_send_cond5.clearData();
  3713. ds_send_cond14.clearData();
  3714. ds_send_cond15.clearData();
  3715. //추가처방화면이면
  3716. if ( ds_root.getColumn(0, "addprcp" ) == "Y" ) {
  3717. fAddPrcpInitConDone( "", "", "", "", "", "Y" , "" );
  3718. }
  3719. var param;
  3720. //ioflag▦pid▦orddd▦cretno▦instcd▦acptseqno▦orgorddd▦
  3721. //외래/입원구분▦등록번호▦진료일자▦생성번호▦기관코드▦등록일련번호▦원진료일자▦
  3722. var operation = sysf_getGlobalVariable("operation"); //수술예약정보 set
  3723. var ioflag = ds_paminfo.getColumn(0, "ioflag");
  3724. if ( ioflag == "O" || ioflag == "S" ) {
  3725. var pid = ds_paminfo.getColumn(0, "pid" );
  3726. var orddd = ds_paminfo.getColumn(0, "orddd" );
  3727. var cretno = ds_paminfo.getColumn(0, "cretno" );
  3728. var instcd = ds_paminfo.getColumn(0, "instcd" );
  3729. var acptseqno = ds_paminfo.getColumn(0, "acptseqno" );
  3730. var orgorddd = ds_paminfo.getColumn(0, "orgorddd" );
  3731. param = ioflag + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd + "▦" + acptseqno + "▦" + orgorddd;
  3732. } else if( ioflag == "D" || ioflag == "I"){ //입원(DSC, 입원)
  3733. var ioflag = "I";
  3734. //ioflag▦pid▦indd▦cretno▦seqno▦instcd▦
  3735. //외래/입원구분▦등록번호▦입원일자▦생성번호▦일련번호▦기관코드
  3736. var pid = ds_paminfo.getColumn(0, "pid" );
  3737. var indd = ds_paminfo.getColumn(0, "indd" );
  3738. var cretno = ds_paminfo.getColumn(0, "cretno" );
  3739. var instcd = ds_paminfo.getColumn(0, "instcd" );
  3740. var prcpdd = ds_init.getColumn(0, "prcpdd" );
  3741. //청구 후 D/C관련 추가 처리...prcpdd를 퇴원환자일 경우 퇴원일을 넘겨 준다. by sonjy 20081027
  3742. //그렇지 않을 경우 상단 정보 오류남.
  3743. if( ds_paminfo.getColumn(0, "indschacptstat" ) == "D" &&
  3744. ds_paminfo.getColumn(0, "dschdd" ) != "99991231" &&
  3745. !utlf_isNull(ds_paminfo.getColumn(0, "dschdd" ) ) ){
  3746. prcpdd = ds_paminfo.getColumn(0, "dschdd" );
  3747. }
  3748. param = ioflag + "▦" + pid + "▦" + indd + "▦" + cretno + "▦" + instcd + "▦" + prcpdd;
  3749. } else if(ioflag == "E"){ //입원(E응급)
  3750. var ioflag = "E";
  3751. //ioflag▦pid▦indd▦cretno▦seqno▦instcd▦
  3752. //외래/입원구분▦등록번호▦입원일자▦생성번호▦일련번호▦기관코드
  3753. var pid = ds_paminfo.getColumn(0, "pid" );
  3754. var indd = ds_paminfo.getColumn(0, "indd" );
  3755. var cretno = ds_paminfo.getColumn(0, "cretno" );
  3756. var instcd = ds_paminfo.getColumn(0, "instcd" );
  3757. var prcpdd = ds_init.getColumn(0, "prcpdd" );
  3758. //청구 후 D/C관련 추가 처리...prcpdd를 퇴원환자일 경우 퇴원일을 넘겨 준다. by sonjy 20081027
  3759. //그렇지 않을 경우 상단 정보 오류남.
  3760. if( ds_paminfo.getColumn(0, "indschacptstat" ) == "D" &&
  3761. ds_paminfo.getColumn(0, "dschdd" ) != "99991231" &&
  3762. !utlf_isNull(ds_paminfo.getColumn(0, "dschdd" ) ) ){
  3763. prcpdd = ds_paminfo.getColumn(0, "dschdd" );
  3764. }
  3765. param = ioflag + "▦" + pid + "▦" + indd + "▦" + cretno + "▦" + instcd + "▦" + prcpdd;
  3766. }
  3767. var useyn;
  3768. if ( ds_root.getColumn(0, "addprcp") != "Y" ){//&& prcpchkflag != "clickpatlist" 진료대상자리스트에서 선택되었을때는 메세지 띄우지 않는다. 20100317 LYJ
  3769. useyn = appf_initPatientInfo(param);
  3770. }
  3771. //기존의 수술예약번호가 있는 경우에는 reset처리
  3772. if( operation != "" ){
  3773. sysf_setGlobalVariable("operation", operation);
  3774. }
  3775. if(useyn == "Y"){
  3776. frmf_setParameter("SPMMO08900_rtn_useyn", "");
  3777. if ( savedataflag != "2" ) {
  3778. fPatDiagSrch();
  3779. }
  3780. //JJE CP일 경우, 당일+미래처방 모두 저장 후 맨 마지막에 진료대상자를 조회한다 (2008.09.11)
  3781. if ( ds_root.getColumn(0, "cp" ) == "Y" && savekindflag != 1 ){
  3782. return true;
  3783. }
  3784. fInitializeConDone("save");
  3785. fTempPrcp("save");
  3786. //20080818 마정민 수정: 전처방 조회 저장후 바로 가져오는 걸로 수정
  3787. //ivw_prcp3.window.javascript.fInitialize("init");
  3788. if ( ds_root.getColumn(0, "cp") != "Y" && div_all.Tab_prcp.tabindex != 1) {
  3789. div_all.Tab_prcp.tabindex = 1;
  3790. }else if ( div_all.Tab_prcp.tabindex != 1 ) {
  3791. div_all.Tab_prcp.tabindex = 1;
  3792. }
  3793. //20090327 마정민수정: 차상위 로직추가
  3794. if ( ds_paminfo.getColumn(0, "scndyn" ) == "Y" && prcpgenrflag == "O" && savekindflag != 1 ) {
  3795. fScndChk();
  3796. }
  3797. fInitializeScreen();
  3798. //종속처방번호, 믹스번호, hsctlnkno 초기화
  3799. ds_init.setColumn(0, "inclprcpno", 0 );
  3800. ds_init.setColumn(0, "hsctlnkno", 0 );
  3801. ds_init.setColumn(0, "prcpmixno", 0 );
  3802. var ordPatObj = frmf_findPopup("SMMMO04100");
  3803. if(!utlf_isNull(ordPatObj)){ //두 객체값이 다른 경우 새로운 진료대상자 화면을 open함
  3804. ordPatObj.fPrcpCallPatList();
  3805. }
  3806. var ordMiniPatObj = frmf_findPopup("SPMMO04200");
  3807. if(!utlf_isNull(ordMiniPatObj)){ //두 객체값이 다른 경우 새로운 진료대상자 화면을 open함
  3808. ordMiniPatObj.fChkGetData();
  3809. }
  3810. }
  3811. // 20100412 퇴원처방 저장시 입퇴원요약지 기록 인터페이스 태우도록 by LYJ 20101102 위치변경
  3812. if ( ds_initsrch_getoutprcpsave.getColumn(0, "trgtcd") == "Y" ) {
  3813. if ( ds_paminfo.getColumn(0, "ioflag" ) == "I") {
  3814. if( nodelistRecNode > 0 && ds_init.getColumn(0, "setprcpyn") == "Y" ) {
  3815. var pid = ds_paminfo.getColumn(0, "pid");
  3816. var orddd = ds_paminfo.getColumn(0, "indd");
  3817. var cretno = ds_paminfo.getColumn(0, "cretno");
  3818. var orddeptcd = ds_paminfo.getColumn(0, "orddeptcd");
  3819. // 추후 SPMMR07300.xjs 작업 되면 확인필요
  3820. openAutoSaveForm_MMR073("DisChargeSummaryNote_ReDschOrd", pid, orddd, cretno, orddeptcd);
  3821. }
  3822. }
  3823. }
  3824. //model.addlog(" SPEED CHECK END OF 화면 재조회(상단/처방/대상자)");
  3825. //model.addlog(" SPEED CHECK END OF 저장 후 처리");
  3826. //model.addlog("SPEED CHECK END OF fPrcpSave()");
  3827. // 입원 또는 응급일 경우 // 20111201 knuh 최원돈
  3828. // 기록/처방 직전 인증저장이 정해진 시간(분 단위, 하드코드 401) 이내이면 인증서를 띄우지 않음(2/2)
  3829. // SMMMO00100.js, MMR01300.js, MMR00100.js, SPMRF05200.js
  3830. // 인증저장된 시간을 저장.
  3831. if ((prcpgenrflag == "I" || prcpgenrflag == "E") && savekindflag != 1 ) {
  3832. sysf_setGlobalVariable("emrinptsavetime", utlf_getCurrentDateTime());
  3833. }
  3834. if(pop_MedicineConsult == "Y") {
  3835. frmf_modal("SPADC62100", "SPADC62100", null, null, null, 200, 200, null, null, null, null, null, "M");
  3836. }
  3837. // DRG 정보화면 팝업. 2013.06.25
  3838. if (pop_DrgAbleYn == "Y" && (prcpgenrflag == "I" || prcpgenrflag == "E" || prcpgenrflag == "D") && savekindflag == "0" ) {
  3839. var pid = ds_paminfo.getColumn(0, "pid");
  3840. var indd = ds_paminfo.getColumn(0, "indd");
  3841. var cretno = ds_paminfo.getColumn(0, "cretno");
  3842. frmf_setParameter("pid", pid);
  3843. frmf_setParameter("indd", indd);
  3844. frmf_setParameter("cretno", cretno);
  3845. frmf_modal("SPPIJ03201", "SPPIJ03201", null, null, null, 200, 200, null, null, null, null, null, "M");
  3846. }
  3847. endStepDate = new Date(); // 각 업부 종료후 시간
  3848. step5Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 화면 저장후 처리 소요 시간
  3849. if(prcpflag == "0" && savekindflag == "0" && ds_root.getColumn(0, "addprcp" ) != "Y") {
  3850. var pid = ds_paminfo.getColumn(0, "pid");
  3851. var cretno = ds_paminfo.getColumn(0, "cretno");
  3852. var orddeptcd = ds_paminfo.getColumn(0, "orddeptcd");
  3853. var orddd = ""
  3854. if(prcpgenrflag == "O" || prcpgenrflag == "S"){
  3855. orddd = ds_paminfo.getColumn(0, "orddd");
  3856. } else {
  3857. orddd = ds_paminfo.getColumn(0, "indd");
  3858. }
  3859. // 속도체크를 위한 모니터링 로그 데이터 생성.
  3860. reqSetMonitoringLog( "PrcpSave" // type
  3861. , savedataflag // item01 : 저장 데이터 유형 0:인증저장(진단+상병), 1:인증저장(진단), 2:인증저장(처방), 4:임시저장(처방), 5:임시저장DC(처방), 6:임시저장(진단+처방), 7:임시저장(진단)
  3862. , prcpgenrflag // item02 : 진료유형 (O:외래, S:건강검진, I:입원, E:응급, D:일일수술,낮병동)
  3863. , "0" // item03 : 입력구분 (코드정의서 M0034 참조) inptflag
  3864. , pid // item04 : 등록번호
  3865. , orddd // item05 : 진료(입원)일자
  3866. , cretno // item06 : 생성번호
  3867. , orddeptcd // item07 : 진료부서
  3868. , nPrcpCnt // item08 : 처방갯수
  3869. , nDiagCnt // item09 : 진단갯수
  3870. , (step1Elapsed + step2Elapsed + step3Elapsed + step4Elapsed + step5Elapsed) // item10 : 전체소요시간
  3871. , step1Elapsed // item11 : 화면 오류체크 소요시간
  3872. , step2Elapsed // item12 : 서버 오류체크 소요시간
  3873. , step3Elapsed // item13 : 화면 오류처리 소요시간
  3874. , step4Elapsed // item14 : 서버 저장처리 소요시간
  3875. , step5Elapsed // item15 : 화면 저장후처리 소요시간
  3876. );
  3877. }
  3878. return true;
  3879. }
  3880. function cf_TRMMO00103(sSvcId, nErrorCode, sErrorMsg) {
  3881. arErrorCode.push(sSvcId, nErrorCode);
  3882. }
  3883. function cf_TRMMO00104(sSvcId, nErrorCode, sErrorMsg) {
  3884. arErrorCode.push(sSvcId, nErrorCode);
  3885. }
  3886. function cf_TXMMP00804(sSvcId, nErrorCode, sErrorMsg) {
  3887. arErrorCode.push(sSvcId, nErrorCode);
  3888. }
  3889. function cf_TXMMP00803(sSvcId, nErrorCode, sErrorMsg) {
  3890. arErrorCode.push(sSvcId, nErrorCode);
  3891. }
  3892. function cf_TXMMO00101(sSvcId, nErrorCode, sErrorMsg) {
  3893. arErrorCode.push(sSvcId, nErrorCode);
  3894. }
  3895. function cf_TXMMO00118(sSvcId, nErrorCode, sErrorMsg) {
  3896. arErrorCode.push(sSvcId, nErrorCode);
  3897. }
  3898. function cf_TXMMO00103(sSvcId, nErrorCode, sErrorMsg) {
  3899. arErrorCode.push(sSvcId, nErrorCode);
  3900. }
  3901. function cf_TXMMO00119(sSvcId, nErrorCode, sErrorMsg) {
  3902. arErrorCode.push(sSvcId, nErrorCode);
  3903. }
  3904. function fClearDatasets(ioflag) {
  3905. if(ioflag == "O") {
  3906. ds_result_prcperrlist.clearData();
  3907. ds_result_prcplist.clearData();
  3908. ds_result_savedrprcplist.clearData();
  3909. ds_result_saveexecprcplist.clearData();
  3910. ds_result_savediaglist.clearData();
  3911. ds_result_savepamlist.clearData();
  3912. ds_result_signprcplist.clearData();
  3913. ds_result_signdiaglist.clearData();
  3914. ds_result_savetnmlist.clearData();
  3915. ds_result_savecncrlist.clearData();
  3916. ds_result_duplprcplist.clearData();
  3917. ds_result_savematrprcplist.clearData();
  3918. ds_result_limprcplist.clearData();
  3919. ds_result_comduplprcplist.clearData();
  3920. ds_result_divinfo.clearData();
  3921. ds_result_a.clearData();
  3922. ds_result_patientInfoList.clearData();
  3923. ds_result_drugInofList.clearData();
  3924. ds_result_screenResultList.clearData();
  3925. ds_result_screenRenList.clearData();
  3926. ds_result_dementiainfo.clearData();
  3927. ds_result_bfjudgeprcplist.clearData();
  3928. ds_result_spclhdrugprcplist.clearData();
  3929. ds_result_checkprcpresn.clearData();
  3930. ds_result_antibioreq.clearData();
  3931. ds_result_antibioprcp.clearData();
  3932. ds_result_kdurchkinfo.clearData();
  3933. ds_result_kdurchklist.clearData();
  3934. ds_result_kdurchkrslt.clearData();
  3935. ds_result_kdurcnclyn.clearData();
  3936. ds_result_warnprcplist.clearData();
  3937. ds_result_drgableprcplist.clearData();
  3938. ds_result_chemoprcplist.clearData();
  3939. ds_result_geneconsentlist.clearData();
  3940. } else {
  3941. ds_result_prcperrlist.clearData();
  3942. ds_result_prcplist.clearData();
  3943. ds_result_savedrprcplist.clearData();
  3944. ds_result_saveexecprcplist.clearData();
  3945. ds_result_savediaglist.clearData();
  3946. ds_result_savepamlist.clearData();
  3947. ds_result_signprcplist.clearData();
  3948. ds_result_signdiaglist.clearData();
  3949. ds_result_savetnmlist.clearData();
  3950. ds_result_savecncrlist.clearData();
  3951. ds_result_duplprcplist.clearData();
  3952. ds_result_savematrprcplist.clearData();
  3953. ds_result_dschflaginfo.clearData();
  3954. ds_result_dschpamlist.clearData();
  3955. ds_result_dschdrprcplist.clearData();
  3956. ds_result_dschexecprcplist.clearData();
  3957. ds_result_dschmatrprcplist.clearData();
  3958. ds_result_limprcplist.clearData();
  3959. ds_result_divinfo.clearData();
  3960. ds_result_a.clearData();
  3961. ds_result_patientInfoList.clearData();
  3962. ds_result_drugInofList.clearData();
  3963. ds_result_screenResultList.clearData();
  3964. ds_result_screenRenList.clearData();
  3965. ds_result_saveetcchklist.clearData();
  3966. ds_result_dementiainfo.clearData();
  3967. ds_result_bfjudgeprcplist.clearData();
  3968. ds_result_amidschprcpinfo.clearData();
  3969. ds_result_checkprcpresn.clearData();
  3970. ds_result_antibioreq.clearData();
  3971. ds_result_antibioprcp.clearData();
  3972. ds_result_kdurchkinfo.clearData();
  3973. ds_result_kdurchklist.clearData();
  3974. ds_result_kdurchkrslt.clearData();
  3975. ds_result_kdurcnclyn.clearData();
  3976. ds_result_warnprcplist.clearData();
  3977. ds_result_drgableprcplist.clearData();
  3978. ds_result_chemoprcplist.clearData();
  3979. ds_result_geneconsentlist.clearData();
  3980. }
  3981. }
  3982. /**@desc : 처방 저장후 화면 처리 함수
  3983. * @return : true, false
  3984. * @authur : 엄영만 2014. 02. 07
  3985. */
  3986. function fExeAfterPrcpSave( sPrcpSaveYn ,sAftDcYn ) {
  3987. var rtnVal = true;
  3988. var sPrcpGenrFlag = ds_patflag.getColumn(0, "prcpgenrflag");
  3989. fChkNPDschChk(); //정신과 의료급여 환자 입퇴원 유형 체크
  3990. if( fGetPrcpEtcInfo("save") == false ){ //처방에 대한 중증진료, 산정특례, 법정전염병 처리 ( 추가처방에서는 처리 안함 )
  3991. rtnVal = false;
  3992. }
  3993. if(sPrcpGenrFlag != "O" && sPrcpGenrFlag != "S"){
  3994. ds_savertninfo_saveestmspclcs.copyData(ds_savertninfo_dschestmspclcs);
  3995. ds_savertninfo_saveserdiagappfrm.copyData(ds_savertninfo_dschserdiagappfrm);
  3996. ds_savertninfo_savelglydis.copyData(ds_savertninfo_dschlglydis);
  3997. ds_savertninfo_saverareobst.copyData(ds_savertninfo_dschrareobst);
  3998. ds_savertninfo_saveresindenture.copyData(ds_savertninfo_dschresindenture);
  3999. if( fGetPrcpEtcInfo("save") == false ){ //처방에 대한 중증진료, 산정특례, 법정전염병 처리 ( 추가처방에서는 처리 안함 )
  4000. rtnVal = false;
  4001. }
  4002. }
  4003. //by sonjy 간호반납의뢰 처방 저장 후 호출 시에는...아직 화면이 그려지지 않은 상태임.
  4004. if( ds_root.getColumn(0, "bfinityn") == "Y" ){
  4005. if( ds_root.getColumn(0, "cp") == "Y" ){ //JJE 처방일이 미래일자로 변경되어 있을경우, 오늘날짜로 다시 설정 (2008.09.11)
  4006. ds_init.setColumn(0, "prcpdd", utlf_getCurrentDate());
  4007. }
  4008. div_all.Tab_prcp.tp_bfprcp.fInitialize("save");
  4009. }
  4010. //true 리턴 추가(2008.09.29 JJE)
  4011. return rtnVal; //return true;
  4012. }
  4013. function fGetPrcpSaveAftInfo( prcpsaveyn ,aftdcyn ) {
  4014. var rtnVal = true; //return value(true/false) 선언 추가 (2010.02.20 JJE)
  4015. if( utlf_isNull(aftdcyn) ) aftdcyn = ""; //청구 후 d/c관련 추가 by sonjy 20081027 청구 후 d/c시 법정전염병 및 산정특례를 체크하지 않도록 한다.
  4016. fChkNPDschChk(); //정신과 의료급여 환자 입퇴원 유형 체크
  4017. var orddd = "";
  4018. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  4019. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ){ //외래일때
  4020. orddd = ds_paminfo.getColumn(0, "orddd");
  4021. orddrid = ds_paminfo.getColumn(0, "orddrid");
  4022. } else {
  4023. orddd = ds_paminfo.getColumn(0, "indd");
  4024. orddrid = ds_paminfo.getColumn(0, "medispclid");
  4025. }
  4026. //처방에 대한 중증진료, 산정특례, 법정전염병 처리
  4027. ds_TRMMO00122.setColumn(0, "ioflag", prcpgenrflag); //외래,입원구분
  4028. ds_TRMMO00122.setColumn(0, "pid", ds_paminfo.getColumn(0, "pid")); //환자번호
  4029. ds_TRMMO00122.setColumn(0, "orddd", orddd); //진료일
  4030. ds_TRMMO00122.setColumn(0, "cretno", ds_paminfo.getColumn(0, "cretno")); //cretno
  4031. ds_TRMMO00122.setColumn(0, "instcd", ds_paminfo.getColumn(0, "instcd")); //기관코드
  4032. ds_TRMMO00122.setColumn(0, "orddeptcd", ds_paminfo.getColumn(0, "orddeptcd")); //진료과
  4033. ds_TRMMO00122.setColumn(0, "orddrid", orddrid); //진료의id
  4034. ds_TRMMO00122.setColumn(0, "prcpdd", ds_init.getColumn(0, "prcpdd")); //처방일
  4035. ds_TRMMO00122.setColumn(0, "age", ds_paminfo.getColumn(0, "age")); //나이
  4036. ds_TRMMO00122.setColumn(0, "dschprcpyn", ds_hidden.getColumn(0, "dschprcpyn")); //퇴원오더 여부
  4037. ds_TRMMO00122.setColumn(0, "suppkind", ds_paminfo.getColumn(0, "suppkind")); //보조유형
  4038. ds_TRMMO00122.setColumn(0, "prcpauthflag", ds_init.getColumn(0, "prcpauthflag")); //권한구분
  4039. ds_TRMMO00122.setColumn(0, "insukind", ds_paminfo.getColumn(0, "insukind")); //보험유형
  4040. ds_TRMMO00122.setColumn(0, "deptcd", sysf_getUserInfo("dutplcecd")); //부서코드
  4041. ds_TRMMO00122.setColumn(0, "userid", sysf_getUserInfo("userid")); //사용자ID
  4042. ds_TRMMO00122.setColumn(0, "prcpsaveyn", prcpsaveyn); //처방저장여부
  4043. ds_TRMMO00122.setColumn(0, "pseuacptflag", !utlf_isNull(this.objects["ds_formerkey"]) ? ds_formerkey.getColumn(0, "pseuacptflag") : ""); //시행부서처방가접수여부
  4044. ds_TRMMO00122.setColumn(0, "aftdcyn", aftdcyn); //청구 후 d/c처방 여부 by sonjy 20081027 추가
  4045. //by sonjy 20091120 전처방 개인별 조회 option 추가
  4046. var bfprcpviewnode = ds_initsrch_envinfo.lookup("qestcd", '018', "answcnt");
  4047. var bfprcpviewflag = "";
  4048. if( !utlf_isNull(bfprcpviewnode) ) bfprcpviewflag = bfprcpviewnode;
  4049. ds_TRMMO00122.setColumn(0, "bfprcpviewflag", bfprcpviewflag);
  4050. //submit("TRMMO00122") => if( submit("TRMMO00122") == true ) 로 변경 (2008.09.28 JJE)
  4051. var oParam = {};
  4052. oParam.id = "TRMMO00122";
  4053. oParam.service = "prcpmngtapp.PrcpMngt";
  4054. oParam.method = "reqGetPrcpSaveAftInfo";
  4055. oParam.inds = "req=ds_TRMMO00122";
  4056. oParam.outds = "ds_savertninfo_prcplist=prcplist ds_savertninfo_prcpetccnts=prcpetccnts ds_savertninfo_rsrvcvrtprcp=rsrvcvrtprcp ds_savertninfo_saveestmspclcs=saveestmspclcs ds_savertninfo_saveserdiagappfrm=saveserdiagappfrm ds_savertninfo_savelglydis=savelglydis ds_savertninfo_saverareobst=saverareobst ds_savertninfo_saveserdiagcont=saveserdiagcont ds_savertninfo_saveresindenture=saveresindenture";
  4057. oParam.async = false;
  4058. oParam.callback = "cf_TRMMO00122";
  4059. tranf_submit(oParam);
  4060. if(arErrorCode.pop("TRMMO00122") > -1) {
  4061. if( fGetPrcpEtcInfo("save") == false ){ //처방에 대한 중증진료, 산정특례, 법정전염병 처리 ( 추가처방에서는 처리 안함 )
  4062. rtnVal = false; //return false;
  4063. }
  4064. if(prcpgenrflag != "O" && prcpgenrflag != "S"){
  4065. var nDschOutCnt = ds_main_prcplist.getCaseCount("status == 'I' && prcpkindcd == '70'");
  4066. if(nDschOutCnt > 0) {
  4067. ds_TRMMO00119.setColumn(0, "pid", ds_paminfo.getColumn(0, "pid") ); //환자번호
  4068. ds_TRMMO00119.setColumn(0, "orddd", ds_paminfo.getColumn(0, "indd") ); //진료일
  4069. ds_TRMMO00119.setColumn(0, "instcd", ds_paminfo.getColumn(0, "instcd")); //cretno
  4070. ds_TRMMO00119.setColumn(0, "cretno", ds_paminfo.getColumn(0, "cretno")); //cretno
  4071. var oParam = {};
  4072. oParam.id = "TRMMO00119";
  4073. oParam.service = "prcpmngtapp.PrcpMngt";
  4074. oParam.method = "reqGetFollowUpChk";
  4075. oParam.inds = "req=ds_TRMMO00119";
  4076. oParam.outds = "ds_followup=followup";
  4077. oParam.async = false;
  4078. oParam.callback = "cf_TRMMO00119";
  4079. tranf_submit(oParam);
  4080. if(arErrorCode.pop("TRMMO00119") > -1) {
  4081. //처방에 대한 중증진료, 산정특례, 법정전염병 처리
  4082. ds_TRMMO00122.setColumn(0, "ioflag", "O" ); //외래,입원구분
  4083. ds_TRMMO00122.setColumn(0, "pid", ds_paminfo.getColumn(0, "pid")); //환자번호
  4084. ds_TRMMO00122.setColumn(0, "orddd", ds_followup.getColumn(0, "outorddd") ); //진료일
  4085. ds_TRMMO00122.setColumn(0, "cretno", ds_followup.getColumn(0, "outcretno")); //cretno
  4086. ds_TRMMO00122.setColumn(0, "instcd", ds_paminfo.getColumn(0, "instcd")); //기관코드
  4087. ds_TRMMO00122.setColumn(0, "orddeptcd", ds_paminfo.getColumn(0, "orddeptcd")); //진료과
  4088. ds_TRMMO00122.setColumn(0, "orddrid", orddrid ); //진료의id
  4089. ds_TRMMO00122.setColumn(0, "prcpdd", ds_init.getColumn(0, "prcpdd")); //처방일
  4090. ds_TRMMO00122.setColumn(0, "age", ds_paminfo.getColumn(0, "age")); //나이
  4091. ds_TRMMO00122.setColumn(0, "dschprcpyn", ds_hidden.getColumn(0, "dschprcpyn")); //퇴원오더 여부
  4092. ds_TRMMO00122.setColumn(0, "suppkind", ds_paminfo.getColumn(0, "suppkind")); //보조유형
  4093. ds_TRMMO00122.setColumn(0, "prcpauthflag", ds_init.getColumn(0, "prcpauthflag")); //권한구분
  4094. ds_TRMMO00122.setColumn(0, "insukind", ds_paminfo.getColumn(0, "insukind")); //보험유형
  4095. ds_TRMMO00122.setColumn(0, "deptcd", sysf_getUserInfo("dutplcecd")); //부서코드
  4096. ds_TRMMO00122.setColumn(0, "userid", sysf_getUserInfo ("userid")); //사용자ID
  4097. ds_TRMMO00122.setColumn(0, "prcpsaveyn", prcpsaveyn ); //처방저장여부
  4098. ds_TRMMO00122.setColumn(0, "pseuacptflag", !utlf_isNull(this.objects["ds_formerkey"]) ? ds_formerkey.getColumn(0, "pseuacptflag") : ""); //시행부서처방가접수여부
  4099. ds_TRMMO00122.setColumn(0, "aftdcyn", aftdcyn); //청구 후 d/c처방 여부 by sonjy 20081027 추가
  4100. var oParam = {};
  4101. oParam.id = "TRMMO00122";
  4102. oParam.service = "prcpmngtapp.PrcpMngt";
  4103. oParam.method = "reqGetPrcpSaveAftInfo";
  4104. oParam.inds = "req=ds_TRMMO00122";
  4105. oParam.outds = "ds_savertninfo_prcplist=prcplist ds_savertninfo_prcpetccnts=prcpetccnts ds_savertninfo_rsrvcvrtprcp=rsrvcvrtprcp ds_savertninfo_saveestmspclcs=saveestmspclcs ds_savertninfo_saveserdiagappfrm=saveserdiagappfrm ds_savertninfo_savelglydis=savelglydis ds_savertninfo_saverareobst=saverareobst ds_savertninfo_saveserdiagcont=saveserdiagcont ds_savertninfo_saveresindenture=saveresindenture";
  4106. oParam.async = false;
  4107. oParam.callback = "cf_TRMMO00122";
  4108. tranf_submit(oParam);
  4109. if(arErrorCode.pop("TRMMO00122") > -1) {
  4110. if( fGetPrcpEtcInfo("save") == false ){ //처방에 대한 중증진료, 산정특례, 법정전염병 처리 ( 추가처방에서는 처리 안함 )
  4111. rtnVal = false; //return false;
  4112. }
  4113. }
  4114. }
  4115. }
  4116. }
  4117. //by sonjy 간호반납의뢰 처방 저장 후 호출 시에는...아직 화면이 그려지지 않은 상태임.
  4118. if( ds_root.getColumn(0, "bfinityn") == "Y" ){
  4119. if( ds_root.getColumn(0, "cp") == "Y" ){ //JJE 처방일이 미래일자로 변경되어 있을경우, 오늘날짜로 다시 설정 (2008.09.11)
  4120. ds_init.setColumn(0, "prcpdd", utlf_getCurrentDate());
  4121. }
  4122. div_all.Tab_prcp.tp_bfprcp.fInitialize("save");
  4123. }
  4124. }
  4125. //start: 외부 CD 재판독 의뢰 정보 update (2010.02.19 JJE)
  4126. if( frmf_getParameter("spmmo21200_rtnyn") == "Y" ){
  4127. var saveYN = "N";
  4128. var prcpPkSpec = "";
  4129. var savePrcpDD = "";
  4130. var savePrcpCd = "";
  4131. var saveEqmtCd = "";
  4132. var saveTrsmDD = "";
  4133. var saveTrsmTM = "";
  4134. //var saveOcdSeq = "";
  4135. var prcpcdList = frmf_getParameter("spmmo21200_rtnprcpcd").split("^"); //prcpCd
  4136. var eqmtcdList = frmf_getParameter("spmmo21200_rtneqmtcd").split("^"); //cdType
  4137. var trsmddList = frmf_getParameter("spmmo21200_rtntrsmdd").split("^"); //trsmDD
  4138. var trsmtmList = frmf_getParameter("spmmo21200_rtntrsmtm").split("^"); //trsmTM
  4139. //var ocdseqList = getParameter("spmmo21200_rtnocdseq").split("^"); //oCdSeq
  4140. var iRow = 0;
  4141. dsf_createDs("ds_spmmo21200_send");
  4142. ds_spmmo21200_send.addColumn("pid", "string");
  4143. ds_spmmo21200_send.addColumn("orddeptcd", "string");
  4144. ds_spmmo21200_send.addColumn("prcpdd", "string");
  4145. ds_spmmo21200_send.addColumn("prcpcd", "string");
  4146. ds_spmmo21200_send.addColumn("eqmtcd", "string");
  4147. ds_spmmo21200_send.addColumn("trsmdd", "string");
  4148. ds_spmmo21200_send.addColumn("trsmtm", "string");
  4149. for( var i = 0; i < prcpcdList.length; i++ ){
  4150. prcpPkSpec = ds_savertninfo_prcplist.lookup("prcpcd", prcpcdList[i], "prcppkspec");
  4151. if( !utlf_isNull(prcpPkSpec) ){ //익일 처방 있고, 당일처방 추가로 낸 경우.. 값 있는지?
  4152. savePrcpDD = prcpPkSpec.text.substr(0, 8);
  4153. savePrcpCd = prcpcdList[i];
  4154. saveEqmtCd = eqmtcdList[i];
  4155. saveTrsmDD = trsmddList[i];
  4156. saveTrsmTM = trsmtmList[i];
  4157. //saveOcdSeq = ocdseqList[i];
  4158. saveYN = "Y";
  4159. iRow = ds_spmmo21200_send.addRow();
  4160. //break; //우선은 1건만 prcpcd mapping
  4161. ds_spmmo21200_send.setColumn(iRow, "pid" , frmf_getParameter("spmmo21200_pid"));
  4162. ds_spmmo21200_send.setColumn(iRow, "orddeptcd", frmf_getParameter("spmmo21200_orddeptcd"));
  4163. ds_spmmo21200_send.setColumn(iRow, "prcpdd" , savePrcpDD);
  4164. ds_spmmo21200_send.setColumn(iRow, "prcpcd" , savePrcpCd);
  4165. ds_spmmo21200_send.setColumn(iRow, "eqmtcd" , saveEqmtCd);
  4166. ds_spmmo21200_send.setColumn(iRow, "trsmdd" , saveTrsmDD);
  4167. ds_spmmo21200_send.setColumn(iRow, "trsmtm" , saveTrsmTM);
  4168. //model.makeValue("/root/spmmo21200/send/info/ocdseq" , saveOcdSeq);
  4169. }
  4170. }
  4171. if( saveYN == "Y" ){
  4172. var oParam = {};
  4173. oParam.id = "TXMMO21201";
  4174. oParam.service = "prcpmngtapp.PrcpMngt";
  4175. oParam.method = "reqExePatOuterCdInfo";
  4176. oParam.inds = "req=ds_spmmo21200_send";
  4177. oParam.async = false;
  4178. oParam.callback = "cf_TXMMO21201";
  4179. tranf_submit(oParam);
  4180. if(arErrorCode.pop("TXMMO21201") < 0) {
  4181. rtnVal = false;
  4182. }
  4183. }
  4184. dsf_deleteDs("ds_spmmo21200_send");
  4185. frmf_clearParameter("spmmo21200_rtnyn");
  4186. frmf_clearParameter("spmmo21200_pid");
  4187. frmf_clearParameter("spmmo21200_orddeptcd");
  4188. frmf_clearParameter("spmmo21200_rtnprcpcd");
  4189. frmf_clearParameter("spmmo21200_rtneqmtcd");
  4190. frmf_clearParameter("spmmo21200_rtntrsmdd");
  4191. frmf_clearParameter("spmmo21200_rtntrsmtm");
  4192. }
  4193. //end
  4194. //true 리턴 추가(2008.09.29 JJE)
  4195. return rtnVal; //return true;
  4196. }
  4197. function cf_TRMMO00122(sSvcId, nErrorCode, sErrorMsg) {
  4198. arErrorCode.push(sSvcId, nErrorCode);
  4199. }
  4200. function cf_TXMMO21201(sSvcId, nErrorCode, sErrorMsg) {
  4201. arErrorCode.push(sSvcId, nErrorCode);
  4202. }
  4203. function fGetPrcpEtcInfo(flag) {
  4204. var mon = sysf_getCurrentMonitorNumber();
  4205. var xpt = this.getOwnerFrame().position.x + 400;
  4206. var ypt = this.getOwnerFrame().position.y + 100;
  4207. var orddd = "";
  4208. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag" );
  4209. //20090415 마정민추가 chronicdiseaseyn 초기화
  4210. ds_init.setColumn(0, "chronicdiseaseyn", "N");
  4211. if ( flag == "save" ) {
  4212. //20080818 마정민 수정. 처방 저장후 불러오는 건은 app에서 호출하는 걸로 수정.
  4213. ds_prcpetcinfo_saveestmspclcs.copyData(ds_savertninfo_saveestmspclcs);
  4214. ds_prcpetcinfo_saveserdiagappfrm.copyData(ds_savertninfo_saveserdiagappfrm);
  4215. ds_prcpetcinfo_savelglydis.copyData(ds_savertninfo_savelglydis);
  4216. ds_prcpetcinfo_saverareobst.copyData(ds_savertninfo_saverareobst);
  4217. ds_prcpetcinfo_saveserdiagcont.copyData(ds_savertninfo_saveserdiagcont);
  4218. ds_prcpetcinfo_saveresindenture.copyData(ds_savertninfo_saveresindenture);
  4219. } else {
  4220. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ){ //외래일때
  4221. orddd = ds_paminfo.getColumn(0, "orddd");
  4222. } else {
  4223. orddd = ds_paminfo.getColumn(0, "indd");
  4224. }
  4225. //처방에 대한 중증진료, 산정특례, 법정전염병 처리
  4226. ds_TRMMO00108.setColumn(0, "ioflag", prcpgenrflag); //ioflag
  4227. ds_TRMMO00108.setColumn(0, "dataflag", "1"); //dataflag 자료구분(1:처방화면, 2:진단화면)
  4228. ds_TRMMO00108.setColumn(0, "pid", ds_paminfo.getColumn(0, "pid")); //pid
  4229. ds_TRMMO00108.setColumn(0, "orddd", orddd ); //orddd
  4230. ds_TRMMO00108.setColumn(0, "cretno", ds_paminfo.getColumn(0, "cretno")); //cretno
  4231. ds_TRMMO00108.setColumn(0, "instcd", ds_paminfo.getColumn(0, "instcd")); //instcd
  4232. ds_TRMMO00108.setColumn(0, "prcpdd", ds_init.getColumn(0, "prcpdd")); //prcpdd
  4233. ds_TRMMO00108.setColumn(0, "deptcd", sysf_getUserInfo("dutplcecd")); //deptcd
  4234. ds_TRMMO00108.setColumn(0, "userid", sysf_getUserInfo ("userid")); //userid
  4235. ds_TRMMO00108.setColumn(0, "age", ds_paminfo.getColumn(0, "age" )); //나이
  4236. ds_TRMMO00108.setColumn(0, "dschprcpyn", ds_hidden.getColumn(0, "dschprcpyn")); //퇴원오더여부 by sonjy 2008-07-30
  4237. ds_TRMMO00108.setColumn(0, "orddeptcd", ds_paminfo.getColumn(0, "orddeptcd")); //진료과 (만성B형간염 - kimsj 100217)
  4238. //submit("TRMMO00108") => if( !submit("TRMMO00108") ) 로 변경 (2008.09.29 JJE)
  4239. var oParam = {};
  4240. oParam.id = "TRMMO00108";
  4241. oParam.service = "prcpmngtapp.PrcpMngt";
  4242. oParam.method = "reqGetPrcpEtcInfoTret";
  4243. oParam.inds = "req=ds_TRMMO00108";
  4244. oParam.outds = "ds_prcpetcinfo_saveestmspclcs=saveestmspclcs ds_prcpetcinfo_saveserdiagappfrm=saveserdiagappfrm ds_prcpetcinfo_savelglydis=savelglydis ds_prcpetcinfo_saverareobst=saverareobst ds_prcpetcinfo_saveserdiagcont=saveserdiagcont ds_prcpetcinfo_saveresindenture=saveresindenture";
  4245. oParam.async = false;
  4246. oParam.callback = "cf_TRMMO00108";
  4247. tranf_submit(oParam);
  4248. if(arErrorCode.pop("TRMMO00108") < 0) {
  4249. return false;
  4250. }
  4251. }
  4252. var frmflag = "Y"; // 재등록 체크를 위한 변수
  4253. //20090415 마정민수정: 유정란대리 요청
  4254. ds_init.setColumn(0, "chronicdiseaseyn", ds_prcpetcinfo_saveestmspclcs.getColumn(0, "chronicdiseaseyn"));
  4255. if ( ds_root.getColumn(0, "addprcp") != "Y") { // 추가처방에서는 신청서만 뜨지 않도록 ...
  4256. var sRgstKindCd = ""; // 산정특례 종류 00:중증, 01:희귀난치 일반, 02:중증화상, 03:경증, 06:희귀난치 결핵
  4257. var sReRegYn = ""; // 재등록 여부 (Y: 재등록, X: 희귀난치 자격조회 안됨, C: 희귀난치 재등록 기간에 진단명이 틀림, 그외 신규)
  4258. for (var i = 0; i < ds_prcpetcinfo_saveserdiagappfrm.rowcount; i++) {
  4259. frmflag = "Y";
  4260. sRgstKindCd = ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "rgstkindcd");
  4261. sReRegYn = ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "reregyn"); // 2014.09.27 희귀난치 재등록 관련 추가. 엄영만
  4262. if (sReRegYn == "Y" || sReRegYn == "C") {// 재등록 일경우 Y:재등록, C:희귀재등록시 진단이 틀린 경우 신규 등록으로 처리
  4263. var msgData = "";
  4264. if(sReRegYn == "Y") { // 재등록 메세지
  4265. msgData = sysf_messageBox(ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "reregmsg") + "\n\n아래 항목을 선택 하세요.\n\n 1. 재등록하시려면 예(Yes)\n 2. 재등록이 필요없는 환자분이라면 아니오(No)\n 3. 추후 재등록 하시려면 취소", "S");
  4266. } else { // 재등록 C:희귀재등록시 진단이 틀린 경우 신규 등록으로 처리
  4267. msgData = sysf_messageBox(ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "reregmsg" ) + "특례 등록상병(" + ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "regdiagcd" )+ ")과 현재 주진단이 동일하지 않습니다.\n\n아래 항목을 선택 하세요.\n\n 1. 현재 진단으로 신규등록하시려면 예(Yes)\n 2. 기간연장이 필요없는 환자분이라면 아니오(No)\n 3. 현재진단을 수정하여 재등록 하시려면 취소", "S");
  4268. ds_prcpetcinfo_saveserdiagappfrm.setColumn(i, "reregyn", "");
  4269. ds_prcpetcinfo_saveserdiagappfrm.setColumn(i, "regdiagcd", "" )
  4270. ds_prcpetcinfo_saveserdiagappfrm.setColumn(i, "regdiagseq", "");
  4271. }
  4272. var msgData = sysf_messageBox(ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "reregmsg"), "S007", "추후 재등록 하시려면|재등록이 필요없는 환자분이라면" );
  4273. if (msgData == "6" ) { // 재등록 한다.
  4274. if(sRgstKindCd == "00" || sRgstKindCd == "01" || sRgstKindCd == "06" ) { // 00:중증, 01:희귀난치 일반, 06:희귀난치 결핵
  4275. frmflag = "Y";
  4276. } else if (sRgstKindCd == "02") { // 중증화상
  4277. frmflag = "R";
  4278. frmf_setParameter("SMMMR02900_formcd", "1200012640");
  4279. frmf_modal("SMMMR02900", "SMMMR02900", null, null, null, null, null, null, null, null, null, null, "M");
  4280. frmf_clearParameter("SMMMR02900_formcd");
  4281. }
  4282. } else if ( msgData == "7" ) { // 재등록 하지 않겠습니다.
  4283. frmflag = "N";
  4284. } else { // 나중에 한다.
  4285. frmflag = "-";
  4286. }
  4287. ds_TXMMO00116.setColumn(0, "pid", ds_paminfo.getColumn(0, "pid"));
  4288. ds_TXMMO00116.setColumn(0, "instcd", ds_paminfo.getColumn(0, "instcd"));
  4289. ds_TXMMO00116.setColumn(0, "genrdd", "");
  4290. ds_TXMMO00116.setColumn(0, "genrno", "");
  4291. ds_TXMMO00116.setColumn(0, "histno", "");
  4292. ds_TXMMO00116.setColumn(0, "contflag", frmflag);
  4293. ds_TXMMO00116.setColumn(0, "serdiagtodd", "");
  4294. if(sRgstKindCd == "06" && utlf_getCurrentDate() < "20150101") {
  4295. ds_TXMMO00116.setColumn(0, "rgstkindcd", "01"); // 희귀난치(01) 에서 희귀난치 결핵(06)으로 재등록 하는경우
  4296. } else {
  4297. ds_TXMMO00116.setColumn(0, "rgstkindcd", sRgstKindCd);
  4298. }
  4299. var oParam = {};
  4300. oParam.id = "TXMMO00116";
  4301. oParam.service = "prcpmngtapp.PrcpMngt";
  4302. oParam.method = "reqSetSerDiagContflag";
  4303. oParam.inds = "req=ds_TXMMO00116";
  4304. oParam.callback = "cf_TXMMO00116";
  4305. tranf_submit(oParam);
  4306. if(arErrorCode.pop("TXMMO00116") < 0) {
  4307. return false;
  4308. }
  4309. } else if (sReRegYn == "X" ) {// 희귀난치 자격조회 안된 경우
  4310. sysf_messageBox(ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "reregmsg") + "특례 등록상병이 확인되지 않아 재등록 하실수 없습니다.\n원무창구에 자격조회 후 재등록 하시기 바랍니다." , "I999");
  4311. frmflag = "-"; // 나중에 한다.
  4312. }
  4313. // 신규 등록 또는 중증 재등록 체크 "예" 선택시 에만 중증 신청서 팝업 되어야 함.
  4314. if (frmflag == "Y" && sRgstKindCd == "00" ) { // 중증 신청서는
  4315. frmf_setParameter("SPMMO11500_pid", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "pid"));
  4316. frmf_setParameter("SPMMO11500_pathngnm", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "hngnm"));
  4317. frmf_setParameter("SPMMO11500_insukind", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "insukind"));
  4318. frmf_setParameter("SPMMO11500_anohosprgstflag", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "anohosprgstflag"));
  4319. frmf_setParameter("SPMMO11500_genrflagcd", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "genrflagcd"));
  4320. frmf_setParameter("SPMMO11500_cncrdiagcnfmdd", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "cncrdiagcnfmdd"));
  4321. frmf_setParameter("SPMMO11500_orddeptcd", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "orddeptcd"));
  4322. frmf_setParameter("SPMMO11500_orddrid", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "orddrid"));
  4323. frmf_setParameter("SPMMO11500_genrorddd", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "genrorddd"));
  4324. frmf_setParameter("SPMMO11500_genrcretno", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "genrcretno"));
  4325. frmf_setParameter("SPMMO11500_maindiagcd", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "maindiagcd"));
  4326. frmf_setParameter("SPMMO11500_insukindnm", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "insukindnm"));
  4327. frmf_setParameter("SPMMO11500_befsuppkind", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "befsuppkind")); //2013/12/02
  4328. frmf_setParameter("SPMMO11500_reregyn", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "reregyn" )); //2014/09/27 재등록 여부 추가
  4329. frmf_setParameter("SPMMO11500_mthdstr", "-");
  4330. frmf_setParameter("SPMMO11500_mthd5txt", "-");
  4331. frmf_setParameter("SPMMO11500_rgstbasic", "-");
  4332. frmf_clearParameter("SPMMO11500_save");
  4333. lf_prcpModal ( "SPMMO11500", 400, 100 );
  4334. if(frmf_getParameter("SPMMO11500_save")== "Y") {
  4335. if(!utlf_isNull(ds_prcpetcinfo_saveestmspclcs.getColumnInfo("estmexistyn"))) // 차상위 1종은 정보가 없어서 오류 발생하여 수정.
  4336. ds_prcpetcinfo_saveestmspclcs.setColumn(0, "estmexistyn", "Y"); // 기존 신청서가 없고 신규로 신청서 작성시 등록 정보 여부를 셋팅 함.(아래쪽에서 요율 팝업 창 뛰울때 체크함.) 2012.02.29 엄영만
  4337. } else {
  4338. sysf_messageBox ( "중증 신청서가 작성되지 않았습니다.", "I" );
  4339. ds_TXMMO00116.setColumn(0, "pid", ds_paminfo.getColumn(0, "pid"));
  4340. ds_TXMMO00116.setColumn(0, "instcd", ds_paminfo.getColumn(0, "instcd"));
  4341. ds_TXMMO00116.setColumn(0, "genrdd", "");
  4342. ds_TXMMO00116.setColumn(0, "genrno", "");
  4343. ds_TXMMO00116.setColumn(0, "histno", "");
  4344. ds_TXMMO00116.setColumn(0, "contflag", "-"); // 나중에 하는것으로 수정.
  4345. ds_TXMMO00116.setColumn(0, "serdiagtodd", "");
  4346. ds_TXMMO00116.setColumn(0, "rgstkindcd", sRgstKindCd);
  4347. var oParam = {};
  4348. oParam.id = "TXMMO00116";
  4349. oParam.service = "prcpmngtapp.PrcpMngt";
  4350. oParam.method = "reqSetSerDiagContflag";
  4351. oParam.inds = "req=ds_TXMMO00116";
  4352. oParam.callback = "cf_TXMMO00116";
  4353. tranf_submit(oParam);
  4354. if(arErrorCode.pop("TXMMO00116") < 0) {
  4355. return false;
  4356. }
  4357. }
  4358. } else if ( frmflag == "Y" && ( sRgstKindCd == "01" || sRgstKindCd == "02" || sRgstKindCd == "06" )) { // 희귀난치/중증화상
  4359. frmf_setParameter("SPMMO20000_pid", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "pid"));
  4360. frmf_setParameter("SPMMO20000_pathngnm", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "hngnm"));
  4361. frmf_setParameter("SPMMO20000_insukind", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "insukind"));
  4362. frmf_setParameter("SPMMO20000_anohosprgstflag", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "anohosprgstflag"));
  4363. frmf_setParameter("SPMMO20000_genrflagcd", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "genrflagcd"));
  4364. frmf_setParameter("SPMMO20000_cncrdiagcnfmdd", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "cncrdiagcnfmdd"));
  4365. frmf_setParameter("SPMMO20000_orddeptcd", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "orddeptcd"));
  4366. frmf_setParameter("SPMMO20000_orddrid", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "orddrid"));
  4367. frmf_setParameter("SPMMO20000_genrorddd", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "genrorddd"));
  4368. frmf_setParameter("SPMMO20000_genrcretno", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "genrcretno"));
  4369. frmf_setParameter("SPMMO20000_maindiagcd", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "maindiagcd"));
  4370. frmf_setParameter("SPMMO20000_insukindnm", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "insukindnm"));
  4371. frmf_setParameter("SPMMO20000_rgstkindcd", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "rgstkindcd")); // 20100706 중증화상인지 산정특례인지 구분을 위해서.
  4372. frmf_setParameter("SPMMO20000_burnicd10desc", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "burnicd10desc")); // 20100706 중증화상의 Icd10cd를 가져오기 위해서.
  4373. frmf_setParameter("SPMMO20000_icd10cd", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "icd10cd")); // 20100706 중증화상의 Icd10cd를 가져오기 위해서.
  4374. frmf_setParameter("SPMMO20000_befsuppkind", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "befsuppkind")); //2013/12/02
  4375. frmf_setParameter("SPMMO20000_reregyn", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "reregyn")); //2014.09.27 희귀난치 재등록 관련 추가. 엄영만
  4376. frmf_setParameter("SPMMO20000_regdiagcd", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "regdiagcd")); //2014.09.27 희귀난치 재등록 관련 추가. 엄영만
  4377. frmf_setParameter("SPMMO20000_regdiagseq", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "regdiagseq")); //2014.09.27 희귀난치 재등록 관련 추가. 엄영만
  4378. frmf_setParameter("SPMMO20000_mthdstr", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "mthdstr"));
  4379. frmf_setParameter("SPMMO20000_mthd5txt", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "mthd5txt"));
  4380. frmf_setParameter("SPMMO20000_rgstbasic", ds_prcpetcinfo_saveserdiagappfrm.getColumn(i, "rgstbasic"));
  4381. frmf_clearParameter("SPMMO20000_save");
  4382. lf_prcpModal ( "SPMMO20000", 400, 100 );
  4383. if(frmf_getParameter("SPMMO20000_save")== "Y") {
  4384. if(!utlf_isNull(ds_prcpetcinfo_saveestmspclcs.getColumnInfo("estmexistyn"))) // 차상위 1종은 정보가 없어서 오류 발생하여 수정.
  4385. ds_prcpetcinfo_saveestmspclcs.setColumn(0, "estmexistyn", "Y"); // 기존 신청서가 없고 신규로 신청서 작성시 등록 정보 여부를 셋팅 함.(아래쪽에서 요율 팝업 창 뛰울때 체크함.) 2012.02.29 엄영만
  4386. } else {
  4387. sysf_messageBox ( "희귀난치/중증화상 신청서가 작성되지 않았습니다.", "I" );
  4388. ds_TXMMO00116.setColumn(0, "pid", ds_paminfo.getColumn(0, "pid"));
  4389. ds_TXMMO00116.setColumn(0, "instcd", ds_paminfo.getColumn(0, "instcd"));
  4390. ds_TXMMO00116.setColumn(0, "genrdd", "");
  4391. ds_TXMMO00116.setColumn(0, "genrno", "");
  4392. ds_TXMMO00116.setColumn(0, "histno", "");
  4393. ds_TXMMO00116.setColumn(0, "contflag", "-"); // 나중에 하는것으로 수정.
  4394. ds_TXMMO00116.setColumn(0, "serdiagtodd", "");
  4395. if(sRgstKindCd == "06" && utlf_getCurrentDate() < "20150101") {
  4396. ds_TXMMO00116.setColumn(0, "rgstkindcd", "01"); // 희귀난치(01) 에서 희귀난치 결핵(06)으로 재등록 하는경우
  4397. } else {
  4398. ds_TXMMO00116.setColumn(0, "rgstkindcd", sRgstKindCd);
  4399. }
  4400. var oParam = {};
  4401. oParam.id = "TXMMO00116";
  4402. oParam.service = "prcpmngtapp.PrcpMngt";
  4403. oParam.method = "reqSetSerDiagContflag";
  4404. oParam.inds = "req=ds_TXMMO00116";
  4405. oParam.callback = "cf_TXMMO00116";
  4406. tranf_submit(oParam);
  4407. if(arErrorCode.pop("TXMMO00116") < 0) {
  4408. return false;
  4409. }
  4410. }
  4411. }
  4412. }
  4413. }
  4414. fEstmSpclFrm(); // 요율팝업
  4415. //희귀질환대상자 by sonjy 2008-07-28
  4416. if ( ds_prcpetcinfo_saverareobst.getColumn(0, "estmflag") == "Y" ) {
  4417. sysf_messageBox("희귀난치 대상자이나 관련 상병이 누락되어 있습니다. 희귀난치 진료이면 관련 상병을 주상병으로 입력해 주십시오.", "I");
  4418. ds_prcpetcinfo_saverareobst.setColumn(0, "estmyn", "H"); //희귀난치 대상 상병으로 진료를 본 것이 아니라고 할 경우
  4419. var oParam = {};
  4420. oParam.id = "TXMMO00105";
  4421. oParam.service = "prcpmngtapp.PrcpMngt";
  4422. oParam.method = "reqExeSavePrcpEtcInfo";
  4423. oParam.inds = "saveestmspclcs=ds_prcpetcinfo_saverareobst";
  4424. oParam.async = false;
  4425. oParam.callback = "cf_TXMMO00105";
  4426. tranf_submit(oParam);
  4427. if(arErrorCode.pop("TXMMO00105") < 0) {
  4428. return false;
  4429. }
  4430. } else if ( ds_prcpetcinfo_saverareobst.getColumn(0, "estmflag") == "U" ) { //희귀난치 대상이고 진단값이 있는데 otpt에 H값이 없으면 Update 처리 해준다.
  4431. ds_prcpetcinfo_saverareobst.setColumn(0, "estmyn", "U");
  4432. var oParam = {};
  4433. oParam.id = "TXMMO00105";
  4434. oParam.service = "prcpmngtapp.PrcpMngt";
  4435. oParam.method = "reqExeSavePrcpEtcInfo";
  4436. oParam.inds = "saveestmspclcs=ds_prcpetcinfo_saverareobst";
  4437. oParam.async = false;
  4438. oParam.callback = "cf_TXMMO00105";
  4439. tranf_submit(oParam);
  4440. if(arErrorCode.pop("TXMMO00105") < 0) {
  4441. return false;
  4442. }
  4443. }
  4444. // 레진상 완전틀린 관련 처리 2012.07.04 엄영만
  4445. if(ds_prcpetcinfo_saveresindenture.rowcount > 0){
  4446. fResinDentureFrm();
  4447. }
  4448. //법정전염병 신고서 기존 결핵신고자에게 결핵약 발행 시 결핵신고서 또 호출되는 문제 => 서버단에서 신고건까지 모두 return, client는 chkyn컬럼으로 체크 (20090710 JJE)
  4449. var savelglydisNodes = ds_prcpetcinfo_savelglydis.getCaseCount("chkyn != 'Y'"); // (20090710 JJE)
  4450. if( savelglydisNodes > 0 ) {
  4451. for ( var i = 0; i < ds_prcpetcinfo_savelglydis.rowcount; i++){
  4452. if(ds_prcpetcinfo_savelglydis.getColumn(i, "chkyn") != 'Y') {
  4453. var sReptNm = ds_prcpetcinfo_savelglydis.getColumn(i, "reptnm");
  4454. var sIcd10Cd = ds_prcpetcinfo_savelglydis.getColumn(i, "icd10cd");
  4455. if(!utlf_isNull(sReptNm)) {
  4456. frmf_setParameter("PrcpLglyDis", "PrcpLglyDis"); //20100113 pyj 처방에서 신고서 호출시 파라메터를 넘겨준다.
  4457. frmf_setParameter("PrcpLglyDisCd", sIcd10Cd);
  4458. var objArg = new Object();
  4459. objArg.arg_ds_main_diagcdlist = ds_main_diagcdlist;
  4460. frmf_modal(sReptNm, sReptNm, objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  4461. frmf_clearParameter("PrcpLglyDis");
  4462. frmf_clearParameter("PrcpLglyDisCd");
  4463. }
  4464. }
  4465. }
  4466. }
  4467. ds_prcpetcinfo_saveestmspclcs.clearData();
  4468. ds_prcpetcinfo_saveserdiagappfrm.clearData();
  4469. ds_prcpetcinfo_savelglydis.clearData();
  4470. ds_prcpetcinfo_saverareobst.clearData();
  4471. ds_prcpetcinfo_saveserdiagcont.clearData();
  4472. ds_prcpetcinfo_saveresindenture.clearData();
  4473. return true; //리턴 위치 바꿈, true 값 리턴 (2008.09.29 JJE)
  4474. }
  4475. function cf_TRMMO00108(sSvcId, nErrorCode, sErrorMsg) {
  4476. arErrorCode.push(sSvcId, nErrorCode);
  4477. }
  4478. function cf_TXMMO00116(sSvcId, nErrorCode, sErrorMsg) {
  4479. arErrorCode.push(sSvcId, nErrorCode);
  4480. }
  4481. /**@desc : 진료대상자 리스트에서 환자 호출시 저장할 데이터가 있을 시 저장한다.
  4482. * @return : true, false
  4483. * @authur : 마정민 2007. 4. 04
  4484. */
  4485. function fPrcpSavePatList() {
  4486. //20081014 간호확인 후에만 처방인증저장 가능. start
  4487. var usge = ds_root.getColumn(0, "usge");
  4488. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag" );
  4489. if( prcpgenrflag == "O" || prcpgenrflag == "S" ){
  4490. if( ds_paminfo.getColumn(0, "elbulbodstat") == "0" && usge == "prcp" && ds_root.getColumn(0, "addprcp") != "Y" ){
  4491. return false;
  4492. }
  4493. }
  4494. //20081014 간호확인 후에만 처방인증저장 가능. end
  4495. var sSaveDataFlag = fSaveExistCheck(null, "Y");
  4496. if ( sSaveDataFlag != -1 && sSaveDataFlag != 1 ){ //20081215 마정민수정: 변경요청서 512에 따라 진료대상자 리스트에서 환자 바꿀때 진단정보만 있으면 저장메시지 띄우지 않음
  4497. if(sysf_messageBox ( "", "Q002" ) == "6"){
  4498. fPrcpSave("","","","N"); // 진료대상자리스트에서 환자 선택할 때는 저장여부 메세지 한번만 띄우고 새로 선택한 환자가 상단으로 올라간다. 20100317 LYJ
  4499. return true;
  4500. } else {
  4501. return false;
  4502. }
  4503. }
  4504. }
  4505. /**@desc : 용량, 수량, 횟수의 수정전 값을 instance에 넣어둔다.
  4506. * @param : flag : 용량, 수량, 횟수 변경 구분
  4507. : curRow : 수정할 현재 row
  4508. * @return : void
  4509. * @authur : 마정민 2007. 4. 30
  4510. */
  4511. function bfDrugCalc ( flag, curRow ) {
  4512. ds_drugcalc.setColumn(0, flag, ds_main_prcplist.getColumn(curRow, flag));
  4513. }
  4514. /**@desc : 용량, 수량, 횟수를 수정했을 때 값계산
  4515. * @param : flag : 용량, 수량, 횟수 변경 구분
  4516. : curRow : 수정할 현재 row
  4517. * @return : void
  4518. * @authur : 마정민 2007. 4. 30
  4519. */
  4520. function DrugCalc ( flag, curRow ) {
  4521. var PrcpNm = "";
  4522. var PrcpVol = ds_main_prcplist.getColumn(curRow, "prcpvol" );
  4523. if ( utlf_isNull(PrcpVol) || PrcpVol == 0 ) {
  4524. PrcpVol = "1";
  4525. if ( flag == "prcpvol") {
  4526. PrcpNm = ds_main_prcplist.getColumn(curRow, "prcpnm" );
  4527. sysf_messageBox ( PrcpNm + " 처방의 1일용량값이 없거나 0입니다.\n1일용량을 1로 초기화 합니다.", "I999" );
  4528. ds_main_prcplist.setColumn(curRow, "prcpvol", PrcpVol ); //1일
  4529. }
  4530. }
  4531. var PrcpQty = ds_main_prcplist.getColumn(curRow, "prcpqty" );
  4532. if ( utlf_isNull(PrcpQty) || PrcpQty == 0 ){
  4533. PrcpQty = "1";
  4534. if ( flag == "prcpqty") {
  4535. PrcpNm = ds_main_prcplist.getColumn(curRow, "prcpnm" );
  4536. sysf_messageBox ( PrcpNm + " 처방의 1일수량값이 없거나 0입니다.\n1일수량을 1로 초기화 합니다.", "I999" );
  4537. ds_main_prcplist.setColumn(curRow, "prcpqty", PrcpQty );
  4538. }
  4539. }
  4540. var PrcpTims = ds_main_prcplist.getColumn(curRow, "prcptims" );
  4541. if ( utlf_isNull(PrcpTims) || PrcpTims == 0 ) {
  4542. PrcpTims = "1";
  4543. if ( flag == "prcptims") {
  4544. PrcpNm = ds_main_prcplist.getColumn(curRow, "prcpnm" );
  4545. sysf_messageBox ( PrcpNm + " 처방의 횟수값이 없거나 0입니다.\n횟수을 1로 초기화 합니다.", "I999" );
  4546. ds_main_prcplist.setColumn(curRow, "prcptims", PrcpTims);
  4547. }
  4548. }
  4549. var drprcpetc7 = ds_main_prcplist.getColumn(curRow, "drprcpetc7" );
  4550. if ( utlf_isNull(drprcpetc7) || drprcpetc7 == 0 || drprcpetc7 == "-") {
  4551. drprcpetc7 = "1";
  4552. if ( flag == "drprcpetc7") {
  4553. PrcpNm = ds_main_prcplist.getColumn(curRow, "prcpnm" );
  4554. sysf_messageBox ( PrcpNm + " 처방의 1회용량값이 없거나 0입니다.\n1회용량을 1로 초기화 합니다.", "I999" );
  4555. ds_main_prcplist.setColumn(curRow, "drprcpetc7", drprcpetc7 ); //1회
  4556. }
  4557. }
  4558. var drprcpetc8 = ds_main_prcplist.getColumn(curRow, "drprcpetc8" );
  4559. if ( utlf_isNull(drprcpetc8) || drprcpetc8 == 0 || drprcpetc8 == "-") {
  4560. drprcpetc8 = "1";
  4561. if ( flag == "drprcpetc8") {
  4562. PrcpNm = ds_main_prcplist.getColumn(curRow, "prcpnm" );
  4563. sysf_messageBox ( PrcpNm + " 처방의 1회수량값이 없거나 0입니다.\n1회수량을 1로 초기화 합니다.", "I999" );
  4564. ds_main_prcplist.setColumn(curRow, "drprcpetc8", drprcpetc8 ); //1회
  4565. }
  4566. }
  4567. var bfPrcpVol = ds_drugcalc.getColumn(0, "prcpvol" );
  4568. if ( utlf_isNull(bfPrcpVol) || bfPrcpVol == 0 ) {
  4569. bfPrcpVol = "1";
  4570. }
  4571. var bfPrcpQty = ds_drugcalc.getColumn(0, "prcpqty" );
  4572. if ( utlf_isNull(bfPrcpQty) || bfPrcpQty == 0 ) {
  4573. bfPrcpQty = "1";
  4574. }
  4575. var bfprcpTims = ds_drugcalc.getColumn(0, "prcptims" );
  4576. if ( utlf_isNull(bfprcpTims) || bfprcpTims == 0 ) {
  4577. bfprcpTims = "1";
  4578. }
  4579. var bfdrprcpetc7 = ds_drugcalc.getColumn(0, "drprcpetc7" );
  4580. if ( utlf_isNull(bfdrprcpetc7) || bfdrprcpetc7 == 0 ) {
  4581. bfdrprcpetc7 = "1";
  4582. }
  4583. var bfdrprcpetc8 = ds_drugcalc.getColumn(0, "drprcpetc8" );
  4584. if ( utlf_isNull(bfdrprcpetc8) || bfdrprcpetc8 == 0 ) {
  4585. bfdrprcpetc8 = "1";
  4586. }
  4587. var calcPrcpVol = 0;
  4588. var calcPrcpQty = 0;
  4589. var calcPrcpTimeVol = 0;
  4590. var calcPrcpTimeQty = 0;
  4591. //20090820 마정민 수정. 약인 경우는 최초의 용량 수량 비율로 계산하는 것으로 수정
  4592. var baseQty = lf_getArrayData ( ds_main_prcplist.getColumn(curRow, "drugmastspec" ) + "^", 0, 31 , "^", "|" );
  4593. var baseVol = lf_getArrayData ( ds_main_prcplist.getColumn(curRow, "drugmastspec" ) + "^", 0, 32 , "^", "|" );
  4594. var drugcntsvol = lf_getArrayData ( ds_main_prcplist.getColumn(curRow, "drugmastspec" ) + "^", 0, 1 , "^", "|" );
  4595. var drugstndvol = lf_getArrayData ( ds_main_prcplist.getColumn(curRow, "drugmastspec" ) + "^", 0, 3 , "^", "|" );
  4596. var drugpackvol = lf_getArrayData ( ds_main_prcplist.getColumn(curRow, "drugmastspec" ) + "^", 0, 5 , "^", "|" );
  4597. var drugbasevol = lf_getArrayData ( ds_main_prcplist.getColumn(curRow, "drugmastspec" ) + "^", 0, 7 , "^", "|" );
  4598. var baseTimeVol = drugcntsvol * drugbasevol / drugpackvol;
  4599. var baseTimeQty = drugbasevol;
  4600. //alert( "baseTimeQty=" + drugbasevol + ", baseVol=" + baseVol + ", baseQty="+ baseQty );
  4601. var calcmthdcd = lf_getArrayData ( ds_main_prcplist.getColumn(curRow, "drugmastspec" ) , 0, 26, "^", "|" );
  4602. var colHidnValue = lf_grdBaseColHidn("D");
  4603. if (ds_main_prcplist.getColumn(curRow, "prcpclscd" ).substring ( 0, 1 ) == "A" && !utlf_isNull(baseQty) && !utlf_isNull(baseVol)) {
  4604. if ( flag == "prcpvol" && bfPrcpVol != PrcpVol ) { // 용량을 수정했을 때: 수량 자동계산
  4605. calcPrcpQty = parseFloat(PrcpVol) / parseFloat(baseVol) * parseFloat(baseQty)*1000;
  4606. calcPrcpQty = Math.round(calcPrcpQty)/1000;
  4607. calcPrcpTimeQty = parseFloat(PrcpVol) / parseFloat(baseVol) * parseFloat(baseTimeQty)*1000;
  4608. calcPrcpTimeQty = Math.round(calcPrcpTimeQty)/1000;
  4609. calcPrcpTimeVol = parseFloat(PrcpVol) / parseFloat(baseVol) * parseFloat(baseTimeVol)*1000;
  4610. calcPrcpTimeVol = Math.round(calcPrcpTimeVol)/1000;
  4611. /*alert( "calcmthdcd=" + calcmthdcd );
  4612. if(calcmthdcd == "1"){
  4613. calcPrcpTimeQty = calcPrcpTimeQty * PrcpTims;
  4614. calcPrcpTimeVol = calcPrcpTimeVol * PrcpTims;
  4615. }*/
  4616. //start: 요청번호 9851, 인슐린주사제 변경 alert (2010.01.28 JJE)
  4617. var cnclInptTxt = ds_main_prcplist.getColumn(curRow, "prcpcd");
  4618. var prcpcdEndTxt = cnclInptTxt.substring(cnclInptTxt.length-1, cnclInptTxt.length);
  4619. if(ds_main_prcplist.getColumn(curRow, "tempcol2") == "05|04|09" && (prcpcdEndTxt == "J" || prcpcdEndTxt == "P") && calcPrcpQty < 1){
  4620. sysf_messageBox(cnclInptTxt + "\n\n소량 처방을 원하시는 경우에는\nUNIT 단위 코드(원 처방의 끝자리 J나 P를 뺀 코드)로 변경 처방하여 주시기 바랍니다.", "I");
  4621. //model.setValue ( prcpNode + "[" + curRow + "]/prcpvol", bfPrcpVol );
  4622. //return;
  4623. } //end
  4624. ds_main_prcplist.setColumn(curRow, "prcpqty", calcPrcpQty);
  4625. ds_main_prcplist.setColumn(curRow, "drprcpetc7", calcPrcpTimeVol);
  4626. ds_main_prcplist.setColumn(curRow, "drprcpetc8", calcPrcpTimeQty);
  4627. } else if ( flag == "prcpqty" && bfPrcpQty != PrcpQty ) { // 수량을 수정했을 때: 용량 자동계산
  4628. var prcpclscd = ds_main_prcplist.getColumn(curRow, "prcpclscd" );
  4629. calcPrcpVol = parseFloat(PrcpQty) / parseFloat(baseQty) * parseFloat(baseVol)*1000;
  4630. calcPrcpVol = Math.round(calcPrcpVol)/1000;
  4631. calcPrcpTimeQty = parseFloat(PrcpQty) / parseFloat(baseQty) * parseFloat(baseTimeQty)*1000;
  4632. calcPrcpTimeQty = Math.round(calcPrcpTimeQty)/1000;
  4633. calcPrcpTimeVol = parseFloat(PrcpQty) / parseFloat(baseQty) * parseFloat(baseTimeVol)*1000;
  4634. calcPrcpTimeVol = Math.round(calcPrcpTimeVol)/1000;
  4635. /*alert( "calcmthdcd=" + calcmthdcd );
  4636. if(calcmthdcd == "1"){
  4637. calcPrcpTimeQty = calcPrcpTimeQty * PrcpTims;
  4638. calcPrcpTimeVol = calcPrcpTimeVol * PrcpTims;
  4639. }*/
  4640. ds_main_prcplist.setColumn(curRow, "prcpvol", calcPrcpVol ); //1일
  4641. ds_main_prcplist.setColumn(curRow, "drprcpetc7", calcPrcpTimeVol ); //1회
  4642. ds_main_prcplist.setColumn(curRow, "drprcpetc8", calcPrcpTimeQty ); //1회
  4643. if ( prcpclscd == "M2" ) {
  4644. //20090330 마정민수정. 귀가유치용 물품처방은 의사처방 수량을 수정하면 귀가유치용물품수량컬럼에 같이 반영한다.
  4645. if (!isNull(ds_main_prcplist.getColumn(curRow, "drprcpetc4")) && ds_main_prcplist.getColumn(curRow, "drprcpetc4")!= "-" && ds_main_prcplist.getColumn(curRow, "drprcpetc4" )>0){
  4646. ds_main_prcplist.setColumn(curRow, "drprcpetc4", PrcpQty );
  4647. }
  4648. }
  4649. } else if ( flag == "drprcpetc7" && bfdrprcpetc7 != drprcpetc7 ) { // 용량을 수정했을 때: 수량 자동계산
  4650. //calcPrcpQty = parseFloat(drprcpetc7) / parseFloat(baseTimeVol) * parseFloat(baseQty)*1000;
  4651. //calcPrcpQty = Math.round(calcPrcpQty)/1000;
  4652. calcPrcpTimeQty = parseFloat(drprcpetc7) / parseFloat(baseTimeVol) * parseFloat(baseTimeQty)*1000;
  4653. calcPrcpTimeQty = Math.round(calcPrcpTimeQty)/1000;
  4654. //calcPrcpVol = parseFloat(drprcpetc7) / parseFloat(baseTimeVol) * parseFloat(baseVol)*1000;
  4655. //calcPrcpVol = Math.round(calcPrcpVol)/1000;
  4656. //계산구분에 따라 횟수를 곱해주는 처리를 함 (경북대 2010.01.02 전지은)
  4657. if(calcmthdcd == "1" && (colHidnValue == "C" || colHidnValue == "G" || colHidnValue == "H") ){
  4658. calcPrcpQty = calcPrcpTimeQty * PrcpTims;
  4659. calcPrcpVol = drprcpetc7 * PrcpTims;
  4660. } else {
  4661. calcPrcpQty = calcPrcpTimeQty;
  4662. calcPrcpVol = drprcpetc7;
  4663. }
  4664. //start: 요청번호 9851, 인슐린주사제 변경 alert (2010.01.28 JJE)
  4665. var cnclInptTxt = ds_main_prcplist.getColumn(curRow, "prcpcd");
  4666. var prcpcdEndTxt = cnclInptTxt.substring(cnclInptTxt.length-1, cnclInptTxt.length);
  4667. if(ds_main_prcplist.getColumn(curRow, "tempcol2") == "05|04|09" && (prcpcdEndTxt == "J" || prcpcdEndTxt == "P") && calcPrcpQty < 1){
  4668. sysf_messageBox(cnclInptTxt + "\n\n소량 처방을 원하시는 경우에는\nUNIT 단위 코드(원 처방의 끝자리 J나 P를 뺀 코드)로 변경 처방하여 주시기 바랍니다.", "I");
  4669. //model.setValue ( prcpNode + "[" + curRow + "]/prcpvol", bfPrcpVol );
  4670. //return;
  4671. } //end
  4672. ds_main_prcplist.setColumn(curRow, "prcpqty", calcPrcpQty ); //1일
  4673. ds_main_prcplist.setColumn(curRow, "prcpvol", calcPrcpVol ); //1일
  4674. ds_main_prcplist.setColumn(curRow, "drprcpetc8", calcPrcpTimeQty ); //1회
  4675. } else if ( flag == "drprcpetc8" && bfdrprcpetc8 != drprcpetc8 ) { // 수량을 수정했을 때: 용량 자동계산
  4676. calcPrcpVol = parseFloat(drprcpetc8) / parseFloat(baseTimeQty) * parseFloat(baseVol)*1000;
  4677. calcPrcpVol = Math.round(calcPrcpVol)/1000;
  4678. calcPrcpTimeVol = parseFloat(drprcpetc8) / parseFloat(baseTimeQty) * parseFloat(baseTimeVol)*1000;
  4679. calcPrcpTimeVol = Math.round(calcPrcpTimeVol)/1000;
  4680. calcPrcpQty = parseFloat(drprcpetc8) / parseFloat(baseTimeQty) * parseFloat(baseQty)*1000;
  4681. calcPrcpQty = Math.round(calcPrcpQty)/1000;
  4682. //계산구분에 따라 횟수를 곱해주는 처리를 함 (경북대 2010.01.02 전지은)
  4683. if(calcmthdcd == "1" && (colHidnValue == "C" || colHidnValue == "G" || colHidnValue == "H") ){
  4684. calcPrcpQty = drprcpetc8 * PrcpTims;
  4685. calcPrcpVol = calcPrcpTimeVol * PrcpTims;
  4686. } else {
  4687. calcPrcpQty = drprcpetc8;
  4688. calcPrcpVol = calcPrcpTimeVol;
  4689. }
  4690. ds_main_prcplist.setColumn(curRow, "prcpvol", calcPrcpVol );
  4691. ds_main_prcplist.setColumn(curRow, "prcpqty", calcPrcpQty );
  4692. ds_main_prcplist.setColumn(curRow, "drprcpetc7", calcPrcpTimeVol );
  4693. var prcpclscd = ds_main_prcplist.getColumn(curRow, "prcpclscd" );
  4694. if ( prcpclscd == "M2" ) {
  4695. //20090330 마정민수정. 귀가유치용 물품처방은 의사처방 수량을 수정하면 귀가유치용물품수량컬럼에 같이 반영한다.
  4696. if (!utlf_isNull(ds_main_prcplist.getColumn(curRow, "drprcpetc4")) && ds_main_prcplist.getColumn(curRow, "drprcpetc4")!= "-" && ds_main_prcplist.getColumn(curRow, "drprcpetc4" )>0){
  4697. ds_main_prcplist.setColumn(curRow, "drprcpetc4", PrcpQty );
  4698. }
  4699. }
  4700. } else if (flag =="prcptims"){ // 횟수가 변경될 경우 일회용량에 횟수를 곱해서 일일 총용량과 수량을 계산해서 넣어준다.
  4701. //계산구분에 따라 횟수를 곱해주는 처리를 함 (경북대 2010.01.02 전지은)
  4702. if(calcmthdcd == "1" && (colHidnValue == "C" || colHidnValue == "G" || colHidnValue == "H") ){
  4703. ds_main_prcplist.setColumn(curRow, "prcpvol" , drprcpetc7 * PrcpTims);
  4704. ds_main_prcplist.setColumn(curRow, "prcpqty" , drprcpetc8 * PrcpTims);
  4705. }
  4706. }
  4707. } else {
  4708. if ( flag == "prcpvol" ) { // 용량을 수정했을 때: 수량 자동계산
  4709. calcPrcpQty = eval(PrcpVol) / eval(bfPrcpVol) * eval(PrcpQty)*1000;
  4710. calcPrcpQty = Math.round(calcPrcpQty)/1000;
  4711. calcPrcpTimeVol = eval(PrcpVol) / eval(bfPrcpVol) * eval(drprcpetc7)*1000;
  4712. calcPrcpTimeVol = Math.round(calcPrcpTimeVol)/1000;
  4713. calcPrcpTimeQty = eval(PrcpVol) / eval(bfPrcpVol) * eval(drprcpetc8)*1000;
  4714. calcPrcpTimeQty = Math.round(calcPrcpTimeQty)/1000;
  4715. /*alert( "calcmthdcd=" + calcmthdcd );
  4716. if(calcmthdcd == "1"){
  4717. calcPrcpTimeQty = calcPrcpTimeQty * PrcpTims;
  4718. calcPrcpTimeVol = calcPrcpTimeVol * PrcpTims;
  4719. }*/
  4720. //start: 요청번호 9851, 인슐린주사제 변경 alert (2010.01.28 JJE)
  4721. var cnclInptTxt = ds_main_prcplist.getColumn(curRow, "prcpcd");
  4722. var prcpcdEndTxt = cnclInptTxt.substring(cnclInptTxt.length-1, cnclInptTxt.length);
  4723. if(ds_main_prcplist.getColumn(curRow, "tempcol2") == "05|04|09" && (prcpcdEndTxt == "J" || prcpcdEndTxt == "P") && calcPrcpQty < 1){
  4724. sysf_messageBox(cnclInptTxt + "\n\n소량 처방을 원하시는 경우에는\nUNIT 단위 코드(원 처방의 끝자리 J나 P를 뺀 코드)로 변경 처방하여 주시기 바랍니다.", "I");
  4725. //model.setValue ( prcpNode + "[" + curRow + "]/prcpvol", bfPrcpVol );
  4726. //return;
  4727. } //end
  4728. ds_main_prcplist.setColumn(curRow, "prcpqty", calcPrcpQty);
  4729. ds_main_prcplist.setColumn(curRow, "drprcpetc7", calcPrcpTimeVol);
  4730. ds_main_prcplist.setColumn(curRow, "drprcpetc8", calcPrcpTimeQty);
  4731. } else if ( flag == "prcpqty" ) { // 수량을 수정했을 때: 용량 자동계산
  4732. var prcpclscd = ds_main_prcplist.getColumn(curRow, "prcpclscd" );
  4733. calcPrcpVol = eval(PrcpQty) / eval(bfPrcpQty) * eval(PrcpVol)*1000;
  4734. calcPrcpVol = Math.round(calcPrcpVol)/1000;
  4735. calcPrcpTimeVol = eval(PrcpQty) / eval(bfPrcpQty) * eval(drprcpetc7)*1000;
  4736. calcPrcpTimeVol = Math.round(calcPrcpTimeVol)/1000;
  4737. calcPrcpTimeQty = eval(PrcpQty) / eval(bfPrcpQty) * eval(drprcpetc8)*1000;
  4738. calcPrcpTimeQty = Math.round(calcPrcpTimeQty)/1000;
  4739. /*alert( "calcmthdcd=" + calcmthdcd );
  4740. if(calcmthdcd == "1"){
  4741. calcPrcpTimeQty = calcPrcpTimeQty * PrcpTims;
  4742. calcPrcpTimeVol = calcPrcpTimeVol * PrcpTims;
  4743. }*/
  4744. ds_main_prcplist.setColumn(curRow, "prcpvol", calcPrcpVol );
  4745. ds_main_prcplist.setColumn(curRow, "drprcpetc7", calcPrcpTimeVol );
  4746. ds_main_prcplist.setColumn(curRow, "drprcpetc8", calcPrcpTimeQty );
  4747. if ( prcpclscd == "M2" ) {
  4748. //20090330 마정민수정. 귀가유치용 물품처방은 의사처방 수량을 수정하면 귀가유치용물품수량컬럼에 같이 반영한다.
  4749. if (!utlf_isNull(ds_main_prcplist.getColumn(curRow, "drprcpetc4")) && ds_main_prcplist.getColumn(curRow, "drprcpetc4")!= "-" && ds_main_prcplist.getColumn(curRow, "drprcpetc4" )>0){
  4750. ds_main_prcplist.setColumn(curRow, "drprcpetc4", PrcpQty );
  4751. }
  4752. }
  4753. } else if ( flag == "drprcpetc7" && bfdrprcpetc7 != drprcpetc7 ) { // 용량을 수정했을 때: 수량 자동계산
  4754. calcPrcpTimeQty = eval(drprcpetc7) / eval(bfdrprcpetc7) * eval(drprcpetc8)*1000;
  4755. calcPrcpTimeQty = Math.round(calcPrcpTimeQty)/1000;
  4756. calcPrcpVol = eval(drprcpetc7) / eval(bfdrprcpetc7) * eval(PrcpVol)*1000;
  4757. calcPrcpVol = Math.round(calcPrcpVol)/1000;
  4758. calcPrcpQty = eval(drprcpetc7) / eval(bfdrprcpetc7) * eval(PrcpQty)*1000;
  4759. calcPrcpQty = Math.round(calcPrcpQty)/1000;
  4760. //계산구분에 따라 횟수를 곱해주는 처리를 함 (경북대 2010.01.02 전지은)
  4761. if(calcmthdcd == "1" && (colHidnValue == "C" || colHidnValue == "G" || colHidnValue == "H") ){
  4762. calcPrcpQty = calcPrcpTimeQty * PrcpTims;
  4763. calcPrcpVol = drprcpetc7 * PrcpTims;
  4764. } else {
  4765. calcPrcpQty = calcPrcpTimeQty;
  4766. calcPrcpVol = drprcpetc7;
  4767. }
  4768. //start: 요청번호 9851, 인슐린주사제 변경 alert (2010.01.28 JJE)
  4769. var cnclInptTxt = ds_main_prcplist.getColumn(curRow, "prcpcd");
  4770. var prcpcdEndTxt = cnclInptTxt.substring(cnclInptTxt.length-1, cnclInptTxt.length);
  4771. if(ds_main_prcplist.getColumn(curRow, "tempcol2") == "05|04|09" && (prcpcdEndTxt == "J" || prcpcdEndTxt == "P") && calcPrcpQty < 1){
  4772. sysf_messageBox(cnclInptTxt + "\n\n소량 처방을 원하시는 경우에는\nUNIT 단위 코드(원 처방의 끝자리 J나 P를 뺀 코드)로 변경 처방하여 주시기 바랍니다.", "I");
  4773. //model.setValue ( prcpNode + "[" + curRow + "]/prcpvol", bfPrcpVol );
  4774. //return;
  4775. } //end
  4776. ds_main_prcplist.setColumn(curRow, "prcpqty", calcPrcpQty );
  4777. ds_main_prcplist.setColumn(curRow, "prcpvol", calcPrcpVol );
  4778. ds_main_prcplist.setColumn(curRow, "drprcpetc8", calcPrcpTimeQty );
  4779. } else if ( flag == "drprcpetc8" && bfdrprcpetc8 != drprcpetc8 ) { // 수량을 수정했을 때: 용량 자동계산
  4780. calcPrcpTimeVol = eval(drprcpetc8) / eval(bfdrprcpetc8) * eval(drprcpetc7)*1000;
  4781. calcPrcpTimeVol = Math.round(calcPrcpTimeVol)/1000;
  4782. calcPrcpVol = eval(drprcpetc8) / eval(bfdrprcpetc8) * eval(PrcpVol)*1000;
  4783. calcPrcpVol = Math.round(calcPrcpVol)/1000;
  4784. calcPrcpQty = eval(drprcpetc8) / eval(bfdrprcpetc8) * eval(PrcpQty)*1000;
  4785. calcPrcpQty = Math.round(calcPrcpQty)/1000;
  4786. //계산구분에 따라 횟수를 곱해주는 처리를 함 (경북대 2010.01.02 전지은)
  4787. if(calcmthdcd == "1" && (colHidnValue == "C" || colHidnValue == "G" || colHidnValue == "H") ){
  4788. calcPrcpQty = drprcpetc8 * PrcpTims;
  4789. calcPrcpVol = calcPrcpTimeVol * PrcpTims;
  4790. } else {
  4791. calcPrcpQty = drprcpetc8;
  4792. calcPrcpVol = calcPrcpTimeVol;
  4793. }
  4794. ds_main_prcplist.setColumn(curRow, "prcpvol", calcPrcpVol );
  4795. ds_main_prcplist.setColumn(curRow, "prcpqty", calcPrcpQty );
  4796. ds_main_prcplist.setColumn(curRow, "drprcpetc7", calcPrcpTimeVol );
  4797. var prcpclscd = ds_main_prcplist.getColumn(curRow, "prcpclscd" );
  4798. if ( prcpclscd == "M2" ) {
  4799. //20090330 마정민수정. 귀가유치용 물품처방은 의사처방 수량을 수정하면 귀가유치용물품수량컬럼에 같이 반영한다.
  4800. if (!isNull(ds_main_prcplist.getColumn(curRow, "drprcpetc4")) && ds_main_prcplist.getColumn(curRow, "drprcpetc4")!= "-" && ds_main_prcplist.getColumn(curRow, "drprcpetc4" )>0){
  4801. ds_main_prcplist.setColumn(curRow, "drprcpetc4", PrcpQty );
  4802. }
  4803. }
  4804. } else if ( flag =="prcptims"){
  4805. //계산구분에 따라 횟수를 곱해주는 처리를 함 (경북대 2010.01.02 전지은)
  4806. if(calcmthdcd == "1"){
  4807. var colHidnValue = lf_grdBaseColHidn("D");
  4808. if (colHidnValue == "C" || colHidnValue == "G" || colHidnValue == "H" ) { // 일회용량과 관련된내용일 경우
  4809. ds_main_prcplist.setColumn(curRow, "prcpvol" , drprcpetc7 * PrcpTims);
  4810. ds_main_prcplist.setColumn(curRow, "prcpqty" , drprcpetc8 * PrcpTims);
  4811. }
  4812. }
  4813. }
  4814. }
  4815. }
  4816. /**@desc : 용량, 수량, 횟수를 수정했을 때 값계산
  4817. * @param : flag : 용량, 수량, 횟수 변경 구분
  4818. : curRow : 수정할 현재 row
  4819. * @return : void
  4820. * @authur : 마정민 2007. 4. 30
  4821. */
  4822. function DrugCalc2 ( flag, curRow ) {
  4823. var PrcpNm = "";
  4824. var PrcpVol = ds_main_prcplist.getColumn(curRow, "prcpvol");
  4825. if ( utlf_isNull(PrcpVol) || PrcpVol == 0 ) {
  4826. PrcpVol = "1";
  4827. if ( flag == "prcpvol") {
  4828. PrcpNm = ds_main_prcplist.getColumn(curRow, "prcpnm");
  4829. sysf_messageBox ( PrcpNm + " 처방의 1일용량값이 없거나 0입니다.\n1일용량을 1로 초기화 합니다.", "I999" );
  4830. ds_main_prcplist.setColumn(curRow, "prcpvol", PrcpVol);
  4831. }
  4832. }
  4833. var PrcpQty = ds_main_prcplist.getColumn(curRow, "prcpqty");
  4834. if ( utlf_isNull(PrcpQty) || PrcpQty == 0 ){
  4835. PrcpQty = "1";
  4836. if ( flag == "prcpqty") {
  4837. PrcpNm = ds_main_prcplist.getColumn(curRow, "prcpnm");
  4838. sysf_messageBox ( PrcpNm + " 처방의 1일수량값이 없거나 0입니다.\n1일수량을 1로 초기화 합니다.", "I999" );
  4839. ds_main_prcplist.setColumn(curRow, "prcpqty", PrcpQty);
  4840. }
  4841. }
  4842. var PrcpTims = ds_main_prcplist.getColumn(curRow, "prcptims");
  4843. if ( utlf_isNull(PrcpTims) || PrcpTims == 0 ) {
  4844. PrcpTims = "1";
  4845. if ( flag == "prcptims") {
  4846. PrcpNm = ds_main_prcplist.getColumn(curRow, "prcpnm");
  4847. sysf_messageBox ( PrcpNm + " 처방의 횟수값이 없거나 0입니다.\n횟수을 1로 초기화 합니다.", "I999" );
  4848. ds_main_prcplist.setColumn(curRow, "prcptims", PrcpTims);
  4849. }
  4850. }
  4851. var drprcpetc7 = ds_main_prcplist.getColumn(curRow, "drprcpetc7");
  4852. if ( utlf_isNull(drprcpetc7) || drprcpetc7 == 0 || drprcpetc7 == "-") {
  4853. drprcpetc7 = "1";
  4854. if ( flag == "drprcpetc7") {
  4855. PrcpNm = ds_main_prcplist.getColumn(curRow, "prcpnm");
  4856. sysf_messageBox ( PrcpNm + " 처방의 1회용량값이 없거나 0입니다.\n1회용량을 1로 초기화 합니다.", "I999" );
  4857. ds_main_prcplist.setColumn(curRow, "drprcpetc7", drprcpetc7);
  4858. }
  4859. }
  4860. var drprcpetc8 = ds_main_prcplist.getColumn(curRow, "drprcpetc8");
  4861. if ( utlf_isNull(drprcpetc8) || drprcpetc8 == 0 || drprcpetc8 == "-") {
  4862. drprcpetc8 = "1";
  4863. if ( flag == "drprcpetc8") {
  4864. PrcpNm = ds_main_prcplist.getColumn(curRow, "prcpnm");
  4865. sysf_messageBox ( PrcpNm + " 처방의 1회수량값이 없거나 0입니다.\n1회수량을 1로 초기화 합니다.", "I999" );
  4866. ds_main_prcplist.setColumn(curRow, "drprcpetc8", drprcpetc8);
  4867. }
  4868. }
  4869. var bfPrcpVol = ds_drugcalc.getColumn(0, "prcpvol");
  4870. if ( utlf_isNull(bfPrcpVol) || bfPrcpVol == 0 ) {
  4871. bfPrcpVol = "1";
  4872. }
  4873. var bfPrcpQty = ds_drugcalc.getColumn(0, "prcpqty");
  4874. if ( utlf_isNull(bfPrcpQty) || bfPrcpQty == 0 ) {
  4875. bfPrcpQty = "1";
  4876. }
  4877. var bfprcpTims = ds_drugcalc.getColumn(0, "prcptims");
  4878. if ( utlf_isNull(bfprcpTims) || bfprcpTims == 0 ) {
  4879. bfprcpTims = "1";
  4880. }
  4881. var bfdrprcpetc7 = ds_drugcalc.getColumn(0, "drprcpetc7");
  4882. if ( utlf_isNull(bfdrprcpetc7) || bfdrprcpetc7 == 0 ) {
  4883. bfdrprcpetc7 = "1";
  4884. }
  4885. var bfdrprcpetc8 = ds_drugcalc.getColumn(0, "drprcpetc8");
  4886. if ( utlf_isNull(bfdrprcpetc8) || bfdrprcpetc8 == 0 ) {
  4887. bfdrprcpetc8 = "1";
  4888. }
  4889. var calcPrcpVol = 0;
  4890. var calcPrcpQty = 0;
  4891. var calcPrcpTimeVol = 0;
  4892. var calcPrcpTimeQty = 0;
  4893. //20090820 마정민 수정. 약인 경우는 최초의 용량 수량 비율로 계산하는 것으로 수정
  4894. var drugmastspec = lf_getDsValue(ds_main_prcplist, curRow, "drugmastspec");
  4895. var baseQty = lf_getArrayData ( drugmastspec + "^", 0, 31 , "^", "|" );
  4896. var baseVol = lf_getArrayData ( drugmastspec + "^", 0, 32 , "^", "|" );
  4897. var drugcntsvol = lf_getArrayData ( drugmastspec + "^", 0, 1 , "^", "|" );
  4898. var drugstndvol = lf_getArrayData ( drugmastspec + "^", 0, 3 , "^", "|" );
  4899. var drugpackvol = lf_getArrayData ( drugmastspec + "^", 0, 5 , "^", "|" );
  4900. var drugbasevol = lf_getArrayData ( drugmastspec + "^", 0, 7 , "^", "|" );
  4901. var baseTimeVol = drugcntsvol * drugbasevol / drugpackvol;
  4902. var baseTimeQty = drugbasevol;
  4903. var calcmthdcd = lf_getArrayData ( drugmastspec, 0, 26, "^", "|" );
  4904. var colHidnValue = lf_grdBaseColHidn("D");
  4905. if (ds_main_prcplist.getColumn(curRow, "prcpclscd" ).substring ( 0, 1 ) == "A" && !utlf_isNull(baseQty) && !utlf_isNull(baseVol)) {
  4906. if ( flag == "prcpvol") { // 용량을 수정했을 때: 수량 자동계산
  4907. calcPrcpQty = parseFloat(PrcpVol) / parseFloat(baseVol) * parseFloat(baseQty)*1000;
  4908. calcPrcpQty = Math.round(calcPrcpQty)/1000;
  4909. calcPrcpTimeQty = parseFloat(PrcpVol) / parseFloat(baseVol) * parseFloat(baseTimeQty)*1000;
  4910. calcPrcpTimeQty = Math.round(calcPrcpTimeQty)/1000;
  4911. calcPrcpTimeVol = parseFloat(PrcpVol) / parseFloat(baseVol) * parseFloat(baseTimeVol)*1000;
  4912. calcPrcpTimeVol = Math.round(calcPrcpTimeVol)/1000;
  4913. /*alert( "calcmthdcd=" + calcmthdcd );
  4914. if(calcmthdcd == "1"){
  4915. calcPrcpTimeQty = calcPrcpTimeQty * PrcpTims;
  4916. calcPrcpTimeVol = calcPrcpTimeVol * PrcpTims;
  4917. }*/
  4918. //start: 요청번호 9851, 인슐린주사제 변경 alert (2010.01.28 JJE)
  4919. var cnclInptTxt = ds_main_prcplist.getColumn(curRow, "prcpcd");
  4920. var prcpcdEndTxt = cnclInptTxt.substring(cnclInptTxt.length-1, cnclInptTxt.length);
  4921. if(ds_main_prcplist.getColumn(curRow, "tempcol2") == "05|04|09" && (prcpcdEndTxt == "J" || prcpcdEndTxt == "P") && calcPrcpQty < 1){
  4922. sysf_messageBox(cnclInptTxt + "\n\n소량 처방을 원하시는 경우에는\nUNIT 단위 코드(원 처방의 끝자리 J나 P를 뺀 코드)로 변경 처방하여 주시기 바랍니다.", "I");
  4923. //model.setValue ( prcpNode + "[" + curRow + "]/prcpvol", bfPrcpVol );
  4924. //return;
  4925. } //end
  4926. ds_main_prcplist.setColumn(curRow, "prcpqty", calcPrcpQty );
  4927. ds_main_prcplist.setColumn(curRow, "drprcpetc7", calcPrcpTimeVol );
  4928. ds_main_prcplist.setColumn(curRow, "drprcpetc8", calcPrcpTimeQty );
  4929. } else if ( flag == "prcpqty") { // 수량을 수정했을 때: 용량 자동계산
  4930. var prcpclscd = ds_main_prcplist.getColumn(curRow, "prcpclscd" );
  4931. calcPrcpVol = parseFloat(PrcpQty) / parseFloat(baseQty) * parseFloat(baseVol)*1000;
  4932. calcPrcpVol = Math.round(calcPrcpVol)/1000;
  4933. calcPrcpTimeQty = parseFloat(PrcpQty) / parseFloat(baseQty) * parseFloat(baseTimeQty)*1000;
  4934. calcPrcpTimeQty = Math.round(calcPrcpTimeQty)/1000;
  4935. calcPrcpTimeVol = parseFloat(PrcpQty) / parseFloat(baseQty) * parseFloat(baseTimeVol)*1000;
  4936. calcPrcpTimeVol = Math.round(calcPrcpTimeVol)/1000;
  4937. /*alert( "calcmthdcd=" + calcmthdcd );
  4938. if(calcmthdcd == "1"){
  4939. calcPrcpTimeQty = calcPrcpTimeQty * PrcpTims;
  4940. calcPrcpTimeVol = calcPrcpTimeVol * PrcpTims;
  4941. }*/
  4942. ds_main_prcplist.setColumn(curRow, "prcpvol", calcPrcpVol );
  4943. ds_main_prcplist.setColumn(curRow, "drprcpetc7", calcPrcpTimeVol );
  4944. ds_main_prcplist.setColumn(curRow, "drprcpetc8", calcPrcpTimeQty );
  4945. if ( prcpclscd == "M2" ) {
  4946. //20090330 마정민수정. 귀가유치용 물품처방은 의사처방 수량을 수정하면 귀가유치용물품수량컬럼에 같이 반영한다.
  4947. if (!utlf_isNull(ds_main_prcplist.getColumn(curRow, "drprcpetc4")) && ds_main_prcplist.getColumn(curRow, "drprcpetc4") != "-" && ds_main_prcplist.getColumn(curRow, "drprcpetc4") > 0){
  4948. ds_main_prcplist.setColumn(curRow, "drprcpetc4", PrcpQty);
  4949. }
  4950. }
  4951. } else if ( flag == "drprcpetc7") { // 용량을 수정했을 때: 수량 자동계산
  4952. calcPrcpQty = parseFloat(drprcpetc7) / parseFloat(baseTimeVol) * parseFloat(baseQty)*1000;
  4953. calcPrcpQty = Math.round(calcPrcpQty)/1000;
  4954. calcPrcpTimeQty = parseFloat(drprcpetc7) / parseFloat(baseTimeVol) * parseFloat(baseTimeQty)*1000;
  4955. calcPrcpTimeQty = Math.round(calcPrcpTimeQty)/1000;
  4956. calcPrcpVol = parseFloat(drprcpetc7) / parseFloat(baseTimeVol) * parseFloat(baseVol)*1000;
  4957. calcPrcpVol = Math.round(calcPrcpVol)/1000;
  4958. //계산구분에 따라 횟수를 곱해주는 처리를 함 (경북대 2010.01.02 전지은)
  4959. if(calcmthdcd == "1"){
  4960. calcPrcpQty = calcPrcpQty * PrcpTims;
  4961. calcPrcpVol = calcPrcpVol * PrcpTims;
  4962. }
  4963. //start: 요청번호 9851, 인슐린주사제 변경 alert (2010.01.28 JJE)
  4964. var cnclInptTxt = ds_main_prcplist.getColumn(curRow, "prcpcd");
  4965. var prcpcdEndTxt = cnclInptTxt.substring(cnclInptTxt.length-1, cnclInptTxt.length);
  4966. if(ds_main_prcplist.getColumn(curRow, "tempcol2") == "05|04|09" && (prcpcdEndTxt == "J" || prcpcdEndTxt == "P") && calcPrcpQty < 1){
  4967. sysf_messageBox(cnclInptTxt + "\n\n소량 처방을 원하시는 경우에는\nUNIT 단위 코드(원 처방의 끝자리 J나 P를 뺀 코드)로 변경 처방하여 주시기 바랍니다.", "I");
  4968. //model.setValue ( prcpNode + "[" + curRow + "]/prcpvol", bfPrcpVol );
  4969. //return;
  4970. } //end
  4971. ds_main_prcplist.setColumn(curRow, "prcpqty", calcPrcpQty );
  4972. ds_main_prcplist.setColumn(curRow, "prcpvol", calcPrcpVol );
  4973. ds_main_prcplist.setColumn(curRow, "drprcpetc8", calcPrcpTimeQty );
  4974. } else if ( flag == "drprcpetc8" ) { // 수량을 수정했을 때: 용량 자동계산
  4975. calcPrcpVol = parseFloat(drprcpetc8) / parseFloat(baseTimeQty) * parseFloat(baseVol)*1000;
  4976. calcPrcpVol = Math.round(calcPrcpVol)/1000;
  4977. calcPrcpTimeVol = parseFloat(drprcpetc8) / parseFloat(baseTimeQty) * parseFloat(baseTimeVol)*1000;
  4978. calcPrcpTimeVol = Math.round(calcPrcpTimeVol)/1000;
  4979. calcPrcpQty = parseFloat(drprcpetc8) / parseFloat(baseTimeQty) * parseFloat(baseQty)*1000;
  4980. calcPrcpQty = Math.round(calcPrcpQty)/1000;
  4981. //계산구분에 따라 횟수를 곱해주는 처리를 함 (경북대 2010.01.02 전지은)
  4982. if(calcmthdcd == "1"){
  4983. calcPrcpQty = calcPrcpQty * PrcpTims;
  4984. calcPrcpVol = calcPrcpVol * PrcpTims;
  4985. }
  4986. ds_main_prcplist.setColumn(curRow, "prcpvol", calcPrcpVol );
  4987. ds_main_prcplist.setColumn(curRow, "prcpqty", calcPrcpQty );
  4988. ds_main_prcplist.setColumn(curRow, "drprcpetc7", calcPrcpTimeVol );
  4989. var prcpclscd = ds_main_prcplist.getColumn(curRow, "prcpclscd" );
  4990. if ( prcpclscd == "M2" ) {
  4991. //20090330 마정민수정. 귀가유치용 물품처방은 의사처방 수량을 수정하면 귀가유치용물품수량컬럼에 같이 반영한다.
  4992. if (!utlf_isNull(ds_main_prcplist.getColumn(curRow, "drprcpetc4")) && ds_main_prcplist.getColumn(curRow, "drprcpetc4") != "-" && ds_main_prcplist.getColumn(curRow, "drprcpetc4") > 0){
  4993. ds_main_prcplist.setColumn(curRow, "drprcpetc4", PrcpQty);
  4994. }
  4995. }
  4996. } else if (flag =="prcptims"){
  4997. var colHidnValue = lf_grdBaseColHidn("D");
  4998. if (colHidnValue == "C" || colHidnValue == "G" || colHidnValue == "H" ) { // 일회용량과 관련된내용일 경우
  4999. ds_main_prcplist.setColumn(curRow, "prcpvol" , drprcpetc7 * PrcpTims);
  5000. ds_main_prcplist.setColumn(curRow, "prcpqty" , drprcpetc8 * PrcpTims);
  5001. }
  5002. }
  5003. } else {
  5004. if ( flag == "prcpvol" ) { // 용량을 수정했을 때: 수량 자동계산
  5005. calcPrcpQty = eval(PrcpVol) / eval(bfPrcpVol) * eval(PrcpQty)*1000;
  5006. calcPrcpQty = Math.round(calcPrcpQty)/1000;
  5007. calcPrcpTimeVol = eval(PrcpVol) / eval(bfPrcpVol) * eval(drprcpetc7)*1000;
  5008. calcPrcpTimeVol = Math.round(calcPrcpTimeVol)/1000;
  5009. calcPrcpTimeQty = eval(PrcpVol) / eval(bfPrcpVol) * eval(drprcpetc8)*1000;
  5010. calcPrcpTimeQty = Math.round(calcPrcpTimeQty)/1000;
  5011. /*alert( "calcmthdcd=" + calcmthdcd );
  5012. if(calcmthdcd == "1"){
  5013. calcPrcpTimeQty = calcPrcpTimeQty * PrcpTims;
  5014. calcPrcpTimeVol = calcPrcpTimeVol * PrcpTims;
  5015. }*/
  5016. //start: 요청번호 9851, 인슐린주사제 변경 alert (2010.01.28 JJE)
  5017. var cnclInptTxt = ds_main_prcplist.getColumn(curRow, "prcpcd");
  5018. var prcpcdEndTxt = cnclInptTxt.substring(cnclInptTxt.length-1, cnclInptTxt.length);
  5019. if(ds_main_prcplist.getColumn(curRow, "tempcol2") == "05|04|09" && (prcpcdEndTxt == "J" || prcpcdEndTxt == "P") && calcPrcpQty < 1){
  5020. sysf_messageBox(cnclInptTxt + "\n\n소량 처방을 원하시는 경우에는\nUNIT 단위 코드(원 처방의 끝자리 J나 P를 뺀 코드)로 변경 처방하여 주시기 바랍니다.", "I");
  5021. //model.setValue ( prcpNode + "[" + curRow + "]/prcpvol", bfPrcpVol );
  5022. //return;
  5023. } //end
  5024. ds_main_prcplist.setColumn(curRow, "prcpqty", calcPrcpQty);
  5025. ds_main_prcplist.setColumn(curRow, "drprcpetc7", calcPrcpTimeVol);
  5026. ds_main_prcplist.setColumn(curRow, "drprcpetc8", calcPrcpTimeQty);
  5027. } else if ( flag == "prcpqty" ) { // 수량을 수정했을 때: 용량 자동계산
  5028. var prcpclscd = ds_main_prcplist.getColumn(curRow, "prcpclscd");
  5029. calcPrcpVol = eval(PrcpQty) / eval(bfPrcpQty) * eval(PrcpVol)*1000;
  5030. calcPrcpVol = Math.round(calcPrcpVol)/1000;
  5031. calcPrcpTimeVol = eval(PrcpQty) / eval(bfPrcpQty) * eval(drprcpetc7)*1000;
  5032. calcPrcpTimeVol = Math.round(calcPrcpTimeVol)/1000;
  5033. calcPrcpTimeQty = eval(PrcpQty) / eval(bfPrcpQty) * eval(drprcpetc8)*1000;
  5034. calcPrcpTimeQty = Math.round(calcPrcpTimeQty)/1000;
  5035. /*alert( "calcmthdcd=" + calcmthdcd );
  5036. if(calcmthdcd == "1"){
  5037. calcPrcpTimeQty = calcPrcpTimeQty * PrcpTims;
  5038. calcPrcpTimeVol = calcPrcpTimeVol * PrcpTims;
  5039. }*/
  5040. ds_main_prcplist.setColumn(curRow, "prcpvol", calcPrcpVol);
  5041. ds_main_prcplist.setColumn(curRow, "drprcpetc7", calcPrcpTimeVol);
  5042. ds_main_prcplist.setColumn(curRow, "drprcpetc8", calcPrcpTimeQty);
  5043. if ( prcpclscd == "M2" ) {
  5044. //20090330 마정민수정. 귀가유치용 물품처방은 의사처방 수량을 수정하면 귀가유치용물품수량컬럼에 같이 반영한다.
  5045. if (!utlf_isNull(ds_main_prcplist.getColumn(curRow, "drprcpetc4")) && ds_main_prcplist.getColumn(curRow, "drprcpetc4") != "-" && ds_main_prcplist.getColumn(curRow, "drprcpetc4") > 0){
  5046. ds_main_prcplist.setColumn(curRow, "drprcpetc4", PrcpQty);
  5047. }
  5048. }
  5049. } else if ( flag == "drprcpetc7" ) { // 용량을 수정했을 때: 수량 자동계산
  5050. calcPrcpTimeQty = eval(drprcpetc7) / eval(bfdrprcpetc7) * eval(drprcpetc8)*1000;
  5051. calcPrcpTimeQty = Math.round(calcPrcpTimeQty)/1000;
  5052. calcPrcpVol = eval(drprcpetc7) / eval(bfdrprcpetc7) * eval(PrcpVol)*1000;
  5053. calcPrcpVol = Math.round(calcPrcpVol)/1000;
  5054. calcPrcpQty = eval(drprcpetc7) / eval(bfdrprcpetc7) * eval(PrcpQty)*1000;
  5055. calcPrcpQty = Math.round(calcPrcpQty)/1000;
  5056. //계산구분에 따라 횟수를 곱해주는 처리를 함 (경북대 2010.01.02 전지은)
  5057. if(calcmthdcd == "1"){
  5058. calcPrcpQty = calcPrcpQty * PrcpTims;
  5059. calcPrcpVol = calcPrcpVol * PrcpTims;
  5060. }
  5061. //start: 요청번호 9851, 인슐린주사제 변경 alert (2010.01.28 JJE)
  5062. var cnclInptTxt = ds_main_prcplist.getColumn(curRow, "prcpcd");
  5063. var prcpcdEndTxt = cnclInptTxt.substring(cnclInptTxt.length-1, cnclInptTxt.length);
  5064. if(ds_main_prcplist.getColumn(curRow, "tempcol2") == "05|04|09" && (prcpcdEndTxt == "J" || prcpcdEndTxt == "P") && calcPrcpQty < 1){
  5065. sysf_messageBox(cnclInptTxt + "\n\n소량 처방을 원하시는 경우에는\nUNIT 단위 코드(원 처방의 끝자리 J나 P를 뺀 코드)로 변경 처방하여 주시기 바랍니다.", "I");
  5066. //model.setValue ( prcpNode + "[" + curRow + "]/prcpvol", bfPrcpVol );
  5067. //return;
  5068. } //end
  5069. ds_main_prcplist.setColumn(curRow, "prcpqty", calcPrcpQty);
  5070. ds_main_prcplist.setColumn(curRow, "prcpvol", calcPrcpVol);
  5071. ds_main_prcplist.setColumn(curRow, "drprcpetc8", calcPrcpTimeQty);
  5072. } else if ( flag == "drprcpetc8" ) { // 수량을 수정했을 때: 용량 자동계산
  5073. calcPrcpTimeVol = eval(drprcpetc8) / eval(bfdrprcpetc8) * eval(drprcpetc7)*1000;
  5074. calcPrcpTimeVol = Math.round(calcPrcpTimeVol)/1000;
  5075. calcPrcpVol = eval(drprcpetc8) / eval(bfdrprcpetc8) * eval(PrcpVol)*1000;
  5076. calcPrcpVol = Math.round(calcPrcpVol)/1000;
  5077. calcPrcpQty = eval(drprcpetc8) / eval(bfdrprcpetc8) * eval(PrcpQty)*1000;
  5078. calcPrcpQty = Math.round(calcPrcpQty)/1000;
  5079. //계산구분에 따라 횟수를 곱해주는 처리를 함 (경북대 2010.01.02 전지은)
  5080. if(calcmthdcd == "1"){
  5081. calcPrcpQty = calcPrcpQty * PrcpTims;
  5082. calcPrcpVol = calcPrcpVol * PrcpTims;
  5083. }
  5084. ds_main_prcplist.setColumn(curRow, "prcpvol", calcPrcpVol);
  5085. ds_main_prcplist.setColumn(curRow, "prcpqty", calcPrcpQty);
  5086. ds_main_prcplist.setColumn(curRow, "drprcpetc7", calcPrcpTimeVol);
  5087. ds_main_prcplist.setColumn(curRow, "drprcpetc8", drprcpetc8);
  5088. var prcpclscd = ds_main_prcplist.getColumn(curRow, "prcpclscd" );
  5089. if ( prcpclscd == "M2" ) {
  5090. //20090330 마정민수정. 귀가유치용 물품처방은 의사처방 수량을 수정하면 귀가유치용물품수량컬럼에 같이 반영한다.
  5091. if (!utlf_isNull(ds_main_prcplist.getColumn(curRow, "drprcpetc4")) && ds_main_prcplist.getColumn(curRow, "drprcpetc4") != "-" && ds_main_prcplist.getColumn(curRow, "drprcpetc4") > 0){
  5092. ds_main_prcplist.setColumn(curRow, "drprcpetc4", PrcpQty );
  5093. }
  5094. }
  5095. } else if (flag =="prcptims"){
  5096. var colHidnValue = lf_grdBaseColHidn("D");
  5097. if (colHidnValue == "C" || colHidnValue == "G" || colHidnValue == "H" ) { // 일회용량과 관련된내용일 경우
  5098. ds_main_prcplist.setColumn(curRow, "prcpvol" , drprcpetc7 * PrcpTims);
  5099. ds_main_prcplist.setColumn(curRow, "prcpqty" , drprcpetc8 * PrcpTims);
  5100. }
  5101. }
  5102. }
  5103. }
  5104. /**@desc : PreWorkUp 처리 오른쪽 마우스 클릭
  5105. * @return : void
  5106. * @authur : 마정민 2007. 4. 30
  5107. */
  5108. function fPreWorkUp () {
  5109. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  5110. for (var i = 0; i< selectedRows.length; i++) {
  5111. if ( ds_main_prcplist.getColumn(selectedRows[i], "trnptbftestflag") == "Y" ) {
  5112. ds_main_prcplist.setColumn(selectedRows[i], "trnptbftestflag", "N" )
  5113. } else {
  5114. ds_main_prcplist.setColumn(selectedRows[i], "trnptbftestflag", "Y" )
  5115. }
  5116. lf_makePrcpNm( "ds_main_prcplist", selectedRows[i] );
  5117. fSetCpVal(selectedRows[i], "U");
  5118. }
  5119. }
  5120. /**@desc : 입원전 검사처방(당일)처리 오른쪽 마우스 클릭
  5121. * @return : void
  5122. * @authur : 마정민 2007. 4. 30
  5123. */
  5124. function fPreHosInPrcp () {
  5125. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  5126. for (var i = 0; i < selectedRows.length; i++) {
  5127. if (ds_main_prcplist.getColumn(selectedRows[i], "status" )=="S") continue;
  5128. if ( ds_main_prcplist.getColumn(selectedRows[i], "prcpkindcd" ) == "90" ) {
  5129. ds_main_prcplist.setColumn(selectedRows[i], "prcpkindcd", "20" )
  5130. } else {
  5131. ds_main_prcplist.setColumn(selectedRows[i], "prcpkindcd", "90" )
  5132. }
  5133. lf_makePrcpNm( "ds_main_prcplist", selectedRows[i]);
  5134. fSetCpVal(selectedRows[i], "U");
  5135. }
  5136. }
  5137. /**@desc : 입원전 검사처방(전일)처리 오른쪽 마우스 클릭
  5138. * @return : void
  5139. * @authur : 마정민 2007. 7. 21
  5140. */
  5141. function fPreHosInPrcpBf () {
  5142. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  5143. for (var i = 0; i < selectedRows.length; i++) {
  5144. if (ds_main_prcplist.getColumn(selectedRows[i], "status" )=="S") continue;
  5145. if ( ds_main_prcplist.getColumn(selectedRows[i], "prcpkindcd" ) == "95" ) {
  5146. ds_main_prcplist.setColumn(selectedRows[i], "prcpkindcd", "20" )
  5147. } else {
  5148. ds_main_prcplist.setColumn(selectedRows[i], "prcpkindcd", "95" )
  5149. }
  5150. lf_makePrcpNm( "ds_main_prcplist", selectedRows[i]);
  5151. fSetCpVal(selectedRows[i], "U");
  5152. }
  5153. }
  5154. /**@desc : BMT주사실 처방을 구분 체크
  5155. * @return : void
  5156. * @authur : 마정민 2009. 02. 17
  5157. */
  5158. function fBMTShot() {
  5159. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  5160. for (var i = 0; i < selectedRows.length; i++) {
  5161. if (ds_main_prcplist.getColumn(selectedRows[i], "status" )=="S") continue;
  5162. if ( ds_main_prcplist.getColumn(selectedRows[i], "drprcpetc2" ) == "B" ){
  5163. ds_main_prcplist.setColumn(selectedRows[i], "drprcpetc2", "" )
  5164. } else {
  5165. ds_main_prcplist.setColumn(selectedRows[i], "drprcpetc2", "B" )
  5166. }
  5167. lf_makePrcpNm( "ds_main_prcplist", selectedRows[i]);
  5168. fSetCpVal(selectedRows[i], "U");
  5169. }
  5170. }
  5171. /**@desc : 정규, 추가처방 처리
  5172. * @return : void
  5173. * @authur : 마정민 2007. 4. 30
  5174. */
  5175. function fPrcpDdCheck() {
  5176. //DUR-S
  5177. //by sonjy 20091207 처방일자가 바뀔때 이전 difguid초기화
  5178. // durappyn : "A:DUR전체사용", "Y:DUR중 저함량제외", "나머지:DUR 사용안함", "K:경북대용 DUR"
  5179. if ( ds_initsrch_durappyn.getColumn(0, "trgtcd") == "A" || ds_initsrch_durappyn.getColumn(0, "trgtcd") == "Y") {
  5180. ds_init.setColumn(0, "bf_difguid", "");
  5181. }
  5182. //DUR-E
  5183. var cnt = 0;
  5184. if ( ds_main_prcplist.rowcount > 0 ) {
  5185. var rtnmsg = sysf_messageBox( "날짜를 수정하시면 " + lf_dateFormat(ds_init.getColumn(0, "prcpdd")) + "일 처방으로 변경됩니다.\n희망일자도 같이 변경", "S001");
  5186. if ( rtnmsg == "6" || rtnmsg == "7" ) {
  5187. bfPrcpdd = ds_init.getColumn(0, "prcpdd");
  5188. for (var i = ds_main_prcplist.rowcount - 1; i >= 0; i--) {
  5189. if ( ds_main_prcplist.getColumn(i, "status") == "I" ){
  5190. fPrcpBuffer( ++cnt, i, "ds_prcpdrag_prcplist", "ds_main_prcplist" );
  5191. }
  5192. }
  5193. ds_main_prcplist.clearData();
  5194. lf_appendChildPrcp ( "ds_reset_prcplist", "ds_main_prcplist", "main" ); //검색라인추가
  5195. } else {
  5196. ds_init.setColumn(0, "prcpdd", bfPrcpdd);
  5197. return;
  5198. }
  5199. } else {
  5200. bfPrcpdd = ds_init.getColumn(0, "prcpdd");
  5201. ds_main_prcplist.clearData();
  5202. lf_appendChildPrcp ( "ds_reset_prcplist", "ds_main_prcplist", "main" ); //검색라인추가
  5203. }
  5204. if ( ds_init.getColumn(0, "prcpkindcd") == "80" ) return;
  5205. /*var prcpdd = model.getValue ( "/root/init/prcpdd" );
  5206. if ( eval (getCurrentTime().substr (0,2)) <= 4 && prcpdd == getCurrentDate()) {
  5207. //처방종류: 당일이고 4시전이면 정규
  5208. model.setValue ( "/root/init/prcpkindcd", "10" );
  5209. } else if ( eval(prcpdd) > eval(getCurrentDate())) {
  5210. //처방종류: 오늘이후 처방일이면 정규
  5211. model.setValue ( "/root/init/prcpkindcd", "10" );
  5212. } else {
  5213. //아니면 추가
  5214. model.setValue ( "/root/init/prcpkindcd", "20" );
  5215. }*/
  5216. fInitSrch();
  5217. fTempPrcp(); //임시처방 호출
  5218. if ( cnt > 0 ) {
  5219. fPrcpPaste( rtnmsg );
  5220. }
  5221. div_all.grd_prcplist.setFocus();
  5222. var row = ds_main_prcplist.rowcount - 1;
  5223. ds_main_prcplist.selectRow(row);
  5224. ds_main_prcplist.rowposition = row;
  5225. div_all.grd_prcplist.setCellPos(div_all.grd_prcplist.getCellPos());
  5226. }
  5227. /**@desc : 임시처방처리
  5228. * @return : void
  5229. * @param : flag : 저장하고 호출하는 건지 check
  5230. * @authur : 마정민 2007. 5. 10
  5231. */
  5232. function fTempPrcp (flag) {
  5233. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag" );
  5234. if ( ds_initsrchprcp_prcpetccnts.getColumn(0, "temprsrvprcpyn") != "N") {
  5235. var orddd = "";
  5236. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ) {
  5237. orddd = ds_paminfo.getColumn(0, "orddd" );
  5238. } else {
  5239. orddd = ds_paminfo.getColumn(0, "indd" );
  5240. }
  5241. var cnt = 0;
  5242. var prcpdd = ds_init.getColumn(0, "prcpdd");
  5243. if ( utlf_isNull(prcpdd)) prcpdd = utlf_getCurrentDate();
  5244. ds_send.setColumn(0, "cond1", ds_paminfo.getColumn(0, "pid" )); //환자ID
  5245. ds_send.setColumn(0, "cond2", orddd ); //외래:진료일, 입원:입원일
  5246. ds_send.setColumn(0, "cond4", prcpdd); //임시처방구분
  5247. ds_send.setColumn(0, "cond5", "rsrv" ); //전처방구분:예약처방
  5248. ds_send.setColumn(0, "cond6", "" ); //전처방구분:예약처방
  5249. ds_send.setColumn(0, "cond9", prcpgenrflag );
  5250. ds_send.setColumn(0, "cond11", ds_paminfo.getColumn(0, "cretno" )); //생성번호
  5251. ds_send.setColumn(0, "cond14", ds_init.getColumn(0, "prcpdd" )); //생성번호
  5252. ds_send.setColumn(0, "cond99", "getBfPrcpSrchInfo"); //검색구분
  5253. var oParam = {};
  5254. oParam.id = "TRMMO00100";
  5255. oParam.service = "prcpmngtapp.PrcpMngt";
  5256. oParam.method = "reqGetPrcpSrchInfo";
  5257. oParam.inds = "req=ds_send";
  5258. oParam.outds = "ds_prcpsrch_prcplist=prcplist";
  5259. oParam.async = false;
  5260. tranf_submit(oParam);
  5261. dsf_setDefaultVal(ds_prcpsrch_prcplist, "prcpvol:0,prcpvolunitnm:-,prcpqty:0,prcpqtyunitnm:-,prcptims:0,prcpdayno:0,drugmthdspccdnm:-,hosinprcpresncd:00,drugmthdspccd:-,hsctdelivepos:0,druglnkno:0,dnorreqlnkno:0,subcretno:0,drgacptflag:-");
  5262. var sPrcpHistCd = ds_prcpsrch_prcplist.getColumn(0, "prcphistcd");
  5263. if ( sPrcpHistCd == "T" ) {
  5264. ds_main_prcplist.copyData(ds_prcpsrch_prcplist);
  5265. lf_appendChildPrcp ( "ds_reset_prcplist", "ds_main_prcplist", "main" ); //검색라인추가
  5266. ds_main_prcplist.rowposition = -1;
  5267. } else if ( sPrcpHistCd == "X" && flag != "save") { //저장하고 나서는 임시저장된 데이터가 있으면 화면에 보여준다.
  5268. var mon = sysf_getCurrentMonitorNumber();
  5269. var xpt = this.getOwnerFrame().position.x + 100;
  5270. var ypt = this.getOwnerFrame().position.y + 100;
  5271. var objArg = new Object();
  5272. objArg.arg_ds_main_prcplist = ds_prcpsrch_prcplist;
  5273. frmf_modal("SPMMO00700", "SPMMO00700", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  5274. }
  5275. }
  5276. //응급의학 관리료 증상관리 창 팝업.
  5277. if (ds_initsrchprcp_prcpetccnts.getColumn(0, "erprcpyn" ) == "Y" ){
  5278. frmf_setParameter ( "SMMMO00100_cond1", "Y" );
  5279. lf_prcpModal ( "SMMMO06100", null, 0, 0 );
  5280. div_all.grd_prcplist.setFocus();
  5281. }
  5282. ds_prcpsrch_prcplist.clearData();
  5283. }
  5284. /**@desc : 진단검색
  5285. * @param : flag : 진단명검색, 코드검색
  5286. * @return : void
  5287. * @authur : 마정민 2007. 5. 10
  5288. */
  5289. function fDiagSrch ( flag ) {
  5290. //if(event.keyCode == "13" && flag != "addprcp" ) {
  5291. if(flag != "addprcp" ) {
  5292. var currow = ds_main_diagcdlist.rowposition;
  5293. var diagnm = "";
  5294. if ( flag == "diagnm" ) {
  5295. ds_main_diagcdlist.setColumn(currow, "icd10cd", "");
  5296. diagnm = ds_main_diagcdlist.getColumn(currow, "diagengnm");
  5297. srchflag = "2";
  5298. ds_init.setColumn(0, "diagsrchcond1", "2"); //단어검색으로 수정
  5299. } else if ( flag == "icd10cd" ) {
  5300. ds_main_diagcdlist.setColumn(currow, "diagengnm", "");
  5301. diagnm = ds_main_diagcdlist.getColumn(currow, "icd10cd");
  5302. srchflag = "1";
  5303. ds_init.setColumn(0, "diagsrchcond1", "1");
  5304. }
  5305. if(utlf_isNull(diagnm))
  5306. return;
  5307. var isHangul = utlf_isHangul (diagnm);
  5308. if ( utlf_isNull(diagnm)) { //한글일때는 1글자만 넣어도 검색가능
  5309. sysf_messageBox ( "진단 검색어를", "C001" );
  5310. return;
  5311. } else if ( isHangul == "E" ){
  5312. if ( diagnm.length < 2 ){ //영문,숫자일때는 3글자 넣어야 검색가능
  5313. sysf_messageBox ( "2글자 이상", "C001" );
  5314. return;
  5315. }
  5316. }
  5317. frmf_setParameter ( "SPMMO00800_cond1", srchflag );
  5318. frmf_setParameter ( "SPMMO00800_cond2", ds_init.getColumn(0, "diagsrchcond1"));
  5319. frmf_setParameter ( "SPMMO00800_cond3", isHangul );
  5320. frmf_setParameter ( "SPMMO00800_cond4", ds_init.getColumn(0, "prcpdd"));
  5321. frmf_setParameter ( "SPMMO00800_cond5", diagnm );
  5322. frmf_setParameter ( "SPMMO00800_srchmode", "P" );
  5323. var mon = sysf_getCurrentMonitorNumber();
  5324. var xpt = this.getOwnerFrame().position.x + 200;
  5325. var ypt = this.getOwnerFrame().position.y + 110;
  5326. frmf_modal("SPMMO00800", "SPMMO00800", null, false, mon, xpt, ypt, null, null, null, null, null, "M");
  5327. if ( frmf_getParameter( "SPMMO00800_rtn_useyn" ) == "Y" ) {
  5328. lf_addDiagSetValue (frmf_getParameter( "SPMMO00800_rtn" ));
  5329. frmf_setParameter( "SPMMO00800_rtn_useyn", "" );
  5330. }
  5331. // 처방 메인화면에서 진단코드나 진단명 입력 후 다음 셀에 edit 상태 생성 - 20081124 by MoonSH
  5332. if ( flag == "diagnm" ) {
  5333. ds_main_diagcdlist.selectRow(ds_main_diagcdlist.rowcount - 1);
  5334. div_all.grd_diaglist.setCellPos(div_all.grd_diaglist.getBindCellIndex("body", "diagnm"));
  5335. this.setTimer(1, 1); // 편집상태로
  5336. } else if ( flag == "icd10cd" ) {
  5337. ds_main_diagcdlist.selectRow(ds_main_diagcdlist.rowcount - 1);
  5338. div_all.grd_diaglist.setCellPos(div_all.grd_diaglist.getBindCellIndex("body", "icd10cd"));
  5339. this.setTimer(1, 1); // 편집상태로
  5340. }
  5341. } else if ( flag == "addprcp" ){
  5342. lf_appendChildPrcp ( "ds_reset_diagcdlist", "ds_main_diagcdlist", "main" );
  5343. frmf_setParameter ( "SPMMO00800_cond1", "1" );
  5344. frmf_setParameter ( "SPMMO00800_cond2", "1");
  5345. frmf_setParameter ( "SPMMO00800_cond3", "E" );
  5346. frmf_setParameter ( "SPMMO00800_cond4", ds_init.getColumn(0, "prcpdd"));
  5347. frmf_setParameter ( "SPMMO00800_cond5", ds_initsrch_prcpetccnts.getColumn(0, "pamdiagcd"));
  5348. var mon = sysf_getCurrentMonitorNumber();
  5349. var xpt = this.getOwnerFrame().position.x + 200;
  5350. var ypt = this.getOwnerFrame().position.y + 110;
  5351. frmf_modal("SPMMO00800", "SPMMO00800", null, false, mon, xpt, ypt, null, null, null, null, null, "M");
  5352. if ( frmf_getParameter( "SPMMO00800_rtn_useyn" ) == "Y" ) {
  5353. lf_addDiagSetValue (frmf_getParameter( "SPMMO00800_rtn" ));
  5354. frmf_setParameter( "SPMMO00800_rtn_useyn", "" );
  5355. var srcNodeList = model.instances(0).selectNodes("/root/main/diaginfo/diagcdlist");
  5356. for ( var i= 0; i < ds_main_diagcdlist.rowcount; i++){
  5357. if ( ds_main_diagcdlist.getColumn(i, "status") == "S" ) {
  5358. ds_main_diagcdlist.deleteRow(i);
  5359. }
  5360. }
  5361. }
  5362. }
  5363. }
  5364. /**@desc : 진단삭제
  5365. * @id : grd_prcplist
  5366. * @event : onmousedown
  5367. * @return : void
  5368. * @authur : 마정민 2007. 5. 15
  5369. */
  5370. function fDiagDeleteRow() {
  5371. //시행부서 화면에서는 진단 수정, 삭제 불가
  5372. if ( ds_root.getColumn(0, "addprcp") == "Y" ){
  5373. return;
  5374. }
  5375. ds_main_diagcdlist.enableevent = false;
  5376. var selectedRows = grdf_getSelectedRows(div_all.grd_diaglist);
  5377. var chkcnt = 0;
  5378. for (var i = selectedRows.length - 1; i >= 0; i--){
  5379. var icd10cd = ds_main_diagcdlist.getColumn(selectedRows[i], "icd10cd");
  5380. var diagkindcdflag = ds_main_diagcdlist.getColumn(selectedRows[i], "diagkindcdflag");
  5381. if ( ds_patflag.getColumn(0, "prcpgenrflag") == "O" && chkcnt == 0) {
  5382. if ( !utlf_isNull(ds_initsrch_diagautocnts.getColumn(0, "trgtcd")) ) {
  5383. if (ds_init.getColumn(0, "hosinprcpresncd") != "00" ) { //원내처방 사유가 있을 경우
  5384. for ( var j = 0; j < ds_initsrch_diagautocnts.rowcount; j++ ) {
  5385. var trgtcdnmArray = ds_initsrch_diagautocnts.getColumn(j, "trgtcdnm");
  5386. var fromTrgtcdnm = lf_getArrayData ( trgtcdnmArray + "^", 0, 0, "^", "|" );
  5387. var toTrgtcdnm = lf_getArrayData ( trgtcdnmArray + "^", 0, 1, "^", "|" );
  5388. var cdlength = fromTrgtcdnm.length;
  5389. var icd10Chck = icd10cd.substring( 0, cdlength );
  5390. if ( icd10Chck >= fromTrgtcdnm && icd10Chck <= toTrgtcdnm ) { //해당 진단검색안에 값이 있다면
  5391. var hosinprcpresncd = ds_initsrch_diagautocnts.getColumn(j, "trgtcd");
  5392. //삭제 진단의 원내처방 사유가 init 의 원내처방 사유와 같다면 clear 를 물어본다.
  5393. if ( hosinprcpresncd == ds_init.getColumn(0, "hosinprcpresncd") ) {
  5394. //주상병이든 원내처방사유 23일 때만 적용
  5395. if ( diagkindcdflag == "M" || hosinprcpresncd == "23" ) {
  5396. chkcnt++; //한번물어보면 더이상 물어보지 않기 위해 체크한다.
  5397. if (sysf_messageBox ( "원내처방 [" + div_all.cmb_hosinprcpresn.text + "]" + "\n관련된 진단을 삭제하셨습니다. 원내처방사유를 적용을", "Q007" ) == "6" ) {
  5398. ds_init.setColumn(0, "hosinprcpresncd", "00");
  5399. for ( var k = 0; k < ds_main_prcplist.rowcount; k++ ) {
  5400. var prcpclscd = ds_main_prcplist.getColumn(k, "prcpclscd");
  5401. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) { //약,주사
  5402. var prcphosinprcpresncd = ds_main_prcplist.getColumn(k, "hosinprcpresncd");
  5403. //원내처방사유가 약에 관련된 것이 있다면 적용하지 않는다.
  5404. //저장할 때 일괄적용
  5405. if ( !lf_pamHosinPrcpResnCdChk(hosinprcpresncd)) {
  5406. ds_main_prcplist.setColumn(k, "hosinhosoutflag", "O");
  5407. ds_main_prcplist.setColumn(k, "hosinprcpresncd", "00");
  5408. }
  5409. } //약,주사 end
  5410. } //처방검색 end
  5411. ds_paminfo.setColumn(0, "hosoutexptresncd" , "00");
  5412. break; //값을 setting 하면 빠져나온다.
  5413. } //icd10cd == trgtcdnm end
  5414. } //진단검색 end
  5415. }
  5416. }
  5417. }
  5418. } //원내처방 사유 여부
  5419. }//진단초기값 여부 end
  5420. } //외래end
  5421. var status = ds_main_diagcdlist.getColumn(selectedRows[i], "status" );
  5422. if ( status == "-" || status == "U" || status == "T" ) {
  5423. //수정한 데이터를 원복시킨다.
  5424. var diagdd = ds_main_diagcdlist.getColumn(selectedRows[i], "diagdd" );
  5425. var diagno = ds_main_diagcdlist.getColumn(selectedRows[i], "diagno" );
  5426. var diaghistno = ds_main_diagcdlist.getColumn(selectedRows[i], "diaghistno" );
  5427. var findRow = ds_diagorg_diagcdlist.findRowExpr("diagdd == '" + diagdd + "' && diagno == '" + diagno + "' && diaghistno == '" + diaghistno + "'");
  5428. ds_main_diagcdlist.copyRow(selectedRows[i], ds_diagorg_diagcdlist, findRow);
  5429. ds_main_diagcdlist.setColumn(selectedRows[i], "status", "D" );
  5430. } else if ( status == "I" ){
  5431. ds_main_diagcdlist.deleteRow(selectedRows[i]);
  5432. } else if ( status == "S" ) {
  5433. ds_main_diagcdlist.setColumn(selectedRows[i], "diagengnm", "" );
  5434. }
  5435. }
  5436. ds_main_diagcdlist.enableevent = true;
  5437. div_all.grd_diaglist_fixrow.position.width = div_all.grd_diaglist.position.width
  5438. - (div_all.grd_diaglist.vscrollbar.visible ? div_all.grd_diaglist.vscrollbar.position.width : 0);
  5439. }
  5440. function fDiagCnclRow() {
  5441. ds_main_diagcdlist.enableevent = false;
  5442. var selectedRows = grdf_getSelectedRows(div_all.grd_diaglist);
  5443. for (var i = selectedRows.length - 1; i >= 0; i--){
  5444. var status = ds_main_diagcdlist.getColumn(selectedRows[i], "status");
  5445. if ( status == "D" || status == "U") {
  5446. //수정한 데이터를 원복시킨다.
  5447. var diagdd = ds_main_diagcdlist.getColumn(selectedRows[i], "diagdd" );
  5448. var diagno = ds_main_diagcdlist.getColumn(selectedRows[i], "diagno" );
  5449. var diaghistno = ds_main_diagcdlist.getColumn(selectedRows[i], "diaghistno" );
  5450. var findRow = ds_diagorg_diagcdlist.findRowExpr("diagdd == '" + diagdd + "' && diagno == '" + diagno + "' && diaghistno == '" + diaghistno + "'");
  5451. ds_main_diagcdlist.copyRow(selectedRows[i], ds_diagorg_diagcdlist, findRow);
  5452. }
  5453. }
  5454. ds_main_diagcdlist.enableevent = true;
  5455. }
  5456. /**@desc : 진단 수정
  5457. * @ : 신규일때는 수정표시 안함.
  5458. * @event : xforms-value-changed
  5459. * @return : void
  5460. * @authur : 마정민 2007. 5. 16
  5461. */
  5462. function fDiagUpdate() {
  5463. var status = ds_main_diagcdlist.getColumn(ds_main_diagcdlist.rowposition, "status" );
  5464. if ( status == "-" || status == "T" ) {
  5465. ds_main_diagcdlist.setColumn(ds_main_diagcdlist.rowposition, "status", "U" );
  5466. }
  5467. }
  5468. /**@desc : 진단 조회
  5469. * @return : void
  5470. * @authur : 마정민 2007. 5. 16
  5471. */
  5472. function fPatDiagSrch(sPrcpFlag) {
  5473. if (utlf_isNull(sPrcpFlag)){
  5474. sPrcpFlag = "prcp"
  5475. }
  5476. var bTRMMO00105 = false; // 진단조회 서브밋 성공 여부
  5477. var sPrcpGenrFlag = ds_patflag.getColumn(0, "prcpgenrflag");
  5478. if(sPrcpFlag == "save") { // 처방 저장후 호출시에는 데이터 조회 하도록 수정.
  5479. bTRMMO00105 = true;
  5480. } else {
  5481. var sOrdDd = "";
  5482. var sCretNo = "";
  5483. var sOrdDrId = "";
  5484. var ds_formerkey = this.objects["ds_formerkey"];
  5485. var sPseuAcptFlag = utlf_isNull(ds_formerkey) ? "" : ds_formerkey.getColumn(0, "pseuacptflag" ); //시행부서처방가접수
  5486. if ( sPrcpGenrFlag == "O" || sPrcpGenrFlag == "S" ) {
  5487. sOrdDd = ds_paminfo.getColumn(0, "orddd");
  5488. sOrdDrId = ds_paminfo.getColumn(0, "orddrid");
  5489. sCretNo = ds_paminfo.getColumn(0, "cretno");
  5490. } else {
  5491. sOrdDd = ds_paminfo.getColumn(0, "indd");
  5492. sOrdDrId = ds_paminfo.getColumn(0, "medispclid");
  5493. sCretNo = ds_paminfo.getColumn(0, "cretno");
  5494. }
  5495. if ( sPseuAcptFlag == "Y" ) {
  5496. sOrdDd = ds_formerkey.getColumn(0, "orddd_old");
  5497. sCretNo = ds_formerkey.getColumn(0, "cretno_old");
  5498. }
  5499. ds_send.setColumn(0, "cond1", ds_paminfo.getColumn(0, "pid"));
  5500. ds_send.setColumn(0, "cond2", sOrdDd);
  5501. ds_send.setColumn(0, "cond3", sCretNo);
  5502. ds_send.setColumn(0, "cond4", ds_paminfo.getColumn(0, "orddeptcd"));
  5503. ds_send.setColumn(0, "cond5", sPrcpGenrFlag);
  5504. ds_send.setColumn(0, "cond6", sOrdDrId );
  5505. ds_send.setColumn(0, "cond7", sPrcpFlag ); //처방구분
  5506. ds_send.setColumn(0, "cond8", ds_initsrch_envinfo.lookup("qestcd", '050', "answcnt")); //직전 진단 Copy 개인설정(001:진료의 진단만 Copy, 002:진료의 진단이 없으면 진료과 진단 Copy) 2014.01.06 엄영만
  5507. var oParam = {};
  5508. oParam.id = "TRMMO00105";
  5509. oParam.service = "prcpmngtapp.PrcpMngt";
  5510. oParam.method = "reqGetPatDiagInfo";
  5511. oParam.inds = "req=ds_send";
  5512. oParam.outds = "ds_main_diagcdlist=diagcdlist";
  5513. oParam.async = false;
  5514. oParam.callback = "cf_TRMMO00105";
  5515. tranf_submit(oParam);
  5516. bTRMMO00105 = (arErrorCode.pop("TRMMO00105") < 0) ? false : true;
  5517. }
  5518. if (bTRMMO00105) {
  5519. /********** 외래일 경우 원내처방 사유가 있는 진단인지 체크한다. **********/
  5520. for ( var i = 0; i < ds_main_diagcdlist.rowcount; i++ ) {
  5521. var sIcd10Cd = ds_main_diagcdlist.getColumn(i, "icd10cd");
  5522. var sDiagKindCdFlag = ds_main_diagcdlist.getColumn(i, "diagkindcdflag");
  5523. lf_checkDiagHosinpPcp(sIcd10Cd, sPrcpGenrFlag, sDiagKindCdFlag);
  5524. }
  5525. if ( sPrcpFlag == "prcp" || sPrcpFlag == "save") {
  5526. lf_appendChildPrcp("ds_reset_diagcdlist", "ds_main_diagcdlist", "main"); //검색라인추가
  5527. if ( ds_main_diagcdlist.rowcount > 0) {
  5528. ds_diagorg_diagcdlist.copyData(ds_main_diagcdlist);
  5529. }
  5530. }
  5531. }
  5532. }
  5533. function cf_TRMMO00105(sSvcId, nErrorCode, sErrorMsg) {
  5534. arErrorCode.push(sSvcId, nErrorCode);
  5535. }
  5536. /**@desc : 투약일수 조회
  5537. * @return : void
  5538. * @authur : 마정민 2007. 5. 16
  5539. */
  5540. function fMediDayNo() {
  5541. var xpt = this.getOwnerFrame().position.x + 397;
  5542. var ypt = this.getOwnerFrame().position.y + ds_main_prcplist.rowposition * 24 + div_all.grd_prcplist.position.y + 96;
  5543. frmf_modal("SPMMO02300", "SPMMO02300", null, null, 1, xpt, ypt, null, null, null, null, null, "M");
  5544. }
  5545. /**@desc : 진단상세보기
  5546. * @return : void
  5547. * @authur : 마정민 2007. 5. 16
  5548. */
  5549. function fDiagDetlVw() {
  5550. if ( ds_init.getColumn(0, "diagdetlvw") == "p" ) {
  5551. if ( ds_main_diagcdlist.rowcount >= 3 ) {
  5552. var height = 99 + ( ds_main_diagcdlist.rowcount - 3 ) * grd_row_height;
  5553. if(height > 770) height = 770;
  5554. div_all.grd_diaglist.position.height = height;
  5555. }
  5556. ds_init.setColumn(0, "diagdetlvw", "m");
  5557. } else {
  5558. div_all.grd_diaglist.position.height = 99;
  5559. ds_init.setColumn(0, "diagdetlvw", "p");
  5560. }
  5561. div_all.grd_diaglist_fixrow.position.width = div_all.grd_diaglist.position.width
  5562. - (div_all.grd_diaglist.vscrollbar.visible ? div_all.grd_diaglist.vscrollbar.position.width : 0);
  5563. }
  5564. /**@desc : 치식
  5565. * @return : void
  5566. * @authur : 마정민 2007. 5. 30
  5567. */
  5568. function fDentifmla (flag) {
  5569. //처방 치식 setting 시작
  5570. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  5571. var prcpNm = "";
  5572. var tootFact = "";
  5573. var sPrcpStr = "prcpcd▦tootfact▦rtntootfact▦rowcnt▩";
  5574. var cnt = 0;
  5575. for ( var i = selectedRows.length - 1; i >= 0; i-- ) {
  5576. var iRow = selectedRows[i];
  5577. var prcpessninptflag = ds_main_prcplist.getColumn(iRow, "prcpessninptflag")
  5578. var chkprcpstatus = ds_main_prcplist.getColumn(iRow, "status")
  5579. var tempcol2 = ds_main_prcplist.getColumn(iRow, "tempcol2"); //처방 대분류, 중분류 조건 추가 (2009.10.26 by JJE)
  5580. //기존에는 처방필수입력이 치식필수인 경우에만 치식팝업 떴으나, 처방 대분류+중분류 조건 추가 (2009.10.26 by JJE)
  5581. if ( (prcpessninptflag == "2" || (prcpessninptflag == "5" && tempcol2.substr(0, 5) == "17|02") ) && chkprcpstatus != "S" ) {
  5582. prcpNm = ds_main_prcplist.getColumn(iRow, "prcpcd") + "▦▦";
  5583. tootFact = ds_main_prcplist.getColumn(iRow, "tootfact") + "▦" + iRow +"▩";
  5584. sPrcpStr = sPrcpStr + prcpNm + tootFact;
  5585. frmf_setParameter("param_prcplist", sPrcpStr);
  5586. cnt++;
  5587. } else {
  5588. ds_main_prcplist.selectRow(iRow, false);
  5589. }
  5590. } //처방 치식 setting 끝
  5591. //진단 치식 setting 시작
  5592. var selectedDiagRows = grdf_getSelectedRows(div_all.grd_diaglist);
  5593. var sDiagStr = "diagcd▦tootfact▦rtntootfact▦rowcnt▩";
  5594. for ( var i = selectedDiagRows.length - 1; i >= 0; i-- ) {
  5595. var chkdiagstatus = ds_main_diagcdlist.getColumn(selectedDiagRows[i], "status")
  5596. if ( chkdiagstatus != "S" ) {
  5597. diagNm = ds_main_diagcdlist.getColumn(selectedDiagRows[i], "diagcd") + "▦▦";
  5598. tootFact = ds_main_diagcdlist.getColumn(selectedDiagRows[i], "tootfact") + "▦" + selectedDiagRows[i] +"▩";
  5599. sDiagStr = sDiagStr + diagNm + tootFact;
  5600. frmf_setParameter("param_diaglist", sDiagStr);
  5601. cnt++;
  5602. } else {
  5603. ds_main_diagcdlist.selectRow(selectedDiagRows[i], false);
  5604. }
  5605. }
  5606. if ( cnt == 0 ) {
  5607. sysf_messageBox ( "선택된 치식입력 정보가", "E014" );
  5608. return;
  5609. }
  5610. frmf_modal("SPMMO10500", "SPMMO10500", null, null, null, null, null, null, null, null, null, null, "M");
  5611. if ( frmf_getParameter("rtn_useyn") == "Y" ) {
  5612. var prow = 0;
  5613. var ptootfact = "";
  5614. var drow = 0;
  5615. var dtootfact = "";
  5616. var desPrcpNode = "ds_main_prcplist";
  5617. if(flag == "OP"){ //처방화면에서 직접 호출한 경우, desPath가 다르므로 치환한다 (2009.10.27 JJE)
  5618. desPrcpNode = "ds_prcptemp_prcplist";
  5619. }
  5620. var ds_prcp = this.objects[desPrcpNode];
  5621. var prcplen = frmf_getParameter("rtn_prcptootfact").split("▩").length;
  5622. for ( var i = 1; i < prcplen - 1; i++ ) { // 인덱스 1부터 맞는지 확인필요
  5623. prow = lf_getArrayData ( frmf_getParameter("rtn_prcptootfact"), i, 3, "▩", "▦" ); //치식이 입력될 row
  5624. ptootfact = lf_getArrayData ( frmf_getParameter("rtn_prcptootfact"), i, 2, "▩", "▦" )//치식
  5625. //처방 치과 수술팝업 입력 시 치식팝업 호출의 경우 prcptemp를 이용하므로 prow 사용하면 안됨. 오류 수정 (JJE 2009.11.03)
  5626. /*
  5627. model.setValue ( desPrcpNode + "[" + prow + "]/tootfact", ptootfact);
  5628. var prcpstatus = model.getValue ( desPrcpNode + "[" + prow + "]/status" );
  5629. */
  5630. if(flag == "OP"){
  5631. ds_prcp.setColumn(0, "tootfact", ptootfact);
  5632. var prcpstatus = ds_prcp.getColumn(0, "status");
  5633. }else{
  5634. ds_prcp.setColumn(prow, "tootfact", ptootfact);
  5635. var prcpstatus = ds_prcp.getColumn(prow, "status");
  5636. }
  5637. //if (prcpstatus=="-") {
  5638. // model.setValue ( desPrcpNode + "[" + prow + "]/status", "U" );
  5639. //}
  5640. }
  5641. var diaglen = frmf_getParameter("rtn_diagtootfact").split("▩").length;
  5642. for ( var i = 1; i < diaglen - 1; i++ ) { // 인덱스 1부터 맞는지 확인필요
  5643. drow = lf_getArrayData (frmf_getParameter("rtn_diagtootfact"), i, 3, "▩", "▦" );
  5644. dtootfact = lf_getArrayData (frmf_getParameter("rtn_diagtootfact"), i, 2, "▩", "▦" );
  5645. ds_main_diagcdlist.setColumn(drow, "tootfact", dtootfact);
  5646. var diagstatus = ds_main_diagcdlist.getColumn(drow, "status" );
  5647. if (diagstatus == "-") {
  5648. ds_main_diagcdlist.setColumn(drow, "status", "U");
  5649. }
  5650. }
  5651. }
  5652. frmf_clearParameter ("param_prcplist");
  5653. frmf_clearParameter ("param_diaglist");
  5654. frmf_clearParameter ("rtn_prcptootfact");
  5655. frmf_clearParameter ("rtn_diagtootfact");
  5656. }
  5657. /**@desc : 전달사항 일괄입력
  5658. * @param : flag: M double click 인지 일괄입력인지 구분자
  5659. * @return : void
  5660. * @authur : 마정민 2007. 5. 30
  5661. */
  5662. function fPrcpdelivefact( flag ) {
  5663. var currow = ds_main_prcplist.rowposition;
  5664. var xpt = 395;
  5665. var ypt = currow * grd_row_height + 177;
  5666. if ( flag == "M" ) {
  5667. if ( ds_main_prcplist.getColumn(currow, "status" ) != "S" ) {
  5668. frmf_setParameter ( "prcpdelivefac", ds_main_prcplist.getColumn(currow, "prcpdelivefact"));
  5669. lf_prcpModal ( "SPMMO10800", xpt, ypt );
  5670. ds_main_prcplist.setColumn(currow, "prcpdelivefact", frmf_getParameter ( "rtn_prcpdelivefac" ));
  5671. }
  5672. } else {
  5673. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  5674. if ( selectedRows.legnth > 0 ) {
  5675. lf_prcpModal ( "SPMMO10800", xpt, ypt );
  5676. }
  5677. for ( var i = 0; i < selectedRows.length; i++ ){
  5678. if ( ds_main_prcplist.getColumn(selectedRows[i], "status" ) != "S" ) {
  5679. ds_main_prcplist.setColumn(selectedRows[i], "prcpdelivefact", frmf_getParameter ( "rtn_prcpdelivefac" ));
  5680. }
  5681. }
  5682. }
  5683. }
  5684. /**@desc : 처방상세 일괄입력
  5685. * @param :
  5686. * @return : void
  5687. * @authur : 마정민 2007. 6. 30
  5688. */
  5689. function fPrcpDetlCom() {
  5690. var xpt = 510;
  5691. var ypt = 180;
  5692. var header = "";
  5693. var useyn = "";
  5694. var value = "";
  5695. var cnt = 0;
  5696. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  5697. var prcpclscd = ds_main_prcplist.getColumn(selectedRows[0], "prcpclscd");
  5698. var prnscrID = frmf_getScreenID();
  5699. //fPrcpModal ( "SPMMO 10400", xpt, ypt ); //일괄입력 공통
  5700. if ( prcpclscd == "A2" || prcpclscd == "A4" ) { //약
  5701. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  5702. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  5703. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  5704. if ( selprcpclscd != "A2" && selprcpclscd != "A4" ) {
  5705. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  5706. cnt++;
  5707. }
  5708. }
  5709. if (cnt > 0) {
  5710. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  5711. } else {
  5712. frmf_setParameter ( "SPMMO12100_prnchk", prnscrID);
  5713. lf_prcpModal ( "SPMMO12100", xpt, ypt );
  5714. }
  5715. } else if ( prcpclscd == "A6" ) { //주사
  5716. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  5717. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  5718. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  5719. if ( selprcpclscd != prcpclscd ) {
  5720. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  5721. cnt++;
  5722. }
  5723. }
  5724. if ( cnt > 0) {
  5725. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  5726. } else {
  5727. frmf_setParameter ( "SPMMO12200_prnchk", prnscrID);
  5728. lf_prcpModal ( "SPMMO12200", xpt, ypt );
  5729. }
  5730. } else if ( prcpclscd == "F2" ) { //재활
  5731. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  5732. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  5733. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  5734. if ( selprcpclscd != prcpclscd ) {
  5735. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  5736. cnt++;
  5737. }
  5738. }
  5739. if ( cnt > 0) {
  5740. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  5741. } else {
  5742. lf_prcpModal ( "SPMMO11200", xpt, ypt );
  5743. }
  5744. } else if ( prcpclscd == "C2" || prcpclscd == "C6" || prcpclscd == "E2" ) {
  5745. //방사선 검사(기능검사, 내시경,천자,생검, 방사선, 핵의학영상, 방사선치료)
  5746. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  5747. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  5748. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  5749. if ( selprcpclscd != "C2" && selprcpclscd != "C6" && selprcpclscd != "E2" ) {
  5750. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  5751. cnt++;
  5752. }
  5753. }
  5754. if ( cnt > 0) {
  5755. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  5756. } else {
  5757. frmf_setParameter ( "SPMMO12300_prcpclscd", prcpclscd );
  5758. lf_prcpModal ( "SPMMO12300", xpt, ypt );
  5759. frmf_setParameter ( "SPMMO12300_prcpclscd", "" );
  5760. }
  5761. } else if ( prcpclscd == "B2" || prcpclscd == "B6" ) { //진단검사 (검체검사), 핵의학 체내
  5762. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  5763. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  5764. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  5765. if ( selprcpclscd != "B2" && selprcpclscd != "B6" ) {
  5766. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  5767. cnt++;
  5768. }
  5769. }
  5770. if ( cnt > 0) {
  5771. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  5772. } else {
  5773. frmf_setParameter ( "SPMMO12400_prcpclscd", prcpclscd );
  5774. lf_prcpModal ( "SPMMO12400", xpt, ypt );
  5775. frmf_setParameter ( "SPMMO12400_prcpclscd", "" );
  5776. }
  5777. } else if ( prcpclscd == "H2" ) { //수술, 처치, 치과
  5778. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  5779. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  5780. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  5781. if ( selprcpclscd != "H2" && selprcpclscd != "H4" ) {
  5782. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  5783. cnt++;
  5784. }
  5785. }
  5786. if ( cnt > 0) {
  5787. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  5788. } else {
  5789. lf_prcpModal ( "SPMMO12600", xpt, ypt );
  5790. }
  5791. } else if ( prcpclscd == "K2" ) {
  5792. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  5793. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  5794. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  5795. if ( selprcpclscd != "K2" ) {
  5796. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  5797. cnt++;
  5798. }
  5799. }
  5800. if ( cnt > 0) {
  5801. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  5802. } else {
  5803. lf_prcpModal ( "SPMMO13500", xpt, ypt );
  5804. }
  5805. } else if ( prcpclscd == "03" ) { //식이
  5806. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  5807. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  5808. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  5809. if ( selprcpclscd != prcpclscd ) {
  5810. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  5811. cnt++;
  5812. }
  5813. }
  5814. if ( cnt > 0) {
  5815. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  5816. } else {
  5817. lf_prcpModal ( "SPMMO12700", xpt, ypt );
  5818. }
  5819. } else if ( prcpclscd == "I2" || prcpclscd == "I4" ) { //마취
  5820. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  5821. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  5822. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  5823. if ( selprcpclscd != "I2" && selprcpclscd != "I4") {
  5824. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  5825. cnt++;
  5826. }
  5827. }
  5828. if ( cnt > 0) {
  5829. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  5830. } else {
  5831. lf_prcpModal ( "SPMMO12800", xpt, ypt );
  5832. }
  5833. } else if ( prcpclscd == "C4" ) { //angio
  5834. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  5835. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  5836. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  5837. if ( selprcpclscd != prcpclscd ) {
  5838. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  5839. cnt++;
  5840. }
  5841. }
  5842. if ( cnt > 0) {
  5843. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  5844. } else {
  5845. lf_prcpModal ( "SPMMO12900", xpt, ypt );
  5846. }
  5847. } else if ( prcpclscd == "D2" ) { //병리
  5848. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  5849. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  5850. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  5851. if ( selprcpclscd != prcpclscd ) {
  5852. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  5853. cnt++;
  5854. }
  5855. }
  5856. if ( cnt > 0) {
  5857. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  5858. } else {
  5859. lf_prcpModal ( "SPMMO13000", xpt, ypt );
  5860. }
  5861. } else if ( prcpclscd == "M2" ) { //재료
  5862. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  5863. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  5864. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  5865. if ( selprcpclscd != prcpclscd ) {
  5866. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  5867. cnt++;
  5868. }
  5869. }
  5870. if ( cnt > 0) {
  5871. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  5872. } else {
  5873. lf_prcpModal ( "SPMMO13600", xpt, ypt );
  5874. }
  5875. } else if ( prcpclscd == "G2" ) { //RT
  5876. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  5877. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  5878. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  5879. if ( selprcpclscd != prcpclscd ) {
  5880. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  5881. cnt++;
  5882. }
  5883. }
  5884. if ( cnt > 0) {
  5885. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  5886. } else {
  5887. lf_prcpModal ( "SPMMO13700", xpt, ypt );
  5888. }
  5889. } else if ( prcpclscd == "H4" ) { //처치
  5890. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  5891. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  5892. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  5893. if ( selprcpclscd != prcpclscd ) {
  5894. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  5895. cnt++;
  5896. }
  5897. }
  5898. if ( cnt > 0) {
  5899. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  5900. } else {
  5901. lf_prcpModal ( "SPMMO13800", xpt, ypt );
  5902. }
  5903. } else if ( prcpclscd == "B4" ) { //수혈 (혈액수혈)
  5904. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  5905. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  5906. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  5907. if ( selprcpclscd != prcpclscd ) {
  5908. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  5909. cnt++;
  5910. }
  5911. }
  5912. if ( cnt > 0) {
  5913. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  5914. } else {
  5915. lf_prcpModal ( "SPMMO12500", xpt, ypt );
  5916. }
  5917. } else if ( fSubcretnoSet("3", null) == 0 ) { //kimsj 091230 임상시험환자이면서 문진처방의 경우 일괄입력 팝업
  5918. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  5919. if ( ds_main_prcplist.getColumn(selectedRows[i], "prcpcd") == "ACD0002" ) {
  5920. lf_prcpModal ( "SPMMO10400", xpt, ypt );
  5921. break;
  5922. }
  5923. }
  5924. }
  5925. ds_main_prcplist.enableevent = false;
  5926. fBatIpt ( "batipt_rtn1_useyn", "batipt_rtn1" );
  5927. ds_main_prcplist.enableevent = true;
  5928. }
  5929. /**@desc : 처방상세 일괄입력 공통
  5930. * @param :
  5931. * @return : void
  5932. * @authur : 마정민 2007. 6. 30
  5933. */
  5934. function fBatIpt ( useyn, rtn ) {
  5935. var rtn_useyn = frmf_getParameter ( useyn );
  5936. var rtn_value = "";
  5937. var header = "";
  5938. var useyn = "";
  5939. var value = "";
  5940. //M-SET모처방 일괄입력 적용여부, 희망일자 변경시 자처방의 희망일자를 동일하게 적용
  5941. //2008. 07. 22 오지훈
  5942. var mSetFlag = "";
  5943. var cmpInclPrcpNo = "";
  5944. if ( rtn_useyn == "Y" ) {
  5945. var rtn_value = frmf_getParameter ( rtn );
  5946. var rtn_Array = rtn_value.split("^");
  5947. var prcplen = rtn_Array[0].split("|").length;
  5948. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  5949. var cnclInptCnt = 0; // 입력 취소 rows 수 (2010.01.28 JJE)
  5950. var cnclInptTxt = ""; // 입력 취소 처방코드 (2010.01.28 JJE)
  5951. var skipSubCretno = "N" // 임상연구, 기왕증 동시체크 불가 처리 관련 체크 변수(2012.05.08 엄영만)
  5952. for ( var j = 0; j < selectedRows.length; j++ ){
  5953. skipSubCretno = "N"; // 변수초기화
  5954. var sPrcpHistCd = ds_main_prcplist.getColumn(selectedRows[j], "prcphistcd"); // 처방저장 상태
  5955. var sDrPrcpEtc9 = ds_main_prcplist.getColumn(selectedRows[j], "drprcpetc9"); // 사전심사 진행상태
  5956. if( sPrcpHistCd == "T" && sDrPrcpEtc9 != "-" && sDrPrcpEtc9 != "X") {
  5957. var sPrcpNm = ds_main_prcplist.getColumn(selectedRows[j], "prcpnm"); // 처방명칭
  5958. sysf_messageBox ( "사전심사 진행(대기/승인) 처방은 수정 할 수 없습니다.\n 처방명:" + sPrcpNm, "I999" );
  5959. continue;
  5960. }
  5961. for ( var i = 0; i < prcplen; i++ ) {
  5962. header = lf_getArrayData ( rtn_value, 0, i, "^", "|" );
  5963. useyn = lf_getArrayData ( rtn_value, 1, i, "^", "|" );
  5964. value = lf_getArrayData ( rtn_value, 2, i, "^", "|" );
  5965. var prcpcd = ds_main_prcplist.getColumn(selectedRows[j], "prcpcd");
  5966. var prcpclscd = ds_main_prcplist.getColumn(selectedRows[j], "prcpclscd");
  5967. var prcpinptflag = ds_main_prcplist.getColumn(selectedRows[j], "prcpinptflag");
  5968. var calcmthdcd = lf_getArrayData ( ds_main_prcplist.getColumn(selectedRows[j], "drugmastspec") , 0, 26, "^", "|" );
  5969. if ( useyn == "Y" ) {
  5970. if ( header == "prcpqty" ) { //수량이 바뀌면 용량도 바뀐다.
  5971. prcpvol = eval( ds_main_prcplist.getColumn(selectedRows[j], "prcpvol"));
  5972. bfprcpqty = eval( ds_main_prcplist.getColumn(selectedRows[j], "prcpqty"));
  5973. bfprcptims = eval( ds_main_prcplist.getColumn(selectedRows[j], "prcptims"));
  5974. drprcpetc7 = eval( ds_main_prcplist.getColumn(selectedRows[j], "drprcpetc7"));
  5975. bfdrprcpetc8 = eval( ds_main_prcplist.getColumn(selectedRows[j], "drprcpetc8"));
  5976. //start: 요청번호 9851, 인슐린주사제 변경 alert (2010.01.28 JJE)
  5977. var prcpcdTxt = ds_main_prcplist.getColumn(selectedRows[j], "prcpcd");
  5978. var prcpcdEndTxt = prcpcdTxt.substring(prcpcdTxt.length-1, prcpcdTxt.length);
  5979. if(ds_main_prcplist.getColumn(selectedRows[j], "tempcol2") == "05|04|09" && (prcpcdEndTxt == "J" || prcpcdEndTxt == "P") && parseFloat(value) < 1){
  5980. cnclInptCnt++;
  5981. cnclInptTxt = cnclInptTxt + ds_main_prcplist.getColumn(selectedRows[j], "prcpcd") + ", ";
  5982. //continue;
  5983. } //end
  5984. // 경북대 1회 용량 관련 내용 수정 2010. 12. 20 - 김영학 @@@@@
  5985. var colHidnValue = lf_grdBaseColHidn("D");
  5986. if (colHidnValue =="C") { // 1회용량 기준일 경우
  5987. var calcprcpvol = value / bfprcpqty * prcpvol * bfprcptims ;
  5988. var calcdrprcpetc7 = value / bfprcpqty * prcpvol;
  5989. var calcdrprcpetc8 = value;
  5990. if ( calcprcpvol.toString().indexOf(".") >= 0 ) {
  5991. calcprcpvol = calcprcpvol * 1000;
  5992. calcprcpvol = Math.round(calcprcpvol);
  5993. calcprcpvol = calcprcpvol / 1000;
  5994. }
  5995. value = value * bfprcptims;
  5996. } else { // 1일 용량 관련 기준일 경우
  5997. var calcprcpvol = value / bfprcpqty * prcpvol;
  5998. var calcdrprcpetc7 = value / bfprcpqty * prcpvol / bfprcptims;
  5999. var calcdrprcpetc8 = value / bfprcptims ;
  6000. if ( calcprcpvol.toString().indexOf(".") >= 0 ) {
  6001. calcprcpvol = calcprcpvol * 1000;
  6002. calcprcpvol = Math.round(calcprcpvol);
  6003. calcprcpvol = calcprcpvol / 1000;
  6004. }
  6005. }
  6006. ds_main_prcplist.setColumn(selectedRows[j], "prcpvol", calcprcpvol);
  6007. ds_main_prcplist.setColumn(selectedRows[j], "drprcpetc7", calcdrprcpetc7);
  6008. ds_main_prcplist.setColumn(selectedRows[j], "drprcpetc8", calcdrprcpetc8);
  6009. // 경북대 1회 용량 관련 내용 수정 END 2010. 12. 20 - 김영학
  6010. } else if ( header == "selfdrugflag" ) { // 자가보유처방은 일괄팝업에 의해 일부 기능은 설정되지 않는다.
  6011. if (prcpinptflag == "35"){
  6012. continue;
  6013. }
  6014. } else if ( header == "payflagcd" ) {
  6015. if (prcpinptflag == "35"){
  6016. continue;
  6017. }
  6018. } else if ( header == "prepprcpflag" ) {
  6019. if (prcpinptflag == "35"){
  6020. continue;
  6021. }
  6022. } else if ( header == "drugrateqty" ) {
  6023. value = frmf_getParameter ( "SPMMO12100_drugrateqty" );
  6024. } else if ( header == "contprcpspec" ) {
  6025. value = frmf_getParameter ( "SPMMO12200_contprcpspec" );
  6026. } else if ( header == "prcptims" ) {
  6027. //응급일때는 횟수와 용법을 자동으로 바꿔주는데 응급이 제일먼저 setting 함으로 continue 한다.
  6028. if (ds_main_prcplist.getColumn(selectedRows[j], "erprcpflag") == "Y" ) continue;
  6029. if (ds_main_prcplist.getColumn(selectedRows[j], "prnprcpflag") == "Y" ) continue;
  6030. if ( frmf_getParameter ( "SPMMO12100_chgmthd" ) == "Y" ) {
  6031. ds_main_prcplist.setColumn(selectedRows[j], "prcptims", value); // 기본용법을 가져 오기 위해 예외적으로 미리 값을 셋팅 한다.
  6032. fBaseMthd(selectedRows[j]);
  6033. }
  6034. if(calcmthdcd == "1"){
  6035. // 경북대 1회 용량 관련 내용 수정 2010. 12. 20 - 김영학
  6036. bfprcpvol = eval( ds_main_prcplist.getColumn(selectedRows[j], "prcpvol"));
  6037. bfprcpqty = eval( ds_main_prcplist.getColumn(selectedRows[j], "prcpqty"));
  6038. prcptims = eval( ds_main_prcplist.getColumn(selectedRows[j], "prcptims"));
  6039. bfdrprcpetc7 = eval( ds_main_prcplist.getColumn(selectedRows[j], "drprcpetc7"));
  6040. bfdrprcpetc8 = eval( ds_main_prcplist.getColumn(selectedRows[j], "drprcpetc8"));
  6041. var colHidnValue = lf_grdBaseColHidn("D");
  6042. if (colHidnValue =="C") { // 1회용량 기준일 경우
  6043. var calcprcpvol = bfdrprcpetc7 * value;
  6044. var calcprcpqty = bfdrprcpetc8 * value;
  6045. var calcdrprcpetc7 = bfdrprcpetc7;
  6046. var calcdrprcpetc8 = bfdrprcpetc8;
  6047. } else { // 1일 용량 관련 기준일 경우
  6048. var calcprcpvol = bfprcpvol;
  6049. var calcprcpqty = bfprcpqty;
  6050. var calcdrprcpetc7 = bfdrprcpetc7 / value;
  6051. var calcdrprcpetc8 = bfdrprcpetc8 / value;
  6052. }
  6053. ds_main_prcplist.setColumn(selectedRows[j], "prcpvol", calcprcpvol);
  6054. ds_main_prcplist.setColumn(selectedRows[j], "prcpqty", calcprcpqty);
  6055. ds_main_prcplist.setColumn(selectedRows[j], "drprcpetc7", calcdrprcpetc7);
  6056. ds_main_prcplist.setColumn(selectedRows[j], "drprcpetc8", calcdrprcpetc8);
  6057. }
  6058. // 경북대 1회 용량 관련 내용 수정 ENd 2010. 12. 20 - 김영학
  6059. } else if ( header == "erprcpflag" ) {
  6060. if (prcpinptflag == "35"){
  6061. continue;
  6062. } else {
  6063. if ( value == "Y") {
  6064. if( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) { // 약품처방 응급
  6065. var prcptims = ds_main_prcplist.getColumn(selectedRows[j], "prcptims");
  6066. if ( prcptims != "1" ) {
  6067. //1이 아닌 경우는 1로 바꿔주고 경구약인 경우는 용법도 바꿔준다.
  6068. var prcpqty = ds_main_prcplist.getColumn(selectedRows[j], "prcpqty");
  6069. var prcpvol = ds_main_prcplist.getColumn(selectedRows[j], "prcpvol");
  6070. if ( prcptims != "0" && ( prcpclscd == "A2" || prcpclscd == "A6" )) {
  6071. prcpqty = (eval(prcpqty)*1000/eval(prcptims));
  6072. prcpvol = (eval(prcpvol)*1000/eval(prcptims));
  6073. ds_main_prcplist.setColumn(selectedRows[j], "prcpqty", Math.round ( prcpqty ) / 1000);
  6074. ds_main_prcplist.setColumn(selectedRows[j], "prcpvol", Math.round ( prcpvol ) / 1000);
  6075. }
  6076. ds_main_prcplist.setColumn(selectedRows[j], "prcptims", "1");
  6077. }
  6078. if ( ds_main_prcplist.getColumn(selectedRows[j], "prcpclscd") == "A2" ) {
  6079. ds_main_prcplist.setColumn(selectedRows[j], "erprcpflag", "Y"); // 응급용법을 가져 오기 위해 예외적으로 미리 값을 셋팅 한다.
  6080. fBaseMthd(selectedRows[j]);
  6081. }
  6082. } else if( prcpclscd == "M2" && sysf_getUserInfo("dutplceinstcd") == "031") { // 재료 처방 응급
  6083. continue;
  6084. }
  6085. } else if (value == "N" && ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" )) {
  6086. ds_main_prcplist.setColumn(selectedRows[j], "erprcpflag", "N"); // 응급용법을 가져 오기 위해 예외적으로 미리 값을 셋팅 한다.
  6087. }
  6088. if ( ds_main_prcplist.getColumn(selectedRows[j], "prcpclscd") == "A2" ) {
  6089. fBaseMthd(selectedRows[j]);
  6090. }
  6091. }
  6092. } else if ( header == "prnprcpflag" ) {
  6093. if ( value == "Y" && ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" )) {
  6094. var prcptims = ds_main_prcplist.getColumn(selectedRows[j], "prcptims");
  6095. if ( prcptims != "1" ) {
  6096. //1이 아닌 경우는 1로 바꿔주고 경구약인 경우는 용법도 바꿔준다.
  6097. var prcpqty = ds_main_prcplist.getColumn(selectedRows[j], "prcpqty");
  6098. var prcpvol = ds_main_prcplist.getColumn(selectedRows[j], "prcpvol");
  6099. if ( prcptims != "0" && ( prcpclscd == "A2" || prcpclscd == "A6" )) {
  6100. prcpqty = (eval(prcpqty)*1000/eval(prcptims));
  6101. prcpvol = (eval(prcpvol)*1000/eval(prcptims));
  6102. ds_main_prcplist.setColumn(selectedRows[j], "prcpqty", Math.round ( prcpqty ) / 1000);
  6103. ds_main_prcplist.setColumn(selectedRows[j], "prcpvol", Math.round ( prcpvol ) / 1000);
  6104. }
  6105. ds_main_prcplist.setColumn(selectedRows[j], "prcptims", "1");
  6106. if ( ds_main_prcplist.getColumn(selectedRows[j], "prcpclscd") == "A2" ) {
  6107. fBaseMthd(selectedRows[j]);
  6108. }
  6109. }
  6110. }
  6111. if (value == "Y") {
  6112. ds_main_prcplist.setColumn(selectedRows[j], "tempprcpflag", "Y");
  6113. }else if (value == "N"){
  6114. ds_main_prcplist.setColumn(selectedRows[j], "tempprcpflag", "N");
  6115. }
  6116. } else if ( header == "drugmthdspccd" ) {
  6117. if (prcpclscd == "A2" ){ //응급 용법자동바뀜은 A2만 함
  6118. //응급을 제일먼저 setting 함으로 체크 조건에 넣어도 상관없다.
  6119. if (ds_main_prcplist.getColumn(selectedRows[j], "erprcpflag") == "Y" ) continue;
  6120. }
  6121. } else if ( header == "prcphopedd" ) {
  6122. //M-SET 자처방의 경우 처방희망일자는 일괄변경 변경처리 하지 않음
  6123. //2008. 07. 22 오지훈
  6124. var prcpsetcd = ds_main_prcplist.getColumn(selectedRows[j], "prcpsetcd");
  6125. var inclprcpno = ds_main_prcplist.getColumn(selectedRows[j], "inclprcpno");
  6126. if(prcpsetcd != "-" && inclprcpno > 0){ //M-SET의 자처방인 경우, skip
  6127. continue;
  6128. }else if(prcpsetcd == "-" && inclprcpno > 0){ //M-SET의 모처방인 경우, 일괄적용 이후 희망일자를 자처방에 모두 적용
  6129. mSetFlag = "Y";
  6130. cmpInclPrcpNo = inclprcpno;
  6131. cmpPrcpHopeDD = value;
  6132. }
  6133. } else if ( header == "selfprcpflag" ) {
  6134. //지정일을 지정을 할 수 없다.
  6135. for ( var k = 0; k < selectedRows.length; k++ ){
  6136. if (ds_main_prcplist.getColumn(selectedRows[k], "prcpclscd" ) == "A6"){
  6137. ds_main_prcplist.setColumn(selectedRows[k], "contprcpspec", "-" );
  6138. }
  6139. }
  6140. } else if ( header == "hosinhosoutflag" ){ //by sonjy 20080912 추가 원내 변경시 원내사유 우선순위를 따르도록 수정. start
  6141. lf_hosinPrcpResncdSed ( "", "ds_main_prcplist", selectedRows[j] );
  6142. continue ;
  6143. } else if ( header == "hosinprcpresncd" ){ //by sonjy 20081003 원외전용 처방시 환자사유가 들어오는 경우가 있음.
  6144. lf_hosinPrcpResncdSed ( "", "ds_main_prcplist", selectedRows[j], value );
  6145. continue ; //by sonjy 20080912 추가 원내 변경시 원내사유 우선순위를 따르도록 수정. end
  6146. } else if ( header == "rsrvflag" ) {
  6147. header = "prcphopedd" ;
  6148. } else if ( header == "prcpdayno" ) {
  6149. //by sonjy 20091019 수가계산법 4일 경우 처방일수는 1로 고정
  6150. var drugmastspec = ds_main_prcplist.getColumn(selectedRows[j], "drugmastspec");
  6151. var calcmthdcd = lf_getArrayData ( drugmastspec , 0, 26, "^", "|" );
  6152. if( (prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) && calcmthdcd == "4" ){
  6153. ds_main_prcplist.setColumn(selectedRows[j], "prcpdayno", "1");
  6154. continue ;
  6155. }
  6156. } else if ( header == "anamneflag" ) { // 기왕증 변경시 기존 처방이 임상연구가 체크 되어 있으면 skip, 원무부유형(subcretno)도 skip (2012.05.08 엄영만)
  6157. if (ds_main_prcplist.getColumn(selectedRows[j], "clincstdyflag") == "Y" ) {
  6158. sysf_messageBox ( "처방코드[" + prcpcd + "]는 임상연구 처방이므로 기왕증을 적용 할 수", "I004" );
  6159. skipSubCretno = "Y";
  6160. continue;
  6161. }
  6162. } else if ( header == "clincstdyflag" ) { // 임상연구 변경시 기존 처방이 기완증이 체크 되어 있으면 skip, 원무부유형(subcretno)도 skip (2012.05.08 엄영만)
  6163. if (ds_main_prcplist.getColumn(selectedRows[j], "anamneflag" ) == "Y" ) {
  6164. sysf_messageBox ( "처방코드[" + prcpcd + "]는 기왕증 처방이므로 임상연구을 적용 할 수", "I004" );
  6165. skipSubCretno = "Y";
  6166. continue;
  6167. }
  6168. } else if ( header == "subcretno" ) { // 원무부유형(subcretno) (2012.05.08 엄영만)
  6169. if (skipSubCretno == "Y" ) {
  6170. continue;
  6171. }
  6172. }
  6173. gGridUpdateChk("det_pack", j); // 임시저장 수정 모드
  6174. ds_main_prcplist.setColumn(selectedRows[j], "" + header, value);
  6175. lf_makePrcpNm( "ds_main_prcplist", selectedRows[j]);
  6176. }
  6177. }
  6178. fSetCpVal(selectedRows[j], "U");
  6179. }
  6180. //start: 요청번호 9851, 인슐린주사제 변경 alert (2010.01.28 JJE)
  6181. if( cnclInptCnt > 0 ){
  6182. cnclInptTxt = cnclInptTxt.substr(0, cnclInptTxt.length - 2);
  6183. sysf_messageBox(cnclInptTxt + "\n\n소량 처방을 원하시는 경우에는\nUNIT 단위 코드(원 처방의 끝자리 J나 P를 뺀 코드)로 변경 처방하여 주시기 바랍니다.", "I");
  6184. } //end
  6185. }
  6186. //M-SET 모처방의 희망일자 변경인 경우, 선택되지 않은 자처방 포함하여 희망일자를 모두 변경
  6187. if(mSetFlag == "Y"){
  6188. for(var i = 0; i < ds_main_prcplist.rowcount; i++){
  6189. if(cmpInclPrcpNo == ds_main_prcplist.getColumn(i, "inclprcpno")){
  6190. ds_main_prcplist.setColumn(i, "prcphopedd", cmpPrcpHopeDD);
  6191. }
  6192. }
  6193. }
  6194. frmf_setParameter( "batipt_rtn1_useyn", "");
  6195. }
  6196. /**@desc : 그리드에서 멀티 select후 일괄입력
  6197. * @param :
  6198. * @return : void
  6199. * @authur : 마정민 2007. 7. 24
  6200. */
  6201. function fGridfBatIpt( flag ) {
  6202. var nCurrow = ds_main_prcplist.rowposition;
  6203. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  6204. if ( selectedRows.length < 1) return;
  6205. if ( flag == "prcpdayno" ) {
  6206. var prcpdayno = ds_main_prcplist.getColumn(nCurrow, "prcpdayno");
  6207. var drugmastspec = "";
  6208. var calcmthdcd = "";
  6209. for ( var j = 0; j < selectedRows.length; j++ ){
  6210. var statuschk = ds_main_prcplist.getColumn(selectedRows[j], "status");
  6211. if ( statuschk != "S" || statuschk != "D" ) {
  6212. ds_main_prcplist.setColumn(selectedRows[j], "prcpdayno", prcpdayno);
  6213. //by sonjy 20091019 요청번호:3667
  6214. //외래처방, 입원처방 모두에서, 수가 계산법 4번인 약품(경구, 주사, 외용 상관없이 계산법으로)을 처방할 때
  6215. //처방일수가 1일이 되면서 수정할 수 없도록
  6216. drugmastspec = ds_main_prcplist.getColumn(selectedRows[j], "drugmastspec");
  6217. calcmthdcd = lf_getArrayData ( drugmastspec , 0, 26, "^", "|" );
  6218. if( (prcpclscd = "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) && calcmthdcd == "4" ) {
  6219. ds_main_prcplist.setColumn(selectedRows[j], "prcpdayno" , "1" );
  6220. }
  6221. gGridUpdateChk("pack", j); // 임시저장 수정 모드
  6222. fSetCpVal(selectedRows[j], "U");
  6223. }
  6224. }
  6225. } else if ( flag == "prcptims" ){
  6226. var prcptims = ds_main_prcplist.getColumn(nCurrow, "prcptims");
  6227. for ( var j = selectedRows.length - 1; j >= 0; j-- ){
  6228. bfDrugCalc ( "prcptims", selectedRows[j]); //횟수 수정 시 용량,수량 보정을 위해 호출 추가(2010.01.02 전지은)
  6229. ds_main_prcplist.setColumn(selectedRows[j], "prcptims", prcptims );
  6230. DrugCalc ( "prcptims" , selectedRows[j] );
  6231. fBaseMthd(selectedRows[j]);
  6232. gGridUpdateChk("pack", j); // 임시저장 수정 모드
  6233. fSetCpVal(selectedRows[j], "U");
  6234. }
  6235. } else if ( flag == "prcpqty" ){
  6236. var prcpqty = ds_main_prcplist.getColumn(nCurrow, "prcpqty");
  6237. var cnclInptCnt = 0; // 입력 취소 rows 수 (2010.01.28 JJE)
  6238. var cnclInptTxt = ""; // 입력 취소 처방코드 (2010.01.28 JJE)
  6239. for ( var j = selectedRows.length - 1; j >= 0; j-- ){
  6240. //마지막 selectedRows-1은 자체적으로 계산됨으로 뺐다.
  6241. var statuschk = ds_main_prcplist.getColumn(selectedRows[j], "status");
  6242. if ( statuschk != "S" || statuschk != "D" ) {
  6243. //start: 요청번호 9851, 인슐린주사제 변경 alert (2010.01.28 JJE)
  6244. var prcpcdTxt = ds_main_prcplist.getColumn(selectedRows[j], "prcpcd");
  6245. var prcpcdEndTxt = prcpcdTxt.substring(prcpcdTxt.length-1, prcpcdTxt.length);
  6246. if(ds_main_prcplist.getColumn(selectedRows[j], "tempcol2") == "05|04|09" && (prcpcdEndTxt == "J" || prcpcdEndTxt == "P") && parseFloat(prcpqty) < 1){
  6247. cnclInptCnt++;
  6248. cnclInptTxt = cnclInptTxt + ds_main_prcplist.getColumn(selectedRows[j], "prcpcd") + ", ";
  6249. //continue;
  6250. } //end
  6251. bfDrugCalc ( "prcpqty", selectedRows[j]);
  6252. ds_main_prcplist.setColumn(selectedRows[j], "prcpqty", prcpqty);
  6253. DrugCalc ( "prcpqty", selectedRows[j] );
  6254. gGridUpdateChk("pack", j); // 임시저장 수정 모드
  6255. fSetCpVal(selectedRows[j], "U");
  6256. }
  6257. }
  6258. //start: 요청번호 9851, 인슐린주사제 변경 alert (2010.01.28 JJE)
  6259. if( cnclInptCnt > 0 ){
  6260. cnclInptTxt = cnclInptTxt.substr(0, cnclInptTxt.length-2);
  6261. sysf_messageBox(cnclInptTxt + "\n\n소량 처방을 원하시는 경우에는\nUNIT 단위 코드(원 처방의 끝자리 J나 P를 뺀 코드)로 변경 처방하여 주시기 바랍니다.", "I");
  6262. } //end
  6263. // 경북대 1회 용량관련 내용추가 : 2010. 12. 20 - 김영학
  6264. } else if (flag == "drprcpetc8") {
  6265. var drprcpetc8 = ds_main_prcplist.getColumn(nCurrow, "drprcpetc8");
  6266. var cnclInptCnt = 0; // 입력 취소 rows 수 (2010.01.28 JJE)
  6267. var cnclInptTxt = ""; // 입력 취소 처방코드 (2010.01.28 JJE)
  6268. for ( var j = selectedRows.length - 1; j >= 0; j-- ){
  6269. //마지막 selectedRows-1은 자체적으로 계산됨으로 뺐다.
  6270. var statuschk = ds_main_prcplist.getColumn(selectedRows[j], "status");
  6271. if ( statuschk != "S" || statuschk != "D" ) {
  6272. //start: 요청번호 9851, 인슐린주사제 변경 alert (2010.01.28 JJE)
  6273. var prcpcdTxt = ds_main_prcplist.getColumn(selectedRows[j], "prcpcd");
  6274. var prcpcdEndTxt = prcpcdTxt.substring(prcpcdTxt.length-1, prcpcdTxt.length);
  6275. if(ds_main_prcplist.getColumn(selectedRows[j], "tempcol2") == "05|04|09" && (prcpcdEndTxt == "J" || prcpcdEndTxt == "P") && parseFloat(prcpqty) < 1){
  6276. cnclInptCnt++;
  6277. cnclInptTxt = cnclInptTxt + ds_main_prcplist.getColumn(selectedRows[j], "prcpcd") + ", ";
  6278. //continue;
  6279. } //end
  6280. bfDrugCalc ( "drprcpetc8", selectedRows[j]);
  6281. ds_main_prcplist.setColumn(selectedRows[j], "drprcpetc8", drprcpetc8);
  6282. DrugCalc ( "drprcpetc8" , selectedRows[j] );
  6283. gGridUpdateChk("pack", j); // 임시저장 수정 모드
  6284. fSetCpVal(selectedRows[j], "U");
  6285. }
  6286. }
  6287. //start: 요청번호 9851, 인슐린주사제 변경 alert (2010.01.28 JJE)
  6288. if( cnclInptCnt > 0 ){
  6289. cnclInptTxt = cnclInptTxt.substr(0, cnclInptTxt.length-2);
  6290. sysf_messageBox(cnclInptTxt + "\n\n소량 처방을 원하시는 경우에는\nUNIT 단위 코드(원 처방의 끝자리 J나 P를 뺀 코드)로 변경 처방하여 주시기 바랍니다.", "I");
  6291. } //end
  6292. }
  6293. // 경북대 1회 용량관련 내용추가 END : 2010. 12. 20 - 김영학
  6294. if ( flag == "payflagcd" ) {
  6295. var payflagcd = ds_main_prcplist.getColumn(nCurrow, "payflagcd");
  6296. for ( var j = 0; j < selectedRows.length; j++ ){
  6297. var statuschk = ds_main_prcplist.getColumn(selectedRows[j], "status");
  6298. if ( statuschk != "S" || statuschk != "D" ) {
  6299. var tempcol2 = ds_main_prcplist.getColumn(selectedRows[j], "tempcol2");
  6300. var findRow = ds_initsrch_earnclsauto.findRowExpr("earnclsflag == '1' && earnclscd ='" + tempcol2 + "'");
  6301. var earnclscd = ds_initsrch_earnclsauto.getColumn(findRow, "earnclscd");
  6302. if ( !utlf_isNull(earnclscd) && payflagcd == "1") {
  6303. sysf_messageBox ( "영상MRI 및 핵의학 PET CT, MRI는 급여구분이 '급여/일반'만", "I006" );
  6304. ds_main_prcplist.setColumn(selectedRows[j], "payflagcd", ds_init.getColumn(0, "bfpayflagcd"));
  6305. } else if (tempcol2 == "24|01|01" && payflagcd == "0" ) { // 2011.07.05 엄영만 수익분류 의료영상복사-CD 복사-CD copy 안내 메세지 원무 최인영(5069) 요청
  6306. sysf_messageBox ( "CD Copy 및 제증명료는 비급여로 처방", "I006" );
  6307. ds_main_prcplist.setColumn(selectedRows[j], "payflagcd", payflagcd);
  6308. ds_init.setColumn(0, "bfpayflagcd", payflagcd );
  6309. } else {
  6310. ds_main_prcplist.setColumn(selectedRows[j], "payflagcd", payflagcd);
  6311. ds_init.setColumn(0, "bfpayflagcd", payflagcd );
  6312. }
  6313. }
  6314. gGridUpdateChk("pack", j); // 임시저장 수정 모드
  6315. fSetCpVal(selectedRows[j], "U");
  6316. lf_makePrcpNm("ds_main_prcplist", selectedRows[j]);
  6317. }
  6318. } else if ( flag == "prcpkindcd" ) {
  6319. var prcpkindcd = ds_main_prcplist.getColumn(nCurrow, "prcpkindcd");
  6320. var prcpclscd = "";
  6321. for ( var j = 0; j < selectedRows.length; j++ ){
  6322. var statuschk = ds_main_prcplist.getColumn(selectedRows[j], "status");
  6323. if ( statuschk != "S" || statuschk != "D" ) {
  6324. ds_main_prcplist.setColumn(selectedRows[j], "prcpkindcd", prcpkindcd );
  6325. //응급이고, 퇴원처방이면
  6326. if ( ds_patflag.getColumn(0, "prcpgenrflag") == "E" && prcpkindcd == "60" ){
  6327. prcpclscd = ds_main_prcplist.getColumn(selectedRows[j], "prcpclscd");
  6328. //응급환자가 아니면 원내처리
  6329. if ( ds_init.getColumn(0, "erresn") != "G3"
  6330. && (prcpclscd == "A2" || prcpclscd=="A4" || prcpclscd == "A6") ) { //by sonjy 20081012 추가 . 약/주사에만 원내외 적용하도록.
  6331. ds_main_prcplist.setColumn(selectedRows[j], "hosinhosoutflag", "O");
  6332. ds_main_prcplist.setColumn(selectedRows[j], "hosinprcpresncd", "00");
  6333. }
  6334. }
  6335. var prcpclscd = ds_main_prcplist.getColumn(selectedRows[j], "prcpclscd");
  6336. var drugmastspec = ds_main_prcplist.getColumn(selectedRows[j], "drugmastspec");
  6337. var selfls = lf_getArrayData ( drugmastspec, 0, 34, "^", "|" );
  6338. //외래, 외출외박, 퇴원은 HOME 자동체크
  6339. if ( prcpkindcd == "50" || prcpkindcd == "60" ) {
  6340. if ( prcpclscd == "A6" && lf_getArrayData (drugmastspec, 0, 20, "^", "|" ) == "Y" ) {
  6341. ds_main_prcplist.setColumn(selectedRows[j], "selfprcpflag", "Y");
  6342. if (selfls == "Y" ){ // 20101018 LYJ 주사제 상세용법 자동 팝업 . 상세용법입력이 필수인 home 처방은 상세팝업을 자동 호출하며 용법이 입력되지 않을 시 삭제처리한다.
  6343. var prcpClsCd = ds_main_prcplist.getColumn(selectedRows[j], "prcpclscd" );
  6344. var mon = sysf_getCurrentMonitorNumber();
  6345. var xpt = getScreenCenterPoint(0, 380);
  6346. var ypt = getScreenCenterPoint(1, 119);
  6347. dsf_createDs("ds_main_prcplist_selected");
  6348. dsf_copyColInfo(ds_main_prcplist_selected, ds_main_prcplist);
  6349. ds_main_prcplist_selected.addRow();
  6350. ds_main_prcplist_selected.copyRow(0, ds_main_prcplist, selectedRows[j]);
  6351. var objArg = new Object();
  6352. objArg.arg_ds_main_prcplist = ds_main_prcplist_selected;
  6353. frmf_modal("SPMMO01200", "SPMMO01200", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  6354. dsf_deleteDs("ds_main_prcplist_selected");
  6355. if ( frmf_getParameter("SPMMO01200_selfprcpflag") == "N"){
  6356. ds_main_prcplist.deleteRow(selectedRows[j]);
  6357. ds_main_prcplist.applyChange();
  6358. frmf_clearParameter ( "SPMMO01200_selfprcpflag" );
  6359. return false;
  6360. } else {
  6361. lf_prcpDetlApp ( prcpClsCd, "ds_prcptemp_prcplist", "ds_main_prcplist", selectedRows[j]);
  6362. }
  6363. }
  6364. }
  6365. } else {
  6366. if ( ds_main_prcplist.getColumn(selectedRows[j], "selfprcpflag") == "Y" ) {
  6367. ds_main_prcplist.setColumn(selectedRows[j], "selfprcpflag", "N");
  6368. ds_main_prcplist.setColumn(selectedRows[j], "diagtestconttestcdspec", "-");
  6369. }
  6370. }
  6371. //20080729 마정민 수정. 수혈이고 외래가 아니면 퇴원후외래, 입원전검사를 외래처리해준다.
  6372. if ( prcpclscd == "B4" && ds_patflag.getColumn(0, "prcpgenrflag") != "O" ) {
  6373. if ( prcpkindcd == "70" || prcpkindcd == "90" || prcpkindcd == "95" ) { //20080729 마정민 수정. 수혈이고 외래가 아니면 퇴원후외래, 입원전검사를 외래처리해준다.
  6374. ds_main_prcplist.setColumn(selectedRows[j], "prepprcpflag", "N");
  6375. } else {
  6376. ds_main_prcplist.setColumn(selectedRows[j], "prepprcpflag", "Y");
  6377. }
  6378. }
  6379. }
  6380. gGridUpdateChk("pack", j); // 임시저장 수정 모드
  6381. fSetCpVal(selectedRows[j], "U");
  6382. lf_makePrcpNm("ds_main_prcplist", selectedRows[j]);
  6383. }
  6384. } else if ( flag == "prcphopedd" ){ // 희망일자 멀티 변경 요청 - 20081023 by MoonSH
  6385. var prcphopedd = ds_main_prcplist.getColumn(nCurrow, "prcphopedd");
  6386. for( var j = 0; j < selectedRows.length; j++) {
  6387. var statuschk = ds_main_prcplist.getColumn(selectedRows[j], "status");
  6388. if( statuschk != "S" || statuschk != "D" )
  6389. ds_main_prcplist.setColumn(selectedRows[j], "prcphopedd", prcphopedd );
  6390. gGridUpdateChk("pack", j); // 임시저장 수정 모드
  6391. fSetCpVal(selectedRows[j], "U");
  6392. }
  6393. }
  6394. //grd_prcplist.row = nCurrow;
  6395. }
  6396. /**@desc : 병리의뢰지 호출하기
  6397. * @param : curRow: 호출 row
  6398. : flag: 처방복사시 호출하면 refresh 시켜주면서 어느 row의 팝업인지 알게함
  6399. * @return : void
  6400. * @authur : 마정민 2007. 5. 9
  6401. */
  6402. function fReqfrm ( curRow, flag, srcNode ) {
  6403. var newFlag = "Y";
  6404. var mon = this.getOwnerFrame().form.sysf_getCurrentMonitorNumber();
  6405. var xpt = this.getOwnerFrame().position.x + 100;
  6406. var ypt = this.getOwnerFrame().position.y + 100;
  6407. var scrID = frmf_getScreenID();
  6408. var pid = 0;
  6409. if( utlf_isNull(srcNode) ){
  6410. if ( scrID == "SMMMO02100") { // 전회처방 화면
  6411. srcNode = "ds_prcpsrch_prcplist";
  6412. curRow = ds_prcpsrch_prcplist.rowposition;
  6413. pid = oOpener.ds_paminfo.getColumn(0, "pid");
  6414. } else { // 기타 화면
  6415. srcNode = "ds_main_prcplist"; //파라메터 추가함(2008.03.11)
  6416. if( utlf_isNull(curRow) ){ //조건추가(2008.08.05 JJE)
  6417. curRow = ds_main_prcplist.rowposition;
  6418. }
  6419. pid = ds_paminfo.getColumn(0, "pid");
  6420. }
  6421. newFlag = "N"; //오른쪽 마우스 클릭은 새로나오는 처방은 아님.
  6422. }
  6423. var ds_src = this.objects[srcNode];
  6424. var prcpclscd = ds_src.getColumn(curRow, "prcpclscd");
  6425. var prcpflag = ds_src.getColumn(curRow, "prcpflag");
  6426. var drugmastspec = ds_src.getColumn(curRow, "drugmastspec") + "^";
  6427. var drugmthdspccd = ds_src.getColumn(curRow, "drugmthdspccd");
  6428. if ( prcpclscd == "D2" ) {
  6429. /* ==================
  6430. 전달값
  6431. ==================
  6432. pid : 등록번호(필수)
  6433. prcpcd : 처방코드(필수)
  6434. prcpnm : 처방명(필수)
  6435. opnm : 수술명(옵션)
  6436. spccd : 검체코드(필수)
  6437. spcnm : 검체명(옵션)
  6438. reqno : 의뢰지번호(신규 작성시에는 '0', 작성된 의뢰지를 조회/수정할 경우는 해당 의뢰지번호) - 필수
  6439. reqhistno : 의뢰지 이력번호(옵션)
  6440. scrnno : 화면번호(10:처방화면, 20:채혈화면, 30:병리과 추가처방화면, 40:병리과 접수화면) */
  6441. ds_hidden_reqfrminfo.clearData();
  6442. ds_hidden_reqfrminfo.addRow();
  6443. ds_hidden_reqfrminfo.setColumn(0, "pid", pid);
  6444. ds_hidden_reqfrminfo.setColumn(0, "prcpcd", ds_src.getColumn(curRow, "prcpcd"));
  6445. ds_hidden_reqfrminfo.setColumn(0, "prcpnm", ds_src.getColumn(curRow, "orgprcpnm"));
  6446. ds_hidden_reqfrminfo.setColumn(0, "prcpstatcd", ds_src.getColumn(curRow, "prcpstatcd"));
  6447. if ( ds_src.getColumn(curRow, "optermcd") != "-" ) {
  6448. ds_hidden_reqfrminfo.setColumn(0, "opnm", ds_src.getColumn(curRow, "prcpnm"));
  6449. }
  6450. ds_hidden_reqfrminfo.setColumn(0, "spccd", ds_src.getColumn(curRow, "drugmthdspccd"));
  6451. ds_hidden_reqfrminfo.setColumn(0, "spcnm", ds_src.getColumn(curRow, "drugmthdspccdnm"));
  6452. if ( newFlag == "N" ) {
  6453. if ( scrID == "SMMMO02100") { //전처방 화면에서만 의뢰시 번호 셋팅.
  6454. ds_hidden_reqfrminfo.setColumn(0, "reqno", ds_src.getColumn(curRow, "testreqlnkno"));
  6455. } else {
  6456. ds_hidden_reqfrminfo.setColumn(0, "reqno", "0");
  6457. }
  6458. }
  6459. ds_hidden_reqfrminfo.setColumn(0, "scrnno", "10");
  6460. ds_hidden_reqfrminfo.setColumn(0, "patnm", ds_paminfo.getColumn(0, "hngnm"));
  6461. if( srcNode == "ds_main_prcplist" ){ //2008.03.11 수정(CP 추가)
  6462. ds_hidden_reqfrminfo_prcplist.copyData(ds_main_prcplist);
  6463. }else{
  6464. ds_hidden_reqfrminfo_prcplist.copyData(ds_src);
  6465. }
  6466. var popwndflagcd = lf_getArrayData (drugmastspec, 0, 4, "^", "|" );
  6467. if ( popwndflagcd == "1" ) { // 당일저장된 것이 있으면 자동으로 끌고온다.
  6468. fCpInPrcpVisible();
  6469. ds_hidden_reqfrminfo.setColumn(0, "instcd", sysf_getUserInfo("dutplceinstcd"));
  6470. ds_hidden_reqfrminfo.setColumn(0, "tday", ds_init.getColumn(0, "prcpdd"));
  6471. var xpt1 = this.getOwnerFrame().position.x + 0;
  6472. var ypt1 = this.getOwnerFrame().position.y + 0;
  6473. var objArg = new Object();
  6474. objArg.arg_ds_hidden_reqfrminfo = ds_hidden_reqfrminfo;
  6475. objArg.arg_ds_hidden_reqfrminfo_prcplist = ds_hidden_reqfrminfo_prcplist;
  6476. frmf_modal("SPLPJ01900", "SPLPJ01900", objArg, false, mon, xpt1, ypt1, 0, 0, null, null, null, "P");
  6477. } else {
  6478. reqfrmflagcd = lf_getArrayData (drugmastspec, 0, 3, "^", "|" );
  6479. if ( reqfrmflagcd == "01" || reqfrmflagcd == "02" || reqfrmflagcd == "03" || reqfrmflagcd == "05" || reqfrmflagcd == "08") {
  6480. fCpInPrcpVisible();
  6481. }
  6482. var xpt1 = this.getOwnerFrame().position.x + 10;
  6483. var ypt1 = this.getOwnerFrame().position.y + 10;
  6484. var objArg = new Object();
  6485. objArg.arg_ds_hidden_reqfrminfo = ds_hidden_reqfrminfo;
  6486. objArg.arg_ds_hidden_reqfrminfo_prcplist = ds_hidden_reqfrminfo_prcplist;
  6487. switch ( reqfrmflagcd ) { // 의뢰지 구분코드에 따라 호출화면을 선택
  6488. case "01" : // 조직의뢰지
  6489. frmf_modal("SPLPJ01500", "SPLPJ01500", objArg, false, mon, xpt1, ypt1, null, null, null, null, null, "M");
  6490. break;
  6491. case "02" : // 부인과의뢰지
  6492. frmf_modal("SPLPJ01400", "SPLPJ01400", objArg, false, mon, xpt1, ypt1, null, null, null, null, null, "M");
  6493. break;
  6494. case "03" : // 비부인과의뢰지
  6495. frmf_modal("SPLPJ01300", "SPLPJ01300", objArg, false, mon, xpt1, ypt1, null, null, null, null, null, "M");
  6496. break;
  6497. //case "04" : // 세침흡인 의뢰지(개발중)
  6498. // modal("SPLPJ01400",mon, xpt, ypt,"SPLPJ01400","/root/hidden/reqfrminfo","/root/hidden/reqfrminfo");
  6499. // break;
  6500. case "05" : // 분자병리의뢰지
  6501. frmf_modal("SPLPJ01200", "SPLPJ01200", objArg, false, mon, xpt1, ypt1, null, null, null, null, null, "M");
  6502. break;
  6503. //case "06" : // 세포유전의뢰지
  6504. // modal("SPLPJ01200",mon, xpt, ypt,"SPLPJ01200","/root/hidden/reqfrminfo","/root/hidden/reqfrminfo");
  6505. // break;
  6506. //case "07" : // 부검의뢰지
  6507. // modal("SPLPJ01200",mon, xpt, ypt,"SPLPJ01200","/root/hidden/reqfrminfo","/root/hidden/reqfrminfo");
  6508. // break;
  6509. case "08" : // 원본대출의뢰지
  6510. frmf_modal("SPLPJ02000", "SPLPJ02000", objArg, false, mon, xpt1, ypt1, null, null, null, null, null, "M");
  6511. break;
  6512. }
  6513. }
  6514. if ( !utlf_isNull(ds_hidden_reqfrminfo.getColumn(0, "reqno"))){
  6515. ds_src.setColumn(curRow, "testreqlnkno", ds_hidden_reqfrminfo.getColumn(0, "reqno"));
  6516. ds_src.setColumn(curRow, "drugmthdspccd", ds_hidden_reqfrminfo.getColumn(0, "spccd"));
  6517. ds_src.setColumn(curRow, "drugmthdspccdnm", ds_hidden_reqfrminfo.getColumn(0, "spcnm"));
  6518. if ( scrID != "SMMMO02100") { // 처방발행 화면일경우(전회처방이 아닐경우)
  6519. var prcpInptFlag = ds_src.getColumn(curRow, "prcpinptflag" );
  6520. lf_setPrcpSpecValue( srcNode, curRow, prcpInptFlag ); // 병리처방은 검체 코드가 정해 지면 선택진료의사를 셋팅 한다. 검체코드별 선택진료 의사 셋팅 때문 2011.11.25 엄영만
  6521. }
  6522. }
  6523. } else if ( prcpclscd == "B2" || prcpclscd == "B4" || prcpclscd == "B6" ) {
  6524. /* ==================
  6525. 전달값
  6526. ==================
  6527. pid : 등록번호(필수)
  6528. prcpcd : 처방코드(필수)
  6529. prcpnm : 처방명(필수)
  6530. opnm : 수술명(옵션)
  6531. spccd : 검체코드(필수)
  6532. spcnm : 검체명(옵션)
  6533. reqno : 의뢰지번호(신규 작성시에는 '0', 작성된 의뢰지를 조회/수정할 경우는 해당 의뢰지번호) - 필수
  6534. reqhistno : 의뢰지 이력번호(옵션)
  6535. scrnno : 화면번호(10:처방화면, 20:채혈화면, 30:병리과 추가처방화면, 40:병리과 접수화면)
  6536. */
  6537. ds_hidden_reqfrminfo.clearData();
  6538. ds_hidden_reqfrminfo.setColumn(0, "pid", pid);
  6539. ds_hidden_reqfrminfo.setColumn(0, "prcpcd", ds_src.getColumn(curRow, "prcpcd"));
  6540. ds_hidden_reqfrminfo.setColumn(0, "prcpnm", ds_src.getColumn(curRow, "orgprcpnm"));
  6541. ds_hidden_reqfrminfo.setColumn(0, "prcpstatcd", ds_src.getColumn(curRow, "prcpstatcd"));
  6542. if ( ds_src.getColumn(curRow, "optermcd") != "-" ) {
  6543. ds_hidden_reqfrminfo.setColumn(0, "opnm", ds_src.getColumn(curRow, "prcpnm"));
  6544. }
  6545. ds_hidden_reqfrminfo.setColumn(0, "spccd", ds_src.getColumn(curRow, "drugmthdspccd"));
  6546. ds_hidden_reqfrminfo.setColumn(0, "spcnm", ds_src.getColumn(curRow, "drugmthdspccdnm"));
  6547. if ( newFlag == "N" ) {
  6548. ds_hidden_reqfrminfo.setColumn(0, "reqno", ds_src.getColumn(curRow, "testreqlnkno"));
  6549. }
  6550. ds_hidden_reqfrminfo.setColumn(0, "scrnno", "10");
  6551. ds_hidden_reqfrminfo.setColumn(0, "patnm", ds_paminfo.getColumn(0, "hngnm"));
  6552. reqfrmflagcd = lf_getArrayData (drugmastspec, 0, 10, "^", "|" );
  6553. if ( reqfrmflagcd == "01" || reqfrmflagcd == "02" || reqfrmflagcd == "03" || reqfrmflagcd == "04" || reqfrmflagcd == "05" || reqfrmflagcd == "06" || reqfrmflagcd == "07") {
  6554. fCpInPrcpVisible();
  6555. }
  6556. var objArg = new Object();
  6557. objArg.arg_ds_hidden_reqfrminfo = ds_hidden_reqfrminfo;
  6558. switch ( reqfrmflagcd ) { // 의뢰지 구분코드에 따라 호출화면을 선택
  6559. case "01" : // 골수검사의뢰서등록
  6560. frmf_modal("SPLRR90100", "SPLRR90100", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  6561. break;
  6562. case "02" : // 분자생물학부의뢰서등록
  6563. frmf_modal("SPLRR90200", "SPLRR90200", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  6564. break;
  6565. case "03" : // 산전검사의뢰서등록
  6566. frmf_modal("SPLRR90300", "SPLRR90300", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  6567. break;
  6568. case "04" : // 세포유전학검사의뢰서등록
  6569. frmf_modal("SPLRR90400", "SPLRR90400", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  6570. break;
  6571. case "05" : // 장기이식의뢰서등록
  6572. frmf_modal("SPLRR90500", "SPLRR90500", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  6573. break;
  6574. case "06" : // TDM의뢰서등록
  6575. frmf_modal("SPLRR90600", "SPLRR90600", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  6576. break;
  6577. case "07" : // 산전검사의뢰서등록(핵의학)
  6578. frmf_modal("SPLRR91000", "SPLRR91000", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  6579. break;
  6580. case "09" : // 염색체검사의뢰서등록
  6581. frmf_modal("SPLRR91300", "SPLRR91300", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  6582. break;
  6583. case "10" : // 말초혈액 의뢰서 및 결과지
  6584. frmf_modal("SPLRR91400", "SPLRR91400", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  6585. break;
  6586. case "08" : // ICG의뢰서
  6587. frmf_modal("SPLRR91100", "SPLRR91100", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  6588. break;
  6589. case "11" : // AMH검사의뢰서
  6590. frmf_modal("SPLRR91900", "SPLRR91900", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  6591. break;
  6592. case "12" : // 서울대학유전자검사의뢰서
  6593. frmf_modal("SPLRR92200", "SPLRR92200", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  6594. break;
  6595. case "13" : // 아산병원유전자검사의뢰서
  6596. frmf_modal("SPLRR92100", "SPLRR92100", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  6597. break;
  6598. case "14" : // 삼성서울병원유전자검사의뢰서
  6599. frmf_modal("SPLRR92000", "SPLRR92000", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  6600. break;
  6601. case "15" : // 기생충항체검사의뢰지
  6602. frmf_modal("SPLRR91800", "SPLRR91800", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  6603. break;
  6604. case "16" : // 약물검사의뢰서
  6605. frmf_modal("SPLRR92300", "SPLRR92300", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  6606. break;
  6607. case "17" : // 말라리아 검사의뢰서
  6608. frmf_modal("SPLRR92400", "SPLRR92400", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  6609. break;
  6610. }
  6611. if ( !utlf_isNull(ds_hidden_reqfrminfo.getColumn("reqno"))) {
  6612. ds_src.setColumn(curRow, "testreqlnkno", ds_hidden_reqfrminfo.getColumn("reqno"));
  6613. ds_src.setColumn(curRow, "drugmthdspccd", ds_hidden_reqfrminfo.getColumn("spccd"));
  6614. ds_src.setColumn(curRow, "drugmthdspccdnm", ds_hidden_reqfrminfo.getColumn("spcnm"));
  6615. }
  6616. } else if ( prcpflag == "2" ) { //지서처방 의뢰서 팝업
  6617. if ( !utlf_isNull(drugmthdspccd) && drugmthdspccd != "-" ) {
  6618. ds_hidden_reqfrminfo.clearData();
  6619. ds_hidden_reqfrminfo.addRow();
  6620. ds_hidden_reqfrminfo.setColumn(0, "pid", pid );
  6621. ds_hidden_reqfrminfo.setColumn(0, "prcpcd", ds_src.getColumn(curRow, "prcpcd"));
  6622. ds_hidden_reqfrminfo.setColumn(0, "prcpnm", ds_src.getColumn(curRow, "orgprcpnm"));
  6623. if ( newFlag == "N" ) {
  6624. ds_hidden_reqfrminfo.setColumn(0, "reqno", ds_src.getColumn(curRow, "testreqlnkno"));
  6625. }
  6626. ds_hidden_reqfrminfo.setColumn(0, "patnm", ds_paminfo.getColumn(0, "hngnm"));
  6627. fCpInPrcpVisible();
  6628. //방사선종양 지시 처방 의뢰서 팝업
  6629. //drugmthdspccd: SPAOB00700, SPAOB00800
  6630. dsf_createDs("ds_hidden_reqfrminfo_diagcdlist");
  6631. ds_hidden_reqfrminfo_diagcdlist.copyData(ds_main_diagcdlist);
  6632. var objArg = new Object();
  6633. objArg.arg_ds_hidden_reqfrminfo = ds_hidden_reqfrminfo;
  6634. objArg.arg_ds_hidden_reqfrminfo_diagcdlist = ds_hidden_reqfrminfo_diagcdlist;
  6635. frmf_modal("SPLRR92400", "SPLRR92400", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  6636. if ( !utlf_isNull(ds_hidden_reqfrminfo.getColumn("reqno"))) {
  6637. ds_src.setColumn(curRow, "testreqlnkno", ds_hidden_reqfrminfo.getColumn("reqno"));
  6638. }
  6639. }
  6640. }
  6641. }
  6642. /**@desc : 진단검사 검체 호출
  6643. * @param : curRow: 호출 row
  6644. : flag: 그룹검체일때는 node를 구분하기 위한 구분자
  6645. : objFlag: child구분. 구룹검체에서는 같은 계열처방적용을 안한다면 쓸필요없다.
  6646. : clickFlag: 처방화면에서 더블클릭해서 넘어왔는지 구분자.
  6647. * @return : void
  6648. * @authur : 마정민 2007. 5. 9
  6649. */
  6650. function fGetSpc( curRow, flag, objFlag, clickFlag ) {
  6651. fCpInPrcpVisible();
  6652. var srcNode = "ds_main_prcplist";
  6653. if ( flag == "group" ) {
  6654. srcNode = "ds_prcpsrch_prcplist";
  6655. } else if ( flag == "oldprcp" ) {
  6656. srcNode = "ds_oldprcpchngsrch_prcplist";
  6657. }
  6658. var oTrgtObj = lf_getFormObject(objFlag);
  6659. var ds_src = oTrgtObj.objects[srcNode];
  6660. //20080723 마정민 수정. 같은 계열의 처방은 검체를 한번만 넣도록 한다.
  6661. //단 그룹검체는 검체가 틀렸을 경우 조회가 안될수 있음으로 쓰지 않는다.
  6662. if (utlf_isNull(flag) && clickFlag != "Y" ){
  6663. var tempcol2 = ds_src.getColumn(curRow, "tempcol2" );
  6664. ds_initsrch_trgtcdlist.filter("prcpclscd == '" + tempcol2 + "'");
  6665. for (var i = 0; i < ds_initsrch_trgtcdlist.rowcount; i++) {
  6666. var srchprcpcd = ds_initsrch_trgtcdlist.getColumn(i, "trgtcd");
  6667. if (!utlf_isNull(oTrgtObj.ds_main_prcplist.lookup("prcpcd", srchprcpcd, "prcpcd"))) {
  6668. var drugmastspec = oTrgtObj.ds_main_prcplist.lookup("prcpcd", srchprcpcd, "drugmastspec") + "^";
  6669. var drugmthdspccd = lf_getArrayData (drugmastspec, 0, 0, "^", "|" );
  6670. if (drugmthdspccd == "999" && drugmthdspccd == "998") {
  6671. ds_src.setColumn(curRow, "drugmthdspccd", oTrgtObj.ds_main_prcplist.lookup("prcpcd", srchprcpcd, "drugmthdspccd"));
  6672. ds_src.setColumn(curRow, "drugmthdspccdnm", oTrgtObj.ds_main_prcplist.lookup("prcpcd", srchprcpcd, "drugmthdspccdnm"));
  6673. ds_initsrch_trgtcdlist.filter("");
  6674. return "mainspccd";
  6675. }
  6676. }
  6677. }
  6678. ds_initsrch_trgtcdlist.filter("");
  6679. }
  6680. var drugmastspec = ds_src.getColumn(curRow, "drugmastspec" ) + "^";
  6681. var drugmthdspccd = lf_getArrayData (drugmastspec, 0, 0, "^", "|" );
  6682. //var drugmthdspccd = model.getValue ( srcNode + "[" + curRow + "]/drugmthdspccd" );
  6683. //drugmthdspccd 인스턴스가 계속 바뀌어서 처방복사할 때 떴던 팝업이 안떠서 수정함.
  6684. var prcpcd = ds_src.getColumn(curRow, "prcpcd" );
  6685. var prcpnm = ds_src.getColumn(curRow, "prcpnm" );
  6686. if ( drugmthdspccd == "998" ) { //검체코드가 998일때 띄운다.
  6687. //검사대분류유형(testlrgkind) M:미생물, B:혈액은행, G: 분자/세포 유전, N:핵의학-체외
  6688. // if ( getArrayData (drugmastspec, 0, 3, "^", "|" ) == "M" ) {
  6689. frmf_setParameter ( "SPMMO03500_param_tclscd", prcpcd );
  6690. frmf_setParameter ( "SPMMO03500_param_tclsnm", prcpnm );
  6691. lf_prcpModal ( "SPMMO03500", 200, 100 );
  6692. if (utlf_isNull(flag)) {
  6693. if ( frmf_getParameter ("SPMMO03500_rtn_useyn") == "Y" ) {
  6694. ds_src.setColumn(curRow, "drugmthdspccd", frmf_getParameter( "SPMMO03500_rtn_spccd" ));
  6695. ds_src.setColumn(curRow, "drugmthdspccdnm", frmf_getParameter ("SPMMO03500_rtn_spcscrnnm" ));
  6696. }
  6697. }
  6698. } else if ( drugmthdspccd == "999" ) {
  6699. frmf_setParameter ( "SPMMO03400_param_tclscd", prcpcd );
  6700. frmf_setParameter ( "SPMMO03400_param_tclsnm", prcpnm );
  6701. lf_prcpModal ( "SPMMO03400", 200, 100 );
  6702. if (utlf_isNull(flag)) {
  6703. if ( frmf_getParameter ("SPMMO03400_rtn_useyn") == "Y" ) {
  6704. ds_src.setColumn(curRow, "drugmthdspccd", frmf_getParameter( "SPMMO03400_rtn_spccd" ));
  6705. ds_src.setColumn(curRow, "drugmthdspccdnm", frmf_getParameter ("SPMMO03400_rtn_spcscrnnm" ));
  6706. }
  6707. }
  6708. } else {
  6709. if ( clickFlag == "Y" ) {
  6710. frmf_setParameter ( "SPMMO03400_param_tclscd", prcpcd );
  6711. frmf_setParameter ( "SPMMO03400_param_tclsnm", prcpnm );
  6712. lf_prcpModal ( "SPMMO03400", 200, 100 );
  6713. if ( utlf_isNull(flag)) {
  6714. if ( frmf_getParameter ("SPMMO03400_rtn_useyn") == "Y" ) {
  6715. ds_src.setColumn(curRow, "drugmthdspccd", frmf_getParameter( "SPMMO03400_rtn_spccd" ));
  6716. ds_src.setColumn(curRow, "drugmthdspccdnm", frmf_getParameter ("SPMMO03400_rtn_spcscrnnm" ));
  6717. }
  6718. }
  6719. }
  6720. }
  6721. if (utlf_isNull(flag)) {
  6722. if ( frmf_getParameter ("SPMMO03500_rtn_useyn") == "Y" || frmf_getParameter ("SPMMO03400_rtn_useyn") == "Y") {
  6723. fSetCpVal(curRow, "U");
  6724. }
  6725. }
  6726. }
  6727. /**@desc : 약속처방등록
  6728. * @return : void
  6729. * @authur : 마정민 2007. 6. 6
  6730. */
  6731. function fPrmsPrcp() {
  6732. if (div_all.Tab_prcp.tabindex == 2) {
  6733. ds_init.setColumn(0, "prmsautoflag", "N");
  6734. div_all.Tab_prcp.tp_prmsprcp.fPrmsSave();
  6735. } else {
  6736. // 약속처방 폴더선택이 없는 경우 자동등록 처리
  6737. // 2008. 07. 25 오지훈
  6738. ds_init.setColumn(0, "prmsautoflag", "Y");
  6739. div_all.Tab_prcp.tabindex = 2;
  6740. div_all.Tab_prcp.tp_prmsprcp.fPrmsSave();
  6741. }
  6742. }
  6743. /**@desc : 경구약 기본용법 조회
  6744. * @return : void
  6745. * @authur : 마정민 2007. 6. 6
  6746. */
  6747. function fBaseMthd(currow) {
  6748. var sDsSrc;
  6749. var ds_temp_prcplist;
  6750. if ( currow == "oldprcp" ) {
  6751. sDsSrc = "ds_oldprcpchngsrch_prcplist";
  6752. ds_temp_prcplist = this.objects[sDsSrc];
  6753. currow = 0;
  6754. } else {
  6755. sDsSrc = "ds_main_prcplist";
  6756. ds_temp_prcplist = this.objects[sDsSrc];
  6757. if(utlf_isNull(currow))
  6758. currow = ds_temp_prcplist.rowposition;
  6759. }
  6760. //횟수 수정시 경구약의 기본용법을 가져온다.
  6761. var prcpclscd = ds_temp_prcplist.getColumn(currow, "prcpclscd");
  6762. var prcptims = ds_temp_prcplist.getColumn(currow, "prcptims");
  6763. var drugmthdspccd = ds_temp_prcplist.getColumn(currow, "drugmthdspccd");
  6764. var prcpcd = ds_temp_prcplist.getColumn(currow, "prcpcd");
  6765. var prcpdd = utlf_isNull(this.objects["ds_init"]) ? "" : lf_getDsValue(ds_init, 0, "prcpdd");
  6766. if (utlf_isNull(prcpdd)){
  6767. prcpdd = utlf_getCurrentDate();
  6768. }
  6769. var mthdcd = "";
  6770. var mthdKind = "";
  6771. if ( prcpclscd == "F2" ) {
  6772. lf_makePrcpNm(sDsSrc, currow);
  6773. return;
  6774. } else if ( prcpclscd != "A2" ) {
  6775. return;
  6776. } else { // 경구약이면
  6777. mthdKind = "N";
  6778. // 응급약이면
  6779. if ( ds_temp_prcplist.getColumn(currow, "erprcpflag") == "Y" ) {
  6780. if (prcptims == "1") { //2011.07.07 엄영만 경구약, 응급, 횟수 1 이면 용법 [지금복용] 으로 변경
  6781. //mthdcd = "A10D1"; // 지금 복용 용법 코드
  6782. } else { // 응급약은 1회만 가능
  6783. sysf_messageBox ( "응급약은 1회만", "I006" );
  6784. ds_temp_prcplist.setColumn(currow, "prcptims", 1);
  6785. return;
  6786. }
  6787. //응급약이 아니면 기본 용법 가져온다.
  6788. } else {
  6789. if ( drugmthdspccd.length >= 3 ) {
  6790. //20081213 변경개발요청서 497. 20081213 마정민 수정.
  6791. //네번째 자리가 E가 아닌 경우 용법코드의 네번째 자리도 A로 변경해 줄 것을 요청
  6792. if ( drugmthdspccd.length >= 4 && ( drugmthdspccd.substring ( 3, 4 ) != "A" && drugmthdspccd.substring ( 3, 4 ) != "E" )) {
  6793. mthdcd = drugmthdspccd.substring ( 0, 2 ) + prcptims + "A" + drugmthdspccd.substring ( 4, drugmthdspccd.length );
  6794. } else {
  6795. mthdcd = drugmthdspccd.substring ( 0, 2 ) + prcptims + drugmthdspccd.substring ( 3, drugmthdspccd.length );
  6796. }
  6797. }
  6798. }
  6799. ds_send.clearData();
  6800. ds_send.addRow();
  6801. ds_send.setColumn(0, "cond1", mthdKind );
  6802. ds_send.setColumn(0, "cond2", prcptims ); //횟수
  6803. ds_send.setColumn(0, "cond3", "base" ); //기본정보값만 가져오는지 표시한다.
  6804. ds_send.setColumn(0, "cond4", mthdcd ); //기본정보값만 가져오는지 표시한다.
  6805. // 응급약이 아니면 약품의 기본 횟수가 변경된 횟수이면 약품의 기본 용법을 가져온다. (응급약은 지금복용으로)
  6806. //if ( model.getValue ( prcpNode + "[" + currow + "]/erprcpflag") != "Y" ) {
  6807. ds_send.setColumn(0, "cond5", prcpcd );
  6808. ds_send.setColumn(0, "cond6", prcpdd );
  6809. //}
  6810. dsf_setDefaultVal(ds_send, "mthdtime:-");
  6811. var oParam = {};
  6812. oParam.id = "TRMMO01901";
  6813. oParam.service = "prcpmngtapp.PrcpMngt";
  6814. oParam.method = "reqGetTmedTthdInfo";
  6815. oParam.inds = "req=ds_send";
  6816. oParam.outds = "ds_tmedmthdlist=tmedmthdlist";
  6817. oParam.async = false;
  6818. oParam.callback = "cf_TRMMO01901";
  6819. tranf_submit(oParam);
  6820. if(arErrorCode.pop("TRMMO01901") > -1) {
  6821. var mthdcd = ds_tmedmthdlist.getColumn(0, "mthdcd" );
  6822. var mthdcnts = ds_tmedmthdlist.getColumn(0, "abbrnm" );
  6823. if ( !utlf_isNull(mthdcd)) {
  6824. ds_temp_prcplist.setColumn(currow, "drugmthdspccd", mthdcd );
  6825. ds_temp_prcplist.setColumn(currow, "drugmthdspccdnm", mthdcnts );
  6826. } else {
  6827. ds_temp_prcplist.setColumn(currow, "drugmthdspccd", "-");
  6828. ds_temp_prcplist.setColumn(currow, "drugmthdspccdnm", "-" );
  6829. }
  6830. }
  6831. }
  6832. }
  6833. function cf_TRMMO01901(sSvcId, nErrorCode, sErrorMsg) {
  6834. arErrorCode.push(sSvcId, nErrorCode);
  6835. }
  6836. /**@desc : 처방화면 오른쪽 마우스 클릭 처방복사
  6837. * @return : void
  6838. * @authur : 마정민 2007. 6. 21
  6839. */
  6840. function fPrcpCopy() {
  6841. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  6842. for (var i = selectedRows.length - 1; i >= 0; i--) {
  6843. var inclprcpno = ds_main_prcplist.getColumn(selectedRows[i], "inclprcpno");
  6844. if ( !utlf_isNull(inclprcpno) && inclprcpno != "-" ) {
  6845. if ( eval(inclprcpno) > 0 ) {
  6846. sysf_messageBox ( "M-SET은 복사하기 하실 수 없습니다.", "I" );
  6847. return;
  6848. }
  6849. }
  6850. }
  6851. if ( ds_init.getColumn(0, "cropflag") == "Y" ) {
  6852. if (sysf_messageBox ( "잘라낸 데이터가 이미 있습니다. 복사하시겠습니까?", "Q" ) != "6" ) {
  6853. return;
  6854. }
  6855. }
  6856. var cnt=0;
  6857. //by sonjy 20091121 임시처방 복사 시 복사대상이 신규모드로 바뀜. => 복사후 붙여넣기시 처방이 두개씩 생김.
  6858. //복사대상의 원상태는 돌려놓는 로직 추가.
  6859. var orgstatus = "";
  6860. var orgprcphistcd = "";
  6861. for (var i = selectedRows.length - 1; i >= 0; i--) {
  6862. orgstatus = "";
  6863. orgprcphistcd = "";
  6864. if ( ds_main_prcplist.getColumn(selectedRows[i], "status" ) != "S" ){ //검색은 드래그 안한다.
  6865. if( ds_root.getColumn(0, "cp") != "S" ){
  6866. //by sonjy 20091121임시처방 ( 수정포함 )일 경우 원상태값을 저장
  6867. if( ds_main_prcplist.getColumn(selectedRows[i], "status" ) == "-" ||
  6868. ds_main_prcplist.getColumn(selectedRows[i], "status" ) == "U" ){
  6869. orgstatus = ds_main_prcplist.getColumn(selectedRows[i], "status" );
  6870. orgprcphistcd = ds_main_prcplist.getColumn(selectedRows[i], "prcphistcd" );
  6871. //by sonjy 20091124 임시처방 복사 후 인증저장시 오류발생 수정
  6872. ds_main_prcplist.setColumn(selectedRows[i], "prcphistcd", "O");
  6873. }
  6874. ds_main_prcplist.setColumn(selectedRows[i], "status", "I" )
  6875. }
  6876. fPrcpBuffer( ++cnt, selectedRows[i], "ds_prcpdrag_prcplist", "ds_main_prcplist" );
  6877. //원상태값으로 돌려놓는다.
  6878. if( !utlf_isNull(orgstatus) ) ds_main_prcplist.setColumn(selectedRows[i], "status", orgstatus );
  6879. orgstatus = "";
  6880. if( !utlf_isNull(orgprcphistcd) ) ds_main_prcplist.setColumn(selectedRows[i], "prcphistcd", orgprcphistcd );
  6881. orgprcphistcd = "";
  6882. }
  6883. }
  6884. /*var srcNodeList = model.instances(0).selectNodes("/root/prcpdrag/prcplist");
  6885. var destNode = model.instances(0).selectSingleNode("/root/main/prcp");
  6886. var dropRow = grd_prcplist.rows - 2;
  6887. for ( var i= 1; i<=srcNodeList.length ; i++){
  6888. row = dropRow + i;
  6889. model.duplicate( "/root/main/prcp", "/root/prcpdrag/prcplist[" + i + "]", "*[" + row + "]");
  6890. fSetCpVal( row, "I");
  6891. }
  6892. model.recalculate();
  6893. model.refresh();*/
  6894. }
  6895. /**@desc : 처방화면 오른쪽 마우스 클릭 처방잘라내기
  6896. * @return : void
  6897. * @authur : 마정민 2007. 10. 22
  6898. */
  6899. function fPrcpCrop() {
  6900. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  6901. for (var i = selectedRows.length - 1; i >= 0; i--) {
  6902. var inclprcpno = ds_main_prcplist.getColumn(selectedRows[i], "inclprcpno" );
  6903. if ( !utlf_isNull(inclprcpno) && inclprcpno != "-" ) {
  6904. if ( eval(inclprcpno) > 0 ) {
  6905. sysf_messageBox ( "M-SET은 잘라내기 하실 수 없습니다.", "I" );
  6906. return;
  6907. }
  6908. }
  6909. }
  6910. if ( ds_init.getColumn(0, "cropflag") == "Y" ) {
  6911. if (messageBox ( "잘라낸 데이터가 이미 있습니다. 잘라내시겠습니까?", "Q" ) != "6" ) {
  6912. return;
  6913. }
  6914. }
  6915. var cnt=0;
  6916. for (var i = selectedRows.length - 1; i >= 0; i--) {
  6917. if ( ds_main_prcplist.getColumn(selectedRows[i], "status") != "S" ){ //검색은 드래그 안한다.
  6918. fPrcpBuffer( ++cnt, selectedRows[i], "ds_prcpdrag_prcplist", "ds_main_prcplist" );
  6919. ds_main_prcplist.deleteRow(selectedRows[i]);
  6920. }
  6921. ds_init.setColumn(0, "cropflag", "Y");
  6922. }
  6923. }
  6924. /**@desc : 처방화면 오른쪽 마우스 클릭 처방붙여넣기
  6925. * @param : prcphopeddflag - 6: prcpdd 와 prcphopedd를 똑같게 처리, 7: prcphopedd가 prcphopedd에 비해 과거날짜만 바꿔 줌.
  6926. * @return : void
  6927. * @authur : 마정민 2007. 10. 22
  6928. */
  6929. function fPrcpPaste( prcphopeddflag ) {
  6930. ds_init.setColumn(0, "cropflag", "N" );
  6931. var prcpdd = ds_init.getColumn(0, "prcpdd" );
  6932. var dropRow = ds_main_prcplist.rowposition;
  6933. if ( dropRow == -1 ){
  6934. dropRow = ds_main_prcplist.rowcount - 1;
  6935. }
  6936. var endRow = ds_main_prcplist.rowcount - 1;
  6937. var prcphopedd = "";
  6938. if ( dropRow == endRow ) {
  6939. dropRow = dropRow - 1;
  6940. }
  6941. var row = 0;
  6942. var cnt = 1;
  6943. for (var i = ds_prcpdrag_prcplist.rowcount - 1; i >= 0; i--) {
  6944. row = dropRow + cnt++;
  6945. //by sonjy 오류 수정 20091121 임시처방의 경우 잘라내기, 붙여넣기 후 임시저장시 오류 발생 => 임시저장은 이미 저장된 처방임. prcppkspec초기화시 오류 발생
  6946. //임시처방 수정 혹은 임시처방 모드일 경우 처리 추가.
  6947. //model.setValue ( "/root/prcpdrag/prcplist[" + i + "]/prcppkspec", prcpdd + "|0|0|" + getUserInfo("dutplceinstcd"));
  6948. if( ds_prcpdrag_prcplist.getColumn(i, "status") == "-" || ds_prcpdrag_prcplist.getColumn(i, "status") == "U" ){
  6949. if( ds_prcpdrag_prcplist.getColumn(i, "status") == "-") ds_prcpdrag_prcplist.setColumn(i, "status", "U");
  6950. }else {
  6951. ds_prcpdrag_prcplist.setColumn(i, "prcppkspec", prcpdd + "|0|0|" + sysf_getUserInfo("dutplceinstcd"));
  6952. }
  6953. prcphopedd = ds_prcpdrag_prcplist.getColumn(i, "prcphopedd" );
  6954. if ( utlf_isNull(prcphopedd) || prcphopedd == "-" ) {
  6955. prcphopedd = prcpdd;
  6956. }
  6957. if ( prcphopedd < prcpdd || prcphopeddflag == "6" ) {
  6958. ds_prcpdrag_prcplist.setColumn(i, "prcphopedd", prcpdd );
  6959. }
  6960. ds_main_prcplist.insertRow(row);
  6961. ds_main_prcplist.copyRow(row, ds_prcpdrag_prcplist, i);
  6962. fSetCpVal(row, "I");
  6963. }
  6964. ds_main_prcplist.rowposition = dropRow + ds_prcpdrag_prcplist.rowcount;
  6965. div_all.grd_prcplist.setCellPos(div_all.grd_prcplist.getCellPos());
  6966. ds_prcpdrag_prcplist.clearData();
  6967. }
  6968. /**@desc : 처방용법복사
  6969. * @return : void
  6970. * @authur : 마정민 2007. 10. 17
  6971. */
  6972. function fMthdCopy() {
  6973. var currow = ds_main_prcplist.rowposition;
  6974. var prcpclscd = ds_main_prcplist.getColumn(currow, "prcpclscd" );
  6975. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) {
  6976. var prcptims = ds_main_prcplist.getColumn(currow, "prcptims" );
  6977. var drugmthdspccd = ds_main_prcplist.getColumn(currow, "drugmthdspccd" );
  6978. var drugmthdspccdnm = ds_main_prcplist.getColumn(currow, "drugmthdspccdnm" );
  6979. ds_init_mthdcopy.setColumn(0, "prcpclscd", prcpclscd );
  6980. ds_init_mthdcopy.setColumn(0, "prcptims", prcptims );
  6981. ds_init_mthdcopy.setColumn(0, "drugmthdspccd", drugmthdspccd );
  6982. ds_init_mthdcopy.setColumn(0, "drugmthdspccdnm", drugmthdspccdnm );
  6983. } else {
  6984. sysf_messageBox ( "약주사만 용법복사가", "I006" );
  6985. }
  6986. }
  6987. /**@desc : 처방용법붙혀넣기
  6988. * @return : void
  6989. * @authur : 마정민 2007. 10. 17
  6990. */
  6991. function fMthdPaste() {
  6992. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  6993. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  6994. if ( ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd") == ds_init_mthdcopy.getColumn(0, "prcpclscd")){
  6995. ds_main_prcplist.setColumn(selectedRows[i], "prcptims", ds_init_mthdcopy.getColumn(0, "prcptims"));
  6996. ds_main_prcplist.setColumn(selectedRows[i], "drugmthdspccd", ds_init_mthdcopy.getColumn(0, "drugmthdspccd"));
  6997. ds_main_prcplist.setColumn(selectedRows[i], "drugmthdspccdnm", ds_init_mthdcopy.getColumn(0, "drugmthdspccdnm"));
  6998. fSetCpVal(selectedRows[i], "U");
  6999. } else {
  7000. ds_main_prcplist.selectRow(selectedRows[i], false);
  7001. }
  7002. }
  7003. ds_init_mthdcopy.clearData();
  7004. ds_init_mthdcopy.addRow();
  7005. }
  7006. function fChgChoiDr() {
  7007. lf_chgChoiDr();
  7008. }
  7009. /**@desc : 우측상단 진단화면에서 개인진단 즐겨찾기 추가
  7010. * @return : void
  7011. * @authur : 오지훈 2007. 7. 2
  7012. */
  7013. function fAddEnjoyPrivate(){
  7014. var header = "settypecd▦setkindcd▦setclscd▦settrgtcd▦detlsetcd▩";
  7015. var totRow = ds_main_diagcdlist.rowcount;
  7016. for(var i = 0; i < totRow ; i++){
  7017. if(ds_main_diagcdlist.getSelect(i)){
  7018. var diagcd = ds_main_diagcdlist.getColumn(i, "diagcd");
  7019. var settrgtcd = sysf_getUserInfo("userid");
  7020. header += "E▦P▦D▦" + settrgtcd + "▦" + diagcd + "▩";
  7021. }
  7022. }
  7023. dsf_setCSVToDs("ds_send_savedata", header);
  7024. var oParam = {};
  7025. oParam.id = "TXMMB00604";
  7026. oParam.service = "prcpbaseapp.PrmsPrcpMngt";
  7027. oParam.method = "reqInsDirectPrmsDiagEnjoy";
  7028. oParam.inds = "req=ds_send_savedata";
  7029. oParam.async = false;
  7030. tranf_submit(oParam);
  7031. dsf_deleteDs("ds_send_savedata");
  7032. }
  7033. /**@desc : 즐겨찾기SET Open
  7034. * @return : void
  7035. * @authur : 오지훈 2007. 7. 4
  7036. */
  7037. function fOpenEnjoySet(){
  7038. frmf_modal("SPMMO03700", "SPMMO03700", null, null, null, null, null, null, null, null, null, null, "M");
  7039. if ( frmf_getParameter( "SPMMO03700_rtn_useyn" ) == "Y" ) {
  7040. lf_addDiagSetValue (frmf_getParameter( "SPMMO03700_rtn" ));
  7041. frmf_setParameter( "SPMMO03700_rtn_useyn", "" );
  7042. }
  7043. }
  7044. /**@desc : 처방수정.
  7045. * @ : 신규일때는 수정표시 안함.
  7046. * @ : 삭제,D/C 상태일때는 취소후 수정.
  7047. * @param :
  7048. * @id : grd_prcplist
  7049. * @event : xforms-value-changed
  7050. * @return : void
  7051. * @authur : 마정민 2007. 3. 27
  7052. * @---------------------------------------------------
  7053. */
  7054. function fPrcpUpdate() {
  7055. var currow = ds_main_prcplist.rowposition;
  7056. var status = ds_main_prcplist.getColumn(currow, "status");
  7057. if (status == "-") {
  7058. // model.setValue ( prcpNode + "[" + grd_prcplist.row+ "]/status", "U" );
  7059. fSetCpVal(currow, "U");
  7060. }
  7061. if ( status == "I" || status == "-" ) {
  7062. ds_main_prcplist.setColumn(currow, "tempcol9", "");
  7063. }
  7064. }
  7065. /**@desc : 추가처방화면 초기화
  7066. * @id : model1
  7067. * @event : xforms-model-construct-done
  7068. * @return : void
  7069. * @authur : 마정민 2007. 3. 14
  7070. */
  7071. function fAddPrcpInitConDone( pid, orddd, cretno, instcd, ioflag, saveflag , dschdd, srchdd ) {
  7072. ds_main_prcplist.clearData(); //처방화면 그리도 초기화
  7073. lf_appendChildPrcp ( "ds_reset_prcplist", "ds_main_prcplist", "main" );
  7074. if (!utlf_isNull(pid)){
  7075. var sSendDs = dsf_createDsRow("ds_addprcp_send", [{col:"pid", type:"string", size:256},
  7076. {col:"orddd", type:"string", size:256},
  7077. {col:"cretno", type:"string", size:256},
  7078. {col:"instcd", type:"string", size:256},
  7079. {col:"ioflag", type:"string", size:256},
  7080. {col:"srchdd", type:"string", size:256},
  7081. {col:"pseuacptflag", type:"string", size:256}]);
  7082. ds_addprcp_send.addRow();
  7083. ds_addprcp_send.setColumn(0, "pid" , pid);
  7084. ds_addprcp_send.setColumn(0, "orddd", orddd);
  7085. ds_addprcp_send.setColumn(0, "cretno", cretno);
  7086. ds_addprcp_send.setColumn(0, "instcd", instcd);
  7087. ds_addprcp_send.setColumn(0, "ioflag", ioflag);
  7088. if ( !utlf_isNull(dschdd) && dschdd != "99991231" && dschdd != "-" ){
  7089. ds_addprcp_send.setColumn(0, "srchdd", dschdd);
  7090. } else {
  7091. if (utlf_isNull(srchdd)) {
  7092. ds_addprcp_send.setColumn(0, "srchdd", "");
  7093. } else {
  7094. ds_addprcp_send.setColumn(0, "srchdd", srchdd);
  7095. }
  7096. }
  7097. if ( ioflag == "O" || ioflag == "S" ) {
  7098. ds_addprcp_send.setColumn(0, "ioflag", "O" );
  7099. ds_addprcp_send.setColumn(0, "pseuacptflag", (utlf_isNull(this.objects["ds_formerkey"]) ? "" : ds_formerkey.getColumn(0, "pseuacptflag")));
  7100. var oParam = {};
  7101. oParam.id = "TRMMO04208";
  7102. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  7103. oParam.method = "reqGetPatTopInfo";
  7104. oParam.inds = "req=ds_addprcp_send";
  7105. oParam.outds = "ds_topinfo_outpatpaminfo=outpatpaminfo ds_topinfo_patmaintopinfo=patmaintopinfo ds_topinfo_outpatflaginfo=outpatflaginfo";
  7106. oParam.async = false;
  7107. oParam.callback = "cf_TRMMO04208";
  7108. tranf_submit(oParam);
  7109. if(arErrorCode.pop("TRMMO04208") > -1) {
  7110. ds_paminfo.copyData(ds_topinfo_outpatpaminfo);
  7111. ds_patflag.copyData(ds_topinfo_outpatflaginfo);
  7112. } else {
  7113. return;
  7114. }
  7115. } else {
  7116. if (ioflag == "D"){
  7117. ds_addprcp_send.setColumn(0, "ioflag", "I");
  7118. }
  7119. var oParam = {};
  7120. oParam.id = "TRMMO04308";
  7121. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  7122. oParam.method = "reqGetPatTopInfo";
  7123. oParam.inds = "req=ds_addprcp_send";
  7124. oParam.outds = "ds_topinfo_inpatpaminfo=inpatpaminfo ds_topinfo_patmaintopinfo=patmaintopinfo ds_topinfo_inpatflaginfo=inpatflaginfo";
  7125. oParam.async = false;
  7126. oParam.callback = "cf_TRMMO04308";
  7127. tranf_submit(oParam);
  7128. if(arErrorCode.pop("TRMMO04308") > -1) {
  7129. ds_paminfo.copyData(ds_topinfo_inpatpaminfo);
  7130. ds_patflag.copyData(ds_topinfo_inpatflaginfo);
  7131. } else {
  7132. return;
  7133. }
  7134. }
  7135. }
  7136. if ( saveflag != "Y" ) {
  7137. prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  7138. if ( ioflag == "O" || ioflag == "S" ) {
  7139. ds_init.setColumn(0, "orddd", ds_paminfo.getColumn(0, "orddd"));
  7140. } else {
  7141. ds_init.setColumn(0, "orddd", ds_paminfo.getColumn(0, "indd"));
  7142. }
  7143. if ( !utlf_isNull(prcpgenrflag)) {
  7144. ds_init.setColumn(0, "rrgstno1", ds_paminfo.getColumn(0, "rrgstno1"));
  7145. ds_init.setColumn(0, "rrgstno2", ds_paminfo.getColumn(0, "rrgstno2"));
  7146. ds_init.setColumn(0, "orddeptnm", ds_paminfo.getColumn(0, "orddeptnm"));
  7147. ds_init.setColumn(0, "srchcond2", pid);
  7148. ds_init.setColumn(0, "srchcond3", ds_paminfo.getColumn(0, "hngnm"));
  7149. ds_init.setColumn(0, "srchcond4", ds_patflag.getColumn(0, "prcpgenrflag"));
  7150. ds_init.setColumn(0, "sex", ds_paminfo.getColumn(0, "sex"));
  7151. ds_init.setColumn(0, "age", ds_paminfo.getColumn(0, "age"));
  7152. ds_init.setColumn(0, "wardcd", ds_paminfo.getColumn(0, "wardcd"));
  7153. }
  7154. cmb_issdept.visible = true;
  7155. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ){ //외래일때
  7156. cmb_prcpkind.visible = false;
  7157. cmb_prcpdd.visible = false;
  7158. cmb_issdept.position.x = 454;
  7159. btn_issdept.position.x = 558;
  7160. cmb_hosinprcpresn.visible = true;
  7161. caption14.visible = true;
  7162. cmb_hosinprcpresn.position.x = 760;
  7163. grd_prcplist.setFormatColProperty(prcpKindCdCol, "size", 0);
  7164. ds_init.setColumn(0, "hosinprcpresncd", ds_paminfo.getColumn(0, "hosoutexptresncd" ));
  7165. ds_init.setColumn(0, "prcpkindcd", "20" ); //처방종류(추가)
  7166. ds_init.setColumn(0, "prcpdd", ds_paminfo.getColumn(0, "orddd" ));
  7167. } else {
  7168. ds_init.setColumn(0, "wardcd" , ds_paminfo.getColumn(0, "roomcd" ) + "호" );
  7169. ds_init.setColumn(0, "orddd" , ds_paminfo.getColumn(0, "indd" ));
  7170. //입원, 응급일때
  7171. ds_init.setColumn(0, "hosinprcpresncd", "00");
  7172. // 가퇴원 누락처방 날자셋팅 - 20081221 by MoonSH
  7173. var chkMissPrcp = sysf_getGlobalVariable("SPMMO16800_rtn1");
  7174. if (chkMissPrcp == "Y"){
  7175. frmf_setParameter ( "SPMMO16800_rtn1", "" );
  7176. var missPrcpdd = ds_prcpresn.getColumn(0, "prcpdd");
  7177. ds_init.setColumn(0, "prcpdd", missPrcpdd);
  7178. cmb_prcpdd.visible = false;
  7179. } else {
  7180. ds_init.setColumn(0, "prcpdd", utlf_getCurrentDate());
  7181. cmb_prcpdd.visible = true;
  7182. }
  7183. cmb_issdept.position.x = 662;
  7184. btn_issdept.position.x = 764;
  7185. cmb_hosinprcpresn.visible = false;
  7186. cmb_prcpkind.visible = true;
  7187. //cmb_prcpdd.visible = true;
  7188. caption14.visible = false;
  7189. ds_init.setColumn(0, "prcpkindcd", "20" ); //처방종류(추가)
  7190. if ( prcpgenrflag == "E" || prcpgenrflag == "D" ) {
  7191. cmb_hosinprcpresn.visible = true;
  7192. cmb_hosinprcpresn.position.x = 766;
  7193. cmb_hosinprcpresn.position.width = 224;
  7194. }
  7195. }
  7196. }
  7197. fInitSrch();
  7198. //진단호출
  7199. if ( !utlf_isNull(pid) || saveflag == "Y" ){
  7200. fPatDiagSrch("addprcp");
  7201. if (ds_main_diagcdlist.rowcount < 1 ){
  7202. //원무에서 화면을 호출할 경우 저장된 진단이 없으면 기초정보에 등록된 진단코드로 검색한다.
  7203. if (frmf_getMenuParam() == "PAM") {
  7204. fDiagSrch("addprcp");
  7205. }
  7206. }
  7207. }
  7208. if (ds_init.getColumn(0, "detlivw") == "m" ) {
  7209. Tab_prcp.components[Tab_prcp.tabindex].fIvwDetlVwCom();
  7210. } else if ( ds_init.getColumn(0, "detlvw") == "m" ) {
  7211. fDetlVw("y");
  7212. }
  7213. bfPrcpdd = ds_init.getColumn(0, "prcpdd");
  7214. var sDutPlceCd = sysf_getUserInfo("dutplcecd");
  7215. if ( saveflag != "Y" && sDutPlceCd != "4072000000" && sDutPlceCd != "4070700000" ) { // 심사팀은 전처방 화면이 먼저 열리도록 처리 2012.09.18 엄영만
  7216. Tab_prcp.tabindex = 2;
  7217. } else {
  7218. Tab_prcp.tabindex = 1;
  7219. }
  7220. ds_init.setColumn(0, "prcpinptflag", "28" ); //시행부서처방
  7221. //btn_prcpsave.disabled = false;
  7222. }
  7223. function cf_TRMMO04208(sSvcId, nErrorCode, sErrorMsg) {
  7224. arErrorCode.push(sSvcId, nErrorCode);
  7225. }
  7226. function cf_TRMMO04308(sSvcId, nErrorCode, sErrorMsg) {
  7227. arErrorCode.push(sSvcId, nErrorCode);
  7228. }
  7229. /**@desc : 외래, 주사(A6)인 경우, 일수 변경시 달력화면을 띄움, 연속처방 적용
  7230. * @param :
  7231. * @return :
  7232. * @author : EMR MSH
  7233. * @---------------------------------------------------
  7234. */
  7235. function fDayValChnged() {
  7236. //prcpdd를 선언하지 않고 아래에서 사용하고 있음. 오류수정 by sonjy 20091021
  7237. var prcpdd = ds_init.getColumn(0, "prcpdd");
  7238. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  7239. var chngRow = ds_main_prcplist.rowposition;
  7240. for ( var j = 0; j < selectedRows.length; j++ ){
  7241. var curRow = selectedRows[j]; // 현재 row
  7242. var strtRow = selectedRows[0]; // 시작 row
  7243. if( chngRow < 0 ) chngRow = strtRow;
  7244. var prcpclscd = ds_main_prcplist.getColumn(curRow, "prcpclscd");
  7245. var selfprcpflag = ds_main_prcplist.getColumn(curRow, "selfprcpflag");
  7246. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  7247. var prcpcd = ds_main_prcplist.getColumn(curRow, "prcpcd");
  7248. //by sonjy 20091019 수가계산방법 4일경우 외래/입원 관계없이 일수는 1로 고정 (요청번호 : 3667 )
  7249. var drugmastspec = ds_main_prcplist.getColumn(curRow, "drugmastspec");
  7250. var calcmthdcd = lf_getArrayData ( drugmastspec , 0, 26, "^", "|" );
  7251. if( (prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) && calcmthdcd == "4" ) {
  7252. ds_main_prcplist.setColumn(curRow, "prcpdayno", "1");
  7253. }
  7254. // 외래인 경우
  7255. if(prcpgenrflag == "O"){
  7256. // 주사면서 자가 처방이 아닌 경우
  7257. //수가계산방법 4가 아닐 경우 by sonjy 20091019 (요청번호 : 3667 )
  7258. if( (prcpclscd == "A6" && selfprcpflag != "Y" && calcmthdcd != "4" ) || prcpcd == "MUR0001"){
  7259. //var prcpdayno = grd_prcplist.valueMatrix(strtRow, grd_prcplist.colRef("prcpdayno"));
  7260. var prcpdayno = ds_main_prcplist.getColumn(chngRow, "prcpdayno");
  7261. var contprcpspec = ds_main_prcplist.getColumn(curRow, "contprcpspec");
  7262. if(contprcpspec != "-"){
  7263. var contprcpsplit = contprcpspec.split("^");
  7264. var contprcprslt = contprcpsplit[1].split("|");
  7265. var startdd = contprcprslt[1];
  7266. }else{
  7267. var startdd = ds_paminfo.getColumn(0, "orddd");
  7268. }
  7269. var reqparam = startdd + "▩";
  7270. //변경된 일수만큼의 일자 parameter를 생성함
  7271. for(var i = 1; i < prcpdayno; i++){
  7272. var dd = ((startdd.toDate()).getAddDate(i)).getDateFormat();
  7273. reqparam += dd + "▩";
  7274. }
  7275. reqparam = reqparam.substring(0, reqparam.length-1);
  7276. frmf_setParameter("paramcalflag", "multi");
  7277. frmf_setParameter("defaultday" , startdd);
  7278. frmf_setParameter("reqparam" , reqparam);
  7279. frmf_setParameter("prcpdayno" , prcpdayno);
  7280. lf_prcpModal("SPMMO10600", 20, 50);
  7281. //달력에서 선택된 일자만큼 처방상세정보 생성 및 처방 정보 설정
  7282. if ( !utlf_isNull(frmf_getParameter("rtn"))) { //20080703 마정민 수정 값이 있을 때문 처리
  7283. var actordddArray = frmf_getParameter("rtn").split("▩");
  7284. var contprcpspec = "status|actorddd|execprcpstatcd|prcpdd|execprcpno";
  7285. for(var i = 0; i < actordddArray.length; i++){
  7286. var actorddd = actordddArray[i];
  7287. contprcpspec = contprcpspec + "^I|" + actorddd + "|" + "" + "|" + startdd + "|" + "";
  7288. }
  7289. var rtnval = "";
  7290. var contprcpspecArray = contprcpspec.split("^");
  7291. for(var i = 1; i < contprcpspecArray.length; i++){
  7292. var tmp = contprcpspecArray[i].split("|");
  7293. rtnval = rtnval + tmp[1] + ",";
  7294. }
  7295. rtnval = rtnval.substring(0, rtnval.length-1);
  7296. if(actordddArray.length == 1 && actorddd == prcpdd){
  7297. ds_main_prcplist.setColumn(curRow, "contprcpspec", "-");
  7298. }else{
  7299. ds_main_prcplist.setColumn(curRow, "contprcpspec", contprcpspec);
  7300. }
  7301. ds_main_prcplist.setColumn(curRow, "prcpdayno", actordddArray.length);
  7302. }
  7303. }
  7304. }
  7305. }
  7306. }
  7307. /**@desc : 영상학과에서 OCR 확인을 위한 코드별 테그 셋팅
  7308. * @param :
  7309. * @return :
  7310. * @author : EMR MoonSH
  7311. * @---------------------------------------------------
  7312. */
  7313. function fSetOcrTagNum() {
  7314. var taglist = frmf_getParameter("SPMRF04500_OCRTAGvalue");
  7315. if( !utlf_isNull(taglist) ){
  7316. frmf_setParameter("SPMRF04500_OCRTAGvalue", "");
  7317. var septag = taglist.split("▦");
  7318. var tagcode = "";
  7319. for (var i = 0; i < ds_result_savedrprcplist.rowcount; i++) {
  7320. var prcpcd = ds_result_savedrprcplist.getColumn(i, "prcpcd");
  7321. var prcpkindcd = ds_result_savedrprcplist.getColumn(i, "prcpkindcd");
  7322. for ( var j = 0; j < septag.length - 1; j++) {
  7323. if ( septag[j]==prcpcd ) {
  7324. tagcode = septag[j + 1] ;
  7325. var findRow = ds_result_dschdrprcplist.findRow("dschdr_prcpcd", prcpcd);
  7326. if ( prcpkindcd == "70" && (findRow != -1 && utlf_isNull(ds_result_dschdrprcplist.getColumn(findRow, "dschdr_drprcpetc3"))) ){
  7327. ds_result_dschdrprcplist.setColumn(findRow, "dschdr_drprcpetc3", tagcode);
  7328. // 퇴원후 외래 처방은 ORC 태그 정보 박히지 않는 오류 수정 . 20100607 by LYJ
  7329. }else {
  7330. ds_result_savedrprcplist.setColumn(i, "drprcpetc3", tagcode );
  7331. }
  7332. }
  7333. }
  7334. }
  7335. }
  7336. }
  7337. /**@desc : 그리드 임시저장 수정 모드
  7338. * @param : position(1.개별수정:per, 2.일괄수정:pack, 3.상세팝업개발수정:det_per, 4.일괄 상세팝업:det_pack), grid row, object
  7339. * @return :
  7340. * @author : EMR MoonSH
  7341. * @---------------------------------------------------
  7342. */
  7343. function gGridUpdateChk(pos, grow, obj) {
  7344. if ( pos == "per" ) { // 1.개별수정
  7345. var oTrgtObj = lf_getFormObject(obj);
  7346. if (obj == "child" && utlf_isNull(grow))
  7347. grow = oTrgtObj.ds_main_prcplist.rowposition;
  7348. var chkstatus = oTrgtObj.ds_main_prcplist.getColumn(grow, "status");
  7349. if ( chkstatus == "-" )
  7350. oTrgtObj.ds_main_prcplist.setColumn(grow, "status", "U");
  7351. } else if ( pos == "pack" ) { // 2.일괄수정
  7352. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  7353. var chkstatus = ds_main_prcplist.getColumn(selectedRows[grow], "status");
  7354. if ( chkstatus == "-" )
  7355. ds_main_prcplist.setColumn(selectedRows[grow], "status", "U" );
  7356. } else if ( pos == "det_per" ) { // 3.상세 팝업에서 개별 수정
  7357. // 1. popup 노드 get
  7358. // 2. main 그리드 row 노드 get
  7359. // 3. for 문을 이용 팝업과 메인의 노드 비교
  7360. var tarrow = ds_main_prcplist.rowposition;
  7361. if ( ds_main_prcplist.getColumn(tarrow, "status") != "-" ) return;
  7362. if ( ds_prcptemp_prcplist.rowcount < 1 )
  7363. return;
  7364. var tarChildCnt = ds_prcptemp_prcplist.colcount;
  7365. if( tarChildCnt == 0 ) return;
  7366. if ( ds_main_prcplist.rowcount <= tarrow ) // changed node list
  7367. return;
  7368. var srcChildCnt = ds_main_prcplist.colcount;
  7369. if( srcChildCnt == 0 ) return;
  7370. if ( tarChildCnt != srcChildCnt ) return ; // popup 노드와 main 노드 갯수가 틀리면 노드 매핑 오류로 리턴
  7371. for(var i = 0; i < srcChildCnt; i++) {
  7372. var tNodeName = ds_prcptemp_prcplist.getColID(i);
  7373. var tNodeName = ds_prcptemp_prcplist.getColumn(0, tNodeName);
  7374. var sNodeName = ds_main_prcplist.getColID(i);
  7375. var sNodeText = ds_main_prcplist.getColumn(tarrow, sNodeName);
  7376. if ( tNodeName == sNodeName ) {
  7377. if ( tNodeText != sNodeText ) {
  7378. var chkstatus = ds_prcptemp_prcplist.getColumn(0, "status");
  7379. if ( chkstatus == "-" ) {
  7380. ds_prcptemp_prcplist.setColumn(0, "status", "U");
  7381. }
  7382. return ;
  7383. }
  7384. } else {
  7385. return ; // 소스 노드와 대상 노드의 노드가 틀릴 경우는 리턴
  7386. }
  7387. }
  7388. } else if ( pos == "det_pack" ) { // 4. 일괄 상세팝업
  7389. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  7390. var chkstatus = ds_main_prcplist.getColumn(selectedRows[grow], "status");
  7391. if ( chkstatus == "-" )
  7392. ds_main_prcplist.setColumn(selectedRows[grow], "status", "U");
  7393. }
  7394. }
  7395. /**@desc : 진료대상자 리스트를 actvate 하기 위한 로직 추가
  7396. * @param :
  7397. * @return :
  7398. * @author : EMR 김영학
  7399. * @---------------------------------------------------
  7400. */
  7401. function fSetUpperInfo() {
  7402. // 진료대상자 리스트를 actvate 하기 위한 로직 추가 // 김영학 추가 : 2008. 11. 17
  7403. var curPatListObj= frmf_findPopup("SMMMO04100"); //활성화된 진료대상자 화면 object loading
  7404. var pid = appf_getPatientInfo("pid");
  7405. ds_init.setColumn(0, "prcpobjsaveyn", "Y")
  7406. if (!utlf_isNull(curPatListObj)) {
  7407. var prcpsaveyn = ds_init.getColumn(0, "prcpobjsaveyn"); // 상단의 처방 저장여부를 가져온다
  7408. var emrsaveyn = ds_init.getColumn(0, "emrobjsaveyn"); // 상단의 진료기록 저장여부를 가져온다.
  7409. if (prcpsaveyn == "Y" && emrsaveyn == "Y") { // 처방과 진료기록이 모두 저장된 경우는 포커스를 진료대상자로 이동
  7410. //최소화 시킨 창을 최대화 시킴 (2009.10.26 JJE)
  7411. curPatListObj.frmf_setFocus();
  7412. }
  7413. }
  7414. }
  7415. /**@desc : 보험제한규정창이 메시지만 있을경우 창을 더이상 띄우지 않기 위해 레지스트리에 등록된 값을 가져옴
  7416. * @ver : 2008.12.09
  7417. * @by : 마정민
  7418. * @modify:
  7419. * @---------------------------------------------------
  7420. * @type :
  7421. * @access : public
  7422. * @param : regnm : 레지스트리 명
  7423. * @param :
  7424. * @return : regval : 레지스트리 값
  7425. * @---------------------------------------------------
  7426. */
  7427. function getRegistryPrcp(regnm)
  7428. {
  7429. var objExtCommon = new ExtCommon();
  7430. return objExtCommon.regGetValue("HKEY_LOCAL_MACHINE", "SOFTWARE\\HIS\\Config\\" + sysf_getUserId(), regnm, "S");
  7431. }
  7432. /**@desc : 급성 상기도감염에 항생제 처방 제한
  7433. 일수 촉박으로 인해 hardcoding 추후 login정보에 담을 예정
  7434. * @param :
  7435. * @return :
  7436. * @author : 손주연 20081212
  7437. * @---------------------------------------------------
  7438. */
  7439. function fChkInfecLimAntiDrug( strSrc, sendRow ){
  7440. var mainDiag10cd = "";
  7441. var diaglstCnt = ds_main_diagcdlist.getCaseCount("diagkindcdflag == 'M'");
  7442. if( diaglstCnt > 0) {
  7443. var findRow = ds_main_diagcdlist.findRow("diagkindcdflag", 'M');
  7444. mainDiag10cd = (findRow == -1) ? "" : ds_main_diagcdlist.getColumn(findRow, "icd10cd");
  7445. }
  7446. if( utlf_isNull(mainDiag10cd) ) return true ;
  7447. /* 급성상기도감염에 항생제 처방 제한
  7448. * 조건 : HARDCDNO 101
  7449. * 1) 의사의 진단명 주상병이 ICD10 기준 J00~J06에 해당할 경우(J00~J069까지)
  7450. * 2) 항생제 처방이 발생된 경우
  7451. *
  7452. * 골관절염 상병에 스테로이드 제제 처방 제한
  7453. * 조건 : HARDCDNO 122
  7454. * 1) 의사의 진단명 주상병이 ICD10 기준 M13~M17(M130~M179), M19(M190~199)에 해당할 경우 주, 부상병 모두 체크로 변경
  7455. * 2) 스테로이드제 처방이 발생된 경우(처방 소분류가 Hormones-adrenal corticosteroid가 처방될 경우(대분류가 외용제인건은 제외) )
  7456. */
  7457. var chkFlag = "" ;
  7458. var icd10Chck = mainDiag10cd.substring( 0, 3 );
  7459. var sMsg = "";
  7460. if ( icd10Chck >= "J00" && icd10Chck <= "J06" ) {
  7461. chkFlag = "1" ;
  7462. } else {
  7463. for( var i = 0; i < ds_main_diagcdlist.rowcount; i++ ){
  7464. mainDiag10cd = lf_getDsValue(ds_main_diagcdlist, i, "icd10cd");
  7465. icd10Chck = mainDiag10cd.substring( 0, 3 );
  7466. if ( icd10Chck >= "M130" && icd10Chck <= "M179" ){
  7467. chkFlag = "2" ;
  7468. break;
  7469. }
  7470. if ( icd10Chck >= "M190" && icd10Chck <= "M199" ){
  7471. chkFlag = "3" ;
  7472. break;
  7473. }
  7474. }
  7475. }
  7476. if( utlf_isNull(chkFlag) ) return true ;
  7477. var prcpclscd = "";
  7478. var drugmastspec = "";
  7479. var tempcol2 = "";
  7480. var rtnFlag = "";
  7481. var srcNodeList = null;
  7482. var ds_src = this.objects[strSrc];
  7483. prcpclscd = ds_src.getColumn(sendRow, "prcpclscd" );
  7484. drugmastspec= ds_src.getColumn(sendRow, "drugmastspec" );
  7485. tempcol2 = ds_src.getColumn(sendRow, "tempcol2" );
  7486. if(prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) {
  7487. if( chkFlag == "1" && lf_getArrayData ( drugmastspec + "^", 0, 23, "^", "|" ) == "P" ) {
  7488. rtnFlag = "1" ;
  7489. } else if ( ( chkFlag == "2" || chkFlag == "3" ) && !utlf_isNull(tempcol2) ){
  7490. //처방 소분류가 Hormones-adrenal corticosteroid(경구/주사만)
  7491. if( (tempcol2 == "03|04|03" || tempcol2 == "04|04|03") && prcpclscd != "A4" ) rtnFlag = chkFlag ;
  7492. }
  7493. }
  7494. if( rtnFlag == "1" ) {
  7495. sMsg = "급성 상기도(J00~J069)에 항생제 처방은 권장되지 않고 있으며 평가결과가 공개되는 항목입니다. 항생제처방을 재고하시거나,상병명을 변경하여 주십시오.문의 보험팀(" + model.getValue("/root/initsrch/callnoinfo[trgtcd='insurance']/trgtcdnm") + ")" ;
  7496. } else if( rtnFlag == "2" || rtnFlag == "3" ) {
  7497. sMsg = "골관절염상병(M130~M179, M190~M199)에 Steroid제제의 전신적 사용은 권장되지 않고 있으며 평가결과가 공개되는 항목입니다. Steroid처방을 재고하시거나, 상병명을 변경하여 주십시오.문의 보험팀" + model.getValue("/root/initsrch/callnoinfo[trgtcd='insurance']/trgtcdnm");
  7498. }
  7499. if( rtnFlag == "1" ) {
  7500. sysf_messageBox(sMsg, "I" );
  7501. if ( ds_initsrch_hrcdinfo1.getColumn(0, "trgtcd") != "N" ) {
  7502. return false ;
  7503. } else {
  7504. if ( sysf_messageBox ( "계속 저장하시겠습니까?","Q") != "6" ) {
  7505. return false ;
  7506. }
  7507. }
  7508. } else if ( rtnFlag == "2" || rtnFlag == "3" ) {
  7509. sysf_messageBox(sMsg, "I" );
  7510. //return false ;
  7511. //by sonjy 20090803 골관절염상병 병원별 blocking 적용 변경요청서 선진행 사항. HARDCDNO 122
  7512. if ( ds_initsrch_steroidlimyn.getColumn(0, "trgtcd") != "N" ) {
  7513. return false ;
  7514. } else {
  7515. if ( sysf_messageBox ( "계속 저장하시겠습니까?","Q") != "6" ) {
  7516. return false ;
  7517. }
  7518. }
  7519. }
  7520. return true ;
  7521. }
  7522. /**@desc : 당일결과 체크하면 체크값을 원무테이블에 입력해준다.
  7523. * @param :
  7524. * @return :
  7525. * @author : 김영학 : 20090304
  7526. * @---------------------------------------------------
  7527. */
  7528. function fSaveDayAftRcpt() {
  7529. var sInputDs = dsf_createDsRow("ds_TXMMO00114", [{col:"pid", type:"string", size:256, val:ds_paminfo.getColumn(0, "pid")},
  7530. {col:"orddd", type:"string", size:256, val:ds_paminfo.getColumn(0, "orddd")},
  7531. {col:"cretno", type:"string", size:256, val:ds_paminfo.getColumn(0, "cretno")},
  7532. {col:"prcptdayaftrcptyn", type:"string", size:256, val:div_all.chk_aftrcpt.value},
  7533. {col:"elbulbodstat", type:"string", size:256, val:""}]);
  7534. var oParam = {};
  7535. oParam.id = "TXMMO00114";
  7536. oParam.service = "prcpmngtapp.PrcpMngt";
  7537. oParam.method = "reqSetPrcpDayAftRcpt";
  7538. oParam.inds = "req=" + sInputDs;
  7539. oParam.async = false;
  7540. tranf_submit(oParam);
  7541. dsf_deleteDs("ds_TXMMO00114");
  7542. var ordPatObj = frmf_findPopup("SMMMO04100");
  7543. if (!utlf_isNull(ordPatObj)) {
  7544. ordPatObj.fPrcpCallPatList();
  7545. }
  7546. }
  7547. /**@desc : 처방창 초기화 (상태에 따라 처방창이 처음 열리는 경우와 열려 있는 경우 초기화시켜주는 함수가 달라짐)
  7548. * @param :
  7549. * @return :
  7550. * @author : 김영학 : 20090306
  7551. * @---------------------------------------------------
  7552. */
  7553. function fInitPrcpWnd(status){
  7554. if (status == "init") {
  7555. btn_init.visible = false;
  7556. btn_reinit.visible = false;
  7557. zesf_InitSign();
  7558. fInitializeReady();
  7559. fAnstPrcp(); // 마취화면에서 보내준 처방 검색
  7560. //임시처방 호출
  7561. ds_init.setColumn(0, "setprcpyn", "Y" );
  7562. if ( ds_initsrch_prcpetccnts.getColumn(0, "erprcpyn" ) == "Y" ) {
  7563. frmf_setParameter ( "SMMMO00100_cond1", "Y" );
  7564. lf_prcpModal ( "SMMMO06100", null, 0, 0 );
  7565. div_all.grd_prcplist.setFocus();
  7566. }
  7567. fChkOuterCdListPop(); //외부등록CD 재판독 의뢰할 처방 있다면 popup 호출 (2010.02.24 JJE)
  7568. ds_init.setColumn(0, "bfprcpload", "N");
  7569. div_all.Tab_prcp.tabindex = 1;
  7570. div_all.Tab_prcp.tp_bfprcp.fInitialize();
  7571. ds_M0003.deleteRow(ds_M0003.findRow("cdid", 80));
  7572. div_all.visible = true;
  7573. div_all.Tab_prcp.tp_bfprcp.fBtnInit("C");
  7574. } else {
  7575. fInitializeConDone();
  7576. btn_reinit.visible = false;
  7577. btn_init.visible = false;
  7578. fChkOuterCdListPop(); //외부등록CD 재판독 의뢰할 처방 있다면 popup 호출 (2010.02.24 JJE)
  7579. var BfPrcpObj = frmf_findPopup("SMMMO02100") ;
  7580. if (div_all.Tab_prcp.tabindex != 1) {
  7581. div_all.Tab_prcp.tabindex = 1;
  7582. div_all.Tab_prcp.tp_bfprcp.fInitialize();
  7583. ds_M0003.deleteRow(ds_M0003.findRow("cdid", 80));
  7584. }
  7585. div_all.Tab_prcp.tp_bfprcp.fBtnInit("C");
  7586. fInitializeReady("diag");
  7587. fPatDiagSrch();
  7588. }
  7589. //20090515 마정민 상병 특례체크로직 추가. 의정부성모병원요청사항.
  7590. //기존 의정부 성모병원은 부상병으로도 산정특례가 적용되어서 의사사 주,부 유형을 적확히 입력하지 않음
  7591. //그래서 처방화면 로딩시 기존수진진단을 가져올때 마이그레이션 데이터이고 산정특례로 된 주진단이 없을 경우 메시지 처리
  7592. for ( var i = 0; i < ds_main_diagcdlist.rowcount; i++ ) {
  7593. var status = ds_main_diagcdlist.getColumn(i, "status");
  7594. var diagremfact = ds_main_diagcdlist.getColumn(i, "diagremfact");
  7595. if ( status == "I" && diagremfact == "Y" ) { //마이그레이션
  7596. ds_main_diagcdlist.setColumn(i, "diagremfact", "");
  7597. var spclinfo = ds_main_diagcdlist.getColumn(i, "spclinfo");
  7598. if ( spclinfo == "Y" ) { //산전특례
  7599. //산정특례 처방이면 산전특례이면서 주상병이 있는지 찾는다.
  7600. var findRow = ds_main_diagcdlist.findRowExpr("diagkindcdflag == 'M' && spclinfo == 'Y' && status == 'I'");
  7601. var spcmdiagcd = (findRow == -1) ? "" : ds_main_diagcdlist.getColumn(findRow, "diagcd");
  7602. if (utlf_isNull(spcmdiagcd)) { //값이 없으면 주상병으로 할 건지 물어본다.
  7603. var icd10cd = ds_main_diagcdlist.getColumn(i, "icd10cd");
  7604. if ( sysf_messageBox ( "[" + icd10cd + "] 상병은 특례상병입니다. 주상병으로 하시겠습니까?","Q") == "6" ) {
  7605. //하겠다고 하면 주상병으로 고침
  7606. for ( var j = 0; j < ds_main_diagcdlist.rowcount; j++ ) {
  7607. if (i == j) {
  7608. ds_main_diagcdlist.setColumn(j, "diagkindcdflag", "M" );
  7609. } else {
  7610. if (ds_main_diagcdlist.getColumn(j, "diagkindcdflag")=="M") {
  7611. ds_main_diagcdlist.setColumn(j, "diagkindcdflag", "S" );
  7612. if (ds_main_diagcdlist.getColumn(j, "status" ) == "-" ) {
  7613. //진단상태가 - 이면 U로 수정함
  7614. ds_main_diagcdlist.setColumn(j, "status", "U" );
  7615. }
  7616. }
  7617. }
  7618. }
  7619. //break; 20090629 diagremfact '-' 처리하는것 때문에 주석처리
  7620. }
  7621. }
  7622. }
  7623. }
  7624. }
  7625. // 전처방 복사 로직 위치 이동 2011.11.16 엄영만
  7626. // 환경설정(전처방 자동 copy 기능 설정)에 따른 전처방 copy 추가 (요청번호:8586, 2009.11.02 JJE)
  7627. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag" );
  7628. var addprcpflag = ds_init.getColumn(0, "addprcpflag");
  7629. var findRow = ds_initsrch_envinfo.findRowExpr("qestcd == '016' && answcnt != '003'");
  7630. var copyPrcpInfoNode = ds_initsrch_envinfo.getColumn(findRow, "answcnt"); //001:약만COPY, 002:전체COPY, 003:설정안함
  7631. if( prcpgenrflag == "O" && addprcpflag != "Y" && !utlf_isNull(copyPrcpInfoNode) ){
  7632. if (typeof(div_all.Tab_prcp.tp_bfprcp) == "object"){
  7633. div_all.Tab_prcp.tp_bfprcp.fCopyBfPrcp("init");
  7634. }
  7635. }
  7636. //KNUH, 사전심사 대기상태인 경우, 대기상태 처방리스트와 심사메세지를 팝업으로 보여줌 (2011.03.17 JJE)
  7637. fOpenBfJudgInfoPop();
  7638. }
  7639. /**@desc : 처방창 초기화 (처방창이 처음 열리는 경우)
  7640. * @param :
  7641. * @return :
  7642. * @author : 김영학 : 20090306
  7643. * @---------------------------------------------------
  7644. */
  7645. function fXformsReady() {
  7646. //처방 속도개선을 위한 시간 체크 set 20101027 LYJ
  7647. try {
  7648. var SMMMO00100_S = new Date();
  7649. var ordPatObj = frmf_findPopup("SMMMO04100");
  7650. var SMMMO04100_chk = ordPatObj.frmf_getParameter("SMMMO04100_chk");
  7651. if(!utlf_isNull(ordPatObj) && SMMMO04100_chk == "Y"){
  7652. ordPatObj.frmf_setParameter("SMMMO00100_S",SMMMO00100_S.getTime());
  7653. }
  7654. } catch(e) {
  7655. }
  7656. btn_reinit.visible = false;
  7657. // 신규처방 수정 모드을 위한 bind셋팅 - 20090630 by Moonsh
  7658. var AnswData = "N";//fGetIntefeAnsw("013");
  7659. if( AnswData == "Y" ) {
  7660. ds_init.setColumn(0, "enviflag", "Y");
  7661. //div_all.grd_prcplist.autoenter = "none";
  7662. } else {
  7663. ds_init.setColumn(0, "enviflag", "");
  7664. //div_all.grd_prcplist.autoenter = "select";
  7665. }
  7666. fInitializeConDone();
  7667. fBaseCdInit();
  7668. fInitBtnSet();
  7669. var answcnt = lf_mmbfGetUserEnvQuestValue("006"); // "006" 환자선택시 진료프로그램 로딩 방식 (001:처방창만 블라인드, 002:기록창만 블라인드, 003:처방창과 기록창 블라인드, 004:처방창과 기록창 모두 오픈
  7670. if (answcnt =="001" || answcnt =="003") {
  7671. btn_init.visible = true;
  7672. div_all.visible = true;
  7673. } else {
  7674. fInitPrcpWnd("init");
  7675. }
  7676. // CP 초기화 해주는 로직 전처방에서 처방.js로 이동 김영학 ( 2009.03.16)
  7677. //JJE- (추가, srcOrdPatListwnd=null의 Y/N 상관없이 체크해야 함)
  7678. var fstopenflag = ds_init.getColumn(0, "fstopenflag"); //처방화면이 최초 생성 여부
  7679. var cpWdwFlag = ds_root.getColumn(0, "cp");
  7680. if( fstopenflag == "Y" && cpWdwFlag == "Y" ){ //CP가 open된 첫회만 수행(CP가 열린상태에서 다른환자 선택 시 수행 안함 -> fReconstruct()*2 방지)
  7681. // CPGMAIN 화면 작업후 확인필요
  7682. fReconstruct();
  7683. }
  7684. //처방 마우스 오른쪽 클릭 메뉴를 병원마다 달리하기 위해 하드코드테이블에서 받아옴.
  7685. fGetRghtClickList();
  7686. }
  7687. /**@desc : 처방창 초기화 (처방창이 열려 있는 경우)
  7688. * @param :
  7689. * @return :
  7690. * @author : 김영학 : 20090306
  7691. * @---------------------------------------------------
  7692. */
  7693. function fXReReady(consulyn) {
  7694. //처방 속도개선을 위한 시간 체크 set 20101027 LYJ
  7695. try {
  7696. var SMMMO00100_S = new Date();
  7697. var ordPatObj = frmf_findPopup("SMMMO04100");
  7698. var SMMMO04100_chk = ordPatObj.frmf_getParameter("SMMMO04100_chk");
  7699. if(!utlf_isNull(ordPatObj) && SMMMO04100_chk == "Y"){
  7700. ordPatObj.frmf_setParameter("SMMMO00100_S",SMMMO00100_S.getTime());
  7701. }
  7702. } catch(e) {
  7703. }
  7704. btn_reinit.visible = false;
  7705. div_all.group_rmk.visible = false; //처방 화면 참고사항 안보이게
  7706. var answcnt = lf_mmbfGetUserEnvQuestValue("006"); // "006" 환자선택시 진료프로그램 로딩 방식 (001:처방창만 블라인드, 002:기록창만 블라인드, 003:처방창과 기록창 블라인드, 004:처방창과 기록창 모두 오픈
  7707. if(consulyn == "T") {
  7708. answcnt = "";
  7709. }
  7710. if (answcnt == "001" || answcnt == "003") {
  7711. btn_reinit.visible = true;
  7712. btn_init.visible = false;
  7713. var BfPrcpObj = frmf_findPopup("SMMMO02100");
  7714. if(div_all.Tab_prcp.tabindex != 1) {
  7715. div_all.Tab_prcp.tabindex = 1;
  7716. div_all.Tab_prcp.tp_bfprcp.fInitialize();
  7717. ds_M0003.deleteRow(ds_M0003.findRow("cdid", 80));
  7718. }
  7719. div_all.Tab_prcp.tp_bfprcp.fBtnInit("B");;
  7720. } else {
  7721. fInitPrcpWnd();
  7722. }
  7723. fSelfHldPrcpSub(); //자가보유처방 조회 20100127 by LYJ
  7724. fChkValidRecInfo(); //kimsj 처방시 미비기록 유무 확인(submit) -- SMMMO04100.js에서 message 실행
  7725. }
  7726. /**@desc : 차상위 추가 체크
  7727. * @param :
  7728. * @return :
  7729. * @author : 20090327 마정민추가
  7730. * @---------------------------------------------------
  7731. */
  7732. function fScndChk() {
  7733. ds_TRMMO00127.setColumn(0, "pid", ds_paminfo.getColumn(0, "pid" ));
  7734. ds_TRMMO00127.setColumn(0, "orddd", ds_paminfo.getColumn(0, "orddd" ));
  7735. ds_TRMMO00127.setColumn(0, "cretno", ds_paminfo.getColumn(0, "cretno" ));
  7736. ds_TRMMO00127.setColumn(0, "instcd", ds_paminfo.getColumn(0, "instcd" ));
  7737. ds_TRMMO00127.setColumn(0, "insukind", ds_paminfo.getColumn(0, "insukind" ));
  7738. ds_TRMMO00127.setColumn(0, "suppkind", ds_paminfo.getColumn(0, "suppkind" ));
  7739. ds_TRMMO00127.setColumn(0, "rrgstno1", ds_paminfo.getColumn(0, "rrgstno1" ));
  7740. ds_TRMMO00127.setColumn(0, "rrgstno2", ds_paminfo.getColumn(0, "rrgstno2" ));
  7741. ds_TRMMO00127.setColumn(0, "userid", sysf_getUserInfo ("userid") );
  7742. ds_TRMMO00127.setColumn(0, "updtyn", "Y" );
  7743. ds_TRMMO00127.setColumn(0, "chronicdiseaseyn", ds_init.getColumn(0, "chronicdiseaseyn"));
  7744. ds_TRMMO00127.setColumn(0, "etcordflag", "");
  7745. //by sonjy 20090803 가정간호 특례체크 관련 추가
  7746. //model.setValue ( "/root/send/cond15", model.getValue ( "/root/paminfo/list/etcordflag" ));
  7747. var oParam = {};
  7748. oParam.id = "TRMMO00127";
  7749. oParam.service = "prcpmngtapp.PrcpMngt";
  7750. oParam.method = "reqExeSaveScndPamInfo";
  7751. oParam.inds = "req=ds_TRMMO00127";
  7752. oParam.async = false;
  7753. tranf_submit(oParam);
  7754. //by sonjy 20090803 가정간호 특례체크 관련 추가 : 시행부서처방에서 호출시 해당 내역 초기화 필요. => 호출뒤 처방검색시 오류발생
  7755. /*
  7756. if ( model.getValue ( "/root/addprcp" ) == "Y" && model.getValue ( "/root/paminfo/list/etcordflag" ) == "N" ){
  7757. model.setValue ( "/root/send/cond3", "");
  7758. model.setValue ( "/root/send/cond4", "");
  7759. model.setValue ( "/root/send/cond5", "");
  7760. model.setValue ( "/root/send/cond6", "");
  7761. model.setValue ( "/root/send/cond7", "");
  7762. model.setValue ( "/root/send/cond8", "");
  7763. model.setValue ( "/root/send/cond9", "");
  7764. model.setValue ( "/root/send/cond10", "");
  7765. model.setValue ( "/root/send/cond11", "");
  7766. model.setValue ( "/root/send/cond12", "");
  7767. model.setValue ( "/root/send/cond14", "");
  7768. //by sonjy 20090803 가정간호 특례체크 관련 추가
  7769. model.setValue ( "/root/send/cond15", "");
  7770. }
  7771. */
  7772. }
  7773. /**@desc : 예약처방. 예약처방으로 저장하면 PRCPHISTCD = 'X' 상태로 있다가 간호입실확인시 실처방으로 전환. 후인증.
  7774. * @param :
  7775. * @return :
  7776. * @author : 20090327 마정민추가
  7777. * @---------------------------------------------------
  7778. */
  7779. function fSetRsrvPrcp() {
  7780. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  7781. //kimsj 외래간호 선처치 마스터에 등록된 처방을 예약처방으로 지정하는 경우 처방 저장 시 [선처치] 자동으로 해제
  7782. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  7783. var precureprcp = ds_initsrchprcp_prcpetccnts.getColumn(0, "precureprcpcd");
  7784. var sFrtStage = "", sSndStage = "", sPreMasterYn = "";
  7785. for (var i = 0; i < selectedRows.length; i++) {
  7786. if (ds_main_prcplist.getColumn(selectedRows[i], "status")=="S") continue;
  7787. if (prcpgenrflag == "O") {
  7788. sPreMasterYn = "N";
  7789. sFrtStage = precureprcp.split("^");
  7790. for (var j = 0; j < sFrtStage.length; j++) {
  7791. sSndStage = sFrtStage[j].split("|");
  7792. if ( ds_main_prcplist.getColumn(selectedRows[i], "prcpcd" ) == sSndStage[0] ) { //처방코드, 선처치 마스터 코드(코드|선처치|부서)
  7793. //model.alert("선처치 처리부분으로 들어왔습니다! prcpcd : " + sSndStage[0]);
  7794. sPreMasterYn = "Y";
  7795. break;
  7796. }
  7797. }
  7798. }
  7799. if ( ds_main_prcplist.getColumn(selectedRows[i], "prcpkindcd" ) == "80" ) {
  7800. ds_main_prcplist.setColumn(selectedRows[i], "prcpkindcd", "20" );
  7801. if ( ds_main_prcplist.getColumn(selectedRows[i], "prnprcpflag" ) == "Y" ) {
  7802. ds_main_prcplist.setColumn(selectedRows[i], "prnprcpflag", "N" );
  7803. }
  7804. if (sPreMasterYn == "Y") ds_main_prcplist.setColumn(selectedRows[i], "precureprcpflag", "Y" ); //선처치
  7805. } else {
  7806. ds_main_prcplist.setColumn(selectedRows[i], "prcpkindcd", "80" );
  7807. if (sPreMasterYn == "Y") ds_main_prcplist.setColumn(selectedRows[i], "precureprcpflag", "N" ); //선처치
  7808. }
  7809. lf_makePrcpNm( "ds_main_prcplist", selectedRows[i] );
  7810. fSetCpVal(selectedRows[i], "U");
  7811. }
  7812. }
  7813. /**@desc : 신규처방 수정모드 초기화
  7814. * @param :
  7815. * @return :
  7816. * @author : 20090630 by Moonsh
  7817. * @---------------------------------------------------
  7818. */
  7819. function fCodeModifyInit() {
  7820. var grdcnt = ds_main_prcplist.rowcount - 1;
  7821. var modirow = ds_main_prcplist.rowposition;
  7822. if ( grdcnt != modirow ) {
  7823. ds_init_rowmodify.setColumn(0, "modiinit", "Y");
  7824. ds_init_rowmodify.setColumn(0, "modiflag", "Y");
  7825. ds_init_rowmodify.setColumn(0, "modirow", modirow);
  7826. var bacprcpcd = ds_main_prcplist.getColumn(modirow, "prcpcd");
  7827. // 상태가 검색은 삭제가 안되므로, 검색에서 신규로 상태 변경 후 삭제
  7828. ds_main_prcplist.setColumn(modirow, "status", "I");
  7829. ds_init_rowmodify.setColumn(0, "lastrow", grdcnt);
  7830. ds_main_prcplist.setColumn(grdcnt, "prcpcd", bacprcpcd);
  7831. ds_main_prcplist.rowposition = grdcnt;
  7832. //grd_prcplist.focusColor = "#ffffff";
  7833. prcpcd = bacprcpcd;
  7834. }
  7835. }
  7836. /**@desc : 신규처방 수정되는 열 추가
  7837. * @param :
  7838. * @return :
  7839. * @author : 20090630 by Moonsh
  7840. * @---------------------------------------------------
  7841. */
  7842. function fCodeModifyAdd() {
  7843. // Import여부 조회
  7844. var importflag = ds_init_rowmodify.getColumn(0, "importflag");
  7845. // 검색 단어 수가 맞지 않을 경우 조회 전 값 셋팅 후 리턴
  7846. var srchnoflag = ds_init_rowmodify.getColumn(0, "srchnoflag");
  7847. if ( srchnoflag == "Y" ) {
  7848. var modirow = ds_init_rowmodify.getColumn(0, "modirow");
  7849. var prcpcd = ds_main_prcplist.getColumn(modirow, "prcpcd");
  7850. var modiprcpcd = ds_init_rowmodify.getColumn(0, "modiprcpcd");
  7851. var lastrow = ds_main_prcplist.rowcount - 1;
  7852. var lastprcpcd = ds_main_prcplist.getColumn(lastrow, "prcpcd");
  7853. ds_main_prcplist.setColumn(modirow, "prcpcd", modiprcpcd);
  7854. ds_main_prcplist.setColumn(lastrow, "prcpcd", "");
  7855. // 초기화
  7856. ds_init_rowmodify.setColumn(0, "modiflag", "");
  7857. ds_init_rowmodify.setColumn(0, "enterflag", "");
  7858. ds_init_rowmodify.setColumn(0, "srchnoflag", "");
  7859. ds_main_prcplist.selectRow(modirow);
  7860. ds_main_prcplist.rowposition = modirow;
  7861. div_all.grd_prcplist.setCellPos(div_all.grd_prcplist.getCellPos());
  7862. return ;
  7863. }
  7864. // edit cell 상황에서 enter 칠때만 변경 코드 조회 적용
  7865. // div_all.grd_prcplist.userdata == 1 은 edit cell에서 엔터키 눌렀을때임
  7866. if ( div_all.grd_prcplist.userdata == 1 || importflag == "Y") {
  7867. var tarrow = ds_init_rowmodify.getColumn(0, "modirow");
  7868. var lastrow = ds_init_rowmodify.getColumn(0, "lastrow");
  7869. ds_main_prcplist.selectRow(tarrow);
  7870. ds_main_prcplist.rowposition = tarrow;
  7871. div_all.grd_prcplist.setCellPos(div_all.grd_prcplist.getCellPos());
  7872. // 해당 row 삭제 처리
  7873. fDeleteRow();
  7874. var nodeLen = ds_main_prcplist.rowcount;
  7875. // 1. 검색 했으나 조회 조건이 없을 경우, 2. 그룹코드를 수정할 경우
  7876. if ( lastrow > nodeLen ) {
  7877. var srchcond = "N";
  7878. }
  7879. // 1. 수정 후 코드 조회 건이 1건일 경우(대부분이 여기에 해당), 2. 검색했으나 조회 조건이 없을때...
  7880. if ( lastrow == nodeLen || srchcond == "N" ) {
  7881. // 위치 선정
  7882. lastrow = lastrow - 1;
  7883. if (srchcond != "N") {
  7884. ds_main_prcplist.moveRow(lastrow, tarrow);
  7885. } else {
  7886. nodeLen = nodeLen - 1;
  7887. ds_main_prcplist.moveRow(nodeLen, tarrow);
  7888. }
  7889. ds_main_prcplist.selectRow(tarrow);
  7890. ds_main_prcplist.rowposition = tarrow;
  7891. div_all.grd_prcplist.setCellPos(div_all.grd_prcplist.getCellPos());
  7892. } else { // 수정 후 코드 조회건이 1건 이상일 경우
  7893. lastrow = lastrow - 1;
  7894. var roop = nodeLen - lastrow;
  7895. for ( var i = 1; i < roop; i++ ) {
  7896. ds_main_prcplist.moveRow(lastrow++, tarrow++);
  7897. }
  7898. var tarrow2 = ds_init_rowmodify.getColumn(0, "modirow");
  7899. ds_main_prcplist.selectRow(tarrow2);
  7900. ds_main_prcplist.rowposition = tarrow2;
  7901. div_all.grd_prcplist.setCellPos(div_all.grd_prcplist.getCellPos());
  7902. }
  7903. ds_init_rowmodify.clearData();
  7904. ds_init_rowmodify.addRow();
  7905. }
  7906. }
  7907. /**@desc : 통증관리 화면.
  7908. * @return : true, false
  7909. * @authur : 한재상 2009. 9. 9
  7910. */
  7911. function fPainCnt() {
  7912. var orddeptcd = ds_paminfo.getColumn(0, "orddeptcd");
  7913. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag" );
  7914. var paincntyn = ds_initsrch_paincntyn.getColumn(0, "trgtcd");
  7915. var srcNodeCount = ds_initsrch_paincntdept.getCaseCount("trgtcd == '" + orddeptcd + "'");
  7916. if ( prcpgenrflag == "I" && paincntyn == "Y" && srcNodeCount != 0 ) {
  7917. var pid = ds_paminfo.getColumn(0, "pid");
  7918. var indd = ds_paminfo.getColumn(0, "indd");
  7919. var cretno = ds_paminfo.getColumn(0, "cretno");
  7920. fConfirmPainAdmin(pid, indd, cretno, "dr", "ds_searchinfo_paincount");
  7921. }
  7922. }
  7923. /**@desc :병리처방 과거 블록 지정 => 변경 요청번호 7322
  7924. * @return : true, false
  7925. * @authur : 손주연 2009.09.27
  7926. */
  7927. function fSetPlgyPastBlock() {
  7928. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  7929. var i = 0;
  7930. var tempcol2 = "";
  7931. var chkcnt = 0;
  7932. for (var j = 0; j < selectedRows.length; j++) {
  7933. i = selectedRows[j];
  7934. tempcol2 = ds_main_prcplist.getColumn(i, "tempcol2");
  7935. //earncls1 : 07 earncls2 : 01, 02(조직, 세포) 신규 팝업 화면이 뜨지 않아야 함.
  7936. if ( ds_main_prcplist.getColumn(i, "prcpclscd" ) != 'D2' ||
  7937. tempcol2.substring(0,5) == "07|01" || tempcol2.substring(0,5) == "07|02" ) {
  7938. sysf_messageBox (ds_main_prcplist.getColumn(i, "prcpnm") + "는 병리번호지정 가능한 처방이 아닙니다.", "I" );
  7939. return false;
  7940. } else {
  7941. chkcnt++;
  7942. }
  7943. }
  7944. if( chkcnt < 1 ) return false;
  7945. var mon = sysf_getCurrentMonitorNumber();
  7946. var xpt = this.getOwnerFrame().position.x + 100;
  7947. var ypt = this.getOwnerFrame().position.y + 100;
  7948. var pid = ds_paminfo.getColumn(0, "pid");
  7949. ds_hidden_reqfrminfo.clearData();
  7950. ds_hidden_reqfrminfo.addRow();
  7951. ds_hidden_reqfrminfo.setColumn(0, "pid", pid);
  7952. var objArg = new Object();
  7953. objArg.arg_ds_hidden_reqfrminfo = ds_hidden_reqfrminfo;
  7954. frmf_modal("SPLPJ02600", "SPLPJ02600", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  7955. var reqno = ds_hidden_reqfrminfo.getColumn(0, "reqno");
  7956. if ( !utlf_isNull(reqno)){
  7957. for( var j = 0; j < selectedRows.length; j++){
  7958. i = selectedRows[j];
  7959. tempcol2 = ds_main_prcplist.getColumn(i, "tempcol2" );
  7960. if( ds_main_prcplist.getColumn(i, "prcpclscd") == 'D2' &&
  7961. tempcol2.substring(0,5) != "07|01" && tempcol2.substring(0,5) != "07|02" ){
  7962. ds_main_prcplist.setColumn(i, "testreqlnkno", ds_hidden_reqfrminfo.getColumn(0, "reqno" ));
  7963. ds_main_prcplist.setColumn(i, "drugmthdspccd", ds_hidden_reqfrminfo.getColumn(0, "spccd" ));
  7964. ds_main_prcplist.setColumn(i, "drugmthdspccdnm", ds_hidden_reqfrminfo.getColumn(0, "spcnm" ));
  7965. }
  7966. }
  7967. }
  7968. return true;
  7969. }
  7970. /**@desc : 처방 화면의 처방코드 컬럼 SORTING
  7971. * @param :
  7972. * @return :
  7973. * @author : 전지은
  7974. * @---------------------------------------------------
  7975. */
  7976. function fGrdOnBeForeSort(){
  7977. var rowcount = ds_main_prcplist.rowcount;
  7978. //2009.10.15 처방 화면의 처방코드 컬럼 SORTING 기능 추가 요청 - 검색라인이 맨위로 올라가는 것을 방지
  7979. ds_main_prcplist.deleteRow(rowcount - 1);
  7980. //2009.10.29 mset 존재하면 copy&delete 해두었다가 정렬 후 추가해준다.
  7981. dsf_createDs("ds_temp_tempsortprcp");
  7982. ds_temp_tempsortprcp.copyData(ds_main_prcplist);
  7983. ds_main_prcplist.enableevent = false;
  7984. ds_temp_tempsortprcp.enableevent = false;
  7985. for(var i = ds_main_prcplist.rowcount - 1; i >= 0; i--){
  7986. if(ds_main_prcplist.getColumn(i, "inclprcpno") > "0" && ds_main_prcplist.getColumn(i, "prcpsetcd") != "-"){
  7987. ds_main_prcplist.deleteRow(i);
  7988. } else {
  7989. ds_temp_tempsortprcp.deleteRow(i);
  7990. }
  7991. }
  7992. ds_main_prcplist.enableevent = true;
  7993. ds_temp_tempsortprcp.enableevent = true;
  7994. }
  7995. /**@desc : 처방 화면의 처방코드 컬럼 SORTING
  7996. * @param :
  7997. * @return :
  7998. * @author : 전지은
  7999. * @---------------------------------------------------
  8000. */
  8001. function fGrdOnAfterSort(){
  8002. //2009.10.15 처방 화면의 처방코드 컬럼 SORTING 기능 추가 요청 - 정렬 후 검색라인 맨 밑에 추가
  8003. lf_appendChildPrcp ( "ds_reset_prcplist", "ds_main_prcplist", "main" ); //검색라인추가
  8004. //2009.10.29 mset처방의 자코드가 따로 그룹핑되도록 처리
  8005. if(!utlf_isNull(ds_temp_tempsortprcp) && ds_temp_tempsortprcp.rowcount > 0) {
  8006. var tempCnt = ds_temp_tempsortprcp.rowcount;
  8007. ds_main_prcplist.enableevent = false;
  8008. //처방 수만큼 check
  8009. for( var i = 0; i < ds_main_prcplist.rowcount; i++ ){
  8010. var iInclprcpno = ds_main_prcplist.getColumn(i, "inclprcpno");
  8011. var iPrcpsetcd = ds_main_prcplist.getColumn(i, "prcpsetcd");
  8012. if(iInclprcpno > '0' && iPrcpsetcd = '-') { // mset
  8013. for(var t = tempCnt - 1; t >= 0; t--){
  8014. var tInclprcpno = ds_temp_tempsortprcp.getColumn(t, "inclprcpno");
  8015. if(iInclprcpno == tInclprcpno){
  8016. i++;
  8017. ds_main_prcplist.insertRow(i);
  8018. ds_main_prcplist.copyRow(i, ds_temp_tempsortprcp, t);
  8019. }
  8020. }
  8021. }
  8022. }
  8023. ds_main_prcplist.applyChange();
  8024. ds_main_prcplist.enableevent = true;
  8025. dsf_deleteDs("ds_temp_tempsortprcp");
  8026. }
  8027. }
  8028. /**@desc : 처방 이동 (위로 or 아래로 버튼을 통한 이동)
  8029. * @param : btnFlag 버튼구분(top or bottom)
  8030. * @return : void
  8031. * @authur : 전지은 2009.11.18
  8032. * @---------------------------------------------------
  8033. */
  8034. function fMovePrcpList ( btnFlag ) {
  8035. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  8036. var frstRow = 0;
  8037. if( btnFlag == "top" ) frstRow = selectedRows[0];
  8038. else if( btnFlag == "bottom" ) frstRow = selectedRows[selectedRows.length - 1];
  8039. var allRows = ds_main_prcplist.rowcount - 1; //caption, search row
  8040. var addChkRow = 0;
  8041. var cnt = 0;
  8042. var chngYN = 0; //선택된 row인지 체크
  8043. var rowNum = 0;
  8044. var chkNum = 0; //위, 아래 row의 mset여부에 따라 달라지는 +/- row
  8045. var moveCnt = 0;
  8046. var iRow = 0;
  8047. var addNum = 0; //추가해야할 num
  8048. //var pmFlag = 0; //rowNum + - 여부 : 0 or else
  8049. var selInclprcpno = "";
  8050. var chkInclprcpno = "";
  8051. var inclprcpnoExistYN = "N";
  8052. var inclprcpnoCVS = "";
  8053. var inclprcpnoItem = "";
  8054. var printRow = new Array();
  8055. var printRow2 = new Array();
  8056. var selRows = new Array();
  8057. if( selectedRows.length < 1 ) return;
  8058. ds_main_prcplist.enableevent = false;
  8059. dsf_createDs("ds_tmp_moveprcp");
  8060. for(var i = selectedRows.length - 1; i >= 0; i--){
  8061. if(ds_main_prcplist.getColumn(selectedRows[i], "inclprcpno") > "0" && ds_main_prcplist.getColumn(selectedRows[i], "prcpsetcd") == "-")
  8062. inclprcpnoCVS = inclprcpnoCVS + ds_main_prcplist.getColumn(selectedRows[i], "inclprcpno") + "|";
  8063. }
  8064. inclprcpnoItem = inclprcpnoCVS.split("|");
  8065. //전체 row를 보면서 rowSeq를 설정해 줌 , rowseq순으로 /root/tmp_moveprcp => /root/main/prcp 로 이동
  8066. if( btnFlag == "top" ){
  8067. for( var i = ds_main_prcplist.rowcount - 1; i >= 0; i-- ){
  8068. iRow = i;
  8069. chkNum = 0;
  8070. chngYN = 0;
  8071. addNum = 0;
  8072. //pmFlag = 0;
  8073. if( iRow >= 0 ){
  8074. chkInclprcpno = ds_main_prcplist.getColumn(iRow, "inclprcpno");
  8075. if( inclprcpnoItem.length - 1 > 0 ){
  8076. for(var k = 0; k < inclprcpnoItem.length - 1; k++){ //copy대상의 mset
  8077. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  8078. chngYN = 1;
  8079. }
  8080. }
  8081. }
  8082. if( chngYN == 0 && ds_main_prcplist.getSelect(iRow) == true && chkInclprcpno == "0" ) chngYN = 1;
  8083. if( chngYN == 1 ){ //선택된 row이면(선택된모코드의 자코드도 포함)
  8084. addChkRow = iRow - 1;
  8085. selInclprcpno = "";
  8086. if( addChkRow >= 0 && addChkRow < ds_main_prcplist.rowcount ){
  8087. for(var j = addChkRow; j >= 0; j--){
  8088. addYN = "N";
  8089. chkInclprcpno = ds_main_prcplist.getColumn(j, "inclprcpno");
  8090. if( inclprcpnoItem.length - 1 > 0 ){
  8091. for(var k = 0; k < inclprcpnoItem.length - 1; k++){ //copy대상의 mset
  8092. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  8093. //addNum++;
  8094. addYN = "Y";
  8095. }
  8096. }
  8097. }
  8098. if( addYN != "Y" && ds_main_prcplist.getSelect(j) == true && chkInclprcpno == "0" ){
  8099. //addNum++;
  8100. addYN = "Y";
  8101. }
  8102. if( addYN != "Y" ){
  8103. if( chkInclprcpno != "0" ){ // && chkInclprcpno != inclprcpnoItem[k]
  8104. if( utlf_isNull(selInclprcpno) ) selInclprcpno = ds_main_prcplist.getColumn(j, "inclprcpno");
  8105. if( !utlf_isNull(selInclprcpno) && selInclprcpno == chkInclprcpno && utlf_isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  8106. chkNum++;
  8107. }
  8108. else{
  8109. if( printRow.length <= 0 ){
  8110. if( utlf_isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  8111. chkNum++;
  8112. }
  8113. break;
  8114. }
  8115. }
  8116. }
  8117. }
  8118. }
  8119. }
  8120. if( chngYN > 0 ){
  8121. rowNum = i - printRow.length;
  8122. moveCnt++;
  8123. selRows[selRows.length] = rowNum;
  8124. //임시처방은 순서변경 시 수정모드로 상태를 세팅해줌
  8125. if( ds_main_prcplist.getColumn(i, "status") == "-") ds_main_prcplist.setColumn(i, "status", "U" );
  8126. }else{
  8127. if( printRow.length > 0 ){
  8128. for( var p = 0; p < printRow.length; p++ ){
  8129. if( printRow[p] == i ) addNum = moveCnt;
  8130. }
  8131. }
  8132. rowNum = i + addNum;
  8133. if( printRow.length == 0 || (printRow.length > 0 && i == printRow[printRow.length-1]) ){
  8134. moveCnt = 0;
  8135. printRow = new Array();
  8136. }
  8137. }
  8138. //검색 row는 rowseq 변동 없음
  8139. if( ds_main_prcplist.getColumn(i, "status") == "S" ) rowNum = i;
  8140. ds_main_prcplist.addColumn("rowseq", "string");
  8141. ds_main_prcplist.setColumn(i, "rowseq", rowNum);
  8142. printRow2[i-1] = rowNum;
  8143. }
  8144. } else{
  8145. for( var i = 0; i < ds_main_prcplist.rowcount; i++ ){
  8146. iRow = i;
  8147. chkNum = 0;
  8148. chngYN = 0;
  8149. addNum = 0;
  8150. //pmFlag = 0;
  8151. if( iRow < ds_main_prcplist.rowcount - 1){
  8152. chkInclprcpno = ds_main_prcplist.getColumn(iRow, "inclprcpno");
  8153. if( inclprcpnoItem.length - 1 > 0 ){
  8154. for(var k = 0; k < inclprcpnoItem.length - 1; k++){ //copy대상의 mset
  8155. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  8156. chngYN = 1;
  8157. }
  8158. }
  8159. }
  8160. if( chngYN == 0 && ds_main_prcplist.getSelect(iRow) == true && chkInclprcpno == "0" ) chngYN = 1;
  8161. if( chngYN == 1 ){ //선택된 row이면(선택된모코드의 자코드도 포함)
  8162. addChkRow = iRow + 1;
  8163. selInclprcpno = "";
  8164. if( addChkRow >= 0 && addChkRow < ds_main_prcplist.rowcount ){
  8165. for(var j = addChkRow; j < allRows; j++){
  8166. addYN = "N";
  8167. chkInclprcpno = ds_main_prcplist.getColumn(j, "inclprcpno");
  8168. if( inclprcpnoItem.length - 1 > 0 ){
  8169. for(var k = 0; k < inclprcpnoItem.length - 1; k++){ //copy대상의 mset
  8170. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  8171. //addNum++;
  8172. addYN = "Y";
  8173. }
  8174. }
  8175. }
  8176. if( addYN != "Y" && ds_main_prcplist.getSelect(j) == true && chkInclprcpno == "0" ){
  8177. //addNum++;
  8178. addYN = "Y";
  8179. }
  8180. if( addYN != "Y" ){
  8181. if( chkInclprcpno != "0" ){ // && chkInclprcpno != inclprcpnoItem[k]
  8182. if( utlf_isNull(selInclprcpno) ) selInclprcpno = ds_main_prcplist.getColumn(j, "inclprcpno");
  8183. if( !utlf_isNull(selInclprcpno) && selInclprcpno == chkInclprcpno && utlf_isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  8184. chkNum++;
  8185. }
  8186. else{
  8187. if( printRow.length <= 0 ){
  8188. if( utlf_isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  8189. chkNum++;
  8190. }
  8191. break;
  8192. }
  8193. }
  8194. }
  8195. }
  8196. }
  8197. }
  8198. if( chngYN > 0 ){
  8199. rowNum = i + printRow.length;
  8200. moveCnt++;
  8201. selRows[selRows.length] = rowNum;
  8202. //임시처방은 순서변경 시 수정모드로 상태를 세팅해줌
  8203. if( ds_main_prcplist.getColumn(i, "status") == "-") ds_main_prcplist.setColumn(i, "status", "U" );
  8204. }else{
  8205. if( printRow.length > 0 ){
  8206. for( var p = 0; p < printRow.length; p++ ){
  8207. if( printRow[p] == i ) addNum = moveCnt;
  8208. }
  8209. }
  8210. rowNum = i - addNum;
  8211. if( printRow.length == 0 || (printRow.length > 0 && i == printRow[printRow.length-1]) ){
  8212. moveCnt = 0;
  8213. printRow = new Array();
  8214. }
  8215. }
  8216. //검색 row는 rowseq 변동 없음
  8217. if( ds_main_prcplist.getColumn(i, "status") == "S" ) rowNum = i;
  8218. ds_main_prcplist.addColumn("rowseq", "string");
  8219. ds_main_prcplist.setColumn(i, "rowseq", rowNum);
  8220. printRow2[i-1] = rowNum;
  8221. }
  8222. }
  8223. //alert( printRow2 );
  8224. ds_tmp_moveprcp.copyData(ds_main_prcplist);
  8225. //처방 인스턴스로 이동 후 refresh
  8226. ds_main_prcplist.clearData();
  8227. for( var i = 0; i < ds_tmp_moveprcp.rowcount; i++ ){
  8228. var findRow = ds_tmp_moveprcp.findRow("rowseq", i);
  8229. var row = ds_main_prcplist.addRow();
  8230. ds_main_prcplist.copyRow(row, ds_tmp_moveprcp, findRow);
  8231. }
  8232. ds_main_prcplist.deleteColumn("rowseq");
  8233. dsf_deleteDs("ds_tmp_moveprcp");
  8234. ds_main_prcplist.applyChange();
  8235. //이동된 row를 select 처리함
  8236. if( selRows.length > 0 ){
  8237. for(var i = 0; i < selRows.length; i++){
  8238. ds_main_prcplist.selectRow(selRows[i]);
  8239. }
  8240. ds_main_prcplist.rowposition = selRows[selRows.length - 1];
  8241. }
  8242. ds_main_prcplist.enableevent = true;
  8243. }
  8244. // 20100108 한재상 - 유전자검사 동의서 출력방식 변경 (OCR -> REX)
  8245. function fSaveOCRIF(ocrtag, pid, orddd, cretno, ordtype, orddeptcd, orddrid, formcd, formfromdt, diaghngnm, ophngnm, pagecnt){
  8246. trace("fSaveOCRIF: " + ocrtag + "," + pid + "," + orddd + "," + cretno + "," + ordtype + "," + orddeptcd + "," + orddrid + "," + formcd + "," + formfromdt + "," + diaghngnm + "," + ophngnm + "," + pagecnt);
  8247. var savepath = dsf_createDsRow("ds_hidden_atadocrdata", [{col:"ocrtag", type:"string", size:256},
  8248. {col:"pid", type:"string", size:256},
  8249. {col:"ordtype", type:"string", size:256},
  8250. {col:"orddd", type:"string", size:256},
  8251. {col:"orddrid", type:"string", size:256},
  8252. {col:"orddeptcd", type:"string", size:256},
  8253. {col:"formcd", type:"string", size:256},
  8254. {col:"formfromdt", type:"string", size:256},
  8255. {col:"fstprntdt", type:"string", size:256},
  8256. {col:"fstprntdeptcd", type:"string", size:256},
  8257. {col:"fstprntid", type:"string", size:256},
  8258. {col:"updtdt", type:"string", size:256},
  8259. {col:"updtdeptcd", type:"string", size:256},
  8260. {col:"updtuserid", type:"string", size:256},
  8261. {col:"diagnm", type:"string", size:256},
  8262. {col:"opnm", type:"string", size:256},
  8263. {col:"pagecnt", type:"string", size:256}]);
  8264. ds_hidden_atadocrdata.setColumn(0, "ocrtag", ocrtag);
  8265. ds_hidden_atadocrdata.setColumn(0, "pid", pid);
  8266. ds_hidden_atadocrdata.setColumn(0, "ordtype", ordtype);
  8267. ds_hidden_atadocrdata.setColumn(0, "orddd", orddd);
  8268. ds_hidden_atadocrdata.setColumn(0, "cretno", cretno);
  8269. ds_hidden_atadocrdata.setColumn(0, "orddrid", orddrid);
  8270. ds_hidden_atadocrdata.setColumn(0, "orddeptcd", orddeptcd);
  8271. ds_hidden_atadocrdata.setColumn(0, "formcd", formcd);
  8272. ds_hidden_atadocrdata.setColumn(0, "formfromdt", formfromdt);
  8273. ds_hidden_atadocrdata.setColumn(0, "fstprntdt", utlf_getCurrentDate() + utlf_getCurrentTime());
  8274. ds_hidden_atadocrdata.setColumn(0, "fstprntdeptcd", sysf_getUserInfo("dutplcecd"));
  8275. ds_hidden_atadocrdata.setColumn(0, "fstprntid", sysf_getUserInfo("userid"));
  8276. ds_hidden_atadocrdata.setColumn(0, "updtdt", utlf_getCurrentDate() + utlf_getCurrentTime());
  8277. ds_hidden_atadocrdata.setColumn(0, "updtdeptcd", sysf_getUserInfo("dutplcecd"));
  8278. ds_hidden_atadocrdata.setColumn(0, "updtuserid", sysf_getUserInfo("userid"));
  8279. ds_hidden_atadocrdata.setColumn(0, "diagnm", diaghngnm);
  8280. ds_hidden_atadocrdata.setColumn(0, "opnm", ophngnm);
  8281. ds_hidden_atadocrdata.setColumn(0, "pagecnt", pagecnt);
  8282. var sRstRef = dsf_createDs("ds_init_insocrtag_ocrprntlnfo");
  8283. var oParam = {};
  8284. oParam.id = "TXMRF03805";
  8285. oParam.service = "formmngtapp.OcrPreViewMngt";
  8286. oParam.method = "reqInsOcrPrntInfo";
  8287. oParam.inds = "req=ds_hidden_atadocrdata";
  8288. oParam.outds = sRstRef + "=ocrprntlnfo";
  8289. oParam.async = false;
  8290. oParam.callback = "cf_TXMRF03805";
  8291. tranf_submit(oParam);
  8292. if(arErrorCode.pop("TXMRF03805") > -1) {
  8293. dsf_deleteDs(savepath);
  8294. return true;
  8295. } else {
  8296. dsf_deleteDs(savepath);
  8297. return false;
  8298. }
  8299. }
  8300. function cf_TXMRF03805(sSvcId, nErrorCode, sErrorMsg) {
  8301. arErrorCode.push(sSvcId, nErrorCode);
  8302. }
  8303. /**@desc : 퇴원예고등록 또는 수정처리를 위한 Initialize
  8304. * @return : void
  8305. * @authur : 오지훈 2007. 7. 24
  8306. * @---------------------------------------------------
  8307. */
  8308. function fDschNotiInit(){
  8309. //ioflag▦pid▦orddd▦cretno▦instcd▦acptseqno▦orgorddd▦
  8310. //외래/입원구분▦등록번호▦진료일자▦생성번호▦기관코드▦등록일련번호▦원진료일자▦
  8311. var ioflag = ds_paminfo.getColumn(0, "ioflag");
  8312. var param;
  8313. if ( ioflag == "O" ) {
  8314. var pid = ds_paminfo.getColumn(0, "pid" );
  8315. var orddd = ds_paminfo.getColumn(0, "orddd" );
  8316. var cretno = ds_paminfo.getColumn(0, "cretno" );
  8317. var instcd = ds_paminfo.getColumn(0, "instcd" );
  8318. var acptseqno = ds_paminfo.getColumn(0, "acptseqno" );
  8319. var orgorddd = ds_paminfo.getColumn(0, "orgorddd" );
  8320. param = ioflag + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd + "▦" + acptseqno + "▦" + orgorddd;
  8321. } else {
  8322. //ioflag▦pid▦indd▦cretno▦seqno▦instcd▦
  8323. //외래/입원구분▦등록번호▦입원일자▦생성번호▦일련번호▦기관코드
  8324. var pid = ds_paminfo.getColumn(0, "pid" );
  8325. var indd = ds_paminfo.getColumn(0, "indd" );
  8326. var cretno = ds_paminfo.getColumn(0, "cretno" );
  8327. var instcd = ds_paminfo.getColumn(0, "instcd" );
  8328. var seqno = ds_paminfo.getColumn(0, "seqno" );
  8329. if(ioflag == "D"){ ioflag = "I";}
  8330. param = ioflag + "▦" + pid + "▦" + indd + "▦" + cretno + "▦" + instcd;
  8331. }
  8332. appf_initPatientInfo(param);
  8333. }
  8334. /**@desc : 처방화면에서 초기 검색 값을 가져옴
  8335. * @return : void
  8336. * @authur : 마정민 2007. 8. 9
  8337. */
  8338. function fInitSrch() {
  8339. fInitSrchLogin();
  8340. fInitSrchPrcp();
  8341. }
  8342. /**@desc : 처방화면에서 환자초기검색 값을 가져옴
  8343. * @return : void
  8344. * @authur : 마정민 2007.01.26
  8345. */
  8346. function fInitSrchPrcp() {
  8347. //model.addlog(" SPEED CHECK START OF fInitSrchPrcp()");
  8348. if ( ds_root.getColumn(0, "usge" ) == "prcp" ) {
  8349. var orddd = "";
  8350. if (ds_paminfo.getColumn(0, "ioflag") == "O" || ds_paminfo.getColumn(0, "ioflag") == "S") {
  8351. orddd = ds_paminfo.getColumn(0, "orddd");
  8352. } else {
  8353. orddd = ds_paminfo.getColumn(0, "indd");
  8354. }
  8355. ds_initsrchcond.setColumn(0, "ioflag", ds_paminfo.getColumn(0, "ioflag"));
  8356. ds_initsrchcond.setColumn(0, "pid", ds_paminfo.getColumn(0, "pid"));
  8357. ds_initsrchcond.setColumn(0, "orddd", orddd);
  8358. ds_initsrchcond.setColumn(0, "cretno", ds_paminfo.getColumn(0, "cretno"));
  8359. ds_initsrchcond.setColumn(0, "instcd", sysf_getUserInfo("dutplceinstcd"));
  8360. ds_initsrchcond.setColumn(0, "prcpdd", ds_init.getColumn(0, "prcpdd"));
  8361. ds_initsrchcond.setColumn(0, "deptcd", sysf_getUserInfo("dutplcecd"));
  8362. ds_initsrchcond.setColumn(0, "userid", sysf_getUserInfo("userid"));
  8363. ds_initsrchcond.setColumn(0, "scrnkindcd", "00");
  8364. ds_initsrchcond.setColumn(0, "scrnid", "SMMMO00100" );
  8365. ds_initsrchcond.setColumn(0, "suppkind", ds_paminfo.getColumn(0, "suppkind"));
  8366. ds_initsrchcond.setColumn(0, "orddeptcd", ds_paminfo.getColumn(0, "orddeptcd"));
  8367. if (ds_root.getColumn(0, "addprcp") == "Y") {
  8368. ds_initsrchcond.setColumn(0, "prcpkind", "addprcp" );
  8369. } else {
  8370. ds_initsrchcond.setColumn(0, "prcpkind", "prcp" );
  8371. }
  8372. var oParam = {};
  8373. oParam.id = "TRMMO00206";
  8374. oParam.service = "prcpmngtapp.PrcpMngt";
  8375. oParam.method = "reqGetPrcpEtcEnvCntsPrcp";
  8376. oParam.inds = "req=ds_initsrchcond";
  8377. oParam.outds = "ds_initsrchprcp_prcpetccnts=prcpetccnts ds_initsrchprcp_rsrvcvrtprcp=rsrvcvrtprcp";
  8378. oParam.async = false;
  8379. tranf_submit(oParam);
  8380. if (ds_root.getColumn(0, "usge") == "prcp") {
  8381. if (ds_patflag.getColumn(0, "prcpgenrflag") == "E") {
  8382. var erprcpyn = ds_initsrchprcp_prcpetccnts.getColumn(0, "erprcpyn" );
  8383. var erresn = lf_getArrayData(erprcpyn + "^", 0, 0, "^", "|");
  8384. if (!utlf_isNull(erresn) && erresn != "-" && erresn != "Y") {
  8385. ds_init.setColumn(0, "erresn", erresn );
  8386. //응급의료 관리료가 G3인경우 응급환자
  8387. if ( erresn == "G3" ) {
  8388. ds_init.setColumn(0, "hosinprcpresncd", "11");
  8389. }
  8390. } else {
  8391. ds_init.setColumn(0, "erresn", "");
  8392. }
  8393. } else {
  8394. ds_init.setColumn(0, "erresn", "");
  8395. }
  8396. }
  8397. if (ds_root.getColumn(0, "addprcp") != "Y" && utlf_isNull(ds_root.getColumn(0, "cp" )) ) { // !"Y" -> isNull로 조건 변경(2009.05.12 JJE)
  8398. if (ds_initsrchprcp_prcpetccnts.getColumn(0, "serdiagyn" ) == "Y")
  8399. div_all.Div00.stt_pid.style.color = "#ff0000";
  8400. else
  8401. div_all.Div00.stt_pid.style.color = "#000000";
  8402. }
  8403. //입원당일 admission 처방이 없으면 변경해 준다.
  8404. if (ds_initsrchprcp_prcpetccnts.getColumn(0, "admiprcpyn" ) == "Y" && utlf_isNull(ds_operation.getColumn(0, "oprsrvno"))){
  8405. ds_init.setColumn(0, "prcpkindcd", "00");
  8406. }
  8407. //20131119 이정택 추가(산정특례 기간 알 수 있도록 표시)
  8408. if(!utlf_isNull(ds_initsrchprcp_prcpetccnts.getColumn(0, "message"))){
  8409. ds_init.setColumn(0, "message", ds_initsrchprcp_prcpetccnts.getColumn(0, "message"));
  8410. div_all.Div00.stt_message.style.color = "#ff0000";
  8411. }else{
  8412. ds_init.setColumn(0, "message", "");
  8413. }
  8414. //20131119
  8415. }
  8416. //model.addlog(" SPEED CHECK END OF fInitSrchPrcp()");
  8417. }
  8418. /**@desc : 처방화면에서 환자초기검색 값을 가져옴
  8419. * @return : void
  8420. * @authur : 마정민 2007.01.26
  8421. */
  8422. function fInitSrchLogin(force) {
  8423. if (force || !appf_getOrderBasicInfo("ds_initsrch_")) {
  8424. ds_initsrchcond.setColumn(0, "instcd", sysf_getUserInfo("dutplceinstcd"));
  8425. ds_initsrchcond.setColumn(0, "prcpdd", ds_init.getColumn(0, "prcpdd"));
  8426. var outds = "";
  8427. var sInitsrchs = ["btnenvcnts", "btnsrchenvcnts", "prcpetccnts", "prcpenvcnts", "diagautocnts", "prcpinsertcnts", "inclprcpcnts", "ercalcscorcd", "dietendtm", "earnclsauto", "independprcpimpsi", "trgtcdlist", "tdmcdlist", "opdrugcdlist", "drjobkindcd", "aftcertprcpcls", "aftcertearncls", "irrprcpcd", "hlaprcpcd", "pretest", "ngb", "setprcplist", "opanstdeptcd", "recovdeptcd", "opdeptcd", "envinfo"];
  8428. var endCnt = sInitsrchs.length - 1;
  8429. for(var i = 0; i < sInitsrchs.length; i++) {
  8430. dsf_createDs("ds_initsrch_" + sInitsrchs[i]);
  8431. outds += "ds_initsrch_" + sInitsrchs[i] + "=" + sInitsrchs[i] + ((i != endCnt) ? " " : "");
  8432. }
  8433. var oParam = {};
  8434. oParam.id = "TRMMO00205";
  8435. oParam.service = "prcpmngtapp.PrcpMngt";
  8436. oParam.method = "reqGetPrcpEtcEnvCntsLogin";
  8437. oParam.inds = "req=ds_initsrchcond";
  8438. oParam.outds = outds;
  8439. oParam.async = false;
  8440. tranf_submit(oParam);
  8441. }
  8442. }
  8443. /**@desc : 처방화면에서 button 초기화 setting
  8444. * @return : void
  8445. * @authur : 마정민 2007. 8. 9
  8446. */
  8447. function fInitBtnSet() {
  8448. for ( var i = 0; i < 19; i++ ) {
  8449. var btncd = ds_initsrch_btnenvcnts.getColumn(i, "btncd");
  8450. var btnnm = "div_all.Div00.Tab_btns.tabpage1.button" + i;
  8451. var buttonObj = eval(btnnm);
  8452. if ( i < ds_initsrch_btnenvcnts.rowcount) {
  8453. buttonObj.text = ds_initsrch_btnenvcnts.getColumn(i, "btnnm");
  8454. buttonObj.visible = true;
  8455. buttonObj._value = btncd;
  8456. buttonObj.onclick.addHandler(fBtnClick);
  8457. } else {
  8458. buttonObj.visible = false;
  8459. }
  8460. }
  8461. fInitSrchBtnSet();
  8462. // 처방상세화면 표시여부 개인별 조회 option 추가 2014.07.16 엄영만
  8463. var sOption55 = ds_initsrch_envinfo.lookup("qestcd", '055', "answcnt");
  8464. if(sOption55 == "001" && typeof(div_all.div_prcpdetail) == "object" && ds_root.getColumn(0, "cp") != "Y") { // 처방 상세 화면 표시 (CP 제외)
  8465. div_all.grd_prcplist.position.height = 476;
  8466. div_all.div_prcpdetail.visible = true;
  8467. } else {
  8468. div_all.grd_prcplist.position.height = 616;
  8469. div_all.div_prcpdetail.visible = false;
  8470. }
  8471. // 처방에서 대상자탭 사용여부 개인별 조회 option 추가 2014.07.16 엄영만
  8472. var sOption56 = ds_initsrch_envinfo.lookup("qestcd", '056', "answcnt");
  8473. if(sOption56 == "001") { // 진료대상사 사용
  8474. if(!utlf_isNull(div_all.Tab_prcp.components["tp_clinc"])) {
  8475. div_all.Tab_prcp.removeTabpage(6);
  8476. div_all.Tab_prcp_btn.removeTabpage(6);
  8477. }
  8478. if(!utlf_isNull(div_all.Tab_prcp.components["tp_prmsop"])) {
  8479. div_all.Tab_prcp.removeTabpage(5);
  8480. div_all.Tab_prcp_btn.removeTabpage(5);
  8481. }
  8482. } else {
  8483. if(!utlf_isNull(div_all.Tab_prcp.components["tp_patlist"])) {
  8484. div_all.Tab_prcp.removeTabpage(4);
  8485. div_all.Tab_prcp_btn.removeTabpage(4);
  8486. }
  8487. }
  8488. }
  8489. /**@desc : 처방화면에서 버튼값 설정
  8490. * @return : void
  8491. * @authur : 마정민 2007. 8. 9
  8492. */
  8493. function fBtnClick(obj:Button, e:ClickEventInfo) {
  8494. var buttonObj = obj;
  8495. var buttonValue = obj._value;
  8496. var sOrdDd = "";
  8497. var sOrddrId = "";
  8498. var sPrcpGenrFlag = ds_patflag.getColumn(0, "prcpgenrflag" );
  8499. var sOrdDeptCd = ds_paminfo.getColumn(0, "orddeptcd");
  8500. var sPid = ds_paminfo.getColumn(0, "pid");
  8501. var sCretno = ds_paminfo.getColumn(0, "cretno");
  8502. if ( sPrcpGenrFlag == "O" || sPrcpGenrFlag == "S" ) {
  8503. sOrdDd = ds_paminfo.getColumn(0, "orddd");
  8504. sOrddrId = ds_paminfo.getColumn(0, "orddrid");
  8505. } else {
  8506. sOrdDd = ds_paminfo.getColumn(0, "indd");
  8507. sOrddrId = ds_paminfo.getColumn(0, "medispclid");
  8508. }
  8509. if ( buttonValue == "01") { //대상자
  8510. var patListObj = frmf_getMainViewer();
  8511. patListObj.frmf_open("SPMMO04200", "SPMMO04200", null, null, null, null, null, null, null, "max=false", null, null, "M");
  8512. } else if ( buttonValue == "02") { //항암처방
  8513. ds_hidden_receivedata.clearData();
  8514. ds_hidden_receivedata.addRow();
  8515. ds_hidden_receivedata.setColumn(0, "orddeptcd", sOrdDeptCd);
  8516. ds_hidden_receivedata.setColumn(0, "ioflag", sPrcpGenrFlag );
  8517. ds_hidden_receivedata.setColumn(0, "pid", sPid);
  8518. ds_hidden_receivedata.setColumn(0, "age", ds_paminfo.getColumn(0, "age"));
  8519. ds_hidden_receivedata.setColumn(0, "sex", ds_paminfo.getColumn(0, "sex"));
  8520. ds_hidden_receivedata.setColumn(0, "cretno", sCretno);
  8521. ds_hidden_receivedata.setColumn(0, "orddd", sOrdDd );
  8522. var mon = sysf_getCurrentMonitorNumber();
  8523. var xpt = this.getOwnerFrame().position.x;
  8524. var ypt = this.getOwnerFrame().position.y + 10;
  8525. dsf_createDs("ds_hidden_receivedata_clone");
  8526. ds_hidden_receivedata_clone.copyData(ds_hidden_receivedata);
  8527. var objArg = new Object();
  8528. objArg.arg_ds_send_srchdata_receivedata = ds_hidden_receivedata_clone;
  8529. frmf_modal("SMADB01000", "SMADB01000", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  8530. fPatDiagSrch();
  8531. //항암프로토콜을 저장시 지시처방을 항암프로토콜명으로 만들어준다.
  8532. if (frmf_getParameter("SMADB01000_saveyn") =="Y") {
  8533. var insrow = 0;
  8534. if ( ds_main_prcplist.rowposition == ds_main_prcplist.rowcount - 1 ) {
  8535. insrow = ds_main_prcplist.rowcount - 1;
  8536. } else {
  8537. insrow = ds_main_prcplist.rowposition + 1;
  8538. }
  8539. ds_prcpsrch_prcplist.copyData(ds_directprcp_prcplist);
  8540. var srchRow = lf_addPrcpDetl ( "import" , "ds_prcpsrch_prcplist" , "ds_main_prcplist" , 0, insrow, "00" );
  8541. //model.duplicate( model.instances(0).selectSingleNode( "/root/main/prcp" ), "/root/directprcp/prcplist", "*[" + insrow + "]");
  8542. ds_main_prcplist.setColumn(insrow, "prcpnm", frmf_getParameter("SMADB01000_prcpnm"));
  8543. frmf_clearParameter("SMADB01000_saveyn");
  8544. frmf_clearParameter("SMADB01000_prcpnm");
  8545. div_all.grd_prcplist.setFocus();
  8546. ds_main_prcplist.selectRow(insrow);
  8547. ds_main_prcplist.rowposition = insrow;
  8548. div_all.grd_prcplist.setCellPos(div_all.grd_prcplist.getBindCellIndex("body", "prcpnm"));
  8549. div_all.grd_prcplist.showEditor(true);
  8550. }
  8551. } else if ( buttonValue == "03") { //재활예약
  8552. frmf_setParameter("SMAEA01900_Param_doctorYn", "Y");
  8553. lf_prcpModal ("SMAEA01900", 0, 40);
  8554. frmf_clearParameter("SMAEA01900_Param_doctorYn");
  8555. } else if ( buttonValue == "04") { //입원결정
  8556. frmf_setParameter("SPMMO00100_param", param);
  8557. lf_prcpModal ("SPMMO00100", 100, 40);
  8558. } else if ( buttonValue == "05") { //임상연구
  8559. var oParam = {};
  8560. oParam.id = "TRMMO00120";
  8561. oParam.service = "prcpbaseapp.PrcpClsMngt";
  8562. oParam.method = "reqGetSubjPrcpChk";
  8563. oParam.inds = "req=ds_initsrchcond";
  8564. oParam.outds = "ds_temp_subjprcpchk=subjprcpchk";
  8565. oParam.async = false;
  8566. tranf_submit(oParam);
  8567. if (ds_temp_subjprcpchk.getColumn(0, "subjrgstyn") == "N" ){
  8568. sysf_messageBox("임상연구 처방은 피험자등록" , "E012");
  8569. return -1;
  8570. }
  8571. var clincstdyno = ds_temp_subjprcpchk.getColumn(0, "clincstdyno");
  8572. if (sPrcpGenrFlag == "I" || sPrcpGenrFlag == "D" || sPrcpGenrFlag == "E") {
  8573. var sInputDs = dsf_createDsRow("ds_TXMMO00113", [{col:"pid", type:"string", size:256, val:sPid},
  8574. {col:"indd", type:"string", size:256, val:sOrdDd},
  8575. {col:"cretno", type:"string", size:256, val:sCretno}]);
  8576. var sOutputDs = dsf_createRow("ds_temp_rtnstdyotpt");
  8577. var oParam = {};
  8578. oParam.id = "TXMMO00113";
  8579. oParam.service = "prcpmngtapp.PrcpMngt";
  8580. oParam.method = "reqExeInRgstSubKindIF";
  8581. oParam.inds = "req=" + sInputDs;
  8582. oParam.outds = sOutputDs + "=rtnstdyotpt";
  8583. oParam.async = false;
  8584. oParam.callback = "cf_TXMMO00113";
  8585. tranf_submit(oParam);
  8586. if(arErrorCode.pop("TXMMO00113") < 0) {
  8587. sysf_messageBox("임상접수를 생성하는데 ", "E009");
  8588. } else {
  8589. sysf_messageBox("임상접수 생성이 ", "I002");
  8590. }
  8591. dsf_deleteDs("ds_TXMMO00113");
  8592. } else if (sPrcpGenrFlag == "O" ) {
  8593. var centcd = ds_paminfo.getColumn(0, "centcd" );
  8594. var subdeptcd = ds_paminfo.getColumn(0, "subdeptcd" );
  8595. var sInputDs = dsf_createDsRow("ds_TXMMO00112", [{col:"otpt_flag", type:"string", size:256, val:"I"}, //otpt_flag
  8596. {col:"otpt_pid", type:"string", size:256, val:sPid}, //otpt_pid
  8597. {col:"otpt_orddd", type:"string", size:256, val:sOrdDd}, //otpt_orddd
  8598. {col:"otpt_orddeptcd", type:"string", size:256, val:sOrdDeptCd}, //otpt_orddeptcd
  8599. {col:"otpt_orddrid", type:"string", size:256, val:sOrddrId}, //otpt_orddrid
  8600. {col:"otpt_ordtm", type:"string", size:256, val:utlf_getCurrentTime().substr(0,4)}, //otpt_ordtm
  8601. {col:"otpt_rsrvflag", type:"string", size:256, val:"-"}, //otpt_rsrvflag
  8602. {col:"otpt_etcordflag", type:"string", size:256, val:"-"}, //otpt_etcordflag
  8603. {col:"otpt_instcd", type:"string", size:256, val:sysf_getUserInfo("dutplceinstcd")}, //otpt_instcd
  8604. {col:"sess_userid", type:"string", size:256, val:sysf_getUserInfo("userid")}, //sess_userid
  8605. {col:"otpt_medamtestmyn", type:"string", size:256, val:"N"}, //otpt_medamtestmyn
  8606. {col:"otpt_medamtfreeresn", type:"string", size:256, val:"09"}, //otpt_medamtfreeresn
  8607. {col:"otpt_centcd", type:"string", size:256, val:centcd}, //otpt_centcd
  8608. {col:"otpt_subdeptcd", type:"string", size:256, val:subdeptcd}, //otpt_subdeptcd
  8609. {col:"otpt_clincstdyno", type:"string", size:256, val:clincstdyno}]); //otpt_clincstdyno
  8610. var sOutputDs = dsf_createRow("ds_temp_rtnstdyotpt");
  8611. var oParam = {};
  8612. oParam.id = "TXMMO00112";
  8613. oParam.service = "prcpmngtapp.PrcpMngt";
  8614. oParam.method = "reqExeSetOtptDial";
  8615. oParam.inds = "req=ds_TXMMO00112";
  8616. oParam.outds = "ds_temp_rtnstdyotpt=rtnstdyotpt";
  8617. oParam.async = false;
  8618. oParam.callback = "cf_TXMMO00112";
  8619. tranf_submit(oParam);
  8620. if(arErrorCode.pop("TXMMO00112") < 0) {
  8621. sysf_messageBox("임상접수를 생성하는데 ", "E009");
  8622. } else {
  8623. var errmsg = ds_temp_rtnstdyotpt.getColumn(0, "errmsg");
  8624. if (utlf_isNull(errmsg.getTrim())) {
  8625. sysf_messageBox("임상접수 생성이 ", "I002");
  8626. } else {
  8627. sysf_messageBox(errmsg, "E");
  8628. }
  8629. }
  8630. dsf_deleteDs("ds_TXMMO00112");
  8631. } else {
  8632. sysf_messageBox ( "외래, 입원, 응급, DSC만 가능합니다.", "E" );
  8633. }
  8634. } else if ( buttonValue == "06") { //cp처방
  8635. if ( ds_root.getColumn(0, "cp" ) != "Y" ) {
  8636. var mainObj = frmf_getMainViewer();
  8637. mainObj.frmf_open("SPMMP01200", "SPMMP01200", null, false, 2, 0, 20, null, null, null, null, null, "M");
  8638. }
  8639. } else if ( buttonValue == "07") { //tpn처방
  8640. var prcpdd = ds_init.getColumn(0, "prcpdd");
  8641. var sInputDs = dsf_createDsRow("ds_temp_patdata", [{col:"pid", type:"string", size:256, val:sPid},
  8642. {col:"ioflag", type:"string", size:256, val:sPrcpGenrFlag},
  8643. {col:"orddeptcd", type:"string", size:256, val:sOrdDeptCd},
  8644. {col:"orddd", type:"string", size:256, val:sOrdDd},
  8645. {col:"orddrid", type:"string", size:256, val:sOrddrId},
  8646. {col:"prcpdd", type:"string", size:256, val:prcpdd}]);
  8647. var mon = sysf_getCurrentMonitorNumber();
  8648. var xpt = this.getOwnerFrame().position.x;
  8649. var ypt = this.getOwnerFrame().position.y + 10;
  8650. var objArg = new Object();
  8651. objArg.arg_ds_temp_patdata = ds_temp_patdata;
  8652. frmf_modal("SMADB01100", "SMADB01100", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  8653. } else if ( buttonValue == "08") { //퇴원예고
  8654. if (lf_ContainsHardCD("341", "Y") && checkRtnDrug()) { // 간호 반납약 체크, 하드코드 341 체크
  8655. return;
  8656. }
  8657. if (lf_ContainsHardCD("341", "Y") && checkRtnPrcp()) { // 반환요청 처방(E) 체크, 하드코드 341 체크 퇴원예고 등록시 반환요청(E) 처방 여부를 체크한다. 20130803 엄영만
  8658. return;
  8659. }
  8660. if (lf_ContainsHardCD("280", "Y") && !fCheckOpFee( "0", "0", "ds_main_prcplist", "N", "dsch" )) { // 수술료 처방 체크 블러킹
  8661. return;
  8662. }
  8663. preDsch(); // 퇴원예고
  8664. } else if ( buttonValue == "09") { //통합예약
  8665. lf_prcpModal ( "SMAEA02000", 0, 60 );
  8666. } else if ( buttonValue == "10") { //Medical Reference(의학참고)
  8667. lf_prcpModal ( "SMMMD05200", 0, 60 );
  8668. } else if ( buttonValue == "11") { //수술예약
  8669. lf_prcpModal ("SPMMO00200", 0, 80);
  8670. } else if ( buttonValue == "12") { //외래예약
  8671. frmf_setParameter("SMPMO00300_PARM1", sOrdDeptCd); //진료과코드
  8672. frmf_setParameter("SMPMO00300_PARM2", sOrddrId); //진료의사코드
  8673. frmf_setParameter("SMPMO00300_PARM3", sPid); //환자번호
  8674. lf_prcpModal ("SMPMO00300", 0, 80);
  8675. } else if ( buttonValue == "13") { //환자정보
  8676. lf_prcpModal ( "SMMMO02500", 0, 60 );
  8677. } else if ( buttonValue == "14") { //외출외박
  8678. if ( sPrcpGenrFlag != "O" ) {
  8679. ds_hidden_target.setColumn(0, "pid" , sPid );
  8680. ds_hidden_target.setColumn(0, "indd" , sOrdDd );
  8681. ds_hidden_target.setColumn(0, "cretno", sCretno );
  8682. ds_hidden_target.setColumn(0, "hngnm" , ds_paminfo.getColumn(0, "hngnm"));
  8683. var mon = sysf_getCurrentMonitorNumber();
  8684. var xpt = this.getOwnerFrame().position.x + 10;
  8685. var ypt = this.getOwnerFrame().position.y + 10;
  8686. var objArg = new Object();
  8687. objArg.arg_ds_hidden_target = ds_hidden_target;
  8688. frmf_modal("SPPMI01100", "SPPMI01100", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  8689. } else {
  8690. sysf_messageBox ( "외래환자에는 사용", "E001" );
  8691. }
  8692. } else if ( buttonValue == "15") { //전과신청
  8693. if ( sPrcpGenrFlag != "O" && sPrcpGenrFlag != "S" ) {
  8694. if (lf_ContainsHardCD("341", "Y") && checkRtnDrug()) { // 간호 반납약 체크, 하드코드 341 체크
  8695. return;
  8696. }
  8697. if (lf_ContainsHardCD("341", "Y") && checkRtnPrcp()) { // 반환요청 처방(E) 체크, 하드코드 341 체크 전과전실 등록시 반환요청(E) 처방 여부를 체크한다. 20130803 엄영만
  8698. return;
  8699. }
  8700. //if (checkTransferMibi()) { // 미비기록(전출기록 등) 를 체크한다. 20130808 엄영만 2013.08.26 원무에서 처리 하기로 함.
  8701. // return;
  8702. //}
  8703. ds_hidden_target.setColumn(0, "pid", sPid);
  8704. ds_hidden_target.setColumn(0, "indd", sOrdDd );
  8705. ds_hidden_target.setColumn(0, "cretno", sCretno);
  8706. ds_hidden_target.setColumn(0, "hngnm", ds_paminfo.getColumn(0, "hngnm"));
  8707. var mon = sysf_getCurrentMonitorNumber();
  8708. var xpt = this.getOwnerFrame().position.x + 10;
  8709. var ypt = this.getOwnerFrame().position.y + 10;
  8710. var objArg = new Object();
  8711. objArg.arg_ds_hidden_target = ds_hidden_target;
  8712. frmf_modal("SPPMI02700", "SPPMI02700", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  8713. } else {
  8714. sysf_messageBox ( "외래환자에는 사용", "E001" );
  8715. }
  8716. } else if ( buttonValue == "16") { //항생제
  8717. lf_prcpModal("SPMMD01600", 20, 50);
  8718. } else if ( buttonValue == "17") { //수술장부
  8719. var hngnm = ds_paminfo.getColumn(0, "hngnm");
  8720. var sex = ds_paminfo.getColumn(0, "sex");
  8721. var age = ds_paminfo.getColumn(0, "age");
  8722. var insukind = ds_paminfo.getColumn(0, "insukind");
  8723. var suppkind = ds_paminfo.getColumn(0, "suppkind");
  8724. var param = sPid + "▦" +
  8725. hngnm + "▦" +
  8726. sex + "▦" +
  8727. age + "▦" +
  8728. insukind + "▦" +
  8729. suppkind + "▦" +
  8730. sOrdDd + "▦" +
  8731. sOrdDeptCd + "▦" +
  8732. sPrcpGenrFlag;
  8733. frmf_setParameter("SMMMO05700_param", param);
  8734. frmf_modal("SMMMO05700", "SMMMO05700", null, null, null, null, null, null, null, null, null, null, "M");
  8735. } else if ( buttonValue == "18") { //통합결과조회
  8736. var mon = sysf_getCurrentMonitorNumber();
  8737. var xpt = this.getOwnerFrame().position.x + 10;
  8738. var ypt = this.getOwnerFrame().position.y + 10;
  8739. var mainObj = frmf_getMainViewer();
  8740. dsf_createDsRow("ds_temp_SMAER00800", [{col:"srchpid", type:"string", size:256, val:ds_paminfo.getColumn(0, "pid")}]);
  8741. var objArg = new Object();
  8742. objArg.arg_ds_send_singdata = ds_temp_SMAER00800;
  8743. mainObj.frmf_open("SMAER00800", "SMAER00800", objArg, null, mon, xpt, ypt, null, null, null, null, null, "M");
  8744. } else if ( buttonValue == "19") { //self 처방 조회 버튼 추가 20100520 by LYJ
  8745. var mon = sysf_getCurrentMonitorNumber();
  8746. var xpt = this.getOwnerFrame().position.x + 10;
  8747. var ypt = this.getOwnerFrame().position.y + 10;
  8748. frmf_setParameter ( "SPMMO19300_prcp", "prcpbtn");
  8749. frmf_modal("SPMMO19300", "SPMMO19300", null, null, mon, xpt, ypt, null, null, null, null, null, "M");
  8750. lf_focusMain ( ds_main_prcplist.rowposition );
  8751. }
  8752. }
  8753. function cf_TXMMO00113(sSvcId, nErrorCode, sErrorMsg) {
  8754. arErrorCode.push(sSvcId, nErrorCode);
  8755. }
  8756. function cf_TXMMO00112(sSvcId, nErrorCode, sErrorMsg) {
  8757. arErrorCode.push(sSvcId, nErrorCode);
  8758. }
  8759. /**간호반납 요청 처방 체크*/
  8760. function checkRtnDrug(){
  8761. var bRtn = false;
  8762. var sPrcpGenrFlag = ds_patflag.getColumn(0, "prcpgenrflag");
  8763. if (sPrcpGenrFlag == "I") {
  8764. var sPid = ds_paminfo.getColumn(0, "pid");
  8765. var sOrdDd = ds_paminfo.getColumn(0, "indd");
  8766. var sCretno = ds_paminfo.getColumn(0, "cretno");
  8767. var sOrdDeptCd = ds_paminfo.getColumn(0, "orddeptcd");
  8768. var sRef = dsf_createDsRow("ds_checkrtndrug_reqdata", [{col:"pid", type:"string", size:256, val:sPid},
  8769. {col:"orddd", type:"string", size:256, val:sOrdDd},
  8770. {col:"cretno", type:"string", size:256, val:sCretno},
  8771. {col:"orddeptcd", type:"string", size:256, val:sOrdDeptCd}]);
  8772. var sRstlRef = dsf_createDs("ds_checkrtndrug_rtndata");
  8773. var oParam = {};
  8774. oParam.id = "TRMMO00146";
  8775. oParam.service = "prcpmngtapp.PrcpMngt";
  8776. oParam.method = "reqGetChkRtnDrug";
  8777. oParam.inds = "req=" + sRef;
  8778. oParam.outds = sRstlRef + "=rtndata";
  8779. oParam.async = false;
  8780. tranf_submit(oParam);
  8781. if( ds_checkrtndrug_rtndata.getColumn(0, "rtnyn") == "Y") { // 반환요청 처방이 존재 하면
  8782. bRtn = true;
  8783. if ("6" == sysf_messageBox ( "확인 되지 않은 간호반납 요청 처방이 존재하여 진행 할수 없습니다.\n\n간호반납 요청 처방을 확인 하시겠습니까?", "Q999" )) {
  8784. fDrugPrcpDc();
  8785. }
  8786. }
  8787. }
  8788. return bRtn
  8789. }
  8790. /**@desc : 반환요청(E) 처방 존재 유무 확인(submit)
  8791. * @param :
  8792. * @return : true, false
  8793. * @authur : 엄영만 2013. 08. 05
  8794. */
  8795. function checkRtnPrcp(){
  8796. var bRtn = false;
  8797. var sPid = ds_paminfo.getColumn(0, "pid");
  8798. var sInDd = lf_getDsValue(ds_paminfo, 0, "indd");
  8799. var sCretno = ds_paminfo.getColumn(0, "cretno");
  8800. var sOrdDeptCd = ds_paminfo.getColumn(0, "orddeptcd");
  8801. var sRef = dsf_createDsRow("ds_checkreturnprcp_reqdata", [{col:"pid", type:"string", size:256, val:sPid},
  8802. {col:"orddd", type:"string", size:256, val:sInDd},
  8803. {col:"cretno", type:"string", size:256, val:sCretno}]);
  8804. var sRstlRef = dsf_createDs("ds_checkreturnprcp_rtndata");
  8805. var oParam = {};
  8806. oParam.id = "TRMMO00404";
  8807. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  8808. oParam.method = "reqGetChkDschReturnPrcpCnt";
  8809. oParam.inds = "req=" + sRef;
  8810. oParam.outds = sRstlRef + "=rtndata";
  8811. oParam.async = false;
  8812. oParam.callback = "cf_TRMMO00404";
  8813. tranf_submit(oParam);
  8814. if(arErrorCode.pop("TRMMO00404") > -1) {
  8815. var nCnt = ds_checkreturnprcp_rtndata.getColumn(0, "cnt");
  8816. if(nCnt > 0) {
  8817. if ( "6" == sysf_messageBox("[반환요청] 상태의 처방이 존재 하여 진행할 수 없습니다.\n\n반환요청 처방 내역을 확인 하시겠습니까?", 'Q999')) {
  8818. frmf_setParameter("SPMMO50400_pid", sPid);
  8819. frmf_setParameter("SPMMO50400_indd", sInDd);
  8820. frmf_setParameter("SPMMO50400_cretno", sCretno);
  8821. //setParameter("SPMMO50400_orddeptcd", sOrdDeptCd);
  8822. frmf_modal("SPMMO50400", "SPMMO50400", null, null, null, null, null, null, null, null, null, null, "M");
  8823. }
  8824. bRtn = true;
  8825. }
  8826. }
  8827. return bRtn;
  8828. }
  8829. function cf_TRMMO00404(sSvcId, nErrorCode, sErrorMsg) {
  8830. arErrorCode.push(sSvcId, nErrorCode);
  8831. }
  8832. function fBtnClick2(obj:Button, e:ClickEventInfo) {
  8833. var btnnm = obj.name.substring ( 6, 8 );
  8834. if ( !utlf_isNull (btnnm)) {
  8835. var srcnbtnnm = eval ( btnnm ) - 50;
  8836. var srcnbtnnm = "button" + srcnbtnnm;
  8837. if ( div_all.Tab_prcp.tabindex == 3 ) { // 처방 검색 선택중
  8838. div_all.Tab_prcp.tp_prcpsrch.fCallSrchBtn(srcnbtnnm);
  8839. } else {
  8840. ds_init.setColumn(0, "srchbtn" , srcnbtnnm );
  8841. div_all.Tab_prcp.tabindex = 3;
  8842. }
  8843. }
  8844. }
  8845. /**퇴원예고창 */
  8846. function preDsch(){
  8847. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  8848. if ( prcpgenrflag == "O" ) {
  8849. sysf_messageBox ( "외래환자에는 사용", "E001" );
  8850. return;
  8851. } else {
  8852. lf_prcpModal ( "SPMMO00400", 55, 60 );
  8853. }
  8854. var useyn = frmf_getParameter("SPMMO00400_rtn_useyn");
  8855. if(useyn == "Y"){
  8856. frmf_setParameter("SPMMO00400_rtn_useyn", "");
  8857. //상단올리기
  8858. fDschNotiInit();
  8859. var pamInfoCvs = sysf_getGlobalVariable("paminfo");
  8860. var insukindcd = appf_getPatientInfoDetail("insukind");
  8861. var vopt_insuinfo = "";
  8862. if(!utlf_isNull(pamInfoCvs)){ //cvs가 null이 아닌 경우에만 처리함.
  8863. dsf_setCSVToDs ( "ds_paminfo", pamInfoCvs ); //상단화면 정보 초기화
  8864. ds_init.setColumn(0, "pid", ds_paminfo.getColumn(0, "pid"));
  8865. var vopt_patinfo = ds_paminfo.getColumn(0, "dispnm2") + " " + ds_paminfo.getColumn(0, "sex") + "/" + ds_paminfo.getColumn(0, "age");
  8866. if ( !utlf_isNull(ds_paminfo.getColumn(0, "roomcd")) ){
  8867. vopt_patinfo = vopt_patinfo + " " + ds_paminfo.getColumn(0, "roomcd") + "호";
  8868. }
  8869. if (insukindcd == "21"){
  8870. vopt_insuinfo = "[의료급여1]";
  8871. } else if (insukindcd == "22"){
  8872. vopt_insuinfo = "[의료급여2]";
  8873. } else if (insukindcd == "81"){
  8874. vopt_insuinfo = "[장기요양]";
  8875. } else {
  8876. vopt_insuinfo = "[" + appf_getPatientInfo("insukind") + "]" ;
  8877. }
  8878. ds_init.setColumn(0, "insuinfo", vopt_insuinfo );
  8879. if ( insukindcd == "31" || insukindcd =="41"){
  8880. if (appf_getPatientInfoDetail("ioflag") == "O"){
  8881. sysf_messageBox ( "자보/산재 환자입니다. \n관련 처방을 모두 [급여]로 처방하여 주시기 바랍니다.\n기왕증은 건강보험으로 재접수하여 처방해 주시기 바랍니다.", "I" );
  8882. } else {
  8883. sysf_messageBox ( "자보/산재 환자입니다. \n관련 처방은 모두 [급여]로 처방하여 주시기 바랍니다. \n그 외 처방은 처방 상세팝업에서 기왕증 체크 후 처방해 주시기 바랍니다.", "I" );
  8884. }
  8885. }
  8886. ds_init.setColumn(0, "patinfo", vopt_patinfo );
  8887. }
  8888. var patFlagCvs = sysf_getGlobalVariable("patflag");
  8889. if(patFlagCvs.length != 0 ){ //cvs가 null이 아닌 경우에만 처리함.
  8890. dsf_setCSVToDs ( "ds_patflag", patFlagCvs ); //상단화면 정보 초기화
  8891. prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  8892. }
  8893. //환자리스트 불러오기
  8894. var mainObj = frmf_getMainViewer();
  8895. var ordPatObj = mainObj.frmf_findPopup("SMMMO04100"); //현재 활성화된 진료대상자 화면 객체
  8896. if(utlf_isNull(ordPatObj)){ //두 객체값이 다른 경우 새로운 진료대상자 화면을 open함
  8897. mainObj.frmf_open("SMMMO04100", "SMMMO04100", null, false, 1, 200, 100, null, null, null, null, null, "M");
  8898. } else {
  8899. ordPatObj.fPrcpCallPatList();
  8900. }
  8901. if( ds_root.getColumn(0, "cp") == "Y" ){
  8902. if( ds_temp1_getdata.getColumn(0, "appstat") == "50" ){
  8903. // CPGMAIN 에 있는 함수 CPGMAIN 작업 후 확인필요
  8904. fOpenPrcpWindow();
  8905. return;
  8906. } else {
  8907. if( ds_temp1_getdata.getColumn(0, "prtlflagcd") != "02" ){ //CP면 퇴원처방 자동발행
  8908. // CPGMAIN 에 있는 버튼 CPGMAIN 작업 후 확인필요
  8909. btn_cpbatch.onclick.fireEvent(btn_cpbatch, new ClickEventInfo());
  8910. } else {
  8911. // CPGMAIN 에 있는 버튼 CPGMAIN 작업 후 확인필요
  8912. btn_inqr.onclick.fireEvent(btn_inqr, new ClickEventInfo()); //CPG면 문진팝업 호출 (2010.04.16 JJE)
  8913. }
  8914. }
  8915. }
  8916. }
  8917. }
  8918. /**@desc : 전처방에서 급비변경후 환자정보 다시 SETTING
  8919. * @return : void
  8920. * @authur : 마정민 2007. 9. 10
  8921. */
  8922. function fInitPaminfo() {
  8923. //ioflag▦pid▦orddd▦cretno▦instcd▦acptseqno▦orgorddd▦
  8924. //외래/입원구분▦등록번호▦진료일자▦생성번호▦기관코드▦등록일련번호▦원진료일자▦
  8925. var ioflag = ds_paminfo.getColumn(0, "ioflag");
  8926. var param = "";
  8927. if ( ioflag == "O" || ioflag == "S" ) {
  8928. var pid = ds_paminfo.getColumn(0, "pid" );
  8929. var orddd = ds_paminfo.getColumn(0, "orddd" );
  8930. var cretno = ds_paminfo.getColumn(0, "cretno" );
  8931. var instcd = ds_paminfo.getColumn(0, "instcd" );
  8932. var acptseqno = ds_paminfo.getColumn(0, "acptseqno" );
  8933. var orgorddd = ds_paminfo.getColumn(0, "orgorddd" );
  8934. param = ioflag + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd + "▦" + acptseqno + "▦" + orgorddd;
  8935. } else {
  8936. //ioflag▦pid▦indd▦cretno▦seqno▦instcd▦
  8937. //외래/입원구분▦등록번호▦입원일자▦생성번호▦일련번호▦기관코드
  8938. var pid = ds_paminfo.getColumn(0, "pid" );
  8939. var indd = ds_paminfo.getColumn(0, "indd" );
  8940. var cretno = ds_paminfo.getColumn(0, "cretno" );
  8941. var instcd = ds_paminfo.getColumn(0, "instcd" );
  8942. var seqno = ds_paminfo.getColumn(0, "seqno" );
  8943. var prcpdd = ds_init.getColumn(0, "prcpdd" );
  8944. param = ioflag + "▦" + pid + "▦" + indd + "▦" + cretno + "▦" + instcd + "▦" + prcpdd;
  8945. }
  8946. if(appf_initPatientInfo(param)){
  8947. var pamInfoCvs = sysf_getGlobalVariable("paminfo");
  8948. if(!utlf_isNull(pamInfoCvs)){ //cvs가 null이 아닌 경우에만 처리함.
  8949. dsf_setCSVToDs ( "ds_paminfo", pamInfoCvs ); //상단화면 정보 초기화
  8950. }
  8951. var patFlagCvs = sysf_getGlobalVariable("patflag");
  8952. if(!utlf_isNull(patFlagCvs)){ //cvs가 null이 아닌 경우에만 처리함.
  8953. dsf_setCSVToDs ( "ds_patflag", patFlagCvs ); //상단화면 정보 초기화
  8954. }
  8955. var operationFlagCvs = sysf_getGlobalVariable("operation");
  8956. if(!utlf_isNull(operationFlagCvs)){ //cvs가 null이 아닌 경우에만 처리함.
  8957. dsf_setCSVToDs ( "ds_operation", operationFlagCvs ); //상단화면 정보 초기화
  8958. }
  8959. }
  8960. var mainObj = frmf_getMainViewer();
  8961. var ordPatObj = mainObj.frmf_findPopup("SMMMO04100"); //현재 활성화된 진료대상자 화면 객체
  8962. if(utlf_isNull(ordPatObj)){ //두 객체값이 다른 경우 새로운 진료대상자 화면을 open함
  8963. //mainObj.frmf_open("SMMMO04100",1, 200, 100);
  8964. mainObj.frmf_open("SMMMO04100", "SMMMO04100", null, false, 1, 200, 100, null, null, null, null, null, "M");
  8965. } else {
  8966. ordPatObj.fPrcpCallPatList();
  8967. }
  8968. }
  8969. function fDrugPrcpDc() {
  8970. //투약반환요청이 있을 경우 관련 팝업을 띄운다.
  8971. if ( ds_initsrch_prcpetccnts.getColumn(0, "drugprcprtnyn" ) == "Y" ){
  8972. //나중에 예약처방도 수정 modal ( "SPMMO00700", 1, xpt, ypt, "prcpdetl", "/root/prcpsrch", "/root/main/prcp" );
  8973. var orddd = "";
  8974. if (ds_paminfo.getColumn(0, "ioflag") == "O" || ds_paminfo.getColumn(0, "ioflag") == "S") {
  8975. orddd = ds_paminfo.getColumn(0, "orddd");
  8976. } else {
  8977. orddd = ds_paminfo.getColumn(0, "indd");
  8978. }
  8979. ds_send.setColumn(0, "cond1", ds_paminfo.getColumn(0, "pid" ));
  8980. ds_send.setColumn(0, "cond2", orddd);
  8981. ds_send.setColumn(0, "cond3", ds_paminfo.getColumn(0, "cretno" ));
  8982. ds_send.setColumn(0, "cond4", ds_paminfo.getColumn(0, "instcd" ));
  8983. ds_send.setColumn(0, "cond5", "drugdcprcp");
  8984. ds_send.setColumn(0, "cond6", "");
  8985. ds_send.setColumn(0, "cond9", "DC");
  8986. ds_send.setColumn(0, "cond99", "getBfPrcpSrchInfo");
  8987. var oParam = {};
  8988. oParam.id = "TRMMO00100";
  8989. oParam.service = "prcpmngtapp.PrcpMngt";
  8990. oParam.method = "reqGetPrcpSrchInfo";
  8991. oParam.inds = "req=ds_send";
  8992. oParam.outds = "ds_prcpsrch_prcplist=prcplist";
  8993. oParam.async = false;
  8994. tranf_submit(oParam);
  8995. dsf_setDefaultVal(ds_prcpsrch_prcplist, "prcpvol:0,prcpvolunitnm:-,prcpqty:0,prcpqtyunitnm:-,prcptims:0,prcpdayno:0,drugmthdspccdnm:-,hosinprcpresncd:00,drugmthdspccd:-,hsctdelivepos:0,druglnkno:0,dnorreqlnkno:0,subcretno:0,drgacptflag:-");
  8996. var mon = sysf_getCurrentMonitorNumber();
  8997. var xpt = this.getOwnerFrame().position.x + 100;
  8998. var ypt = this.getOwnerFrame().position.y + 100;
  8999. if ( ds_prcpsrch_prcplist.rowcount > 0 ) {
  9000. fCpInPrcpVisible();
  9001. frmf_setParameter ( "SPMMO00700_rtn1", "drugdc" );
  9002. var objArg = new Object();
  9003. objArg.arg_ds_main_prcplist = ds_prcpsrch_prcplist;
  9004. frmf_modal("SPMMO00700", "SPMMO00700", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  9005. frmf_setParameter ( "SPMMO00700_rtn1", "" );
  9006. }
  9007. }
  9008. }
  9009. /**@desc : 외래검사처방 입원전환 ( 주사연속처방, 물리치료 연속처방은 제외 )
  9010. * @return :
  9011. * @author : 2007. 11. 29
  9012. * @---------------------------------------------------
  9013. */
  9014. function fSaveRsrvPrcpCvrt() {
  9015. //kimsj 100311 환자입원과, 의사진료과 동일할 경우에만 팝업창 보여줌
  9016. var userdept = sysf_getUserInfo ( "dutplcecd" );
  9017. var pamdept = ds_paminfo.getColumn(0, "orddeptcd");
  9018. if ( ds_initsrchprcp_prcpetccnts.getColumn(0, "rsrvprcpyn" ) == "Y" && ( userdept == pamdept ) ){
  9019. var mon = sysf_getCurrentMonitorNumber();
  9020. var xpt = this.getOwnerFrame().position.x + 200;
  9021. var ypt = this.getOwnerFrame().position.y + 100;
  9022. var objArg = new Object();
  9023. objArg.arg_ds_initsrch_rsrvcvrtprcp = ds_initsrchprcp_rsrvcvrtprcp;
  9024. frmf_modal("SPMMO01000", "SPMMO01000", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  9025. if ( frmf_getParameter ( "SPMMO01000_rtnyn" ) == "Y" ) {
  9026. div_all.Tab_prcp.tabindex = 1;
  9027. div_all.Tab_prcp.tp_bfprcp.fInitialize();
  9028. }
  9029. }
  9030. }
  9031. /**@desc : 수가조회 open
  9032. * @
  9033. * @param :
  9034. * @return :
  9035. * @author : 오지훈
  9036. * @---------------------------------------------------
  9037. */
  9038. function fOpenCalscorCD(){
  9039. var currow = ds_main_prcplist.rowposition;
  9040. if(currow < 0){
  9041. return;
  9042. }
  9043. var prcpcd = ds_main_prcplist.getColumn(currow, "prcpcd");
  9044. dsf_createDsRow("ds_arg_temp", [{col:"temp", type:"string", size:256, val:prcpcd}]);
  9045. var objArg = new Object();
  9046. objArg.ds_arg_temp = ds_arg_temp;
  9047. frmf_modal("SMPIC00200", "SMPIC00200", objArg, null, 1, 100, 200, null, null, null, null, null, "M");
  9048. }
  9049. /**환자 주진단 색깔표시
  9050. * @param
  9051. * grdobj : grid
  9052. * color : 표시색깔
  9053. */
  9054. function fDispPatMainDiag(diagkindcdflag){
  9055. return (diagkindcdflag == "M") ? "#ccffff" : "#ffffff";
  9056. }
  9057. /**@desc : 마취화면에서 보내준 처방 검색
  9058. * @return : void
  9059. * @authur : 마정민 2007. 9. 18
  9060. */
  9061. function fAnstPrcp() {
  9062. /* SMMMR03700_paramyn = "Y",
  9063. SMMMR03700_opansflagcd,
  9064. SMMMR03700_ansttm (4자리),
  9065. SMMMR03700_anstfromdt(12자리),
  9066. SMMMR03700_ansttodt(12자리) */
  9067. if ( opener.frmf_getParameter ( "SMMMR03700_paramyn" ) == "Y" ) {
  9068. ds_anst.setColumn(0, "paramyn", "Y" );
  9069. ds_anst.setColumn(0, "anstrecno", opener.frmf_getParameter ( "SMMMR03700_anstrecno" ) );
  9070. ds_anst.setColumn(0, "opansflagcd", opener.frmf_getParameter ( "SMMMR03700_opansflagcd" ));
  9071. ds_anst.setColumn(0, "ansttm", opener.frmf_getParameter ( "SMMMR03700_ansttm" ));
  9072. ds_anst.setColumn(0, "anstfromdt", opener.frmf_getParameter ( "SMMMR03700_anstfromdt" ));
  9073. ds_anst.setColumn(0, "ansttodt", opener.frmf_getParameter ( "SMMMR03700_ansttodt" ));
  9074. //마취의, 특진의여부 추가 by sonjy 20080925 start
  9075. ds_anst.setColumn(0, "anst_drid" , opener.frmf_getParameter ( "SMMMR03700_anstdrid" )); //마취의 1 setting
  9076. ds_anst.setColumn(0, "anst_specordflag" , opener.frmf_getParameter ( "SMMMR03700_refseq" )); //마취의 1 특진의 여부
  9077. //20131107 이정택 추가
  9078. ds_anst.setColumn(0, "anst_anstdrnm" , opener.frmf_getParameter ( "SMMMR03700_anstdrnm" )); //마취의 1의 이름
  9079. //20131107
  9080. ds_init.setColumn(0, "prcpkindcd", "35" ); //수술 중 처방으로 setting
  9081. ds_init.setColumn(0, "prcpinptflag", "27" ); //마취기록에서 호출한 처방
  9082. //마취의, 특진의여부 추가 by sonjy 20080925 end
  9083. div_all.cmb_prcpkind.enable = false;
  9084. }
  9085. var SMMMR03700_prcp = opener.frmf_getParameter ( "SMMMR03700_prcp" );
  9086. opener.frmf_setParameter ( "SMMMR03700_prcp", "" );
  9087. if ( !utlf_isNull(SMMMR03700_prcp) && !utlf_isNull(ds_paminfo.getColumn(0, "pid" ))) {
  9088. var prcpcd = "";
  9089. var prcpvol = "";
  9090. var drugmthdcd = "";
  9091. var mthdcnts = "";
  9092. var prcplen = SMMMR03700_prcp.split("▩").length;
  9093. for ( var i = 0; i < prcplen; i++ ) {
  9094. lf_appendChildPrcp ( "ds_reset_anstprcplist", "ds_anstprcplist", "main" ); //검색라인추가
  9095. prcpcd = lf_getArrayData ( SMMMR03700_prcp, i, 0, "▩", "▦" );
  9096. prcpvol = lf_getArrayData ( SMMMR03700_prcp, i, 1, "▩", "▦" );
  9097. drugmthdcd = lf_getArrayData ( SMMMR03700_prcp, i, 2, "▩", "▦" );
  9098. mthdcnts = lf_getArrayData ( SMMMR03700_prcp, i, 3, "▩", "▦" );
  9099. ds_anstprcp.setColumn(i, "prcpcd", prcpcd );
  9100. ds_anstprcp.setColumn(i, "prcpvol", prcpvol );
  9101. ds_anstprcp.setColumn(i, "drugmthdcd", drugmthdcd );
  9102. ds_anstprcp.setColumn(i, "mthdcnts", mthdcnts );
  9103. ds_anstprcp.setColumn(i, "prcpdd", ds_init.getColumn(0, "prcpdd" ));
  9104. ds_anstprcp.setColumn(i, "insukind", ds_paminfo.getColumn(0, "insukind"));
  9105. }
  9106. dsf_createDs("ds_send_cond1");
  9107. ds_send_cond1.copyData(ds_anstprcplist);
  9108. ds_send_cond1.updateColID("prcpcd", "cond1");
  9109. ds_send_cond1.updateColID("prcpdd", "cond3");
  9110. ds_send_cond1.updateColID("insukind", "cond4");
  9111. ds_send_cond1.updateColID("srchkind", "cond5");
  9112. dsf_setDefaultVal(ds_send_cond1, "srchkind:ANST");
  9113. var oParam = {};
  9114. oParam.id = "TRMMO00115";
  9115. oParam.service = "prcpmngtapp.PrcpMngt";
  9116. oParam.method = "reqGetPrcpMultiSrchInfo";
  9117. oParam.inds = "req=ds_send_cond1";
  9118. oParam.outds = "ds_prcpsrch_prcplist=prcplist";
  9119. oParam.async = false;
  9120. tranf_submit(oParam);
  9121. var opanstdeptcd_trgtcd = ds_initsrch_opanstdeptcd.getColumn(0, "trgtcd");
  9122. for (var i = 0; i < ds_prcpsrch_prcplist.rowcount; i++)
  9123. ds_prcpsrch_prcplist.setColumn(i, "prcpexecdeptcd", opanstdeptcd_trgtcd);
  9124. //prcpinptflag 27 마취기록
  9125. // 그리드명 추후 확인필요
  9126. lf_addPrcp ( "import", ds_prcpsrch_prcplist, ds_main_prcplist, "Y", "status", "", grd_prcpsrchlist, "N", "27");
  9127. }
  9128. }
  9129. function fPrcpSaveChkBf( prcpchkflag ) {
  9130. var prcpsetcd = "";
  9131. var inclprcpcd = "";
  9132. var drugmastspec = "";
  9133. var prcpclscd = "";
  9134. var prcpkindcd = "";
  9135. var prcpkindchk = 0;
  9136. var prcpkindcd
  9137. var prcpcd = "";
  9138. var prcpcd = "";
  9139. var prcpexecdeptcd = "";
  9140. var precureprcpflag = "";
  9141. var spcldrug = "";
  9142. var iFind = -1;
  9143. var iFind2 = -1;
  9144. var sTestreqlnkno = "";
  9145. var drugbatchcnt = "";
  9146. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  9147. var savecnt = 0;
  9148. var prcpdschcnt = 0; //by sonjy 2008-07-30 중증등록암 관련 추가 퇴원처방 여부.
  9149. var antideptcd = ""; //by sonjy 2008-08-12 항암제 및 퇴원후 외래/입원전검사처방시 수행부서setting.
  9150. ocrcalcscorcd = "";
  9151. ds_init.setColumn(0, "drugbatch", "N" );
  9152. ds_init.setColumn(0, "prgtbooprcpyn", "N" );
  9153. //model.removeNodeset ( "/root/prcper/prcplist" );
  9154. // ds_prcper_prcplist.clearData();
  9155. //kimsj 수혈동의서 동의서 유무, 마지막 수혈일 체크
  9156. var bldFind = "N";
  9157. var ocrbldexists = ""; // 수혈동의서 존재 여부
  9158. var ocrbldprnt = ds_initsrchprcp_prcpetccnts.getColumn(0, "ocrbldprnt");
  9159. var ocrbldprntArray = ocrbldprnt.split("|");
  9160. var ocrbldynhrcd = "N"; // 수혈동의서 확인메시지 사용여부[병원별]
  9161. lf_reqHardCodeInfo(ds_hidden_ocrbldynhrcd, "198");
  9162. ocrbldynhrcd = ds_hidden_ocrbldynhrcd.getColumn(0, "hardcd");
  9163. var pid = ds_paminfo.getColumn(0, "pid");
  9164. for (var i = 0; i < ds_main_prcplist.rowcount; i++) {
  9165. if (ds_main_prcplist.getColumn(i, "status" ) == "S") continue;
  9166. if (ds_main_prcplist.getColumn(i, "status" ) == "D") continue;
  9167. savecnt++;
  9168. ds_main_prcplist.setColumn(i, "tempcol5", i);
  9169. ds_main_prcplist.setColumn(i, "tempcol3", "");
  9170. prcpclscd = ds_main_prcplist.getColumn(i, "prcpclscd" );
  9171. prcpsetcd = ds_main_prcplist.getColumn(i, "prcpsetcd" );
  9172. drugmastspec = ds_main_prcplist.getColumn(i, "drugmastspec" );
  9173. prcpkindcd = ds_main_prcplist.getColumn(i, "prcpkindcd" );
  9174. prcpcd = ds_main_prcplist.getColumn(i, "prcpcd" );
  9175. prcpexecdeptcd = ds_main_prcplist.getColumn(i, "prcpexecdeptcd" );
  9176. spcldrug = lf_getArrayData ( drugmastspec + "^", 0, 23, "^", "|" );
  9177. ds_main_prcplist.setColumn(i, "prcpauthflag", ds_init.getColumn(0, "prcpauthflag"));
  9178. if ( prcpclscd == "C2" || prcpclscd == "C4" ) {
  9179. fPrintDyeFrm(i, prcpcd); //@@@ 조영제 출력팝업 한번만 호출하도록 수정 (2010.07.22 JJE)
  9180. if (ds_main_prcplist.getColumn(i, "testreqlnkno") == "DYENO" ) { // 처방취소 버튼 시 저장 중지 및 다시 저장 시 재 팝업 되도록 수정 20100818 LYJ
  9181. frmf_setParameter("SPAER01900_popupYN", "N" );
  9182. return false;
  9183. }
  9184. }
  9185. //********************************* 단독처방 불가약 메시지처리 ***********************************//
  9186. var addprcpcd = ds_initsrch_independprcpimpsi.lookup("prcpcd", prcpcd, "addprcpcd");
  9187. if ( !utlf_isNull(addprcpcd)) { //같이 내야할 처방이 없으면 메시지 처리
  9188. if (utlf_isNull (ds_main_prcplist.lookup("prcpcd", addprcpcd, "prcpcd"))) {
  9189. var prcpmsg = ds_initsrch_independprcpimpsi.lookup("prcpcd", prcpcd, "prcpmsg");
  9190. sysf_messageBox ( prcpmsg, "E" );
  9191. ds_initsrch_independprcpimpsi.deleteRow(i);
  9192. }
  9193. }
  9194. //*************************** OCR 자동출력할 처방이 있는지 체크 **********************************//
  9195. if ( ds_main_prcplist.getColumn(i, "tempcol13" ) == "Y" ) {
  9196. // kimsj 수혈동의서 자동출력
  9197. if ( ocrbldynhrcd == "Y" ) {
  9198. bldFind = "N";
  9199. for( var m = 0; m < ocrbldprntArray.length; m++ ){
  9200. if( prcpcd == ocrbldprntArray[m]) {
  9201. bldFind = "Y";
  9202. break;
  9203. }
  9204. }
  9205. if ( bldFind == "Y" ) { // 수혈동의서일 경우
  9206. if(utlf_isNull(ocrbldexists)) { // 수혈 동의서 존재 여부 한번만 체크 하도록
  9207. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ) {
  9208. var orddd = ds_paminfo.getColumn(0, "orddd");
  9209. } else {
  9210. var orddd = ds_init.getColumn(0, "prcpdd");
  9211. }
  9212. var sRef = dsf_createDsRow("ds_send_reqdata_ocrbld", [{col:"pid", type:"string", size:256, val:pid},
  9213. {col:"orddd", type:"string", size:256, val:orddd},
  9214. {col:"ioflag", type:"string", size:256, val:prcpgenrflag}]);
  9215. var sRstlRef = dsf_createDs("ds_hidden_ocrbldyn");
  9216. var oParam = {};
  9217. oParam.id = "TRMMO00132";
  9218. oParam.service = "prcpmngtapp.PrcpMngt";
  9219. oParam.method = "reqGetOCRBldPrntYN";
  9220. oParam.inds = "req=" + sRef;
  9221. oParam.outds = sRstlRef + "=ocrbldyn";
  9222. oParam.async = false;
  9223. tranf_submit(oParam);
  9224. dsf_deleteDs("ds_send_reqdata_ocrbld");
  9225. ocrbldexists = ds_hidden_ocrbldyn.getColumn(0, "ocryn");
  9226. }
  9227. if ( ocrbldexists == "D" || ocrbldexists == "N") { // 동의서가 없거나 불출일 60일(입원55일) 경과
  9228. ds_hidden_ocrbldyn.addColumn("ocrmsgyn", "string");
  9229. ds_hidden_ocrbldyn.setColumn(0, "ocrmsgyn", "Y"); //메세지는 다른 부분으로 적용 (메세지 두번 나오는 현상 발생)
  9230. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ) ocrcalcscorcd = ocrcalcscorcd + prcpcd + "▦";
  9231. }
  9232. } else { // 수혈동의서가 아닐경우
  9233. ocrcalcscorcd = ocrcalcscorcd + prcpcd + "▦";
  9234. }
  9235. } else {
  9236. ocrcalcscorcd = ocrcalcscorcd + prcpcd + "▦";
  9237. }
  9238. }
  9239. //입원전검사(당일/전일)도 퇴원후 외래와 같은 처리 by sonjy 2008-07-25
  9240. if ( prcpkindcd == "70" || prcpkindcd == "90" || prcpkindcd == "95" ) {
  9241. //CP 미완성 처방 저장 시, 저장할 범위가 아닌 status '-' 중 퇴원처방 있을 때에는 퇴원예고 체크 skip 해야 함 (2008.10.16 JJE)
  9242. if( ds_root.getColumn(0, "cp") == "Y" && ds_main_prcplist.getColumn(i, "status") == "-" ){
  9243. if( ds_main_prcplist.getColumn(i, "prcphistcd") == "T" ) {
  9244. prcpkindchk++;
  9245. }
  9246. }else{
  9247. prcpkindchk++;
  9248. }
  9249. } else if ( prcpkindcd == "60" ) {
  9250. prcpdschcnt++; // by sonjy 2008-07-30 중증등록암관련...퇴원처방 여부.
  9251. }
  9252. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) {
  9253. //처방검색 용량보정
  9254. var calcmthdcd = lf_getArrayData ( drugmastspec + "^", 0, 26, "^", "|" );
  9255. if ( calcmthdcd == 1 ) {
  9256. var drprcpetc7 = ds_main_prcplist.getColumn(i, "drprcpetc7");
  9257. var drprcpetc8 = ds_main_prcplist.getColumn(i, "drprcpetc8");
  9258. var prcptims = ds_main_prcplist.getColumn(i, "prcptims" );
  9259. var prcpvol = Math.floor( ds_main_prcplist.getColumn(i, "prcpvol")*100 );
  9260. var prcpqty = Math.floor( ds_main_prcplist.getColumn(i, "prcpqty")*100 );
  9261. var totqty = Math.floor( drprcpetc8*prcptims*100 );
  9262. var totvol = Math.floor( drprcpetc7*prcptims*100 );
  9263. if ( prcpqty != totqty ) {
  9264. ds_main_prcplist.setColumn(i, "prcpvol", drprcpetc7 * prcptims);
  9265. ds_main_prcplist.setColumn(i, "prcpqty", drprcpetc8 * prcptims);
  9266. }
  9267. if ( prcpvol != totvol ) {
  9268. ds_main_prcplist.setColumn(i, "prcpvol", drprcpetc7 * prcptims);
  9269. ds_main_prcplist.setColumn(i, "prcpqty", drprcpetc8 * prcptims);
  9270. }
  9271. } else {
  9272. var drprcpetc7 = ds_main_prcplist.getColumn(i, "drprcpetc7");
  9273. var drprcpetc8 = ds_main_prcplist.getColumn(i, "drprcpetc8");
  9274. var prcpvol = ds_main_prcplist.getColumn(i, "prcpvol");
  9275. var prcpqty = ds_main_prcplist.getColumn(i, "prcpqty");
  9276. if ( prcpqty != drprcpetc8 ) {
  9277. ds_main_prcplist.setColumn(i, "prcpvol", drprcpetc7);
  9278. ds_main_prcplist.setColumn(i, "prcpqty", drprcpetc8);
  9279. }
  9280. if ( prcpvol != drprcpetc7 ) {
  9281. ds_main_prcplist.setColumn(i, "prcpvol", drprcpetc7);
  9282. ds_main_prcplist.setColumn(i, "prcpqty", drprcpetc8);
  9283. }
  9284. }
  9285. //************************* 약시행부서 setting ***********************//
  9286. //입원일 경우 시행부서 병동약국
  9287. if ( prcpgenrflag != "O" && ds_main_prcplist.getColumn(i, "inclprcpno") == "0" ) {
  9288. //항암제 및 항암제와 mix인 경우는 항암제의 시행부서로. by sonjy 2008-08-12 김은희 약사 요청.
  9289. //퇴원후 외래 및 입원전검사의 경우 외래이므로 바꾸지 않는다. by sonjy 2008-08-12 서소영 mit 요청
  9290. antideptcd = fDrugDeptcdChk( "ds_main_prcplist", i) ;
  9291. ds_main_prcplist.setColumn(i, "prcpexecdeptcd", antideptcd);
  9292. }
  9293. //복막투석액(spcldrug=K) 일 경우 인공신장실 복막투석가로 SETTING
  9294. if ( spcldrug == "K" && ds_main_prcplist.getColumn(i, "precureprcpflag" ) == "Y" ) {
  9295. ds_main_prcplist.setColumn(i, "prcpexecdeptcd", "2010702030");
  9296. }
  9297. //************************* 약시행부서 setting 끝 *********************//
  9298. //20081212 by sonjy 윤영옥 선생님 요청사항 상기도 감염시 항생제처방 제한
  9299. if(prcpgenrflag == "O" ){
  9300. if( !fChkInfecLimAntiDrug( "ds_main_prcplist", i ) ) return false ;
  9301. }
  9302. } else if ( ds_root.getColumn(0, "addprcp") == "Y" && prcpclscd == "D2" && opener.frmf_getScreenID() == "SMAER00400" ) { //20080923 벙리처방의뢰지 번호
  9303. if ( ds_main_prcplist.getColumn(i, "testreqlnkno") != 0 ){
  9304. sTestreqlnkno = sTestreqlnkno + ds_main_prcplist.getColumn(i, "testreqlnkno") + ",";
  9305. }
  9306. }
  9307. //********************************* 선처치, 재료 시행부서 - 일 때 처리 *************************//
  9308. if ( prcpexecdeptcd == "-" || utlf_isNull(prcpexecdeptcd)) {
  9309. precureprcpflag = ds_main_prcplist.getColumn(i, "precureprcpflag");
  9310. if ( precureprcpflag == "Y" || prcpclscd == "M2" ) { //선처치, 재료일때 시행부서가 - 일 경우는 발행처를 시행부서로 넣어준다.
  9311. ds_main_prcplist.setColumn(i, "prcpexecdeptcd", ds_main_prcplist.getColumn(i, "issdeptcd"));
  9312. }
  9313. }
  9314. // 수술/마취 관련 처방 시행부서 설정.
  9315. if ( ds_anst.getColumn(0, "paramyn") == "Y" ) { //마취 기록 처방
  9316. //마취 기록에서 띄우는 화면은 시행부서, 발행처 처리
  9317. if ( prcpclscd != "B2" && prcpclscd != "B4" && prcpclscd != "B6" && prcpclscd != "C2" && prcpclscd != "C4" && prcpclscd != "C6" && prcpclscd != "D2" && prcpclscd != "E2" ) {
  9318. var oproomcd = ds_operation.getColumn(0, "oproomcd");
  9319. var dscDeptcd = ds_init_operationroominfo.lookup("hardcd", oproomcd, "hardcdnm");
  9320. if (!utlf_isNull(dscDeptcd)) {
  9321. ds_main_prcplist.setColumn(i, "issdeptcd", dscDeptcd); //일일수술실
  9322. ds_main_prcplist.setColumn(i, "prcpexecdeptcd", dscDeptcd); //일일수술실
  9323. } else {
  9324. if ( ds_main_prcplist.getColumn(i, "prnprcpflag" ) == "Y" ) {
  9325. //20080913 마정민수정: 이훈재과장의 요청으로 발행부서(issdeptcd) 마취통증의학과(2090000000)에서 회복실, 수술실마취로 수정
  9326. ds_main_prcplist.setColumn(i, "issdeptcd", ds_initsrch_recovdeptcd.getColumn(0, "trgtcd")); //회복실
  9327. ds_main_prcplist.setColumn(i, "prcpexecdeptcd", ds_initsrch_recovdeptcd.getColumn(0, "trgtcd")); //회복실
  9328. } else {
  9329. //20100609 수술중처방 집계 관련 보완. 시행부서가 회복실, 수술실이면 그대로 두고 아니면 수술실마취로 세팅.
  9330. if ( ds_main_prcplist.getColumn(i, "prcpexecdeptcd") == ds_initsrch_recovdeptcd.getColumn(0, "trgtcd") ||
  9331. ds_main_prcplist.getColumn(i, "prcpexecdeptcd") == ds_initsrch_opdeptcd.getColumn(0, "trgtcd") ) {
  9332. ds_main_prcplist.setColumn(i, "issdeptcd", ds_main_prcplist.getColumn(i, "prcpexecdeptcd"));
  9333. } else {
  9334. ds_main_prcplist.setColumn(i, "issdeptcd", ds_initsrch_opanstdeptcd.getColumn(0, "trgtcd") ); //수술실 마취
  9335. ds_main_prcplist.setColumn(i, "prcpexecdeptcd", ds_initsrch_opanstdeptcd.getColumn(0, "trgtcd") ); //수술실 마취
  9336. }
  9337. }
  9338. }
  9339. }
  9340. } else { //마취 기록 처방이 아닌것
  9341. if ( prcpkindcd == "35") { // 수술중 처방이면
  9342. if(sysf_getUserInfo( "dutplcecd" ) == ds_initsrch_anstdeptcd.getColumn(0, "trgtcd")) { // 마취과 의사 여부
  9343. //20080920 마정민수정: 수술환자 리스트에서 마취과 의사가 낸 수술중 처방은 수술실 마취
  9344. if ( !utlf_isNull(ds_operation.getColumn(0, "oprsrvno"))) {
  9345. if ( prcpclscd != "B2" && prcpclscd != "B4" && prcpclscd != "B6" && prcpclscd != "C2" && prcpclscd != "C4" && prcpclscd != "C6" && prcpclscd != "D2" && prcpclscd != "E2" ) {
  9346. var oproomcd = ds_operation.getColumn(0, "oproomcd");
  9347. var dscDeptcd = ds_init_operationroominfo.lookup("hardcd", oproomcd, "hardcdnm");
  9348. if (!utlf_isNull(dscDeptcd)) { // 수술방이 일일수술실일 경우는 무조건 일일수술실로 한다. : 20110711 김영학
  9349. ds_main_prcplist.setColumn(i, "issdeptcd", dscDeptcd); //일일수술실
  9350. ds_main_prcplist.setColumn(i, "prcpexecdeptcd", dscDeptcd); //일일수술실
  9351. } else if ( ds_main_prcplist.getColumn(i, "prnprcpflag") == "Y" ) {
  9352. //20080913 마정민수정: 이훈재과장의 요청으로 발행부서(issdeptcd) 마취통증의학과(2090000000)에서 회복실, 수술실마취로 수정
  9353. ds_main_prcplist.setColumn(i, "issdeptcd", ds_initsrch_recovdeptcd.getColumn(0, "trgtcd") ); //회복실
  9354. ds_main_prcplist.setColumn(i, "prcpexecdeptcd", ds_initsrch_recovdeptcd.getColumn(0, "trgtcd") ); //회복실
  9355. } else {
  9356. //20100609 수술중처방 집계 관련 보완. 시행부서가 회복실, 수술실이면 그대로 두고 아니면 수술실마취로 세팅.
  9357. if ( ds_main_prcplist.getColumn(i, "prcpexecdeptcd") == ds_initsrch_recovdeptcd.getColumn(0, "trgtcd") ||
  9358. ds_main_prcplist.getColumn(i, "prcpexecdeptcd") == ds_initsrch_opdeptcd.getColumn(0, "trgtcd") ) {
  9359. ds_main_prcplist.setColumn(i, "issdeptcd", ds_main_prcplist.getColumn(i, "prcpexecdeptcd"));
  9360. } else {
  9361. ds_main_prcplist.setColumn(i, "issdeptcd", ds_initsrch_opanstdeptcd.getColumn(0, "trgtcd")); //수술실 마취
  9362. ds_main_prcplist.setColumn(i, "prcpexecdeptcd", ds_initsrch_opanstdeptcd.getColumn(0, "trgtcd")); //수술실 마취
  9363. }
  9364. }
  9365. }
  9366. }
  9367. } else { // 마취과 의사가 아닌것
  9368. //20080917 마정민수정: 마취과 의사가 내지 않는 수술중 처방은 모두 수술실로 처리한다.
  9369. if ( prcpclscd != "B2" && prcpclscd != "B4" && prcpclscd != "B6" && prcpclscd != "C2" && prcpclscd != "C4" && prcpclscd != "C6" && prcpclscd != "D2" && prcpclscd != "E2" && prcpclscd != "F2" && prcpclscd != "G2") {
  9370. var oproomcd = ds_operation.getColumn(0, "oproomcd");
  9371. var dscDeptcd = ds_init_operationroominfo.lookup("hardcd", oproomcd, "hardcdnm");
  9372. if (!utlf_isNull(dscDeptcd)) {
  9373. ds_main_prcplist.setColumn(i, "issdeptcd", dscDeptcd); //일일수술실
  9374. ds_main_prcplist.setColumn(i, "prcpexecdeptcd", dscDeptcd); //일일수술실
  9375. } else {
  9376. // 20131230 이정택 마취과 의사가 아닐시 집계 부서를 마취회복실로 지정하면 마취회복실로 나가도록 수정
  9377. var issdeptcd = ds_main_prcplist.getColumn(i, "issdeptcd");
  9378. var recovdeptcd = ds_initsrch_recovdeptcd.getColumn(0, "trgtcd");
  9379. if(issdeptcd == recovdeptcd){
  9380. ds_main_prcplist.setColumn(i, "issdeptcd", recovdeptcd); //마취회복실
  9381. ds_main_prcplist.setColumn(i, "prcpexecdeptcd", recovdeptcd); //마취회복실
  9382. }else{
  9383. ds_main_prcplist.setColumn(i, "issdeptcd", ds_initsrch_opdeptcd.getColumn(0, "trgtcd")); //수술실
  9384. ds_main_prcplist.setColumn(i, "prcpexecdeptcd", ds_initsrch_opdeptcd.getColumn(0, "trgtcd")); //수술실
  9385. }
  9386. }
  9387. }
  9388. }
  9389. }
  9390. }
  9391. //20080917 마정민수정: 수술중처방마약batch체크, 20090625 마정민 추가 이훈재과장요청으로 향정추가
  9392. if ( prcpkindcd == "35" && ( spcldrug == "M" || spcldrug == "H" ) && ( prcpgenrflag == "I" || prcpgenrflag == "D" ) &&
  9393. ds_main_prcplist.getColumn(i, "prcpexecdeptcd") == ds_initsrch_opanstdeptcd.getColumn(0, "trgtcd") ) {
  9394. drugbatchcnt++;
  9395. }
  9396. if( ds_root.getColumn(0, "cp") == "Y" ){
  9397. ds_main_prcplist.setColumn(i, "prcpinptflag", "05"); //CP창에서 발행하는 처방은 모두 CP(05) (2008.10.14 JJE)
  9398. }
  9399. }
  9400. if ( drugbatchcnt > 0 ){
  9401. ds_init.setColumn(0, "drugbatch", "Y");
  9402. }
  9403. if (!utlf_isNull(sTestreqlnkno)) {
  9404. opener.frmf_setParameter ( "SMAER00400_patholno", sTestreqlnkno );
  9405. }
  9406. //************************************** 퇴원후 외래처방 체크 *********************//
  9407. //퇴원처방발행 여부 by sonjy 2008-07-30 (중증등록암관련)
  9408. ds_hidden.setColumn(0, "dschprcpyn", "N");
  9409. if( prcpdschcnt > 0) ds_hidden.setColumn(0, "dschprcpyn", "Y");
  9410. if ( prcpkindchk > 0 && prcpgenrflag != "O" ) {
  9411. if( frmf_getParameter("SMMMP00800_cpsaveflag") == "T" && ds_init.getColumn(0, "prcpdd") > utlf_getCurrentDate() ){
  9412. return true;
  9413. }
  9414. return fFollowUp();
  9415. }
  9416. return true;
  9417. }
  9418. /**@desc : 처방화면 close, 진료대상자 CP검색, CP Main, 처방 Main 조정하기 위해 구현함
  9419. * @return : void
  9420. * @authur : 오지훈 2007. 9. 29
  9421. */
  9422. function fPrcpWndClose(){
  9423. if(!fPrcpSavePatList()){
  9424. close();
  9425. }
  9426. }
  9427. /**@desc : 처방 복사시 처방상세팝업 관리
  9428. * @return : void
  9429. * @authur : 마정민 2007.10.01
  9430. */
  9431. function addPrcpPop ( srchRow, usge, prcpclscd, srchRow ) {
  9432. //model.addLog(" ************* Start Of addPrcpPop()");
  9433. var iFind = -1;
  9434. if ( usge == "prcp" ) {
  9435. var prcpessninptflag = ds_main_prcplist.getColumn(srchRow, "prcpessninptflag");
  9436. var prnprcpflag = ds_main_prcplist.getColumn(srchRow, "prnprcpflag");
  9437. var selfprcpflag = ds_main_prcplist.getColumn(srchRow, "selfprcpflag");
  9438. var prcpcd = ds_main_prcplist.getColumn(srchRow, "prcpcd");
  9439. var drugmastspec = ds_main_prcplist.getColumn(srchRow, "drugmastspec");
  9440. var tempcol2 = ds_main_prcplist.getColumn(srchRow, "tempcol2");
  9441. var tempcol24 = ds_main_prcplist.getColumn(srchRow, "tempcol24");
  9442. // "/root/hidden/autochoiordprcp" 이런 노드 존재 하지 않아 항상 null 임, 고로 아래 주석 로직 불필요
  9443. // var choiordClscdautoyn = model.getValue("/root/hidden/autochoiordprcp/hardcd[hardcd = 'CLSCD' and hardcdnm ='" + tempcol2 + "']/hardcdnm");
  9444. // var choiordPrcpcdautoyn = model.getValue("/root/hidden/autochoiordprcp/hardcd[hardcd = 'PRCPCD' and hardcdnm ='" + prcpcd + "']/hardcdnm");
  9445. //
  9446. // if ( tempcol24 == "Y" && ( !utlf_isNull(choiordClscdautoyn) || !utlf_isNull(choiordPrcpcdautoyn))) {
  9447. // lf_chgChoiDr ( "auto", srchRow );
  9448. // }
  9449. if ( prcpessninptflag == "1" || prcpessninptflag == "2" || prcpessninptflag == "3" || prcpessninptflag == "4" || prcpessninptflag == "5" ){
  9450. var pid = ds_paminfo.getColumn(0, "pid");
  9451. var indd = ds_paminfo.getColumn(0, "indd");
  9452. var cretno = ds_paminfo.getColumn(0, "cretno");
  9453. var ordtype = ds_paminfo.getColumn(0, "ordtype");
  9454. if ( ordtype == "O" || ordtype == "S" ) {
  9455. var prcpgenrflag = "O";
  9456. } else {
  9457. var prcpgenrflag = "I";
  9458. }
  9459. ds_TRMMO00130.clearData();
  9460. ds_TRMMO00130.addRow();
  9461. ds_TRMMO00130.setColumn(0, "pid", pid);
  9462. ds_TRMMO00130.setColumn(0, "orddd", indd);
  9463. ds_TRMMO00130.setColumn(0, "cretno", cretno);
  9464. ds_TRMMO00130.setColumn(0, "prcpgenrflag", prcpgenrflag);
  9465. var oParam = {};
  9466. oParam.id = "TRMMO00130";
  9467. oParam.service = "prcpmngtapp.PrcpMngt";
  9468. oParam.method = "reqfGetOpansCnt";
  9469. oParam.inds = "req=ds_TRMMO00130";
  9470. oParam.outds = "ds_opansinfo=opansinfo";
  9471. oParam.async = false;
  9472. tranf_submit(oParam);
  9473. var opansCnt = ds_opansinfo.getColumn(0, "opanscnt");
  9474. for (var i = 0; i < ds_main_prcplist.rowcount; i++) {
  9475. if ( i != srchRow && ds_main_prcplist.getColumn(i, "prcpclscd") == "H2" &&
  9476. (ds_main_prcplist.getColumn(i, "prcpessninptflag") == "3" || ds_main_prcplist.getColumn(i, "prcpessninptflag") == "5" )) {
  9477. opansCnt++;
  9478. }
  9479. }
  9480. if (opansCnt == 0 && ds_main_prcplist.getColumn(srchRow, "opansflagcd") == "-") {
  9481. ds_main_prcplist.getColumn(srchRow, "opansflagcd", "4"); //주수술
  9482. }
  9483. fCpInPrcpVisible();
  9484. fPrcpDetl( srchRow, "", "360", "auto" );
  9485. } else if ( prcpclscd == "C2" ) { //20090120 prcpclscd == "E2" 는 존재하지 않아서 지운다.
  9486. /*2007-12-17 마정민 수정 진료 ITC 요청에 의해 방사선 처방 임상소견 필수입력을 위한 자동 팝업
  9487. 단순방사선 검사를 제외한 나머지 영상검사라 하면, 특수방사선검사(수익분류-19), 방사선혈관조영술(20), 방사선초음파(21), 방사선CT(22), 방사선 BMD(23), 방사선HIFU(24), 방사선MRI(25), 외부영상판독CD(26) 를 말함.
  9488. */
  9489. var ck = ds_main_prcplist.getColumn(srchRow, "tempcol2").substring ( 0, 2 );
  9490. if (ck=="19"||ck=="20"||ck=="21"||ck=="22"||ck=="23"||ck=="24"||ck=="25"||ck=="26" || ds_main_prcplist.getColumn(srchRow, "tempcol2") == "18|02|06") {
  9491. fCpInPrcpVisible();
  9492. fPrcpDetl( srchRow, "", "360", "auto" );
  9493. }
  9494. } else if ( prcpclscd == "C6") {
  9495. /* 20090717 kimsj(핵의학 류형기)
  9496. * PET CT처방 임상소견 필수입력위한 자동팝업 추가 (수익분류3 기타인 경우 제외)
  9497. * 핵의학(09)-감마영상검사(09)-근골격(04) 임상소견 필수입력위한 자동팝업 추가 2013.02.06 엄영만
  9498. */
  9499. var ck = ds_main_prcplist.getColumn(srchRow, "tempcol2").substring ( 0, 5 );
  9500. var dk = ds_main_prcplist.getColumn(srchRow, "tempcol2").substring ( 6, 8 );
  9501. if ( (ck == "09|02" && dk != "04") || (ck == "09|01" && dk == "04") ) {
  9502. fCpInPrcpVisible();
  9503. fPrcpDetl( srchRow, "", "360", "auto" );
  9504. }
  9505. }
  9506. //CP 추가처방은 의뢰지 skip (2008.09.02 JJE)
  9507. if( ds_root.getColumn(0, "cp") != "Y" ){
  9508. fReqfrm ( srchRow, "copy" );
  9509. }else{
  9510. if( curSavePrcpFlag_SMMMO00110 != "T" ){ //CP화면에서 미래처방인 경우, 의뢰지 팝업 skip
  9511. fReqfrm ( srchRow, "copy" );
  9512. }
  9513. }
  9514. if ( prcpclscd == "B4" ) { //수혈 (혈액수혈)
  9515. //수혈적응증 입력을 위해 수혈 상세팝업
  9516. fPrcpDetl( srchRow, "", "360", "auto" ); // 무조건 상세팝업
  9517. var addcnt = frmf_getParameter ( "SPMMO01500_addcnt" );
  9518. frmf_clearParameter ( "SPMMO01500_addcnt" );
  9519. if ( !utlf_isNull(addcnt) && addcnt != 0 ) {
  9520. srchRow = eval(srchRow) + eval(addcnt);
  9521. }
  9522. } else if ( prcpclscd == "03" ) { // 식이일 때는 자동팝업
  9523. var dietprcpgenrflag = ds_main_prcplist.getColumn(srchRow, "dietprcpgenrflag");
  9524. if ( utlf_isNull(dietprcpgenrflag) || dietprcpgenrflag == "-" ) {
  9525. fPrcpDetl( srchRow, "", "360", "auto" );
  9526. if ( !utlf_isNull(dietcnt) && dietcnt != 0 ) {
  9527. srchRow = eval(srchRow) + eval(addcnt) - 1;
  9528. }
  9529. }
  9530. }
  9531. var limprcpcd = lf_getDsValue(ds_initsrch_prcpetccnts, 0, "limprcpcd");
  9532. if( prcpcd.charAt(0) != "*" ){
  9533. iFind = limprcpcd.indexOf( prcpcd );
  9534. }
  9535. }
  9536. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) {
  9537. var drprcpetc6 = ds_main_prcplist.getColumn(srchRow, "drprcpetc6");
  9538. var drugmthdspccd = ds_main_prcplist.getColumn(srchRow, "drugmthdspccd");
  9539. if ( utlf_isNull(drugmthdspccd) || drugmthdspccd == "-" ) {
  9540. frmf_setParameter ( "SPMMO01900_srchRow", srchRow );
  9541. lf_prcpModal ( "SPMMO01900", 280, 100 );
  9542. frmf_clearParameter ( "SPMMO01900_srchRow" );
  9543. }
  9544. if ( !utlf_isNull(this.objects["ds_prnprcpyninfo"]) && ds_prnprcpyninfo.getColumn(0, "hardcd") == "Y" && ds_root.getColumn(0, "cp") != "Y"){
  9545. if (prnprcpflag == "Y"){// 2009.12.31 LYJ PRN처방 여부를 가려 횟수와 사유를 입력받는다.
  9546. var prnl = lf_getArrayData ( drugmastspec, 0, 33, "^", "|" );
  9547. if (prnl=="N"){
  9548. sysf_messageBox ( "PRN 처방이 불가능한 처방입니다. PRN 지정을 자동 해지합니다." , "E" );
  9549. ds_main_prcplist.setColumn(srchRow, "prnprcpflag", "N");
  9550. ds_main_prcplist.setColumn(srchRow, "tempprcpflag", "N" );
  9551. ds_main_prcplist.setColumn(srchRow, "prcpnm", ds_main_prcplist.getColumn(srchRow, "orgprcpnm" ));
  9552. ds_main_prcplist.setColumn(srchRow, "drprcpetc6", "" );
  9553. } else {
  9554. if (drprcpetc6 == "-" || drprcpetc6 =="" ){
  9555. var prcpinptflag = ds_main_prcplist.getColumn(srchRow, "prcpinptflag");
  9556. var mon = sysf_getCurrentMonitorNumber();
  9557. var objScreenInfo = system.getScreenRect(mon);
  9558. var resolution_width = objScreenInfo.right - objScreenInfo.left;
  9559. var resolution_height = objScreenInfo.bottom - objScreenInfo.top;
  9560. var xpt = (resolution_width - 246) / 2;
  9561. var ypt = (resolution_height - 119) / 2;
  9562. frmf_setParameter ( "SPMMO19200_pop", "bfprcp" );
  9563. frmf_setParameter ( "SPMMO19200_prcpcd", ds_main_prcplist.getColumn(srchRow, "prcpcd"));
  9564. frmf_setParameter ( "SPMMO19200_prcpnm", ds_main_prcplist.getColumn(srchRow, "prcpnm"));
  9565. // var objArg = new Object();
  9566. // objArg.arg_ds_main_prcplist_prnresncd = ds_tmp_prnresncd;
  9567. frmf_modal("SPMMO19200", "SPMMO19200", null, false, mon, xpt, ypt, null, null, null, null, null, "M");
  9568. // 노드 넘기는건 필요 없는 듯 추후 확인필요
  9569. //modal("SPMMO19200",monitorNumber,xpt, ypt, "SPMMO19200", "/root/tmp/prnresncd", "/root/main/prcp/prcplist/prnresncd", "sysmenu:hidden;", false );
  9570. var popPrnyn = frmf_getParameter ( "SPMMO19200_rtn1" );
  9571. if (popPrnyn == "N") {
  9572. ds_main_prcplist.setColumn(srchRow, "prnprcpflag", "N" );
  9573. ds_main_prcplist.setColumn(srchRow, "prcpnm", ds_main_prcplist.getColumn(srchRow, "orgprcpnm"));
  9574. ds_main_prcplist.setColumn(srchRow, "tempprcpflag", "N");
  9575. ds_main_prcplist.setColumn(srchRow, "drprcpetc6", "");
  9576. }else {
  9577. var popResncd = frmf_getParameter("SPMMO19200_resncd");
  9578. var prnNum = frmf_getParameter("SPMMO19200_prnNum");
  9579. var prncmt = frmf_getParameter("SPMMO19200_resncmt");
  9580. var Sprnprcpdtl = prnNum + "|" + popResncd + "|" + prncmt;
  9581. ds_main_prcplist.setColumn(srchRow, "drprcpetc6", Sprnprcpdtl);
  9582. }
  9583. }
  9584. }
  9585. }
  9586. }
  9587. if (prcpclscd == "A6" && selfprcpflag == "Y" ){ // 20101018 LYJ 주사제 상세용법 자동 팝업
  9588. var prcpClsCd = ds_main_prcplist.getColumn(srchRow, "prcpclscd" );
  9589. var xpt = getScreenCenterPoint(0, 380);
  9590. var ypt = getScreenCenterPoint(1, 119);
  9591. var sDsNm = dsf_createDs("ds_temp_SPMMO01200");
  9592. dsf_copyColInfo(ds_temp_SPMMO01200, ds_main_prcplist);
  9593. ds_temp_SPMMO01200.addRow();
  9594. ds_temp_SPMMO01200.copyRow(0, ds_main_prcplist, srchRow);
  9595. var objArg = new Object();
  9596. objArg.arg_ds_main_prcplist = ds_temp_SPMMO01200;
  9597. frmf_modal("SPMMO01200", "SPMMO01200", objArg, false, null, xpt, ypt, null, null, null, null, null, "P");
  9598. dsf_deleteDs(sDsNm);
  9599. if ( frmf_getParameter("SPMMO01200_selfprcpflag") == "N"){
  9600. ds_main_prcplist.deleteRow(srchRow);
  9601. frmf_clearParameter ( "SPMMO01200_selfprcpflag" );
  9602. return srchRow - 1;
  9603. } else {
  9604. fPrcpDetlApp ( prcpClsCd, "ds_prcptemp_prcplist", "ds_main_prcplist", srchRow );
  9605. }
  9606. }
  9607. } else if ( prcpclscd == "B2" || prcpclscd == "B6" ) { //진단검사 검체 팝업
  9608. fGetSpc ( srchRow );
  9609. }
  9610. if ( prcpclscd == "A6" || prcpclscd == "F2" ) {
  9611. var prcpinptflag = ds_main_prcplist.getColumn(srchRow, "prcpinptflag");
  9612. if ( prcpinptflag == "01" || prcpinptflag == "02" ) {
  9613. var prcpdayno = ds_main_prcplist.getColumn(srchRow, "prcpdayno");
  9614. if ( !utlf_isNull(prcpdayno) && prcpdayno > 1 ) {
  9615. if( prcpclscd == "A6" || ds_main_prcplist.getColumn(srchRow, "prcpcd") == "MUR0001" ){
  9616. // by sonjy 2008-08-07 재활(요실금제외) 약속set copy시 약속set의 일수와 다르게 copy되는 부분 막음. 조과장님 요청.
  9617. ds_main_prcplist.setColumn(srchRow, "prcpdayno", "1");
  9618. ds_main_prcplist.setColumn(srchRow, "contprcpspec", "-");
  9619. }
  9620. }
  9621. }
  9622. }
  9623. //start: 영상 검사 자동팝업에서 취소를 한 경우, copy한 처방 취소 처리 (2010.02.02 JJE)
  9624. if( frmf_getParameter("cnclCopyPrcpYN_Param") == "Y" ){
  9625. ds_main_prcplist.deleteRow(srchRow);
  9626. frmf_clearParameter ( "cnclCopyPrcpYN_Param" );
  9627. return srchRow-1;
  9628. }
  9629. //end
  9630. // HLA검사 공여자 정보 등록.
  9631. // hardcode 170 처방 중 공여자가 등록될 시 자동 본인부담 처리 setValue는 화면단에서 2009.11.17 이윤정
  9632. if ( ds_initsrch_pretest.getColumn(0, "trgtcd") == "Y" ) {
  9633. if ( frmf_getParameter("SPMMO15600_srchRow") == "" ) {
  9634. if (!utlf_isNull(ds_initsrch_hlaprcpcd.lookup("prcpcd", prcpcd, "prcpcd"))) {
  9635. var hlaselfprcpcd = ds_initsrch_hlaprcpcd.getColumn(0, "trgtcd");
  9636. frmf_setParameter("SPMMO15600_hlaselfprcpcd", hlaselfprcpcd);
  9637. frmf_setParameter("SPMMO15600_srchRow", srchRow);
  9638. frmf_modal("SPMMO15600", "SPMMO15600", null, null, null, null, null, null, null, null, null, null, "M");
  9639. var dnorAddcnt = frmf_getParameter("SPMMO15600_addcnt");
  9640. frmf_clearParameter("SPMMO15600_srchRow");
  9641. frmf_clearParameter("SPMMO15600_addcnt");
  9642. srchRow = dnorAddcnt ;
  9643. }
  9644. }
  9645. }
  9646. //model.addLog(" ************* End Of addPrcpPop()");
  9647. return srchRow
  9648. }
  9649. /**@desc : 처방 복사시 처방상세팝업 관리
  9650. * @return : void
  9651. * @authur : 엄영만 2013.07.25
  9652. * 서버에서 체크 하는 로직에 맞춰 신규 생성
  9653. */
  9654. function addPrcpPop_App(srchRow, usge) {
  9655. //model.addLog(" ************* Start Of addPrcpPop()");
  9656. var prcpgenrflag = "";
  9657. var prcpclscd = ds_main_prcplist.getColumn(srchRow, "prcpclscd");
  9658. var sChoiOrdFlag = ds_main_prcplist.getColumn(srchRow, "choiordflag");
  9659. var sSpecDrId = ds_main_prcplist.getColumn(srchRow, "specdrid");
  9660. //2011.11.07 엄영만 선택진료여부 및 선택진료의사 셋팅
  9661. if("D2" != prcpclscd || "prcp" != usge){ // 처방시에 병리처방은 의뢰지 팝업후 검체코드설정되면 선택의사 설정 함.(의뢰지 작성후 팝업 되도록) 2011.11.25 엄영만.
  9662. if(sChoiOrdFlag == "Y" && (utlf_isNull(sSpecDrId) || sSpecDrId == "-")){
  9663. lf_chgChoiDr ( "auto", srchRow );
  9664. }
  9665. } // end if
  9666. if ( usge == "prcp" ) {
  9667. var prcpessninptflag = ds_main_prcplist.getColumn(srchRow, "prcpessninptflag");
  9668. var prnprcpflag = ds_main_prcplist.getColumn(srchRow, "prnprcpflag");
  9669. var selfprcpflag = ds_main_prcplist.getColumn(srchRow, "selfprcpflag");
  9670. var drugmastspec = ds_main_prcplist.getColumn(srchRow, "drugmastspec");
  9671. var tempcol2 = ds_main_prcplist.getColumn(srchRow, "tempcol2");
  9672. if ( prcpessninptflag == "1" || prcpessninptflag == "2" || prcpessninptflag == "3" || prcpessninptflag == "4" || prcpessninptflag == "5" ){
  9673. var pid = ds_paminfo.getColumn(0, "pid");
  9674. var indd = lf_getDsValue(ds_paminfo, 0, "indd");
  9675. var cretno = ds_paminfo.getColumn(0, "cretno");
  9676. var ordtype = lf_getDsValue(ds_paminfo, 0, "ordtype");
  9677. if ( ordtype == "O" || ordtype == "S" ) {
  9678. prcpgenrflag = "O";
  9679. } else {
  9680. prcpgenrflag = "I";
  9681. }
  9682. ds_TRMMO00130.clearData();
  9683. ds_TRMMO00130.addRow();
  9684. ds_TRMMO00130.setColumn(0, "pid", pid);
  9685. ds_TRMMO00130.setColumn(0, "orddd", indd);
  9686. ds_TRMMO00130.setColumn(0, "cretno", cretno);
  9687. ds_TRMMO00130.setColumn(0, "prcpgenrflag", prcpgenrflag);
  9688. var oParam = {};
  9689. oParam.id = "TRMMO00130";
  9690. oParam.service = "prcpmngtapp.PrcpMngt";
  9691. oParam.method = "reqfGetOpansCnt";
  9692. oParam.inds = "req=ds_TRMMO00130";
  9693. oParam.outds = "ds_opansinfo=opansinfo";
  9694. oParam.async = false;
  9695. tranf_submit(oParam);
  9696. var opansCnt = ds_opansinfo.getColumn(0, "opanscnt");
  9697. for (var i = 0; i < ds_main_prcplist.rowcount; i++) {
  9698. if ( i != srchRow && ds_main_prcplist.getColumn(i, "prcpclscd") == "H2" &&
  9699. (ds_main_prcplist.getColumn(i, "prcpessninptflag") == "3" || ds_main_prcplist.getColumn(i, "prcpessninptflag") == "5" )) {
  9700. opansCnt++;
  9701. }
  9702. }
  9703. if (opansCnt == 0 && ds_main_prcplist.getColumn(srchRow, "opansflagcd") == "-") {
  9704. ds_main_prcplist.setColumn(srchRow, "opansflagcd", "4" ); //주수술
  9705. }
  9706. fCpInPrcpVisible();
  9707. fPrcpDetl( srchRow, "", "360", "auto" );
  9708. } else if ( prcpclscd == "C2" ) { //20090120 prcpclscd == "E2" 는 존재하지 않아서 지운다.
  9709. // 2007-12-17 마정민 수정 진료 ITC 요청에 의해 방사선 처방 임상소견 필수입력을 위한 자동 팝업 단순방사선 검사를 제외한 나머지 영상검사라 하면, 특수방사선검사(수익분류-19), 방사선혈관조영술(20), 방사선초음파(21), 방사선CT(22), 방사선 BMD(23), 방사선HIFU(24), 방사선MRI(25), 외부영상판독CD(26) 를 말함.
  9710. var ck = tempcol2.substring ( 0, 2 );
  9711. if (ck=="19"||ck=="20"||ck=="21"||ck=="22"||ck=="23"||ck=="24"||ck=="25"||ck=="26" || ds_main_prcplist.getColumn(srchRow, "tempcol2") == "18|02|06") {
  9712. fCpInPrcpVisible();
  9713. fPrcpDetl( srchRow, "", "360", "auto" );
  9714. }
  9715. } else if ( prcpclscd == "C6") {
  9716. /* 20090717 kimsj(핵의학 류형기)
  9717. * PET CT처방 임상소견 필수입력위한 자동팝업 추가 (수익분류3 기타인 경우 제외)
  9718. * 핵의학(09)-감마영상검사(09)-근골격(04) 임상소견 필수입력위한 자동팝업 추가 2013.02.06 엄영만
  9719. */
  9720. var ck = tempcol2.substring ( 0, 5 );
  9721. var dk = tempcol2.substring ( 6, 8 );
  9722. if ( (ck == "09|02" && dk != "04") || (ck == "09|01" && dk == "04") ) {
  9723. fCpInPrcpVisible();
  9724. fPrcpDetl( srchRow, "", "360", "auto" );
  9725. }
  9726. }
  9727. //CP 추가처방은 의뢰지 skip (2008.09.02 JJE)
  9728. if( ds_root.getColumn(0, "cp") != "Y" ){
  9729. fReqfrm ( srchRow, "copy" );
  9730. }else{
  9731. if( curSavePrcpFlag_SMMMO00110 != "T" ){ //CP화면에서 미래처방인 경우, 의뢰지 팝업 skip
  9732. fReqfrm ( srchRow, "copy" );
  9733. }
  9734. }
  9735. if ( prcpclscd == "B4" ) { //수혈 (혈액수혈)
  9736. //수혈적응증 입력을 위해 수혈 상세팝업
  9737. fPrcpDetl( srchRow, "", "360", "auto" ); // 무조건 상세팝업
  9738. var addcnt = frmf_getParameter ( "SPMMO01500_addcnt" );
  9739. frmf_clearParameter ( "SPMMO01500_addcnt" );
  9740. if ( addcnt != null && addcnt != 0 ) {
  9741. srchRow = eval(srchRow) + eval(addcnt);
  9742. }
  9743. } else if ( prcpclscd == "03" ) { // 식이일 때는 자동팝업
  9744. var dietprcpgenrflag = ds_main_prcplist.getColumn(srchRow, "dietprcpgenrflag");
  9745. if ( utlf_isNull(dietprcpgenrflag) || dietprcpgenrflag == "-" ) {
  9746. fPrcpDetl( srchRow, "", "360", "auto" );
  9747. if ( !utlf_isNull(dietcnt) && dietcnt != 0 ) {
  9748. srchRow = eval(srchRow) + eval(addcnt) -1;
  9749. }
  9750. }
  9751. }
  9752. }
  9753. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) {
  9754. var drprcpetc6 = ds_main_prcplist.getColumn(srchRow, "drprcpetc6");
  9755. var drugmthdspccd = ds_main_prcplist.getColumn(srchRow, "drugmthdspccd");
  9756. if ( utlf_isNull(drugmthdspccd) || drugmthdspccd == "-" ) {
  9757. frmf_setParameter ( "SPMMO01900_srchRow", srchRow );
  9758. lf_prcpModal ( "SPMMO01900", 280, 100 );
  9759. frmf_clearParameter ( "SPMMO01900_srchRow" );
  9760. }
  9761. if ( !utlf_isNull(this.objects["ds_prnprcpyninfo"]) && ds_prnprcpyninfo.getColumn(0, "hardcd")=="Y" && ds_root.getColumn(0, "cp") != "Y"){
  9762. if (prnprcpflag == "Y"){// 2009.12.31 LYJ PRN처방 여부를 가려 횟수와 사유를 입력받는다.
  9763. var prnl = lf_getArrayData ( drugmastspec, 0, 33, "^", "|" );
  9764. if (prnl=="N"){
  9765. sysf_messageBox ( "PRN 처방이 불가능한 처방입니다. PRN 지정을 자동 해지합니다." , "E" );
  9766. ds_main_prcplist.setColumn(srchRow, "prnprcpflag", "N");
  9767. ds_main_prcplist.setColumn(srchRow, "tempprcpflag", "N");
  9768. ds_main_prcplist.setColumn(srchRow, "prcpnm", ds_main_prcplist.getColumn(srchRow, "orgprcpnm"));
  9769. ds_main_prcplist.setColumn(srchRow, "drprcpetc6", "");
  9770. }else {
  9771. if (drprcpetc6 == "-" || drprcpetc6 =="" ){
  9772. var prcpinptflag = ds_main_prcplist.getColumn(srchRow, "prcpinptflag");
  9773. var mon = sysf_getCurrentMonitorNumber();
  9774. var objScreenInfo = system.getScreenRect(mon);
  9775. var resolution_width = objScreenInfo.right - objScreenInfo.left;
  9776. var resolution_height = objScreenInfo.bottom - objScreenInfo.top;
  9777. var xpt = (resolution_width - 246) / 2;
  9778. var ypt = (resolution_height - 119) / 2;
  9779. frmf_setParameter ( "SPMMO19200_pop", "bfprcp" );
  9780. frmf_setParameter ( "SPMMO19200_prcpcd", ds_main_prcplist.getColumn(srchRow, "prcpcd") );
  9781. frmf_setParameter ( "SPMMO19200_prcpnm", ds_main_prcplist.getColumn(srchRow, "prcpnm") );
  9782. // var objArg = new Object();
  9783. // objArg.arg_ds_main_prcplist_prnresncd = ds_tmp_prnresncd;
  9784. frmf_modal("SPMMO19200", "SPMMO19200", null, false, mon, xpt, ypt, null, null, null, null, null, "P");
  9785. // 노드 넘기는건 필요 없는 듯 추후 확인필요
  9786. //modal("SPMMO19200",monitorNumber,xpt, ypt, "SPMMO19200", "/root/tmp/prnresncd", "/root/main/prcp/prcplist/prnresncd", "sysmenu:hidden;", false );
  9787. var popPrnyn = frmf_getParameter ( "SPMMO19200_rtn1" );
  9788. if (popPrnyn == "N") {
  9789. ds_main_prcplist.setColumn(srchRow, "prnprcpflag", "N");
  9790. ds_main_prcplist.setColumn(srchRow, "prcpnm", ds_main_prcplist.getColumn(srchRow, "orgprcpnm"));
  9791. ds_main_prcplist.setColumn(srchRow, "tempprcpflag","N");
  9792. ds_main_prcplist.setColumn(srchRow, "drprcpetc6", "" );
  9793. }else {
  9794. var popResncd = getParameter("SPMMO19200_resncd");
  9795. var prnNum = getParameter("SPMMO19200_prnNum");
  9796. var prncmt = getParameter("SPMMO19200_resncmt");
  9797. var Sprnprcpdtl = prnNum + "|" + popResncd + "|" + prncmt;
  9798. ds_main_prcplist.setColumn(srchRow, "drprcpetc6", Sprnprcpdtl);
  9799. }
  9800. }
  9801. }
  9802. }
  9803. }
  9804. if (prcpclscd == "A6" && selfprcpflag == "Y" ){ // 20101018 LYJ 주사제 상세용법 자동 팝업
  9805. var prcpClsCd = ds_main_prcplist.getColumn(srchRow, "prcpclscd" );
  9806. var xpt = getScreenCenterPoint(0, 380);
  9807. var ypt = getScreenCenterPoint(1, 119);
  9808. var sDsNm = dsf_createDs("ds_temp_SPMMO01200");
  9809. dsf_copyColInfo(ds_temp_SPMMO01200, ds_main_prcplist);
  9810. ds_temp_SPMMO01200.addRow();
  9811. ds_temp_SPMMO01200.copyRow(0, ds_main_prcplist, srchRow);
  9812. var objArg = new Object();
  9813. objArg.arg_ds_main_prcplist = ds_temp_SPMMO01200;
  9814. frmf_modal("SPMMO01200", "SPMMO01200", objArg, false, null, xpt, ypt, null, null, null, null, null, "P");
  9815. dsf_deleteDs(sDsNm);
  9816. if ( frmf_getParameter("SPMMO01200_selfprcpflag") == "N"){
  9817. ds_main_prcplist.deleteRow(srchRow);
  9818. frmf_clearParameter ( "SPMMO01200_selfprcpflag" );
  9819. return srchRow - 1;
  9820. } else {
  9821. fPrcpDetlApp ( prcpClsCd, "ds_prcptemp_prcplist", "ds_main_prcplist", srchRow );
  9822. }
  9823. }
  9824. } else if ( prcpclscd == "B2" || prcpclscd == "B6" ) { //진단검사 검체 팝업
  9825. fGetSpc ( srchRow );
  9826. }
  9827. if ( prcpclscd == "A6") { // by sonjy 2008-08-07 약속set copy시 약속set의 일수와 다르게 copy되는 부분 막음. 조과장님 요청.
  9828. var prcpinptflag = ds_main_prcplist.getColumn(srchRow, "prcpinptflag");
  9829. if ( prcpinptflag == "01" || prcpinptflag == "02" ) {
  9830. var prcpdayno = ds_main_prcplist.getColumn(srchRow, "prcpdayno");
  9831. if ( !utlf_isNull(prcpdayno) && prcpdayno > 1 ) {
  9832. ds_main_prcplist.setColumn(srchRow, "prcpdayno", "1");
  9833. ds_main_prcplist.setColumn(srchRow, "contprcpspec", "-");
  9834. }
  9835. }
  9836. }
  9837. //start: 영상 검사 자동팝업에서 취소를 한 경우, copy한 처방 취소 처리 (2010.02.02 JJE)
  9838. if( frmf_getParameter("cnclCopyPrcpYN_Param") == "Y" ){
  9839. ds_main_prcplist.deleteRow(srchRow);
  9840. frmf_clearParameter ( "cnclCopyPrcpYN_Param" );
  9841. return srchRow - 1;
  9842. }//end
  9843. //model.addLog(" ************* End Of addPrcpPop()");
  9844. return srchRow
  9845. }
  9846. /**@desc : 믹스번호처리
  9847. * @return : void
  9848. * @authur : 마정민 2007.10.09
  9849. */
  9850. function fMixNoCnt() {
  9851. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  9852. var cnt = 0;
  9853. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  9854. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  9855. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd" );
  9856. if ( selprcpclscd == "A6" ) {
  9857. cnt++
  9858. } else {
  9859. ds_main_prcplist.selectRow(selectedRows[i], false);
  9860. }
  9861. }
  9862. if ( cnt <= 1 ) {
  9863. sysf_messageBox ( "Mix할 처방이 ", "E014");
  9864. } else {
  9865. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  9866. //20090203 마정민수정: 항암과 TPN, 무균조제약은 서로 MIX되지 않도록 제한 기능 추가
  9867. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  9868. spcldrug = lf_getArrayData ( ds_main_prcplist.getColumn(selectedRows[i], "drugmastspec") + "^", 0, 23, "^", "|" );
  9869. if (spcldrug == "B" || spcldrug == "C" || spcldrug == "D" || spcldrug == "T" || spcldrug == "Q" ) {
  9870. for ( var j = selectedRows.length - 1; j >= 0; j-- ){
  9871. chkspcldrug = lf_getArrayData ( ds_main_prcplist.getColumn(selectedRows[j], "drugmastspec" ) + "^", 0, 23, "^", "|" );
  9872. if (chkspcldrug == "B" || chkspcldrug == "C" || chkspcldrug == "D" || chkspcldrug == "T" || chkspcldrug == "Q") {
  9873. if (spcldrug != chkspcldrug) {
  9874. sysf_messageBox ( "항암, TPN, 무균조제약은 서로 MIX", "E001");
  9875. return;
  9876. }
  9877. }
  9878. }
  9879. }
  9880. }
  9881. var prcpmixno = eval(ds_init.getColumn(0, "prcpmixno")) + 1;
  9882. for (var i = 0; i < selectedRows.length; i++) {
  9883. ds_main_prcplist.setColumn(selectedRows[i], "prcpmixno", prcpmixno );
  9884. gGridUpdateChk("pack", i); // 임시저장 수정 모드
  9885. fSetCpVal(selectedRows[i], "U");
  9886. // if ( model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status" ) == "-" ) {
  9887. // model.setValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status", "U" );
  9888. // }
  9889. }
  9890. ds_init.setColumn(0, "prcpmixno", prcpmixno );
  9891. for (var i = 0; i < ds_main_prcplist.rowcount; i++) {
  9892. var chkPrcpmixno = ds_main_prcplist.getColumn(i, "prcpmixno");
  9893. //믹스번호가 있는 것중에
  9894. if ( chkPrcpmixno != "-" && !utlf_isNull(chkPrcpmixno)) {
  9895. //삭제를 제외하고 값이 한개 밖에 없으면 mix를 해제해 준다.
  9896. var srcNodeList = ds_main_prcplist.getCaseCount("prcpmixno == '" + chkPrcpmixno + "'");
  9897. if ( srcNodeList <= 1) {
  9898. ds_main_prcplist.setColumn(i, "prcpmixno", "-");
  9899. // if ( model.getValue ( prcpNode + "[" + i + "]/status" ) == "-" ) {
  9900. // model.setValue ( prcpNode + "[" + i + "]/status", "U" );
  9901. // }
  9902. }
  9903. }
  9904. }
  9905. }
  9906. }
  9907. /**@desc : 믹스번호취소처리
  9908. * @return : void
  9909. * @authur : 마정민 2007.10.16
  9910. */
  9911. function fMixNoDel() {
  9912. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  9913. var cnt = 0;
  9914. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  9915. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  9916. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd" );
  9917. if ( selprcpclscd == "A6" ) {
  9918. cnt++
  9919. } else {
  9920. ds_main_prcplist.selectRow(selectedRows[i], false);
  9921. }
  9922. }
  9923. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  9924. for (var i = 0; i < selectedRows.length; i++) {
  9925. ds_main_prcplist.setColumn(selectedRows[i], "prcpmixno", "-");
  9926. fSetCpVal(selectedRows[i], "U");
  9927. // if ( model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status" ) == "-" ) {
  9928. // model.setValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status", "U" );
  9929. // }
  9930. }
  9931. for (var i = 0; i < ds_main_prcplist.rowcount; i++) {
  9932. var chkPrcpmixno = ds_main_prcplist.getColumn(i, "prcpmixno" );
  9933. //믹스번호가 있는 것중에
  9934. if ( chkPrcpmixno != "-" && !utlf_isNull(chkPrcpmixno)) {
  9935. //삭제를 제외하고 값이 한개 밖에 없으면 mix를 해제해 준다.
  9936. var srcNodeList = ds_main_prcplist.getCaseCount("prcpmixno == '" + chkPrcpmixno + "'");
  9937. if ( srcNodeList <= 1) {
  9938. ds_main_prcplist.setColumn(i, "prcpmixno", "-" );
  9939. // if ( model.getValue ( prcpNode + "[" + i + "]/status" ) == "-" ) {
  9940. // model.setValue ( prcpNode + "[" + i + "]/status", "U" );
  9941. // }
  9942. }
  9943. }
  9944. }
  9945. }
  9946. /**@desc : 특수조제믹스번호처리
  9947. * @return : void
  9948. * @authur : 마정민 2007.10.09
  9949. */
  9950. function fTMixNoCnt() {
  9951. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  9952. var cnt = 0;
  9953. for ( var i = selectedRows.length - 1; i >= 0; i-- ){
  9954. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  9955. var selprcpclscd = ds_main_prcplist.getColumn(selectedRows[i], "prcpclscd");
  9956. if ( selprcpclscd == "A6" ) {
  9957. cnt++
  9958. } else {
  9959. ds_main_prcplist.selectRow(selectedRows[i], false);
  9960. }
  9961. }
  9962. if ( cnt <= 1 ) {
  9963. sysf_messageBox ( "Mix할 처방이 ", "E014");
  9964. } else {
  9965. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  9966. var prcpmixno = eval(ds_init.getColumn(0, "prcpmixno")) + 1;
  9967. for (var i = 0; i < selectedRows.length; i++) {
  9968. ds_main_prcplist.setColumn(selectedRows[i], "prcpmixno", "T" + prcpmixno );
  9969. fSetCpVal(selectedRows[i], "U");
  9970. // if ( model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status" ) == "-" ) {
  9971. // model.setValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status", "U" );
  9972. // }
  9973. }
  9974. ds_init.setColumn(0, "prcpmixno", prcpmixno);
  9975. for (var i = 0; i < ds_main_prcplist.rowcount; i++) {
  9976. var chkPrcpmixno = ds_main_prcplist.getColumn(i, "prcpmixno");
  9977. //믹스번호가 있는 것중에
  9978. if ( chkPrcpmixno != "-" && !utlf_isNull(chkPrcpmixno)) {
  9979. //삭제를 제외하고 값이 한개 밖에 없으면 mix를 해제해 준다.
  9980. var srcNodeList = ds_main_prcplist.getCaseCount("prcpmixno == '" + chkPrcpmixno + "'");
  9981. if ( srcNodeList <= 1) {
  9982. ds_main_prcplist.setColumn(i, "prcpmixno", "-");
  9983. // if ( model.getValue ( prcpNode + "[" + i + "]/status" ) == "-" ) {
  9984. // model.setValue ( prcpNode + "[" + i + "]/status", "U" );
  9985. // }
  9986. }
  9987. }
  9988. }
  9989. }
  9990. }
  9991. function fContPrcpDd() {
  9992. lf_contPrcpDd();
  9993. }
  9994. function fFollowUp() {
  9995. var pid = ds_paminfo.getColumn(0, "pid");
  9996. var indd = ds_paminfo.getColumn(0, "indd" );
  9997. var cretno = ds_paminfo.getColumn(0, "cretno" );
  9998. ds_TRMMO00119.setColumn(0, "pid", pid);
  9999. ds_TRMMO00119.setColumn(0, "orddd", indd);
  10000. //퇴원예고여부가 먼저 CHECK되고 퇴원후 외래예약이 CHECK되도록 수정 by sonjy 2008-07-22
  10001. //cond3에 cretno를 줄경우 자꾸 null이 넘어감. cond4로 수정. 제한항생제 승인신청서 취소 후 해당 현상 발생하며 오류 발생.
  10002. ds_TRMMO00119.setColumn(0, "instcd", "");
  10003. ds_TRMMO00119.setColumn(0, "cretno", cretno);
  10004. //기존에 해당 입원 원무키로 퇴원후 외래 예약이 있는지 체크
  10005. var oParam = {};
  10006. oParam.id = "TRMMO00119";
  10007. oParam.service = "prcpmngtapp.PrcpMngt";
  10008. oParam.method = "reqGetFollowUpChk";
  10009. oParam.inds = "req=ds_TRMMO00119";
  10010. oParam.outds = "ds_followup=followup";
  10011. oParam.async = false;
  10012. oParam.callback = "cf_TRMMO00119";
  10013. tranf_submit(oParam);
  10014. if(arErrorCode.pop("TRMMO00119") < 0) return false;
  10015. if ( utlf_isNull(ds_followup.getColumn(0, "pid"))) {
  10016. lf_prcpModal ( "SPMMO14400", 350, 200 );
  10017. var SPMMO14400_rtnyn = frmf_getParameter ( "SPMMO14400_rtnyn" );
  10018. frmf_clearParameter ( "SPMMO14400_rtnyn" );
  10019. if ( SPMMO14400_rtnyn == "Y" ) {
  10020. var otpt_flag = "I";
  10021. var otpt_orddd = frmf_getParameter ( "SPMMO14400_otpt_orddd" );
  10022. var otpt_orddeptcd = frmf_getParameter ( "SPMMO14400_orddeptcd" );
  10023. var otpt_orddrid = frmf_getParameter ( "SPMMO14400_orddrid" );
  10024. var otpt_ordtm = frmf_getParameter ( "SPMMO14400_ordtm" );
  10025. var otpt_rsrvflag = "8";
  10026. var sess_userid = sysf_getUserInfo ( "userid" );
  10027. frmf_clearParameter ( "SPMMO14400_otpt_orddd" );
  10028. frmf_clearParameter ( "SPMMO14400_orddeptcd" );
  10029. frmf_clearParameter ( "SPMMO14400_orddrid" );
  10030. frmf_clearParameter ( "SPMMO14400_ordtm" );
  10031. ds_TXMMO00107.setColumn(0, "otpt_flag", otpt_flag);
  10032. ds_TXMMO00107.setColumn(0, "otpt_orddd", ds_paminfo.getColumn(0, "dschdclrdt").substring( 0, 8 ));
  10033. ds_TXMMO00107.setColumn(0, "otpt_orddeptcd", otpt_orddeptcd );
  10034. ds_TXMMO00107.setColumn(0, "otpt_orddrid", otpt_orddrid );
  10035. ds_TXMMO00107.setColumn(0, "otpt_ordtm", otpt_ordtm );
  10036. ds_TXMMO00107.setColumn(0, "otpt_rsrvflag", otpt_rsrvflag );
  10037. ds_TXMMO00107.setColumn(0, "sess_userid", sess_userid );
  10038. ds_TXMMO00107.setColumn(0, "indd", indd );
  10039. ds_TXMMO00107.setColumn(0, "cretno", cretno );
  10040. ds_TXMMO00107.setColumn(0, "otpt_pid", pid ); //cond2는 처방저장 instance로 뒤덮어진다. 등록번호는 cond11로 2008.06.24
  10041. var oParam = {};
  10042. oParam.id = "TXMMO00107";
  10043. oParam.service = "prcpmngtapp.PrcpMngt";
  10044. oParam.method = "reqExeSaveFollowUp";
  10045. oParam.inds = "req=ds_TXMMO00107";
  10046. oParam.outds = "ds_followup=followup";
  10047. oParam.async = false;
  10048. oParam.callback = "cf_TXMMO00107";
  10049. tranf_submit(oParam);
  10050. if(arErrorCode.pop("TXMMO00107") > -1) {
  10051. for ( var i = 0; i < ds_main_prcplist.rowcount; i++ ) {
  10052. //퇴원후 외래처방 예약일 잡고 확인누르면 퇴원후 외래처방 PRCPHOPEDD를 모두 예약일로 수정한다.
  10053. //입원전검사(당일/전일)도 퇴원후 외래와 같은 처리 by sonjy 2008-07-25
  10054. if ( ds_main_prcplist.getColumn(i, "prcpkindcd") == "70" ||
  10055. ds_main_prcplist.getColumn(i, "prcpkindcd") == "90" ||
  10056. ds_main_prcplist.getColumn(i, "prcpkindcd") == "95" ) {
  10057. ds_main_prcplist.setColumn(i, "prcphopedd", otpt_orddd);
  10058. }
  10059. }
  10060. return true;
  10061. } else {
  10062. return false;
  10063. }
  10064. } else {
  10065. return false;
  10066. }
  10067. } else {
  10068. return true;
  10069. }
  10070. return true;
  10071. }
  10072. function cf_TRMMO00119(sSvcId, nErrorCode, sErrorMsg) {
  10073. arErrorCode.push(sSvcId, nErrorCode);
  10074. }
  10075. function cf_TXMMO00107(sSvcId, nErrorCode, sErrorMsg) {
  10076. arErrorCode.push(sSvcId, nErrorCode);
  10077. }
  10078. /**@desc : CP 안에 있는 처방이 팝업 및 에러로 보여져야 함
  10079. * @
  10080. * @return :
  10081. * @author : 마정민
  10082. * @---------------------------------------------------
  10083. */
  10084. function fCpInPrcpVisible () {
  10085. // CPGMAIN 화면 완성 후 작업해야 함, 확인필요
  10086. if ( ds_root.getColumn(0, "cp") == "Y") {
  10087. if( invalYN_SMMMO00110 == "N" && prtlprcpstatus_SMMMO00110 != "U" ){
  10088. // 다른 iviewer는 hidden / 처방 import, iviewer는 visible
  10089. btn_action_tab.selected = true;
  10090. ivw_outline.visible = false;
  10091. ivw_detail.visible = false;
  10092. imp_prcp.visible = true;
  10093. if(btn_ivbfprcp.selected){
  10094. ivw_prcp2.visible = false;
  10095. ivw_prcp3.visible = true;
  10096. }else{
  10097. ivw_prcp2.visible = true;
  10098. ivw_prcp3.visible = false;
  10099. }
  10100. }
  10101. }
  10102. }
  10103. /**@desc : 응급의료 관리료 수정
  10104. * @
  10105. * @return :
  10106. * @author : 마정민 20087. 10. 16
  10107. * @---------------------------------------------------
  10108. */
  10109. function fErMgrPay() {
  10110. var currow = ds_main_prcplist.rowposition;
  10111. var prcpcd = ds_main_prcplist.getColumn(currow, "prcpcd" );
  10112. var status = ds_main_prcplist.getColumn(currow, "status" );
  10113. var trgtcd = ds_main_prcplist.lookup("trgtcd", prcpcd, "trgtcd");
  10114. frmf_setParameter ( "SMMMO00100_cond1", "Y" );
  10115. var erprcpyn = ds_initsrchprcp_prcpetccnts.getColumn(0, "erprcpyn");
  10116. var erprcpcd = lf_getArrayData ( erprcpyn + "^", 0, 1, "^", "|" );
  10117. // 응급의료 관리료 수정팝업 띄우기
  10118. //1.수가코드가 ercalcscorcd 에 값이 있고
  10119. if ( !utlf_isNull(trgtcd) || status == "S" ) {
  10120. //2.erprcpyn가 Y이면 띄운다.
  10121. frmf_setParameter ( "SMMMO06100_erprcpcd", "" );
  10122. var erprcpyn = ds_initsrchprcp_prcpetccnts.getColumn(0, "erprcpyn");
  10123. if (ds_initsrchprcp_prcpetccnts.getColumn(0, "erprcpyn" ) != "Y" ){
  10124. var erprcpcd = lf_getArrayData ( erprcpyn + "^", 0, 1, "^", "|" );
  10125. if ( erprcpcd != "-" || utlf_isNull(erprcpcd)) {
  10126. frmf_setParameter ( "SMMMO06100_erprcpcd", erprcpcd );
  10127. }
  10128. }
  10129. frmf_setParameter ( "SMMMO06100_currow", currow );
  10130. lf_prcpModal ( "SMMMO06100", 0, 0 );
  10131. frmf_clearParameter ( "SMMMO06100_currow" );
  10132. frmf_clearParameter ( "SMMMO06100_erprcpcd" );
  10133. }
  10134. }
  10135. /**@desc : OCR 자동출력
  10136. * @
  10137. * @return :
  10138. * @author : 마정민 20087. 10. 17
  10139. * @---------------------------------------------------
  10140. */
  10141. function fOcrAutoPrint(calcscorcd) {
  10142. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  10143. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ) {
  10144. var orddd = ds_paminfo.getColumn(0, "orddd");
  10145. } else {
  10146. var orddd = ds_paminfo.getColumn(0, "indd");
  10147. }
  10148. ds_hidden_ocrprint_calcscor.setColumn(0, "pid", ds_paminfo.getColumn(0, "pid"));
  10149. ds_hidden_ocrprint_calcscor.setColumn(0, "cretno", ds_paminfo.getColumn(0, "cretno"));
  10150. ds_hidden_ocrprint_calcscor.setColumn(0, "orddd", orddd );
  10151. ds_hidden_ocrprint_calcscor.setColumn(0, "ordtype", prcpgenrflag);
  10152. ds_hidden_ocrprint_calcscor.setColumn(0, "calcscorcd", calcscorcd );
  10153. trace("동의서 출력 - LSH");
  10154. trace(ds_hidden_ocrprint_calcscor.saveXML());
  10155. var mon = sysf_getCurrentMonitorNumber();
  10156. var xpt = this.getOwnerFrame().position.x + 50;
  10157. var ypt = this.getOwnerFrame().position.y + 50;
  10158. dsf_createDs("ds_hidden_ocrprint_calcscor_clone");
  10159. ds_hidden_ocrprint_calcscor_clone.copyData(ds_hidden_ocrprint_calcscor);
  10160. var objArg = new Object();
  10161. objArg.arg_ds_main_temp_calcscor = ds_hidden_ocrprint_calcscor_clone;
  10162. frmf_modal("SPMRF04500", "SPMRF04500", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  10163. }
  10164. /**@desc : 검색button 초기화 setting
  10165. * @return : void
  10166. * @authur : 마정민 2007. 8. 20
  10167. */
  10168. function fInitSrchBtnSet() {
  10169. var btn_srchcnt = 0;
  10170. for ( var i = 0; i < 16; i++ ) {
  10171. btn_srchcnt = i + 51;
  10172. var btncd = ds_initsrch_btnsrchenvcnts.getColumn(i, "btncd");
  10173. var btnnm = "div_all.Div00.Tab_btns.tabpage2.button" + btn_srchcnt;
  10174. var buttonObj = eval(btnnm);
  10175. if ( i < ds_initsrch_btnsrchenvcnts.rowcount ) {
  10176. buttonObj.text = ds_initsrch_btnsrchenvcnts.getColumn(i, "btnnm");
  10177. buttonObj.visible = true;
  10178. buttonObj._value = btncd;
  10179. buttonObj.onclick.addHandler(fBtnClick2);
  10180. } else {
  10181. buttonObj.visible = false;
  10182. }
  10183. }
  10184. }
  10185. /**@desc : CP에서 약속set 만들때 값 setting
  10186. * @param : 바꿔줄 상태값
  10187. * @return :
  10188. * @author : 2007. 10. 20
  10189. * @---------------------------------------------------
  10190. */
  10191. function fSetCpVal(i, flag) {
  10192. if( ds_root.getColumn(0, "cp") == "S" ){
  10193. if( ds_main_prcplist.getColumn(i, "status") == "-" )
  10194. ds_main_prcplist.setColumn(i, "status", flag);
  10195. }
  10196. }
  10197. /**@desc : 보험정보 open
  10198. * @
  10199. * @param :
  10200. * @return :
  10201. * @author : 오지훈
  10202. * @---------------------------------------------------
  10203. */
  10204. function fOpenInsuInfo(){
  10205. var currow = ds_main_prcplist.rowposition;
  10206. if(currow < 0){
  10207. return;
  10208. }
  10209. //보험정보 조회시 처방코드 전달, 김민선
  10210. //2008.07.10 오지훈
  10211. var prcpcd = ds_main_prcplist.getColumn(currow, "prcpcd");
  10212. dsf_createDsRow("ds_arg_temp", [{col:"calcscorcd", type:"string", size:256, val:prcpcd}]);
  10213. var objArg = new Object();
  10214. objArg.arg_ds_arg_send_item3 = ds_arg_temp;
  10215. frmf_modal("SPPIZ01600", "SPPIZ01600", objArg, null, 1, 100, 200, null, null, null, null, null, "M");
  10216. /*
  10217. var pid = model.getValue("/root/paminfo/list/pid");
  10218. model.makeValue("/root/tmp/pid", pid);
  10219. modal("SPPIZ01600");
  10220. modal("SPPIZ01600", 1, 100, 200, "SMPMC01400", "/root/tmp/pid", "/root/hidden/source/pid");
  10221. */
  10222. }
  10223. /**@desc : 검사실별 예약현황
  10224. * @
  10225. * @param :
  10226. * @return :
  10227. * @author : 오지훈
  10228. * @---------------------------------------------------
  10229. */
  10230. function fOpenExamRsrvInfo(){
  10231. var currow = ds_main_prcplist.rowposition;
  10232. if(currow < 0){
  10233. return;
  10234. }
  10235. frmf_modal("SMAEA00900", "SMAEA00900", null, null, 1, 100, 200, null, null, null, null, null, "M");
  10236. }
  10237. /**@desc : 조영제 동의서 출력
  10238. * :
  10239. * @
  10240. * @param :
  10241. * @return :
  10242. * @---------------------------------------------------
  10243. */
  10244. function fPrintfrm() {
  10245. var currow = ds_main_prcplist.rowposition;
  10246. if ( ds_main_prcplist.getColumn(currow, "testreqlnkno") == "DYENO" ) {
  10247. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  10248. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ) {
  10249. var orddd = ds_paminfo.getColumn(0, "orddd");
  10250. } else {
  10251. var orddd = ds_paminfo.getColumn(0, "indd");
  10252. }
  10253. ds_hidden_ocrprint_calcscor.setColumn(0, "pid", ds_paminfo.getColumn(0, "pid"));
  10254. ds_hidden_ocrprint_calcscor.setColumn(0, "cretno", ds_paminfo.getColumn(0, "cretno"));
  10255. ds_hidden_ocrprint_calcscor.setColumn(0, "orddd", orddd );
  10256. ds_hidden_ocrprint_calcscor.setColumn(0, "ordtype", prcpgenrflag);
  10257. ds_hidden_ocrprint_calcscor.setColumn(0, "calcscorcd", ds_main_prcplist.getColumn(currow, "prcpcd"));
  10258. var mon = sysf_getCurrentMonitorNumber();
  10259. var xpt = this.getOwnerFrame().position.x + 400;
  10260. var ypt = this.getOwnerFrame().position.y + 100;
  10261. var objArg = new Object();
  10262. objArg.arg_ds_hidden_ocrprint_calcscor = ds_hidden_ocrprint_calcscor;
  10263. frmf_modal("SPAER01900", "SPAER01900", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  10264. if ( frmf_getParameter("SPAER01900_lnkno" ) == "216" ) {
  10265. ds_main_prcplist.setColumn(currow, "testreqlnkno", "216" );
  10266. } else {
  10267. ds_main_prcplist.setColumn(currow, "testreqlnkno", "DYENO" );
  10268. }
  10269. }
  10270. }
  10271. function fClearSaveInstance() {
  10272. ds_send_cond3.clearData();
  10273. }
  10274. function fAppendSaveNode( desNode, srcNodeList ) {
  10275. var ds_dest = this.objects[desNode];
  10276. var saveDrPrcpList = this.objects[srcNodeList]; //의사처방 저장데이터
  10277. ds_dest.appendData(saveDrPrcpList, true);
  10278. }
  10279. /**@desc : 마감후 반환 체크 및 사유 입력 ( 반환가능한 것 중에서 마감된 것은 반환사유 입력후 d/c )
  10280. * @param :
  10281. * @return :
  10282. * @author : 마정민
  10283. * @---------------------------------------------------
  10284. */
  10285. function fEndAftDC(){
  10286. var srcNodeList = ds_result_saveexecprcplist
  10287. var dclistcnt = -1;
  10288. var ioflag = "O";
  10289. dsf_createDs("ds_endaftdc");
  10290. ds_endaftdc.addColumn("prcpdd", "string");
  10291. ds_endaftdc.addColumn("prcpno", "string");
  10292. ds_endaftdc.addColumn("prcphistno", "string");
  10293. ds_endaftdc.addColumn("execprcpno", "string");
  10294. ds_endaftdc.addColumn("instcd", "string");
  10295. ds_endaftdc.addColumn("ioflag", "string");
  10296. for ( var i = 0; i < ds_result_saveexecprcplist.rowcount; i++ ) {
  10297. if (ds_result_saveexecprcplist.getColumn(i, "status") == "C"
  10298. && utlf_isNull(ds_result_saveexecprcplist.getColumn(i, "mig"))) {
  10299. var enddd = ds_result_saveexecprcplist.getColumn(i, "enddd");
  10300. if ( !utlf_isNull(enddd) && enddd.length >= 4 && enddd.substring( 0, 4 ) != "9999") {
  10301. dclistcnt = ds_endaftdc.addRow();
  10302. ds_endaftdc.setColumn(dclistcnt, "prcpdd", ds_result_saveexecprcplist.getColumn(i, "prcpdd"));
  10303. ds_endaftdc.setColumn(dclistcnt, "prcpno", ds_result_saveexecprcplist.getColumn(i, "prcpno"));
  10304. ds_endaftdc.setColumn(dclistcnt, "prcphistno", ds_result_saveexecprcplist.getColumn(i, "oldprcphistno"));
  10305. ds_endaftdc.setColumn(dclistcnt, "execprcpno", ds_result_saveexecprcplist.getColumn(i, "oldexecprcpno"));
  10306. ds_endaftdc.setColumn(dclistcnt, "instcd", ds_result_saveexecprcplist.getColumn(i, "instcd"));
  10307. if ( ds_patflag.getColumn(0, "prcpgenrflag") == "O" ) ioflag = "O";
  10308. else ioflag = "I";
  10309. ds_endaftdc.setColumn(dclistcnt, "ioflag", ioflag);
  10310. }
  10311. }
  10312. }
  10313. if ( dclistcnt > -1 ) {
  10314. var mon = sysf_getCurrentMonitorNumber();
  10315. var xpt = this.getOwnerFrame().position.x + 100;
  10316. var ypt = this.getOwnerFrame().position.y + 100;
  10317. var objArg = new Object();
  10318. objArg.arg_ds_target = ds_endaftdc;
  10319. frmf_modal("SPPAS03000", "SPPAS03000", objArg, false, mon, xpt, ypt, 400, 400, null, null, null, "M");
  10320. }
  10321. dsf_deleteDs("ds_endaftdc");
  10322. }
  10323. function fSubjPrcpChk() {
  10324. var oParam = {};
  10325. oParam.id = "TRMMO00120";
  10326. oParam.service = "prcpbaseapp.PrcpClsMngt";
  10327. oParam.method = "reqGetSubjPrcpChk";
  10328. oParam.inds = "req=ds_initsrchcond";
  10329. oParam.outds = "ds_temp_subjprcpchk=subjprcpchk";
  10330. oParam.async = false;
  10331. tranf_submit(oParam);
  10332. var ioflag = ds_paminfo.getColumn(0, "ioflag");
  10333. if (ds_temp_subjprcpchk.getColumn(0, "subjrgstyn") == "N"){
  10334. sysf_messageBox("임상연구 처방은 피험자등록" , "E012");
  10335. return -1;
  10336. }
  10337. if (ds_temp_subjprcpchk.getColumn(0, "subjinsukindyn") == "N"){ // 임상연구 유형이 없을때
  10338. if (ioflag == "O"){
  10339. sysf_messageBox("임상연구로 접수되지 않은 환자입니다." , "I007");
  10340. } else {
  10341. sysf_messageBox("보조유형에 임상연구가 없는 환자입니다." , "I007");
  10342. }
  10343. return -1;
  10344. } else { // 임상연구 유형이 있을때.
  10345. if (ioflag == "I" || ioflag == "D" || ioflag == "E") {
  10346. ds_init.setColumn(0, "subjsubcretno", ds_temp_subjprcpchk.getColumn(0, "subjinsukindyn"));
  10347. }
  10348. }
  10349. return 1;
  10350. }
  10351. /**@desc : 항암제일때 항암제의 부서 setting , 퇴원후 외래/입원전검사 일경우 변경없이 ...
  10352. * @param :
  10353. * @return :
  10354. * @author : SONJY
  10355. * @---------------------------------------------------
  10356. */
  10357. function fDrugDeptcdChk(strDest, vRow){
  10358. if( vRow < 0 || utlf_isNull(strDest) ) return false;
  10359. var ds_dest = this.objects[strDest];
  10360. var drugmastspec = ds_dest.getColumn(vRow, "drugmastspec");
  10361. var spcldrugAnti = "";
  10362. var spcldrug = "";
  10363. if ( utlf_isNull(drugmastspec)) {
  10364. spcldrugAnti = ds_dest.getColumn(vRow, "anticanflag");
  10365. spcldrug = ds_dest.getColumn(vRow, "spcldrug");
  10366. } else {
  10367. spcldrugAnti = lf_getArrayData ( drugmastspec + "^", 0, 24, "^", "|" );
  10368. spcldrug = lf_getArrayData ( drugmastspec + "^", 0, 23, "^", "|" );
  10369. }
  10370. var orgdeptcd = ds_dest.getColumn(vRow, "prcpexecdeptcd");
  10371. var prcpkindcd = ds_dest.getColumn(vRow, "prcpkindcd");
  10372. var prcpclscd = ds_dest.getColumn(vRow, "prcpclscd");
  10373. var testreqlnkno = ds_dest.getColumn(vRow, "testreqlnkno");
  10374. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  10375. //항암제 주사 일경우, 퇴원후 외래/입원전검사 주사 일경우 수가매핑부서로
  10376. if((( spcldrugAnti == "1" || spcldrugAnti == "2" ) && prcpclscd == "A6" ) ||
  10377. (( prcpkindcd == "70" || prcpkindcd == "90" || prcpkindcd == "95" ) && prcpclscd == "A6" )
  10378. ){
  10379. return orgdeptcd ;
  10380. }
  10381. //20100609 수술중처방 집계 관련 보완. 시행부서가 회복실, 수술실이면 그대로 두고 아니면 수술실마취로 세팅.
  10382. if ( prcpkindcd == "35" && sysf_getUserInfo( "dutplcecd" ) == ds_initsrch_anstdeptcd.getColumn(0, "trgtcd") &&
  10383. ( ds_dest.getColumn(vRow, "prcpexecdeptcd") == ds_initsrch_recovdeptcd.getColumn(0, "trgtcd") ||
  10384. ds_dest.getColumn(vRow, "prcpexecdeptcd") == ds_initsrch_opdeptcd.getColumn(0, "trgtcd")) ) {
  10385. return orgdeptcd;
  10386. }
  10387. if ( "3240807000" == orgdeptcd ){ //20080828 특수조제실일 경우는 예외처리한다.
  10388. return orgdeptcd ;
  10389. }
  10390. //20080825 마정민 수정 B: 소아TPN, C:무균조제, Q:완제품TPN, T:조제TPN 처방일 때 기존 부서 그대로 설정
  10391. if ( prcpclscd == "A6" && ( spcldrug == "B" || spcldrug == "C" || spcldrug == "Q" || spcldrug == "T" )) {
  10392. return orgdeptcd ;
  10393. }
  10394. if( prcpgenrflag != "O" ) {
  10395. orgdeptcd = "3240300000"; //병동약국으로 default setting
  10396. }
  10397. if( prcpclscd != "A6" ) return orgdeptcd ;
  10398. //항암제가 아니고 mix번호가 있을 경우 해당 mix번호의 처방중 항암제가 있을 때 항암제의 부서 return
  10399. var mixno = ds_dest.getColumn(vRow, "prcpmixno");
  10400. var antilist = null ;
  10401. if( mixno != "-" ) {
  10402. if( ds_dest.getCaseCount("prcpmixno == '" + mixno + "'") > 0 ) {
  10403. for( var i = 0; i < ds_dest.rowcount; i++){
  10404. if(ds_dest.getColumn(i, "prcpmixno") == mixno) {
  10405. if (!utlf_isNull(lf_getDsValue(ds_dest, vRow, "spcldrug"))) {
  10406. spcldrugAnti = ds_dest.getColumn(i, "anticanflag");
  10407. spcldrug = ds_dest.getColumn(i, "spcldrug");
  10408. } else {
  10409. drugmastspec = ds_dest.getColumn(i, "drugmastspec");
  10410. spcldrugAnti = lf_getArrayData ( drugmastspec + "^", 0, 24, "^", "|" );
  10411. spcldrug = lf_getArrayData ( drugmastspec + "^", 0, 23, "^", "|" );
  10412. }
  10413. if( spcldrugAnti == "1" || spcldrugAnti == "2" || spcldrug == "B" || spcldrug == "C" || spcldrug == "Q" || spcldrug == "T" ) {
  10414. orgdeptcd = ds_dest.getColumn(i, "prcpexecdeptcd");
  10415. break;
  10416. }
  10417. }
  10418. }
  10419. }
  10420. }
  10421. return orgdeptcd;
  10422. }
  10423. function fOldDrugMthdPop() {
  10424. if (!utlf_isNull(this.objects["ds_migdrugmthdlist"]) && ds_migdrugmthdlist.rowcount > 0) {
  10425. var mon = sysf_getCurrentMonitorNumber();
  10426. var xpt = this.getOwnerFrame().position.x + 150;
  10427. var ypt = this.getOwnerFrame().position.y + 50;
  10428. var objArg = new Object();
  10429. objArg.arg_ds_send_migdrugmthdlist = ds_migdrugmthdlist;
  10430. frmf_modal("SPMMO15900", "SPMMO15900", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  10431. }
  10432. }
  10433. /**@desc : 외부 CD 재판독 의뢰 팝업 호출 여부 체크 (2010.02.19 JJE)
  10434. * @
  10435. * @param : ref - reference path
  10436. * rsltref - result reference path
  10437. * hardcd - 하드코드
  10438. * @return :
  10439. * @author : 전지은
  10440. * @---------------------------------------------------
  10441. */
  10442. function fChkOuterCdListPop(){
  10443. if( !utlf_isNull(ds_initsrch_outercdtypelist.getColumn(0, "trgtcd")) ){
  10444. if( ds_root.getColumn(0, "addprcp") != "Y" ){ //외래환자만 pop -> 입원/응급환자도 pop
  10445. frmf_clearParameter("spmmo21200_rtnyn");
  10446. frmf_clearParameter("spmmo21200_pid");
  10447. frmf_clearParameter("spmmo21200_orddeptcd");
  10448. frmf_clearParameter("spmmo21200_rtnprcpcd");
  10449. frmf_clearParameter("spmmo21200_rtneqmtcd");
  10450. frmf_clearParameter("spmmo21200_rtntrsmdd");
  10451. frmf_clearParameter("spmmo21200_rtntrsmtm");
  10452. var pid = ds_paminfo.getColumn(0, "pid");
  10453. var orddeptcd = ds_paminfo.getColumn(0, "orddeptcd");
  10454. dsf_createDsRow("ds_spmmo21200_send", [{col:"pid", val:pid}
  10455. ,{col:"orddeptcd", val:orddeptcd}]);
  10456. dsf_createDs("ds_spmmo21200_cdlist");
  10457. var oParam = {};
  10458. oParam.id = "TRMMO21201";
  10459. oParam.service = "prcpmngtapp.PrcpMngt";
  10460. oParam.method = "reqGetPatOuterCdList";
  10461. oParam.inds = "req=ds_spmmo21200_send";
  10462. oParam.outds = "ds_spmmo21200_cdlist=info";
  10463. oParam.async = false;
  10464. oParam.callback = "cf_TRMMO21201";
  10465. tranf_submit(oParam); //외부 등록 CD가 있고, 판독료 처방 미발행인 경우 외부 등록 CD 리스트 조회
  10466. if(arErrorCode.pop("TRMMO21201") > -1) {
  10467. if( ds_spmmo21200_cdlist.rowcount > 0 ){
  10468. frmf_setParameter("spmmo21200_pid" , pid);
  10469. frmf_setParameter("spmmo21200_orddeptcd", orddeptcd);
  10470. lf_prcpModal ( "SPMMO21200", 0, 0 );
  10471. }
  10472. }
  10473. dsf_deleteDs("ds_spmmo21200_send");
  10474. dsf_deleteDs("ds_spmmo21200_cdlist");
  10475. }
  10476. }
  10477. }
  10478. function cf_TRMMO21201(sSvcId, nErrorCode, sErrorMsg) {
  10479. arErrorCode.push(sSvcId, nErrorCode);
  10480. }
  10481. /**@desc : KNUH, 사전심사 대상 처방의 상태가 변경요청인 경우, 심사팀의 메세지를 보여준다.
  10482. * @return : void
  10483. * @authur : 전지은 2011. 03. 17
  10484. */
  10485. function fOpenBfJudgInfoPop(){
  10486. //var prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  10487. if( ds_patflag.getColumn(0, "prcpgenrflag") == "O" ){
  10488. var judgStat = appf_getPatientInfoDetail("bfjudgvalue"); //WXY (W:심사대기, X:변경요청, Y:심사완료 혹은 해당없음)
  10489. //alert( judgStat.substr(1, 1) );
  10490. if( judgStat.substr(1, 1) == "X" ){
  10491. frmf_clearParameter("SPMMO21500_rntValue"); //parameter 초기화(2011.01.31 JJE)
  10492. var mon = sysf_getCurrentMonitorNumber();
  10493. var xpt = this.getOwnerFrame().position.x + 180;
  10494. var ypt = this.getOwnerFrame().position.y + 50;
  10495. frmf_modal("SPMMO21500", "SPMMO21500", null, false, mon, xpt, ypt, null, null, null, null, null, "M"); //오류팝업
  10496. var bfRtnValue = frmf_getParameter("SPMMO21500_rntValue");
  10497. if (bfRtnValue == "REQ") {
  10498. ds_result_prcperrlist.clearData();
  10499. var findRow = ds_main_prcplist.findRowExpr("status == 'I' || status == 'D' || status == 'U'");
  10500. if (findRow == -1 || utlf_isNull(ds_main_prcplist.getColumn(findRow, "prcpcd"))) {
  10501. if (findRow == -1 || utlf_isNull(ds_main_prcplist.getColumn(findRow, "diagcd"))) {
  10502. sysf_messageBox ( "사전심사할 처방 및 진단이 없습니다.", "E" );
  10503. fClearSaveInstance();
  10504. ds_result_prcperrlist.clearData();
  10505. return false;
  10506. }
  10507. }
  10508. }
  10509. } //end if( judgStat == "W" )
  10510. } //end if( prcpgenrflag == "O" )
  10511. }
  10512. /**@desc : 처방시 미비기록 유무 확인(submit)
  10513. * @param : void
  10514. * @return : void
  10515. * @author : 김소정
  10516. * @---------------------------------------------------
  10517. */
  10518. function fChkValidRecInfo(){
  10519. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  10520. if (prcpgenrflag != "O" && prcpgenrflag != "S"){ //외래가 아닐때
  10521. var pid = ds_paminfo.getColumn(0, "pid");
  10522. var orddd = ds_paminfo.getColumn(0, "indd");
  10523. var cretno = ds_paminfo.getColumn(0, "cretno");
  10524. var dschdd = ds_paminfo.getColumn(0, "dschdd");
  10525. // model.alert("pid : "+pid+" |orddd : "+orddd+" | cretno : "+cretno);
  10526. //1. 퇴원처방시점
  10527. if (!utlf_isNull(ds_main_prcplist.lookup("prcpkindcd", '60', "prcpcd"))) {
  10528. ds_temprec_reqdata.setColumn(0, "eventflag", "DC_ORD");
  10529. ds_temprec_reqdata.setColumn(0, "pid", pid);
  10530. ds_temprec_reqdata.setColumn(0, "orddd", orddd);
  10531. ds_temprec_reqdata.setColumn(0, "cretno", cretno);
  10532. ds_temprec_reqdata.setColumn(0, "reqdd", dschdd);
  10533. }
  10534. //2. 처방시점
  10535. else {
  10536. ds_temprec_reqdata.setColumn(0, "eventflag", "ORD");
  10537. ds_temprec_reqdata.setColumn(0, "pid", pid);
  10538. ds_temprec_reqdata.setColumn(0, "orddd", orddd);
  10539. ds_temprec_reqdata.setColumn(0, "cretno", cretno);
  10540. ds_temprec_reqdata.setColumn(0, "reqdd", "");
  10541. }
  10542. var oParam = {};
  10543. oParam.id = "TRMMR01303";
  10544. oParam.service = "medirecapp.RecIf";
  10545. oParam.method = "reqValidateByEvent";
  10546. oParam.inds = "req=ds_temprec_reqdata";
  10547. oParam.outds = "ds_temprec_rstdata=validrecinfo";
  10548. oParam.async = false;
  10549. tranf_submit(oParam);
  10550. // model.alert("DEBUG : " + model.getValue("/root/temp/valid/validrecinfo/resultCod") );
  10551. }
  10552. }
  10553. /**@desc : 의료급여 정신과 차등수가제 도입관련 퇴원유형 입력 추가 [요청번호 : 8857]
  10554. * @param : void
  10555. * @return : void
  10556. * @authur : 손주연 (2010.01.14)
  10557. * @---------------------------------------------------
  10558. */
  10559. function fChkNPDschChk(){
  10560. frmf_clearParameter ( "SPMMO21100_title1"); //정신과 의료급여 환자
  10561. frmf_clearParameter ( "SPMMO21100_title2"); //정신과 의료급여 환자
  10562. frmf_clearParameter ( "SPMMO21100_resnflag"); //002 정신과 차등수가제도 퇴원유형
  10563. frmf_clearParameter ( "SPMMO21100_hardcdno"); //퇴원유형사유 HARDCODE 번호
  10564. frmf_clearParameter ( "SPMMO21100_pid");
  10565. frmf_clearParameter ( "SPMMO21100_orddd");
  10566. frmf_clearParameter ( "SPMMO21100_cretno");
  10567. frmf_clearParameter ( "SPMMO21100_orddeptcd");
  10568. frmf_clearParameter ( "SPMMO21100_ordtype");
  10569. var npdeptcd = ds_initsrch_inhospappdeptcd.getColumn(0, "trgtcd");
  10570. var npresnyn = appf_getPatientInfoDetail("npresnyn");
  10571. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag") ;
  10572. var insukind = ds_paminfo.getColumn(0, "insukind");
  10573. var dschprcpyn = ds_hidden.getColumn(0, "dschprcpyn" ); //퇴원처방 발행 여부
  10574. //로그인한 의사의 근무지부서코드가 정신과이고 의료급여 정신과 환자의 퇴원처방 존재시 입퇴원 유형 사유 입력
  10575. if ( ds_root.getColumn(0, "addprcp" ) != "Y" &&
  10576. ds_paminfo.getColumn(0, "orddeptcd" ) == npdeptcd && sysf_getUserInfo("dutplcecd") == npdeptcd &&
  10577. prcpgenrflag == "I" && ( insukind == "21" || insukind == "22" ) && dschprcpyn == "Y"
  10578. ) {
  10579. frmf_setParameter ( "SPMMO21100_pid" , ds_paminfo.getColumn(0, "pid"));
  10580. frmf_setParameter ( "SPMMO21100_orddd" , ds_paminfo.getColumn(0, "indd"));
  10581. frmf_setParameter ( "SPMMO21100_cretno" , ds_paminfo.getColumn(0, "cretno"));
  10582. frmf_setParameter ( "SPMMO21100_orddeptcd" , ds_paminfo.getColumn(0, "orddeptcd"));
  10583. frmf_setParameter ( "SPMMO21100_ordtype" , prcpgenrflag);
  10584. if( npresnyn != "002" && npresnyn != "003" ) {
  10585. frmf_setParameter ( "SPMMO21100_title1" , "퇴원유형입력");
  10586. frmf_setParameter ( "SPMMO21100_title2" , "정신과 차등수가제도 특정내역"); //정신과 의료급여 환자
  10587. frmf_setParameter ( "SPMMO21100_resnflag" , "002"); //002 정신과 차등수가제도 퇴원유형
  10588. frmf_setParameter ( "SPMMO21100_hardcdno" , "175"); //퇴원유형사유 HARDCODE 번호
  10589. frmf_modal("SPMMO21100", "SPMMO21100", null, false, 510, 427, null, null, null, null, null, null, "P");
  10590. }
  10591. if( appf_getPatientInfoDetail("npresnyn") == "002" ){
  10592. frmf_setParameter ( "SPMMO21100_title1" , "퇴원후거주시입력");
  10593. frmf_setParameter ( "SPMMO21100_title2" , "정신과 차등수가제도 특정내역"); //정신과 의료급여 환자
  10594. frmf_setParameter ( "SPMMO21100_resnflag" , "003"); //002 정신과 차등수가제도 퇴원유형
  10595. frmf_setParameter ( "SPMMO21100_hardcdno" , "176"); //퇴원유형사유 HARDCODE 번호
  10596. frmf_modal("SPMMO21100", "SPMMO21100", null, false, 510, 427, null, null, null, null, null, null, "P");
  10597. }
  10598. }
  10599. }
  10600. /**@desc : 자가보유약 조회 (submit 발생)
  10601. * @param :
  10602. * @return :
  10603. * @author : 이윤정
  10604. * @---------------------------------------------------
  10605. */
  10606. function fSelfHldPrcpSub() {
  10607. if (ds_initsrch_selfholdchk.getColumn(0, "trgtcd") == "Y"){
  10608. ds_hidden_selfhld.clearData();
  10609. ds_selfholdprcp_prcplist.clearData();
  10610. var selfioflag = ds_paminfo.getColumn(0, "ioflag" );
  10611. if (selfioflag == "I" || selfioflag== "E" || selfioflag== "D") {
  10612. ds_hidden_selfhld.addRow();
  10613. ds_hidden_selfhld.setColumn(0, "cond99", "getSelfHldPrcpInfo");
  10614. ds_hidden_selfhld.setColumn(0, "cond1", ds_paminfo.getColumn(0, "pid"));
  10615. ds_hidden_selfhld.setColumn(0, "cond2", selfioflag);
  10616. ds_hidden_selfhld.setColumn(0, "cond3", ds_paminfo.getColumn(0, "indd"));
  10617. ds_hidden_selfhld.setColumn(0, "selfopenyn", "Y");
  10618. var oParam = {};
  10619. oParam.id = "TRMMO14903";
  10620. oParam.service = "prcpbaseapp.PrmsPrcpMngt";
  10621. oParam.method = "reqGetPrmsPrcpDetlSetList";
  10622. oParam.inds = "req=ds_hidden_selfhld";
  10623. oParam.outds = "ds_selfholdprcp_prcplist=prcplist";
  10624. oParam.async = false;
  10625. tranf_submit(oParam);
  10626. dsf_setDefaultVal(ds_selfholdprcp_prcplist, "prcpvol:0,prcpvolunitnm:-,prcpqty:0,prcpqtyunitnm:-,prcptims:0,prcpdayno:0,drugmthdspccdnm:-,hosinprcpresncd:00,drugmthdspccd:-,tootfact:-,clinccmtcnts:-,hsctdelivepos:0,etcprcpflag:-,druglnkno:0,dnorreqlnkno:0,subcretno:0,drgacptflag:-,tempcol1:000");
  10627. }
  10628. }
  10629. }
  10630. /**@desc : 자가보유약 조회 (modal 띄우기)
  10631. * @param :
  10632. * @return :
  10633. * @author : 이윤정
  10634. * @---------------------------------------------------
  10635. */
  10636. function fSelfHldPrcpModal() {
  10637. if (ds_initsrch_selfholdchk.getColumn(0, "trgtcd") == "Y"){
  10638. if (!utlf_isNull(ds_selfholdprcp_prcplist.getColumn(0, "header"))){
  10639. var selfyn = sysf_messageBox ("자가보유약이 등록되었습니다. 확인","S001");
  10640. if (selfyn == "6"){
  10641. frmf_setParameter ( "SPMMO19300_prcp", "prcp");
  10642. frmf_setParameter ( "SPMMO19300_selfholdchk", ds_initsrch_selfholdchk.getColumn(0, "trgtcd"));
  10643. var objArg = new Object();
  10644. objArg.arg_ds_send_selfholdprcp_prcplist = ds_selfholdprcp_prcplist;
  10645. frmf_modal("SPMMO19300", "SPMMO19300", objArg, false, 510, 427, null, null, null, null, null, null, "M");
  10646. lf_focusMain ( ds_main_prcplist.rowposition );
  10647. }
  10648. }
  10649. }
  10650. }
  10651. /**@desc : 메인의 우클릭 메뉴 하드코드 조회
  10652. * @
  10653. * @param : ref - reference path
  10654. * rsltref - result reference path
  10655. * hardcd - 하드코드
  10656. * @return :
  10657. * @author : 박유진
  10658. * @---------------------------------------------------
  10659. */
  10660. function fGetRghtClickList(){
  10661. var rMenu = [["omrigtclicklist", "ds_O_MouseR"]
  10662. ,["imrigtclicklist", "ds_I_MouseR"]
  10663. ,["emrigtclicklist", "ds_E_MouseR"]];
  10664. // 현재 이 루틴으로 메뉴 구성되는 것이 아니라 미리 데이터셋에 메뉴가 저장되어 있음
  10665. // "omrigtclicklist", "imrigtclicklist", "emrigtclicklist" 여기에는 데이터 없음
  10666. for(var i = 0; i < 3; i++) {
  10667. var ds_mrigtclicklist = this.objects["ds_initsrch_" + rMenu[i][0]];
  10668. if(!utlf_isNull(ds_mrigtclicklist) && ds_mrigtclicklist.rowcount > 0){
  10669. var ds_MouseR = this.objects[rMenu[i][1]];
  10670. ds_MouseR.clearData();
  10671. for(var j = 0 ; j < ds_mrigtclicklist.rowcount; j++){
  10672. var hardcd = ds_mrigtclicklist.getColumn(j, "trgtcd");
  10673. var hardcdnm = ds_mrigtclicklist.getColumn(j, "trgtcdnm");
  10674. if(hardcd=="-"|| hardcd==" ") hardcd="";
  10675. if(hardcdnm=="-"|| hardcdnm==" ") hardcdnm="";
  10676. ds_MouseR.addRow();
  10677. ds_MouseR.setColumn(j, "func", hardcd);
  10678. ds_MouseR.setColumn(j, "label", hardcdnm);
  10679. }
  10680. }
  10681. }
  10682. }
  10683. /**@desc : 처방시 미비기록 유무 확인(message)
  10684. * @param : void
  10685. * @return : true, false
  10686. * @author : 김소정
  10687. * @---------------------------------------------------
  10688. */
  10689. function fValidRecInfoMsg(){
  10690. var rstcod = ds_temprec_rstdata.getColumn(0, "resultCod");
  10691. if ( !utlf_isNull(rstcod) && rstcod != "0" ) {
  10692. var rstmsg = ds_temprec_rstdata.getColumn(0, "resultMsg");
  10693. sysf_messageBox (rstmsg, "E");
  10694. return false;
  10695. }
  10696. //처방 속도개선을 위한 시간 체크 set 20101027 LYJ
  10697. try {
  10698. var SMMMO00100_E = new Date();
  10699. var ordPatObj = frmf_findPopup("SMMMO04100");
  10700. var SMMMO04100_chk = ordPatObj.frmf_getParameter("SMMMO04100_chk");
  10701. if(!utlf_isNull(ordPatObj) && SMMMO04100_chk == "Y"){
  10702. ordPatObj.frmf_setParameter("SMMMO00100_E",SMMMO00100_E.getTime());
  10703. }
  10704. } catch(e) {
  10705. }
  10706. return true;
  10707. }
  10708. function fPrintDyeFrm(srchRow, prcpcd){
  10709. //*************************** 조영제 출력팝업 **********************************//
  10710. var ocrprnt = lf_getDsValue(ds_initsrch_prcpetccnts, 0, "ocrprnt");
  10711. var iFind = ocrprnt.indexOf("DYE"+ prcpcd);
  10712. if ( iFind >= 0) {
  10713. if( frmf_getParameter("SPAER01900_popupYN") != "Y" ){ //조영제 부작용관리 팝업 한번만 뜨도록 요청함에 따라 팝업호출여부 체크 (2010.07.16 JJE)
  10714. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  10715. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ) {
  10716. var orddd = ds_paminfo.getColumn(0, "orddd");
  10717. } else {
  10718. var orddd = ds_paminfo.getColumn(0, "indd");
  10719. }
  10720. ds_hidden_ocrprint_calcscor.setColumn(0, "pid", ds_paminfo.getColumn(0, "pid"));
  10721. ds_hidden_ocrprint_calcscor.setColumn(0, "cretno", ds_paminfo.getColumn(0, "cretno" ));
  10722. ds_hidden_ocrprint_calcscor.setColumn(0, "orddd", orddd );
  10723. ds_hidden_ocrprint_calcscor.setColumn(0, "ordtype", prcpgenrflag);
  10724. ds_hidden_ocrprint_calcscor.setColumn(0, "calcscorcd", prcpcd );
  10725. var mon = sysf_getCurrentMonitorNumber();
  10726. var xpt = this.getOwnerFrame().position.x + 300;
  10727. var ypt = this.getOwnerFrame().position.y + 100;
  10728. var objArg = new Object();
  10729. objArg.arg_ds_hidden_ocrprint_calcscor = ds_hidden_ocrprint_calcscor;
  10730. frmf_modal("SPAER01900", "SPAER01900", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  10731. frmf_setParameter("SPAER01900_popupYN", "Y" );
  10732. }
  10733. if ( !utlf_isNull(frmf_getParameter("SPAER01900_prcpcd" ))) {
  10734. var addprcpcd = frmf_getParameter("SPAER01900_prcpcd" );
  10735. var addprcpdd = ds_init.getColumn(0, "prcpdd");
  10736. var addinsukind = ds_paminfo.getColumn(0, "insukind");
  10737. ds_main_prcplist.deleteRow(srchRow);
  10738. //clearParameter("SPAER01900_prcpcd" );
  10739. //멀티 search 가능함
  10740. var sRef = dsf_createDsRow("ds_send_addsetprcp", [{col:"cond1", type:"string", size:256, val:addprcpcd},
  10741. {col:"cond3", type:"string", size:256, val:addprcpdd},
  10742. {col:"cond4", type:"string", size:256, val:addinsukind},
  10743. {col:"srchkind", type:"string", size:256, val:"ANST"}]);
  10744. var oParam = {};
  10745. oParam.id = "TRMMO00207";
  10746. oParam.service = "prcpmngtapp.PrcpMngt";
  10747. oParam.method = "reqGetPrcpMultiSrchInfo";
  10748. oParam.inds = "req=" + sRef;
  10749. oParam.outds = "ds_addsetprcp_prcplist=prcplist";
  10750. oParam.async = false;
  10751. oParam.callback = "cf_TRMMO00207";
  10752. tranf_submit(oParam);
  10753. if(arErrorCode.pop("TRMMO00207") > -1) {
  10754. dsf_setDefaultVal(ds_addsetprcp_prcplist, "prcpvol:0,prcpvolunitnm:-,prcpqty:0,prcpqtyunitnm:-,prcptims:0,prcpdayno:0,drugmthdspccdnm:-,drugmthdspccd:-,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,drgacptflag:-");
  10755. ds_addsetprcp_prcplist.setColumn(0, "testreqlnkno", "216");
  10756. serPrcpSrchRow = lf_addPrcpDetl ( "main" , "ds_addsetprcp_prcplist" , "ds_main_prcplist" , 0, srchRow, "00" );
  10757. if (serPrcpSrchRow == 0) srchRow = 0;
  10758. }
  10759. dsf_deleteDs("ds_send_addsetprcp");
  10760. }else if ( frmf_getParameter("SPAER01900_lnkno" ) == "216" ) {
  10761. ds_main_prcplist.setColumn(srchRow, "testreqlnkno", "216");
  10762. } else {
  10763. ds_main_prcplist.setColumn(srchRow, "testreqlnkno", "DYENO");
  10764. }
  10765. }
  10766. }
  10767. function cf_TRMMO00207(sSvcId, nErrorCode, sErrorMsg) {
  10768. arErrorCode.push(sSvcId, nErrorCode);
  10769. }
  10770. /**@desc : @@@ 중증/ 희귀난치 요율팝업
  10771. * @param : void
  10772. * @return : void
  10773. * @author : 이윤정
  10774. * @---------------------------------------------------
  10775. */
  10776. function fEstmSpclFrm(){
  10777. if ( ds_prcpetcinfo_saveestmspclcs.getColumn(0, "estmflag") == "Y" ) {
  10778. if ( ds_prcpetcinfo_saveestmspclcs.getColumn(0, "spclcd") == "-" ) { // 기존 적용 산정특례 취소
  10779. ds_prcpetcinfo_saveestmspclcs.setColumn(0, "estmyn", "Y");
  10780. sysf_messageBox(ds_prcpetcinfo_saveestmspclcs.getColumn(0, "estmmsg"), "I");
  10781. } else { // 산정특례 적용
  10782. if ( ds_prcpetcinfo_saveestmspclcs.getColumn(0, "estmmsg") == "" ) { // msg없으면 띄우지 않고처리한다. (진료비 정액대상환자)
  10783. ds_prcpetcinfo_saveestmspclcs.setColumn(0, "estmyn", "Y");
  10784. } else if ( ds_prcpetcinfo_saveestmspclcs.getColumn(0, "spclcd") == 'V252' ) {
  10785. ds_prcpetcinfo_saveestmspclcs.setColumn(0, "estmyn", "Y");
  10786. sysf_messageBox(ds_prcpetcinfo_saveestmspclcs.getColumn(0, "estmmsg"), "I");
  10787. } else if(ds_prcpetcinfo_saveestmspclcs.getColumn(0, "estmexistyn") != "Y") {
  10788. ds_prcpetcinfo_saveestmspclcs.setColumn(0, "estmyn", "Y");
  10789. ds_prcpetcinfo_saveestmspclcs.setColumn(0, "spclcd", "-");
  10790. if( ds_prcpetcinfo_saveestmspclcs.getColumn(0, "estmkind") == "11"
  10791. || ds_prcpetcinfo_saveestmspclcs.getColumn(0, "estmkind") == "51"
  10792. || ds_prcpetcinfo_saveestmspclcs.getColumn(0, "estmkind") == "62" )
  10793. ds_prcpetcinfo_saveestmspclcs.setColumn(0, "estmkind", "10"); // 가정간호
  10794. else {
  10795. ds_prcpetcinfo_saveestmspclcs.setColumn(0, "estmkind", "00"); // 정상
  10796. }
  10797. } else {
  10798. if (sysf_messageBox(ds_prcpetcinfo_saveestmspclcs.getColumn(0, "estmmsg" ), "Q" ) == "6" ) {
  10799. ds_prcpetcinfo_saveestmspclcs.setColumn(0, "estmyn", "Y");
  10800. }else {
  10801. ds_prcpetcinfo_saveestmspclcs.setColumn(0, "estmyn", "N");
  10802. ds_prcpetcinfo_saveestmspclcs.setColumn(0, "spclcd", "-"); //by sonjy 추가. 아니오 선택시 산정특례기호 update되는 문제 때문.
  10803. sysf_messageBox ( "이번 진료는 산정특례와 관계가 없다고 선택하셨습니다. 관련 진단명을 삭제하여 주시기 바랍니다.", "E" ); //수정중
  10804. }
  10805. }
  10806. }
  10807. } else if( ds_prcpetcinfo_saveestmspclcs.getColumn(0, "estmflag") == "F" ) { // 중증화상 대상이 T31.x상병이 필요한 경우에 메세지만 보여준다.
  10808. ds_prcpetcinfo_saveestmspclcs.setColumn(0, "estmflag", "Y");
  10809. ds_prcpetcinfo_saveestmspclcs.setColumn(0, "estmyn", "Y");
  10810. sysf_messageBox(ds_prcpetcinfo_saveestmspclcs.getColumn(0, "estmmsg"), "I") ;
  10811. } else if( ds_prcpetcinfo_saveestmspclcs.getColumn(0, "estmflag") == "T" ) {
  10812. ds_prcpetcinfo_saveestmspclcs.setColumn(0, "estmyn", "N");
  10813. ds_prcpetcinfo_saveestmspclcs.setColumn(0, "spclcd", "-"); //by sonjy 추가. 아니오 선택시 산정특례기호 update되는 문제 때문.
  10814. } else if( ds_prcpetcinfo_saveestmspclcs.getColumn(0, "estmflag") == "M" ) { // 메세지만 팝업 후 리턴함.
  10815. sysf_messageBox(ds_prcpetcinfo_saveestmspclcs.getColumn(0, "estmmsg"), "I");
  10816. return;
  10817. } else { // 그외의 경우 estmflag값이 처리 할수 없는 값
  10818. return;
  10819. }
  10820. var oParam = {};
  10821. oParam.id = "TXMMO00105";
  10822. oParam.service = "prcpmngtapp.PrcpMngt";
  10823. oParam.method = "reqExeSavePrcpEtcInfo";
  10824. oParam.inds = "saveestmspclcs=ds_prcpetcinfo_saveestmspclcs";
  10825. oParam.async = false;
  10826. oParam.callback = "cf_TXMMO00105";
  10827. tranf_submit(oParam);
  10828. if(arErrorCode.pop("TXMMO00105") < 0) {
  10829. return false;
  10830. }
  10831. }
  10832. function cf_TXMMO00105(sSvcId, nErrorCode, sErrorMsg) {
  10833. arErrorCode.push(sSvcId, nErrorCode);
  10834. }
  10835. /**@desc : @@@ 레진상 완전틀니 / 임플란트 관련 요율 팝업
  10836. * @param : void
  10837. * @return : void
  10838. * @author : 엄영만 2012.07.04
  10839. * @---------------------------------------------------
  10840. */
  10841. function fResinDentureFrm(){
  10842. var sCheckResin = ""; // (01:노인틀니 신청서 작성, 02:노인틀니 신규 적용, 03:노인틀니 기존 적용 취소, 11:임플란트 신청서 작성, 12:임플란트 신규 적용, 13:임플란트 기존 적용 취소)
  10843. var sEstmMsg = ""; // 적용메세지
  10844. var srcNodeList = ds_prcpetcinfo_saveresindenture;
  10845. for ( var i = 0; i < ds_prcpetcinfo_saveresindenture.rowcount; i++ ) {
  10846. sCheckResin = ds_prcpetcinfo_saveresindenture.getColumn(i, "checkresin");
  10847. sEstmMsg = ds_prcpetcinfo_saveresindenture.getColumn(i, "estmmsg");
  10848. if (sCheckResin == "01") { // 01:노인틀니 신청서 작성
  10849. lf_prcpModal ( "SPMMO25000", 400, 100 );
  10850. }else if (sCheckResin == "11") { // 01:임플란트 신청서 작성
  10851. lf_prcpModal ( "SPMMO25100", 400, 100 );
  10852. } else if(sCheckResin == "02" || sCheckResin == "03" || sCheckResin == "12" || sCheckResin == "13") { // 02:노인틀니 신규 적용, 03:노인틀니 기존 적용 취소, 12:임플란트 신규 적용, 13:임플란트 기존 적용 취소
  10853. sysf_messageBox(sEstmMsg, "I" ); // 알림 메세지 팝업.
  10854. var oParam = {};
  10855. oParam.id = "TXMMO00105";
  10856. oParam.service = "prcpmngtapp.PrcpMngt";
  10857. oParam.method = "reqExeSavePrcpEtcInfo";
  10858. oParam.inds = "saveestmspclcs=ds_prcpetcinfo_saveresindenture";
  10859. oParam.async = false;
  10860. oParam.callback = "cf_TXMMO00105";
  10861. tranf_submit(oParam);
  10862. if(arErrorCode.pop("TXMMO00105") < 0) {
  10863. return false;
  10864. }
  10865. } else { // 처리할수 없는 유형
  10866. return true;
  10867. }
  10868. }
  10869. }
  10870. /**@desc : 환자의 가야할 곳을 출력한다.
  10871. * @return : void
  10872. * @authur : 김영학 2011. 01. 05
  10873. */
  10874. function fPrltPatTogoPlceList(sInstCd, sPid, sOrdDd, sCretNo, sPrintYn) {
  10875. var sNewLogYn = lf_getHardCDList("Y", 332, 3); // 신규 가셔야 할곳 적용 여부 (비동기 방식 적용)
  10876. var sAddPrcp = "N"; // 시행부서 처방 여부
  10877. var sScreenID = frmf_getScreenID();
  10878. if ( sNewLogYn == "Y" && sScreenID == "SMMMO00100") { // 시행부서 처방일경우 상단정보가 없는경우도 있어서 기존 로직 사용
  10879. // 출력전용 팝업 화면에서 처리
  10880. // '처방'화면에 종속적으로 처리할 경우 - 처방화면이 닫히면 함께 닫힘.
  10881. //open("SPMMO00110", 1, 1, 1, "SPMMO00110", "", "", "width:1px; height:1px;", false);
  10882. // '처방'화면에 독립적으로 처리할 경우 - 처방화면이 닫혀도 닫히지 않음.
  10883. var sysMsgObj = frmf_getViewer("sysMessage");
  10884. if (!utlf_isNull(sysMsgObj)) {
  10885. // dsf_createDs("ds_paminfo_clone");
  10886. // ds_paminfo_clone.copyData(ds_paminfo);
  10887. //
  10888. // var objArg = new Object();
  10889. // objArg.arg_ds_paminfo = ds_paminfo_clone;
  10890. sysMsgObj.frmf_modal("SPMMO00110", "SPMMO00110", null, false, 2, null, null, null, null, null, null, null, "M");
  10891. } else {
  10892. sysf_messageBox("[가셔야할 곳] 출력화면 오픈에 문제가 발생했습니다.","E000");
  10893. }
  10894. } else { // 기존 가야할곳 출력 (시행부서 처방에서 사용)
  10895. if(sScreenID == "SMMMO00200") { // 시행부서 처방화면
  10896. sAddPrcp = "Y";
  10897. sInstCd = ds_paminfo.getColumn(0, "instcd");
  10898. sPid = ds_paminfo.getColumn(0, "pid");
  10899. sOrdDd = ds_paminfo.getColumn(0, "orddd");
  10900. sCretNo = ds_paminfo.getColumn(0, "cretno");
  10901. }
  10902. dsf_createDs("ds_hidden_tempsend");
  10903. ds_hidden_tempsend.addColumn("instcd", "string");
  10904. ds_hidden_tempsend.addColumn("pid", "string");
  10905. ds_hidden_tempsend.addColumn("orddd", "string");
  10906. ds_hidden_tempsend.addColumn("cretno", "string");
  10907. ds_hidden_tempsend.addColumn("userinstcd", "string");
  10908. ds_hidden_tempsend.addColumn("sessuserid", "string");
  10909. ds_hidden_tempsend.addColumn("sessinstcd", "string");
  10910. ds_hidden_tempsend.addColumn("addprcp", "string");
  10911. ds_hidden_tempsend.addRow();
  10912. ds_hidden_tempsend.setColumn(0, "instcd" , sInstCd);
  10913. ds_hidden_tempsend.setColumn(0, "pid" , sPid);
  10914. ds_hidden_tempsend.setColumn(0, "orddd" , sOrdDd);
  10915. ds_hidden_tempsend.setColumn(0, "cretno" , sCretNo);
  10916. ds_hidden_tempsend.setColumn(0, "userinstcd" , sInstCd); // 원무 무인수납 여부 체크 변수
  10917. ds_hidden_tempsend.setColumn(0, "sessuserid" , getUserInfo("userid"));
  10918. ds_hidden_tempsend.setColumn(0, "sessinstcd" , sInstCd);
  10919. ds_hidden_tempsend.setColumn(0, "addprcp" , sAddPrcp);
  10920. if(lf_getHardCDList("Y", 338, 3) == "N"){ // 수가 계산 여부
  10921. ds_hidden_tempsend.setColumn(0, "checkyn", "Y"); // 수가계산하지 않음. 2012.02.10 이동식 요청
  10922. } else {
  10923. ds_hidden_tempsend.setColumn(0, "checkyn", "N"); // 수가계산 함. 2012.02.10 이동식 요청
  10924. }
  10925. dsf_setDefaultVal(ds_hidden_tempsend, "checkyn:N,addprcp:N,gubun:Y");
  10926. dsf_createDs("ds_hidden_pattoplace_patinfo");
  10927. dsf_createDs("ds_hidden_pattoplace_togolist");
  10928. var oParam = {};
  10929. oParam.id = "TRMMO00141";
  10930. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  10931. oParam.method = "reqGetPatWhereToPlceList";
  10932. oParam.inds = "req=ds_hidden_tempsend";
  10933. oParam.outds = "ds_hidden_pattoplace_patinfo=patinfo ds_hidden_pattoplace_togolist=togolist";
  10934. oParam.async = false;
  10935. oParam.callback = "cf_TRMMO00141";
  10936. tranf_submit(oParam);
  10937. if(arErrorCode.pop("TRMMO00141") > -1) { // 가셔야할 곳 출력위한 리스트 조회
  10938. if(sPrintYn == "N") {
  10939. return ds_hidden_pattoplace_patinfo.getColumn(0, "rcptpossynmsg");
  10940. } else {
  10941. var objDOM = rptf_createDOM(); // DOM 객체 설정
  10942. rptf_setNodeListToDOM(objDOM, "/root/hidden/pattoplace/patinfo", ds_hidden_pattoplace_patinfo); // 데이터셋 1
  10943. rptf_setNodeListToDOM(objDOM, "/root/hidden/pattoplace/togolist", ds_hidden_pattoplace_togolist); // 데이터셋 1
  10944. var objParam = new Object();
  10945. objParam.xml_data_XML1 = objDOM.documentElement.source; // 최상의노드 XML 스트링 추출
  10946. var option = "open=1;save=1;directprint=0;print=1;zoom=0;callback=cbf_rpt_onFinishPrintXML";
  10947. rptf_exeReportPreview30(["RPMMO00103"],[objParam], option);
  10948. }
  10949. }
  10950. }
  10951. }
  10952. function cf_TRMMO00141(sSvcId, nErrorCode, sErrorMsg) {
  10953. arErrorCode.push(sSvcId, nErrorCode);
  10954. }
  10955. /**@desc : 부분선택진료 동의서를 출력한다.
  10956. * @return : void
  10957. * @authur : 김영학 2011. 01. 05
  10958. * 2011.10.01 고시적용으로 수정함
  10959. */
  10960. function fPrltPartSpclDrList() {
  10961. var sNewLogic = ds_prcpsave_rtc_codeinfo.lookup("hardcdno", '430', "trgtcd"); // 처방 저장 신규로직 적용여부
  10962. if(sNewLogic == "Y") {
  10963. fPrltPartSpclDrList_new();
  10964. } else {
  10965. fPrltPartSpclDrList_old();
  10966. }
  10967. }
  10968. function fPrltPartSpclDrList_new() {
  10969. if (ds_result_specconsent.rowcount > 0 ) {
  10970. dsf_createDs("ds_hidden_specorderlist");
  10971. var sFormCd = ds_result_specconsent.getColumn(0, "formcd"); // 선택진료 동의서 서식코드
  10972. if (ds_result_specconsent.getColumn(0, "printcnt") > "0") { // 칠곡만 확인 메세지 팝업 하도록 수정. 2012.10.17 엄영만
  10973. sysf_messageBox ("제출확인 되지 않은 선택진료신청서가 존재합니다.\n\n선택진료신청서를 출력 합니다.\n\n ☎ 원무팀(2066)", "I" );
  10974. }
  10975. ds_hidden_specorderlist.copyData(ds_result_specconsent);
  10976. dsf_createDs("ds_temp_specocrinfo_ptbs");
  10977. dsf_createDs("ds_temp_specocrinfo_specocrlist");
  10978. var sCurrentDate = utlf_getCurrentDate();
  10979. var sCurrentTm = utlf_getCurrentTime();
  10980. var sOrdDrId = "";
  10981. var sOrddd = "";
  10982. var sIoFlag = "";
  10983. var sOrdtype = ds_patflag.getColumn(0, "prcpgenrflag");
  10984. if (sOrdtype == "O" || sOrdtype == "S") {
  10985. sOrdDrId = ds_paminfo.getColumn(0, "orddrid");
  10986. sOrddd = ds_paminfo.getColumn(0, "orddd");
  10987. sIoFlag = "O"
  10988. } else {
  10989. sOrdDrId = ds_paminfo.getColumn(0, "medispclid");
  10990. sOrddd = ds_paminfo.getColumn(0, "indd");
  10991. sIoFlag = "I"
  10992. }
  10993. var sCretno = ds_paminfo.getColumn(0, "cretno");
  10994. var sOrdDeptCd = ds_paminfo.getColumn(0, "orddeptcd");
  10995. var sDeptHngNm = ds_paminfo.getColumn(0, "orddeptnm");
  10996. var sOrdDrNm = ds_paminfo.getColumn(0, "orddrnm");
  10997. var sSpecOrdYn = ds_paminfo.getColumn(0, "specordyn")
  10998. var sPid = ds_paminfo.getColumn(0, "pid");
  10999. var sHngNm = ds_paminfo.getColumn(0, "hngnm");
  11000. var sRrgstNo = ds_paminfo.getColumn(0, "rrgstno1") + "-" + ds_paminfo.getColumn(0, "rrgstno2") ;
  11001. ds_hidden_specorderlist.addColumn("rrgstno" , "string");
  11002. ds_hidden_specorderlist.addColumn("pid" , "string");
  11003. ds_hidden_specorderlist.addColumn("hngnm" , "string");
  11004. ds_hidden_specorderlist.addColumn("orddd" , "string");
  11005. ds_hidden_specorderlist.addColumn("cretno" , "string");
  11006. ds_hidden_specorderlist.addColumn("ioflag" , "string");
  11007. ds_hidden_specorderlist.addColumn("ordtype" , "string");
  11008. ds_hidden_specorderlist.addColumn("depthngnm" , "string");
  11009. ds_hidden_specorderlist.addColumn("orddrid" , "string");
  11010. ds_hidden_specorderlist.addColumn("orddrnm" , "string");
  11011. ds_hidden_specorderlist.addColumn("specordyn" , "string");
  11012. ds_hidden_specorderlist.addColumn("formcd" , "string");
  11013. ds_hidden_specorderlist.addColumn("usernm" , "string");
  11014. ds_hidden_specorderlist.addColumn("currentdate", "string");
  11015. ds_hidden_specorderlist.addColumn("currenttm" , "string");
  11016. ds_hidden_specorderlist.addColumn("appdd" , "string");
  11017. ds_hidden_specorderlist.addColumn("fromdd" , "string");
  11018. ds_hidden_specorderlist.addColumn("todd" , "string");
  11019. ds_hidden_specorderlist.addColumn("specdeptcd" , "string");
  11020. ds_hidden_specorderlist.addColumn("signflag" , "string");
  11021. ds_hidden_specorderlist.addColumn("returnyn" , "string");
  11022. ds_hidden_specorderlist.setColumn(0, "rrgstno" , sRrgstNo);
  11023. ds_hidden_specorderlist.setColumn(0, "pid" , sPid);
  11024. ds_hidden_specorderlist.setColumn(0, "hngnm" , sHngNm);
  11025. ds_hidden_specorderlist.setColumn(0, "orddd" , sOrddd);
  11026. ds_hidden_specorderlist.setColumn(0, "cretno" , sCretno);
  11027. ds_hidden_specorderlist.setColumn(0, "ioflag" , sIoFlag );
  11028. ds_hidden_specorderlist.setColumn(0, "ordtype" , sOrdtype );
  11029. ds_hidden_specorderlist.setColumn(0, "depthngnm" , sDeptHngNm);
  11030. ds_hidden_specorderlist.setColumn(0, "orddrid" , sOrdDrId);
  11031. ds_hidden_specorderlist.setColumn(0, "orddrnm" , sOrdDrNm);
  11032. ds_hidden_specorderlist.setColumn(0, "specordyn" , sSpecOrdYn);
  11033. ds_hidden_specorderlist.setColumn(0, "formcd" , sFormCd);
  11034. ds_hidden_specorderlist.setColumn(0, "usernm" , getUserInfo("usernm"));
  11035. ds_hidden_specorderlist.setColumn(0, "currentdate", sCurrentDate);
  11036. ds_hidden_specorderlist.setColumn(0, "currenttm" , sCurrentTm);
  11037. ds_hidden_specorderlist.setColumn(0, "appdd" , sCurrentDate);
  11038. ds_hidden_specorderlist.setColumn(0, "fromdd" , sCurrentDate);
  11039. ds_hidden_specorderlist.setColumn(0, "todd" , "99991231");
  11040. ds_hidden_specorderlist.setColumn(0, "specdeptcd" , "-");
  11041. ds_hidden_specorderlist.setColumn(0, "signflag" , "O"); // 서명구분(O:OCR, E:전자서명, B:변경신청(OCR))
  11042. ds_hidden_specorderlist.setColumn(0, "returnyn" , "N");
  11043. var oParam = {};
  11044. oParam.id = "TXMMO00123";
  11045. oParam.service = "patinfomngtapp.SpecAppFrm";
  11046. oParam.method = "reqSetSpifList_ins";
  11047. oParam.inds = "spif=ds_hidden_specorderlist";
  11048. oParam.outds = "ds_temp_specocrinfo_ptbs=ptbs ds_temp_specocrinfo_specocrlist=sasm";
  11049. oParam.async = false;
  11050. oParam.callback = "cf_TXMMO00123";
  11051. tranf_submit(oParam);
  11052. if(arErrorCode.pop("TXMMO00123") > -1) {
  11053. var sSeq = ds_temp_specocrinfo_specocrlist.getColumn(0, "ocrtag");
  11054. var sDeptEngAbbr = ds_initsrch_dscdeptinfo.lookup("deptcd", sOrdDeptCd, "deptengabbr");
  11055. var sMppHonTel = ds_temp_specocrinfo_ptbs.getColumn(0, "mpphontel");
  11056. var sHomeTel = ds_temp_specocrinfo_ptbs.getColumn(0, "hometel");
  11057. var sAddr = ds_temp_specocrinfo_ptbs.getColumn(0, "zipcdaddr");
  11058. var sRgstno1 = ds_temp_specocrinfo_ptbs.getColumn(0, "rrgstno1");
  11059. var sRgstno2 = ds_temp_specocrinfo_ptbs.getColumn(0, "rrgstno2");
  11060. var sRgstno = sRgstno1 +"-"+ sRgstno2.substring(0,1) +"XXXXXX";
  11061. ds_hidden_specorderlist.addColumn("seq" , "string");
  11062. ds_hidden_specorderlist.addColumn("deptengabbr", "string");
  11063. ds_hidden_specorderlist.addColumn("rgstno" , "string");
  11064. ds_hidden_specorderlist.addColumn("mpphontel" , "string");
  11065. ds_hidden_specorderlist.addColumn("hometel" , "string");
  11066. ds_hidden_specorderlist.addColumn("addr" , "string");
  11067. ds_hidden_specorderlist.addColumn("userip" , "string");
  11068. ds_hidden_specorderlist.setColumn(0, "seq" , sSeq );
  11069. ds_hidden_specorderlist.setColumn(0, "deptengabbr", sDeptEngAbbr);
  11070. ds_hidden_specorderlist.setColumn(0, "rgstno" , sRgstno);
  11071. ds_hidden_specorderlist.setColumn(0, "mpphontel" , sMppHonTel);
  11072. ds_hidden_specorderlist.setColumn(0, "hometel" , sHomeTel);
  11073. ds_hidden_specorderlist.setColumn(0, "addr" , sAddr);
  11074. ds_hidden_specorderlist.setColumn(0, "userip" , sysf_getUserInfo("ipaddr"));
  11075. var objDOM = rptf_createDOM(); // DOM 객체 설정
  11076. rptf_setNodeListToDOM(objDOM, "/root/hidden/specorderlist", ds_hidden_specorderlist); // 데이터셋 1
  11077. var objParam = new Object();
  11078. objParam.xml_data_XML1 = objDOM.documentElement.source; // 최상의노드 XML 스트링 추출
  11079. var option = "open=1;save=1;directprint=0;print=1;zoom=0;callback=cbf_rpt_onFinishPrintXML";
  11080. rptf_exeReportPreview30(["RPMMO00104"],[objParam], option);
  11081. }
  11082. }
  11083. }
  11084. function cf_TXMMO00123(sSvcId, nErrorCode, sErrorMsg) {
  11085. arErrorCode.push(sSvcId, nErrorCode);
  11086. }
  11087. function fPrltPartSpclDrList_old() {
  11088. dsf_createDs("ds_hidden_specorderlist");
  11089. var specordtype = ds_paminfo.getColumn(0, "specordtype");
  11090. //진료지원 8개 항목에 대해서 일괄위임일 경우 체크 할 필요가 없다.
  11091. if (specordtype != "B" ) {
  11092. var sInstcd = "";
  11093. var sDrid = "";
  11094. var sOrddd = "";
  11095. var sIoFlag = "";
  11096. var sOrdtype = ds_patflag.getColumn(0, "prcpgenrflag");
  11097. if (sOrdtype == "O" || sOrdtype == "S") {
  11098. sDrid = ds_paminfo.getColumn(0, "orddrid");
  11099. sOrddd = ds_paminfo.getColumn(0, "orddd");
  11100. sIoFlag = "O"
  11101. } else {
  11102. sDrid = ds_paminfo.getColumn(0, "medispclid");
  11103. sOrddd = ds_paminfo.getColumn(0, "indd");
  11104. sIoFlag = "I"
  11105. }
  11106. sInstcd = ds_paminfo.getColumn(0, "instcd");
  11107. sCretno = ds_paminfo.getColumn(0, "cretno");
  11108. sOrddeptcd = ds_paminfo.getColumn(0, "orddeptcd");
  11109. var sPartChoiYn="";
  11110. var sPartChoiYn = lf_getHardCDList("Y",313,3);
  11111. if (specordtype == "N" ) {
  11112. sPartChoiYn = "Y";
  11113. }
  11114. ds_hidden_specorderlist.addColumn("drnm" , "string");
  11115. ds_hidden_specorderlist.addColumn("prcpnm" , "string");
  11116. ds_hidden_specorderlist.addColumn("specdrid" , "string");
  11117. ds_hidden_specorderlist.addColumn("tempcol2" , "string");
  11118. ds_hidden_specorderlist.addColumn("prcpclscd" , "string");
  11119. ds_hidden_specorderlist.addColumn("pid" , "string");
  11120. ds_hidden_specorderlist.addColumn("ioflag" , "string");
  11121. ds_hidden_specorderlist.addColumn("instcd" , "string");
  11122. ds_hidden_specorderlist.addColumn("cretno" , "string");
  11123. ds_hidden_specorderlist.addColumn("orddd" , "string");
  11124. ds_hidden_specorderlist.addColumn("orddeptcd" , "string");
  11125. ds_hidden_specorderlist.addColumn("orddrid" , "string");
  11126. ds_hidden_specorderlist.addColumn("partchoiyn", "string");
  11127. ds_hidden_specorderlist.addColumn("specordyn" , "string");
  11128. var sRow = 0;
  11129. for (var i = 0; i < ds_main_prcplist.rowcount; i++) {
  11130. if (ds_main_prcplist.getColumn(i, "choiordflag") == "Y" //선택진료 체크 된 항목들
  11131. && ds_main_prcplist.getColumn(i, "specdrid") != "-" && ds_main_prcplist.getColumn(i, "specdrid") != "" // 의사가 들어 있는 처방
  11132. && ds_main_prcplist.getColumn(i, "status") != "D") { // 삭제가 아닌 건들에 대해서
  11133. sRow = ds_hidden_specorderlist.addRow();
  11134. ds_hidden_specorderlist.setColumn(sRow, "drnm", ds_main_prcplist.getColumn(i, "specdrnm"));
  11135. ds_hidden_specorderlist.setColumn(sRow, "prcpnm", ds_main_prcplist.getColumn(i, "prcpnm"));
  11136. ds_hidden_specorderlist.setColumn(sRow, "specdrid", ds_main_prcplist.getColumn(i, "specdrid"));
  11137. // 수익분류를 기준으로 진료지원항목의 분류를 조회하기 위해서 추가
  11138. ds_hidden_specorderlist.setColumn(sRow, "tempcol2", ds_main_prcplist.getColumn(i, "tempcol2"));
  11139. ds_hidden_specorderlist.setColumn(sRow, "prcpclscd", ds_main_prcplist.getColumn(i, "prcpclscd"));
  11140. ds_hidden_specorderlist.setColumn(sRow, "pid", ds_paminfo.getColumn(0, "pid"));
  11141. ds_hidden_specorderlist.setColumn(sRow, "ioflag", sIoFlag);
  11142. ds_hidden_specorderlist.setColumn(sRow, "instcd", sInstcd);
  11143. ds_hidden_specorderlist.setColumn(sRow, "cretno", sCretno);
  11144. ds_hidden_specorderlist.setColumn(sRow, "orddd", sOrddd);
  11145. ds_hidden_specorderlist.setColumn(sRow, "orddeptcd", sOrddeptcd);
  11146. ds_hidden_specorderlist.setColumn(sRow, "orddrid", sDrid);
  11147. ds_hidden_specorderlist.setColumn(sRow, "partchoiyn", sPartChoiYn);
  11148. ds_hidden_specorderlist.setColumn(sRow, "specordyn", ds_paminfo.getColumn(0, "specordyn"));
  11149. }
  11150. // 방사선 종양학과 치료 지시처방 관련 추가 2012.10.16 엄영만
  11151. if ( ds_main_prcplist.getColumn(i, "prcpclscd") == "09"
  11152. && ds_main_prcplist.getColumn(i, "tempcol2") == "05|01|00"
  11153. && ds_main_prcplist.getColumn(i, "status") != "D") {
  11154. sRow = ds_hidden_specorderlist.addRow();
  11155. ds_hidden_specorderlist.setColumn(sRow, "drnm", sDrid);
  11156. ds_hidden_specorderlist.setColumn(sRow, "prcpnm", ds_main_prcplist.getColumn(i, "prcpnm"));
  11157. ds_hidden_specorderlist.setColumn(sRow, "specdrid", sDrid);
  11158. // 수익분류를 기준으로 진료지원항목의 분류를 조회하기 위해서 추가
  11159. ds_hidden_specorderlist.setColumn(sRow, "tempcol2", "08|01|00"); // 방사선치료 방사선치료 모의치료
  11160. ds_hidden_specorderlist.setColumn(sRow, "prcpclscd", ds_main_prcplist.getColumn(i, "prcpclscd"));
  11161. ds_hidden_specorderlist.setColumn(sRow, "pid", ds_paminfo.getColumn(0, "pid"));
  11162. ds_hidden_specorderlist.setColumn(sRow, "ioflag", sIoFlag);
  11163. ds_hidden_specorderlist.setColumn(sRow, "instcd", sInstcd);
  11164. ds_hidden_specorderlist.setColumn(sRow, "cretno", sCretno);
  11165. ds_hidden_specorderlist.setColumn(sRow, "orddd", sOrddd);
  11166. ds_hidden_specorderlist.setColumn(sRow, "orddeptcd", sOrddeptcd);
  11167. ds_hidden_specorderlist.setColumn(sRow, "orddrid", sDrid);
  11168. ds_hidden_specorderlist.setColumn(sRow, "partchoiyn", sPartChoiYn);
  11169. ds_hidden_specorderlist.setColumn(sRow, "specordyn", ds_paminfo.getColumn(0, "specordyn"));
  11170. }
  11171. }
  11172. // 내역별로 위임여부를 체크한다.
  11173. if (ds_hidden_specorderlist.rowcount > 0) {
  11174. dsf_createDs("ds_hidden_specorderlist_specorderlist");
  11175. var oParam = {};
  11176. oParam.id = "TRMMO00142";
  11177. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  11178. oParam.method = "reqGetSpclDrPatSignInfo";
  11179. oParam.inds = "req=ds_hidden_specorderlist";
  11180. oParam.outds = "ds_hidden_specorderlist_specorderlist=specorderlist";
  11181. oParam.async = false;
  11182. oParam.callback = "cf_TRMMO00142";
  11183. tranf_submit(oParam);
  11184. if(arErrorCode.pop("TRMMO00142") > -1) {
  11185. if (ds_hidden_specorderlist_specorderlist.rowcount > 0 ) {
  11186. var rrgstno = ds_paminfo.getColumn(0, "rrgstno1") + "-" + ds_paminfo.getColumn(0, "rrgstno2") ;
  11187. var pid = ds_paminfo.getColumn(0, "pid");
  11188. var hngnm = ds_paminfo.getColumn(0, "hngnm");
  11189. ds_hidden_specorderlist.addColumn("rrgstno" , "string");
  11190. ds_hidden_specorderlist.addColumn("pid" , "string");
  11191. ds_hidden_specorderlist.addColumn("hngnm" , "string");
  11192. ds_hidden_specorderlist.addColumn("orddd" , "string");
  11193. ds_hidden_specorderlist.addColumn("cretno" , "string");
  11194. ds_hidden_specorderlist.addColumn("ioflag" , "string");
  11195. ds_hidden_specorderlist.addColumn("ordtype" , "string");
  11196. ds_hidden_specorderlist.addColumn("specordyn" , "string");
  11197. ds_hidden_specorderlist.addColumn("formcd" , "string");
  11198. ds_hidden_specorderlist.addColumn("fromdd" , "string");
  11199. ds_hidden_specorderlist.addColumn("todd" , "string");
  11200. ds_hidden_specorderlist.addColumn("specdeptcd", "string");
  11201. ds_hidden_specorderlist.addColumn("appdd" , "string");
  11202. ds_hidden_specorderlist.addColumn("signflag" , "string");
  11203. ds_hidden_specorderlist.addColumn("returnyn" , "string");
  11204. ds_hidden_specorderlist.setColumn(0, "rrgstno" , rrgstno);
  11205. ds_hidden_specorderlist.setColumn(0, "pid" , pid);
  11206. ds_hidden_specorderlist.setColumn(0, "hngnm" , hngnm);
  11207. ds_hidden_specorderlist.setColumn(0, "orddd" , sOrddd);
  11208. ds_hidden_specorderlist.setColumn(0, "cretno" , sCretno);
  11209. ds_hidden_specorderlist.setColumn(0, "ioflag" , sIoFlag );
  11210. ds_hidden_specorderlist.setColumn(0, "ordtype" , sOrdtype );
  11211. ds_hidden_specorderlist.setColumn(0, "specordyn" , ds_paminfo.getColumn(0, "specordyn") );
  11212. ds_hidden_specorderlist.setColumn(0, "formcd" , lf_getHardCDList("Y", 305, 3));
  11213. ds_hidden_specorderlist.setColumn(0, "fromdd" , utlf_getCurrentDate());
  11214. ds_hidden_specorderlist.setColumn(0, "todd" , "99991231");
  11215. ds_hidden_specorderlist.setColumn(0, "specdeptcd", "-");
  11216. ds_hidden_specorderlist.setColumn(0, "appdd" , utlf_getCurrentDate());
  11217. ds_hidden_specorderlist.setColumn(0, "signflag" , "O");
  11218. ds_hidden_specorderlist.setColumn(0, "returnyn" , "N");
  11219. dsf_createDs("ds_temp_specocrinfo_ptbs");
  11220. dsf_createDs("ds_temp_specocrinfo_specocrlist");
  11221. var oParam = {};
  11222. oParam.id = "TXMMO00123";
  11223. oParam.service = "patinfomngtapp.SpecAppFrm";
  11224. oParam.method = "reqSetSpifList_ins";
  11225. oParam.inds = "spif=ds_hidden_specorderlist";
  11226. oParam.outds = "ds_temp_specocrinfo_ptbs=ptbs ds_temp_specocrinfo_specocrlist=sasm";
  11227. oParam.async = false;
  11228. oParam.callback = "cf_TXMMO00123";
  11229. tranf_submit(oParam);
  11230. if(arErrorCode.pop("TXMMO00123") > -1) {
  11231. if (sInstcd == "032" && ds_hidden_specorderlist_specorderlist.getColumn(0, "printcnt") > "0") { // 칠곡만 확인 메세지 팝업 하도록 수정. 2012.10.17 엄영만
  11232. sysf_messageBox ("제출확인 되지 않은 선택진료신청서가 존재합니다.\n\n선택진료신청서를 출력 합니다.\n\n ☎ 원무팀(2066)", "I" );
  11233. }
  11234. var seq = ds_temp_specocrinfo_specocrlist.getColumn(0, "ocrtag");
  11235. var orddeptcd = ds_temp_specocrinfo_specocrlist.getColumn(0, "orddeptcd");
  11236. var deptengabbr = ds_initsrch_dscdeptinfo.lookup("deptcd", orddeptcd, "deptengabbr");
  11237. var depthngnm = ds_paminfo.getColumn(0, "orddeptnm");
  11238. var rgstno1 = ds_temp_specocrinfo_ptbs.getColumn(0, "rrgstno1");
  11239. var rgstno2 = ds_temp_specocrinfo_ptbs.getColumn(0, "rrgstno2");
  11240. var rgstno = rgstno1 +"-"+ rgstno2.substring(0,1) +"XXXXXX";
  11241. var orddrid = ds_temp_specocrinfo_specocrlist.getColumn(0, "orddrid");
  11242. //var formfromdt = model.getValue("/root/temp/specocrinfo/specocrlist[1]/formfromdt");
  11243. var orddrid = ds_temp_specocrinfo_specocrlist.getColumn(0, "orddrid");
  11244. var orddrnm = ds_paminfo.getColumn(0, "orddrnm");
  11245. //var orddd = model.getValue("/root/temp/specocrinfo/specocrlist[1]/orddd");
  11246. var mpphontel = ds_temp_specocrinfo_ptbs.getColumn(0, "mpphontel");
  11247. var hometel = ds_temp_specocrinfo_ptbs.getColumn(0, "hometel");
  11248. var currentdate = utlf_getCurrentDate();
  11249. var currenttm = utlf_getCurrentTime();
  11250. var addr = ds_temp_specocrinfo_ptbs.getColumn(0, "zipcdaddr");
  11251. var usernm = sysf_getUserInfo("usernm");
  11252. ds_hidden_specorderlist.addColumn("seq" , "string");
  11253. ds_hidden_specorderlist.addColumn("deptengabbr", "string");
  11254. ds_hidden_specorderlist.addColumn("rgstno" , "string");
  11255. ds_hidden_specorderlist.addColumn("depthngnm" , "string");
  11256. ds_hidden_specorderlist.addColumn("orddrid" , "string");
  11257. ds_hidden_specorderlist.addColumn("orddrnm" , "string");
  11258. ds_hidden_specorderlist.addColumn("mpphontel" , "string");
  11259. ds_hidden_specorderlist.addColumn("hometel" , "string");
  11260. ds_hidden_specorderlist.addColumn("currentdate", "string");
  11261. ds_hidden_specorderlist.addColumn("currenttm" , "string");
  11262. ds_hidden_specorderlist.addColumn("addr" , "string");
  11263. ds_hidden_specorderlist.addColumn("usernm" , "string");
  11264. ds_hidden_specorderlist.addColumn("specordyn" , "string");
  11265. ds_hidden_specorderlist.addColumn("userip" , "string");
  11266. ds_hidden_specorderlist.setColumn(0, "seq" , seq );
  11267. ds_hidden_specorderlist.setColumn(0, "deptengabbr" , deptengabbr );
  11268. ds_hidden_specorderlist.setColumn(0, "rgstno" , rgstno );
  11269. ds_hidden_specorderlist.setColumn(0, "depthngnm" , depthngnm );
  11270. ds_hidden_specorderlist.setColumn(0, "orddrid" , orddrid );
  11271. //model.makeValue("/root/hidden/specorderlist/hngnm" , hngnm );
  11272. //model.makeValue("/root/hidden/specorderlist/formfromdt" , formfromdt );
  11273. //model.makeValue("/root/hidden/specorderlist/formcd" , formcd );
  11274. ds_hidden_specorderlist.setColumn(0, "orddrnm" , orddrnm );
  11275. //model.makeValue("/root/hidden/specorderlist/orddd" , orddd );
  11276. ds_hidden_specorderlist.setColumn(0, "mpphontel" , mpphontel );
  11277. ds_hidden_specorderlist.setColumn(0, "hometel" , hometel );
  11278. ds_hidden_specorderlist.setColumn(0, "currentdate" , currentdate );
  11279. ds_hidden_specorderlist.setColumn(0, "currenttm" , currenttm );
  11280. ds_hidden_specorderlist.setColumn(0, "addr" , addr );
  11281. ds_hidden_specorderlist.setColumn(0, "usernm" , usernm );
  11282. ds_hidden_specorderlist.setColumn(0, "specordyn" , ds_paminfo.getColumn(0, "specordyn") );
  11283. ds_hidden_specorderlist.setColumn(0, "userip" , sysf_getUserInfo("ipaddr"));
  11284. var objDOM = rptf_createDOM(); // DOM 객체 설정
  11285. rptf_setNodeListToDOM(objDOM, "/root/hidden/specorderlist", ds_hidden_specorderlist); // 데이터셋 1
  11286. var objParam = new Object();
  11287. objParam.xml_data_XML1 = objDOM.documentElement.source; // 최상의노드 XML 스트링 추출
  11288. var option = "open=1;save=1;directprint=0;print=1;zoom=0;callback=cbf_rpt_onFinishPrintXML";
  11289. rptf_exeReportPreview30(["RPMMO00104"],[objParam], option);
  11290. }
  11291. /*
  11292. if (submit("TRMMO00140") == true) {
  11293. if (sInstcd == "032" && model.getValue("/root/hidden/specorderlist/specorderlist/printcnt") > "0") { // 칠곡만 확인 메세지 팝업 하도록 수정. 2012.10.17 엄영만
  11294. messageBox ("제출확인 되지 않은 선택진료신청서가 존재합니다.\n\n선택진료신청서를 출력 합니다.\n\n ☎ 원무팀(2066)", "I" );
  11295. }
  11296. seq = model.getValue("/root/temp/specocrinfo/specocrlist/seq");
  11297. deptengabbr = model.getValue("/root/temp/specocrinfo/specocrlist/deptengabbr");
  11298. rgstno = model.getValue("/root/temp/specocrinfo/specocrlist/rgstno");
  11299. depthngnm = model.getValue("/root/temp/specocrinfo/specocrlist/depthngnm");
  11300. orddrid = model.getValue("/root/temp/specocrinfo/specocrlist/orddrid");
  11301. hngnm = model.getValue("/root/temp/specocrinfo/specocrlist/hngnm");
  11302. formfromdt = model.getValue("/root/temp/specocrinfo/specocrlist/formfromdt");
  11303. formcd = model.getValue("/root/temp/specocrinfo/specocrlist/formcd");
  11304. orddrnm = model.getValue("/root/temp/specocrinfo/specocrlist/orddrnm");
  11305. orddd = model.getValue("/root/temp/specocrinfo/specocrlist/orddd");
  11306. mpphontel = model.getValue("/root/temp/specocrinfo/specocrlist/mpphontel");
  11307. hometel = model.getValue("/root/temp/specocrinfo/specocrlist/hometel");
  11308. currentdate = model.getValue("/root/temp/specocrinfo/specocrlist/currentdate");
  11309. currenttm = model.getValue("/root/temp/specocrinfo/specocrlist/currenttm");
  11310. addr = model.getValue("/root/temp/specocrinfo/specocrlist/addr");
  11311. usernm = getUserInfo("usernm");
  11312. model.makeValue("/root/hidden/specorderlist/seq" , seq );
  11313. model.makeValue("/root/hidden/specorderlist/deptengabbr" , deptengabbr );
  11314. model.makeValue("/root/hidden/specorderlist/rgstno" , rgstno );
  11315. model.makeValue("/root/hidden/specorderlist/depthngnm" , depthngnm );
  11316. model.makeValue("/root/hidden/specorderlist/orddrid" , orddrid );
  11317. model.makeValue("/root/hidden/specorderlist/hngnm" , hngnm );
  11318. model.makeValue("/root/hidden/specorderlist/formfromdt" , formfromdt );
  11319. model.makeValue("/root/hidden/specorderlist/formcd" , formcd );
  11320. model.makeValue("/root/hidden/specorderlist/orddrnm" , orddrnm );
  11321. model.makeValue("/root/hidden/specorderlist/orddd" , orddd );
  11322. model.makeValue("/root/hidden/specorderlist/mpphontel" , mpphontel );
  11323. model.makeValue("/root/hidden/specorderlist/hometel" , hometel );
  11324. model.makeValue("/root/hidden/specorderlist/currentdate" , currentdate );
  11325. model.makeValue("/root/hidden/specorderlist/currenttm" , currenttm );
  11326. model.makeValue("/root/hidden/specorderlist/addr" , addr );
  11327. model.makeValue("/root/hidden/specorderlist/usernm" , usernm );
  11328. model.makeValue("/root/hidden/specorderlist/specordyn" , model.getValue("/root/paminfo/list/specordyn") );
  11329. var rptid = "RPMMO00104";
  11330. var desNode = "/root/hidden/specorderlist";
  11331. //exeReportPreview(rptid, "XMLSTR", desNode, "", "true", "", "", "", "", "true", "", "", "", "", "", "", "", "", "", "", "");
  11332. //화면에 출력 된후 이후 진행이 멈춤 - 심사과 윤팀장님 요청 교육서버만 반영
  11333. exeReportPreview(rptid, "XMLSTR", desNode, "", "true", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "");
  11334. if(!fSaveOCRIF(seq, pid, orddd, sCretno, sOrdtype, sOrddeptcd, orddrid, formcd, formfromdt, "", "", "1")){
  11335. messageBox("OCR 출력중 문제가 발생했습니다.","C999");
  11336. return;
  11337. }
  11338. for (i = 1; i <= model.instance1.selectNodes("/root/hidden/specorderlist/specorderlist").length ; i++ ) {
  11339. model.setValue("/root/hidden/specorderlist/specorderlist[" + i + "]/ocrtag" , seq);
  11340. }
  11341. //선택진료 진료지원항목 데이터를 저장한다.
  11342. submit("TXMMO00117");
  11343. }
  11344. */
  11345. }
  11346. }
  11347. }
  11348. }
  11349. }
  11350. function cf_TRMMO00142(sSvcId, nErrorCode, sErrorMsg) {
  11351. arErrorCode.push(sSvcId, nErrorCode);
  11352. }
  11353. /**@desc : 진료과, 진료의변경
  11354. * @param : qestcd : 질문값
  11355. * @return : Answcnt ( 답안값)
  11356. */
  11357. function fChgOrdDr() {
  11358. var pid = ds_paminfo.getColumn(0, "pid");
  11359. var ordtype = ds_patflag.getColumn(0, "prcpgenrflag");
  11360. var cretno = ds_paminfo.getColumn(0, "cretno");
  11361. var mon = sysf_getCurrentMonitorNumber();
  11362. var xpt = this.getOwnerFrame().position.x + 400;
  11363. var ypt = this.getOwnerFrame().position.y + 90;
  11364. frmf_clearParameter ( "SPMMB08300_flag" );
  11365. frmf_clearParameter ( "SPMMB08300_useyn" );
  11366. frmf_clearParameter ( "SPMMB08300_userid" );
  11367. frmf_clearParameter ( "SPMMB08300_orddeptcd" );
  11368. frmf_clearParameter ( "SPMMB08300_userinfo" );
  11369. if(!utlf_isNull(ordtype)){
  11370. if(ordtype == "O" || ordtype == "S"){
  11371. var orddeptcd = ds_paminfo.getColumn(0, "orddeptcd");
  11372. var orddrid = ds_paminfo.getColumn(0, "orddrid");
  11373. var indd = ds_paminfo.getColumn(0, "orddd");
  11374. }else{
  11375. var orddeptcd = ds_paminfo.getColumn(0, "orddeptcd");
  11376. var orddrid = ds_paminfo.getColumn(0, "medispclid");
  11377. var indd = ds_paminfo.getColumn(0, "indd");
  11378. }
  11379. frmf_setParameter("SPMMB08300_orddeptcd", orddeptcd);
  11380. frmf_setParameter("SPMMB08300_orddrid", orddrid);
  11381. frmf_setParameter("SPMMB08300_ioflag", ordtype);
  11382. }
  11383. frmf_setParameter( "SPMMB08300_flag", "chgdr" );
  11384. frmf_modal("SPMMB08300", "SPMMB08300", null, false, mon, xpt, ypt, null, null, null, null, null, "P");
  11385. var useyn = frmf_getParameter("SPMMB08300_useyn");
  11386. var userid = frmf_getParameter("SPMMB08300_userid");
  11387. var orddeptcd = frmf_getParameter("SPMMB08300_orddeptcd");
  11388. var userinfo = frmf_getParameter("SPMMB08300_userinfo");
  11389. if(useyn == "Y"){
  11390. orddrid = userid;
  11391. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  11392. for(var i = 0; i < selectedRows.length; i++){
  11393. if( ds_main_prcplist.getColumn(selectedRows[i], "status") != "S"){
  11394. ds_main_prcplist.setColumn(selectedRows[i], "pampkspec", pid + "|" + indd + "|" + cretno + "|" + orddeptcd + "|" + orddrid); //pampkspec : 등록번호|진료일자|생성번호|진료과|담당의 // 원무PK내역
  11395. ds_main_prcplist.setColumn(selectedRows[i], "tempcol20", userinfo);
  11396. }
  11397. }
  11398. }
  11399. }
  11400. /**@desc : 처방 저장시 화면에서 처장 가능 한지 체크 한다.
  11401. * @return : void
  11402. * @param : prcpflag: 처방구분 0: ( 의사처방, CP, 항암프로토콜, 임시), 2:간호, 4:지원부서
  11403. savekindflag: 0:인증저장, 1:임시저장
  11404. saveNode: 저장노드
  11405. * @return : true, false
  11406. * @authur : 엄영만 2011. 10. 21
  11407. */
  11408. function fCheckBeforePrcpSave( prcpflag, savekindflag, saveNode, prcpchkflag ){
  11409. var sIoFlag = ds_patflag.getColumn(0, "prcpgenrflag");
  11410. //인증저장 가능여부체크.
  11411. if(!fCheckCertificatSave( prcpflag, savekindflag, saveNode, prcpchkflag )) return false;
  11412. //임시저장 가능여부체크.
  11413. if(!fCheckTempSave( prcpflag, savekindflag, saveNode, prcpchkflag )) return false;
  11414. //기증자유형 환자여부체크.
  11415. if(!fCheckPreWorkUp( prcpflag, savekindflag, saveNode, prcpchkflag )) return false;
  11416. if( sIoFlag == "O" || sIoFlag == "S" ) { // 외래에 대한 체크
  11417. //사전심사 관련 처방 Blocking은 임시저장 인증저장 모두 막는다. 서버에서 체크 하는것으로 이동
  11418. //if(!fCheckBfJudg( prcpflag, savekindflag, saveNode, prcpchkflag )) return false;
  11419. // 임상연구 환자 체크
  11420. if(!fCheckClincStdy( prcpflag, savekindflag, saveNode, prcpchkflag )) return false;
  11421. } else { // 입원, 응급, DSC 에 대한 체크
  11422. // 퇴원예고 후 퇴원처방 날짜체크: 퇴원예고 다음날로는 처방 불가
  11423. if(!fCheckDsch( prcpflag, savekindflag, saveNode, prcpchkflag )) return false;
  11424. // 입원환자에 대해서 수술료 입력여부를 체크한다. 20110226 김영학
  11425. if(!fCheckOpFee( prcpflag, savekindflag, saveNode, prcpchkflag, "prcp" )) return false;
  11426. //필수 기록 체크(수술기록,OpstOpNote,경과기록)
  11427. if(!fCheckEssRec( prcpflag, savekindflag, saveNode, prcpchkflag )) return false;
  11428. // 뇌졸증 평가 관련 기록 여부를 체크한다. 20110823 엄영만
  11429. if(!fCheckApoplexyRec( prcpflag, savekindflag, saveNode, prcpchkflag )) return false;
  11430. // 급성심근경색 평가 관련 기록 여부를 체크한다. 20111101 엄영만
  11431. if(!fCheckAmiRec( prcpflag, savekindflag, saveNode, prcpchkflag )) return false;
  11432. // 제왕절개 안정성 평가 관련 기록 여부를 체크한다. 20120104 엄영만
  11433. if(!fCheckChildbirthRec( prcpflag, savekindflag, saveNode, prcpchkflag )) return false;
  11434. //응급실 체류관련 처방제한
  11435. //if(!fCheckErStay( prcpflag, savekindflag, saveNode, prcpchkflag )) return false;
  11436. }
  11437. return true;
  11438. }
  11439. /**@desc : 입원환자에 대해서 수술료 입력여부를 체크한다.
  11440. * @param : prcpflag: 처방구분 0: ( 의사처방, CP, 항암프로토콜, 임시), 2:간호, 4:지원부서
  11441. savekindflag: 0:인증저장, 1:임시저장
  11442. saveNode: 저장노드
  11443. callby: prcp : 처방 저장, dsch:퇴원예고
  11444. * @return : true, false
  11445. * @authur : 엄영만 2011. 10. 21
  11446. */
  11447. function fCheckOpFee( prcpflag, savekindflag, saveNode, prcpchkflag, callby ){
  11448. var bRtn = true;
  11449. if ( prcpflag == "0"
  11450. && savekindflag == "0"
  11451. && ds_patflag.getColumn(0, "prcpgenrflag") == "I"
  11452. && ds_root.getColumn(0, "addprcp") != "Y") {
  11453. var returnVal = lf_getHardCDList("Y", 280, 3); // 처방저장시 수술료 입력안되어 있으면 Blocking 여부
  11454. var pid = ds_paminfo.getColumn(0, "pid");
  11455. var indd = ds_paminfo.getColumn(0, "indd");
  11456. var dschdd = ds_paminfo.getColumn(0, "dschdd");
  11457. if(returnVal == "Y") {
  11458. // 수술탭에서 선택시 수술료 처방이 있는지 확인한다.
  11459. var opFeePrcp = "N";
  11460. var operationFlagCvs = sysf_getGlobalVariable("operation");
  11461. if(callby == "prcp" && !utlf_isNull(operationFlagCvs) && operationFlagCvs.length != 0 ){ //cvs가 null이 아닌 경우에만 처리함.
  11462. for (var i = 0; i < ds_main_prcplist.rowcount; i++ ) {
  11463. var sTempcol2 = ds_main_prcplist.getColumn(i, "tempcol2");
  11464. if ( sTempcol2.substr(0, 5) == "08|02" || sTempcol2.substr(0, 5) == "15|02" || sTempcol2.substr(0, 5) == "17|02") {
  11465. opFeePrcp = "Y";
  11466. break;
  11467. }
  11468. }
  11469. }
  11470. if( opFeePrcp != "Y" ) { // 화면에서 수술료 처방이 없는 경우
  11471. var sRef = dsf_createDsRow("ds_tempchkopfee_reqdata", [{col:"pid", type:"string", size:256, val:pid},
  11472. {col:"indd", type:"string", size:256, val:indd},
  11473. {col:"dschdd", type:"string", size:256, val:dschdd}]);
  11474. var sRstlRef = dsf_createDs("ds_tempchkopfee_rtndata");
  11475. var oParam = {};
  11476. oParam.id = "TRMMO00147";
  11477. oParam.service = "prcpmngtapp.PrcpMngt";
  11478. oParam.method = "reqGetChkValidOpFee";
  11479. oParam.inds = "req=" + sRef;
  11480. oParam.outds = sRstlRef + "=rtndata";
  11481. oParam.async = false;
  11482. tranf_submit(oParam);
  11483. var sMsg = "";
  11484. if (!utlf_isNull(ds_tempchkopfee_rtndata.lookup("checkcode", 'ERROR', "oprsrvno"))) { // 수술 72시간 경과, 수술료 처방이 없는경우
  11485. if (callby == "prcp") {
  11486. sMsg = "72시간 이내에 수술료가 입력되지 않아 진행이 불가능 합니다.\n수술료는 수술탭에서 내셔야 합니다. \n 확인하시겠습니까?";
  11487. } else {
  11488. sMsg = "수술료가 입력되지 않아 진행이 불가능 합니다.\n수술료는 수술탭에서 내셔야 합니다. \n 확인하시겠습니까?";
  11489. }
  11490. if ("6" == sysf_messageBox(sMsg , "Q")) {
  11491. frmf_setParameter("SPMMO21600_param", pid + "|" + indd + "|" + dschdd);
  11492. frmf_modal("SPMMO21600", "SPMMO21600", null, null, null, null, null, null, null, null, null, null, "M");
  11493. frmf_clearParameter("SPMMO21600_param");
  11494. }
  11495. bRtn = false;
  11496. } else if (!utlf_isNull(ds_tempchkopfee_rtndata.lookup("checkcode", 'ALERT', "oprsrvno"))) { // 수술료 처방이 없는경우
  11497. if (callby == "prcp") {
  11498. sMsg = "수술료가 입력되지 않았습니다.\n수술료는 수술탭에서 내셔야 합니다. \n 확인하시겠습니까?";
  11499. } else {
  11500. sMsg = "수술료가 입력되지 않아 진행이 불가능 합니다.\n수술료는 수술탭에서 내셔야 합니다. \n 확인하시겠습니까?";
  11501. }
  11502. if ("6" == messageBox(sMsg, "Q")) {
  11503. frmf_setParameter("SPMMO21600_param", pid + "|" + indd + "|" + dschdd);
  11504. frmf_modal("SPMMO21600", "SPMMO21600", null, null, null, null, null, null, null, null, null, null, "M");
  11505. frmf_clearParameter("SPMMO21600_param");
  11506. bRtn = false;
  11507. } else {
  11508. if (callby == "prcp") { // 처방입력은 메세지 팝업 후 처방 가능
  11509. bRtn = true;
  11510. } else {
  11511. bRtn = false; // 퇴원예고시에는 블러킹 처리
  11512. }
  11513. }
  11514. } else { // 수술료 처방 또는 사유가 존재 할경우
  11515. bRtn = true;
  11516. }
  11517. } else { // 수술탭에서 선택 하여 수술 처방이 있을경우
  11518. bRtn = true;
  11519. }
  11520. } else { // 기존 로직
  11521. var sOpFeeChkYn = ds_paminfo.getColumn(0, "opfeechkyn");
  11522. if (sOpFeeChkYn == "N") {
  11523. var opFeePrcp = "N";
  11524. var opFeePrcpCnt = 0;
  11525. // 수술료 처방이 있는지 확인한다.
  11526. for (var i = 0; i < ds_main_prcplist.rowcount; i++ ) {
  11527. var sTempcol2 = ds_main_prcplist.getColumn(i, "tempcol2");
  11528. if ( sTempcol2.substr(0, 5) == "08|02" || sTempcol2.substr(0, 5) == "15|02" || sTempcol2.substr(0, 5) == "17|02") {
  11529. opFeePrcpCnt++ ;
  11530. }
  11531. }
  11532. if ( opFeePrcpCnt > 0 ) {
  11533. opFeePrcp = "Y";
  11534. }
  11535. // 수술료 처방이 입력되지 않았다면 경고 메시지를 띄운다.
  11536. if (opFeePrcp != "Y") {
  11537. var rtnValue = sysf_messageBox("수술료가 입력되지 않았습니다.\n수술료는 수술탭에서 내셔야 합니다. \n 확인하시겠습니까?" , "Q");
  11538. if (rtnValue == "6") {
  11539. frmf_setParameter("SPMMO21600_param", pid + "|" + indd + "|" + dschdd);
  11540. frmf_modal("SPMMO21600", "SPMMO21600", null, null, null, null, null, null, null, null, null, null, "M");
  11541. frmf_clearParameter("SPMMO21600_param");
  11542. bRtn = false;
  11543. }
  11544. }
  11545. }
  11546. }
  11547. }
  11548. return bRtn;
  11549. }
  11550. /**@desc : 인증저장 가능여부체크.
  11551. * @param : prcpflag: 처방구분 0: ( 의사처방, CP, 항암프로토콜, 임시), 2:간호, 4:지원부서
  11552. savekindflag: 0:인증저장, 1:임시저장
  11553. saveNode: 저장노드
  11554. * @return : true, false
  11555. * @authur : 엄영만 2011. 10. 21
  11556. */
  11557. function fCheckCertificatSave( prcpflag, savekindflag, saveNode, prcpchkflag ){
  11558. var sIoFlag = ds_patflag.getColumn(0, "prcpgenrflag");
  11559. if( sIoFlag == "O" || sIoFlag == "S"){ // 외래 체크
  11560. //20081014 by sonjy 간호확인 후에만 처방인증저장 가능. 조범준 과장님 요청 start=================================================================
  11561. //의사처방 화면의 인증저장 버튼을 누를 때에만...
  11562. if( prcpflag == "0" && savekindflag == "0" && ds_root.getColumn(0, "usge") == "prcp" && ds_root.getColumn(0, "addprcp") != "Y" ){
  11563. if( ds_paminfo.getColumn(0, "elbulbodstat") == "0" ){
  11564. sysf_messageBox("간호접수가 되지 않은 환자입니다. 간호접수전에는 임시저장만", "I006");
  11565. return false ;
  11566. }
  11567. }
  11568. } else { // 입원, 응급, DSC 체크
  11569. if ( ds_paminfo.getColumn(0, "indd") > ds_init.getColumn(0, "prcpdd")) {
  11570. sysf_messageBox( "처방일이 입원일[" + lf_dateFormat ( ds_paminfo.getColumn(0, "indd")) + "] 전입니다. 처방일을 수정하여 주십시오.", "E");
  11571. return false ;
  11572. }
  11573. if (sIoFlag == "D" && ds_paminfo.getColumn(0, "indd") == ds_init.getColumn(0, "prcpdd") && ds_init.getColumn(0, "prcpdd") > utlf_getCurrentDate() && savekindflag != 1 ) {
  11574. sysf_messageBox( "DSC 환자는 수술일 이전 처방은 인증저장이 불가합니다. 임시저장만 가능합니다.", "E");
  11575. return false ;
  11576. } else if( sIoFlag == "E" ){
  11577. //20091015 by JJE 응급간호에서 삭제처리한 환자 선택 시 blocking 메세지 처리 추가 (변경요청:8106)
  11578. var pid = ds_paminfo.getColumn(0, "pid");
  11579. var orddd = ds_paminfo.getColumn(0, "indd");
  11580. var cretno = ds_paminfo.getColumn(0, "cretno");
  11581. if(fChkInCnclYN(pid, orddd, cretno, "B") == false){
  11582. return false;
  11583. }
  11584. //응급실 Visit Time을 등록 하지 않으면 기록과 처방은 임시저장만 가능 20100527 by LYJ
  11585. if (savekindflag == "0" && prcpflag == "0" ){
  11586. var mainObj = frmf_getMainViewer();
  11587. var ordPatObj = mainObj.frmf_findPopup("SMMMO04100");
  11588. if(!utlf_isNull(ordPatObj)){ //두 객체값이 다른 경우 새로운 진료대상자 화면을 open함
  11589. var callvisityn = ds_tmp.getColumn(0, "callvisityn");
  11590. if (callvisityn == "N") {
  11591. sysf_messageBox("응급실 Visit Time을 등록 하지 않으면 기록과 처방은 임시저장만 가능 합니다.", "E");
  11592. return false;
  11593. }
  11594. }
  11595. }
  11596. }
  11597. }
  11598. return true;
  11599. }
  11600. /**@desc : 응급실 체류관련 처방제한
  11601. * @param : prcpflag: 처방구분 0: ( 의사처방, CP, 항암프로토콜, 임시), 2:간호, 4:지원부서
  11602. savekindflag: 0:인증저장, 1:임시저장
  11603. saveNode: 저장노드
  11604. * @return : true, false
  11605. * @authur : 엄영만 2011. 10. 21
  11606. * 본원 및 칠곡에서 사용 하지 않음 주석 처리 2012.10.31 엄영만
  11607. */
  11608. function fCheckErStay( prcpflag, savekindflag, saveNode, prcpchkflag ){
  11609. //응급실 24시간이상 체류환자 응급의학과 인턴의사가 처방시 처방제한 사용여부 체크
  11610. lf_reqHardCodeInfo(ds_hidden_erstayblock, "219");
  11611. //20100519 kimsj 응급의학과 소속 인턴이 응급 진료대상자리스트에서 24시간이상 체류한 환자에게 처방 발행 시 처방 블러킹
  11612. //20100525 LYJ 임상각과의 전문의 조건 추가
  11613. if ( ds_hidden_erstayblock.getColumn(0, "hardcd") == "Y" && ds_patflag.getColumn(0, "prcpgenrflag") == "E" ) {
  11614. if(((sysf_getUserInfo("dutplcecd") == "2280000000") && (sysf_getUserInfo("jobkindcd") == "0330") && (sysf_getUserInfo("jobposcd") == "1799")) || ((sysf_getUserInfo("jobkindcd") == "0330") && (sysf_getUserInfo("medispclno") == "") && (sysf_getUserInfo("dutplcecd") != "2280000000"))){ // 2280000000 : 응급의학과 , 0330 : 의사, 1799 : 인턴
  11615. var pid = ds_paminfo.getColumn(0, "pid");
  11616. var orddd = ds_paminfo.getColumn(0, "indd");
  11617. var cretno = ds_paminfo.getColumn(0, "cretno");
  11618. var sRef = dsf_createDsRow("ds_temp_erstay_reqdata", [{col:"pid", type:"string", size:256, val:pid},
  11619. {col:"orddd", type:"string", size:256, val:orddd},
  11620. {col:"cretno", type:"string", size:256, val:cretno}]);
  11621. var sRstlRef = dsf_createDs("ds_temp_erstay_rstdata_stayinfo");
  11622. var oParam = {};
  11623. oParam.id = "TRMMO00133";
  11624. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  11625. oParam.method = "reqGetErStayInfo";
  11626. oParam.inds = "req=" + sRef;
  11627. oParam.outds = sRstlRef + "=stayinfo";
  11628. oParam.async = false;
  11629. tranf_submit(oParam);
  11630. if ( ds_temp_erstay_rstdata_stayinfo.rowcount > 0 && ds_temp_erstay_rstdata_stayinfo.getColumn(0, "stayyn") == "Y" ) {
  11631. sysf_messageBox ( "응급실 체류시간 24시간 이상인 환자는 응급의학과 의사와 임상각과 전문의만 처방 가능합니다.", "E" );
  11632. return false;
  11633. }
  11634. }
  11635. }
  11636. return true;
  11637. }
  11638. /**@desc : 임시저장가능 여부
  11639. * @param : prcpflag: 처방구분 0: ( 의사처방, CP, 항암프로토콜, 임시), 2:간호, 4:지원부서
  11640. savekindflag: 0:인증저장, 1:임시저장
  11641. saveNode: 저장노드
  11642. * @return : true, false
  11643. * @authur : 엄영만 2011. 10. 21
  11644. */
  11645. function fCheckTempSave( prcpflag, savekindflag, saveNode, prcpchkflag ){
  11646. if ( savekindflag == "1" ) {
  11647. var findRow_diag1 = ds_main_diagcdlist.findRowExpr("status != 'I' && status != '-' && diaghistcd == 'O'");
  11648. var findRow_diag2 = ds_main_diagcdlist.findRowExpr("status == 'I' || status == 'D' || status == 'U'");
  11649. var findRow_prcp = ds_main_prcplist.findRowExpr("status == 'I' || status == 'D' || status == 'U'");
  11650. if (findRow_diag1 != -1 && !utlf_isNull(ds_main_diagcdlist.getColumn(findRow_diag1, "diagcd"))) {
  11651. sysf_messageBox ( "인증저장된 진단을 임시저장으로 수정할 수 없습니다.\n\n진단리스트에서 우클릭 '취소(삭제, 수정)' 기능을 이용하여 초기화 후 임시저장 하십시오", "E" );
  11652. return false;
  11653. } else if ( findRow_prcp == -1 || utlf_isNull ( ds_main_prcplist.getColumn(findRow_prcp, "prcpcd")) ) {
  11654. if (findRow_diag2 == -1 || utlf_isNull(ds_main_diagcdlist.getColumn(findRow_diag2, "diagcd"))) {
  11655. sysf_messageBox ( "임시저장할 처방 및 진단이 없습니다.", "E" );
  11656. return false;
  11657. }
  11658. }
  11659. }
  11660. return true;
  11661. }
  11662. /**@desc : 처방시 미비기록 유무 확인(submit)
  11663. * @param : prcpflag: 처방구분 0: ( 의사처방, CP, 항암프로토콜, 임시), 2:간호, 4:지원부서
  11664. savekindflag: 0:인증저장, 1:임시저장
  11665. saveNode: 저장노드
  11666. * @return : true, false
  11667. * @authur : 엄영만 2011. 10. 21
  11668. */
  11669. function fCheckEssRec( prcpflag, savekindflag, saveNode, prcpchkflag ){
  11670. var bRtn = true;
  11671. if (prcpchkflag == "drugdc" || ds_root.getColumn(0, "addprcp") == "Y") {
  11672. bRtn = true;
  11673. return bRtn;
  11674. }
  11675. else {
  11676. fChkValidRecInfo();
  11677. if ( !fValidRecInfoMsg() ) {
  11678. bRtn = true;
  11679. }
  11680. }
  11681. // 기록누락을 통한 처방제어 시스템:미비기록 여부를 체크한다. 20110421 엄영만 288 기록누락 관련 처방 제한 사용 여부
  11682. var sChkValidRecYn = lf_getHardCDList("Y", 288, 3);
  11683. if (sChkValidRecYn == "Y"
  11684. && prcpflag == "0"
  11685. && savekindflag == "0"
  11686. && ds_patflag.getColumn(0, "prcpgenrflag") == "I"
  11687. && ds_root.getColumn(0, "addprcp") != "Y") {
  11688. var sCheckCode = "";
  11689. var sCheckAlertMsg = "";
  11690. var sCheckErrorMsg = "";
  11691. var pid = ds_paminfo.getColumn(0, "pid");
  11692. var indd = ds_paminfo.getColumn(0, "indd");
  11693. var cretno = ds_paminfo.getColumn(0, "cretno");
  11694. var sRef = dsf_createDsRow("ds_tempchkrec_reqdata", [{col:"pid", type:"string", size:256, val:pid},
  11695. {col:"indd", type:"string", size:256, val:indd},
  11696. {col:"cretno", type:"string", size:256, val:cretno}]);
  11697. var sRstlRef = dsf_createDs("ds_tempchkrec_rtndata");
  11698. var oParam = {};
  11699. oParam.id = "TRMMO00124";
  11700. oParam.service = "prcpmngtapp.PrcpMngt";
  11701. oParam.method = "reqGetChkValidRec";
  11702. oParam.inds = "req=" + sRef;
  11703. oParam.outds = sRstlRef + "=rtndata";
  11704. oParam.async = false;
  11705. tranf_submit(oParam);
  11706. var oRstlRef = this.objects[sRstlRef];
  11707. for ( var i = 0; i < oRstlRef.rowcount; i++ ) {
  11708. var sCheckCode = oRstlRef.getColumn(i, "checkcode");
  11709. if(sCheckCode == "ALERT"){
  11710. if(utlf_isNull(sCheckAlertMsg)) {
  11711. sCheckAlertMsg = oRstlRef.getColumn(i, "checkmsg");
  11712. } else {
  11713. sCheckAlertMsg = sCheckAlertMsg + "\n" + oRstlRef.getColumn(i, "checkmsg");
  11714. }
  11715. } else if (sCheckCode == "ERROR"){
  11716. if(utlf_isNull(sCheckErrorMsg)) {
  11717. sCheckErrorMsg = oRstlRef.getColumn(i, "checkmsg");
  11718. } else {
  11719. sCheckErrorMsg = sCheckErrorMsg + "\n" + oRstlRef.getColumn(i, "checkmsg");
  11720. }
  11721. }
  11722. }
  11723. if (!utlf_isNull(sCheckErrorMsg)){
  11724. sCheckErrorMsg = sCheckErrorMsg + "\n\n" + "해당 기록 작성 후 처방 가능 합니다.";
  11725. if(sysf_getUserInfo("dutplceinstcd") == "031") {
  11726. sCheckErrorMsg = sCheckErrorMsg + "\n" + "문의처: 의무기록실(5231~3,5324)";
  11727. } else if(sysf_getUserInfo("dutplceinstcd") == "032") {
  11728. sCheckErrorMsg = sCheckErrorMsg + "\n" + "문의처: 의무기록실(2401, 2402)";
  11729. }
  11730. sysf_messageBox("[기록누락]" + sCheckErrorMsg, 'E000');
  11731. bRtn = false;
  11732. return bRtn;
  11733. } else if (!utlf_isNull(sCheckAlertMsg)){
  11734. sCheckAlertMsg = sCheckAlertMsg + "\n\n" + "해당 기록이 작성 되지 않으면 처방불가 합니다.";
  11735. if(sysf_getUserInfo("dutplceinstcd") == "031") {
  11736. sCheckAlertMsg = sCheckAlertMsg + "\n" + "문의처: 의무기록실(5231~3,5324)";
  11737. } else if(sysf_getUserInfo("dutplceinstcd") == "032") {
  11738. sCheckAlertMsg = sCheckAlertMsg + "\n" + "문의처: 의무기록실(2401, 2402)"
  11739. }
  11740. sysf_messageBox(sCheckAlertMsg, 'E000');
  11741. }
  11742. }
  11743. // 미비기록을 통한 처방제어 시스템:미비기록 여부를 체크한다. 20140722 이윤주 388 미비기록 관련 처방 제한 사용 여부
  11744. var sChkValidRecYn = lf_getHardCDList("Y", 388, 3);
  11745. if (sChkValidRecYn == "Y"
  11746. && prcpflag == "0"
  11747. && savekindflag == "0"
  11748. && ds_patflag.getColumn(0, "prcpgenrflag") == "I"
  11749. && ds_root.getColumn(0, "addprcp") != "Y") {
  11750. //staffsign 미비
  11751. var cosigncnt = 0;
  11752. //defetcnt 퇴원미비
  11753. var defetcnt = 0;
  11754. //admpatcnt 재원미비
  11755. var admpatcnt = 0;
  11756. var orddeptcd = sysf_getUserInfo("dutplcecd");
  11757. var orddrid = sysf_getUserInfo("userid");
  11758. var sRef = dsf_createDsRow("ds_tempchkrec_reqdata", [{col:"orddeptcd", type:"string", size:256, val:orddeptcd},
  11759. {col:"orddrid", type:"string", size:256, val:orddrid},
  11760. {col:"chk24mibi", type:"string", size:256, val:"Y"}]);
  11761. var sRstlRef = dsf_createDs("ds_unprepinfo_unprepcnt");
  11762. var oParam = {};
  11763. oParam.id = "TRMMO00154";
  11764. oParam.service = "prcpmngtapp.PrcpMngt";
  11765. oParam.method = "reqGetChkMibiRec";
  11766. oParam.inds = "req=" + sRef;
  11767. oParam.outds = sRstlRef + "=unprepcnt";
  11768. oParam.async = false;
  11769. tranf_submit(oParam);
  11770. var oRstlRef = this.objects[sRstlRef];
  11771. cosigncnt = oRstlRef.getColumn(0, "cosigncnt");
  11772. defetcnt = oRstlRef.getColumn(0, "defetcnt");
  11773. admpatcnt = oRstlRef.getColumn(0, "admpatcnt");
  11774. if (cosigncnt > 0) {
  11775. if (6 == sysf_messageBox("[기록미비]기록사 확인 후 24시간이내 정리되지 않은 스텝sign미비가 존재하여"+"\n"+
  11776. "진행 불가합니다 미비리스트창을 오픈하시겠습니까?"+"\n"+
  11777. "문의처:의무기록실[본원(5231~3,5324),칠곡(2401~2)]","Q999")) {
  11778. frmf_setParameter("SMMMO04900", "Y");
  11779. frmf_setParameter("SMMRI01800_Indschflag", "A"); //2010.01.20 이남익 추가 : 미비구분
  11780. frmf_setParameter("SMMRI01800_Orddrid", orddrid);
  11781. frmf_setParameter("SMMRI01800_Orddeptcd", orddeptcd);
  11782. frmf_setParameter("SMMRI01800_StaffYn", "Y");
  11783. frmf_setParameter("SMMRI01800_xsignmibi", "N");
  11784. frmf_open("SMMRI01800", "SMMRI01800", null, null, null, null, null, null, null, null, null, null, "M");
  11785. }
  11786. return false;
  11787. }
  11788. if (admpatcnt > 0) {
  11789. if (6 == sysf_messageBox("[기록미비]기록사 확인 후 24시간이내 정리되지 않은 재원미비가 존재하여"+"\n"+
  11790. "진행 불가합니다 미비리스트창을 오픈하시겠습니까?"+"\n"+
  11791. "문의처:의무기록파트[본원(5231~3,5324),칠곡(2401~2)]","Q999")) {
  11792. frmf_setParameter("SMMMO04900", "Y");
  11793. frmf_setParameter("SMMRI01800_Indschflag", "I");
  11794. frmf_setParameter("SMMRI01800_Orddrid", orddrid);
  11795. frmf_setParameter("SMMRI01800_Orddeptcd", orddeptcd);
  11796. frmf_setParameter("SMMRI01800_StaffYn", "N");
  11797. frmf_setParameter("SMMRI01800_xsignmibi", "Y");
  11798. frmf_open("SMMRI01800", "SMMRI01800", null, null, null, null, null, null, null, null, null, null, "M");
  11799. }
  11800. return false;
  11801. }
  11802. if (defetcnt > 0) {
  11803. if (6 == sysf_messageBox("[기록미비]기록사 확인 후 24시간이내 정리되지 않은 퇴원미비가 존재하여"+"\n"+
  11804. "진행 불가합니다 미비리스트창을 오픈하시겠습니까?"+"\n"+
  11805. "문의처:의무기록파트[본원(5231~3,5324),칠곡(2401~2)]","Q999")) {
  11806. frmf_setParameter("SMMMO04900", "Y");
  11807. frmf_setParameter("SMMRI01800_Indschflag", "D"); //2010.01.20 이남익 추가 : 미비구분
  11808. frmf_setParameter("SMMRI01800_Orddrid", orddrid);
  11809. frmf_setParameter("SMMRI01800_Orddeptcd", orddeptcd);
  11810. frmf_setParameter("SMMRI01800_StaffYn", "N");
  11811. frmf_setParameter("SMMRI01800_xsignmibi", "Y");
  11812. frmf_open("SMMRI01800", "SMMRI01800", null, null, null, null, null, null, null, null, null, null, "M");
  11813. }
  11814. return false;
  11815. }
  11816. }
  11817. //kimsj 미비기록존재시 처방Blocking (입원만 적용)
  11818. //100610 간호반납요청에 대한 저장시에는 미비기록blocking 제외, 100706 시행부서처방 제외
  11819. // if (prcpchkflag != "drugdc" && model.getValue ( "/root/addprcp" ) != "Y") {
  11820. // fChkValidRecInfo();
  11821. // if ( !fValidRecInfoMsg() ) bRtn = true;
  11822. // }
  11823. return bRtn;
  11824. }
  11825. /**@desc : 뇌졸중 평가관련 기록 유무 확인(submit)
  11826. * @param : prcpflag: 처방구분 0: ( 의사처방, CP, 항암프로토콜, 임시), 2:간호, 4:지원부서
  11827. savekindflag: 0:인증저장, 1:임시저장
  11828. saveNode: 저장노드
  11829. * @return : true, false
  11830. * @authur : 엄영만 2011. 10. 21
  11831. */
  11832. function fCheckApoplexyRec( prcpflag, savekindflag, saveNode, prcpchkflag ){
  11833. var bRtn = true;
  11834. // 뇌졸증 평가 관련 기록 여부를 체크한다. 20110823 엄영만
  11835. var sChkApoplexyRecYn = lf_getHardCDList("Y", 300, 3); // 300 뇌졸증 평가 관련 기록 체크여부 처방 제한 사용 여부
  11836. var sOrddeptcd = ds_paminfo.getColumn(0, "orddeptcd");
  11837. var findRow = ds_main_diagcdlist.findRowExpr("diagkindcdflag == 'M' && (status == '-' || status == 'I' || status == 'U')");
  11838. var sDiagCd = (findRow == -1) ? "" : ds_main_diagcdlist.getColumn(findRow, "icd10cd");
  11839. if(sDiagCd.length > 3) {
  11840. sDiagCd = sDiagCd.substring(0, 3);
  11841. }
  11842. lf_getHardCDList("N", 301, null, ds_hidden_apoplexydeptlist); // 301 뇌졸증 평가 관련 기록 체크 주진료과
  11843. lf_getHardCDList("N", 302, null, ds_hidden_apoplexydiaglist); // 302 뇌졸증 평가 관련 기록 체크 주진단(ICD10코드)
  11844. if (sChkApoplexyRecYn == "Y"
  11845. && prcpflag == "0"
  11846. && savekindflag == "0"
  11847. && ds_root.getColumn(0, "addprcp") != "Y"
  11848. && (ds_patflag.getColumn(0, "prcpgenrflag") == "I" || ds_patflag.getColumn(0, "prcpgenrflag") == "E" )
  11849. && (ds_paminfo.getColumn(0, "atdoctid") == sysf_getUserInfo("userid") || ds_paminfo.getColumn(0, "medispclid") == sysf_getUserInfo("userid") ) // 2013.04.10 주치교수도 체크 하도록 수정. 심사팀 윤순길 팀장님 요청 엄영만
  11850. && !utlf_isNull(ds_hidden_apoplexydeptlist.lookup("hardcd", sOrddeptcd, "hardcd"))
  11851. && !utlf_isNull(ds_hidden_apoplexydiaglist.lookup("hardcd", sDiagCd, "hardcd")) ) {
  11852. var sCheckCode = "";
  11853. var sCheckAlertMsg = "";
  11854. var sCheckErrorMsg = "";
  11855. var pid = ds_paminfo.getColumn(0, "pid");
  11856. var indd = ds_paminfo.getColumn(0, "indd");
  11857. var cretno = ds_paminfo.getColumn(0, "cretno");
  11858. var dietprcp = "N";
  11859. var sStatus = "";
  11860. var sPrcpcd = "";
  11861. for (var i = 0; i < ds_main_prcplist.rowcount; i++ ) {
  11862. sStatus = ds_main_prcplist.getColumn(i, "status");
  11863. sPrcpcd = ds_main_prcplist.getColumn(i, "prcpcd");
  11864. if ( "I" == sStatus && lf_ContainsHardCD("427", sPrcpcd) ) { // 연하장애 서식 팝업 조건 변경 - 신규입력 처방중 식사 지시처방이 있는지 확인 한다. 2013.04.09 엄영만
  11865. dietprcp = "Y";
  11866. break;
  11867. }
  11868. }
  11869. var sRef = dsf_createDsRow("ds_apoplexychkrec_reqdata", [{col:"pid", type:"string", size:256, val:pid},
  11870. {col:"indd", type:"string", size:256, val:indd},
  11871. {col:"cretno", type:"string", size:256, val:cretno},
  11872. {col:"dietprcp", type:"string", size:256, val:dietprcp}]);
  11873. var sRstlRef = dsf_createDs("ds_apoplexychkrec_rtndata");
  11874. var oParam = {};
  11875. oParam.id = "TRMMO00136";
  11876. oParam.service = "prcpmngtapp.PrcpMngt";
  11877. oParam.method = "reqGetChkApoplexyRec";
  11878. oParam.inds = "req=" + sRef;
  11879. oParam.outds = sRstlRef + "=rtndata";
  11880. oParam.async = false;
  11881. tranf_submit(oParam);
  11882. var oRstlRef = this.objects[sRstlRef];
  11883. for ( var i = 0; i < oRstlRef.rowcount; i++ ) {
  11884. var sCheckCode = oRstlRef.getColumn(i, "checkcode");
  11885. if(sCheckCode == "ALERT"){
  11886. if(utlf_isNull(sCheckAlertMsg))
  11887. sCheckAlertMsg = oRstlRef.getColumn(i, "checkmsg");
  11888. else
  11889. sCheckAlertMsg = sCheckAlertMsg + "\n" + oRstlRef.getColumn(i, "checkmsg");
  11890. }
  11891. else if (sCheckCode == "ERROR"){
  11892. if(utlf_isNull(sCheckErrorMsg))
  11893. sCheckErrorMsg = oRstlRef.getColumn(i, "checkmsg");
  11894. else
  11895. sCheckErrorMsg = sCheckErrorMsg + "\n" + oRstlRef.getColumn(i, "checkmsg");
  11896. }
  11897. }
  11898. if (!utlf_isNull(sCheckErrorMsg)){
  11899. sCheckErrorMsg = "※ 급성 뇌졸중 평가 관련 사항 ※\n\n주 진단코드가 I60-I63인 신경과, 신경외과 환자에 대해\n\n" + sCheckErrorMsg + "\n\n" + "해당 기록 작성 후 처방이 저장이 가능 합니다."
  11900. if(sysf_getUserInfo("dutplceinstcd") == "031")
  11901. sCheckErrorMsg = sCheckErrorMsg + "\n" + "문의처: 심사실(6131)"
  11902. else if(sysf_getUserInfo("dutplceinstcd") == "032")
  11903. sCheckErrorMsg = sCheckErrorMsg + "\n" + "문의처: 심사실(6131)"
  11904. sysf_messageBox(sCheckErrorMsg, 'E000');
  11905. var formcd = oRstlRef.getColumn(0, "checkformcd"); // 첫 행의 서식 팝업
  11906. var ioflag = ds_paminfo.getColumn(0, "ioflag");
  11907. var orddeptcd = ds_paminfo.getColumn(0, "orddeptcd");
  11908. var medispclid = ds_paminfo.getColumn(0, "medispclid");
  11909. var orddeptnm = ds_paminfo.getColumn(0, "orddeptnm");
  11910. var hngnm = ds_paminfo.getColumn(0, "hngnm");
  11911. var sa = ds_paminfo.getColumn(0, "sex") +"/"+ ds_paminfo.getColumn(0, "age");
  11912. var roomcd = ds_paminfo.getColumn(0, "roomcd");
  11913. var disparam = pid +"▦" + hngnm +"▦" + sa+"▦" + orddeptnm +"▦" + roomcd + "▦";
  11914. frmf_setParameter("pid", pid);
  11915. frmf_setParameter("orddd", indd);
  11916. frmf_setParameter("cretno", cretno);
  11917. frmf_setParameter("ioflag", ioflag);
  11918. frmf_setParameter("orddeptcd", orddeptcd);
  11919. frmf_setParameter("orddrid", medispclid);
  11920. frmf_setParameter("disppatinfo", disparam); //등록번호▦환자명▦성별/나이▦진료과▦병실▦
  11921. frmf_setParameter("openmode", "newform"); //오픈모드는 “recform”
  11922. frmf_setParameter("formcd", formcd);
  11923. frmf_modal("SSMMR01100", "SSMMR01100", "", "", 1, 0, 0, "", "", "", "", "", "M");
  11924. bRtn = false;
  11925. } else if (!utlf_isNull(sCheckAlertMsg)){
  11926. sCheckAlertMsg = "※ 급성 뇌졸중 평가 관련 사항 ※\n\n주 진단코드가 I60-I63인 신경과, 신경외과 환자에 대해\n\n" + sCheckAlertMsg + "\n\n" + "해당 기록이 작성 되지 않으면 처방이 저장 되지 않습니다."
  11927. if(sysf_getUserInfo("dutplceinstcd") == "031")
  11928. sCheckAlertMsg = sCheckAlertMsg + "\n" + "문의처: 심사실(6131)"
  11929. else if(sysf_getUserInfo("dutplceinstcd") == "032")
  11930. sCheckAlertMsg = sCheckAlertMsg + "\n" + "문의처: 심사실(6131)"
  11931. sysf_messageBox(sCheckAlertMsg, 'E000');
  11932. bRtn = true;
  11933. } else {
  11934. bRtn = true;
  11935. }
  11936. }
  11937. return bRtn;
  11938. }
  11939. /**@desc : 급성심근경색 평가관련 기록 유무 확인(submit)
  11940. * @param : prcpflag: 처방구분 0: ( 의사처방, CP, 항암프로토콜, 임시), 2:간호, 4:지원부서
  11941. savekindflag: 0:인증저장, 1:임시저장
  11942. saveNode: 저장노드
  11943. * @return : true, false
  11944. * @authur : 엄영만 2011. 11. 01
  11945. */
  11946. function fCheckAmiRec( prcpflag, savekindflag, saveNode, prcpchkflag ){
  11947. var bRtn = true;
  11948. // 급성심근경색 평가 관련 기록 여부를 체크한다. 2011.1101 엄영만
  11949. var sChkAmiRecYn = lf_getHardCDList("Y", 316, 3); // 316 급성심근경색 평가 관련 기록 체크여부 처방 제한 사용 여부
  11950. var sOrddeptcd = ds_paminfo.getColumn(0, "orddeptcd");
  11951. var findRow = ds_main_diagcdlist.findRowExpr("diagkindcdflag == 'M' && (status == '-' || status == 'I' || status == 'U')");
  11952. var sDiagCd = (findRow == -1) ? "" : ds_main_diagcdlist.getColumn(findRow, "icd10cd");
  11953. if(sDiagCd.length > 3) {
  11954. sDiagCd = sDiagCd.substring( 0,3);
  11955. }
  11956. lf_getHardCDList("N", 317, null, ds_hidden_amideptlist); // 317 급성심근경색 평가 관련 기록 체크 주진료과
  11957. lf_getHardCDList("N", 318, null, ds_hidden_amidiaglist); // 318 급성심근경색 평가 관련 기록 체크 주진단(ICD10코드)
  11958. if (sChkAmiRecYn == "Y"
  11959. && prcpflag == "0"
  11960. && savekindflag == "0"
  11961. && ds_root.getColumn(0, "addprcp") != "Y"
  11962. && (ds_patflag.getColumn(0, "prcpgenrflag") == "I" || ds_patflag.getColumn(0, "prcpgenrflag") == "E" )
  11963. && ds_paminfo.getColumn(0, "atdoctid") == sysf_getUserInfo("userid")
  11964. && !utlf_isNull(ds_hidden_amideptlist.lookup("hardcd", sOrddeptcd, "hardcd"))
  11965. && !utlf_isNull(ds_hidden_amidiaglist.lookup("hardcd", sDiagCd, "hardcd")) ) {
  11966. var sCheckCode = "";
  11967. var sCheckAlertMsg = "";
  11968. var sCheckErrorMsg = "";
  11969. var pid = ds_paminfo.getColumn(0, "pid");
  11970. var indd = ds_paminfo.getColumn(0, "indd");
  11971. var cretno = ds_paminfo.getColumn(0, "cretno");
  11972. var sRef = dsf_createDsRow("ds_amichkrec_reqdata", [{col:"pid", type:"string", size:256, val:pid},
  11973. {col:"indd", type:"string", size:256, val:indd},
  11974. {col:"cretno", type:"string", size:256, val:cretno}]);
  11975. var sRstlRef = dsf_createDs("ds_amichkrec_rtndata");
  11976. var oParam = {};
  11977. oParam.id = "TRMMO00137";
  11978. oParam.service = "prcpmngtapp.PrcpMngt";
  11979. oParam.method = "reqGetChkAmiRec";
  11980. oParam.inds = "req=" + sRef;
  11981. oParam.outds = sRstlRef + "=rtndata";
  11982. oParam.async = false;
  11983. tranf_submit(oParam);
  11984. var oRstlRef = this.objects[sRstlRef];
  11985. for ( var i = 0; i < oRstlRef.rowcount; i++ ) {
  11986. var sCheckCode = oRstlRef.getColumn(i, "checkcode" );
  11987. if(sCheckCode == "ALERT"){
  11988. if(utlf_isNull(sCheckAlertMsg)) {
  11989. sCheckAlertMsg = oRstlRef.getColumn(i, "checkmsg");
  11990. } else {
  11991. sCheckAlertMsg = sCheckAlertMsg + "\n" + oRstlRef.getColumn(i, "checkmsg");
  11992. }
  11993. }
  11994. else if (sCheckCode == "ERROR"){
  11995. if(utlf_isNull(sCheckErrorMsg)) {
  11996. sCheckErrorMsg = oRstlRef.getColumn(i, "checkmsg");
  11997. } else {
  11998. sCheckErrorMsg = sCheckErrorMsg + "\n" + oRstlRef.getColumn(i, "checkmsg");
  11999. }
  12000. }
  12001. }
  12002. if (!utlf_isNull(sCheckErrorMsg)){
  12003. sCheckErrorMsg = "※ 급성 심근경색 평가 관련 사항 ※\n\n주 진단코드가 I21인 순환기내과 환자에 대해\n\n" + sCheckErrorMsg + "\n\n" + "해당 기록 작성 후 처방이 저장이 가능 합니다.";
  12004. if(sysf_getUserInfo("dutplceinstcd") == "031") {
  12005. sCheckErrorMsg = sCheckErrorMsg + "\n" + "문의처: 심사실(6131)";
  12006. } else if(sysf_getUserInfo("dutplceinstcd") == "032") {
  12007. sCheckErrorMsg = sCheckErrorMsg + "\n" + "문의처: 심사실(6131)";
  12008. }
  12009. sysf_messageBox(sCheckErrorMsg, 'E000');
  12010. var formcd = oRstlRef.getColumn(0, "checkformcd"); // 첫 행의 서식 팝업
  12011. var ioflag = ds_paminfo.getColumn(0, "ioflag");
  12012. var orddeptcd = ds_paminfo.getColumn(0, "orddeptcd");
  12013. var medispclid = ds_paminfo.getColumn(0, "medispclid");
  12014. var orddeptnm = ds_paminfo.getColumn(0, "orddeptnm");
  12015. var hngnm = ds_paminfo.getColumn(0, "hngnm");
  12016. var sa = ds_paminfo.getColumn(0, "sex") +"/"+ ds_paminfo.getColumn(0, "age");
  12017. var roomcd = ds_paminfo.getColumn(0, "roomcd");
  12018. var disparam = pid +"▦" + hngnm +"▦" + sa+"▦" + orddeptnm +"▦" + roomcd + "▦";
  12019. frmf_setParameter("pid", pid);
  12020. frmf_setParameter("orddd", indd);
  12021. frmf_setParameter("cretno", cretno);
  12022. frmf_setParameter("ioflag", ioflag);
  12023. frmf_setParameter("orddeptcd", orddeptcd);
  12024. frmf_setParameter("orddrid", medispclid);
  12025. frmf_setParameter("disppatinfo", disparam); //등록번호▦환자명▦성별/나이▦진료과▦병실▦
  12026. frmf_setParameter("openmode", "newform"); //오픈모드는 “recform”
  12027. frmf_setParameter("formcd", formcd);
  12028. frmf_modal("SSMMR01100", "SSMMR01100", "", "", 1, 0, 0, "", "", "", "", "", "M");
  12029. bRtn = false;
  12030. } else if (sCheckAlertMsg != ""){
  12031. sCheckAlertMsg = "※ 급성 심근경색 평가 관련 사항 ※\n\n주 진단코드가 I21인 순환기내과 환자에 대해\n\n" + sCheckAlertMsg + "\n\n" + "해당 기록이 작성 되지 않으면 처방이 저장 되지 않습니다.";
  12032. if(sysf_getUserInfo("dutplceinstcd") == "031") {
  12033. sCheckAlertMsg = sCheckAlertMsg + "\n" + "문의처: 심사실(6131)";
  12034. } else if(sysf_getUserInfo("dutplceinstcd") == "032") {
  12035. sCheckAlertMsg = sCheckAlertMsg + "\n" + "문의처: 심사실(6131)";
  12036. }
  12037. sysf_messageBox(sCheckAlertMsg, 'E000');
  12038. bRtn = true;
  12039. } else {
  12040. bRtn = true;
  12041. }
  12042. }
  12043. return bRtn;
  12044. }
  12045. /**@desc : 제왕절개분만 적정성평가 위험도 보정요인 서식 기록 유무 확인(submit)
  12046. * @param : prcpflag: 처방구분 0: ( 의사처방, CP, 항암프로토콜, 임시), 2:간호, 4:지원부서
  12047. savekindflag: 0:인증저장, 1:임시저장
  12048. saveNode: 저장노드
  12049. 심사실 김현주(6127) 요청 2012.01.05일 정규 배포 본원만 적용하고 칠곡은 적용하지 않음.
  12050. * @return : true, false
  12051. * @authur : 엄영만 2011. 11. 01
  12052. */
  12053. function fCheckChildbirthRec( prcpflag, savekindflag, saveNode, prcpchkflag ){
  12054. var bRtn = true;
  12055. // 제왕절개분만 적정성평가 관련 기록 여부를 체크한다. 2012.0103 엄영만
  12056. var sChkChildbirthRecYn = lf_getHardCDList("Y", 321, 3); // 321 제왕절개분만 적정성평가 관련 기록 체크여부 처방 제한 사용 여부
  12057. var sOrddeptcd = ds_paminfo.getColumn(0, "orddeptcd");
  12058. lf_getHardCDList("N", 322, null, ds_hidden_childbirthdeptlist); // 322 제왕절개분만 적정성평가 관련 기록 체크 주진료과
  12059. if (sChkChildbirthRecYn == "Y"
  12060. && prcpflag == "0"
  12061. && savekindflag == "0"
  12062. && ds_root.getColumn(0, "addprcp") != "Y"
  12063. && (ds_patflag.getColumn(0, "prcpgenrflag") == "I" || ds_patflag.getColumn(0, "prcpgenrflag") == "E" )
  12064. && ds_paminfo.getColumn(0, "atdoctid") == sysf_getUserInfo("userid")
  12065. && !utlf_isNull(ds_hidden_childbirthdeptlist.lookup("hardcd", sOrddeptcd, "hardcd" )) ) {
  12066. var sCheckCode = "";
  12067. var sCheckAlertMsg = "";
  12068. var sCheckErrorMsg = "";
  12069. var sCheckPrcpExist = "N"; // 제왕절개 관련 처방 존재 여부 디폴트 N 없음.
  12070. var pid = ds_paminfo.getColumn(0, "pid");
  12071. var indd = ds_paminfo.getColumn(0, "indd");
  12072. var cretno = ds_paminfo.getColumn(0, "cretno");
  12073. if (utlf_isNull(saveNode)) saveNode = "ds_main_prcplist";
  12074. var ds_savePrcp = this.objects[saveNode];
  12075. var savePrcpCnt = ds_savePrcp.rowcount
  12076. var savePrcpCd = "";
  12077. var savePrcpStatus = "";
  12078. lf_getHardCDList("N", 323, null, ds_hidden_childbirthprcplist); // 323 제왕절개분만 적정성평가 관련 기록 체크 처방코드
  12079. for (var i = 0; i < savePrcpCnt; i++) { // 저장 하는 화면에서 제왕절개분만 적정성평가 관련 처방 코드가 있는지 조회 한다.
  12080. savePrcpCd = ds_savePrcp.getColumn(i, "prcpcd" );
  12081. savePrcpStatus = ds_savePrcp.getColumn(i, "status" );
  12082. if ( !utlf_isNull(ds_hidden_childbirthprcplist.lookup("hardcd", savePrcpCd, "hardcd"))
  12083. && savePrcpStatus != "S" && savePrcpStatus != "-") {
  12084. sCheckPrcpExist = "Y";
  12085. break;
  12086. }
  12087. }
  12088. var sRef = dsf_createDsRow("ds_childbirthchkrec_reqdata", [{col:"pid", type:"string", size:256, val:pid},
  12089. {col:"indd", type:"string", size:256, val:indd},
  12090. {col:"cretno", type:"string", size:256, val:cretno},
  12091. {col:"prcpexist", type:"string", size:256, val:sCheckPrcpExist}]);
  12092. var sRstlRef = dsf_createDs("ds_childbirthchkrec_rtndata");
  12093. var oParam = {};
  12094. oParam.id = "TRMMO00138";
  12095. oParam.service = "prcpmngtapp.PrcpMngt";
  12096. oParam.method = "reqGetChkChildbirthRec";
  12097. oParam.inds = "req=" + sRef;
  12098. oParam.outds = sRstlRef + "=rtndata";
  12099. oParam.async = false;
  12100. tranf_submit(oParam);
  12101. var oRstlRef = this.objects[sRstlRef];
  12102. for ( var i = 0; i < oRstlRef.rowcount; i++ ) {
  12103. var sCheckCode = oRstlRef.getColumn(i, "checkcode" );
  12104. if(sCheckCode == "ALERT"){
  12105. if(utlf_isNull(sCheckAlertMsg)) {
  12106. sCheckAlertMsg = oRstlRef.getColumn(i, "checkmsg");
  12107. } else {
  12108. sCheckAlertMsg = sCheckAlertMsg + "\n" + oRstlRef.getColumn(i, "checkmsg");
  12109. }
  12110. }
  12111. else if (sCheckCode == "ERROR"){
  12112. if(utlf_isNull(sCheckErrorMsg)) {
  12113. sCheckErrorMsg = oRstlRef.getColumn(i, "checkmsg");
  12114. } else {
  12115. sCheckErrorMsg = sCheckErrorMsg + "\n" + oRstlRef.getColumn(i, "checkmsg");
  12116. }
  12117. }
  12118. }
  12119. if (!utlf_isNull(sCheckAlertMsg)){
  12120. sCheckAlertMsg = "※ 제왕절개 분만 적정성 평가 관련 사항 ※\n\n분만수술 처방이 있는 산부인과 환자에 대해\n\n"
  12121. + sCheckAlertMsg + "\n\n" + "해당 기록 작성 되지 않으면 퇴원 예고가 불가능 합니다.";
  12122. if(sysf_getUserInfo("dutplceinstcd") == "031") {
  12123. sCheckAlertMsg = sCheckAlertMsg + "\n" + "문의처: 심사실(6127)";
  12124. } else if(sysf_getUserInfo("dutplceinstcd") == "032") {
  12125. sCheckAlertMsg = sCheckAlertMsg + "\n" + "문의처: 심사실(2180)";
  12126. }
  12127. sCheckAlertMsg = sCheckAlertMsg + "\n\n지금 작성";
  12128. var selectedval = sysf_messageBox(sCheckAlertMsg, 'S001');
  12129. if(selectedval == "6") { // 지금 작성 하면 서식을 팝업으로 뛰우고 "아니오" 선택 하면 그대로 처방 저장 진행
  12130. var formcd = oRstlRef.getColumn(0, "checkformcd"); // 첫 행의 서식 팝업
  12131. var ioflag = ds_paminfo.getColumn(0, "ioflag");
  12132. var orddeptcd = ds_paminfo.getColumn(0, "orddeptcd");
  12133. var medispclid = ds_paminfo.getColumn(0, "medispclid");
  12134. var orddeptnm = ds_paminfo.getColumn(0, "orddeptnm");
  12135. var hngnm = ds_paminfo.getColumn(0, "hngnm");
  12136. var sa = ds_paminfo.getColumn(0, "sex") +"/"+ ds_paminfo.getColumn(0, "age");
  12137. var roomcd = ds_paminfo.getColumn(0, "roomcd");
  12138. var disparam = pid +"▦" + hngnm +"▦" + sa+"▦" + orddeptnm +"▦" + roomcd + "▦";
  12139. frmf_setParameter("pid", pid);
  12140. frmf_setParameter("orddd", indd);
  12141. frmf_setParameter("cretno", cretno);
  12142. frmf_setParameter("ioflag", ioflag);
  12143. frmf_setParameter("orddeptcd", orddeptcd);
  12144. frmf_setParameter("orddrid", medispclid);
  12145. frmf_setParameter("disppatinfo", disparam); //등록번호▦환자명▦성별/나이▦진료과▦병실▦
  12146. frmf_setParameter("openmode", "newform"); //오픈모드는 “recform”
  12147. frmf_setParameter("formcd", formcd);
  12148. frmf_modal("SSMMR01100", "SSMMR01100", "", "", 1, 0, 0, "", "", "", "", "", "M");
  12149. bRtn = false;
  12150. }else if(selectedval == "2") { // 취소 선택
  12151. bRtn = false;
  12152. }else { // 아니오 선택
  12153. bRtn = true;
  12154. }
  12155. } else {
  12156. bRtn = true;
  12157. }
  12158. }
  12159. return bRtn;
  12160. }
  12161. /**@desc : 임상연구 환자 체크
  12162. * @param : prcpflag: 처방구분 0: ( 의사처방, CP, 항암프로토콜, 임시), 2:간호, 4:지원부서
  12163. savekindflag: 0:인증저장, 1:임시저장
  12164. saveNode: 저장노드
  12165. * @return : true, false
  12166. * @authur : 엄영만 2011. 10. 21
  12167. */
  12168. function fCheckClincStdy( prcpflag, savekindflag, saveNode, prcpchkflag ){
  12169. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  12170. if (prcpgenrflag == 'O') {
  12171. if(ds_paminfo.getColumn(0, "insukind") == "71") {
  12172. var findRow = ds_main_prcplist.findRowExpr("status == 'I' && clincstdyflag != 'Y' && prcpclscd != '09'");
  12173. if(findRow != -1 && !utlf_isNull(ds_main_prcplist.getColumn(findRow, "prcpcd"))) {
  12174. sysf_messageBox ("임상연구 보험유형입니다. 전체 처방에 상세/일괄팝업을 통하여 '임상연구' 체크를 해주시기 바랍니다.", "I");
  12175. return false;
  12176. }
  12177. } else {
  12178. var findRow = ds_main_prcplist.findRowExpr("status == 'I' && clincstdyflag == 'Y'");
  12179. if(findRow != -1 && !utlf_isNull(ds_main_prcplist.getColumn(findRow, "prcpcd"))) {
  12180. sysf_messageBox ("보험유형이 임상연구가 아닙니다. 임상연구 처방을 입력 할수 없습니다.", "I");
  12181. return false;
  12182. }
  12183. }
  12184. }
  12185. return true;
  12186. }
  12187. /**@desc : 퇴원예고 후 퇴원처방 날짜체크: 퇴원예고 다음날로는 처방 불가
  12188. * @param : prcpflag: 처방구분 0: ( 의사처방, CP, 항암프로토콜, 임시), 2:간호, 4:지원부서
  12189. savekindflag: 0:인증저장, 1:임시저장
  12190. saveNode: 저장노드
  12191. * @return : true, false
  12192. * @authur : 엄영만 2012. 11. 01
  12193. */
  12194. function fCheckDsch( prcpflag, savekindflag, saveNode, prcpchkflag ){
  12195. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  12196. //퇴원예고 후 퇴원처방 날짜체크: 퇴원예고 다음날로는 처방 불가
  12197. if ( prcpgenrflag != "O" && prcpgenrflag != "E" ){ //응급일 경우 퇴원예정일 check부분 제외처리 .by sonjy 2008-09-10 조범준과장님 요청.
  12198. if ( ds_paminfo.getColumn(0, "dschdclrtyn") == "Y"
  12199. && !utlf_isNull(ds_main_prcplist.lookup("status", 'I', "prcpcd"))) {
  12200. if ( lf_getDsValue(ds_paminfo, 0, "dschdclrdt").length >= 8 ) {
  12201. var dschdclrdd = ds_paminfo.getColumn(0, "dschdclrdt").substring(0,8);
  12202. var sIprcAddYn = ds_paminfo.getColumn(0, "iprcaddyn"); // 추가처방 발행여부(심사실 가퇴원 환자)는 처방저장 가능 체크 제외 2012.04.16
  12203. if ( sIprcAddYn != "Y" && eval(ds_init.getColumn(0, "prcpdd")) > eval( dschdclrdd ) ) {
  12204. if ( ds_root.getColumn(0, "addprcp") != "Y" ) {
  12205. sysf_messageBox ( "퇴원예정일[" + dschdclrdd + "] 이후 날짜로는 처방을 내리실 수", "I004" );
  12206. return false;
  12207. }
  12208. }
  12209. }
  12210. }
  12211. }
  12212. return true;
  12213. }
  12214. /**@desc : 이식전 검사(Pre Work Up) 환자 여부 체크
  12215. * @param : prcpflag: 처방구분 0: ( 의사처방, CP, 항암프로토콜, 임시), 2:간호, 4:지원부서
  12216. savekindflag: 0:인증저장, 1:임시저장
  12217. saveNode: 저장노드
  12218. * @return : 대상 여부(Y/N)
  12219. * @authur : 엄영만 2012. 11. 07
  12220. */
  12221. function fCheckPreWorkUp ( prcpflag, savekindflag, saveNode, prcpchkflag ){
  12222. var bRtn = false;
  12223. var sIoFlag = ds_patflag.getColumn(0, "prcpgenrflag");
  12224. ds_save_saveflaginfo.setColumn(0, "preworkup", "N"); // 디폴트값
  12225. if( sIoFlag == "O"
  12226. && prcpflag == "0"
  12227. && savekindflag == "0"
  12228. && ds_root.getColumn(0, "addprcp" ) != "Y") { // 외래, 의사처방 일때만 체크
  12229. ds_save_saveflaginfo.setColumn(0, "preworkup", "N"); // 디폴트값
  12230. var findRow = ds_main_diagcdlist.findRowExpr("diagkindcdflag == 'M' && (status == '-' || status == 'I' || status == 'U' || status == 'T')");
  12231. var sIcd10Cd = (findRow == -1) ? "" : ds_main_diagcdlist.getColumn(findRow, "icd10cd");
  12232. lf_getHardCDList("N", 337, null, ds_hidden_chkworkupicd10list); // 337 장기이식 관련 체크 주상병
  12233. if(!utlf_isNull(ds_hidden_chkworkupicd10list.lookup("hardcd", sIcd10Cd, "hardcd")) ) { // 적용가능한 진단.
  12234. var pid = ds_paminfo.getColumn(0, "pid");
  12235. var orddd = ds_paminfo.getColumn(0, "orddd");
  12236. var sRef = dsf_createDsRow("ds_chkworkupreg_reqdata", [{col:"pid", type:"string", size:256, val:pid},
  12237. {col:"orddd", type:"string", size:256, val:orddd}]);
  12238. var sRstlRef = dsf_createDs("ds_chkworkupreg_rtndata");
  12239. var oParam = {};
  12240. oParam.id = "TRMMO00139";
  12241. oParam.service = "prcpmngtapp.PrcpMngt";
  12242. oParam.method = "reqGetWorkUpRegYn";
  12243. oParam.inds = "req=" + sRef;
  12244. oParam.outds = sRstlRef + "=rtndata";
  12245. oParam.async = false;
  12246. tranf_submit(oParam);
  12247. var oRstlRef = this.objects[sRstlRef];
  12248. var sWorkUpRegYn = oRstlRef.getColumn(0, "regyn");
  12249. if("Y" == sWorkUpRegYn) { // 수혜자 등록 여부 체크
  12250. bRtn = true;
  12251. } else {
  12252. if("6" == sysf_messageBox("주진단이 장기이식 기증자 진단으로 입력된 모든 처방은 [donor w/u]으로 적용 됩니다.\n\n계속 진행하실 경우 [Y]를 적용을 원하지 않을경우 [N] 선택 후 주진단을 변경 하십시요.", "Q")) {
  12253. ds_save_saveflaginfo.setColumn(0, "preworkup", "Y");
  12254. bRtn = true;
  12255. } else {
  12256. bRtn = false;
  12257. }
  12258. }
  12259. } else { // 장기기증과 관련 없는 일반적인 환자
  12260. var sDnorAcptYn = ds_paminfo.getColumn(0, "dnoracptyn" );
  12261. if("Y" == sDnorAcptYn) {
  12262. sysf_messageBox("주진단의 변경으로 장기이식 기증자 [donor w/u] 유형이 취소 됩니다.", "I999");
  12263. }
  12264. bRtn = true;
  12265. }
  12266. } else {
  12267. ds_save_saveflaginfo.setColumn(0, "preworkup", "N"); // 디폴트값
  12268. bRtn = true;
  12269. }
  12270. return bRtn;
  12271. }
  12272. function fCompareNonPrgDiag () {
  12273. var findRow = ds_main_diagcdlist.findRowExpr("diagkindcdflag == 'M' && (status == '-' || status == 'I' || status == 'U')");
  12274. var findRow1 = ds_initsrch_hardcdlist.findRowExpr("hardcdno == '409' && cdseqno == '1'");
  12275. var findRow2 = ds_initsrch_hardcdlist.findRowExpr("hardcdno == '409' && cdseqno == '2'");
  12276. var findRow3 = ds_initsrch_hardcdlist.findRowExpr("hardcdno == '409' && cdseqno == '3'");
  12277. var findRow4 = ds_initsrch_hardcdlist.findRowExpr("hardcdno == '409' && cdseqno == '4'");
  12278. if ( findRow < 0 ) return "N";
  12279. if ( findRow1 < 0 ) return "N";
  12280. if ( findRow2 < 0 ) return "N";
  12281. if ( findRow3 < 0 ) return "N";
  12282. if ( findRow4 < 0 ) return "N";
  12283. var icd10cd = ds_main_diagcdlist.getColumn(findRow, "icd10cd");
  12284. var hardcd1 = ds_initsrch_hardcdlist.getColumn(findRow1, "hardcd");
  12285. var hardcd2 = ds_initsrch_hardcdlist.getColumn(findRow2, "hardcd");
  12286. var hardcd3 = ds_initsrch_hardcdlist.getColumn(findRow3, "hardcd");
  12287. var hardcd4 = ds_initsrch_hardcdlist.getColumn(findRow4, "hardcd");
  12288. if ( icd10cd.length < 3 ) return "N";
  12289. if ( hardcd1.length < 3 ) return "N";
  12290. if ( hardcd2.length < 3 ) return "N";
  12291. if ( hardcd3.length < 3 ) return "N";
  12292. if ( hardcd4.length < 3 ) return "N";
  12293. var icd10cdSub = icd10cd.substr(0, 3);
  12294. var hardcd1Sub = hardcd1.substr(0, 3);
  12295. var hardcd2Sub = hardcd2.substr(0, 3);
  12296. var hardcd3Sub = hardcd3.substr(0, 3);
  12297. var hardcd4Sub = hardcd4.substr(0, 3);
  12298. if (hardcd1Sub <= icd10cdSub && icd10cdSub <= hardcd2Sub ){
  12299. return "Y";
  12300. } else if (hardcd3Sub <= icd10cdSub && icd10cdSub <= hardcd4Sub ){
  12301. return "Y";
  12302. } else {
  12303. return "N";
  12304. }
  12305. }
  12306. /**@-----------------------------------------------------------------------------------
  12307. * @desc : 스크린 중앙 포인트 조회
  12308. * @param : nAxis : X축Y축구분(0:X축, 1:Y축), nPadding : 공백(px), nMonitorNumber : 모니터번호
  12309. * @return : 센터 포인트값
  12310. * @-----------------------------------------------------------------------------------
  12311. */
  12312. function getScreenCenterPoint(nAxis, nPadding, nMonitorNumber) {
  12313. if(parseInt(nAxis) != 0 && parseInt(nAxis) != 1)
  12314. nAxis = 0; // 디폴트 X축
  12315. if(utlf_isNull(nMonitorNumber) || parseInt(nMonitorNumber) < 0 || parseInt(nMonitorNumber) >= system.monitorcount) { // 모니터값이 없거나 잘못된 값일 경우
  12316. nMonitorNumber = sysf_getCurrentMonitorNumber(); // 화면이 로딩된 모니터 번호를 반환한다.
  12317. }
  12318. var objScreenInfo = system.getScreenRect(nMonitorNumber);
  12319. var resolution_width = 1280;
  12320. var resolution_height = 1024; // 디폴트로 1280,1024로 한다.
  12321. if(!utlf_isNull(objScreenInfo)) {
  12322. resolution_width = objScreenInfo.right - objScreenInfo.left;
  12323. resolution_height = objScreenInfo.bottom - objScreenInfo.top;
  12324. }
  12325. var resolution_pixel = (nAxis == 0) ? resolution_width : resolution_height;
  12326. if(utlf_isNull(nPadding) || nPadding < 0 || nPadding > resolution_pixel) { // 값이 없거나 음수, 화면크기보다 크면
  12327. nPadding = 0;
  12328. }
  12329. return Math.round((resolution_pixel - parseInt(nPadding)) / 2);
  12330. }
  12331. function getTuningYn(){
  12332. var sRTC = "ds_prcpsave_rtc_codeinfo"; // 처방저장 실시간 체크(RealTimeCheck)변수 노드 경로 인증저장 버튼 클릭시 신규 조회 한다. 2013.06.05 엄영만
  12333. var ds_codeinfo = this.objects[sRTC];
  12334. var sTuningYn = ds_codeinfo.lookup("hardcdno", '423', "trgtcd"); // 신규로직 적용여부
  12335. var findRow425 = ds_codeinfo.findRowExpr("hardcdno == '425' && trgtcd == '" + sysf_getUserInfo("userid") + "'");
  12336. if(sTuningYn == "Y") {
  12337. sTuningYn = "Y";
  12338. } else if (sTuningYn == "S" && !utlf_isNull(ds_codeinfo.getColumn(findRow425, "trgtcd"))) {
  12339. sTuningYn = "Y";
  12340. } else {
  12341. sTuningYn = "N";
  12342. }
  12343. return sTuningYn;
  12344. }]]></Script>