MMO001.xjs 390 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/***************************************************************************************************
  3. * System Name :
  4. * Job Name : EMR
  5. * File Name : MMO001.xjs
  6. * Creator : 이호성
  7. * Make Date : 2014.03.03
  8. *
  9. * Description : 진료 공통 메서드
  10. *--------------------------------------------------------------------------------------------------
  11. * Modify Date Modifier Modify Description
  12. *--------------------------------------------------------------------------------------------------
  13. *
  14. ***************************************************************************************************/
  15. include "emr_prcpmngtxp::MMOCommon.xjs";
  16. //=======================================================================================
  17. // Global Form Variable
  18. //---------------------------------------------------------------------------------------
  19. var prcpnmCol = 5; //처방명 컬럼 index
  20. var prcpcdCol = 4; //처방명 컬럼 index
  21. var diagnmCol = 4; //처방명 컬럼 index
  22. var icd10cdCol = 3; //처방명 컬럼 index
  23. var signyn = "Y"; //전자서명 사용하는 check 서버 에러시 N으로 수정
  24. var volflag = "time"; //1일 총용량 구분
  25. //var lv_sLglydisprcpyn = "N"; //제한항생제 저장
  26. var gridprcpsrchflag = "N"; //그리드 처방검색에서 앤터로 처방 넘겨줄때 검색이 다시 타는 것을 막음
  27. // var lgds_arrEssentialDsList = ["ds_data_paminfo", "ds_data_prcpdc", "ds_grid_diaglist", "ds_data_prcper", "ds_temp_ocrbldyn"
  28. // ,"ds_data_saveetcchklist", "ds_data_prcperlist", "ds_data_atadinfo", "ds_temp_geneunitlist"
  29. // ];
  30. /***************************************************************************************************
  31. * Function : lf_getFormObject
  32. * Description : TF는 XP와 다르게 팝업만 opener을 가지고 div는 opener가 없다(TF는 둘다 opener)
  33. 그래서 div인 경우 oOpener을 각화면 마다 만들어서 사용했다.
  34. 이때 TF는 소스가 항상 opener라 상관없었지만 XP는 구분을 해야 하므로
  35. 공통 함수를 하나 둬서 항상 구별 하여 가져올 수 있도록 하였다.
  36. (처방을 form_bottom 에서 띄우는 경우 frmf_checkOpener()으로는 제대로 처리를 할 수 없어서
  37. 우선은 oOpener이 선언 되지 않은 곳에서는 opener을 가져오도록 함)
  38. * Argument : flag [String : 화면 종류 구분]
  39. * return type : form에 대한 객체
  40. * Creator : 김상목
  41. ***************************************************************************************************/
  42. function lf_getFormObject(flag) {
  43. // var obj;
  44. // if(flag == "child" || flag == "pop"){// || utlf_isNull(flag)) {
  45. // try {
  46. // obj = oOpener;
  47. // } catch (e) {
  48. // obj = opener;
  49. // }
  50. // } else {
  51. // obj = this;
  52. // }
  53. return (flag == "child" || flag == "pop") ? (frmf_checkOpener() ? opener : oOpener) : this;
  54. }
  55. /***************************************************************************************************
  56. * Function : emr_getOrderBaseInfo
  57. * Description : 아이디에 해당하는 기초정보를 리턴한다. (시스템메세지 정보 조회)
  58. * Argument : sID [String : 데이타셋명(ds_를 제외한)]
  59. * : objSrcDs [Dataset : 리턴 데이타를 받을 데이타셋]
  60. * return type : [Dataset : 기초정보를 리턴]
  61. * Creator :
  62. * 변환 OK
  63. ***************************************************************************************************/
  64. function emr_getOrderBaseInfo(sID, objSrcDs)
  65. {
  66. var oDescDs = agv_objAppTopPath.form.dv_orderbasicinfo.lf_getOrderBaseInfo(sID);
  67. if (utlf_isNull(objSrcDs)) {
  68. return oDescDs;
  69. }
  70. else {
  71. objSrcDs.copyData(oDescDs, true);
  72. }
  73. }
  74. /***************************************************************************************************
  75. * Function : lf_addPrcp
  76. * Description : check 된 Source Node의 값을 목적지에 Append Node 한다.(처방검색)
  77. * Argument : objFlag - child or else
  78. * : strSrc - 출발지 Node
  79. * : strDest - 목적지 Node
  80. * : multiFlag - 복수 add 여부
  81. * : checkNM - check로 사용할 instance명
  82. * : checkFlag - check시 Value
  83. * : grdObj - 더블클릭시 값을 넘기는 그리드 명
  84. * : prcpNmClearFlag - 검색 row에 검색명 클리어암㈉?
  85. * : sCopyInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술, 05 CP, 06 항암 M0034
  86. * : ex) addPrcp("child", "/root/prcpsrch/prcplist", "/root/main/prcp", "N", "status", "I", grd_prcpsrchlist, "N");
  87. * return type :
  88. * Creator :
  89. * 변환 OK
  90. ***************************************************************************************************/
  91. function lf_addPrcp(sObjFlag, strSrc, strDest, sMultiFlag, sCheckNM, sCheckFlag, grdObj, sPrcpNmClearFlag, sCopyInptFlag, objInitDs)
  92. {
  93. var sRTC = "ds_temp_rtc_codeinfo"; // 처방복사 실시간 체크(RealTimeCheck)변수 노드 경로
  94. dsf_createDs(sRTC);
  95. // 추후 작업 완료 후 try catch 주석 풀어야 함 확인필요
  96. //try {
  97. // if (document.all("TRMMO00151") == null ) {
  98. // lf_addPrcp_Web(objFlag, strSrc, strDest, multiFlag, checkNM, checkFlag, grdObj, prcpNmClearFlag, sCopyInptFlag);
  99. // } else {
  100. ds_TRMMO00151.setColumn(0, "instcd", sysf_getUserInfo("dutplceinstcd"));
  101. ds_TRMMO00151.setColumn(0, "hardcdno", "435"); // 복사시 실시간 체크를 위한 하드코드 그룹
  102. ds_TRMMO00151.setColumn(0, "prcpdd", utlf_getCurrentDate()); // 적용일자
  103. var oParam = {};
  104. oParam.id = "TRMMO00151";
  105. oParam.service = "prcpmngtapp.PrcpMngt";
  106. oParam.method = "reqGetGroupHardCode";
  107. oParam.inds = "req=ds_TRMMO00151";
  108. oParam.outds = sRTC + "=codeinfo";
  109. oParam.async = false;
  110. tranf_submit(oParam); // 처방복사 실시간 체크(RealTimeCheck)변수 설정
  111. var ds_codeinfo = this.objects[sRTC];
  112. var sNewLogic = ds_codeinfo.lookup("hardcdno", '436', "trgtcd"); // 신규로직 적용여부
  113. var sScreenID = frmf_getScreenID();
  114. var sUserID = sysf_getUserInfo("userid");
  115. var findRow437 = ds_codeinfo.findRowExpr("hardcdno == '437' && trgtcd == '" + sCopyInptFlag + "'");
  116. var findRow438 = ds_codeinfo.findRowExpr("hardcdno == '438' && trgtcd == '" + sScreenID + "'");
  117. var findRow439 = ds_codeinfo.findRowExpr("hardcdno == '439' && trgtcd == '" + sUserID + "'");
  118. var data437 = (findRow437 == -1) ? "" : ds_codeinfo.getColumn(findRow437, "trgtcd");
  119. var data438 = (findRow438 == -1) ? "" : ds_codeinfo.getColumn(findRow438, "trgtcd");
  120. var data439 = (findRow439 == -1) ? "" : ds_codeinfo.getColumn(findRow439, "trgtcd");
  121. if(sNewLogic == "Y") { // Y 이면 아래에 코드는 제외 조건으로 처리 한다. CP 제외 (CP 적용버튼 클릭시 수정해야함.)
  122. if (utlf_isNull(data437) && utlf_isNull(data438)) {
  123. lf_addPrcp_App(sObjFlag, strSrc, strDest, sMultiFlag, sCheckNM, sCheckFlag, grdObj, sPrcpNmClearFlag, sCopyInptFlag);
  124. } else {
  125. lf_addPrcp_Web(sObjFlag, strSrc, strDest, sMultiFlag, sCheckNM, sCheckFlag, grdObj, sPrcpNmClearFlag, sCopyInptFlag);
  126. }
  127. } else if (sNewLogic == "S" && !utlf_isNull(data437) && !utlf_isNull(data438) && !utlf_isNull(data439) ) {
  128. lf_addPrcp_App(sObjFlag, strSrc, strDest, sMultiFlag, sCheckNM, sCheckFlag, grdObj, sPrcpNmClearFlag, sCopyInptFlag);
  129. } else {
  130. lf_addPrcp_Web(sObjFlag, strSrc, strDest, sMultiFlag, sCheckNM, sCheckFlag, grdObj, sPrcpNmClearFlag, sCopyInptFlag);
  131. }
  132. //}
  133. //} catch(err) {
  134. // sysf_messageBox ( "addPrcp() 실행 중 오류가 발생 하였습니다. 전산실(6598)로 연락 부탁드립니다.", "E" );
  135. // } finally {
  136. dsf_deleteDs(sRTC);
  137. //}
  138. }
  139. // function lf_srchModiRow(objDestDS, sObjFlag){
  140. // var nSrchRow = 0;
  141. //
  142. // nSrchRow = objDestDS.findRow("status", "S");
  143. //
  144. // if (nSrchRow < 1) {
  145. // nSrchRow = 0;
  146. // }
  147. // return nSrchRow;
  148. // }
  149. /**
  150. * @desc : check 된 Source Node의 값을 목적지에 Append Node 한다.(처방검색)
  151. * @param : objFlag - child or else
  152. : strSrc - 출발지 Node
  153. : strDest - 목적지 Node
  154. : multiFlag - 복수 add 여부
  155. : checkNM - check로 사용할 instance명
  156. : checkFlag - check시 Value
  157. : grdObj - 더블클릭시 값을 넘기는 그리드 명
  158. : prcpNmClearFlag - 검색 row에 검색명 클리어암㈉?
  159. : sCopyInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술, 05 CP, 06 항암 M0034
  160. : ex) addPrcp ( "child", "/root/prcpsrch/prcplist", "/root/main/prcp", "N", "status", "I", grd_prcpsrchlist, "N");
  161. * @return : void
  162. * @authur : 마정민 2007. 3. 12
  163. * 변환OK
  164. * @---------------------------------------------------
  165. */
  166. function lf_addPrcp_App(objFlag, strSrc, strDest, multiFlag, checkNM, checkFlag, grdObj, prcpNmClearFlag, sCopyInptFlag) {
  167. var startStepDate = new Date(); // 각 업부 시작 시간
  168. var endStepDate = null; // 각 업부 종료후 시간
  169. var step1Elapsed = null; // 코드별 체크 전 소요시간
  170. var step2Elapsed = null; // 코드별 체크 소요시간
  171. var step3Elapsed = null; // 코드별 체크 후 소요시간
  172. var nSrchRow = 0; // 검색행 Row번호
  173. var nCopyCnt = 0; // 복사 갯수
  174. var sScreenID = frmf_getScreenID(); // 호출 화면 아이디
  175. var sRowKey = ""; // sRowKey
  176. var sCopykeys = "";
  177. var sCopyIoFlag = "";
  178. var sBfGenrFlag = "";
  179. var sNowGenrFlag = "";
  180. // 소스노드의 Key값을 생성한다. 2013.07.05 엄영만
  181. var ds_src = this.objects[strSrc];
  182. //var srcNodeList = model.instances(0).selectNodes(strSrc); //or instance1.selectNodes(strSrc)
  183. if ( multiFlag == "Y" ){
  184. var sb = new StringBuffer();
  185. for( var i = 0; i < ds_src.rowcount; i++ ) {
  186. if ( ds_src.getColumn(i, checkNM) == checkFlag ) {
  187. sRowKey = ds_src.getColumn(i, "rowkey");
  188. if(utlf_isNull(sRowKey)) {
  189. continue;
  190. } else {
  191. if(sCopyInptFlag == "01") { // 전처방 조회 일때 외래/입원구분
  192. sNowGenrFlag = ds_src.getColumn(i, "prcpgenrflag");
  193. if (nCopyCnt == 0) {
  194. sBfGenrFlag = sNowGenrFlag;
  195. if (sNowGenrFlag == "O" || sNowGenrFlag == "S") { // 입원 외래 처방 구분
  196. sCopyIoFlag = "O";
  197. } else {
  198. sCopyIoFlag = "I";
  199. }
  200. } else { // 퇴원 후 외래 처방과 동시 복사 블러킹
  201. if (sBfGenrFlag != sNowGenrFlag) {
  202. sysf_messageBox ( "퇴원후 외래 처방과 입원 처방을 동시에 복사 하실 수 없습니다.", "I999" );
  203. return;
  204. }
  205. }
  206. }
  207. sb.append("'" + sRowKey + "'");
  208. nCopyCnt++;
  209. }
  210. }
  211. }
  212. sCopykeys = sb.toString(",");
  213. } else {
  214. sRowKey = ds_src.getColumn(ds_src.rowposition, "rowkey");
  215. if(utlf_isNull(sRowKey)) {
  216. return 0;
  217. } else {
  218. sCopykeys = "'" + sRowKey + "'";
  219. if (sCopyInptFlag == "01") { // 전처방 조회 일때 외래/입원구분
  220. sCopyIoFlag = ds_src.getColumn(ds_src.rowposition, "prcpgenrflag");
  221. if (sCopyIoFlag == "O" || sCopyIoFlag == "S") { // 입원 외래 처방 구분
  222. sCopyIoFlag = "O";
  223. } else {
  224. sCopyIoFlag = "I";
  225. }
  226. }
  227. nCopyCnt = 1;
  228. }
  229. }
  230. if(utlf_isNull(sCopykeys)){ // 조회할 코드가 있을경우에만 실행하도록 수정함.
  231. return 0;
  232. }
  233. endStepDate = new Date(); // 각 업부 종료후 시간
  234. step1Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 소요시간
  235. startStepDate = new Date(); // 각 업부 시작 시간
  236. var oTrgtObj = lf_getFormObject(objFlag);
  237. var ds_dest = oTrgtObj.objects[strDest];
  238. // 처리 속도 향상을 위해 잠시 데이타셋 이벤트 끔
  239. // -----------------------------------------------------------------------------------------
  240. lf_setDatasetEvent(ds_src, ds_dest, false);
  241. oTrgtObj.lf_addPrcpDetl_App(strDest, sCopyInptFlag, sScreenID, sCopykeys, sCopyIoFlag);
  242. endStepDate = new Date(); // 각 업부 종료후 시간
  243. step2Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 소요시간
  244. startStepDate = new Date(); // 각 업부 시작 시간
  245. nSrchRow = ds_dest.rowcount - 1;
  246. lf_hosinPrcpResnChk (objFlag, ds_dest );
  247. // 처리 후 속도 향상을 위해 꺼뒀던 데이타셋 이벤트 다시 켬
  248. lf_setDatasetEvent(ds_src, ds_dest, true);
  249. // -----------------------------------------------------------------------------------------
  250. lf_focusMain( nSrchRow, objFlag, prcpNmClearFlag);
  251. //KNUH, 약속처방 복사 시 치식 팝업이 한번만 뜨고 다른 치과처방에 동일하게 적용되도록 함. 처방복사가 완료되면 임시 instance는 제거함. (2011.03.28 JJE)
  252. oTrgtObj.dsf_deleteDs("ds_main_toot_prcp");
  253. // 20080925 항생제 추가 시는 그리드 editting을 위해 색 변경 로직 생략 by MoonSH
  254. //var cdssFlag = frmf_getParameter( "SPMMD01600_flag");
  255. frmf_clearParameter( "SPMMD01600_flag", "");
  256. // if (cdssFlag != "Y") {
  257. // fPrcpColor(objFlag);
  258. // }
  259. if ( objFlag != "child") {
  260. if( ds_root.getColumn(0, "cp" ) == "Y" ){
  261. if (prtlprcpstatus_SMMMO00110 != "U" ) {
  262. div_all.div_srch.visible = false;
  263. }
  264. }else{
  265. div_all.div_srch.visible = false;
  266. }
  267. }
  268. endStepDate = new Date(); // 각 업부 종료후 시간
  269. step3Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 소요시간
  270. // 속도체크 모니터링 로그 추가 2013.06.27 엄영만
  271. oTrgtObj.reqSetMonitoringLog("PrcpCopy", "APP", sScreenID, objFlag, sCopyInptFlag, multiFlag, prcpNmClearFlag, nCopyCnt, step1Elapsed+step2Elapsed+step3Elapsed, step1Elapsed, step2Elapsed, step3Elapsed);
  272. }
  273. /***************************************************************************************************
  274. * Function : lf_appendChildPrcp
  275. * Description : 소스노드를 목적지 노드에 append 하는 기능
  276. * Argument : strSrc => 소스 노드
  277. * : strDest => 목적지 노드
  278. * : flag => 같은화면에서 사용하는지 child에서 사용하는지
  279. * : autocheck => 자동체크하려면 체크벨류를 넣는다.
  280. * return type :
  281. * Creator :
  282. * Modifier :
  283. * 변환 OK
  284. ***************************************************************************************************/
  285. function lf_appendChildPrcp(strSrc, strDest, flag, autocheck) {
  286. var oDatasetSrc = this.objects[strSrc];
  287. if(utlf_isNull(flag)) flag = "child";
  288. var oTrgtObj = lf_getFormObject(flag);
  289. //* ---2007.11.12 (CP에서 미래처방을 수정하는 경우, 처방상세팝업에서 리턴 받은 값의 상태를 바꾼다) --- *//
  290. if(frmf_checkOpener() && !utlf_isNull(oTrgtObj.ds_root) && oTrgtObj.ds_root.getColumn(0, "cp") == "D") {
  291. if (oDatasetSrc.name == "ds_reset_prcplist"){
  292. return;
  293. } else {
  294. if (!utlf_isNull(oDatasetSrc.getColumn(0, "status"))) {
  295. oDatasetSrc.setColumn(0, "status", oTrgtObj.ds_temp.getColumn(0, "mstatus"));
  296. }
  297. }
  298. }
  299. //* --- End --- *//
  300. var oDatasetDest = oTrgtObj.objects[strDest];
  301. if (!utlf_isNull(autocheck)) {
  302. for (var i = 0; i < oDatasetSrc.rowcount; i++) {
  303. oDatasetSrc.setColumn(i, "status", autocheck);
  304. }
  305. }
  306. oDatasetDest.appendData(oDatasetSrc, true);
  307. }
  308. /***************************************************************************************************
  309. * Function : lf_makePrcpNm
  310. * Description : 처방내역만들기
  311. * Argument : strSrc [Dataset : 처리할 대상 데이타셋]
  312. * : nRow [Number : 대상 row]
  313. * : sSubOrdDeptCd [String : ]
  314. * return type : Dataset에 값 설정
  315. * Creator :
  316. * 변환OK
  317. ***************************************************************************************************/
  318. function lf_makePrcpNm(strSrc, nRow)
  319. {
  320. var ds_src = this.objects[strSrc];
  321. if ( ds_src.getColumn(nRow, "status") == "S" ) return;
  322. if ( ds_src.getColumn(nRow, "prcpflag") == "2" ) return;
  323. var prcpnmbf = "";
  324. var prcpnmaft = "";
  325. var opansflagcd = "";
  326. var prcpclscd = ds_src.getColumn(nRow, "prcpclscd"); //처방종류
  327. var prcpcd = ds_src.getColumn(nRow, "prcpcd"); //처방코드
  328. var prcpnm = ds_src.getColumn(nRow, "orgprcpnm"); //처방명
  329. var clincstdyflag = ds_src.getColumn(nRow, "clincstdyflag"); //임상연구
  330. var erprcpflag = ds_src.getColumn(nRow, "erprcpflag"); //응급구분
  331. var prnprcpflag = ds_src.getColumn(nRow, "prnprcpflag"); //prn
  332. var prepprcpflag = ds_src.getColumn(nRow, "prepprcpflag"); //prep
  333. var selfdrugflag = ds_src.getColumn(nRow, "selfdrugflag"); //self
  334. var powdflag = ds_src.getColumn(nRow, "powdflag"); //powder
  335. var drugspd = ds_src.getColumn(nRow, "drugspd"); //gtt
  336. var tnsfiltflag = ds_src.getColumn(nRow, "tnsfiltflag"); //filter
  337. var portprcpflag = ds_src.getColumn(nRow, "portprcpflag"); //portprcpflag
  338. //수술유형, 재활치료부위
  339. if ( prcpclscd == "F2" ) {
  340. var rehbprcpcurepartcd = ds_src.getColumn(nRow, "rehbprcpcurepartcd");
  341. if ( rehbprcpcurepartcd != "-" && !utlf_isNull(rehbprcpcurepartcd)) {
  342. opansflagcd = ds_M0046.lookup("cdid", rehbprcpcurepartcd, "cdnm");
  343. }
  344. } else if ( prcpclscd == "H2" ) {
  345. opansflagcd = ds_src.getColumn(nRow, "opansflagcd" );
  346. if ( opansflagcd != "-" && !utlf_isNull(opansflagcd)) {
  347. opansflagcd = ds_M0007.lookup("cdid", opansflagcd, "cdnm");
  348. }
  349. }
  350. // var opansflagcd = model.getValue ( strSrc + "[" + i + "]/tempcol1" );
  351. var dietprcpgenrflag = ds_src.getColumn(nRow, "dietprcpgenrflag"); //조/중/석
  352. var mealcalrcnts = ds_src.getColumn(nRow, "mealcalrcnts"); //열량
  353. var mealprotcnts = ds_src.getColumn(nRow, "mealprotcnts"); //단백질
  354. // var drugpackflag = model.getValue ( strSrc + "[" + i + "]/drugpackflag" ); //보호자식
  355. var prcpdelivefact = ds_src.getColumn(nRow, "prcpdelivefact"); //전달사항
  356. var ansttm = ds_src.getColumn(nRow, "prcprefseq"); //검사간격
  357. var drugspd = ds_src.getColumn(nRow, "drugspd"); //기본시간
  358. var trnptbftestflag = ds_src.getColumn(nRow, "trnptbftestflag");
  359. var prcptims = ds_src.getColumn(nRow, "prcptims"); //치료횟수
  360. var prcpdayno = ds_src.getColumn(nRow, "prcpdayno"); //치료일수
  361. var etcprcpresncd = ds_src.getColumn(nRow, "etcprcpresncd"); //마감일
  362. var irflag = ds_src.getColumn(nRow, "irflag"); //필터
  363. var precureprcpflag = ds_src.getColumn(nRow, "precureprcpflag"); //선처치
  364. var selfprcpflag = ds_src.getColumn(nRow, "selfprcpflag"); //자가
  365. var prcpkindcd = ds_src.getColumn(nRow, "prcpkindcd"); //처방종류
  366. var hsctdelivepos = ds_src.getColumn(nRow, "hsctdelivepos"); //hsct전달부서
  367. var rehbprcpenddd = ds_src.getColumn(nRow, "rehbprcpenddd"); //재활치료 마감일
  368. var cnt = 0;
  369. if ( erprcpflag == "Y") prcpnmbf = prcpnmbf + "[응급] ";
  370. if ( clincstdyflag == "Y") prcpnmbf = prcpnmbf + "[임상] ";
  371. if ( precureprcpflag == "Y") prcpnmbf = prcpnmbf + "[선] ";
  372. if ( prcpclscd == "A2" || prcpclscd == "A4" ) {
  373. //약
  374. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  375. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  376. if ( selfprcpflag == "Y") prcpnmbf = prcpnmbf + "[home] ";
  377. if ( selfdrugflag == "Y") prcpnmbf = prcpnmbf + "[self] ";
  378. prcpnm = prcpnmbf + prcpnm;
  379. if ( powdflag == "Y") prcpnm = prcpnm + "[powder] ";
  380. } else if ( prcpclscd == "A6" ) {
  381. //주사
  382. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  383. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  384. if ( selfprcpflag == "Y") prcpnmbf = prcpnmbf + "[home] ";
  385. if ( selfdrugflag == "Y") prcpnmbf = prcpnmbf + "[self] "; // 주사일때도 셀프 표시 2013.07.10 엄영만
  386. prcpnm = prcpnmbf + prcpnm;
  387. if ( !utlf_isNull(drugspd) && drugspd != "0" ) prcpnm = prcpnm + " [" + drugspd + "] ";
  388. } else if ( prcpclscd == "D2" ) {
  389. //주사
  390. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  391. prcpnm = prcpnmbf + prcpnm;
  392. } else if ( prcpclscd == "B4" ) {
  393. //수혈 (혈액수혈)
  394. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  395. // if ( prepprcpflag == "N") prcpnmbf = prcpnmbf + " [T/F] ";
  396. prcpnm = prcpnmbf + prcpnm;
  397. if ( tnsfiltflag == "Y") prcpnm = prcpnm + "[Filter] ";
  398. if ( irflag == "Y") prcpnm = prcpnm + "[Irr] ";
  399. } else if ( prcpclscd == "C2" || prcpclscd == "C6" || prcpclscd == "E2" || prcpclscd == "G2") {
  400. //방사선 검사(기능검사, 내시경,천자,생검, 방사선, 핵의학영상, 방사선치료)
  401. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  402. if ( portprcpflag == "Y") prcpnmbf = prcpnmbf + "[por] ";
  403. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  404. prcpnm = prcpnmbf + prcpnm;
  405. } else if ( prcpclscd == "H2" || prcpclscd == "H4" || prcpclscd == "K2" || prcpclscd == "C4" ) {
  406. //수술, 처치, 치과
  407. prcpnm = prcpnmbf + prcpnm;
  408. if ( !utlf_isNull(opansflagcd) && opansflagcd != "-") prcpnm = prcpnm + " [" + opansflagcd + "] "; //수술마취구분-수술유형
  409. } else if ( prcpclscd == "B2" || prcpclscd == "B6" ) {
  410. //진단검사 (검체검사), 핵의학 체외
  411. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  412. prcpnm = prcpnmbf + prcpnm;
  413. // if ( ansttm != "") prcpnm = prcpnm + " [" + ansttm + "] "; //검사간격
  414. // if ( drugspd != "") prcpnm = prcpnm + " [" + drugspd + "] "; //기본시간
  415. } else if ( prcpclscd == "03" ) {
  416. //식이
  417. if ( dietprcpgenrflag == "1") prcpnmbf = prcpnmbf + "[조식] ";
  418. if ( dietprcpgenrflag == "2") prcpnmbf = prcpnmbf + "[중식] ";
  419. if ( dietprcpgenrflag == "3") prcpnmbf = prcpnmbf + "[석식] ";
  420. prcpnm = prcpnmbf + prcpnm;
  421. if ( !utlf_isNull(mealcalrcnts) && mealcalrcnts != "0" ) prcpnm = prcpnm + "[" + opansflagcd + ":" + mealcalrcnts + "] ";
  422. var drugmastspec = ds_src.getColumn(nRow, "drugmastspec") + "▩";
  423. var mealprotcntscond = lf_getArrayData (drugmastspec, 0, 3, " ▩", "|" );
  424. if ( !utlf_isNull(mealprotcnts) && mealprotcntscond == "Y" ) prcpnm = prcpnm + "[횟수:" + mealprotcnts + "] ";
  425. // if ( drugpackflag == "Y") prcpnm = prcpnm + "[보호자식추가] ";
  426. //if ( prcpdelivefact != "") prcpnm = prcpnm + " [" + prcpdelivefact + "] ";
  427. } else if ( prcpclscd == "F2" ) { //재활
  428. prcpnm = prcpnmbf + prcpnm;
  429. if("HZ272" != prcpcd ) { // 요청번호 20140422010 온열암 치료는 재활표기 따르지 않음. 스크립트 함수도 같이 수정. 2014.04.23 엄영만
  430. if ( !utlf_isNull(opansflagcd) && opansflagcd != "-") {
  431. //prcpnm = prcpnm + " [치료부위:" + opansflagcd + "] ";
  432. prcpnmaft = prcpnmaft + " " + opansflagcd + " ";
  433. cnt++;
  434. }
  435. if ( !utlf_isNull(prcptims) && prcptims != 0 ) {
  436. //prcpnm = prcpnm + " [1일치료횟수:" + prcptims + "/1일] ";
  437. prcpnmaft = prcpnmaft + " " + prcptims + "/1일 ";
  438. cnt++;
  439. }
  440. if ( !utlf_isNull(rehbprcpenddd) && rehbprcpenddd != "-" ) {
  441. //prcpnm = prcpnm + " [마감일:" + etcprcpresncd.substring (0,4) + "-" + etcprcpresncd.substring (4,6) + "-" + etcprcpresncd.substring (6,8) + "] ";
  442. prcpnmaft = prcpnmaft + " " + rehbprcpenddd.substring (0,4) + "-" + rehbprcpenddd.substring (4,6) + "-" + rehbprcpenddd.substring (6,8) + " ";
  443. cnt++;
  444. }
  445. if ( cnt > 0 ) {
  446. prcpnm = prcpnm + " [" + prcpnmaft + "]";
  447. }
  448. }
  449. } else {
  450. prcpnm = prcpnmbf + prcpnm;
  451. }
  452. if ( trnptbftestflag == "Y") {
  453. prcpnm = prcpnm + " [pre-workup]";
  454. } else if ( trnptbftestflag == "D") {
  455. prcpnm = prcpnm + " [donor w/u]";
  456. }
  457. if ( prcpkindcd == "90") prcpnm = prcpnm + " [입원전검사(당일)] ";
  458. if ( prcpkindcd == "95") prcpnm = prcpnm + " [입원전검사(전일)] ";
  459. if ( prcpkindcd == "80") prcpnm = prcpnm + " [예약처방] ";
  460. if ( hsctdelivepos == "1") prcpnm = prcpnm + " [병동]";
  461. else if ( hsctdelivepos == "2") prcpnm = prcpnm + " [성분헌혈]";
  462. else if ( hsctdelivepos == "3") prcpnm = prcpnm + " [세포처리실]";
  463. if ( ds_src.getColumn(nRow, "drprcpetc2") == "Y" ) { // 특수주사실 체크 추가 요청 20081027 by Moonsh
  464. prcpnm = prcpnm + " [암센터주사실] ";
  465. } else if ( ds_src.getColumn(nRow, "drprcpetc2") == "B" ) {
  466. prcpnm = prcpnm + " [BMT주사실] ";
  467. }
  468. ds_src.setColumn(nRow, "prcpnm", prcpnm );
  469. ds_src.setColumn(nRow, "prcprefseq","0" );
  470. }
  471. /***************************************************************************************************
  472. * Function : lf_chgChoiDr
  473. * Description : 선택진료의 변경
  474. * Argument : sMode [String : ]
  475. * : nCurRow [Number : ]
  476. * return type :
  477. * Creator :
  478. * 변환OK
  479. ***************************************************************************************************/
  480. function lf_chgChoiDr( mode, currow, sXpt, sYpt )
  481. {
  482. var mon = sysf_getCurrentMonitorNumber();
  483. var xpt;
  484. var ypt;
  485. if(!utlf_isNull(sXpt) && !utlf_isNull(sYpt)) {
  486. xpt = sXpt;
  487. ypt = sYpt;
  488. } else {
  489. xpt = this.getOwnerFrame().position.x + 400;
  490. ypt = this.getOwnerFrame().position.y + 98;
  491. }
  492. var ordtype = "";
  493. var prcpcd = "";
  494. var prcpdd = "";
  495. var prcpnm = "";
  496. var prcpexecdeptcd = "";
  497. var prcpclscd = "";
  498. var drugmthdspccd = "";
  499. var useyn = "";
  500. var userid = "";
  501. //default 선택진료과 설정
  502. if ( mode == "pop" ) {
  503. ordtype = ds_main_prcplist.getColumn(0, "prcpgenrflag" );
  504. prcpcd = ds_main_prcplist.getColumn(0, "prcpcd" );
  505. prcpnm = ds_main_prcplist.getColumn(0, "prcpnm" );
  506. prcpexecdeptcd = ds_main_prcplist.getColumn(0, "prcpexecdeptcd" );
  507. prcpclscd = ds_main_prcplist.getColumn(0, "prcpclscd" );
  508. drugmthdspccd = ds_main_prcplist.getColumn(0, "drugmthdspccd" );
  509. } else if ( mode == "auto" ) {
  510. //ordtype = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/prcpgenrflag" );
  511. ordtype = ds_patflag.getColumn(0, "prcpgenrflag" ); //입력구분
  512. prcpcd = ds_main_prcplist.getColumn(currow, "prcpcd" );
  513. prcpnm = ds_main_prcplist.getColumn(currow, "prcpnm" );
  514. prcpexecdeptcd = ds_main_prcplist.getColumn(currow, "prcpexecdeptcd" );
  515. prcpclscd = ds_main_prcplist.getColumn(currow, "prcpclscd" );
  516. drugmthdspccd = ds_main_prcplist.getColumn(currow, "drugmthdspccd" );
  517. } else {
  518. ordtype = ds_main_prcplist.getColumn(ds_main_prcplist.rowposition, "prcpgenrflag" );
  519. prcpcd = ds_main_prcplist.getColumn(ds_main_prcplist.rowposition, "prcpcd" );
  520. prcpnm = ds_main_prcplist.getColumn(ds_main_prcplist.rowposition, "prcpnm" );
  521. prcpexecdeptcd = ds_main_prcplist.getColumn(ds_main_prcplist.rowposition, "prcpexecdeptcd" );
  522. prcpclscd = ds_main_prcplist.getColumn(ds_main_prcplist.rowposition, "prcpclscd" );
  523. drugmthdspccd = ds_main_prcplist.getColumn(ds_main_prcplist.rowposition, "drugmthdspccd" );
  524. }
  525. //defalut 선택진료과 설정. 예외
  526. if ( prcpexecdeptcd == "2010500000" || prcpexecdeptcd == "2010302030" ) { //내시경검사실, 내분비대사내과 일경우 소화기내과
  527. prcpexecdeptcd = "2010300000";
  528. } else if ( prcpexecdeptcd == "2220204000" ) { //물리치료실일 경우 재활의학과
  529. prcpexecdeptcd = "2220000000";
  530. } else if ( prcpexecdeptcd == "2010402030" || prcpexecdeptcd == "2010402090" ) { //심장혈관촬영실, 심전도검사실 경우 순환기내과
  531. prcpexecdeptcd = "2010400000";
  532. } else if ( prcpexecdeptcd == "2200238000" ) { //채혈실일 경우 진단검사의학과
  533. prcpexecdeptcd = "2200000000";
  534. }
  535. // 신규로직 테스트 적용 여부 추후 삭제 필요.
  536. var sChkNewLogicYn = lf_getHardCDList("Y", 400, 3); // 400 처방 관련 신규로직 적용여부
  537. var orddrid = "";
  538. var oTrgtObj = lf_getFormObject(mode);
  539. if ( ordtype == "O" ) {
  540. orddrid = oTrgtObj.ds_paminfo.getColumn(0, "orddrid");
  541. } else {
  542. orddrid = oTrgtObj.ds_paminfo.getColumn(0, "medispclid");
  543. }
  544. if(utlf_isNull(this.objects["ds_hidden_testcheckspcdrlist"]))
  545. this.dsf_createDs("ds_hidden_testcheckspcdrlist");
  546. lf_getHardCDList("N", 402, 0 , ds_hidden_testcheckspcdrlist); // 402 신규로직 적용대상 2011.11.19 엄영만 (추후 관련 로직 삭제해야함.)
  547. // End of 신규로직 테스트 적용 여부 추후 삭제 필요. orddrid 가져 오는 부분도 필요 없음.
  548. if ( sChkNewLogicYn == "Y"
  549. || (sChkNewLogicYn == "N" && !utlf_isNull(ds_hidden_testcheckspcdrlist.lookup("hardcd", orddrid, "hardcd"))) ) { // 신규로직 적용여부
  550. prcpdd = oTrgtObj.ds_init.getColumn(0, "prcpdd");
  551. frmf_clearParameter ( "SPMMB08600_useyn" );
  552. frmf_clearParameter ( "SPMMB08600_userid" );
  553. frmf_clearParameter ( "SPMMB08600_prcpdd" );
  554. frmf_clearParameter ( "SPMMB08600_prcpcd" );
  555. frmf_clearParameter ( "SPMMB08600_prcpnm" );
  556. frmf_clearParameter ( "SPMMB08600_orddeptcd" );
  557. frmf_clearParameter ( "SPMMB08600_prcpclscd" );
  558. frmf_clearParameter ( "SPMMB08600_drugmthdspccd" );
  559. frmf_clearParameter ( "SPMMB08600_userinfo" );
  560. frmf_setParameter("SPMMB08600_prcpdd", prcpdd);
  561. frmf_setParameter("SPMMB08600_prcpcd", prcpcd);
  562. frmf_setParameter("SPMMB08600_prcpnm", prcpnm);
  563. frmf_setParameter("SPMMB08600_orddeptcd", prcpexecdeptcd);
  564. frmf_setParameter("SPMMB08600_prcpclscd", prcpclscd);
  565. frmf_setParameter("SPMMB08600_drugmthdspccd",drugmthdspccd);
  566. frmf_setParameter("SPMMB0800_ioflag", ordtype);
  567. frmf_modal("SPMMB08600", "SPMMB08600", null, false, mon, xpt, ypt, null, null, null, null, null, "P");
  568. useyn = frmf_getParameter("SPMMB08600_useyn");
  569. userid = frmf_getParameter("SPMMB08600_userid");
  570. } else {
  571. frmf_clearParameter ( "SPMMB08300_flag");
  572. frmf_clearParameter ( "SPMMB08300_useyn" );
  573. frmf_clearParameter ( "SPMMB08300_userid" );
  574. frmf_clearParameter ( "SPMMB08300_orddeptcd" );
  575. frmf_clearParameter ( "SPMMB08300_userinfo" );
  576. frmf_setParameter("SPMMB08300_orddeptcd", prcpexecdeptcd);
  577. frmf_setParameter("SPMMB08300_ioflag", ordtype);
  578. frmf_modal("SPMMB08300", "SPMMB08300", null, false, mon, xpt, ypt, null, null, null, null, null, "P");
  579. useyn = frmf_getParameter("SPMMB08300_useyn");
  580. userid = frmf_getParameter("SPMMB08300_userid");
  581. }
  582. ds_main_prcplist.enableevent = false;
  583. if(useyn == "Y"){
  584. if ( mode == "pop" ) {
  585. if ( ds_main_prcplist.getColumn(0, "tempcol24" ) == "Y" ) {
  586. ds_main_prcplist.setColumn(0, "choiordflag", "Y" );
  587. ds_main_prcplist.setColumn(0, "specdrid", userid );
  588. } else {
  589. ds_main_prcplist.setColumn(0, "choiordflag", "N" );
  590. ds_main_prcplist.setColumn(0, "specdrid", "-");
  591. }
  592. } else if ( mode == "auto" ) {
  593. if ( ds_main_prcplist.getColumn(currow, "tempcol24" ) == "Y" ) {
  594. ds_main_prcplist.setColumn(currow, "choiordflag", "Y" );
  595. ds_main_prcplist.setColumn(currow, "specdrid", userid );
  596. } else {
  597. ds_main_prcplist.setColumn(currow, "choiordflag", "N" );
  598. ds_main_prcplist.setColumn(currow, "specdrid", "-");
  599. }
  600. } else {
  601. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  602. for (var i = 0; i < selectedRows.length; i++) {
  603. if ( ds_main_prcplist.getColumn(selectedRows[i], "tempcol24") == "Y" ) {
  604. ds_main_prcplist.setColumn(selectedRows[i], "choiordflag", "Y");
  605. ds_main_prcplist.setColumn(selectedRows[i], "specdrid", userid);
  606. } else {
  607. ds_main_prcplist.setColumn(selectedRows[i], "choiordflag", "N");
  608. ds_main_prcplist.setColumn(selectedRows[i], "specdrid", "-");
  609. }
  610. }
  611. }
  612. } else {
  613. if ( mode == "pop" ) {
  614. ds_main_prcplist.setColumn(0, "choiordflag", "N" );
  615. ds_main_prcplist.setColumn(0, "specdrid", "-");
  616. } else if ( mode == "auto" ) {
  617. ds_main_prcplist.setColumn(currow, "choiordflag", "N" );
  618. ds_main_prcplist.setColumn(currow, "specdrid", "-");
  619. } else {
  620. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  621. for (var i = 0; i < selectedRows.length; i++) {
  622. ds_main_prcplist.setColumn(selectedRows[i], "choiordflag", "N" );
  623. ds_main_prcplist.setColumn(selectedRows[i], "specdrid", "-");
  624. }
  625. }
  626. }
  627. // 선택진료의사가 아닐 경우 는 기본값으로 셋팅한다.
  628. var ds_usercombo = emr_getOrderBaseInfo("usercombo")
  629. if (mode =="pop") {
  630. var chkChoiSpcldrid = ds_main_prcplist.getColumn(0, "specdrid");
  631. var choiSpclDrid = ds_usercombo.lookup("userid", chkChoiSpcldrid, "userid");
  632. if (utlf_isNull(choiSpclDrid)) {
  633. ds_main_prcplist.setColumn(0, "choiordflag", "N");
  634. ds_main_prcplist.setColumn(0, "specdrid", "-");
  635. }
  636. } else if (mode == "auto") {
  637. var chkChoiSpcldrid = ds_main_prcplist.getColumn(currow, "specdrid");
  638. var choiSpclDrid = ds_usercombo.lookup("userid", chkChoiSpcldrid, "userid");
  639. if (utlf_isNull(choiSpclDrid)) {
  640. ds_main_prcplist.setColumn(currow, "choiordflag", "N" );
  641. ds_main_prcplist.setColumn(currow, "specdrid", "-");
  642. }
  643. } else {
  644. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  645. for (var i = 0; i < selectedRows.length; i++) {
  646. var chkChoiSpcldrid = ds_main_prcplist.getColumn(selectedRows[i], "specdrid");
  647. var choiSpclDrid = ds_usercombo.lookup("userid", chkChoiSpcldrid, "userid");
  648. if (utlf_isNull(choiSpclDrid)) {
  649. ds_main_prcplist.setColumn(selectedRows[i], "choiordflag", "N" );
  650. ds_main_prcplist.setColumn(selectedRows[i], "specdrid", "-");
  651. }
  652. }
  653. }
  654. ds_main_prcplist.enableevent = true;
  655. }
  656. // * 변환 OK
  657. function lf_prcpExecDeptSrch(flag) {
  658. var prcpcd = ds_main_prcplist.getColumn(0, "prcpcd" );
  659. var prcpdd = "";
  660. if(frmf_checkOpener() && !utlf_isNull(opener.ds_init)) {
  661. prcpdd = opener.ds_init.getColumn(0, "prcpdd");
  662. }
  663. // div 같은 곳에서 실행될때를 위해 넣음
  664. if(utlf_isNull(prcpdd)) {
  665. try {
  666. if(!utlf_isNull(oOpener) && !utlf_isNull(oOpener.objects["ds_init"])) {
  667. prcpdd = lf_getDsValue(oOpener.ds_init, 0, "prcpdd");
  668. }
  669. } catch (E) {}
  670. }
  671. if(utlf_isNull(prcpdd)) {
  672. prcpdd = ds_init.getColumn(0, "prcpdd" );
  673. if (utlf_isNull(prcpdd)) {
  674. prcpdd = utlf_getCurrentDate();
  675. }
  676. }
  677. if(utlf_isNull(this.objects["ds_send"])) {
  678. dsf_createDsRow("ds_send", [{col:"cond1", type:"string", size:256, val:prcpcd},
  679. {col:"cond2", type:"string", size:256, val:prcpdd},
  680. {col:"cond3", type:"string", size:256, val:flag}]);
  681. } else {
  682. ds_send.clearData();
  683. ds_send.addRow();
  684. ds_send.setColumn(0, "cond1" , prcpcd);
  685. ds_send.setColumn(0, "cond2" , prcpdd);
  686. ds_send.setColumn(0, "cond3" , flag);
  687. }
  688. //KNUH_20110208, 주희경, 진료 속도 개선을 위해 로그인 시 미리 데이터를 조회해 놓고 copy해서 쓰는 방식으로 변경
  689. //flag가 all이면 이미 조회 해 놓은 데이터 카피
  690. var srchSuccess = false;
  691. if ( flag == "all" )
  692. {
  693. var ds_dept = emr_getOrderBaseInfo("dept");
  694. if ( ds_dept.rowcount > 0 )
  695. {
  696. ds_orddept.copyData(ds_dept);
  697. srchSuccess = true;
  698. }
  699. else //KNUH_20110208, 주희경 복사할 데이터가 없을 시 (비정상 로딩) 강제 로그아웃
  700. {
  701. sysf_messageBox("현재 프로그램 배포로 인해 진료에 필요한 데이터를 재조회 해야합니다. 죄송하지만 반드시 다시 로그인 해주시기 바랍니다.", "");
  702. }
  703. }
  704. //all이 아니거나 복사할 데이터가 없을 시 해당 데이터 재조회
  705. if(!srchSuccess) {
  706. var oParam = {};
  707. oParam.id = "TRMMO00116";
  708. oParam.service = "prcpmngtapp.PrcpMngt";
  709. oParam.method = "reqGetPrcpExecDeptSrch";
  710. oParam.inds = "req=ds_send";
  711. oParam.outds = "ds_orddept=dept";
  712. oParam.async = false;
  713. tranf_submit(oParam);
  714. }
  715. }
  716. /***************************************************************************************************
  717. * Function : lf_altPrcpCd
  718. * Description : 처방에 따른 알림 팝업호출(repeat, 대체처방 등)
  719. * Argument : currow []
  720. * : flag
  721. * : strSrc
  722. * : prcpInptFlag
  723. * return type :
  724. * Creator :
  725. * 변환OK
  726. ***************************************************************************************************/
  727. function lf_altPrcpCd( currow, flag, strSrc, prcpInptFlag )
  728. {
  729. var prcpcd = "";
  730. var prcpnm = "";
  731. var altcdinfo = "";
  732. var ds_src;
  733. if ( flag == "child" ) {
  734. var oTrgtObj = lf_getFormObject(flag);
  735. var childlist = oTrgtObj.div_all.Tab_prcp.components;
  736. var childcomp = childlist[oTrgtObj.div_all.Tab_prcp.tabindex];
  737. ds_src = childcomp.objects[strSrc];
  738. } else {
  739. ds_src = this.objects[strSrc];
  740. }
  741. prcpcd = ds_src.getColumn(currow, "prcpcd");
  742. prcpnm = ds_src.getColumn(currow, "prcpnm");
  743. altcdinfo = ds_src.getColumn(currow, "tempcol16");
  744. frmf_setParameter ( "SPMMO15400_cond1", prcpcd ); //원래처방코드
  745. frmf_setParameter ( "SPMMO15400_cond2", prcpnm ); //처방명
  746. frmf_setParameter ( "SPMMO15400_cond3", altcdinfo ); //대체처방코드
  747. frmf_modal("SPMMO15400", "SPMMO15400", null, null, null, null, null, null, null, null, null, null, "M");
  748. frmf_clearParameter ( "SPMMO15400_cond1" ); //원래처방코드
  749. frmf_clearParameter ( "SPMMO15400_cond2" ); //처방명
  750. frmf_clearParameter ( "SPMMO15400_cond3" ); //대체처방코드
  751. return 0;
  752. }
  753. /**
  754. * @desc : 항생제이면서 제한항생자가 아니면 항생제처리
  755. *
  756. * @
  757. * @param :
  758. * @return :
  759. * @author : 마정민
  760. * @---------------------------------------------------
  761. */
  762. function lf_antiMicChk( currow, flag, strSrc, prcpInptFlag ) {
  763. //20080725 마정민추가. 항생제이면서 제한항생자가 아니면 항생제처리
  764. var prcpcd = "";
  765. var drugmastspec = "";
  766. var pid = "";
  767. var prcpdd = "";
  768. //CP는 CDSS항생제 체크 skip임. (2008.09.29 JJE)
  769. if( ds_root.getColumn(0, "cp") == "Y" ){
  770. return 1;
  771. }
  772. var ds_src;
  773. if ( flag == "child" ) {
  774. var oTrgtObj = lf_getFormObject(flag);
  775. var childlist = oTrgtObj.div_all.Tab_prcp.components;
  776. var childcomp = childlist[oTrgtObj.div_all.Tab_prcp.tabindex];
  777. ds_src = childcomp.objects[strSrc];
  778. } else {
  779. ds_src = this.objects[strSrc];
  780. }
  781. prcpcd = ds_src.getColumn(currow, "prcpcd");
  782. prcpdd = ds_init.getColumn(0, "prcpdd");
  783. pid = ds_paminfo.getColumn(0, "pid");
  784. var sRef = dsf_createDsRow("ds_TRMMO01609", [{col:"pid", type:"string", size:256, val:pid},
  785. {col:"prcpcd", type:"string", size:256, val:prcpcd},
  786. {col:"prcpdd", type:"string", size:256, val:prcpdd}]);
  787. var sDsResult = dsf_createDs("ds_result_antibiotics");
  788. var oDsResult = this.objects[sDsResult];
  789. var oParam = {};
  790. oParam.id = "TRMMO01609";
  791. oParam.service = "prcpmngtapp.AntiBioPrcpMngt";
  792. oParam.method = "reqGetAntiBioBalDayChk";
  793. oParam.inds = "req=" + sRef;
  794. oParam.outds = sDsResult + "=antibiotics";
  795. oParam.async = false;
  796. oParam.callback = "cf_TRMMO01609";
  797. tranf_submit(oParam);
  798. var result = 1;
  799. if(arErrorCode.pop("TRMMO01609") > -1){
  800. /*var chkAntibio = "20"; // 항생제 antibiotics(20), 제한항생제 restantimic(10) 따로 구분 후 저장 - by Moonsh 20081013
  801. var getAntibio = model.getValue ( "/root/result/antibiotics/antibioticsinfo" );
  802. var srchAntibio = getAntibio.split("|");
  803. if (srchAntibio[1] == "20"){
  804. chkAntibio = "20";
  805. } else {
  806. chkAntibio = "10";
  807. setParameter ( "SPMMMD00700_chkday", srchAntibio[9] ); //체크일 추가 요청 - by Moonsh 20081021
  808. }*/
  809. if (oDsResult.getColumn(0, "popyn" )=="Y") {
  810. // 항생제 검색어 초기화
  811. var prcplistcnt = ds_main_prcplist.rowcount - 1;
  812. var prcpcd = ds_main_prcplist.getColumn(prcplistcnt, "prcpcd" );
  813. var prcpnm = ds_main_prcplist.getColumn(prcplistcnt, "prcpnm" );
  814. if (!utlf_isNull(prcpcd) && utlf_isNull(prcpnm)) {
  815. ds_main_prcplist.setColumn(prcplistcnt, "prcpcd", "");
  816. }
  817. lf_prcpModal("SPMMD01600", 20, 50);
  818. result = 0;
  819. } else {
  820. ds_src.setColumn(currow, "tempcol8", oDsResult.getColumn(0, "antibioticsinfo"));
  821. result = 1;
  822. }
  823. }
  824. dsf_deleteDs(sRef);
  825. dsf_deleteDs(sDsResult);
  826. return result;
  827. }
  828. function cf_TRMMO01609(sSvcId, nErrorCode, sErrorMsg) {
  829. arErrorCode.push(sSvcId, nErrorCode);
  830. }
  831. /***************************************************************************************************
  832. * Function : lf_setPrcpUnit
  833. * Description : 처방화면에서 수량단위, 횟수단위, 투여속도 단위 등을 선택하는 팝업 호출
  834. * Argument : nRow
  835. * : objSrcDs
  836. * : sFlag
  837. * : sCalcFlag
  838. * return type :
  839. * Creator :
  840. ***************************************************************************************************/
  841. function lf_setPrcpUnit(nRow, objSrcDs , sFlag , sCalcFlag, e:GridClickEventInfo )
  842. {
  843. if (nRow < 0)
  844. return;
  845. if (utlf_isNull(sFlag))
  846. sFlag = "drprcpetc3";
  847. var status = objSrcDs.getColumn(nRow, "status");
  848. if (status == "S" || utlf_isNull(status))
  849. return;
  850. var prcpstat = objSrcDs.getColumn(nRow, "tempcol1");
  851. if (!utlf_isNull(prcpstat) && prcpstat != "000" && sCalcFlag != "Y")
  852. return;
  853. var inptcntrid = objSrcDs.getColumn(nRow, "inptctrlflag");
  854. var objInptListDs = emr_getOrderBaseInfo("prcpinptctrllist");
  855. if (objInptListDs != null) {
  856. objInptListDs.filterstr = "inptcntrid=='"+ inptcntrid +"'";
  857. }
  858. if (objInptListDs == null || objInptListDs.rowcount < 1) {
  859. objInptListDs.filterstr = "";
  860. return;
  861. }
  862. var xpt = 0;
  863. var ypt = 0;
  864. var sScreenId = this.name.split("_")[0];
  865. if (sScreenId == "SMMMO00100" || sScreenId == "SMMMO00200") {
  866. if(utlf_isNull(e)){
  867. xpt = system.cursorx;
  868. ypt = system.cursory;
  869. if (sFlag == "drprcpetc3")
  870. xpt = 777;
  871. else if (sFlag == "drprcpetc7")
  872. xpt = 803;
  873. else if (sFlag == "drugspdunitflag")
  874. xpt = 905;
  875. ypt = 414 + 22 * nRow;
  876. if (nRow > 11)
  877. ypt = 656;
  878. xpt = system.clientToScreenX(this.getOwnerFrame(), 0) + parseInt(xpt) - 350;
  879. var grdtop = grp_prcp.grd_prcplist.position.top;
  880. ypt = system.clientToScreenY(this.getOwnerFrame(), 0) + parseInt(ypt) - parseInt(grdtop);
  881. if (ds_init_data.getColumn(0, "addPrcp") == "Y") {
  882. ypt = ypt - 22 * 4;
  883. xpt = xpt + 65;
  884. }
  885. }else{
  886. xpt = system.clientToScreenX(grp_prcp.grd_prcplist, e.clientX);
  887. ypt = system.clientToScreenY(grp_prcp.grd_prcplist, e.clientY);
  888. //trace("X" + xpt);
  889. }
  890. }
  891. if (sFlag == "drprcpetc3") {
  892. if (objInptListDs.getColumn(0, "unit") != "Y") {
  893. return;
  894. }
  895. var sRef = dsf_createDsRow("ds_cond_prcpunitinfo", [{col:"prcpcd", type:"string", size:256, val:objSrcDs.getColumn(nRow, "prcpcd")},
  896. {col:"drprcpketc4", type:"string", size:256, val:objSrcDs.getColumn(nRow, "drprcpetc4")},
  897. {col:"drprcpetc3", type:"string", size:256, val:objSrcDs.getColumn(nRow, "drprcpetc3")},
  898. {col:"drprcpetc7", type:"string", size:256, val:objSrcDs.getColumn(nRow, "drprcpetc7")},
  899. {col:"prcpunitflag", type:"string", size:256, val:objSrcDs.getColumn(nRow, "prcpqtyunitflag")},
  900. {col:"prcptims", type:"string", size:256, val:objSrcDs.getColumn(nRow, "prcptims")},
  901. {col:"prcpdayno", type:"string", size:256, val:""}]);
  902. var oRef = this.objects[sRef];
  903. var sDsTemp = dsf_createDs("ds_temp");
  904. var oDsTemp = this.objects[sDsTemp];
  905. if (sCalcFlag == "Y") {
  906. oRef.setColumn(0, "prcpdayno", objSrcDs.getColumn(nRow, "prcpdayno"));
  907. }
  908. else if (sCalcFlag == "Q") {
  909. oRef.setColumn(0, "prcpdayno", "Q");
  910. }
  911. else {
  912. oRef.setColumn(0, "prcpdayno", "");
  913. }
  914. var selunitinfo;
  915. var rtn;
  916. var oParam = {};
  917. oParam.id = "TRMMO00142"; // transaction을 구분하기 위한 ID
  918. oParam.service = "prcpmngtapp.PrcpMngt"; // service ID
  919. oParam.method = "reqGetPrcpUnit"; // method ID
  920. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  921. oParam.outds = sDsTemp + "=prcpunit"; // transaction을 처리 결과를 받을 Dataset의 ID
  922. tranf_submit(oParam);
  923. if (oDsTemp != null && oDsTemp.rowcount > 0) {
  924. if (sCalcFlag == "Y") {
  925. oDsTemp.filterstr = "prcpunitflag == '3'";
  926. if (oDsTemp != null && oDsTemp.rowcount > 0) {
  927. rtn = "총수량: " + oDsTemp.getColumn(0, "sch_prcpqty")+ " " +oDsTemp.getColumn(0, "sch_drprcpetc3");
  928. }
  929. oDsTemp.filterstr = "";
  930. }
  931. else if (sCalcFlag == "Q") {
  932. oDsTemp.filterstr = "prcpunitflag == '3'";
  933. rtn = "";
  934. if (oDsTemp != null && oDsTemp.rowcount > 0) {
  935. rtn = oDsTemp.getColumn(0, "drprcpetc4");
  936. }
  937. oDsTemp.filterstr = "";
  938. }
  939. else {
  940. rtn = undefined;
  941. var objArg = {};
  942. objArg["plgds_prcpnode"] = objSrcDs;
  943. objArg["plgds_orgprcpnode"] = objSrcDs;
  944. objArg["plgds_unitdata"] = oDsTemp;
  945. objArg["plgv_sFlag"] = sFlag;
  946. objArg["plgv_nIndx"] = nRow;
  947. frmf_modal("SPMMO35800", "SPMMO35800", objArg, false, null, xpt,ypt, null, null);
  948. lf_drugCalc("drprcpetc3" , nRow, objSrcDs);
  949. if (objSrcDs.getOrgColumn(nRow, "drprcpetc3") != objSrcDs.getColumn(nRow, "drprcpetc3")) {
  950. lf_baseMthd(nRow, objSrcDs);
  951. }
  952. }
  953. }
  954. // Temp로 사용한 Dataset을 삭제
  955. var oRemoveDs = this.removeChild(sRef);
  956. oRemoveDs = null;
  957. oRemoveDs = this.removeChild(sDsTemp);
  958. oRemoveDs = null;
  959. return rtn;
  960. }
  961. else if (sFlag == "drprcpetc7") {
  962. if (objInptListDs.getColumn(0, "dvtime") != "Y") return;
  963. var objArg = {};
  964. objArg["plgds_prcpnode"] = objSrcDs;
  965. objArg["plgv_sFlag"] = sFlag;
  966. objArg["plgv_nIndx"] = nRow;
  967. frmf_modal("SPMMO35800", "SPMMO35800", objArg, false, null, xpt, ypt, null, null);
  968. lf_drugCalc("drprcpetc7" , nRow, objSrcDs);
  969. lf_baseMthd(nRow, objSrcDs);
  970. }
  971. else if (sFlag == "drugspdunitflag") {
  972. if (objInptListDs.getColumn(0, "inj" != "Y")) return;
  973. var objArg = {};
  974. objArg["plgds_prcpnode"] = objSrcDs;
  975. objArg["plgv_sFlag"] = sFlag;
  976. objArg["plgv_nIndx"] = nRow;
  977. frmf_modal("SPMMO35800", "SPMMO35800", objArg, false, null, xpt, ypt, null, null);
  978. }
  979. objInptListDs.filterstr = ""; //filter 초기화
  980. }
  981. /***************************************************************************************************
  982. * Function : lf_subcretnoSet
  983. * Description : (입원/응급/DSC)임상연구처방을 위한 subcretno를 셋팅한다.
  984. * Argument : sPrcpInptFlag []
  985. * : ctrlnm []
  986. * : oDsSrc []
  987. * : nSendRow []
  988. * return type :
  989. * Creator :
  990. * 변환OK
  991. ***************************************************************************************************/
  992. function lf_subcretnoSet(prcpinptflag, ctrlnm:Dataset, oDsSrc, sendRow) {
  993. var prcpgenrflag;
  994. var clincstdyflag;
  995. var pid;
  996. var indd;
  997. var subcretno;
  998. if (prcpinptflag == "0" ) { // 상세팝업에서...
  999. prcpgenrflag = opener.ds_patflag.getColumn(0, "prcpgenrflag");
  1000. clincstdyflag = ctrlnm.getColumn(0, "clincstdyflag");
  1001. if(prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E"){
  1002. if(clincstdyflag == "Y"){ //임상연구가 Y로 처리된 경우에만 보조유형세팅
  1003. pid = opener.ds_paminfo.getColumn(0, "pid");
  1004. indd = opener.ds_paminfo.getColumn(0, "indd");
  1005. sSubcretno = lf_getSubcretno(pid, indd, "clincstdyflag");
  1006. if ( sSubcretno == "0" ) {
  1007. ds_main_prcplist.setColumn(0, "subcretno", "0");
  1008. ctrlnm.setColumn(0, "clincstdyflag", "N");
  1009. sysf_messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  1010. } else {
  1011. ds_main_prcplist.setColumn(0, "subcretno", sSubcretno);
  1012. }
  1013. }else{ //임상연구가 N로 처리된 경우에는 subcretno 0로 처리
  1014. ds_main_prcplist.setColumn(0, "subcretno", "0");
  1015. }
  1016. } else { //외래, 건진의 경우는 subcretno 0로 처리
  1017. ds_main_prcplist.setColumn(0, "subcretno", "0");
  1018. if ( clincstdyflag == "Y" && opener.ds_paminfo.getColumn(0, "insukind") != "71") {
  1019. ctrlnm.setColumn(0, "clincstdyflag", "N");
  1020. sysf_messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  1021. }
  1022. }
  1023. } else if (prcpinptflag == "1") { // 일괄입력에서...
  1024. var prcpgenrflag = opener.ds_patflag.getColumn(0, "prcpgenrflag");
  1025. var clincstdyflag = ds_chkflag.getColumn(0, "clincstdyflag");
  1026. if (prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E"){
  1027. if(ds_chkflag.getColumn(0, "clincstdyflag") == "Y"){
  1028. var pid = opener.ds_paminfo.getColumn(0, "pid");
  1029. var indd = opener.ds_paminfo.getColumn(0, "indd");
  1030. sSubcretno = lf_getSubcretno(pid, indd, "clincstdyflag");
  1031. if ( sSubcretno == "0" ) {
  1032. ds_main_prcplist.setColumn(0, "subcretno", "0");
  1033. sysf_messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  1034. return -1
  1035. } else {
  1036. ds_main_prcplist.setColumn(0, "subcretno", sSubcretno);
  1037. }
  1038. }else{ //임상연구가 N로 처리된 경우에는 subcretno 0로 처리
  1039. ds_main_prcplist.setColumn(0, "subcretno", "0");
  1040. }
  1041. } else { //외래, 건진의 경우는 subcretno 0로 처리
  1042. ds_main_prcplist.setColumn(0, "subcretno", "0");
  1043. if ( clincstdyflag == "Y" && opener.ds_paminfo.getColumn(0, "insukind") != "71") {
  1044. sysf_messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  1045. return -1;
  1046. }
  1047. }
  1048. } else if (prcpinptflag == "2") { // 전처방, 약속처방에서, 임상시험 부유형 자동세팅, cHc, 2009-07-21
  1049. var prcpgenrflag = oOpener.ds_patflag.getColumn(0, "prcpgenrflag");
  1050. var clincstdyflag = ctrlnm;
  1051. if(prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E") {
  1052. if(clincstdyflag == "Y"){ //임상연구가 Y로 처리된 경우에만 보조유형세팅
  1053. var pid = oOpener.ds_paminfo.getColumn(0, "pid");
  1054. var indd = oOpener.ds_paminfo.getColumn(0, "indd");
  1055. sSubcretno = lf_getSubcretno(pid, indd, "clincstdyflag");
  1056. if ( sSubcretno == "0" ) {
  1057. oDsSrc.setColumn(sendRow, "subcretno", "0");
  1058. oDsSrc.setColumn(sendRow, "clincstdyflag", "N");
  1059. sysf_messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  1060. } else {
  1061. oDsSrc.setColumn(sendRow, "subcretno", sSubcretno);
  1062. }
  1063. } else{ //임상연구가 N로 처리된 경우에는 subcretno 0로 처리
  1064. oOpener.oDsSrc.setColumn(sendRow, "subcretno", "0");
  1065. }
  1066. } else { //외래, 건진의 경우는 subcretno 0로 처리
  1067. oDsSrc.setColumn(sendRow, "subcretno", "0");
  1068. if ( clincstdyflag == "Y" && oOpener.ds_paminfo.getColumn(0, "insukind") != "71") {
  1069. sysf_messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  1070. }
  1071. }
  1072. } else if (prcpinptflag == "3") { // kimsj 임상 일괄입력 팝업 체크
  1073. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  1074. if (prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E"){
  1075. var pid = ds_paminfo.getColumn(0, "pid");
  1076. var indd = ds_paminfo.getColumn(0, "indd");
  1077. sSubcretno = lf_getSubcretno(pid, indd, "clincstdyflag");
  1078. if ( sSubcretno == "0" ) {
  1079. sysf_messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  1080. return -1;
  1081. }
  1082. } else { //외래, 건진의 경우는 subcretno 0로 처리
  1083. if (ds_paminfo.getColumn(0, "insukind") != "71") {
  1084. sysf_messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  1085. return -1;
  1086. }
  1087. }
  1088. return 0;
  1089. }
  1090. }
  1091. /**
  1092. * @desc : 환자의 부유형 원무접수번호(subcretno)를 조회 한다.
  1093. * @ :
  1094. * @param :
  1095. * @return :
  1096. * @author : 엄영만 2012.05.09
  1097. * @---------------------------------------------------
  1098. * 변환OK
  1099. */
  1100. function lf_getSubcretno(sPid, sIndd, sSrchcls) {
  1101. var sSubcretno = "0";
  1102. if(utlf_isNull(sPid)) { sysf_messageBox ( "환자번호가 없습니다. 보조유형 조회에 실패 하였습니다. 전산실(6598)로 연락 바랍니다.", "E999" ); return sSubcretno;}
  1103. if(utlf_isNull(sIndd)) { sysf_messageBox ( "입원일자가 없습니다. 보조유형 조회에 실패 하였습니다. 전산실(6598)로 연락 바랍니다.", "E999" ); return sSubcretno;}
  1104. if(utlf_isNull(sSrchcls)) { sSrchcls = ""; }
  1105. var sRef = dsf_createDsRow("ds_temp_send", [{col:"pid", type:"string", size:256, val:sPid},
  1106. {col:"indd", type:"string", size:256, val:sIndd},
  1107. {col:"srchcls", type:"string", size:256, val:sSrchcls}]);
  1108. var oRef = this.objects[sRef];
  1109. var sDsTemp = dsf_createDs("ds_temp_patsupkind");
  1110. var oDsTemp = this.objects[sDsTemp];
  1111. var oParam = {};
  1112. oParam.id = "TRMMO15701";
  1113. oParam.service = "prcpmngtapp.PatPrcpSrchMngt";
  1114. oParam.method = "reqGetPatSupKind";
  1115. oParam.inds = "req=" + sRef;
  1116. oParam.outds = sDsTemp + "=patsupkind";
  1117. oParam.async = false;
  1118. oParam.callback = "cf_TRMMO15701";
  1119. tranf_submit(oParam);
  1120. if(arErrorCode.pop("TRMMO15701") > -1) {
  1121. if(!utlf_isNull(oDsTemp)) {
  1122. if(sSrchcls == "clincstdyflag") { // 임상시험 유형
  1123. sSubcretno = oDsTemp.getColumn(0, "cretno");
  1124. if(utlf_isNull(sSubcretno)) {
  1125. sSubcretno = "0";
  1126. }
  1127. } else { // 기왕증 등 임상시험 이외의 경우
  1128. if(oDsTemp.rowcount > 1){
  1129. var objArgs = new Object();
  1130. objArgs.arg_ds_temp_patsupkind = oDsTemp;
  1131. frmf_modal("SPMMO15700", "SPMMO15700", objArgs, null, null, null, null, null, null, null, null, null, "M");
  1132. sSubcretno = frmf_getParameter("SPMMO15700_subcretno");
  1133. }
  1134. }
  1135. }
  1136. } else {
  1137. sysf_messageBox ( "보조유형 조회에 실패 하였습니다. 전산실(6598)로 연락 바랍니다.", "E999" );
  1138. }
  1139. dsf_deleteDs(sRef);
  1140. dsf_deleteDs(sDsTemp);
  1141. return sSubcretno;
  1142. }
  1143. function cf_TRMMO15701(sSvcId, nErrorCode, sErrorMsg) {
  1144. arErrorCode.push(sSvcId, nErrorCode);
  1145. }
  1146. /**
  1147. * @desc : 대체약이 있을경우 팝업처리
  1148. * @param : currow: 대체약을 띄울 팝업
  1149. : flag: 대체약 팝업 flag ( 1:처방복사, 2:대체약일괄변경, 3:대체약폴더내변경 )
  1150. : strSrc: source Node
  1151. * @return : void
  1152. * @authur : 마정민 2007. 6. 21
  1153. * 변환OK
  1154. */
  1155. function lf_altDrug ( currow, flag, strSrc, prcpInptFlag, powdflag ) {
  1156. if (utlf_isNull(strSrc)) strSrc = "ds_main_prcplist";
  1157. var ds_src = this.objects[strSrc];
  1158. var setno = "";
  1159. var settypecd = "";
  1160. var setkindcd = "";
  1161. var setclscd = "";
  1162. var settrgtcd = "";
  1163. if(!utlf_isNull(this.objects["ds_hidden_prmsprcpsetlist"])) {
  1164. setno = ds_hidden_prmsprcpsetlist.getColumn(0, "setno");
  1165. settypecd = ds_hidden_prmsprcpsetlist.getColumn(0, "settypecd");
  1166. setkindcd = ds_hidden_prmsprcpsetlist.getColumn(0, "setkindcd");
  1167. setclscd = ds_hidden_prmsprcpsetlist.getColumn(0, "setclscd");
  1168. settrgtcd = ds_hidden_prmsprcpsetlist.getColumn(0, "settrgtcd");
  1169. }
  1170. var prcpcd = "";
  1171. var prcpnm = "";
  1172. if ( flag == "child" ) {
  1173. flag = 1;
  1174. //20090528: 6세미만 경구약 자동 powdflag전환 때문에 처방복사시 powdflag 체크로직 추가.
  1175. if ( !utlf_isNull(powdflag)) {
  1176. flag = powdflag;
  1177. }
  1178. // 추후 확인필요
  1179. if ( prcpInptFlag == "01" ) {
  1180. if (typeof(ivw_prcp3) == "object"){
  1181. prcpcd = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  1182. prcpnm = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  1183. }
  1184. } else {
  1185. if (typeof(ivw_prcp) == "object"){
  1186. prcpcd = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  1187. prcpnm = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  1188. }
  1189. }
  1190. }
  1191. if (utlf_isNull(prcpcd)) {
  1192. prcpcd = ds_src.getColumn(currow, "prcpcd");
  1193. prcpnm = ds_src.getColumn(currow, "prcpnm");
  1194. }
  1195. var prcpclscd = ds_src.getColumn(currow, "prcpclscd");
  1196. var erprcpflag = ds_src.getColumn(currow, "erprcpflag");
  1197. var prnprcpflag = ds_src.getColumn(currow, "prnprcpflag");
  1198. var prepprcpflag = ds_src.getColumn(currow, "prepprcpflag");
  1199. var selfdrugflag = ds_src.getColumn(currow, "selfdrugflag");
  1200. var powdflag = ds_src.getColumn(currow, "powdflag");
  1201. var drugspd = ds_src.getColumn(currow, "drugspd");
  1202. var prcpvolunitflag = ds_src.getColumn(currow, "prcpvolunitflag");
  1203. var cond1 = prcpcd + "▦" + setno + "▦" + settypecd + "▦" + setkindcd + "▦" + setclscd + "▦" + settrgtcd + "▩";
  1204. var cond2 = prcpclscd + "▦" + erprcpflag + "▦" + prnprcpflag + "▦" + prepprcpflag + "▦" + selfdrugflag + "▦" + powdflag + "▦" + drugspd + "▦" + prcpvolunitflag + "▩";
  1205. frmf_setParameter ( "SMMMO02300_cond1", cond1 );
  1206. frmf_setParameter ( "SMMMO02300_cond2", cond2 );
  1207. frmf_setParameter ( "SMMMO02300_cond3", flag );
  1208. frmf_setParameter ( "SMMMO02300_cond4", prcpnm );
  1209. lf_prcpModal ( "SPMMB10100", "220", "150" );
  1210. frmf_clearParameter ( "SMMMO02300_cond1" );
  1211. frmf_clearParameter ( "SMMMO02300_cond2" );
  1212. frmf_clearParameter ( "SMMMO02300_cond3" );
  1213. frmf_clearParameter ( "SMMMO02300_cond4" );
  1214. }
  1215. /***************************************************************************************************
  1216. * Function : lf_contPrcpDd
  1217. * Description : 처방 발행 시 날짜와 일수를 지정한다.(지정한 날짜로 처방 발행_지정일자(연속처방)처리)
  1218. * Argument : oGrid: DataGrid
  1219. * : objPrcpDs: 값을 세팅할 node
  1220. * : sFlag: main 인지 child 인지
  1221. * return type :
  1222. * Creator :
  1223. * 변환OK
  1224. ***************************************************************************************************/
  1225. function lf_contPrcpDd(grdObj:Grid, prcpNode, flag, endFlag)
  1226. {
  1227. //1. 과거일자 불가(달력에서 막음)
  1228. //2. 오늘날짜 처방이 아닐때 해더생성
  1229. //3. 2개이상생성시 해더생성
  1230. //4. 외래에서만 사용
  1231. //5. 상태|Acting진료일자|실시처방상태코드|처방일자|실시처방번호^
  1232. var status = "";
  1233. var actordd = "";
  1234. var prcpdd = "";
  1235. var execprcpstatcd = "";
  1236. var execprcpno = "";
  1237. var contPrcpSpec = "";
  1238. var contPrcpSpecArray1;
  1239. var contPrcpSpecArray2;
  1240. var prcpPKSpecArray;
  1241. var reqparm = "";
  1242. if(utlf_isNull(grdObj)) grdObj = div_all.grd_prcplist;
  1243. if(utlf_isNull(prcpNode)) prcpNode = "ds_main_prcplist";
  1244. var oTrgtObj = lf_getFormObject(flag);
  1245. var objPrcpDs = oTrgtObj.objects[prcpNode];
  1246. // 외래진료일자
  1247. if (oTrgtObj.ds_patflag.getColumn(0, "prcpgenrflag") != "O") {
  1248. sysf_messageBox("지정일은 외래에서만 사용하실 수 있습니다.", "E");
  1249. return;
  1250. }
  1251. prcpdd = oTrgtObj.ds_paminfo.getColumn(0, "orddd");
  1252. objPrcpDs = this.objects[prcpNode];
  1253. if (objPrcpDs.getColumn(objPrcpDs.rowposition , "prcpclscd") != "A6" && objPrcpDs.getColumn(objPrcpDs.rowposition , "prcpclscd") != "F2") {
  1254. sysf_messageBox("지정일 사용하실 수 없는 처방입니다.", "E");
  1255. return;
  1256. }
  1257. frmf_setParameter ("paramcalflag", "multi");
  1258. frmf_setParameter ("defaultday", prcpdd);
  1259. var selectedRows = new Array();
  1260. if ( grdObj.selecttype == "row" ) {
  1261. selectedRows[0] = objPrcpDs.rowposition;
  1262. } else {
  1263. selectedRows = grdf_getSelectedRows(grdObj);
  1264. }
  1265. objPrcpDs.enableevent = false;
  1266. for (var i = 0; i < selectedRows.length; i++) {
  1267. if ( grdObj.selecttype == "row" ) {
  1268. curRow = objPrcpDs.rowposition;
  1269. } else {
  1270. curRow = selectedRows[i];
  1271. }
  1272. contPrcpSpec = objPrcpDs.getColumn(curRow, "contprcpspec");
  1273. if ( contPrcpSpec == "-" ) { //처방 당일이었던 지정일 또는 처음검색
  1274. prcpPKSpecArray = objPrcpDs.getColumn(curRow, "prcppkspec" ).split("|");
  1275. if ( !utlf_isNull(prcpPKSpecArray[0])) reqparm = prcpPKSpecArray[0]; //처방일자가 있으면
  1276. else reqparm = prcpdd;
  1277. } else {
  1278. contPrcpSpecArray1 = contPrcpSpec.split("^");
  1279. for ( var j = 1; j < contPrcpSpecArray1.length; j++ ){
  1280. contPrcpSpecArray2 = contPrcpSpecArray1[j].split("|");
  1281. if ( j == (contPrcpSpecArray1.length-1))
  1282. reqparm = reqparm + contPrcpSpecArray2[1];
  1283. else
  1284. reqparm = reqparm + contPrcpSpecArray2[1] + "▩";//과거에 선택됐던 지정일을 넘긴다.
  1285. }
  1286. }
  1287. frmf_setParameter ("reqparam", reqparm);
  1288. lf_prcpModal ( "SPMMO10600", 20, 50 );
  1289. if ( utlf_isNull(frmf_getParameter ("rtn"))) return; //값이 없으면 return
  1290. var actorddArray = frmf_getParameter ("rtn").split("▩");
  1291. objPrcpDs.setColumn(curRow, "prcpdayno", actorddArray.length );
  1292. status = objPrcpDs.getColumn(curRow, "status" ); //선택된 셀 상태값 가져오기
  1293. contPrcpSpec = "status|actorddd|execprcpstatcd|prcpdd|execprcpno";
  1294. var enddd = "00000000";
  1295. for( i = 0; i < actorddArray.length; i++) { //내용 붙히기
  1296. actordd = actorddArray[i];
  1297. contPrcpSpec = contPrcpSpec + "^" + status + "|" + actordd + "|" + execprcpstatcd + "|" + prcpdd + "|" + execprcpno;
  1298. if ( eval(enddd) < eval(actordd) ) {
  1299. enddd = actordd;
  1300. }
  1301. }
  1302. if ( actorddArray.length == 1 && actordd == prcpdd ) { // 날짜가 1 이고 처방일과 같을 경우는 - 처리
  1303. objPrcpDs.setColumn(curRow, "contprcpspec", "-" );
  1304. } else {
  1305. objPrcpDs.setColumn(curRow, "contprcpspec", contPrcpSpec );
  1306. }
  1307. //재활일 경우 마감일 setting
  1308. var prcpclscd = objPrcpDs.getColumn(curRow, "prcpclscd" );
  1309. if ( prcpclscd == "F2" ) objPrcpDs.setColumn(curRow, "etcprcpresncd", enddd );
  1310. //일수변환
  1311. objPrcpDs.setColumn(curRow, "prcpdayno", actorddArray.length );
  1312. }
  1313. objPrcpDs.enableevent = true;
  1314. }
  1315. /**
  1316. * @desc : 처방검색
  1317. * @param : prcpnm: 검색할 처방명
  1318. : prcpdd: 처방일자
  1319. : insukind: 보험유형
  1320. : trnm: 트랜젝션 네임
  1321. : ioflag: 외래, 입원, 응급 구분
  1322. : refreshFlag: refresh 여부
  1323. : mthdnm 명
  1324. : containflag : contains사용구분
  1325. * @return : void
  1326. * @authur : 마정민 2007. 6. 21
  1327. * 변환OK
  1328. */
  1329. function lf_prcpSrchCom ( prcpnm, prcpdd, insukind, trnm, ioflag, mthdnm, isHangul, containflag ) {
  1330. if ( utlf_isNull(trnm)) {
  1331. trnm = "TRMMO00100";
  1332. }
  1333. if ( utlf_isNull(prcpdd)) {
  1334. prcpdd = utlf_getCurrentDate();
  1335. }
  1336. if ( utlf_isNull(ioflag)) {
  1337. ioflag = "-";
  1338. }
  1339. if ( utlf_isNull(mthdnm)) {
  1340. mthdnm = "getPrcpSrchInfo";
  1341. } //getPrcpCdSrchInfo
  1342. //contains사용일 경우, 검색어의 특수기호에 /를 붙인다.
  1343. //ex) high-voltage@avm -> high/-voltage/@avm
  1344. //2008.06.28 오지훈
  1345. if(containflag == true){
  1346. var regular = /[^ A-Za-z0-9]/g;
  1347. var arr = prcpnm.match(regular);
  1348. if(!utlf_isNull(arr)){
  1349. for(var i = 0; i < arr.length; i++){
  1350. if (arr[i] != "-" && arr[i] != " " && arr[i] != ".") {
  1351. prcpnm = prcpnm.setReplaceWord( arr[i], "\\".concat(arr[i]) );
  1352. }
  1353. }
  1354. }
  1355. ds_send.setColumn(0, "cond6", "1");
  1356. }else{
  1357. ds_send.setColumn(0, "cond6", "2");
  1358. }
  1359. if (utlf_isNull(ioflag) || ioflag == "-") ioflag = appf_getPatientInfoDetail("ioflag");
  1360. ds_send.setColumn(0, "cond1", prcpnm.toUpperCase()); //처방명, 수가코드
  1361. ds_send.setColumn(0, "cond2", ioflag ); //외래, 입원, 응급 구분
  1362. ds_send.setColumn(0, "cond3", prcpdd ); //처방일
  1363. ds_send.setColumn(0, "cond4", insukind ); //환자보험유형
  1364. if ( !utlf_isNull( isHangul)) {
  1365. ds_send.setColumn(0, "cond5", isHangul ); //한영구분
  1366. } else {
  1367. ds_send.setColumn(0, "cond5", "" );
  1368. }
  1369. //그리드처방검색일때: 1일때는 첫단어검색, 2일때는 단어검색
  1370. //var srchcond1 = model.getValue ( "/root/prcpsrchcond1" );
  1371. //model.setValue ( "/root/send/cond6", srchcond1 ); //검색조건
  1372. /*20080930 시행부서 건진처방 때문에 추가했으나 시행부서처방에서도 건진처방 건색은 안되야 한다고 해서 주석으로 처리.
  1373. if ( model.getValue ( "/root/addprcp" ) == "Y" || opener.model.getValue ( "/root/addprcp" ) == "Y") {
  1374. model.makeValue ( "/root/send/cond7", "addprcp"); //처방명, 수가코드
  1375. }*/
  1376. ds_send.setColumn(0, "cond99", mthdnm ); //검색구분
  1377. lf_makePrcpSrchDs(); // 처방 조회 시 outds가 없다면 자동 생성한다.
  1378. if(trnm == "TRMMO00100") {
  1379. var oParam = {};
  1380. oParam.id = "TRMMO00100";
  1381. oParam.service = "prcpmngtapp.PrcpMngt";
  1382. oParam.method = "reqGetPrcpSrchInfo";
  1383. oParam.inds = "req=ds_send";
  1384. oParam.outds = "ds_prcpsrch_prcplist=prcplist";
  1385. oParam.async = false;
  1386. oParam.callback = "cf_TRMMO00100";
  1387. tranf_submit(oParam);
  1388. dsf_setDefaultVal(ds_prcpsrch_prcplist, "status:N,prcpvol:0,prcpvolunitnm:-,prcpqty:0,prcpqtyunitnm:-,prcptims:0,prcpdayno:0,drugmthdspccdnm:-,hosinprcpresncd:00,drugmthdspccd:-,hsctdelivepos:0,druglnkno:0,dnorreqlnkno:0,subcretno:0,drgacptflag:-");
  1389. } else if(trnm == "TRMMB00201") {
  1390. var oParam = {};
  1391. oParam.id = "TRMMB00201";
  1392. oParam.service = "prcpmngtapp.PrcpMngt";
  1393. oParam.method = "reqGetPrcpSrchInfo";
  1394. oParam.inds = "req=ds_send";
  1395. oParam.outds = "ds_prcpsrch_prcplist=prcplist";
  1396. oParam.async = false;
  1397. tranf_submit(oParam);
  1398. dsf_setDefaultVal(ds_prcpsrch_prcplist, "status:N,prcpvol:0,prcpvolunitnm:-,prcpqty:0,prcpqtyunitnm:-,prcptims:0,prcpdayno:0,drugmthdspccdnm:-,drugmthdspccd:-,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,drgacptflag:-");
  1399. }
  1400. }
  1401. /***************************************************************************************************
  1402. * Function : lf_bfPrcpSrchCom
  1403. * Description : 전처방검색
  1404. * Argument : pid: 환자ID
  1405. * : orddd: 외래:진료일, 입원:입원일
  1406. * : prcpdd: 처방일
  1407. * : bfflag: 전처방 where 조건 구분자
  1408. * : initflag: 최초구분
  1409. * : orddrid: 의사ID,외래에서만 필요하다.
  1410. * : todd
  1411. * : prcpgenrflag: 외래입원구분
  1412. * : orddeptcd: 부서코드
  1413. * : cretno: 원무생성번호
  1414. * : prcpgenrflag: 외래, 입원, 응급 구분
  1415. * : followup: 퇴원후 외래처방일과 동일한 처방일이거나 initsrch 와 동일한 날짜가 있을 경우 followdd를 입력한다.
  1416. * : bfprcpviewflag : 전처방 조회 조건 개인별 설정기능 추가 by sonjy 20091120
  1417. * return type :
  1418. * Creator :
  1419. * 변환OK
  1420. * @---------------------------------------------------
  1421. */
  1422. function lf_bfPrcpSrchCom( sPid, sOrddd, sPrcpdd, sBfflag, sInitflag, sOrddrid, sTodd, sPrcpgenrflag, sOrddeptcd, sCretno, sTrnm, sPrcpauthflag, sFollowup , sBfprcpviewflag)
  1423. {
  1424. if (utlf_isNull(sTrnm))
  1425. sTrnm = "TRMMO00100";
  1426. if (utlf_isNull(sPrcpauthflag))
  1427. sPrcpauthflag = "0";
  1428. var oTrgtObj;
  1429. // oOpener 선언 되지 않은 곳은 모두 this를 사용하도록 함(여기는 flag가 없어 lf_getFormObject() 함수 적용하지 않음)
  1430. try {
  1431. oTrgtObj = oOpener; // 현재 화면이 전처방인경우
  1432. } catch(e) {
  1433. oTrgtObj = this; // 현재 화면이 미수행처방DC인 경우
  1434. }
  1435. var curprcpdd = lf_getDsValue(oTrgtObj.ds_init, 0, "prcpdd");
  1436. if (utlf_isNull(curprcpdd)) {
  1437. curprcpdd = lf_getDsValue(ds_init, 0, "prcpdd");
  1438. if (utlf_isNull(curprcpdd)) {
  1439. curprcpdd = utlf_getCurrentDate();
  1440. }
  1441. }
  1442. var oprsrvno = "";
  1443. if (!utlf_isNull(oTrgtObj.objects["ds_operation"]) && !utlf_isNull(oTrgtObj.ds_operation.getColumn(0, "oprsrvno"))) {
  1444. sOrddd = oTrgtObj.ds_operation.getColumn(0, "oprsrvno");
  1445. if (oTrgtObj.ds_patflag.getColumn(0, "prcpgenrflag") == "O") {
  1446. sPrcpgenrflag = "OUTOP";
  1447. }
  1448. else {
  1449. sPrcpgenrflag = "OP";
  1450. }
  1451. } else if (!utlf_isNull(this.objects["ds_operation"]) && !utlf_isNull(ds_operation.getColumn(0, "oprsrvno"))) {
  1452. sOrddd = ds_operation.getColumn(0, "oprsrvno");
  1453. if (ds_patflag.getColumn(0, "prcpgenrflag") == "O") {
  1454. sPrcpgenrflag = "OUTOP";
  1455. }
  1456. else {
  1457. sPrcpgenrflag = "OP";
  1458. }
  1459. }
  1460. var sRef = dsf_createDsRow("ds_cond_prcplist", [{col:"cond1", type:"string", size:256, val:sPid}, // 환자ID
  1461. {col:"cond2", type:"string", size:256, val:sOrddd}, // 외래:진료일, 입원:입원일
  1462. {col:"cond3", type:"string", size:256, val:sPrcpauthflag}, // 처방권한 구분
  1463. {col:"cond4", type:"string", size:256, val:sPrcpdd}, // 처방일자
  1464. {col:"cond5", type:"string", size:256, val:sBfflag}, // 전처방 where 조건 구분자
  1465. {col:"cond6", type:"string", size:256, val:sInitflag}, // 최초구분
  1466. {col:"cond7", type:"string", size:256, val:sOrddrid}, // 의사ID,외래에서만 필요하다.
  1467. {col:"cond8", type:"string", size:256, val:sTodd}, // sTodd
  1468. {col:"cond9", type:"string", size:256, val:sPrcpgenrflag}, // 외래입원구분
  1469. {col:"cond10", type:"string", size:256, val:sOrddeptcd}, // 부서코드
  1470. {col:"cond11", type:"string", size:256, val:sCretno}, // 생성번호
  1471. {col:"cond12", type:"string", size:256, val:""}, // 외래follow up
  1472. {col:"cond13", type:"string", size:256, val:""}, // 환자보험유형전처방용
  1473. {col:"cond14", type:"string", size:256, val:curprcpdd}, // 처방일자(전처방)
  1474. {col:"cond99", type:"string", size:256, val:"getBfPrcpSrchInfo"}, // 검색구분
  1475. {col:"aftcertdrid", type:"string", size:256, val:""}, // 후인증의사id
  1476. {col:"bfprcpviewflag", type:"string", size:256, val:""}]); // 전처방조회조건
  1477. var oRef = this.objects[sRef];
  1478. if (!utlf_isNull(sFollowup))
  1479. oRef.setColumn(0, "cond12", "followup"); //외래follow up
  1480. var insukind = utlf_isNull(oTrgtObj.objects["ds_paminfo"]) ? "" : oTrgtObj.ds_paminfo.getColumn(0, "insukind");
  1481. if (utlf_isNull(insukind)) insukind = utlf_isNull(this.objects["ds_paminfo"]) ? "" : lf_getDsValue(ds_paminfo, 0, "insukind");
  1482. if (!utlf_isNull(insukind)){
  1483. oRef.setColumn(0, "cond13", insukind ); //외래follow up
  1484. }
  1485. //by sonjy 전처방 조회모드 설정 20091120
  1486. if( sBfflag == "bfprcp" || sBfflag == "addprcp" ){
  1487. if(!utlf_isNull(sBfprcpviewflag) ) oRef.setColumn(0, "bfprcpviewflag", sBfprcpviewflag);
  1488. }
  1489. lf_makePrcpSrchDs(); // 처방 조회 시 outds가 없다면 자동 생성한다.
  1490. var oParam = {};
  1491. oParam.id = "TRMMO00100";
  1492. oParam.service = "prcpmngtapp.PrcpMngt";
  1493. oParam.method = "reqGetPrcpSrchInfo";
  1494. oParam.inds = "req=" + sRef;
  1495. oParam.outds = "ds_prcpsrch_prcplist=prcplist";
  1496. oParam.async = false;
  1497. oParam.callback = "cf_TRMMO00100";
  1498. tranf_submit(oParam);
  1499. var bResult = (arErrorCode.pop("TRMMO00100") < 0) ? false : true;
  1500. 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:-");
  1501. //CP일 경우, viewer안의 컨트롤 height 사이즈를 모두 조정해야 함 (2008.08.28 JJE)
  1502. if ( !utlf_isNull(oTrgtObj.objects["ds_root"]) && oTrgtObj.ds_root.getColumn(0, "cp" ) == "Y" ) {
  1503. // 추후 CPGMAIN 작업 후 확인필요
  1504. oTrgtObj.fResizeControls();
  1505. }
  1506. // Temp로 사용한 Dataset을 삭제
  1507. dsf_deleteDs(sRef);
  1508. return bResult;
  1509. }
  1510. function cf_TRMMO00100(sSvcId, nErrorCode, sErrorMsg) {
  1511. arErrorCode.push(sSvcId, nErrorCode);
  1512. }
  1513. /***************************************************************************************************
  1514. * Function : lf_chkEMRLoadingInfo
  1515. * Description : 처방, 기록 조회 함수
  1516. * 진료대상리스트에서 선택했을 경우 상단에서 데이터를 가져오고 아닐 경우 서버에서 조회하도록 만든 모듈
  1517. * Argument :
  1518. * return type : true(진료대상자 선택), false(자체 호출)
  1519. * Creator :
  1520. ***************************************************************************************************/
  1521. function lf_chkEMRLoadingInfo()
  1522. {
  1523. if (this.lgv_addprcp == "Y")
  1524. return false ;
  1525. else
  1526. return true ;
  1527. var oPatientInfoDiv = frmf_getViewer("patientInfo");
  1528. var loadflag = oPatientInfoDiv.ds_loadinginfo.getColumn(0, "loadflag");
  1529. var loaddate = oPatientInfoDiv.ds_loadinginfo.getColumn(0, "loaddate");
  1530. var loadtime = oPatientInfoDiv.ds_loadinginfo.getColumn(0, "loadtime");
  1531. if (loadflag == "Y") {
  1532. if (!utlf_isNull(loaddate) && loaddate.length == 8 && utlf_getDateInterval(loaddate, utlf_getCurrentDate()) > 0) {
  1533. return false;
  1534. }
  1535. else if (!utlf_isNull(loadtime) && loadtime.length == 6 && utlf_getTimeInterval(loadtime, utlf_getCurrentTime()) > 30) {
  1536. return false;
  1537. }
  1538. else {
  1539. return true;
  1540. }
  1541. }
  1542. else {
  1543. return false;
  1544. }
  1545. }
  1546. /***************************************************************************************************
  1547. * Function : lf_mmbfChkDrKindPosYN
  1548. * Description : 의사 직종직위 옵션을 받아서 true, false 값을 리턴한다.
  1549. * Argument : option 1: 의사 여부, 2: 주치의 여부 3: 담당의 여부 를 체크한다.
  1550. * : chkOption : A : 직종으로 체크한다. , B : 직위로 체크한다.
  1551. * 값이 없으면 하드코드번호 255번의 기본값으로 셋팅한다., 하드코드도 없으면 기본값 "B"로 셋팅
  1552. * : userinfo : 비교할 직종 또는 직위코드(sysf_getUserInfo(jobkindcd), sysf_getUserInfo("jobposcd");
  1553. * 값이 없으면 A일 경우는 sysf_getUserInfo("jobkindcd") , B일 경우는 sysf_getUserInfo("jobposcd")로 셋팅함.
  1554. * return type :
  1555. * Creator :
  1556. ***************************************************************************************************/
  1557. function lf_mmbfChkDrKindPosYN(option, chkOption, userinfo)
  1558. {
  1559. if (utlf_isNull(chkOption)) {
  1560. chkOption = lf_getHardCDList("Y", "255", "3");
  1561. if (utlf_isNull(chkOption))
  1562. chkOption = "B";
  1563. }
  1564. var jobkindcd;
  1565. var sChkTmpDrListNm = dsf_createDs("ds_chktmpdrlist", []);
  1566. var oChkTmpDrListDs = this.objects[sChkTmpDrListNm];
  1567. var rtnValue;
  1568. if (option == "1") { // 의사여부를 리턴한다.
  1569. lf_getHardCDList("N", 69, 0, oChkTmpDrListDs);
  1570. if (userinfo == null || userinfo == "" || userinfo == "undefined") {
  1571. userinfo = sysf_getUserInfo("jobkindcd");
  1572. }
  1573. var nFindRow = oChkTmpDrListDs.findRow("hardcd", userinfo);
  1574. jobkindcd = oChkTmpDrListDs.getColumn(nFindRow, "hardcd");
  1575. rtnValue = (!utlf_isNull(jobkindcd)) ? true : false;
  1576. }
  1577. else if (option =="2") { // 주치의 여부를 리턴한다.
  1578. if (chkOption == "A") { // 직종에서 비교한다. (jobkindcd)
  1579. lf_getHardCDList("N", 65, 0, oChkTmpDrListDs);
  1580. if (userinfo == null || userinfo == "" || userinfo == "undefined")
  1581. userinfo = sysf_getUserInfo("jobkindcd") ;
  1582. var nFindRow = oChkTmpDrListDs.findRow("hardcd", userinfo);
  1583. jobkindcd = oChkTmpDrListDs.getColumn(nFindRow, "hardcd");
  1584. }
  1585. else if (chkOption == "B") { // 직위를 비교한다. (jobposcd)
  1586. lf_getHardCDList("N", 67, 0, oChkTmpDrListDs);
  1587. if (userinfo == null || userinfo == "" || userinfo == "undefined")
  1588. userinfo = sysf_getUserInfo("jobposcd") ;
  1589. var nFindRow = oChkTmpDrListDs.findRow("hardcd", userinfo);
  1590. jobkindcd = oChkTmpDrListDs.getColumn(nFindRow, "hardcd");
  1591. }
  1592. rtnValue = (!utlf_isNull(jobkindcd)) ? true : false;
  1593. }
  1594. else if (option == "3") {
  1595. if (chkOption == "A") { // 직종에서 비교한다. (jobkindcd)
  1596. lf_getHardCDList("N", 65, 0, oChkTmpDrListDs);
  1597. if (userinfo == null || userinfo == "" || userinfo == "undefined")
  1598. userinfo = sysf_getUserInfo("jobkindcd") ;
  1599. var nFindRow = oChkTmpDrListDs.findRow("hardcd", userinfo);
  1600. jobkindcd = oChkTmpDrListDs.getColumn(nFindRow, "hardcd");
  1601. rtnValue = (!utlf_isNull(jobkindcd)) ? true : false;
  1602. }
  1603. else if (chkOption == "B") { // 직위를 비교한다. (jobposcd)
  1604. lf_getHardCDList("N", 67, 0, oChkTmpDrListDs);
  1605. if (userinfo == null || userinfo == "" || userinfo == "undefined")
  1606. userinfo = sysf_getUserInfo("jobposcd");
  1607. var nFindRow = oChkTmpDrListDs.findRow("hardcd", userinfo);
  1608. jobkindcd = oChkTmpDrListDs.getColumn(nFindRow, "hardcd");
  1609. rtnValue = (!utlf_isNull(jobkindcd)) ? "Y" : "N";
  1610. }
  1611. }
  1612. // Temp로 사용한 Dataset을 삭제
  1613. var oRemoveDs = this.removeChild(sChkTmpDrListNm);
  1614. oRemoveDs = null;
  1615. return rtnValue;
  1616. }
  1617. /***************************************************************************************************
  1618. * Function : lf_saveSign
  1619. * Description : 처방 인증 저장 시 sign 데이터 저장 하는 함수
  1620. * Argument : signbfcnts: sign할 데이터
  1621. * : signid: sign 할 유저의 id
  1622. * : signopt: false 로그인후 한번만 띄움, true: 매번띄움
  1623. * : setnode: sign 데이터를 setColumn 할 인스턴스 값이 있을 때만 함
  1624. * return type :
  1625. * Creator :
  1626. ***************************************************************************************************/
  1627. function lf_saveSign(signbfcnts, signid, signopt, setnode )
  1628. {
  1629. var v_stext = "";
  1630. if (!utlf_isNull(signbfcnts)) {
  1631. if (signopt) {
  1632. v_stext = zesf_SignData(signbfcnts, signid, signopt);
  1633. }
  1634. else {
  1635. v_stext = zesf_SignData(signbfcnts, signid);
  1636. }
  1637. if (utlf_isNull(v_stext)) {
  1638. return ""; //값이 없을 때는 return 함
  1639. }
  1640. }
  1641. else {
  1642. return "N"; // 인증할 데이터가 없을 때는 N 으로 return
  1643. }
  1644. // setnode가 있을경우 setColumn
  1645. if (!utlf_isNull(setnode)) {
  1646. this.objects[setnode].setColumn(0, "signaftcnts", v_stext);
  1647. }
  1648. return v_stext;
  1649. }
  1650. /***************************************************************************************************
  1651. * Function : lf_chngHosinPrcpResn
  1652. * Description : 원내처방사유변경
  1653. * Argument : sFlag [String : ]
  1654. * return type :
  1655. * 변환 OK
  1656. ***************************************************************************************************/
  1657. function lf_chngHosinPrcpResn(sFlag, strSelResn)
  1658. {
  1659. var hosinprcpresncd = "";
  1660. var prcpclscd = "";
  1661. //SON0919 응급 퇴원약 원내사유 처리 by sonjy start
  1662. //SON1123 DSC 퇴원처방 처리 by sonjy 20081123
  1663. var prcpkindcd = "";
  1664. var erflag = "";
  1665. var erresn = ""; // G3
  1666. var prcpgenrflag = "";
  1667. var oTrgtObj = lf_getFormObject(sFlag);
  1668. hosinprcpresncd = oTrgtObj.ds_init.getColumn(0, "hosinprcpresncd");
  1669. erresn = lf_getDsValue(oTrgtObj.ds_init, 0, "erresn");
  1670. prcpgenrflag = oTrgtObj.ds_patflag.getColumn(0, "prcpgenrflag");
  1671. if( prcpgenrflag == "I" ){ return; }
  1672. if ( (prcpgenrflag == "E" && erresn != "G3") || prcpgenrflag == "D" ) {
  1673. erflag = "Y" ;//SON0919
  1674. }
  1675. // 약제원내외구분 우선 적용
  1676. var hosinflag = "";
  1677. var drugmastspec = "";
  1678. if (hosinprcpresncd != "00") { // 환자별 처방 사유가 존재 할 경우
  1679. for (var i = 0; i < oTrgtObj.ds_main_prcplist.rowcount; i++) { // 처방 건별 처리
  1680. prcpclscd = oTrgtObj.ds_main_prcplist.getColumn(i, "prcpclscd");
  1681. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ;
  1682. prcpkindcd = oTrgtObj.ds_main_prcplist.getColumn(i, "prcpkindcd");
  1683. drugmastspec = oTrgtObj.ds_main_prcplist.getColumn(i, "drugmastspec") + "^";
  1684. hosinflag = lf_getArrayData(drugmastspec , 0, 11, "^", "|");
  1685. if (erflag == "Y" && prcpkindcd == "60") { // 응급 DSC 퇴원약 원내사유 처리
  1686. lf_hosinPrcpResncdSed(sFlag , "ds_main_prcplist", i, strSelResn);
  1687. } else if (prcpgenrflag == "E") { // 응급
  1688. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinhosoutflag", "I");
  1689. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinprcpresncd", hosinprcpresncd);
  1690. } else if (prcpgenrflag == "D" ){ // DSC
  1691. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinhosoutflag", "I");
  1692. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinprcpresncd", "00");
  1693. } else {
  1694. prcphosinprcpresncd = oTrgtObj.ds_main_prcplist.getColumn(i, "hosinprcpresncd");
  1695. if (hosinflag != "O" && lf_pamHosinPrcpResnCdChk(prcphosinprcpresncd, sFlag)) { // 환자원내처방사유만 적용
  1696. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinhosoutflag", "I");
  1697. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinprcpresncd", hosinprcpresncd);
  1698. }
  1699. }
  1700. }
  1701. // 원복시 기존 약제사유로 원복 후 동시투여 약제처리....
  1702. if (erflag == "Y"){
  1703. lf_hosinPrcpResnChk(sFlag, oTrgtObj.ds_main_prcplist);
  1704. }
  1705. } else { // 환자별 처방 사유가 없을 경우
  1706. for(var i = 0; i < oTrgtObj.ds_main_prcplist.rowcount; i++) {
  1707. prcpclscd = oTrgtObj.ds_main_prcplist.getColumn(i, "prcpclscd");
  1708. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ;
  1709. //SON0919 응급 퇴원약 원내사유 처리 by sonjy start
  1710. prcpkindcd = oTrgtObj.ds_main_prcplist.getColumn(i, "prcpkindcd");
  1711. if (erflag == "Y" && prcpkindcd == "60") {
  1712. lf_hosinPrcpResncdSed(sFlag , "ds_main_prcplist", i, strSelResn);
  1713. } else if (prcpgenrflag == "E") {
  1714. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinhosoutflag", "I");
  1715. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinprcpresncd", hosinprcpresncd);
  1716. } else if (prcpgenrflag == "D" ) {
  1717. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinhosoutflag", "I");
  1718. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinprcpresncd", "00");
  1719. } else {
  1720. prcphosinprcpresncd = oTrgtObj.ds_main_prcplist.getColumn(i, "hosinprcpresncd");
  1721. // 환자원내처방사유만 적용
  1722. if (lf_pamHosinPrcpResnCdChk(prcphosinprcpresncd, sFlag)) {
  1723. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinhosoutflag","O");
  1724. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinprcpresncd","00");
  1725. lf_hosinPrcpResncdSed(sFlag, "ds_main_prcplist", i); //SON0826 원복시 기존 약제사유로 원복.
  1726. }
  1727. }
  1728. }
  1729. lf_hosinPrcpResnChk(sFlag, oTrgtObj.ds_main_prcplist); //SON0826 원복시 기존 약제사유로 원복 후 동시투여 약제처리....
  1730. }
  1731. oTrgtObj.ds_paminfo.setColumn(0, "hosoutexptresncd", hosinprcpresncd);
  1732. }
  1733. /***************************************************************************************************
  1734. * Function : lf_checkPrcpAuth
  1735. * Description : 처방권한 check
  1736. * Argument :
  1737. * return type :
  1738. * Creator :
  1739. ***************************************************************************************************/
  1740. function lf_checkPrcpAuth(sScrnFlag)
  1741. {
  1742. var sIoflag = ds_data_paminfo.getColumn(0, "ioflag");
  1743. var sUserDeptCds = sysf_getUserInfo("dutplcecd");
  1744. var anstdeptlst = emr_getOrderBaseInfo("anstdeptcd");
  1745. var docSchInfoList = emr_getOrderBaseInfo("docschinfolist");
  1746. var sUserdeptcd = sysf_getUserInfo("dutplcecd");
  1747. if (sScrnFlag == "prcp") {
  1748. var sUserOrdDeptNode = emr_getOrderBaseInfo("userorddeptcd");
  1749. var userdeptcds = "";
  1750. if (sUserOrdDeptNode != null && sUserOrdDeptNode.rowcount > 0) {
  1751. for (var i=0 ; i <= sUserOrdDeptNode.rowcount ; i++) {
  1752. userdeptcds = sUserOrdDeptNode.getColumn(i, "userorddeptcd");
  1753. anstdeptlst.filterstr = "trgtcd=='" + userdeptcds + "'";
  1754. if (anstdeptlst != null && anstdeptlst.rowcount > 0)
  1755. break;
  1756. }
  1757. }
  1758. else {
  1759. anstdeptlst.filterstr = "trgtcd=='" + sUserdeptcd + "'";
  1760. }
  1761. anstdeptlst.filterstr = "";
  1762. }
  1763. if (sScrnFlag == "prcp" && (sIoflag != "O" && sIoflag != "S")) {
  1764. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_00.enable = true;
  1765. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_10.enable = true;
  1766. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_31.enable = true;
  1767. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_21.enable = true;
  1768. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_22.enable = true;
  1769. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_30.enable = true;
  1770. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_35.enable = true;
  1771. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_40.enable = true;
  1772. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_50.enable = true;
  1773. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_60.enable = true;
  1774. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_70.enable = true;
  1775. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_90.enable = true;
  1776. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_95.enable = true;
  1777. }
  1778. if (!utlf_isNull(ds_init_operation.getColumn(0, "oprsrvno"))) {
  1779. if (sScrnFlag == "prcp" && sIoflag != "O" && sIoflag != "S") {
  1780. var prcpkindcd = ds_init_data.getColumn(0, "prcpkindcd");
  1781. var objBtn = this.components("btn_prcpkcd_" + prcpkindcd);
  1782. objBtn.setSelectStatus(true);
  1783. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_00.enable = false;
  1784. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_10.enable = false;
  1785. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_21.enable = false;
  1786. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_22.enable = false;
  1787. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_50.enable = false;
  1788. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_60.enable = false;
  1789. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_70.enable = false;
  1790. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_90.enable = false;
  1791. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_95.enable = false;
  1792. }
  1793. if (sScrnFlag == "prcp" && anstdeptlst != null && anstdeptlst.rowcount > 0) {
  1794. if (ds_init_anstinfo.getColumn(0, "paramyn") == "Y") {
  1795. if (sIoflag != "O" && sIoflag != "S") {
  1796. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_30.enable = false;
  1797. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_40.enable = false;
  1798. }
  1799. }
  1800. if (prcpkindcd == "31" || (ds_init_anstinfo.getColumn(0, "paramyn") == "Y" && prcpkindcd == "35")) {
  1801. return true;
  1802. }
  1803. else {
  1804. return false;
  1805. }
  1806. }
  1807. else if (userdeptcd == ds_init_operation.getColumn(0, "perfdeptcd")) {
  1808. return true;
  1809. }
  1810. }
  1811. if (sScrnFlag == "prcp") {
  1812. if (ds_init_data.getColumn(0, "usge") != "prcp")
  1813. return true;
  1814. var prcpauthflag = ds_init_data.getColumn(0, "prcpauthflag");
  1815. if (prcpauthflag != "0" && prcpauthflag != "3")
  1816. return true ;
  1817. }
  1818. var atdoctridfg = lf_mmbfChkDrKindPosYN("3", "B", sysf_getUserInfo("jobposcd"));
  1819. var orddeptcd = ds_data_paminfo.getColumn(0, "orddeptcd");
  1820. if (sIoflag == "E") {
  1821. var erorddeptcd = ds_data_paminfo.getColumn(0, "erorddeptcd");
  1822. var nTrgtRow = sUserOrdDeptNode.findRow("userorddeptcd", orddeptcd);
  1823. if (!utlf_isNull(nTrgtRow) && nTrgtRow > 0){
  1824. return true;
  1825. }
  1826. var eradrvinfo = ds_data_paminfo.getColumn(0, "eradrvinfo");
  1827. var eradrvorddeptcd = "";
  1828. var eradrvorddrid = "";
  1829. if (sScrnFlag == "prcp" && !utlf_isNull(eradrvinfo) && eradrvinfo != "-") {
  1830. eradrvorddeptcd = lf_getArrayData(eradrvinfo, 0, 0 , "^", "|");
  1831. eradrvorddrid = lf_getArrayData(eradrvinfo, 0, 1 , "^", "|");
  1832. var nTrgtDeptRow = sUserOrdDeptNode.findRow("userorddeptcd", eradrvorddeptcd);
  1833. if (!utlf_isNull(nTrgtDeptRow) && nTrgtDeptRow > 0){
  1834. if ("Y" == atdoctridfg)
  1835. return true;
  1836. if (sysf_getUserInfo("userid") == eradrvorddrid)
  1837. return true;
  1838. }
  1839. }
  1840. var ordPatObj = frmf_getChildWindow("SMMMO04100");
  1841. // 두 객체값이 다른 경우 새로운 진료대상자 화면을 open함
  1842. if (ordPatObj != null) {
  1843. var callvisityn = ordPatObj.frmf_getParameter("SMMMO04100_callvisityn");
  1844. if (callvisityn == "N") {
  1845. grp_prcp.btn_tempsave.enable = false;
  1846. grp_prcp.btn_prcpsave.enable = false;
  1847. grp_prcp.btn_prcpsave2.enable = false;
  1848. grp_prcp.btn_prcpsave.tooltip = "응급실 Visit Time을 등록 하지 않으면 기록과 처방은 임시저장만 가능 합니다.";
  1849. grp_prcp.btn_prcpsave2.tooltip = "응급실 Visit Time을 등록 하지 않으면 기록과 처방은 임시저장만 가능 합니다.";
  1850. return false ;
  1851. }
  1852. else {
  1853. var nTrgtDeptRow = sUserOrdDeptNode.findRow("userorddeptcd", erorddeptcd);
  1854. if (!utlf_isNull(nTrgtDeptRow) && nTrgtDeptRow > 0){
  1855. return true;
  1856. }
  1857. else {
  1858. if (ds_data_paminfo.getColumn(0, "ervisityn") == "Y") return true;
  1859. }
  1860. }
  1861. }
  1862. return false;
  1863. }
  1864. else {
  1865. if (sIoflag == "O" || sIoflag == "S") {
  1866. var nTrgtRow = sUserOrdDeptNode.findRow("userorddeptcd", orddeptcd)
  1867. if(utlf_isNull(nTrgtRow) || nTrgtRow < 1){
  1868. return false;
  1869. }
  1870. }
  1871. else {
  1872. if (docSchInfoList.rowcount > 0 && atdoctridfg == "Y") {
  1873. var wardcd = ds_data_paminfo.getColumn(0, "wardcd");
  1874. dsf_createDs("ds_temp_icudeptinfo", []);
  1875. lf_getHardCDList("Y", 425, 0 , ds_temp_icudeptinfo);
  1876. var cdseqno = ds_icudeptinfo.getColumn(0, ds_temp_icudeptinfo.findRow("hardcd", wardcd), "cdseqno");
  1877. for (var i= 0 ; i < docSchInfoList.rowcount ; i++) {
  1878. var curTime = utlf_getCurrentTime().substr (0,4);
  1879. var starttm = docSchInfoList.getColumn(i, "starttm");
  1880. var endtm = docSchInfoList.getColumn(i, "endtm");
  1881. var workdd = docSchInfoList.getColumn(i, "workdd");
  1882. var icuprcpyn = docSchInfoList.getColumn(i, "icuprcpyn");
  1883. var nicuprcpyn = docSchInfoList.getColumn(i, "nicuprcpyn");
  1884. if (ds_init_data.getColumn(0, "prcpcd") == workdd && curTime >= starttm && curTime <= endtm) {
  1885. if (icuprcpyn == "Y" && nicuprcpyn == "N") {
  1886. if (cdseqno != "1"){
  1887. var oRemoveDs = this.removeChild("ds_temp_icudeptinfo");
  1888. oRemoveDs = null;
  1889. return false;
  1890. }
  1891. }
  1892. else if (icuprcpyn == "N" && nicuprcpyn == "Y") {
  1893. if (cdseqno != "2"){
  1894. var oRemoveDs = this.removeChild("ds_temp_icudeptinfo");
  1895. oRemoveDs = null;
  1896. return false;
  1897. }
  1898. }
  1899. else if (icuprcpyn == "Y" && nicuprcpyn == "Y") {
  1900. if (cdseqno != "2" && cdseqno != "1"){
  1901. var oRemoveDs = this.removeChild("ds_temp_icudeptinfo");
  1902. oRemoveDs = null;
  1903. return false;
  1904. }
  1905. }
  1906. }
  1907. }
  1908. var oRemoveDs = this.removeChild("ds_temp_icudeptinfo");
  1909. oRemoveDs = null;
  1910. }
  1911. if (sScrnFlag == "prcp" && anstdeptlst != null && anstdeptlst.rowcount > 0) {
  1912. return true;
  1913. }
  1914. if (ds_data_paminfo.getColumn(0, "subprcpyn") == "Y") {
  1915. return true;
  1916. }
  1917. else {
  1918. if (atdoctridfg == "Y") {
  1919. var nFindRow = sUserOrdDeptNode.findRow("userorddeptcd", ds_data_paminfo.getColumn(0, "subprcpyn"));
  1920. if (nFindRow >= 0)
  1921. return true ;
  1922. }
  1923. }
  1924. var nFindRow = sUserOrdDeptNode.findRow("userorddeptcd",orddeptcd);
  1925. if (nFindRow < 0) {
  1926. return false;
  1927. }
  1928. }
  1929. var orddrid = "";
  1930. if (sIoflag == "O" || sIoflag == "S")
  1931. orddrid = ds_data_paminfo.getColumn(0, "orddrid");
  1932. else
  1933. orddrid = ds_data_paminfo.getColumn(0, "medispclid");
  1934. if (sysf_getUserInfo("userid") == orddrid) {
  1935. return true;
  1936. }
  1937. else {
  1938. dsf_createDs("ds_temp_akinfo", []);
  1939. lf_getHardCDList("Y", 317, 0 , ds_temp_akinfo);
  1940. var cdseqno = ds_icudeptinfo.getColumn(0, ds_temp_icudeptinfo.findRow("hardcd", orddeptcd), "cdseqno");
  1941. var nAkInfoRow= ds_temp_akinfo.findRow("hardcd", orddeptcd);
  1942. if (nAkInfoRow >= 0) {
  1943. var nAkInfoUserdeptRow = ds_temp_akinfo.findRow("hardcd", userdeptcd);
  1944. if (nAkInfoUserdeptRow >= 0) {
  1945. var oRemoveDs = this.removeChild("ds_temp_akinfo");
  1946. oRemoveDs = null;
  1947. return true;
  1948. }
  1949. }
  1950. var oRemoveDs = this.removeChild("ds_temp_akinfo");
  1951. oRemoveDs = null;
  1952. }
  1953. if ("Y" != atdoctridfg)
  1954. return false;
  1955. }
  1956. return true;
  1957. }
  1958. /***************************************************************************************************
  1959. * Function : lf_addDiagSetValue
  1960. * Description : 선택된 진단명을 진단 instance에 맵핑한다.
  1961. * Argument : diagInfo
  1962. * return type :
  1963. * Creator :
  1964. * 변환OK
  1965. ***************************************************************************************************/
  1966. function lf_addDiagSetValue(diagInfo)
  1967. {
  1968. var ds_src = ds_main_diagcdlist;
  1969. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  1970. var orddd;
  1971. var orddrid;
  1972. if ( prcpgenrflag == "O" || prcpgenrflag == "S") {
  1973. orddd = ds_paminfo.getColumn(0, "orddd");
  1974. orddrid = ds_paminfo.getColumn(0, "orddrid");
  1975. } else {
  1976. orddd = ds_paminfo.getColumn(0, "indd");
  1977. orddrid = ds_paminfo.getColumn(0, "medispclid");
  1978. }
  1979. cretno = ds_paminfo.getColumn(0, "cretno");
  1980. orddeptcd = ds_paminfo.getColumn(0, "orddeptcd");
  1981. var diagRow = diagInfo.split ( "▩" ).length;
  1982. var srchRow = ds_src.rowcount - 1;
  1983. var mdiagcd = ds_src.lookup("diagkindcdflag", 'M', "diagcd");
  1984. var diagkindcdflag = ""; //주부유형
  1985. for ( var i = 0; i < diagRow - 1; i++ ) {
  1986. var ds_dest = ds_main_diagcdlist;
  1987. ds_dest.insertRow(srchRow)
  1988. ds_dest.copyRow(srchRow, ds_reset_diagcdlist, 0);
  1989. var icd10cd = lf_getArrayData ( diagInfo, i, 8, "▩", "▦" );
  1990. var diagcd = lf_getArrayData ( diagInfo, i, 9, "▩", "▦" );
  1991. var diagengnm = lf_getArrayData ( diagInfo, i, 2, "▩", "▦" );
  1992. var diaghngnm = lf_getArrayData ( diagInfo, i, 3, "▩", "▦" );
  1993. var spclinfo = lf_getArrayData ( diagInfo, i, 5, "▩", "▦" );
  1994. ds_src.setColumn(srchRow, "diagkindcdflag", "S");
  1995. if ( utlf_isNull(mdiagcd) && i == 0) {
  1996. ds_src.setColumn(srchRow, "diagkindcdflag", "M");
  1997. } else {
  1998. if ( spclinfo == "Y" ) { //산전특례
  1999. //산정특례 처방이면 산전특례이면서 주상병이 있는지 찾는다.
  2000. var findRow = ds_src.findRowExpr("diagkindcdflag == 'M' && spclinfo == 'Y'");
  2001. var spcmdiagcd = (findRow == -1) ? null : ds_src.getColumn(findRow, "diagcd");
  2002. if (utlf_isNull(spcmdiagcd)) { //값이 없으면 주상병으로 할 건지 물어본다.
  2003. if ( sysf_messageBox ( "[" + icd10cd + "] 상병은 특례상병입니다. 주상병으로 하시겠습니까?","Q") == "6" ) {
  2004. //하겠다고 하면 주상병으로 고침
  2005. var srcNodeList = model.instances(0).selectNodes ( "/root/main/diaginfo/diagcdlist" );
  2006. for ( var j = 0; j < ds_dest.rowcount; j++ ) {
  2007. if (srchRow == j) {
  2008. ds_dest.setColumn(j, "diagkindcdflag", "M" );
  2009. } else {
  2010. if (ds_dest.getColumn(j, "diagkindcdflag") == "M") {
  2011. ds_dest.setColumn(j, "diagkindcdflag", "S");
  2012. if (ds_dest.getColumn(j, "status") == "-") {
  2013. //진단상태가 - 이면 U로 수정함
  2014. ds_dest.setColumn(j, "status", "U");
  2015. }
  2016. }
  2017. }
  2018. }
  2019. }
  2020. }
  2021. }
  2022. }
  2023. /*
  2024. var dispdiagcd = getArrayData ( getParameter("diagInfo"), i, 6, "▩", "▦" );
  2025. var orgdiagnm = getArrayData ( getParameter("diagInfo"), i, 7, "▩", "▦" );
  2026. var orgdiagcd = getArrayData ( getParameter("diagInfo"), i, 8, "▩", "▦" );
  2027. var tootfact = getArrayData ( getParameter("diagInfo"), i, 9, "▩", "▦" );
  2028. */
  2029. ds_src.setColumn(srchRow, "icd10cd", icd10cd);
  2030. ds_src.setColumn(srchRow, "diagcd", diagcd);
  2031. ds_src.setColumn(srchRow, "diagengnm", diagengnm);
  2032. ds_src.setColumn(srchRow, "diaghngnm", diaghngnm);
  2033. ds_src.setColumn(srchRow, "spclinfo", spclinfo);
  2034. ds_src.setColumn(srchRow, "status", "I");
  2035. ds_src.setColumn(srchRow, "instcd", sysf_getUserInfo("dutplceinstcd"));
  2036. ds_src.setColumn(srchRow, "pid", ds_paminfo.getColumn(0, "pid"));
  2037. ds_src.setColumn(srchRow, "orddd", orddd);
  2038. ds_src.setColumn(srchRow, "cretno", cretno);
  2039. ds_src.setColumn(srchRow, "orddeptcd", orddeptcd);
  2040. ds_src.setColumn(srchRow, "orddrid", orddrid);
  2041. ds_src.setColumn(srchRow, "genrflagcd", prcpgenrflag);
  2042. ds_src.setColumn(srchRow, "diaghistcd", "O");
  2043. ds_src.setColumn(srchRow, "diagtypecd", "D");
  2044. ds_src.setColumn(srchRow, "diagkindcd", "C");
  2045. ds_src.setColumn(srchRow, "anamneflag", "N");
  2046. ds_src.setColumn(srchRow, "diagsignflag", "2");
  2047. ds_src.setColumn(srchRow, "tootflagcd", "-");
  2048. ds_src.setColumn(srchRow, "tootfact", "-");
  2049. diagkindcdflag = ds_src.getColumn(srchRow, "diagkindcdflag" );
  2050. lf_checkDiagHosinpPcp( icd10cd, prcpgenrflag, diagkindcdflag );
  2051. srchRow++;
  2052. /**************************************** 진단추가시 원외처방예외사유 진단인지 check ******************************/
  2053. //치식 상병 입력 시 치식팝업 자동 호출 (2009.10.28 by JJE)
  2054. var tootDiagFromToCd = ds_initsrch_tootdiagcd.getColumn(0, "trgtcd"); //ex: K01|K10
  2055. if( !utlf_isNull(tootDiagFromToCd) ){
  2056. var tootDiagFrCd = tootDiagFromToCd.split("|")[0];
  2057. var tootDiagToCd = tootDiagFromToCd.split("|")[1];
  2058. var tootDiagFrLngth = utlf_getStringLength(tootDiagFrCd);
  2059. var tootDiagToLngth = utlf_getStringLength(tootDiagToCd);
  2060. if(icd10cd.substring(0, tootDiagFrLngth) >= tootDiagFrCd && icd10cd.substring(0, tootDiagToLngth) <= tootDiagToCd){
  2061. fDentifmla();
  2062. }
  2063. }
  2064. //end 치식팝업 자동 호출
  2065. }
  2066. //검색라인 초기화
  2067. ds_src.setColumn(srchRow, "icd10cd", "");
  2068. ds_src.setColumn(srchRow, "diagengnm", "");
  2069. div_all.grd_diaglist.setFocus();
  2070. ds_main_diagcdlist.selectRow(ds_main_diagcdlist.rowcount - 1);
  2071. ds_main_diagcdlist.rowposition = ds_main_diagcdlist.rowcount - 1;
  2072. div_all.grd_diaglist.setCellPos(4);
  2073. }
  2074. /****************************************************************************************
  2075. * Components : ds_grid_prcplist
  2076. * Components ID : ds_grid_prcplist
  2077. * Event : OnEnterDown
  2078. * Argument : ioflag, flag ,srcNode, indx , chkval, popupfg, grdObj
  2079. * Description : 액팅부서입력
  2080. ****************************************************************************************/
  2081. function lf_setPrcpExecDept( ioflag, flag ,srcNode:Dataset, indx , chkval, popupfg, grdObj ){
  2082. if( indx < 1 || utlf_isNull(srcNode)){
  2083. return ;
  2084. }
  2085. var oTrgtObj = null;
  2086. if( popupfg == "child"){
  2087. oTrgtObj = opener;
  2088. } else{
  2089. oTrgtObj = this;
  2090. }
  2091. var prcpclscd =srcNode.getColumn(indx, "prcpclscd");
  2092. var prcpnodelist;
  2093. var chngdeptcd;
  2094. var grpno;
  2095. if( flag == "prepprcpflag"){
  2096. if( (ioflag == "O" || ioflag == "S" )&& ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) ) {
  2097. var spcldrug = lf_getArrayData (srcNode.getColumn(indx, "drugmastspec") + "^", 0, 23, "^", "|" );
  2098. if( (spcldrug == "M" || spcldrug == "S" ) && chkval == "Y" ) {
  2099. sysf_messageBox("마약 및 수액은 prep지정 불가합니다.", "I");
  2100. srcNode.setColumn(indx, "prepprcpflag", "N");
  2101. if( grdObj != null ){
  2102. var nCol = grdObj.getBindCellIndex("body", "prepprcpflag");
  2103. grdObj.setCellProperty("body", nCol, "edittype", "none");
  2104. }
  2105. return ;
  2106. }
  2107. if( chkval == "Y"){
  2108. srcNode.setColumn(indx, "prcpexecdeptcd", srcNode.getColumn(indx, "issdeptcd"));
  2109. }else {
  2110. srcNode.setColumn(indx, "prcpexecdeptcd", srcNode.getColumn(indx, "tempcol23"));
  2111. }
  2112. }
  2113. }else if ( flag == "tpnyn"){
  2114. if( (ioflag != "O" && ioflag != "S" )&& ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) ) {
  2115. chngdeptcd = "";
  2116. if( chkval == "Y"){
  2117. srcNode.setColumn(indx, "fluidyn", "Y");
  2118. chngdeptcd = "A753";
  2119. }else {
  2120. chngdeptcd = srcNode.getColumn(indx, "tempcol23");
  2121. }
  2122. srcNode.setColumn(indx, "prcpexecdeptcd", chngdeptcd);
  2123. if( srcNode != null && srcNode.rowcount > 0 ){
  2124. grpno = srcNode.getColumn(indx, "prcpmixno");
  2125. for( var i= 0; i < srcNode.rowcount ; i++ ) {
  2126. if(srcNode.getColumn(i, "prcpmixno") != grpno ){
  2127. continue ;
  2128. }
  2129. if( !utlf_isNull(srcNode.getColumn(i, "tempcol1"))&& srcNode.getColumn(i, "tempcol1") != "000" ) {
  2130. continue ;
  2131. }
  2132. if( chkval == "Y" ){
  2133. srcNode.setColumn(i, "prcpexecdeptcd", chngdeptcd);
  2134. }else{
  2135. var tempcol23 = srcNode.getColumn(i, "tempcol23");
  2136. srcNode.setColumn(i, "prcpexecdeptcd", tempcol23);
  2137. }
  2138. oTrgtObj.lf_gridUpdateChk("per", i);
  2139. }
  2140. }
  2141. }
  2142. }else if ( flag =="anticncryn"){
  2143. if( (ioflag != "O" && ioflag != "S" )&& ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) ) {
  2144. chngdeptcd = "";
  2145. if( chkval == "Y"){
  2146. chngdeptcd = "PMB";
  2147. }else {
  2148. chngdeptcd = srcNode.getColumn(indx, "tempcol23"); //PMR
  2149. }
  2150. srcNode.setColumn(indx, "prcpexecdeptcd", chngdeptcd);
  2151. //prcpnodelist = opener.instance1.selectNodes(srcNode);
  2152. if( srcNode != null && srcNode.rowcount > 0 ){
  2153. grpno = srcNode.getColumn(indx, "prcpmixno");
  2154. for( var i= 0; i < srcNode.rowcount ; i++ ) {
  2155. if(srcNode.getColumn(i, "prcpmixno") != grpno ){
  2156. continue ;
  2157. }
  2158. if( !utlf_isNull(srcNode.getColumn(i, "tempcol1")) && srcNode.getColumn(i, "tempcol1") != "000" ){
  2159. continue ;
  2160. }
  2161. if( chkval == "Y" ){
  2162. srcNode.setColumn(i, "prcpexecdeptcd", chngdeptcd);
  2163. }else{
  2164. srcNode.setColumn(i, "prcpexecdeptcd", srcNode.getColumn(i, "tempcol23"));
  2165. }
  2166. oTrgtObj.lf_gridUpdateChk("per", i);
  2167. }
  2168. }
  2169. }
  2170. }else if ( flag =="stocyn"){
  2171. if( chkval == "Y"){
  2172. var prcpcd = srcNode.getColumn(indx, "prcpcd");
  2173. var oPointDsKeepprcplist = lf_getTopPatientinfo("N", "ds_keepprcplist") ;
  2174. var sPrcpCd = oPointDsKeepprcplist.getColumn(oPointDsKeepprcplist.findRow("prcpcd", prcpcd), "prcpcd");
  2175. if(utlf_isNull(sPrcpCd)){
  2176. sysf_messageBox("비치약품마스터에 없는 처방은 비치지정 불가합니다.", "I");
  2177. srcNode.setColumn(indx, "stocyn", "N");
  2178. if( grdObj != null ){
  2179. var nCol = grdObj.getBindCellIndex("body", "stocyn");
  2180. grdObj.setCellProperty("body", nCol, "edittype", "none");
  2181. }
  2182. return ;
  2183. }
  2184. if(srcNode.getColumn(indx, "hosinhosoutflag") == "O"){
  2185. sysf_messageBox("원외 처방은 비치지정 불가합니다.", "I");
  2186. srcNode.setColumn(indx, "stocyn", "N");
  2187. return ;
  2188. }
  2189. srcNode.setColumn(indx, "prcpexecdeptcd", "HOM" );
  2190. }else {
  2191. srcNode.setColumn(indx, "prcpexecdeptcd", srcNode.getColumn(indx, "tempcol23"));
  2192. }
  2193. }else if ( flag =="selfprcpflag"){
  2194. if( chkval == "Y"){
  2195. srcNode.setColumn(indx, "prcpexecdeptcd", "PMR" );
  2196. }else {
  2197. srcNode.setColumn(indx, "prcpexecdeptcd", srcNode.getColumn(indx, "tempcol23") );
  2198. }
  2199. }else if ( flag =="fluidyn"){
  2200. var prcplist = srcNode.findRowExpr("status!='S'");
  2201. var prcpmixno = model.getValue( srcNode + "[" + indx + "]/prcpmixno");
  2202. srcNode.filterstr = "status!='S'";
  2203. var prcplist = srcNode;
  2204. if (prcplist != null && prcplist.rowcount > 0) {
  2205. var status = "";
  2206. for( var i = 0; i < prcplist.rowcount ; i++ ) {
  2207. status = prcplist.getColumn(i, "status");
  2208. if(prcplist.getColumn(i, "prcpmixno") == prcpmixno && ((prcplist.getColumn(i, "tempcol1") == "000" && status != "D" ) || ( status == "I"))){
  2209. prcplist.setColumn(i, "fluidyn", chkval);
  2210. if( status != "I" ){
  2211. prcplist.setColumn(i, "status", "U");
  2212. }
  2213. }
  2214. }
  2215. }
  2216. srcNode.filterstr = "";
  2217. }
  2218. }
  2219. /***************************************************************************************************
  2220. * Function : lf_checkDupInsu
  2221. * Description : 기왕증 체크
  2222. * Argument :
  2223. * return type :
  2224. * Creator :
  2225. ***************************************************************************************************/
  2226. function lf_checkDupInsu(sFlag , oGrid, sCtrlFlag)
  2227. {
  2228. var dupyn = "N";
  2229. var dupcol = 1;
  2230. if (sFlag == "child")
  2231. dupyn = opener.ds_data_paminfo.getColumn(0, "dupinsuyn");
  2232. else
  2233. dupyn = ds_paminfo.getColumn(0, "dupinsuyn");
  2234. if (!utlf_isNull(sCtrlFlag)) {
  2235. oGrid.enable = (dupyn != "Y") ? false : true;
  2236. }
  2237. else {
  2238. dupcol = oGrid.getBindCellIndex("body", "anamneflag");
  2239. oGrid.setCellProperty("body", dupcol, "edittype", ((dupyn != "Y") ? "none" : "normal") );
  2240. }
  2241. }
  2242. /***************************************************************************************************
  2243. * Function : lf_choiOrdChk
  2244. * Description : 선택진료 가능여부 체크
  2245. * Argument :
  2246. * return type :
  2247. * Creator :
  2248. * 변환OK
  2249. ***************************************************************************************************/
  2250. function lf_choiOrdChk(objPrcpDs:Dataset)
  2251. {
  2252. if (objPrcpDs.getColumn(0, "tempcol24") != "Y") {
  2253. sysf_messageBox("선택진료가 불가한 처방입니다.", "E");
  2254. return false;
  2255. }
  2256. else {
  2257. return true;
  2258. }
  2259. }
  2260. /***************************************************************************************************
  2261. * Function : lf_hosinPrcpResncdSed
  2262. * Description : 원내처방사유 처리
  2263. * Argument :
  2264. * return type :
  2265. * Creator :
  2266. * 변환 OK
  2267. ***************************************************************************************************/
  2268. function lf_hosinPrcpResncdSed(sFlag, strSrc, nSendRow, strSelResn)
  2269. {
  2270. //2007-12-13 윤영옥 선생님과 대화
  2271. //종속이 최우선 => 원내처방사유 => 약, 주사
  2272. var prcpgenrflag = "";
  2273. var hosinprcpresncd = "";
  2274. var prcpkindcd = "";
  2275. //SON0919 응급퇴원처방 원내사유 관련 추가 by sonjy start
  2276. var erflag = "";
  2277. var erprcpkindcd = "";
  2278. //SON0919 end
  2279. //SON0930
  2280. var hosinflag = "";
  2281. var drugmastspec = "";
  2282. var iFind = -1;
  2283. var prcpclscd = "";
  2284. var wardcd = "";
  2285. var oTrgtObj = lf_getFormObject(sFlag);
  2286. var ds_src = oTrgtObj.objects[strSrc];
  2287. // 원무의 원내사유 체크
  2288. prcpgenrflag = oTrgtObj.ds_patflag.getColumn(0, "prcpgenrflag");
  2289. prcpclscd = ds_src.getColumn(nSendRow, "prcpclscd");
  2290. prcpkindcd = lf_getDsValue(oTrgtObj.ds_init, 0, "prcpkindcd");
  2291. erprcpkindcd = ds_src.getColumn(nSendRow, "prcpkindcd");
  2292. if( utlf_isNull(erprcpkindcd) )
  2293. erprcpkindcd = prcpkindcd;
  2294. if (utlf_isNull(strSelResn)){
  2295. if( prcpgenrflag == "E" && erprcpkindcd == "60" && oTrgtObj.ds_init.getColumn(0, "erresn" ) != "G3") {
  2296. hosinprcpresncd = "00"; // 응급실 G3가 아닌 환자의 퇴원 처방을 원외로 설정 되게 하기 위해 2013.03.27 엄영만
  2297. } else {
  2298. hosinprcpresncd = oTrgtObj.ds_init.getColumn(0, "hosinprcpresncd"); //원무의 원내사유 체크
  2299. }
  2300. } else {
  2301. hosinprcpresncd = strSelResn;
  2302. }
  2303. if(prcpgenrflag == "O" || prcpgenrflag == "S"){
  2304. wardcd = "";
  2305. } else {
  2306. wardcd = oTrgtObj.ds_paminfo.getColumn(0, "wardcd");
  2307. }
  2308. // DSC(일일수술실 2360800000 원외로 되도록 2012.06.11 엄영만)
  2309. if( erprcpkindcd == "60" &&
  2310. ( (prcpgenrflag == "E" && oTrgtObj.ds_init.getColumn(0, "erresn") != "G3")
  2311. || (prcpgenrflag == "D" && wardcd == "2360800000") )) {
  2312. erflag = "Y" ;
  2313. }
  2314. /* 종속 원내처방사유 55: 검사, 수술, 처치에 사용하는 의약품
  2315. 마약 45: 조제실제제,임상시험의약품,마약,방사성의약품,투석액,희귀의약품
  2316. 항암 47: 6세이하의 소아에게 투약하는 항암제(경구) */
  2317. /****************************** 원내처방 사유코드 처리 *******************************/
  2318. if (prcpgenrflag == "O" || erflag == "Y") { //SON0919 외래이거나 g3아닌 응급퇴원처방, DSC(일일수술실 2360800000) 퇴원처방 인 경우
  2319. // 원외전용약은 예외
  2320. drugmastspec = ds_src.getColumn(nSendRow, "drugmastspec" ) + "^";
  2321. hosinflag = lf_getArrayData(drugmastspec , 0, 11 , "^", "|" ); //SON0930 start 원외전용약은 예외
  2322. //********************* 투석원내처방사유처리 **************************//
  2323. var prcpcd = ds_src.getColumn(nSendRow, "prcpcd");
  2324. if (hosinflag != "O") {
  2325. var dialhospinoutcd = lf_getDsValue(oTrgtObj.ds_initsrch_prcpetccnts, 0, "dialhospinoutcd");
  2326. iFind = dialhospinoutcd.indexOf(prcpcd);
  2327. }
  2328. if (iFind >= 0 && erflag != "Y") {
  2329. ds_src.setColumn(nSendRow, "hosinhosoutflag", "I");
  2330. ds_src.setColumn(nSendRow, "hosinprcpresncd", "19");
  2331. var message = "원내지정이 가능한 처방입니다. 전체 약제를 원내로 하시려면 [예], 해당약제만 원내처방하시려면 [아니오]를 선택해주십시오.";
  2332. if (sysf_messageBox(message, "Q") == "6") {
  2333. var old_hosinprcpresncd = oTrgtObj.ds_init.getColumn(0, "hosinprcpresncd");
  2334. oTrgtObj.ds_init.setColumn(0, "hosinprcpresncd", "19");
  2335. if(old_hosinprcpresncd != "19") // TF 와 동작을 동일하게 맞추기 위해(TF는 같은 값이면 event 미발생함)
  2336. oTrgtObj.div_all.cmb_hosinprcpresn.onitemchanged.fireEvent(oTrgtObj.div_all.cmb_hosinprcpresn, new ItemChangeEventInfo);
  2337. }
  2338. oTrgtObj.ds_initsrch_prcpetccnts.setColumn(0, "dialhospinoutcd", "");
  2339. //********************* 투석원내처방사유처리끝 ************************//
  2340. } else {
  2341. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) return ; //약/주사가 아니면 return 20081012
  2342. drugmastspec = ds_src.getColumn(nSendRow, "drugmastspec") + "^";
  2343. var drugmastHosinprcpresncd = lf_getArrayData( drugmastspec, 0, 12, "^", "|" ); //약품마스터에 있는 원내처방 사유코드 처리
  2344. if( ds_src.getColumn(nSendRow, "inclprcpno") != "0" ){ //종속처방 처리 추가 by sonjy 2008-09-16
  2345. drugmastHosinprcpresncd = "55";
  2346. drugmastHosinhosoutflag = "I" ; // 사용안하는 듯?
  2347. }
  2348. if ( drugmastHosinprcpresncd != "00" ) { //SON0826 주사제와 선처치, mset은 환자원내사유에 우선한다.
  2349. ds_src.setColumn(nSendRow, "hosinhosoutflag", "I" );
  2350. ds_src.setColumn(nSendRow, "hosinprcpresncd", drugmastHosinprcpresncd );
  2351. } else {
  2352. if ( hosinprcpresncd != "00" ) { // 환자원내처방사유
  2353. ds_src.setColumn(nSendRow, "hosinhosoutflag", "I" );
  2354. ds_src.setColumn(nSendRow, "hosinprcpresncd", hosinprcpresncd );
  2355. } else {
  2356. ds_src.setColumn(nSendRow, "hosinhosoutflag", "O" );
  2357. ds_src.setColumn(nSendRow, "hosinprcpresncd", "00" );
  2358. }
  2359. }
  2360. }
  2361. } else if (prcpgenrflag == "E") {
  2362. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) return;
  2363. if ( erprcpkindcd == "60" && hosinprcpresncd == "00") { // 퇴원약 환자원내처방사유 적용
  2364. ds_src.setColumn(nSendRow, "hosinhosoutflag", "O");
  2365. ds_src.setColumn(nSendRow, "hosinprcpresncd", "00");
  2366. } else {
  2367. ds_src.setColumn(nSendRow, "hosinhosoutflag", "I");
  2368. ds_src.setColumn(nSendRow, "hosinprcpresncd", hosinprcpresncd);
  2369. }
  2370. } else { //입원, DSC
  2371. // 3120400000 화학요법실, 3120900000 항암주사실 퇴원약 처방시 원내 예외 사유 설정. "주사제와 같이 투여 하는 경우" 2012.06.11 엄영만
  2372. if ( prcpgenrflag == "D" && erprcpkindcd == "60" && (wardcd == "3120900000" || wardcd == "3120400000")) {
  2373. ds_src.setColumn(nSendRow, "hosinhosoutflag", "I");
  2374. ds_src.setColumn(nSendRow, "hosinprcpresncd", "52");
  2375. } else {
  2376. ds_src.setColumn(nSendRow, "hosinhosoutflag", "I");
  2377. ds_src.setColumn(nSendRow, "hosinprcpresncd", "00");
  2378. }
  2379. }
  2380. }
  2381. /***************************************************************************************************
  2382. * Function : lf_checkColor
  2383. * Description : 처방 진행상태 체크
  2384. * Argument :
  2385. * return type :
  2386. * Creator :
  2387. ***************************************************************************************************/
  2388. function lf_checkColor(ioflag, prcpstatcd, prcpclscd1, colorfg, scrnflag)
  2389. {
  2390. if (utlf_isNull(ioflag) || utlf_isNull(prcpstatcd))
  2391. return -1 ;
  2392. var iprcpstat = parseInt(prcpstatcd);
  2393. if (iprcpstat >= 600) {
  2394. return 4;
  2395. }
  2396. else if (iprcpstat >= 400) {
  2397. if (colorfg == "E") return 4;
  2398. else return 3;
  2399. }
  2400. if (ioflag == "O" || ioflag == "S") {
  2401. if (iprcpstat >= 230) {
  2402. if (colorfg == "E") return 4;
  2403. else return 2;
  2404. }
  2405. }
  2406. else {
  2407. if (iprcpstat >= 100) {
  2408. if (colorfg == "E") {
  2409. return 4;
  2410. }
  2411. else {
  2412. if (scrnflag == "N" && iprcpstat == 100) return 1;
  2413. else return 2;
  2414. }
  2415. }
  2416. }
  2417. return 1 ;
  2418. }
  2419. /***************************************************************************************************
  2420. * Function : lf_chkOpDrug
  2421. * Description : 수술 예방적 항생제 투여 관련 체크
  2422. * Argument :
  2423. * return type :
  2424. * Creator :
  2425. * 변환 OK
  2426. ***************************************************************************************************/
  2427. function lf_chkOpDrug(sFlag, strSrc, nSendRow)
  2428. {
  2429. var oTrgtObj = lf_getFormObject(sFlag);
  2430. var ds_src = this.objects[strSrc];
  2431. var ds_temp_src = oTrgtObj.objects[strSrc];
  2432. //A, 예정수술명 => P, 수술코드 처방 => S, 대상이 아닐 경우 => N
  2433. var resnyn = appf_getPatientInfoDetail("resnyn");
  2434. if( resnyn == "N" || utlf_isNull( resnyn ) ) return true ;
  2435. var ndOpDrugList = null;
  2436. var ret = null ;
  2437. var drugmastspec = ds_src.getColumn(sendRow, "drugmastspec" ) + "^";
  2438. var prcpcd = ds_src.getColumn(sendRow, "prcpcd" ) ;
  2439. var prcpnm = ds_src.getColumn(sendRow, "prcpnm" ) ;
  2440. var msg = "[" + prcpcd + ":" + prcpnm + "]";
  2441. if( ds_src.getColumn(sendRow, "prcpkindcd") == "60" && (resnyn == "S" || resnyn == "A") ) {
  2442. if ( lf_getArrayData ( drugmastspec, 0, 23, "^", "|" ) == "P" && lf_getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "N") {
  2443. ret = sysf_messageBox( "수술시 예방적 항생제 투여 시는 퇴원약을 권장하고 있지 않습니다. " + msg + "처방을 ", "Q001") ;
  2444. }
  2445. } else {
  2446. //3세대 수술 예방적 항생제 여부 check
  2447. ndOpDrugList = oTrgtObj.ds_initsrch_opdrugcdlist.findRow("opdrugcd", ds_temp_src.getColumn(sendRow, "prcpcd"));
  2448. if( ndOpDrugList > -1 && ( resnyn == "P" || resnyn == "A")) {
  2449. ret = sysf_messageBox( "수술시 예방적 항생제로 3세대 cephalosporin 또는 aminoglycoside를 권장하고 있지 않습니다." + msg + " 처방을 변경 ", "S004") ;
  2450. } else if ( lf_getArrayData ( drugmastspec, 0, 23, "^", "|" ) == "P" && lf_getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "N" && ( resnyn == "S" || resnyn == "A")) {
  2451. ret = sysf_messageBox( "수술시 예방적 항생제 투여 시는 장기투여를 권장하고 있지 않습니다." + msg + " 처방을 ", "Q001") ;
  2452. }
  2453. }
  2454. if( ret == 6 ){ //yes=> 항생제 clear
  2455. ds_temp_src.deleteRow(sendRow);
  2456. return false ;
  2457. } else if( ret == 7 ) { //no => 항생제 사유 입력
  2458. oTrgtObj.frmf_setParameter ("SPMMO016000_resnflag" , "O" );
  2459. var mon = sysf_getCurrentMonitorNumber();
  2460. var xpt = this.getOwnerFrame().position.x + 500;
  2461. var ypt = this.getOwnerFrame().position.y + 400;
  2462. var objArgs = new Object();
  2463. objArgs.arg_ds_migdrugmthd = ds_migdrugmthd;
  2464. frmf_modal("SPMMO16000", "SPMMO16000", objArgs, false, mon, xpt, ypt, null, null, null, null, null, "P"); //사유입력창
  2465. //fPrcpModal ( "SPMMO16000", 400, 100 ); //사유입력창
  2466. var resncnts = oTrgtObj.frmf_getParameter ("SPMMO016000_resncnts");
  2467. ds_temp_src.setColumn(sendRow, "tempcol19" ,resncnts);
  2468. }
  2469. return true ;
  2470. }
  2471. /***************************************************************************************************
  2472. * Function : lf_hosinPrcpResnChk
  2473. * Description : 약주사 원내처방 사유 체크
  2474. * Argument : sFlag [String : ]
  2475. * : oDestDs [Dataset : 검색Dataset]
  2476. * return type :
  2477. * Creator :
  2478. * 변환 OK
  2479. ***************************************************************************************************/
  2480. function lf_hosinPrcpResnChk(sFlag, oDestDs)
  2481. {
  2482. // 약주사 원내처방사유 체크
  2483. //var prcpclscdchk1 = "";
  2484. var prcpclscdchkA2 = "";
  2485. var prcpclscdchkA4 = "";
  2486. var prcpclscdchkA6 = "";
  2487. var prcpclscd = "";
  2488. // G3아닌 응급퇴원약 원내외 처리 부분
  2489. var prcpgenrflag = "";
  2490. var prcpkindcd = "";
  2491. var erflag = "";
  2492. // 약제원/내외구분 O/I Setting값이 있는 경우 모든 사유처리에서 제외하도록.
  2493. var hosinflag = "";
  2494. var drugmastspec = "";
  2495. var age;
  2496. var oTrgtObj = lf_getFormObject(sFlag);
  2497. //G3아닌 응급퇴원약 원내외 처리 부분
  2498. //DSC 퇴원처방 처리
  2499. prcpgenrflag = oTrgtObj.ds_patflag.getColumn(0, "prcpgenrflag");
  2500. if( (prcpgenrflag == "E" && oTrgtObj.ds_init.getColumn(0, "erresn") != "G3") || prcpgenrflag == "D" ){ //SON0919 G3아닌 응급퇴원약 원내외 처리 부분 BY SONJY 20080917 start
  2501. erflag = "Y";
  2502. }
  2503. //var hosinprcpresncd;
  2504. // G3아닌 응급퇴원약 원내외 처리 부분
  2505. if ( oTrgtObj.ds_root.getColumn(0, "usge") == "prcp" && (prcpgenrflag =="O" || erflag == "Y" ) ) { //SON0919 G3아닌 응급퇴원약 원내외 처리 부분 BY SONJY
  2506. dsf_createDs("ds_tempSrc");
  2507. ds_tempSrc.copyData(oDestDs);
  2508. if( erflag == "Y") { //원내처방사유가 45 SON0919 start
  2509. ds_tempSrc.filter("prcpkindcd == '60' && hosinprcpresncd == '45'");
  2510. } else {
  2511. ds_tempSrc.filter("hosinprcpresncd == '45'");
  2512. }//SON0919 end
  2513. var prcpclscdNodeValue = "";
  2514. for(var i = 0; i < ds_tempSrc.rowcount; i++) {
  2515. drugmastspec = ds_tempSrc.getColumn(i, "drugmastspec");
  2516. hosinflag = lf_getArrayData ( drugmastspec + "^", 0, 11 , "^", "|" );
  2517. if( hosinflag == "O" ) continue ; //SON0930 start 원외전용약은 예외
  2518. prcpclscdNodeValue = ds_tempSrc.getColumn(i, "prcpclscd");
  2519. if ( prcpclscdNodeValue == "A2" ) {
  2520. prcpclscdchkA2 = "A2"
  2521. } else if ( prcpclscdNodeValue == "A4" ){
  2522. prcpclscdchkA4 = "A4"
  2523. } else if ( prcpclscdNodeValue == "A6" ){
  2524. prcpclscdchkA6 = "A6"
  2525. }
  2526. }
  2527. if ( !utlf_isNull(prcpclscdchkA2) || !utlf_isNull(prcpclscdchkA4) || !utlf_isNull(prcpclscdchkA6) ) { //값이 있으면
  2528. for ( var i = 0; i < oDestDs.rowcount; i++ ) { // 처방화면에 넘어온 것을 모두 찾아서 처방건별처리
  2529. prcpclscd = oDestDs.getColumn(i, "prcpclscd");
  2530. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ; //sonjy 20081012 약/주사일때만 check
  2531. prcpkindcd = oDestDs.getColumn(i, "prcpkindcd");
  2532. if( erflag == "Y" && prcpkindcd != "60" ){ //응급 G3가 아니고 퇴원처방이 아닌경우 응급원내사유로 원복
  2533. oDestDs.setColumn(i, "hosinhosoutflag", "I" );
  2534. oDestDs.setColumn(i, "hosinprcpresncd", ds_init.getColumn(0, "hosinprcpresncd") );
  2535. continue ;
  2536. }
  2537. drugmastspec = oDestDs.getColumn(i, "drugmastspec");
  2538. hosinflag = lf_getArrayData ( drugmastspec + "^", 0, 11, "^", "|" );
  2539. if ( prcpclscd != "A6" && hosinflag != "O" ) { //주사제는 예외 , 기본 원외인것도 예외 SON0930
  2540. if ( prcpclscdchkA2 == prcpclscd || prcpclscdchkA4 == prcpclscd || prcpclscdchkA6 == prcpclscd ) {
  2541. var hosinprcpresncd = oDestDs.getColumn(i, "hosinprcpresncd");
  2542. if ( hosinprcpresncd != "45" && hosinprcpresncd != "47" && hosinprcpresncd != "57" && hosinprcpresncd != "55" ) { //45, 47이 아니면, 55는 MSET
  2543. oDestDs.setColumn(i, "hosinhosoutflag", "I" );
  2544. oDestDs.setColumn(i, "hosinprcpresncd", "57" );
  2545. }
  2546. }
  2547. }
  2548. } // End of 처방건별처리
  2549. }// End of 값이 있으면
  2550. }
  2551. }
  2552. /***************************************************************************************************
  2553. * Function : lf_pamHosinPrcpResnCdChk
  2554. * Description : 환자에 해당되는 원내처방사유인지 체크
  2555. * Argument :
  2556. * return type :
  2557. * Creator :
  2558. * 변환 OK
  2559. ***************************************************************************************************/
  2560. function lf_pamHosinPrcpResnCdChk(sHosinPrcpResnCd, sFlag)
  2561. {
  2562. var cdnm = "";
  2563. if (sFlag == "child") {
  2564. var oTrgtObj = lf_getFormObject(sFlag);
  2565. cdnm = oTrgtObj.ds_P0034.lookup("cdid", sHosinPrcpResnCd, "cdnm");
  2566. }else {
  2567. cdnm = utlf_isNull(this.objects["ds_P0034"]) ? "" : ds_P0034.lookup("cdid", sHosinPrcpResnCd, "cdnm");
  2568. }
  2569. if (!utlf_isNull(cdnm)) {
  2570. return true;
  2571. } else {
  2572. if (sHosinPrcpResnCd == "52" || sHosinPrcpResnCd == "55") return false; //SON0826 선처치/주사제는 환자사유에 우선한다.
  2573. else return true ;
  2574. }
  2575. }
  2576. /***************************************************************************************************
  2577. * Function : lf_chkInCnclYN
  2578. * Description : 응급간호(ER Census)에서 삭제처리 했는지 여부 조회
  2579. * 변경요청(8106), 응급간호에서 삭제처리한 환자 선택 시 blocking 메세지 처리 추가
  2580. * 응급진료대상자 및 처방창에서 호출함
  2581. * Argument : pid []
  2582. * : orddd []
  2583. * : cretno []
  2584. * : mode [String : C:false리턴 시 창을닫음, B:처방저장을 blocking]
  2585. * return type :
  2586. * Creator :
  2587. * 변환OK
  2588. ***************************************************************************************************/
  2589. function lf_chkInCnclYN(pid, orddd, cretno, pMode)
  2590. {
  2591. if (utlf_isNull(pMode)) pMode = "C";
  2592. var sRef = dsf_createDsRow("ds_send_reqdata_erincncl", [{col:"pid", type:"string", size:256, val:pid},
  2593. {col:"orddd", type:"string", size:256, val:orddd},
  2594. {col:"cretno", type:"string", size:256, val:cretno}]);
  2595. var sRstlRef = dsf_createDs("ds_hidden_erincnclinfo");
  2596. var oParam = {};
  2597. oParam.id = "TRMMO04404";
  2598. oParam.service = "prcpmngtapp.ErMngt";
  2599. oParam.method = "reqGetChkInCnclYN";
  2600. oParam.inds = "req=" + sRef;
  2601. oParam.outds = sRstlRef + "=info";
  2602. oParam.async = false;
  2603. oParam.callback = "cf_TRMMO04404";
  2604. tranf_submit(oParam);
  2605. var oRstlRef = this.objects[sRstlRef];
  2606. if(arErrorCode.pop("TRMMO04404") > -1) {
  2607. //조회 결과, 삭제처리여부 N이면 처방창 호출 가능, 그 외(삭제처리 했을 경우)에는 blocking
  2608. if (oRstlRef.getColumn(0, "incnclyn") == "N" ) {
  2609. return true;
  2610. } else {
  2611. sysf_messageBox("삭제 처리 환자입니다.\n처방입력은 불가 합니다.\n\n응급 간호에", "I007");
  2612. if (pMode == "C") {
  2613. var orgPid = appf_getPatientInfo("pid");
  2614. var orgOrddd = appf_getPatientInfoDetail("indd");
  2615. var orgCretno = appf_getPatientInfoDetail("cretno");
  2616. if (pid == orgPid && orddd == orgOrddd && cretno == orgCretno) {
  2617. var mainObj = frmf_getMainViewer();
  2618. var curPrcpObj = mainObj.frmf_findPopup("SMMMO00100"); // 활성화된 처방Main 화면 object loading
  2619. var curCpObj = mainObj.frmf_findPopup("SMMMP00800"); // 활성화된 CP Main 화면 object loading
  2620. // 처방창이 열려있다면 입력된 처방을 삭제하고 처방창 close
  2621. if (!utlf_isNull(curPrcpObj)) {
  2622. curPrcpObj.ds_main_prcplist.clearData();
  2623. curPrcpObj.lf_appendChildPrcp("ds_reset_prcplist", "ds_main_prcplist", "main");
  2624. }
  2625. if (!utlf_isNull(curCpObj)) {
  2626. curCpObj.ds_main_prcplist.clearData();
  2627. curCpObj.lf_appendChildPrcp("ds_reset_prcplist", "ds_main_prcplist", "main");
  2628. }
  2629. }
  2630. } else if (pMode == "B") {
  2631. // 저장 blocking, 처방저장 버튼의 상태를 disabled 시킴
  2632. btn_tempsave.enable = false;
  2633. btn_prcpsave.enable = false;
  2634. btn_tempsave.tooltip = "삭제 처리 환자입니다. 처방입력은 불가 합니다. 응급 간호에 확인하십시오.";
  2635. btn_prcpsave.tooltip = "삭제 처리 환자입니다. 처방입력은 불가 합니다. 응급 간호에 확인하십시오.";
  2636. // 입력된 처방을 삭제시킴 (처방이 남아있으면 창 닫을 때 저장여부를 또 물어봄)
  2637. ds_main_prcplist.clearData();
  2638. lf_appendChildPrcp("ds_reset_prcplist", "ds_main_prcplist", "main");
  2639. }
  2640. if (utlf_isNull(oRstlRef.getColumn(0, "incnclyn"))) {
  2641. oRstlRef.addColumn("incnclyn", "string");
  2642. oRstlRef.setColumn(0, "incnclyn", "Y");
  2643. }
  2644. return false;// 삭제처리 환자인 경우 false
  2645. }
  2646. } else {
  2647. dsf_deleteDs("ds_send_reqdata_erincncl");
  2648. if (utlf_isNull(oRstlRef.getColumn(0, "incnclyn"))) {
  2649. oRstlRef.addColumn("incnclyn", "string");
  2650. oRstlRef.setColumn(0, "incnclyn", "Y");
  2651. }
  2652. return false; //submit 실패 시 false
  2653. }
  2654. }
  2655. function cf_TRMMO04404(sSvcId, nErrorCode, sErrorMsg) {
  2656. arErrorCode.push(sSvcId, nErrorCode);
  2657. }
  2658. /***************************************************************************************************
  2659. * Function : lf_getLoadingStatus
  2660. * Description : 처방화면 Main loading 여부를 세팅
  2661. * : 형식 : 기관명 + 화면명 + 로그인과 + 로그인한 사용자 + 로그인일시
  2662. * Argument :
  2663. * return type :
  2664. * Creator :
  2665. ***************************************************************************************************/
  2666. function lf_getLoadingStatus()
  2667. {
  2668. return frmf_getParameter("PRCP_LOADING_STATUS");
  2669. }
  2670. /***************************************************************************************************
  2671. * Function : lf_addSetPrcpChk
  2672. * Description : 처방이 발행될때 set로 같이 나가야할 처방 처리
  2673. * Argument : sFlag [String : child or else]
  2674. * : objSrcDs [Dataset : source node]
  2675. * : oDestDs [Dataset : 목적지 node; child일때는 opener.root.main.prcp, 아니면 "/root/main/prcp" 이다]
  2676. * : nSendRow [Number : 검색된 내용중 메인으로 보내고자 하는 row]
  2677. * : nSrchRow [Number : 메인에 들어간 자리. 검색로우(nSrchRow) 바로 전이다.]
  2678. * : sPrcpInptFlag [String : 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034]
  2679. * return type : nSrchRow 에러시 0
  2680. * Creator :
  2681. ***************************************************************************************************/
  2682. function lf_addSetPrcpChk(sFlag, objSrcDs, oDestDs, nSendRow, nSrchRow, sPrcpInptFlag) {
  2683. var prcpcd = objSrcDs.getColumn(nSendRow, "prcpcd");
  2684. var addprcpcd = "";
  2685. var iFind = -1;
  2686. var oPointSetPrcpList = emr_getOrderBaseInfo("setprcplist");
  2687. var setprcpchk = oPointSetPrcpList.getColumn(0, "setprcp");
  2688. var oTrgtObj = null;
  2689. if (sFlag == "child") {
  2690. oTrgtObj = opener;
  2691. }else{
  2692. oTrgtObj = this;
  2693. }
  2694. // 기존 search함수에서 무결성이 어긋나 개별 체크 변경
  2695. var precureprcpflag = "";
  2696. var calcflag = "";
  2697. var prcpdelivefact = "";
  2698. var firStage = setprcpchk.split("^");
  2699. for (var i=0 ; i < firStage.length ; i++){
  2700. var secStage = firStage[i].split("|");
  2701. if (prcpcd == secStage[0]) {
  2702. iFind = 1;
  2703. calcflag = secStage[1];
  2704. addprcpcd = secStage[2];
  2705. prcpdelivefact = secStage[3];
  2706. break;
  2707. }
  2708. if (iFind == 1){
  2709. break;
  2710. }
  2711. }
  2712. if (parseInt(iFind) >= 0) {
  2713. var prcpdd = oTrgtObj.ds_init_data.getColumn(0, "prcpdd");
  2714. var insukind = oTrgtObj.ds_data_paminfo.getColumn(0, "insukind");
  2715. var sRef = dsf_createDsRow("ds_temp_prcpcd", [{col:"prcpcd", type:"string", size:256, val:addprcpcd}, // 처방코드
  2716. {col:"prcpdd", type:"string", size:256, val:prcpdd}, // 처방일
  2717. {col:"insukind", type:"string", size:256, val:insukind}, // 보험유형
  2718. {col:"srchkind", type:"string", size:256, val:"B2"}]); // 검색종류 default="ANST"
  2719. var sAddSetPrcpDs = dsf_createDs("ds_temp_addsetprcp");
  2720. var oAddSetPrcpDs = this.objects[sAddSetPrcpDs];
  2721. var oParam = {};
  2722. oParam.id = "TRMMO00207"; // transaction을 구분하기 위한 ID
  2723. oParam.service = "prcpmngtapp.PrcpMngt"; // service ID
  2724. oParam.method = "reqGetPrcpMultiSrchInfo"; // method ID
  2725. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  2726. oParam.outds = sAddSetPrcpDs + "=prcplist"; // transaction을 처리 결과를 받을 Dataset의 ID
  2727. tranf_submit(oParam);
  2728. /*
  2729. ** 자동발생코드 추가
  2730. ** 처방코드 : NHC297EMG, 자동발생코드 : FE654303G
  2731. ** 자동발생코드는 돈계산에서 제외되어야 함.
  2732. ** 자동발생코드 처방전달사항 자동 생성=>[HEART-SPECT 핵의학검사용]
  2733. */
  2734. if (oAddSetPrcpDs != null && oAddSetPrcpDs.rowcount > 0) {
  2735. oAddSetPrcpDs.setColumn(0, "prcpdelivefact", prcpdelivefact);
  2736. oAddSetPrcpDs.setColumn(0, "tempcol17", calcflag); // 자동발생코드는 돈계산이 되어선 안됨.
  2737. }
  2738. // 자동발생 처방 입력 구분 추가
  2739. // SET 처방일 때 약품의 기본 일수는 수가계산법이 어떤 것이든 기본을 1일로 되도록 요청번호
  2740. serPrcpSrchRow = lf_addPrcpDetl(sFlag, oAddSetPrcpDs, oDestDs, 0, nSrchRow, "34");
  2741. if (serPrcpSrchRow != 0){
  2742. nSrchRow++;
  2743. }
  2744. // Temp로 사용한 Dataset을 삭제
  2745. var oRemoveDs = this.removeChild(sRef);
  2746. var oRemoveDs = this.removeChild(sAddSetPrcpDs);
  2747. oRemoveDs = null;
  2748. }
  2749. return nSrchRow;
  2750. }
  2751. /***************************************************************************************************
  2752. * Function : lf_prcpDirecSrch
  2753. * Description : 지시처방 J의 싱글코드 검색
  2754. * : 검색후 수가코드의 그룹싱글구분이 M 일경우는 그 그룹코드로 다시 SINGLE 코드를 찾아온다.
  2755. * Argument : oDsRsltRef [Dataset : 조회된 값을 받을 대상 데이타셋]
  2756. * : sCond1 [String : 처방명, 코드명, 성분명, old수가코드]
  2757. * : sCond3 [String : 처방일]
  2758. * : sCond4 [String : 환자보험유형]
  2759. * : sCond5 [String : 그룹지시처방코드]
  2760. * return type :
  2761. * Creator :
  2762. ***************************************************************************************************/
  2763. function lf_prcpDirecSrch(sCond1, sCond3, sCond4, sCond5)
  2764. {
  2765. if (utlf_isNull(sCond3)) {
  2766. sCond3 = utlf_getCurrentDate();
  2767. }
  2768. if (utlf_isNull(sCond4)) {
  2769. sCond4 = "11";
  2770. }
  2771. var sRef = dsf_createDsRow("ds_TRMMO00102", [{col:"cond1", type:"string", size:256, val:sCond1}, //처방명, 수가코드
  2772. {col:"cond2", type:"string", size:256, val:"-"}, //외래, 입원, 응급 구분
  2773. {col:"cond3", type:"string", size:256, val:sCond3}, //처방일
  2774. {col:"cond4", type:"string", size:256, val:sCond4}, //환자보험유형
  2775. {col:"cond5", type:"string", size:256, val:sCond5},
  2776. {col:"cond99", type:"string", size:256, val:"getDirecGroupInfo"}]); // 검색구분
  2777. var oParam = {};
  2778. oParam.id = "TRMMO00102";
  2779. oParam.service = "prcpmngtapp.PrcpMngt";
  2780. oParam.method = "reqGetPrcpSrchInfo";
  2781. oParam.inds = "req=" + sRef;
  2782. oParam.outds = "ds_prcpdirec_prcplist=prcplist";
  2783. tranf_submit(oParam);
  2784. dsf_setDefaultVal(ds_prcpdirec_prcplist, "prcpvol:0,prcpvolunitnm:-,prcpqty:0,prcpqtyunitnm:-,prcptims:0,prcpdayno:0,drugmthdspccdnm:-,drugmthdspccd:-,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,drgacptflag:-");
  2785. dsf_deleteDs(sRef);
  2786. }
  2787. /***************************************************************************************************
  2788. * Function : lf_reqInFecPatList
  2789. * Description : 감염관리 환자 여부를 확인, 직원감염노출사고 보고서 open
  2790. * Argument : sRgstNo [String : 주민번호1]
  2791. * : sRgstNo2 [String : 주민번호2]
  2792. * return type :
  2793. * Creator :
  2794. ***************************************************************************************************/
  2795. function lf_reqInFecPatList(sRgstNo, sRgstNo2)
  2796. {
  2797. var sRef = dsf_createDsRow("ds_cond_reqdata", [{col:"rgstno", type:"string", size:256, val:sRgstNo},
  2798. {col:"rgstno2", type:"string", size:256, val:sRgstNo2}]);
  2799. var oRef = this.objects[sRef];
  2800. var sDsTemp = dsf_createDs("ds_temp");
  2801. var oDsTemp = this.objects[sDsTemp];
  2802. var oParam = {};
  2803. oParam.id = "TRMMO04108"; // transaction을 구분하기 위한 ID
  2804. oParam.service = "prcpmngtapp.ConcPatMngt"; // service ID
  2805. oParam.method = "reqGetInfecPatInfo"; // method ID
  2806. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  2807. oParam.outds = sDsTemp + "=infecpatlist"; // transaction을 처리 결과를 받을 Dataset의 ID
  2808. tranf_submit(oParam);
  2809. // 등록번호 유/무
  2810. if (oDsTemp.getColumn(0, "pflag") == "Y") {
  2811. var infecojb = frmf_getChildWindow("SMASI01000");
  2812. // 현재 직원감염노출사고 보고서가 있는 경우, close후, 다시 open
  2813. if (infecojb != null) {
  2814. infecojb.javascript.fClose();
  2815. }
  2816. frmf_setParameter("sFlag", "P");
  2817. frmf_open("SMASI01000");
  2818. }
  2819. // Temp로 사용한 Dataset을 삭제
  2820. var oRemoveDs = this.removeChild(sDsTemp);
  2821. oRemoveDs = null;
  2822. oRemoveDs = this.removeChild(sRef);
  2823. oRemoveDs = null;
  2824. }
  2825. /***************************************************************************************************
  2826. * Function : lf_prcpGroupSrch
  2827. * Description : 그룹코드 M의 싱글코드 검색
  2828. * : 검색후 수가코드의 그룹싱글구분이 M 일경우는 그 그룹코드로 다시 SINGLE 코드를 찾아온다.
  2829. * Argument : oDsRsltRef [Dataset : 조회된 값을 받을 대상 데이타셋]
  2830. * : sCond1 [Stirng : 처방명, 코드명, 성분명, old수가코드]
  2831. * : sCond3 [Stirng : 처방일]
  2832. * : sCond4 [Stirng : 환자보험유형]
  2833. * : sCond5 [Stirng : 진단검사 그룹처방일 때 검체코드정보]
  2834. * : sCond6 [Stirng : 진단검사 검사분류유형]
  2835. * : sCond99 [Stirng : 검색구분]
  2836. * : sPrcpExecDeptCd [Stirng : 검색구분]
  2837. * return type :
  2838. * Creator :
  2839. ***************************************************************************************************/
  2840. function lf_prcpGroupSrch(oDsRsltRef, sCond1, sCond3, sCond4, sCond5, sCond6, sCond99, sPrcpExecDeptCd)
  2841. {
  2842. var sRef = dsf_createDsRow("ds_cond_deptlist", [{col:"cond1", type:"string", size:256, val:sCond1},
  2843. {col:"cond2", type:"string", size:256, val:""}, // 외래, 입원, 응급 구분
  2844. {col:"cond3", type:"string", size:256, val:""},
  2845. {col:"cond4", type:"string", size:256, val:""},
  2846. {col:"cond5", type:"string", size:256, val:sCond5},
  2847. {col:"cond6", type:"string", size:256, val:sCond6},
  2848. {col:"cond10", type:"string", size:256, val:""},
  2849. {col:"cond99", type:"string", size:256, val:""},
  2850. {col:"sch_prcpexecdeptcd", type:"string", size:256, val:sPrcpExecDeptCd}]);
  2851. var oRef = this.objects[sRef];
  2852. if (utlf_isNull(sCond3)) {
  2853. sCond3 = utlf_getCurrentDate();
  2854. }
  2855. if (utlf_isNull(sCond4)) {
  2856. sCond4 = "11";
  2857. }
  2858. if (utlf_isNull(sCond99)) {
  2859. sCond99 = "getPrcpGroupInfo";
  2860. }
  2861. var prcpgenrflag = opener.ds_data_paminfo.getColumn(0, "ioflag");
  2862. if (utlf_isNull(prcpgenrflag)) {
  2863. prcpgenrflag = ds_data_paminfo.getColumn(0, "ioflag");
  2864. if (utlf_isNull(prcpgenrflag)) {
  2865. prcpgenrflag = "-";
  2866. }
  2867. }
  2868. //진료과 추가
  2869. var orddeptcd = opener.ds_data_paminfo.getColumn(0, "orddeptcd");
  2870. if (utlf_isNull(orddeptcd)) {
  2871. orddeptcd = ds_data_paminfo.getColumn(0, "orddeptcd");
  2872. if (utlf_isNull(orddeptcd)) {
  2873. orddeptcd = "*";
  2874. }
  2875. }
  2876. oRef.setColumn(0, "cond2", prcpgenrflag); // 외래, 입원, 응급 구분
  2877. oRef.setColumn(0, "cond3", sCond3); // 처방일
  2878. oRef.setColumn(0, "cond4", sCond4); // 환자보험유형
  2879. oRef.setColumn(0, "cond10", orddeptcd); // 진료과
  2880. oRef.setColumn(0, "cond99", sCond99); // 검색구분
  2881. var oParam = {};
  2882. oParam.id = "TRMMO00101"; // transaction을 구분하기 위한 ID
  2883. oParam.service = "prcpmngtapp.PrcpMngt"; // service ID
  2884. oParam.method = "reqGetPrcpSrchInfo"; // method ID
  2885. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  2886. oParam.outds = oDsRsltRef.name + "=prcplist"; // transaction을 처리 결과를 받을 Dataset의 ID
  2887. tranf_submit(oParam);
  2888. var oRemoveDs = this.removeChild(sRef);
  2889. oRemoveDs = null;
  2890. }
  2891. /***************************************************************************************************
  2892. * Function : lf_specOrdPopUpYN
  2893. * Description : 선택진료신청관리 팝업 open 여부 체크
  2894. * Argument : sPid [String : 환자번호]
  2895. * : sCretNo [String : 순번]
  2896. * : sOrdDd [String : 입원일/진료일]
  2897. * : sOrdDeptCd [String : 진료과]
  2898. * : sOrdDrId [String : 주치의]
  2899. * : sOrdType [String : 입원외래구분(O:외래진료대상자/I:입원결정서)]
  2900. * return type :
  2901. * Creator :
  2902. ***************************************************************************************************/
  2903. function lf_specOrdPopUpYN(sPid, sCretNo, sOrdDd, sOrdDeptCd, sOrdDrId, sOrdType)
  2904. {
  2905. // 20091007 JJE 추가 : 주진료과 의사가 진료지원과의 선택진료의사 선택 여부(hardcdno:134) 및 원무 팝업 호출
  2906. var sSelSpeCordYN = "";
  2907. if (utlf_isNull(sOrdType))
  2908. sOrdType = "O"; // 입원장에서 호출 시에는 I로 보냄.. (2009.11.03 추가)
  2909. if (sOrdType != "O")
  2910. sSelSpeCordYN = opener.ds_initsrch.getColumn(ds_initsrch.findRow("trgtcd", "Y"), "/root/initsrch/selspecordyn[trgtcd = 'Y']/trgtcd");
  2911. else
  2912. sSelSpeCordYN = ds_init.getColumn(ds_init.findRow("hardcd", "Y"), "/root/init/selspecordyn/hardcd[hardcd = 'Y']/hardcd");
  2913. if (!utlf_isNull(sSelSpeCordYN)) {
  2914. var sRef = dsf_createDsRow("ds_cond_cnsttypecombo", [{col:"pid", type:"string", size:256, val:sPid},
  2915. {col:"cretno", type:"string", size:256, val:sCretNo},
  2916. {col:"orddd", type:"string", size:256, val:sOrdDd},
  2917. {col:"orddeptcd", type:"string", size:256, val:sOrdDeptCd},
  2918. {col:"orddrid", type:"string", size:256, val:sOrdDrId},
  2919. {col:"ordtype", type:"string", size:256, val:sOrdType}]);
  2920. var oRef = this.objects[sRef];
  2921. var sDsTemp = dsf_createDs("ds_temp");
  2922. var oDsTemp = this.objects[sDsTemp];
  2923. var oParam = {};
  2924. oParam.id = "TRPMC06801"; // transaction을 구분하기 위한 ID
  2925. oParam.service = "patinfomngtapp.SpecAppFrm"; // service ID
  2926. oParam.method = "reqGetSpecOrdOpenYN"; // method ID
  2927. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  2928. oParam.outds = sDsTemp + "=saim"; // transaction을 처리 결과를 받을 Dataset의 ID
  2929. tranf_submit(oParam);
  2930. // 조회된 환자번호
  2931. var saim_pid = oDsTemp.getColumn(0, "pid");
  2932. if (saim_pid == 0) {
  2933. // Parameter: 진료형태▦환자번호▦입원/진료일▦생성번호▦진료과▦주치의▦등록위치구분 : rgstposflag (I:입원,O:외래,M:진료,N:간호)
  2934. frmf_setParameter("SMPMC06800_PARM", sOrdType + "▦" + sPid + "▦" + sOrdDd + "▦" + sCretNo + "▦" + sOrdDeptCd + "▦" + sOrdDrId + "▦" + "M");
  2935. frmf_modal("SMPMC06800", "SMPMC06800");
  2936. }
  2937. var oRemoveDs = this.removeChild(sRef);
  2938. oRemoveDs = null;
  2939. oRemoveDs = this.removeChild(sDsTemp);
  2940. oRemoveDs = null;
  2941. }
  2942. }
  2943. /***************************************************************************************************
  2944. * Function : lf_checkPrcpUnit
  2945. * Description : 처방 단위 유효성체크
  2946. * Argument : sPrcpCd [String : 항목코드]
  2947. * : drprcpetc3 [String : 항목코드]
  2948. * return type :
  2949. * Creator :
  2950. ***************************************************************************************************/
  2951. function lf_checkPrcpUnit(sPrcpCd, drprcpetc3)
  2952. {
  2953. var sRef = dsf_createDsRow("ds_cond_sch_prcpcd", [{col:"prcpcd", type:"string", size:256, val:sPrcpCd},
  2954. {col:"prcptims", type:"string", size:256, val:1},
  2955. {col:"prcpdayno", type:"string", size:256, val:1}]);
  2956. var oRef = this.objects[sRef];
  2957. var sDsTemp = dsf_createDs("ds_temp");
  2958. var oDsTemp = this.objects[sDsTemp];
  2959. var ret = false;
  2960. var oParam = {};
  2961. oParam.id = "TRMMO00142"; // transaction을 구분하기 위한 ID
  2962. oParam.service = "prcpmngtapp.PrcpMngt"; // service ID
  2963. oParam.method = "reqGetPrcpUnit"; // method ID
  2964. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  2965. oParam.outds = sDsTemp + "=prcpunit"; // transaction을 처리 결과를 받을 Dataset의 ID
  2966. tranf_submit(oParam);
  2967. oDsTemp.filterstr = "drprcpetc3=='" + drprcpetc3 + "'";
  2968. if (oDsTemp.getRowCount() > 0) {
  2969. ret = true;
  2970. }
  2971. oDsTemp.filterstr = "";
  2972. var oRemoveDs = this.removeChild(sRef);
  2973. oRemoveDs = null;
  2974. oRemoveDs = this.removeChild(sDsTemp);
  2975. oRemoveDs = null;
  2976. return ret ;
  2977. }
  2978. /***************************************************************************************************
  2979. * Function : lf_childTPNChk
  2980. * Description : 소아 TPN Repeat처방시 체크.
  2981. * Argument : strSrc [Dataset : ]
  2982. * : nSendRow [Number : ]
  2983. * return type :
  2984. * Creator :
  2985. ***************************************************************************************************/
  2986. function lf_childTPNChk(strSrc, nSendRow)
  2987. {
  2988. var sRef = dsf_createDsRow("ds_cond_sch_prcpcd", [{col:"tpn_testreqlnkno", type:"string", size:256, val:""},
  2989. {col:"tpn_prcpdd", type:"string", size:256, val:""}]);
  2990. var oRef = this.objects[sRef];
  2991. var sDsTemp = dsf_createDs("ds_temp");
  2992. var oDsTemp = this.objects[sDsTemp];
  2993. // 저장로직 start
  2994. oRef.setColumn(0, "tpn_testreqlnkno", ""); // strSrc.getColumn(nSendRow, "testreqlnkno")); // 검사의뢰지번호
  2995. oRef.setColumn(0, "tpn_prcpdd", ""); // opener.ds_prcpdd.getValue("/root/init/prcpdd")); // 처방일자
  2996. var oParam = {};
  2997. oParam.id = "TXMMO02901"; // transaction을 구분하기 위한 ID
  2998. oParam.service = "prcpmngtapp.PrcpMngt"; // service ID
  2999. oParam.method = "reqExeTPNChildInfo"; // method ID
  3000. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  3001. oParam.outds = sDsTemp + "=tpndata"; // transaction을 처리 결과를 받을 Dataset의 ID
  3002. tranf_submit(oParam);
  3003. strSrc.setColumn(nSendRow, "testreqlnkno", sDsTemp.getColumn(0, "tpnno"));
  3004. // 저장로직 end
  3005. if (sysf_messageBox("세부함량을 그대로 유지하시겠습니까?", "Q") != "6") {
  3006. var prcptpnno = strSrc.getColumn(nSendRow, "testreqlnkno");
  3007. if (!utlf_isNull(prcptpnno)) {
  3008. frmf_setParameter("SSADB70201_prcptpnno", prcptpnno);
  3009. frmf_setParameter("SSADB70201_prcptpnyn", "Y");
  3010. lf_prcpModal("SSADB70201", objArg);
  3011. frmf_clearParameter("SSADB70201_prcptpnno");
  3012. frmf_clearParameter("SSADB70201_prcptpnyn");
  3013. }
  3014. }
  3015. var oRemoveDs = this.removeChild(sRef);
  3016. oRemoveDs = null;
  3017. oRemoveDs = this.removeChild(sDsTemp);
  3018. oRemoveDs = null;
  3019. }
  3020. /***************************************************************************************************
  3021. * Function : lf_addSetPrcpChkKNUH
  3022. * Description : 처방이 발행될때 set로 같이 나가야할 처방 처리
  3023. * Argument : objFlag - child or else
  3024. * : strSrc - source node
  3025. * : strDest - 목적지 node; child일때는 opener.root.main.prcp, 아니면 "/root/main/prcp" 이다
  3026. * : nSendRow - 검색된 내용중 메인으로 보내고자 하는 row
  3027. * : srchRow - 메인에 들어간 자리. 검색로우(srchRow) 바로 전이다.
  3028. * : prcpInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술
  3029. * return type : srchRow 에러시 0
  3030. * Creator :
  3031. ***************************************************************************************************/
  3032. function lf_addSetPrcpChkKNUH ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag ) {
  3033. var ds_src = this.objects[strSrc];
  3034. var prcpcd = ds_src.getColumn(i, "prcpcd" );
  3035. var addprcpcd = "";
  3036. var addprcpcnt = 0;
  3037. // if (prcpcd == "LCT101") addprcpcd = "DDIS50";
  3038. // else if (prcpcd == "LCT001") addprcpcd = "DDIS75";
  3039. // else if (prcpcd == "LCT002") addprcpcd = "DDIS100";
  3040. // else if (prcpcd == "NHC297EG") addprcpcd = "FE654303G"; //by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청
  3041. var iFind = -1;
  3042. var setprcpchk = "";
  3043. var cnts = ds_autosetprcplist.rowcount;
  3044. var oTrgtObj = lf_getFormObject(objFlag);
  3045. var srchPrcpcd = oTrgtObj.ds_autosetprcplist.lookup("hardcd", prcpcd, "hardcd");
  3046. var setprcpchk = oTrgtObj.ds_autosetprcplist.lookup("hardcd", prcpcd, "hardcdnm");
  3047. // 기존 search함수에서 무결성이 어긋나 개별 체크 변경 - 20081008 by MoonSH
  3048. var precureprcpflag = "";
  3049. var calcflag = "";
  3050. var drprcpetc8 = "";
  3051. if( !utlf_isNull(srchPrcpcd)) {
  3052. var secStage = setprcpchk.split("|");
  3053. iFind = 1 ;
  3054. calcflag = secStage[0];
  3055. addprcpcd = secStage[1];
  3056. drprcpetc8 = secStage[2];
  3057. }
  3058. if ( parseInt(iFind) >= 0) {
  3059. var prcpdd = oTrgtObj.ds_init.getColumn(0, "prcpdd");
  3060. var insukind = oTrgtObj.ds_paminfo.getColumn(0, "insukind");
  3061. //멀티 search 가능함
  3062. var sRef = dsf_createDsRow("ds_send_addsetprcp", [{col:"cond1", type:"string", size:256, val:addprcpcd},
  3063. {col:"cond3", type:"string", size:256, val:prcpdd},
  3064. {col:"cond4", type:"string", size:256, val:insukind},
  3065. {col:"srchkind", type:"string", size:256, val:"B2"}]);
  3066. var oParam = {};
  3067. oParam.id = "TRMMO00207";
  3068. oParam.service = "prcpmngtapp.PrcpMngt";
  3069. oParam.method = "reqGetPrcpMultiSrchInfo";
  3070. oParam.inds = "req=" + sRef;
  3071. oParam.outds = "ds_addsetprcp_prcplist=prcplist";
  3072. oParam.async = false;
  3073. oParam.callback = "cf_TRMMO00207";
  3074. tranf_submit(oParam);
  3075. if(arErrorCode.pop("TRMMO00207") > -1) {
  3076. dsf_setDefaultVal(ds_addsetprcp_prcplist, "prcpvol:0,prcpvolunitnm:-,prcpqty:0,prcpqtyunitnm:-,prcptims:0,prcpdayno:0,drugmthdspccdnm:-,drugmthdspccd:-,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,drgacptflag:-");
  3077. /*
  3078. **by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청 수정 시작.
  3079. ** 처방코드 : NHC297EMG, 자동발생코드 : FE654303G
  3080. ** 자동발생코드는 돈계산에서 제외되어야 함.
  3081. ** 자동발생코드 처방전달사항 자동 생성=>[HEART-SPECT 핵의학검사용]
  3082. */
  3083. //20090420 마정민 수정 HARDCODE 테이블로 분리
  3084. if( ds_addsetprcp_prcplist.rowcount > 0) {
  3085. //model.setValue("/root/addsetprcp/prcplist[1]/prcpdelivefact", prcpdelivefact );
  3086. ds_addsetprcp_prcplist.setColumn(0, "drprcpetc8", drprcpetc8);
  3087. //by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청 수정 끝
  3088. //serPrcpSrchRow = addPrcpDetl ( objFlag , "root/addsetprcp/prcplist" , strDest , 1 , srchRow, prcpInptFlag );
  3089. //by sonjy 20091031 자동발생 처방 입력 구분 추가
  3090. //SET 처방일 때 약품의 기본 일수는 수가계산법이 어떤 것이든 기본을 1일로 되도록 요청번호:8875
  3091. serPrcpSrchRow = lf_addPrcpDetl ( objFlag , "ds_addsetprcp_prcplist" , strDest , 0, srchRow, "34" );
  3092. if (serPrcpSrchRow != 0 ) srchRow++;
  3093. }
  3094. }
  3095. dsf_deleteDs(sRef);
  3096. }
  3097. return srchRow;
  3098. }
  3099. function cf_TRMMO00207(sSvcId, nErrorCode, sErrorMsg) {
  3100. arErrorCode.push(sSvcId, nErrorCode);
  3101. }
  3102. /***************************************************************************************************
  3103. * Function : lf_chngPrcpExecDeptSCH
  3104. * Description : 선택진료의 검색 팝업 호출
  3105. * Argument : objSrcDs [Dataset : ]
  3106. * : nIndex [Number : ]
  3107. * : sFlag [String : ]
  3108. * return type :
  3109. * Creator :
  3110. ***************************************************************************************************/
  3111. function lf_chngPrcpExecDeptSCH(objSrcDs, nIndex, sFlag)
  3112. {
  3113. if (nIndex < 0) return;
  3114. var prcpdd = "";
  3115. var orddeptcd = "";
  3116. var orddeptnm = "";
  3117. var ioflag = "";
  3118. var xpt = 700;
  3119. var ypt = 150;
  3120. var flag = "prcp";
  3121. if (sFlag == "child") {
  3122. prcpdd = opener.ds_init_data.getColumn(0, "prcpdd");
  3123. orddeptcd = opener.ds_data_paminfo.getColumn(0, "orddeptcd");
  3124. ioflag = opener.ds_data_paminfo.getColumn(0, "ordtype");
  3125. orddeptnm = opener.ds_data_paminfo.getColumn(0, "orddeptnm");
  3126. xpt = 300;
  3127. ypt = 10;
  3128. flag = "popup";
  3129. } else {
  3130. prcpdd = ds_init_data.getColumn(0, "prcpdd");
  3131. orddeptcd = ds_data_paminfo.getColumn(0, "orddeptcd");
  3132. ioflag = ds_data_paminfo.getColumn(0, "ordtype");
  3133. orddeptnm = ds_data_paminfo.getColumn(0, "orddeptnm");
  3134. }
  3135. var objArg = {};
  3136. objArg["plgv_flag"] = flag;
  3137. objArg["plgv_prcpcd"] = objSrcDs.getColumn(nIndex, "prcpcd");
  3138. objArg["plgv_prcpdd"] = prcpdd;
  3139. objArg["plgv_orddeptcd"] = orddeptcd;
  3140. objArg["plgv_orddeptnm"] = orddeptnm;
  3141. objArg["plgv_prcpclscd"] = objSrcDs.getColumn(nIndex, "prcpclscd");
  3142. objArg["plgv_ioflag"] = (ioflag == "O" || ioflag == "S") ? "O" : "I";
  3143. var obj_Rtn = lf_prcpModal("SPMMB08600", objArg);
  3144. return obj_Rtn;
  3145. }
  3146. /***************************************************************************************************
  3147. * Function : lf_prcpOpen
  3148. * Description : 팝업위치가 저장되지 않는 팝업 모달 띄우기(모니터 번호 선택 가능)
  3149. * Argument : String[화면ID], Integer[x좌표], Integer[y좌표], Integer[ref], Integer[resultref], Integer[userProp]
  3150. * return type : void
  3151. * Creator :
  3152. ***************************************************************************************************/
  3153. function lf_prcpOpen(sScreenId, argxpt, argypt, ref, resultref , userProp )
  3154. {
  3155. var xpt = system.clientToScreenX(this.getOwnerFrame(), 0) + argxpt;
  3156. var ypt = system.clientToScreenY(this.getOwnerFrame(), 0) + argypt;
  3157. frmf_open(sScreenId, sScreenId, null, xpt, ypt);
  3158. }
  3159. /***************************************************************************************************
  3160. * Function : lf_setSpecOrd
  3161. * Description : 특진료 설정
  3162. * Argument :
  3163. * return type :
  3164. * Creator : 오지훈
  3165. ***************************************************************************************************/
  3166. function lf_setSpecOrd()
  3167. {
  3168. var tempcol2 = ds_prcp.getColumn(0, "tempcol2");
  3169. var temparray = tempcol2.split("|");
  3170. // by sonjy 2008-08-29 진료과, 진료의id setting
  3171. var orddeptcd = opener.ds_paminfo.getColumn(0, "orddeptcd");
  3172. ds_paminfo.setColumn(0, "specordyn", opener.ds_paminfo.getColumn(0, "specordyn")); //by sonjy 2008-08-28 진료의선택창에서 사용.
  3173. // 선택진료과가 있는 경우, 조회해서 사용자를 grid에 보여줌
  3174. var tempcol12 = ds_prcp.getColumn(0, "tempcol12");
  3175. if (utlf_isNull(tempcol12))
  3176. tempcol12 = orddeptcd ; //by sonjy 20081014
  3177. if (tempcol12 != "") {
  3178. lf_mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", tempcol12);
  3179. btn_specdrid.enable = true;
  3180. return;
  3181. }
  3182. var ioflag = opener.ds_patflag.getColumn(0, "prcpgenrflag");
  3183. var orddrid = "";
  3184. // 입원, DSC,응급
  3185. if (ioflag == "I" || ioflag == "D" || ioflag == "E") {
  3186. orddeptcd = opener.ds_paminfo.getColumn(0, "orddeptcd");
  3187. orddrid = opener.ds_paminfo.getColumn(0, "medispclid");
  3188. lf_mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", orddeptcd);
  3189. if (sysf_getUserInfo("dutplcecd") == orddeptcd){ // 로그인 의사가 동일한 과인 경우
  3190. ds_prcp.setColumn(0, "specdrid", orddrid); // 입원과의 주치의 설정
  3191. btn_specdrid.enable = true;
  3192. }
  3193. else { // 타과의 경우 ,default없음
  3194. var operation;
  3195. if (temparray[1] == "SB" || temparray[2] == "SA99") { // 분류 1 : 수술 OR 기타처치
  3196. operation = sysf_getGlobalVariable("operation");
  3197. if (operation.length > 0) {
  3198. setCSVToNode("/root/init/operation", operation);
  3199. var perfdeptcd = ds_operation.getColumn(0, "perfdeptcd");
  3200. var perfdrid = ds_operation.getColumn(0, "perfdrid");
  3201. lf_mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", perfdeptcd);
  3202. ds_prcp.setColumn(0, "specdrid", perfdrid); // 집도의 설정
  3203. }
  3204. else {
  3205. btn_specdrid.enable = true;
  3206. btn_specdrid.click();
  3207. }
  3208. }
  3209. else if (temparray[0] == "L") { // 분류 2 : 마취, 마취의 '1'을 기본 default
  3210. operation = sysf_getGlobalVariable("operation");
  3211. if (operation != null || operation != "") {
  3212. setCSVToNode("/root/init/operation", operation);
  3213. var anstdrid = ds_operation.getColumn(0, "anstdrid");
  3214. lf_mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", "AN"); //마취통증의학과 의사조회
  3215. // 이은영 과장 요청 마취의 setting by sonjy 20080925 start
  3216. if (opener.ds_anst.getColumn(0, "paramyn" ) == "Y") {
  3217. // 마취의 ID가 있고 선택진료일 경우 특진의 선택진료가 아닐경우 일반의 일 경우만 SETTING
  3218. if (!utlf_isNull(opener.ds_anst.getColumn(0, "/root/anst/anst_drid"))) {
  3219. // 선택진료이고 일반의인 경우 선택진료처방여부 'N'처리
  3220. if (ds_paminfo.getColumn(0, "/root/paminfo/list/specordyn") == "Y") {
  3221. if (opener.ds_anst.getColumn(0, "/root/anst/anst_specordflag") != "A") {
  3222. ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag" , "N");
  3223. }
  3224. else {
  3225. ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag" , "Y");
  3226. }
  3227. }
  3228. else {
  3229. ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag" , "N");
  3230. }
  3231. anstdrid = opener.ds_anst.getColumn(0, "/root/anst/anst_drid");
  3232. }
  3233. //바뀐대로 보여야 함 by sonjy 20081010
  3234. btn_specdrid.enable = true;
  3235. if (utlf_isNull( ds_prcp.getColumn(0, "/root/main/prcp/prcplist/specdrid")) || ds_prcp.getColumn(0, "/root/main/prcp/prcplist/specdrid") == "-") {
  3236. ds_prcp.setColumn(0, "/root/main/prcp/prcplist/specdrid", anstdrid); // 마취의1 설정
  3237. }
  3238. }
  3239. else { // 마취의 setting by sonjy 20080925 end
  3240. ds_prcp.setColumn(0, "/root/main/prcp/prcplist/specdrid", anstdrid); // 마취의1 설정
  3241. }
  3242. }
  3243. else {
  3244. btn_specdrid.enable = true;
  3245. btn_specdrid.click();
  3246. }
  3247. }
  3248. else if (temparray[0] == "10" || temparray[1] == "13") { // 분류3 : 위장관검사
  3249. btn_specdrid.enable = true;
  3250. btn_specdrid.click();
  3251. }
  3252. else if (temparray[0] == "10" || temparray[1] == "06") { // 분류4 : 기관지검사
  3253. btn_specdrid.enable = true;
  3254. btn_specdrid.click();
  3255. }
  3256. else if (temparray[1] == "XE" || temparray[1] == "XI") { // 분류 5: 방사선혈관조영
  3257. btn_specdrid.enable = true;
  3258. btn_specdrid.click();
  3259. }
  3260. else if (temparray[0] == "20") { // 방사선혈관조영술 추가. by sonjy 2008-08-29
  3261. btn_specdrid.enable = true;
  3262. btn_specdrid.click();
  3263. }
  3264. else { //그 이외의 경우, 입원과의 주치의 설정
  3265. ds_prcp.setColumn(0, "/root/main/prcp/prcplist/specdrid", orddrid);
  3266. }
  3267. }
  3268. }
  3269. }
  3270. /***************************************************************************************************
  3271. * Function : lf_checkPatLimt
  3272. * Description : 환자별 제한 규정
  3273. * Argument :
  3274. * return type :
  3275. * Creator :
  3276. ***************************************************************************************************/
  3277. function lf_checkPatLimt(flag, strSrc:Dataset, sendRow , chkpayflag)
  3278. {
  3279. var oTrgtObj = null;
  3280. if( flag == "child"){
  3281. oTrgtObj = opener;
  3282. }else{
  3283. oTrgtObj = this;
  3284. }
  3285. var sPrcpCd = strSrc.getColumn(sendRow, "prcpcd");
  3286. var prcpMsg = "";
  3287. var chngyn = "";
  3288. var payflag = "";
  3289. var patNm = "";
  3290. var msgTitle = "";
  3291. var oPointDsPatlimtcdinfo= lf_getTopPatientinfo("N", "ds_patlimtcdinfo") ;
  3292. var nLimitlistIndx = oPointDsPatlimtcdinfo.findRow("prcpcd", sPrcpCd);
  3293. patNm = oTrgtObj.ds_data_paminfo.getColumn(0, "hngnm");
  3294. if (nLimitlistIndx >= 0 ) {
  3295. chngyn = oPointDsPatlimtcdinfo.getColumn(nLimitlistIndx, "prcpchngyn");
  3296. payflag = oPointDsPatlimtcdinfo.getColumn(nLimitlistIndx, "apppayflag");
  3297. prcpMsg = oPointDsPatlimtcdinfo.getColumn(nLimitlistIndx, "prcpmsg");
  3298. msgTitle = oPointDsPatlimtcdinfo.getColumn(nLimitlistIndx, "prcptitle");
  3299. if (utlf_isNull(chkpayflag) ||(!utlf_isNull(chkpayflag) && chngyn == "N" && chkpayflag != payflag)) {
  3300. application.alert(patNm + prcpMsg, msgTitle, "64");
  3301. if (chngyn == "N") {
  3302. strSrc.setColumn(sendRow, "payflagcd", payflag);
  3303. if (!utlf_isNull(chkpayflag)) {
  3304. return false;
  3305. }
  3306. }
  3307. }
  3308. }
  3309. return true;
  3310. }
  3311. /***************************************************************************************************
  3312. * Function : lf_prmsSaveCheck
  3313. * Description : 약속처방에 등록 가능한지 check
  3314. * Argument : usge: 저장화면
  3315. : prcpkindcd: 처방분류
  3316. : prcpnm: 처방명
  3317. * return type : true, false
  3318. * Creator :
  3319. * 변환OK
  3320. ***************************************************************************************************/
  3321. function lf_prmsSaveCheck(usge, prcpkindcd, prcpnm)
  3322. {
  3323. //약속처방, 지시처방에서는 HSCT 처방을 등록할 수 없다.
  3324. if (prcpkindcd == "04" && usge == "prms") {
  3325. sysf_messageBox( "약속처방에는 [" + prcpnm +"] HSCT 처방을 등록", "E001");
  3326. return false;
  3327. }
  3328. else if (prcpkindcd == "04" && usge == "direc") {
  3329. sysf_messageBox( "지시처방에는 [" + prcpnm +"] HSCT 처방을 등록", "E001");
  3330. return false;
  3331. }
  3332. return true;
  3333. }
  3334. /***************************************************************************************************
  3335. * Function : lf_checkNigtFlag
  3336. * Description : night시간 체크 (오후 6시~오전9시 사이이면 true 아니면 false 반환)
  3337. * Argument :
  3338. * return type :
  3339. * Creator :
  3340. ***************************************************************************************************/
  3341. function lf_checkNightFlag(exectm)
  3342. {
  3343. if (utlf_isNull(exectm) || exectm.length < 4)
  3344. return false ;
  3345. if (exectm.length < 6)
  3346. exectm = exectm + "00";
  3347. if (parseInt(exectm) >= 180000 || parseInt(exectm) < 90000)
  3348. return true;
  3349. return false;
  3350. }
  3351. /***************************************************************************************************
  3352. * Function : lf_chkSpecDrId
  3353. * Description : 특진의 check
  3354. * Argument :
  3355. * return type : true or false
  3356. * Creator :
  3357. ***************************************************************************************************/
  3358. function lf_chkSpecDrId(specdrid)
  3359. {
  3360. var oUserComboDs = emr_getOrderBaseInfo("usercombo");
  3361. var choiSpclDrid = oUserComboDs.getColumn(0, oUserComboDs.findRowExpr("userid=='"+ specdrid +"' && refseq=='A'"), "userid");
  3362. if (choiSpclDrid == null) {
  3363. return false;
  3364. }
  3365. return true;
  3366. }
  3367. /***************************************************************************************************
  3368. * Function : lf_setPrcpreteflag
  3369. * Description : 희망일자 선택 시 보류 체크(외래)
  3370. * Argument :
  3371. * return type :
  3372. * Creator :
  3373. ***************************************************************************************************/
  3374. function lf_setPrcpreteflag(objSrcNode, nIndx, sTrgtFlag)
  3375. {
  3376. if (nIndx < 0) return;
  3377. var ioflag ="";
  3378. if (sTrgtFlag == "child"){
  3379. ioflag = opener.ds_data_paminfo.getColumn(0, "ioflag");
  3380. }
  3381. else {
  3382. ioflag = ds_data_paminfo.getColumn(0, "ioflag");
  3383. }
  3384. if (ioflag == "O" && objSrcNode.getColumn(nIndx, "prcphopedd") != utlf_getCurrentDate()) {
  3385. objSrcNode.setColumn(nIndx, "prcpreteflag", "Y");
  3386. //보류 체크 시 처방명 앞에 [보류] 도 붙도록 makePrcpNm호출
  3387. lf_makePrcpNm( objSrcNode, nIndx);
  3388. }
  3389. }
  3390. /***************************************************************************************************
  3391. * Function : lf_autoSetAddDr
  3392. * Description : 가산의 자동 셋팅
  3393. * Argument :
  3394. * return type :
  3395. * Creator :
  3396. ***************************************************************************************************/
  3397. function lf_autoSetAddDr(objSrcNode, indx, addfg)
  3398. {
  3399. // 1. 선택진료의 check
  3400. var specdrid = objSrcNode.getColumn(indx, "specdrid");
  3401. ds_init_specdrinfo.filterstr = "userid=='"+specdrid+"' && refseq=='A'";
  3402. var specdridchk = ds_init_specdrinfo;
  3403. if (!utlf_isNull(specdrid) && !utlf_isNull(specdridchk) && specdridchk.rowcount > 0) {
  3404. var specdeptcd = specdridchk.getColumn(0, "dutplcecd");
  3405. if ((specdeptcd == addfg) || (addfg == "ALL" && (specdeptcd == "CS"|| specdeptcd == "GS"))) {
  3406. objSrcNode.setColumn(indx, "tempcol30", specdrid);
  3407. ds_init_specdrinfo.filterstr = "";
  3408. return;
  3409. }
  3410. }
  3411. ds_init_specdrinfo.filterstr = "";
  3412. // 2. 입력의 가산의 check
  3413. var jobkind = sysf_getUserInfo("jobkindcd");
  3414. if (jobkind == "A" || jobkind == "B") {
  3415. var dutplcecd = sysf_getUserInfo("dutplcecd");
  3416. if ((addfg == dutplcecd) || (addfg == "ALL" && (dutplcecd == "CS"|| dutplcecd == "GS"))) {
  3417. objSrcNode.setColumn(indx, "tempcol30", sysf_getUserInfo("userid"));
  3418. }
  3419. }
  3420. // 3.집도과 집도의
  3421. var tmpadddrid = objSrcNode.getColumn(indx, "tempcol30");
  3422. if ((utlf_isNull(tmpadddrid) || tmpadddrid == "-") && (utlf_isNull(specdrid) || specdrid == "-")) {
  3423. var perfdeptcd = ds_init_operation.getColumn(0, "perfdeptcd");
  3424. if (!utlf_isNull(perfdeptcd) && perfdeptcd == addfg) {
  3425. var perfdrid = ds_init_operation.getColumn(0, "perfdrid");
  3426. objSrcNode.setColumn(indx, "tempcol30", perfdrid);
  3427. }
  3428. }
  3429. }
  3430. /***************************************************************************************************
  3431. * Function : lf_checkSrchWord
  3432. * Description : 검색 금지어 체크
  3433. * Argument : srchnm [String : 검색할 문자열]
  3434. * return type : 검색 금지어를 변환 처리한 문자열
  3435. * Creator :
  3436. ***************************************************************************************************/
  3437. function lf_checkSrchWord(srchnm)
  3438. {
  3439. var rtn = "";
  3440. var srchrtn = "";
  3441. var srcharray = srchnm.split(" ");
  3442. var cnt = srcharray.length;
  3443. var len = 0;
  3444. var i = 0;
  3445. var sDsTemp = dsf_createDs("ds_temp_srchlimitword");
  3446. var oDsTemp = this.objects[sDsTemp];
  3447. lf_getHardCDList("N", 421, 0 , oDsTemp);
  3448. var limtcnt = oDsTemp.rowcount;
  3449. var limtword = "";
  3450. var limtflag = "";
  3451. do {
  3452. if (cnt < 1) rtn = srchnm;
  3453. else rtn = srcharray[i];
  3454. for (var j=0 ; j<limtcnt ; j++)
  3455. {
  3456. limtword = oDsTemp.getColumn(j, "hardcdnm");
  3457. limtflag = oDsTemp.getColumn(j, "hardcd");
  3458. if (!utlf_isNull(limtword)) {
  3459. if (limtflag == "NUM") {
  3460. if (rtn == limtword)
  3461. rtn = rtn.replace(limtword , "");
  3462. }
  3463. else {
  3464. rtn = rtn.replace(limtword , "");
  3465. }
  3466. }
  3467. }
  3468. if (i == 0) {
  3469. srchrtn = rtn;
  3470. }
  3471. else {
  3472. len = rtn.length;
  3473. if (len > 1) srchrtn += " " + rtn;
  3474. else srchrtn += rtn;
  3475. }
  3476. i++;
  3477. }
  3478. while (i < cnt);
  3479. // Temp로 사용한 Dataset을 삭제
  3480. var oRemoveDs = this.removeChild(sDsTemp);
  3481. oRemoveDs = null;
  3482. return srchrtn;
  3483. }
  3484. /***************************************************************************************************
  3485. * Function : lf_chkRecModi
  3486. * Description : 외래환자 원무, 환자구분, 상단정보 설정
  3487. * Argument : emrloadingflag 진료대상자 리스트 호출 여부. 진료대상자 리스트에서 호출시에서는 tranf_submit 호출 필요 없음.
  3488. * return type :
  3489. * Creator : 2013-01-16 오후 3:53:53 강지훈 수정
  3490. ***************************************************************************************************/
  3491. function lf_chkRecModi()
  3492. {
  3493. // 2012-12-24 오후 2:09:54 강지훈 : BroadCasting 되기전에 기록지 정보 변경여부 체크 필요
  3494. var mainobj = frmf_getMainViewer();
  3495. var mainscrnid = mainobj.frmf_getScreenID(); //메인화면의 기록지 ID
  3496. if (mainscrnid == "SMMMR00100") {
  3497. var prvIntRecPamInfRtn = mainobj.fPrevInitRecPamInfo();
  3498. // 기록지에 필수 입력사항을 입력하지 않았을 때 그냥 넘어가 버리는 오류 수정
  3499. if (prvIntRecPamInfRtn == false) {
  3500. return false;
  3501. }
  3502. }
  3503. return true;
  3504. }
  3505. /***************************************************************************************************
  3506. * Function : lf_bundlePrcpDD
  3507. * Description : 지정일 셋팅
  3508. * Argument :
  3509. * return type :
  3510. * Creator :
  3511. * 변환OK
  3512. ***************************************************************************************************/
  3513. function lf_bundlePrcpDD(status)
  3514. {
  3515. var prcpgenrflag = opener.ds_patflag.getColumn(0, "prcpgenrflag");
  3516. if (prcpgenrflag != "O") {
  3517. sysf_messageBox("지정일은 외래가 아니면 사용", "E001");
  3518. return false;
  3519. }
  3520. var prcpdd = opener.ds_paminfo.getColumn(0, "orddd");
  3521. var reqparam = utlf_getCurrentDate() + "▩";
  3522. frmf_setParameter("paramcalflag", "multi");
  3523. frmf_setParameter("defaultday", prcpdd);
  3524. frmf_setParameter("reqparam", reqparam);
  3525. lf_prcpModal("SPMMO10600", 20, 50);
  3526. var actordddArray = frmf_getParameter("rtn").split("▩");
  3527. var contprcpspec = "status|actorddd|execprcpstatcd|prcpdd|execprcpno";
  3528. for (var i = 0 ; i < actordddArray.length ; i++) {
  3529. var actorddd = actordddArray[i];
  3530. contprcpspec = contprcpspec + "^" + status + "|" + actorddd + "|" + "" + "|" + prcpdd + "|" + "";
  3531. }
  3532. var rtnval = "";
  3533. var contprcpspecArray = contprcpspec.split("^");
  3534. for (var i = 1; i < contprcpspecArray.length; i++) {
  3535. var tmp = contprcpspecArray[i].split("|");
  3536. rtnval = rtnval + tmp[1] + ",";
  3537. }
  3538. rtnval = rtnval.substring(0, rtnval.length - 1);
  3539. if (actordddArray.length == 1 && actorddd == prcpdd) {
  3540. ds_main_prcplist.setColumn(0, "contprcpspec", "-");
  3541. }
  3542. else {
  3543. ds_main_prcplist.setColumn(0, "contprcpspec", contprcpspec);
  3544. }
  3545. ds_main_prcplist.setColumn(0, "prcpdayno", actordddArray.length);
  3546. ds_init.setColumn(0, "contprcpspec", rtnval);
  3547. return true;
  3548. }
  3549. /***************************************************************************************************
  3550. * Function : lf_chkAuthDeptCd
  3551. * Description : 부서 권한 check . 내과일 경우 환자 진료과 return. 그외는 로그인 근무지부서.
  3552. * Argument :
  3553. * return type : string
  3554. * Creator :
  3555. ***************************************************************************************************/
  3556. function lf_chkAuthDeptCd()
  3557. {
  3558. var authdeptcd = sysf_getUserInfo("dutplcecd");
  3559. if (!this.isValidObject("ds_depthard"))
  3560. return authdeptcd;
  3561. var orddeptcd = fGetPatientInfoDetail("orddeptcd");
  3562. lf_reqHardCodeInfo(ds_depthard, ds_depthard, "423");
  3563. ds_depthard.filterstr = "cdseqno=='1' && hardcd=='"+authdeptcd+"'";
  3564. if (ds_depthard.rowcount > 0) {
  3565. ds_depthard.filterstr = "cdseqno=='3' && hardcd=='"+orddeptcd+"'";
  3566. if (ds_depthard.rowcount > 0) {
  3567. authdeptcd = orddeptcd;
  3568. }
  3569. }
  3570. ds_depthard.filterstr = "";
  3571. return authdeptcd;
  3572. }
  3573. /***************************************************************************************************
  3574. * Function : lf_prcpExecIssDeptCdSet
  3575. * Description : 시행부서, 발행부서 SETTING
  3576. * Argument :
  3577. * return type :
  3578. * Creator :
  3579. * 변환OK
  3580. ***************************************************************************************************/
  3581. function lf_prcpExecIssDeptCdSet(strSrc, sendRow)
  3582. {
  3583. var ds_src = this.objects[strSrc];
  3584. //발행처
  3585. var issdept = (lf_getDsValue(ds_root, 0, "addprcp") == "Y") ? lf_getDsValue(ds_init, 0, "issdept") : lf_getDsValue(ds_root, 0, "issdept");
  3586. if (utlf_isNull(issdept)) {
  3587. issdept = sysf_getUserInfo("dutplcecd");
  3588. }
  3589. ds_src.setColumn(sendRow, "issdeptcd", issdept);
  3590. // 응급실 발행부서 관련 셋팅. 응급실 환자의 경우 센서스에 등록되어 있는 부서코드로 발행부서를 셋팅해준다.2012.04.24 엄영만
  3591. var prcpgenrflag = ds_src.getColumn(sendRow, "prcpgenrflag");
  3592. var erissdeptcd = lf_getDsValue(ds_paminfo, 0, "erissdeptcd");
  3593. if (prcpgenrflag == "E" && issdept == "2280200000" && !utlf_isNull(erissdeptcd) && erissdeptcd != "-") {
  3594. ds_src.setColumn(sendRow, "issdeptcd", erissdeptcd);
  3595. }
  3596. //과내검사 수가코드인 경우는 orddeptcd를 넣어준다. 구현중...
  3597. /*iFind = -1;
  3598. iFind = model.getValue ( "/root/initsrch/prcpetccnts/precureprcpcd" ).search( chkprcpcd + "D" );
  3599. if ( iFind >= 0) {
  3600. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd", orddeptcd );
  3601. }*/
  3602. }
  3603. /***************************************************************************************************
  3604. * Function : lf_setRsrvInfo
  3605. * Description : 처방에 대한 예약일시 혹은 반납수량 등 힌트표시
  3606. * Argument :
  3607. * return type :
  3608. * Creator :
  3609. ***************************************************************************************************/
  3610. function lf_setRsrvInfo(grd_prcplist, rsrvcolnm , mrow , mcol)
  3611. {
  3612. var rsrvinfo = grd_prcplist.nodeset.getColumn(mrow, rsrvcolnm);
  3613. var orgprcpnm = grd_prcplist.nodeset.getColumn(mrow, "prcpnm");
  3614. var prcpnm = "";
  3615. var rsrvflag = lf_getArrayData( rsrvinfo , 0, 0, "^", "|");
  3616. var rsrvdt = lf_getArrayData( rsrvinfo , 0, 1, "^", "|");
  3617. if (!utlf_isNull(rsrvdt) && rsrvdt != "00000000000000" && rsrvflag == "3") {
  3618. prcpnm = "[예약일시:" + rsrvdt.substr(0,4) + "/" + rsrvdt.substr(4,2) + "/" + rsrvdt.substr(6,2) + " " + rsrvdt.substr(8,2) + ":" + rsrvdt.substr(10,2) + "] ";
  3619. }
  3620. orgprcpnm = prcpnm + orgprcpnm;
  3621. prcpnm = "";
  3622. var prcphistcd = grd_prcplist.nodeset.getColumn(mrow, "prcphistcd");
  3623. var rtnprcpqty = grd_prcplist.nodeset.getColumn(mrow, "rehbprcpcurepartcd");
  3624. var rtndayno = grd_prcplist.nodeset.getColumn(mrow, "rehbprcpenddd");
  3625. var drprcpetc3 = grd_prcplist.nodeset.getColumn(mrow, "drprcpetc3");
  3626. if (prcphistcd == "E") {
  3627. prcpnm = "\n[반납수량 :" + rtnprcpqty + " " + drprcpetc3 +"] " + "[반납일수 :" + rtndayno +"] ";
  3628. }
  3629. prcpnm = orgprcpnm + prcpnm;
  3630. grd_prcplist.tooltipText(mrow, mcol) = prcpnm;
  3631. }
  3632. /***************************************************************************************************
  3633. * Function : lf_prcpGrupSort
  3634. * Description : Repeat처방 그룹 정렬 복사
  3635. * Argument : strDest : 목적지 주소값
  3636. * : strSrc : 출발지 주소값
  3637. * return type : void
  3638. * Creator :
  3639. ***************************************************************************************************/
  3640. function lf_prcpGrupSort(strSrc:Dataset, strDest:Dataset, sFlag)
  3641. {
  3642. strSrc.clearData();
  3643. strDest.filter("status", "I");
  3644. strSrc.copyData(strDest, true);//lf_addCopyNodeset(strSrc, strDest); // 정렬할 처방복사
  3645. strSrc.keystring = "S:+prcpmixno";//sortNodeList(strSrc, "prcpmixno", "asc"); // 그룹번호 순서대로 정렬한다.
  3646. var nNodeCnt = strSrc.getRowCount(); // getNodeSetCnt(strSrc);
  3647. var sPrcpmixno = "";
  3648. var sTmp_prcpmixno = "";
  3649. // 추천처방 화면이면 화면별로 셋팅
  3650. if (!utlf_isNull(sFlag)) {
  3651. var sCur100 = fCheckPrcpWnd(sFlag);
  3652. if (cur100 != null) {
  3653. cur100.lf_setGroupMaxNo("/root/main/prcp/prcplist");
  3654. }
  3655. } else {
  3656. opener.lf_setGroupMaxNo(opener.ds_grid_prcplist);
  3657. }
  3658. for (var i = 0 ; i < nNodeCnt ; i++) {
  3659. if (i == 0) {
  3660. sTmp_prcpmixno = strSrc.getColumn(i, "prcpmixno"); // 기존 그룹번호를 가지고 있는다.
  3661. if (!utlf_isNull(sFlag)){ //추천처방 화면이면 화면별로 셋팅
  3662. if (cur100 != null) {
  3663. strSrc.setColumn(i, "prcpmixno", parseInt(cur100.ds_init.getColumn(0, "/root/init/prcpmixno"))+1); // 처방 그룹번호 Max + 1 로 초기처방은 그룹번호 셋팅.
  3664. }
  3665. }
  3666. else {
  3667. strSrc.setColumn(i, "prcpmixno", parseInt(opener.ds_temp_search.getColumn(0, "prcpmixno"))+1); // 처방 그룹번호 Max + 1 로 초기처방은 그룹번호 셋팅.
  3668. }
  3669. } else {
  3670. sPrcpmixno = strSrc.getColumn(i, "prcpmixno");
  3671. // 앞의 처방과 그룹번호가 같으면
  3672. if (sPrcpmixno == sTmp_prcpmixno) {
  3673. strSrc.setColumn(i, "prcpmixno", strSrc.getColumn(i-1, "prcpmixno"));
  3674. } else { // 앞의 처방과 그룹번호가 같지 않으면
  3675. tmp_prcpmixno = sPrcpmixno;
  3676. strSrc.setColumn(i, "prcpmixno", parseInt(strSrc.getColumn(i-1 + "prcpmixno")) + 1);
  3677. }
  3678. }
  3679. }
  3680. }
  3681. /***************************************************************************************************
  3682. * Function : lf_chngSpecDr
  3683. * Description : 선택진료의 변경 시 호출 .
  3684. * 선택진료환자이나 선택한 의사가 특진의가 아닐경우 방사선혈관조영/마취, 수술 처방에 한해 해당 처방의 선택진료여부 = 'N'으로 SETTING
  3685. * Argument : objFlag - child or null
  3686. * : DrID - 진료의id
  3687. * : specDrYN- 특진의여부(A-특진/B..)
  3688. * return type :
  3689. * Creator :
  3690. ***************************************************************************************************/
  3691. function lf_chngSpecDr(objFlag, DrID, specDrYN)
  3692. {
  3693. //선택진료관련 추가 by sonjy 2008-08-27 start
  3694. var tempcol2;
  3695. if (objFlag == "child") {
  3696. if (opener.ds_prcp.getColumn(0, "/root/main/prcp/prcplist/choiordflag") == "Y") {
  3697. tempcol2 = pener.ds_prcp.getColumn(0, "/root/main/prcp/prcplist/tempcol2");
  3698. if (!utlf_isNull(tempcol2)) {
  3699. //선택진료환자이나 선택한 의사가 특진의가 아닐경우 방사선혈관조영/마취, 수술 처방에 한해 해당 처방의 선택진료여부 = 'N'으로 SETTING
  3700. if (specDrYN!= "A") {
  3701. opener.ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "N");
  3702. }
  3703. else {
  3704. opener.ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "Y");
  3705. }
  3706. }
  3707. }
  3708. // 선택진료환자이나 비특진의 선택으로 인해 선택진료여부가 'N'으로 변경되었으나 다시 선택진료의를 선택한 경우
  3709. else if (opener.ds_paminfo.getColumn(0, "/root/paminfo/list/specordyn") == "Y" && opener.ds_prcp.getColumn(0, "/root/main/prcp/prcplist/choiordflag") == "N") {
  3710. if (specDrYN == "A") {
  3711. opener.ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "Y");
  3712. }
  3713. }
  3714. else { // 의사가 찍은대로 선택진료의를 변경한다.
  3715. if (specDrYN == "A") {
  3716. opener.ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "Y");
  3717. }
  3718. else {
  3719. opener.ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "N");
  3720. }
  3721. }
  3722. }
  3723. else {
  3724. if (ds_prcp.getColumn(0, "/root/main/prcp/prcplist/choiordflag") == "Y") {
  3725. tempcol2 = ds_prcp.getColumn(0, "/root/main/prcp/prcplist/tempcol2");
  3726. if (!utlf_isNull(tempcol2)) {
  3727. var temparray = tempcol2.split("|");
  3728. // 선택진료환자이나 선택한 의사가 특진의가 아닐경우 방사선혈관조영/마취, 수술 처방에 한해 해당 처방의 선택진료여부 = 'N'으로 SETTING
  3729. if (specDrYN != "A") {
  3730. ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "N");
  3731. } else {
  3732. ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "Y");
  3733. }
  3734. }
  3735. }
  3736. // 선택진료환자이나 비특진의 선택으로 인해 선택진료여부가 'N'으로 변경되었으나 다시 선택진료의를 선택한 경우
  3737. else if (ds_paminfo.getColumn(0, "/root/paminfo/list/specordyn") == "Y" && ds_prcp.getColumn(0, "/root/main/prcp/prcplist/choiordflag") == "N") {
  3738. if (specDrYN == "A") {
  3739. ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "Y");
  3740. }
  3741. }
  3742. else { // 의사가 찍은대로 선택진료의를 변경한다.
  3743. if (specDrYN == "A") {
  3744. opener.ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "Y");
  3745. }
  3746. else {
  3747. opener.ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "N");
  3748. }
  3749. }
  3750. }
  3751. }
  3752. /***************************************************************************************************
  3753. * Function : lf_chkAdrDrug
  3754. * Description : ADR 약물 체크.
  3755. * Argument : strSrc : 해당Node경로
  3756. : sendRow : 선택Row
  3757. : objFlag : opener.model or model
  3758. * return type : void
  3759. * Creator :
  3760. ***************************************************************************************************/
  3761. function lf_chkAdrDrug(strSrc, sendRow, objFlag)
  3762. {
  3763. var sPrcpCd = strSrc.getColumn(sendRow, "prcpcd");
  3764. var adrNode;
  3765. var oTempDsPrcpEtcCnts = lf_getTopPatientinfo("N", "ds_adrdruglist") ;
  3766. var nRow = oTempDsPrcpEtcCnts.findRow("adrdrugcd", sPrcpCd);
  3767. if (nRow > -1){
  3768. sysf_messageBox("해당 약품에 대한 ADR 보고 이력이 있습니다.\n자세한 내용은 ADR 보고내역을", "I007");
  3769. }
  3770. }
  3771. /***************************************************************************************************
  3772. * Function : lf_getBaseSpecDr
  3773. * Description : 수행부서별 기본 선택진료의
  3774. * Argument :
  3775. * return type : string
  3776. * Creator :
  3777. ***************************************************************************************************/
  3778. function lf_getBaseSpecDr(prcpexecdeptcd , orddrid, ioflag)
  3779. {
  3780. var specdrid = "-";
  3781. var chkspecdrid = "";
  3782. // 1. 전달부서별 선택진료의
  3783. var ds_dept = emr_getOrderBaseInfo("dept");
  3784. if (ds_dept != null) {
  3785. // var tmplist = sysMessageobj.instance1.selectNodes("/root/properties/orderbasicinfo/dept[deptcd='" + prcpexecdeptcd + "']");
  3786. ds_dept.filterstr = "deptcd=='" + prcpexecdeptcd + "'";
  3787. var tmplist = ds_dept;
  3788. if (tmplist != null && tmplist.rowcount > 0) {
  3789. chkspecdrid = tmplist.getColumn(0, "specdrid");
  3790. }
  3791. ds_dept.filterstr = "";
  3792. }
  3793. if (utlf_isNull(chkspecdrid)) {
  3794. // 1.처방화면 기본
  3795. chkspecdrid = orddrid;
  3796. // 2. 시행부서처방 or 응급실
  3797. if (ds_init_data.getColumn(0, "addprcp") == "Y" || (ioflag == "E" && utlf_isNull(ds_init_operation.getColumn(0, "perfdrid")))) {
  3798. chkspecdrid = sysf_getUserInfo("userid");
  3799. }
  3800. else if (!utlf_isNull(ds_init_operation.getColumn(0, "perfdrid")) && ds_init_data.getColumn(0, "prcpkindcd") == "35") {
  3801. // 3. 수술탭 처방
  3802. chkspecdrid = ds_init_operation.getColumn(0, "perfdrid");
  3803. }
  3804. }
  3805. if (lf_chkSpecDrId(chkspecdrid))
  3806. specdrid = chkspecdrid ;
  3807. return specdrid ;
  3808. }
  3809. /***************************************************************************************************
  3810. * Function : lf_getPrcpNodeListCSV
  3811. * Description : 노드리스트를 CSV로 반환한다.
  3812. * Argument : nodeList
  3813. * : headerFlag : header 정보 필요유무
  3814. * return type : void
  3815. * Creator :
  3816. ***************************************************************************************************/
  3817. function lf_getPrcpNodeListCSV(nodeList, headerFlag)
  3818. {
  3819. if (nodeList.rowcount == 0)
  3820. return "";
  3821. var sColSep = "▦";
  3822. var sRowSep = "▩";
  3823. var rCSV = "";
  3824. var childNodeList = nodeList.item(0).childNodes;
  3825. var childNodeCnt = childNodeList.length;
  3826. if (childNodeCnt == 0)
  3827. return "";
  3828. if (headerFlag != "N") {
  3829. for(var i = 0 ; i < childNodeCnt - 1 ; i++)
  3830. {
  3831. rCSV += childNodeList.item(i).nodeName + sColSep;
  3832. }
  3833. rCSV += childNodeList.item(i).nodeName + sRowSep;
  3834. }
  3835. var node;
  3836. while (node = nodeList.nextNode())
  3837. {
  3838. childNodeList = node.childNodes;
  3839. for(var i = 0 ; i < childNodeCnt - 1 ; i++)
  3840. {
  3841. rCSV += childNodeList.item(i).text + sColSep;
  3842. }
  3843. rCSV += childNodeList.item(i).text + sRowSep;
  3844. }
  3845. return rCSV;
  3846. }
  3847. /***************************************************************************************************
  3848. * Function : lf_checkDiagHosinpPcp
  3849. * Description : 진단추가시 원내처방예외사유가 있는 진단코드인지 검색후(처방화면초기값) 결과에 따라 처방화면의 원내처방사유를 setting한다.
  3850. * Argument : icd10cd
  3851. * : prcpgenrflag
  3852. * : diagkindcdflag
  3853. * return type :
  3854. * Creator :
  3855. * 변환 OK
  3856. ***************************************************************************************************/
  3857. function lf_checkDiagHosinpPcp( icd10cd, prcpgenrflag, diagkindcdflag)
  3858. {
  3859. var inhospappdeptcd = ds_initsrch_inhospappdeptcd.getColumn(0, "trgtcd"); //F상병원내사유적용 부서:정신과 (2009.06.29 JJE)
  3860. var inhospautoappyn = ds_initsrch_inhospautoappyn.getColumn(0, "trgtcd"); //F상병원내사유자동적용 여부 (2009.06.29 JJE)
  3861. var insukind = (utlf_isNull(opener) || utlf_isNull(opener.objects["ds_paminfo"])) ? "" : opener.ds_paminfo.getColumn(0, "insukind"); //보험유형 (2009.06.29 JJE)
  3862. if (utlf_isNull(insukind)) insukind = ds_paminfo.getColumn(0, "insukind"); //보험유형 (2009.06.29 JJE)
  3863. if (prcpgenrflag == "O" || prcpgenrflag == "D") { //SON1123 DSC 퇴원처방 처리 by sonjy 20081123
  3864. if (!utlf_isNull(ds_initsrch_diagautocnts.getColumn(0, "trgtcd"))) {
  3865. if (ds_init.getColumn(0, "hosinprcpresncd") == "00") { //원내처방 사유가 없을 경우
  3866. // 진단검색
  3867. for(var i = 0; i < ds_initsrch_diagautocnts.rowcount; i++ ) {
  3868. var trgtcdnmArray = ds_initsrch_diagautocnts.getColumn(i, "trgtcdnm");
  3869. var fromTrgtcdnm = lf_getArrayData(trgtcdnmArray + "^", 0, 0, "^", "|");
  3870. var toTrgtcdnm = lf_getArrayData(trgtcdnmArray + "^", 0, 1, "^", "|");
  3871. var cdlength = fromTrgtcdnm.length;
  3872. var icd10Chck = icd10cd.substring(0, cdlength);
  3873. if (icd10Chck >= fromTrgtcdnm && icd10Chck <= toTrgtcdnm) { //해당 진단검색안에 값이 있다면
  3874. var hosinprcpresncd = ds_initsrch_diagautocnts.getColumn(i, "trgtcd");
  3875. // 원내처방사유 적용 주상병만 가능 단 23은 부상병도 적용
  3876. if (diagkindcdflag == "M" || hosinprcpresncd == "23" ) {
  3877. //by sonjy 20081031 F상병일 경우 진료과가 정신과인 경우에 한해서만 원내처방사유 SETTING되도록. 윤영옥ITC 요청. start
  3878. if (icd10Chck.substring( 0,1) == "F" ) {
  3879. if (ds_paminfo.getColumn(0, "orddeptcd" ) != inhospappdeptcd) break; //F상병이면서 진료과가 정신과인지 check (2009.06.29 JJE)
  3880. if (inhospautoappyn != "Y" && (insukind != "21" && insukind != "22")) break; //원내사유자동적용 N이면 보험유형까지 check - ujb요청 (2009.06.29 JJE)
  3881. }
  3882. //by sonjy end
  3883. ds_init.setColumn(0, "hosinprcpresncd", hosinprcpresncd);
  3884. lf_chngHosinPrcpResn();
  3885. break; //값을 setting 하면 빠져나온다.
  3886. }
  3887. } //icd10cd == trgtcdnm end
  3888. } //진단검색 end
  3889. } //원내처방 사유가 없을 경우 여부
  3890. }//진단초기값 여부 end
  3891. } //외래end
  3892. }
  3893. /***************************************************************************************************
  3894. * Function : lf_prcpHopeDd
  3895. * Description : 희망일자처리
  3896. * Argument : grdObj: Data Grid
  3897. * : prcpNode: source Node
  3898. * : flag: child
  3899. * : inst: 초기값을 가져올 instance
  3900. * return type : void
  3901. * Creator :
  3902. ***************************************************************************************************/
  3903. function lf_prcpHopeDd(grdObj, prcpNode, flag, inst)
  3904. {
  3905. // 외래진료일자
  3906. if (flag == "child") {
  3907. if (opener.ds_patflag.getColumn(0, "/root/patflag/list/prcpgenrflag") != "O")
  3908. return;
  3909. prcpdd = opener.ds_paminfo.getColumn(0, "/root/paminfo/list/orddd");
  3910. }
  3911. else {
  3912. if (ds_patflag.getColumn(0, "/root/patflag/list/prcpgenrflag") != "O")
  3913. return;
  3914. prcpdd = ds_paminfo.getColumn(0, "/root/paminfo/list/orddd");
  3915. }
  3916. if (grdObj == null)
  3917. grdObj = grd_prcplist;
  3918. if (utlf_isNull(prcpNode))
  3919. prcpNode = "/root/main/prcp/prcplist";
  3920. if (utlf_isNull(inst))
  3921. inst = "prcphopedd";
  3922. frmf_setParameter("defaultday", prcpdd);
  3923. frmf_setParameter("paramcalflag", "sngl");
  3924. frmf_setParameter("reqparam", prcpNode.getColumn(grdObj.row, inst));
  3925. frmf_modal("SPMMO10600", "SPMMO10600");
  3926. // 값이 없으면 return
  3927. if (utlf_isNull(frmf_getParameter("rtn")))
  3928. return;
  3929. var selectedRows = grdObj.selectedRows;
  3930. for (var i=0 ; i<selectedRows ; i++) {
  3931. prcpNode.setColumn(grdObj.selectedrow(i), inst, frmf_getParameter("rtn"));
  3932. }
  3933. }
  3934. /***************************************************************************************************
  3935. * Function : lf_checkDeptDr
  3936. * Description : 처방가능 부서/의사 체크
  3937. * Argument : flag
  3938. * : strSrc
  3939. * : sendRow
  3940. * return type :
  3941. * Creator :
  3942. ***************************************************************************************************/
  3943. function lf_checkDeptDr(flag, strSrc, sendRow )
  3944. {
  3945. var prcpCd = strSrc.getColumn(sendRow, "prcpcd");
  3946. var prcpClsCd = strSrc.getColumn(sendRow, "prcpclscd");
  3947. var prcpDept = "";
  3948. var prcpDr = "";
  3949. var prcpPossYn = ""; // 처방가능여부.
  3950. var prcpDrugCd = "";
  3951. var prcpFlag = "";
  3952. var dutplcecd = sysf_getUserInfo("dutplcecd"); // 로그인한 의사의 부서.
  3953. var userid = sysf_getUserInfo("userid"); // 로그이난 의사의 ID.
  3954. var sysMessageobj = frmf_getViewer("sysMessage");
  3955. var impossfg = "";
  3956. if (sysMessageobj != null) {
  3957. var ds_temp_drugpossprcplist = emr_getOrderBaseInfo("drugpossprcplist");
  3958. if (ds_temp_drugpossprcplist != null && ds_temp_drugpossprcplist.rowcount > 0) {
  3959. for (var i=0 ; i < ds_temp_drugpossprcplist.rowcount ; i++)
  3960. {
  3961. prcpPossYn = ds_temp_drugpossprcplist.getColumn(i, "prcpyn");
  3962. prcpDrugCd = ds_temp_drugpossprcplist.getColumn(i, "drugcd");
  3963. prcpFlag = ds_temp_drugpossprcplist.getColumn(i, "prcpflag");
  3964. prcpDr = ds_temp_drugpossprcplist.getColumn(i, "prcpdr");
  3965. prcpDept = ds_temp_drugpossprcplist.getColumn(i, "prcpdept");
  3966. if (prcpCd != prcpDrugCd)
  3967. continue;
  3968. impossfg = "";
  3969. // 처방 가능한 의사 이면
  3970. if (prcpPossYn == "Y" && prcpFlag == "2") {
  3971. if (prcpDr == userid) {
  3972. impossfg = "ADR";
  3973. break;
  3974. }
  3975. else { // 처방불가 의사 이면
  3976. impossfg = "DR";
  3977. }
  3978. }
  3979. else if (prcpPossYn == "N" && prcpFlag == "2" ) {
  3980. if (prcpDr == userid) {
  3981. impossfg = "DR";
  3982. break;
  3983. }
  3984. }
  3985. else if (prcpPossYn == "Y" && prcpFlag == "1") {
  3986. if (prcpDept == dutplcecd) {
  3987. impossfg = "ADEPT";
  3988. break;
  3989. }
  3990. else { // 처방 불가 부서이면
  3991. impossfg = "DEPT";
  3992. }
  3993. }
  3994. else if (prcpPossYn == "N" && prcpFlag == "1") {
  3995. if (prcpDept == dutplcecd) {
  3996. impossfg = "DEPT";
  3997. break;
  3998. }
  3999. }
  4000. }
  4001. var strMsg = " 처방을 발행할수 없습니다.\n관련 내용은";
  4002. if (impossfg == "DR") {
  4003. strMsg = sysf_getUserInfo("usernm") + "님은 " + prcpCd + strMsg;
  4004. if (prcpClsCd == "B4")
  4005. strMsg = strMsg + " 혈액은행에 문의하세요." ;
  4006. else
  4007. strMsg = strMsg + " 약제팀에 문의하세요." ;
  4008. sysf_messageBox(strMsg , "I");
  4009. return false;
  4010. }
  4011. else if (impossfg == "DEPT") {
  4012. strMsg = sysf_getUserInfo("dutplcenm") + "는(은) " + prcpCd + strMsg;
  4013. if (prcpClsCd == "B4")
  4014. strMsg = strMsg + "혈액은행에 문의하세요." ;
  4015. else
  4016. strMsg = strMsg + "약제팀에 문의하세요." ;
  4017. sysf_messageBox(strMsg , "I");
  4018. return false;
  4019. }
  4020. }
  4021. }
  4022. return true ;
  4023. }
  4024. /***************************************************************************************************
  4025. * Function : mmbfGetHardCodeInfoNm
  4026. * Description : 하드코드 조회 (하드코드, 하드코드명)
  4027. * Argument : ref - reference path
  4028. * : rsltref - result reference path
  4029. * : hardcd - 하드코드
  4030. * return type :
  4031. * Creator :
  4032. ***************************************************************************************************/
  4033. function mmbfGetHardCodeInfoNm(ref, rsltref, hardcd){
  4034. var mmb_rsltref = "/root/hidden/mmb/hardcd";
  4035. model.removeNode(mmb_rsltref);
  4036. model.makeNode(mmb_rsltref);
  4037. model.removeNode(ref);
  4038. model.makeValue(ref + "/hardcd", hardcd);
  4039. if(submit("TRMMB04105", false, ref, mmb_rsltref)==true){ //잘못 된 submit 함수호출 수정("false"->false) 20131112 by zhyun
  4040. model.copyNode(rsltref, mmb_rsltref);
  4041. model.removeNode(mmb_rsltref);
  4042. }
  4043. }
  4044. function lf_addPrcpBfPrcpDetl(strSrc, migyn){
  4045. var bfprcpvol = strSrc.getColumn(sendRow, "prcpvol" );
  4046. var bfprcpqty = strSrc.getColumn(sendRow, "prcpqty" );
  4047. var bfprcptims = strSrc.getColumn(sendRow, "prcptims" );
  4048. var bfprcpdayno = strSrc.getColumn(sendRow, "prcpdayno" );
  4049. var bfprcpdelivefact = strSrc.getColumn(sendRow, "prcpdelivefact");
  4050. var bfpowdflag = strSrc.getColumn(sendRow, "powdflag");
  4051. var bfprnprcpflag = strSrc.getColumn(sendRow, "prnprcpflag");
  4052. var bfprepprcpflag = strSrc.getColumn(sendRow, "prepprcpflag");
  4053. var bfselfprcpflag = strSrc.getColumn(sendRow, "selfprcpflag");
  4054. var bfselfdrugflag = strSrc.getColumn(sendRow, "selfdrugflag");
  4055. var bfdrugpackflag = strSrc.getColumn(sendRow, "drugpackflag");
  4056. var bferprcpflag = strSrc.getColumn(sendRow, "erprcpflag");
  4057. var bfprecureprcpflag = strSrc.getColumn(sendRow, "precureprcpflag");
  4058. var bfnigtprcpflag = strSrc.getColumn(sendRow, "nigtprcpflag");
  4059. var bfportprcpflag = strSrc.getColumn(sendRow, "portprcpflag");
  4060. var bffixprcpflag = strSrc.getColumn(sendRow, "fixprcpflag");
  4061. var bfanamneflag = strSrc.getColumn(sendRow, "anamneflag");
  4062. var bferreadflag = strSrc.getColumn(sendRow, "erreadflag");
  4063. var bfstemcellflag = strSrc.getColumn(sendRow, "stemcellflag");
  4064. var bfprcpexecdeptcd = strSrc.getColumn(sendRow, "prcpexecdeptcd");
  4065. var bfDrprcpetc4 = strSrc.getColumn(sendRow, "drprcpetc4"); // 입력수량
  4066. var bfDrprcpetc3 = strSrc.getColumn(sendRow, "drprcpetc3"); // 입력수량단위
  4067. var bfDrprcpetc7 = strSrc.getColumn(sendRow, "drprcpetc7"); // DIVIDE단위
  4068. var bfDrprcpetc8 = strSrc.getColumn(sendRow, "drprcpetc8"); // 입력횟수
  4069. var bfprcpqtyunitflag = strSrc.getColumn(sendRow, "prcpqtyunitflag"); // 입력수량단위
  4070. var bfprcpvolunitflag = strSrc.getColumn(sendRow, "prcpvolunitflag"); // 입력수량단위
  4071. var bfpayflagcd = strSrc.getColumn(sendRow, "payflagcd"); // 마이그된 처방 전처방 복사시 급여도 복사
  4072. var bfprcpmixno = strSrc.getColumn(sendRow, "prcpmixno");
  4073. //mig data 전처방 copy시 신코드일 경우 reset여부
  4074. if (bfprcpcd.substring( 0, 1 ) == "_" || bfprcpcd.substring( 0, 1 ) == "=" ) {
  4075. lf_prcpSrchCom(bfprcpcd.substring(1, bfprcpcd.length), opener.ds_init_data.getColumn(0, "prcpdd"), opener.ds_data_paminfo.getColumn(0, "insukind"), "TRMMO02101", "", "getOldPrcpCdChngInfo", "E", null, ds_data_paminfo);
  4076. }
  4077. else {
  4078. lf_prcpSrchCom(bfprcpcd, opener.ds_init_data.getColumn(0, "prcpdd"), opener.ds_data_paminfo.getColumn(0, "insukind"), "TRMMO02101", "", "getPrcpCdSrchInfo", "E" , false, ds_data_paminfo);
  4079. }
  4080. //ds_temp_OldPrcpsrch -> ds_temp_prcpsrch
  4081. dsf_copyDs(strSrc , ds_temp_OldPrcpsrch, "replace");
  4082. ds_temp_OldDiagcdlist.clearData();
  4083. sendRow = 1;
  4084. if (utlf_isNull(strSrc.getColumn(sendRow, "prcpcd"))) {
  4085. return 0;
  4086. } else {
  4087. strSrc.setColumn(sendRow, "prcpmixno", bfprcpmixno );
  4088. oldprcpflag = "Y";
  4089. prcpclscd = strSrc.getColumn(sendRow, "prcpclscd" );
  4090. if (prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6") {
  4091. bfprcptims = bfDrprcpetc8;
  4092. if (bfDrprcpetc7 == "q" && !utlf_isNull(bfDrprcpetc8) && bfDrprcpetc8 != "0") {
  4093. bfprcptims = 24/parseInt(bfDrprcpetc8);
  4094. }
  4095. if (prcpclscd == "A2") {
  4096. if (strSrc.getColumn(sendRow, "prcptims") != bfprcptims) {
  4097. strSrc.setColumn(sendRow, "prcptims", bfprcptims);
  4098. lf_baseMthd("oldprcp");
  4099. }
  4100. }
  4101. else {
  4102. strSrc.setColumn(sendRow, "prcptims", bfprcptims );
  4103. }
  4104. var chkPrcpVol = strSrc.getColumn(sendRow, "drprcpetc4");
  4105. var orgDrprcpetc3 = strSrc.getColumn(sendRow, "drprcpetc3"); // 입력단위
  4106. var orgDrprcpetc7 = strSrc.getColumn(sendRow, "drprcpetc7"); // 횟수단위
  4107. if (bfprcpsrchyn == "Y" && migyn == "Y" &&(parseInt(chkPrcpVol) < 1 || utlf_isNull(orgDrprcpetc3) || utlf_isNull(orgDrprcpetc7))) {
  4108. strSrc.setColumn(sendRow, "prcpvol", 0);
  4109. strSrc.setColumn(sendRow, "prcpqty", 0);
  4110. strSrc.setColumn(sendRow, "prcpdayno", 0);
  4111. strSrc.setColumn(sendRow, "drprcpetc4", 0);
  4112. strSrc.setColumn(sendRow, "drprcpetc8", 0);
  4113. } else {
  4114. strSrc.setColumn(sendRow, "prcpvol", bfprcpvol);
  4115. strSrc.setColumn(sendRow, "prcpqty", bfprcpqty);
  4116. strSrc.setColumn(sendRow, "prcpdayno", bfprcpdayno);
  4117. strSrc.setColumn(sendRow, "drprcpetc4", bfDrprcpetc4);
  4118. strSrc.setColumn(sendRow, "drprcpetc8", bfDrprcpetc8);
  4119. strSrc.setColumn(sendRow, "drprcpetc3", bfDrprcpetc3);
  4120. strSrc.setColumn(sendRow, "drprcpetc7", bfDrprcpetc7);
  4121. strSrc.setColumn(sendRow, "prcpvolunitflag", bfprcpvolunitflag);
  4122. strSrc.setColumn(sendRow, "prcpqtyunitflag", bfprcpqtyunitflag);
  4123. }
  4124. //전환 데이터 관련 => mig data 전처방 copy시 약/주사 용량 오류 보정
  4125. if (bfprcpsrchyn == "Y" && migyn == "Y") {
  4126. var sdrugmastspec = strSrc.getColumn(sendRow, "drugmastspec");
  4127. var orgDrprcpetc4 = strSrc.getColumn(sendRow, "drprcpetc4"); // 입력수량
  4128. orgDrprcpetc3 = strSrc.getColumn(sendRow, "drprcpetc3"); // 입력수량
  4129. orgDrprcpetc7 = strSrc.getColumn(sendRow, "drprcpetc7"); // 횟수단위
  4130. if (!utlf_isNull(bfDrprcpetc4) &&!utlf_isNull(bfDrprcpetc7) && !utlf_isNull(bfDrprcpetc8) && (bfDrprcpetc4 != 0 ) && (bfDrprcpetc8 != 0)) {
  4131. var calcmthdcd = lf_getArrayData(sdrugmastspec + "^", 0, 26, "^", "|");
  4132. var calcCnts = 0;
  4133. var calcTims = bfDrprcpetc8;
  4134. if (bfDrprcpetc7 == "q" && utlf_isNull(bfDrprcpetc8) && bfDrprcpetc8 != 0) {
  4135. calcTims = 24/parseInt(bfDrprcpetc8);
  4136. }
  4137. strSrc.setColumn(sendRow, "drprcpetc7", bfDrprcpetc7);
  4138. // 수량단위 입력
  4139. if (!utlf_isNull(bfDrprcpetc3) && bfDrprcpetc3 != "-") {
  4140. if (orgDrprcpetc3 != bfDrprcpetc3 ) {
  4141. if (!lf_checkPrcpUnit(bfprcpcd , bfDrprcpetc3, bfprcpvolunitflag)) {
  4142. sysf_messageBox(strSrc.getColumn(sendRow, "prcpnm") + "의 처방단위["+ bfDrprcpetc3 +"]가 유효하지 않습니다.","I");
  4143. return 0;
  4144. } else {
  4145. strSrc.setColumn(sendRow, "drprcpetc3", bfDrprcpetc3);
  4146. strSrc.setColumn(sendRow, "prcpvolunitflag", bfprcpvolunitflag);
  4147. strSrc.setColumn(sendRow, "prcpqtyunitflag", bfprcpqtyunitflag);
  4148. }
  4149. }
  4150. // 용량보정
  4151. calcCnts = parseFloat(orgDrprcpetc4);
  4152. if (calcmthdcd == "1") {
  4153. if (bfDrprcpetc7 != "#")
  4154. calcCnts *= calcTims;
  4155. }
  4156. if (bfprcptims != calcTims || bfprcpqty != calcCnts || bfprcpvol!= calcCnts) {
  4157. strSrc.setColumn(sendRow, "prcpqty", calcCnts);
  4158. strSrc.setColumn(sendRow, "prcpvol", calcCnts);
  4159. strSrc.setColumn(sendRow, "prcptims", calcTims);
  4160. }
  4161. } else {
  4162. sysf_messageBox(strSrc.getColumn(sendRow, "prcpnm") + "의 처방단위["+ bfDrprcpetc3 +"]가 유효하지 않습니다. ","I");
  4163. return 0;
  4164. }
  4165. }
  4166. }
  4167. }
  4168. strSrc.setColumn(sendRow, "prcpdelivefact", bfprcpdelivefact);
  4169. strSrc.setColumn(sendRow, "powdflag", bfpowdflag);
  4170. strSrc.setColumn(sendRow, "prnprcpflag", bfprnprcpflag);
  4171. strSrc.setColumn(sendRow, "prepprcpflag", bfprepprcpflag);
  4172. strSrc.setColumn(sendRow, "selfprcpflag", bfselfprcpflag);
  4173. strSrc.setColumn(sendRow, "selfdrugflag", bfselfdrugflag);
  4174. strSrc.setColumn(sendRow, "drugpackflag", bfdrugpackflag);
  4175. strSrc.setColumn(sendRow, "erprcpflag", bferprcpflag);
  4176. strSrc.setColumn(sendRow, "precureprcpflag", bfprecureprcpflag);
  4177. strSrc.setColumn(sendRow, "nigtprcpflag", bfnigtprcpflag);
  4178. strSrc.setColumn(sendRow, "portprcpflag", bfportprcpflag);
  4179. strSrc.setColumn(sendRow, "fixprcpflag", bffixprcpflag);
  4180. strSrc.setColumn(sendRow, "anamneflag", bfanamneflag);
  4181. strSrc.setColumn(sendRow, "erreadflag", bferreadflag);
  4182. strSrc.setColumn(sendRow, "payflagcd", bfpayflagcd); // 마이그된 처방 전처방 복사시 급여도 복사
  4183. }
  4184. }
  4185. /***************************************************************************************************
  4186. * Function : lf_contPrcpDdInit
  4187. * Description : 지정일자초기화
  4188. * Argument : grdObj: DataGrid
  4189. * : contPrcpDdCol: main에서 setting 된 값이 있었다면 화면에 , 구분자로 표시해 준다.
  4190. * return type : void
  4191. * Creator :
  4192. * 변환OK
  4193. ***************************************************************************************************/
  4194. function lf_contPrcpDdInit( objPrcpGrd, contPrcpDdCol) {
  4195. var objPrcpDs = this.objects[objPrcpGrd.binddataset];
  4196. var prcpdd = lf_getDsValue(opener.ds_paminfo, 0, "orddd");
  4197. var contPrcpSpec = objPrcpDs.getColumn(0, "contprcpspec");
  4198. var contPrcpSpecArray1;
  4199. var contPrcpSpecArray2;
  4200. var contPrcpDd = "";
  4201. if (opener.ds_patflag.getColumn(0, "prcpgenrflag") != "O" ) {
  4202. objPrcpGrd.setCellProperty("body", contPrcpDdCol, "text", "-");
  4203. return;
  4204. }
  4205. objPrcpGrd.setCellProperty("body", contPrcpDdCol, "text", "");
  4206. if (contPrcpSpec == "-" ) { //처방 당일이었던 지정일 또는 처음검색
  4207. prcpPKSpecArray = objPrcpDs.getColumn(0, "prcppkspec" ).split("|");
  4208. if (!utlf_isNull(prcpPKSpecArray[0])){
  4209. contPrcpDd = prcpPKSpecArray[0]; //처방일자가 있으면
  4210. }else{
  4211. contPrcpDd = prcpdd;
  4212. }
  4213. contPrcpDd = lf_dateFormat(contPrcpDd );
  4214. } else {
  4215. contPrcpSpecArray1 = contPrcpSpec.split("^");
  4216. for(var j = 1; j < contPrcpSpecArray1.length; j++ ){
  4217. contPrcpSpecArray2 = contPrcpSpecArray1[j].split("|");
  4218. if (j == (contPrcpSpecArray1.length - 1))
  4219. contPrcpDd = contPrcpDd + lf_dateFormat(contPrcpSpecArray2[1]);//과거에 선택던 지정일을 넘긴다.
  4220. else
  4221. contPrcpDd = contPrcpDd + lf_dateFormat(contPrcpSpecArray2[1]) + ",";
  4222. }
  4223. }
  4224. objPrcpGrd.setCellProperty("body", contPrcpDdCol, "text", contPrcpDd);
  4225. if(objPrcpGrd.tooltiptype != "default") // 이 컬럼은 데이타셋에 바인드를 하지 않고 쓰기 때문에 tooltip이 나오지 않아 직접 설정함
  4226. objPrcpGrd.setCellProperty("Body", contPrcpDdCol, "tooltiptext", contPrcpDd);
  4227. }
  4228. // 변환OK
  4229. function lf_addPrcpDetl_App(strDest, sCopyInptFlag, sScreenID, sCopykeys, sCopyIoFlag) {
  4230. var nSrchRow = 0; // 검색Row
  4231. var sTimeStr = utlf_getNewDate().valueOf( ).toString() ; // 반복호출을 처리 하기 위한 노드 변수값으로 사용 (품절약, 대체약, 수혈 추가처방(AST, ABO) 등 화면에서 재귀호출을 처리 하기 위해) 2013.09.16 엄영만
  4232. var sCopyPrcpSrc = "ds_copyprcp_" +sTimeStr+ "_prcplist"; // Copy Prcp Dataset 이름
  4233. var sCopyFlagSrc = "ds_copyprcp_" +sTimeStr+ "_flaginfo"; // Copy Flag Dataset 이름
  4234. var sErrFlag = ""; // 서버체크시 오류구분
  4235. var sErrMsg = ""; // 서버체크시 오류메세지
  4236. var sErrCode = ""; // 서버체크시 오류코드
  4237. var sUsge = ds_root.getColumn(0, "usge");
  4238. if ( ds_paminfo.rowcount == 0 ){
  4239. sysf_messageBox ( "환자정보가", "E014" );
  4240. return;
  4241. }
  4242. //복사 화면정보(copyFlagInfo)
  4243. ds_copyflag.clearData();
  4244. ds_copyflag.addRow();
  4245. ds_copyflag.setColumn(0, "subprcp", "N"); // 사용자 설정으로 재조회 여부(품절약 등등)
  4246. ds_copyflag.setColumn(0, "instcd", sysf_getUserInfo("dutplceinstcd"));
  4247. ds_copyflag.setColumn(0, "copyinptflag", sCopyInptFlag);
  4248. ds_copyflag.setColumn(0, "pageinptflag", lf_getDsValue(ds_init, 0, "prcpinptflag"));
  4249. ds_copyflag.setColumn(0, "copykeys", sCopykeys);
  4250. ds_copyflag.setColumn(0, "copyioflag", sCopyIoFlag);
  4251. ds_copyflag.setColumn(0, "screenid", sScreenID);
  4252. ds_copyflag.setColumn(0, "usge", sUsge);
  4253. ds_copyflag.setColumn(0, "prcpgenrflag", ds_patflag.getColumn(0, "prcpgenrflag"));
  4254. ds_copyflag.setColumn(0, "prcpdd", ds_init.getColumn(0, "prcpdd")); // 처방적용일자
  4255. ds_copyflag.setColumn(0, "prcpmixno", ds_init.getColumn(0, "prcpmixno")); // mix번호
  4256. ds_copyflag.setColumn(0, "addprcp", lf_getDsValue(ds_root, 0, "addprcp"));
  4257. ds_copyflag.setColumn(0, "admininfo", lf_getDsValue(ds_root, 0, "admininfo"));
  4258. ds_copyflag.setColumn(0, "cp", ds_root.getColumn(0, "cp"));
  4259. if(ds_root.getColumn(0, "cp") == "Y") {
  4260. ds_copyflag.setColumn(0, "cpgappno", ds_temp1_getdata.getColumn(0, "cpgappno")); // cp적용번호
  4261. } else {
  4262. ds_copyflag.setColumn(0, "cpgappno", "0");
  4263. }
  4264. if(lf_getDsValue(ds_root, 0, "addprcp") == "Y") {
  4265. ds_copyflag.setColumn(0, "issdept", ds_init.getColumn(0, "issdept"));
  4266. } else {
  4267. ds_copyflag.setColumn(0, "issdept", lf_getDsValue(ds_root, 0, "issdept"));
  4268. }
  4269. ds_copyflag.setColumn(0, "anstrecno", lf_getDsValue(ds_anst, 0, "anstrecno"));
  4270. ds_copyflag.setColumn(0, "anstfromdt", lf_getDsValue(ds_anst, 0, "anstfromdt"));
  4271. ds_copyflag.setColumn(0, "ansttm", lf_getDsValue(ds_anst, 0, "ansttm"));
  4272. ds_copyflag.setColumn(0, "ansttodt", lf_getDsValue(ds_anst, 0, "ansttodt"));
  4273. ds_copyflag.setColumn(0, "opansflagcd", lf_getDsValue(ds_anst, 0, "opansflagcd"));
  4274. ds_copyflag.setColumn(0, "paramyn", lf_getDsValue(ds_anst, 0, "paramyn"));
  4275. ds_copyflag.setColumn(0, "anst_drid", lf_getDsValue(ds_anst, 0, "anst_drid"));
  4276. ds_copyflag.setColumn(0, "anst_specordflag", lf_getDsValue(ds_anst, 0, "anst_specordflag"));
  4277. //20131107 이정택(마취의 이름 추가)
  4278. ds_copyflag.setColumn(0, "anst_anstdrnm", lf_getDsValue(ds_anst, 0, "anst_anstdrnm"));
  4279. //20131107 이정택
  4280. ds_copyflag.setColumn(0, "erresn", lf_getDsValue(ds_init, 0, "erresn"));
  4281. ds_copyflag.setColumn(0, "hosinprcpresncd", lf_getDsValue(ds_init, 0, "hosinprcpresncd"));
  4282. ds_copyflag.setColumn(0, "hsctlnkno", lf_getDsValue(ds_init, 0, "hsctlnkno"));
  4283. ds_copyflag.setColumn(0, "inclprcpno", lf_getDsValue(ds_init, 0, "inclprcpno"));
  4284. ds_copyflag.setColumn(0, "prcpauthflag", lf_getDsValue(ds_init, 0, "prcpauthflag"));
  4285. ds_copyflag.setColumn(0, "prcpfromdd", lf_getDsValue(ds_init, 0, "prcpfromdd")); // 화면에 따라 해당 컬럼이 없는 곳이 있어서 defalut 처리
  4286. ds_copyflag.setColumn(0, "prcpkindcd", lf_getDsValue(ds_init, 0, "prcpkindcd"));
  4287. ds_copyflag.setColumn(0, "prcptodd", lf_getDsValue(ds_init, 0, "prcptodd")); // 화면에 따라 해당 컬럼이 없는 곳이 있어서 defalut 처리
  4288. ds_copyflag.setColumn(0, "bfprcpviewflag", ds_initsrch_envinfo.lookup("qestcd", '018', "answcnt")); // 전처방 정렬 개인별 설정
  4289. ds_copyflag.setColumn(0, "subjsubcretno", lf_getDsValue(ds_init, 0, "subjsubcretno"));
  4290. ds_copyflag.setColumn(0, "opcnfmdd", lf_getDsValue(ds_operation, 0, "opcnfmdd"));
  4291. ds_copyflag.setColumn(0, "opflagcd", lf_getDsValue(ds_operation, 0, "opflagcd"));
  4292. ds_copyflag.setColumn(0, "opfromtmcd", lf_getDsValue(ds_operation, 0, "opfromtmcd"));
  4293. ds_copyflag.setColumn(0, "oprsrvno", lf_getDsValue(ds_operation, 0, "oprsrvno"));
  4294. // 추가 처방 화면 작업 후 확인필요 (추가 처방에 있는 노드임)
  4295. if(!utlf_isNull(this.objects["ds_prcpresn"])) {
  4296. ds_copyflag.setColumn(0, "prcpdd_prcpresn", ds_prcpresn.getColumn(0, "prcpdd"));
  4297. ds_copyflag.setColumn(0, "prcptime_prcpresn", ds_prcpresn.getColumn(0, "prcptime"));
  4298. ds_copyflag.setColumn(0, "resncnt_prcpresn", ds_prcpresn.getColumn(0, "resncnt"));
  4299. }
  4300. dsf_setDefaultVal(ds_paminfo, "orddeptnm:-,orddrnm:-");
  4301. dsf_createDs(sCopyPrcpSrc); // 처방정보 복사 노드생성
  4302. dsf_createDs(sCopyFlagSrc); // 화면정보 복사 노드생성
  4303. var oParam = {};
  4304. oParam.id = "TRMMO00150";
  4305. oParam.service = "prcpmngtapp.PrcpMngt";
  4306. oParam.method = "reqGetAddPrcp";
  4307. oParam.inds = "copyFlagInfo=ds_copyflag copyRgstInfo=ds_paminfo";
  4308. oParam.outds = sCopyFlagSrc + "=flaginfo " + sCopyPrcpSrc + "=prcplist";
  4309. oParam.async = false;
  4310. tranf_submit(oParam); // 처방저장 실시간 체크(RealTimeCheck)변수 설정
  4311. var ds_copyprcp_src = this.objects[sCopyPrcpSrc];
  4312. var ds_copyflag_src = this.objects[sCopyFlagSrc];
  4313. if (ds_copyprcp_src.rowcount > 0) {
  4314. dsf_setDefaultVal(ds_copyprcp_src, "status:I,prcpvol:0,prcpvolunitnm:-,prcpqty:0,prcpqtyunitnm:-,prcptims:0,prcpdayno:0,drugmthdspccdnm:-,hosinhosoutflag:-,hosinprcpresncd:00,drugmthdspccd:-,clincstdyflag:N,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,aftcertflag:-,aftcertdrid:-,prcpvalidd:00000000,spynpy1:-,specdrid:-,anticncrdayno:0,druglnkno:0,rehbprcpcurefreqflag:0,dietprcpgenrflag:-,irpayflag:N,irflag:N,procerdietflag:N,diagtestconttestintvlflag:N,drugindependpackflag:N,diagtestconttestbasetm:0,diagtestconttestorgtims:0,ermediscmngtresncd:-,rehbprcpenddd:-,matrallsizespecid:-,rehbprcpcurepartcd:-,lowdrugresncd:N,tfdtlcd:-,dnorreqlnkno:0,subcretno:0,exptmthdfact:-,lowdrugresnetcfact:-,diagtestconttestcdspec:-,drgacptflag:-,drprcpetc1:-,drprcpetc2:-,drprcpetc3:-,drprcpetc4:-,drprcpetc5:-,drprcpetc6:-,drprcpetc7:-,drprcpetc8:-,drprcpetc9:-,drprcpetc10:-");
  4315. // 리턴 된 화면 설정값 셋팅
  4316. dsf_makeValue(ds_init, "prcpmixno", ds_copyflag_src.getColumn(0, "prcpmixno"));
  4317. dsf_makeValue(ds_init, "inclprcpno", ds_copyflag_src.getColumn(0, "inclprcpno"));
  4318. dsf_makeValue(ds_init, "hsctlnkno", ds_copyflag_src.getColumn(0, "hsctlnkno"));
  4319. if (sCopyInptFlag == "06") { // 항암프로토콜일 경우 추가되는 saveflaginfo 값 셋팅
  4320. ds_save_saveflaginfo.setColumn(0, "cpgappno", appNo_SMMMO00110 ); //CP처방 or 프로토콜처방 no
  4321. ds_save_saveflaginfo.setColumn(0, "prtlprcpstatus", prtlprcpstatus_SMMMO00110 ); //CP처방 or 프로토콜처방 저장 status
  4322. ds_save_saveflaginfo.setColumn(0, "prtlflag", "10" ); //프로토콜구분
  4323. }
  4324. var ds_dest = this.objects[strDest];
  4325. for (var i = 0; i < ds_copyprcp_src.rowcount; i++) { // Start of 복사 처방 건별 화면 복사
  4326. if ( utlf_isNull(ds_copyprcp_src.getColumn(i, "prcpcd"))) { continue; }
  4327. if(ds_dest.rowcount == 0) { nSrchRow = 0; } else { nSrchRow = ds_dest.rowcount - 1; }
  4328. if (sCopyInptFlag == "06") { // 항암프로토콜일 경우 etclnkspec 컬럼 값 셋팅
  4329. ds_copyprcp_src.setColumn(i, "etclnkspec", etclnkspecValue_SMMMO00110);
  4330. }
  4331. // 전환처방 복용 방법 설정
  4332. if ( lf_getDsValue(ds_copyprcp_src, i, "tempcol18") == "Y" ) {
  4333. if (utlf_isNull(this.objects["ds_migdrugmthdlist"])) {
  4334. dsf_createDs("ds_migdrugmthdlist", [{col:"prcpcd", type:"string", size:256},
  4335. {col:"prcpnm", type:"string", size:256},
  4336. {col:"migdrugmthdspccdnm", type:"string", size:256},
  4337. {col:"drugmthdspccd", type:"string", size:256},
  4338. {col:"drugmthdspccdnm", type:"string", size:256}]);
  4339. }
  4340. var len = ds_migdrugmthdlist.addRow();
  4341. ds_migdrugmthdlist.setColumn(len, "prcpcd", ds_copyprcp_src.getColumn(i, "prcpcd"));
  4342. ds_migdrugmthdlist.setColumn(len, "prcpnm", ds_copyprcp_src.getColumn(i, "prcpnm"));
  4343. ds_migdrugmthdlist.setColumn(len, "drugmthdspccd", ds_copyprcp_src.getColumn(i, "drugmthdspccd"));
  4344. ds_migdrugmthdlist.setColumn(len, "drugmthdspccdnm", ds_copyprcp_src.getColumn(i, "drugmthdspccdnm"));
  4345. if ( ds_copyprcp_src.getColumn(i, "rateprcpflag") == "Y" ) {
  4346. ds_migdrugmthdlist.setColumn(len, "migdrugmthdspccdnm", "[비율처방불가] 투약량이 다른 처방을 분리해서 처방하셔야 합니다.\n\n" + ds_copyprcp_src.getColumn(i, "exptmthdfact" ) + ".");
  4347. ds_copyprcp_src.setColumn(i, "rateprcpflag", "N" )
  4348. ds_copyprcp_src.setColumn(i, "drugrateqty", "-" )
  4349. } else {
  4350. ds_migdrugmthdlist.setColumn(len, "migdrugmthdspccdnm", ds_copyprcp_src.getColumn(i, "exptmthdfact" ));
  4351. }
  4352. ds_copyprcp_src.setColumn(i, "exptmthdfact", "-" );
  4353. }
  4354. //20090122 마정민수정: 변경요청번호 670. 단순 방사선 예약 자동 팝업요청
  4355. //20090709 CHC, 단순방사선예약자동팝업 병원별 적용
  4356. var raypopwndcheckyn = ds_initsrch_raypopwndcheckyn.getColumn(0, "trgtcd");
  4357. if ( ds_patflag.getColumn(0, "prcpgenrflag") == "O" && ds_copyprcp_src.getColumn(i, "tempcol2").length > 2 && ds_copyprcp_src.getColumn(i, "tempcol2").substring( 0, 2 ) == "18" && sUsge == "prcp" ) {
  4358. var msgTitle = "[영상]" + "[" + ds_copyprcp_src.getColumn(i, "prcpcd") + ":" + ds_copyprcp_src.getColumn(i, "prcpnm") + "]";
  4359. if (raypopwndcheckyn != "Y") {
  4360. if (!confirm( "단순 방사선 검사를 당일 시행 하시겠습니까? [예:당일,아니요:예약]", msgTitle)){
  4361. ds_copyprcp_src.setColumn(i, "prcphopedd","99991231" );
  4362. }
  4363. }
  4364. }
  4365. sErrFlag = lf_getDsValue(ds_copyprcp_src, i, "errflag"); // ------------------------------------------------------------------
  4366. sErrMsg = lf_getDsValue(ds_copyprcp_src, i, "errmsg"); // 서버체크시 오류가 있을 때만 존재하는 컬럼이라 default 처리함
  4367. sErrCode = lf_getDsValue(ds_copyprcp_src, i, "errcode"); // ------------------------------------------------------------------
  4368. if(sErrFlag == "E") { // 서버체크시 오류가 있으면 메세지 처리
  4369. if(!utlf_isNull(sErrMsg)) sysf_messageBox(sErrMsg, sErrCode);
  4370. continue;
  4371. } else if(sErrFlag == "D") { // 사용자 결정
  4372. if(sErrCode == "D001") { // 품절약
  4373. lf_altDrug ( i, "1", sCopyPrcpSrc, sCopyInptFlag );
  4374. } else if(sErrCode == "D002") { // 산제불가
  4375. lf_altDrug ( i, "4", sCopyPrcpSrc, sCopyInptFlag );
  4376. if ( frmf_getParameter ( "SPMMB10100_chkyn" ) == "Y" ) { //대체약을 선택했다면 복사시키지 않는다.
  4377. frmf_clearParameter ( "SPMMB10100_chkyn" );
  4378. } else {
  4379. ds_dest.insertRow(nSrchRow);
  4380. ds_dest.copyRow(nSrchRow, ds_copyprcp_src, i);
  4381. addPrcpPop_App(nSrchRow, sUsge);
  4382. }
  4383. } else if(sErrCode == "D003") { // 산제주의
  4384. lf_altDrug ( i, "5", sCopyPrcpSrc, sCopyInptFlag );
  4385. if ( frmf_getParameter ( "SPMMB10100_chkyn" ) == "Y" ) { //대체약을 선택했다면 복사시키지 않는다.
  4386. frmf_clearParameter ( "SPMMB10100_chkyn" );
  4387. } else {
  4388. ds_dest.insertRow(nSrchRow);
  4389. ds_dest.copyRow(nSrchRow, ds_copyprcp_src, i);
  4390. addPrcpPop_App(nSrchRow, sUsge);
  4391. }
  4392. } else if(sErrCode == "D004") { // 투석원내처방사유처리
  4393. if("19" != ds_init.getColumn(0, "hosinprcpresncd")) {
  4394. var message = "원내지정이 가능한 처방입니다. 전체 약제를 원내로 하시려면 [예], 해당약제만 원내처방하시려면 [아니오]를 선택해주십시오.";
  4395. if (sysf_messageBox ( message, "Q" ) == "6" ) {
  4396. ds_init.setColumn(0, "hosinprcpresncd", "19");
  4397. }
  4398. }
  4399. ds_dest.insertRow(nSrchRow);
  4400. ds_dest.copyRow(nSrchRow, ds_copyprcp_src, i);
  4401. addPrcpPop_App(nSrchRow, sUsge);
  4402. } else if (sErrCode == "D006"){ // 대채처방체크 altcdinfo = X
  4403. lf_altPrcpCd ( i, "1", sCopyPrcpSrc, sCopyInptFlag );
  4404. } else if(sErrCode == "D007"){ // 수술예방적 항생제 CHECK SON0926 START 사유입력 대상자일 경우
  4405. if (sysf_messageBox ( sErrMsg, "Q999" ) == "7") {
  4406. frmf_setParameter ("SPMMO016000_resnflag" , "O" );
  4407. var mon = sysf_getCurrentMonitorNumber();
  4408. var xpt = this.getOwnerFrame().position.x + 500;
  4409. var ypt = this.getOwnerFrame().position.y + 400;
  4410. frmf_modal("SPMMO16000", "SPMMO16000", null, false, mon, xpt, ypt, null, null, null, null, null, "P"); //사유입력창
  4411. var resncnts = frmf_getParameter ("SPMMO016000_resncnts" );
  4412. ds_copyprcp_src.setColumn(i, "tempcol19" ,resncnts );
  4413. ds_dest.insertRow(nSrchRow);
  4414. ds_dest.copyRow(nSrchRow, ds_copyprcp_src, i);
  4415. addPrcpPop_App(nSrchRow, sUsge);
  4416. } else {
  4417. continue;
  4418. }
  4419. }
  4420. } else { // 오류가 없으면 화면으로 복사 처리
  4421. if(sErrFlag == "I" && !utlf_isNull(sErrMsg)) { // 서버체크시 정보가 있으면 메세지 처리
  4422. sysf_messageBox(sErrMsg, sErrCode);
  4423. }
  4424. ds_dest.insertRow(nSrchRow);
  4425. ds_dest.copyRow(nSrchRow, ds_copyprcp_src, i);
  4426. addPrcpPop_App(nSrchRow, sUsge); // 화면에서 체크해야 할 항목 체크
  4427. }
  4428. } // End of 복사 처방 건별 화면 복사
  4429. // 투석원내처방사유처리
  4430. if ( ds_init.getColumn(0, "hosinprcpresncd") != ds_copyflag_src.getColumn(0, "hosinprcpresncd") ) {
  4431. lf_chngHosinPrcpResn();
  4432. }
  4433. //JJE CP,항암프로토콜일 경우 root/init/prcpdd 를 해당 미래일자로 변경... (2008.09.11)
  4434. // refresh() 만 하는 경우라 XP에서는 의미 없다, 확인필요
  4435. // if (sCopyInptFlag == "05" || sCopyInptFlag == "06") {
  4436. // if ( ds_initmodel.getValue( "/root/init/prcpdd") != model.getValue(sCopyFlagSrc + "/prcpdd") ) {
  4437. // cmb_prcpdd.refresh();
  4438. // }
  4439. // }
  4440. }
  4441. dsf_deleteDs(sCopyPrcpSrc); // 처방정보, 화면정보 복사 노드삭제
  4442. dsf_deleteDs(sCopyFlagSrc);
  4443. }
  4444. /**
  4445. * @desc : check 된 Source Node의 값을 목적지에 Append Node 한다.(처방검색)
  4446. * @param : objFlag - child or else
  4447. : strSrc - 출발지 Node
  4448. : strDest - 목적지 Node
  4449. : multiFlag - 복수 add 여부
  4450. : checkNM - check로 사용할 instance명
  4451. : checkFlag - check시 Value
  4452. : grdObj - 더블클릭시 값을 넘기는 그리드 명
  4453. : prcpNmClearFlag - 검색 row에 검색명 클리어암㈉?
  4454. : prcpInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술, 05 CP, 06 항암 M0034
  4455. : ex) addPrcp ( "child", "/root/prcpsrch/prcplist", "/root/main/prcp", "N", "status", "I", grd_prcpsrchlist, "N");
  4456. * @return : void
  4457. * @authur : 마정민 2007. 3. 12
  4458. * 변환 OK
  4459. * @---------------------------------------------------
  4460. */
  4461. function lf_addPrcp_Web ( objFlag, strSrc, strDest, multiFlag, checkNM, checkFlag, grdObj, prcpNmClearFlag, prcpInptFlag ) {
  4462. var startStepDate = new Date(); // 각 업부 시작 시간
  4463. var endStepDate = null; // 각 업부 종료후 시간
  4464. var step1Elapsed = null; // 코드별 체크 전 소요시간
  4465. var step2Elapsed = null; // 코드별 체크 소요시간
  4466. var step3Elapsed = null; // 코드별 체크 후 소요시간
  4467. var nCopyCnt = 0; // 복사 갯수
  4468. //model.addLog("***************** Start Of addPrcp()");
  4469. var oTrgtObj = lf_getFormObject(objFlag);
  4470. oTrgtObj.ds_drugcalc.setColumn(0, "prcpvol", "");
  4471. oTrgtObj.ds_drugcalc.setColumn(0, "prcpqty", "");
  4472. oTrgtObj.ds_drugcalc.setColumn(0, "prcptims", "");
  4473. oTrgtObj.ds_drugcalc.setColumn(0, "drprcpetc7", "");
  4474. oTrgtObj.ds_drugcalc.setColumn(0, "drprcpetc8", "");
  4475. //목적지를 변수로 받고 싶었으나 iviewer에서 문제가 있어 목적지는 프레그를 구분자로 박아 넣음.
  4476. var srchRow = 0;
  4477. var ds_src = this.objects[strSrc];
  4478. //검색Row 찾기
  4479. var ds_dest = oTrgtObj.objects[strDest];
  4480. for (var i = ds_dest.rowcount - 1; i >= 0; i--){
  4481. if(ds_dest.getColumn(i, "status") == "S") {
  4482. srchRow = i;
  4483. break;
  4484. }
  4485. }
  4486. // 처방 코드정보를 가져온다. (선택진료 자동체크 및 선택진료의사 등의 데이터를 가져오기 위해) 2011.10.13 엄영만
  4487. var sPrcpCodes = ""; // 처방코드 정보를 가져오기 위한 처방 코드 셋팅
  4488. if ( multiFlag == "Y" ){
  4489. for( var i = 0; i < ds_src.rowcount; i++ ) {
  4490. if ( ds_src.getColumn(i, checkNM) == checkFlag ) {
  4491. if(utlf_isNull(sPrcpCodes)){
  4492. sPrcpCodes = "'" + ds_src.getColumn(i, "prcpcd") + "'";
  4493. } else {
  4494. sPrcpCodes = sPrcpCodes + ",'" + ds_src.getColumn(i, "prcpcd") + "'";
  4495. }
  4496. nCopyCnt++;
  4497. }
  4498. }
  4499. } else {
  4500. sPrcpCodes = "'" + ds_src.getColumn(ds_src.rowposition, "prcpcd") + "'" ;
  4501. nCopyCnt = 1;
  4502. }
  4503. if(!utlf_isNull(sPrcpCodes)){ // 조회할 코드가 있을경우에만 실행하도록 수정함.
  4504. oTrgtObj.lf_getPrcpCodeInfo(sPrcpCodes);
  4505. }
  4506. // 처리 속도 향상을 위해 잠시 데이타셋 이벤트 끔
  4507. // -----------------------------------------------------------------------------------------
  4508. lf_setDatasetEvent(ds_src, ds_dest, false);
  4509. endStepDate = new Date(); // 각 업부 종료후 시간
  4510. step1Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 전 소요시간
  4511. startStepDate = new Date(); // 각 업부 시작 시간
  4512. var cnt = 0;
  4513. if ( multiFlag == "Y" ){
  4514. //약속처방일 경우 MIX 가 있으면 번호를 새로 만들어줌
  4515. if ( prcpInptFlag == "02") { //약속처방이고
  4516. for( var i = 0; i < ds_src.rowcount; i++ ) {
  4517. if ( ds_src.getColumn(i, checkNM) == checkFlag ) {
  4518. var prcpmixno = ds_src.getColumn(i, "prcpmixno" );
  4519. if ( !utlf_isNull(prcpmixno) && prcpmixno != "-" && prcpmixno != "0" ) { //믹스번호가 있다면
  4520. if ( ds_src.getColumn(i, "tempcol8") == "-" ) { //새로 번호 딴것은 체크 하지 않는다.
  4521. ds_src.setColumn(i, "tempcol8", "");
  4522. } else {
  4523. var mixcnt = 0;
  4524. //믹스번호를 하나 증가시켜서 같은 믹스번호가 있는것은 적용한다.
  4525. var newprcpmixno = eval(opener.ds_init.getColumn(0, "prcpmixno")) + 1;
  4526. for( var j = 0; j < ds_src.rowcount; j++ ) {
  4527. if ( ds_src.getColumn(j, checkNM) == checkFlag ) {
  4528. if ( i != j ) {
  4529. if ( prcpmixno == ds_src.getColumn(j, "prcpmixno" )) {
  4530. ds_src.setColumn(j, "prcpmixno", newprcpmixno );
  4531. ds_src.setColumn(j, "tempcol8", "-" );
  4532. mixcnt++;
  4533. }
  4534. }
  4535. }
  4536. }
  4537. if ( mixcnt == 0 ) { // 같이 적용된것이 하나도 없다면 믹스번호 초기화
  4538. ds_src.setColumn(i, "prcpmixno", "-" );
  4539. } else { // 값이 있으면 본인것도 증가시켜주고, 믹스번호 init 값도 증가시켜준다.
  4540. ds_src.setColumn(i, "prcpmixno", newprcpmixno );
  4541. oTrgtObj.ds_init.setColumn(0, "prcpmixno", newprcpmixno);
  4542. }
  4543. }
  4544. }
  4545. }
  4546. }
  4547. } //약속처방 mix no 체크끝
  4548. for( var i = 0; i < ds_src.rowcount; i++ ) {
  4549. //전처방, 약속처방에서 처방복사 버튼 클릭시...구코드이고 유효하지 않은 코드 일경우 불가처리 조과장님 지시. BY SONJY 2008-09-04
  4550. //전처방, 약속처방에서 처방복사 버튼 클릭시 식사처방 복사 불가처리 by sonjy 2008-09-06
  4551. //20090409 마정민 수정. 성가병원 구코드 복사 기능 요청
  4552. /*if( model.getValue( strSrc + "[" + i + "]/prcpcd").substring( 0, 1 ) == "*" ||
  4553. model.getValue( strSrc + "[" + i + "]/prcpcd").substring( 0, 1 ) == "_" ||
  4554. model.getValue( strSrc + "[" + i + "]/prcpclscd") == "03" ) {
  4555. if ( objFlag == "child" ) {
  4556. addprcpchk = opener.model.getValue ( "/root/addprcp" );
  4557. } else {
  4558. addprcpchk = model.getValue ( "/root/addprcp" );
  4559. }
  4560. if ( addprcpchk != "Y" ){
  4561. continue ;
  4562. }
  4563. }*/
  4564. if ( ds_src.getColumn(i, "prcpclscd") == "03" ) {
  4565. addprcpchk = oTrgtObj.ds_root.getColumn(0, "addprcp");
  4566. if ( addprcpchk != "Y" ){
  4567. continue ;
  4568. }
  4569. }
  4570. if ( ds_src.getColumn(i, checkNM) == checkFlag ) {
  4571. srchRow = lf_addPrcpDetl ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag );
  4572. if ( srchRow == 0) {
  4573. cnt++;
  4574. //검색줄 다시검색
  4575. var ds_dest = oTrgtObj.objects[strDest];
  4576. for (var j = ds_dest.rowcount - 1; j >= 0; j--){
  4577. if(ds_dest.getColumn(j, "status") == "S") {
  4578. srchRow = j;
  4579. break;
  4580. }
  4581. }
  4582. } else {
  4583. //처방복사에 문제가 없다면 하드코드 set 처방 Chk
  4584. //srchRow = fAddSetPrcpChk ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag );
  4585. srchrownum = lf_addSetPrcpChkKNUH ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag );
  4586. if (srchrownum != srchRow) {
  4587. srchRow = srchrownum;
  4588. oTrgtObj.DrugCalc ( "drprcpetc8" , parseInt(srchRow) -1 );
  4589. }
  4590. }
  4591. //if ( objFlag == "child" ) {
  4592. // opener.grd_prcplist.refresh();
  4593. //} else {
  4594. // grd_prcplist.refresh();
  4595. //}
  4596. }
  4597. }
  4598. } else { //더블클릭으로 넘길때
  4599. //전처방, 약속처방에서 더블 클릭시...구코드이고 유효하지 않은 코드 일경우 불가처리 조과장님 지시. BY SONJY 2008-09-04
  4600. //전처방, 약속처방에서 처방복사 버튼 클릭시 식사처방 복사 불가처리 by sonjy 2008-09-06
  4601. //20090409 마정민 수정. 성가병원 구코드 복사 기능 요청
  4602. /*if( model.getValue( strSrc + "[" + grdObj.row + "]/prcpcd").substring( 0, 1 ) == "*" ||
  4603. model.getValue( strSrc + "[" + grdObj.row + "]/prcpcd").substring( 0, 1 ) == "_" ||
  4604. model.getValue( strSrc + "[" + grdObj.row + "]/prcpclscd") == "03" ) {
  4605. if ( objFlag == "child" ) {
  4606. addprcpchk = opener.model.getValue ( "/root/addprcp" );
  4607. } else {
  4608. addprcpchk = model.getValue ( "/root/addprcp" );
  4609. }
  4610. if ( addprcpchk != "Y" ){
  4611. //20090407 마정민 수정. 성가병원 기능 요청
  4612. //return ;
  4613. }
  4614. }*/
  4615. if( ds_src.getColumn(ds_src.rowposition, "prcpclscd") == "03" ) {
  4616. addprcpchk = oTrgtObj.ds_root.getColumn(0, "addprcp");
  4617. if ( addprcpchk != "Y" ){
  4618. // 처리 속도 향상을 위해 꺼뒀던 데이타셋 이벤트 다시 켜두고 종료
  4619. // -----------------------------------------------------------------------------------------
  4620. lf_setDatasetEvent(ds_src, ds_dest, true);
  4621. return ;
  4622. }
  4623. }
  4624. //mix no 초기화
  4625. ds_src.setColumn(ds_src.rowposition, "prcpmixno", "-" );
  4626. srchRow = lf_addPrcpDetl ( objFlag , strSrc , strDest , grdObj.rowposition , srchRow, prcpInptFlag );
  4627. if ( srchRow == 0) {
  4628. cnt++;
  4629. } else {
  4630. //처방복사에 문제가 없다면 하드코드 set 처방 Chk
  4631. //srchRow = fAddSetPrcpChk( objFlag , strSrc , strDest , grdObj.row , srchRow, prcpInptFlag );
  4632. var srchrownum = lf_addSetPrcpChkKNUH( objFlag , strSrc , strDest , grdObj.rowposition , srchRow, prcpInptFlag );
  4633. if (srchrownum != srchRow) {
  4634. srchRow = srchrownum;
  4635. oTrgtObj.DrugCalc ( "drprcpetc8" , parseInt(srchRow) -1 );
  4636. }
  4637. }
  4638. }
  4639. endStepDate = new Date(); // 각 업부 종료후 시간
  4640. step2Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 소요시간
  4641. startStepDate = new Date(); // 각 업부 시작 시간
  4642. // 처리 속도 향상을 위해 꺼뒀던 데이타셋 이벤트 다시 켬
  4643. // -----------------------------------------------------------------------------------------
  4644. lf_setDatasetEvent(ds_src, ds_dest, true);
  4645. lf_hosinPrcpResnChk (objFlag, ds_dest);
  4646. if ( cnt == 0 ) { // 한번도 에러가 없을 때만 메인으로 포커스가 간다.
  4647. lf_focusMain ( srchRow, objFlag, prcpNmClearFlag );
  4648. } else {
  4649. var modiflag = ds_init_rowmodify.getColumn(0, "modiflag");
  4650. // 다른 처방 연계 화면 작업 후 rebuild(), recalculate() 동작 확인필요
  4651. // if ( objFlag == "child" ) {
  4652. // if ( modiflag != "Y" ){ // 처방 코드에서 수정 모드가 아닐때만 refresh - 20090630 by Moonsh
  4653. // opener.grd_prcplist.rebuild();
  4654. // opener.model.recalculate();
  4655. // opener.grd_prcplist.refresh();
  4656. // }
  4657. // // opener.model.setfocus( "grd_prcplist" );
  4658. // // if ( srchRow != 0 ) {
  4659. // // opener.grd_prcplist.row = srchRow;
  4660. // // }
  4661. // } else {
  4662. // if ( modiflag != "Y" ){ // 처방 코드에서 수정 모드가 아닐때만 refresh - 20090630 by Moonsh
  4663. // grd_prcplist.rebuild();
  4664. // model.recalculate();
  4665. // grd_prcplist.refresh();
  4666. // }
  4667. // // model.setfocus( "grd_prcplist" );
  4668. // // if ( srchRow != 0 ) {
  4669. // // grd_prcplist.row = srchRow;
  4670. // // }
  4671. // }
  4672. }
  4673. //KNUH, 약속처방 복사 시 치식 팝업이 한번만 뜨고 다른 치과처방에 동일하게 적용되도록 함. 처방복사가 완료되면 임시 instance는 제거함. (2011.03.28 JJE)
  4674. oTrgtObj.dsf_deleteDs("ds_main_toot_prcp");
  4675. // 20080925 항생제 추가 시는 그리드 editting을 위해 색 변경 로직 생략 by MoonSH
  4676. // 그리드에 expr로 되어 있음
  4677. //var cdssFlag = frmf_getParameter( "SPMMD01600_flag");
  4678. frmf_clearParameter( "SPMMD01600_flag", "");
  4679. // if (cdssFlag != "Y") {
  4680. // fPrcpColor(objFlag);
  4681. // }
  4682. if ( objFlag != "child") {
  4683. //JJE-
  4684. if( ds_root.getColumn(0, "cp" ) == "Y" ){
  4685. if (prtlprcpstatus_SMMMO00110 != "U" ) {
  4686. div_all.div_srch.visible = false;
  4687. }
  4688. }else{
  4689. div_all.div_srch.visible = false;
  4690. }
  4691. //-JJE
  4692. }
  4693. //model.addLog("***************** End Of addPrcp()");
  4694. endStepDate = new Date(); // 각 업부 종료후 시간
  4695. step3Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 소요시간
  4696. // 속도체크 모니터링 로그 추가 2013.06.27 엄영만
  4697. oTrgtObj.reqSetMonitoringLog("PrcpCopy", "WEB", oTrgtObj.frmf_getScreenID(), objFlag, prcpInptFlag, multiFlag, prcpNmClearFlag, nCopyCnt, step1Elapsed+step2Elapsed+step3Elapsed, step1Elapsed, step2Elapsed, step3Elapsed);
  4698. }
  4699. /***************************************************************************************************
  4700. * Function : lf_addPrcpDetl
  4701. * Description : 검색된 내용중 내릴 처방을 선택하여 전송한다.( double click )
  4702. * Argument : objFlag - child or else
  4703. * : strSrc - source node
  4704. * : strDest - 목적지 node; child일때는 opener.root.main.prcp, 아니면 "/root/main/prcp" 이다
  4705. * : sendRow - 검색된 내용중 메인으로 보내고자 하는 row
  4706. * : srchRow - 메인에 들어간 자리. 검색로우(srchRow) 바로 전이다.
  4707. * : prcpInptFlag - - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  4708. * : groupSrc - 옵션: group처방 검색할 경우 node
  4709. * : direcSrc - 옵션: group 지시처방 검색할 경우 node
  4710. * : prcpInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  4711. * return type : srchRow 에러시 0
  4712. * Creator :
  4713. * 변환OK
  4714. ***************************************************************************************************/
  4715. function lf_addPrcpDetl(objFlag, strSrc, strDest, sendRow, srchRow, prcpInptFlag, grupSrc, direcSrc)
  4716. {
  4717. var oTrgtObj = lf_getFormObject(objFlag);
  4718. //20091013 by sonjy 성빈센트병원 요청 => mig data 전처방 copy시 신코드일 경우 reset여부
  4719. var bfprcpsrchyn = oTrgtObj.ds_initsrch_bfprcpsrchyn.getColumn(0, "trgtcd");
  4720. //20091104 by sonjy 성빈센트 전환 데이터 관련 => mig data 전처방 copy시 약/주사 용량 오류 보정
  4721. var migyn = "";
  4722. var colHidnValue = lf_grdBaseColHidn("D");
  4723. /***************************** 전처방 구수가코드 검색시 신코드로 변환검색 ****************************************/
  4724. var oldprcpflag = "";
  4725. var ds_src = this.objects[strSrc];
  4726. if ( prcpInptFlag == "01" ) { //전처방이고
  4727. var tempcol9 = ds_src.getColumn(sendRow, "tempcol9");
  4728. var tempcol18 = ds_src.getColumn(sendRow, "tempcol18");
  4729. if ( tempcol9 == "N" ) {
  4730. return 0;
  4731. } else {
  4732. var bfprcpcd = ds_src.getColumn(sendRow, "prcpcd" );
  4733. //20091104 by sonjy 성빈센트 전환 데이터 관련 => mig data 전처방 copy시 약/주사 용량 오류 보정
  4734. migyn = ds_src.getColumn(sendRow, "tempcol20" );
  4735. /**
  4736. * 20091013 by sonjy 성빈센트병원 요청 => mig data 전처방 copy시 신코드일 경우 reset
  4737. * 단, 지시처방일 경우는 검색 불필요하므로 제외
  4738. */
  4739. if ( bfprcpcd.substring( 0, 1 ) == "_" || bfprcpcd.substring( 0, 1 ) == "=" ||
  4740. ( bfprcpsrchyn == "Y" && migyn == "Y" && ds_src.getColumn(sendRow, "prcpclscd" ) != "09") ) { //구수가코드이면 신코드로 다시 검색한다. by sonjy20091013
  4741. //20090407 마정민수정. tempcol9로 구분되기 때문에 색깔비교 주석처리.
  4742. //if ( ds_src.getColumn(sendRow, "tempcol10" ) != "#ccffcc" ) { //매핑값이 있으면(색깔은 mgr단에서 박는다)
  4743. var bfprcpvol = ds_src.getColumn(sendRow, "prcpvol" );
  4744. var bfprcpqty = ds_src.getColumn(sendRow, "prcpqty" );
  4745. var bfprcptims = ds_src.getColumn(sendRow, "prcptims" );
  4746. var bfprcpdayno = ds_src.getColumn(sendRow, "prcpdayno" );
  4747. var bfprcpdelivefact = ds_src.getColumn(sendRow, "prcpdelivefact" );
  4748. var bfpowdflag = ds_src.getColumn(sendRow, "powdflag" );
  4749. var bfprnprcpflag = ds_src.getColumn(sendRow, "prnprcpflag" );
  4750. var bfprepprcpflag = ds_src.getColumn(sendRow, "prepprcpflag" );
  4751. var bfselfprcpflag = ds_src.getColumn(sendRow, "selfprcpflag" );
  4752. var bfselfdrugflag = ds_src.getColumn(sendRow, "selfdrugflag" );
  4753. var bfdrugpackflag = ds_src.getColumn(sendRow, "drugpackflag" );
  4754. var bferprcpflag = ds_src.getColumn(sendRow, "erprcpflag" );
  4755. var bfprecureprcpflag = ds_src.getColumn(sendRow, "precureprcpflag" );
  4756. var bfnigtprcpflag = ds_src.getColumn(sendRow, "nigtprcpflag" );
  4757. var bfportprcpflag = ds_src.getColumn(sendRow, "portprcpflag" );
  4758. var bffixprcpflag = ds_src.getColumn(sendRow, "fixprcpflag" );
  4759. var bfanamneflag = ds_src.getColumn(sendRow, "anamneflag" );
  4760. var bferreadflag = ds_src.getColumn(sendRow, "erreadflag" );
  4761. var bfstemcellflag = ds_src.getColumn(sendRow, "stemcellflag" );
  4762. var bfprcpexecdeptcd = ds_src.getColumn(sendRow, "prcpexecdeptcd" );
  4763. var bfDrprcpetc7 = ds_src.getColumn(sendRow, "drprcpetc7"); //1회용량
  4764. var bfDrprcpetc8 = ds_src.getColumn(sendRow, "drprcpetc8"); //1회수량
  4765. var bfDrugmastspec = ds_src.getColumn(sendRow, "drugmastspec");
  4766. var bfpayflagcd = ds_src.getColumn(sendRow, "payflagcd"); // 2011.03.03 마이그된 처방 전처방 복사시 급여도 복사하도록 수정
  4767. //20091013 by sonjy 성빈센트병원 요청 => mig data 전처방 copy시 신코드일 경우 reset여부
  4768. if(bfprcpcd.substring( 0, 1 ) == "_" || bfprcpcd.substring( 0, 1 ) == "=" ) {
  4769. fPrcpSrchCom ( bfprcpcd.substring( 1, bfprcpcd.length ), oTrgtObj.ds_init.getColumn(0, "prcpdd" ), oTrgtObj.ds_paminfo.getColumn(0, "insukind"), "TRMMO02101", "", false, "getOldPrcpCdChngInfo", "E" );
  4770. } else {
  4771. fPrcpSrchCom ( bfprcpcd, oTrgtObj.ds_init.getColumn(0, "prcpdd"), ds_paminfo.getColumn(0, "insukind"), "TRMMO02101", "", false, "getPrcpCdSrchInfo", "E" , false);
  4772. }
  4773. strSrc = "ds_oldprcpchngsrch_prcplist";
  4774. ds_src = this.objects[strSrc];
  4775. sendRow = 0;
  4776. if ( utlf_isNull(ds_src.getColumn(sendRow, "prcpcd"))){
  4777. return 0;
  4778. } else {
  4779. oldprcpflag = "Y";
  4780. var prcpclscd = ds_src.getColumn(sendRow, "prcpclscd");
  4781. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ){
  4782. if ( prcpclscd == "A2" ) {
  4783. if ( ds_src.getColumn(sendRow, "prcptims") != bfprcptims ) {
  4784. ds_src.setColumn(sendRow, "prcptims", bfprcptims);
  4785. fBaseMthd("oldprcp");
  4786. }
  4787. } else {
  4788. ds_src.setColumn(sendRow, "prcptims", bfprcptims);
  4789. }
  4790. var chkPrcpVol = ds_src.getColumn(sendRow, "prcpvol");
  4791. if( bfprcpsrchyn == "Y" && migyn == "Y" && parseInt(chkPrcpVol) < 1 ){
  4792. ds_src.setColumn(sendRow, "prcpvol", 0 );
  4793. ds_src.setColumn(sendRow, "prcpqty", 0 );
  4794. ds_src.setColumn(sendRow, "prcpdayno", 0 );
  4795. } else {
  4796. ds_src.setColumn(sendRow, "prcpvol", bfprcpvol );
  4797. ds_src.setColumn(sendRow, "prcpqty", bfprcpqty );
  4798. ds_src.setColumn(sendRow, "prcpdayno", bfprcpdayno );
  4799. }
  4800. //ds_src.setColumn(sendRow, "drugmthdspccdnm", "-" );
  4801. //ds_src.setColumn(sendRow, "drugmthdspccd", "-" );
  4802. //20091104 by sonjy 성빈센트 전환 데이터 관련 => mig data 전처방 copy시 약/주사 용량 오류 보정
  4803. if( bfprcpsrchyn == "Y" && migyn == "Y" ){
  4804. var sdrugmastspec = ds_src.getColumn(sendRow, "drugmastspec");
  4805. var orgprcpvol = lf_getArrayData ( sdrugmastspec + "^", 0, 1 , "^", "|" ); //drugcntsvol 함량기준용량 -> 경북대는 일기준 용량으로 비교
  4806. var orgDrprcpetc7 = ds_src.getColumn(sendRow, "drprcpetc7"); //1회용량
  4807. var orgDrprcpetc8 = ds_src.getColumn(sendRow, "drprcpetc8"); //1회수량
  4808. var orgCalcRate = 0;
  4809. //회기준에서는 수가계산구분이 1이면 횟수도 곱 (2011.01.02 전지은)
  4810. if(!utlf_isNull(bfDrprcpetc7) && !utlf_isNull(bfDrprcpetc8) && (colHidnValue == "C" || colHidnValue == "G" || colHidnValue == "H") ){
  4811. orgCalcRate = (orgDrprcpetc8 * bfDrprcpetc8) * 1000;
  4812. orgCalcRate = Math.round(orgCalcRate);
  4813. orgCalcRate = orgCalcRate / 1000;
  4814. var calcmthdcd = lf_getArrayData ( bfDrugmastspec + "^", 0, 26, "^", "|" );
  4815. if( calcmthdcd == "1" ){
  4816. var volRate = orgDrprcpetc7 / bfDrprcpetc7 * 1000;
  4817. var qtyRate = orgDrprcpetc8 / bfDrprcpetc8 * 1000;
  4818. volRate = Math.round(volRate);
  4819. qtyRate = Math.round(qtyRate);
  4820. volRate = volRate / 1000;
  4821. qtyRate = qtyRate / 1000;
  4822. if ( volRate != qtyRate //회 기준 용량 이상 시
  4823. || Math.round ( orgDrprcpetc7 * Math.round ( orgDrprcpetc8 / bfDrprcpetc8 ) * bfprcptims * 1000 ) != bfprcpvol * 1000 ){ //1회 용량이 잘못 들어왔을 수 있음(mig) 일 기준 용량 이상 시
  4824. if( eval(bfDrprcpetc7) < 1 ){
  4825. ds_src.setColumn(sendRow, "prcpvol", "0") ; //1회용량*횟수
  4826. ds_src.setColumn(sendRow, "drprcpetc7", "0") ; //1회용량*횟수
  4827. ds_src.setColumn(sendRow, "drprcpetc8", "0") ;
  4828. ds_src.setColumn(sendRow, "tempcol22", "0") ;
  4829. } else {
  4830. ds_src.setColumn(sendRow, "prcpvol", orgDrprcpetc7 * bfprcptims) ; //1회용량*횟수
  4831. ds_src.setColumn(sendRow, "drprcpetc7", orgDrprcpetc7 * orgCalcRate ) ; //1회용량*횟수
  4832. ds_src.setColumn(sendRow, "drprcpetc8", bfDrprcpetc8 ) ;
  4833. ds_src.setColumn(sendRow, "tempcol22", bfprcpvol) ;
  4834. }
  4835. }
  4836. }else{
  4837. if( eval(bfDrprcpetc7) < 1 ){
  4838. ds_src.setColumn(sendRow, "prcpvol", "0" ) ; //1회용량
  4839. ds_src.setColumn(sendRow, "drprcpetc7", "0") ; //1회용량*횟수
  4840. ds_src.setColumn(sendRow, "drprcpetc8", "0") ;
  4841. ds_src.setColumn(sendRow, "tempcol22", "0") ;
  4842. } else {
  4843. ds_src.setColumn(sendRow, "prcpvol", bfDrprcpetc7 ) ; //1회용량
  4844. ds_src.setColumn(sendRow, "drprcpetc7", bfDrprcpetc7 ) ; //1회용량*횟수
  4845. ds_src.setColumn(sendRow, "drprcpetc8", bfDrprcpetc8 ) ;
  4846. ds_src.setColumn(sendRow, "tempcol22", bfprcpvol) ;
  4847. }
  4848. }
  4849. } else{//회기준 보정 끝 원래
  4850. if ( !utlf_isNull(orgprcpvol) && Math.round ( orgprcpvol * bfprcpqty * 1000 ) != bfprcpvol * 1000 ){
  4851. ds_src.setColumn(sendRow, "prcpvol", bfprcpqty * orgprcpvol) ;
  4852. ds_src.setColumn(sendRow, "tempcol22", bfprcpvol) ;
  4853. }
  4854. }
  4855. }
  4856. }
  4857. ds_src.setColumn(sendRow, "prcpdelivefact", bfprcpdelivefact );
  4858. ds_src.setColumn(sendRow, "powdflag", bfpowdflag );
  4859. ds_src.setColumn(sendRow, "prnprcpflag", bfprnprcpflag );
  4860. ds_src.setColumn(sendRow, "prepprcpflag", bfprepprcpflag );
  4861. ds_src.setColumn(sendRow, "selfprcpflag", bfselfprcpflag );
  4862. ds_src.setColumn(sendRow, "selfdrugflag", bfselfdrugflag );
  4863. ds_src.setColumn(sendRow, "drugpackflag", bfdrugpackflag );
  4864. ds_src.setColumn(sendRow, "erprcpflag", bferprcpflag );
  4865. ds_src.setColumn(sendRow, "precureprcpflag", bfprecureprcpflag );
  4866. ds_src.setColumn(sendRow, "nigtprcpflag", bfnigtprcpflag );
  4867. ds_src.setColumn(sendRow, "portprcpflag", bfportprcpflag );
  4868. ds_src.setColumn(sendRow, "fixprcpflag", bffixprcpflag );
  4869. ds_src.setColumn(sendRow, "anamneflag", bfanamneflag );
  4870. ds_src.setColumn(sendRow, "erreadflag", bferreadflag );
  4871. ds_src.setColumn(sendRow, "payflagcd", bfpayflagcd ); // 2011.03.03 마이그된 처방 전처방 복사시 급여도 복사하도록 수정
  4872. }
  4873. }
  4874. }
  4875. //20080917 마정민수정: PRN실처방은 전처방에서 복사되면 안된다.
  4876. if ( ds_src.getColumn(sendRow, "prcpinptflag" ) == "19" ) {
  4877. sysf_messageBox ( "[" + ds_src.getColumn(sendRow, "prcpnm" ) + "]: PRN 실처방은 처방등록 하실수", "I004" );
  4878. return 0;
  4879. }
  4880. // 전처방에서 복사 시 소아 TPN은 전처방에서 복사 안되도록 요청. - 20090720 by MoonSH
  4881. if( ds_src.getColumn(sendRow, "prcpclscd" ) == "A6" &&
  4882. lf_getArrayData ( ds_src.getColumn(sendRow, "drugmastspec" ) + "^", 0, 23 , "^", "|" ) == "B") {
  4883. sysf_messageBox ( "[" + ds_src.getColumn(sendRow, "prcpnm" ) + "]: 소아 TPN 처방은 전처방에서 복사하실수", "I004" );
  4884. return 0;
  4885. }
  4886. // 전처방에서 복사 시 stemcellflag 초기화 요청. - 20081118 by MoonSH
  4887. if ( !utlf_isNull(bfstemcellflag) ){
  4888. ds_src.setColumn(sendRow, "stemcellflag", "00NNN" );
  4889. }
  4890. // 전처방에서 복사 시 마이그레이션 잘못 들어와서 _0으로 존재 하는 실행부서 -으로 수정. - 20081202 by MoonSH
  4891. if ( bfprcpexecdeptcd == "_0" ) {
  4892. ds_src.setColumn(sendRow, "prcpexecdeptcd", "-" );
  4893. }
  4894. //20091203 by sonjy 전처방 copy시 처방종류가 지시인경우 전처방에 저장된 시행부서를 copy하지 않고 초기화.[요청번호 8711 ]
  4895. //(전실 환자의 경우 이전병동으로 보이는 문제 ) -- V/S(지시), 활동(지시), I/O(지시), 지시 : 식이,BMT제외
  4896. var cur_prcpclscd = ds_src.getColumn(sendRow, "prcpclscd" );
  4897. if(cur_prcpclscd == "00" || cur_prcpclscd == "01"|| cur_prcpclscd == "02" || cur_prcpclscd == "09") {
  4898. ds_src.setColumn(sendRow, "prcpexecdeptcd", ds_src.getColumn(sendRow, "tempcol23") );
  4899. }
  4900. }
  4901. //전처방이나 약속처방에서 임상처방체크된 처방을 발행할 경우 임상시험 부유형 자동세팅(subcretno), CHC, 2009-07-22
  4902. if ( prcpInptFlag == "01" || prcpInptFlag == "02" ) {
  4903. if ( ds_src.getColumn(sendRow, "clincstdyflag" ) == "Y" ) {
  4904. lf_subcretnoSet("2", "Y", ds_src, sendRow);
  4905. }
  4906. //전처방이나 약속처방일때 용량/수량 보정 20100209 LYJ
  4907. var prcpclscd = ds_src.getColumn(sendRow, "prcpclscd" );
  4908. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ){
  4909. if( bfprcpsrchyn == "Y" && ds_src.getColumn(sendRow, "prcpclscd") != "09" && ds_src.getColumn(sendRow, "prcpinptflag") != "35"){ // 자가보유처방은 보정 제외한다. 20100504 LYJ
  4910. var bfprcpvol = ds_src.getColumn(sendRow, "prcpvol");
  4911. var bfprcpqty = ds_src.getColumn(sendRow, "prcpqty");
  4912. var sdrugmastspec = ds_src.getColumn(sendRow, "drugmastspec");
  4913. var orgprcpvol = lf_getArrayData ( sdrugmastspec + "^", 0, 1 , "^", "|" ); //drugcntsvol 함량기준용량
  4914. if ( !utlf_isNull(orgprcpvol) && Math.round ( orgprcpvol * bfprcpqty * 1000 ) != bfprcpvol * 1000 ){
  4915. var bfDrprcpetc7 = ds_src.getColumn(sendRow, "drprcpetc7"); //1회용량
  4916. var bfDrprcpetc8 = ds_src.getColumn(sendRow, "drprcpetc8"); //1회수량
  4917. var bfprcptims = ds_src.getColumn(sendRow, "prcptims");
  4918. if(!utlf_isNull(bfDrprcpetc7) && !utlf_isNull(bfDrprcpetc8) && (colHidnValue == "C" || colHidnValue == "G" || colHidnValue == "H") ){
  4919. var orgDrprcpetc7 = ds_src.getColumn(sendRow, "drprcpetc7"); //1회용량
  4920. var orgDrprcpetc8 = ds_src.getColumn(sendRow, "drprcpetc8"); //1회수량
  4921. var orgCalcRate = 0;
  4922. var calcmthdcd = lf_getArrayData ( sdrugmastspec + "^", 0, 26, "^", "|" );
  4923. if( calcmthdcd == "1" ){
  4924. orgCalcRate = (orgDrprcpetc8 * bfDrprcpetc8) * 1000;
  4925. orgCalcRate = Math.round(orgCalcRate);
  4926. orgCalcRate = orgCalcRate / 1000;
  4927. ds_src.setColumn(sendRow, "prcpvol", orgDrprcpetc7 * bfprcptims); //1회용량*횟수
  4928. ds_src.setColumn(sendRow, "drprcpetc7", orgDrprcpetc7); //1회용량*횟수
  4929. ds_src.setColumn(sendRow, "drprcpetc8", bfDrprcpetc8);
  4930. ds_src.setColumn(sendRow, "tempcol22", orgDrprcpetc7);
  4931. } else {
  4932. ds_src.setColumn(sendRow, "prcpvol", bfDrprcpetc7); //1회용량
  4933. ds_src.setColumn(sendRow, "drprcpetc7", bfDrprcpetc7); //1회용량*횟수
  4934. ds_src.setColumn(sendRow, "drprcpetc8", bfDrprcpetc8);
  4935. ds_src.setColumn(sendRow, "tempcol22", bfprcpvol);
  4936. }
  4937. } else {
  4938. ds_src.setColumn(sendRow, "prcpvol", bfprcpqty * orgprcpvol) ;
  4939. ds_src.setColumn(sendRow, "tempcol22", bfprcpvol) ;
  4940. }
  4941. }
  4942. }
  4943. }
  4944. }
  4945. //자가보유 처방일때 처방명 재설정 한다. 20100427 LYJ
  4946. if (ds_src.getColumn(sendRow, "prcpinptflag") == "35"){
  4947. var selfprcpnm = ds_src.getColumn(sendRow, "prcpnm" );
  4948. var selflen = selfprcpnm.length;
  4949. if (prcpInptFlag != "35"){
  4950. selfprcpnm1 = selfprcpnm.substring(7, selflen);
  4951. ds_src.setColumn(sendRow, "orgprcpnm", selfprcpnm1) ;
  4952. }
  4953. }
  4954. if ( prcpInptFlag == "35" ) { //자가보유
  4955. ds_src.setColumn(sendRow, "orgprcpnm", ds_src.getColumn(sendRow, "prcpnm" )) ;
  4956. }
  4957. var prcpClsCd = ds_src.getColumn(sendRow, "prcpclscd" );
  4958. var prcpKindCd = ds_src.getColumn(sendRow, "prcpkindcd" );
  4959. var drugmthdspccd = ds_src.getColumn(sendRow, "drugmthdspccd" );
  4960. var prcpnm = ds_src.getColumn(sendRow, "prcpnm" );
  4961. var drugmastspec = ds_src.getColumn(sendRow, "drugmastspec" ) + "^";
  4962. var hsctflag = "N";
  4963. var cpchk = "";
  4964. var usge = "";
  4965. var prcpgenrflag = "";
  4966. usge = oTrgtObj.ds_root.getColumn(0, "usge");
  4967. cpchk = oTrgtObj.ds_root.getColumn(0, "cp" );
  4968. prcpgenrflag = oTrgtObj.ds_patflag.getColumn(0, "prcpgenrflag" );
  4969. if ( usge == "prms" || usge == "direc" || usge == "home" ) {
  4970. prcpInptFlag = "02";
  4971. }
  4972. if ( prcpClsCd == "-" ) {
  4973. sysf_messageBox ( prcpnm + " 처방은 처방분류가 없어 처방등록을 하실 수 없습니다.", "E" );
  4974. return 0;
  4975. }
  4976. var iprcpqty = eval(ds_src.getColumn(sendRow, "prcpqty"));
  4977. var iprcptims = eval(ds_src.getColumn(sendRow, "prcptims"));
  4978. if ( ds_src.getColumn(sendRow, "tempcol18" ) == "MC" && (iprcpqty != 1 || iprcptims != 1 )) {
  4979. sysf_messageBox ( "[" + prcpnm + "] 전환데이터 연속검사처방은 처방복사 하실 수 없습니다. ( 수량:" + iprcpqty + ", 횟수:" + iprcptims + " )" , "E" );
  4980. return 0;
  4981. }
  4982. var addprcpchk = lf_getDsValue(oTrgtObj.ds_root, 0, "addprcp");
  4983. if ( addprcpchk == "Y" ){ //시행부서체크
  4984. //시행부서 처방은 마약불가
  4985. var spcldrug = lf_getArrayData ( drugmastspec, 0, 23, "^", "|" );
  4986. //20080721 마정민수정 김민선 선생님의 요청. 의사권한이 있는사람은 처방 가능.
  4987. if ( spcldrug == "M" ) {
  4988. var prcpauthflag = oTrgtObj.ds_init.getColumn(0, "prcpauthflag");
  4989. if (prcpauthflag != "3" ){
  4990. ssyf_messageBox ( prcpnm + " 마약처방은 시행부서에서 의사만 등록이 가능한 처방입니다.", "E" );
  4991. return 0;
  4992. }
  4993. }
  4994. }
  4995. //20090302 마정민수정: Irradiation(LBT70010) 단독처방 불가
  4996. if ( ds_src.getColumn(sendRow, "prcpcd" ) == oTrgtObj.ds_initsrch_irrprcpcd.getColumn(0, "trgtcd")) {
  4997. sysf_messageBox ( prcpnm + "는 단독처방이 불가합니다. 수혈상세팝업의 Irr 체크기능을 통해 등록해 주십시오", "E" );
  4998. return 0;
  4999. }
  5000. if ( prcpClsCd == "A2" || prcpClsCd == "A4" || prcpClsCd == "A6" ) {
  5001. if (utlf_isNull(ds_src.getColumn(sendRow, "prcpvolunitnm"))) {
  5002. sysf_messageBox ( ds_src.getColumn(sendRow, "prcpnm") + " 처방의 용량단위가", "E014" );
  5003. return 0;
  5004. }
  5005. if (utlf_isNull(ds_src.getColumn(sendRow, "prcpqtyunitnm"))) {
  5006. sysf_messageBox ( ds_src.getColumn(sendRow, "prcpnm") + " 처방의 수량단위가", "E014" );
  5007. return 0;
  5008. }
  5009. }
  5010. //20090903 이윤정 추가: 응급 탭에서 선택된 환자의 경우 심야가산적용 자동 체크
  5011. var prcpgenrflag = oTrgtObj.ds_patflag.getColumn(0, "prcpgenrflag" );
  5012. if (prcpgenrflag == "E"){
  5013. if ( prcpClsCd == "H2" || prcpClsCd == "H4" ) {
  5014. ds_src.setColumn(sendRow, "nigtprcpflag","N" );
  5015. var nigtprcptm = oTrgtObj.ds_initsrch_nigtprcptm.getColumn(0, "trgtcd");
  5016. var nigtprcpsplit = nigtprcptm.split("|");
  5017. var nigtprcpstart = nigtprcpsplit[0];
  5018. var nigtprcpend = nigtprcpsplit[1];
  5019. var MyTime = utlf_getCurrentTime();
  5020. var realtime = MyTime.substr(0,4);
  5021. if ( nigtprcpstart < realtime || realtime < nigtprcpend){
  5022. ds_src.setColumn(sendRow, "nigtprcpflag","Y" );
  5023. }
  5024. }
  5025. }
  5026. //-- CP, 항암프로토콜일 경우는 클라이언트에서 품절약체크를 하지 않는다 --//
  5027. if( prcpInptFlag != "05" && prcpInptFlag != "06" && prcpInptFlag != "17" ){
  5028. if ( prcpClsCd == "A2" || prcpClsCd == "A4" || prcpClsCd == "A6" ) {
  5029. //항생제체크
  5030. var returnVal = lf_getHardCDList("Y", 233, 3); // 2010. 10. 26. 경북대는 CDSS 추천항생제를 사용하지 않음. 따라서 사용여부를 처방 하드코드 테이블로 설정할 수 있도록 함.
  5031. if (returnVal =="Y") {
  5032. if ( usge == "prcp" && prcpgenrflag != "O" && prcpClsCd == "A6") {
  5033. if ( lf_getArrayData ( drugmastspec + "^", 0, 23, "^", "|" ) == "P" && lf_getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "N" ) {
  5034. if ( objFlag == "child" ) {
  5035. if (oTrgtObj.lf_antiMicChk ( sendRow, "child", strSrc, prcpInptFlag ) == 0){
  5036. return 0;
  5037. }
  5038. } else {
  5039. if (lf_antiMicChk ( sendRow, "1", strSrc, prcpInptFlag ) == 0 ){
  5040. return 0;
  5041. }
  5042. }
  5043. }
  5044. }
  5045. //제한항생제체크
  5046. if ( usge == "prcp" && prcpgenrflag != "O" ) {
  5047. if ( lf_getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "Y" ) {
  5048. if ( objFlag == "child" ) {
  5049. if (oTrgtObj.lf_antiMicChk ( sendRow, "child", strSrc, prcpInptFlag ) == 0){
  5050. return 0;
  5051. }
  5052. } else {
  5053. if (lf_antiMicChk ( sendRow, "1", strSrc, prcpInptFlag ) == 0 ){
  5054. return 0;
  5055. }
  5056. }
  5057. }
  5058. }
  5059. }
  5060. //BY 문세희 20080930 END
  5061. //품절약 체크
  5062. if ( lf_getArrayData (drugmastspec, 0, 10, "^", "|" ) == "Y" ) {
  5063. if ( objFlag == "child" ) {
  5064. oTrgtObj.lf_altDrug ( sendRow, "child", strSrc, prcpInptFlag );
  5065. } else {
  5066. lf_altDrug ( sendRow, "1", strSrc, prcpInptFlag );
  5067. }
  5068. return 0;
  5069. }
  5070. //20090528 마정민 추가. 6세미만 경구약 자동 powdflag전환 때문에 처방복사시 powdflag체크로직 추가. 단 전처방복사는제외.
  5071. var vAge = lf_getDsValue(oTrgtObj.ds_paminfo, 0, "age" );
  5072. if ( vAge < 6 && prcpClsCd == "A2" && prcpInptFlag != "01" ) {
  5073. if ( lf_getArrayData ( drugmastspec + "^", 0, 19, "^", "|" ) == "2" ) { //산제불가
  5074. if ( objFlag == "child" ) {
  5075. oTrgtObj.lf_altDrug ( sendRow, "child", strSrc, prcpInptFlag, "4" );
  5076. if ( oTrgtObj.frmf_getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  5077. oTrgtObj.frmf_clearParameter ( "SPMMB10100_chkyn" );
  5078. return 0; //대체약을 선택했다면 복사시키지 않는다.
  5079. }
  5080. } else {
  5081. lf_altDrug ( sendRow, "4", strSrc, prcpInptFlag );
  5082. if ( frmf_getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  5083. frmf_clearParameter ( "SPMMB10100_chkyn" );
  5084. return 0; //대체약을 선택했다면 복사시키지 않는다.
  5085. }
  5086. }
  5087. //20090602 배성미선생님 요청으로 산제불가 취소해도 복사되게 수정
  5088. } else if ( lf_getArrayData ( drugmastspec + "^", 0, 19, "^", "|" ) == "1" ) { //산제주의
  5089. if ( objFlag == "child" ) {
  5090. oTrgtObj.lf_altDrug ( sendRow, "child", strSrc, prcpInptFlag, "5" );
  5091. if ( oTrgtObj.frmf_getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  5092. oTrgtObj.frmf_clearParameter ( "SPMMB10100_chkyn" );
  5093. return 0; //대체약을 선택했다면 복사시키지 않는다.
  5094. }
  5095. } else {
  5096. lf_altDrug ( sendRow, "5", strSrc, prcpInptFlag );
  5097. if ( frmf_getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  5098. frmf_clearParameter ( "SPMMB10100_chkyn" );
  5099. return 0; //대체약을 선택했다면 복사시키지 않는다.
  5100. }
  5101. }
  5102. }
  5103. }
  5104. }
  5105. //대체처방체크
  5106. var altcdinfo = ds_src.getColumn(sendRow, "tempcol16" );
  5107. var prcpinptflag = ds_src.getColumn(sendRow, "prcpinptflag" );
  5108. if ( altcdinfo.substring( 0, 1 ) != "X" && altcdinfo.substring( 0, 1 ) != "A" ) {
  5109. if(altcdinfo.substring( 0, 1 ) == "D") { // 수가 종료 처방 복사 불가 처리 2013.04.18 엄영만
  5110. if(prcpInptFlag == "02") {
  5111. sysf_messageBox ( "[" + prcpnm + "]: 수가 또는 검사실 사용종료 되어 처방을 복사 할 수 없습니다.\n\n상단메뉴 기본정보관리->약속Set 메뉴에서 약속처방을 재구성 하시기 바랍니다.", "E999" );
  5112. } else {
  5113. sysf_messageBox ( "[" + prcpnm + "]: 수가 또는 검사실 사용종료 되어 처방을 복사", "E001" );
  5114. }
  5115. return 0;
  5116. }
  5117. if (prcpinptflag !="35") { // 자가보유처방은 복사 가능 20100504 by LYJ
  5118. sysf_messageBox ( "[" + prcpnm + "]: 수가 또는 검사실 사용종료 되어 처방을 복사", "E001" );
  5119. return 0;
  5120. }
  5121. }
  5122. if (altcdinfo.substring( 0, 1 ) == "X" ) {
  5123. if ( objFlag == "child" ) {
  5124. oTrgtObj.lf_altPrcpCd ( sendRow, "child", strSrc, prcpInptFlag );
  5125. } else {
  5126. lf_altPrcpCd ( sendRow, "1", strSrc, prcpInptFlag );
  5127. }
  5128. return 0;
  5129. }
  5130. }
  5131. //-- CP, 항암프로토콜 처방의 품절약 체크 제외 끝 --//
  5132. if (!lf_prmsSaveCheck ( usge, prcpKindCd, prcpnm )) {
  5133. return 0;
  5134. }
  5135. if ( prcpInptFlag == "01" ) { //전회처방
  5136. //반환요청된 처방, D/C된 처방 모두 처방 복사 불가, CHC, 2009-08-03
  5137. //if ( ds_src.getColumn(sendRow, "prcphistcd" ) == "E" ) {
  5138. if ( ds_src.getColumn(sendRow, "prcphistcd" ) == "E" || ds_src.getColumn(sendRow, "prcphistcd" ) == "C") {
  5139. sysf_messageBox ( "반납처방은 처방복사", "E001" );
  5140. return 0;
  5141. }
  5142. //종속처방 자처방 복사 불가
  5143. var inclprcpno = ds_src.getColumn(sendRow, "inclprcpno" );
  5144. if ( !utlf_isNull(inclprcpno) && inclprcpno != "-" ) {
  5145. if ( eval(inclprcpno) > 0 ) {
  5146. if ( ds_src.getColumn(sendRow, "grupsnglflag" ) != "M" ) {
  5147. return 0;
  5148. }
  5149. }
  5150. }
  5151. //20080731: 마정민 수정 hsct 자처방 복사 불가
  5152. var hsctlnkno = ds_src.getColumn(sendRow, "hsctlnkno" );
  5153. if ( !utlf_isNull(hsctlnkno) && hsctlnkno != "-" ) {
  5154. if ( eval(hsctlnkno) > 0 ) {
  5155. if ( ds_src.getColumn(sendRow, "prcpsetcd" ) != "-" ) {
  5156. return 0;
  5157. }
  5158. }
  5159. }
  5160. }
  5161. if ( ds_src.getColumn(sendRow, "grupsnglflag" ) == "M" ) { //그룹코드 M을 찾아낸다. 처방검색일때만 풀린다.
  5162. var grupCond1 = ds_src.getColumn(sendRow, "prcpcd" );
  5163. var inclprcpno = "";
  5164. var grupCond3 = oTrgtObj.ds_init.getColumn(0, "prcpdd");
  5165. var grupCond4 = oTrgtObj.ds_paminfo.getColumn(0, "insukind");
  5166. if ( usge == "prcp" ) { //처방화면에만 종속처방이 적용된다.
  5167. inclprcpno = eval(oTrgtObj.ds_init.getColumn(0, "inclprcpno")) + 1; //종속처방번호를 받아온다.
  5168. }
  5169. prcpGroupSrch ( grupCond1, grupCond3, grupCond4 );
  5170. if ( utlf_isNull(grupSrc) ) grupSrc = "ds_prcpgroup_prcplist";
  5171. var ds_groupSrc = this.objects[grupSrc];
  5172. if ( ds_groupSrc.rowcount > 0 ) {
  5173. var ds_dest = oTrgtObj.objects[strDest];
  5174. ds_dest.insertRow(srchRow);
  5175. ds_dest.copyRow(srchRow, ds_groupSrc, sendRow);
  5176. if (!oTrgtObj.lf_addPrcpSetValue ( "main", strDest, srchRow, prcpInptFlag, "N", inclprcpno )) {
  5177. return 0;
  5178. }
  5179. srchRow ++;
  5180. if ( usge == "prcp" ) {
  5181. for (var i = 0; i < ds_groupSrc.rowcount; i++) {
  5182. ds_dest.insertRow(srchRow);
  5183. ds_dest.copyRow(srchRow, ds_groupSrc, i);
  5184. if (!oTrgtObj.lf_addPrcpSetValue ( "main", strDest, srchRow, prcpInptFlag, "N", inclprcpno )) {
  5185. return 0;
  5186. }
  5187. srchRow = oTrgtObj.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  5188. srchRow ++;
  5189. }
  5190. }
  5191. }
  5192. } else if ( ds_src.getColumn(sendRow, "grupsnglflag" ) == "J" ) { //그룹지시처방 J을 찾아낸다.
  5193. //조회조건
  5194. var direcCond1 = ds_src.getColumn(sendRow, "srchcondcnts" );
  5195. var direcCond5 = ds_src.getColumn(sendRow, "prcpcd" );
  5196. var direcCond3 = "";
  5197. var direcCond4 = "";
  5198. if ( prcpClsCd == "04" ) {
  5199. hsctflag = "Y";
  5200. }
  5201. direcCond3 = oTrgtObj.ds_init.getColumn(0, "prcpdd" );
  5202. direcCond4 = oTrgtObj.ds_paminfo.getColumn(0, "insukind");
  5203. lf_prcpDirecSrch ( direcCond1, direcCond3, direcCond4, direcCond5 );
  5204. if ( utlf_isNull(direcSrc) ) direcSrc = "ds_prcpdirec_prcplist";
  5205. var ds_direcSrc = this.objects[direcSrc];
  5206. if ( ds_direcSrc.rowcount > 0 ){ //그룹지시처방 J는 종속하는 수가 코드가 있을 때만 추가.
  5207. //HSCT 모코드는 HSCTTEMPFLAG 가 N이다.
  5208. var ds_dest = oTrgtObj.objects[strDest];
  5209. ds_dest.insertRow(srchRow);
  5210. ds_dest.copyRow(srchRow, ds_direcSrc, sendRow);
  5211. //종속처방번호 Setting ( hsctlnkno )
  5212. var hsctlnkno = eval( oTrgtObj.ds_init.getColumn(0, "hsctlnkno" )) + 1;
  5213. oTrgtObj.ds_init.getColumn(0, "hsctlnkno", hsctlnkno );
  5214. if (!oTrgtObj.lf_addPrcpSetValue ( "main", strDest, srchRow, prcpInptFlag, "M" )) {
  5215. return 0;
  5216. }
  5217. //CP 약속셋 생성 시에는 자코드가 풀리면 안된다. CP배치를 통해 실처방 저장시 풀린다! (2008.01.22)
  5218. if( oTrgtObj.ds_root.getColumn(0, "cp") == "S" || ds_root.getColumn(0, "cp") == "S" ){
  5219. return;
  5220. }
  5221. srchRow = oTrgtObj.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  5222. srchRow ++;
  5223. for (var k = 0; k < ds_direcSrc.rowcount; k++) {
  5224. ds_dest.insertRow(srchRow);
  5225. ds_dest.copyRow(srchRow, ds_direcSrc, k);
  5226. if (!oTrgtObj.lf_addPrcpSetValue ( "main", strDest, srchRow, prcpInptFlag, hsctflag )) {
  5227. return 0;
  5228. }
  5229. srchRow = oTrgtObj.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  5230. srchRow ++;
  5231. }
  5232. }
  5233. } else if ( (prcpClsCd == "B2" || prcpClsCd == "B4" || prcpClsCd == "B6") && (lf_getArrayData (drugmastspec, 0, 2, "^", "|" ) == "0" || lf_getArrayData (drugmastspec, 0, 2, "^", "|" ) == "-")){
  5234. //검사대분류유형(testlrgkind) 그룹: 0, 1
  5235. //-일 때는 검체와 상관없는 그룹코드
  5236. var grupCond1 = ds_src.getColumn(sendRow, "prcpcd" );
  5237. var grupCond3 = "";
  5238. var grupCond4 = "";
  5239. var popflag = "group"
  5240. if ( objFlag == "child" ) {
  5241. popflag = "child";
  5242. }
  5243. grupCond3 = oTrgtObj.ds_init.getColumn(0, "prcpdd" );
  5244. grupCond4 = oTrgtObj.ds_paminfo.getColumn(0, "insukind");
  5245. //구수가코드일 경우
  5246. if ( oldprcpflag == "Y" ) {
  5247. popflag = "oldprcp";
  5248. }
  5249. var drugmthdspccd = ds_src.getColumn(sendRow, "drugmthdspccd" );
  5250. var spccd = "";
  5251. var spcnm = "";
  5252. fGetSpc ( sendRow, popflag, objFlag )
  5253. if ( drugmthdspccd == "998" ) {
  5254. if ( frmf_getParameter ("SPMMO03500_rtn_useyn") == "Y" ) {
  5255. spccd = frmf_getParameter ( "SPMMO03500_rtn_spccd" );
  5256. spcnm = frmf_getParameter ( "SPMMO03500_rtn_spcscrnnm" );
  5257. }
  5258. frmf_clearParameter ( "SPMMO03500_rtn_useyn" );
  5259. frmf_clearParameter ( "SPMMO03500_rtn_spccd" );
  5260. frmf_clearParameter ( "SPMMO03500_rtn_spcscrnnm" );
  5261. } else if ( drugmthdspccd == "999" ) {
  5262. if ( frmf_getParameter ("SPMMO03400_rtn_useyn") == "Y" ) {
  5263. spccd = frmf_getParameter ( "SPMMO03400_rtn_spccd" );
  5264. spcnm = frmf_getParameter ("SPMMO03400_rtn_spcscrnnm" );
  5265. }
  5266. frmf_clearParameter ( "SPMMO03400_rtn_useyn" );
  5267. frmf_clearParameter ( "SPMMO03400_rtn_spccd" );
  5268. frmf_clearParameter ( "SPMMO03400_rtn_spcscrnnm" );
  5269. } else { //팝업이 뜨지 않을 때는 본체의 검체코드로 검색한다.
  5270. spccd = drugmthdspccd;
  5271. spcnm = ds_src.getColumn(sendRow, "drugmthdspccdnm" );
  5272. }
  5273. prcpGroupSrch ( grupCond1, grupCond3, grupCond4, spccd, lf_getArrayData (drugmastspec, 0, 2, "^", "|" ), "getLisPrcpGroupInfo" );
  5274. var ds_dest = oTrgtObj.objects[strDest];
  5275. if ( utlf_isNull(grupSrc) ) grupSrc = "ds_prcpgroup_prcplist";
  5276. var ds_grupSrc = this.objects[grupSrc];
  5277. for (var i = 0; i < ds_grupSrc.rowcount; i++) {
  5278. ds_dest.insertRow(srchRow);
  5279. ds_dest.copyRow(srchRow, ds_grupSrc, i);
  5280. if (!oTrgtObj.lf_addPrcpSetValue ( "main", strDest, srchRow, prcpInptFlag )) {
  5281. return 0;
  5282. }
  5283. if (!utlf_isNull(spccd)) {
  5284. if ( lfgetArrayData (drugmastspec, 0, 2, "^", "|" ) != "-" ) {
  5285. oTrgtObj.ds_main_prcplist.setColumn(srchRow, "drugmthdspccd", spccd );
  5286. oTrgtObj.ds_main_prcplist.setColumn(srchRow, "drugmthdspccdnm", spcnm );
  5287. }
  5288. }
  5289. srchRow ++;
  5290. }
  5291. } else { //그룹코드 M, J 가 아닐 경우
  5292. var ds_dest = oTrgtObj.objects[strDest];
  5293. ds_dest.insertRow(srchRow);
  5294. ds_dest.copyRow(srchRow, ds_src, sendRow);
  5295. //전처방 때문에 duplicate => addPrcpSetValue 하는 것으로 수정
  5296. //먼저 set 하면 전처방 화면 내용이 수정되고 그로인해 처방키 초기화로 인해 D/C 시 에러
  5297. if (!oTrgtObj.lf_addPrcpSetValue ( "main", strDest, srchRow, prcpInptFlag )) {
  5298. return 0;
  5299. }
  5300. srchRow = oTrgtObj.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  5301. srchRow ++;
  5302. }
  5303. //model.addLog(" ***************** End Of addPrcpDetl()");
  5304. return srchRow; //검색 row 값을 넘겨준다.
  5305. }
  5306. /***************************************************************************************************
  5307. * Function : lf_addPrcpSetValue
  5308. * Description : 처방main에 넘긴 후에 기본값을 setting한다.
  5309. * Argument : objFlag => child or ...
  5310. * : strSrc => setting할 source node
  5311. * : sendRow => setting할 row
  5312. * : prcpInptFlag => 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  5313. * : hsctflag => hsct 인지 표시
  5314. * : inclprcpcd => 종속처방코드
  5315. * return type : true, false
  5316. * Creator :
  5317. * 변환OK
  5318. ***************************************************************************************************/
  5319. function lf_addPrcpSetValue(objFlag, strSrc , sendRow, prcpInptFlag, hsctflag, inclprcpno) {
  5320. var oTrgtObj = lf_getFormObject(objFlag);
  5321. //
  5322. var ds_src = oTrgtObj.objects[strSrc];
  5323. var prcpdd = ""; //처방일
  5324. var prcpkindcd = ""; //처방종류변수
  5325. var pamInfoNode = "/root/paminfo/list";
  5326. var pid = ""; //환자번호
  5327. var indd = ""; //진료일자
  5328. var cretno = ""; //생성번호
  5329. var orddeptcd = ""; //담당부서
  5330. var orddrid = ""; //담당교수
  5331. var prcpgenrflag = ""; //외래입원구분
  5332. var prcpclscd = ds_src.getColumn(sendRow, "prcpclscd" );
  5333. var orddeptcd = "";
  5334. var org_prcpInptFlag = prcpInptFlag;
  5335. if ( utlf_isNull(prcpInptFlag)){
  5336. prcpInptFlag = ds_src.getColumn(sendRow, "prcpinptflag" );
  5337. }
  5338. if( (org_prcpInptFlag != "05" || (org_prcpInptFlag == "05" && ds_src.getColumn(sendRow, "prcpinptflag") == "00")) && ds_src.getColumn(sendRow, "prcpinptflag") != "35"){ //20100426 자가보유약일 때 prcpinptflag 35 로 지정한다 LYJ
  5339. ds_src.setColumn(sendRow, "prcpinptflag", prcpInptFlag ); //처방입력구분
  5340. prcpInptFlag = org_prcpInptFlag;
  5341. }
  5342. ds_src.setColumn(sendRow, "prcphistcd", "O" ); //처방이력코드:O
  5343. ds_src.setColumn(sendRow, "prcpsignflag", "2" ); //처방이력구분:2
  5344. ds_src.setColumn(sendRow, "prcprefseq", "0" ); //처방순서(전처방에 넘어올때도 있기때문에 0으로 클리어)
  5345. ds_src.setColumn(sendRow, "etcprcpflag", "-" ); //디폴트세팅.
  5346. //-- CP, 항암프로토콜일 경우 추가되는 saveflaginfo 값 셋팅 --//
  5347. if( prcpInptFlag == "05" || prcpInptFlag == "06" ){
  5348. if( ds_src.getColumn(sendRow, "prcpcd") != "000000000033" ){
  5349. //처방명의 구분이 2개가 중복되어 저장되는 문제 -> 원처방명을 저장, 공통 지시처방의 원처방명은 "전달사항" 이므로, 공통 지시처방만 제외
  5350. ds_src.setColumn(sendRow, "prcpnm", ds_src.getColumn(sendRow, "orgprcpnm") ); //makePrcpNm() 때문에 prcpnm->orgprcpnm
  5351. }
  5352. if( prcpInptFlag == "06" ){
  5353. ds_save_saveflaginfo.setColumn(0, "cpgappno", appNo_SMMMO00110 ); //CP처방 or 프로토콜처방 no
  5354. ds_save_saveflaginfo.setColumn(0, "prtlprcpstatus", prtlprcpstatus_SMMMO00110 ); //CP처방 or 프로토콜처방 저장 status
  5355. ds_save_saveflaginfo.setColumn(0, "prtlflag", "10" ); //프로토콜구분
  5356. }
  5357. }else{
  5358. ds_src.setColumn(sendRow, "status", "I" );
  5359. }
  5360. //-- 셋팅 끝 --//
  5361. var drugmastspec = ds_src.getColumn(sendRow, "drugmastspec") + "^";
  5362. var usge = ds_root.getColumn(0, "usge" );
  5363. var spcldrug = lf_getArrayData ( drugmastspec + "^", 0, 23, "^", "|" );
  5364. //가정간호일때 시작일,종료일 바꿔준다.
  5365. if (usge == "home") {
  5366. ds_src.setColumn(sendRow, "tempcol6", ds_init.getColumn(0, "prcpfromdd")); //시작일자
  5367. ds_src.setColumn(sendRow, "tempcol7", ds_init.getColumn(0, "prcptodd")); //종료일자
  5368. //20080825 마정민 수정 가정간호처방 주사일 경우 자동으로 home 체크. 단 마약이 아닐경우. TPN일 경우 추가 20081013 by Moonsh
  5369. if ( prcpclscd == "A6" && spcldrug != "M" && lf_getArrayData (drugmastspec , 0, 14, "^", "|" ) == "Y" ) {
  5370. ds_src.setColumn(sendRow, "selfprcpflag","Y"); //종료일자
  5371. }
  5372. }
  5373. ds_src.setColumn(sendRow, "prcpauthflag", lf_getDsValue(ds_init, 0, "prcpauthflag" )); //처방권한구분
  5374. //수술예약번호 setting
  5375. if( !utlf_isNull (ds_operation.getColumn(0, "oprsrvno"))){
  5376. ds_src.setColumn(sendRow, "oprsrvno", ds_operation.getColumn(0, "oprsrvno"));
  5377. //by sonjy 20091120 심야가산 check 마취료처방 추가
  5378. if ( prcpclscd == "H2" || ds_src.getColumn(sendRow, "tempcol2" ) == "13|01|00" ) { //수술처방인경우
  5379. //응급으로 수술예약정보가 있다면 erprcpflag를 Y로 setting 한다.
  5380. var opflagcd = ds_operation.getColumn(0, "opflagcd"); // opflagcd 1:정규, 2:응급, 3:추가
  5381. if(opflagcd == "2"){
  5382. //model.setValue("/root/main/prcp/prcplist/erprcpflag", "Y");
  5383. ds_src.setColumn(sendRow, "erprcpflag", "Y");
  5384. }
  5385. //수술시작시간이 오후 5시 이후에는 야간으로 체크한다.
  5386. var opfromtmcd = ds_operation.getColumn(0, "opfromtmcd"); //opfromtmcd 수술시작시간
  5387. //if(eval(opfromtmcd) > 170000 ) { //야간 시간 기준을 물어볼 것
  5388. //수술및 마취료처방시 심야기준 08시이전, 18시 이후 by sonjy 20081211
  5389. if(eval(opfromtmcd) >= 180000 || eval(opfromtmcd) < 80000 ) {
  5390. ds_src.setColumn(sendRow, "nigtprcpflag", "Y");
  5391. }
  5392. //수술액팅일자 = 확정수술일자
  5393. ds_src.setColumn(sendRow, "tempcol22", ds_operation.getColumn(0, "opcnfmdd"));
  5394. }
  5395. } else {
  5396. // CP 에서는 수동으로 수술예약번호를 mapping 한다.
  5397. if( ds_root.getColumn(0, "cp") != "Y" ){
  5398. ds_src.setColumn(sendRow, "oprsrvno", "0");
  5399. }else{
  5400. if( utlf_isNull (ds_src.getColumn(sendRow, "oprsrvno")))
  5401. ds_src.setColumn(sendRow, "oprsrvno", "0" );
  5402. }
  5403. }
  5404. if ( ds_paminfo.rowcount == 0 ){
  5405. sysf_messageBox ( "환자정보가", "E014" );
  5406. return false;
  5407. }
  5408. prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  5409. pid = lf_getDsValue(ds_paminfo, 0, "pid");
  5410. orddeptcd = lf_getDsValue(ds_paminfo, 0, "orddeptcd");
  5411. //by sonjy 2008-08-25 건진일 경우 check추가.
  5412. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ) {
  5413. indd = lf_getDsValue(ds_paminfo, 0, "orddd");
  5414. orddrid = lf_getDsValue(ds_paminfo, 0, "orddrid");
  5415. } else {
  5416. indd = lf_getDsValue(ds_paminfo, 0, "indd");
  5417. orddrid = lf_getDsValue(ds_paminfo, 0, "medispclid");
  5418. }
  5419. cretno = lf_getDsValue(ds_paminfo, 0, "cretno");
  5420. orddeptcd = lf_getDsValue(ds_paminfo, 0, "orddeptcd");
  5421. //2011.11.07 엄영만 선택진료여부 및 선택진료의사 셋팅
  5422. if (prcpclscd != "D2" || usge != "prcp") { // 처방시에 병리처방은 의뢰지 팝업후 검체코드설정되면 선택의사 설정 함.(의뢰지 작성후 팝업 되도록) 2011.11.25 엄영만.
  5423. lf_setPrcpSpecValue(strSrc, sendRow, prcpInptFlag);
  5424. }
  5425. //-- CP,항암프로토콜일 경우, 처방일과 처방종류가 일률적으로 입력되지 않는다 --//
  5426. if( prcpInptFlag != "05" && prcpInptFlag != "06" ){
  5427. prcpdd = ds_init.getColumn(0, "prcpdd"); //처방일
  5428. prcpkindcd = lf_getDsValue(ds_init, 0, "prcpkindcd"); //처방종류(정규,추가...)
  5429. //외래이고 약속 set/전처방 copy시 입원전 검사일 경우 prcpkindcd를 20으로 초기화하지 않는다.
  5430. //by sonjy 김민선 선생님 요청사항 20080925
  5431. if( prcpgenrflag == "O" &&
  5432. (ds_src.getColumn(sendRow, "prcpkindcd") == "90" ||
  5433. ds_src.getColumn(sendRow, "prcpkindcd") == "95" ) ){
  5434. prcpkindcd = ds_src.getColumn(sendRow, "prcpkindcd") ;
  5435. }
  5436. }else{
  5437. //JJE-
  5438. prcpdd = ds_src.getColumn(sendRow, "prcpdd");
  5439. prcpkindcd = ds_src.getColumn(sendRow, "prcpkindcd");
  5440. if(utlf_isNull(prcpdd)){
  5441. prcpdd = ds_init.getColumn(0, "prcpdd");
  5442. }
  5443. //JJE root/init/prcpdd 를 해당 미래일자로 변경... (2008.09.11)
  5444. if( prcpdd != ds_init.getColumn(0, "prcpdd") && prcpdd > ds_init.getColumn(0, "prcpdd") ){
  5445. ds_init.setColumn(0, "prcpdd", prcpdd);
  5446. }
  5447. var prcpsetcd = ds_src.getColumn(sendRow, "prcpsetcd");
  5448. if(prcpsetcd != "-"){
  5449. //풀린 자코드에 처방종류 및 처방입력구분을 모코드와 동일하게 넣어줌
  5450. var prcpddNode = ds_main_prcplist.lookup("prcpcd", prcpsetcd, "prcpdd");
  5451. var prcpkindcdNode = ds_main_prcplist.lookup("prcpcd", prcpsetcd, "prcpkindcd");
  5452. var etclnkspecNode = ds_main_prcplist.lookup("prcpcd", prcpsetcd, "etclnkspec");
  5453. var prcpinptflagNode = ds_main_prcplist.lookup("prcpcd", prcpsetcd, "prcpinptflag");
  5454. if( !utlf_isNull(prcpddNode) ){
  5455. prcpdd = prcpddNode;
  5456. }
  5457. if( !utlf_isNull(prcpkindcdNode) ) prcpkindcd = prcpkindcdNode;
  5458. if( !utlf_isNull(etclnkspecNode) ){
  5459. ds_src.setColumn(sendRow, "etclnkspec", etclnkspecNode);
  5460. }
  5461. if( !utlf_isNull(prcpinptflagNode) ){
  5462. ds_src.setColumn(sendRow, "prcpinptflag", prcpinptflagNode);
  5463. }
  5464. }
  5465. ds_src.setColumn(sendRow, "prcphopedd", prcpdd);
  5466. //-JJE
  5467. }
  5468. //마취기록화면에서 처방화면을 띄우면
  5469. //마취처방일 경우 필수입력구분이 1이면 수술시간과, 수술구분을 넣어준다. 넣어지는 기준은 마취처방상세팝업과 동일하다.
  5470. if ( ds_anst.getColumn(0, "paramyn") == "Y" ) {
  5471. ds_src.setColumn(sendRow, "prcpinptflag", "27");
  5472. if ( prcpclscd == "I2" || prcpclscd == "I4"){ //마취
  5473. if ( ds_src.getColumn(sendRow, "prcpessninptflag") == "1" ) { // 필수입력구분이 1
  5474. var earncls = ds_src.getColumn(sendRow, "tempcol2");
  5475. if ( earncls != "04|01|00" && earncls != "05|01|00" ) { //마취구분
  5476. ds_src.setColumn(sendRow, "opansflagcd", ds_anst.getColumn(0, "opansflagcd"));
  5477. }
  5478. ds_src.setColumn(sendRow, "ansttm", ds_anst.getColumn(0, "ansttm"));//마취시간
  5479. ds_src.setColumn(sendRow, "clinccmtcnts", ds_anst.getColumn(0, "anstfromdt") + "|" + ds_anst.getColumn(0, "ansttodt"));
  5480. }
  5481. }
  5482. } else {
  5483. if ( prcpclscd == "I2" || prcpclscd == "I4" ){ //마취
  5484. ds_src.setColumn(sendRow, "clinccmtcnts", "-");
  5485. }
  5486. }
  5487. ds_src.setColumn(sendRow, "prcphopedd", prcpdd); //처방희망일자
  5488. //전처방이나 약속처방에서 시행부서가 현재 존재 하는 부서인지 체크 2012.10.29 엄영만
  5489. if ( prcpInptFlag == "01" || prcpInptFlag == "02" ) {
  5490. var bfprcpexecdeptcd = ds_src.getColumn(sendRow, "prcpexecdeptcd");
  5491. var CheckExecdeptcdNode = oTrgtObj.ds_orddept.findRow("deptcd", bfprcpexecdeptcd);
  5492. if(CheckExecdeptcdNode == -1) {
  5493. ds_src.setColumn(sendRow, "prcpexecdeptcd", "-");
  5494. }
  5495. }
  5496. //전처방 clear
  5497. if ( prcpInptFlag == "01" ) {
  5498. // 전처방 복사시 초기화해야 할 것 ( PAMPKSpec, PrcpKindCd 등은 처방 복사시 다시 setting 해줌 )
  5499. if ( prcpclscd == "B2" ) { // 진검 전처방에서 응급 체크되어 있는 것은 복사 시에도 응급 체크되어지도록 요청 - 20081127 by MoonSH
  5500. var erprcpflag = ds_src.getColumn(sendRow, "erprcpflag");
  5501. if ( erprcpflag == "Y" ) {
  5502. ds_src.setColumn(sendRow, "erprcpflag", "Y");
  5503. } else {
  5504. ds_src.setColumn(sendRow, "erprcpflag", "N");
  5505. }
  5506. } else {
  5507. ds_src.setColumn(sendRow, "erprcpflag", "N"); //2008-01-28 약국요청 응급은 복사되면 안됨
  5508. }
  5509. ds_src.setColumn(sendRow, "rgstdt", ""); //rgstdt: 등록일시
  5510. ds_src.setColumn(sendRow, "rgstridnm", ""); //rgstridnm: 등록자명
  5511. ds_src.setColumn(sendRow, "tempprcpflag", "N"); //tempprcpflag: 임시처방구분
  5512. ds_src.setColumn(sendRow, "etcprcpresncd", "-"); //etcprcpresncd: 응급의학관리료 사유 (코드정의서 M0012 참조), 수혈반납 및 폐기사유코드 (코드정의서 M0037, M0038 참조), 재활처방 마감일자
  5513. ds_src.setColumn(sendRow, "ordreqlnkno", "0"); //ordreqlnkno: 진료의뢰연결번호
  5514. ds_src.setColumn(sendRow, "testreqlnkno", "0"); //testreqlnkno: 검사의뢰연결번호
  5515. ds_src.setColumn(sendRow, "prcplnkdd", "00000000"); //prcplnkdd: 임시처방에 대한 연계 일자
  5516. ds_src.setColumn(sendRow, "prcplnkno", "0"); //prcplnkno: 임시처방에 대한 연계 번호
  5517. ds_src.setColumn(sendRow, "prtlno", "0"); //prtlno: 프로토콜SET에 대한 코드로 일련번호 형태로 관리
  5518. ds_src.setColumn(sendRow, "contprcpspec", "-"); //contprcpspec: 연속처방내역
  5519. ds_src.setColumn(sendRow, "etclnkspec", "-"); //etclnkspec: 항암프로토콜번호|CP번호
  5520. ds_src.setColumn(sendRow, "tempcol6", ""); //전처방 화면 display clear
  5521. ds_src.setColumn(sendRow, "tempcol7", ""); //전처방 화면 display clear
  5522. var antibiotics = lf_getArrayData ( ds_src.getColumn(sendRow, "tempcol8") + "^", 0, 0, "^", "|" );
  5523. if ( antibiotics != "antibiotics" ){ //20081020: 마정민수정. 전처방에 항생제 값이 setting 되어 있다면 클리어 시키지 않는다.
  5524. ds_src.setColumn(sendRow, "tempcol8", ""); //전처방 화면 display clear
  5525. }
  5526. ds_src.setColumn(sendRow, "tempcol9", ""); //전처방 화면 display clear
  5527. ds_src.setColumn(sendRow, "tempcol12", ""); //전처방 화면 display clear
  5528. ds_src.setColumn(sendRow, "tempcol13", ""); //전처방 화면 display clear
  5529. ds_src.setColumn(sendRow, "tempcol14", ""); //전처방 화면 display clear
  5530. ds_src.setColumn(sendRow, "tempcol15", ""); //전처방 화면 display clear
  5531. ds_src.setColumn(sendRow, "drprcpetc1", ""); //건진 SET처방
  5532. ds_src.setColumn(sendRow, "drprcpetc3", ""); //OCR출력정보
  5533. ds_src.setColumn(sendRow, "drprcpetc4", ""); //귀가유치용물품여부
  5534. ds_src.setColumn(sendRow, "drprcpetc5", ""); //multi-day no
  5535. ds_src.setColumn(sendRow, "druglnkno", "0");
  5536. ds_src.setColumn(sendRow, "drgacptflag", "-"); // DRG인정 전처방 복사시 clear
  5537. if ( prcpclscd == "B2" || prcpclscd == "B6") {
  5538. var contyn = lf_getArrayData ( drugmastspec, 0, 5, "^", "|" );
  5539. if ( contyn == "Y" ) {
  5540. var conttestintvlflag = ds_src.getColumn(sendRow, "diagtestconttestintvlflag");
  5541. if ( conttestintvlflag == "N" ) {
  5542. ds_src.setColumn(sendRow, "diagtestconttestcdspec", "-");
  5543. ds_src.setColumn(sendRow, "drugrateqty", "-");
  5544. ds_src.setColumn(sendRow, "diagtestconttestorgtims", "1");
  5545. } else {
  5546. var cdnm = ds_M0545.lookup("cdid", conttestintvlflag, "cdnm");
  5547. var diagtestconttestbasetm = ds_src.getColumn(sendRow, "diagtestconttestbasetm");
  5548. ds_src.setColumn(sendRow, "diagtestconttestcdspec", diagtestconttestbasetm + cdnm);
  5549. ds_src.setColumn(sendRow, "drugrateqty", diagtestconttestbasetm);
  5550. ds_src.setColumn(sendRow, "diagtestconttestorgtims", "1");
  5551. }
  5552. }
  5553. }
  5554. }
  5555. //-- CP,항암프로토콜일 경우 etclnkspec 컬럼 값 셋팅 --//
  5556. else if( prcpInptFlag == "05" ){
  5557. //Hsct 처방일 경우, 조회해 온 자코드들에 값을 setting
  5558. ds_src.setColumn(sendRow, "status", "I");
  5559. //model.setValue(strSrc + "[" + sendRow + "]/prcphopedd", model.getValue ( "/root/init/prcpdd" )); //JJE(-)
  5560. //cp는 이미 인스턴스에 값이 들어있음
  5561. if( utlf_isNull(ds_src.getColumn(sendRow, "etclnkspec")) ){
  5562. ds_src.setColumn(sendRow, "etclnkspec", "-"); //CP처방 or 프로토콜처방 no
  5563. }
  5564. }
  5565. else if( prcpInptFlag == "06" ){
  5566. //항암은 이미 인스턴스에 값이 들어있음
  5567. ds_src.setColumn(sendRow, "etclnkspec", etclnkspecValue_SMMMO00110); //CP처방 or 프로토콜처방 no
  5568. //model.makeValue ( strSrc + "[" + sendRow + "]/cpno", ds_src.getColumn(sendRow, "prtldg") ); //CpNo 에 프로토콜 차수 저장
  5569. }
  5570. else if( prcpInptFlag == "07" ){ //임상시험 프로토콜에서 불러올때.
  5571. if(prcpgenrflag == "I" || prcpgenrflag == "D"){
  5572. ds_src.setColumn(sendRow, "subcretno", ds_init.getColumn(0, "subjsubcretno")); // 임상프로토콜에서 처방시 임상유형의 cretno를 subcretno로 세팅
  5573. }
  5574. }
  5575. //-- CP,항암프로토콜일 경우 etclnkspec 컬럼 값 셋팅 끝 --//
  5576. ds_src.setColumn(sendRow, "inclprcpcd", "-"); //종속처방
  5577. ds_src.setColumn(sendRow, "inclprcpno", "0");//종속처방번호
  5578. //20090518 마정민수정. 입원일 경우 전처방, 약속처방 복사처방의 선처치를 제외한다.
  5579. if( prcpgenrflag != "O" && prcpgenrflag != "S" ) {
  5580. if ( prcpInptFlag == "01" || prcpInptFlag == "02" ) {
  5581. if ( ds_src.getColumn(sendRow, "precureprcpflag") == "Y" ) {
  5582. if( prcpclscd.substring(0,1) == "A" || prcpclscd == "M2" ) ds_src.setColumn(sendRow, "precureprcpflag", "N");
  5583. }
  5584. }
  5585. }
  5586. if ( prcpclscd == "F2" && prcpgenrflag == "O") {
  5587. ds_src.setColumn(sendRow, "rehbprcpenddd", prcpdd); //재활마감일
  5588. } else if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) { //약처방
  5589. // 원내처방사유 SETTING
  5590. lf_hosinPrcpResncdSed( objFlag, strSrc, sendRow );
  5591. //2010. 12. 29 김영학 약처방 원외일 경우 시행부서가 셋팅되어 있지 않으면 기본 외래약국으로 셋팅해준다.
  5592. if( prcpgenrflag != "O" && prcpgenrflag != "S" ) {
  5593. if ( ds_src.getColumn(sendRow, "hosinhosoutflag") == "O"
  5594. && (ds_src.getColumn(sendRow, "prcpexecdeptcd" ) == "-" || ds_src.getColumn(sendRow, "prcpexecdeptcd" ) == "D")) {
  5595. ds_src.setColumn(sendRow, "prcpexecdeptcd", lf_getHardCDList("Y", 260, 3))
  5596. }
  5597. }
  5598. //AST 검사 체크
  5599. var astyn = lf_getArrayData ( drugmastspec, 0, 22, "^", "|" );
  5600. if ( astyn == "Y" ) {
  5601. ds_src.setColumn(sendRow, "asttestflag", "Y");
  5602. }
  5603. //응급 flag 가 Y인 경우는 1회만 가능
  5604. if ( ds_src.getColumn(sendRow, "erprcpflag") == "Y" ||
  5605. ds_src.getColumn(sendRow, "prnprcpflag") == "Y") {
  5606. var prcptims = ds_src.getColumn(sendRow, "prcptims");
  5607. if ( prcptims != "1" ) {
  5608. //1이 아닌 경우는 1로 바꿔주고 경구약인 경우는 용법도 바꿔준다.
  5609. ds_src.setColumn(sendRow, "prcptims", "1");
  5610. var prcpqty = ds_src.getColumn(sendRow, "prcpqty");
  5611. var prcpvol = ds_src.getColumn(sendRow, "prcpvol");
  5612. if ( prcpclscd == "A2" ) {
  5613. fBaseMthd(sendRow);
  5614. }
  5615. if ( prcpclscd == "A2" || prcpclscd == "A4" ) {
  5616. if ( prcptims != "0" ) {
  5617. prcpqty = (eval(prcpqty)*1000/eval(prcptims));
  5618. prcpvol = (eval(prcpvol)*1000/eval(prcptims));
  5619. ds_src.setColumn(sendRow, "prcpqty", Math.round ( prcpqty ) / 1000);
  5620. ds_src.setColumn(sendRow, "prcpvol", Math.round ( prcpvol ) / 1000);
  5621. }
  5622. }
  5623. }
  5624. }
  5625. //by sonjy 20081216 외래일경우 전처방/약속처방에서 copy시 약/주사에 한해 수행부서를 마스터의 부서로 초기화
  5626. //영수증의 환자 가야할곳이 병동약국으로 찍혀 나오는 오류 때문.
  5627. //20081230 마정민수정 변환조건을 병동약국으로 축소함
  5628. if( ds_src.getColumn(sendRow, "prcpexecdeptcd") == "3240300000" && prcpgenrflag == "O" && ( prcpInptFlag == "01" || prcpInptFlag == "02" )) {
  5629. var sTmp23 = ds_src.getColumn(sendRow, "tempcol23");
  5630. if( !isNull(sTmp23) && sTmp23 != "-" ){
  5631. ds_src.setColumn(sendRow, "prcpexecdeptcd", sTmp23);
  5632. }
  5633. }
  5634. } else if ( prcpclscd == "03" ) { //보호자식일 때는 procerdietflag 을 Y로 바꿈
  5635. if ( ds_src.getColumn(sendRow, "prcpcd") == "Q4131004" ) {
  5636. ds_src.setColumn(sendRow, "procerdietflag", "Y");
  5637. }
  5638. } else if ( prcpclscd == "B4" ){
  5639. if ( prcpgenrflag == "O" ) {
  5640. ds_src.setColumn(sendRow, "prepprcpflag", "N");
  5641. } else {
  5642. ds_src.setColumn(sendRow, "prepprcpflag", "Y");
  5643. }
  5644. }
  5645. // hsct 체크
  5646. if ( hsctflag == "Y" ) {
  5647. ds_src.setColumn(sendRow, "hsctlnkno", ds_init.getColumn(0, "hsctlnkno")); //HSCT
  5648. ds_src.setColumn(sendRow, "hscttempprcpflag", "Y"); //HSCT
  5649. } else if ( hsctflag == "M" ){
  5650. ds_src.setColumn(sendRow, "hsctlnkno", ds_init.getColumn(0, "hsctlnkno")); //HSCT
  5651. ds_src.setColumn(sendRow, "hscttempprcpflag", "N"); //HSCT
  5652. }
  5653. if ( !utlf_isNull(inclprcpno) && inclprcpno != "0" ) { //종속처방 처리
  5654. var prcpcd = ds_src.getColumn(sendRow, "prcpcd" );
  5655. //initsrch에서 가져온 종속처방 instance에 값이 있으면 종속처방 코드와 번호를 박아준다.
  5656. var prcpsetcd = ds_src.getColumn(sendRow, "prcpsetcd" );
  5657. var findRow = ds_initsrch_inclprcpcnts.findRowExpr("snglcd == '" + prcpcd + "' && calcscorcdgrup == '" + prcpsetcd + "'");
  5658. var inclprcpcd = ds_initsrch_inclprcpcnts.getColumn(findRow, "inclprcpcd");
  5659. var calcscorcdgrup = "";
  5660. if ( utlf_isNull(inclprcpcd)) {
  5661. //본체에도 코드를 박아준다.
  5662. calcscorcdgrup = ds_initsrch_inclprcpcnts.lookup("calcscorcdgrup", prcpcd, "inclprcpcd"); // GROUP 처방
  5663. } else {
  5664. if ( prcpgenrflag == "O" ) {
  5665. //외래일경우 약, 주사 에 원내처방사유 검사 수술처리에 사용
  5666. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ){
  5667. ds_src.setColumn(sendRow, "hosinhosoutflag", "I");//원내
  5668. ds_src.setColumn(sendRow, "hosinprcpresncd", "55");//원내처방사유(원내처방사유 검사 수술처리에 사용)
  5669. }
  5670. }
  5671. }
  5672. if ( !utlf_isNull(inclprcpcd) || !utlf_isNull(calcscorcdgrup)) {
  5673. ds_src.setColumn(sendRow, "inclprcpno", inclprcpno ); //종속처방번호
  5674. if ( utlf_isNull(inclprcpcd)){
  5675. ds_src.setColumn(sendRow, "inclprcpcd", calcscorcdgrup ); //종속처방
  5676. } else {
  5677. ds_src.setColumn(sendRow, "inclprcpcd", inclprcpcd ); //종속처방
  5678. }
  5679. ds_init.setColumn(0, "inclprcpno", inclprcpno);
  5680. var remainder = inclprcpno % 2;
  5681. // "child 로 구분 하는데 TF소스가 둘다 model.setValue 이다(opener.model.setValue 아님) 확인필요
  5682. // if ( objFlag == "child" ){
  5683. if ( remainder == 1 ) {
  5684. oTrgtObj.ds_src.setColumn(sendRow, "tempcol10", "#eaeaea");
  5685. } else {
  5686. oTrgtObj.ds_src.setColumn(sendRow, "tempcol10", "#ffffcc");
  5687. }
  5688. // } else {
  5689. // if ( remainder == 1 ) {
  5690. // ds_src.setColumn(sendRow, "tempcol10", "#eaeaea" );
  5691. // } else {
  5692. // ds_src.setColumn(sendRow, "tempcol10", "#ffffcc" );
  5693. // }
  5694. // }
  5695. }
  5696. }
  5697. /* by sonjy 20091019 요청번호:3667
  5698. * 전처방(01)과 약속처방(02)을 복사하여 처방시 처방일수가 1일로 수정이 되도록
  5699. * => 무조건 1로 SETTING처리
  5700. */
  5701. var calcmthdcd = lf_getArrayData ( drugmastspec , 0, 26, "^", "|" );
  5702. if ( //model.getValue(strSrc + "[" + sendRow + "]/prcpinptflag") == "01" && model.getValue(strSrc + "[" + sendRow + "]/prcpinptflag") == "02" &&
  5703. prcpclscd.substring(0,1) == "A" && calcmthdcd == "4" && ds_src.getColumn(sendRow, "prcpdayno") > 1 ) {
  5704. ds_src.setColumn(sendRow, "prcpdayno", "1");
  5705. }
  5706. /*by sonjy 20091019
  5707. * 외래처방과 퇴원,퇴원호외래,외출외박처방(응급실,DSC 퇴원 포함)에만 해당으로, 4번에 해당하지 않는 약품 (계산법이 1,2,3,5번)을 처방할 때 처방일수가 0 으로 되도록
  5708. * (0 으로 저장시 처방일수를 넣으라는 메시지가 뜨도록 : 현재 되고 있는 기능임)
  5709. * 전처방과 약속처방, 프로토콜처방을 복사하여 처방시에는 제외 => 즉, 처방검색시에만 적용하되 MSET제외
  5710. */
  5711. if ( prcpclscd.substring(0,1) == "A" && calcmthdcd != "4" && prcpInptFlag == "00" &&
  5712. ( ds_patflag.getColumn(0, "prcpgenrflag") == "O" || ds_init.getColumn(0, "prcpkindcd") == "50" ||
  5713. ds_init.getColumn(0, "prcpkindcd") == "60" || ds_init.getColumn(0, "prcpkindcd") == "70" ) ) {
  5714. if( ds_src.getColumn(sendRow, "inclprcpno") == "0" || ds_src.getColumn(sendRow, "inclprcpno") == "-" ) {
  5715. ds_src.setColumn(sendRow, "prcpdayno", "0");
  5716. }
  5717. }
  5718. ds_src.setColumn(sendRow, "prcpgenrflag", prcpgenrflag ); //처방발생구분
  5719. ds_src.setColumn(sendRow, "prcpkindcd", prcpkindcd ); //처방종류
  5720. //20131105 Start 이정택(마취에서 처방이동시에 수익부서와 수익의를 자동으로 세팅하도록 수정)
  5721. if(ds_src.getColumn(sendRow, "prcpinptflag") == "27"){
  5722. var orddeptcd = "2090000000";
  5723. var orddrid = ds_anst.getColumn(0, "anst_drid");
  5724. var anstdrnm = ds_anst.getColumn(0, "anst_anstdrnm");
  5725. ds_src.setColumn(sendRow, "pampkspec", pid + "|" + indd + "|" + cretno + "|" + orddeptcd + "|" + orddrid); //pampkspec : 등록번호|진료일자|생성번호|진료과|담당의 // 원무PK내역
  5726. ds_src.setColumn(sendRow, "tempcol20", "[마취통증의학과]["+anstdrnm+"]"); //처방창의 주진료과/진료의를 세팅
  5727. }else{
  5728. ds_src.setColumn(sendRow, "pampkspec", pid + "|" + indd + "|" + cretno + "|" + orddeptcd + "|" + orddrid); //pampkspec : 등록번호|진료일자|생성번호|진료과|담당의 // 원무PK내역
  5729. }
  5730. // 20131105 End
  5731. //ds_src.setColumn(sendRow, "pampkspec", pid + "|" + indd + "|" + cretno + "|" + orddeptcd + "|" + orddrid ); //pampkspec : 등록번호|진료일자|생성번호|진료과|담당의 // 원무PK내역
  5732. ds_src.setColumn(sendRow, "prcppkspec", prcpdd + "|0|0|" + sysf_getUserInfo("dutplceinstcd")); //처방키: 처방일자|처방번호|처방이력번호|기관코드
  5733. //20081007 마정민 수정
  5734. //원래 회처방 불가
  5735. //수혈, 영상, Angio, 핵의학영상, 병리, 기능, RT, 수술, 마취, 마취약제, 재료, 기타 이고 마이그레이션 데이터는 1로 setting
  5736. //추가 처치 H4
  5737. //20090514 마정민추가 K2 치과
  5738. if ( ds_src.getColumn(sendRow, "tempcol20" ) == "Y" && (
  5739. prcpclscd == "B4" || prcpclscd == "C2" || prcpclscd == "C4" || prcpclscd == "C6" ||
  5740. prcpclscd == "D2" || prcpclscd == "E2" || prcpclscd == "G2" || prcpclscd == "H2" ||
  5741. prcpclscd == "I2" || prcpclscd == "I4" || prcpclscd == "M2" || prcpclscd == "Z0" ||
  5742. prcpclscd == "H4" || prcpclscd == "K2")) {
  5743. ds_src.setColumn(sendRow, "prcptims", "1"); //처방발생구분
  5744. }
  5745. //20090122 마정민수정: 변경요청번호 670. 단순 방사선 예약 자동 팝업요청
  5746. //20090709 CHC, 단순방사선예약자동팝업 병원별 적용
  5747. var raypopwndcheckyn = ds_initsrch_raypopwndcheckyn.getColumn(0, "trgtcd");
  5748. if ( prcpgenrflag == "O" && lf_getDsValue(ds_src, sendRow, "tempcol2").length > 2 && ds_src.getColumn(sendRow, "tempcol2").substring( 0, 2 ) == "18" && usge == "prcp" ) {
  5749. var msgTitle = "[영상]" + "[" + ds_src.getColumn(sendRow, "prcpcd") + ":" + ds_src.getColumn(sendRow, "prcpnm") + "]";
  5750. if (raypopwndcheckyn != "Y") {
  5751. if(!confirm("단순 방사선 검사를 당일 시행 하시겠습니까? [예:당일,아니요:예약]", msgTitle)) {
  5752. ds_src.setColumn(sendRow, "prcphopedd", "99991231");
  5753. }
  5754. }
  5755. }
  5756. //20090827 차현철, 치료내시경예약 지시처방일 경우 처방명 선택 팝업창 호출
  5757. var escopedirecprcpcd = ds_initsrch_escopedirecprcpcd.getColumn(0, "trgtcd");
  5758. if ( escopedirecprcpcd == ds_src.getColumn(sendRow, "prcpcd") ) {
  5759. frmf_setParameter ( "SPMMB02200_cond2", "5" );
  5760. lf_prcpModal ( "SPMMB02200", 50, 50 );
  5761. ds_src.setColumn(sendRow, "prcpnm", frmf_getParameter ( "SPMMB02200_clinccmt" ));
  5762. frmf_clearParameter("SPMMB02200_clinccmt");
  5763. }
  5764. //SON0919 G3아닌 응급일경우 원내사유 PRCPKINDCD에 의해 움직이므로 PRCPKINDCD가 설정된 후 다시 호출 start
  5765. //퇴원처방 전처방에서 추가처방모드에서 복사시 퇴원처방 원내사유가 적용되는것을 막기 위함임.
  5766. var g3flag = lf_getDsValue(oTrgtObj.ds_init, 0, "erresn");
  5767. if( (prcpgenrflag == "E" && g3flag!= "G3") || prcpgenrflag == "D" ){
  5768. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) { //약처방
  5769. // 원내처방사유 SETTING
  5770. lf_hosinPrcpResncdSed ( objFlag, strSrc, sendRow );
  5771. }
  5772. }
  5773. //SON0919 end
  5774. if ( (prcpkindcd == "50" || prcpkindcd == "60" ) && lf_getArrayData (drugmastspec, 0, 20, "^", "|") == "Y" ) {
  5775. //2008-01-18 김은희 약사 모든처방 자가주사가 가능하게 수정
  5776. if ( prcpclscd == "A6") {
  5777. ds_src.setColumn(sendRow, "selfprcpflag", "Y");
  5778. }
  5779. }
  5780. //20080721 마정민 임상처방에서 넘어오는 것은 clincstdyflag를 Y로 처리
  5781. if ( prcpInptFlag == "07" ) {
  5782. ds_src.setColumn(sendRow, "clincstdyflag", "Y"); //
  5783. }
  5784. var chkprcpcd = ds_src.getColumn(sendRow, "prcpcd")
  5785. /******************** 선처치, 과내검사 시행부서처리 *******************/
  5786. var iFind = -1;
  5787. var precureexecdeptchk = utlf_isNull(this.objects["ds_initsrchprcp_prcpetccnts"]) ? "" : lf_getDsValue(ds_initsrchprcp_prcpetccnts, 0, "precureprcpcd");
  5788. // 기존 search함수에서 무결성이 어긋나 개별 체크 변경 - 20081008 by MoonSH
  5789. var precureprcpflag = "";
  5790. var prcpexecdeptcd = "";
  5791. if( chkprcpcd.charAt(0) != "*" ){
  5792. var firStage = precureexecdeptchk.split("^");
  5793. for( var i = 0; i < firStage.length ; i++ ){
  5794. var secStage = firStage[i].split("|");
  5795. if( chkprcpcd == secStage[0]) {
  5796. iFind = 1;
  5797. precureprcpflag = secStage[1];
  5798. prcpexecdeptcd = secStage[2];
  5799. break;
  5800. }
  5801. }
  5802. }
  5803. if ( parseInt(iFind) >= 0) {
  5804. var charchk = "";
  5805. var arraychk = "";
  5806. if ( precureprcpflag == "Y" ) {
  5807. if( prcpgenrflag == "I" || prcpgenrflag == "E" || prcpgenrflag == "D" ) {
  5808. //입원일 경우 선처치 적용시 약/재료코드는 제외한다. 정보관리팀 요구변경 요청서 2008-11-08 미액팅 분석 후 액팅시점 변경건
  5809. //by sonjy 20081115
  5810. if( prcpclscd.substring(0,1) != "A" && prcpclscd != "M2" ) ds_src.setColumn(sendRow, "precureprcpflag", "Y");
  5811. } else {
  5812. ds_src.setColumn(sendRow, "precureprcpflag", "Y");
  5813. }
  5814. }
  5815. if ( prcpexecdeptcd != "X" && !utlf_isNull ( prcpexecdeptcd ) ) {
  5816. ds_src.setColumn(sendRow, "prcpexecdeptcd", prcpexecdeptcd);
  5817. }
  5818. }
  5819. if ( lf_getDsValue(ds_root, 0, "addprcp") == "Y" && ds_src.getColumn(sendRow, "inclprcpno") == "0" ) {
  5820. //시행부서 수혈, 식이, 재활, 마취, 치과, 방사선치료, 기타를 제외한 처방은 자동 선처치. 단 m-set은 예외
  5821. if ((ds_src.getColumn(sendRow, "prcpclscd") == "A2" ||
  5822. ds_src.getColumn(sendRow, "prcpclscd") == "A4" ||
  5823. ds_src.getColumn(sendRow, "prcpclscd") == "A6" ||
  5824. ds_src.getColumn(sendRow, "prcpclscd") == "B2" ||
  5825. ds_src.getColumn(sendRow, "prcpclscd") == "B6" ||
  5826. ds_src.getColumn(sendRow, "prcpclscd") == "C2" ||
  5827. ds_src.getColumn(sendRow, "prcpclscd") == "C4" ||
  5828. ds_src.getColumn(sendRow, "prcpclscd") == "C6" ||
  5829. ds_src.getColumn(sendRow, "prcpclscd") == "D2" ||
  5830. ds_src.getColumn(sendRow, "prcpclscd") == "E2" ||
  5831. ds_src.getColumn(sendRow, "prcpclscd") == "H2" ||
  5832. ds_src.getColumn(sendRow, "prcpclscd") == "H4" ||
  5833. ds_src.getColumn(sendRow, "prcpclscd") == "M2" ) &&
  5834. lf_getDsValue(ds_root, 0, "admininfo").substring (0,1) != "Y" ) {
  5835. ds_src.setColumn(sendRow, "precureprcpflag", "Y");
  5836. }
  5837. }
  5838. // 시행부서 처방 가퇴원 누락처방 사유 및 일시 셋팅 - 20081221 by MoonSH
  5839. if ( lf_getDsValue(ds_root, 0, "addprcp") == "Y" && !utlf_isNull(ds_prcpresn.getColumn(0, "prcpdd")) ) {
  5840. ds_src.setColumn(sendRow, "tempcol19", ds_prcpresn.getColumn(0, "resncnt"));
  5841. ds_src.setColumn(sendRow, "tempcol12", ds_prcpresn.getColumn(0, "prcptime")); // tempcol24를 사용하던것을 tempcol12로 변경 처리 2013.11.28 엄영만
  5842. }
  5843. /******************** 선처치, 과내검사 시행부서 처리 끝 ********************/
  5844. //시행부서, 발행부서 SETTING
  5845. lf_prcpExecIssDeptCdSet( strSrc, sendRow )
  5846. if (!utlf_isNull(lf_getDsValue(ds_init, 0, "prcpinptflag" ))){ //27: 마취기록, 28: 시행부서처방
  5847. ds_src.setColumn(sendRow, "prcpinptflag", ds_init.getColumn(0, "prcpinptflag"));
  5848. }
  5849. //추가컬럼 test
  5850. ds_src.setColumn(sendRow, "aftcertflag", "-");
  5851. ds_src.setColumn(sendRow, "aftcertdrid", "-");
  5852. ds_src.setColumn(sendRow, "prcpvalidd", "00000000");
  5853. if ( utlf_isNull(ds_src.getColumn(sendRow, "anticncrdayno"))) {
  5854. ds_src.setColumn(sendRow, "anticncrdayno", "0");
  5855. }
  5856. if ( utlf_isNull(ds_src.getColumn(sendRow, "druglnkno"))) {
  5857. ds_src.setColumn(sendRow, "druglnkno", "0");
  5858. }
  5859. if (ds_src.getColumn(sendRow, "prcpcd") == "FE6541" ) {
  5860. var prcpdelivefact = lf_getDsValue(ds_src, sendRow, "prcpdelivefact");
  5861. var iFind1 = prcpdelivefact.indexOf( "Long Stream" );
  5862. var iFind2 = prcpdelivefact.indexOf( "Routine" );
  5863. //전달사항에 값이 있으면 "-" 로처리
  5864. if ( eval( iFind1) <= 0 && eval(iFind2) <= 0 ) {
  5865. if ( prcpdelivefact == "-" ) {
  5866. ds_src.setColumn(sendRow, "prcpdelivefact", "[Routine]");
  5867. } else {
  5868. ds_src.setColumn(sendRow, "prcpdelivefact", "[Routine] " + prcpdelivefact);
  5869. }
  5870. }
  5871. }
  5872. if ( ds_src.getColumn(sendRow, "tempcol18") == "Y" ) {
  5873. var len = 0;
  5874. if (utlf_isNull(this.objects["ds_migdrugmthdlist"])) {
  5875. dsf_createDs("ds_migdrugmthdlist", [{col:"prcpcd", type:"string", size:256},
  5876. {col:"prcpnm", type:"string", size:256},
  5877. {col:"migdrugmthdspccdnm", type:"string", size:256},
  5878. {col:"drugmthdspccd", type:"string", size:256},
  5879. {col:"drugmthdspccdnm", type:"string", size:256}]);
  5880. }
  5881. len = ds_migdrugmthdlist.addRow();
  5882. ds_migdrugmthdlist.setColumn(len, "prcpcd", ds_src.getColumn(sendRow, "prcpcd"));
  5883. ds_migdrugmthdlist.setColumn(len, "prcpnm", ds_src.getColumn(sendRow, "prcpnm"));
  5884. if ( ds_src.getColumn(sendRow, "rateprcpflag") == "Y" ) {
  5885. ds_migdrugmthdlist.setColumn(len, "migdrugmthdspccdnm", "[비율처방불가] 투약량이 다른 처방을 분리해서 처방하셔야 합니다.\n\n" + ds_src.getColumn(sendRow, "exptmthdfact") + ".");
  5886. ds_src.setColumn(sendRow, "rateprcpflag", "N");
  5887. ds_src.setColumn(sendRow, "drugrateqty", "-");
  5888. } else {
  5889. ds_migdrugmthdlist.setColumn(len, "migdrugmthdspccdnm", ds_src.getColumn(sendRow, "exptmthdfact"));
  5890. }
  5891. ds_migdrugmthdlist.setColumn(len, "drugmthdspccd", ds_src.getColumn(sendRow, "drugmthdspccd"));
  5892. ds_migdrugmthdlist.setColumn(len, "drugmthdspccdnm", ds_src.getColumn(sendRow, "drugmthdspccdnm"));
  5893. ds_src.setColumn(sendRow, "exptmthdfact", "-");
  5894. }
  5895. //수술예방적 항생제 CHECK SON0926 START 사유입력 대상자일 경우
  5896. //경구약은 cdss항생제 에서 제외. 따라서 외용/주사일 경우 cdss항생제 화면이 뜬 후에 check로직이 뜨도록..
  5897. if ( prcpgenrflag == "I" && usge == "prcp" && ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" )) { //약처방
  5898. if( !lf_chkOpDrug(objFlag , strSrc , sendRow) ) return 0;
  5899. }
  5900. //수술예방적 항생제 CHECK SON0926 END
  5901. //20090520 마정민수정
  5902. //저장시 체크하던 ocrprnt 여부를 search 함수의 문제로 처방복사시 tempcol13에 값을 넣어놨다가 저장시 tempcol13을 읽는 방법으로 수정
  5903. var ocrprnt = utlf_isNull(this.objects["ds_initsrchprcp_prcpetccnts"]) ? "" : ds_initsrchprcp_prcpetccnts.getColumn(0, "ocrprnt");
  5904. if (utlf_isNull(ocrprnt)) {
  5905. ocrprnt = ds_initsrch_prcpetccnts.getColumn(0, "ocrprnt");
  5906. }
  5907. var ocrprntArray = ocrprnt.split("|");
  5908. var ocrprcpcd = "OCR" + ds_src.getColumn(sendRow, "prcpcd");
  5909. for( var m = 0; m < ocrprntArray.length; m++ ){
  5910. if( ocrprcpcd == ocrprntArray[m]) {
  5911. ds_src.setColumn(sendRow, "tempcol13", "Y");
  5912. break;
  5913. }
  5914. }
  5915. // 20100108 한재상 - 유전자검사 동의서 출력방식 변경 (OCR -> REX)
  5916. var ocrprogprnt = utlf_isNull(this.objects["ds_initsrchprcp_prcpetccnts"]) ? "" : ds_initsrchprcp_prcpetccnts.getColumn(0, "ocrprogprnt");
  5917. var ocrprogprntArray = ocrprogprnt.split("|");
  5918. var ocrprogprcpcd = "OCRPROG" + ds_src.getColumn(sendRow, "prcpcd");
  5919. for( var m = 0; m < ocrprogprntArray.length; m++ ){
  5920. if( ocrprogprcpcd == ocrprogprntArray[m]) {
  5921. ds_src.setColumn(sendRow, "tempcol13", "A");
  5922. break;
  5923. }
  5924. }
  5925. //20090521 마정민추가 외래수술프로세스의 추가로 외래수술탭에서 처방을 낼 경우 자동선처치로 수정
  5926. if (!utlf_isNull(ds_operation.getColumn(0, "oprsrvno")) && prcpgenrflag == "O"
  5927. && ds_src.getColumn(sendRow, "prnprcpflag") != "Y"
  5928. && ds_src.getColumn(sendRow, "prcpclscd") != "B4"
  5929. ) {
  5930. ds_src.setColumn(sendRow, "precureprcpflag", "Y"); //
  5931. }
  5932. if ( ds_src.getColumn(sendRow, "prcpflag") != "2" ) { //지시처방이 아니면 이름을 다시 만들어 준다.
  5933. lf_makePrcpNm( "ds_main_prcplist", sendRow );
  5934. }
  5935. // 2010. 10. 19 약속처방이나 전처방에서 처방 복사시 1회 용량에 값이 없을 경우 용량 계산하는 로직 수행
  5936. if ( ds_src.getColumn(sendRow, "drprcpetc7") == "-" ) {
  5937. if (lf_ContainsHardCD("420", "Y") && ds_src.getColumn(sendRow, "prcpinptflag") == "02") { // 2013.02.21 엄영만 약속처방 1회 용량 없을 시 메세지 팝업.
  5938. var sPrcpcd = ds_src.getColumn(sendRow, "prcpcd");
  5939. var sPrcpnm = ds_src.getColumn(sendRow, "prcpnm");
  5940. sysf_messageBox ( sPrcpnm +"["+ sPrcpcd + "] 처방의 1회용량값이 존재하지 않습니다.\n약속처방 구성을 확인 하시기 바랍니다.", "E999" );
  5941. } else {
  5942. DrugCalc2( "prcpqty" , sendRow);
  5943. }
  5944. }
  5945. // 2011.07.05 엄영만 수익분류 의료영상복사-CD 복사-CD copy 처방, 산재/자보 환자 디폴트 비급여 셋팅 원무 최인영(5069) 요청
  5946. if (ds_src.getColumn(sendRow, "tempcol2") == "24|01|01" && (ds_paminfo.getColumn(0, "insukind") == "31" || ds_paminfo.getColumn(0, "insukind") == "41")) {
  5947. ds_src.setColumn(sendRow, "payflagcd", "1");
  5948. }
  5949. // 2013.09.26 엄영만 수익분류 초음파 처방이고 수가정보의 급비가 급여(0), 급여불가 보조유형일 경우 디폴트 비급여 설정
  5950. if (ds_src.getColumn(sendRow, "tempcol2").length > 2 && ds_src.getColumn(sendRow, "tempcol2" ).substring( 0, 2 ) == "21" && ds_src.getColumn(sendRow, "spynpy1") == "0" ) {
  5951. var insukind = ds_paminfo.getColumn(0, "insukind");
  5952. if ( (insukind != "11" && insukind != "21" && insukind != "22") // 보험 유형이 건강보험 또는 의료급여 1,2종이 아니면 비급여 처리
  5953. || (!lf_ContainsHardCD("442", ds_paminfo.getColumn(0, "suppkind"))) ) { // 급여가능 보조유형이 아닐경우
  5954. ds_src.setColumn(sendRow, "payflagcd", "2"); // 디폴트 비급여 처리
  5955. }
  5956. }
  5957. //model.addLog(" ************* End Of addPrcpSetValue()");
  5958. return true;
  5959. }
  5960. /**
  5961. * @desc : 처방 코드 정보를 조회 하는 함수 addPrcpSetValue()에서 값을 셋팅 할때 처방 코드별 참조자료를 셋팅 한다.
  5962. * @param : sPrcpCodes - 처방 편집 화면으로 복사되는 처방 코드
  5963. * @return : 처방화면(SMMO00100) /root/prcpcodeinfo 셋팅
  5964. * @authur : 엄영만 2011. 10. 13
  5965. * 변환OK
  5966. * @---------------------------------------------------
  5967. */
  5968. function lf_getPrcpCodeInfo(sPrcpCodes) {
  5969. var pamInfoNode = "/root/paminfo/list";
  5970. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag" ); //입력구분
  5971. var prcpdd = ds_init.getColumn(0, "prcpdd" ); //처방일
  5972. var pid = ds_paminfo.getColumn(0, "pid" );
  5973. var ioflag = ds_paminfo.getColumn(0, "ioflag" );
  5974. var cretno = ds_paminfo.getColumn(0, "cretno" );
  5975. var orddeptcd = ds_paminfo.getColumn(0, "orddeptcd" );
  5976. var orddd = "";
  5977. var orddrid = "";
  5978. //건진일 경우 check추가.
  5979. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ) {
  5980. orddd = ds_paminfo.getColumn(0, "orddd" );
  5981. orddrid = ds_paminfo.getColumn(0, "orddrid" );
  5982. } else {
  5983. orddd = ds_paminfo.getColumn(0, "indd" );
  5984. orddrid = ds_paminfo.getColumn(0, "medispclid" );
  5985. }
  5986. ds_TRMMO00143.clearData();
  5987. ds_TRMMO00143.addRow();
  5988. if(!utlf_isNull(sPrcpCodes)){
  5989. ds_TRMMO00143.setColumn(0, "prcpcds", sPrcpCodes); //처방코드
  5990. ds_TRMMO00143.setColumn(0, "prcpdd", prcpdd); //처방일
  5991. ds_TRMMO00143.setColumn(0, "ioflag", ioflag); //외래입원구분
  5992. ds_TRMMO00143.setColumn(0, "pid", pid); //등록번호
  5993. ds_TRMMO00143.setColumn(0, "orddd", orddd); //진료일자
  5994. ds_TRMMO00143.setColumn(0, "cretno", cretno); //생성번호
  5995. ds_TRMMO00143.setColumn(0, "orddeptcd", orddeptcd); //진료과
  5996. ds_TRMMO00143.setColumn(0, "orddrid", orddrid); //진료의
  5997. var oParam = {};
  5998. oParam.id = "TRMMO00143";
  5999. oParam.service = "prcpmngtapp.PrcpMngt";
  6000. oParam.method = "reqGetPrcpCodeInfo";
  6001. oParam.inds = "req=ds_TRMMO00143";
  6002. oParam.outds = "ds_prcpcodelist=prcpcodelist";
  6003. oParam.async = false;
  6004. oParam.callback = "cf_TRMMO00143";
  6005. tranf_submit(oParam);
  6006. }
  6007. }
  6008. function cf_TRMMO00143(sSvcId, nErrorCode, sErrorMsg) {
  6009. if(nErrorCode < 0) {
  6010. // 테스트 메세지 팝업 여부 추후 삭제 해야 함. 엄영만 2011.11.19
  6011. var sChkMsgPopYn = lf_getHardCDList("Y", 403, 3); // 403 테스트메세지 사용여부
  6012. if (sChkMsgPopYn == "Y"){
  6013. alert("처방정보 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  6014. }
  6015. }
  6016. }
  6017. /**
  6018. * @desc : 선택진료 여부 선택진료의사를
  6019. * addPrcpSetValue()에서 값을 셋팅 선택진료처방 및 선택진료의사를 셋팅 한다..
  6020. * @param : strSrc => setting할 source node
  6021. : sendRow => setting할 row
  6022. : prcpInptFlag => 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  6023. * @return : 선택진료처방여부, 선택진료의사 셋팅
  6024. * @authur : 엄영만 2011. 11. 08
  6025. * 변환OK
  6026. * @---------------------------------------------------
  6027. */
  6028. function lf_setPrcpSpecValue( strSrc, sendRow, prcpInptFlag ) {
  6029. var ds_src = this.objects[strSrc];
  6030. //2011.01.12 MJM수정. 선택진료 가능처방은 일괄위임일 경우 무조건 선택진료처리.
  6031. //2011.10.01 고시관련 수정 일괄위임의 경우 선택진료 처리.
  6032. //선택진료여부처리는 결정(검사,영상진단) 무조건 선택진료가능항목으로 처리
  6033. var sChoiordFlag = "N";
  6034. var sOrdDrId = "";
  6035. var sPrcpClsCd = ds_src.getColumn(sendRow, "prcpclscd"); // 처방종류
  6036. var sPrcpCd = ds_src.getColumn(sendRow, "prcpcd"); // 처방코드
  6037. var sDrugMthdSpcCd = ds_src.getColumn(sendRow, "drugmthdspccd"); // 처방 검체코드(병리 처방은 검체코드가 있을때만 선택진료 설정함.)
  6038. var sPrcpGenrFlag = ds_patflag.getColumn(0, "prcpgenrflag"); // 처방입력구분(외래, 입원, 응급..)
  6039. var sSpecOrdType = lf_getDsValue(ds_paminfo, 0, "specordtype"); // 선택진료 타입 (B:일괄 위임)
  6040. var sSpcspifYn = ""; // 부분 선택진료 위임 여부
  6041. var sSpecCls = ""; // 선택진료처방 분류
  6042. var sTodaySpcDrId = ""; // 오늘 선택진료의
  6043. var sAllSpcDrId = ""; // 가능 선택진료의
  6044. var sPreSpecDrId = ""; // 기존 선택진료의
  6045. var sPrcpSpecDrId = "";
  6046. var sChkSpecDrId = "";
  6047. sSpcspifYn = ds_prcpcodelist.lookup("prcpcd", sPrcpCd, "spcspifyn");
  6048. if(utlf_isNull(sSpcspifYn)) { // 처방 코드 정보가 없으면 -- App 처방 복사 로직
  6049. sSpcspifYn = lf_getDsValue(ds_src, sendRow, "spcspifyn"); // 부분 선택진료 위임 여부
  6050. sSpecCls = lf_getDsValue(ds_src, sendRow, "speccls"); // 선택진료처방 분류
  6051. sTodaySpcDrId = lf_getDsValue(ds_src, sendRow, "todayspcdrid"); // 오늘 선택진료의
  6052. sAllSpcDrId = lf_getDsValue(ds_src, sendRow, "allspcdrid"); // 가능 선택진료의
  6053. } else { // 처방 코드 정보가 있으면 -- Web 처방 복사 로직
  6054. sSpcspifYn = ds_prcpcodelist.lookup("prcpcd", sPrcpCd, "spcspifyn"); // 부분 선택진료 위임 여부
  6055. sSpecCls = ds_prcpcodelist.lookup("prcpcd", sPrcpCd, "speccls"); // 선택진료처방 분류
  6056. sTodaySpcDrId = ds_prcpcodelist.lookup("prcpcd", sPrcpCd, "todayspcdrid"); // 오늘 선택진료의
  6057. sAllSpcDrId = ds_prcpcodelist.lookup("prcpcd", sPrcpCd, "allspcdrid"); // 가능 선택진료의
  6058. }
  6059. if (ds_src.getColumn(sendRow, "tempcol24") == "Y") { //선택진료가능처방
  6060. if (sPrcpGenrFlag == "E") { // 응급실에서 발행 하는 처방일경우 선택진료 자동 셋팅 하지 않도록 수정. 심사실 윤순길팀장님 요청. 엄영만 2011.11.23
  6061. if ( sSpecOrdType == "B" || sSpcspifYn == "Y" ) {// 일괄선택진료 위임 일 경우 또는 부분선택진료 위임 일 경우(처방 항목에 위임)
  6062. sChoiordFlag = "Y";
  6063. ds_src.setColumn(sendRow, "choiordflag", "Y");
  6064. }
  6065. } else { // 응급실에서 발행 하는 처방이 아닐 경우
  6066. if ( ds_paminfo.getColumn(0, "specordyn") == "Y" // 선택진료의사(교수님 진료)
  6067. || sSpecOrdType == "B" // 일괄선택진료 위임 일 경우
  6068. || sSpcspifYn == "Y" // 부분선택진료 위임 일 경우(처방 항목에 위임)
  6069. || sSpecCls == "02" // 선택진료 분류가 검사인것
  6070. || sSpecCls == "03" // 선택진료 분류가 영상진단인것
  6071. || (sPrcpClsCd == "C6" && ds_paminfo.getColumn(0, "insukind") == "11") // 건강보험이면서 처방분류가 핵의학체내 일 경우는 무조건 선택진료가 발생하도록 수정 (의사가 체크 해제 할 수 있음): 2011. 02.07 김영학
  6072. || (sPrcpClsCd == "D2" && ds_paminfo.getColumn(0, "insukind") == "11") // 건강보험이면서 처방분류가 병리 처방은 선택진료 가능 처방은 무조건 선택진료로 한다. 김영학
  6073. || (prcpInptFlag == '02' && ds_src.getColumn(sendRow, "choiordflag") == "Y") ) { //약속처방이고 선택진료 체크 되어 있는경우
  6074. sChoiordFlag = "Y";
  6075. ds_src.setColumn(sendRow, "choiordflag", "Y");
  6076. }
  6077. }
  6078. }
  6079. if ( sChoiordFlag == "Y" ) {
  6080. if ( sPrcpGenrFlag == "O" ) {
  6081. sOrdDrId = ds_paminfo.getColumn(0, "orddrid");
  6082. } else {
  6083. sOrdDrId = ds_paminfo.getColumn(0, "medispclid");
  6084. }
  6085. sPreSpecDrId = ds_src.getColumn(sendRow, "specdrid"); // 기존 선택진료의
  6086. if (sPreSpecDrId == "-") {
  6087. sPreSpecDrId = "";
  6088. }
  6089. if (sPrcpClsCd == "D2" && (!utlf_isNull(sDrugMthdSpcCd) || sDrugMthdSpcCd != "-")) { // 병리처방은 검체 코드로 조회 한다.
  6090. var sPrcpDd = ds_init.getColumn(0, "prcpdd");
  6091. ds_TRMMO00144.clearData();
  6092. ds_TRMMO00144.addRow();
  6093. ds_TRMMO00144.setColumn(0, "codeflag", "G" ); //코드구분(S 수가코드, G 검체)
  6094. ds_TRMMO00144.setColumn(0, "prcpdd", sPrcpDd ); //처방일
  6095. ds_TRMMO00144.setColumn(0, "calcscorcd", sDrugMthdSpcCd ); //검체코드
  6096. var oParam = {};
  6097. oParam.id = "TRMMO00144";
  6098. oParam.service = "prcpmngtapp.PrcpMngt";
  6099. oParam.method = "reqGetPrcpSpcDrInfo";
  6100. oParam.inds = "req=ds_TRMMO00144";
  6101. oParam.outds = "ds_spcdrinfo=info";
  6102. oParam.async = false;
  6103. oParam.callback = "cf_TRMMO00144";
  6104. tranf_submit(oParam);
  6105. sTodaySpcDrId = ds_spcdrinfo.getColumn(0, "todayspcdrid"); // 오늘 선택진료의
  6106. sAllSpcDrId = ds_spcdrinfo.getColumn(0, "allspcdrid"); // 가능 선택진료의
  6107. }
  6108. if( prcpInptFlag == '02' && !utlf_isNull(sPreSpecDrId) && utlf_isSearchString(sAllSpcDrId, sPreSpecDrId)) { // 약속처방 선택의가 가능선택의일 경우 약속처방 선택의 설정
  6109. ds_src.setColumn(sendRow, "specdrid", sPreSpecDrId);
  6110. } else if (utlf_isSearchString(sAllSpcDrId, sOrdDrId) ){ // 가능선택의에 진료의가 포함 될 경우
  6111. ds_src.setColumn(sendRow, "specdrid", sOrdDrId);
  6112. } else {
  6113. switch(sTodaySpcDrId) {
  6114. case "NO_DATA_FOUND": // 오늘 선택진료의사가 없는경우
  6115. if ( sAllSpcDrId == "NO_DATA_FOUND" ) { // 가능한 선택의가 없을경우
  6116. if ( prcpInptFlag == '02' && !utlf_isNull(sPreSpecDrId) ) { // 약속처방의사가 있으면
  6117. ds_src.setColumn(sendRow, "specdrid", sPreSpecDrId);
  6118. } else if ( ds_paminfo.getColumn(0, "specordyn") == "Y" ) { // 교수진료이고, 시행부서가 없거나 진료과랑 같으면 진료의로 설정
  6119. if ( ds_paminfo.getColumn(0, "orddeptcd") == ds_src.getColumn(sendRow, "prcpexecdeptcd")
  6120. || ds_src.getColumn(sendRow, "prcpexecdeptcd") == ""
  6121. || ds_src.getColumn(sendRow, "prcpexecdeptcd") == "-") {
  6122. ds_src.setColumn(sendRow, "specdrid", sOrdDrId ); // 진료의를 선택의로 설정
  6123. } else {
  6124. ds_src.setColumn(sendRow, "specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6125. }
  6126. } else {
  6127. ds_src.setColumn(sendRow, "specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6128. }
  6129. } else if (utlf_isSearchString(sAllSpcDrId, ",")) { // 가능의사가 2명 이상일경우
  6130. ds_src.setColumn(sendRow, "specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6131. } else if (sAllSpcDrId == "ERROR") { // 가능의사 정보 조회시 에러
  6132. alert("선택진료 가능의사 정보 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  6133. ds_src.setColumn(sendRow, "specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6134. } else { // 가능의사가 1명일 경우
  6135. ds_src.setColumn(sendRow, "specdrid", sAllSpcDrId); // 가능의사 셋팅
  6136. }
  6137. break;
  6138. case "TOO_MANY_ROWS": // 오늘 선택진료의사가 2명이상인경우
  6139. ds_src.setColumn(sendRow, "specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6140. break;
  6141. case "ERROR": // 오늘 선택진료의사정보를 가져오는중 에러
  6142. alert("오늘 선택진료 의사정보 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  6143. ds_src.setColumn(sendRow, "specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6144. break;
  6145. default: // 오늘 선택진료의사가 1명인경우
  6146. ds_src.setColumn(sendRow, "specdrid", sTodaySpcDrId); // 오늘 선택진료의 설정
  6147. break;
  6148. }
  6149. }
  6150. sPrcpSpecDrId = ds_src.getColumn(sendRow, "specdrid")
  6151. sChkSpecDrId = ds_specdrinfo.lookup("userid", sPrcpSpecDrId, "userid");
  6152. if (utlf_isNull(sChkSpecDrId)) {
  6153. ds_src.setColumn(sendRow, "choiordflag", "" );
  6154. lf_chgChoiDr ( "auto", sendRow );
  6155. }
  6156. } else {
  6157. ds_src.setColumn(sendRow, "choiordflag", "N" );
  6158. ds_src.setColumn(sendRow, "specdrid", "-" );
  6159. }
  6160. //이은영 과장 요청 마취의 setting by sonjy 20081010 start
  6161. if ( ds_anst.getColumn(0, "paramyn" ) == "Y" ) {
  6162. if ( sPrcpClsCd == "I2" || sPrcpClsCd == "I4" ) {
  6163. //마취의 ID가 있을 경우 만 setting
  6164. if( !utlf_isNull( ds_anst.getColumn(0, "anst_drid") ) ){
  6165. //특진처방 이나 의사가 특진의사가 아닌경우 일반진료처방으로 설정
  6166. if( sChoiordFlag == "Y" ) {
  6167. if( ds_anst.getColumn(0, "anst_specordflag") != "A" ){
  6168. ds_src.setColumn(sendRow, "choiordflag", "N" );
  6169. }
  6170. }
  6171. ds_src.setColumn(sendRow, "specdrid", ds_anst.getColumn(0, "anst_drid") ) ;
  6172. }
  6173. }
  6174. }
  6175. //마취의 setting by sonjy 20081010 end
  6176. //20110517_김영학 /선택진료 처방이지만 선택진료의가 비선택진료의 일 경우에는 선택진료여부를 기본값으로 변경한다.
  6177. // 선택진료 체크가 되어 있으면서 의사가 비선택의사 일 경우에는 선택진료 여부를 -으로 처리한다.
  6178. if (sChoiordFlag == "Y" ) {
  6179. var chkChoiSpcldrid = ds_src.getColumn(sendRow, "specdrid" );
  6180. var ds_usercombo = emr_getOrderBaseInfo("usercombo")
  6181. var choiSpclDrid = ds_usercombo.lookup("userid", chkChoiSpcldrid, "userid");
  6182. if ( utlf_isNull(choiSpclDrid)) {
  6183. ds_src.setColumn(sendRow, "choiordflag", "N" );
  6184. ds_src.setColumn(sendRow, "specdrid", "-" );
  6185. }
  6186. }
  6187. //20110517 선택진료 처방이지만 선택진료의가 비선택진료의 일 경우에는 선택진료여부를 기본값으로 변경한다. END
  6188. }
  6189. function cf_TRMMO00144(sSvcId, nErrorCode, sErrorMsg) {
  6190. if(nErrorCode < 0)
  6191. alert("병리검체 선택진료의사 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  6192. }
  6193. /***************************************************************************************************
  6194. * Function : lf_clearEMRLoadingInfo
  6195. * Description : 상단의 로딩 Instance Clear
  6196. * Argument :
  6197. * return type : void
  6198. * Creator :
  6199. ***************************************************************************************************/
  6200. function lf_clearEMRLoadingInfo()
  6201. {
  6202. var viewerObj = frmf_getViewer("patientInfo");
  6203. viewerObj.ds_loadinginfo.clearData();
  6204. }
  6205. /***************************************************************************************************
  6206. * Function : lf_setEMRLoadingInfo
  6207. * Description : 처방 기록 환자정보 setting
  6208. * Argument :
  6209. * return type :
  6210. * Creator :
  6211. ***************************************************************************************************/
  6212. function lf_setEMRLoadingInfo()
  6213. {
  6214. sysf_setGlobalVariable("OrderMainRefresh", "Y");// 처방 메인 refresh 단일화를 위한 글로벌 변수 셋팅 - 20081212 by Moonsh
  6215. ds_reqdata.clearData("/root/send/reqdata");
  6216. var sysMessageobj = frmf_getViewer("sysMessage");
  6217. var srchtabflag = sysMessageobj.frmf_getParameter("PATLIST_TABFLAG");
  6218. var OPERATIONINFO_NODE = "/root/properties/patient/operationinfo";
  6219. if (ds_operationinfo.instances(0).selectNodes("/root/properties/patient/operationinfo").rowcount == 0) {
  6220. OPERATIONINFO_NODE = "/root/initdata/oppatopscheinfo";
  6221. }
  6222. var sPid = fGetPatientInfo("pid");
  6223. var sCretno = fGetPatientInfoDetail("cretno");
  6224. var sOrdtype = srchtabflag;
  6225. var sOrddeptcd = fGetPatientInfoDetail("orddeptcd");
  6226. var sInsukind = fGetPatientInfoDetail("insukind");
  6227. var sOrddrid = "";
  6228. var sOrddd = "";
  6229. var sSrchdd = "";
  6230. var sPrcpdd = "";
  6231. if (sOrdtype == "O" || sOrdtype == "S") {
  6232. sOrddrid = fGetPatientInfoDetail("orddrid");
  6233. sOrddd = fGetPatientInfoDetail("orddd");
  6234. sSrchdd = "";
  6235. sPrcpdd = sOrddd;
  6236. }
  6237. else if (sOrdtype == "T") {
  6238. sOrddd = OPERATIONINFO_NODE.getColumn(0, "opcnfmdd");
  6239. sOrddrid = OPERATIONINFO_NODE.getColumn(0, "perfdrid");
  6240. sOrddeptcd = OPERATIONINFO_NODE.getColumn(0, "perfdeptcd");
  6241. ds_reqdata.setColumn(0, "/root/send/reqdata/patflag" , OPERATIONINFO_NODE.getColumn(0, "oppatflagcd")); //실제 ioflag는 patflag로 설정
  6242. ds_reqdata.setColumn(0, "/root/send/reqdata/procflag" , "F");
  6243. ds_reqdata.setColumn(0, "/root/send/reqdata/oprsrvno" , OPERATIONINFO_NODE.getColumn(0, "oprsrvno"));
  6244. ds_reqdata.setColumn(0, "/root/send/reqdata/ophistno" , OPERATIONINFO_NODE.getColumn(0, "ophistno"));
  6245. sSrchdd = ds_patinfo.getColumn(0, "/root/main/patinfo/prcpdd"); //조회일자
  6246. if (!utlf_isNull(sSrchdd) && sSrchdd != "-")
  6247. sPrcpdd = sSrchdd;
  6248. else
  6249. sPrcpdd = utlf_getCurrentDate();
  6250. }
  6251. else {
  6252. sOrddrid = fGetPatientInfoDetail("medispclid");
  6253. sOrddd = fGetPatientInfoDetail("indd");
  6254. sPrcpdd = fGetPatientInfo("prcpdd");
  6255. }
  6256. var sHngnm = "";
  6257. ds_reqdata.setColumn(0, "/root/send/reqdata/pid" , sPid);
  6258. ds_reqdata.setColumn(0, "/root/send/reqdata/orddd" , sOrddd);
  6259. ds_reqdata.setColumn(0, "/root/send/reqdata/cretno" , sCretno);
  6260. ds_reqdata.setColumn(0, "/root/send/reqdata/hngnm" , sHngnm);
  6261. ds_reqdata.setColumn(0, "/root/send/reqdata/prcpgenrflag" , sOrdtype);
  6262. ds_reqdata.setColumn(0, "/root/send/reqdata/orddeptcd" , sOrddeptcd);
  6263. ds_reqdata.setColumn(0, "/root/send/reqdata/orddrid" , sOrddrid);
  6264. ds_reqdata.setColumn(0, "/root/send/reqdata/instcd" , sysf_getUserInfo("dutplceinstcd"));
  6265. ds_reqdata.setColumn(0, "/root/send/reqdata/prcpdd" , sPrcpdd);
  6266. ds_reqdata.setColumn(0, "/root/send/reqdata/srchtabflag" , sOrdtype );//대상자리스트탭 구분
  6267. ds_reqdata.setColumn(0, "/root/send/reqdata/insukind" , sInsukind);
  6268. //입원
  6269. ds_reqdata.setColumn(0, "/root/send/reqdata/srchdd" , sSrchdd);
  6270. //후인증 count start
  6271. ds_reqdata.setColumn(0, "/root/send/reqdata/userdeptcd" , sysf_getUserInfo("dutplcecd"));
  6272. ds_reqdata.setColumn(0, "/root/send/reqdata/userkind" , "D");
  6273. ds_reqdata.setColumn(0, "/root/send/reqdata/execkind" , "patlist");
  6274. ds_reqdata.setColumn(0, "/root/send/reqdata/aftcertorddrid", sysf_getUserInfo("userid"));
  6275. //후인증 count end
  6276. //전처방 개인별 조회 option 추가
  6277. var bfprcpviewflag = sysMessageobj.ds_orderbasicinfo.getColumn(0, "/root/properties/orderbasicinfo/envinfo[qestcd='018']/answcnt");
  6278. ds_reqdata.setColumn(0, "/root/send/reqdata/bfprcpviewflag", bfprcpviewflag);
  6279. if (sOrdtype == "O" || sOrdtype == "S") {
  6280. if (!tranf_submit("TRMMO04310", false)) {
  6281. }
  6282. }
  6283. else if (sOrdtype == "I" || sOrdtype == "E" || sOrdtype == "D" || sOrdtype == "W") { //병동현황판(W) 조건 추가 2012.06.22 kskim
  6284. //입원 base 첫 로딩은 정규처방
  6285. if (sOrdtype != "W") {
  6286. ds_reqdata.setColumn(0, "/root/send/reqdata/tabprcpkindcd" ,"10");
  6287. }
  6288. if (!tranf_submit("TRMMO04311", false)) {
  6289. }
  6290. }
  6291. else if (sOrdtype == "T") {
  6292. if (!tranf_submit("TRMMO04312")) {
  6293. }
  6294. }
  6295. ds_initdata.setColumn(0, "/root/initdata/loadflag", "Y" );
  6296. ds_initdata.setColumn(0, "/root/initdata/loaddate", utlf_getCurrentDate());
  6297. ds_initdata.setColumn(0, "/root/initdata/loadtime", utlf_getCurrentTime());
  6298. var viewerObj = frmf_getViewer("patientInfo");
  6299. viewerObj.ds_loadinginfo.clearData("/root/loadinginfo");
  6300. viewerObj.ds_loadinginfo.setColumn(0, "/root/loadinginfo");
  6301. viewerObj.ds_loadinginfo.copyData(ds_initdata);
  6302. }
  6303. /***************************************************************************************************
  6304. * Function : lf_getEMRLoadingInfo
  6305. * Description : 환자리스트에서 환자 선택 시 호출되는 처방, 기록, 환자정보 등 조회하는 함수
  6306. * Argument : sOrdtype [String : 외래(O),건진(S),입원(I),응급(E),수술(T), 병동현황판(W) 구분]
  6307. * return type : void
  6308. * Creator :
  6309. ***************************************************************************************************/
  6310. var lgv_ioFlag = "";
  6311. //동기 dataset
  6312. var arrInitDataDsList = ["getdata","opprcpinfo","dscprcpinfo","resnyn"];
  6313. function lf_getEMRLoadingInfo(sOrdtype)
  6314. {
  6315. var sRef = dsf_createDsRow("ds_cond_reqdata", [{col:"patflag", type:"string", size:256, val:""},
  6316. {col:"procflag", type:"string", size:256, val:""},
  6317. {col:"oprsrvno", type:"string", size:256, val:""},
  6318. {col:"ophistno", type:"string", size:256, val:""},
  6319. {col:"pid", type:"string", size:256, val:""},
  6320. {col:"orddd", type:"string", size:256, val:""},
  6321. {col:"cretno", type:"string", size:256, val:""},
  6322. {col:"hngnm", type:"string", size:256, val:""},
  6323. {col:"prcpgenrflag", type:"string", size:256, val:""},
  6324. {col:"orddeptcd", type:"string", size:256, val:""},
  6325. {col:"orddrid", type:"string", size:256, val:""},
  6326. {col:"instcd", type:"string", size:256, val:""},
  6327. {col:"prcpdd", type:"string", size:256, val:""},
  6328. {col:"srchtabflag", type:"string", size:256, val:""},
  6329. {col:"insukind", type:"string", size:256, val:""},
  6330. {col:"srchdd", type:"string", size:256, val:""},
  6331. {col:"userdeptcd", type:"string", size:256, val:""},
  6332. {col:"userkind", type:"string", size:256, val:""},
  6333. {col:"execkind", type:"string", size:256, val:""},
  6334. {col:"aftcertorddrid", type:"string", size:256, val:""},
  6335. {col:"bfprcpviewflag", type:"string", size:256, val:""},
  6336. {col:"ioflag", type:"string", size:256, val:""},
  6337. {col:"stnddd", type:"string", size:256, val:""},
  6338. {col:"callvisityn", type:"string", size:256, val:""},
  6339. {col:"tabprcpkindcd", type:"string", size:256, val:""},
  6340. {col:"async", type:"string", size:256, val:""},
  6341. {col:"ordtype", type:"string", size:256, val:""}]);
  6342. var oRef = this.objects[sRef];
  6343. // frmf_setParameter("SMMMO04100_reqptype", reqptype);
  6344. var currow = "";
  6345. var sPATLIST_PATH = "";
  6346. var sOrddd = "";
  6347. var sOrddrid = "";
  6348. var sOrddeptcd = "";
  6349. var sSrchdd = "";
  6350. var sPrcpdd = utlf_getCurrentDate();
  6351. var sDschdd = "";
  6352. var oPatientInfo = frmf_getViewer("patientInfo");
  6353. lgv_ioFlag = sOrdtype;
  6354. var tabidx = parent.parent.tab_list.tabindex;
  6355. if(tabidx == 0){//외래
  6356. sPATLIST_PATH = this.objects[this.grd_outpatlist.binddataset];
  6357. currow = grd_outpatlist.currentrow;
  6358. } else if(tabidx == 1){//입원
  6359. sPATLIST_PATH = this.objects[this.grd_inpatlist.binddataset];
  6360. currow = grd_inpatlist.currentrow;
  6361. } else if(tabidx == 2){//응급
  6362. sPATLIST_PATH = this.objects[this.grd_erpatlist.binddataset];
  6363. currow = grd_erpatlist.currentrow;
  6364. } else if(tabidx == 3){//수술
  6365. sPATLIST_PATH = this.objects[this.grd_oppatlist.binddataset];;
  6366. currow = grd_oppatlist.currentrow;
  6367. } else if(tabidx == 4){//환자검색
  6368. sPATLIST_PATH = this.objects[this.grd_srchpatlist.binddataset];
  6369. currow = grd_srchpatlist.currentrow;
  6370. }
  6371. if (sOrdtype == "O" || sOrdtype == "S") {
  6372. sOrddd = sPATLIST_PATH.getColumn(currow, "orddd");
  6373. sOrddrid = sPATLIST_PATH.getColumn(currow, "orddrid");
  6374. sPrcpdd = sOrddd;
  6375. }
  6376. else if (sOrdtype == "I" || sOrdtype == "E" || sOrdtype == "D") {
  6377. if (sOrdtype == "E") {
  6378. sOrddrid = ds_grid_grd_erpatlist.getColumn(currow, "orddoctid");
  6379. sOrddd = ds_grid_grd_erpatlist.getColumn(currow, "indd");
  6380. sDschdd = ds_grid_grd_erpatlist.getColumn(currow, "dschdd");
  6381. } else {
  6382. sOrddrid = ds_grid_grd_inpatlist.getColumn(currow, "medispclid");
  6383. sOrddd = ds_grid_grd_inpatlist.getColumn(currow, "indd");
  6384. sDschdd = ds_grid_grd_inpatlist.getColumn(currow, "dschdd");
  6385. }
  6386. sSrchdd = ds_condition.getColumn(0, "srchdd");
  6387. //oPatientInfo = frmf_getViewer("patientInfo");
  6388. if (sDschdd != "99991231" && !utlf_isNull(sDschdd) && sDschdd != "-") {
  6389. sPrcpdd = sDschdd;
  6390. } else if (oPatientInfo.ds_patinfo.getColumn(0, "prcpdd") != "" && oPatientInfo.ds_patinfo.getColumn(0, "prcpdd") != undefined) {
  6391. sPrcpdd = oPatientInfo.ds_patinfo.getColumn(0, "prcpdd");
  6392. } else {
  6393. sPrcpdd = utlf_getCurrentDate();
  6394. }
  6395. }
  6396. else if (sOrdtype == "T") {
  6397. sOrddd = sPATLIST_PATH.getColumn(currow, "opcnfmdd");
  6398. sOrddrid = sPATLIST_PATH.getColumn(currow, "perfdrid");
  6399. sOrddeptcd = sPATLIST_PATH.getColumn(currow, "perfdeptcd");
  6400. var patflag = sPATLIST_PATH.getColumn(currow, "ioflag");
  6401. oRef.setColumn(0, "patflag", patflag); // 실제 ioflag는 patflag로 설정
  6402. // 최초조회:F , 재조회:R
  6403. oRef.setColumn(0, "procflag", "F");
  6404. oRef.setColumn(0, "oprsrvno", sPATLIST_PATH.getColumn(currow, "oprsrvno"));
  6405. oRef.setColumn(0, "ophistno", sPATLIST_PATH.getColumn(currow, "ophistno"));
  6406. sSrchdd = ds_condition.getColumn(0, "opcnfmdd"); // 조회일자
  6407. if (!utlf_isNull(sSrchdd) && sSrchdd != "-")
  6408. sPrcpdd = sSrchdd;
  6409. else
  6410. sPrcpdd = utlf_getCurrentDate();
  6411. }
  6412. else if (sOrdtype == "W") { // 병동현황판
  6413. var selGridObj = fGetCurGridObj(); // SMMMO04600.js에 정의
  6414. if (selGridObj == null)
  6415. return;
  6416. sPATLIST_PATH = this.objects[selGridObj.binddataset];
  6417. currow = fGetCurRow(); // SMMMO04600.js에 정의
  6418. sOrddrid = sPATLIST_PATH.getColumn(currow, "medispclid");
  6419. sOrddd = sPATLIST_PATH.getColumn(currow, "indd");
  6420. sSrchdd = ds_condition.getColumn(0, "indd");
  6421. lgv_ioFlag = "I";
  6422. sDschdd = sPATLIST_PATH.getColumn(currow, "dschdd");
  6423. if (sDschdd != "99991231" && !utlf_isNull(sDschdd) && sDschdd != "-")
  6424. sPrcpdd = sDschdd;
  6425. else
  6426. sPrcpdd = utlf_getCurrentDate();
  6427. }
  6428. if (sOrdtype != "T") {
  6429. sOrddeptcd = sPATLIST_PATH.getColumn(currow, "orddeptcd");
  6430. if (!utlf_isNull(sPATLIST_PATH.getColumnInfo("ordtype")) && !utlf_isNull(sPATLIST_PATH.getColumn(currow, "ordtype"))) {
  6431. sOrdtype = sPATLIST_PATH.getColumn(currow, "ordtype");
  6432. }
  6433. }
  6434. var sPid = sPATLIST_PATH.getColumn(currow, "pid");
  6435. var sCretno = lf_getDsValue(sPATLIST_PATH, currow, "cretno");
  6436. var sHngnm = sPATLIST_PATH.getColumn(currow, "hngnm");
  6437. var sInsukind = lf_getDsValue(sPATLIST_PATH, currow, "insukind");
  6438. var sInstCD = sPATLIST_PATH.getColumn(currow, "instcd");
  6439. if (utlf_isNull (sInstCD)) {
  6440. sInstCD = sysf_getUserInfo("dutplceinstcd");
  6441. }
  6442. oRef.setColumn(0, "pid" , sPid);
  6443. oRef.setColumn(0, "orddd" , sOrddd);
  6444. oRef.setColumn(0, "cretno" , sCretno);
  6445. oRef.setColumn(0, "hngnm" , sHngnm);
  6446. oRef.setColumn(0, "prcpgenrflag" , sOrdtype);
  6447. oRef.setColumn(0, "ioflag" , sOrdtype);
  6448. oRef.setColumn(0, "stnddd" , sSrchdd);
  6449. oRef.setColumn(0, "orddeptcd" , sOrddeptcd);
  6450. oRef.setColumn(0, "orddrid" , sOrddrid);
  6451. oRef.setColumn(0, "instcd" , sInstCD);
  6452. oRef.setColumn(0, "prcpdd" , sPrcpdd);
  6453. oRef.setColumn(0, "srchtabflag" , sOrdtype); // 대상자리스트탭 구분
  6454. oRef.setColumn(0, "insukind" , sInsukind);
  6455. oRef.setColumn(0, "srchdd" , sSrchdd); // 입원
  6456. oRef.setColumn(0, "userdeptcd" , sysf_getUserInfo("dutplcecd")); // 후인증 count start
  6457. oRef.setColumn(0, "userkind" , "D");
  6458. oRef.setColumn(0, "execkind" , "patlist");
  6459. oRef.setColumn(0, "aftcertorddrid", sysf_getUserInfo("userid"));
  6460. oRef.setColumn(0, "bfprcpviewflag", lf_mmbfGetUserEnvQuestValue("018")); // 전처방 개인별 조회 option
  6461. oRef.setColumn(0, "ordtype" , sOrdtype);
  6462. var mainObj = frmf_getMainViewer();
  6463. var sysMessageobj = frmf_getViewer("sysMessage");
  6464. sysMessageobj.frmf_setParameter("PATLIST_TABFLAG", sOrdtype);
  6465. var oParam = {};
  6466. if (sOrdtype == "O" || sOrdtype == "S") {
  6467. oParam.id = "TRMMO04310"; // transaction을 구분하기 위한 ID
  6468. }
  6469. else if (sOrdtype == "I" || sOrdtype == "E" || sOrdtype == "D" || sOrdtype == "W") { // 병동현황판(W) 조건 추가 2012.06.22 kskim
  6470. oParam.id = "TRMMO04311"; // transaction을 구분하기 위한 ID
  6471. // 입원 base 첫 로딩은 정규처방
  6472. if (sOrdtype != "W" )
  6473. oRef.setColumn(0, "tabprcpkindcd" ,"10");
  6474. }
  6475. else if (sOrdtype == "T") {
  6476. oParam.id = "TRMMO04312"; // transaction을 구분하기 위한 ID
  6477. }
  6478. //조회조건이 된 dataset도 copy 해서 비동기 데이터 조회시 사용하도록 함
  6479. var sDsNm = oPatientInfo.dsf_createDs("ds_cond_reqdata");
  6480. oPatientInfo.objects[sDsNm].clearData();
  6481. oPatientInfo.objects[sDsNm].copyData(this.objects[sDsNm]);
  6482. //동기 data조회
  6483. oRef.setColumn(0, "async", "N");
  6484. oParam.service = "prcpmngtapp.EmrInitDataMngt"; // service ID
  6485. oParam.method = "reqGetEMRLoadingInfo_NEW1"; // method ID
  6486. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  6487. oParam.async = false;
  6488. oParam.outds = "";
  6489. for (var i=0 ; i<arrInitDataDsList.length ; i++) {
  6490. var sDsNm = "ds_"+arrInitDataDsList[i];
  6491. var oDs = this.objects[sDsNm];
  6492. if (oDs == null) {
  6493. dsf_createDs(sDsNm);
  6494. }
  6495. this.objects[sDsNm].clearData();
  6496. oParam.outds += sDsNm+"="+arrInitDataDsList[i]+" ";
  6497. }
  6498. // for (var i=0 ; i<arrInitDataDsList.length ; i++) {
  6499. // var sDsNm = dsf_createDs("ds_"+arrInitDataDsList[i]);
  6500. // oParam.outds += sDsNm+"="+arrInitDataDsList[i]+" ";
  6501. // }
  6502. oPatientInfo.lv_sSpeedTestText += "\n" + "속도체크2. reqGetEMRLoadingInfo(동기) 호출 전: " + lf_getCurrentDateString();
  6503. tranf_submit(oParam);
  6504. oPatientInfo.lv_sSpeedTestText += "\n" + "속도체크3. reqGetEMRLoadingInfo(동기) 호출 후: " + lf_getCurrentDateString();
  6505. // [TFT] moon 20120522 : 환자 정보에 의한 디폴트 서식 조회 후 화면(서식) open에 따른 후처리
  6506. lf_aftGetEMRLoadingInfo(lgv_ioFlag);
  6507. oPatientInfo.lv_sSpeedTestText += "\n" + "속도체크4. lf_aftGetEMRLoadingInfo 종료: " + lf_getCurrentDateString();
  6508. }
  6509. /***************************************************************************************************
  6510. * Function : lf_focusMain
  6511. * Description : 포커스를 메인으로 한다.(처방화면 으로 포커스 옮기는 함수)
  6512. * Argument : curRow => 메인의 검색 row
  6513. * : flag => child
  6514. * : prcpNmClearFlag => 검색명을 클리어 시킬건지 여부
  6515. * return type :
  6516. * Creator :
  6517. * @---------------------------------------------------
  6518. */
  6519. function lf_focusMain( curRow, flag, prcpNmClearFlag){
  6520. var enableevent; // enableevent 가 false 일때는 rowposition이 제대로 안바뀐다. 잠시 켜놓고 함수 끝날때 원래 상태로 다시 되돌림
  6521. if (flag == "child") {
  6522. var oTrgtObj = lf_getFormObject(flag);
  6523. if ( prcpNmClearFlag != "N" ) {
  6524. oTrgtObj.ds_main_prcplist.setColumn(curRow, "prcpnm", "");
  6525. oTrgtObj.ds_main_prcplist.setColumn(curRow, "prcpcd", "");
  6526. }
  6527. enableevent = oTrgtObj.ds_main_prcplist.enableevent;
  6528. if(!enableevent)
  6529. oTrgtObj.ds_main_prcplist.enableevent = true;
  6530. var bfRow = curRow - 1;
  6531. var sPrcpClsCd = oTrgtObj.ds_main_prcplist.getColumn(bfRow, "prcpclscd");
  6532. if(sPrcpClsCd == "A2" || sPrcpClsCd == "A4" || sPrcpClsCd == "A6"){
  6533. oTrgtObj.ds_main_prcplist.selectRow(bfRow);
  6534. oTrgtObj.ds_main_prcplist.rowposition = bfRow;
  6535. oTrgtObj.div_all.grd_prcplist.setCellPos(oTrgtObj.div_all.grd_prcplist.getBindCellIndex("body", "drprcpetc7"));
  6536. }else{
  6537. oTrgtObj.ds_main_prcplist.selectRow(curRow);
  6538. oTrgtObj.ds_main_prcplist.rowposition = curRow;
  6539. if(oTrgtObj.ds_send.getColumn(0, "cond99") == "getPrcpCdOldSrchInfo") {
  6540. oTrgtObj.div_all.grd_prcplist.setCellPos(prcpcdCol);
  6541. oTrgtObj.ds_send.setColumn(0, "cond99", "");
  6542. } else {
  6543. oTrgtObj.div_all.grd_prcplist.setCellPos(prcpnmCol);
  6544. }
  6545. }
  6546. if( oTrgtObj.ds_root.getColumn(0, "cp") == "Y" ){
  6547. //CP에서 저장 시 AddPrcp()를 수행 시, 마지막 라인에 포커스가 남아있는 상태에서 저장 수행 과정에 "onendedit" 이번트 동시 수행하면서 윈도우 에러 발생 -> 이 경우 막음처리 (2008.10.02 JJE)
  6548. if( !utlf_isNull(curSavePrcpFlag_SMMMO00110) && (curSavePrcpFlag_SMMMO00110 == "N" || curSavePrcpFlag_SMMMO00110 == "T") ){
  6549. if(!enableevent)
  6550. oTrgtObj.ds_main_prcplist.enableevent = false;
  6551. return;
  6552. }
  6553. }
  6554. // 항생제에서 데이타 추가 후 dispatch 시엔 Focus가 안 가서 setFocus 사용 20080925 by Moonsh
  6555. var cdssFlag = oTrgtObj.frmf_getParameter( "SPMMD01600_flag");
  6556. var sAltDrugFlag = oTrgtObj.frmf_getParameter( "SPMMB10100_flag"); // 대체약 선택으로 호출시
  6557. if ( cdssFlag == "Y" ) {
  6558. oTrgtObj.div_all.grd_prcplist.setFocus();
  6559. } else if (sAltDrugFlag == "Y") {
  6560. } else {
  6561. //by sonjy 20090923 성공적으로 copy햇을 경우 ...
  6562. //iviewer에서 addprcp호출시 grid edit 안되는 bug 수정
  6563. oTrgtObj.div_all.grd_prcplist.setFocus();
  6564. oTrgtObj.div_all.grd_prcplist.showEditor(true);
  6565. //oTrgtObj.div_all.btn_editcell.onclick.fireEvent(oOpener.div_all.btn_editcell, new ClickEventInfo());
  6566. }
  6567. if(!enableevent)
  6568. oTrgtObj.ds_main_prcplist.enableevent = false;
  6569. // bold 처리 확인필요
  6570. // opener.grd_prcplist.allstyle( "all", "font-weight" ) = ""; //기존 focus cell bold체 해제 (2010.01.27 JJE)
  6571. } else {
  6572. ds_prcpsrch_prcplist.clearData();
  6573. ds_prcpgroup_prcplist.clearData();
  6574. ds_prcpdirec_prcplist.clearData();
  6575. if (prcpNmClearFlag != "N") {
  6576. ds_main_prcplist.setColumn(curRow, "prcpnm", "");
  6577. ds_main_prcplist.setColumn(curRow, "prcpcd", "");
  6578. }
  6579. enableevent = ds_main_prcplist.enableevent;
  6580. if(!enableevent)
  6581. ds_main_prcplist.enableevent = true;
  6582. var bfRow = curRow - 1;
  6583. var sPrcpClsCd = ds_main_prcplist.getColumn(bfRow, "prcpclscd");
  6584. if(sPrcpClsCd == "A2" || sPrcpClsCd == "A4" || sPrcpClsCd == "A6"){
  6585. ds_main_prcplist.selectRow(bfRow);
  6586. ds_main_prcplist.rowposition = bfRow;
  6587. div_all.grd_prcplist.setCellPos(div_all.grd_prcplist.getBindCellIndex("body", "drprcpetc7"));
  6588. }else{
  6589. ds_main_prcplist.selectRow(curRow);
  6590. ds_main_prcplist.rowposition = curRow ;
  6591. if(ds_send.getColumn(0, "cond99") == "getPrcpCdOldSrchInfo") {
  6592. div_all.grd_prcplist.setCellPos(prcpcdCol);
  6593. ds_send.setColumn(0, "cond99", "");
  6594. } else {
  6595. div_all.grd_prcplist.setCellPos(prcpnmCol);
  6596. }
  6597. }
  6598. if( ds_root.getColumn(0, "cp") == "Y" ){ //CP에서 저장 시 AddPrcp()를 수행 시, 마지막 라인에 포커스가 남아있는 상태에서 저장 수행 과정에 "onendedit" 이번트 동시 수행하면서 윈도우 에러 발생 -> 이 경우 막음처리 (2008.10.02 JJE)
  6599. if( !utlf_isNull(curSavePrcpFlag_SMMMO00110) && (curSavePrcpFlag_SMMMO00110 == "N" || curSavePrcpFlag_SMMMO00110 == "T") ){
  6600. if(!enableevent)
  6601. ds_main_prcplist.enableevent = false;
  6602. return;
  6603. }
  6604. if (prtlprcpstatus_SMMMO00110 != "U" ) {
  6605. div_all.grd_prcplist.showEditor(true);
  6606. }
  6607. } else {
  6608. div_all.grd_prcplist.showEditor(true);
  6609. }
  6610. if(!enableevent)
  6611. ds_main_prcplist.enableevent = false;
  6612. //기존 focus cell bold체 해제 (2010.01.27 JJE)
  6613. // bold 처리 확인필요
  6614. // grd_prcplist.allstyle( "all", "font-weight" ) = "";
  6615. }
  6616. }
  6617. /****************************************************************************************
  6618. * Argument : curRow: 호출 row
  6619. * : flag: 처방복사시 호출하면 refresh 시켜주면서 어느 row의 팝업인지 알게함
  6620. * Description : 새로운 빈줄 한줄 생성
  6621. ****************************************************************************************/
  6622. function lf_newPrcpRow(nTrgtRow){
  6623. if(nTrgtRow != 0){
  6624. nTrgtRow = nTrgtRow - 1;
  6625. }
  6626. ds_grid_prcplist.insertRow(nTrgtRow);
  6627. }
  6628. /********************************************************************************************************************************************
  6629. * Argument : sQuery - 검색명
  6630. * sPrcpds - 결과 저장할 데이터셋(String)
  6631. * sSrchflag - 검색구분 : null(처방명, 처방코드 모두로 검색), "prcpcd"(처방코드로 검색), "prcpnm"(처방명으로 검색)
  6632. * sPrcpdd - 처방검색기준일자(null이면 현재일자)
  6633. * Description : 처방정보 간단 조회(처방마스터 코드 또는 명칭으로만 조회)
  6634. ********************************************************************************************************************************************/
  6635. function lf_SimplePrcpSrch(sQuery, sPrcpds, sSrchflag, sPrcpdd){
  6636. var mSrchFlag = sSrchflag;
  6637. var mPrcpdd = sPrcpdd;
  6638. // Dataset NULL 체크
  6639. if(utlf_isNull(sPrcpds)){
  6640. return false; // 데이터셋이 없을 경우 리턴처리
  6641. }
  6642. var mQuery = sQuery.trim();
  6643. // 검색명 NULL 체크
  6644. if(utlf_isNull(mQuery)){
  6645. sysf_messageBox("검색명을 입력하세요", "E");
  6646. return false;
  6647. }
  6648. //질의어 사이즈 체크
  6649. var sIsHangul = utlf_isHangul(sQuery);
  6650. if(sIsHangul == "E" && mQuery.length < 2){
  6651. sysf_messageBox("검색명은 2글자 이상", "C001");
  6652. return false;
  6653. }
  6654. //처방검색 기준일자 세팅
  6655. if(utlf_isNull(sPrcpdd))
  6656. mPrcpdd = utlf_getCurrentDate();
  6657. if(utlf_isNull(sSrchflag))
  6658. mSrchFlag = null;
  6659. dsf_createDsRow("ds_cond_req_simpleprcpnfo",
  6660. [{col:"prcpdd", val:mPrcpdd},
  6661. {col:"srchflag", val:mSrchFlag},
  6662. {col:"srchnm", val:mQuery}]);
  6663. var objParam = new Object();
  6664. objParam.id = "reqGetSimplePrcpInfo";
  6665. objParam.service = "prcpmngtapp.PrcpMngt";
  6666. objParam.method = "reqGetSimplePrcpInfo";
  6667. objParam.inds = "req=ds_cond_req_simpleprcpnfo";
  6668. objParam.outds = sPrcpds + "=prcpinfolist";
  6669. tranf_submit(objParam);
  6670. }
  6671. /***************************************************************************************************
  6672. * Function : lf_addDrChk
  6673. * Description : 가산의 체크
  6674. * Argument :
  6675. * return type :
  6676. * Creator :
  6677. ***************************************************************************************************/
  6678. function lf_addDrChk(srcNode, indx, msgyn)
  6679. {
  6680. var addfg = "";
  6681. if (indx < 0) {
  6682. return addfg;
  6683. }
  6684. var calcscormastspec = srcNode.getColumn(indx, "calcscormastspec");
  6685. if (utlf_isNull(calcscormastspec))
  6686. return addfg ;
  6687. var calcspecArr = calcscormastspec.split("|");
  6688. if (calcspecArr != null && calcspecArr.length > 4) {
  6689. if (calcspecArr[4] == "A") addfg = "GS";
  6690. else if (calcspecArr[4] == "B") addfg = "ALL"; // CS
  6691. else if (calcspecArr[4] == "C") addfg = "CS";
  6692. else if (calcspecArr[4] == "D") addfg = "GS";
  6693. if (utlf_isNull(addfg)) {
  6694. if (calcspecArr[5] == "A"){
  6695. addfg = "GS";
  6696. }else if (calcspecArr[5] == "B"){
  6697. addfg = "ALL";
  6698. }else if (calcspecArr[5] == "C"){
  6699. addfg = "CS";
  6700. }else if (calcspecArr[5] == "D"){
  6701. addfg = "GS";
  6702. }
  6703. }
  6704. if (utlf_isNull(addfg)) {
  6705. if (msgyn == "Y") {
  6706. sysf_messageBox("가산의 지정이 불가한 처방입니다.", "E");
  6707. }
  6708. }
  6709. }
  6710. return addfg;
  6711. }
  6712. /***************************************************************************************************
  6713. * Function : lf_chngAddDr
  6714. * Description : 가산의 변경
  6715. * Argument :
  6716. * return type :
  6717. * Creator :
  6718. ***************************************************************************************************/
  6719. function lf_chngAddDr(objPrcpList, indx, addfg, grdObj, objPaminfoDS )
  6720. {
  6721. if(utlf_isNull(objPaminfoDS)){
  6722. objPaminfoDS = ds_data_paminfo;
  6723. }
  6724. var ordtype = objPaminfoDS.getColumn(0, "ioflag");
  6725. var oParamObj = new Object();
  6726. oParamObj.plgv_orddeptcd = addfg;
  6727. oParamObj.plgv_ioflag = ordtype;
  6728. oParamObj.plgv_flag = "adddr";
  6729. oParamObj.plgv_specdrid = objPrcpList.getColumn(indx, "specdrid");
  6730. var scrid = frmf_getScreenID();
  6731. var xpt = 400;
  6732. var ypt = 300;
  6733. if (!utlf_isNull(scrid) && scrid.length > 5) {
  6734. if (scrid.substring(0,5) == "SPMMO") {
  6735. ypt = 10 ;
  6736. }
  6737. }
  6738. var objRtnVal = lf_prcpModal("SPMMB08300", oParamObj);
  6739. var sUseyn = objRtnVal.prv_sUseyn;
  6740. var userid = objRtnVal.prv_sUserid;
  6741. if (sUseyn == "Y") {
  6742. objPrcpList.setColumn(indx, "tempcol30", userid);
  6743. return true ;
  6744. }
  6745. return false ;
  6746. }
  6747. /****************************************************************************************
  6748. * Argument : nRow 포커스를 이동시킬 row
  6749. * : nCol 포커스를 이동시킬 column
  6750. * Description : 엔터키를 칠때 다음셀로 이동시킨다.
  6751. ****************************************************************************************/
  6752. function lf_setCellFocus(nRow, nCol, oTrgtObj){
  6753. //trace("focus move event Target" + ", row : " + nRow + ", nCol : " + nCol);
  6754. if(utlf_isNull(oTrgtObj)){
  6755. oTrgtObj = this;
  6756. }
  6757. oTrgtObj.ds_grid_prcplist.rowposition = nRow;
  6758. oTrgtObj.grp_prcp.grd_prcplist.setCellPos(-1);
  6759. if(utlf_isNull(oTrgtObj.grp_prcp.grd_prcplist.getCellProperty("body", nCol, "edittype") )){
  6760. oTrgtObj.grp_prcp.grd_prcplist.showEditor(false);
  6761. oTrgtObj.grp_prcp.grd_prcplist.setCellPos(nCol);
  6762. }
  6763. else{
  6764. oTrgtObj.grp_prcp.grd_prcplist.setCellPos(nCol);
  6765. oTrgtObj.grp_prcp.grd_prcplist.showEditor(true);
  6766. }
  6767. oTrgtObj.ds_grid_prcplist.selectRow(nRow, true);
  6768. }
  6769. /********************************************************************************************************************************************
  6770. * Argument : objDataset : 해당 dataset
  6771. * Description : grid 검색ROW 추가
  6772. ********************************************************************************************************************************************/
  6773. function lf_addSearchRow(objDataset:Dataset){
  6774. if(objDataset.findRow("status", "S") > -1) {
  6775. objDataset.deleteRow(objDataset.findRow("status", "S"));
  6776. }
  6777. objDataset.addRow();
  6778. objDataset.setColumn(objDataset.rowcount-1, "status", "S");
  6779. }
  6780. /********************************************************************************************************************************************
  6781. * Argument :
  6782. * Description : 처방 전달사항
  6783. ********************************************************************************************************************************************/
  6784. function lf_setPrcpdelivefact(){
  6785. ds_grid_prcplist.enableevent = false;
  6786. var nCurrow = grp_prcp.grd_prcplist.currentrow ;
  6787. if(nCurrow < 0 || nCurrow >= grp_prcp.grd_prcplist.rowcount){
  6788. return;
  6789. }
  6790. var sStatus = ds_grid_prcplist.getColumn(nCurrow, "status");
  6791. var sTempcol1 = ds_grid_prcplist.getColumn(nCurrow, "tempcol1" );
  6792. if(utlf_isNull(sTempcol1)) {
  6793. sTempcol1 = "000" ;
  6794. }
  6795. if(sStatus != "S") {
  6796. if(sStatus == "B" && sTempcol1 != "000") {
  6797. return ;
  6798. }
  6799. var sAftprcpdelivefact = grp_prcp.grp_prcp_bottom.switch_delivefact.case_dr.txt_prcpdelivefact.value;
  6800. var sBfprcpdelivefact = ds_grid_prcplist.getColumn(nCurrow, "prcpdelivefact");
  6801. if(sAftprcpdelivefact != sBfprcpdelivefact){
  6802. ds_grid_prcplist.setColumn(nCurrow, "prcpdelivefact", sAftprcpdelivefact);
  6803. grp_prcp.grp_prcp_bottom.switch_delivefact.case_dr.text = "■전달";
  6804. if((sStatus == "B" && sTempcol1== "000") || sStatus == "-") {
  6805. ds_grid_prcplist.setColumn(nCurrow, "status", "U" );
  6806. }
  6807. if(utlf_isNull(sAftprcpdelivefact) || sAftprcpdelivefact == "-") {
  6808. ds_grid_prcplist.setColumn(nCurrow, "remyn", "N");
  6809. } else {
  6810. ds_grid_prcplist.setColumn(nCurrow, "remyn", "Y" );
  6811. }
  6812. lf_setPrcpGridColor('EMR', 'E', grp_prcp.grd_prcplist, ds_grid_prcplist); //그리드 색 처리
  6813. }
  6814. }
  6815. ds_grid_prcplist.enableevent = true;
  6816. }
  6817. /********************************************************************************************************************************************
  6818. * Argument :
  6819. * Description : 처방 진료기타 화면 확장/축소
  6820. ********************************************************************************************************************************************/
  6821. function lf_prcpEtcDivSizeControl(obj:Button) {
  6822. if(obj.name == "btn_expansion") { //확장
  6823. ///////////////오른쪽 DIV 사이즈 조절/////////////
  6824. div_prcpetc.move(this.position.right - 400, div_prcpetc.position.top);
  6825. div_prcpetc.position.right = this.position.right-20;
  6826. //////////////////////////////////////////////////
  6827. ///////////////버튼 및 line 위치 조절/////////////
  6828. Static00.move(div_prcpetc.position.left-4,Static00.position.top);
  6829. obj.visible = false;
  6830. btn_default.visible = true;
  6831. btn_default.move(Static00.position.right-btn_default.position.width,btn_default.position.top);
  6832. //////////////////////////////////////////////////
  6833. //미니모드 or 숨김모드 일 경우 진료기타 div변경
  6834. if(div_prcpetc.pDIv_mode.btn_defaultMode.class != "btn_ScreenSelect") {
  6835. div_prcpetc.visible = true;
  6836. div_prcpetc.div_mini.visible = false;
  6837. div_prcpetc.div_normal.visible = true;
  6838. }
  6839. } else if(obj.name == "btn_default") { //축소
  6840. var e = new ClickEventInfo;
  6841. if(div_prcpetc.pDIv_mode.btn_miniMode.class == "btn_ScreenSelect") { //미니모드일 떄는 축소 버튼 클릭 시 미니모드로
  6842. div_prcpetc.pDIv_mode.btn_miniMode.onclick.fireEvent(div_prcpetc.pDIv_mode.btn_miniMode, e);
  6843. } else if(div_prcpetc.pDIv_mode.btn_hideMode.class == "btn_ScreenSelect") { //숨김일 떄는 축소 버튼 클릭 시 숨김모드로
  6844. div_prcpetc.pDIv_mode.btn_hideMode.onclick.fireEvent(div_prcpetc.pDIv_mode.btn_hideMode, e);
  6845. } else {
  6846. ///////////////오른쪽 DIV 사이즈 조절/////////////
  6847. div_prcpetc.move(this.position.right - 200, div_prcpetc.position.top);
  6848. div_prcpetc.position.right = this.position.right-20;
  6849. //////////////////////////////////////////////////
  6850. ///////////////버튼 및 line 위치 조절/////////////
  6851. Static00.move(div_prcpetc.position.left-4,Static00.position.top);
  6852. obj.visible = false;
  6853. btn_expansion.visible = true;
  6854. btn_expansion.move(Static00.position.right-btn_expansion.position.width,btn_expansion.position.top);
  6855. //////////////////////////////////////////////////
  6856. /////////////////처방 DIV 사이즈 조절/////////////
  6857. grp_prcp.position.width = Static00.position.left-15;
  6858. //////////////////////////////////////////////////
  6859. }
  6860. } else if(obj.name == "btn_miniMode") { //미니모드
  6861. ///////////////오른쪽 DIV 사이즈 조절/////////////
  6862. div_prcpetc.move(this.position.right - 70, div_prcpetc.position.top);
  6863. div_prcpetc.position.right = this.position.right-20;
  6864. //////////////////////////////////////////////////
  6865. ///////////////버튼 및 line 위치 조절/////////////
  6866. //Static00.position.left = 1182;
  6867. //Static00.position.right = 1186;
  6868. Static00.move(div_prcpetc.position.left-4,Static00.position.top);
  6869. //btn_expansion.position.left = 1170;
  6870. //btn_expansion.position.right = 1186;
  6871. //btn_default.position.left = 1170;
  6872. //btn_default.position.right = 1186;
  6873. btn_default.move(Static00.position.right-btn_default.position.width,btn_default.position.top);
  6874. btn_expansion.move(Static00.position.right-btn_expansion.position.width,btn_expansion.position.top);
  6875. btn_expansion.visible = true;
  6876. btn_default.visible = false;
  6877. //////////////////////////////////////////////////
  6878. ///////////////DIV_MINI 위치 조정/////////////////
  6879. div_prcpetc.div_mini.position.left = 00;
  6880. div_prcpetc.div_mini.position.right = 51;
  6881. //////////////////////////////////////////////////
  6882. /////////////////처방 DIV 사이즈 조절/////////////
  6883. grp_prcp.position.width = this.position.right-80;
  6884. //////////////////////////////////////////////////
  6885. } else if(obj.name == "btn_hideMode") { //숨김모드
  6886. ///////////////오른쪽 DIV 숨김/////////////
  6887. div_prcpetc.visible = false;
  6888. ///////////////////////////////////////////
  6889. ///////////////버튼 및 line 위치 조절/////////////
  6890. //Static00.position.left = 1252;
  6891. //Static00.position.right = 1256;
  6892. Static00.move(this.position.right-Static00.position.width-20,Static00.position.top);
  6893. /*btn_expansion.position.left = 1240;
  6894. btn_expansion.position.right = 1256;
  6895. btn_default.position.left = 1240;
  6896. btn_default.position.right = 1256;*/
  6897. btn_default.move(Static00.position.right-btn_default.position.width,btn_default.position.top);
  6898. btn_expansion.move(Static00.position.right-btn_expansion.position.width,btn_expansion.position.top);
  6899. btn_expansion.visible = true;
  6900. btn_default.visible = false;
  6901. //////////////////////////////////////////////////
  6902. /////////////////처방 DIV 사이즈 조절/////////////
  6903. grp_prcp.position.width = this.position.right - 30;
  6904. //////////////////////////////////////////////////
  6905. }
  6906. }
  6907. /********************************************************************************************************************************************
  6908. * Argument :
  6909. * Description : 선택한 처방 전달사항 표시
  6910. ********************************************************************************************************************************************/
  6911. function lf_setPrcpDelivefactCellClick(obj:Grid, e:GridClickEventInfo) {
  6912. if( e.cell >= 0 ) {
  6913. var nCurRow = ds_grid_prcplist.rowposition;
  6914. var sPrcpdelivefact = ds_grid_prcplist.getColumn(nCurRow, "prcpdelivefact");
  6915. var sNursdelivefact = ds_grid_prcplist.getColumn(nCurRow, "nursdelivefact");
  6916. var sSuppdeptdelivefact = ds_grid_prcplist.getColumn(nCurRow, "suppdeptdelivefact");
  6917. grp_prcp.grp_prcp_bottom.switch_delivefact.case_dr.txt_prcpdelivefact.value = sPrcpdelivefact;
  6918. grp_prcp.grp_prcp_bottom.switch_delivefact.case_nr.txt_nursdelivefact.value = sNursdelivefact;
  6919. grp_prcp.grp_prcp_bottom.switch_delivefact.case_supp.txt_suppdeptdelivefact.value = sSuppdeptdelivefact;
  6920. }
  6921. var sRemyn = ds_grid_prcplist.getColumn(ds_grid_prcplist.rowposition, "remyn");
  6922. if(sRemyn == "Y"){
  6923. if(grp_prcp.grp_prcp_bottom.switch_delivefact.case_dr.text != "■ 전달 ") {
  6924. grp_prcp.grp_prcp_bottom.btn_prcpdelivefact.move(grp_prcp.grp_prcp_bottom.btn_prcpdelivefact.position.left + 6, grp_prcp.grp_prcp_bottom.btn_prcpdelivefact.position.top);
  6925. grp_prcp.grp_prcp_bottom.switch_delivefact.case_dr.text = "■ 전달 ";
  6926. }
  6927. } else {
  6928. if(grp_prcp.grp_prcp_bottom.switch_delivefact.case_dr.text != "전달 ") {
  6929. grp_prcp.grp_prcp_bottom.btn_prcpdelivefact.move(grp_prcp.grp_prcp_bottom.btn_prcpdelivefact.position.left - 6, grp_prcp.grp_prcp_bottom.btn_prcpdelivefact.position.top);
  6930. grp_prcp.grp_prcp_bottom.switch_delivefact.case_dr.text = "전달 ";
  6931. }
  6932. }
  6933. }
  6934. /**
  6935. * @desc : 경구약 투약일수 일괄 변경
  6936. */
  6937. function lf_setDrugPrcpdayno(sDayno,objflag){
  6938. if(utlf_isNull(sDayno) || sDayno == "0") {
  6939. return ;
  6940. }
  6941. var sPrcpclscd = "";
  6942. var sPrcpstatcd = "";
  6943. var sStatus = "";
  6944. var sSNodeList = null;
  6945. if(objflag == "child"){
  6946. for(var i = 0 ; i < opener.ds_grid_prcplist.rowcount ; i++) {
  6947. sPrcpclscd = opener.ds_grid_prcplist.getColumn(i, "prcpclscd");
  6948. sPrcpstatcd = opener.ds_grid_prcplist.getColumn(i, "tempcol1");
  6949. sStatus = opener.ds_grid_prcplist.getColumn(i, "status");
  6950. if(utlf_isNull(sPrcpstatcd)) {
  6951. sPrcpstatcd = "000";
  6952. }
  6953. if(sPrcpclscd == "A2" && sPrcpstatcd == "000" && sStatus != "D" ) {
  6954. opener.ds_grid_prcplist.setColumn(i, "prcpdayno", sDayno);
  6955. if(sStatus != "I" && sStatus != "U") {
  6956. opener.ds_grid_prcplist.setColumn(i, "status", "U");
  6957. }
  6958. }
  6959. }
  6960. opener.ds_init_data.setColumn(0, "initprcpdayno", sDayno);
  6961. }else{
  6962. for(var i = 0 ; i < ds_grid_prcplist.rowcount ; i++) {
  6963. sPrcpclscd = ds_grid_prcplist.getColumn(i, "prcpclscd");
  6964. sPrcpstatcd = ds_grid_prcplist.getColumn(i, "tempcol1");
  6965. sStatus = ds_grid_prcplist.getColumn(i, "status");
  6966. if(utlf_isNull(sPrcpstatcd)) {
  6967. sPrcpstatcd = "000";
  6968. }
  6969. if(sPrcpclscd == "A2" && sPrcpstatcd == "000" && sStatus != "D" ) {
  6970. ds_grid_prcplist.setColumn(i, "prcpdayno", sDayno);
  6971. if(sStatus != "I" && sStatus != "U") {
  6972. ds_grid_prcplist.setColumn(i, "status", "U");
  6973. }
  6974. }
  6975. }
  6976. ds_init_data.setColumn(0, "initprcpdayno", sDayno);
  6977. }
  6978. }
  6979. /****************************************************************************************
  6980. * Components : dataGrid
  6981. * Components ID : ds_data_prcplist
  6982. * Event : oncolumnchanged
  6983. * Argument :
  6984. * Description : 처방상세 - 이중유형 체크
  6985. ****************************************************************************************/
  6986. function lf_setAnamneFlagOnColumnChanged(e, oPamDs, objPrcpDs ){
  6987. if(e.columnid != "anamneflag"){
  6988. return;
  6989. }
  6990. var sPrcpgenrflag = oPamDs.getColumn(0, "ioflag");
  6991. var sAnamneflag = objPrcpDs.getColumn(0, "anamneflag");
  6992. if(sPrcpgenrflag == "I" || sPrcpgenrflag == "D"){
  6993. if(sAnamneflag == "Y"){ //기왕증이 Y로 처리된 경우에만 보조유형선택 팝업 open
  6994. var sPid = oPamDs.getColumn(0, "pid");
  6995. var sIndd = oPamDs.getColumn(0, "indd");
  6996. dsf_createDsRow("ds_temp_req",
  6997. [{col:"pid", val:sPid}
  6998. ,{col:"indd", val:sIndd}]);
  6999. var objParam = new Object();
  7000. objParam.id = "TRMMO15701";
  7001. objParam.service = "prcpmngtapp.PatPrcpSrchMngt";
  7002. objParam.method = "reqGetPatSupKind";
  7003. objParam.inds = "req=ds_temp_req";
  7004. objParam.outds ="ds_temp_patsupkind=patsupkind";
  7005. objParam.callback = "cbf_TRMMO15701";
  7006. tranf_submit(objParam);
  7007. var objDs = this.removeChild("ds_temp_req");
  7008. delete objDs;
  7009. objDs = null;
  7010. if(!utlf_isNull(ds_temp_patsupkind)) {
  7011. if(ds_temp_patsupkind.rowcount > 0){
  7012. var nXpt = system.clientToScreenX(grd_prcplist, 0);
  7013. var nYpt = system.clientToScreenY(grd_prcplist, 0);
  7014. var oRtnVal = frmf_modal("SPMMO15700", "SPMMO15700", null, false, null, nXpt,nYpt, null, null, "title=true");
  7015. var nSubCretNo = oRtnVal.nSubCretNo
  7016. objPrcpDs.setColumn(0, "subcretno", nSubCretNo);
  7017. }
  7018. }
  7019. }else{ //기왕증이 N로 처리된 경우에는 subcretno 0로 처리
  7020. objPrcpDs.setColumn(0, "subcretno", "0");
  7021. }
  7022. }
  7023. }
  7024. function cbf_TRMMO15701(strSvcID, nErrorCode, strErrorMsg){
  7025. //에러 처리
  7026. if(nErrorCode != 0){
  7027. sysf_messageBox ("임상시험 보험유형을 가져오는데 실패했습니다.", "C");
  7028. return -1;
  7029. }
  7030. }
  7031. /* 컨설트 화면 오픈 함수 */
  7032. function lf_openCnst(sSendflag) {
  7033. var sCnststatflag = "all";
  7034. if(sSendflag == "S"){ //의뢰의 경우
  7035. sSendflag = "pidreq";//환자별 의뢰한 건
  7036. }else{
  7037. sSendflag = "userrecv";//해당의사가 의뢰받은 건
  7038. }
  7039. var objArg = new Object();
  7040. objArg.plgv_paramyn = "Y";
  7041. objArg.plgv_condflag = sSendflag;
  7042. objArg.plgv_cnststatflag = sCnststatflag;
  7043. objArg.plgv_orddeptcd = sysf_getUserInfo("dutplcecd");
  7044. objArg.plgv_orddrid = sysf_getUserId();
  7045. objArg.plgv_userdept = "doctor";
  7046. var sIoflag = ds_data_paminfo.getColumn(0, "ioflag");
  7047. if(sIoflag == "I" || sIoflag == "D" || sIoflag == "E"){ //입원
  7048. frmf_modal("SMMMR05100", "SMMMR05100", objArg, 10, 10, null, null, null, null, null, null, null, "M"); // 병동 컨설트 화면
  7049. }
  7050. else if(patflag == "O" || patflag == "S"){ //외래
  7051. frmf_modal("SMMMR05110", "SMMMR05110", objArg, 10, 10, null, null, null, null, null, null, null, "M"); // 외래 컨설트 화면
  7052. }
  7053. }
  7054. /**
  7055. * @desc : 처방 이동 (위로 or 아래로 버튼을 통한 이동)
  7056. * @param : btnFlag 버튼구분(top or bottom)
  7057. * @return : void
  7058. * @authur : 전지은 2009.11.18
  7059. * @---------------------------------------------------
  7060. */
  7061. function lf_movePrcpList ( btnFlag ) {
  7062. var selectedRows = grd_prcplist.selectedRows;
  7063. var frstRow = 0;
  7064. if( btnFlag == "top" ) frstRow = grd_prcplist.selectedRow(0);
  7065. else if( btnFlag == "bottom" ) frstRow = grd_prcplist.selectedRow(selectedRows - 1);
  7066. var allRows = grd_prcplist.rows - 2; //caption, search row
  7067. var addChkRow = 0;
  7068. //var cnt = 0;
  7069. var chngYN = 0; //선택된 row인지 체크
  7070. var rowNum = 0;
  7071. var chkNum = 0; //위, 아래 row의 mset여부에 따라 달라지는 +/- row
  7072. var moveCnt = 0;
  7073. var iRow = 0;
  7074. var addNum = 0; //추가해야할 num
  7075. //var pmFlag = 0; //rowNum + - 여부 : 0 or else
  7076. var selInclprcpno = "";
  7077. var chkInclprcpno = "";
  7078. //var inclprcpnoExistYN = "N";
  7079. var inclprcpnoCVS = "";
  7080. var inclprcpnoItem = "";
  7081. var printRow = new Array();
  7082. var printRow2 = new Array();
  7083. var selRows = new Array();
  7084. if( !(selectedRows > 0) ) return;
  7085. model.makeNode("/root/tmp_moveprcp");
  7086. for(var i=selectedRows-1; i>=0; i--){
  7087. if(model.getValue("/root/main/prcp/prcplist["+ grd_prcplist.selectedrow(i) +"]/inclprcpno") > "0" && model.getValue("/root/main/prcp/prcplist["+ grd_prcplist.selectedrow(i) +"]/prcpsetcd") == "-")
  7088. inclprcpnoCVS = inclprcpnoCVS + model.getValue("/root/main/prcp/prcplist["+ grd_prcplist.selectedrow(i) +"]/inclprcpno") + "|";
  7089. }
  7090. inclprcpnoItem = inclprcpnoCVS.split("|");
  7091. //전체 row를 보면서 rowSeq를 설정해 줌 , rowseq순으로 /root/tmp_moveprcp => /root/main/prcp 로 이동
  7092. if( btnFlag == "top" ){
  7093. for( var i=grd_prcplist.rows-1; i>0; i-- ){
  7094. iRow = i;
  7095. chkNum = 0;
  7096. chngYN = 0;
  7097. addNum = 0;
  7098. //pmFlag = 0;
  7099. if( iRow > 1 ){
  7100. chkInclprcpno = model.getValue("/root/main/prcp/prcplist["+ iRow +"]/inclprcpno");
  7101. if( inclprcpnoItem.length-1 > 0 ){
  7102. for(var k=0; k<inclprcpnoItem.length-1; k++){ //copy대상의 mset
  7103. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  7104. chngYN = 1;
  7105. }
  7106. }
  7107. }
  7108. if( chngYN == 0 && grd_prcplist.isselected(iRow) == true && chkInclprcpno == "0" ) chngYN = 1;
  7109. if( chngYN == 1 ){ //선택된 row이면(선택된모코드의 자코드도 포함)
  7110. addChkRow = iRow - 1;
  7111. selInclprcpno = "";
  7112. if( addChkRow > 0 && addChkRow < grd_prcplist.rows ){
  7113. for(var j=addChkRow; j>=1; j--){
  7114. addYN = "N";
  7115. chkInclprcpno = model.getValue("/root/main/prcp/prcplist["+ j +"]/inclprcpno");
  7116. if( inclprcpnoItem.length-1 > 0 ){
  7117. for(var k=0; k<inclprcpnoItem.length-1; k++){ //copy대상의 mset
  7118. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  7119. //addNum++;
  7120. addYN = "Y";
  7121. }
  7122. }
  7123. }
  7124. if( addYN != "Y" && grd_prcplist.isselected(j) == true && chkInclprcpno == "0" ){
  7125. //addNum++;
  7126. addYN = "Y";
  7127. }
  7128. if( addYN != "Y" ){
  7129. if( chkInclprcpno != "0" ){ // && chkInclprcpno != inclprcpnoItem[k]
  7130. if( isNull(selInclprcpno) ) selInclprcpno = model.getValue("/root/main/prcp/prcplist["+ j +"]/inclprcpno");
  7131. if( !isNull(selInclprcpno) && selInclprcpno == chkInclprcpno && isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  7132. chkNum++;
  7133. }
  7134. else{
  7135. if( printRow.length <= 0 ){
  7136. if( isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  7137. chkNum++;
  7138. }
  7139. break;
  7140. }
  7141. }
  7142. }
  7143. }
  7144. }
  7145. }
  7146. if( chngYN > 0 ){
  7147. rowNum = i - printRow.length;
  7148. moveCnt++;
  7149. selRows[selRows.length] = rowNum;
  7150. //임시처방은 순서변경 시 수정모드로 상태를 세팅해줌
  7151. if( model.getValue ( prcpNode + "[" + i + "]/status") == "-") model.setValue ( prcpNode + "[" + i + "]/status", "U" );
  7152. }else{
  7153. if( printRow.length > 0 ){
  7154. for( var p=0; p<printRow.length; p++ ){
  7155. if( printRow[p] == i ) addNum = moveCnt;
  7156. }
  7157. }
  7158. rowNum = i + addNum;
  7159. if( printRow.length == 0 || (printRow.length > 0 && i == printRow[printRow.length-1]) ){
  7160. moveCnt = 0;
  7161. printRow = new Array();
  7162. }
  7163. }
  7164. //검색 row는 rowseq 변동 없음
  7165. if( model.getValue(prcpNode + "["+ i +"]/status") == "S" ) rowNum = i;
  7166. model.makeValue(prcpNode + "[" + i + "]/rowseq", rowNum);
  7167. printRow2[i-1] = rowNum;
  7168. }
  7169. }
  7170. else{
  7171. for( var i=1; i<grd_prcplist.rows; i++ ){
  7172. iRow = i;
  7173. chkNum = 0;
  7174. chngYN = 0;
  7175. addNum = 0;
  7176. //pmFlag = 0;
  7177. if( iRow < grd_prcplist.rows ){
  7178. chkInclprcpno = model.getValue("/root/main/prcp/prcplist["+ iRow +"]/inclprcpno");
  7179. if( inclprcpnoItem.length-1 > 0 ){
  7180. for(var k=0; k<inclprcpnoItem.length-1; k++){ //copy대상의 mset
  7181. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  7182. chngYN = 1;
  7183. }
  7184. }
  7185. }
  7186. if( chngYN == 0 && grd_prcplist.isselected(iRow) == true && chkInclprcpno == "0" ) chngYN = 1;
  7187. if( chngYN == 1 ){ //선택된 row이면(선택된모코드의 자코드도 포함)
  7188. addChkRow = iRow + 1;
  7189. selInclprcpno = "";
  7190. if( addChkRow > 0 && addChkRow < grd_prcplist.rows ){
  7191. for(var j=addChkRow; j<=allRows; j++){
  7192. addYN = "N";
  7193. chkInclprcpno = model.getValue("/root/main/prcp/prcplist["+ j +"]/inclprcpno");
  7194. if( inclprcpnoItem.length-1 > 0 ){
  7195. for(var k=0; k<inclprcpnoItem.length-1; k++){ //copy대상의 mset
  7196. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  7197. //addNum++;
  7198. addYN = "Y";
  7199. }
  7200. }
  7201. }
  7202. if( addYN != "Y" && grd_prcplist.isselected(j) == true && chkInclprcpno == "0" ){
  7203. //addNum++;
  7204. addYN = "Y";
  7205. }
  7206. if( addYN != "Y" ){
  7207. if( chkInclprcpno != "0" ){ // && chkInclprcpno != inclprcpnoItem[k]
  7208. if( isNull(selInclprcpno) ) selInclprcpno = model.getValue("/root/main/prcp/prcplist["+ j +"]/inclprcpno");
  7209. if( !isNull(selInclprcpno) && selInclprcpno == chkInclprcpno && isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  7210. chkNum++;
  7211. }
  7212. else{
  7213. if( printRow.length <= 0 ){
  7214. if( isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  7215. chkNum++;
  7216. }
  7217. break;
  7218. }
  7219. }
  7220. }
  7221. }
  7222. }
  7223. }
  7224. if( chngYN > 0 ){
  7225. rowNum = i + printRow.length;
  7226. moveCnt++;
  7227. selRows[selRows.length] = rowNum;
  7228. //임시처방은 순서변경 시 수정모드로 상태를 세팅해줌
  7229. if( model.getValue(prcpNode + "[" + i + "]/status") == "-") model.setValue ( prcpNode + "[" + i + "]/status", "U" );
  7230. }else{
  7231. if( printRow.length > 0 ){
  7232. for( var p=0; p<printRow.length; p++ ){
  7233. if( printRow[p] == i ) addNum = moveCnt;
  7234. }
  7235. }
  7236. rowNum = i - addNum;
  7237. if( printRow.length == 0 || (printRow.length > 0 && i == printRow[printRow.length-1]) ){
  7238. moveCnt = 0;
  7239. printRow = new Array();
  7240. }
  7241. }
  7242. //검색 row는 rowseq 변동 없음
  7243. if( model.getValue(prcpNode + "["+ i +"]/status") == "S" ) rowNum = i;
  7244. model.makeValue(prcpNode + "[" + i + "]/rowseq", rowNum);
  7245. printRow2[i-1] = rowNum;
  7246. }
  7247. }
  7248. //alert( printRow2 );
  7249. copyNodeListType ( "/root/tmp_moveprcp", "/root/main/prcp/prcplist" , "replace", model, model);
  7250. //처방 인스턴스로 이동 후 refresh
  7251. model.removeNodeset(prcpNode);
  7252. for( var i=1; i<grd_prcplist.rows; i++ ){
  7253. copyNodeListType ( "/root/main/prcp", "/root/tmp_moveprcp/prcplist[rowseq='" + i + "']" , "after", model, model);
  7254. model.removenode(prcpNode + "[" + i + "]/rowseq");
  7255. }
  7256. model.removeNodeset("/root/tmp_moveprcp/prcplist");
  7257. grd_prcplist.rebuild();
  7258. //grd_prcplist.refresh();
  7259. model.recalculate();
  7260. fPrcpColor();
  7261. //이동된 row를 select 처리함
  7262. if( selRows.length > 0 ){
  7263. for(var i=0; i<selRows.length; i++){
  7264. grd_prcplist.AddListSelect(selRows[i]);
  7265. }
  7266. }
  7267. }
  7268. // function lf_createEssDs() {
  7269. //
  7270. // for(var i = 0 ; i < lgds_arrEssentialDsList.length ; i++) {
  7271. // var sDatasetNm = lgds_arrEssentialDsList[i];
  7272. // if(utlf_isNull(this.objects[sDatasetNm])) {
  7273. // var objDs = new Dataset(sDatasetNm);
  7274. // this.addChild(sDatasetNm, objDs);
  7275. // objDs.name = sDatasetNm;
  7276. // }
  7277. // }
  7278. // }
  7279. /**
  7280. * @desc : 하드코드 리스트에 해당 파라미터의 코드 값이 존재 하는지 여부를 체크 한다.
  7281. * @param : sHardCdNo : 하드코드 번호
  7282. * sCheckCode : 체크 할 하드코드
  7283. * lf_ContainsHardCD("339", "LIR112");
  7284. * @return : true : 값이 존재 함.
  7285. false : 값이 존재하지 않음.
  7286. * @author : 엄영만 2012.11.26
  7287. * 변환 OK
  7288. * @---------------------------------------------------
  7289. */
  7290. function lf_ContainsHardCD(sHardCdNo, sCheckCode) {
  7291. var bRtn = false; // 반환값
  7292. //var sChekPath = "/root/temp/mmo001/fcontainshardcd"; // 체크할 임시 노드 경로
  7293. dsf_createDs("ds_chekPath"); //체크용 DS 생성
  7294. try {
  7295. //model.removeNodeset(sChekPath);
  7296. lf_getHardCDList("N", sHardCdNo, null, ds_chekPath);
  7297. if(!utlf_isNull(ds_chekPath.getColumn(ds_chekPath.findRow("hardcd",sCheckCode),"hardcd"))) { //if(!isNull(model.getValue(sChekPath + "/hardcd[hardcd='"+sCheckCode+"']/hardcd"))) {
  7298. bRtn = true;
  7299. } else {
  7300. bRtn = false;
  7301. }
  7302. } catch(err) {
  7303. sysf_messageBox ( "lf_ContainsHardCD() 실행 중 오류가 발생 하였습니다. sHardCdNo:" + sHardCdNo + " sCheckCode:"+ sCheckCode, "E" );
  7304. } finally {
  7305. //model.removeNodeset(sChekPath);
  7306. dsf_deleteDs("ds_chekPath"); //체크용 DS 삭제
  7307. }
  7308. return bRtn;
  7309. }
  7310. /**
  7311. * @desc : 공통 상세보기
  7312. * @param : flag: 상세보기를 호출하는 화면 구분
  7313. * @return : void
  7314. * @authur : 마정민 2007. 6. 12
  7315. * @---------------------------------------------------
  7316. */
  7317. function fIvwDetlVwCom ( grdObj ) {
  7318. var grdLeft = 382;
  7319. var minGrdLeft = 898;
  7320. var grdnm = ds_init.getColumn(0, "grdnm" );
  7321. var oGrid = this.components[grdnm];
  7322. // 속도 향상을 위해 이벤트 끔
  7323. oGrid.enableevent = false;
  7324. oGrid.enableredraw = false;
  7325. oOpener.div_all.grd_prcplist.enableevent = false;
  7326. oOpener.div_all.grd_prcplist.enableredraw = false;
  7327. oOpener.div_all.Splitter00.enableevent = false;
  7328. oOpener.div_all.Splitter00.enableredraw = false;
  7329. oOpener.div_all.Tab_prcp.enableevent = false;
  7330. oOpener.div_all.Tab_prcp.enableredraw = false;
  7331. if ( ds_init.getColumn(0, "detlvw") == "p") {
  7332. if (oOpener.ds_patflag.getColumn(0, "prcpgenrflag") != "O" && !utlf_isNull(oOpener.ds_patflag.getColumn(0, "prcpgenrflag"))){
  7333. oOpener.div_all.grd_prcplist.setFormatColProperty(3, "size", 0);
  7334. }
  7335. if (typeof(oOpener.div_all.grd_prcplist) != "undefined") {
  7336. oOpener.div_all.grd_prcplist.setFormatColProperty(4, "size", 0);
  7337. oOpener.div_all.Splitter00.position.x = minGrdLeft;
  7338. }
  7339. ds_init.setColumn(0, "detlvw", "m");
  7340. oOpener.ds_init.setColumn(0, "detlivw", "m");
  7341. if(!utlf_isNull(oGrid)) {
  7342. if ( grdObj == "bf" ) {
  7343. oGrid.setFormatColProperty(oGrid.getBindCellIndex("body", "tempcol6"), "size", ds_init.getColumn(0, "tempcol6exwd"));
  7344. oGrid.setFormatColProperty(oGrid.getBindCellIndex("body", "tempcol7"), "size", ds_init.getColumn(0, "tempcol7exwd"));
  7345. //20081031 마정민 수정 전처방에 지정일을 추가하면서 상세보기시 word 추가. word일때는 아래와 같이
  7346. oGrid.extendsizetype = "row";
  7347. oGrid.autosizingtype = "row";
  7348. } else if(grdObj == "prom") {
  7349. oGrid.setFormatColProperty(oGrid.getBindCellIndex("body", "prcpdelivefact"), "size", ds_init.getColumn(0, "prcpdelivefactexwd"));
  7350. }
  7351. }
  7352. } else {
  7353. if (oOpener.ds_patflag.getColumn(0, "prcpgenrflag") != "O" && !utlf_isNull(oOpener.ds_patflag.getColumn(0, "prcpgenrflag"))){
  7354. oOpener.div_all.grd_prcplist.setFormatColProperty(3, "size", 55);
  7355. }
  7356. if (typeof(oOpener.div_all.grd_prcplist) != "undefined") {
  7357. oOpener.div_all.grd_prcplist.setFormatColProperty(4, "size", 80);
  7358. oOpener.div_all.Splitter00.position.x = grdLeft;
  7359. }
  7360. ds_init.setColumn(0, "detlvw", "p");
  7361. oOpener.ds_init.setColumn(0, "detlivw", "p");
  7362. if(!utlf_isNull(oGrid)) {
  7363. if ( grdObj == "bf" ) {
  7364. oGrid.setFormatColProperty(oGrid.getBindCellIndex("body", "tempcol6"), "size", ds_init.getColumn(0, "tempcol6wd"));
  7365. oGrid.setFormatColProperty(oGrid.getBindCellIndex("body", "tempcol7"), "size", ds_init.getColumn(0, "tempcol7wd"));
  7366. //20081031 마정민 수정 전처방에 지정일을 추가하면서 상세보기시 word 추가. none일때는 autoResize = false;
  7367. oGrid.extendsizetype = "none";
  7368. oGrid.autosizingtype = "none";
  7369. } else if(grdObj == "prom") {
  7370. oGrid.setFormatColProperty(oGrid.getBindCellIndex("body", "prcpdelivefact"), "size", ds_init.getColumn(0, "prcpdelivefactwd"));
  7371. }
  7372. }
  7373. }
  7374. // 속도 향상을 위해 꺼놨던 이벤트 다시 켬
  7375. oGrid.enableevent = true;
  7376. oGrid.enableredraw = true;
  7377. oOpener.div_all.grd_prcplist.enableevent = true;
  7378. oOpener.div_all.grd_prcplist.enableredraw = true;
  7379. oOpener.div_all.Splitter00.enableevent = true;
  7380. oOpener.div_all.Splitter00.enableredraw = true;
  7381. oOpener.div_all.Tab_prcp.enableevent = true;
  7382. oOpener.div_all.Tab_prcp.enableredraw = true;
  7383. //CP일 경우, viewer안의 컨트롤 height 사이즈를 모두 조정해야 함 (2008.08.28 JJE)
  7384. //전처방 상세보기 모드일 경우 타 버튼 클릭시 전처방 축소시 오류 발생으로 조건 추가(2008.10.21 JJE)
  7385. if ( oOpener.ds_root.getColumn(0, "cp" ) == "Y" && grdObj != "bf" ) {
  7386. oOpener.fResizeControls();
  7387. }
  7388. }
  7389. /**
  7390. * @desc : 인증 암호화 전 데이터 생성
  7391. * @param : sFlag: 인증정보 구분 ("1":처방정보, "2":진단정보)
  7392. : sRegpath : 접수정보 인스턴스노드 패스
  7393. : sSrcPath : 정보 인스턴스노드 패스
  7394. * @return : void
  7395. * @authur : 엄영만 2013. 05. 29
  7396. */
  7397. function lf_getSignBfConts (sFlag, sRegpath, sSrcPath) {
  7398. var sRtn = "";
  7399. var sRegConts = ""; // 환자 등록정보
  7400. var sSrcConts = ""; // 처방및 진단 암호화전 데이터
  7401. var regNodeList = this.objects[sRegpath];
  7402. var srcNodeList = this.objects[sSrcPath];
  7403. if ( !regNodeList.rowcount > 0 || !srcNodeList.rowcount > 0) { return sRtn; }
  7404. var sOrdType = regNodeList.getColumn(0, "ioflag");
  7405. sRegConts = "$환자진료정보";
  7406. sRegConts = sRegConts + "@등록번호:" + regNodeList.getColumn(0, "pid");
  7407. sRegConts = sRegConts + "@이름:" + regNodeList.getColumn(0, "hngnm");
  7408. sRegConts = sRegConts + "@성별/나이:" + regNodeList.getColumn(0, "sex") + "/" + regNodeList.getColumn(0, "age");
  7409. sRegConts = sRegConts + "@진료과:" + regNodeList.getColumn(0, "orddeptnm") + "(" + regNodeList.getColumn(0, "orddeptcd") + ")";
  7410. if ("O" == sOrdType || "S" == sOrdType) { // 외래
  7411. sRegConts = sRegConts + "@진료의:" + regNodeList.getColumn(0, "orddrnm") + "(" + regNodeList.getColumn(0, "orddrid") + ")";
  7412. sRegConts = sRegConts + "@진료일자:" + regNodeList.getColumn(0, "orddd").toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일");
  7413. } else { // 입원
  7414. sRegConts = sRegConts + "@진료의:" + regNodeList.getColumn(0, "orddrnm") + "(" + regNodeList.getColumn(0, "medispclid") + ")";
  7415. sRegConts = sRegConts + "@입원일자:" + regNodeList.getColumn(0, "indd").toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일");
  7416. }
  7417. switch (sFlag) {
  7418. case "1": // 처방정보
  7419. var sStatus = "";
  7420. var sPrcpflag = "";
  7421. var sPrcpclscd = "";
  7422. var sPrcpdd = "";
  7423. sSrcConts = "$환자처방정보";
  7424. for(var i = 0; i < srcNodeList.rowcount; i++) {
  7425. sStatus = srcNodeList.getColumn(i, "status");
  7426. sPrcpflag = srcNodeList.getColumn(i, "prcpflag");
  7427. sPrcpclscd = srcNodeList.getColumn(i, "prcpclscd");
  7428. sPrcpdd = lf_getDsValue(srcNodeList, i, "prcppkspec").substring(0,8);
  7429. // 20100210 한재상 수정 - 사망환자 사망등록이후 처방시 처방일자를 사망일자로 변경
  7430. if ("I" == sOrdType || "E" == sOrdType || "D" == sOrdType) {
  7431. if ("I" == sStatus || "-" == sStatus || "U" == sStatus) {
  7432. var sDethdd = regNodeList.getColumn(0, "dethdt"); // 사망일자 설정
  7433. if(sDethdd.length >= 8 && sPrcpdd > sDethdd) {
  7434. sPrcpdd = sDethdd;
  7435. }
  7436. }
  7437. }
  7438. if ("I" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; }
  7439. else if ("-" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; } // 임시저장후 인증저장
  7440. else if ("U" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; } // 임시저장후 수정 인증저장
  7441. else if ("D" == sStatus) { sSrcConts = sSrcConts + "@처리구분:DC(임시저장)"; } // 임시저장후 DC
  7442. else if ("C" == sStatus) { sSrcConts = sSrcConts + "@처리구분:DC"; }
  7443. else if ("S" == sStatus) {
  7444. if ("O" == srcNodeList.getColumn(i, "prcphistcd")) { sSrcConts = sSrcConts + "@처리구분:후인증"; }
  7445. else if ("D" == srcNodeList.getColumn(i, "prcphistcd")) { sSrcConts = sSrcConts + "@처리구분:DC 후인증"; }
  7446. } else { continue; }
  7447. if ("1" == sPrcpflag) { sSrcConts = sSrcConts + "@처방구분:수가"; }
  7448. else if ("2" == sPrcpflag) { sSrcConts = sSrcConts + "@처방구분:지시"; }
  7449. else if ("3" == sPrcpflag) { sSrcConts = sSrcConts + "@처방구분:식사"; }
  7450. else { continue; }
  7451. sSrcConts = sSrcConts + "@처방일자:" + sPrcpdd.toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일");
  7452. sSrcConts = sSrcConts + "@처방코드:" + srcNodeList.getColumn(i, "prcpcd");
  7453. sSrcConts = sSrcConts + "@처방명:" + srcNodeList.getColumn(i, "prcpnm");
  7454. sSrcConts = sSrcConts + "@처방내역:" + srcNodeList.getColumn(i, "prcpqty") + " * #" + srcNodeList.getColumn(i, "prcptims") + " * " + srcNodeList.getColumn(i, "prcpdayno");
  7455. if ("1" == sPrcpflag && "A" == sPrcpclscd.substring(0,1)) { // 복용방법, 비율처방
  7456. sSrcConts = sSrcConts + "@복용방법:" + srcNodeList.getColumn(i, "drugmthdspccdnm") + "(" + srcNodeList.getColumn(i, "drugmthdspccd") + ")";
  7457. if ( "-" != srcNodeList.getColumn(i, "drugrateqty")) {
  7458. sSrcConts = sSrcConts + "@투여비율적용:" + srcNodeList.getColumn(i, "drugrateqty").replaceAll("\\|", ",");
  7459. }
  7460. }
  7461. if ("1" == sPrcpflag && ( "B" == sPrcpclscd.substring(0,1) || "D2" == sPrcpclscd)) { // 진단검사, 병리 검체명
  7462. sSrcConts = sSrcConts + "@검체:" + srcNodeList.getColumn(i, "drugmthdspccdnm") + "(" + srcNodeList.getColumn(i, "drugmthdspccd") + ")";
  7463. }
  7464. sSrcConts = sSrcConts + "@전달사항:" + srcNodeList.getColumn(i, "prcpdelivefact");
  7465. if ("1" == sPrcpflag && "C2" == sPrcpclscd) { // 임상소견
  7466. sSrcConts = sSrcConts + "@임상소견:" + srcNodeList.getColumn(i, "clinccmtcnts")
  7467. }
  7468. if ("I" == sStatus || "-" == sStatus || "U" == sStatus) {
  7469. sSrcConts = sSrcConts + "@등록일시:" + (new Date()).getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  7470. sSrcConts = sSrcConts + "@등록자:" + sysf_getUserInfo("usernm") + "(" + sysf_getUserInfo("userid") + ")";
  7471. } else {
  7472. sSrcConts = sSrcConts + "@수정일시:" + (new Date()).getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  7473. sSrcConts = sSrcConts + "@수정자:" + sysf_getUserInfo("usernm") + "(" + sysf_getUserInfo("userid") + ")";
  7474. }
  7475. }
  7476. break;
  7477. case "2": // 진단정보
  7478. var sStatus = "";
  7479. var sDiagKindcd = "";
  7480. var sDiagKindcdFlag = "";
  7481. var sDiagHistCd = "";
  7482. sSrcConts = "$환자진단정보";
  7483. for(var i = 0; i < srcNodeList.rowcount; i++) {
  7484. sStatus = srcNodeList.getColumn(i, "status");
  7485. sDiagKindcd = srcNodeList.getColumn(i, "diagkindcd");
  7486. sDiagKindcdFlag = srcNodeList.getColumn(i, "diagkindcdflag");
  7487. sDiagHistCd = srcNodeList.getColumn(i, "diaghistcd");
  7488. if ("I" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; }
  7489. else if ("T" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; } // 임시저장후 인증저장
  7490. else if ("U" == sStatus) {
  7491. if ("T" == sDiagHistCd) { sSrcConts = sSrcConts + "@처리구분:신규"; // 임시저장후 수정 인증저장
  7492. } else { sSrcConts = sSrcConts + "@처리구분:수정"; }
  7493. }
  7494. else if ("D" == sStatus) { sSrcConts = sSrcConts + "@처리구분:삭제"; }
  7495. else if ("S" == sStatus) { continue; } // 검색
  7496. else { continue; }
  7497. if ("C" == sDiagKindcd) { sSrcConts = sSrcConts + "@종류:확정"; }
  7498. else if ("R" == sDiagKindcd) { sSrcConts = sSrcConts + "@종류:R/O"; }
  7499. else { continue; }
  7500. if ("M" == sDiagKindcdFlag) { sSrcConts = sSrcConts + "@주부구분:주"; }
  7501. else if("S" == sDiagKindcdFlag) { sSrcConts = sSrcConts + "@주부구분:부"; }
  7502. else { continue; }
  7503. sSrcConts = sSrcConts + "@진단코드:" + srcNodeList.getColumn(i, "diagcd");
  7504. sSrcConts = sSrcConts + "@진단영문명:" + srcNodeList.getColumn(i, "diagengnm");
  7505. sSrcConts = sSrcConts + "@진단한글명:" + srcNodeList.getColumn(i, "diaghngnm");
  7506. if ("I" == sStatus || "T" == sStatus || ("U" == sStatus && "T" == sDiagHistCd)) {
  7507. sSrcConts = sSrcConts + "@등록일시:" + (new Date()).getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  7508. sSrcConts = sSrcConts + "@등록자:" + sysf_getUserInfo("usernm") + "(" + sysf_getUserInfo("userid") + ")";
  7509. } else {
  7510. sSrcConts = sSrcConts + "@수정일시:" + (new Date()).getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  7511. sSrcConts = sSrcConts + "@수정자:" + sysf_getUserInfo("usernm") + "(" + sysf_getUserInfo("userid") + ")";
  7512. }
  7513. }
  7514. break;
  7515. default:
  7516. break;
  7517. }
  7518. if( sSrcConts != "$환자처방정보" && sSrcConts != "$환자진단정보" ) { // 저장할 처방 또는 진단정보가 있을경우만 리턴
  7519. sRtn = sRegConts + sSrcConts;
  7520. }
  7521. return sRtn;
  7522. }
  7523. /**
  7524. * @desc : 속도체크를 위한 모니터링 로그 데이터 생성.
  7525. * @param : sType: 모니터링 타입값
  7526. : sItem01 ~ sItem20 : 모니터링 필드값
  7527. * @return : void
  7528. * @authur : 엄영만 2013. 06. 27
  7529. */
  7530. function reqSetMonitoringLog (sType, sItem01, sItem02, sItem03, sItem04, sItem05, sItem06, sItem07, sItem08, sItem09, sItem10, sItem11, sItem12, sItem13, sItem14, sItem15, sItem16, sItem17, sItem18, sItem19, sItem20) {
  7531. try {
  7532. if(utlf_isNull(sType)) { if (0 == sType ) sType = sType.toString(); else sType = "-"; }
  7533. if(utlf_isNull(sItem01)) { if (0 == sItem01) sItem01 = sItem01.toString(); else sItem01 = "-"; }
  7534. if(utlf_isNull(sItem02)) { if (0 == sItem02) sItem02 = sItem02.toString(); else sItem02 = "-"; }
  7535. if(utlf_isNull(sItem03)) { if (0 == sItem03) sItem03 = sItem03.toString(); else sItem03 = "-"; }
  7536. if(utlf_isNull(sItem04)) { if (0 == sItem04) sItem04 = sItem04.toString(); else sItem04 = "-"; }
  7537. if(utlf_isNull(sItem05)) { if (0 == sItem05) sItem05 = sItem05.toString(); else sItem05 = "-"; }
  7538. if(utlf_isNull(sItem06)) { if (0 == sItem06) sItem06 = sItem06.toString(); else sItem06 = "-"; }
  7539. if(utlf_isNull(sItem07)) { if (0 == sItem07) sItem07 = sItem07.toString(); else sItem07 = "-"; }
  7540. if(utlf_isNull(sItem08)) { if (0 == sItem08) sItem08 = sItem08.toString(); else sItem08 = "-"; }
  7541. if(utlf_isNull(sItem09)) { if (0 == sItem09) sItem09 = sItem09.toString(); else sItem09 = "-"; }
  7542. if(utlf_isNull(sItem10)) { if (0 == sItem10) sItem10 = sItem10.toString(); else sItem10 = "-"; }
  7543. if(utlf_isNull(sItem11)) { if (0 == sItem11) sItem11 = sItem11.toString(); else sItem11 = "-"; }
  7544. if(utlf_isNull(sItem12)) { if (0 == sItem12) sItem12 = sItem12.toString(); else sItem12 = "-"; }
  7545. if(utlf_isNull(sItem13)) { if (0 == sItem13) sItem13 = sItem13.toString(); else sItem13 = "-"; }
  7546. if(utlf_isNull(sItem14)) { if (0 == sItem14) sItem14 = sItem14.toString(); else sItem14 = "-"; }
  7547. if(utlf_isNull(sItem15)) { if (0 == sItem15) sItem15 = sItem15.toString(); else sItem15 = "-"; }
  7548. if(utlf_isNull(sItem16)) { if (0 == sItem16) sItem16 = sItem16.toString(); else sItem16 = "-"; }
  7549. if(utlf_isNull(sItem17)) { if (0 == sItem17) sItem17 = sItem17.toString(); else sItem17 = "-"; }
  7550. if(utlf_isNull(sItem18)) { if (0 == sItem18) sItem18 = sItem18.toString(); else sItem18 = "-"; }
  7551. if(utlf_isNull(sItem19)) { if (0 == sItem19) sItem19 = sItem19.toString(); else sItem19 = "-"; }
  7552. if(utlf_isNull(sItem20)) { if (0 == sItem20) sItem20 = sItem20.toString(); else sItem20 = "-"; }
  7553. var sRef = dsf_createDsRow("ds_monitoringlog_reqdata", [{col:"type", type:"string", size:256, val:sType},
  7554. {col:"item01", type:"string", size:256, val:sItem01},
  7555. {col:"item02", type:"string", size:256, val:sItem02},
  7556. {col:"item03", type:"string", size:256, val:sItem03},
  7557. {col:"item04", type:"string", size:256, val:sItem04},
  7558. {col:"item05", type:"string", size:256, val:sItem05},
  7559. {col:"item06", type:"string", size:256, val:sItem06},
  7560. {col:"item07", type:"string", size:256, val:sItem07},
  7561. {col:"item08", type:"string", size:256, val:sItem08},
  7562. {col:"item09", type:"string", size:256, val:sItem09},
  7563. {col:"item10", type:"string", size:256, val:sItem10},
  7564. {col:"item11", type:"string", size:256, val:sItem11},
  7565. {col:"item12", type:"string", size:256, val:sItem12},
  7566. {col:"item13", type:"string", size:256, val:sItem13},
  7567. {col:"item14", type:"string", size:256, val:sItem14},
  7568. {col:"item15", type:"string", size:256, val:sItem15},
  7569. {col:"item16", type:"string", size:256, val:sItem16},
  7570. {col:"item17", type:"string", size:256, val:sItem17},
  7571. {col:"item18", type:"string", size:256, val:sItem18},
  7572. {col:"item19", type:"string", size:256, val:sItem19},
  7573. {col:"item20", type:"string", size:256, val:sItem20}]);
  7574. var oParam = {};
  7575. oParam.id = "TXMMO00120";
  7576. oParam.service = "prcpmngtapp.PrcpMngt";
  7577. oParam.method = "reqSetMonitoringLog";
  7578. oParam.inds = "req=" + sRef;
  7579. oParam.async = false;
  7580. tranf_submit(oParam);
  7581. } catch(err) {
  7582. sysf_messageBox ( "reqSetMonitoringLog() 실행 중 오류가 발생 하였습니다.", "E999" );
  7583. }
  7584. }
  7585. /**
  7586. * @---------------------------------------------------
  7587. * @desc : StringBuffer 관련 추가 2013.07.16 엄영만
  7588. * @use it : var sb = new StringBuffer();
  7589. sb.append("Hello ");
  7590. sb.append("Java");
  7591. sb.append("script!");
  7592. document.write(sb.toString());
  7593. * @---------------------------------------------------
  7594. */
  7595. function StringBuffer() { this.buffer = []; }
  7596. StringBuffer.prototype.append = function(str) {
  7597. if (utlf_isNull(str)) { str = ""; }
  7598. this.buffer.push(str);
  7599. return this;
  7600. }
  7601. StringBuffer.prototype.toString = function(str) {
  7602. if (utlf_isNull(str)) { str = ""; }
  7603. return this.buffer.join(str);
  7604. }
  7605. function lf_setDatasetEvent(oDsSrc, oDsDest, enable) {
  7606. oDsSrc.enableevent = enable;
  7607. oDsDest.enableevent = enable;
  7608. }]]></Script>