MMRCommon.xjs 514 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735137361373713738137391374013741137421374313744137451374613747137481374913750137511375213753137541375513756137571375813759137601376113762137631376413765137661376713768137691377013771137721377313774137751377613777137781377913780137811378213783137841378513786137871378813789137901379113792137931379413795137961379713798137991380013801138021380313804138051380613807138081380913810138111381213813138141381513816138171381813819138201382113822138231382413825138261382713828138291383013831138321383313834138351383613837138381383913840138411384213843138441384513846138471384813849138501385113852138531385413855138561385713858138591386013861138621386313864138651386613867138681386913870138711387213873138741387513876138771387813879138801388113882138831388413885138861388713888138891389013891138921389313894138951389613897138981389913900139011390213903139041390513906139071390813909139101391113912139131391413915139161391713918139191392013921139221392313924139251392613927139281392913930139311393213933139341393513936139371393813939139401394113942139431394413945139461394713948139491395013951139521395313954139551395613957139581395913960139611396213963139641396513966139671396813969139701397113972139731397413975139761397713978139791398013981139821398313984139851398613987139881398913990139911399213993139941399513996139971399813999140001400114002140031400414005140061400714008140091401014011140121401314014140151401614017140181401914020140211402214023140241402514026140271402814029140301403114032140331403414035140361403714038140391404014041140421404314044140451404614047140481404914050140511405214053140541405514056140571405814059140601406114062140631406414065140661406714068140691407014071140721407314074140751407614077140781407914080140811408214083140841408514086140871408814089140901409114092140931409414095140961409714098140991410014101141021410314104141051410614107141081410914110141111411214113141141411514116141171411814119141201412114122141231412414125141261412714128141291413014131141321413314134141351413614137141381413914140141411414214143141441414514146141471414814149141501415114152141531415414155141561415714158141591416014161141621416314164141651416614167141681416914170141711417214173141741417514176141771417814179141801418114182141831418414185141861418714188141891419014191141921419314194141951419614197141981419914200142011420214203142041420514206142071420814209142101421114212142131421414215142161421714218142191422014221142221422314224142251422614227142281422914230142311423214233142341423514236142371423814239142401424114242142431424414245142461424714248142491425014251142521425314254142551425614257142581425914260142611426214263142641426514266142671426814269142701427114272142731427414275142761427714278142791428014281142821428314284142851428614287142881428914290142911429214293142941429514296142971429814299143001430114302143031430414305143061430714308143091431014311143121431314314143151431614317143181431914320143211432214323143241432514326143271432814329143301433114332143331433414335143361433714338143391434014341143421434314344143451434614347143481434914350143511435214353143541435514356143571435814359143601436114362143631436414365143661436714368143691437014371143721437314374143751437614377143781437914380143811438214383143841438514386143871438814389143901439114392143931439414395143961439714398143991440014401144021440314404144051440614407144081440914410144111441214413144141441514416144171441814419144201442114422144231442414425144261442714428144291443014431144321443314434144351443614437144381443914440144411444214443144441444514446144471444814449144501445114452144531445414455144561445714458144591446014461144621446314464144651446614467144681446914470144711447214473144741447514476144771447814479144801448114482144831448414485144861448714488144891449014491144921449314494144951449614497144981449914500145011450214503145041450514506145071450814509145101451114512145131451414515145161451714518145191452014521145221452314524145251452614527145281452914530145311453214533145341453514536145371453814539145401454114542145431454414545145461454714548145491455014551145521455314554145551455614557145581455914560145611456214563145641456514566145671456814569145701457114572145731457414575145761457714578145791458014581145821458314584145851458614587145881458914590145911459214593145941459514596145971459814599146001460114602146031460414605146061460714608146091461014611146121461314614146151461614617146181461914620146211462214623146241462514626146271462814629146301463114632146331463414635146361463714638146391464014641146421464314644146451464614647146481464914650146511465214653146541465514656146571465814659146601466114662146631466414665146661466714668146691467014671146721467314674146751467614677146781467914680146811468214683146841468514686146871468814689146901469114692146931469414695146961469714698146991470014701147021470314704147051470614707147081470914710147111471214713147141471514716147171471814719147201472114722147231472414725147261472714728147291473014731147321473314734147351473614737147381473914740147411474214743147441474514746147471474814749147501475114752147531475414755147561475714758147591476014761147621476314764147651476614767147681476914770147711477214773147741477514776147771477814779147801478114782147831478414785147861478714788147891479014791147921479314794147951479614797147981479914800148011480214803148041480514806148071480814809148101481114812148131481414815148161481714818148191482014821148221482314824148251482614827148281482914830148311483214833148341483514836148371483814839148401484114842148431484414845148461484714848148491485014851148521485314854148551485614857148581485914860148611486214863148641486514866148671486814869148701487114872148731487414875148761487714878148791488014881148821488314884148851488614887148881488914890148911489214893148941489514896148971489814899149001490114902149031490414905149061490714908149091491014911149121491314914149151491614917149181491914920149211492214923149241492514926149271492814929149301493114932149331493414935149361493714938149391494014941149421494314944149451494614947149481494914950149511495214953149541495514956149571495814959149601496114962149631496414965149661496714968149691497014971149721497314974149751497614977149781497914980149811498214983149841498514986149871498814989149901499114992149931499414995149961499714998149991500015001150021500315004150051500615007150081500915010150111501215013150141501515016150171501815019150201502115022150231502415025150261502715028150291503015031150321503315034150351503615037150381503915040150411504215043150441504515046150471504815049150501505115052150531505415055150561505715058150591506015061150621506315064150651506615067150681506915070150711507215073150741507515076150771507815079150801508115082150831508415085150861508715088150891509015091150921509315094150951509615097150981509915100151011510215103151041510515106151071510815109151101511115112151131511415115151161511715118151191512015121151221512315124151251512615127151281512915130151311513215133151341513515136151371513815139151401514115142151431514415145151461514715148151491515015151151521515315154151551515615157151581515915160151611516215163151641516515166151671516815169151701517115172151731517415175151761517715178151791518015181151821518315184151851518615187151881518915190151911519215193151941519515196151971519815199152001520115202152031520415205152061520715208152091521015211152121521315214152151521615217152181521915220152211522215223152241522515226152271522815229152301523115232152331523415235152361523715238152391524015241152421524315244152451524615247152481524915250152511525215253152541525515256152571525815259152601526115262152631526415265152661526715268152691527015271152721527315274152751527615277152781527915280152811528215283152841528515286152871528815289152901529115292152931529415295152961529715298152991530015301153021530315304153051530615307153081530915310153111531215313153141531515316153171531815319153201532115322153231532415325153261532715328153291533015331153321533315334153351533615337153381533915340153411534215343153441534515346153471534815349153501535115352153531535415355153561535715358153591536015361153621536315364153651536615367153681536915370153711537215373153741537515376153771537815379153801538115382153831538415385153861538715388153891539015391153921539315394153951539615397153981539915400154011540215403154041540515406154071540815409154101541115412154131541415415154161541715418154191542015421154221542315424154251542615427154281542915430154311543215433154341543515436154371543815439154401544115442154431544415445154461544715448154491545015451154521545315454154551545615457154581545915460154611546215463154641546515466154671546815469154701547115472154731547415475154761547715478154791548015481154821548315484154851548615487154881548915490154911549215493154941549515496154971549815499155001550115502155031550415505155061550715508155091551015511155121551315514155151551615517155181551915520155211552215523155241552515526155271552815529155301553115532155331553415535155361553715538155391554015541155421554315544155451554615547155481554915550155511555215553155541555515556155571555815559
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[include "emr_formreccorexp::MMRFuncLib.xjs";
  3. var TX_SUBMIT_COMN_FORM = "TXMMR01301";
  4. var TX_SUBMIT_EXTN_FORM = "TXMMR01303";
  5. var ComnFormObj = "";
  6. var objExt = new ExtCommon();
  7. //var arErrorCode = new HashArray();
  8. //var gPageInfo = new PAGEINFO();
  9. var arrDsMain = ["ds_data_paminfo", "ds_data_validinfo", "ds_data_formmast", "ds_data_formdegn",
  10. "ds_data_unitformmast", "ds_data_unitformdegn", "ds_data_vallist", "ds_data_imgelist",
  11. "ds_data_extnformlist", "ds_data_readonlylist", "ds_data_programdesignformlist",
  12. "ds_data_formrec", "ds_data_recitem", "ds_temp_comnclinclist"];
  13. var arrDsForminfo = ["ds_data_validinfo", "ds_data_formmast", "ds_data_formdegn",
  14. "ds_data_unitformmast", "ds_data_unitformdegn", "ds_data_vallist", "ds_data_imgelist",
  15. "ds_data_extnformlist", "ds_data_readonlylist", "ds_data_programdesignformlist"];
  16. var arrDsTempFrominfo = ["ds_temp_validinfo", "ds_temp_formmast", "ds_temp_formdegn",
  17. "ds_temp_unitformmast", "ds_temp_unitformdegn", "ds_temp_vallist", "ds_temp_imgelist",
  18. "ds_temp_extnformlist", "ds_temp_readonlylist", "ds_temp_programdesignformlist" ];
  19. var arrDsRecinfo = ["ds_data_formrec", "ds_data_recitem"];
  20. var arrDsHiddenRecinfo = ["ds_hidden_formrec", "ds_hidden_recitem"];
  21. var arrDsTempRecinfo = ["ds_temp_formrec", "ds_temp_recitem"];
  22. // 추가 확인 필요한 부분
  23. var arrDsExtnRecinfo = ["ds_hidden_extnformrec_recitem", "ds_hidden_extnformrec_formrec"]
  24. var arrDsTempEtcinfo = ["ds_temp_imgerec_recitem", "ds_temp_fmyrec_recitem", "ds_temp_etcrec_recitem", "ds_temp_lastdiag_recitem"];
  25. // ds_data_paminfo
  26. // comnclinclist
  27. // ds_temp_comnclinclist
  28. /**********************************************************************************
  29. * Method Name : SAVED_INFO
  30. * Description : 기록정보 변수 초기화
  31. * argument :
  32. * return Type :
  33. * Creator :
  34. **********************************************************************************/
  35. function SAVED_INFO()
  36. {
  37. this.formrecseq = 0;
  38. this.rechistseq = 0;
  39. }
  40. /**********************************************************************************
  41. * Method Name : COMN_CONT_RECCNTS
  42. * Description : 환자정보 변수 초기화
  43. * argument :
  44. * return Type :
  45. * Creator :
  46. **********************************************************************************/
  47. function COMN_CONT_RECCNTS()
  48. {
  49. this.pid = "";
  50. this.recfromdt = "";
  51. this.rectodt = "";
  52. this.formrecdeptcd = "";
  53. this.chosflag = "";
  54. this.formrecseq = "";
  55. this.formcd = "-";
  56. }
  57. /**********************************************************************************
  58. * Method Name : RECITEM_INFO
  59. * Description : 기록항목 변수 초기화
  60. * argument :
  61. * return Type :
  62. * Creator :
  63. **********************************************************************************/
  64. function RECITEM_INFO()
  65. {
  66. this.pid = "";
  67. this.degnitemkind = "";
  68. this.degnitemcd = "";
  69. this.degnitemlevlcd = "";
  70. this.rectermcd = "";
  71. this.recitemcd = "";
  72. this.reccnts = "";
  73. }
  74. /**
  75. * @group :
  76. * @ver : 2008.06.13
  77. * @by : snoweye
  78. * @---------------------------------------------------
  79. * @type : function
  80. * @access : private
  81. * @desc : 서식 로딩상태를 세팅
  82. * @param : obj - loadstatus를 세팅할 객체
  83. * @param : formcd - 현재 로딩이 완료된 서식코드
  84. * @param : curformtype - 로딩이 완료된 서식의 종류 (COMN_FORM/UNIT_FORM/GENL_FORM)
  85. * @return :
  86. * @---------------------------------------------------
  87. */
  88. function setLoadStatus(obj, curformcd, curformtype)
  89. {
  90. loadstatus = obj.window.javascript.gFormLoadStatus;
  91. loadstatus.curformcd = curformcd;
  92. loadstatus.curformtype = curformtype;
  93. //loadstatus.loadlist.add(curformcd, LOAD_COMPLETE);
  94. }
  95. /**
  96. * @desc : 초진, 재진기록지 여부
  97. * @id :
  98. * @event : xforms-ready
  99. * @return : void
  100. * @authur : 박종훈
  101. */
  102. function IsComnMediForm(srcformcd)
  103. {
  104. var flag = false;
  105. switch (srcformcd)
  106. {
  107. case "0000000001" :
  108. case "0000000002" :
  109. case "0000000003" :
  110. case "0000000004" :
  111. flag = true;
  112. break;
  113. }
  114. return flag;
  115. }
  116. /**
  117. * @desc : 기록값 셋팅
  118. * @id :
  119. * @event :
  120. * @return : void
  121. * @authur : 박종훈
  122. */
  123. function SetCommMediFormValue(pItemCds, reciteminfo)
  124. {
  125. var ivwObj;
  126. var flag;
  127. for (var i=0; i<pItemCds.length; i++)
  128. {
  129. ivwObj = document.controls("ivw_" + pItemCds[i]);
  130. //2010.03.09 안치원 - 기록내용에서 부분서식의 Copy가 안되는 오류 수정
  131. //if (ivwObj != null && ivwObj.attribute("ctrluseyn") == "Y")
  132. if (ivwObj != null && ivwObj.attribute("unitformcd") != "")
  133. flag = SetMediFormValue(ivwObj.model, reciteminfo);
  134. else
  135. flag = SetMediFormValue(model, reciteminfo);
  136. if (flag) break;
  137. }
  138. return flag;
  139. }
  140. var MMR_REC_INFO = "/root/main/recinfo/recitem";
  141. var MMR_FORM_INFO = "/root/main/forminfo/formdegn";
  142. /**
  143. * @desc : 기록값 셋팅
  144. * @id :
  145. * @event :
  146. * @return : void
  147. * @authur : 박종훈
  148. */
  149. function SetMediFormValue(pModel, reciteminfo)
  150. {
  151. var nodeSet = MMR_REC_INFO;
  152. //2010-05-28 오전 9:299:42 이지운 추가 : MSL -> 부분서식지로 복사할경우 발생하는 오류 수정
  153. if(reciteminfo.degnitemkind == "MSL"){
  154. nodeSet = nodeSet + "[degnitemlevlcd='" +reciteminfo.degnitemlevlcd+ "' and colno='" +reciteminfo.colno+ "']";
  155. }else{
  156. nodeSet = nodeSet + "[degnitemlevlcd='" +reciteminfo.degnitemlevlcd+ "']";
  157. }
  158. var xPathFunction = "count(" + nodeSet + ")";
  159. var cnt = pModel.getXPathValue(xPathFunction);
  160. if (cnt == 1)
  161. {
  162. //2009-10-07 오후 7:59:42 강지훈 추가 : MTX -> 부분서식지로 복사할경우 발생하는 오류 수정
  163. var nodeCnt
  164. if(reciteminfo.degnitemkind == "MTX"){
  165. var otherNodeSet = MMR_FORM_INFO + "[degnitemkind != 'MTX' and contains(degnitemlevlcd, '" + reciteminfo.degnitemlevlcd + ".')]";
  166. nodeCnt = pModel.getXPathValue("count(" + otherNodeSet + ")");
  167. }
  168. else{
  169. nodeCnt = 0;
  170. }
  171. var degnitemno = pModel.getXPathValue(nodeSet+"/degnitemno");
  172. var degncntrviewflag = pModel.getXPathValue(MMR_FORM_INFO + "[degnitemno='" +degnitemno+ "']/degncntrviewflag");
  173. if (degncntrviewflag != "L" && nodeCnt == 0)
  174. {
  175. pModel.setValue(nodeSet+"/rectermcd", reciteminfo.rectermcd);
  176. if (reciteminfo.rectermcd != "")
  177. {
  178. pModel.setValue(nodeSet+"/rectermnm", reciteminfo.rectermnm);
  179. if(reciteminfo.degnitemkind == "MSL" && reciteminfo.reccnts != ""){
  180. pModel.setValue(nodeSet+"/reccnts", reciteminfo.reccnts);
  181. }
  182. }
  183. else
  184. {
  185. pModel.setValue(nodeSet+"/reccnts", reciteminfo.reccnts);
  186. }
  187. pModel.refresh();
  188. }
  189. return true;
  190. }
  191. else
  192. {
  193. return false;
  194. }
  195. }
  196. /**
  197. * @desc : 기록값 Clear
  198. * @id :
  199. * @event :
  200. * @return : void
  201. * @authur : 박종훈
  202. */
  203. //lf_clearFormRec sync
  204. function ClearComnFormData(gItemCds)
  205. {
  206. utlf_addLog("***** ClearComnFormData("+gItemCds+") MMRCommon *****");
  207. for(var i = 0; i < ds_data_recitem.rowcount; i++) // 기록아이템 초기화
  208. {
  209. if(ds_data_recitem.getColumnInfo("reccnts") != null)
  210. ds_data_recitem.setColumn(i, "reccnts", "");
  211. if(ds_data_recitem.getColumnInfo("rectermcd") != null)
  212. ds_data_recitem.setColumn(i, "rectermcd", "");
  213. if(ds_data_recitem.getColumnInfo("rectermnm") != null)
  214. ds_data_recitem.setColumn(i, "rectermnm", "");
  215. if(ds_data_recitem.getColumnInfo("recimge") != null)
  216. ds_data_recitem.setColumn(i, "recimge", "");
  217. if(ds_data_recitem.getColumnInfo("srcimge") != null)
  218. ds_data_recitem.setColumn(i, "srcimge", "");
  219. }
  220. for(var i = 0; i < gItemCds.length; i++)
  221. {
  222. var divComp = grup_base.components["ivw_" + gItemCds[i]];
  223. var mtxComp = grup_base.components["tar_" + gItemCds[i]];
  224. if(!utlf_isNull(divComp))
  225. {
  226. var sFormprogflag = ds_data_unitformmast.lookup("orgsupdegnitemcd", gItemCds[i], "formprogflag");
  227. if(sFormprogflag == "PROG")
  228. {
  229. var oDs = divComp.objects[divComp.grd_diaglist.binddataset];
  230. if(divComp.isValidObject(oDs))
  231. {
  232. oDs.clearData();
  233. oDs.addRow();
  234. }
  235. }
  236. else if(!utlf_isNull(divComp) && !utlf_isNull(divComp.url))
  237. {
  238. divComp.ds_data_itemvalue.clearData();
  239. divComp.ds_data_itemvalue.addRow();
  240. for(var j = 0; j < divComp.ds_data_itemvalue.colcount; j++)
  241. {
  242. var ColId = divComp.ds_data_itemvalue.getColID(j);
  243. if(ColId.indexOf("RDO_") > -1 || ColId.indexOf("CHK_") > -1)
  244. {
  245. divComp.lf_setSelCtrl(ColId, ""); // 컴포짓 초기화
  246. }
  247. }
  248. for(var k = 0; k < divComp.all.length; k++)
  249. {
  250. if(divComp.all[k] instanceof ActiveX) // 이미지 정보 취합
  251. {
  252. var obj_Image = divComp.all[k];
  253. obj_Image.Clear();
  254. }
  255. }
  256. for(var m = 0; m < divComp.ds_data_recitem.rowcount; m++)
  257. {
  258. divComp.ds_data_recitem.setColumn( m, "reccnts", "");
  259. divComp.ds_data_recitem.setColumn( m, "rectermcd", "");
  260. divComp.ds_data_recitem.setColumn( m, "rectermnm", "");
  261. divComp.ds_data_recitem.setColumn( m, "recimge", "");
  262. divComp.ds_data_recitem.setColumn( m, "srcimge", "");
  263. }
  264. divComp.lf_setSrchData();
  265. }
  266. else
  267. {
  268. mtxComp.value = "";
  269. }
  270. }
  271. else
  272. {
  273. mtxComp.value = "";
  274. }
  275. }
  276. var bGroup = false;
  277. for(var i = 0; i < grup_base.components.length; i++)
  278. {
  279. var ctrlObj = grup_base.components[i];
  280. var degnitemlevlcd = ctrlObj.degnitemlevlcd;
  281. if( !utlf_isNull(degnitemlevlcd) )
  282. ctrlObj.value = "";
  283. if( ctrlObj.name == "group1")
  284. bGroup = true;
  285. }
  286. if( bGroup == true ){
  287. for(var i = 0; i < grup_base.group1.components.length; i++)
  288. {
  289. var ctrlObj = grup_base.group1.components[i];
  290. //var degnitemno = ctrlObj.degnitemno;
  291. var degnitemlevlcd = ctrlObj.degnitemlevlcd;
  292. if(!utlf_isNull(degnitemlevlcd))
  293. ctrlObj.value = "";
  294. }
  295. }
  296. }
  297. /****************************************************************************************
  298. * Function : OpenUnitFormImge
  299. * Description : 이미지 편집화면 Open
  300. * Argument : 01. obj : 이벤트 발생 컨트롤
  301. * retrun type : 팝업에서 넘겨주는 값
  302. * Creator :
  303. ****************************************************************************************/
  304. function OpenUnitFormImge(obj:Button, e:ClickEventInfo)
  305. {
  306. utlf_addLog("***** OpenUnitFormImge(obj:Button, e:ClickEventInfo) *****");
  307. //fstlevlitemcd, ivwid
  308. var ctrlID = obj.name;
  309. var sItemCd = ctrlID.replace("btn_imge_", "");
  310. /////////////////////컨설트 관련 추가///////////////////////
  311. if(parent.fGetFormMast("srcformcd") == "0000000677" || parent.fGetFormMast("cnstformyn") == "Y") {
  312. ComnFormObj = grup_base.grup_cnts.components["grup_"+sItemCd];
  313. }
  314. /////////////////////컨설트 관련 추가///////////////////////
  315. var ivwid = "ivw_" + sItemCd;
  316. var objDiv = ComnFormObj.components[ivwid];
  317. if( !utlf_isNull(objDiv) )
  318. {
  319. var nFindRow = ds_data_unitformmast.findRow("orgsupdegnitemcd", sItemCd);
  320. var unitformcd = fGetFormMast("formcd");//ds_data_unitformmast.getColumn(nFindRow, "formcd");
  321. var formdegnseq = fGetFormMast("formdegnseq");//ds_data_unitformmast.getColumn(nFindRow, "formdegnseq");
  322. /*
  323. if(utlf_isNull(unitformcd) || parent.fGetFormMast("srcformcd") == "0000000677")
  324. {
  325. unitformcd = fGetFormMast("formcd");
  326. }
  327. if(utlf_isNull(formdegnseq) || parent.fGetFormMast("srcformcd") == "0000000677")
  328. {
  329. formdegnseq = fGetFormMast("formdegnseq");
  330. }
  331. */
  332. var nImgRow = ds_data_recitem.findRowExpr("degnitemkind == 'IMG' && degnitemlevlno == '2' && fstlevlitemcd == '"+sItemCd+"'");
  333. var degnitemlevlcd = ds_data_recitem.getColumn(nImgRow, "degnitemlevlcd");
  334. var degnitemlevlno = ds_data_recitem.getColumn(nImgRow, "degnitemlevlno");
  335. var degnitemno = ds_data_recitem.getColumn(nImgRow, "degnitemno");
  336. var degnitemnm = ds_data_recitem.getColumn(nImgRow, "degnitemnm");
  337. var recimge = ds_data_recitem.getColumn(nImgRow, "recimge");
  338. var fidx = ds_data_formdegn.findRow("degnitemcd", sItemCd);
  339. if( utlf_isNull(degnitemlevlcd) )
  340. degnitemlevlcd = ds_data_formdegn.getColumn(fidx, "degnitemlevlcd");
  341. if( utlf_isNull(degnitemlevlno) )
  342. degnitemlevlno = ds_data_formdegn.getColumn(fidx, "degnitemlevlno");
  343. this.frmf_setParameter("openmode" , "MediRec");
  344. this.frmf_setParameter("formcd" , unitformcd);
  345. this.frmf_setParameter("formdegnseq" , formdegnseq);
  346. this.frmf_setParameter("fstlevlitemcd" , sItemCd);
  347. this.frmf_setParameter("degnitemlevlcd" , degnitemlevlcd);
  348. this.frmf_setParameter("degnitemlevlno" , degnitemlevlno);
  349. this.frmf_setParameter("ivwid" , objDiv.name);
  350. this.frmf_setParameter("degnitemno" , degnitemno);
  351. this.frmf_setParameter("degnitemnm" , degnitemnm);
  352. this.frmf_setParameter("recimge" , recimge);
  353. //부분서식 로딩
  354. var ctrl = ComnFormObj.components["lbl_" + sItemCd];
  355. if (!utlf_isNull(ctrl))
  356. {
  357. loadClickSection(sItemCd);
  358. }
  359. //var retVal = modalUrl("../../../emr/medirecweb/xrw/SMMMR03600_이미지편집.xrw",1,100,100,"이미지편집");
  360. var retVal = frmf_modal("SMMMR03600", "SMMMR03600", null, null, 1, 100, 100, null, null, null, null, null, "M");
  361. /**
  362. * @desc : 공통서식내의 확장버튼(이미지,가계도,추가기록)을 기록여부에 따라 표시한다.
  363. * @history : 2009.09.09 신규 안치원 ACW_090909A
  364. */
  365. try {
  366. // var nRow = ds_data_recitem.findRowExpr("fstlevlitemcd == '"+sItemCd+"' && degnitemkind == 'IMG' && degnitemlevlno == '2' && formcd == '"+unitformcd+"'");
  367. // var srcimge = ds_data_recitem.getColumn(nRow, "srcimge");
  368. // if( nRow != -1 && !utlf_isNull(srcimge) )
  369. // {
  370. // lf_setButtonToggleByRecYn(null, obj);
  371. // }else{
  372. // obj.class = "btn_picture";
  373. // }
  374. setButtonToggleByRecYn(null, obj.name);
  375. } catch (e) {
  376. sysf_catchTrace(e);
  377. }
  378. }
  379. return retVal;
  380. }
  381. /****************************************************************************************
  382. * Function : OpenUnitFormFmy
  383. * Description : 가계도 편집화면 Open
  384. * Argument : 01. obj : 이벤트 발생 컨트롤
  385. * retrun type : N/A
  386. * Creator :
  387. ****************************************************************************************/
  388. function OpenUnitFormFmy(obj:Button, e:ClickEventInfo)
  389. {
  390. utlf_addLog("***** OpenUnitFormFmy MMRCommon *****");
  391. var ctrlID = obj.name;
  392. fstlevlitemcd = ctrlID.replace("btn_fmy_", "");
  393. //부분서식 로딩
  394. var ctrl = ComnFormObj.components["lbl_" + fstlevlitemcd];
  395. if (utlf_isNull(ctrl))
  396. {
  397. loadClickSection(fstlevlitemcd);
  398. }
  399. var rtnFDG = openFamilyDiagram(fstlevlitemcd);
  400. /**
  401. * @desc : 공통서식내의 확장버튼(이미지,가계도,추가기록)을 기록여부에 따라 표시한다.
  402. * @history : 2009.09.09 신규 안치원 ACW_090909A
  403. */
  404. try {
  405. // if(!utlf_isNull(rtnFDG))
  406. // lf_setButtonToggleByRecYn(null, obj);
  407. // else
  408. // obj.class = "";
  409. setButtonToggleByRecYn(null, obj.name);
  410. } catch (e) {
  411. sysf_catchTrace(e);
  412. }
  413. }
  414. /****************************************************************************************
  415. * Function : openFamilyDiagram
  416. * Description : 가계도 편집화면 Open
  417. * Argument : 01. supdegnitemcd : 대상이 되는 섹션의 아이템 코드
  418. * retrun type : N/A
  419. * Creator :
  420. ****************************************************************************************/
  421. function openFamilyDiagram(supdegnitemcd)
  422. {
  423. utlf_addLog("***** openFamilyDiagram("+supdegnitemcd+") MMRCommon *****");
  424. this.frmf_clearParameter("SPMMR04711_shape");
  425. this.frmf_clearParameter("SPMMR04711_base64");
  426. var fRow = ds_data_recitem.findRowExpr("fstlevlitemcd=='" + supdegnitemcd + "' && formcd=='0000002615'");
  427. var fdgInfo = ds_data_recitem.getColumn(fRow, "reccnts");
  428. if(!utlf_isNull(fdgInfo)) {
  429. this.frmf_setParameter("SPMMR04711_shape", fdgInfo);
  430. }
  431. var fdgImg = ds_data_recitem.getColumn(fRow, "recimge");
  432. if(!utlf_isNull(fdgImg)) {
  433. this.frmf_setParameter("SPMMR04711_base64", objExt.encodeBase64(ds_data_recitem.getColumn(fRow, "recimge")));
  434. }
  435. frmf_modal("SPMMR04700", "SPMMR04700", null, null, 1, 0, 0, null, null, null, null, null, "M");
  436. // 가계도 Shape 데이터 및 Base64 이미지를 CDATA로 세팅
  437. fdgInfo = this.frmf_getParameter("SPMMR04711_shape");
  438. fdgImg = this.frmf_getParameter("SPMMR04711_base64");
  439. if(!utlf_isNull(fdgInfo)) {
  440. //model.setValue("/root/properties/parameters/SPMMR04711_shape/SPMMR04711_shapevalue", fdgInfo, true);
  441. }
  442. if(!utlf_isNull(fdgImg)) {
  443. //model.setValue("/root/properties/parameters/SPMMR04711_base64/SPMMR04711_base64value", fdgImg, true);
  444. }
  445. if(utlf_isNull(fdgInfo))
  446. {
  447. this.frmf_clearParameter("SPMMR04711_shape");
  448. this.frmf_clearParameter("SPMMR04711_base64");
  449. ds_data_recitem.deleteRow(fRow);
  450. return;
  451. }
  452. else
  453. {
  454. var objFmyData = objExt.decodeBase64(fdgImg, "BIN");
  455. ds_data_recitem.deleteRow(fRow); // 기존 가계도 정보 삭제
  456. var nAddRow = ds_data_recitem.addRow();
  457. ds_data_recitem.setColumn(nAddRow, "instcd" , "");
  458. ds_data_recitem.setColumn(nAddRow, "rechistseq" , "");
  459. ds_data_recitem.setColumn(nAddRow, "recitemno" , "");
  460. ds_data_recitem.setColumn(nAddRow, "fstlevlitemcd" , supdegnitemcd);
  461. ds_data_recitem.setColumn(nAddRow, "formcd" , "0000002615");
  462. ds_data_recitem.setColumn(nAddRow, "formdegnseq" , "12838");
  463. ds_data_recitem.setColumn(nAddRow, "degnitemno" , "1");
  464. ds_data_recitem.setColumn(nAddRow, "degnitemcd" , "0000006001");
  465. ds_data_recitem.setColumn(nAddRow, "degnitemkind" , "FDG");
  466. ds_data_recitem.setColumn(nAddRow, "degnitemlevlno", "1");
  467. ds_data_recitem.setColumn(nAddRow, "degnitemnm" , "가계도");
  468. ds_data_recitem.setColumn(nAddRow, "degnitemlevlcd", supdegnitemcd.substr(0, 7)+".0000006");
  469. ds_data_recitem.setColumn(nAddRow, "rectermcd" , "");
  470. ds_data_recitem.setColumn(nAddRow, "rectermnm" , "");
  471. ds_data_recitem.setColumn(nAddRow, "recrefcd" , "");
  472. ds_data_recitem.setColumn(nAddRow, "recitemnm" , "");
  473. ds_data_recitem.setColumn(nAddRow, "reccnts" , fdgInfo);
  474. ds_data_recitem.setColumn(nAddRow, "unitnm" , "");
  475. ds_data_recitem.setColumn(nAddRow, "recimge" , objFmyData);
  476. ds_data_recitem.setColumn(nAddRow, "srcimge" , "");
  477. ds_data_recitem.setColumn(nAddRow, "rowno" , "");
  478. ds_data_recitem.setColumn(nAddRow, "colno" , "");
  479. }
  480. return objFmyData;
  481. }
  482. /**
  483. * @desc : 서식 기록 이미지 초기화
  484. * @id :
  485. * @event :
  486. * @return : void
  487. * @authur : 박종훈
  488. */
  489. function InitUnitFormImgeData(itemCds)
  490. {
  491. var ctrlIvw;
  492. var imgelist;
  493. var node;
  494. var pageInfo = new PAGEINFO();
  495. for (var i = 0; i < itemCds.length; i++)
  496. {
  497. ctrlIvw = document.controls("ivw_" + itemCds[i]);
  498. imgelist = ctrlIvw.model.instances(0).selectNodes(pageInfo.recItemRef+"[degnitemkind='IMG']");
  499. if (imgelist.length > 0)
  500. {
  501. copyNodeset(pageInfo.imgerecItemRef, pageInfo.recItemRef + "[degnitemkind='IMG']", "replace", model, ctrlIvw.model);
  502. for (var j = 0; j < imgelist.length; j++)
  503. {
  504. node = model.instances(0).selectSingleNode(pageInfo.imgelistRef + "[imgecd='"+ imgelist.item(j).getXPathString("degnitemcd") +"']/imgedata");
  505. if (node != null)
  506. {
  507. }
  508. }
  509. }
  510. }
  511. copyNodeset(pageInfo.imgerecItemRef, pageInfo.recItemRef2 + "[degnitemkind='IMG']", "replace", model, model);
  512. }
  513. /**
  514. * @desc : 서식항목 기본 사이즈
  515. * @id :
  516. * @event :
  517. * @return : void
  518. * @authur : 박종훈
  519. */
  520. function SetUnitFormOrgSize(pItemCds, iheig, oheig) //20100316
  521. {
  522. var grupObj;
  523. var ctrlIvw;
  524. for (var i = 0; i < pItemCds.length; i++)
  525. {
  526. grupObj = document.controls("grup_" + pItemCds[i]);
  527. ctrlIvw = document.controls("ivw_" + pItemCds[i]);
  528. if (grupObj.attribute("orgheight") == "" || grupObj.attribute("orgheight") == null)
  529. {
  530. grupObj.attribute("orgheight") = oheig;
  531. ctrlIvw.attribute("orgheight") = iheig;
  532. }
  533. else
  534. {
  535. if (iheig == null || iheig == "")
  536. {
  537. grupObj.attribute("height") = grupObj.attribute("orgheight");
  538. ctrlIvw.attribute("height") = ctrlIvw.attribute("orgheight");
  539. }
  540. else
  541. {
  542. grupObj.attribute("height") = oheig;
  543. ctrlIvw.attribute("height") = iheig;
  544. }
  545. SetMultiTextFull(ctrlIvw, 1);
  546. }
  547. var extngrupObj = document.controls("grup_extn" + pItemCds[i]);
  548. if (extngrupObj == null)
  549. continue;
  550. grupObj.attribute("visibility") = "visible";
  551. extngrupObj.attribute("visibility") = "visible";
  552. }
  553. }
  554. /**
  555. * @desc : 서식항목 기본 사이즈
  556. * @id :
  557. * @event :
  558. * @return : void
  559. * @authur : 박종훈
  560. */
  561. function SetUnitFormOrgSizeCnst(pItemCds, iheigArr, oheigArr)
  562. {
  563. var grupObj;
  564. var ctrlIvw;
  565. for (var i = 0; i < pItemCds.length; i++)
  566. {
  567. grupObj = grup_base.grup_cnts.components["grup_" + pItemCds[i]];
  568. ctrlIvw = grup_base.grup_cnts.components["ivw_" + pItemCds[i]];
  569. if (utlf_isNull(grupObj.orgheight))
  570. {
  571. grupObj.orgheight = oheigArr[i];
  572. ctrlIvw.orgheight = iheigArr[i];
  573. }
  574. else
  575. {
  576. if (utlf_isNull(iheigArr))
  577. {
  578. grupObj.position.height = grupObj.orgheight;
  579. ctrlIvw.position.height = ctrlIvw.orgheight;
  580. }
  581. else
  582. {
  583. grupObj.position.height = oheigArr[i];
  584. ctrlIvw.position.height = iheigArr[i];
  585. }
  586. SetMultiTextFull(ctrlIvw, 1);
  587. }
  588. // var extngrupObj = this.components["grup_extn" + pItemCds[i]];
  589. // if (utlf_isNull(extngrupObj)) continue;
  590. grupObj.visible = true;
  591. // extngrupObj.visible = true;
  592. }
  593. }
  594. /**
  595. * @desc : 서식항목 최대 사이즈
  596. * @id :
  597. * @event :
  598. * @return : void
  599. * @authur : 박종훈
  600. */
  601. function SetUnitFormFullSize(pItemCd, pIdx, pItemCds, pPageIdx, pGrupBase)
  602. {
  603. var grupObj;
  604. var toppos = 0;
  605. //for (var i = 0; i < pPageIdx.length; i++)
  606. for (var i = 0; i < pItemCds.length; i++)
  607. {
  608. // grupObj = grup_base.grup_cnts.components["grup_" + pItemCds[i]];
  609. // extngrupObj = grupObj.components["grup_extn" + pItemCds[i]];
  610. if(pItemCds[i] == "0000960001") {
  611. grupObj = grup_base.grup_cnts.grup_0011449001;
  612. extngrupObj = grup_base.grup_cnts.grup_0011449001.grup_extn0011449001;
  613. } else if(pItemCds[i] == "0011449001") {
  614. grupObj = grup_base.grup_cnts.grup_0011449001;
  615. } else if(pItemCds[i] == "0001019001") {
  616. grupObj = grup_base.grup_cnts.grup_0011529001;
  617. extngrupObj = grup_base.grup_cnts.grup_0011529001.grup_extn0011529001;
  618. } else if(pItemCds[i] == "0011529001") {
  619. grupObj = grup_base.grup_cnts.grup_0011529001;
  620. }
  621. if(utlf_isNull(grupObj))
  622. continue;
  623. grupObj.sizeFlag = "full";
  624. if (pPageIdx[i] == pIdx)
  625. {
  626. if (pItemCds[i] == pItemCd)
  627. {
  628. grupObj.position.top = 0;
  629. grupObj.orgheight = grupObj.position.height;
  630. grupObj.position.height = pGrupBase.position.height;
  631. var grupbase_hei = parseInt(pGrupBase.position.height);
  632. var ctrlIvw = grupObj.components["ivw_" + pItemCds[i]];
  633. ctrlIvw.orgheight = ctrlIvw.position.height;
  634. ctrlIvw.position.height = parseInt(pGrupBase.position.height) - parseInt(ctrlIvw.position.top);
  635. //grupObj.attribute("visibility") = "visible";
  636. //extngrupObj.attribute("visibility") = "visible";
  637. if(!utlf_isNull(ctrlIvw.url)) SetMultiTextFull(ctrlIvw, 1);
  638. }
  639. else
  640. {
  641. // grupObj.visible = false;
  642. // if(!utlf_isNull(extngrupObj)) extngrupObj.visible = false;
  643. }
  644. }
  645. else
  646. {
  647. grupObj.visible = false;
  648. if(!utlf_isNull(extngrupObj)) extngrupObj.visible = false;
  649. }
  650. }
  651. }
  652. /**
  653. * @desc : 서식항목 visible hidden
  654. * @id :
  655. * @event :
  656. * @return : void
  657. * @authur : 박종훈
  658. */
  659. function InitUnitFormLayer(itemCds, pageIdx, pageCnt, grup)
  660. {
  661. SetUserTimeLog("InitUnitFormLayer", "START");
  662. var pageInfo = new PAGEINFO();
  663. var i = 0;
  664. var pagePerSecCnt = new Array(pageCnt);
  665. for (i = 0; i < pagePerSecCnt.length; i++)
  666. {
  667. pagePerSecCnt[i] = 0;
  668. }
  669. var ctrlGrup;
  670. var existCtrl;
  671. // 안보이게 하기
  672. for (i = 0; i < itemCds.length; i++)
  673. {
  674. ctrlGrup = document.controls("grup_" + itemCds[i]);
  675. existCtrl = model.getValue(pageInfo.formdegnRef + "[degnitemcd='" + itemCds[i] + "']/degnitemcd");
  676. if (existCtrl == "")
  677. {
  678. ctrlGrup.visible = false;
  679. }
  680. else
  681. {
  682. ctrlGrup.visible = true;
  683. pagePerSecCnt[pageIdx[i]]++;
  684. }
  685. }
  686. // 보이는거 분할하기 위한 높이 구하기
  687. var pagePerTopPt = new Array(0 ,0, 0);
  688. var swtHei = parseInt(grup.attribute("height")) - 1;
  689. for (i = 0; i < pagePerSecCnt.length; i++)
  690. {
  691. if (pagePerSecCnt[i] == 1)
  692. {
  693. pagePerTopPt[i] = swtHei;
  694. }
  695. else
  696. {
  697. pagePerTopPt[i] = parseInt(swtHei / pagePerSecCnt[i]);
  698. }
  699. }
  700. // 보이는거 분할하기
  701. var topPt = 0;
  702. var prePageIdx = -1;
  703. var ctrlLbl;
  704. var ctrlExtn;
  705. var ctrlIvw;
  706. var ctrlCbo;
  707. var swtWid = parseInt(grup.attribute("width"));
  708. var grupHei;
  709. var toppos = 0;
  710. var grupextnHei = 0;
  711. for (i = 0; i < itemCds.length; i++)
  712. {
  713. ctrlGrup = document.controls("grup_" + itemCds[i]);
  714. if (ctrlGrup.visible)
  715. {
  716. // 보이는거 위치잡기
  717. grupHei = pagePerTopPt[pageIdx[i]];
  718. if (prePageIdx != pageIdx[i])
  719. topPt = 0;
  720. else
  721. topPt += grupHei;
  722. prePageIdx = pageIdx[i];
  723. ctrlGrup.attribute("left") = 0;
  724. // 보이는거 크기 조정
  725. ctrlLbl = document.controls("lbl_" + itemCds[i]);
  726. ctrlExtn= document.controls("grup_extn" + itemCds[i]);
  727. ctrlIvw = document.controls("ivw_" + itemCds[i]);
  728. ctrlCbo = document.controls("cbo_" + itemCds[i]);
  729. toppos = parseInt(ctrlLbl.attribute("height"));
  730. ctrlIvw.attribute("border-style") = "none";
  731. if (ctrlGrup.attribute("degnflag") != "fix")
  732. {
  733. ctrlGrup.attribute("top") = topPt;
  734. ctrlGrup.attribute("width") = swtWid - 2;
  735. ctrlGrup.attribute("height") = grupHei - 1;
  736. }
  737. if (ctrlExtn != null)
  738. {
  739. grupextnHei = parseInt(ctrlExtn.attribute("height"));
  740. ctrlExtn.attribute("left") = 0;
  741. ctrlExtn.attribute("top") = ctrlLbl.attribute("height");
  742. ctrlExtn.attribute("width") = ctrlGrup.attribute("width");
  743. ctrlExtn.attribute("orgheight") = ctrlExtn.attribute("height");
  744. ctrlExtn.attribute("border-style") = "none";
  745. ctrlExtn.attribute("overflow") = "visible";
  746. }
  747. else
  748. {
  749. grupextnHei = 0;
  750. }
  751. ctrlGrup.attribute("orgwidth") = ctrlGrup.attribute("width");
  752. ctrlGrup.attribute("orgheight") = ctrlGrup.attribute("height");
  753. ctrlLbl.attribute("top") = 0;
  754. // ctrlIvw.attribute("top") = ctrlLbl.attribute("height");
  755. ctrlIvw.attribute("top") = toppos + grupextnHei;
  756. ctrlIvw.attribute("height") = parseInt(ctrlGrup.attribute("height")) - parseInt(ctrlIvw.attribute("top")) - 1;
  757. ctrlIvw.attribute("orgheight") = ctrlIvw.attribute("height");
  758. ctrlLbl.attribute("left") = 0;
  759. ctrlIvw.attribute("left") = 0;
  760. //ctrlCbo.attribute("left") = parseInt(ctrlGrup.attribute("width")) - parseInt(ctrlCbo.attribute("width")) - 2;
  761. ctrlGrup.attribute("orgtop") = ctrlGrup.attribute("top");
  762. ctrlGrup.attribute("orgleft") = ctrlGrup.attribute("left");
  763. ctrlLbl.attribute("width") = ctrlGrup.attribute("width");
  764. ctrlIvw.attribute("width") = ctrlGrup.attribute("width");
  765. ctrlGrup.attribute("overflow") = "visible";
  766. }
  767. }
  768. var ctrlTar;
  769. for (i = 0; i < itemCds.length; i++)
  770. {
  771. ctrlIvw = document.controls("ivw_" + itemCds[i]);
  772. ctrlTar = document.controls("tar_" + itemCds[i]);
  773. if (ctrlTar != null)
  774. {
  775. ctrlTar.attribute("top") = ctrlIvw.attribute("top");
  776. ctrlTar.attribute("left") = ctrlIvw.attribute("left");
  777. ctrlTar.attribute("width") = ctrlIvw.attribute("width");
  778. ctrlTar.attribute("height") = ctrlIvw.attribute("height");
  779. ctrlTar.attribute("orgtop") = ctrlIvw.attribute("orgtop");
  780. ctrlTar.attribute("orgheight") = ctrlIvw.attribute("orgheight");
  781. }
  782. }
  783. model.refresh();
  784. SetUserTimeLog("InitUnitFormLayer", "END");
  785. }
  786. /**
  787. * @desc : 서식항목 초기화
  788. * @id :
  789. * @event :
  790. * @return : void
  791. * @authur : 박종훈
  792. */
  793. function InitUnitForm(itemCds, pageIdx, pageCnt, grup)
  794. {
  795. InitUnitFormLayer(itemCds, pageIdx, pageCnt, grup);
  796. InitSetUnitForm(itemCds, true);
  797. }
  798. var gLoadUnitFormCnt = 0;
  799. var gLoadedUnitFormCnt = 0;
  800. /**
  801. * @desc : 자유입력 Textarea(부분서식 대체)
  802. * @id :
  803. * @event :
  804. * @return : void
  805. * @authur : 박종훈
  806. */
  807. function InitLoadSection(itemCds)
  808. {
  809. var pageInfo = new PAGEINFO();
  810. for (var i = 0; i < itemCds.length; i++)
  811. {
  812. var cnt = getNodesetCnt(model, pageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+itemCds[i]+"']");
  813. var ivwObj = document.controls("ivw_" + itemCds[i]);
  814. var tarObj = document.controls("tar_" + itemCds[i]);
  815. //alert(itemCds[i]+", "+model.getValue(pageInfo.forminfoRef + "/unitformmast/orgsupdegnitemcd"));
  816. if (cnt == 0)
  817. {
  818. //alert(itemCds[i]+", true");
  819. ivwObj.visible = false;
  820. tarObj.visible = true;
  821. //ivwObj.attribute("ctrluseyn") = "N";
  822. //tarObj.attribute("ctrluseyn") = "Y";
  823. }
  824. else
  825. {
  826. //alert(itemCds[i]+", false");
  827. ivwObj.visible = true;
  828. tarObj.visible = false;
  829. //ivwObj.attribute("ctrluseyn") = "Y";
  830. //tarObj.attribute("ctrluseyn") = "N";
  831. }
  832. if (tarObj.visible == true)
  833. {
  834. setComnEvent(parent.window.javascript.fGetFormMast("srcformcd"), tarObj.attribute("degnitemno"), tarObj.attribute("id"));
  835. }
  836. var cboObj = document.controls("cbo_" + gItemCds[i]);
  837. if (cboObj != null)
  838. SetUnitFormList(cboObj, gItemCds[i])
  839. }
  840. InitSetUnitForm(itemCds, true);
  841. makeRefByDegnitemno();
  842. }
  843. /*
  844. * @desc : 부분서식 Load
  845. * @id :
  846. * @event :
  847. * @return : void
  848. * @authur : 박종훈
  849. */
  850. function InitSetUnitForm(itemCds, pDraw)
  851. {
  852. SetUserTimeLog("InitSetUnitForm", "START");
  853. var pageInfo = new PAGEINFO();
  854. var ctrlIvw;
  855. gLoadUnitFormCnt = itemCds.length;
  856. gLoadedUnitFormCnt = 0;
  857. for (var i = 0; i < itemCds.length; i++)
  858. {
  859. //try
  860. //{
  861. var unitformcd = model.getValue(pageInfo.formdegnRef + "[supdegnitemcd='" + itemCds[i] +
  862. "' and degnitemkind = 'FRM' and itemuseflag = 'F0']/degnitemcd");
  863. if (unitformcd != "")
  864. {
  865. ctrlIvw = document.controls("ivw_" + itemCds[i]);
  866. ctrlIvw.attribute("supdegnitemcd") = itemCds[i];
  867. ctrlIvw.attribute("unitformcd") = unitformcd;
  868. SetUnitForm(ctrlIvw, unitformcd, pDraw);
  869. }
  870. ctrlCbo = document.controls("cbo_" + itemCds[i]);
  871. SetUnitFormList(ctrlCbo, itemCds[i]);
  872. //}
  873. //catch (e)
  874. //{
  875. // alert("[ERROR] InitUnitForm : " + itemCds[i]);
  876. // throw e;
  877. //}
  878. }
  879. SetUserTimeLog("InitSetUnitForm", "END");
  880. }
  881. /**
  882. * @desc : 부분서식 Set
  883. * @id :
  884. * @event :
  885. * @return : void
  886. * @authur : 박종훈
  887. */
  888. function SetUnitForm(ivwObj, unitformcd, bDraw)
  889. {
  890. SetUserTimeLog("SetUnitForm", "START - " + unitformcd);
  891. //try
  892. //{
  893. if(bDraw == null)
  894. bDraw = true;
  895. var pageInfo = new PAGEINFO();
  896. var supdegnitemcd = ivwObj.attribute("supdegnitemcd");
  897. if (ivwObj.src == "")
  898. {
  899. ivwObj.src = "../../../emr/formmngtweb/xrw/SSMRF01200.xrw";
  900. }
  901. if (opener.model.getValue("/root/emrtemp/sysformxrwyn") == "Y" &&
  902. model.getValue(pageInfo.forminfoRef + "/unitformmast[formcd='"+unitformcd+"']/formxrwyn") == "Y")
  903. {
  904. if(bDraw)
  905. {
  906. //alert("xrwyesdraw"+ivwObj.attribute("id"));
  907. /*********************/
  908. /* XRW Loading Logic */
  909. /*********************/
  910. /*var formdegnseq = model.getValue(pageInfo.forminfoRef + "/unitformmast[formcd='"+unitformcd+"']/formdegnseq") ;
  911. if (ivwObj.attribute("loaded_formdegnseq") == formdegnseq)
  912. {
  913. ivwObj.window.javascript.clearData();
  914. SetUserTimeLog("SetUnitForm", "clearData END - " + ivwObj.attribute("id"));
  915. // EmrFormReady(ivwObj.attribute("id"));
  916. }
  917. else
  918. {
  919. ivwObj.attribute("loaded_formdegnseq") = formdegnseq;
  920. // ivwObj.window.javascript.fDrawFormByFormDegnSeq(formdegnseq, ivwObj.attribute("id"));
  921. // SetUserTimeLog("SetUnitForm", "fDrawFormByFormDegnSeq END - " + ivwObj.attribute("id"));
  922. ivwObj.src = GetFormXrwSubmitStr(formdegnseq, "", ivwObj.attribute("id"));
  923. SetUserTimeLog("SetUnitForm", "GetFormXrwSubmitStr END");
  924. var pageInfo = new PAGEINFO();
  925. ivwObj.window.javascript.fSetDegnItems(pageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+ supdegnitemcd +"']",
  926. pageInfo.forminfoRef + "/unitformdegn[orgsupdegnitemcd='"+ supdegnitemcd +"']",
  927. pageInfo.forminfoRef + "/vallist", pageInfo.forminfoRef + "/imgelist", "record", supdegnitemcd, ivwObj);
  928. SetUserTimeLog("SetUnitForm", "fSetDegnItems END");
  929. ivwObj.window.javascript.makeInstance(NewPageInfo(ivwObj, supdegnitemcd));
  930. SetUserTimeLog("SetUnitForm", "makeInstance END");
  931. SetMultiTextFull(ivwObj, 1);
  932. ivwObj.model.refresh();
  933. }*/
  934. /*ivwObj.window.javascript.fPreviewByDegnItems(pageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+ supdegnitemcd +"']",
  935. "", //디자인정보를 주지 않기로 함.
  936. pageInfo.forminfoRef + "/vallist",
  937. pageInfo.forminfoRef + "/imgelist",
  938. "record",
  939. supdegnitemcd,
  940. ivwObj);
  941. SetUserTimeLog("SetUnitForm", "fPreviewByDegnItems new END");
  942. SetMultiTextFull(ivwObj, 1);
  943. ivwObj.model.refresh();*/
  944. //ivwObj.window.javascript.fDrawFormByFormDegnSeq(model.getValue(pageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+ supdegnitemcd +"']/formdegnseq"), ivwObj.attribute("id"));
  945. ivwObj.window.javascript.fLoadFormByFormDegnSeq(model.getValue(pageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+ supdegnitemcd +"']/formdegnseq"), ivwObj.attribute("id"));
  946. SetUserTimeLog("SetUnitForm", "fLoadFormByFormDegnSeq END");
  947. SetMultiTextFull(ivwObj, 1);
  948. }
  949. else if(!bDraw)
  950. {
  951. ivwObj.window.javascript.fSetDegnItems(pageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+ supdegnitemcd +"']",
  952. pageInfo.forminfoRef + "/unitformdegn[orgsupdegnitemcd='"+ supdegnitemcd +"']",
  953. pageInfo.forminfoRef + "/vallist", pageInfo.forminfoRef + "/imgelist", "record", supdegnitemcd, ivwObj);
  954. }
  955. }
  956. else
  957. {
  958. if(bDraw)
  959. {
  960. if (ivwObj.src != "../../../emr/formmngtweb/xrw/SSMRF01200.xrw")
  961. {
  962. ivwObj.src = "../../../emr/formmngtweb/xrw/SSMRF01200.xrw";
  963. SetUserTimeLog("SetUnitForm", "ivwObj.src END");
  964. }
  965. ivwObj.window.javascript.fPreviewByDegnItems(pageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+ supdegnitemcd +"']",
  966. pageInfo.forminfoRef + "/unitformdegn[orgsupdegnitemcd='"+ supdegnitemcd +"']",
  967. pageInfo.forminfoRef + "/vallist", pageInfo.forminfoRef + "/imgelist", "record", supdegnitemcd, ivwObj);
  968. SetUserTimeLog("SetUnitForm", "fPreviewByDegnItems END");
  969. SetMultiTextFull(ivwObj, 1);
  970. ivwObj.model.refresh();
  971. }
  972. else if(!bDraw)
  973. {
  974. ivwObj.window.javascript.fSetDegnItems(pageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+ supdegnitemcd +"']",
  975. pageInfo.forminfoRef + "/unitformdegn[orgsupdegnitemcd='"+ supdegnitemcd +"']",
  976. pageInfo.forminfoRef + "/vallist", pageInfo.forminfoRef + "/imgelist", "record", supdegnitemcd, ivwObj);
  977. }
  978. }
  979. //}
  980. //catch (e)
  981. //{
  982. // alert("[ERROR] SetUnitForm");
  983. // throw e;
  984. //}
  985. SetUserTimeLog("SetUnitForm", "END");
  986. }
  987. /**
  988. * @desc : 서식항목 타입 초기화
  989. * @id :
  990. * @event :
  991. * @return : void
  992. * @authur : 박종훈
  993. */
  994. function InitUnitFormTypeOne(itemCds)
  995. {
  996. var ctrlIvw;
  997. var ctrlCbo;
  998. var ctrlGrup;
  999. var unitformcd;
  1000. for (var i = 0; i < itemCds.length; i++)
  1001. {
  1002. ctrlGrup = document.controls("grup_" + itemCds[i]);
  1003. ctrlGrup.attribute("orgtop") = ctrlGrup.attribute("top");
  1004. ctrlGrup.attribute("orgheight") = ctrlGrup.attribute("height");
  1005. ctrlIvw = document.controls("ivw_" + itemCds[i]);
  1006. ctrlIvw.attribute("width") = 593;
  1007. ctrlIvw.attribute("orgheight") = ctrlIvw.attribute("height");
  1008. ctrlIvw.attribute("border-style") = "none";
  1009. unitformcd = model.getValue(pageInfo.formdegnRef + "[supdegnitemcd='" + itemCds[i] +
  1010. "' and degnitemkind = 'FRM' and itemuseflag = 'F0']/degnitemcd");
  1011. if (unitformcd != "")
  1012. {
  1013. ctrlIvw = document.controls("ivw_" + itemCds[i]);
  1014. ctrlIvw.attribute("unitformcd") = unitformcd;
  1015. SetUnitForm(ctrlIvw, itemCds[i]);
  1016. }
  1017. ctrlCbo = document.controls("cbo_" + itemCds[i]);
  1018. SetUnitFormList(ctrlCbo, itemCds[i]);
  1019. }
  1020. }
  1021. /**
  1022. * @desc : 그룹사이즈 최대화
  1023. * @id :
  1024. * @event :
  1025. * @return : void
  1026. * @authur : 박종훈
  1027. */
  1028. function maxSizeGrup(pItemCd, pIdx, pItemCds, pPageIdx, pGrupBase, flag)
  1029. {
  1030. var grupMinHei = 24;
  1031. var grupObj = document.controls("grup_" + pItemCd);
  1032. if (grupObj.attribute("sizeFlag") == "full")
  1033. {
  1034. return;
  1035. }
  1036. else if (grupObj.attribute("sizeFlag") == "max")
  1037. {
  1038. resetSizeGrup(pIdx, pItemCds, pPageIdx);
  1039. return;
  1040. }
  1041. var grupCnt = 0;
  1042. for (var i = 0; i < pPageIdx.length; i++)
  1043. {
  1044. if (pPageIdx[i] == pIdx) grupCnt++;
  1045. }
  1046. var baseHei = parseInt(pGrupBase.attribute("height"));
  1047. var grupMaxHei = baseHei - (grupMinHei * (grupCnt - 1));
  1048. var ypos = 0;
  1049. var ivwObj;
  1050. var extnObj;
  1051. for (var i = 0; i < pItemCds.length; i++)
  1052. {
  1053. grupObj = document.controls("grup_" + pItemCds[i]);
  1054. ivwObj = document.controls("ivw_" + pItemCds[i]);
  1055. extnObj = document.controls("grup_extn" + pItemCds[i]);
  1056. if (pItemCds[i] == pItemCd)
  1057. {
  1058. grupObj.attribute("height") = grupMaxHei;
  1059. grupObj.attribute("sizeFlag") = "max";
  1060. //grupObj.attribute("orgheight") = grupObj.attribute("height");
  1061. if (extnObj != null)
  1062. {
  1063. extnObj.attribute("visibility") = "visible"
  1064. extnObj.attribute("height") = extnObj.attribute("orgheight");
  1065. }
  1066. ivwObj.attribute("height") = parseInt(grupObj.attribute("height")) - parseInt(ivwObj.attribute("top")) - 1;
  1067. SetMultiTextFull(ivwObj, 1);
  1068. }
  1069. else
  1070. {
  1071. if (pPageIdx[i] == pIdx)
  1072. {
  1073. grupObj.attribute("height") = grupMinHei;
  1074. grupObj.attribute("sizeFlag") = "min";
  1075. if (extnObj != null)
  1076. {
  1077. extnObj.attribute("visibility") = "hidden"
  1078. extnObj.attribute("height") = 0;
  1079. }
  1080. ivwObj.attribute("height") = 0;
  1081. //SetMultiTextFull(ivwObj, 1);
  1082. }
  1083. }
  1084. if (pPageIdx[i] == pIdx)
  1085. {
  1086. grupObj.attribute("top") = ypos;
  1087. ypos += parseInt(grupObj.attribute("height"));
  1088. }
  1089. }
  1090. }
  1091. /**
  1092. * @desc : 그룹 사이즈 초기화
  1093. * @id :
  1094. * @event :
  1095. * @return : void
  1096. * @authur : 박종훈
  1097. */
  1098. function resetSizeGrup(pIdx, pItemCds, pPageIdx)
  1099. {
  1100. for (var i = 0; i < pItemCds.length; i++)
  1101. {
  1102. if (pPageIdx[i] == pIdx)
  1103. {
  1104. var grupObj = document.controls("grup_" + pItemCds[i]);
  1105. var ivwObj = document.controls("ivw_" + pItemCds[i]);
  1106. var extnObj = document.controls("grup_extn" + pItemCds[i]);
  1107. grupObj.attribute("top") = parseInt(grupObj.attribute("orgtop"));
  1108. grupObj.attribute("height") = parseInt(grupObj.attribute("orgheight"));
  1109. grupObj.attribute("sizeFlag") = "";
  1110. if (extnObj != null)
  1111. {
  1112. extnObj.attribute("visibility") = "visible"
  1113. extnObj.attribute("height") = extnObj.attribute("orgheight");
  1114. }
  1115. ivwObj.attribute("height") = ivwObj.attribute("orgheight");
  1116. SetMultiTextFull(ivwObj, 1);
  1117. }
  1118. }
  1119. }
  1120. /**
  1121. * @desc : 서식 정보 Set
  1122. * @id :
  1123. * @event :
  1124. * @return : void
  1125. * @authur : 박종훈
  1126. */
  1127. function SetUnitFormInfo(itemCds)
  1128. {
  1129. var ctrlIvw;
  1130. var ctrlCbo;
  1131. for (var i = 0; i < itemCds.length; i++)
  1132. {
  1133. ctrlIvw = document.controls("ivw_" + itemCds[i]);
  1134. ctrlCbo = document.controls("cbo_" + itemCds[i]);
  1135. SetUnitForm(ctrlIvw, itemCds[i]);
  1136. SetUnitFormList(ctrlCbo, itemCds[i]);
  1137. }
  1138. }
  1139. var gFstItemCds; //gItemCds가 최상위아이템이 아닐때 세팅된다.
  1140. /**
  1141. * @desc : 기록 아이템 데이터 저장
  1142. * @id :
  1143. * @event :
  1144. * @return : void
  1145. * @authur : 박종훈
  1146. */
  1147. function InitSaveComnFormRecItemData(mode)
  1148. {
  1149. var ctrlIvw;
  1150. var pageInfo = new PAGEINFO();
  1151. if (gFstItemCds == null)
  1152. {
  1153. gFstItemCds = gItemCds;
  1154. }
  1155. model.removeNodeset(pageInfo.sortItemRef);
  1156. //program서식 데이터 저장
  1157. getSaveData(pageInfo.sortItemRef, "append", model, null, mode);
  1158. for (var i = 0; i < gItemCds.length; i++)
  1159. {
  1160. ctrlIvw = document.controls("ivw_" + gItemCds[i]);
  1161. if (ctrlIvw != null && ctrlIvw.visible)
  1162. ctrlIvw.window.javascript.getSaveData(pageInfo.sortItemRef, "append", model, NewPageInfo(ctrlIvw, gFstItemCds[i]));
  1163. copyNodeset(pageInfo.sortItemRef, "/root/hidden/extnformrec/recinfo/recitem[fstlevlitemcd = '" +gItemCds[i]+ "']", "append", model, model);
  1164. copyNodeset(pageInfo.sortItemRef, pageInfo.imgerecItemRef + "[fstlevlitemcd = '" +gItemCds[i]+ "']", "append", model, model);
  1165. //copyNodeset(pageInfo.sortItemRef, pageInfo.etcrecItemRef + "/recitem[fstlevlitemcd = '" +gItemCds[i]+ "']", "append", model, model);
  1166. }
  1167. /*var nodelist = model.instances(0).selectNodes(pageInfo.formdegnRef + "[degnitemlevlno = '1']/degnitemcd");
  1168. for (var i = 0; i < nodelist.length; i++)
  1169. {
  1170. var degnitemcd = nodelist.item(i).text;
  1171. copyNodeset(pageInfo.sortItemRef, "/root/hidden/extnformrec/recinfo/recitem[fstlevlitemcd = '" +degnitemcd+ "']", "append", model, model);
  1172. copyNodeset(pageInfo.sortItemRef, pageInfo.imgerecItemRef + "[fstlevlitemcd = '" +degnitemcd+ "']", "append", model, model);
  1173. }
  1174. */
  1175. SortRecItem();
  1176. copyNodeset(pageInfo.recItemRef2, pageInfo.recItemRef2, "replace", opener.model, model);
  1177. }
  1178. /**
  1179. * @desc : Page Info 재설정
  1180. * @id :
  1181. * @event :
  1182. * @return : void
  1183. * @authur : 박종훈
  1184. */
  1185. function NewPageInfo(ctrlIvw, fstlevlitemcd, refPath)
  1186. {
  1187. utlf_addLog("***** NewPageInfo("+ctrlIvw.name+", "+fstlevlitemcd+", "+refPath+") EMRCommon -> MMRCommon *****");
  1188. if(utlf_isNull(refPath))
  1189. refPath = "ds_data";
  1190. //var node = model.instances(0).selectSingleNode(refPath + "/formdegn[degnitemcd='"+ fstlevlitemcd +"']");
  1191. var pageInfo = new PAGEINFO(ctrlIvw);
  1192. var formmastDs = this.objects[refPath + "_formmast"];
  1193. var formdegnDs = this.objects[refPath + "_formdegn"];
  1194. pageInfo.formCd = formmastDs.getColumn(0, "formcd");
  1195. pageInfo.formDegnSeq = formmastDs.getColumn(0, "formdegnseq");
  1196. pageInfo.degnItemNo = formdegnDs.lookup("degnitemcd", fstlevlitemcd, "degnitemno");
  1197. pageInfo.degnItemCd = formdegnDs.lookup("degnitemcd", fstlevlitemcd, "degnitemcd");
  1198. pageInfo.degnItemLevlCd = formdegnDs.lookup("degnitemcd", fstlevlitemcd, "degnitemlevlcd");
  1199. pageInfo.fstLevlItemCd = fstlevlitemcd;
  1200. pageInfo.degnitemkind = formdegnDs.lookup("degnitemcd", fstlevlitemcd, "degnitemkind");
  1201. pageInfo.degnitemlevlno = formdegnDs.lookup("degnitemcd", fstlevlitemcd, "degnitemlevlno");
  1202. pageInfo.degnitemnm = formdegnDs.lookup("degnitemcd", fstlevlitemcd, "degnitemnm");
  1203. return pageInfo;
  1204. }
  1205. /**
  1206. * @desc : 부분서식 갯수 카운트하여 리턴
  1207. * @id :
  1208. * @event :
  1209. * @return : void
  1210. * @authur : 박종훈
  1211. */
  1212. function GetUnitFormCnt()
  1213. {
  1214. return opener.window.javascript.fGetUnitFormCnt();
  1215. }
  1216. /**
  1217. * @desc : 부분서식 정보 가져온다
  1218. * @id :
  1219. * @event :
  1220. * @return : void
  1221. * @authur : 박종훈
  1222. */
  1223. function GetUnitFormInfo(pIvwID)
  1224. {
  1225. try
  1226. {
  1227. var ivwObj = document.controls(pIvwID);
  1228. var supdegnitemcd = ivwObj.attribute("supdegnitemcd");
  1229. var pageInfo = new PAGEINFO();
  1230. ivwObj.window.javascript.fSetDegnItems(pageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+ supdegnitemcd +"']",
  1231. pageInfo.forminfoRef + "/unitformdegn[orgsupdegnitemcd='"+ supdegnitemcd +"']",
  1232. pageInfo.forminfoRef + "/vallist", pageInfo.forminfoRef + "/imgelist", "record", supdegnitemcd, ivwObj);
  1233. ivwObj.window.javascript.makeInstance(pageInfo);
  1234. SetMultiTextFull(ivwObj, 1);
  1235. }
  1236. catch (e)
  1237. {
  1238. alert("[ERROR] GetUnitFormInfo : " + pIvwID);
  1239. throw e;
  1240. }
  1241. }
  1242. /**
  1243. * @desc : XRW Submit
  1244. * @id :
  1245. * @event :
  1246. * @return : void
  1247. * @authur : 박종훈
  1248. */
  1249. function GetFormXrwSubmitStr(pFormDegnSeq, pFormCd, pIvwID)
  1250. {
  1251. return getActionURL("TRMRF01201") + "&formdegnseq=" +pFormDegnSeq+ "&formcd=" +pFormCd+ "&ivwid=" +pIvwID+ "&";
  1252. }
  1253. var gFrLoadTime;
  1254. /**
  1255. * @desc : 시간을 리턴헤준다
  1256. * @id :
  1257. * @event :
  1258. * @return : void
  1259. * @authur : 박종훈
  1260. */
  1261. function GetFrLoadTime()
  1262. {
  1263. return gFrLoadTime;
  1264. }
  1265. /**
  1266. * @desc : 서식로드 관련 시간계산
  1267. * @id :
  1268. * @event :
  1269. * @return : void
  1270. * @authur : 박종훈
  1271. */
  1272. function SetFrLoadTime(frtime)
  1273. {
  1274. if (frtime == null)
  1275. {
  1276. gFrLoadTime = new Date();
  1277. }
  1278. else
  1279. {
  1280. gFrLoadTime = frtime;
  1281. }
  1282. }
  1283. /**
  1284. * @desc : 서식로드 관련 시간계산
  1285. * @id :
  1286. * @event :
  1287. * @return : void
  1288. * @authur : 박종훈
  1289. */
  1290. function SetToLoadTime(flag, totime)
  1291. {
  1292. if (totime == null)
  1293. {
  1294. totime = new Date();
  1295. }
  1296. if (flag==1)
  1297. {
  1298. cap_loadtime.text = ((totime.getTime() - gFrLoadTime.getTime()) / 1000) + " sec";
  1299. }
  1300. else if (flag==2)
  1301. {
  1302. opener.window.javascript.cap_loadtime.text = ((totime.getTime() - opener.window.javascript.gFrLoadTime.getTime()) / 1000) + " sec";
  1303. }
  1304. }
  1305. /**
  1306. * @desc : 서식로드 관련 시간계산
  1307. * @id :
  1308. * @event :
  1309. * @return : void
  1310. * @authur : 박종훈
  1311. */
  1312. function EmrFormReady(ivwID)
  1313. {
  1314. if (ivwID == "")
  1315. {
  1316. SetToLoadTime(1);
  1317. }
  1318. else
  1319. {
  1320. SetToLoadTime(2);
  1321. }
  1322. // if (ivwID == "")
  1323. // {
  1324. // SetToLoadTime(1);
  1325. // }
  1326. // else
  1327. // {
  1328. // SetUnitFormModel(ivwID);
  1329. // fEndLoadForm(ivwID);
  1330. // SetUserTimeLog("EmrFormReady", "END - " + ivwID);
  1331. // }
  1332. //
  1333. // gLoadedUnitFormCnt++;
  1334. // if (gLoadUnitFormCnt == gLoadedUnitFormCnt)
  1335. // {
  1336. // try {
  1337. // fEndLoadForm();
  1338. // SetToLoadTime(2);
  1339. // SetUserTimeLog("EmrFormReady", "END - ALL");
  1340. // }
  1341. // catch (e) {
  1342. // alert("Function fEndLoadForm 가 정의되어 있지 않습니다.");
  1343. // }
  1344. //
  1345. // opener.window.javascript.fLoaderEndForm();
  1346. // }
  1347. }
  1348. /**
  1349. * @desc : 부분서식 모델 Set
  1350. * @id :
  1351. * @event :
  1352. * @return : void
  1353. * @authur : 박종훈
  1354. */
  1355. function SetUnitFormModel(ivwID)
  1356. {
  1357. SetUserTimeLog("SetUnitFormModel", "START - " + ivwID);
  1358. var ivwObj = document.controls(ivwID);
  1359. var supdegnitemcd = ivwObj.attribute("supdegnitemcd");
  1360. var pageInfo = new PAGEINFO();
  1361. ivwObj.window.javascript.fSetDegnItems(pageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+ supdegnitemcd +"']",
  1362. pageInfo.forminfoRef + "/unitformdegn[orgsupdegnitemcd='"+ supdegnitemcd +"']",
  1363. pageInfo.forminfoRef + "/vallist", pageInfo.forminfoRef + "/imgelist", "record", supdegnitemcd, ivwObj);
  1364. SetUserTimeLog("SetUnitFormModel", "fSetDegnItems END - " + ivwID);
  1365. ivwObj.window.javascript.makeInstance(NewPageInfo(ivwObj, supdegnitemcd));
  1366. SetUserTimeLog("SetUnitFormModel", "makeInstance END - " + ivwID);
  1367. SetMultiTextFull(ivwObj, 1);
  1368. //ivwObj.model.refresh();
  1369. SetToLoadTime(2);
  1370. SetUserTimeLog("SetUnitFormModel", "makeInstance END - " + ivwID);
  1371. }
  1372. /**
  1373. * @desc : 부분서식리스트 Set
  1374. * @id :
  1375. * @event :
  1376. * @return : void
  1377. * @authur : 박종훈
  1378. */
  1379. function SetUnitFormList(cboObj, supdegnitemcd)
  1380. {
  1381. if (cboObj == null) return;
  1382. var pageInfo = new PAGEINFO();
  1383. cboObj.refresh();
  1384. if (cboObj.itemCount == 0)
  1385. {
  1386. cboObj.visible = false;
  1387. }
  1388. else
  1389. {
  1390. cboObj.visible = true;
  1391. var node = model.instances(0).selectSingleNode(pageInfo.forminfoRef + "/unitformdegn[orgsupdegnitemcd='"+ supdegnitemcd +"']/formdegnseq");
  1392. if (node != null)
  1393. {
  1394. model.makeValue("/root/hidden/choicbo/cbo_" + supdegnitemcd + "/baseunitformdegnseq", node.text);
  1395. model.makeValue("/root/hidden/choicbo/cbo_" + supdegnitemcd + "/extnunitformdegnseq", node.text);
  1396. }
  1397. else
  1398. {
  1399. model.makeValue("/root/hidden/choicbo/cbo_" + supdegnitemcd + "/baseunitformdegnseq", "");
  1400. model.makeValue("/root/hidden/choicbo/cbo_" + supdegnitemcd + "/extnunitformdegnseq", "");
  1401. }
  1402. //model.makeNode("/root/hidden/choicbo/cbo_" + supdegnitemcd + "/extnunitformdegnseq");
  1403. cboObj.attribute("ref") = "/root/hidden/choicbo/cbo_" + supdegnitemcd + "/extnunitformdegnseq";
  1404. cboObj.refresh();
  1405. }
  1406. }
  1407. /**
  1408. * @desc : 서식로더 셋팅
  1409. * @id :
  1410. * @event :
  1411. * @return : void
  1412. * @authur : 박종훈
  1413. */
  1414. function setFormLoader(iviewer)
  1415. {
  1416. iviewer.src = "../../medirecweb/xrw/SSMMR01100_서식로더.xrw";
  1417. iviewer.attribute("border-style") = "solid";
  1418. iviewer.attribute("border-color") = "#c0c0c0";
  1419. }
  1420. /**
  1421. * @desc : 서식그리기
  1422. * @id :
  1423. * @event :
  1424. * @return : void
  1425. * @authur : 박종훈
  1426. */
  1427. function drawForm()
  1428. {
  1429. for(var i = 0; i < document.controls.length; i++)
  1430. {
  1431. var ctrl = document.controls.item(i);
  1432. if(ctrl.elementName != "xforms:iviewer")
  1433. continue;
  1434. var formcd = ctrl.attribute("formcd");
  1435. var formdegnseqno = ctrl.attribute("formdegnseqno");
  1436. if(formcd == "" && formdegnseqno == "")
  1437. continue;
  1438. //var degndeptcd = ctrl.attribute("degndeptcd");
  1439. //var degnid = ctrl.attribute("degnid");
  1440. ctrl.window.javascript.fSetFormDegnInfo(ctrl);
  1441. }
  1442. }
  1443. /**
  1444. * @desc : 부분서식 데이터 조회
  1445. * @id :
  1446. * @event :
  1447. * @return : void
  1448. * @authur : 박종훈
  1449. */
  1450. function getSubFormData()
  1451. {
  1452. var targetRef = "/root/main/subform";
  1453. var srcRef = "/root/main/formrecinfo/items";
  1454. model.removeNodeset(targetRef);
  1455. for(var i = 0; i < document.controls.length; i++)
  1456. {
  1457. var ctrl = document.controls.item(i);
  1458. if(ctrl.elementName != "xforms:iviewer")
  1459. continue;
  1460. var formcd = ctrl.attribute("formcd");
  1461. var formdegnseqno = ctrl.attribute("formdegnseqno");
  1462. var id = "";
  1463. var type = "";
  1464. if(formcd != "")
  1465. {
  1466. id = formcd;
  1467. type = "formcd";
  1468. }
  1469. else if(formdegnseqno != "")
  1470. {
  1471. id = formdegnseqno;
  1472. type = "formdegnseqno";
  1473. }
  1474. else
  1475. continue;
  1476. var cntSubForm = getNodesetCnt(model, targetRef);
  1477. //model.makeValue(targetRef + "[" + (cntSubForm + 1) + "]/@id", id);
  1478. copyNodeset(model, ctrl.model, targetRef + "[" + (cntSubForm + 1) + "]/items", srcRef);
  1479. model.makeValue(targetRef + "[" + (cntSubForm + 1) + "]/@id", id);
  1480. model.makeValue(targetRef + "[" + (cntSubForm + 1) + "]/@type", type);
  1481. }
  1482. }
  1483. /**
  1484. * @desc : 최종진단소견
  1485. * @id :
  1486. * @event :
  1487. * @return : void
  1488. * @authur : 2010-03-31 오전 10:11:05 강지훈 추가
  1489. */
  1490. function openLastDiag(obj:Button, e:ClickEventInfo){
  1491. alert("최종진단소견 사용불가합니다.");
  1492. return;
  1493. var supdegnitemcd = "0001013001";
  1494. frmf_setParameter("lastdiag_supdegnitemcd", supdegnitemcd);
  1495. //부분서식 로딩
  1496. var ctrl = ComnFormObj.components["lbl_" + supdegnitemcd];
  1497. if (!utlf_isNull(ctrl)){
  1498. loadClickSection(supdegnitemcd);
  1499. }
  1500. var bfCosignedYN = opener.fGetFormRec("cosign");
  1501. //팝업을띄워 내용입력.
  1502. frmf_modal("SPMMR06600", "SPMMR06600", null, null, null, null, null, null, null, null, null, null, "M");
  1503. var saveFlag = frmf_getParameter("lastdiag_saveflag_" + supdegnitemcd); //기록상태
  1504. //Flag에 따라 기록 저장, 수정, 삭제
  1505. if(saveFlag == "C"){ // 기록내용이 이전과같을때.
  1506. return;
  1507. }
  1508. else if(saveFlag == "D") //삭제
  1509. {
  1510. model.removeNodeSet(pageInfo.recItemRef2 + "[formcd='1000007943']/reccnts");
  1511. model.removeNodeSet(pageInfo.lastdiagItemRef + "/recitem[formcd='1000007943']");
  1512. opener.opener.window.javascript.setParameter("SSMMR01100_fChkPreSaveUseFlag", "N");
  1513. opener.window.javascript.setParameter("SSMMR01100_fChkLastDiag", "Y");
  1514. var savedYn = opener.window.javascript.fClickSave("Y");
  1515. if(savedYn == true){
  1516. //기록반려처리
  1517. parent.window.javascript.fSaveLastDiagRec(bfCosignedYN);
  1518. }
  1519. }
  1520. else if(saveFlag == "S")
  1521. {
  1522. opener.opener.window.javascript.setParameter("SSMMR01100_fChkPreSaveUseFlag", "N");
  1523. opener.window.javascript.setParameter("SSMMR01100_fChkLastDiag", "Y");
  1524. var savedYn = opener.window.javascript.fClickSave("Y");
  1525. if(savedYn == true){
  1526. //기록반려처리
  1527. parent.window.javascript.fSaveLastDiagRec(bfCosignedYN);
  1528. }
  1529. }
  1530. opener.window.javascript.clearParameter("cosignclclyn");
  1531. opener.window.javascript.clearParameter("SSMMR01100_fChkLastDiag");
  1532. opener.opener.window.javascript.clearParameter("SSMMR01100_fChkPreSaveUseFlag", "N");
  1533. //
  1534. //버튼 모양설정
  1535. try {
  1536. setButtonToggleByRecYn(null, event.target);
  1537. } catch (e) {
  1538. }
  1539. }
  1540. /****************************************************************************************
  1541. * Function : openEtcRec
  1542. * Description : 추가기록창 팝업처리
  1543. * Argument : supdegnitemcd - 대상이 되는 섹션의 아이템 코드
  1544. * retrun type : N/A
  1545. * Creator :
  1546. ****************************************************************************************/
  1547. function openEtcRec(obj:Button, e:ClickEventInfo)
  1548. {
  1549. utlf_addLog("***** openEtcRec(obj:Button, e:ClickEventInfo) *****");
  1550. var supdegnitemcd = obj.name;
  1551. supdegnitemcd = supdegnitemcd.split("_")[2];
  1552. //var pageInfo = new PAGEINFO();
  1553. this.frmf_setParameter("etcrec_supdegnitemcd", supdegnitemcd);
  1554. //부분서식 로딩
  1555. var ctrl = ComnFormObj.components["lbl_" + supdegnitemcd];
  1556. if (!utlf_isNull(ctrl))
  1557. {
  1558. loadClickSection(supdegnitemcd);
  1559. }
  1560. var nEtcRecRow = "";
  1561. var etcrec = "";
  1562. var sFormCd = fGetFormMast("formcd"); // opener
  1563. var fRow = ds_data_recitem.findRowExpr("degnitemno=='0'&&fstlevlitemcd=='"+supdegnitemcd+"'&&formcd=='"+sFormCd+"'");
  1564. etcrec = ds_data_recitem.getColumn(fRow, "reccnts");
  1565. if(!utlf_isNull(etcrec))
  1566. {
  1567. this.frmf_setParameter("etc_rec_" + supdegnitemcd, etcrec);
  1568. }
  1569. frmf_modal("SPMMR06100", "SPMMR06100", null, null, null, null, null, null, null, null, null, null, "M");
  1570. var recrtn = this.frmf_getParameter("etcrec_rtn_" + supdegnitemcd);
  1571. if(utlf_isNull(recrtn))
  1572. {
  1573. this.frmf_setParameter("etcrec_rtn_" + supdegnitemcd, recrtn);
  1574. this.frmf_setParameter("etc_rec_" + supdegnitemcd, recrtn);
  1575. //nEtcRecRow = ds_data_recitem.findRowExpr("degnitemno=='0'&&fstlevlitemcd=='"+supdegnitemcd+"'&&formcd=='"+sFormCd+"'");
  1576. ds_data_recitem.deleteRow(fRow);
  1577. try {
  1578. setButtonToggleByRecYn(null, obj.name);
  1579. } catch (e) {
  1580. sysf_catchTrace(e);
  1581. }
  1582. }
  1583. else
  1584. {
  1585. this.frmf_setParameter("etc_rec_" + supdegnitemcd, recrtn);
  1586. nEtcRecRow = ds_data_recitem.findRowExpr("degnitemno=='0'&&fstlevlitemcd=='"+supdegnitemcd+"'&&formcd=='"+sFormCd+"'");
  1587. if(nEtcRecRow == -1)
  1588. {
  1589. nEtcRecRow = ds_data_recitem.addRow();
  1590. }
  1591. ds_data_recitem.setColumn(nEtcRecRow, "fstlevlitemcd" , supdegnitemcd);
  1592. ds_data_recitem.setColumn(nEtcRecRow, "formcd" , sFormCd);
  1593. ds_data_recitem.setColumn(nEtcRecRow, "formdegnseq" , fGetFormMast("formdegnseq"));
  1594. ds_data_recitem.setColumn(nEtcRecRow, "degnitemno" , "0");
  1595. ds_data_recitem.setColumn(nEtcRecRow, "degnitemcd" , "0008458001");
  1596. ds_data_recitem.setColumn(nEtcRecRow, "degnitemkind" , "STX");
  1597. ds_data_recitem.setColumn(nEtcRecRow, "degnitemlevlno", "2");
  1598. ds_data_recitem.setColumn(nEtcRecRow, "degnitemnm" , "§추가입력");
  1599. ds_data_recitem.setColumn(nEtcRecRow, "degnitemlevlcd", supdegnitemcd.substr(0, 7)+".0008458");
  1600. ds_data_recitem.setColumn(nEtcRecRow, "reccnts" , recrtn);
  1601. if(!utlf_isNull(recrtn))
  1602. {// 공통서식내의 확장버튼(이미지,가계도,추가기록)을 기록여부에 따라 표시한다.
  1603. var btnObj = ComnFormObj.components["btn_etcrec_" + supdegnitemcd];
  1604. if( utlf_isNull(btnObj) ) btnObj = obj;
  1605. lf_setButtonToggleByRecYn(supdegnitemcd, btnObj);
  1606. }
  1607. }
  1608. }
  1609. /**
  1610. * @desc : 확장서식항목 오픈
  1611. * @id :
  1612. * @event :
  1613. * @return : void
  1614. * @authur : 박종훈
  1615. */
  1616. function openExtnUnitFormOfComnMediForm(supdegnitemcd)
  1617. {
  1618. utlf_addLog("***** openExtnUnitFormOfComnMediForm("+supdegnitemcd+") MMRCommon *****");
  1619. var pageInfo = new PAGEINFO();
  1620. var cboObj = this.components["cbo_" + supdegnitemcd];
  1621. var cboid = cboObj.name;
  1622. var baseunitformdegnseq = model.getValue("/root/hidden/choicbo/" + cboid + "/baseunitformdegnseq");
  1623. var extnunitformdegnseq = model.getValue("/root/hidden/choicbo/" + cboid + "/extnunitformdegnseq");
  1624. var node = model.instances(0).selectSingleNode(pageInfo.forminfoRef + "/extnformlist[formdegnseq='"+ extnunitformdegnseq +"']/formcd");
  1625. if (node != null && node.text == "0000002615") //가계도
  1626. {
  1627. openFamilyDiagram(supdegnitemcd);
  1628. return;
  1629. }
  1630. var baseNode = model.instances(0).selectSingleNode(pageInfo.forminfoRef + "/unitformmast[formdegnseq='"+ baseunitformdegnseq +"']/srcformcd");
  1631. var extnNode = model.instances(0).selectSingleNode(pageInfo.forminfoRef + "/extnformlist[formdegnseq='"+ extnunitformdegnseq +"']/srcformcd");
  1632. var forminfo;
  1633. var widflag;
  1634. if (baseNode != null && baseNode.text == extnNode.text)
  1635. {
  1636. forminfo = opener.window.javascript.fGetExtnUnitFormInfo(baseunitformdegnseq, extnunitformdegnseq);
  1637. widflag = "ExtnUnitForm";
  1638. }
  1639. else
  1640. {
  1641. // opener.window.javascript.fGetFormInfoByFormDegnCd(extnunitformdegnseq);
  1642. // forminfo, formcd, formdegnseq, extnunitformlistyn, sysformrecdt, formfromdt
  1643. var sysformrecdt = opener.window.javascript.fGetFormRec("sysformrecdt") ;
  1644. opener.window.javascript.fGetFormInfoByFormDegnCd("extnform", "", extnunitformdegnseq, "N", sysformrecdt);
  1645. widflag = "-";
  1646. var cnt = getNodesetCnt(opener.model, "/root/temp/settingform/forminfo/formdegnseq");
  1647. if (cnt == 0)
  1648. forminfo = "";
  1649. else
  1650. forminfo = opener.window.javascript.fGetCSVByFormInfo("/root/temp/settingform/forminfo");
  1651. }
  1652. if (forminfo == "") //기본서식에 없는 확장서식 아이템만 추출한 정보
  1653. {
  1654. messageBox("중복된 아이템을 제거하면 확장서식에 추가될 아이템이", "I004");
  1655. }
  1656. else
  1657. {
  1658. var nodelist = model.instances(0).selectNodes(pageInfo.extnrecItemRef + "[fstlevlitemcd='" +supdegnitemcd+ "' and formcd='" + node.text + "']");
  1659. var recinfo = getNodeListCSV(nodelist);
  1660. //alert(pageInfo.extnrecItemRef + "[fstlevlitemcd='" +supdegnitemcd+ "' and formcd='" + node.text + "']");
  1661. //alert("forminfo: "+forminfo);
  1662. setParameter("openmode", "extnunitform");
  1663. setParameter("fstlevlitemcd", supdegnitemcd);
  1664. setParameter("recinfo", recinfo); //확장서식에 저장한 정보
  1665. setParameter("forminfo", forminfo); //기본서식에 없는 확장서식 아이템만 추출한 정보
  1666. setParameter("widflag", widflag);
  1667. modalUrl("../../../emr/medirecweb/xrw/SSMMR01100_서식로더.xrw", 1, 0, 0, "", "", "");
  1668. }
  1669. }
  1670. /**
  1671. * @desc : 부분서식의 디자인에 있는 이미지를 이미지편집창으로 복사한다.
  1672. * @id :
  1673. * @event :
  1674. * @return : void
  1675. * @authur : 박종훈
  1676. */
  1677. function getBaseUnitFormRecImge(ivwId, destModel)
  1678. {
  1679. //var pageInfo = new PAGEINFO();
  1680. var ivwObj = ComnFormObj.components[ivwId];
  1681. if (utlf_isNull(ivwObj) || !ivwObj.visible)
  1682. ivwObj = this;
  1683. ivwObj.ds_data_recitem.filter("degnitemkind=='IMG'");
  1684. dsf_copyDsList(["ds_data_recitem"], ["ds_data_recitem"], "replace", destModel, ivwObj);
  1685. ivwObj.ds_data_recitem.filter("");
  1686. //utlf_addLog(destModel.ds_data_recitem.saveXML());
  1687. var cnt = destModel.ds_data_recitem.rowcount;
  1688. var imgecd;
  1689. var imgedata;
  1690. for (var i = 0; i < cnt; i++)
  1691. {
  1692. if (utlf_isNull(destModel.ds_data_recitem.getColumn(i, "recimge")))
  1693. {
  1694. imgecd = destModel.ds_data_recitem.getColumn(i, "degnitemcd");
  1695. imgedata = ivwObj.ds_data_recitem.lookup("imgecd", imgecd, "imgedata");
  1696. var objCxtCommon = new ExtCommon();
  1697. var objImgeData = objCxtCommon.encodeBase64(imgedata);
  1698. destModel.ds_data_recitem.setColumn(i, "recimge", objImgeData);
  1699. }
  1700. }
  1701. }
  1702. /**
  1703. * @desc : 편집된 이미지를 부분서식으로 카피한다.
  1704. * @id :
  1705. * @event :
  1706. * @return : void
  1707. * @authur : 박종훈
  1708. */
  1709. function setBaseUnitFormRecImge(ivwId, destModel)
  1710. {
  1711. var degnitemlevlcd = ivwId.replace("ivw_","");
  1712. if(ivw_imge.ds_data_recitem.rowcount > 0)
  1713. {
  1714. ds_data_recitem.addColumn("width","int");
  1715. ds_data_recitem.addColumn("height","int");
  1716. var nRow = ds_data_recitem.appendData(ivw_imge.ds_data_recitem, true);
  1717. ds_data_recitem.setColumn(nRow - 1, "degnitemlevlcd", degnitemlevlcd.substr(0, 7)+ '.'+ds_data_recitem.getColumn(nRow - 1, "degnitemlevlcd"));
  1718. }
  1719. /*
  1720. var degnitemlevlcd = ivwId.replace("ivw_","");
  1721. ivw_imge.ds_data_recitem.filter("utlf_isNull(rowno) && !utlf_isNull(reccnts)");
  1722. if(ivw_imge.ds_data_recitem.rowcount > -1)
  1723. {
  1724. ds_data_recitem.addColumn("width","int");
  1725. ds_data_recitem.addColumn("height","int");
  1726. }
  1727. var nRow = ds_data_recitem.appendData(ivw_imge.ds_data_recitem, true);
  1728. utlf_addLog("@@@@@@ nRow : " + nRow );
  1729. ds_data_recitem.setColumn(nRow - 1, "degnitemlevlcd", degnitemlevlcd.substr(0, 7)+ '.'+ds_data_recitem.getColumn(nRow - 1, "degnitemlevlcd"));
  1730. ivw_imge.ds_data_recitem.filter("utlf_isNull(rowno)");
  1731. ivw_imge.ds_data_recitem.applyChange();
  1732. ivw_imge.ds_data_recitem.deleteAll();
  1733. ivw_imge.ds_data_recitem.applyChange();
  1734. ivw_imge.ds_data_recitem.filter("");
  1735. /*
  1736. var ivwObj = ComnFormObj.components[ivwId];
  1737. if (utlf_isNull(ivwObj) || !ivwObj.visible)
  1738. ivwObj = this;
  1739. var recItemRefDs = destModel.objects["ds_data_recitem"];
  1740. recItemRefDs.filter("utlf_isNull(rowno) && !utlf_isNull(reccnts)");
  1741. //var nodelist = destModel.instance1.selectNodes(pageInfo.recItemRef + "[rowno = '' and reccnts != '']");
  1742. var path;
  1743. for (var i = 0; i < recItemRefDs.rowcount; i++)
  1744. {
  1745. var fRow = (ivwObj.objects["ds_data_recitem"]).findRowExpr("degnitemno=='" + recItemRefDs.getColumn(i, "degnitemno") + "'");
  1746. ivwObj.objects["ds_data_recitem"].setColumn(fRow, "reccnts", recItemRefDs.getColumn(i, "reccnts"));
  1747. ivwObj.objects["ds_data_recitem"].setColumn(fRow, "recimge", recItemRefDs.getColumn(i, "recimge"));
  1748. }
  1749. recItemRefDs.filter("utlf_isNull(rowno)");
  1750. recItemRefDs.applyChange();
  1751. recItemRefDs.deleteAll();
  1752. recItemRefDs.applyChange();
  1753. recItemRefDs.filter("");
  1754. */
  1755. }
  1756. /**
  1757. * @desc : 프로그램서식여부 검사
  1758. * @id :
  1759. * @event :
  1760. * @return : void
  1761. * @authur : 박종훈
  1762. */
  1763. function isProgForm()
  1764. {
  1765. utlf_addLog("***** isProgForm() MMRCommon *****");
  1766. var formprogflag = fGetFormMast("formprogflag");
  1767. utlf_addLog("@@@@@ formprogflag('-', 'prof', 'main' -> return false) : " + formprogflag + " MMRCommon @@@@@");
  1768. if (formprogflag == "-" || formprogflag == "PROF" || formprogflag == "MAIN")
  1769. return false;
  1770. else
  1771. return true;
  1772. }
  1773. /**
  1774. * @desc : lt, gt 변환
  1775. * @id :
  1776. * @event :
  1777. * @return : void
  1778. * @authur : 박종훈
  1779. */
  1780. function doReplaceLtGt(path:Dataset)
  1781. {
  1782. // dataset filter
  1783. path.filter("degnitemkind == 'IMG'");
  1784. var dsCnt = path.rowcount;
  1785. var shape = "";
  1786. for (var i = 0; i < dsCnt; i++)
  1787. {
  1788. if( utlf_transNullToEmpty(path.getColumn( i, "reccnts")).indexOf("&lt;") == 0 )
  1789. {
  1790. shape = path.getColumn( i, "reccnts").replace(/&lt;/gi, "<");
  1791. path.setColumn( i, "reccnts", shape.replace(/&gt;/gi, ">"));
  1792. // 2017.08.31 진료기록내역조회 이미지 정렬오류 수정
  1793. if( utlf_transNullToEmpty(path.getColumn( i, "reccnts")).indexOf("height") > -1 ){
  1794. if(path.getColumnInfo("imgehei") != null ){
  1795. path.setColumn( i, "imgehei", "Y");
  1796. }
  1797. }
  1798. }
  1799. }
  1800. // dataset filter reset
  1801. path.filter("");
  1802. /*
  1803. var nodelist = model.instances(0).selectNodes(path + "[degnitemkind = 'IMG']/reccnts");
  1804. var shape = "";
  1805. for (var i = 0; i < nodelist.length; i++)
  1806. {
  1807. if (nodelist.item(i).text.indexOf("&lt;") == 0)
  1808. {
  1809. shape = nodelist.item(i).text.replace(/&lt;/gi, "<");
  1810. nodelist.item(i).text = shape.replace(/&gt;/gi, ">");
  1811. }
  1812. }
  1813. */
  1814. }
  1815. var gTermViewTopPos = 0;
  1816. var gTermViewHei = 0;
  1817. var gTermViewItems;
  1818. var gTermViewMaxCtrlID = "";
  1819. var gTermViewCtrlInitFlag = false;
  1820. /****************************************************************************************
  1821. * Function : fSetTermViewMaxSize
  1822. * Description : 아이템 영역 최대화 (템플릿 부분서식 Grid에서 사용(서식주호소, 서식수술명, 서식진단명, CarePlan)
  1823. * Argument : 01.ivwId - 최대화 영역 Name
  1824. * retrun type :
  1825. * Creator :
  1826. ****************************************************************************************/
  1827. function fSetTermViewMaxSize(ivwID)
  1828. {
  1829. if (gTermViewItems == null) return;
  1830. var ctrl;
  1831. if (! gTermViewCtrlInitFlag)
  1832. {
  1833. for (var i = 0; i < gTermViewItems.length; i++)
  1834. {
  1835. ctrl = ComnFormObj.components["ivw_" + gTermViewItems[i]];
  1836. ctrl.orgtop = ctrl.position.top;
  1837. ctrl.orgheight = ctrl.position.height;
  1838. }
  1839. gTermViewCtrlInitFlag = true;
  1840. }
  1841. ctrl = ComnFormObj.components[ivwID];
  1842. var ctrlvisible = ivwID == gTermViewMaxCtrlID ? true : false;
  1843. for (var i = 0; i < gTermViewItems.length; i++)
  1844. {
  1845. //sysf_trace(" gTermViewItems[i] : " + gTermViewItems[i] );
  1846. ctrl = ComnFormObj.components["ivw_" + gTermViewItems[i]];
  1847. ctrl.position.top = ctrl.orgtop;
  1848. ctrl.position.height = ctrl.orgheight;
  1849. ctrl.visible = ctrlvisible;
  1850. }
  1851. ctrl = ComnFormObj.components[ivwID];
  1852. if (ivwID != gTermViewMaxCtrlID)
  1853. {
  1854. ctrl.visible = true;
  1855. ctrl.position.top = gTermViewTopPos;
  1856. ctrl.position.height = gTermViewHei;
  1857. ctrl.bringToFront();
  1858. gTermViewMaxCtrlID = ivwID;
  1859. }
  1860. else
  1861. {
  1862. gTermViewMaxCtrlID = "";
  1863. }
  1864. //ctrl.window.javascript.fInitPage(false, parseInt(ctrl.attribute("height")), parseInt(ctrl.attribute("width")), ivwID);
  1865. }
  1866. var gMaxSectionTop;
  1867. var gMaxSectionHei;
  1868. var gMaxSectionTObj;
  1869. var gMaxSectionBObj;
  1870. function lf_setSectionSize(itemCds, t_Obj, b_Obj)
  1871. {
  1872. utlf_addLog("***** MMRCommon lf_setSectionSize("+itemCds+", "+t_Obj+", "+b_Obj+") *****");
  1873. // 2018.01.05 서식로더 사이즈에 따른 앵커제외처리
  1874. this.onsize.addHandler(lf_ComnFormAnchor);
  1875. gMaxSectionTObj = eval(t_Obj);
  1876. gMaxSectionBObj = eval(b_Obj);
  1877. gMaxSectionTop = gMaxSectionTObj.position.top;
  1878. gMaxSectionHei = parseInt(gMaxSectionBObj.position.bottom) - parseInt(gMaxSectionTObj.position.top);
  1879. var ivwObj;
  1880. var tarObj;
  1881. var lblObj;
  1882. for (var i = 0; i < itemCds.length; i++)
  1883. {
  1884. ivwObj = ComnFormObj.components["ivw_" + itemCds[i]];
  1885. tarObj = ComnFormObj.components["tar_" + itemCds[i]];
  1886. lblObj = ComnFormObj.components["lbl_" + itemCds[i]];
  1887. if (utlf_isNull(tarObj))
  1888. {
  1889. ivwObj.orgtop = ivwObj.position.top;
  1890. ivwObj.orgheight = ivwObj.position.height;
  1891. ivwObj.ctrluseyn = "Y";
  1892. if( !utlf_isNull(lblObj) ){
  1893. lblObj.orgtop = ivwObj.position.top;
  1894. lblObj.orgheight = ivwObj.position.height;
  1895. }
  1896. }
  1897. else
  1898. {
  1899. tarObj.position.top = ivwObj.position.top;
  1900. tarObj.position.left = ivwObj.position.left;
  1901. tarObj.position.width = ivwObj.position.width;
  1902. tarObj.position.height = ivwObj.position.height;
  1903. tarObj.style.borderStyle = "solid";
  1904. ivwObj.style.borderStyle = "none";
  1905. ivwObj.orgtop = ivwObj.position.top;
  1906. tarObj.orgtop = tarObj.position.top;
  1907. ivwObj.orgheight = ivwObj.position.height;
  1908. tarObj.orgheight = tarObj.position.height;
  1909. if( !utlf_isNull(lblObj) ){
  1910. lblObj.orgtop = ivwObj.position.top;
  1911. lblObj.orgheight = ivwObj.position.height;
  1912. }
  1913. tarObj.taborder = 100 + i;
  1914. }
  1915. }
  1916. }
  1917. /****************************************************************************************
  1918. * Description : 2018.01.05 서식로더 사이즈에 따른 앵커제외처리
  1919. * Argument :
  1920. * retrun type :
  1921. ****************************************************************************************/
  1922. function lf_ComnFormAnchor(obj:Div, e:SizeEventInfo){
  1923. try{
  1924. if( obj.position.height < 670 ){
  1925. obj.ComnFormObj.organchor = obj.ComnFormObj.anchor;
  1926. obj.ComnFormObj.anchor = "";
  1927. }else{
  1928. if( !utlf_isNull(obj.ComnFormObj.organchor) ){
  1929. obj.ComnFormObj.anchor = obj.ComnFormObj.organchor;
  1930. }else{
  1931. obj.ComnFormObj.anchor = "all";
  1932. }
  1933. }
  1934. }catch(e){
  1935. sysf_catchTrace(e);
  1936. }
  1937. }
  1938. /**
  1939. * @desc : 아이템 영역 최대화
  1940. * @id :
  1941. * @event :
  1942. * @return : void
  1943. * @authur : 박종훈
  1944. */
  1945. function setSectionSize(itemCds, topPos, heiSz)
  1946. {
  1947. utlf_addLog("***** MMRCommon setSectionSize("+itemCds+", "+topPos+", "+heiSz+") *****");
  1948. gMaxSectionTop = topPos;
  1949. gMaxSectionHei = heiSz;
  1950. var ivwObj;
  1951. var tarObj;
  1952. var lblObj;
  1953. for (var i = 0; i < itemCds.length; i++)
  1954. {
  1955. ivwObj = ComnFormObj.components["ivw_" + itemCds[i]];
  1956. tarObj = ComnFormObj.components["tar_" + itemCds[i]];
  1957. lblObj = ComnFormObj.components["lbl_" + itemCds[i]];
  1958. if (utlf_isNull(tarObj))
  1959. {
  1960. ivwObj.orgtop = ivwObj.position.top;
  1961. ivwObj.orgheight = ivwObj.position.height;
  1962. ivwObj.ctrluseyn = "Y";
  1963. if( !utlf_isNull(lblObj) ){
  1964. lblObj.orgtop = ivwObj.position.top;
  1965. lblObj.orgheight = ivwObj.position.height;
  1966. }
  1967. }
  1968. else
  1969. {
  1970. tarObj.position.top = ivwObj.position.top;
  1971. tarObj.position.left = ivwObj.position.left;
  1972. tarObj.position.width = ivwObj.position.width;
  1973. tarObj.position.height = ivwObj.position.height;
  1974. tarObj.style.borderStyle = "solid";
  1975. ivwObj.style.borderStyle = "none";
  1976. ivwObj.orgtop = ivwObj.position.top;
  1977. tarObj.orgtop = tarObj.position.top;
  1978. ivwObj.orgheight = ivwObj.position.height;
  1979. tarObj.orgheight = tarObj.position.height;
  1980. if( !utlf_isNull(lblObj) ){
  1981. lblObj.orgtop = ivwObj.position.top;
  1982. lblObj.orgheight = ivwObj.position.height;
  1983. }
  1984. tarObj.taborder = 100 + i;
  1985. }
  1986. }
  1987. }
  1988. var gMaxSectionID = "";
  1989. /**
  1990. * @desc : 아이템의 영역 최대화
  1991. * @id :
  1992. * @event :
  1993. * @return : void
  1994. * @authur : 박종훈
  1995. */
  1996. function SetMaxSizeSection(itemCds)
  1997. {
  1998. var ctrlID = event.target;
  1999. var itemcd = ctrlID.replace("lbl_", "");
  2000. var ctrlvisible = itemcd == gMaxSectionID ? true : false;
  2001. for (var i = 0; i < itemCds.length; i++)
  2002. {
  2003. ctrl = document.controls("ivw_" + itemCds[i]);
  2004. if (ctrl.attribute("ctrluseyn") == "N")
  2005. ctrl = document.controls("tar_" + itemCds[i]);
  2006. ctrl.attribute("top") = ctrl.attribute("orgtop");
  2007. ctrl.attribute("height") = ctrl.attribute("orgheight");
  2008. ctrl.visible = ctrlvisible;
  2009. if (ctrl.elementName == "xforms:iviewer")
  2010. SetMultiTextFull(ctrl, 1);
  2011. ctrl = document.controls("lbl_" + itemCds[i]);
  2012. ctrl.attribute("background-color") = "#cce8ff";
  2013. }
  2014. ctrl = document.controls("ivw_" + itemcd);
  2015. if (ctrl.attribute("ctrluseyn") == "N")
  2016. {
  2017. ctrl = document.controls("tar_" + itemcd);
  2018. }
  2019. if (! ctrlvisible)
  2020. {
  2021. ctrl.visible = true;
  2022. ctrl.attribute("top") = gMaxSectionTop;
  2023. ctrl.attribute("height") = gMaxSectionHei;
  2024. if (ctrl.elementName == "xforms:iviewer")
  2025. SetMultiTextFull(ctrl, 1);
  2026. ctrl = document.controls("lbl_" + itemcd);
  2027. ctrl.attribute("background-color") = "#99ccff";
  2028. gMaxSectionID = itemcd;
  2029. }
  2030. else
  2031. {
  2032. if (ctrl.elementName == "xforms:iviewer")
  2033. SetMultiTextFull(ctrl, 1);
  2034. gMaxSectionID = "";
  2035. }
  2036. for (var i = 0; i < itemCds.length; i++)
  2037. {
  2038. ctrl = document.controls("tar_" + itemCds[i]);
  2039. if (ctrl == null)
  2040. {
  2041. ctrl = document.controls("ivw_" + itemCds[i]);
  2042. ctrl.window.javascript.fInitPage(false, parseInt(ctrl.attribute("height")), parseInt(ctrl.attribute("width")));
  2043. }
  2044. }
  2045. ctrl = document.controls("tar_" + itemcd);
  2046. if (ctrl != null && ctrl.attribute("ctrluseyn") == "Y")
  2047. {
  2048. model.setFocus(ctrl.attribute("id"));
  2049. ctrl.dispatch("onkeyup");
  2050. }
  2051. }
  2052. /****************************************************************************************
  2053. * Function : InitBtnImge
  2054. * Description : 이미지 버튼 함수 설정
  2055. * Argument : 01. itemCds
  2056. * retrun type :
  2057. * Creator :
  2058. ****************************************************************************************/
  2059. function InitBtnImge(itemCds)
  2060. {
  2061. utlf_addLog("***** InitBtnImge("+itemCds+") MMRCommon *****");
  2062. for (var i = 0; i < itemCds.length; i++)
  2063. {
  2064. ctrl = ComnFormObj.components["btn_imge_" + itemCds[i]];
  2065. if (!utlf_isNull(ctrl)) {
  2066. ctrl.onclick.addHandler(OpenUnitFormImge);
  2067. }
  2068. }
  2069. }
  2070. /**
  2071. * @desc : 확장서식 콤보 ref 설정
  2072. * @id :
  2073. * @event :
  2074. * @return : void
  2075. * @authur : 주희경, 2010.01.19
  2076. */
  2077. function initCmbExtnList(itemCds)
  2078. {
  2079. utlf_addLog("***** initCmbExtnList("+itemCds+") MMRCommon *****");
  2080. for (var i = 0; i < itemCds.length; i++)
  2081. {
  2082. ctrl = ComnFormObj.components["cbo_" + itemCds[i]];
  2083. if (!utlf_isNull(ctrl)) {
  2084. //확장서식 콤보리스트 컨트롤들에 이벤트를 동적으로 생성한다. (1. 값셋팅, 2. 해당 서식 오픈 )
  2085. //ctrl.attribute("xforms-select") = "setExtnValueChange(cbo_" + itemCds[i]+", '"+itemCds[i]+"')";
  2086. ctrl.onitemchanged.addHandler(setExtnValueChange);
  2087. //확장서식 콤보리스트들에 동적으로 인스턴스를 매핑한다.
  2088. setExtnFormList(ctrl, itemCds[i]);
  2089. }
  2090. else {
  2091. //alert("no set attribute");
  2092. }
  2093. }
  2094. }
  2095. /**
  2096. * @desc : 확장서식 콤보 value-change 실행 함수
  2097. * @id :
  2098. * @event :
  2099. * @return : void
  2100. * @authur : 주희경, 2010.01.19
  2101. */
  2102. function setExtnValueChange(strCtrl, itemCd)
  2103. {
  2104. fSetBaseForm( itemCd ); //기본서식 로딩
  2105. setExtnFormList(eval(strCtrl), itemCd); //현재 선택한 콤보값 저장
  2106. openExtnUnitFormOfComnMediForm(itemCd); //선택한 확장서식 오픈
  2107. }
  2108. /**
  2109. * @desc : 확장서식 팝업에서 기본서식과 겹치는 아이템은 disable 처리
  2110. * ( 기본적으로 쿼리에서 중복은 처리하나 특정 아이템의 경우 부모 아이템이 딸려 조회되야 하므로 부모 아이템을 disable 처리 )
  2111. * @id :
  2112. * @event :
  2113. * @return : void
  2114. * @authur : 주희경, 2010.01.27
  2115. */
  2116. function setCtrlDisabled(gFstLevlItemCd)
  2117. {
  2118. var parentIvw = eval("opener.ivw_"+gFstLevlItemCd);
  2119. var bodyCtrls = ivw_base.body.children;
  2120. var length = bodyCtrls.length;
  2121. for (i=0; i< length; i++)
  2122. {
  2123. if ( bodyCtrls.item(i).elementName == "xforms:scrollbar" || bodyCtrls.item(i).elementName == "xforms:import" || bodyCtrls.item(i).elementName == "xforms:script"|| bodyCtrls.item(i).elementName == "xforms:tooltip" || bodyCtrls.item(i).elementName == "xforms:caption" || bodyCtrls.item(i).elementName == "xforms:group")
  2124. continue;
  2125. var degnitemno = bodyCtrls.item(i).attribute("degnitemno");
  2126. var cnt = parentIvw.model.getXPathValue("count(/root/main/recinfo/recitem[degnitemno='"+degnitemno+"'])");
  2127. if ( cnt == 1 )
  2128. bodyCtrls.item(i).disabled= true;
  2129. }
  2130. }
  2131. /****************************************************************************************
  2132. * Function : InitBtnFmy
  2133. * Description : 가계도 버튼 함수 설정
  2134. * Argument : 01. itemCds
  2135. * retrun type :
  2136. * Creator :
  2137. ****************************************************************************************/
  2138. function InitBtnFmy(itemCds)
  2139. {
  2140. utlf_addLog("***** InitBtnFmy("+itemCds+") MMRCommon *****");
  2141. for (var i = 0; i < itemCds.length; i++)
  2142. {
  2143. ctrl = ComnFormObj.components["btn_fmy_" + itemCds[i]];
  2144. if (!utlf_isNull(ctrl))
  2145. //ctrl.attribute("DOMActivate") = "OpenUnitFormFmy()";
  2146. ctrl.onclick.addHandler(OpenUnitFormFmy);
  2147. }
  2148. }
  2149. /****************************************************************************************
  2150. * Function : InitBtnEtcRec
  2151. * Description : 추가기록 버튼 함수 설정
  2152. * Argument : 01. itemCds
  2153. * retrun type :
  2154. * Creator :
  2155. ****************************************************************************************/
  2156. function InitBtnEtcRec(itemCds)
  2157. {
  2158. utlf_addLog("***** InitBtnEtcRec("+itemCds+") MMRCommon *****");
  2159. for (var i = 0; i < itemCds.length; i++)
  2160. {
  2161. ctrl =ComnFormObj.components["btn_etcrec_" + itemCds[i]];
  2162. if (!utlf_isNull(ctrl))
  2163. ctrl.onclick.addHandler(openEtcRec);
  2164. }
  2165. }
  2166. /**
  2167. * @desc : 최종진단소견 버튼 함수 설정
  2168. * @id :
  2169. * @event :
  2170. * @return : void
  2171. * @authur : 강지훈
  2172. */
  2173. function InitBtnLastDiag(itemCd)
  2174. {
  2175. utlf_addLog("***** InitBtnLastDiag("+itemCd+") *****");
  2176. ctrl = ComnFormObj.components["btn_lastdiag_" + itemCd];
  2177. if (!utlf_isNull(ctrl))
  2178. {
  2179. ctrl.onclick.addHandler(openLastDiag);
  2180. //ctrl.attribute("DOMActivate") = "openLastDiag('" + itemCd + "')";
  2181. }
  2182. }
  2183. /**
  2184. * @desc : 상용구 관리화면 버튼 함수 설정
  2185. * @id :
  2186. * @event :
  2187. * @return : void
  2188. * @authur : 박종훈
  2189. */
  2190. function InitBtnComn(itemCds)
  2191. {
  2192. //상용구관리화면 에러로 임시 막음(2008-01-03) 박종훈
  2193. // for (var i = 0; i < itemCds.length; i++)
  2194. // {
  2195. // ctrl = document.controls("btn_comn_" + itemCds[i]);
  2196. //
  2197. // if (ctrl != null)
  2198. // ctrl.attribute("DOMActivate") = "OpenComnUseStmt()";
  2199. // }
  2200. }
  2201. /****************************************************************************************
  2202. * Function : OpenComnUseStmt
  2203. * Description : 상용구 예문관리 화면 팝업
  2204. * Argument : 01. obj : Components Object
  2205. * retrun type :
  2206. * Creator :
  2207. ****************************************************************************************/
  2208. function OpenComnUseStmt(obj)
  2209. {
  2210. utlf_addLog("***** OpenComnUseStmt("+obj+") MMRCommon *****");
  2211. var ctrlID = obj.name;
  2212. var degnitemcd = ctrlID.replace("btn_comn_", "");
  2213. frmf_setParameter("comn_degnitemcd", degnitemcd);
  2214. frmf_setParameter("comn_srcformcd", parent.fGetFormMast("srcformcd"));
  2215. frmf_modal("SMMRF02400", "SMMRF02400", null, null, 1, 50, 50, null, null, null, null, null, "M");
  2216. //modal("SMMRF02400",1 ,50, 50);
  2217. }
  2218. /****************************************************************************************
  2219. * Function : InitBtnDiag
  2220. * Description : 환자진단정보 가져오기 버튼 설정
  2221. * 2010.01.15 dhkim
  2222. * - 버튼위치가 부분서식의 섹션인 경우 버튼을 hidden처리함
  2223. * - isBtnSet 파라미터 추가 (Y:hidden처리적용, N:기존대로사용)
  2224. * Argument : 01. itemCd
  2225. * : 02. isBtnSet
  2226. * retrun type :
  2227. * Creator :
  2228. ****************************************************************************************/
  2229. function InitBtnDiag(itemCd, isBtnSet)
  2230. {
  2231. utlf_addLog("***** InitBtnDiag("+itemCd+", "+isBtnSet+") *****");
  2232. ctrl = ComnFormObj.components["btn_diag_" + itemCd];
  2233. if (!utlf_isNull(ctrl))
  2234. {
  2235. //ctrl.attribute("DOMActivate") = "GetPatDiagNm('" + itemCd + "')";
  2236. ctrl.onclick.addHandler(GetPatDiagNm);
  2237. }
  2238. //2010.01.15 dhkim
  2239. //isBtnSet 파라미터 추가 (Y:hidden처리적용, N:기존대로사용)
  2240. if(utlf_isNull(isBtnSet)){
  2241. isBtnSet = "N";
  2242. }
  2243. //버튼위치가 부분서식의 섹션인 경우 버튼을 hidden처리함
  2244. if(isBtnSet == "Y"){
  2245. var oFormdegnDs = parent.objects["ds_data_formdegn"];
  2246. var nFindRow = oFormdegnDs.findRowExpr("supdegnitemcd=='" + itemCd + "' && itemuseflag=='F0'");
  2247. if(nFindRow == -1){
  2248. return;
  2249. }
  2250. var sDegnitemkind = oFormdegnDs.getColumn(nFindRow, "degnitemkind");
  2251. var sDegnitemcd = oFormdegnDs.getColumn(nFindRow, "degnitemcd");
  2252. //FRM & 00000005 (자유서식)아닌것
  2253. if(sDegnitemkind == "FRM" && sDegnitemcd != "0000000005"){
  2254. ComnFormObj.components["btn_diag_" + itemCd].visible = false;
  2255. }else{
  2256. ComnFormObj.components["btn_diag_" + itemCd].visible = true;
  2257. }
  2258. }
  2259. }
  2260. /****************************************************************************************
  2261. * Function : InitBtnPrcp
  2262. * Description : 환자처방정보 가져오기 버튼 설정
  2263. * History : 2010.01.15 dhkim
  2264. * - 버튼위치가 부분서식의 섹션인 경우 버튼을 hidden처리함
  2265. * - isBtnSet 파라미터 추가 (Y:hidden처리적용, N:기존대로사용)
  2266. * Argument : 01. itemCd
  2267. * : 02. isBtnSet
  2268. * retrun type :
  2269. * Creator :
  2270. ****************************************************************************************/
  2271. function InitBtnPrcp(itemCd, isBtnSet)
  2272. {
  2273. utlf_addLog("***** InitBtnPrcp("+itemCd+", "+isBtnSet+") MMRCommon *****");
  2274. ctrl = ComnFormObj.components["btn_prcp_" + itemCd];
  2275. if (!utlf_isNull(ctrl))
  2276. {
  2277. ctrl.onclick.addHandler(GetPatPrcpList);
  2278. }
  2279. //20130329 정창혁/ 처방내역을 선택하여 추가할 수 있는 팝업창 호출
  2280. var ctrlSelBtn = ComnFormObj.components["btn_sel_prcp_" + itemCd];
  2281. if (!utlf_isNull(ctrlSelBtn)) {
  2282. ctrlSelBtn.onclick.addHandler(lf_btn_sel_prcp_onclick);
  2283. }
  2284. //2010.01.15 dhkim
  2285. //isBtnSet 파라미터 추가 (Y:hidden처리적용, N:기존대로사용)
  2286. if(utlf_isNull(isBtnSet)){
  2287. isBtnSet = "N";
  2288. }
  2289. //버튼위치가 부분서식의 섹션인 경우 버튼을 hidden처리함
  2290. if(isBtnSet == "Y"){
  2291. var oFormdegnDs = parent.objects["ds_data_formdegn"];
  2292. var nFindRow = oFormdegnDs.findRowExpr("supdegnitemcd=='" + itemCd + "' && itemuseflag=='F0'");
  2293. if(nFindRow == -1){
  2294. return;
  2295. }
  2296. var degnitemkindNode = oFormdegnDs.getColumn(nFindRow, "degnitemkind");
  2297. var degnitemcd = oFormdegnDs.getColumn(nFindRow, "degnitemcd");
  2298. //FRM & 00000005 (자유서식)아닌것
  2299. if(degnitemkindNode == "FRM" && degnitemcd != "0000000005"){
  2300. ComnFormObj.components["btn_prcp_" + itemCd].visible = false;
  2301. }else{
  2302. ComnFormObj.components["btn_prcp_" + itemCd].visible = true;
  2303. }
  2304. }
  2305. }
  2306. function lf_btn_sel_prcp_onclick(){
  2307. frmf_modal("SPMMR09000", "SPMMR09000", null, null, null, null, null, null, null, null, null, null, "M");
  2308. }
  2309. /**
  2310. * @desc :환자퇴원처방정보 가져오기 버튼 설정
  2311. * @id :
  2312. * @event :
  2313. * @return : void
  2314. * @authur : 박종훈
  2315. */
  2316. function InitBtnOutPrcp(itemCd)
  2317. {
  2318. ctrl = ComnFormObj.components["btn_outprcp_" + itemCd];
  2319. if (!utlf_isNull(ctrl))
  2320. {
  2321. ctrl.onclick.addHandler(GetPatOutPrcpList);
  2322. //ctrl.attribute("DOMActivate") = "GetPatOutPrcpList('" + itemCd + "')";
  2323. }
  2324. }
  2325. /**
  2326. * @desc :환자예약정보 가져오기 버튼 설정
  2327. * @id :
  2328. * @event :
  2329. * @return : void
  2330. * @authur : 박종훈
  2331. */
  2332. function InitBtnResv(itemCd)
  2333. {
  2334. ctrl = ComnFormObj.components["btn_resv_" + itemCd];
  2335. if (!utlf_isNull(ctrl))
  2336. {
  2337. ctrl.onclick.addHandler(GetPatResvList);
  2338. //ctrl.attribute("DOMActivate") = "GetPatResvList('" + itemCd + "')";
  2339. }
  2340. }
  2341. /**
  2342. * @desc :환자예약정보 가져오기
  2343. * @id :
  2344. * @event : onclick
  2345. * @return : void
  2346. * @authur : 박종훈
  2347. */
  2348. function GetPatResvList(obj:Button, e:ClickEventInfo)
  2349. {
  2350. utlf_addLog("***** GetPatResvList("+obj.name+") *****");
  2351. var sItemCd = obj.name.replace("btn_resv_", "");
  2352. var nRow = parent.ds_data_formrec.rowposition;
  2353. var pid = parent.ds_data_formrec.getColumn(nRow, "pid");
  2354. // 등록번호
  2355. var sSendDs = dsf_createDsRow("ds_cond_reqinfstrec", [{col:"pid", type:"string", size:256, val:pid}]);
  2356. var objSendDs:Dataset = new Dataset;
  2357. objSendDs = this.objects[sSendDs];
  2358. // 등록번호, 진료일자, 생성번호, 진료시간, 진료과코드, 진료과명, 진료의사ID, 진료의사명, 근무부서코드
  2359. var sOutDs = dsf_createDsRow("ds_main_resvlist", [{col:"pid" , type:"string", size:256, val:""},
  2360. {col:"orddd" , type:"string", size:256, val:""},
  2361. {col:"cretno" , type:"BIGDECIMAL", size:256, val:""},
  2362. {col:"ordtm" , type:"string", size:256, val:""},
  2363. {col:"orddeptcd", type:"string", size:256, val:""},
  2364. {col:"orddeptnm", type:"string", size:256, val:""},
  2365. {col:"orddrid" , type:"string", size:256, val:""},
  2366. {col:"orddrnm" , type:"string", size:256, val:""},
  2367. {col:"dutdeptcd", type:"string", size:256, val:""}]);
  2368. var objOutDs:Dataset = new Dataset;
  2369. objOutDs = this.objects[sOutDs];
  2370. var oParam = {};
  2371. oParam.id = "TRMMR00301";
  2372. oParam.service = "medirecapp.ComnMediRec";
  2373. oParam.method = "reqGetResvList";
  2374. oParam.inds = "req="+sSendDs;
  2375. oParam.outds = sOutDs+"=resvlist";
  2376. oParam.async = false;
  2377. oParam.callback = "cf_TRMMR00301";
  2378. tranf_submit(oParam);
  2379. if (arErrorCode.pop("TRMMR00301") > -1)
  2380. {
  2381. var objOutDsCnt = objOutDs.getRowCount();
  2382. var resvinfo
  2383. if (objOutDsCnt > 0)
  2384. {
  2385. resvinfo = "진료예약 : ";
  2386. var orddd = "";
  2387. var ordtm = "";
  2388. var orddeptnm = "";
  2389. var orddrnm = "";
  2390. for (var i = 0; i < objOutDsCnt; i++)
  2391. {
  2392. orddd = objOutDs.getColumn(i, "orddd");
  2393. ordtm = objOutDs.getColumn(i, "ordtm");
  2394. orddeptnm = objOutDs.getColumn(i, "orddeptnm");
  2395. orddrnm = objOutDs.getColumn(i, "orddrnm");
  2396. if (i == 0)
  2397. {
  2398. resvinfo += orddd.substr(0, 4) + "-" + orddd.substr(4, 2) + "-"
  2399. + orddd.substr(6, 2) + " " + ordtm.substr(0, 2) + ":"
  2400. + ordtm.substr(2, 2) + ", 진료과 : " + orddeptnm + ", 진료의 : " + orddrnm + "\n";
  2401. }
  2402. else
  2403. {
  2404. resvinfo += " " + orddd.substr(0, 4) + "-" + orddd.substr(4, 2) + "-"
  2405. + orddd.substr(6, 2) + " " + ordtm.substr(0, 2) + ":"
  2406. + ordtm.substr(2, 2) + ", 진료과 : " + orddeptnm + ", 진료의 : " + orddrnm + "\n";
  2407. }
  2408. }
  2409. }
  2410. else
  2411. {
  2412. sysf_messageBox("예약내역이", "I004");
  2413. return;
  2414. }
  2415. }
  2416. if (!utlf_isNull(resvinfo))
  2417. {
  2418. var nFindRow = ds_data_recitem.findRow("fstlevlitemcd", sItemCd);
  2419. ds_data_recitem.setColumn(nFindRow, "reccnts", resvinfo);
  2420. var objTextArea = ComnFormObj.components["tar_" + sItemCd];
  2421. objTextArea.value = resvinfo;
  2422. }
  2423. // Temp Dataset을 삭제
  2424. var oRemoveDs = this.removeChild(sSendDs);
  2425. oRemoveDs = null;
  2426. oRemoveDs = this.removeChild(sOutDS);
  2427. oRemoveDs = null;
  2428. }
  2429. function cf_TRMMR00301(sSvcId, nErrorCode, sErrorMsg) {
  2430. arErrorCode.push(sSvcId, nErrorCode);
  2431. }
  2432. /**
  2433. * @desc :환자퇴원처방정보 가져오기
  2434. * @id :
  2435. * @event : onclick
  2436. * @return : void
  2437. * @authur : 박종훈
  2438. */
  2439. function GetPatOutPrcpList(obj:Button, e:ClickEventInfo)
  2440. {
  2441. var sItemCd = obj.name.replace("btn_outprcp_", "");
  2442. var prcpdd = "";
  2443. var bfflag = "bfprcp";
  2444. var flag = "-";
  2445. var todd = "";
  2446. var nRow = parent.ds_data_formrec.rowposition;
  2447. var pid = parent.ds_data_formrec.getColumn(nRow, "pid");
  2448. var orddd = parent.ds_data_formrec.getColumn(nRow, "orddd");
  2449. var cretno = parent.ds_data_formrec.getColumn(nRow, "cretno");
  2450. var orddrid = "";
  2451. var orddeptcd = parent.ds_data_formrec.getColumn(nRow, "orddeptcd");
  2452. var prcpgenrflag = parent.ds_data_formrec.getColumn(nRow, "chosflag");
  2453. prcpdd = "recbfsrch"; // 입퇴원 요약지의 퇴원처방 날짜조건 변경을 위한 구분자 20100301 이윤정
  2454. sysf_trace("==GetPatOutPrcpList 입퇴원요약 처방버튼클릭시 : prcpdd ::" + prcpdd);
  2455. //처방정보 가져오기(퇴원처방 prcpkindcd = 60)
  2456. //if(fBfPrcpSrchCom(pid, orddd, prcpdd, bfflag, flag, orddrid, todd, prcpgenrflag, orddeptcd, cretno, "TRMMO00100", true))
  2457. var prcplistCnt = 0;
  2458. var expr = "prcpkindcd == 60 && prcphistcd != 'C' && prcphistcd != 'L' && prcphistcd != 'E'";
  2459. if(lf_bfPrcpSrchCom(pid, orddd, prcpdd, bfflag, flag, orddrid, todd, prcpgenrflag, orddeptcd, cretno, "TRMMO00100", "", "", ""))
  2460. {
  2461. //var nodelistPrcpinfo = model.instances(0).selectNodes("/root/prcpsrch/prcplist[prcpkindcd = 60 and prcphistcd != 'C' and prcphistcd != 'L' and prcphistcd != 'E']");
  2462. prcplistCnt = ds_prcpsrch_prcplist.getCaseCount(expr);
  2463. }
  2464. var prcpkind = ""; //처방종류
  2465. var orgprcpnm = ""; //처방명
  2466. var drugmthdspccdnm = ""; //용법
  2467. var prcpdelivefact = ""; //전달사항
  2468. var prcplist = "";
  2469. var prcpclscd = "";
  2470. var tmpdrugmthdspccdnm = "";
  2471. if(prcplistCnt >= 1){
  2472. ds_prcpsrch_prcplist.filter(expr);
  2473. for(var i = 0; i < prcplistCnt; i++)
  2474. {
  2475. tmpdrugmthdspccdnm = ds_prcpsrch_prcplist.getColumn(i, "drugmthdspccdnm");
  2476. prcpkind = ds_prcpsrch_prcplist.getColumn(i, "tempcol13");
  2477. orgprcpnm = ds_prcpsrch_prcplist.getColumn(i, "tempcol6");
  2478. drugmthdspccdnm = utlf_transNullToEmpty(ds_prcpsrch_prcplist.getColumn(i, "tempcol7"));
  2479. prcpclscd = ds_prcpsrch_prcplist.getColumn(i, "prcpclscd");
  2480. drugmthdspccdnm = drugmthdspccdnm.replace(tmpdrugmthdspccdnm, "");
  2481. drugmthdspccdnm = drugmthdspccdnm.replace("[급]", "");
  2482. drugmthdspccdnm = drugmthdspccdnm.replace("[일]", "");
  2483. drugmthdspccdnm = drugmthdspccdnm.replace("[본]", "");
  2484. drugmthdspccdnm = drugmthdspccdnm.replace("(집)", "");
  2485. drugmthdspccdnm = drugmthdspccdnm.replace("[home]", "");
  2486. drugmthdspccdnm = drugmthdspccdnm.replace("[임상]", "");
  2487. drugmthdspccdnm = drugmthdspccdnm.replace("[prn]", "");
  2488. var prcpdelivefact = ds_prcpsrch_prcplist.getColumn(i, "prcpdelivefact");
  2489. if (prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6")
  2490. {
  2491. prcplist += orgprcpnm + " " + drugmthdspccdnm + "\n"
  2492. }
  2493. else
  2494. {
  2495. prcplist += orgprcpnm + "\n"
  2496. }
  2497. }
  2498. ds_prcpsrch_prcplist.filter("");
  2499. }
  2500. else
  2501. {
  2502. sysf_messageBox("퇴원처방 내역이", "I004");
  2503. return false;
  2504. }
  2505. var nFindRow = ds_data_recitem.findRow("fstlevlitemcd", sItemCd);
  2506. var prerec = ds_data_recitem.getColumn(nFindRow, "reccnts");
  2507. if (!utlf_isNull(prerec))
  2508. {
  2509. prerec = prerec + "\n" + prcplist + "\n";
  2510. }
  2511. else
  2512. {
  2513. prerec = prcplist + "\n"
  2514. }
  2515. var tmpTxt = prerec;
  2516. if(!utlf_isNull(tmpTxt))
  2517. {
  2518. var objTextArea = ComnFormObj.components["tar_" + sItemCd];
  2519. var objDivArea = ComnFormObj.components["ivw_" + sItemCd];
  2520. if(!utlf_isNull(objDivArea.url)) // careplan에 세팅
  2521. {
  2522. var arrTmp = prerec.split("\n");
  2523. var grdObj = objDivArea.ds_grid_grd_diaglist;
  2524. var nRow = grdObj.rowcount;
  2525. var nNewRow;
  2526. for(var k = 0; k < arrTmp.length; k++)
  2527. {
  2528. if(!utlf_isNull(arrTmp[k])) // 처방내역이 있으면
  2529. {
  2530. if(utlf_isNull(grdObj.getColumn(nRow - 1, "reccnts4")))
  2531. {
  2532. nNewRow = nRow - 1;
  2533. }
  2534. else
  2535. {
  2536. nNewRow = grdObj.addRow();
  2537. objDivArea.lf_addRecItemOne(nNewRow); // recitem row 추가
  2538. }
  2539. grdObj.setColumn(nNewRow, "reccnts4", arrTmp[k]);
  2540. }
  2541. }
  2542. }
  2543. else
  2544. {
  2545. if(nFindRow == -1)
  2546. {
  2547. var nTmpPrntRow = ivw_base.ds_temp_mainrecitem.findRowExpr("fstlevlitemcd == '" + sItemCd + "' && degnitemlevlno == '1' && degnitemkind == 'MTX'");
  2548. if(nTmpPrntRow != -1)
  2549. {
  2550. nFindRow = ds_data_recitem.addRow();
  2551. ds_data_recitem.copyRow(ds_data_recitem.rowcount - 1, ivw_base.ds_temp_mainrecitem, nTmpPrntRow);
  2552. }
  2553. }
  2554. ds_data_recitem.setColumn(nFindRow, "reccnts", prerec);
  2555. objTextArea.value = prerec;
  2556. }
  2557. }
  2558. //model.setValue(pageInfo.recItemRef + "[fstlevlitemcd='" + itemCd + "']/reccnts", prerec);
  2559. return true;
  2560. }
  2561. /****************************************************************************************
  2562. * Function : GetPatPrcpList
  2563. * Description : 환자처방정보 가져오기
  2564. * Argument : 01. sItemCd : 대상이 되는 섹션의 아이템 코드
  2565. * : 01. prcpkindflag : 조회되는 처방 구분
  2566. * retrun type : N/A
  2567. * Creator :
  2568. ****************************************************************************************/
  2569. function GetPatPrcpList(obj:Button, e:ClickEventInfo)
  2570. {
  2571. utlf_addLog("***** GetPatPrcpList *****");
  2572. var itemCd = obj.name.split("_")[2];
  2573. //var pageInfo = new PAGEINFO();
  2574. var prcpdd = utlf_getCurrentDate();
  2575. var bfflag = "bfprcp";
  2576. var flag = "";
  2577. var todd = "";
  2578. var nRow = parent.ds_data_formrec.rowposition;
  2579. var pid = parent.ds_data_formrec.getColumn(nRow, "pid");
  2580. var orddd = parent.ds_data_formrec.getColumn(nRow, "orddd");
  2581. var cretno = parent.ds_data_formrec.getColumn(nRow, "cretno");
  2582. var orddrid = parent.ds_data_formrec.getColumn(nRow, "orddrid");
  2583. var orddeptcd = parent.ds_data_formrec.getColumn(nRow, "orddeptcd");
  2584. var prcpgenrflag = parent.ds_data_formrec.getColumn(nRow, "chosflag");
  2585. if (prcpgenrflag == "I" || prcpgenrflag == "E" || prcpgenrflag == "D")
  2586. {
  2587. //prcpdd = parent_recMastRefDs.getColumn(0, "formrecdd");
  2588. prcpdd = parent.ds_data_formrec.getColumn(0, "formrecdd");
  2589. }
  2590. else
  2591. {
  2592. prcpdd = orddd;
  2593. }
  2594. //처방정보 가져오기(퇴원처방 prcpkindcd = 60)
  2595. //if(fBfPrcpSrchCom(pid, orddd, prcpdd, bfflag, flag, orddrid, todd, prcpgenrflag, orddeptcd, cretno, "TRMMO00100", true))
  2596. var prcplistCnt = 0;
  2597. var expr = "!utlf_isNull(prcpkindcd) && prcphistcd != 'C' && prcphistcd != 'L' && prcphistcd != 'E'";
  2598. if(lf_bfPrcpSrchCom( pid, orddd, prcpdd, bfflag, flag, orddrid, todd, prcpgenrflag, orddeptcd, cretno, "TRMMO00100", "", "", ""))
  2599. {
  2600. prcplistCnt = ds_prcpsrch_prcplist.getCaseCount(expr);
  2601. //var nodelistPrcpinfo = model.instances(0).selectNodes("/root/prcpsrch/prcplist[prcpkindcd != '' and prcphistcd != 'C' and prcphistcd != 'L' and prcphistcd != 'E']");
  2602. }
  2603. var prcpkind = ""; //처방종류
  2604. var orgprcpnm = ""; //처방명
  2605. var drugmthdspccdnm = ""; //용법
  2606. var prcpdelivefact = ""; //전달사항
  2607. var prcplist = "";
  2608. var prcphistcd = ""; //임시,인증구분
  2609. var prcpclscd = "";
  2610. var tmpdrugmthdspccdnm = "";
  2611. if(prcplistCnt >= 1){
  2612. //filter
  2613. ds_prcpsrch_prcplist.filter(expr);
  2614. for(var i = 0; i < prcplistCnt; i++)
  2615. {
  2616. tmpdrugmthdspccdnm = ds_prcpsrch_prcplist.getColumn(i, "drugmthdspccdnm");
  2617. prcpkind = ds_prcpsrch_prcplist.getColumn(i, "tempcol13");
  2618. orgprcpnm = ds_prcpsrch_prcplist.getColumn(i, "tempcol6");
  2619. drugmthdspccdnm = utlf_transNullToEmpty(ds_prcpsrch_prcplist.getColumn(i, "tempcol7"));
  2620. prcpclscd = ds_prcpsrch_prcplist.getColumn(i, "prcpclscd");
  2621. //2012.06.08 처방 가져오기 개인 설정 조회 엄영만
  2622. //fGetUserEnvOcsOrdAnsw("/root/send/reqdata", "/root/envinit/getprcpcnt", "033");
  2623. //var getprcpcnt = model.getValue("/root/envinit/getprcpcnt/answcnt");
  2624. var getprcpcnt = ds_envinit.lookup("qestcd", "033", "answcnt");
  2625. switch(getprcpcnt)
  2626. {
  2627. case "001" : // 기본값 용법 삭제
  2628. drugmthdspccdnm = drugmthdspccdnm.replace(tmpdrugmthdspccdnm, "");
  2629. break;
  2630. case "002" : // 약품처방 용법표시
  2631. if (prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6") {
  2632. drugmthdspccdnm = drugmthdspccdnm.replace(tmpdrugmthdspccdnm, "");
  2633. }
  2634. break;
  2635. default:
  2636. drugmthdspccdnm = drugmthdspccdnm.replace(tmpdrugmthdspccdnm, "");
  2637. break;
  2638. }
  2639. drugmthdspccdnm = drugmthdspccdnm.replace("[급]", "");
  2640. drugmthdspccdnm = drugmthdspccdnm.replace("[일]", "");
  2641. drugmthdspccdnm = drugmthdspccdnm.replace("[본]", "");
  2642. drugmthdspccdnm = drugmthdspccdnm.replace("(집)", "");
  2643. drugmthdspccdnm = drugmthdspccdnm.replace("[home]", "");
  2644. drugmthdspccdnm = drugmthdspccdnm.replace("[임상]", "");
  2645. drugmthdspccdnm = drugmthdspccdnm.replace("[prn]", "");
  2646. prcpdelivefact = ds_prcpsrch_prcplist.getColumn(i, "prcpdelivefact");
  2647. prcphistcd = ds_prcpsrch_prcplist.getColumn(i, "prcphistcd");
  2648. if(prcphistcd == "T") {
  2649. if (prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6") {
  2650. prcplist += "[임] " + orgprcpnm + " " + drugmthdspccdnm + "\n"
  2651. } else {
  2652. prcplist += "[임] " + orgprcpnm + "\n"
  2653. }
  2654. } else {
  2655. if (prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6") {
  2656. prcplist += orgprcpnm + " " + drugmthdspccdnm + " " + "\n"
  2657. }
  2658. else {
  2659. prcplist += orgprcpnm + "\n"
  2660. }
  2661. }
  2662. }
  2663. ds_prcpsrch_prcplist.filter("");
  2664. }
  2665. var nFindRow = ds_data_recitem.findRow("fstlevlitemcd", itemCd);
  2666. var prerec = ds_data_recitem.getColumn(nFindRow, "reccnts");
  2667. utlf_addLog(" nFindRow : " + nFindRow + " || prerec : " + prerec + " || itemCd : " + itemCd );
  2668. utlf_addLog(ds_data_recitem.saveXML());
  2669. if (!utlf_isNull(prerec))
  2670. {
  2671. prerec = prerec + "\n" + prcplist + "\n";
  2672. }
  2673. else
  2674. {
  2675. prerec = prcplist + "\n"
  2676. }
  2677. var objColInfo = new Array();
  2678. objColInfo.push();
  2679. var sSendDsNm = dsf_createDsRow("ds_send_TRMMR00301", [{col: "pid", type:"string", size:256, val:pid}]);
  2680. var objSendDS:Dataset = new Dataset;
  2681. objSendDS = this.objects[sSendDsNm];
  2682. var sRtnDsNm = dsf_createDs("ds_main_resvlist", [{col:"pid" , type:"string", size:256}
  2683. ,{col:"orddd" , type:"string", size:256}
  2684. ,{col:"cretno" , type:"string", size:256}
  2685. ,{col:"ordtm" , type:"string", size:256}
  2686. ,{col:"orddeptcd", type:"string", size:256}
  2687. ,{col:"orddeptnm", type:"string", size:256}
  2688. ,{col:"orddrid" , type:"string", size:256}
  2689. ,{col:"orddrnm" , type:"string", size:256}
  2690. ,{col:"dutdeptcd", type:"string", size:256}]);
  2691. var objRtnDS:Dataset = new Dataset;
  2692. objRtnDS = this.objects[sRtnDsNm];
  2693. var oParam = {};
  2694. oParam.id = "TRMMR00301";
  2695. oParam.service = "medirecapp.ComnMediRec";
  2696. oParam.method = "reqGetResvList";
  2697. oParam.inds = "req="+sSendDsNm;
  2698. oParam.outds = sRtnDsNm+"=resvlist";
  2699. oParam.async = false;
  2700. oParam.progress = false;
  2701. oParam.callback = "cf_TRMMR00301";
  2702. tranf_submit(oParam);
  2703. if (arErrorCode.pop("TRMMR00301") > -1)
  2704. {
  2705. var resvinfo;
  2706. if (objRtnDS.rowcount > 0)
  2707. {
  2708. resvinfo = "진료예약 : ";
  2709. var orddd = "";
  2710. var ordtm = "";
  2711. var orddeptnm = "";
  2712. var orddrnm = "";
  2713. for (var i = 0; i < objRtnDS.rowcount; i++)
  2714. {
  2715. //var subNode = nodelistResrvinfo.item(i - 1);
  2716. var orddd = utlf_transNullToEmpty(objRtnDS.getColumn(i, "orddd"));
  2717. var ordtm = utlf_transNullToEmpty(objRtnDS.getColumn(i, "ordtm"));
  2718. var orddeptnm = objRtnDS.getColumn(i, "orddeptnm");
  2719. var orddrnm = objRtnDS.getColumn(i, "orddrnm");
  2720. if (i == 0)
  2721. {
  2722. resvinfo += orddd.substr(0, 4) + "-" + orddd.substr(4, 2) + "-"
  2723. + orddd.substr(6, 2) + " " + ordtm.substr(0, 2) + ":"
  2724. + ordtm.substr(2, 2) + ", 진료과 : " + orddeptnm + ", 진료의 : " + orddrnm + "\n";
  2725. }
  2726. else
  2727. {
  2728. resvinfo += " " + orddd.substr(0, 4) + "-" + orddd.substr(4, 2) + "-"
  2729. + orddd.substr(6, 2) + " " + ordtm.substr(0, 2) + ":"
  2730. + ordtm.substr(2, 2) + ", 진료과 : " + orddeptnm + ", 진료의 : " + orddrnm + "\n";
  2731. }
  2732. }
  2733. }
  2734. else
  2735. {
  2736. resvinfo = "";
  2737. }
  2738. }
  2739. if (!utlf_isNull(resvinfo))
  2740. {
  2741. prerec += resvinfo;
  2742. }
  2743. // obj set
  2744. var tmpTxt = prerec;
  2745. if(!utlf_isNull(tmpTxt))
  2746. {
  2747. var objTextArea = ComnFormObj.components["tar_" + itemCd];
  2748. var objDivArea = ComnFormObj.components["ivw_" + itemCd];
  2749. if(!utlf_isNull(objDivArea.url)) // careplan에 세팅
  2750. {
  2751. var arrTmp = prerec.split("\n");
  2752. var grdObj = objDivArea.ds_grid_grd_diaglist;
  2753. var nRow = grdObj.rowcount;
  2754. var nNewRow;
  2755. for(var k = 0; k < arrTmp.length; k++)
  2756. {
  2757. if(!utlf_isNull(arrTmp[k])) // 처방내역이 있으면
  2758. {
  2759. if(utlf_isNull(grdObj.getColumn(nRow - 1, "reccnts4")))
  2760. {
  2761. nNewRow = nRow - 1;
  2762. }
  2763. else
  2764. {
  2765. nNewRow = grdObj.addRow();
  2766. objDivArea.lf_addRecItemOne(nNewRow); // recitem row 추가
  2767. }
  2768. grdObj.setColumn(nNewRow, "reccnts4", arrTmp[k]);
  2769. }
  2770. }
  2771. }
  2772. else
  2773. {
  2774. if(nFindRow == -1)
  2775. {
  2776. var nTmpPrntRow = ivw_base.ds_temp_mainrecitem.findRowExpr("fstlevlitemcd == '" + itemCd + "' && degnitemlevlno == '1' && degnitemkind == 'MTX'");
  2777. if(nTmpPrntRow != -1)
  2778. {
  2779. nFindRow = ds_data_recitem.addRow();
  2780. ds_data_recitem.copyRow(ds_data_recitem.rowcount - 1, ivw_base.ds_temp_mainrecitem, nTmpPrntRow);
  2781. }
  2782. }
  2783. ds_data_recitem.setColumn(nFindRow, "reccnts", prerec);
  2784. objTextArea.value = prerec;
  2785. }
  2786. }
  2787. // Temp로 사용한 Dataset을 삭제
  2788. var objDs = this.removeChild(sSendDsNm);
  2789. delete objDs;
  2790. objDs = null;
  2791. objDs = this.removeChild(sRtnDsNm);
  2792. delete objDs;
  2793. objDs = null;
  2794. }
  2795. function cf_TRMMR00301(sSvcId, nErrorCode, sErrorMsg) {
  2796. arErrorCode.push(sSvcId, nErrorCode);
  2797. if(nErrorCode < 0) return;
  2798. }
  2799. /****************************************************************************************
  2800. * Function : GetPatDiagNm
  2801. * Description : 환자진단정보 가져오기
  2802. * Argument : 01.sItemcd - 대상이 되는 섹션의 아이템 코드
  2803. * retrun type : N/A
  2804. * Creator :
  2805. ****************************************************************************************/
  2806. function GetPatDiagNm(obj:Button, e:ClickEventInfo)
  2807. {
  2808. var itemCd = obj.name;
  2809. itemCd = itemCd.split("_")[2];
  2810. //var pageInfo = new PAGEINFO();
  2811. var sPid = parent.ds_data_formrec.getColumn(0, "pid");
  2812. var sOrddd = parent.ds_data_formrec.getColumn(0, "orddd");
  2813. var sCretno = parent.ds_data_formrec.getColumn(0, "cretno");
  2814. var sOrddeptcd = parent.ds_data_formrec.getColumn(0, "orddeptcd");
  2815. var sIoflag = parent.ds_data_formrec.getColumn(0, "chosflag");
  2816. var sSendDs = dsf_createDsRow("ds_send", [{col:"cond1", type:"string", size:256, val:sPid},
  2817. {col:"cond2", type:"string", size:256, val:sOrddd},
  2818. {col:"cond3", type:"string", size:256, val:sCretno},
  2819. {col:"cond4", type:"string", size:256, val:sOrddeptcd},
  2820. {col:"cond5", type:"string", size:256, val:sIoflag}]);
  2821. var sOutDs = dsf_createDsRow("ds_main_diaginfo_diagcdlist", [{col:"status" , type:"string", size:256, val:""},
  2822. {col:"diagdd" , type:"string", size:256, val:""},
  2823. {col:"diagno" , type:"string", size:256, val:""},
  2824. {col:"diaghistno" , type:"string", size:256, val:""},
  2825. {col:"instcd" , type:"string", size:256, val:""},
  2826. {col:"pid" , type:"string", size:256, val:""},
  2827. {col:"orddd" , type:"string", size:256, val:""},
  2828. {col:"cretno" , type:"string", size:256, val:""},
  2829. {col:"orddeptcd" , type:"string", size:256, val:""},
  2830. {col:"orddrid" , type:"string", size:256, val:""},
  2831. {col:"genrflagcd" , type:"string", size:256, val:""},
  2832. {col:"diaghistcd" , type:"string", size:256, val:""},
  2833. {col:"diagcd" , type:"string", size:256, val:""},
  2834. {col:"diagtypecd" , type:"string", size:256, val:""},
  2835. {col:"diagkindcd" , type:"string", size:256, val:""},
  2836. {col:"diagkindcdflag", type:"string", size:256, val:""},
  2837. {col:"anamneflag" , type:"string", size:256, val:""},
  2838. {col:"tootflagcd" , type:"string", size:256, val:""},
  2839. {col:"diagsignflag" , type:"string", size:256, val:""},
  2840. {col:"tootfact" , type:"string", size:256, val:""},
  2841. {col:"diagengnm" , type:"string", size:256, val:""},
  2842. {col:"diaghngnm" , type:"string", size:256, val:""},
  2843. {col:"icd10cd" , type:"string", size:256, val:""},
  2844. {col:"spclinfo" , type:"string", size:256, val:""},
  2845. {col:"diagremfact" , type:"string", size:256, val:""},
  2846. {col:"diagcmtcnts" , type:"string", size:256, val:""},
  2847. {col:"hosoutprntflag", type:"string", size:256, val:""},
  2848. {col:"diagrefseq" , type:"string", size:256, val:""},
  2849. {col:"diagetcflag" , type:"string", size:256, val:""},
  2850. {col:"diagpartcd" , type:"string", size:256, val:""},
  2851. {col:"mildflag" , type:"string", size:256, val:""}]);
  2852. var objOutDs:Dataset = new Dataset;
  2853. objOutDs = this.objects[sOutDs];
  2854. var oParam = {};
  2855. oParam.id = "TRMMO00105";
  2856. oParam.service = "prcpmngtapp.PrcpMngt";
  2857. oParam.method = "reqGetPatDiagInfo";
  2858. oParam.inds = "req="+sSendDs;
  2859. oParam.outds = sOutDs+"=diagcdlist";
  2860. oParam.async = false;
  2861. oParam.progress = false;
  2862. oParam.callback = "cf_TRMMO00105";
  2863. tranf_submit(oParam);
  2864. if (arErrorCode.pop("TRMMO00105") > -1)
  2865. {
  2866. //var nodelistDiaginfo = model.instances(0).selectNodes("/root/main/diaginfo/diagcdlist");
  2867. var ro = "";
  2868. var ms = "";
  2869. var diaglist = "";
  2870. if(objOutDs.rowcount > 0){
  2871. var sDiagkindcd;
  2872. var sDiagkindcdflag;
  2873. var sTmpdiagcd;
  2874. var sTmpdiagengnm;
  2875. for(var i = 0; i < objOutDs.rowcount; i++)
  2876. {
  2877. sDiagkindcd = objOutDs.getColumn(i, "diagkindcd");
  2878. sDiagkindcdflag = objOutDs.getColumn(i, "diagkindcdflag");
  2879. sTmpdiagcd = objOutDs.getColumn(i, "icd10cd");
  2880. sTmpdiagengnm = objOutDs.getColumn(i, "diagengnm");
  2881. if (sDiagkindcd == "R")
  2882. ro = "R/O";
  2883. else
  2884. ro = " - ";
  2885. if (sDiagkindcdflag == "M")
  2886. ms = "주";
  2887. else
  2888. ms = "부";
  2889. diaglist += ro + " " + ms + " " + sTmpdiagengnm + "\n"
  2890. }
  2891. }
  2892. }
  2893. var nFindRow = ds_data_recitem.findRow("fstlevlitemcd", itemCd);
  2894. var prerec = ds_data_recitem.getColumn(nFindRow, "reccnts");
  2895. if (!utlf_isNull(prerec))
  2896. {
  2897. prerec = prerec + "\n" + diaglist;
  2898. }
  2899. else
  2900. {
  2901. prerec = diaglist;
  2902. }
  2903. if( nFindRow == -1 ){
  2904. var nTmpPrntRow = ivw_base.ds_temp_mainrecitem.findRowExpr("fstlevlitemcd == '" + itemCd + "' && degnitemlevlno == '1' && degnitemkind == 'MTX'");
  2905. if(nTmpPrntRow != -1)
  2906. {
  2907. nFindRow = ds_data_recitem.addRow();
  2908. ds_data_recitem.copyRow(ds_data_recitem.rowcount - 1, ivw_base.ds_temp_mainrecitem, nTmpPrntRow);
  2909. }
  2910. }
  2911. ds_data_recitem.setColumn(nFindRow, "reccnts", prerec);
  2912. var objTextArea = ComnFormObj.components["tar_" + itemCd];
  2913. objTextArea.value = prerec;
  2914. // Temp로 사용한 Dataset을 삭제
  2915. var oRemoveDs = this.removeChild(sSendDs);
  2916. oRemoveDs = this.removeChild(sOutDs);
  2917. oRemoveDs = null;
  2918. utlf_addLog("@@@@@ prerec : " + prerec + " @@@@@");
  2919. }
  2920. function cf_TRMMO00105(sSvcId, nErrorCode, sErrorMsg) {
  2921. arErrorCode.push(sSvcId, nErrorCode);
  2922. //if(nErrorCode < 0) return;
  2923. }
  2924. function EditableCtrl(trgElement, editableBool)
  2925. {
  2926. var editableStr = "";
  2927. if( editableBool )
  2928. editableStr = "true";
  2929. else
  2930. editableStr = "false";
  2931. var childLen = trgElement.children.length;
  2932. var tmpChildObj = null;
  2933. for( var i = 0; i < childLen; i++ ) {
  2934. tmpChildObj = trgElement.children.item(i);
  2935. if (tmpChildObj.attribute("usereditable") == "Y")
  2936. continue;
  2937. // group, switch일 경우
  2938. if( tmpChildObj.elementName == "xforms:group" ) {
  2939. EditableCtrl( tmpChildObj, editableBool);
  2940. }
  2941. // iviewer일 경우
  2942. else if( tmpChildObj.elementName == "xforms:iviewer" ) {
  2943. if( tmpChildObj.src != "" && tmpChildObj.attribute("id").indexOf("FRM_") == -1 )
  2944. EditableCtrl( tmpChildObj.window.body, editableBool);
  2945. }
  2946. // switch일 경우
  2947. else if( tmpChildObj.elementName == "xforms:switch" ) {
  2948. for( var j = 0; j < tmpChildObj.children.length; j++ ) {
  2949. EditableCtrl( tmpChildObj.children.item(j), editableBool);
  2950. }
  2951. }
  2952. else{
  2953. // inout, secret, textarea
  2954. if( tmpChildObj.elementName == "xforms:input" || tmpChildObj.elementName == "xforms:secret" || tmpChildObj.elementName == "xforms:textarea" ) {
  2955. tmpChildObj.attribute("editable") = editableStr;
  2956. }
  2957. // select, select1
  2958. else if( tmpChildObj.elementName == "xforms:select" || tmpChildObj.elementName == "xforms:select1") {
  2959. tmpChildObj.disabled = !editableBool;
  2960. }
  2961. else if( tmpChildObj.elementName == "xforms:datagrid" ) {
  2962. tmpChildObj.isReadOnly(tmpChildObj.fixedRows, tmpChildObj.fixedCols, tmpChildObj.rows - 1, tmpChildObj.cols - 1) = !editableBool;
  2963. }
  2964. else if( tmpChildObj.elementName == "xforms:button" ) {
  2965. tmpChildObj.disabled = !editableBool;
  2966. }
  2967. }
  2968. }
  2969. }
  2970. /*****************************************************************************
  2971. 튜닝
  2972. ******************************************************************************/
  2973. /**
  2974. * @group :
  2975. * @ver : 2008.06.13
  2976. * @by : snoweye
  2977. * @---------------------------------------------------
  2978. * @type : function
  2979. * @access : private
  2980. * @desc : Section 초기화(부분서식 로딩 및 확장서식 세팅) <-- InitLoadSection, InitSetUnitForm 통합
  2981. * @param :
  2982. * @return :
  2983. * @---------------------------------------------------
  2984. */
  2985. function initSection(itemCds)
  2986. {
  2987. utlf_addLog("***** initSection("+itemCds+") MMRCommon Section 초기화(부분서식 로딩 및 확장서식 세팅) *****");
  2988. // var pageInfo = new PAGEINFO();
  2989. //alert("itemCds.length : " + itemCds.length);
  2990. utlf_addLog("jw.choe parent.model -> model copynode 확인");
  2991. // 공통서식 인스턴스 생성
  2992. dsf_copyDsList(arrDsMain, arrDsMain, "replace", this, parent);
  2993. dsf_clearDsList(arrDsRecinfo, this);
  2994. //copyNodeset("/root/main", "/root/main", "replace", model, parent.model);
  2995. //model.removeNodeset("/root/main/recinfo");
  2996. //수술기록 분기(2008.10.24 박종훈)
  2997. if (parent.fGetFormMast("srcformcd") == "1000000001" || parent.fGetFormMast("srcformcd") == "0000000676" || parent.fGetFormMast("srcformcd") == "0000003169")
  2998. {
  2999. utlf_addLog("jw.choe makeRefByDegnitemLevlCd 임시주석.");
  3000. makeRefByDegnitemLevlCd();
  3001. }
  3002. else
  3003. {
  3004. utlf_addLog("jw.choe makeRefByDegnitemno 임시주석.");
  3005. makeRefByDegnitemno();
  3006. }
  3007. utlf_addLog(ivw_base.ds_temp_recitem.saveXML());
  3008. // trace("######################################");
  3009. // trace("Loading 시작 : " + utlf_getCurrentTime());
  3010. // trace("######################################");
  3011. var fstLoad = false;
  3012. for (var i = 0; i < itemCds.length; i++)
  3013. {
  3014. var formdegnseq = ds_data_unitformmast.lookup("orgsupdegnitemcd", itemCds[i], "formdegnseq");
  3015. var unitformcd = ds_data_unitformmast.lookup("orgsupdegnitemcd", itemCds[i], "formcd");
  3016. utlf_addLog("!!!!! ComnFormObj : " + ComnFormObj.name);
  3017. var ivwObj = ComnFormObj.components["ivw_" + itemCds[i]];
  3018. var tarObj = ComnFormObj.components["tar_" + itemCds[i]];
  3019. utlf_addLog("@@@@@ formdegnseq : " + formdegnseq + " @@@@@");
  3020. if(utlf_isNull(formdegnseq))
  3021. {
  3022. // ivwObj.visible = false;
  3023. // tarObj.visible = true;
  3024. fOnLoadComplete();
  3025. lf_getComponentID(formdegnseq, itemCds[i]);
  3026. }
  3027. //snoweye(2008-12-16) - Section별 로딩
  3028. /*************************************************************************/
  3029. else if(!fstLoad || unitformcd == '0000000005')//첫번째 부분서식만 로딩(2008-12-04)
  3030. {
  3031. utlf_addLog("***** !fstLoad : " + !fstLoad + " || unitformcd == '0000000005' : " + unitformcd + " *****");
  3032. // ivwObj.visible = true;
  3033. // tarObj.visible = false;
  3034. var unitformprogflag = ds_data_unitformmast.lookup("orgsupdegnitemcd", itemCds[i], "formprogflag");
  3035. if (!utlf_isNull(unitformcd))
  3036. {
  3037. ivwObj.supdegnitemcd = itemCds[i];
  3038. ivwObj.unitformcd = unitformcd;
  3039. trace(unitformcd + " Loading 시작 : " + utlf_getCurrentTime());
  3040. loadUnitForm(ivwObj, itemCds[i]);
  3041. lf_getComponentID(formdegnseq, itemCds[i]);
  3042. trace(unitformcd + " Loading 끝 : " + utlf_getCurrentTime());
  3043. utlf_addLog("@@@@@ " + unitformprogflag + " : " + parent.fGetFormRec("status") + " : " + parent.fGetFormMast("formcd") + " : " + unitformcd );
  3044. if (unitformprogflag != "PROG" && parent.fGetFormRec("status") == "C" && parent.fGetFormMast("formcd") != "0800000722" && unitformcd != '0000000005') //영양검색의뢰 제외
  3045. {
  3046. var srcformcd = ds_data_formmast.getColumn(0, "srcformcd");
  3047. //입원경과,외래재진은 제외한다(20130729 이윤주)
  3048. if (srcformcd != "0000000004" && srcformcd != "0000000002") {
  3049. fstLoad = true;//첫번째 부분서식 로딩완료(2008-12-04)
  3050. dispOnLoadComplete(UNIT_FORM);
  3051. }
  3052. }
  3053. else if(unitformprogflag == "PROG" && parent.fGetFormRec("status") == "C" && parent.fGetFormMast("formcd") == "0800000722")
  3054. {
  3055. }
  3056. }
  3057. }else{
  3058. lf_getComponentID(formdegnseq, itemCds[i]);
  3059. }
  3060. //snoweye(2008-12-16) - Section별 로딩 끝
  3061. /*************************************************************************/
  3062. /*
  3063. if(!utlf_isNull(formdegnseq))
  3064. {
  3065. ivwObj.visible = true;
  3066. tarObj.visible = false;
  3067. }
  3068. if (tarObj.visible == true)
  3069. {
  3070. setComnEvent(parent.fGetFormMast("srcformcd"), tarObj.degnitemno, tarObj.name);
  3071. }
  3072. */
  3073. var cboObj = ComnFormObj.components["cbo_" + gItemCds[i]];
  3074. //var cboObj = eval("cbo_" + gItemCds[i]);
  3075. setExtnFormList(cboObj, gItemCds[i]);
  3076. }
  3077. return fstLoad;
  3078. }
  3079. /**
  3080. * @group :
  3081. * @ver : 2008.06.13
  3082. * @by : snoweye
  3083. * @---------------------------------------------------
  3084. * @type : function
  3085. * @access : private
  3086. * @desc : 부분서식 Load
  3087. * @param :
  3088. * @return :
  3089. * @---------------------------------------------------
  3090. */
  3091. function loadUnitForm(ivwObj, fstLevlItemCd)
  3092. {
  3093. utlf_addLog("***** MMRCommon loadUnitForm("+ivwObj+", "+fstLevlItemCd+") 부분서식 로드 *****");
  3094. var formdegnseq = ds_data_unitformmast.lookup("orgsupdegnitemcd", fstLevlItemCd, "formdegnseq");
  3095. var formprogflag = ds_data_unitformmast.lookup("orgsupdegnitemcd", fstLevlItemCd, "formprogflag");
  3096. var UnitFormXfdlUseYn = ds_data_unitformmast.lookup("orgsupdegnitemcd", fstLevlItemCd, "formxfdluseyn");
  3097. var srcformcd = ds_data_formmast.getColumn(0, "srcformcd");
  3098. if(formprogflag == "PROG")
  3099. {
  3100. var formprognm = ds_data_unitformmast.lookup("orgsupdegnitemcd", fstLevlItemCd, "formprognm");
  3101. var obj = sysf_getScreenInfo(formprognm.split("_")[0]);
  3102. // utlf_addLog("***** MMRCommon formprognm : " + formprognm );
  3103. utlf_addLog("***** MMRCommon obj.scrnurlxp : " + obj.scrnurlxp );
  3104. ivwObj.url = "";
  3105. ivwObj.url = obj.scrnurlxp;
  3106. }
  3107. else
  3108. {
  3109. utlf_addLog("jw.choe 특수서식 임시 제외 MMRCommon 3497 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
  3110. //ivwObj.url = getFormUrl(formdegnseq, ivwObj.name);
  3111. // ivwObj.url = "";
  3112. // ivwObj.url = "emr_medirecxp::SSMMR09999.xfdl";
  3113. fGetFormDegn(formdegnseq, fstLevlItemCd, ComnFormObj, UnitFormXfdlUseYn);
  3114. }
  3115. // setMaxSizeMtx(ivwObj, 1);
  3116. if (srcformcd == "0000000679" && !utlf_isNull(ivwObj.url))
  3117. {
  3118. if (oOpener.frmf_getScreenID() == "SSMMR01100")
  3119. {
  3120. // fSetErTriageRec(ivwObj, null);
  3121. }
  3122. else
  3123. {
  3124. // ivw_base.fSetErTriageRec(ivwObj, null);
  3125. }
  3126. }
  3127. }
  3128. /**
  3129. * @group :
  3130. * @ver : 2008.06.13
  3131. * @by : snoweye
  3132. * @---------------------------------------------------
  3133. * @type : function
  3134. * @access : private
  3135. * @desc : 확장서식 세팅 (<--SetUnitFormList)
  3136. * @param :
  3137. * @return :
  3138. * @---------------------------------------------------
  3139. */
  3140. function setExtnFormList(cboObj, supdegnitemcd)
  3141. {
  3142. if (utlf_isNull(cboObj)) return;
  3143. utlf_addLog("***** MMRCommon setExtnFormList("+cboObj.name+", "+supdegnitemcd+") 확장서식 셋팅 ******");
  3144. if( cboObj != null && !utlf_isNull(cboObj.innerdataset) ){
  3145. utlf_addLog("@@@@@ cboObj.innerdataset).toString() : " + (cboObj.innerdataset).toString() );
  3146. if(!((cboObj.innerdataset).toString() == "[object Dataset]" || (cboObj.innerdataset).toString() == "[object FilteredDataset]")){
  3147. var objDs = eval(cboObj.innerdataset);
  3148. }else{
  3149. var objDs = cboObj.innerdataset;
  3150. }
  3151. }
  3152. if (objDs.rowcount == 0)
  3153. {
  3154. cboObj.visible = false;
  3155. }
  3156. else
  3157. {
  3158. cboObj.visible = true;
  3159. var node = (this.objects["ds_data_unitformmast"]).lookup("orgsupdegnitemcd", supdegnitemcd, "formdegnseq");
  3160. var dsNm = "ds_hidden_choicbo_cbo_"+supdegnitemcd;
  3161. var objColInfo = new Array();
  3162. objColInfo.push({col: "baseunitformdegnseq", type:"string", size:256});
  3163. objColInfo.push({col: "extnunitformdegnseq", type:"string", size:256});
  3164. dsf_createDs(dsNm, objColInfo);
  3165. var cboDs = this.objects[dsNm];
  3166. if( cboDs.rowcount == 0 ) cboDs.addRow();
  3167. if (!utlf_isNull(node))
  3168. {
  3169. cboDs.setColumn(0, "baseunitformdegnseq", node);
  3170. cboDs.setColumn(0, "extnunitformdegnseq", cboObj.value);
  3171. }
  3172. else
  3173. {
  3174. cboDs.setColumn(0, "baseunitformdegnseq", "");
  3175. cboDs.setColumn(0, "extnunitformdegnseq", "");
  3176. }
  3177. var objBindItem = new BindItem();
  3178. objBindItem.init("cbo_"+supdegnitemcd, cboObj.name, "value", dsNm, "extnunitformdegnseq");
  3179. this.addChild(dsNm, objBindItem);
  3180. objBindItem.bind();
  3181. //cboObj.attribute("ref") = "/root/hidden/choicbo/cbo_" + supdegnitemcd + "/extnunitformdegnseq";
  3182. }
  3183. }
  3184. /**
  3185. * @group :
  3186. * @ver : 2008.06.23
  3187. * @by : snoweye
  3188. * @---------------------------------------------------
  3189. * @type : function
  3190. * @access : public
  3191. * @desc : Section영역 최대화 ( <-- SetMaxSizeSection)
  3192. * @param : itemCds - 섹션 itemcd 배열
  3193. * @return :
  3194. * @---------------------------------------------------
  3195. */
  3196. function expandSection(itemCds, obj)
  3197. {
  3198. this.enableredraw = false;
  3199. if( !utlf_isNull(gMaxSectionTObj) && !utlf_isNull(gMaxSectionBObj) ){
  3200. var temp_gMaxSectionTop = gMaxSectionTObj.position.top;
  3201. var temp_gMaxSectionHei = parseInt(gMaxSectionBObj.position.bottom) - parseInt(gMaxSectionTObj.position.top);
  3202. if( temp_gMaxSectionHei != gMaxSectionHei ){
  3203. gMaxSectionTop = temp_gMaxSectionTop;
  3204. gMaxSectionHei = temp_gMaxSectionHei;
  3205. }
  3206. }
  3207. var ctrlID = obj.name;
  3208. var itemcd = ctrlID.replace("lbl_", "");
  3209. var bFold = itemcd == gMaxSectionID ? true : false;
  3210. var ctrl = null;
  3211. var prevItemCd = gMaxSectionID;
  3212. var unitformcd = "";
  3213. for (var i = 0; i < itemCds.length; i++)
  3214. {
  3215. var secCtrl = ComnFormObj.components["lbl_" + itemCds[i]];
  3216. var formdegnseq = ds_data_unitformmast.lookup("orgsupdegnitemcd", itemCds[i], "formdegnseq");
  3217. unitformcd = ds_data_unitformmast.lookup("orgsupdegnitemcd", itemCds[i], "formcd");
  3218. if(utlf_isNull(formdegnseq))
  3219. ctrl = ComnFormObj.components["tar_" + itemCds[i]];
  3220. else
  3221. ctrl = ComnFormObj.components["ivw_" + itemCds[i]];
  3222. if(itemcd == itemCds[i])
  3223. {
  3224. fSetBaseForm( itemCds[i] );
  3225. if(bFold)//fold
  3226. {
  3227. ctrl.position.top = secCtrl.orgtop;
  3228. ctrl.position.height = secCtrl.orgheight;
  3229. secCtrl.style.backgroundColor = secCtrl.orgbackgroundColor;
  3230. gMaxSectionID = "";
  3231. }
  3232. else//expand
  3233. {
  3234. secCtrl.orgtop = ctrl.position.top;
  3235. secCtrl.orgheight = ctrl.position.height;
  3236. secCtrl.orgbackgroundColor = secCtrl.style.backgroundColor;
  3237. ctrl.position.top = gMaxSectionTop;
  3238. ctrl.position.height = gMaxSectionHei;
  3239. secCtrl.style.backgroundColor = "#99ccff";
  3240. gMaxSectionID = itemcd;
  3241. }
  3242. ctrl.visible = true;
  3243. ctrl.bringToFront();
  3244. var objComp = ComnFormObj.components["cap_"+itemCds[i]];
  3245. if(!utlf_isNull(objComp) && objComp.visible == true){
  3246. objComp.visible = false;
  3247. }
  3248. }
  3249. else
  3250. {
  3251. if(bFold)//fold
  3252. {
  3253. ctrl.visible = true;
  3254. }
  3255. else//expand
  3256. {
  3257. ctrl.visible = false;
  3258. if(prevItemCd == itemCds[i])
  3259. {
  3260. ctrl.position.top = secCtrl.orgtop;
  3261. ctrl.position.height = secCtrl.orgheight;
  3262. secCtrl.style.backgroundColor = secCtrl.orgbackgroundColor;
  3263. }
  3264. }
  3265. }
  3266. if (ctrl.name == "ivw_" + itemCds[i])
  3267. {
  3268. SetMultiTextFull(ctrl, 1);
  3269. }
  3270. if (unitformcd == "0000000901" || unitformcd == "0000000899" || unitformcd == "0000000900")
  3271. {
  3272. //ctrl.fInitPage(false, parseInt(ctrl.position.height), parseInt(ctrl.position.width));
  3273. }
  3274. if(ctrl instanceof Div)
  3275. {
  3276. ctrl.resetScroll();
  3277. }
  3278. }
  3279. ComnFormObj.resetScroll();
  3280. this.enableredraw = true;
  3281. }
  3282. function fSetBaseForm( itemCd )
  3283. {
  3284. utlf_addLog("***** fSetBaseForm( "+itemCd +") MMRCommon *****");
  3285. //섹션 선택시 해당 섹션의 부분서식의 로딩되어있는지 확인하여
  3286. //로딩되어 있지 않으면 부분서식로딩
  3287. var ivwObj = ComnFormObj.components["ivw_" + itemCd];
  3288. if(utlf_isNull(ivwObj.url))
  3289. {
  3290. var unitformcd = ds_data_unitformmast.lookup("orgsupdegnitemcd", itemCd, "formcd");
  3291. if (!utlf_isNull(unitformcd))
  3292. {
  3293. ivwObj.supdegnitemcd = itemCd;
  3294. ivwObj.unitformcd = unitformcd;
  3295. trace(unitformcd + " Loading 시작 : " + utlf_getCurrentTime());
  3296. loadUnitForm(ivwObj, itemCd);
  3297. lf_getComponentID(unitformcd, itemCd);
  3298. trace(unitformcd + " Loading 끝 : " + utlf_getCurrentTime());
  3299. }
  3300. }
  3301. }
  3302. /**
  3303. * @group :
  3304. * @ver : 2008.06.23
  3305. * @by : snoweye
  3306. * @---------------------------------------------------
  3307. * @type : function
  3308. * @access : public
  3309. * @desc : TextArea 최대화 ( <-- SetMultiTextFull)
  3310. * @param : ctrl - TextArea가 포함된 iviewer object 또는 TextArea
  3311. * @return :
  3312. * @---------------------------------------------------
  3313. */
  3314. function setMaxSizeMtx(ivwObj, pDegnItemNo)
  3315. {
  3316. utlf_addLog("***** MMRCommon setMaxSizeMtx("+ivwObj+", "+pDegnItemNo+") *****");
  3317. //if (ivwObj.attribute("unitformcd") == "0000000005")
  3318. if (ivwObj.unitformcd == "0000000005")
  3319. {
  3320. //ivwObj.window.javascript.fSetMtxSize(pDegnItemNo, 0, 0, parseInt(ivwObj.attribute("width"))-5, parseInt(ivwObj.attribute("height")));
  3321. ivwObj.fSetMtxSize(pDegnItemNo, 0, 0, parseInt(ivwObj.position.width)-5, parseInt(ivwObj.position.height));
  3322. }
  3323. }
  3324. /**
  3325. * @group :
  3326. * @ver : 2008.06.23
  3327. * @by : snoweye
  3328. * @---------------------------------------------------
  3329. * @type : function
  3330. * @access : public
  3331. * @desc : 복합서식(부분서식을 포함, 공통서식)의 기록 데이터를 취합 ( <-- initSaveComnFormRecItemData)
  3332. * @param : mode - null / 'all' ( 기록된 데이터만 / 전체 데이터)
  3333. * @return :
  3334. * @---------------------------------------------------
  3335. */
  3336. function getSaveComnFormData(mode, tmp)
  3337. {
  3338. utlf_addLog("***** MMRCommon getSaveComnFormData("+mode+", "+tmp+") 복합서식(부분서식을 포함, 공통서식)의 기록 데이터를 취합 *****");
  3339. var ctrlIvw;
  3340. var ctrlTar;
  3341. var pageInfo = new PAGEINFO();
  3342. var savedInfo = new SAVED_INFO();
  3343. if (utlf_isNull(gFstItemCds))
  3344. {
  3345. gFstItemCds = gItemCds;
  3346. }
  3347. dsf_clearDsList(["ds_temp_sort_recitem"], this);//pageInfo.sortItemRef
  3348. //model.removeNodeset(pageInfo.sortItemRef);
  3349. getSaveData("ds_temp_sort_recitem", "append", this, null, mode);
  3350. for (var i = 0; i < gItemCds.length; i++)
  3351. {
  3352. ctrlIvw = ComnFormObj.components["ivw_" + gItemCds[i]];
  3353. //2010-03-31 오전 10:12:54 강지훈 추가 : 입퇴원요약지 최종진단명 추가
  3354. var lastDiagStrDestDs = this.objects["ds_temp_sort_recitem"];
  3355. var lastDiagStrSrcDs = this.objects["ds_temp_lastdiag_recitem"];
  3356. if(lastDiagStrSrcDs != null)
  3357. lastDiagStrSrcDs.filter("fstlevlitemcd == '" +gItemCds[i]+ "'");
  3358. var unitformmastDs = this.objects["ds_data_unitformmast"];
  3359. var formdegnseq = unitformmastDs.lookup("orgsupdegnitemcd", gItemCds[i], "formdegnseq");
  3360. //dataset check
  3361. var sortItemRefDs = this.objects["ds_temp_sort_recitem"];
  3362. var extnformrecDs = this.objects["ds_hidden_extnformrec_recitem"];
  3363. var filterStr = "fstlevlitemcd == '" +gItemCds[i]+ "'";
  3364. var imgerecItemRefDs = this.objects["ds_temp_imgerec_recitem"];
  3365. var fmyrecItemRefDs = this.objects["ds_temp_fmyrec_recitem"];
  3366. var etcrecItemRefDs = this.objects["ds_temp_etcrec_recitem"];
  3367. if(!utlf_isNull(formdegnseq) && !utlf_isNull(ctrlIvw.url))
  3368. {
  3369. var orgsupdegnitemno = unitformmastDs.lookup("orgsupdegnitemcd", gItemCds[i], "orgsupdegnitemno");
  3370. if(utlf_isNull(orgsupdegnitemno))
  3371. {
  3372. if ( extnformrecDs != null ){
  3373. extnformrecDs.filter("degnitemkind != 'FDG' && fstlevlitemcd == '" +gItemCds[i]+ "'");
  3374. sortItemRefDs.appendData(extnformrecDs, true, false);
  3375. extnformrecDs.filter("");
  3376. }
  3377. if( imgerecItemRefDs != null ){
  3378. imgerecItemRefDs.filter(filterStr);
  3379. sortItemRefDs.appendData(imgerecItemRefDs, true, false);
  3380. imgerecItemRefDs.filter("");
  3381. }
  3382. if( fmyrecItemRefDs != null ){
  3383. fmyrecItemRefDs.filter(filterStr);
  3384. sortItemRefDs.appendData(fmyrecItemRefDs, true, false);
  3385. fmyrecItemRefDs.filter("");
  3386. }
  3387. if( etcrecItemRefDs != null ){
  3388. etcrecItemRefDs.filter(filterStr);
  3389. sortItemRefDs.appendData(etcrecItemRefDs, true, false);
  3390. etcrecItemRefDs.filter("");
  3391. }
  3392. fInsertNodes(lastDiagStrDestDs, lastDiagStrSrcDs); //2010-03-30 오후 9:03:47 강지훈 추가 : 입퇴원요약지 최종진단명 추가
  3393. // copyNodeset(pageInfo.sortItemRef, "/root/hidden/extnformrec/recinfo/recitem[degnitemkind != 'FDG' and fstlevlitemcd = '" +gItemCds[i]+ "']", "append", model, model);
  3394. // copyNodeset(pageInfo.sortItemRef, pageInfo.imgerecItemRef + "[fstlevlitemcd = '" +gItemCds[i]+ "']", "append", model, model);
  3395. // copyNodeset(pageInfo.sortItemRef, pageInfo.fmyrecItemRef + "/recitem[fstlevlitemcd = '" +gItemCds[i]+ "']", "append", model, model); //가계도
  3396. // copyNodeset(pageInfo.sortItemRef, pageInfo.etcrecItemRef + "/recitem[fstlevlitemcd = '" +gItemCds[i]+ "']", "append", model, model); //추가기록
  3397. // fInsertNodes(lastDiagStrDest, lastDiagStrSrc); //2010-03-30 오후 9:03:47 강지훈 추가 : 입퇴원요약지 최종진단명 추가
  3398. continue;
  3399. }
  3400. var degnitemlevlcd = this.objects["ds_data_formdegn"].lookup("degnitemno", orgsupdegnitemno, "degnitemlevlcd");
  3401. var fstLevlBaseItemCd = degnitemlevlcd.substr(0, degnitemlevlcd.indexOf(".") >= 0 ? degnitemlevlcd.indexOf(".") : degnitemlevlcd.length);
  3402. var fstLevlItemCd = this.objects["ds_data_formdegn"].lookup("degnitemlevlcd", fstLevlBaseItemCd, "degnitemcd");
  3403. if (utlf_isNull(tmp))
  3404. {
  3405. //2010-07-27 김달현
  3406. //의뢰상태의 격리병실신청 수정시 보이지 않는 회신내역 필수체크때문에 수정안되는 오류발생(요청번호:9731)
  3407. //HIT강지훈사원이 MMR04900에 ivw.src공백처리로 수정했으나(2010-04-06) 이 부분으로 인해 컨설트 회신시 입력한 내용이 공백으로 저장된 오류발생해 다시 주석처리함.
  3408. //notChkEssnYn 플래그를 추가함.(ivw.attribute)값이 Y일 경우는 필수체크 안함. N으로 설정한 경우만 필수체크함.
  3409. utlf_addLog("jw.choe ctrlIvw.attribute(\"notChkEssnYn\") 확인필요 "+ ctrlIvw.name +" MMRCommon");
  3410. if(ctrlIvw.notChkEssnYn != "Y" && ctrlIvw.chkEssentialitem(gItemCds[i].substr(0, 7)) == false)//필수 입력항목 체크(특수서식)
  3411. {
  3412. return savedInfo;
  3413. }
  3414. }
  3415. ctrlIvw.getSaveData("ds_temp_sort_recitem", "append", this, NewPageInfo(ctrlIvw, fstLevlItemCd));
  3416. }
  3417. if ( extnformrecDs != null ){
  3418. extnformrecDs.filter("degnitemkind != 'FDG' && fstlevlitemcd == '" +gItemCds[i]+ "'");
  3419. sortItemRefDs.appendData(extnformrecDs, true, false);
  3420. extnformrecDs.filter("");
  3421. }
  3422. if( imgerecItemRefDs != null ){
  3423. imgerecItemRefDs.filter(filterStr);
  3424. sortItemRefDs.appendData(imgerecItemRefDs, true, false);
  3425. imgerecItemRefDs.filter("");
  3426. }
  3427. if( etcrecItemRefDs != null ){
  3428. etcrecItemRefDs.filter(filterStr);
  3429. sortItemRefDs.appendData(etcrecItemRefDs, true, false);
  3430. etcrecItemRefDs.filter("");
  3431. }
  3432. if( fmyrecItemRefDs != null ){
  3433. fmyrecItemRefDs.filter(filterStr);
  3434. sortItemRefDs.appendData(fmyrecItemRefDs, true, false);
  3435. fmyrecItemRefDs.filter("");
  3436. }
  3437. fInsertNodes(lastDiagStrDestDs, lastDiagStrSrcDs);
  3438. // copyNodeset(pageInfo.sortItemRef, "/root/hidden/extnformrec/recinfo/recitem[degnitemkind != 'FDG' and fstlevlitemcd = '" +gItemCds[i]+ "']", "append", model, model);
  3439. // copyNodeset(pageInfo.sortItemRef, pageInfo.imgerecItemRef + "[fstlevlitemcd = '" +gItemCds[i]+ "']", "append", model, model);
  3440. // copyNodeset(pageInfo.sortItemRef, pageInfo.etcrecItemRef + "/recitem[fstlevlitemcd = '" +gItemCds[i]+ "']", "append", model, model); //추가기록
  3441. // copyNodeset(pageInfo.sortItemRef, pageInfo.fmyrecItemRef + "/recitem[fstlevlitemcd = '" +gItemCds[i]+ "']", "append", model, model); //가계도
  3442. // fInsertNodes(lastDiagStrDest, lastDiagStrSrc); //2010-03-30 오후 9:03:47 강지훈 추가 : 입퇴원요약지 최종진단명 추가
  3443. }
  3444. SortRecItem();
  3445. // utlf_addLog(ds_hidden_recitem.saveXML());
  3446. utlf_addLog("jw.choe opener -> parent 변경 this : ivw_base, parent : ivw_loader ");
  3447. dsf_copyDsList(arrDsHiddenRecinfo, arrDsHiddenRecinfo, "replace", parent, this);
  3448. //copyNodeset(pageInfo.recItemRef2, pageInfo.recItemRef2, "replace", opener.model, model);
  3449. //2010.01.12 안치원 - MTX의 필수입력시 기본부분서식이 있으면 부분서식을, 없으면 MTX의 입력여부를 검사한다.
  3450. if (utlf_isNull(tmp))
  3451. {
  3452. //필수 입력항목 체크(특수서식)
  3453. if(chkEssentialitem() == false)
  3454. {
  3455. return savedInfo;
  3456. }
  3457. }
  3458. }
  3459. /**
  3460. * @desc : Text Box 최대화(컨설트서식을 위해 다시 추가)
  3461. * @id :
  3462. * @event :
  3463. * @return : void
  3464. * @authur : 박종훈
  3465. */
  3466. function SetMultiTextFull(ivwObj, pDegnItemNo)
  3467. {
  3468. if (ivwObj.unitformcd == "0000000005")
  3469. {
  3470. ivwObj.fSetMtxSize(pDegnItemNo, 0, 0, parseInt(ivwObj.position.width)-5, parseInt(ivwObj.position.height));
  3471. }
  3472. }
  3473. /****************************************************************************************
  3474. * Function : GetPatDrugPrcpList
  3475. * Description : 환자처방정보 가져오기
  3476. * retrun type :
  3477. ****************************************************************************************/
  3478. function GetPatDrugPrcpList(itemCd, itemCd1)
  3479. {
  3480. var pageInfo = new PAGEINFO();
  3481. var prcpdd = "";
  3482. var bfflag = "bfprcp";
  3483. var flag = "";
  3484. var todd = "";
  3485. var pid = parent.ds_data_formrec.getColumn(0, "pid");
  3486. var orddd = parent.ds_data_formrec.getColumn(0, "orddd");
  3487. var cretno = parent.ds_data_formrec.getColumn(0, "cretno");
  3488. var orddrid = parent.ds_data_formrec.getColumn(0, "orddrid");
  3489. var orddeptcd = parent.ds_data_formrec.getColumn(0, "orddeptcd");
  3490. var prcpgenrflag = parent.ds_data_formrec.getColumn(0, "chosflag");
  3491. if (prcpgenrflag == "I" || prcpgenrflag == "E" || prcpgenrflag == "D")
  3492. {
  3493. prcpdd = parent.ds_data_formrec.getColumn(0, "formrecdd");
  3494. }
  3495. else
  3496. {
  3497. prcpdd = orddd;
  3498. }
  3499. //처방정보 가져오기(퇴원처방 prcpkindcd = 60)
  3500. var drugprcpCnt = 0;
  3501. var prcpCnt = 0;
  3502. var expr = "(!utlf_isNull(prcpkindcd) && prcphistcd != 'C' && prcphistcd != 'L' && prcphistcd != 'E') && (prcpclscd == 'A2' || prcpclscd == 'A4' || prcpclscd == 'A6')";
  3503. var expr2 = "(!utlf_isNull(prcpkindcd) && prcphistcd != 'C' && prcphistcd != 'L' && prcphistcd != 'E') && (prcpclscd == 'H2' || prcpclscd == 'H4')";
  3504. //if(fBfPrcpSrchCom(pid, orddd, prcpdd, bfflag, flag, orddrid, todd, prcpgenrflag, orddeptcd, cretno, "TRMMO00100", true))
  3505. if(lf_bfPrcpSrchCom(pid, orddd, prcpdd, bfflag, flag, orddrid, todd, prcpgenrflag, orddeptcd, cretno, "TRMMO00100", "", "", ""))
  3506. {
  3507. //투약
  3508. //var nodelistDrugPrcpinfo = model.instances(0).selectNodes("/root/prcpsrch/prcplist[(prcpkindcd != '' and prcphistcd != 'C' and prcphistcd != 'L' and prcphistcd != 'E') and (prcpclscd = 'A2' or prcpclscd = 'A4' or prcpclscd = 'A6')]");
  3509. //처치
  3510. //var nodelistPrcpinfo = model.instances(0).selectNodes("/root/prcpsrch/prcplist[(prcpkindcd != '' and prcphistcd != 'C' and prcphistcd != 'L' and prcphistcd != 'E') and (prcpclscd = 'H2' or prcpclscd = 'H4')]");
  3511. drugprcpCnt = ds_prcpsrch_prcplist.getCaseCount(expr);
  3512. prcpCnt = ds_prcpsrch_prcplist.getCaseCount(expr2);
  3513. }
  3514. var prcpkind = ""; //처방종류
  3515. var orgprcpnm = ""; //처방명
  3516. var drugmthdspccdnm = ""; //용법
  3517. var prcpdelivefact = ""; //전달사항
  3518. var prcplist = "";
  3519. var prcphistcd = ""; //임시,인증구분
  3520. var prcpclscd = "";
  3521. var tmpdrugmthdspccdnm = "";
  3522. if(drugprcpCnt >= 1){
  3523. ds_prcpsrch_prcplist.filter(expr);
  3524. for(var i = 0; i < drugprcpCnt; i++)
  3525. {
  3526. tmpdrugmthdspccdnm = ds_prcpsrch_prcplist.getColumn(i, "drugmthdspccdnm");
  3527. prcpkind = ds_prcpsrch_prcplist.getColumn(i, "tempcol13");
  3528. orgprcpnm = ds_prcpsrch_prcplist.getColumn(i, "tempcol6");
  3529. drugmthdspccdnm = utlf_transNullToEmpty(ds_prcpsrch_prcplist.getColumn(i, "tempcol7"));
  3530. prcpclscd = ds_prcpsrch_prcplist.getColumn(i, "prcpclscd");
  3531. drugmthdspccdnm = drugmthdspccdnm.replace(tmpdrugmthdspccdnm, "");
  3532. drugmthdspccdnm = drugmthdspccdnm.replace("[급]", "");
  3533. drugmthdspccdnm = drugmthdspccdnm.replace("[일]", "");
  3534. drugmthdspccdnm = drugmthdspccdnm.replace("[본]", "");
  3535. drugmthdspccdnm = drugmthdspccdnm.replace("(집)", "");
  3536. drugmthdspccdnm = drugmthdspccdnm.replace("[home]", "");
  3537. drugmthdspccdnm = drugmthdspccdnm.replace("[임상]", "");
  3538. drugmthdspccdnm = drugmthdspccdnm.replace("[prn]", "");
  3539. prcpdelivefact = ds_prcpsrch_prcplist.getColumn(i, "prcpdelivefact");
  3540. prcphistcd = ds_prcpsrch_prcplist.getColumn(i, "prcphistcd");
  3541. if(prcphistcd == "T")
  3542. {
  3543. if (prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6")
  3544. {
  3545. prcplist += "[임] " + orgprcpnm + " " + drugmthdspccdnm + "\n"
  3546. }
  3547. else
  3548. {
  3549. prcplist += "[임] " + orgprcpnm + "\n"
  3550. }
  3551. }
  3552. else
  3553. {
  3554. if (prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6")
  3555. {
  3556. prcplist += orgprcpnm + " " + drugmthdspccdnm + "\n"
  3557. }
  3558. else
  3559. {
  3560. prcplist += orgprcpnm + "\n"
  3561. }
  3562. }
  3563. }
  3564. }
  3565. var nFindRow = ds_data_recitem.findRow("fstlevlitemcd", itemCd);
  3566. var prerec = ds_data_recitem.getValue(nFindRow, "reccnts");
  3567. if (!utlf_isNull(prerec))
  3568. {
  3569. prerec = prerec + "\n" + prcplist + "\n";
  3570. }
  3571. else
  3572. {
  3573. prerec = prcplist + "\n"
  3574. }
  3575. if(!utlf_isNull(prerec))
  3576. {
  3577. var objTextArea = ComnFormObj.components["tar_" + itemCd];
  3578. var objDivArea = ComnFormObj.components["ivw_" + itemCd];
  3579. if(nFindRow == -1)
  3580. {
  3581. var nTmpPrntRow = ivw_base.ds_temp_mainrecitem.findRowExpr("fstlevlitemcd == '" + itemCd + "' && degnitemlevlno == '1' && degnitemkind == 'MTX'");
  3582. if(nTmpPrntRow != -1)
  3583. {
  3584. nFindRow = ds_data_recitem.addRow();
  3585. ds_data_recitem.copyRow(ds_data_recitem.rowcount - 1, ivw_base.ds_temp_mainrecitem, nTmpPrntRow);
  3586. }
  3587. }
  3588. ds_data_recitem.setColumn(nFindRow, "reccnts", prerec);
  3589. objTextArea.value = prerec;
  3590. }
  3591. //model.setValue(pageInfo.recItemRef + "[fstlevlitemcd='" + itemCd + "']/reccnts", prerec);
  3592. var prcpkind = ""; //처방종류
  3593. var orgprcpnm = ""; //처방명
  3594. var drugmthdspccdnm = ""; //용법
  3595. var prcpdelivefact = ""; //전달사항
  3596. var prcplist = "";
  3597. var prcphistcd = ""; //임시,인증구분
  3598. var prcpclscd = "";
  3599. var tmpdrugmthdspccdnm = "";
  3600. if(prcpCnt >= 1){
  3601. ds_prcpsrch_prcplist.filter(expr2);
  3602. for(var i = 0; i < prcpCnt; i++)
  3603. {
  3604. prcpkind = ds_prcpsrch_prcplist.getColumn(i, "tempcol13");
  3605. orgprcpnm = ds_prcpsrch_prcplist.getColumn(i, "tempcol6");
  3606. tmpdrugmthdspccdnm = ds_prcpsrch_prcplist.getColumn(i, "drugmthdspccdnm");
  3607. drugmthdspccdnm = utlf_transNullToEmpty(ds_prcpsrch_prcplist.getColumn(i, "tempcol7"));
  3608. prcpclscd = ds_prcpsrch_prcplist.getColumn(i, "prcpclscd");
  3609. drugmthdspccdnm = drugmthdspccdnm.replace(tmpdrugmthdspccdnm, "");
  3610. drugmthdspccdnm = drugmthdspccdnm.replace("[급]", "");
  3611. drugmthdspccdnm = drugmthdspccdnm.replace("[일]", "");
  3612. drugmthdspccdnm = drugmthdspccdnm.replace("[본]", "");
  3613. drugmthdspccdnm = drugmthdspccdnm.replace("(집)", "");
  3614. drugmthdspccdnm = drugmthdspccdnm.replace("[home]", "");
  3615. drugmthdspccdnm = drugmthdspccdnm.replace("[임상]", "");
  3616. drugmthdspccdnm = drugmthdspccdnm.replace("[prn]", "");
  3617. prcpdelivefact = ds_prcpsrch_prcplist.getColumn(i, "prcpdelivefact");
  3618. prcphistcd = ds_prcpsrch_prcplist.getColumn(i, "prcphistcd");
  3619. if(prcphistcd == "T")
  3620. {
  3621. if (prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6")
  3622. {
  3623. prcplist += "[임] " + orgprcpnm + " " + drugmthdspccdnm + "\n"
  3624. }
  3625. else
  3626. {
  3627. prcplist += "[임] " + orgprcpnm + "\n"
  3628. }
  3629. }
  3630. else
  3631. {
  3632. if (prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6")
  3633. {
  3634. prcplist += orgprcpnm + " " + drugmthdspccdnm + "\n"
  3635. }
  3636. else
  3637. {
  3638. prcplist += orgprcpnm + "\n"
  3639. }
  3640. }
  3641. }
  3642. }
  3643. var nFindRow = ds_data_recitem.findRow("fstlevlitemcd", itemCd1);
  3644. var prerec = ds_data_recitem.getColumn(nFindRow, "reccnts");
  3645. if (!utlf_isNull(prerec))
  3646. {
  3647. prerec = prerec + "\n" + prcplist + "\n";
  3648. }
  3649. else
  3650. {
  3651. prerec = prcplist + "\n"
  3652. }
  3653. if(!utlf_isNull(prerec))
  3654. {
  3655. var objTextArea = ComnFormObj.components["tar_" + itemCd1];
  3656. var objDivArea = ComnFormObj.components["ivw_" + itemCd1];
  3657. if(nFindRow == -1)
  3658. {
  3659. var nTmpPrntRow = ivw_base.ds_temp_mainrecitem.findRowExpr("fstlevlitemcd == '" + itemCd1 + "' && degnitemlevlno == '1' && degnitemkind == 'MTX'");
  3660. if(nTmpPrntRow != -1)
  3661. {
  3662. nFindRow = ds_data_recitem.addRow();
  3663. ds_data_recitem.copyRow(ds_data_recitem.rowcount - 1, ivw_base.ds_temp_mainrecitem, nTmpPrntRow);
  3664. }
  3665. }
  3666. ds_data_recitem.setColumn(nFindRow, "reccnts", prerec);
  3667. objTextArea.value = prerec;
  3668. }
  3669. //model.setValue(pageInfo.recItemRef + "[fstlevlitemcd='" + itemCd1 + "']/reccnts", prerec);
  3670. }
  3671. /**
  3672. * @desc :공통기록 디폴트 포커스처리(MTX)
  3673. * @id :
  3674. * @event : onclick
  3675. * @return : void
  3676. * @authur : 박종훈
  3677. */
  3678. function SetDefFocusMTX(itemArr)
  3679. {
  3680. utlf_addLog("***** SetDefFocusMTX("+itemArr+") MMRCommon *****");
  3681. var ctrlTar;
  3682. for (var i = 0; i < itemArr.length; i++)
  3683. {
  3684. ctrlTar = this.components["tar_" + itemArr[i]];
  3685. if (ctrlTar != null && ctrlTar.visible)
  3686. {
  3687. ctrlTar.setFocus();
  3688. frmf_inputEnterKey("tar_" + itemArr[i], "onkeyup", new KeyEventInfo);
  3689. //ctrlTar.dispatch("onkeyup");
  3690. break;
  3691. }
  3692. }
  3693. }
  3694. /**
  3695. * @desc :공통기록 디폴트 포커스처리(IVW)
  3696. * @id :
  3697. * @event : onclick
  3698. * @return : void
  3699. * @authur : 박종훈
  3700. */
  3701. function SetDefFocusIVW(itemArr)
  3702. {
  3703. var ctrlIvw;
  3704. var mtxNm = "MTX_1";
  3705. var mtx
  3706. for (var i = 0; i < itemArr.length; i++)
  3707. {
  3708. ctrlIvw = ComnFormObj.components["ivw_" + itemArr[i]];
  3709. if (!utlf_isNull(ctrlIvw) && ctrlIvw.visible && !utlf_isNull(ctrlIvw.url))
  3710. {
  3711. var mtx = ctrlIvw.components[mtxNm];
  3712. if (utlf_isNull(mtx))
  3713. continue;
  3714. mtx.setFocus();
  3715. frmf_inputEnterKey("ComnFormObj.ivw_" + itemArr[i] + "." + mtxNm, "onkeyup", new KeyEventInfo);
  3716. //mtx.dispatch("onkeyup");
  3717. break;
  3718. }
  3719. }
  3720. }
  3721. /**
  3722. * @desc : 부분서식 로딩 후 기록내용 셋팅(보완필요)
  3723. * @id :
  3724. * @event :
  3725. * @return : void
  3726. * @authur : 박종훈
  3727. */
  3728. function InitUnitFormDataBySupdegnitemcd(itemcd)
  3729. {
  3730. if (fGetFormRec("status") != "U")
  3731. return;
  3732. var ctrlIvw;
  3733. var pageInfo = new PAGEINFO();
  3734. //var degnitemcdlist = model.instances(0).selectNodes(pageInfo.formdegnRef + "[degnitemkind = 'FRM' and itemuseflag='F0']/degnitemcd");
  3735. //var supdegnitemcdlist = model.instances(0).selectNodes(pageInfo.formdegnRef + "[degnitemkind = 'FRM' and itemuseflag='F0']/supdegnitemcd");
  3736. var node = model.instances(0).selectSingleNode(pageInfo.formdegnRef + "[degnitemkind = 'FRM' and itemuseflag='F0' and supdegnitemcd = '" + itemcd + "']");
  3737. var degnitemcd = node.getXPathString("degnitemcd");
  3738. var supdegnitemcd = node.getXPathString("supdegnitemcd");
  3739. var degnitemlevlcd = node.getXPathString("degnitemlevlcd");
  3740. ctrlIvw = document.controls("ivw_" + supdegnitemcd);
  3741. if (ctrlIvw != null && ctrlIvw.visible && ctrlIvw.src != "")
  3742. {
  3743. ctrlIvw.window.javascript.clearData();
  3744. var fstlevlitembasecd = degnitemlevlcd.split(".")[0];
  3745. var fstlevlitemcd = model.getValue(gPrePath_formdegnRef + "degnitemlevlcd = '" + fstlevlitembasecd + "']/degnitemcd");
  3746. setSrchData(pageInfo.recItemRef2 + "[fstlevlitemcd='" +fstlevlitemcd+ "' and formcd = '" + degnitemcd + "']", ctrlIvw);
  3747. }
  3748. model.removeNodeset(pageInfo.extnrecItemRef);
  3749. var cnt = getNodesetCnt(model, pageInfo.forminfoRef + "/extnformlist");
  3750. for (var i = 1; i <= cnt; i++)
  3751. {
  3752. // stmt = pageInfo.recItemRef2 + "[degnitemkind != 'FDG' and fstlevlitemcd='" +model.getValue(pageInfo.forminfoRef + "/extnformlist[" +i+ "]/supdegnitemcd")+
  3753. // "' and formcd = '" + model.getValue(pageInfo.forminfoRef + "/extnformlist[" +i+ "]/formcd") + "']";
  3754. //가계도는 확장서식에 붙으면 안되는 문제로 수정(박종훈/2008-09-29)
  3755. stmt = pageInfo.recItemRef2 + "[degnitemkind != 'FDG' and fstlevlitemcd='" +model.getValue(pageInfo.forminfoRef + "/extnformlist[" +i+ "]/supdegnitemcd")+
  3756. "' and formcd = '" + model.getValue(pageInfo.forminfoRef + "/extnformlist[" +i+ "]/formcd") + "']";
  3757. copyNodeset(pageInfo.extnrecItemRef, stmt, "append", model, model);
  3758. model.removeNodeset(stmt);
  3759. }
  3760. copyNodeset(pageInfo.imgerecItemRef, pageInfo.recItemRef2 + "[degnitemkind='IMG' and rowno != '']", "replace", model, model);
  3761. copyNodeset(pageInfo.fmyrecItemRef + "/recitem", pageInfo.recItemRef2 + "[degnitemkind='FDG']", "replace", model, model);
  3762. copyNodeset(pageInfo.etcrecItemRef + "/recitem", pageInfo.recItemRef2 + "[degnitemno='0']", "replace", model, model);
  3763. copyNodeset(pageInfo.lastdiagItemRef + "/recitem", pageInfo.recItemRef2 + "[formcd = '1000007943']", "replace", model, model); //2010-03-31 오전 10:14:27 강지훈추가 : 최종진단명 요약지 추가
  3764. }
  3765. /**
  3766. * @group :
  3767. * @ver : 2008.06.23
  3768. * @by : snoweye
  3769. * @---------------------------------------------------
  3770. * @type : function
  3771. * @access : public
  3772. * @desc : Section영역 최대화 ( <-- SetMaxSizeSection)
  3773. * @param : itemCds - 섹션 itemcd 배열
  3774. * @return :
  3775. * @---------------------------------------------------
  3776. */
  3777. function loadClickSection(itemCd)
  3778. {
  3779. // var ctrlID = event.target;
  3780. // var itemcd = ctrlID.replace("lbl_", "");
  3781. var ctrl = null;
  3782. var prevItemCd = gMaxSectionID;
  3783. var unitformcd = "";
  3784. var secCtrl = ComnFormObj.components["lbl_" + itemCd];
  3785. var fidx = ds_data_unitformmast.findRowExpr("orgsupdegnitemcd=='"+itemCd+"'");
  3786. var formdegnseq = ds_data_unitformmast.getColumn(fidx, "formdegnseq");
  3787. unitformcd = ds_data_unitformmast.getColumn(fidx, "formcd");
  3788. if(utlf_isNull(formdegnseq))
  3789. ctrl = ComnFormObj.components["tar_" + itemCd];
  3790. else
  3791. ctrl = ComnFormObj.components["ivw_" + itemCd];
  3792. //섹션 선택시 해당 섹션의 부분서식의 로딩되어있는지 확인하여
  3793. //로딩되어 있지 않으면 부분서식로딩
  3794. var ivwObj = ComnFormObj.components["ivw_" + itemCd];
  3795. if(utlf_isNull(ivwObj.url))
  3796. {
  3797. var unitformcd = ds_data_unitformmast.getColumn(fidx, "formcd");
  3798. if (!utlf_isNull(unitformcd))
  3799. {
  3800. // ivwObj.supdegnitemcd = itemCd;
  3801. // ivwObj.unitformcd = unitformcd;
  3802. // trace(unitformcd + " Loading 시작 : " + utlf_getCurrentTime());
  3803. lf_loadUnitForm(itemCd);
  3804. lf_getComponentID(formdegnseq, itemCd);
  3805. // trace(unitformcd + " Loading 끝 : " + utlf_getCurrentTime());
  3806. }
  3807. }
  3808. }
  3809. /**
  3810. * @desc : 공통서식내의 확장버튼(이미지,가계도,추가기록)을 기록여부에 따라 표시한다.
  3811. * @id :
  3812. * @event : 공통서식을 열었을때
  3813. * @param : pViewObj - button을 가지고 있는 화면이 열린 view
  3814. * pButtonIds - 확장버튼(이미지,가계도,추가기록)의 id 의 배열
  3815. * @return : void
  3816. * @authur : 안치원
  3817. * @history : 2009.09.09 신규 안치원 ACW_090909A
  3818. */
  3819. function setButtonToggleAllByRecYn(pViewObj, pButtonIds)
  3820. {
  3821. utlf_addLog("***** setButtonToggleAllByRecYn("+pViewObj+", "+pButtonIds+") MMRCommon *****");
  3822. if( pButtonIds == null ) return;
  3823. for (var i = 0; i < pButtonIds.length; i++) {
  3824. setButtonToggleByRecYn(pViewObj, pButtonIds[i]);
  3825. }
  3826. }
  3827. /**
  3828. * @desc : 확장버튼(이미지,가계도,추가기록)을 기록여부에 따라 표시한다.
  3829. * @id :
  3830. * @event : 확장버튼 클릭후에 열린 팝업창이 닫힐때,
  3831. * setButtonToggleAllByRecYn 에 의한 호출일때
  3832. * @param : pViewObj - button을 가지고 있는 화면이 열린 view
  3833. * pButtonIds - 확장버튼(이미지,가계도,추가기록)의 id
  3834. * @return : void
  3835. * @authur : 안치원
  3836. * @history : 2009.09.09 신규 안치원 ACW_090909A
  3837. */
  3838. function setButtonToggleByRecYn(pViewObj, pButtonId)
  3839. {
  3840. utlf_addLog("***** setButtonToggleByRecYn ("+pViewObj+", "+pButtonId+") MMRCommon *****");
  3841. //alert("setButtonToggleByRecYn>>pButtonId::"+pButtonId);
  3842. /**
  3843. * pButtonId Example
  3844. * btn_imge_0008224001 이미지
  3845. * btn_fmy_0008224001 가계도
  3846. * btn_etcrec_0008224001 추가기록
  3847. */
  3848. var buttonObj = null;
  3849. if (utlf_isNull(pViewObj)) {
  3850. pViewObj = this;
  3851. }
  3852. /// 컨설트 관련 수정
  3853. var pButtonIdno = pButtonId.substr(pButtonId.length-10,pButtonId.length-1);
  3854. if(pButtonIdno == "0011449001" || pButtonIdno == "0011529001") {
  3855. buttonObj = pViewObj.grup_base.grup_cnts.components["grup_"+pButtonIdno].components[pButtonId];
  3856. } else {
  3857. buttonObj = pViewObj.grup_base.components[pButtonId];
  3858. }
  3859. var arr = pButtonId.split("_");
  3860. var supperItemCd = arr[2];
  3861. var nCnt = 0;
  3862. if (arr[1] == "imge") {
  3863. nCnt = pViewObj.ds_data_recitem.getCaseCount("fstlevlitemcd == '" + supperItemCd + "' && degnitemkind == 'IMG' && !utlf_isNull(recimge) && !utlf_isNull(rowno)");
  3864. }
  3865. else if (arr[1] == "fmy") {
  3866. nCnt = pViewObj.ds_data_recitem.getCaseCount("fstlevlitemcd == '" + supperItemCd + "' && degnitemkind == 'FDG' && !utlf_isNull(recimge)");
  3867. }
  3868. else if (arr[1] == "etcrec") {
  3869. nCnt = pViewObj.ds_data_recitem.getCaseCount("fstlevlitemcd == '" + supperItemCd + "' && degnitemkind == 'STX' && !utlf_isNull(reccnts) && degnitemno == '0' && degnitemcd == '0008458001'");
  3870. }
  3871. else if (arr[1] == "lastdiag") { //2010-02-16 오후 3:35:13 강지훈 추가
  3872. nCnt = pViewObj.ds_data_recitem.getCaseCount("fstlevlitemcd == '" + supperItemCd + "' && formcd == '1000007943'");
  3873. }
  3874. else {
  3875. return;
  3876. }
  3877. if (arr[1] == "imge") {
  3878. if (nCnt > 0) {
  3879. buttonObj.class = "btn_picture_s";
  3880. } else {
  3881. buttonObj.class = "btn_picture";
  3882. }
  3883. }
  3884. else if (arr[1] == "fmy")
  3885. {
  3886. if (nCnt > 0) {
  3887. buttonObj.class = "btn_Fmytree_s";
  3888. } else {
  3889. buttonObj.class = "btn_Fmytree";
  3890. }
  3891. }
  3892. else if (arr[1] == "etcrec")
  3893. {
  3894. if (nCnt > 0) {
  3895. buttonObj.class = "btn_Assrecord_s";
  3896. } else {
  3897. buttonObj.class = "btn_Assrecord";
  3898. }
  3899. } else {
  3900. if (nCnt > 0) {
  3901. buttonObj.class = "btn5";
  3902. } else {
  3903. buttonObj.class = "btn2";
  3904. }
  3905. }
  3906. }
  3907. /**
  3908. * @desc : 사용자 답변 조회
  3909. * @
  3910. * @param :
  3911. * @return :
  3912. * @author : 김영학
  3913. * @---------------------------------------------------
  3914. */
  3915. function fGetUserEnvOcsOrdAnsw(oDsTarget, qestcd){
  3916. var oDsEnvinfo = emr_getOrderBaseInfo("envinfo");
  3917. if (oDsEnvinfo != null) {
  3918. oDsTarget.copyRow(0, oDsEnvinfo, oDsEnvinfo.findRow("qestcd", sQestCd));
  3919. return oDsTarget;
  3920. }
  3921. }
  3922. /***************************************************************************************************
  3923. * Function : emr_getOrderBaseInfo
  3924. * Description : 아이디에 해당하는 기초정보를 리턴한다. (시스템메세지 정보 조회)
  3925. * Argument : sID [String : 데이타셋명(ds_를 제외한)]
  3926. * : objSrcDs [Dataset : 리턴 데이타를 받을 데이타셋]
  3927. * return type : [Dataset : 기초정보를 리턴]
  3928. * Creator :
  3929. ***************************************************************************************************/
  3930. function emr_getOrderBaseInfo(sID, objSrcDs)
  3931. {
  3932. var oDescDs = agv_objAppTopPath.form.dv_orderbasicinfo.lf_getOrderBaseInfo(sID);
  3933. if (utlf_isNull(objSrcDs)) {
  3934. return oDescDs
  3935. }
  3936. else {
  3937. objSrcDs.copyData(oDescDs, true);
  3938. }
  3939. }
  3940. /****************************************************************************************
  3941. * Function : lf_setSrchData
  3942. * Description : 단일 서식 연동 또는 기록 데이터를 서식 ds_data_itemvalue에 Set
  3943. * Argument : 01. ivwObj : 대상이 되는 div
  3944. * retrun type :
  3945. * Creator :
  3946. ****************************************************************************************/
  3947. function lf_setSrchData(ivwObj)
  3948. {
  3949. utlf_addLog("***** lf_setSrchData("+ivwObj+") *****");
  3950. var Obj = lf_getObj(ivwObj);
  3951. var ColId = "";
  3952. var dsNm = "";
  3953. var imgObj = "";
  3954. var imgNo = "";
  3955. var dsDegnNo = "";
  3956. var sFormprogflag = fGetFormMast("formprogflag");
  3957. var sCd = "";
  3958. var sName = Obj.name;
  3959. var sCnstFormYn = "N";
  3960. var prntObj = "";
  3961. if(Obj.name == "ivw_0000960003")// 진단명
  3962. {
  3963. prntObj = this;
  3964. }
  3965. else
  3966. {
  3967. prntObj = parent.parent;
  3968. }
  3969. /// 컨설트 관련 추가
  3970. if(fGetFormRec("status") == "C" && sFormprogflag == "PROG" && (fGetFormMast("srcformcd") == "0000000677" || fGetFormMast("cnstformyn") == "Y")) {
  3971. sCd = "";
  3972. sName = Obj.name;
  3973. sCnstFormYn = "N";
  3974. if(!utlf_isNull(sName))
  3975. sCd = sName.replace("ivw_", "");
  3976. if(sCd != "0000960001" && sCd != "0024140001" && sCd != "0005785001" && sCd != "0001019001") {
  3977. if(sCd == "0011449001") // 진정의뢰 데이터 연동
  3978. lf_setInitData();
  3979. parent.parent.parent.parent.lf_setReqDefSyntex(ds_temp_diaglist.lookup("chkMain", "1", "rectermnm2"), sCd);
  3980. }
  3981. }
  3982. //sysf_trace(fGetFormRec("status") + " || " + sFormprogflag + " || fGetFormMast(formcd) : " + fGetFormMast("formcd") + " || fGetFormMast(srcformcd) : " + fGetFormMast("srcformcd"));
  3983. if(fGetFormRec("status") == "C" && sFormprogflag != "PROG")
  3984. {
  3985. // MSL Default Setting
  3986. fnLoadDegnNewForm();
  3987. // 공통서식내의 부분서식은 공통서식 로딩시 모든 연동데이터 조회함
  3988. lf_initGrd(); // 서식내 그리드 초기화 및 이벤트 추가
  3989. if(Obj.isValidObject("ds_data_itemvalue"))
  3990. {
  3991. for(var i = 0; i < Obj.ds_data_itemvalue.colcount; i++)
  3992. {
  3993. ColId = Obj.ds_data_itemvalue.getColID(i);
  3994. lf_setRecItemDS(ColId, Obj, "genForm", "C"); // 특수서식 신규로딩시 초기값 세팅
  3995. }
  3996. }
  3997. lf_getSyncData(); // 서식아이템에 세팅할 연동값 조회
  3998. lf_setFormInitData(); // 연동값 이외에 특수서식 로딩 시 필요한 기초 정보 세팅
  3999. lf_setSyncData(Obj); // 연동 데이터 세팅
  4000. if(fGetFormMast("formprogflag") == "PROF")
  4001. {
  4002. var oMainFrame = null
  4003. if( frmf_getCurrentFormKind() == "main" ){
  4004. oMainFrame = frmf_getMainViewer();
  4005. }else{
  4006. oMainFrame = this.getOwnerFrame().form;
  4007. }
  4008. if( oMainFrame != null ){
  4009. var sWorkScrnId = oMainFrame.frmf_getScreenID();
  4010. var bExistFunc = frmf_findFuncFromForm(sysf_getScreenInfo(sWorkScrnId).scrnurlxp, "lf_setProfBaseInfo");
  4011. if(bExistFunc){
  4012. eval("oMainFrame.lf_setProfBaseInfo()");
  4013. }
  4014. }
  4015. //parent.parent.parent.lf_setProfBaseInfo(); // 제증명 기초정보 세팅
  4016. }
  4017. }
  4018. else if(fGetFormRec("status") == "C" && !utlf_isNull(prntObj) && prntObj.isValidObject("ds_main_extninfo_resultinfo") //ds_data_resultinfo
  4019. && prntObj.ds_main_extninfo_resultinfo.rowcount > 0
  4020. && (//fGetFormMast("formcd") == "0000003169" || fGetFormMast("formcd") == "0900007034" || fGetFormMast("formcd") == "1500016308")) BriefOpNote 제외
  4021. fGetFormMast("srcformcd") == "0000000676" || fGetFormMast("srcformcd") == "1100010919" // 수술기록
  4022. || fGetFormMast("srcformcd") == "1400016151" || fGetFormMast("srcformcd") == "1300014169" // PostOpNote
  4023. || fGetFormMast("srcformcd") == "0000001596" // TrasferInNote
  4024. || fGetFormMast("srcformcd") == "1500016528" // 수술및시술전기록
  4025. ))
  4026. {
  4027. // 신규로딩 시 특정 서식 기록정보를 연동해오는 경우
  4028. sCd = "";
  4029. sName = Obj.name;
  4030. sCnstFormYn = "N";
  4031. if(!utlf_isNull(sName))
  4032. sCd = sName.replace("ivw_", "");
  4033. var subFormprogflag = ds_data_unitformmast.lookup("orgsupdegnitemcd", sCd, "formprogflag");
  4034. if(subFormprogflag == "PROG")
  4035. {
  4036. var infoflag = parent.parent.ds_main_extninfo_resultinfo.getColumn(0, "infoflag");
  4037. if( !utlf_isNull(infoflag) ){
  4038. if (infoflag.indexOf("recdata;") != -1) {
  4039. Obj.lf_setGridModify(sCd, sCnstFormYn);
  4040. }
  4041. }else {
  4042. Obj.lf_setGridModify(sCd, sCnstFormYn);
  4043. }
  4044. }
  4045. else
  4046. {
  4047. if( Obj.isValidObject("ds_data_itemvalue") == true){
  4048. for(var i = 0; i < Obj.ds_data_itemvalue.colcount; i++)
  4049. {
  4050. ColId = Obj.ds_data_itemvalue.getColID(i);
  4051. lf_setRecItemDS(ColId, Obj, "innerRec"); // 공통서식 내에서 recitem 정보를 갖고 있는 경우
  4052. }
  4053. }
  4054. }
  4055. }
  4056. else if(fGetFormRec("status") == "C" && fGetFormMast("srcformcd") != "0000000677" && fGetFormMast("formprogflag") == "PROG")
  4057. {
  4058. // MSL Default Setting
  4059. fnLoadDegnNewForm();
  4060. lf_getSyncData(); // 서식아이템에 세팅할 연동값 조회
  4061. lf_setSyncData(Obj); // 연동 데이터 세팅
  4062. if(Obj.isValidObject("ds_data_itemvalue"))
  4063. {
  4064. for(var i = 0; i < Obj.ds_data_itemvalue.colcount; i++)
  4065. {
  4066. ColId = Obj.ds_data_itemvalue.getColID(i); //recitem DS에 매핑된 기본값 세팅
  4067. lf_setRecItemDS(ColId, Obj, "", "C");
  4068. }
  4069. }
  4070. }
  4071. if(fGetFormRec("status") != "C" && fGetFormMast("formprogflag") == "PROG") // 프로그램 서식 기록 데이터 세팅
  4072. {
  4073. sCd = "";
  4074. sName = Obj.name;
  4075. sCnstFormYn = "N";
  4076. if(!utlf_isNull(sName))
  4077. sCd = sName.replace("ivw_", "");
  4078. if(fGetFormMast("srcformcd") == "0000000677" || fGetFormMast("cnstformyn") == "Y") // 컨설트 서식과 공통서식의 depth 차이로 인한 구분 파라미터 추가
  4079. {
  4080. sCnstFormYn = "Y";
  4081. if(sCd == "0000960001" || sCd == "0024140001" || sCd == "0005785001") // 의뢰탭의 진단명, 약물복용력, 치료내용
  4082. Obj.lf_setGridModify("0011449001", sCnstFormYn); // 의뢰내용
  4083. else if(sCd == "0001019001") // 회신탭의 진단명
  4084. Obj.lf_setGridModify("0011529001", sCnstFormYn); // 회신내용
  4085. else
  4086. {
  4087. for(var i = 0; i < Obj.ds_data_itemvalue.colcount; i++)
  4088. {
  4089. ColId = Obj.ds_data_itemvalue.getColID(i);
  4090. lf_setRecItemDS(ColId, Obj);
  4091. }
  4092. parent.parent.parent.parent.fGroupEnableSwitch(parent); // 컨설트 화면 enable 설정
  4093. }
  4094. if(sCd == "0011529001") {
  4095. //TF : fLoadData, XP : cf_TRMMR00301_2
  4096. if( parent.parent.parent.parent.objects["ds_data_cnstinfo"] != null ){
  4097. var nShowflag = parent.parent.parent.parent.ds_data_cnstinfo.getColumn(0,"showflag");
  4098. if( nShowflag == "req" ){
  4099. Obj.notChkEssnYn = "Y";
  4100. }else{
  4101. Obj.notChkEssnYn = "N";
  4102. }
  4103. }
  4104. //alert(this.name);
  4105. parent.parent.parent.parent.lf_setRecvDefSyntex();
  4106. }
  4107. }
  4108. else
  4109. {
  4110. sFormprogflag = ds_data_unitformmast.lookup("orgsupdegnitemcd", sCd, "formprogflag");
  4111. utlf_addLog(" sFormprogflag : " + sFormprogflag);
  4112. if(sFormprogflag == "PROG")
  4113. {
  4114. Obj.lf_setGridModify(sCd, sCnstFormYn);
  4115. }
  4116. else
  4117. {
  4118. if(Obj.isValidObject("ds_data_itemvalue"))
  4119. {
  4120. for(var i = 0; i < Obj.ds_data_itemvalue.colcount; i++)
  4121. {
  4122. ColId = Obj.ds_data_itemvalue.getColID(i);
  4123. lf_setRecItemDS(ColId, Obj);
  4124. }
  4125. var pntObj = parent.parent.parent;
  4126. var imgRow = pntObj.ds_data_recitem.findRow("degnitemkind", "IMG");
  4127. if(imgRow > -1)
  4128. {
  4129. for(var i = 0; i < ivwObj.all.length; i++)
  4130. {
  4131. if(ivwObj.all[i] instanceof ActiveX) // 이미지 Object를 비교하는 구문
  4132. {
  4133. imgObj = ivwObj.all[i];
  4134. imgNo = imgObj.name;
  4135. imgNo = imgNo.replace("IMG_", "");
  4136. var nRow = pntObj.ds_data_recitem.findRowExpr("degnitemno == '"+imgNo+"' && fstlevlitemcd == '"+sCd+"' ");
  4137. lf_setSizeImg(imgObj);
  4138. if(nRow != -1)
  4139. {
  4140. var objImgRow = Obj.ds_data_recitem.findRow("degnitemno", imgNo);
  4141. Obj.ds_data_recitem.setColumn(objImgRow, "reccnts", pntObj.ds_data_recitem.getColumn(nRow, "reccnts"));
  4142. Obj.ds_data_recitem.setColumn(objImgRow, "recimge", pntObj.ds_data_recitem.getColumn(nRow, "recimge"));
  4143. var imgBinary = objExt.encodeBase64(pntObj.ds_data_recitem.getColumn(nRow, "recimge"));
  4144. imgObj.LoadImageBase64(imgBinary);
  4145. lf_reSizeImg(imgObj);
  4146. }
  4147. }
  4148. }
  4149. }
  4150. }
  4151. Obj.lf_calculateInit(); //산술식 초기화
  4152. }
  4153. }
  4154. }
  4155. else if(fGetFormRec("status") != "C" && fGetFormMast("formprogflag") != "PROG") // 일반 서식기록 데이터 세팅
  4156. {
  4157. if(Obj.isValidObject("ds_data_itemvalue"))
  4158. {
  4159. for(var i = 0; i < Obj.ds_data_itemvalue.colcount; i++)
  4160. {
  4161. ColId = Obj.ds_data_itemvalue.getColID(i);
  4162. lf_setRecItemDS(ColId, Obj, "genForm");
  4163. }
  4164. Obj.lf_calculateInit(); //산술식 초기화
  4165. }
  4166. for(var i = 0; i < Obj.all.length; i++)
  4167. {
  4168. if(Obj.all[i] instanceof Dataset) //Object를 비교하는 구문
  4169. {
  4170. dsNm = Obj.all[i].name;
  4171. if(dsNm.indexOf("ds_data_grd_") != -1)
  4172. {
  4173. dsDegnNo = dsNm.replace("ds_data_grd_", "")
  4174. Obj.fSetFormGridRec(dsNm, dsDegnNo); // 기록내용 그리드에 세팅
  4175. }
  4176. }
  4177. if(Obj.all[i] instanceof ActiveX) //Object를 비교하는 구문
  4178. {
  4179. imgObj = Obj.all[i];
  4180. imgNo = imgObj.name;
  4181. imgNo = imgNo.replace("IMG_", "");
  4182. lf_setSizeImg(imgObj);
  4183. var nRow = parent.ds_data_recitem.findRow("degnitemno", imgNo);
  4184. if(nRow != -1)
  4185. {
  4186. var imgBinary = objExt.encodeBase64(parent.ds_data_recitem.getColumn(nRow, "recimge"));
  4187. imgObj.LoadImageBase64(imgBinary);
  4188. imgObj.RestoreStatus();
  4189. lf_reSizeImg(imgObj);
  4190. }
  4191. }
  4192. }
  4193. if(fGetFormMast("formprogflag") == "PROF")
  4194. {
  4195. var oMainFrame = null
  4196. if( frmf_getCurrentFormKind() == "main" ){
  4197. oMainFrame = frmf_getMainViewer();
  4198. }else{
  4199. oMainFrame = this.getOwnerFrame().form;
  4200. }
  4201. if( oMainFrame != null ){
  4202. var sWorkScrnId = oMainFrame.frmf_getScreenID();
  4203. var bExistFunc = frmf_findFuncFromForm(sysf_getScreenInfo(sWorkScrnId).scrnurlxp, "lf_setProfBaseInfo");
  4204. utlf_addLog(" bExistFunc : " + bExistFunc);
  4205. if(bExistFunc){
  4206. eval("oMainFrame.lf_setProfBaseInfo()");
  4207. }
  4208. }
  4209. //parent.parent.parent.lf_setProfBaseInfo(); // 제증명 기초정보 세팅
  4210. }
  4211. }
  4212. /*
  4213. utlf_addLog("@@@@@@@@@@ this.name : " + this.name + " obj.name : " + Obj.name);
  4214. if( Obj.name != "ivw_base" && fGetFormMast("formprogflag") == "PROG" ){//fGetFormRec("status") == "C"
  4215. //if( Obj.name != "ivw_base" && fGetFormMast("formprogflag") == "PROG" && ((isValidObject("ds_temp") == false) || (isValidObject("ds_temp") == true && ds_temp.getColumn(0, "loadcomplete") != "true")) ){//fGetFormRec("status") == "C"
  4216. //frmf_getCurrentFormKind() != 'main' && ds_temp.getColumn(0, "formxrwyn") == "Y" && ds_temp.getColumn(0, "loadcomplete") != "true")
  4217. var formcd = Obj.ds_data_recitem.getColumn(0, "formcd");
  4218. utlf_addLog("@@@@@@@@@@@ ds_data_unitformmast loaded : " + ds_data_unitformmast.lookup("formcd", formcd, "loaded") );
  4219. if( ds_data_unitformmast.lookup("formcd", formcd, "loaded") != "true" ){
  4220. utlf_addLog("@@@@@@@@@@@ ds_data_unitformmast.lookup(formcd, formcd, loaded) != true");
  4221. ds_data_unitformmast.setColumn(nRow, "loaded", "true");
  4222. var loadStatus = "";
  4223. var formkind = fGetFormMast("formkind");
  4224. if(formkind == "C")
  4225. loadStatus = UNIT_FORM;
  4226. dispOnLoadComplete(loadStatus, Obj.ds_data_recitem.getColumn(0, "formcd"));
  4227. // if( isValidObject("ds_temp") == false ){
  4228. // dsf_createDsRow("ds_temp", [{col: "loadcomplete", type:"string", size:256, val:"true"}]);
  4229. // }
  4230. }
  4231. }
  4232. */
  4233. lf_getImgData(); // 이미지정보 세팅
  4234. fnSetFuncUse();//Function Libray 핸들러추가
  4235. if(!utlf_isNull(parent.afterNewLoadFormFuncNm)) // 서식로드 후 실행할 콜백함수 호출
  4236. {
  4237. var objForm = this.getOwnerFrame().form;
  4238. var funcnm = "objForm." + parent.afterNewLoadFormFuncNm + "()";
  4239. eval(funcnm);
  4240. }
  4241. if( !utlf_isNull(Obj) && (fGetFormMast("srcformcd") != "0000000677" && fGetFormMast("cnstformyn") != "Y") && fGetFormRec("status") == "C" )
  4242. {
  4243. Obj.lf_calculateInit(); //산술식 초기화
  4244. }
  4245. if( fGetFormRec("status") == "C" ){
  4246. lf_setInitHelpData(Obj);
  4247. }
  4248. /*
  4249. if(fGetFormRec("chosflag") == "I" && fGetFormMast("srcformcd") != "0000000677" && fGetFormMast("srcformcd") != "0000000680" && fGetFormMast("srcformcd") != "0000001596") // 입원환자인 경우 임시저장 disable
  4250. {
  4251. if(fGetFormMast("formprogflag") == "PROG" || fGetFormMast("formprogflag") == "MAIN")
  4252. {
  4253. if(parent.parent.parent.isValidObject("btn_tmpsave"))
  4254. {
  4255. parent.parent.parent.btn_tmpsave.enable = false;
  4256. }
  4257. }
  4258. else
  4259. {
  4260. parent.btn_tmpsave.enable = false;
  4261. }
  4262. }
  4263. */
  4264. //상용구 사용 추가
  4265. if(!utlf_isNull(ivwObj))
  4266. lf_addRightMenuMTX(ivwObj.objects["ds_data_recitem"]);
  4267. gProfCal = true;
  4268. }
  4269. /****************************************************************************************
  4270. * Function : lf_getImgData
  4271. * Description : 이미지 세팅
  4272. * retrun type :
  4273. * Creator :
  4274. ****************************************************************************************/
  4275. function lf_getImgData()
  4276. {
  4277. var arrTmp = new Array();
  4278. var arrDegnTmp = new Array();
  4279. var degnitemno = "";
  4280. var degnitemcd = "";
  4281. var degnitemlevlcd = "";
  4282. var degnattrval = "";
  4283. var ctrlwidth = "";
  4284. var ctrlheight = "";
  4285. var ctrlid = "";
  4286. var strShape = "";
  4287. var Viewmode = "";
  4288. arrTmp = objExt.findRows(ds_data_recitem, "degnitemkind", "IMG");
  4289. arrDegnTmp = objExt.findRows(ds_data_formdegn, "degnitemkind", "IMG");
  4290. if(arrTmp.length > 0)
  4291. {
  4292. for(var i = 0; i < arrTmp.length; i++) // 이미지조회
  4293. {
  4294. degnitemno = ds_data_recitem.getColumn(arrTmp[i], "degnitemno");
  4295. degnitemcd = ds_data_recitem.getColumn(arrTmp[i], "degnitemcd");
  4296. degnitemlevlcd = ds_data_recitem.getColumn(arrTmp[i], "degnitemlevlcd");
  4297. ctrlid = this.components["IMG_" + degnitemno]; // IMAGE 컨트롤 객체
  4298. if( degnitemlevlcd == "0016651.0000446.0000983" || (ctrlid instanceof ActiveX && !utlf_isNull(ctrlid.SaveJpegBase64())) )
  4299. continue;
  4300. // 의사 서명이미지는 제증명 로직에서 호출, 저장된 이미지 기록정보는 조회없이 저장되있는 정보 세팅
  4301. lf_setSizeImg(ctrlid);
  4302. imgedit = lf_getStyleValue(ds_data_formdegn.lookupExpr("degnitemno=='"+degnitemno+"'", "itemattrval"), "imgedit");
  4303. ds_data_imgelist.clearData();
  4304. ds_data_imgelist.addRow();
  4305. dsf_createDsRow("ds_cond_reqimgdata",
  4306. [{col:"imgecd", val:degnitemcd}]);
  4307. var oParam = new Object();
  4308. oParam.id = "TRMRF01212";
  4309. oParam.service = "formmngtapp.ImgMngt";
  4310. oParam.method = "reqGetImageBinaryData";
  4311. oParam.inds = "req=ds_cond_reqimgdata";
  4312. oParam.outds ="ds_data_imgelist=img";
  4313. oParam.async = false;
  4314. oParam.progress = false;
  4315. tranf_submit(oParam);
  4316. if( !utlf_isNull(ds_data_imgelist.getColumn(0, "imgedata")) )
  4317. {
  4318. if(ctrlid instanceof ActiveX)
  4319. {
  4320. degnattrval = ds_data_formdegn.lookupExpr("degnitemno=='"+degnitemno+"'", "degnattrval");
  4321. if(!utlf_isNull(degnattrval))
  4322. {
  4323. ctrlwidth = lf_getStyleValue(degnattrval, "ctrl.width");
  4324. ctrlheight = lf_getStyleValue(degnattrval, "ctrl.height");
  4325. if(!utlf_isNull(ctrlwidth))
  4326. ctrlid.position.width = parseInt(ctrlwidth.replace("px",""));
  4327. if(!utlf_isNull(ctrlheight))
  4328. ctrlid.position.height = parseInt(ctrlheight.replace("px",""));
  4329. }
  4330. var objImgeData = objExt.encodeBase64(ds_data_imgelist.getColumn(0, "imgedata"));
  4331. ctrlid.LoadImageBase64(objImgeData);
  4332. }
  4333. else if(!utlf_isNull(ctrlid))
  4334. {
  4335. ctrlid.image = ds_data_imgelist.getColumn(0, "imgedata");
  4336. ctrlid.stretch = "fit"; //fixaspectratio
  4337. }
  4338. }
  4339. }
  4340. }
  4341. }
  4342. /****************************************************************************************
  4343. * Function : lf_getStyleValue
  4344. * Description : 컨트롤의 스타일 값 가져오기
  4345. * Argument : 01. attrs : 속성
  4346. * : 02. attrNm : 가저올 속성의 속성명
  4347. * : 03. ctrltype : 컨트롤 타입
  4348. * retrun type :
  4349. * Creator :
  4350. ****************************************************************************************/
  4351. function lf_getStyleValue(attrs, attrNm, ctrltype)
  4352. {
  4353. if(ctrltype != null)
  4354. attrNm = ctrltype + "." + attrNm;
  4355. var arrAttrs = "";
  4356. if(!utlf_isNull(attrs))
  4357. arrAttrs = attrs.split(";");
  4358. for(var i = 0; i < arrAttrs.length; i++)
  4359. {
  4360. var arrAttr = arrAttrs[i].split(":");
  4361. if(arrAttr.length == 0)
  4362. continue;
  4363. //앞뒤 공백제거후 문자열 비교
  4364. if(arrAttr[0].toString().getTrim().toString() == attrNm.toString().getTrim().toString())
  4365. {
  4366. return arrAttr[1];
  4367. }
  4368. }
  4369. return "";
  4370. }
  4371. /****************************************************************************************
  4372. * Function : lf_getObj
  4373. * Description : Obj형태 반환
  4374. * Argument : 01. ivwObj : 대상이 오브젝트
  4375. * retrun type : Obj : 오브젝트 형태
  4376. * Creator :
  4377. ****************************************************************************************/
  4378. function lf_getObj(ivwObj)
  4379. {
  4380. if(utlf_isNull(ivwObj))
  4381. Obj = ivw_base;
  4382. else
  4383. Obj = ivwObj;
  4384. return Obj;
  4385. }
  4386. /****************************************************************************************
  4387. * Function : lf_initGrd
  4388. * Description : 서식 grid 초기화
  4389. * retrun type :
  4390. * Creator :
  4391. ****************************************************************************************/
  4392. function lf_initGrd()
  4393. {
  4394. utlf_addLog("***** lf_initGrd() *****");
  4395. // 디자인정보에 그리드가 있으면 해당 그리드 초기화
  4396. var grdItemRow = ds_data_formdegn.findRowExpr("degnitemkind == 'DGN' || degnitemkind == 'OPN' || degnitemkind == 'GRD' || degnitemkind == 'CCN'");
  4397. var nRowno = "";
  4398. if(grdItemRow != -1)
  4399. {
  4400. var arrGrdRows = new Array();
  4401. var arrGrdKind = ["DGN", "OPN", "GRD", "CCN"];
  4402. for(var i = 0; i < arrGrdKind.length; i++)
  4403. {
  4404. arrGrdRows = objExt.findRows(ds_data_formdegn, "degnitemkind", arrGrdKind[i]);
  4405. utlf_addLog("arrGrdRows : " + arrGrdRows);
  4406. if(arrGrdRows.length > 0)
  4407. {
  4408. for(var j = 0; j < arrGrdRows.length; j++)
  4409. {
  4410. var nRow = arrGrdRows[j];
  4411. var nDegnItemNo = ds_data_formdegn.getColumn(nRow, "degnitemno");
  4412. var nDegnItemLevlCd = ds_data_formdegn.getColumn(nRow, "degnitemlevlcd");
  4413. var DsNm = "ds_data_grd_" + nDegnItemNo;
  4414. utlf_addLog("DsNm : " + DsNm);
  4415. if((arrGrdKind[i]!="DGN"&&arrGrdKind[i]!="OPN")||ds_data_formdegn.getRowCount()<1){
  4416. //누적그리드의 경우 addRow를 실행하지 않는다.
  4417. //gridtype="X"
  4418. //GRD에 대해서만 test중
  4419. var vGrdNm = "GRD_"+nDegnItemNo;
  4420. utlf_addLog(" vGrdNm : " + vGrdNm + " || this.name : " + this.name + " || this.components[vGrdNm] " + this.components[vGrdNm] );
  4421. if(arrGrdKind[i].indexOf("GRD") > -1 && !utlf_isNull(this.components[vGrdNm].gridtype) && this.components[vGrdNm].gridtype == "X")
  4422. {
  4423. //누적그리드
  4424. }
  4425. else if(arrGrdKind[i].indexOf("GRD") > -1 && !utlf_isNull(this.components[vGrdNm].gridtype) && this.components[vGrdNm].gridtype == "T")
  4426. {
  4427. //누적그리드
  4428. }
  4429. else
  4430. {
  4431. nRowno = eval(DsNm).addRow();
  4432. eval(DsNm).rowposition = -1; //2017.04.14 초기화시 포지션 제거
  4433. }
  4434. //nRowno = eval(DsNm).addRow();
  4435. continue;
  4436. }
  4437. var nRowCnt = ds_data_formrec.getRowCount();
  4438. for(var j=0; j<nRowCnt; j++){
  4439. var pid = ds_data_formrec.getColumn(j, "pid");
  4440. var cretno = ds_data_formrec.getColumn(j, "cretno");
  4441. var orddd = ds_data_formrec.getColumn(j, "orddd");
  4442. var orddeptcd = ds_data_formrec.getColumn(j, "orddeptcd");
  4443. var orddrid = ds_data_formrec.getColumn(j, "orddrid");
  4444. var ioflag = ds_data_formrec.getColumn(j, "chosflag");
  4445. utlf_addLog("pid : " + pid + " , cretno : " + cretno + " , orddd : " + orddd + " , orddeptcd : " + orddeptcd + " , orddrid : " + orddrid + " , ioflag : " + ioflag );
  4446. if(arrGrdKind[i]=="DGN"){
  4447. var rtnDiag = lf_setInitDiagComm(eval(arrGrdKind[i]+"_"+nDegnItemNo), pid, cretno, orddd, orddeptcd, orddrid, ioflag);
  4448. }
  4449. if(arrGrdKind[i]=="OPN"){
  4450. var dschdd = "";
  4451. if(ioflag=="I" || ioflag=="E"){
  4452. dschdd = ds_data_paminfo.getColumn(0, "dschdd");
  4453. }
  4454. var rtnOp= lf_setInitOpComm(eval(arrGrdKind[i]+"_"+nDegnItemNo), pid, cretno, orddd, dschdd, orddeptcd, orddrid, ioflag);
  4455. }
  4456. }
  4457. }
  4458. }
  4459. }//obj.onrbuttondown.addHandler(lf_compGrdMenuEvent);
  4460. }
  4461. }
  4462. /****************************************************************************************
  4463. * Argument : 1. objGrid - Grid Object
  4464. * 2. sPid - 환자등록번호
  4465. * 3. sCretno - 환자등록생성번호
  4466. * 4. sOrddd - 진료일 (입원일)
  4467. * 5. sOrddeptcd - 진료과
  4468. * 6. sOrddrid - 진료의 ID
  4469. * 7. sIoflag - 입원/외래 구분
  4470. * 8. sDegnlvcd - 서식항목 식별 코드
  4471. * Description : 초기 진단정보(OCS에 입력된)를 조회하여 세팅.
  4472. ****************************************************************************************/
  4473. function lf_setInitDiagComm(objGrid:Grid, sPid, sCretno, sOrddd, sOrddeptcd, sOrddrid, sIoflag, sDegnlvcd)
  4474. {
  4475. utlf_addLog("***** lf_setInitDiagComm *****");
  4476. var objDS = eval(objGrid.binddataset);
  4477. // 처방코드, 시행일자, 처방명, 처방일자, 상태, E:영상, F:내시경, G:기능, H:핵의학, 판독결과
  4478. dsf_createDsRow("ds_cond_pid", [{col:"cond1", type:"string", size:256, val:sPid},
  4479. {col:"cond2", type:"string", size:256, val:sOrddd},
  4480. {col:"cond3", type:"string", size:256, val:sCretno},
  4481. {col:"cond4", type:"string", size:256, val:sOrddeptcd},
  4482. {col:"cond5", type:"string", size:256, val:sIoflag},
  4483. {col:"cond6", type:"string", size:256, val:sOrddrid}]);
  4484. dsf_createDsRow("ds_data_diagcdlist", [{col:"status" , type:"string", size:256, val:""}]);
  4485. tranf_submit({
  4486. id : "TRMMO00105"
  4487. , service : "prcpmngtapp.PrcpMngt"
  4488. , method : "reqGetPatDiagInfo"
  4489. , inds : "req=ds_cond_pid"
  4490. , outds : "ds_data_diagcdlist=diagcdlist"
  4491. , async : false
  4492. , callback : "cf_TRMMO00105"
  4493. });
  4494. if(arErrorCode.pop("TRMMO00105") > -1){
  4495. // Grid 구성 Item
  4496. var sLangFlag = fGetFormMast("langflag");
  4497. var sFormProgFlag = fGetFormMast("formprogflag");
  4498. var nDiagRowCnt = ds_data_diagcdlist.getRowCount();
  4499. var rtnDiagNm = "";
  4500. for(var i=0; i<nDiagRowCnt; i++)
  4501. {
  4502. var sDiagnm = "";
  4503. if(sLangFlag=="EN"||sFormProgFlag!="PROF"){
  4504. sDiagnm = ds_data_diagcdlist.getColumn(i, "diagengnm");
  4505. }else{
  4506. sDiagnm = ds_data_diagcdlist.getColumn(i, "diaghngnm");
  4507. }
  4508. if(utlf_isNull(sDiagnm)){
  4509. sDiagnm = ds_data_diagcdlist.getColumn(i, "diagengnm");
  4510. }
  4511. var sDiagKindCdFlag = ds_data_diagcdlist.getColumn(i, "diagkindcdflag");
  4512. if(sDiagKindCdFlag == "M"){
  4513. rtnDiagNm = sDiagnm;
  4514. }
  4515. var sDiagcd = ds_data_diagcdlist.getColumn(i, "icd10cd");
  4516. var nCaseExpr = "degnitemlevlcd.toString().indexOf('"+sDegnlvcd+"')>=0&&degnitemcd.toString().indexOf('0000960')>=0&&rectermcd=='"+sDiagcd+"'";
  4517. var nCaseCnt = ds_data_recitem.getCaseCount(nCaseExpr);
  4518. if(nCaseCnt>0){
  4519. continue;
  4520. }
  4521. var nRowno = objDS.addRow();
  4522. // 주부유형
  4523. if(sDiagKindCdFlag=="M"){
  4524. objDS.setColumn(nRowno, "주", 1);
  4525. }
  4526. // R/O
  4527. var sDiagkindcd = ds_data_diagcdlist.getColumn(i, "diagkindcd");
  4528. if(sDiagkindcd=="R"){
  4529. objDS.setColumn(nRowno, "R/O", 1);
  4530. }
  4531. // var sDiagetcflag = ds_data_diagcdlist.getColumn(i, "diagetcflag");
  4532. // if(sDiagetcflag=="Y"){
  4533. // objDS.setColumn(nRowno, "S/P", 1);
  4534. // }
  4535. var sDiagcmtcnts = ds_data_diagcdlist.getColumn(i, "diagcmtcnts");
  4536. // 진단코드, 진단명
  4537. objDS.setColumn(nRowno, "진단코드", sDiagcd);
  4538. objDS.setColumn(nRowno, "진단명" , sDiagnm);
  4539. objDS.setColumn(nRowno, "Comments" , sDiagcmtcnts);
  4540. }
  4541. lf_addRowComm(objGrid, objGrid.name);
  4542. objDS.rowposition = 0;
  4543. }
  4544. var objDs = this.removeChild("ds_cond_pid");
  4545. delete objDs;
  4546. objDs = null;
  4547. return rtnDiagNm;
  4548. }
  4549. function cf_TRMMR01105(sSvcId, nErrorCode, sErrorMsg) {
  4550. arErrorCode.push(sSvcId, nErrorCode);
  4551. }
  4552. /****************************************************************************************
  4553. * Argument : 1. objGrid - Grid Object
  4554. * 2. sPid - 환자등록번호
  4555. * 3. sCretno - 환자등록생성번호
  4556. * 4. sOrddd - 진료일 (입원일)
  4557. * 5. sOrddeptcd - 진료과
  4558. * 6. sOrddrid - 진료의 ID
  4559. * 7. sIoflag - 입원/외래 구분
  4560. * 8. sDegnlvcd - 서식항목 식별 코드
  4561. * Description : 초기 수술정보(OCS에 입력된)를 조회하여 세팅.
  4562. ****************************************************************************************/
  4563. function lf_setInitOpComm(objGrid:Grid, sPid, sCretno, sOrddd, sDschdd, sOrddeptcd, sOrddrid, sIoflag, sDegnlvcd)
  4564. {
  4565. var operation = sysf_getGlobalVariable("operation"); //수술정보 가져옴
  4566. if(!utlf_isNull(operation)){
  4567. dsf_createDs("ds_data_operation");
  4568. //ds_data_operation.loadCSV(operation); //수술정보 가져옴
  4569. dsf_setCSVToDs("ds_data_operation", operation);
  4570. }
  4571. var sOprsrvno = ""; //수술예약번호
  4572. if(!utlf_isNull(operation)){
  4573. sOprsrvno = ds_data_operation.getColumn(0, "oprsrvno");
  4574. }
  4575. var objDS = eval(objGrid.binddataset);
  4576. // 처방코드, 시행일자, 처방명, 처방일자, 상태, E:영상, F:내시경, G:기능, H:핵의학, 판독결과
  4577. dsf_createDsRow("ds_cond_pid", [{col:"pid", type:"string", size:256, val:sPid},
  4578. {col:"orddd", type:"string", size:256, val:sOrddd},
  4579. {col:"cretno", type:"string", size:256, val:sCretno},
  4580. {col:"dschdd", type:"string", size:256, val:sDschdd},
  4581. {col:"ordtype", type:"string", size:256, val:sIoflag},
  4582. {col:"orddeptcd", type:"string", size:256, val:sOrddeptcd},
  4583. {col:"srchmode", type:"string", size:256, val:""},
  4584. {col:"oprsrvno", type:"string", size:256, val:""}]);
  4585. var sFormProgFlag = fGetFormMast("formprogflag");
  4586. //조회조건 opr : 환자 원무정보기준, dr : 수술예약번호 + pid
  4587. if(!utlf_isNull(sOprsrvno)){
  4588. ds_cond_pid.setColumn(0, "srchmode", "dr");
  4589. ds_cond_pid.setColumn(0, "oprsrvno", utlf_transNullToEmpty(sOprsrvno)); //oprsevno
  4590. } else {
  4591. if(sFormProgFlag=="PROF"){
  4592. ds_cond_pid.setColumn(0, "srchmode", "pat");
  4593. } else {
  4594. ds_cond_pid.setColumn(0, "srchmode", "opr");
  4595. }
  4596. }
  4597. dsf_createDsRow("ds_data_opcdlist", [{col:"status" , type:"string", size:256, val:""}]);
  4598. tranf_submit({
  4599. id : "TRMRF04301"
  4600. , service : "formmngtapp.FormIfMngt"
  4601. , method : "reqGetOprList"
  4602. , inds : "req=ds_cond_pid"
  4603. , outds : "ds_data_opcdlist=selectoplist"
  4604. , async : false
  4605. });
  4606. if(ErrorCode==0){
  4607. // Grid 구성 Item
  4608. var sLangFlag = fGetFormMast("langflag");
  4609. var nOpRowCnt = ds_data_opcdlist.getRowCount();
  4610. var rtnOpNm = "";
  4611. for(var i=0; i<nOpRowCnt; i++)
  4612. {
  4613. var sOpnm = "";
  4614. if(sLangFlag=="EN"||sFormProgFlag!="PROF"){
  4615. sOpnm = ds_data_opcdlist.getColumn(i, "opengnm");
  4616. }else{
  4617. sOpnm = ds_data_opcdlist.getColumn(i, "ophngnm");
  4618. }
  4619. if(utlf_isNull(sOpnm)){
  4620. sOpnm = ds_data_opcdlist.getColumn(i, "opengnm");
  4621. }
  4622. rtnOpNm = sOpnm;
  4623. var sOpcd = ds_data_opcdlist.getColumn(i, "opcd");
  4624. var nCaseExpr = "degnitemlevlcd.toString().indexOf('"+sDegnlvcd+"')>=0&&degnitemcd.toString().indexOf('0000933')>=0&&rectermcd=='"+sOpcd+"'";
  4625. var nCaseCnt = ds_data_recitem.getCaseCount(nCaseExpr);
  4626. if(nCaseCnt>0){
  4627. continue;
  4628. }
  4629. var nRowno = objDS.addRow();
  4630. var sOpcmtcnts = ds_data_opcdlist.getColumn(i, "reccnts");
  4631. // 진단코드, 진단명
  4632. objDS.setColumn(nRowno, "수술코드", sOpcd);
  4633. objDS.setColumn(nRowno, "수술명" , sOpnm);
  4634. objDS.setColumn(nRowno, "Comments" , sOpcmtcnts);
  4635. }
  4636. lf_addRowComm(objGrid, objGrid.name);
  4637. objDS.rowposition = 0;
  4638. }
  4639. return rtnOpNm;
  4640. }
  4641. /****************************************************************************************
  4642. * Function : lf_setRecItemDS
  4643. * Description : 기록 데이터를 itemvalue DS에 매핑한다. 단, GRD만 recitem에 곧바로 세팅
  4644. * Argument : 01. ColId : itemvalue DS의 컬럼명(컨트롤명)
  4645. * : 02. ivwObj : 대상이 되는 div
  4646. * : 03. formType : 일반서식 여부
  4647. * : 04. status : 신규/ 기록 오픈 여부
  4648. * retrun type :
  4649. * Creator :
  4650. ****************************************************************************************/
  4651. function lf_setRecItemDS(ColId, ivwObj, formType, status)
  4652. {
  4653. utlf_addLog("***** lf_setRecItemDS("+ColId+", "+ivwObj.name+", "+formType+", "+status+") *****");
  4654. var orgColId;
  4655. var StrtIndx = ColId.indexOf("_");
  4656. var ColNo = "";
  4657. var ColDegnKind = "";
  4658. var ColFstlevlitemcd = "";
  4659. var nRow = "";
  4660. var nVal = "";
  4661. var nRectermnm = "";
  4662. var sTermnmRow = "";
  4663. var nTxt = "";
  4664. var Colextn = "";
  4665. var formcd = "";
  4666. var arrTemp = new Array();
  4667. var ObjRecDS = null; // 저장된 기록데이터가 있는 obj
  4668. var Obj = lf_getObj(ivwObj); // 저장된 기록정보가 세팅될 div obj
  4669. var comp;
  4670. //utlf_addLog(" ColId : " + ColId + " || StrtIndx " + StrtIndx );
  4671. if( formType == "acmlForm" ){
  4672. ObjRecDS = parent.ds_data_acmldata;
  4673. }
  4674. else if( ivwObj.name != "ivw_base" && formType != "genForm" && status != "C")
  4675. {
  4676. if(fGetFormMast("srcformcd") == "0000000677" || fGetFormMast("cnstformyn") == "Y")
  4677. ObjRecDS = parent.parent.parent.parent.parent.ds_data_recitem;
  4678. else if(formType == "innerRec") // 공통 서식내부에서 recitem을 가지고 있는 경우
  4679. ObjRecDS = parent.parent.ds_main_extninfo_recitem;
  4680. else
  4681. ObjRecDS = parent.parent.parent.ds_data_recitem;
  4682. }
  4683. else if( (ivwObj.name == "ivw_base" || formType == "genForm") && status != "C")
  4684. {
  4685. ObjRecDS = parent.ds_data_recitem; //parent.parent
  4686. }
  4687. else if(status == "C") // 신규로딩시 데이터 세팅을 위한 recitem정보는 서식내에 있음
  4688. ObjRecDS = this.ds_data_recitem;
  4689. formcd = this.ds_data_recitem.getColumn(0, "formcd");
  4690. // sysf_trace(" ColId : " + ColId + " || StrtIndx " + StrtIndx + " || ObjRecDS.name : " + ObjRecDS.name + " || formcd : " + formcd);
  4691. if(StrtIndx != -1)
  4692. {
  4693. orgColId = ColId;
  4694. if(ColId.indexOf("EXTN") == -1) // 확장아이템 컬럼이 아니면
  4695. {
  4696. ColNo = ColId.substr(StrtIndx + 1);
  4697. ColDegnKind = ColId.substr(0, StrtIndx);
  4698. /// 컨설트 관련 수정
  4699. //if( ivwObj.name != "ivw_base" ){
  4700. if( formcd == "0000000005" ){ // 자유서식 일경우 조건 변경
  4701. ColFstlevlitemcd = (ivwObj.name).split("_")[1];
  4702. }
  4703. if( utlf_isNull(ColFstlevlitemcd) )
  4704. nRow = ObjRecDS.findRowExpr("degnitemno == '"+ ColNo +"' && degnitemkind == '"+ ColDegnKind +"' && formcd == '"+ formcd +"'");
  4705. else
  4706. nRow = ObjRecDS.findRowExpr("degnitemno == '"+ ColNo +"' && degnitemkind == '"+ ColDegnKind +"' && formcd == '"+ formcd +"' && fstlevlitemcd == '"+ ColFstlevlitemcd +"'");
  4707. // nRow = ObjRecDS.findRowExpr("degnitemno == '"+ ColNo +"' && degnitemkind == '"+ ColDegnKind +"' && formcd == '"+ formcd +"'");
  4708. if(ColDegnKind == "MTX" || ColDegnKind == "STX" || ColDegnKind == "CAL" || ColDegnKind == "MSK")
  4709. {
  4710. nVal = utlf_transEmptyToNull(ObjRecDS.getColumn(nRow, "reccnts"));
  4711. // Component 존재유무 체크
  4712. // 20151014 Calendar Component Value Change! TF Val : "9999-01-01" XP Val : 99990101
  4713. if( Obj.components[ColId] != null ){
  4714. if( !utlf_isNull(eval(ColId).userMask) && eval(ColId).userMask == "include" && eval(ColId) instanceof Calendar && !utlf_isNull(nVal) ){
  4715. if( nVal.indexOf("-") > -1 ){
  4716. nVal = nVal.replace(/-/g,"");
  4717. }
  4718. }
  4719. }else{
  4720. utlf_addLog("기록 데이터를 itemvalue DS에 매핑 시 Component " + ColId + " 가 존재하지 않습니다.");
  4721. }
  4722. // sysf_trace("nRow : " + nRow + " || nVal : " + nVal);
  4723. }
  4724. else if(ColDegnKind == "CMB" || ColDegnKind == "CHK" || ColDegnKind == "RDO" || ColDegnKind == "BOL" || ColDegnKind == "SSL")
  4725. {
  4726. nVal = ObjRecDS.getColumn(nRow, "rectermcd");
  4727. var degnitemno = ColId.replace(ColDegnKind,"");
  4728. if(ColDegnKind == "CHK")
  4729. {
  4730. // 컴포짓에 value 세팅하는 함수, CHK는 내부적으로
  4731. lf_setSelCtrl(ColId, "", ObjRecDS);
  4732. }
  4733. else if(!utlf_isNull(nVal))
  4734. {
  4735. nRectermnm = ObjRecDS.getColumn(nRow, "rectermnm");
  4736. sTermnmRow = Obj.ds_data_recitem.findRowExpr("degnitemno == '"+ ColNo +"' && degnitemkind == '"+ ColDegnKind +"' && formcd == '"+ formcd +"'");
  4737. // Recitem DS에 rectermnm 세팅
  4738. Obj.ds_data_recitem.setColumn(sTermnmRow, "rectermnm", nRectermnm);
  4739. if( (ColDegnKind == "RDO") && !utlf_isNull(nVal) )
  4740. {
  4741. // 컴포짓에 value 세팅하는 함수
  4742. lf_setSelCtrl(ColDegnKind+degnitemno, nVal);
  4743. var nDegnitempnt = ObjRecDS.getColumn(nRow, "rowno");
  4744. if( !utlf_isNull(nDegnitempnt) ){
  4745. Obj.ds_data_recitem.setColumn(sTermnmRow, "rowno", nDegnitempnt);
  4746. }
  4747. }
  4748. }
  4749. }
  4750. else if(ColDegnKind == "SSU") // MSL의 sub SSU들
  4751. {
  4752. // Component 존재유무 체크
  4753. if( Obj.components[ColId] != null ){
  4754. nRow = ObjRecDS.findRowExpr("degnitemno == '"+ eval(ColId).supdegnitemno +"' && degnitemkind == 'MSL' && formcd == '"+ formcd +"' && colno == '"+ eval(ColId).colno +"'");
  4755. nVal = ObjRecDS.getColumn(nRow, "rectermcd");
  4756. if(!utlf_isNull(nVal))
  4757. {
  4758. eval(ColId).value = ObjRecDS.getColumn(nRow, "rectermcd");
  4759. // nRectermnm = ObjRecDS.ds_data_recitem.getColumn(nRow, "rectermnm");
  4760. //
  4761. // Obj.ds_data_recitem.setColumn(nRow, "rectermnm", nRectermnm);
  4762. }
  4763. }else{
  4764. utlf_addLog("기록 데이터를 itemvalue DS에 매핑 시 Component " + ColId + " 가 존재하지 않습니다.");
  4765. }
  4766. }
  4767. else if(ColDegnKind == "GRD" || ColDegnKind == "GSU") // GRD는 itemvalue가 아닌 GRD에 매핑된 DS에 값 매핑
  4768. {
  4769. lf_setGrdDS(ColId, ObjRecDS, Obj);
  4770. }
  4771. else if(ColDegnKind == "IMG")
  4772. {
  4773. var recImge = new Buffer(ObjRecDS.getColumn(nRow, "recimge"));
  4774. var srcImge = new Buffer(ObjRecDS.getColumn(nRow, "srcimge"));
  4775. var nSrcImgeRow = Obj.ds_data_recitem.findRowExpr("degnitemno == '"+ ColNo +"' && degnitemkind == '"+ ColDegnKind +"' && formcd == '"+ formcd +"'");
  4776. if( nSrcImgeRow > -1 && recImge.length > 0 && srcImge.length > 0 ){//srcImge.isEmpty()
  4777. // Recitem DS에 srcimge 세팅
  4778. Obj.ds_data_recitem.setColumn(nSrcImgeRow, "srcimge", ObjRecDS.getColumn(nRow, "srcimge"));
  4779. }
  4780. }
  4781. }
  4782. else if(ColId.indexOf("EXTN") != -1) // 확장 아이템 컬럼이면 select 컨트롤의 row에 reccnts 세팅
  4783. {
  4784. Colextn = ColId.replace("_EXTN", "");
  4785. ColNo = Colextn.substr(StrtIndx + 1);
  4786. ColDegnKind = Colextn.substr(0, StrtIndx);
  4787. if(ColDegnKind == "SSU")
  4788. {
  4789. nRow = ObjRecDS.findRowExpr("degnitemno == '"+ eval(Colextn).supdegnitemno +"' && degnitemkind == 'MSL' && formcd == '"+ formcd +"' && colno == '"+ eval(Colextn).colno +"'");
  4790. nVal = ObjRecDS.getColumn(nRow, "reccnts");
  4791. }
  4792. else if(ColDegnKind == "SSL")
  4793. {
  4794. if(utlf_getSearchStringRight(Colextn, "_") > 4) // 한 컴포짓에 두 개 이상의 확장컨트롤이 달린 경우
  4795. {
  4796. Colextn = Colextn.substr(0, utlf_getSearchStringRight(Colextn, "_"));
  4797. ColNo = ColNo.substr(0, utlf_getSearchStringRight(ColNo, "_"));
  4798. }
  4799. var extnId = Obj.binds[orgColId].compid;
  4800. var extnCtrl = Obj.components[extnId];
  4801. var ssuCtrl = Obj.components[extnCtrl.ParentsNo];
  4802. //utlf_addLog(" extnId : " + extnId + " || extnCtrl : " + extnCtrl + " ssuCtrl : " + ssuCtrl + " extnCtrl.ParentsNo : " + extnCtrl.ParentsNo );
  4803. if(ssuCtrl.index != -1)
  4804. {
  4805. nRow = ObjRecDS.findRowExpr("degnitemno == '"+ ColNo +"' && degnitemkind == 'SSL' && formcd == '"+ formcd +"'");
  4806. nVal = ObjRecDS.getColumn(nRow, "reccnts");
  4807. //utlf_addLog(" ColNo : " + ColNo + "|| formcd : " + formcd + " || nRow : " + nRow + " || nVal : " + nVal );
  4808. extnCtrl.value = nVal;
  4809. }
  4810. return;
  4811. }
  4812. else
  4813. {
  4814. nRow = ObjRecDS.findRowExpr("degnitemno == '"+ ColNo +"' && degnitemkind == '"+ ColDegnKind +"' && formcd == '"+ formcd +"'");
  4815. }
  4816. nVal = ObjRecDS.getColumn(nRow, "reccnts");
  4817. }
  4818. Obj.ds_data_itemvalue.setColumn(0, orgColId, nVal);
  4819. }
  4820. }
  4821. /**
  4822. * @desc : 기록아이템 값을 가져온다
  4823. * @id :
  4824. * @event :
  4825. * @return :
  4826. * @authur : 이상현
  4827. */
  4828. function getFormItemValue(degnitemlevlcd)
  4829. {
  4830. utlf_addLog("***** getFormItemValue("+degnitemlevlcd+") MMRCommon *****");
  4831. var itemVal = new ITEMVAL();
  4832. var nRow = ds_data_recitem.findRow("degnitemlevlcd", degnitemlevlcd);
  4833. if( nRow != -1 ){
  4834. itemVal.rectermcd = utlf_transNullToEmpty(ds_data_recitem.getColumn(nRow, "rectermcd"));
  4835. itemVal.rectermnm = utlf_transNullToEmpty(ds_data_recitem.getColumn(nRow, "rectermnm"));
  4836. itemVal.reccnts = utlf_transNullToEmpty(ds_data_recitem.getColumn(nRow, "reccnts"));
  4837. itemVal.recimge = ds_data_recitem.getColumn(nRow, "recimge");
  4838. }
  4839. return itemVal;
  4840. }
  4841. /****************************************************************************************
  4842. * Function : setFormItemValue
  4843. * Description : 기록아이템 값을 셋팅
  4844. * Argument : 01. degnitemlevlcd : 대상 컨트롤 계층코드
  4845. * : 02. itemValvalue : 세팅 할 값 객체
  4846. * : 03. colno
  4847. * retrun type : N/A
  4848. * Creator :
  4849. ****************************************************************************************/
  4850. function setFormItemValue(degnitemlevlcd, value, colno)
  4851. {
  4852. utlf_addLog("***** setFormItemValue("+degnitemlevlcd+", "+value+", "+colno+") EMRCommon *****");
  4853. if( isValidObject("ds_data_itemvalue") ){
  4854. var nRow = ds_data_recitem.findRow("degnitemlevlcd", degnitemlevlcd);
  4855. var degnitemno = "";
  4856. var degnitemkind = "";
  4857. var colId = "";
  4858. if(nRow != -1)
  4859. {
  4860. // 2016.03.23 초기화 수행
  4861. var bRectermcd = false;
  4862. var bReccnts = false;
  4863. if( value.rectermcd == "INI" ){
  4864. bRectermcd = true;
  4865. value.rectermcd = "";
  4866. }
  4867. if( value.reccnts == "INI" ){
  4868. bReccnts = true;
  4869. value.reccnts = "";
  4870. }
  4871. degnitemno = ds_data_recitem.getColumn(nRow, "degnitemno");
  4872. degnitemkind = ds_data_recitem.getColumn(nRow, "degnitemkind");
  4873. if(degnitemkind != "IMG")
  4874. {
  4875. colId = degnitemkind + "_" + degnitemno;
  4876. if(!utlf_isNull(colId))
  4877. {
  4878. if(!utlf_isNull(value.rectermcd) || bRectermcd == true)
  4879. {
  4880. if(colId.indexOf("MSL") == -1)
  4881. {
  4882. ds_data_itemvalue.setColumn(0, colId, value.rectermcd);
  4883. ds_data_recitem.setColumn(nRow, "rectermnm", value.rectermnm);
  4884. if(degnitemkind == "RDO" || degnitemkind == "CHK")
  4885. {
  4886. this.components[degnitemkind + "_" + degnitemno].setData(value.rectermcd);
  4887. }
  4888. if(!utlf_isNull(value.reccnts) || bReccnts == true) // 확장 컨트롤값 세팅
  4889. {
  4890. if( ds_data_itemvalue.getColumnInfo(colId+"_EXTN") != null )
  4891. ds_data_itemvalue.setColumn(0, colId+"_EXTN", value.reccnts);
  4892. else
  4893. utlf_addLog( "setFormItemValue #1: " + colId+"_EXTN 이 존재하지 않습니다.");
  4894. }
  4895. }
  4896. else
  4897. {
  4898. var sFilter = "";
  4899. if( !utlf_isNull(colno) ){
  4900. sFilter = "degnitemlevlcd == '" + degnitemlevlcd + "' && colno == '" + colno + "'";
  4901. }else{
  4902. sFilter = "degnitemlevlcd == '" + degnitemlevlcd + "'";
  4903. }
  4904. nRow = ds_data_recitem.findRowExpr(sFilter);
  4905. degnitemno = ds_data_recitem.getColumn(nRow, "degnitemno");
  4906. var arrTemp = new Array();
  4907. for(var i = 0; i < this.components.length; i++)
  4908. {
  4909. var ctrl = this.components[i];
  4910. var bCtrl = false;
  4911. if( !utlf_isNull(colno) ){
  4912. if( ctrl.colno == colno ){
  4913. bCtrl = true;
  4914. }
  4915. }else{
  4916. if( ctrl.truevalue == value.rectermcd ){
  4917. bCtrl = true;
  4918. }
  4919. }
  4920. if(bCtrl && ctrl.supdegnitemno == degnitemno)
  4921. {
  4922. ctrl.value = value.rectermcd;
  4923. if(!utlf_isNull(value.reccnts) || bReccnts == true) // 확장 컨트롤값 세팅
  4924. {
  4925. ctrl.enable = true;
  4926. if( ds_data_itemvalue.getColumnInfo(ctrl.name+"_EXTN") != null )
  4927. ds_data_itemvalue.setColumn(0, ctrl.name+"_EXTN", value.reccnts);
  4928. else
  4929. utlf_addLog( "setFormItemValue #2: " + ctrl.name+"_EXTN 이 존재하지 않습니다.");
  4930. }
  4931. }
  4932. }
  4933. }
  4934. }
  4935. else if( (!utlf_isNull(value.reccnts) && utlf_isNull(colno) ) || bReccnts == true)
  4936. {
  4937. if( value.reccnts == "noneValue" ){ // reccnts 에 null 값을 넣어야 하는경우 추가
  4938. value.reccnts = "";
  4939. }
  4940. ds_data_itemvalue.setColumn(0, colId, value.reccnts);
  4941. }
  4942. }
  4943. }
  4944. else if(degnitemkind == "IMG")
  4945. ds_data_recitem.setColumn(0, "recimge", value.recimge);
  4946. }
  4947. }else if( isValidObject("ds_data_recitem") ){ // 공통서식 체크로직..
  4948. sysf_trace("::::: setFormItemValue #3 ds_data_recitem 공통서식 값 설정 :::::");
  4949. var nRow = ds_data_recitem.findRow("degnitemlevlcd", degnitemlevlcd);
  4950. if( nRow != -1 ){
  4951. ds_data_recitem.setColumn(nRow, "rectermcd", value.rectermcd);
  4952. ds_data_recitem.setColumn(nRow, "rectermnm", value.rectermnm);
  4953. ds_data_recitem.setColumn(nRow, "recimge", value.recimge);
  4954. ds_data_recitem.setColumn(nRow, "reccnts", value.reccnts);
  4955. }
  4956. }
  4957. }
  4958. /****************************************************************************************
  4959. * Function : lf_setFormItemValue
  4960. * Description : 기록지에 값 세팅해주는 함수
  4961. * Argument : 01. degnitemlevlcd : 대상 컨트롤 계층코드
  4962. * : 02. value : 세팅 할 값 객체
  4963. * retrun type : N/A
  4964. * Creator :
  4965. ****************************************************************************************/
  4966. function lf_setFormItemValue(degnitemlevlcd, value, colno)
  4967. {
  4968. var nRow = ivw_base.ds_data_recitem.findRow("degnitemlevlcd", degnitemlevlcd);
  4969. var degnitemno = "";
  4970. var degnitemkind = "";
  4971. var colId = "";
  4972. if(nRow != -1)
  4973. {
  4974. degnitemno = ivw_base.ds_data_recitem.getColumn(nRow, "degnitemno");
  4975. degnitemkind = ivw_base.ds_data_recitem.getColumn(nRow, "degnitemkind");
  4976. if(degnitemkind != "IMG")
  4977. {
  4978. colId = degnitemkind + "_" + degnitemno;
  4979. if(!utlf_isNull(colId))
  4980. {
  4981. if(!utlf_isNull(value.rectermcd))
  4982. {
  4983. if(colId.indexOf("MSL") == -1)
  4984. {
  4985. ivw_base.ds_data_itemvalue.setColumn(0, colId, value.rectermcd);
  4986. ivw_base.ds_data_recitem.setColumn(nRow, "rectermnm", value.rectermnm);
  4987. if(degnitemkind == "RDO" || degnitemkind == "CHK")
  4988. {
  4989. ivw_base.components[degnitemkind + "_" + degnitemno].setData(value.rectermcd);
  4990. }
  4991. if(!utlf_isNull(value.reccnts)) // 확장 컨트롤값 세팅
  4992. {
  4993. if( ivw_base.ds_data_itemvalue.getColumnInfo(colId+"_EXTN") != null )
  4994. ivw_base.ds_data_itemvalue.setColumn(0, colId+"_EXTN", value.reccnts);
  4995. else
  4996. utlf_addLog( "lf_setFormItemValue #1: " + colId+"_EXTN 이 존재하지 않습니다.");
  4997. }
  4998. }
  4999. else // MSL 컨트롤은 itemvalue DS에 SSU_degnNo 형식으로 매핑돼있어 itemvalue 컬럼 찾아가는 추가로직
  5000. {
  5001. nRow = ivw_base.ds_data_recitem.findRowExpr("degnitemlevlcd == '" + degnitemlevlcd + "' && colno == '" + colno + "'");
  5002. degnitemno = ivw_base.ds_data_recitem.getColumn(nRow, "degnitemno");
  5003. var arrTemp = new Array();
  5004. for(var i = 0; i < ivw_base.components.length; i++)
  5005. {
  5006. var ctrl = ivw_base.components[i];
  5007. if(ctrl.colno == colno && ctrl.supdegnitemno == degnitemno)
  5008. {
  5009. ctrl.value = value.rectermcd;
  5010. if(!utlf_isNull(value.reccnts)) // 확장 컨트롤값 세팅
  5011. {
  5012. ctrl.enable = true;
  5013. if( ivw_base.ds_data_itemvalue.getColumnInfo(ctrl.name+"_EXTN") != null )
  5014. ivw_base.ds_data_itemvalue.setColumn(0, ctrl.name+"_EXTN", value.reccnts);
  5015. else
  5016. utlf_addLog( "lf_setFormItemValue #2: " + ctrl.name+"_EXTN 이 존재하지 않습니다.");
  5017. }
  5018. }
  5019. }
  5020. }
  5021. }
  5022. else if(!utlf_isNull(value.reccnts) && utlf_isNull(colno))
  5023. {
  5024. if( value.reccnts == "noneValue" ){ // reccnts 에 null 값을 넣어야 하는경우 추가
  5025. value.reccnts = "";
  5026. }
  5027. // CAL 연동 데이터 '-' 제거
  5028. if( this.components[colId] != null ){
  5029. if( !utlf_isNull(eval(colId).userMask) && eval(colId).userMask == "include" && eval(colId) instanceof Calendar ){
  5030. if( value.reccnts.indexOf("-") > -1 ){
  5031. value.reccnts = value.reccnts.replace(/-/g,"");
  5032. }
  5033. }
  5034. }
  5035. ivw_base.ds_data_itemvalue.setColumn(0, colId, value.reccnts);
  5036. }
  5037. }
  5038. }
  5039. else if(degnitemkind == "IMG")
  5040. ivw_base.ds_data_recitem.setColumn(0, "recimge", value.recimge);
  5041. }
  5042. }
  5043. /**
  5044. * @desc : 노드셋을 맨위에 집어넣는다.
  5045. strDest : 목적노드
  5046. strSrc : 소스노드
  5047. * @param :
  5048. * @return :
  5049. * @author : 2010.03.30 강지훈
  5050. * @---------------------------------------------------
  5051. */
  5052. function fInsertNodes(strDest, strSrc){
  5053. utlf_addLog("***** fInsertNodes("+strDest+", "+strSrc+") MMRCommon *****");
  5054. // var srcNodeList = instance1.selectNodes(strSrc);
  5055. if(strSrc != null && strSrc.rowcount > 0 ){
  5056. // var destNodeList = instance1.selectNodes(strDest);
  5057. if( strDest == null || strDest.rowcount == 0 ) {
  5058. return false;
  5059. }
  5060. // var pDestNode = destNodeList(0).parentNode;
  5061. // var destLastNodesetName = destNodeList(0).nodeName;
  5062. // var tmpSrcNode;
  5063. for( var a = strSrc.rowcount - 1; a >= 0; a-- ) {
  5064. strDest.insertRow(0);
  5065. strDest.copyRow(0, strSrc, a);
  5066. // pDestNode = instance1.selectSingleNode(strDest).parentNode;
  5067. // tmpSrcNode = srcNodeList.item(a).cloneNode(true);
  5068. // tmpSrcNode.nodeName = destLastNodesetName;
  5069. // model.duplicate(pDestNode, tmpSrcNode, "*[1]");
  5070. }
  5071. }
  5072. }
  5073. /**********************************************************************************
  5074. * Method Name : chkEssentialitem
  5075. * Description : 진료기록에서 서식 저장시 필수입력 아이템 입력 여부를 체크한다.
  5076. * argument : 01. supdegnitemcd
  5077. * return Type :
  5078. * Creator : 서식관련 MMRCommon으로 이동
  5079. **********************************************************************************/
  5080. function chkEssentialitem(supdegnitemcd)
  5081. {
  5082. utlf_addLog("***** chkEssentialitem("+supdegnitemcd+") 필수입력 아이템 입력 여부 체트 EMRCommon -> MMRCommon *****");
  5083. // formdegn 인스턴스에서 essential:true 속성 아이템리스트를 골라낸다.
  5084. var esCnt = ds_data_formdegn.getCaseCount("essnrecyn == 'Y'");
  5085. //2010.11.26 김달현 - 서식 구분
  5086. var formprogflag = ds_data_formmast.getColumn(0, "formprogflag");
  5087. if(esCnt > 0)
  5088. {
  5089. // degnitemlevlcd 를 찾는다.
  5090. var filterStr = "essnrecyn == 'Y'";
  5091. ds_data_formdegn.filter(filterStr);
  5092. // sysf_trace(ds_data_formdegn.saveXML(ds_data_formdegn, "v"));
  5093. // sysf_trace(ds_data_unitformmast.saveXML());
  5094. for(var idx = 0; idx < ds_data_formdegn.getRowCount(); idx++)
  5095. {
  5096. var degnitemno = ds_data_formdegn.getColumn(idx, "degnitemno");
  5097. var degnitemlevlcd = ds_data_formdegn.getColumn(idx, "degnitemlevlcd");
  5098. var degnitemkind = ds_data_formdegn.getColumn(idx, "degnitemkind");
  5099. var degnitemnm = ds_data_formdegn.getColumn(idx, "degnitemnm");
  5100. // var nRow = ds_data_unitformmast.findRow("orgsupdegnitemcd", itemCds[i]);
  5101. // unitformcd = ds_data_unitformmast.getColumn( nRow, "formcd");
  5102. // formdegnseq = ds_data_unitformmast.getColumn( nRow, "formdegnseq");
  5103. // ctrl = lf_getComponentID(formdegnseq, itemCds[i]);
  5104. if ( fGetReadOnlyStat( degnitemno ) ) //현재 disable 상태이면 필수체크 안한다. 2010.04.15, 주희경
  5105. {
  5106. continue;
  5107. }
  5108. if(ds_data_formdegn.getColumnInfo("itemattrval") != null)
  5109. {
  5110. var attr = getStyleValue(ds_data_formdegn.getColumn(idx, "itemattrval"), "essential");
  5111. var recitemNode = null;
  5112. if(attr == "true")
  5113. {
  5114. if (!utlf_isNull(supdegnitemcd)) {
  5115. recitemNode = ds_data_recitem.findRow("degnitemlevlcd", supdegnitemcd + "." + degnitemlevlcd);
  5116. } else {
  5117. //2010.01.17 안치원 - 진단명,수술명 필수입력체크 하지 못하는 오류 수정
  5118. if (degnitemkind == "DGN" || degnitemkind == "OPN") {
  5119. recitemNode = ds_data_recitem.findRow("degnitemlevlcd", degnitemlevlcd);
  5120. } else {
  5121. recitemNode = ds_data_recitem.findRow("degnitemlevlcd", degnitemlevlcd);
  5122. }
  5123. }
  5124. if(recitemNode > -1)
  5125. {
  5126. //2010.01.16 안치원 - MSL 필수입력체크 오류수정
  5127. if(degnitemkind == "MSL")
  5128. {
  5129. var cnt = ds_data_recitem.getCaseCount("degnitemlevlcd == '" + supdegnitemcd + "." + degnitemlevlcd+"' && !utlf_isNull(rectermcd)");
  5130. if(cnt > 0)
  5131. continue;
  5132. }
  5133. else if(degnitemkind == "RDO" || degnitemkind == "CMB" || degnitemkind == "CHK" || degnitemkind == "SSL")
  5134. {
  5135. var rectermcdNode = ds_data_recitem.getColumn(recitemNode, "rectermcd");
  5136. if(!utlf_isNull(rectermcdNode))
  5137. continue;
  5138. }
  5139. else if(degnitemkind == "FRM")
  5140. {
  5141. //2010.01.12 안치원 - MTX의 필수입력시 기본부분서식이 있으면 부분서식을, 없으면 MTX의 입력여부를 검사한다.
  5142. continue;
  5143. }
  5144. //2010.11.26 김달현 - 제증명 서식의 진단필수체크
  5145. else if(formprogflag == "PROF" && degnitemkind == "DGN"){
  5146. var degnitemcd = ds_data_formdegn.getColumn(idx, "degnitemcd");
  5147. var fstlevlitemcd = ds_data_recitem.lookup("degnitemcd", degnitemcd, "fstlevlitemcd");
  5148. var nFindRow = ds_data_recitem.findRowExpr("fstlevlitemcd == '"+fstlevlitemcd+"' && colno = 2");
  5149. var diagrectermcd = ds_data_recitem.getColumn(nFindRow, "rectermcd");//진단코드
  5150. var diagrectermnm = ds_data_recitem.getColumn(nFindRow, "rectermnm");//진단명
  5151. if(utlf_isNull(diagrectermnm)){
  5152. degnitemnm = "진단명";
  5153. }
  5154. //진단코드가 입력된 경우는 진단명까지 입력여부 체크
  5155. if(!utlf_isNull(diagrectermnm)){
  5156. continue;
  5157. }else{
  5158. if(!utlf_isNull(diagrectermcd) && !utlf_isNull(diagrectermnm)){
  5159. continue;
  5160. }
  5161. }
  5162. }
  5163. else if(degnitemkind == "MTX" || degnitemkind == "DGN" || degnitemkind == "OPN")//2010.01.17 안치원 - 진단명,수술명 필수입력체크 하지 못하는 오류 수정
  5164. {
  5165. //2010.01.12 안치원 - MTX의 필수입력시 기본부분서식이 있으면 부분서식을, 없으면 MTX의 입력여부를 검사한다.
  5166. var baseFormCnt = ds_data_formdegn.getCaseCount("supdegnitemno == '"+degnitemno+"' && itemuseflag=='F0'");
  5167. if (baseFormCnt == 0) {
  5168. var recCntsNode = ds_data_recitem.getColumn(recitemNode, "reccnts");
  5169. if(!utlf_isNull(recCntsNode))
  5170. continue;
  5171. } else {
  5172. var degnitemcd = ds_data_formdegn.getColumn(idx, "degnitemcd");
  5173. var recCnt = ds_data_recitem.getCaseCount("fstlevlitemcd=='"+degnitemcd+"'");
  5174. if (recCnt != 0)
  5175. continue;
  5176. }
  5177. }
  5178. else
  5179. {
  5180. var reccntsNode = ds_data_recitem.getColumn(recitemNode, "reccnts");
  5181. if(!utlf_isNull(reccntsNode))
  5182. continue;
  5183. }
  5184. ds_data_formdegn.filter("");
  5185. // 필수 입력 아이템에 포커스를 맞춰준다.
  5186. sysf_messageBox("필수 입력항목(" + degnitemnm + ")이 입력되지", "E007");
  5187. // var ctrlid = degnitemkind + "_" + degnitemno;
  5188. // var ctrl = document.controls(degnitemkind + "_" + degnitemno);
  5189. //
  5190. // model.setFocus(ctrlid);
  5191. return false;
  5192. }
  5193. }
  5194. }
  5195. }
  5196. }
  5197. ds_data_formdegn.filter("");
  5198. return true;
  5199. }
  5200. function lf_chkEssential(ivwObj)
  5201. {
  5202. utlf_addLog("***** lf_chkEssential *****");
  5203. var Obj = lf_getObj(ivwObj);
  5204. var ctrlClass;
  5205. var ctrlObj;
  5206. var ctrlNm;
  5207. var crtlValue = "";
  5208. var degnitemnm;
  5209. for(var i = 0; i < Obj.all.length; i++)
  5210. {
  5211. ctrlClass = Obj.all[i].class;
  5212. if(Obj.all[i].enable == false || Obj.all[i].readonly == true) // 수정 가능 상태일 경우에만 필수 체크 로직 수행
  5213. {
  5214. continue;
  5215. }
  5216. else
  5217. {
  5218. if(!utlf_isNull(ctrlClass) && (ctrlClass.indexOf("_essential") > -1 || ctrlClass.indexOf("_est") > -1) )
  5219. {
  5220. ctrlNm = Obj.all[i].name;
  5221. crtlValue = Obj.all[i].value;
  5222. utlf_addLog("ctrlNm : " + ctrlNm + " || crtlValue : " + crtlValue + " || Obj.all[i].ctrltype : " + Obj.all[i].ctrltype);
  5223. if(fGetFormMast("formprogflag") == "PROG" && Obj.all[i].ctrltype == "extn"){
  5224. continue;
  5225. }
  5226. if(ctrlNm.indexOf("SSU_") == -1 && utlf_isNull(crtlValue))
  5227. {
  5228. var iteminfo = ctrlNm.split("_");
  5229. if(fGetFormMast("formprogflag") == "PROG" ){
  5230. degnitemnm = Obj.ds_data_recitem.lookupExpr("degnitemkind == '" + iteminfo[0] + "' && degnitemno == '" + iteminfo[1] + "'", "degnitemnm");
  5231. }else if(fGetFormMast("formprogflag") != "PROG" && Obj.all[i].ctrltype == "extn" && !utlf_isNull(Obj.all[i].ParentsNo) ){ // BOL EXTN 필수체크
  5232. iteminfo = (Obj.all[i].ParentsNo).split("_");
  5233. degnitemnm = Obj.ds_data_recitem.lookupExpr("degnitemkind == '" + iteminfo[0] + "' && degnitemno == '" + iteminfo[1] + "'", "degnitemnm");
  5234. }else{
  5235. degnitemnm = ds_data_formdegn.lookupExpr("degnitemkind == '" + iteminfo[0] + "' && degnitemno == '" + iteminfo[1] + "'", "degnitemnm");
  5236. }
  5237. utlf_addLog("iteminfo[0] : " + iteminfo[0] + " || iteminfo[1] : " + iteminfo[1] + " || degnitemnm : " + degnitemnm);
  5238. break;
  5239. }
  5240. else if( ctrlNm.indexOf("SSU_") > -1 && (crtlValue == "nonevalue" || utlf_isNull(crtlValue)) ) // SSU
  5241. {
  5242. var supdegnitemno = Obj.all[i].supdegnitemno;
  5243. var mslRows = new Array();
  5244. var degnitemkind = Obj.ds_data_recitem.getColumn( Obj.ds_data_recitem.findRow("degnitemno", supdegnitemno), "degnitemkind");
  5245. if( utlf_isNull(degnitemkind) ) degnitemkind = "MSL";
  5246. Obj.ds_data_recitem.filter("degnitemno == '" + supdegnitemno + "' && degnitemkind == '"+ degnitemkind +"' && (rectermcd != 'nonevalue' && !utlf_isNull(rectermcd)) ");
  5247. if(Obj.ds_data_recitem.rowcount < 1)
  5248. {
  5249. Obj.ds_data_recitem.filter("");
  5250. if(fGetFormMast("formprogflag") == "PROG" ){
  5251. degnitemnm = Obj.ds_data_recitem.lookupExpr("degnitemkind == '"+ degnitemkind +"' && degnitemno == '" + supdegnitemno + "'", "degnitemnm");
  5252. }else{
  5253. degnitemnm = ds_data_formdegn.lookupExpr("degnitemkind == '"+ degnitemkind +"' && degnitemno == '" + supdegnitemno + "'", "degnitemnm");
  5254. }
  5255. // if(utlf_isNull(degnitemnm))
  5256. // {
  5257. // alert(degnitemnm + " 은(는) 필수 입력 입니다.!!");
  5258. // }
  5259. break;
  5260. }
  5261. Obj.ds_data_recitem.filter("");
  5262. }
  5263. }
  5264. }
  5265. }
  5266. if(utlf_isNull(degnitemnm))
  5267. {
  5268. return true;
  5269. }
  5270. else
  5271. {
  5272. alert(degnitemnm + " 은(는) 필수 입력 입니다.");
  5273. return false;
  5274. }
  5275. }
  5276. function lf_getCompNm(columnid, tarObj, tarValue){
  5277. //<BindItem id="CMB_22" compid="CMB_22" propid="value" datasetid="ds_data_itemvalue" columnid="CMB_22"/>
  5278. if( utlf_isNull(tarObj) ) tarObj = this;
  5279. var compNm = null;
  5280. for(var i in tarObj.binds){
  5281. var bindObj = tarObj.binds[i];
  5282. if( bindObj.columnid == columnid ){
  5283. compNm = bindObj.compid;
  5284. if( !utlf_isNull(tarValue) ){
  5285. var objComp = tarObj.components[compNm];
  5286. if( objComp != null && !utlf_isNull(objComp.innerdataset) ){
  5287. if(!((objComp.innerdataset).toString() == "[object Dataset]")){
  5288. var objDs = eval(objComp.innerdataset);
  5289. }else{
  5290. var objDs = objComp.innerdataset;
  5291. }
  5292. var fRow = objDs.findRow(objComp.codecolumn, tarValue);
  5293. if( fRow < 0 )
  5294. continue;
  5295. }
  5296. }
  5297. return compNm;
  5298. }
  5299. }
  5300. return compNm;
  5301. }
  5302. /**
  5303. * @ver : 2007-09-21
  5304. * @desc : 점수계산이 포함된 체크박스나 라디오버튼을 체크할 때 실행되는 이벤트
  5305. * @
  5306. * @by : 이상현
  5307. * @param:
  5308. * @return:
  5309. * @---------------------------------------------------
  5310. */
  5311. var valGrupArr = new Array();
  5312. function lf_fSelectValList(comObj, degnitemno, type)
  5313. {
  5314. utlf_addLog( "lf_fSelectValList("+comObj.name+", "+degnitemno+", "+type+")");
  5315. /*
  5316. 기존 TF fSelectValList 에서의 degnitemno 는 Comonent에 적용되어있는 degnitemno 임.
  5317. XP 에서는 Component이름을 degnitemno 로 생성하였으므로 Component 의 이름으로 확인
  5318. */
  5319. try
  5320. {
  5321. if(type == null)
  5322. type = "RDO";
  5323. var sCd = ds_data_recitem.lookup("degnitemno", degnitemno, "rectermcd");
  5324. if( !utlf_isNull(sCd) && !utlf_isNull(comObj.innerdataset) ){
  5325. if(!((comObj.innerdataset).toString() == "[object Dataset]")){
  5326. var comObjDs = eval(objComp.innerdataset);
  5327. }else{
  5328. var comObjDs = objComp.innerdataset;
  5329. }
  5330. var fRow = comObjDs.findRow("termbasecd", sCd);
  5331. var sNm = comObjDs.getColumn(fRow, "valitemnm");
  5332. var sPnt = comObjDs.getColumn(fRow, "valitempnt");
  5333. }
  5334. if(type == "RDO" || type == "CMB")
  5335. {
  5336. var fRow = ds_data_recitem.findRow("degnitemno", degnitemno);
  5337. utlf_addLog(" CMB fRow : " + fRow);
  5338. ds_data_recitem.setColumn(fRow, "rectermnm", sNm);
  5339. ds_data_recitem.setColumn(fRow, "rowno", sPnt);
  5340. }
  5341. else if(type == "CHK")
  5342. {
  5343. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  5344. // CHK 아이템을 배열로 저장해둠.(체크한 순서에 상관없이 순서대로 저장하기 위함.)
  5345. //
  5346. // formdegn노드의 valgrupcd 를 구한다.
  5347. var valgrupcd = model.getValue(pageInfo.formdegnRef + "[degnitemno='" + degnitemno + "']/valgrupcd");
  5348. var Grupcdlist= "";
  5349. if(valGrupArr[degnitemno] == null)
  5350. {
  5351. valGrupArr[degnitemno] = new Array();
  5352. // 수정모드시 기존에 저장되었던 vallist 코드를 미리 대입해둠.
  5353. if(model.getValue(pageInfo.recItemRef + "[degnitemno='" + degnitemno + "']/rectermnm") != '')
  5354. {
  5355. sCdlist = model.getValue(pageInfo.recItemRef + "[degnitemno='" + degnitemno + "']/rectermcd").split(" ");
  5356. Grupcdlist= findNodeset(model, pageInfo.vallistRef + "[grupcd='" + valgrupcd + "']");
  5357. for(var cdidx = 0; cdidx < sCdlist.length; cdidx++)
  5358. {
  5359. for(var setidx = 0; setidx < Grupcdlist.length; setidx++)
  5360. {
  5361. var valitemNode = Grupcdlist.item(setidx);
  5362. if(sCdlist[cdidx] == valitemNode.selectSingleNode("valcd").text)
  5363. {
  5364. sNm = model.getValue(pageInfo.vallistRef + "[grupcd='" + valgrupcd + "' and valcd='" + valitemNode.selectSingleNode("valcd").text + "']/valitemnm");
  5365. sPnt = model.getValue(pageInfo.vallistRef + "[grupcd='" + valgrupcd + "' and valcd='" + valitemNode.selectSingleNode("valcd").text + "']/valitempnt");
  5366. valGrupArr[degnitemno][setidx] = valitemNode.selectSingleNode("valcd").text + "|" + sNm + "|" + sPnt;
  5367. break;
  5368. }
  5369. }
  5370. }
  5371. }
  5372. }
  5373. // 가장 마지막에 체크된 value 코드를 얻어온다.
  5374. sCdlist = model.getValue(pageInfo.recItemRef + "[degnitemno='" + degnitemno + "']/rectermcd").split(" ");
  5375. sCd = sCdlist[sCdlist.length-1];
  5376. sNm = model.getValue(pageInfo.vallistRef + "[grupcd='" + valgrupcd + "' and valcd='" + sCd + "']/valitemnm");
  5377. sPnt = model.getValue(pageInfo.vallistRef + "[grupcd='" + valgrupcd + "' and valcd='" + sCd + "']/valitempnt");
  5378. Grupcdlist= findNodeset(model, pageInfo.vallistRef + "[grupcd='" + valgrupcd + "']");
  5379. for(var grpidx = 0; grpidx < Grupcdlist.length; grpidx++)
  5380. {
  5381. var valitemNode = Grupcdlist.item(grpidx);
  5382. if(valitemNode.selectSingleNode("valcd").text == sCd)
  5383. {
  5384. if(valGrupArr[degnitemno][grpidx] == null)
  5385. {
  5386. valGrupArr[degnitemno][grpidx] = sCd + "|" + sNm + "|" + sPnt;
  5387. break;
  5388. }
  5389. }
  5390. }
  5391. var nms = "";
  5392. var cds = "";
  5393. var pnts = 0;
  5394. for(var i = 0 ; i < valGrupArr[degnitemno].length; i++)
  5395. {
  5396. var sValue = valGrupArr[degnitemno][i];
  5397. if(sValue != null)
  5398. {
  5399. var cd = sValue.split("|")[0];
  5400. var nm = sValue.split("|")[1];
  5401. var pnt = sValue.split("|")[2];
  5402. if(pnt == "")
  5403. pnt = "0";
  5404. if(nms == "")
  5405. {
  5406. nms += nm;
  5407. cds += cd;
  5408. }
  5409. else
  5410. {
  5411. nms += "▦" + nm;
  5412. cds += " " + cd;
  5413. }
  5414. //pnts += parseInt(pnt);
  5415. if(pnt.isNumber() == true || pnt.isFloat() == true)
  5416. pnts += eval(pnt);
  5417. }
  5418. }
  5419. // CHK 아이템 체크시 순서대로 정렬(백업)
  5420. /*
  5421. var arrCd = sCd.split(" ");
  5422. for(var i = 0 ; i < arrCd.length; i++)
  5423. {
  5424. var cd = arrCd[i];
  5425. var nm = model.getValue(pageInfo.vallistRef + "[valcd='" + cd + "']/valitemnm");
  5426. var pnt = model.getValue(pageInfo.vallistRef + "[valcd='" + cd + "']/valitempnt");
  5427. if(pnt == "")
  5428. pnt = 0;
  5429. if(i == 0)
  5430. nms += nm;
  5431. else
  5432. nms += " " + nm;
  5433. pnts += parseInt(pnt);
  5434. }
  5435. */
  5436. model.setValue(pageInfo.recItemRef + "[degnitemno='" + degnitemno + "']/rectermcd", cds);
  5437. model.setValue(pageInfo.recItemRef + "[degnitemno='" + degnitemno + "']/rectermnm", nms);
  5438. model.setValue(pageInfo.recItemRef + "[degnitemno='" + degnitemno + "']/rowno", pnts);
  5439. }
  5440. else if (type == "MSL")
  5441. {
  5442. var sItemNm = comObj.text
  5443. var supdegnitemno =comObj.supdegnitemno;
  5444. //var extn = getStyleValue(model.getValue(pageInfo.formdegnRef + "[degnitemno='" + degnitemno + "']/itemattrval"), "extn");
  5445. var pnts = 0;
  5446. // start for
  5447. //ds_data_recitem.filter("degnitemno == '" + supdegnitemno + "' && degnitemkind == '" type + "'");
  5448. //for( var i = 0; i < ds_data_recitem.rowcount; i++){
  5449. var subdegnitemno = comObj.name.split("_")[1];
  5450. var rectermcd = comObj.value;
  5451. var extnCtrl = this.components["STX_" + subdegnitemno];
  5452. utlf_addLog(" rectermcd : " + rectermcd );
  5453. if( extnCtrl != null ){
  5454. if(!utlf_isNull(rectermcd) && rectermcd != "nonevalue")
  5455. {
  5456. extnCtrl.enable = true;
  5457. }
  5458. else
  5459. {
  5460. extnCtrl.enable = false;
  5461. }
  5462. }
  5463. var sDefltScr = comObj.degnitempnts
  5464. if(utlf_isNull(sDefltScr))
  5465. sDefltScr = "0";
  5466. if(!utlf_isNull(rectermcd))
  5467. {
  5468. if(sDefltScr.isNumber() == true || sDefltScr.isFloat() == true)
  5469. pnts += eval(sDefltScr);
  5470. }
  5471. utlf_addLog("jw.choe pnts 체크 필요...기존 for문 사라짐... 6681 MMRCommon ");
  5472. if(subdegnitemno == degnitemno)
  5473. {
  5474. var oDs = this.objects["ds_data_recitem"];
  5475. var fRow = oDs.findRowExpr("degnitemno == '" + supdegnitemno + "' && colno == '" + comObj.colno + "'");
  5476. utlf_addLog(" fRow : " + fRow);
  5477. ds_data_recitem.setColumn(fRow, "rectermnm", sItemNm);
  5478. ds_data_recitem.setColumn(fRow, "rowno", sDefltScr);
  5479. }
  5480. // }
  5481. // ds_data_recitem.filter("");
  5482. // end for
  5483. var fRow = ds_data_recitem.findRowExpr("degnitemno == '" + supdegnitemno +"' && and colno == '0'");
  5484. ds_data_recitem.setColumn(fRow, "rowno", pnts);
  5485. }
  5486. else if (type == "IMG")
  5487. {
  5488. var sItemNm = model.getValue(pageInfo.formdegnRef + "[degnitemno='" + degnitemno + "']/degnitemnm");
  5489. var supdegnitemno = model.getValue(pageInfo.formdegnRef + "[degnitemno='" + degnitemno + "']/supdegnitemno");
  5490. var degnitemlevlcd = model.getValue(pageInfo.formdegnRef + "[degnitemno='" + degnitemno + "']/degnitemlevlcd");
  5491. var extn = getStyleValue(model.getValue(pageInfo.formdegnRef + "[degnitemno='" + degnitemno + "']/itemattrval"), "extn");
  5492. var pnts = 0;
  5493. var nodeList = instance1.selectNodes(pageInfo.formdegnRef + "[supdegnitemno = '" + supdegnitemno + "' and degnitemkind = 'ISU']/degnitemno");
  5494. for(var i = 0; i < nodeList.length; i++)
  5495. {
  5496. var subdegnitemno = nodeList.item(i).text;
  5497. var rectermcd = model.getValue(pageInfo.recItemRef + "[degnitemno='" + subdegnitemno + "']/rectermcd");
  5498. if(extn == "visible")
  5499. {
  5500. var extnCtrl = document.controls("STX_" + subdegnitemno);
  5501. if(extnCtrl == null)
  5502. continue;
  5503. if(rectermcd != "")
  5504. {
  5505. extnCtrl.disabled = false;
  5506. }
  5507. else
  5508. {
  5509. extnCtrl.disabled = true;
  5510. }
  5511. }
  5512. // 아이템기본값 항목을 아이템기본값과 아이템점수로 분리
  5513. // 2008.04.16
  5514. // 수정자: 이경희
  5515. /*
  5516. var sDefltVal = model.getValue(pageInfo.formdegnRef + "[degnitemno='" + subdegnitemno + "']/degnitemdefltval");
  5517. if(sDefltVal == "")
  5518. sDefltVal = 0;
  5519. */
  5520. var sDefltScr = model.getValue(pageInfo.formdegnRef + "[degnitemno='" + subdegnitemno + "']/degnitempnts");
  5521. if(sDefltScr == "")
  5522. sDefltScr = "0";
  5523. if(rectermcd != "")
  5524. {
  5525. //pnts += parseInt(sDefltScr);
  5526. if(sDefltScr.isNumber() == true || sDefltScr.isFloat() == true)
  5527. pnts += eval(sDefltScr);
  5528. }
  5529. }
  5530. model.setValue(pageInfo.recItemRef + "[degnitemno='" + degnitemno + "']/rectermnm", sItemNm);
  5531. model.setValue(pageInfo.recItemRef + "[degnitemno='" + supdegnitemno + "']/rowno", pnts);
  5532. }
  5533. else if (type == "SSL")
  5534. {
  5535. // 아이템기본값 항목을 아이템기본값과 아이템점수로 분리
  5536. var sDefltScr = comObj.degnitempnts;
  5537. var comObjDs = this.objects["ds_" + comObj.name];
  5538. var sItemNm = comObjDs.getColumn(0, "valitemnm");
  5539. var supdegnitemno = comObj.supdegnitemno;
  5540. for( var i in components ){
  5541. if( components[i].supdegnitemno == supdegnitemno ){
  5542. var subdegnitemno = components[i].name.split("_")[1];
  5543. utlf_addLog(" subdegnitemno : " + subdegnitemno ) ;
  5544. var extnCtrl = this.components["STX_" + subdegnitemno];
  5545. var unitCtrl = this.components["UNIT_" + subdegnitemno];
  5546. if(extnCtrl == null)
  5547. continue;
  5548. if(degnitemno == subdegnitemno)
  5549. {
  5550. extnCtrl.enable = true;
  5551. extnCtrl.visible = true;
  5552. if(unitCtrl != null)
  5553. unitCtrl.visible = true;
  5554. }
  5555. else
  5556. {
  5557. extnCtrl.visible = false;
  5558. extnCtrl.enable = false;
  5559. //extnCtrl.value = "";
  5560. if(unitCtrl != null)
  5561. unitCtrl.visible = false;
  5562. }
  5563. }
  5564. }
  5565. var nIdx = ds_data_recitem.findRow("degnitemno", supdegnitemno);
  5566. utlf_addLog(" nIdx : " + nIdx );
  5567. ds_data_recitem.setColumn(nIdx, "rectermnm", sItemNm);
  5568. ds_data_recitem.setColumn(nIdx, "rowno", sDefltScr);
  5569. }
  5570. else if (type == "BOL")
  5571. {
  5572. sCd = model.getValue(pageInfo.recItemRef + "[degnitemno = '" + degnitemno + "']/rectermcd");
  5573. var nm = model.getValue(pageInfo.formdegnRef + "[degnitemno = '" + degnitemno + "']/degnitemnm");
  5574. // 아이템기본값 항목을 아이템기본값과 아이템점수로 분리
  5575. // 2008.04.16
  5576. // 수정자: 이경희
  5577. //var pnt = model.getValue(pageInfo.formdegnRef + "[degnitemno = '" + degnitemno + "']/degnitemdefltval");
  5578. var pnt = model.getValue(pageInfo.formdegnRef + "[degnitemno = '" + degnitemno + "']/degnitempnts");
  5579. if(pnt == "")
  5580. pnt = "0";
  5581. model.setValue(pageInfo.recItemRef + "[degnitemno='" + degnitemno + "']/rectermnm", nm);
  5582. model.setValue(pageInfo.recItemRef + "[degnitemno='" + degnitemno + "']/rowno", pnt);
  5583. var extnCtrl = document.controls("STX_" + degnitemno);
  5584. if(extnCtrl != null)
  5585. {
  5586. extnCtrl.disabled = false;
  5587. extnCtrl.attribute("ref") = pageInfo.recItemRef + "[degnitemno='" + degnitemno + "']/reccnts";
  5588. }
  5589. }
  5590. fReCalculate();
  5591. }
  5592. catch(e)
  5593. {
  5594. sysf_catchTrace(e);
  5595. return;
  5596. }
  5597. }
  5598. /****************************************************************************************
  5599. * desc : 오른쪽 마우스 메뉴팝업
  5600. * args : 01. obj menu 적용 object
  5601. 02. formKind
  5602. ****************************************************************************************/
  5603. var lv_rObjId; //팝업 호출id
  5604. var lv_rArrObjInfo;
  5605. function fCompRightMenuInit(obj, formKind)
  5606. {
  5607. utlf_addLog("***** fCompRightMenuInit(obj, formKind) *****");
  5608. if(obj == "[object Grid]")
  5609. {
  5610. obj.onrbuttondown.addHandler(fCompGrdMenuEvent);
  5611. }
  5612. else if(obj == "[object TextArea]")
  5613. {
  5614. obj.usecontextmenu = false;
  5615. obj.onrbuttondown.addHandler(fCompTxtMenuEvent);
  5616. }
  5617. else sysf_trace("Grid,TextArea 만 적용됩니다. 확인바랍니다.");
  5618. }
  5619. /**********************************************************************************
  5620. * Method Name : fCompTxtMenuEvent
  5621. * Description : Text 마우스 메뉴 이벤트
  5622. * argument :
  5623. * return Type :
  5624. * Creator :
  5625. **********************************************************************************/
  5626. function fCompTxtMenuEvent(obj:TextArea, e:MouseEventInfo)
  5627. {
  5628. utlf_addLog("***** fCompTxtMenuEvent(obj:TextArea, e:MouseEventInfo) *****");
  5629. lv_rObjId = obj;
  5630. lv_rArrObjInfo = new Array();
  5631. var objNm = obj.name;
  5632. var sCode = objNm.split("_")[1].substr(0,7);
  5633. this.frmf_setParameter("srcformcd", fGetFormRec("srcformcd"));
  5634. // this.frmf_setParameter("comn_srcFormCd", fGetFormRec("srcformcd"));
  5635. // this.frmf_setParameter("comn_degnitemno", sCode);
  5636. // this.frmf_setParameter("comn_ctrlid", obj.name);
  5637. fCompShowCntxMenu(sCode);
  5638. var nX = system.clientToScreenX(obj, e.clientX);
  5639. var nY = system.clientToScreenY(obj, e.clientY);
  5640. lpopup_cntxnMenu.trackPopup(nX, nY);
  5641. }
  5642. /**********************************************************************************
  5643. * Method Name : fCompGrdMenuEvent
  5644. * Description : Grid 마우스 메뉴 이벤트
  5645. * argument :
  5646. * return Type :
  5647. * Creator :
  5648. **********************************************************************************/
  5649. function fCompGrdMenuEvent(obj:Grid, e:GridMouseEventInfo)
  5650. {
  5651. utlf_addLog("***** fCompGrdMenuEvent(obj:Grid, e:GridMouseEventInfo) *****");
  5652. lv_rObjId = obj;
  5653. lv_rArrObjInfo = new Array();
  5654. var objNm = obj.parent.name;
  5655. var sCode = objNm.split("_")[1].substr(0,7);
  5656. if(e.cell < 0 || e.row < 0) return;
  5657. var sColNm = obj.getCellProperty( "body",e.cell, "text").replace("bind:",""); //컬럼명
  5658. var sDisplayType = obj.getCellProperty( "body",e.cell, "displaytype"); //Grid 출력type
  5659. var objParent = obj.parent;
  5660. var oDs = objParent.objects[lv_rObjId.binddataset];
  5661. //CarePlan
  5662. if(oDs.name == "ds_grid_grd_diaglist") sColNm = "reccnts4";
  5663. //서식주호소
  5664. if(oDs.name == "ds_grid_grd_cclist") sColNm = "rectermnm";
  5665. lv_rArrObjInfo[0] = e.row;
  5666. lv_rArrObjInfo[1] = sColNm;
  5667. lv_rArrObjInfo[2] = oDs.name;
  5668. this.frmf_setParameter("srcformcd", fGetFormRec("srcformcd"));
  5669. this.frmf_setParameter("comn_srcFormCd", fGetFormRec("srcformcd"));
  5670. this.frmf_setParameter("comn_degnitemno", sCode);
  5671. this.frmf_setParameter("comn_ctrlid", obj.name);
  5672. if(sDisplayType == "text" || sDisplayType == "normal")
  5673. {
  5674. if( e.row > -1 && obj.getEditCaret() == null){
  5675. fCompShowCntxMenu(sCode);
  5676. oDs.rowposition = e.row;
  5677. lpopup_cntxnMenu.trackPopup(e.screenX, e.screenY);
  5678. }
  5679. }
  5680. }
  5681. /**********************************************************************************
  5682. * Method Name : CompShowCntxMenu
  5683. * Description : 우클릭 메뉴 설정
  5684. * argument :
  5685. * return Type :
  5686. * Creator :
  5687. **********************************************************************************/
  5688. function fCompShowCntxMenu(itembasecd)
  5689. {
  5690. utlf_addLog("***** fCompShowCntxMenu("+itembasecd+") *****");
  5691. var sSrcFormcd = "";
  5692. var arrMenuInfo = new Array();
  5693. var sReprnm = "";
  5694. if(this.isValidObject("lpopup_cntxnMenu") == true)
  5695. {
  5696. var oRemoveMenu = this.removeChild("lpopup_cntxnMenu");
  5697. oRemoveMenu = null;
  5698. }
  5699. if(lv_rObjId == "[object Grid]")
  5700. {
  5701. //utlf_addLog("parent.parent.name : " + parent.parent.parent.name);
  5702. //sSrcFormcd = parent.parent.fGetFormMast("srcformcd");
  5703. //sSrcFormcd = parent.parent.parent.ds_data_formmast.getColumn(0, "srcformcd");
  5704. //utlf_addLog( " sSrcFormcd : " + sSrcFormcd );
  5705. if( lv_rArrObjInfo[2] == "ds_grid_grd_cclist" ){
  5706. arrMenuInfo[arrMenuInfo.length] = fCompSetMenuInfo("100", "상용구 선택");
  5707. arrMenuInfo[arrMenuInfo.length] = fCompSetMenuInfo("0", "-");
  5708. }
  5709. arrMenuInfo[arrMenuInfo.length] = fCompSetMenuInfo("700", "행 삭제");
  5710. arrMenuInfo[arrMenuInfo.length] = fCompSetMenuInfo("800", "행 추가");
  5711. }
  5712. else if(lv_rObjId == "[object TextArea]")
  5713. {
  5714. //utlf_addLog("parent.parent.name : " + parent.parent.name);
  5715. //sSrcFormcd = parent.parent.fGetFormMast("srcformcd");
  5716. //utlf_addLog( " sSrcFormcd : " + sSrcFormcd );
  5717. arrMenuInfo[arrMenuInfo.length] = fCompSetMenuInfo("100", "상용구 선택");
  5718. arrMenuInfo[arrMenuInfo.length] = fCompSetMenuInfo("0", "-");
  5719. arrMenuInfo[arrMenuInfo.length] = fCompSetMenuInfo("200", "잘라내기 Ctrl+X");
  5720. arrMenuInfo[arrMenuInfo.length] = fCompSetMenuInfo("300", "복사 Ctrl+C");
  5721. arrMenuInfo[arrMenuInfo.length] = fCompSetMenuInfo("400", "붙여넣기 Ctrl+V");
  5722. arrMenuInfo[arrMenuInfo.length] = fCompSetMenuInfo("500", "삭제 Del");
  5723. arrMenuInfo[arrMenuInfo.length] = fCompSetMenuInfo("0", "-");
  5724. arrMenuInfo[arrMenuInfo.length] = fCompSetMenuInfo("600", "모두선택 Ctrl+A");
  5725. }
  5726. frmf_createPopupMenu("lpopup_cntxnMenu", "fCompCntxPopupMenu", arrMenuInfo);
  5727. }
  5728. function fCompSetMenuInfo(sId, sTitle, sComncnts)
  5729. {
  5730. var objColInfo = new Object();
  5731. objColInfo.id = sId;
  5732. objColInfo.level = "0";
  5733. objColInfo.title = sTitle;
  5734. objColInfo.comncnts = sComncnts;
  5735. return objColInfo;
  5736. }
  5737. /****************************************************************************************
  5738. * Components : PopupMenu
  5739. * Components ID : popup_unprepdrlist
  5740. * Event : onmenuclick
  5741. * Argument : 01.obj : Object Event has occurred
  5742. * : 02.e : Event Object
  5743. * Description : Popup Menu Call
  5744. ****************************************************************************************/
  5745. function fCompCntxPopupMenu(obj:PopupMenu, e:MenuClickEventInfo)
  5746. {
  5747. utlf_addLog("***** fCompCntxPopupMenu() *****");
  5748. var sEventID = e.id;
  5749. var oDs;
  5750. var vCD;
  5751. var sData;
  5752. if(lv_rObjId instanceof Grid)
  5753. {
  5754. var objParent = lv_rObjId.parent;
  5755. oDs = objParent.objects[lv_rObjId.binddataset];
  5756. }
  5757. var sObjnm, sCode;
  5758. if(lv_rObjId instanceof Grid||lv_rObjId instanceof Div){
  5759. sObjnm = lv_rObjId.parent.name;
  5760. vCD = sObjnm;
  5761. sCode = sObjnm.split("_")[1];
  5762. }else{
  5763. sObjnm = lv_rObjId.name;
  5764. vCD = sObjnm;
  5765. sCode = sObjnm.split("_")[1];
  5766. }
  5767. //서식적용 팝업 사용시
  5768. if(vCD.split("_")[0] == "tar")
  5769. {
  5770. sData =sCode;
  5771. }
  5772. else
  5773. {
  5774. var vItemNo = vCD.split("_")[1];
  5775. var nRow = this.objects["ds_data_recitem"].findRowExpr("degnitemkind == 'MTX' && degnitemno == '"+vItemNo+"'");
  5776. this.objects["ds_data_recitem"].filter("");
  5777. if(nRow > -1)
  5778. {
  5779. var ItemdRec = this.objects["ds_data_recitem"] .getColumn(nRow, "degnitemlevlcd");
  5780. sData = ItemdRec;
  5781. }
  5782. else
  5783. {
  5784. sData =sCode; //임시로 선언
  5785. }
  5786. }
  5787. var lv_rObjIdName = lv_rObjId.name;
  5788. var sFormProgFlag = fGetFormMast("formprogflag");
  5789. if(lv_rObjIdName.indexOf("MTX") > -1 && sFormProgFlag == "PROG" )
  5790. {
  5791. var formdegnDs:Dataset = new Dataset;
  5792. if( fGetFormRec("srcformcd") == "0000000677" || fGetFormMast("cnstformyn") == "Y" ){
  5793. formdegnDs = parent.parent.parent.parent.objects["ds_data_formdegn"];
  5794. }else{
  5795. formdegnDs = parent.parent.parent.objects["ds_data_formdegn"];
  5796. }
  5797. var degnitemcd = this.objects["ds_data_recitem"].getColumn(0, "formcd");
  5798. var nDegnitemcdCnt = formdegnDs.getCaseCount("degnitemkind =='FRM' && degnitemcd=='"+degnitemcd+"'");
  5799. var nDegnitemcdMo = formdegnDs.findRowExpr("degnitemkind =='FRM' && degnitemcd=='"+degnitemcd+"'");
  5800. var Supdegnitemcd = formdegnDs.getColumn(nDegnitemcdMo, "supdegnitemcd");
  5801. if( nDegnitemcdCnt < 2 ){
  5802. sData = Supdegnitemcd.substring(0,7);
  5803. }else{
  5804. var tmpNm = (utlf_transNullToEmpty(lv_rObjId.parent.name)).split("_")[1];
  5805. sData = tmpNm.substring(0, 7);
  5806. }
  5807. }
  5808. utlf_addLog(" sCode : " + sCode + " || sData : " + sData);
  5809. this.frmf_setParameter("comn_srcFormCd", fGetFormRec("srcformcd"));
  5810. this.frmf_setParameter("comn_degnitemno", sData);
  5811. this.frmf_setParameter("comn_ctrlid", vCD);
  5812. switch(sEventID)
  5813. {
  5814. case "100": selectComnuseMenu(); break;
  5815. case "200": selectCutMenu(); break;
  5816. case "300": selectCopyMenu(); break;
  5817. case "400": selectPasteMenu(); break;
  5818. case "500": selectDeleteMenu(); break;
  5819. case "600": selectSelAllMenu(); break;
  5820. case "700": fCompGrdDelRow(oDs); break;
  5821. case "800": fCompAddRow(oDs); break;
  5822. }
  5823. }
  5824. /**********************************************************************************
  5825. * Method Name : fCompAddRow
  5826. * Description : 행추가
  5827. * argument : 01. obj
  5828. * return Type :
  5829. * Creator :
  5830. **********************************************************************************/
  5831. function fCompAddRow(obj:Dataset)
  5832. {
  5833. utlf_addLog("***** fCompAddRow(obj:Dataset) ******");
  5834. var row = 0;
  5835. var bRtn = true;
  5836. var objParent = lv_rObjId.parent;
  5837. //CarePlan
  5838. if(obj.name == "ds_grid_grd_diaglist")
  5839. {
  5840. if(utlf_isNull(objParent["fAddrow"])) bRtn == false;
  5841. else objParent.fAddrow();
  5842. }
  5843. //서식주호소
  5844. if(obj.name == "ds_grid_grd_cclist")
  5845. {
  5846. if(utlf_isNull(objParent["fAddrow"])) bRtn == false;
  5847. else objParent.fAddrow();
  5848. }
  5849. if(bRtn == false)
  5850. {
  5851. row = obj.addRow();
  5852. }
  5853. }
  5854. /**********************************************************************************
  5855. * Method Name : fCompGrdDelRow
  5856. * Description : 그리드 행삭제
  5857. * argument : 01. obj
  5858. * return Type :
  5859. * Creator :
  5860. **********************************************************************************/
  5861. function fCompGrdDelRow(obj:Dataset)
  5862. {
  5863. utlf_addLog("***** fCompGrdDelRow(obj:Dataset) ******");
  5864. var row = obj.rowposition;
  5865. var bRtn = true;
  5866. var objParent = lv_rObjId.parent;
  5867. //CarePlan
  5868. if(obj.name == "ds_grid_grd_diaglist")
  5869. {
  5870. if(utlf_isNull(objParent["fGrdDelRow"])) bRtn == false;
  5871. else objParent.fGrdDelRow();
  5872. }
  5873. //서식주호소
  5874. if(obj.name == "ds_grid_grd_cclist")
  5875. {
  5876. if(utlf_isNull(objParent["fGrdDelRow"])) bRtn == false;
  5877. else objParent.fGrdDelRow();
  5878. }
  5879. if(bRtn == false)
  5880. {
  5881. obj.deleteRow(row);
  5882. }
  5883. }
  5884. /**********************************************************************************
  5885. * Method Name : fComnFormMtxChanged
  5886. * Description : 공통서식의 MTX정보를 recitem DS에 값을 세팅한다.
  5887. * argument : 01. obj : 대상 컨트롤
  5888. * : 02. recmain
  5889. * return Type :
  5890. * Creator :
  5891. **********************************************************************************/
  5892. function fComnFormMtxChanged(obj, recmain)
  5893. {
  5894. utlf_addLog("***** fComnFormMtxChanged("+obj+", "+recmain+", " + this.name + ") 공통서식의 MTX정보를 recitem DS에 값을 세팅 ******");
  5895. var objPos;
  5896. if(this.name == "ivw_reccnts" && recmain == "Y")
  5897. {
  5898. objPos = parent.parent.parent.parent.ivw_loader.ivw_base;
  5899. }
  5900. else
  5901. {
  5902. objPos = this;
  5903. }
  5904. if(fGetFormMast("formprogflag") == "PROG" || recmain == "Y")
  5905. {
  5906. var objName = obj.name;
  5907. objCd = objName.replace("tar_", "");
  5908. var nRow = objPos.ds_data_recitem.findRowExpr("degnitemcd == '"+ objCd +"' && degnitemkind == 'MTX'");// && degnitemlevlno == '1'");
  5909. if(nRow == -1)
  5910. {
  5911. nRow = ds_temp_mainrecitem.findRowExpr("degnitemcd == '"+ objCd +"' && degnitemkind == 'MTX'");// && degnitemlevlno == '1'");
  5912. if(nRow != -1)
  5913. {
  5914. var indx = objPos.ds_data_recitem.addRow();
  5915. objPos.ds_data_recitem.copyRow(indx, ds_temp_mainrecitem, nRow);
  5916. objPos.ds_data_recitem.setColumn(indx, "reccnts", obj.text);
  5917. }
  5918. }
  5919. else
  5920. {
  5921. objPos.ds_data_recitem.setColumn(nRow, "reccnts", obj.text);
  5922. }
  5923. }
  5924. objPos.ds_data_recitem.filter("");
  5925. }
  5926. /****************************************************************************************
  5927. * Function : lf_setRecData
  5928. * Description : 공통 서식 연동 또는 기록 데이터 초기화
  5929. * Argument : 01. itemCds : 대상이 되는 섹션의 아이템 코드
  5930. * retrun type :
  5931. * Creator :
  5932. ****************************************************************************************/
  5933. function lf_setRecData(gItemCds)
  5934. {
  5935. utlf_addLog("***** lf_setRecData("+gItemCds+") ******");
  5936. utlf_addLog(fGetFormRec("status"));
  5937. // 신규 서식로딩이면 연동정보 세팅 및 기록데이터 초기화
  5938. if(fGetFormRec("status") == "C")
  5939. {
  5940. parent.ds_data_recitem.copyData(ds_temp_mainrecitem); // 기록데이터 초기화
  5941. parent.ds_data_recitem.filter("degnitemkind == 'MTX' && degnitemlevlno == '1'");
  5942. var tmpItemCds = new Array();
  5943. var tmpCnt = 0;
  5944. for(var i = 0; i < parent.ds_data_recitem.rowcount; i++)
  5945. {
  5946. var sFstlevlitemcd = parent.ds_data_recitem.getColumn(i, "fstlevlitemcd");
  5947. var tarObj = ComnFormObj.components["tar_" + sFstlevlitemcd];
  5948. if(!utlf_isNull(tarObj))
  5949. {
  5950. var sValue = utlf_transEmptyToNull(parent.ds_data_recitem.getColumn(i, "reccnts"));
  5951. var nRow = ds_data_recitem.findRowExpr("degnitemkind == 'MTX' && fstlevlitemcd == '"+sFstlevlitemcd+"' && degnitemlevlno == '1'");
  5952. ds_data_recitem.setColumn(nRow, "reccnts", sValue);
  5953. tarObj.value = sValue;
  5954. tmpItemCds[tmpCnt] = sFstlevlitemcd;
  5955. tmpCnt++;
  5956. }
  5957. }
  5958. parent.ds_data_recitem.filter("");
  5959. if( tmpCnt > 0 ){
  5960. lf_setInitHelpData(null, tmpItemCds);
  5961. }
  5962. }
  5963. if(fGetFormRec("status") != "C") // 신규 서식이 아니면 기록데이터 세팅
  5964. {
  5965. var degnitemlevlno = "";
  5966. var fstlevlitemcd = "";
  5967. var degnitemkind = "";
  5968. var degnitemcd = "";
  5969. var degnitemno = "";
  5970. var reccnts = "";
  5971. var recimge = "";
  5972. var srcimge = "";
  5973. var btnObj = "";
  5974. var nRow = "";
  5975. var rowno = "";
  5976. utlf_addLog(fGetFormRec("status") + " || parent.ds_data_rectitem.rowcount : " + parent.ds_data_recitem.rowcount);
  5977. // 1계층 MTX값 세팅, 조회해온 기록값 rowcount 만큼 루프
  5978. for(var i = 0; i < parent.ds_data_recitem.rowcount; i++)
  5979. {
  5980. degnitemlevlno = parent.ds_data_recitem.getColumn(i, "degnitemlevlno");
  5981. fstlevlitemcd = parent.ds_data_recitem.getColumn(i, "fstlevlitemcd");
  5982. degnitemkind = parent.ds_data_recitem.getColumn(i, "degnitemkind");
  5983. degnitemcd = parent.ds_data_recitem.getColumn(i, "degnitemcd");
  5984. degnitemno = parent.ds_data_recitem.getColumn(i, "degnitemno");
  5985. reccnts = parent.ds_data_recitem.getColumn(i, "reccnts");
  5986. recimge = parent.ds_data_recitem.getColumn(i, "recimge");
  5987. srcimge = parent.ds_data_recitem.getColumn(i, "srcimge");
  5988. rowno = parent.ds_data_recitem.getColumn(i, "rowno");
  5989. // 최상위 아이템이고 1계층 MTX 값이 있으면 세팅
  5990. // 부분서식은 각자 onload 시 기록데이터 세팅
  5991. utlf_addLog(" !!!!! degnitemkind : " + degnitemkind + " degnitemno : " + degnitemno + " degnitemcd : " + degnitemcd + " || fstlevlitemcd : " + fstlevlitemcd + " || reccnts : " + reccnts );
  5992. if( (degnitemkind == "FDG" || degnitemkind == "IMG") && !utlf_isNull(recimge) )
  5993. {
  5994. if(degnitemkind == "FDG")
  5995. btnObj = ComnFormObj.components["btn_fmy_" + fstlevlitemcd];
  5996. //else if(degnitemkind == "IMG" && degnitemno >= "100001")
  5997. else if(degnitemkind == "IMG" && !utlf_isNull(rowno))
  5998. btnObj = ComnFormObj.components["btn_imge_" + fstlevlitemcd];
  5999. if( fGetFormMast("srcformcd") == "0000000677" || fGetFormMast("cnstformyn") == "Y"){
  6000. if(degnitemkind == "FDG")
  6001. btnObj = frmf_getComponents("btn_fmy_" + fstlevlitemcd, ComnFormObj)
  6002. else if(degnitemkind == "IMG" && !utlf_isNull(rowno))
  6003. btnObj = frmf_getComponents("btn_imge_" + fstlevlitemcd, ComnFormObj)
  6004. }
  6005. if(!utlf_isNull(btnObj))
  6006. {
  6007. var imgRow = ds_data_recitem.addRow();
  6008. ds_data_recitem.copyRow(imgRow , parent.ds_data_recitem, i);
  6009. lf_setButtonToggleByRecYn(null, btnObj);
  6010. }
  6011. }
  6012. else if( degnitemkind == "STX" && !utlf_isNull(reccnts) && degnitemno == "0" && degnitemcd == "0008458001" ) // 추가기록
  6013. {
  6014. btnObj = ComnFormObj.components["btn_etcrec_" + fstlevlitemcd];
  6015. if( fGetFormMast("srcformcd") == "0000000677" || fGetFormMast("cnstformyn") == "Y" ){
  6016. btnObj = frmf_getComponents("btn_etcrec_" + fstlevlitemcd, ComnFormObj)
  6017. }
  6018. if(!utlf_isNull(btnObj))
  6019. {
  6020. var addRecRow = ds_data_recitem.addRow();
  6021. ds_data_recitem.copyRow(addRecRow , parent.ds_data_recitem, i);
  6022. lf_setButtonToggleByRecYn(null, btnObj);
  6023. }
  6024. }
  6025. else if( fGetFormMast("formcd") == '1000007943' ){ // 최종진단명 요약지 추가
  6026. btnObj = ComnFormObj.components["btn_lastdiag_" + fstlevlitemcd];
  6027. if(!utlf_isNull(btnObj))
  6028. {
  6029. var addRecRow = ds_data_recitem.addRow();
  6030. ds_data_recitem.copyRow(addRecRow , parent.ds_data_recitem, i);
  6031. lf_setButtonToggleByRecYn(null, btnObj);
  6032. }
  6033. }
  6034. else if( !utlf_isNull(reccnts) && degnitemlevlno == "1") //(fstlevlitemcd == degnitemcd) && degnitemlevlno == "1" &&
  6035. {
  6036. nRow = ds_data_recitem.findRowExpr("fstlevlitemcd == '"+ fstlevlitemcd +"' && degnitemcd == '"+ degnitemcd +"' && degnitemkind == 'MTX' && degnitemlevlno == '1'"); // && degnitemlevlno == '1'
  6037. ds_data_recitem.setColumn(nRow, "reccnts", reccnts);
  6038. var tarObj = ComnFormObj.components["tar_" + fstlevlitemcd];
  6039. if(!utlf_isNull(tarObj))
  6040. tarObj.value = reccnts;
  6041. }
  6042. }
  6043. // 부분서식 로드
  6044. //fSetAllLoadUnitForm(gItemCds);
  6045. }
  6046. /*
  6047. if(fGetFormRec("chosflag") == "I" && fGetFormMast("srcformcd") != "0000000677" && fGetFormMast("srcformcd") != "0000000680" && lf_getFormMast("srcformcd") != "0000001596") // 입원환자인 경우 임시저장 disable
  6048. {
  6049. if(fGetFormMast("formprogflag") == "PROG" || fGetFormMast("formprogflag") == "MAIN")
  6050. {
  6051. if(parent.isValidObject("btn_tmpsave"))
  6052. {
  6053. parent.btn_tmpsave.enable = false;
  6054. }
  6055. }
  6056. }
  6057. */
  6058. }
  6059. /****************************************************************************************
  6060. * Function : lf_setItemRecDS
  6061. * Description : itemvalue -> recitem 으로 값 매핑
  6062. * Argument : 01.obj : Object Event has occurred
  6063. * : 02.e : Event Object
  6064. * retrun type :
  6065. * Creator :
  6066. ****************************************************************************************/
  6067. function lf_setItemRecDS(obj:Dataset, e:DSColChangeEventInfo)
  6068. {
  6069. utlf_addLog("***** lf_setItemRecDS(obj:Dataset, e:DSColChangeEventInfo) ******");
  6070. var ColId = obj.getColID(e.col);
  6071. if(!utlf_isNull(ColId))
  6072. {
  6073. lf_setRecDS(ColId);
  6074. }
  6075. }
  6076. /****************************************************************************************
  6077. * Function : lf_setRecDS
  6078. * Description : 기록데이터가 매핑된 itemvalue DS의 value값을 recitem DS에 매핑한다. GRD제외
  6079. * Argument : 01. ColId : 대상 컨트롤
  6080. * retrun type :
  6081. * Creator :
  6082. ****************************************************************************************/
  6083. function lf_setRecDS(ColId)
  6084. {
  6085. utlf_addLog("***** lf_setRecDS("+ColId+") ******");
  6086. utlf_addLog("***** lf_setRecDS("+this.name+") ******");
  6087. var objComp = getFocus(); // 포커스 아이템 obj 전달
  6088. var orgColId = ColId;
  6089. var StrtIndx = ColId.indexOf("_");
  6090. var SecIndx = 0;
  6091. var ColNo = "";
  6092. var ColDegnKind = "";
  6093. var nRow = "";
  6094. var Obj = "";
  6095. var dsNm = "";
  6096. var maskComp;
  6097. var formprogflag = fGetFormMast("formprogflag");
  6098. var sDegnitempnts = "";
  6099. if(StrtIndx != -1)
  6100. {
  6101. if(ColId.indexOf("_EXTN") == -1) // 확장아이템 컬럼이 아니면
  6102. {
  6103. ColNo = ColId.substr(StrtIndx + 1);
  6104. ColDegnKind = ColId.substr(0, StrtIndx);
  6105. nRow = ds_data_recitem.findRowExpr("degnitemno == '"+ ColNo +"' && degnitemkind == '"+ ColDegnKind +"'");
  6106. if(ColDegnKind == "MTX" || ColDegnKind == "STX" || ColDegnKind == "CAL" || ColDegnKind == "MSK")
  6107. {
  6108. maskComp = this.components[ColId];
  6109. if(maskComp instanceof MaskEdit && formprogflag != "PROF")
  6110. {
  6111. // 2019.11.15 Readonly 계산식 적용 시 maskComp.value, maskComp.text 모두 구 값을 return 하는 문제로 recitem 값이 클리어 되지 않는 문제
  6112. if(utlf_isNull(maskComp.value) || utlf_isNull(ds_data_itemvalue.getColumn(0, ColId)))
  6113. {
  6114. ds_data_recitem.setColumn(nRow, "reccnts", ds_data_itemvalue.getColumn(0, ColId));
  6115. }
  6116. else
  6117. {
  6118. ds_data_recitem.setColumn(nRow, "reccnts", maskComp.text);
  6119. }
  6120. // if(!utlf_isNull(maskComp.value))
  6121. // ds_data_recitem.setColumn(nRow, "reccnts", maskComp.text);
  6122. // else
  6123. // ds_data_recitem.setColumn(nRow, "reccnts", ds_data_itemvalue.getColumn(0, ColId));
  6124. }
  6125. else
  6126. {
  6127. ds_data_recitem.setColumn(nRow, "reccnts", ds_data_itemvalue.getColumn(0, ColId));
  6128. }
  6129. //fValidDate()
  6130. try{
  6131. if(formprogflag == "PROF" && ColDegnKind == "CAL" && gProfCal == true){
  6132. var calComp = this.components[ColId];
  6133. if( calComp != null && calComp instanceof Calendar){
  6134. if( calComp.dateformat == "yyyy-MM-dd" ){
  6135. if( !utlf_isNull(ds_data_itemvalue.getColumn(0, ColId)) ){
  6136. var sDiff = utlf_diffDate(ds_data_itemvalue.getColumn(0, ColId), utlf_getCurrentDate());
  6137. //sysf_trace(" sDiff : " + sDiff );
  6138. if( sDiff < 0 ){
  6139. alert("발행일 보다 미래일자를 지정할 수 없습니다.");
  6140. //ds_data_itemvalue.setColumn(0, ColId, utlf_getCurrentDate() );
  6141. //ds_data_recitem.setColumn(nRow, "reccnts", ds_data_itemvalue.getColumn(0, ColId));
  6142. }
  6143. }
  6144. }
  6145. }
  6146. var formcd = fGetFormMast("formcd");
  6147. if(formcd == "0000001113" || formcd == "1100011102"){
  6148. var nDaddyage = utlf_transNullToEmpty(ds_data_itemvalue.getColumn(0, "CAL_58"));
  6149. if( !utlf_isNull(nDaddyage) ){
  6150. var nAge = utlf_getFullAge(nDaddyage);
  6151. //sysf_trace("nDaddyage : " + nDaddyage + " || nAge : " + nAge);
  6152. if( !utlf_isNull(nAge) && nAge > -1 ){
  6153. ds_data_itemvalue.setColumn(0, "STX_6", nAge);
  6154. ds_data_recitem.setColumn(ds_data_recitem.findRowExpr("degnitemno == '6' && degnitemkind == 'STX'"), "reccnts", nAge);
  6155. }
  6156. }
  6157. }
  6158. }
  6159. }catch(e){
  6160. sysf_catchTrace(e);
  6161. }
  6162. }
  6163. else if(ColDegnKind == "RDO")
  6164. {
  6165. ds_data_recitem.setColumn(nRow, "rectermcd", ds_data_itemvalue.getColumn(0, ColId));
  6166. // Component 존재유무 체크
  6167. /*
  6168. if( this.components[ColId] != null ){
  6169. sDegnitempnts = eval(ColId).degnitempnts;
  6170. if( !utlf_isNull(sDegnitempnts) ){
  6171. ds_data_recitem.setColumn(nRow, "rowno", sDegnitempnts);
  6172. utlf_addLog("RDO sDegnitempnts : " + sDegnitempnts );
  6173. }
  6174. }
  6175. */
  6176. // rectermnm 세팅은 컴포짓내의 체크 이벤트에서 세팅 함. lf_setChkVal, lf_setRdoVal
  6177. if( utlf_isNull(ds_data_recitem.getColumn(nRow, "rectermnm")) && !utlf_isNull(objComp) && objComp.name == "grd_medirec") //this.isValidObject("ds_grd_medirec")
  6178. {
  6179. try{
  6180. var medirecDs = frmf_getMainViewer().grp_base.swt_left.case3.ivw_reccnts.objects[objComp.binddataset];
  6181. if( medirecDs != null ){
  6182. var rectermnmRow = medirecDs.findRow("rectermcd", ds_data_itemvalue.getColumn(0, ColId), medirecDs.rowposition);
  6183. var rectermnm = medirecDs.getColumn(rectermnmRow, "rectermnm");
  6184. ds_data_recitem.setColumn(nRow, "rectermnm", rectermnm);
  6185. //ds_data_recitem.setColumn(nRow, "rectermnm", medirecDs.getColumn(medirecDs.rowposition, "rectermnm"));
  6186. }
  6187. }catch(e){}
  6188. }
  6189. }
  6190. else if(ColDegnKind == "CMB" || ColDegnKind == "SSL" )
  6191. {
  6192. var sSSLNo = "";
  6193. ds_data_recitem.setColumn(nRow, "rectermcd", ds_data_itemvalue.getColumn(0, ColId));
  6194. if(!utlf_isNull(objComp) && objComp.name != "combo1" && (!utlf_isNull(objComp.parent) && objComp.parent.name != "rdo_lindx" )) // 기록메인 즐겨찾기 콤보로 서식 선택시 포커스가 콤보로 잡힘 cmb_favform
  6195. {
  6196. utlf_addLog("@@@@@ objComp : " + objComp.name);
  6197. if(objComp.name == "grd_medirec") // 기록메인에서 더블클릭하여 데이터 복사 할 시
  6198. {
  6199. try{
  6200. var medirecDs = frmf_getMainViewer().grp_base.swt_left.case3.ivw_reccnts.objects[objComp.binddataset];
  6201. if( medirecDs != null ){
  6202. // var degnno = ColId.replace(ColDegnKind+"_", ""); // 기록메인
  6203. // ds_data_recitem.setColumn(nRow, "rectermnm", ds_data_medirecinfo.lookup("degnitemno", degnno, "rectermnm"));
  6204. var rectermnm = medirecDs.lookup("rectermcd", ds_data_itemvalue.getColumn(0, ColId), "rectermnm");
  6205. ds_data_recitem.setColumn(nRow, "rectermnm", rectermnm);
  6206. }
  6207. }catch(e){}
  6208. }
  6209. else if(!utlf_isNull(objComp.innerdataset)) // 컨트롤 선택하여 바로 값 반영 할 시
  6210. {
  6211. // 2019.09.24 CASE. 서식연동 할때 사용자가 타 컨트롤에 포커스를 가지고 갈경우 objComp 가 변경되어 SSL 설정로직을 타지 못함.
  6212. // try catch 처리
  6213. try{
  6214. var tmpRectermnm = objComp.innerdataset.lookup("termbasecd", ds_data_itemvalue.getColumn(0, ColId) , "valitemnm");
  6215. if( utlf_isNull(tmpRectermnm) && ColDegnKind == "CMB" && !utlf_isNull(eval(ColId).innerdataset)){
  6216. tmpRectermnm = eval(ColId).innerdataset.lookup("termbasecd", ds_data_itemvalue.getColumn(0, ColId) , "valitemnm");
  6217. sysf_trace("tmpRectermnm is Null : " + tmpRectermnm);
  6218. }
  6219. ds_data_recitem.setColumn(nRow, "rectermnm", tmpRectermnm);
  6220. }catch(e){
  6221. sysf_catchTrace(e);
  6222. }
  6223. }
  6224. if( ColDegnKind == "SSL" ){
  6225. for(var i = 0; i < this.components.length; i++)
  6226. {
  6227. var ctrl = this.components[i];
  6228. if( !utlf_isNull(ctrl.supdegnitemno) && ctrl.supdegnitemno == ColId.replace("SSL_", "") )
  6229. { // SSL의 degnitemno를 갖는 SSU 찾기위한 loop
  6230. if( ctrl.innerdataset.getColumn(0, "termbasecd") == ds_data_itemvalue.getColumn(0, ColId) ){
  6231. // 연동기능으로 인해 값 설정 시 rectermnm 설정되지 않음.
  6232. try{
  6233. if( utlf_isNull(ds_data_recitem.getColumn(nRow, "rectermnm")) || ds_data_recitem.getColumn(nRow, "rectermnm") == "빈이미지" || ds_data_recitem.getColumn(nRow, "rectermnm") == "*빈이미지" ){
  6234. ds_data_recitem.setColumn(nRow, "rectermnm", ctrl.innerdataset.getColumn(0, "valitemnm"));
  6235. }
  6236. }catch(e){
  6237. sysf_catchTrace(e);
  6238. }
  6239. if( !utlf_isNull(ctrl.degnitempnts) ){
  6240. ds_data_recitem.setColumn(nRow, "rowno", ctrl.degnitempnts);
  6241. }
  6242. }
  6243. }
  6244. }
  6245. }
  6246. }
  6247. else
  6248. {
  6249. if(ColDegnKind == "CMB" && !utlf_isNull(eval(ColId).innerdataset))
  6250. {
  6251. ds_data_recitem.setColumn(nRow, "rectermnm", eval(ColId).innerdataset.lookup("termbasecd", ds_data_itemvalue.getColumn(0, ColId) , "valitemnm"));
  6252. }
  6253. else if(ColDegnKind == "SSL")
  6254. {
  6255. for(var i = 0; i < this.components.length; i++)
  6256. {
  6257. var ctrl = this.components[i];
  6258. if( !utlf_isNull(ctrl.supdegnitemno) && ctrl.supdegnitemno == ColId.replace("SSL_", "") )
  6259. { // SSL의 degnitemno를 갖는 SSU 찾기위한 loop
  6260. if( ctrl.innerdataset.getColumn(0, "termbasecd") == ds_data_itemvalue.getColumn(0, ColId) ){
  6261. ds_data_recitem.setColumn(nRow, "rectermnm", ctrl.innerdataset.getColumn(0, "valitemnm"));
  6262. //ds_data_recitem.setColumn(nRow, "rectermnm", ds_data_itemvalue.getColumn(0, ColId));
  6263. if( !utlf_isNull(ctrl.degnitempnts) ){
  6264. ds_data_recitem.setColumn(nRow, "rowno", ctrl.degnitempnts);
  6265. }
  6266. }
  6267. }
  6268. }
  6269. }
  6270. }
  6271. }
  6272. else if(ColDegnKind == "SSU" || ColDegnKind == "BOL")
  6273. {
  6274. // Component 존재유무 체크
  6275. if( this.components[ColId] != null ){
  6276. if(ColDegnKind == "SSU"){
  6277. nRow = ds_data_recitem.findRowExpr("degnitemno == '"+ eval(ColId).supdegnitemno +"' && degnitemkind == 'MSL' && colno == '"+ eval(ColId).colno +"'");
  6278. }
  6279. sDegnitempnts = eval(ColId).degnitempnts;
  6280. if( utlf_isNull(sDegnitempnts) ){
  6281. sDegnitempnts = "0";
  6282. }
  6283. }else{
  6284. if(ColDegnKind == "SSU"){
  6285. nRow = -1;
  6286. }
  6287. utlf_addLog(" lf_setRecDS 기록 데이터를 itemvalue DS에 매핑 시 Component " + ColId + " 가 존재하지 않습니다.");
  6288. }
  6289. var sVal = ds_data_itemvalue.getColumn(0, ColId);
  6290. if(!utlf_isNull(sVal) && sVal != "nonevalue")
  6291. {
  6292. ds_data_recitem.setColumn(nRow, "rectermcd", ds_data_itemvalue.getColumn(0, ColId));
  6293. ds_data_recitem.setColumn(nRow, "rectermnm", eval(ColId).text);
  6294. if( !utlf_isNull(sDegnitempnts) ){
  6295. ds_data_recitem.setColumn(nRow, "rowno", sDegnitempnts);
  6296. utlf_addLog("SSU sDegnitempnts : " + sDegnitempnts );
  6297. }
  6298. }
  6299. else
  6300. {
  6301. ds_data_recitem.setColumn(nRow, "rectermcd", "");
  6302. ds_data_recitem.setColumn(nRow, "rectermnm", "");
  6303. ds_data_recitem.setColumn(nRow, "rowno", "");
  6304. }
  6305. // 전체 SSU 체크하여 0번째 추가
  6306. try{
  6307. if( ColDegnKind == "SSU" && nRow > -1 ){
  6308. var nSupdegnitemno = eval(ColId).supdegnitemno;
  6309. var sDegnitempntsAll = 0;
  6310. var nExistsCnt = ds_data_recitem.getCaseCount("degnitemno == '"+ eval(ColId).supdegnitemno +"' && degnitemkind == 'MSL'");
  6311. if( nExistsCnt > 1 ){
  6312. for(var k = 0; k < this.all.length; k++){
  6313. if(this.all[k] instanceof CheckBox){
  6314. var obj_Chk = this.all[k];
  6315. var obj_supdegnitemno = this.all[k].supdegnitemno;
  6316. if( obj_supdegnitemno == nSupdegnitemno && !utlf_isNull(obj_Chk.value) && obj_Chk.value != "nonevalue"){
  6317. var obj_degnitempnts = this.all[k].degnitempnts;
  6318. if( utlf_isNull(obj_degnitempnts) ) obj_degnitempnts = 0;
  6319. sDegnitempntsAll += parseInt(obj_degnitempnts);
  6320. }
  6321. }
  6322. }
  6323. var nFindRow = ds_data_recitem.findRowExpr("degnitemno == '"+ eval(ColId).supdegnitemno +"' && degnitemkind == 'MSL' && colno == 0");
  6324. ds_data_recitem.setColumn(nFindRow, "rowno", sDegnitempntsAll);
  6325. }
  6326. }
  6327. }catch(e){
  6328. sysf_trace(" SSU 산술식 오류입니다!!!!!!!! ")
  6329. sysf_catchTrace(e);
  6330. }
  6331. }
  6332. else if(ColDegnKind == "CHK")
  6333. {
  6334. }
  6335. }
  6336. else if(ColId.indexOf("_EXTN") != -1) // 확장 아이템 컬럼이있으면 select 컨트롤의 row에 reccnts 세팅
  6337. {
  6338. ColId = ColId.replace("_EXTN", "");
  6339. if(utlf_getSearchStringRight(ColId, "_") > 4) // 한 컴포짓에 두 개 이상의 확장컨트롤이 달린 경우
  6340. {
  6341. ColId = ColId.substr(0, utlf_getSearchStringRight(ColId, "_"));
  6342. }
  6343. ColNo = ColId.substr(StrtIndx + 1);
  6344. ColDegnKind = ColId.substr(0, StrtIndx);
  6345. if(ColDegnKind == "SSU")
  6346. {
  6347. nRow = ds_data_recitem.findRowExpr("colno == '"+ eval(ColId).colno +"' && degnitemno == '"+ eval(ColId).supdegnitemno +"' && degnitemkind == 'MSL'");
  6348. }
  6349. else
  6350. {
  6351. nRow = ds_data_recitem.findRowExpr("degnitemno == '"+ ColNo +"' && degnitemkind == '"+ ColDegnKind +"'");
  6352. }
  6353. if(ds_data_itemvalue.getColumnInfo(ColId) != null)
  6354. {
  6355. ds_data_recitem.setColumn(nRow, "reccnts", ds_data_itemvalue.getColumn(0, orgColId));
  6356. }
  6357. }
  6358. }
  6359. }
  6360. /****************************************************************************************
  6361. * Function : fSetAllLoadUnitForm
  6362. * Description : 전체 또는 저장된 기록값이 있는 부분서식 로드
  6363. * Argument : 01. itemCds : 대상이 되는 섹션의 아이템 코드
  6364. * : 02. AllYn : 전체 또는 기록된 서식만 오픈여부
  6365. * retrun type : N/A
  6366. * Creator :
  6367. ****************************************************************************************/
  6368. function fSetAllLoadUnitForm(itemCds, AllYn)
  6369. {
  6370. utlf_addLog("***** fSetAllLoadUnitForm("+itemCds+", "+AllYn+") ******");
  6371. var nCompCnt = itemCds.length;
  6372. if(AllYn != "ALL")
  6373. {
  6374. for(var i=0; i < ds_data_unitformmast.rowcount; i++)
  6375. {
  6376. var formcd = ds_data_unitformmast.getColumn(i, "formcd");
  6377. var nRow = parent.ds_data_recitem.findRow("formcd", formcd); // 기록데이터가 있는 부분서식들만 펼치기
  6378. if(nRow != -1)
  6379. {
  6380. var formdegnseq = ds_data_unitformmast.getColumn(i, "formdegnseq");
  6381. var mainItemCd = ds_data_unitformmast.getColumn(i, "orgsupdegnitemcd");
  6382. var ivwObj = ComnFormObj.components["ivw_" + mainItemCd];
  6383. loadUnitForm(ivwObj, mainItemCd);
  6384. lf_getComponentID(formdegnseq, mainItemCd);
  6385. }
  6386. else
  6387. {
  6388. continue;
  6389. }
  6390. }
  6391. }
  6392. else // 모든 부분서식 펼치기
  6393. {
  6394. for(var i=0; i < nCompCnt; i++)
  6395. {
  6396. var ivwObj = ComnFormObj.components["ivw_" + itemCds[i]];
  6397. loadUnitForm(ivwObj, itemCds[i]);
  6398. }
  6399. }
  6400. }
  6401. /****************************************************************************************
  6402. * Function : lf_deselectRDO
  6403. * Description : RDO deselet 기능함수 서브 확장 컨트롤 처리
  6404. * Argument : N/A
  6405. * retrun type : N/A
  6406. * Creator :
  6407. ****************************************************************************************/
  6408. function lf_deselectRDO(obj:Radio, e:RadioMouseEventInfo)
  6409. {
  6410. utlf_addLog("***** lf_deselectRDO() *****");
  6411. if(e.itemvalue == obj.value)
  6412. {
  6413. obj.value = ""; // 라디오 체크해제
  6414. //extn 컨트롤 처리
  6415. var vObjName = new String(obj.name);
  6416. var vObjNameSplit = vObjName.split("_");
  6417. var vExtnSTX = "STX_" + vObjNameSplit[1];
  6418. if(this.components[vExtnSTX] !=null && this.components[vExtnSTX]["ctrltype"] !=null && this.components[vExtnSTX]["ctrltype"] == "extn" )
  6419. {
  6420. this.components[vExtnSTX].value = "";
  6421. this.components[vExtnSTX].enable = false;
  6422. }
  6423. //onitemchanged
  6424. //산술식 이벤트가 있을 경우 산술식 실행
  6425. if(obj.onitemchanged != null)
  6426. {
  6427. lf_dsBind(obj);
  6428. }
  6429. }
  6430. }
  6431. /****************************************************************************************
  6432. * Function : lf_dsBind
  6433. * Description : 포커스아이템에 바인드 식 적용
  6434. * retrun type :
  6435. * Creator :
  6436. ****************************************************************************************/
  6437. function lf_dsBind(obj, e)
  6438. {
  6439. utlf_addLog("***** lf_dsBind ("+obj.name+", "+e+") *****");
  6440. var objComp = obj; // 포커스 아이템 obj 전달
  6441. objComp.updateToDataset();
  6442. fReCalculate(obj);
  6443. }
  6444. /****************************************************************************************
  6445. * Function : lf_getRecDS
  6446. * Description : 공통 서식내의 부분서식 recDS 취합
  6447. * Argument : 01. itemCds : 대상이 되는 섹션의 아이템 코드
  6448. * retrun type :
  6449. * Creator :
  6450. ****************************************************************************************/
  6451. function lf_getRecDS(itemCds, mode, tmp)
  6452. {
  6453. utlf_addLog("***** lf_getRecDS("+itemCds+", "+mode+", "+tmp+") *****");
  6454. var savedInfo = new SAVED_INFO();
  6455. var mainItemCd = "";
  6456. var nRow = "";
  6457. var ivwObj;
  6458. var grdRowYn = "";
  6459. var imgRowYn = "";
  6460. var degnitemlevlcd = "";
  6461. var formdegnseq = "";
  6462. var duplRow = "";
  6463. var nPrntRow = "";
  6464. var FDGRowYn = "";
  6465. var calRowYn = "";
  6466. if(utlf_isNull(itemCds))
  6467. return;
  6468. var recitemDs:Dataset = new Dataset;
  6469. if( !utlf_isNull( mode ) ){
  6470. if( !ivw_base.isValidObject(["ds_hidden_recitem"]) ){
  6471. dsf_copyDsList(["ds_hidden_recitem"], ["ds_hidden_recitem"], "replace", ivw_base, ivw_base );
  6472. }
  6473. ivw_base.ds_hidden_recitem.assign(ivw_base.ds_data_recitem);
  6474. recitemDs = ivw_base.objects["ds_hidden_recitem"];
  6475. }else{
  6476. recitemDs = ivw_base.objects["ds_data_recitem"];
  6477. }
  6478. //공통서식의 메인 섹션 아이템을 순회하면서 부분서식을 비교
  6479. for(var i = 0; i < itemCds.length; i++)
  6480. {
  6481. // 메인섹션 아이템을 구한다.
  6482. mainItemCd = itemCds[i];
  6483. nRow = ds_data_unitformmast.findRowExpr("orgsupdegnitemcd == '" + mainItemCd + "'");
  6484. if(nRow != -1)
  6485. {
  6486. // if(utlf_isNull(ComnFormObj))
  6487. // {
  6488. // ComnFormObj = ivw_base.grup_base;
  6489. // }
  6490. // ivwObj = ComnFormObj.components["ivw_" + mainItemCd];
  6491. //////////////////// 컨설트 부분 추가 /////////////////////
  6492. var ivwObj = null;
  6493. if(fGetFormMast("srcformcd") == "0000000677" || fGetFormMast("cnstformyn") == "Y")
  6494. {
  6495. var objGrp;
  6496. var mainItemCdTemp = mainItemCd;
  6497. if(mainItemCd == "0000960001") {
  6498. objGrp = ivw_base.grup_base.grup_cnts.grup_0011449001.grup_extn0011449001;
  6499. mainItemCdTemp = "0011449001";
  6500. } else if(mainItemCd == "0011449001") {
  6501. objGrp = ivw_base.grup_base.grup_cnts.grup_0011449001;
  6502. mainItemCdTemp = "0011449001";
  6503. } else if(mainItemCd == "0001019001") {
  6504. objGrp = ivw_base.grup_base.grup_cnts.grup_0011529001.grup_extn0011529001;
  6505. mainItemCdTemp = "0011529001";
  6506. } else if(mainItemCd == "0011529001") {
  6507. objGrp = ivw_base.grup_base.grup_cnts.grup_0011529001;
  6508. mainItemCdTemp = "0011529001";
  6509. } else objGrp = ivw_base.grup_base;
  6510. ivwObj = objGrp.components["ivw_" + mainItemCd]; // 컨설트
  6511. mainItemCd = mainItemCdTemp;
  6512. } else {
  6513. if(utlf_isNull(ComnFormObj))
  6514. {
  6515. ComnFormObj = ivw_base.grup_base;
  6516. }
  6517. ivwObj = ComnFormObj.components["ivw_" + mainItemCd];
  6518. }
  6519. //////////////////// 컨설트 부분 추가 /////////////////////
  6520. //열려있는 부분서식
  6521. if(!utlf_isNull(ivwObj) && !utlf_isNull(ivwObj.url))
  6522. {
  6523. if (utlf_isNull(tmp))
  6524. {
  6525. //2010-07-27 김달현
  6526. //의뢰상태의 격리병실신청 수정시 보이지 않는 회신내역 필수체크때문에 수정안되는 오류발생(요청번호:9731)
  6527. //HIT강지훈사원이 MMR04900에 ivw.src공백처리로 수정했으나(2010-04-06) 이 부분으로 인해 컨설트 회신시 입력한 내용이 공백으로 저장된 오류발생해 다시 주석처리함.
  6528. //notChkEssnYn 플래그를 추가함.(ivw.attribute)값이 Y일 경우는 필수체크 안함. N으로 설정한 경우만 필수체크함.
  6529. if(ivwObj.notChkEssnYn != "Y" && lf_chkEssential(ivwObj) == false)//필수 입력항목 체크(특수서식)
  6530. {
  6531. return false;
  6532. }
  6533. }
  6534. // 2018.07.10 (#89) 기록 저장시 부분서식 lf_ComnSetItemVal 함수 실행
  6535. try{
  6536. if( utlf_isNull(mode) && utlf_isNull(tmp)){
  6537. var bExistFunc = frmf_findFuncFromForm(ivwObj.url, "lf_ComnSetItemVal");
  6538. if(bExistFunc){
  6539. eval("ivwObj.lf_ComnSetItemVal()");
  6540. }
  6541. }
  6542. }catch(e){ sysf_catchTrace(e); }
  6543. nPrntRow = recitemDs.findRowExpr("fstlevlitemcd == '" + mainItemCd + "' && degnitemlevlno == '1'");
  6544. if(nPrntRow == -1) // 항목 타이틀 세팅.
  6545. {
  6546. var nTmpPrntRow = ivw_base.ds_temp_mainrecitem.findRowExpr("fstlevlitemcd == '" + mainItemCd + "' && degnitemlevlno == '1'");
  6547. if(nTmpPrntRow != -1)
  6548. {
  6549. recitemDs.addRow();
  6550. recitemDs.copyRow(recitemDs.rowcount - 1, ivw_base.ds_temp_mainrecitem, nTmpPrntRow);
  6551. }
  6552. }
  6553. //부분서식이 로딩이 되지 않은 시점.
  6554. // if(!ivwObj.isValidObject("ds_temp_recitem"))
  6555. // {
  6556. // continue;
  6557. // }
  6558. try{
  6559. imgRowYn = ivwObj.ds_data_recitem.findRow("degnitemkind", "IMG");
  6560. }catch(e){
  6561. sysf_catchTrace(e);
  6562. imgRowYn = -1;
  6563. }
  6564. /*
  6565. try{
  6566. calRowYn = ivwObj.ds_data_recitem.findRow("degnitemkind", "CAL");
  6567. }catch(e){
  6568. sysf_catchTrace(e);
  6569. calRowYn = -1;
  6570. }
  6571. */
  6572. for(var k = 0; k < ivwObj.all.length; k++)
  6573. {
  6574. if(imgRowYn > -1 && ivwObj.all[k] instanceof ActiveX) // 이미지 정보 취합
  6575. {
  6576. var obj_Image = ivwObj.all[k];
  6577. var obj_ImageNm = ivwObj.all[k].name;
  6578. var imgDegnNo = obj_ImageNm.replace("IMG_", "");
  6579. var imgShape = obj_Image.GetShapeString();
  6580. var objBlob = "";
  6581. var nRow = ivwObj.ds_data_recitem.findRow("degnitemno", imgDegnNo);
  6582. if( utlf_getStrCount(imgShape,"<") > 2 && utlf_getStrCount(imgShape,">") > 2 ) // 태그
  6583. { // shape정보가 들어가 있으면 변경내용 저장
  6584. ivwObj.ds_data_recitem.setColumn(nRow, "reccnts", obj_Image.GetShapeString());
  6585. objBlob = objExt.decodeBase64(obj_Image.SaveJpegBase64(), "BIN");
  6586. ivwObj.ds_data_recitem.setColumn(nRow, "recimge", objBlob);
  6587. }
  6588. }
  6589. // CAL userMask include, MaskEdit
  6590. if(ivwObj.all[k] instanceof Calendar || ivwObj.all[k] instanceof MaskEdit)
  6591. {
  6592. var calDegnNo;
  6593. var obj_Cal = ivwObj.all[k];
  6594. var obj_CalNm = ivwObj.all[k].name;
  6595. //if(obj_CalNm.indexOf("CAL_") > -1){
  6596. if( !utlf_isNull(obj_Cal.userMask) && obj_Cal.userMask == "include" && !utlf_isNull(obj_Cal.text) ){
  6597. utlf_addLog( obj_CalNm + " 의 현재 Text는 " + obj_Cal.text );
  6598. //calDegnNo = obj_CalNm.replace("CAL_", "");
  6599. calDegnNo = obj_CalNm.split("_")[1];
  6600. var nRow = ivwObj.ds_data_recitem.findRow("degnitemno", calDegnNo);
  6601. var nReccnts = ivwObj.ds_data_recitem.getColumn(nRow, "reccnts");
  6602. if( !utlf_isNull(nReccnts) ){
  6603. utlf_addLog( obj_CalNm + " 의 recitem의 reccnts 값은 " + nReccnts );
  6604. ivwObj.ds_data_recitem.setColumn(nRow, "reccnts", obj_Cal.text);
  6605. }
  6606. }
  6607. //}
  6608. }
  6609. }
  6610. if(ivwObj.isValidObject("ds_temp_recitem"))
  6611. {
  6612. grdRowYn = ivwObj.ds_temp_recitem.findRow("degnitemkind", "GRD");
  6613. if(grdRowYn > -1) // GRD에 매핑된 DS을 recitem DS 세팅(프로그램 서식그리드)
  6614. {
  6615. // 2016.10.04 GRD에 매핑된 recitem 정보 삭제 후 셋팅
  6616. var nDelRows = new Array();
  6617. nDelRows = objExt.findRows(recitemDs, "fstlevlitemcd", mainItemCd);
  6618. for(var m = nDelRows.length-1; m >= 0; m--)
  6619. {
  6620. nPrntRow = recitemDs.findRowExpr("fstlevlitemcd == '" + mainItemCd + "' && degnitemlevlno != '1' && (degnitemkind == 'DGN' || degnitemkind == 'OPN' || degnitemkind == 'GSU')", nDelRows[m]);
  6621. // trace("::::: nDelRows["+ m + "] : " + nDelRows[m] + " || nPrntRow : " + nPrntRow );
  6622. if(nPrntRow != -1){
  6623. recitemDs.deleteRow(nDelRows[m]);
  6624. }
  6625. }
  6626. ivwObj.lf_setGrdRec();
  6627. }
  6628. ivw_base.ds_temp_unitrecitem.clearData();
  6629. ivw_base.ds_temp_unitrecitem.copyData(ivwObj.ds_data_recitem);
  6630. //부분서식 ds에 상위아이템 정보 세팅
  6631. for(var j = (ivw_base.ds_temp_unitrecitem.rowcount-1); j >= 0; j--)
  6632. {
  6633. ivw_base.ds_temp_unitrecitem.setColumn(j, "fstlevlitemcd", mainItemCd);
  6634. ivw_base.ds_temp_unitrecitem.setColumn(j, "degnitemlevlno", parseInt(ivw_base.ds_temp_unitrecitem.getColumn(j, "degnitemlevlno")) + 1);
  6635. degnitemlevlcd = mainItemCd.substr(0, 7)+ '.'+ ivw_base.ds_temp_unitrecitem.getColumn(j, "degnitemlevlcd");
  6636. ivw_base.ds_temp_unitrecitem.setColumn(j, "degnitemlevlcd", degnitemlevlcd);
  6637. duplRow = recitemDs.findRow("degnitemlevlcd", degnitemlevlcd);
  6638. if(duplRow != -1)
  6639. {
  6640. recitemDs.deleteRow(duplRow);
  6641. }
  6642. }
  6643. var nDelRows = new Array();
  6644. nDelRows = objExt.findRows(recitemDs, "fstlevlitemcd", mainItemCd);
  6645. for(var m = nDelRows.length-1; m >= 0; m--)
  6646. {
  6647. nPrntRow = recitemDs.findRowExpr("fstlevlitemcd == '" + mainItemCd + "' && degnitemlevlno == '1'");
  6648. if(nPrntRow != -1)
  6649. {
  6650. continue;
  6651. }
  6652. else
  6653. {
  6654. recitemDs.deleteRow(nDelRows[m]);
  6655. }
  6656. }
  6657. }
  6658. else
  6659. {
  6660. ivw_base.ds_temp_unitrecitem.clearData();
  6661. ivw_base.ds_temp_unitrecitem.copyData(ivwObj.ds_data_recitem);
  6662. formdegnseq = recitemDs.getColumn(nPrntRow, "formdegnseq");
  6663. if(utlf_isNull(formdegnseq))
  6664. {
  6665. formdegnseq = ivw_base.ds_temp_mainrecitem.getColumn(nTmpPrntRow, "formdegnseq");
  6666. }
  6667. //부분서식 ds에 상위아이템 정보 세팅
  6668. for(var j = (ivw_base.ds_temp_unitrecitem.rowcount-1); j >= 0; j--)
  6669. {
  6670. ivw_base.ds_temp_unitrecitem.setColumn(j, "fstlevlitemcd", mainItemCd);
  6671. ivw_base.ds_temp_unitrecitem.setColumn(j, "formdegnseq", formdegnseq);
  6672. ivw_base.ds_temp_unitrecitem.setColumn(j, "degnitemlevlno", parseInt(ivw_base.ds_temp_unitrecitem.getColumn(j, "degnitemlevlno")) + 1);
  6673. degnitemlevlcd = mainItemCd.substr(0, 7)+ '.'+ ivw_base.ds_temp_unitrecitem.getColumn(j, "degnitemlevlcd");
  6674. ivw_base.ds_temp_unitrecitem.setColumn(j, "degnitemlevlcd", degnitemlevlcd);
  6675. duplRow = recitemDs.findRow("degnitemlevlcd", degnitemlevlcd);
  6676. if(duplRow != -1)
  6677. {
  6678. recitemDs.deleteRow(duplRow);
  6679. }
  6680. }
  6681. }
  6682. recitemDs.appendData(ivw_base.ds_temp_unitrecitem, true, false);
  6683. //utlf_addLog(ivw_base.ds_temp_unitrecitem.saveXML());
  6684. }
  6685. }
  6686. }
  6687. utlf_addLog(" :::::::::: lf_getRecDS ::::::::::: ");
  6688. utlf_addLog(recitemDs.saveXML());
  6689. utlf_addLog(" :::::::::: lf_getRecDS ::::::::::: ");
  6690. // 기록정보 없는 row 삭제
  6691. var rtn = lf_delNullRecDS(itemCds, mode, tmp);
  6692. utlf_addLog(" :::::::::: lf_delNullRecDS ::::::::::: ");
  6693. utlf_addLog(recitemDs.saveXML());
  6694. utlf_addLog(" :::::::::: lf_delNullRecDS ::::::::::: ");
  6695. // recitem Head Info Add
  6696. lf_addHeadInfo(itemCds, mode, tmp);
  6697. utlf_addLog(" :::::::::: lf_addHeadInfo ::::::::::: ");
  6698. utlf_addLog(recitemDs.saveXML());
  6699. utlf_addLog(" :::::::::: lf_addHeadInfo ::::::::::: ");
  6700. // row순서 정렬
  6701. lf_sortRow(itemCds, mode);
  6702. utlf_addLog(" :::::::::: lf_sortRow ::::::::::: ");
  6703. utlf_addLog(recitemDs.saveXML());
  6704. utlf_addLog(" :::::::::: lf_sortRow ::::::::::: ");
  6705. return rtn;
  6706. // if (utlf_isNull(tmp))
  6707. // {
  6708. // //필수 입력항목 체크(특수서식)
  6709. // if(chkEssentialitem(itemCds) == false)
  6710. // {
  6711. // return savedInfo;
  6712. // }
  6713. // }
  6714. }
  6715. /****************************************************************************************
  6716. * Function : lf_delNullRecDS
  6717. * Description : 저장될 정보가 없는 DS row는 제외한다.
  6718. * Argument : 01. itemCds : 대상이 되는 섹션의 아이템 코드
  6719. * retrun type :
  6720. * Creator :
  6721. ****************************************************************************************/
  6722. function lf_delNullRecDS(itemCds, mode, tmp)
  6723. {
  6724. utlf_addLog("***** lf_dellNullRecDs 저장될 정보가 없는 DS row는 제외 ***");
  6725. var degnitemkind = "";
  6726. var degnitemlevlcd = "";
  6727. var degnitemcd = "";
  6728. var recCol = "";
  6729. var recVal = "";
  6730. var fstlevlitemcd = "";
  6731. var arrTemp = new Array();
  6732. var reccnts = "";
  6733. var rectermcd = "";
  6734. var itemnm = "";
  6735. var itemattrval = "";
  6736. var ivwObj = ivw_base;
  6737. var recitemDs:Dataset = new Dataset;
  6738. if( !utlf_isNull( mode ) ){
  6739. recitemDs = ivw_base.objects["ds_hidden_recitem"];
  6740. }else{
  6741. recitemDs = ivw_base.objects["ds_data_recitem"];
  6742. }
  6743. for(var i = (recitemDs.rowcount-1); i >= 0; i--)
  6744. {
  6745. //최상위 recitem을 제외한 기록정보 없는 row 삭제
  6746. degnitemlevlcd = recitemDs.getColumn(i, "degnitemlevlcd");
  6747. fstlevlitemcd = recitemDs.getColumn(i, "fstlevlitemcd");
  6748. degnitemkind = recitemDs.getColumn(i, "degnitemkind");
  6749. degnitemcd = recitemDs.getColumn(i, "degnitemcd");
  6750. if( (fstlevlitemcd.substring(0, 7) == degnitemlevlcd) && (fstlevlitemcd == degnitemcd) ) // 최상위 아이템은 현재 formcd 세팅 및 pass
  6751. {
  6752. if(degnitemkind == "MTX" || degnitemkind == "DGN" || degnitemkind == "OPN" || degnitemkind == "GSU" || degnitemkind == "STX") // stx 임시 추가
  6753. {
  6754. recitemDs.setColumn(i, "formcd", fGetFormMast("formcd"));
  6755. continue;
  6756. }
  6757. else
  6758. {
  6759. reccnts = recitemDs.getColumn(i, "reccnts");
  6760. rectermcd = recitemDs.getColumn(i, "rectermcd");
  6761. if(utlf_isNull(reccnts) && utlf_isNull(rectermcd))
  6762. {
  6763. recitemDs.deleteRow(i);
  6764. continue;
  6765. }
  6766. }
  6767. }
  6768. // 2019.12.01 공통기록 저장 시 BTN, IBT, FBT, ABT, HLP, URL 아이템 항목 저장되지 않도록 처리
  6769. var flag = false;
  6770. if(degnitemkind == "MTX" || degnitemkind == "STX" || degnitemkind == "CAL" || degnitemkind == "MSK")
  6771. recCol = "reccnts";
  6772. else if(degnitemkind == "CMB" || degnitemkind == "CHK" || degnitemkind == "RDO" || degnitemkind == "SSL" || degnitemkind == "MSL" || degnitemkind == "BOL")
  6773. recCol = "rectermcd";
  6774. else if(degnitemkind == "IMG" || degnitemkind == "FDG")
  6775. recCol = "recimge";
  6776. else if(degnitemkind == "LBL" || degnitemkind == "RCT" || degnitemkind == "FRM"
  6777. || degnitemkind == "BTN" || degnitemkind == "IBT" || degnitemkind == "FBT" || degnitemkind == "ABT" || degnitemkind == "HLP" || degnitemkind == "URL")
  6778. {
  6779. recitemDs.deleteRow(i);
  6780. continue;
  6781. }
  6782. else
  6783. {
  6784. continue;
  6785. }
  6786. recVal = recitemDs.getColumn(i, recCol);
  6787. if(utlf_isNull(recVal))
  6788. {
  6789. if( degnitemkind == "STX"){ // refitem check
  6790. recVal = recitemDs.getColumn(i, "rectermnm");
  6791. if( !utlf_isNull(recVal) )
  6792. continue;
  6793. }
  6794. var childRow = recitemDs.findRowAs("degnitemlevlcd", degnitemlevlcd, i+1);
  6795. if(childRow != -1)
  6796. {
  6797. // 2016.03.16 CHK 추가
  6798. if((degnitemkind == "MSL" || degnitemkind == "CHK") && (recitemDs.getColumn(childRow, "degnitemlevlcd") == degnitemlevlcd) )
  6799. recitemDs.deleteRow(i);
  6800. else
  6801. continue;
  6802. }
  6803. else
  6804. {
  6805. recitemDs.deleteRow(i);
  6806. }
  6807. }
  6808. }
  6809. // 하위 아이템 기록값, 1계층 1값이 없는 recitem row 삭제
  6810. for(var i = 0; i < itemCds.length; i++)
  6811. {
  6812. recitemDs.filter("degnitemkind != 'FRM'");
  6813. arrTemp = objExt.findRows(recitemDs, "fstlevlitemcd", itemCds[i]);
  6814. reccnts = recitemDs.getColumn(arrTemp[0], "reccnts");
  6815. rectermcd = recitemDs.getColumn(arrTemp[0], "rectermcd");
  6816. if( utlf_isNull(arrTemp) || (arrTemp.length < 2 && (utlf_isNull(reccnts) && utlf_isNull(rectermcd)))
  6817. || ((fGetFormMast("srcformcd") == "0000000677" || fGetFormMast("cnstformyn") == "Y") && arrTemp.length < 3 && (utlf_isNull(reccnts) && utlf_isNull(rectermcd))) // 2016.03.11 Consult 불필요 내용 삭제
  6818. )
  6819. {
  6820. recitemDs.deleteRow(arrTemp[0]);
  6821. i = i-1;
  6822. }
  6823. }
  6824. recitemDs.filter("");
  6825. if(utlf_isNull(tmp))
  6826. {
  6827. for(var i = 0; i < itemCds.length; i++) // 필수 체크
  6828. {
  6829. itemattrval = ds_data_formdegn.lookup("degnitemcd", itemCds[i], "itemattrval");
  6830. if(!utlf_isNull(itemattrval) && itemattrval.indexOf("essential:true") > -1)
  6831. {
  6832. if(recitemDs.findRow("fstlevlitemcd", itemCds[i]) == -1)
  6833. {
  6834. if(recitemDs.findRow("degnitemcd", itemCds[i]) != -1){
  6835. continue;
  6836. }else{
  6837. itemnm = ds_data_formdegn.lookup("degnitemcd", itemCds[i], "degnitemnm");
  6838. alert(itemnm + "은(는) 필수 입력 항목입니다.");
  6839. break;
  6840. }
  6841. }
  6842. else
  6843. {
  6844. // 부분서식내의 필수 체크 컨트롤 체크
  6845. if(ivw_base.grup_base.isValidObject("ivw_" + itemCds[i]))
  6846. {
  6847. var divObj = ivw_base.grup_base.components["ivw_" + itemCds[i]];
  6848. if( lf_chkEssential(divObj) == false ){
  6849. return false;
  6850. }
  6851. }
  6852. }
  6853. }
  6854. }
  6855. }
  6856. if(utlf_isNull(itemnm))
  6857. {
  6858. return true;
  6859. }
  6860. else
  6861. {
  6862. return false;
  6863. }
  6864. }
  6865. /****************************************************************************************
  6866. * Function : lf_addHeadInfo
  6867. * Description : recitem Head Info Add
  6868. * Argument : 01. itemCds : 대상이 되는 섹션의 아이템 코드
  6869. * retrun type :
  6870. * Creator :
  6871. ****************************************************************************************/
  6872. function lf_addHeadInfo(itemCds, mode, tmp){
  6873. if(fGetFormMast("srcformcd") == "0000000677" || fGetFormMast("cnstformyn") == "Y"){ return; }
  6874. var recitemDs:Dataset = new Dataset;
  6875. if( !utlf_isNull( mode ) ){
  6876. recitemDs = ivw_base.objects["ds_hidden_recitem"];
  6877. }else{
  6878. recitemDs = ivw_base.objects["ds_data_recitem"];
  6879. }
  6880. var mainItemCd = "";
  6881. for(var k = 0; k < itemCds.length; k++)
  6882. {
  6883. // 메인섹션 아이템을 구한다.
  6884. mainItemCd = itemCds[k];
  6885. if( recitemDs.findRow("fstlevlitemcd", mainItemCd) < 0 ) continue;
  6886. var nRow = ds_data_unitformmast.findRowExpr("orgsupdegnitemcd == '" + mainItemCd + "'");
  6887. if(nRow != -1)
  6888. {
  6889. var ivwObj = null;
  6890. if(utlf_isNull(ComnFormObj))
  6891. {
  6892. ComnFormObj = ivw_base.grup_base;
  6893. }
  6894. ivwObj = ComnFormObj.components["ivw_" + mainItemCd];
  6895. if(!utlf_isNull(ivwObj) && !utlf_isNull(ivwObj.url))
  6896. {
  6897. var nPrntRow = recitemDs.findRowExpr("fstlevlitemcd == '" + mainItemCd + "' && degnitemlevlno == '1'");
  6898. if(ivwObj.isValidObject("ds_temp_recitem")){ // prog 제외
  6899. continue;
  6900. }else{
  6901. var formdegnseq = recitemDs.getColumn(nPrntRow, "formdegnseq");
  6902. if(utlf_isNull(formdegnseq))
  6903. {
  6904. formdegnseq = ivw_base.ds_temp_mainrecitem.getColumn(nTmpPrntRow, "formdegnseq");
  6905. }
  6906. ivw_base.ds_temp_unitrecitem.clearData();
  6907. ivw_base.ds_temp_unitrecitem.copyData(ivwObj.ds_data_recitem);
  6908. /*
  6909. 1. 수정일시 : 2019-08-29
  6910. 2. 발생현상 : 화면을 갱신하지 않는 화면의 기록 최초저장 후 수정할때 발생
  6911. 계층레벨이 2이상 단독으로 저장데이터가 존재할때 상위정보를 설정못하는 현상
  6912. 3. 수정사항 : lf_ivw_getParent 함수에서 filterStr 정보를 정상적으로 설정하도록 처리
  6913. sFilterStrAll 초기화 로직 추가
  6914. */
  6915. sFilterStrAll = "";
  6916. for( var i = 0; i < recitemDs.rowcount; i++)
  6917. {
  6918. var nFstlevlitemcd = recitemDs.getColumn(i, "fstlevlitemcd");
  6919. if( nFstlevlitemcd != mainItemCd ) continue;
  6920. var nDegnitemkind = recitemDs.getColumn(i, "degnitemkind");
  6921. var nDegnitemno = recitemDs.getColumn(i, "degnitemno");
  6922. var supdegnitemno = recitemDs.getColumn(i, "supdegnitemno");
  6923. if(nDegnitemkind == "GRD" || nDegnitemkind == "GSU" || nDegnitemkind == "GSL")
  6924. {
  6925. continue;
  6926. }
  6927. var filterStr = "";
  6928. if( !utlf_isNull(supdegnitemno) && supdegnitemno != "0" ){
  6929. filterStr = ivwObj.lf_ivw_getParent(supdegnitemno, filterStr);
  6930. }
  6931. if( !utlf_isNull(filterStr) ){
  6932. ivw_base.ds_temp_unitrecitem.filter(filterStr);
  6933. var nTempCnt = ivw_base.ds_temp_unitrecitem.rowcount;
  6934. for( var j = ivw_base.ds_temp_unitrecitem.rowcount-1; j >= 0; j--){
  6935. nDegnitemno = ivw_base.ds_temp_unitrecitem.getColumn(j, "degnitemno");
  6936. if( recitemDs.findRowExpr("fstlevlitemcd == '"+nFstlevlitemcd+"' &&degnitemno == '"+nDegnitemno+"'") > -1 ){
  6937. continue;
  6938. }
  6939. if( ivw_base.ds_temp_unitrecitem.getColumn(j, "degnitemkind") == "MSL" ){
  6940. if( utlf_isNull(ivw_base.ds_temp_unitrecitem.getColumn(j, "rectermcd"))
  6941. && utlf_isNull(ivw_base.ds_temp_unitrecitem.getColumn(j, "reccnts")) ){
  6942. continue;
  6943. }
  6944. }
  6945. var nInRow = recitemDs.insertRow(i);
  6946. recitemDs.copyRow(nInRow, ivw_base.ds_temp_unitrecitem, j);
  6947. recitemDs.setColumn(nInRow, "fstlevlitemcd", mainItemCd);
  6948. recitemDs.setColumn(nInRow, "formdegnseq", formdegnseq);
  6949. recitemDs.setColumn(nInRow, "degnitemlevlno", parseInt(ivw_base.ds_temp_unitrecitem.getColumn(j, "degnitemlevlno")) + 1);
  6950. degnitemlevlcd = mainItemCd.substr(0, 7)+ '.'+ ivw_base.ds_temp_unitrecitem.getColumn(j, "degnitemlevlcd");
  6951. recitemDs.setColumn(nInRow, "degnitemlevlcd", degnitemlevlcd);
  6952. }
  6953. ivw_base.ds_temp_unitrecitem.filter("");
  6954. }
  6955. }// for recitem
  6956. }// if else
  6957. }// ivw obj
  6958. }
  6959. }// for itemCds
  6960. }
  6961. var sFilterStrAll = "";
  6962. /****************************************************************************************
  6963. * Description : 저장할 항목의 상위정보를 가지고 오기위함
  6964. * Argument : 01. degnitemno
  6965. * : 02. filterStr
  6966. * retrun type : string
  6967. * Creator :
  6968. ****************************************************************************************/
  6969. function lf_ivw_getParent(degnitemno, filterStr){
  6970. var srchno = "'" + degnitemno + "'";
  6971. if(!utlf_isSearchString(filterStr, srchno) && !utlf_isSearchString(sFilterStrAll, srchno))
  6972. {
  6973. if(utlf_isNull(filterStr))
  6974. filterStr = "degnitemno == '" + degnitemno + "'";
  6975. else
  6976. filterStr += " || degnitemno == '" + degnitemno + "'";
  6977. }
  6978. var nFindRow = ds_data_recitem.findRow("degnitemno", degnitemno);
  6979. var supdegnitemno = ds_data_recitem.getColumn(nFindRow, "supdegnitemno");
  6980. if(!utlf_isNull(supdegnitemno) && supdegnitemno != "0")
  6981. {
  6982. filterStr = lf_ivw_getParent(supdegnitemno, filterStr);
  6983. if(utlf_isNull(sFilterStrAll))
  6984. sFilterStrAll = filterStr;
  6985. else
  6986. sFilterStrAll += " || " + filterStr;
  6987. }
  6988. return filterStr;
  6989. }
  6990. /****************************************************************************************
  6991. * Function : lf_sortRow
  6992. * Description : 공통서식의 row 순서 정렬
  6993. * Argument : 01. obj : 대상이 되는 섹션의 아이템 코드
  6994. * retrun type :
  6995. * Creator :
  6996. ****************************************************************************************/
  6997. function lf_sortRow(itemCds, mode)
  6998. {
  6999. utlf_addLog("***** lf_sortRow 공통서식의 row 순서 정렬 ******");
  7000. if(!utlf_isNull(itemCds))
  7001. {
  7002. var recitemDs:Dataset = new Dataset;
  7003. if( !utlf_isNull( mode ) ){
  7004. recitemDs = ivw_base.objects["ds_hidden_recitem"];
  7005. }else{
  7006. recitemDs = ivw_base.objects["ds_data_recitem"];
  7007. }
  7008. dsf_createDsRow("ds_temp_sortrecitem",
  7009. [{col:"instcd", val:""}]);
  7010. ds_temp_sortrecitem.assign(recitemDs);
  7011. ds_temp_sortrecitem.clearData();
  7012. var fstlevlitemcd = "";
  7013. /*
  7014. var arrDegnitemcd = objExt.findRows(ds_data_formdegn, "degnitemlevlno", "1");
  7015. for(var i = 0; i < arrDegnitemcd.length; i++) // 공통서식 섹션 코드 순
  7016. {
  7017. var degnitemcd = ds_data_formdegn.getColumn(arrDegnitemcd[i], "degnitemcd");
  7018. for(var j = 0; j < recitemDs.rowcount; j++) // 섹션코드 기준 fstlevlitemcd값을 가지는 row 임시 DS로 복사
  7019. {
  7020. fstlevlitemcd = recitemDs.getColumn(j, "fstlevlitemcd");
  7021. if(fstlevlitemcd == degnitemcd)
  7022. {
  7023. ds_temp_sortrecitem.addRow();
  7024. ds_temp_sortrecitem.copyRow(ds_temp_sortrecitem.rowcount - 1, recitemDs, j);
  7025. }
  7026. }
  7027. }
  7028. */
  7029. for(var i = 0; i < itemCds.length; i++) // 공통서식 섹션 코드 순
  7030. {
  7031. for(var j = 0; j < recitemDs.rowcount; j++) // 섹션코드 기준 fstlevlitemcd값을 가지는 row 임시 DS로 복사
  7032. {
  7033. fstlevlitemcd = recitemDs.getColumn(j, "fstlevlitemcd");
  7034. if(fstlevlitemcd == itemCds[i])
  7035. {
  7036. ds_temp_sortrecitem.addRow();
  7037. ds_temp_sortrecitem.copyRow(ds_temp_sortrecitem.rowcount - 1, recitemDs, j);
  7038. }
  7039. }
  7040. }
  7041. recitemDs.copyData(ds_temp_sortrecitem);
  7042. var objDs = this.removeChild("ds_temp_sortrecitem");
  7043. delete objDs;
  7044. objDs = null;
  7045. }
  7046. }
  7047. /****************************************************************************************
  7048. * Function : fSetFormGridRec
  7049. * Description : 기록정보를 grid에 세팅
  7050. * Argument : 01. dsNm : DS 명
  7051. * : 02. degnno : grid degnitemno
  7052. * : 03. formType : 기록 구분
  7053. * retrun type :
  7054. * Creator :
  7055. ****************************************************************************************/
  7056. function fSetFormGridRec(dsNm, degnno, formType)
  7057. {
  7058. utlf_addLog("***** fSetFormGridRec("+dsNm+", "+degnno+") *****");
  7059. var degnitemkind = parent.ds_data_formdegn.lookup("degnitemno", degnno, "degnitemkind");
  7060. if(degnitemkind == "DGN") // DGN
  7061. fSetDGNGridRec(dsNm, degnno, formType);
  7062. else if(degnitemkind == "GRD") // GRD
  7063. fSetGRDGridRec(dsNm, degnno, formType);
  7064. else if(degnitemkind == "OPN") // OPN
  7065. fSetOPNGridRec(dsNm, degnno, formType);
  7066. else if(degnitemkind == "CCN") // CCN
  7067. fSetCCNGridRec(dsNm, degnno, formType);
  7068. }
  7069. /****************************************************************************************
  7070. * Function : fSetGRDGridRec
  7071. * Description : 기록정보를 grid에 세팅
  7072. * Argument : 01. dsNm : DS 명
  7073. * : 02. degnno : grid degnitemno
  7074. * retrun type :
  7075. * Creator :
  7076. ****************************************************************************************/
  7077. function fSetGRDGridRec(dsNm, degnno, formType)
  7078. {
  7079. utlf_addLog("***** fSetGRDGridRec *****");
  7080. var recitemDs:Dataset = new Dataset;
  7081. if( !utlf_isNull( formType ) && formType == "acmlForm" ){
  7082. recitemDs = parent.objects["ds_data_acmldata"];
  7083. }else{
  7084. recitemDs = parent.objects["ds_data_recitem"];
  7085. }
  7086. var nAddRow;
  7087. var nAddCol;
  7088. var degnitemlevlcd = ds_data_formdegn.lookup("degnitemno", degnno, "degnitemlevlcd");
  7089. var levLen = degnitemlevlcd.length;
  7090. //var filterStr ="degnitemlevlcd.toString().indexOf('" + degnitemlevlcd + "') >= 0";
  7091. //var filterStr ="degnitemlevlcd.toString().substr(0, "+levLen+") == '" + degnitemlevlcd + "'";
  7092. //이윤주 수정( 칠곡 7180541 C-진정회복기록-공통(성인) 2019-06-28 오류로 인해)
  7093. var filterStr ="degnitemlevlcd.toString().substr(0, "+levLen+") == '" + degnitemlevlcd + "' && rowno > '-1'";
  7094. recitemDs.filter(filterStr);
  7095. var nRowCnt = recitemDs.getMax('parseInt(rowno)');
  7096. var nColCnt = eval(dsNm).colcount;
  7097. var sValue;
  7098. var nColCntX = recitemDs.getMax('parseInt(colno)');
  7099. var nRowCntX = eval(dsNm).rowcount;
  7100. var vGrdNm = "GRD_"+degnno;
  7101. var vGridType = this.components[vGrdNm].gridtype;
  7102. if( utlf_isNull(nRowCnt) ) nRowCnt = 0;
  7103. if(!utlf_isNull(vGridType) && vGridType == "X" )
  7104. {
  7105. //누적 그리드
  7106. for(var i=1; i<=nColCntX; i++) // 열
  7107. {
  7108. var vCol = eval(dsNm).colcount;
  7109. var vColNm = "Column"+vCol;
  7110. if(i !=1)
  7111. {
  7112. nAddCol = eval(dsNm).addColumn(vColNm, "string");
  7113. lf_addRecItemOne2(dsNm, nAddCol, degnno);
  7114. var vAddafterColCount = eval(dsNm).colcount-1;
  7115. vColNm = "bind:"+ vColNm;
  7116. this.components[vGrdNm].insertContentsCol(vAddafterColCount);
  7117. this.components[vGrdNm].setCellProperty("Body", vAddafterColCount, "text", vColNm);
  7118. this.components[vGrdNm].setCellProperty("Body", vAddafterColCount, "edittype", "normal");
  7119. this.components[vGrdNm].setCellProperty("Body", vAddafterColCount, "displaytype", "normal");
  7120. this.components[vGrdNm].setCellProperty("Body", vAddafterColCount, "class", "cell_nopadding");
  7121. this.components[vGrdNm].setCellProperty("Body", vAddafterColCount, "wordwrap", "word");
  7122. this.components[vGrdNm].setCellProperty("Body", vAddafterColCount, "tooltiptype", "bottom");
  7123. //Grid.setFormatColProperty(nColIdx,strPropID,nValue);
  7124. //tooltiptype="bottom"
  7125. this.components[vGrdNm].setFormatColProperty(vAddafterColCount, "size", 100);
  7126. }
  7127. for(var j=0; j<nRowCntX; j++) // 행
  7128. {
  7129. sValue = recitemDs.lookupExpr("degnitemkind == 'GSU' && colno=='"+i+"' && rowno=='"+j+"'", "reccnts");
  7130. eval(dsNm).setColumn(j, i, sValue);
  7131. }
  7132. }
  7133. }
  7134. else if(!utlf_isNull(vGridType) && vGridType == "T" )
  7135. {
  7136. //누적 그리드
  7137. for(var i=1; i<=nColCntX; i++) // 열
  7138. {
  7139. var vCol = eval(dsNm).colcount;
  7140. var vColNm = "Column"+vCol;
  7141. // if(i !=1)
  7142. // {
  7143. // nAddCol = eval(dsNm).addColumn(vColNm, "string");
  7144. //
  7145. // lf_addRecItemOne2(dsNm, nAddCol, degnno);
  7146. //
  7147. // var vAddafterColCount = eval(dsNm).colcount-1;
  7148. //
  7149. // vColNm = "bind:"+ vColNm;
  7150. // this.components[vGrdNm].insertContentsCol(vAddafterColCount);
  7151. // this.components[vGrdNm].setCellProperty("Body", vAddafterColCount, "text", vColNm);
  7152. // this.components[vGrdNm].setCellProperty("Body", vAddafterColCount, "edittype", "normal");
  7153. // this.components[vGrdNm].setCellProperty("Body", vAddafterColCount, "displaytype", "normal");
  7154. // this.components[vGrdNm].setCellProperty("Body", vAddafterColCount, "class", "cell_nopadding");
  7155. // this.components[vGrdNm].setCellProperty("Body", vAddafterColCount, "wordwrap", "word");
  7156. // this.components[vGrdNm].setCellProperty("Body", vAddafterColCount, "tooltiptype", "bottom");
  7157. // //Grid.setFormatColProperty(nColIdx,strPropID,nValue);
  7158. // //tooltiptype="bottom"
  7159. // this.components[vGrdNm].setFormatColProperty(vAddafterColCount, "size", 100);
  7160. // }
  7161. for(var j=0; j<nRowCntX; j++) // 행
  7162. {
  7163. sValue = recitemDs.lookupExpr("degnitemkind == 'GSU' && colno=='"+i+"' && rowno=='"+j+"'", "reccnts");
  7164. eval(dsNm).setColumn(j, i, sValue);
  7165. }
  7166. }
  7167. }
  7168. else
  7169. {
  7170. //0. 그리드 데이터셋 value입력
  7171. for(var i=0; i<=nRowCnt; i++) // 행
  7172. {
  7173. nAddRow = eval(dsNm).addRow();
  7174. for(var j=0; j<nColCnt; j++) // 열
  7175. {
  7176. sValue = recitemDs.lookupExpr("rowno=='"+i+"' && colno=='"+j+"'", "reccnts");
  7177. eval(dsNm).setColumn(i, j, sValue);
  7178. }
  7179. }
  7180. //1. 빈 row 정리
  7181. var nRowArrange = eval(dsNm).getRowCount();
  7182. var nColArrange = eval(dsNm).colcount;
  7183. //그리드 정리!! - 빈 row 삭제
  7184. for(var a=0; a < nRowArrange; a++)
  7185. {
  7186. var bBool = false;
  7187. for(var b=0; b < nColArrange; b++)
  7188. {
  7189. var sValueNull = eval(dsNm).getColumn(a, b);
  7190. if(!utlf_isNull(sValueNull))
  7191. {
  7192. bBool= true;
  7193. break;
  7194. }
  7195. }
  7196. if(bBool == false)
  7197. {
  7198. eval(dsNm).deleteRow(a);
  7199. ds_data_recitem.filter("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnitemlevlcd+"' && rowno == '" + a + "' ");
  7200. for(var k = ds_data_recitem.rowcount-1; k >= 0; k--)
  7201. {
  7202. ds_data_recitem.deleteRow(k);
  7203. }
  7204. ds_data_recitem.filter("");
  7205. }
  7206. }
  7207. if( eval(dsNm).rowcount == 0 ){
  7208. eval(dsNm).addRow();
  7209. eval(dsNm).rowposition = -1;
  7210. }
  7211. }
  7212. recitemDs.filter("");
  7213. }
  7214. /****************************************************************************************
  7215. * Function : fSetDGNGridRec
  7216. * Description : 기록정보를 진단grid에 세팅
  7217. * Argument : 01. dsNm : DS 명
  7218. * : 02. degnno : grid degnitemno
  7219. * retrun type :
  7220. * Creator :
  7221. ****************************************************************************************/
  7222. function fSetDGNGridRec(dsNm, degnno, formType)
  7223. {
  7224. utlf_addLog("***** fSetDGNGridRec *****");
  7225. var recitemDs:Dataset = new Dataset;
  7226. if( !utlf_isNull( formType ) && formType == "acmlForm" ){
  7227. recitemDs = parent.objects["ds_data_acmldata"];
  7228. }else{
  7229. recitemDs = parent.objects["ds_data_recitem"];
  7230. }
  7231. var nAddRow;
  7232. var sRectermcd, sRectermnm, sReccnts;
  7233. var sChkMain, sChkRO, sChkSP;
  7234. var arrColID = ["R/O", "주", "진단명"];
  7235. var degnitemlevlcd = ds_data_formdegn.lookup("degnitemno", degnno, "degnitemlevlcd");
  7236. var levLen = degnitemlevlcd.length;
  7237. //var filterStr ="degnitemlevlcd.toString().indexOf('" + degnitemlevlcd + "') >= 0";
  7238. var filterStr ="degnitemlevlcd.toString().substr(0, "+levLen+") == '" + degnitemlevlcd + "'";
  7239. recitemDs.filter(filterStr);
  7240. var nRowCnt = recitemDs.getMax('parseInt(rowno)');
  7241. var nColCnt = arrColID.length;
  7242. for(var i=0; i<=nRowCnt; i++)
  7243. {
  7244. nAddRow = eval(dsNm).addRow();
  7245. for(var j=0; j<nColCnt; j++)
  7246. {
  7247. if(arrColID[j]=="R/O")
  7248. {
  7249. sChkRO = recitemDs.lookupExpr("rowno=='"+i+"'&&colno=='0'", "reccnts"); //parent.ds_data_recitem.lookupExpr("rowno=='"+i+"'&&colno=='0'", "rectermcd");
  7250. sRectermcd = sChkRO;
  7251. sChkRO = sChkRO=="R"?1:0;
  7252. eval(dsNm).setColumn(nAddRow, arrColID[j], sChkRO);
  7253. }
  7254. else if(arrColID[j]=="주")
  7255. {
  7256. sChkMain = recitemDs.lookupExpr("rowno=='"+i+"'&&colno=='1'", "reccnts"); //parent.ds_data_recitem.lookupExpr("rowno=='"+i+"'&&colno=='1'", "rectermcd");
  7257. sRectermcd = sChkMain;
  7258. sChkMain = sChkMain=="M"?1:0;
  7259. eval(dsNm).setColumn(nAddRow, arrColID[j], sChkMain);
  7260. }
  7261. else if(arrColID[j]=="진단명")
  7262. {
  7263. sRectermcd = recitemDs.lookupExpr("rowno=='"+i+"'&&colno=='2'", "rectermcd");
  7264. sRectermnm = recitemDs.lookupExpr("rowno=='"+i+"'&&colno=='2'", "rectermnm");
  7265. sReccnts = recitemDs.lookupExpr("rowno=='"+i+"'&&colno=='2'", "reccnts");
  7266. eval(dsNm).setColumn(nAddRow, arrColID[j], sRectermnm);
  7267. eval(dsNm).setColumn(nAddRow, "진단코드", sRectermcd);
  7268. eval(dsNm).setColumn(nAddRow, "Comments", sReccnts);
  7269. }
  7270. }
  7271. }
  7272. //1. 빈 row 정리
  7273. var nRowArrange = eval(dsNm).getRowCount();
  7274. var nColArrange = eval(dsNm).colcount;
  7275. //그리드 정리!! - 빈 row 삭제
  7276. for(var a=0; a < nRowArrange; a++)
  7277. {
  7278. var bBool = false;
  7279. for(var b=0; b < nColArrange; b++)
  7280. {
  7281. var strColID = eval(dsNm).getColID(b);
  7282. var sValueNull = eval(dsNm).getColumn(a, b);
  7283. if( strColID == "R/O" || strColID == "주" ){
  7284. if( sValueNull == 0 ){
  7285. sValueNull = null;
  7286. }
  7287. }
  7288. if(!utlf_isNull(sValueNull))
  7289. {
  7290. bBool= true;
  7291. break;
  7292. }
  7293. }
  7294. if(bBool == false)
  7295. {
  7296. eval(dsNm).deleteRow(a);
  7297. ds_data_recitem.filter("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnitemlevlcd+"' && rowno == '" + a + "' ");
  7298. for(var k = ds_data_recitem.rowcount-1; k >= 0; k--)
  7299. {
  7300. ds_data_recitem.deleteRow(k);
  7301. }
  7302. ds_data_recitem.filter("");
  7303. }
  7304. }
  7305. recitemDs.filter("");
  7306. }
  7307. /****************************************************************************************
  7308. * Function : fSetOPNGridRec
  7309. * Description : 기록정보를 수술grid에 세팅
  7310. * Argument : 01. dsNm : DS 명
  7311. * : 02. degnno : grid degnitemno
  7312. * retrun type :
  7313. * Creator :
  7314. ****************************************************************************************/
  7315. function fSetOPNGridRec(dsNm, degnno, formType)
  7316. {
  7317. var recitemDs:Dataset = new Dataset;
  7318. if( !utlf_isNull( formType ) && formType == "acmlForm" ){
  7319. recitemDs = parent.objects["ds_data_acmldata"];
  7320. }else{
  7321. recitemDs = parent.objects["ds_data_recitem"];
  7322. }
  7323. var nAddRow;
  7324. var sRectermcd, sRectermnm, sReccnts;
  7325. var sChkMain, sChkRO, sChkSP;
  7326. var degnitemlevlcd = ds_data_formdegn.lookup("degnitemno", degnno, "degnitemlevlcd");
  7327. var levLen = degnitemlevlcd.length;
  7328. //var filterStr ="degnitemlevlcd.toString().indexOf('" + degnitemlevlcd + "') >= 0";
  7329. var filterStr ="degnitemlevlcd.toString().substr(0, "+levLen+") == '" + degnitemlevlcd + "'";
  7330. recitemDs.filter(filterStr);
  7331. var nRowCnt = recitemDs.getMax('parseInt(rowno)');
  7332. for(var i=0; i<=nRowCnt; i++)
  7333. {
  7334. nAddRow = eval(dsNm).addRow();
  7335. sRectermcd = recitemDs.lookupExpr("rowno=='"+i+"'&&colno=='0'", "rectermcd");
  7336. sRectermnm = recitemDs.lookupExpr("rowno=='"+i+"'&&colno=='0'", "rectermnm");
  7337. sReccnts = recitemDs.lookupExpr("rowno=='"+i+"'&&colno=='0'", "reccnts");
  7338. eval(dsNm).setColumn(nAddRow, "수술명", sRectermnm);
  7339. eval(dsNm).setColumn(nAddRow, "수술코드", sRectermcd);
  7340. eval(dsNm).setColumn(nAddRow, "Comments", sReccnts);
  7341. }
  7342. recitemDs.filter("");
  7343. }
  7344. /****************************************************************************************
  7345. * Function : fSetCCNGridRec
  7346. * Description : 기록정보를 주호소grid에 세팅
  7347. * Argument : 01. dsNm : DS 명
  7348. * : 02. degnno : grid degnitemno
  7349. * retrun type :
  7350. * Creator :
  7351. ****************************************************************************************/
  7352. function fSetCCNGridRec(dsNm, degnno, formType)
  7353. {
  7354. utlf_addLog("***** fSetCCNGridRec *****");
  7355. var recitemDs:Dataset = new Dataset;
  7356. if( !utlf_isNull( formType ) && formType == "acmlForm" ){
  7357. recitemDs = parent.objects["ds_data_acmldata"];
  7358. }else{
  7359. recitemDs = parent.objects["ds_data_recitem"];
  7360. }
  7361. var nAddRow;
  7362. var sRectermcd, sRectermnm, sReccnts;
  7363. var sChkMain, sChkRO, sChkSP;
  7364. var arrColID = ["주호소명", "발생일"];
  7365. var degnitemlevlcd = ds_data_formdegn.lookup("degnitemno", degnno, "degnitemlevlcd");
  7366. var levLen = degnitemlevlcd.length;
  7367. //var filterStr ="degnitemlevlcd.toString().indexOf('" + degnitemlevlcd + "') >= 0";
  7368. var filterStr ="degnitemlevlcd.toString().substr(0, "+levLen+") == '" + degnitemlevlcd + "'";
  7369. recitemDs.filter(filterStr);
  7370. var nRowCnt = recitemDs.getMax('parseInt(rowno)');
  7371. var nColCnt = arrColID.length;
  7372. for(var i=0; i<=nRowCnt; i++)
  7373. {
  7374. nAddRow = eval(dsNm).addRow();
  7375. for(var j=0; j<nColCnt; j++)
  7376. {
  7377. if(arrColID[j]=="주호소명")
  7378. {
  7379. sRectermcd = recitemDs.lookupExpr("rowno=='"+i+"'&&colno=='0'", "rectermcd");
  7380. sRectermnm = recitemDs.lookupExpr("rowno=='"+i+"'&&colno=='0'", "rectermnm");
  7381. sReccnts = recitemDs.lookupExpr("rowno=='"+i+"'&&colno=='0'", "reccnts");
  7382. eval(dsNm).setColumn(nAddRow, arrColID[j], sRectermnm);
  7383. eval(dsNm).setColumn(nAddRow, "주호소코드", sRectermcd);
  7384. eval(dsNm).setColumn(nAddRow, "Comments", sReccnts);
  7385. }
  7386. else if(arrColID[j]=="발생일")
  7387. {
  7388. sReccnts = recitemDs.lookupExpr("rowno=='"+i+"'&&colno=='1'", "reccnts");
  7389. eval(dsNm).setColumn(nAddRow, arrColID[j], sReccnts);
  7390. }
  7391. }
  7392. }
  7393. recitemDs.filter("");
  7394. }
  7395. /****************************************************************************************
  7396. * Function : lf_sortGenForm
  7397. * Description : 일반서식 row 순서 정렬
  7398. * retrun type :
  7399. * Creator :
  7400. ****************************************************************************************/
  7401. function lf_sortGenForm(mode)
  7402. {
  7403. utlf_addLog("***** lf_sortGenForm("+mode+") 일반서식 row 순서 정렬 *****");
  7404. dsf_createDsRow("ds_temp_sortrecitem",
  7405. [{col:"instcd", val:""}]);
  7406. ds_temp_sortrecitem.assign(ds_data_recitem);
  7407. ds_temp_sortrecitem.clearData();
  7408. var degnitemcd = "";
  7409. var fstlevlitemcd = "";
  7410. var degnitemlevlno = "";
  7411. var nDegnCnt = ds_data_formdegn.rowcount;
  7412. var nRow;
  7413. var recitemDs:Dataset = new Dataset;
  7414. if( !utlf_isNull( mode ) ){
  7415. recitemDs = this.objects["ds_hidden_recitem"];
  7416. }else{
  7417. recitemDs = this.objects["ds_data_recitem"];
  7418. }
  7419. for(var i = 0; i < nDegnCnt; i++) // 공통서식 섹션 코드 순
  7420. {
  7421. degnitemcd = ds_data_formdegn.getColumn(i, "degnitemcd");
  7422. nRow = -1;
  7423. if( fGetFormMast("formprogflag") == "-" ){
  7424. degnitemlevlno = ds_data_formdegn.getColumn(i, "degnitemlevlno");
  7425. nRow = ds_temp_sortrecitem.findRow("fstlevlitemcd", degnitemcd);
  7426. if( degnitemlevlno != 1 )
  7427. continue;
  7428. }
  7429. if(nRow == -1)
  7430. {
  7431. for(var j = 0; j < recitemDs.rowcount; j++) // 섹션코드 기준 fstlevlitemcd값을 가지는 row 임시 DS로 복사
  7432. {
  7433. fstlevlitemcd = recitemDs.getColumn(j, "fstlevlitemcd");
  7434. if(fstlevlitemcd == degnitemcd)
  7435. {
  7436. ds_temp_sortrecitem.addRow();
  7437. ds_temp_sortrecitem.copyRow(ds_temp_sortrecitem.rowcount - 1, recitemDs, j);
  7438. }
  7439. }
  7440. }
  7441. }
  7442. recitemDs.copyData(ds_temp_sortrecitem);
  7443. var objDs = this.removeChild("ds_temp_sortrecitem");
  7444. delete objDs;
  7445. objDs = null;
  7446. }
  7447. /****************************************************************************************
  7448. * Function : lf_addRecItemOne
  7449. * Description : 특수서식내 GRD 행추가시 recitem template 정보 추가
  7450. * Argument : 01. dsNm : DS 명
  7451. * : 02. nRowno : grid에 추가된 rowno
  7452. * : 03. degnno : grid degnitemno
  7453. * retrun type :
  7454. * Creator :
  7455. ****************************************************************************************/
  7456. function lf_addRecItemOne(dsNm, nRowno, degnno, mode)
  7457. {
  7458. var gridTempNm = dsNm.replace("data", "temp");
  7459. var degnitemkind = parent.ds_data_formdegn.lookup("degnitemno", degnno, "degnitemkind");
  7460. var nAddRow, nCellPos;
  7461. var nTempCnt = eval(gridTempNm).getRowCount();
  7462. var recitemDs:Dataset = new Dataset;
  7463. if( !utlf_isNull( mode ) ){
  7464. recitemDs = this.objects["ds_hidden_recitem"];
  7465. }else{
  7466. recitemDs = this.objects["ds_data_recitem"];
  7467. }
  7468. for(var i=0; i<nTempCnt; i++)
  7469. {
  7470. nAddRow = recitemDs.addRow();
  7471. recitemDs.copyRow(nAddRow, eval(gridTempNm), i);
  7472. recitemDs.setColumn(nAddRow, "rowno", nRowno);
  7473. var nColno = recitemDs.getColumn(nAddRow, "colno");
  7474. }
  7475. }
  7476. /****************************************************************************************
  7477. * Function : lf_addRecItemOne2
  7478. * Description : RecItem 그리드 row 추가 함수
  7479. * retrun type : none
  7480. * Creator :
  7481. ****************************************************************************************/
  7482. function lf_addRecItemOne2(dsNm, nColno, degnno)
  7483. {
  7484. var gridTempNm = dsNm.replace("data", "temp");
  7485. var degnitemkind = parent.ds_data_formdegn.lookup("degnitemno", degnno, "degnitemkind");
  7486. var nAddRow, nCellPos;
  7487. var nTempCnt = eval(gridTempNm).getRowCount();
  7488. for(var i=0; i<nTempCnt; i++)
  7489. {
  7490. nAddRow = ds_data_recitem.addRow();
  7491. ds_data_recitem.copyRow(nAddRow, eval(gridTempNm), i);
  7492. ds_data_recitem.setColumn(nAddRow, "colno", nColno);
  7493. //var nColno = ds_data_recitem.getColumn(nAddRow, "colno");
  7494. }
  7495. }
  7496. /****************************************************************************************
  7497. * Function : fGetFormGridRec
  7498. * Description : 서식저장 시 grid 정보를 recitem에 세팅
  7499. * Argument : 01. dsNm : DS 명
  7500. * : 02. degnno : grid degnitemno
  7501. * retrun type :
  7502. * Creator :
  7503. ****************************************************************************************/
  7504. function fGetFormGridRec(dsNm, degnno, mode)
  7505. {
  7506. utlf_addLog("***** fGetFormGridRec("+dsNm+", "+degnno+", "+mode+") *****");
  7507. if( !utlf_isNull( mode ) )
  7508. ds_hidden_recitem.filter("");
  7509. else
  7510. ds_data_recitem.filter("");
  7511. var degnitemkind = parent.ds_data_formdegn.lookup("degnitemno", degnno, "degnitemkind");
  7512. if(degnitemkind == "DGN") // DGN
  7513. fGetDGNGridRec(dsNm, degnno, mode);
  7514. else if(degnitemkind == "GRD") // GRD
  7515. fGetGRDGridRec(dsNm, degnno, mode);
  7516. else if(degnitemkind == "OPN") // OPN
  7517. fGetOPNGridRec(dsNm, degnno, mode);
  7518. else if(degnitemkind == "CCN") // CCN
  7519. fGetCCNGridRec(dsNm, degnno, mode);
  7520. }
  7521. /****************************************************************************************
  7522. * Function : fGetDGNGridRec
  7523. * Description : 진단명 grid 정보를 recitem에 세팅
  7524. * Argument : 01. dsNm : DS 명
  7525. * : 02. degnno : grid degnitemno
  7526. * retrun type :
  7527. * Creator :
  7528. ****************************************************************************************/
  7529. function fGetDGNGridRec(dsNm, degnno, mode)
  7530. {
  7531. var LevRow = ds_data_formdegn.findRowExpr("degnitemno =="+degnno + "&& degnitemkind == 'DGN'");
  7532. var degnLev = ds_data_formdegn.getColumn(LevRow, "degnitemlevlcd");
  7533. var levLen = degnLev.length;
  7534. var nFindRow;
  7535. var sRectermcd, sRectermnm, sReccnts;
  7536. var sChkMain, sChkRO, sChkSP;
  7537. var arrColID = ["주", "R/O", "진단명"];
  7538. var nRowCnt = eval(dsNm).getRowCount();
  7539. var nColCnt = arrColID.length;
  7540. var recitemDs:Dataset = new Dataset;
  7541. if( !utlf_isNull( mode ) ){
  7542. recitemDs = this.objects["ds_hidden_recitem"];
  7543. }else{
  7544. recitemDs = this.objects["ds_data_recitem"];
  7545. }
  7546. //그리드 정리!! - 빈 row 삭제
  7547. if( nRowCnt == 0 ){
  7548. recitemDs.filter("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"' && rowno == '" + nRowCnt + "' ");
  7549. for(var k = recitemDs.rowcount-1; k >= 0; k--)
  7550. {
  7551. recitemDs.deleteRow(k);
  7552. }
  7553. recitemDs.filter("");
  7554. }
  7555. for(var a=0; a < nRowCnt; a++)
  7556. {
  7557. var bBool = false;
  7558. for(var b=0; b < nColCnt; b++)
  7559. {
  7560. var sValueNull = eval(dsNm).getColumn(a, arrColID[b]);
  7561. if( arrColID[b] == "R/O" || arrColID[b] == "주" ){
  7562. if( sValueNull == 0 ){
  7563. sValueNull = null;
  7564. }
  7565. }
  7566. if(!utlf_isNull(sValueNull))
  7567. {
  7568. bBool= true;
  7569. break;
  7570. }
  7571. }
  7572. if(bBool == false)
  7573. {
  7574. if(utlf_isNull(mode)){
  7575. eval(dsNm).deleteRow(a);
  7576. }
  7577. recitemDs.filter("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"' && rowno == '" + a + "' ");
  7578. for(var k = recitemDs.rowcount-1; k >= 0; k--)
  7579. {
  7580. recitemDs.deleteRow(k);
  7581. }
  7582. recitemDs.filter("");
  7583. }
  7584. }
  7585. nRowCnt = eval(dsNm).getRowCount();
  7586. for(var i=0; i<nRowCnt; i++)
  7587. {
  7588. if(i > 0)
  7589. {
  7590. recitemDs.filter("");
  7591. nFindRow = recitemDs.findRowExpr("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"' && rowno == '"+i+"' && colno == '-1'");
  7592. if(nFindRow >= 0)
  7593. recitemDs.deleteRow(nFindRow);
  7594. }
  7595. //var nExistRow = recitemDs.findRow("rowno", i);
  7596. var nExistRow = recitemDs.findRowExpr("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"' && rowno == '"+i+"'");
  7597. recitemDs.filter("");
  7598. if(nExistRow < 0)
  7599. {
  7600. lf_addRecItemOne(dsNm, i, degnno, mode);
  7601. }
  7602. for(var j=0; j<nColCnt; j++)
  7603. {
  7604. if(arrColID[j]=="R/O")
  7605. {
  7606. nFindRow = recitemDs.findRowExpr("degnitemno=='" +degnno+ "' && rowno=='"+i+"'&&colno=='0'");
  7607. sChkRO = eval(dsNm).getColumn(i, arrColID[j]);
  7608. if(sChkRO == 1 || sChkRO == "R")
  7609. {
  7610. sRectermcd = "";
  7611. sRectermnm = "";
  7612. sReccnts = "R";
  7613. }
  7614. else
  7615. {
  7616. sRectermcd = "";
  7617. sRectermnm = "";
  7618. sReccnts = "C";
  7619. }
  7620. recitemDs.setColumn(nFindRow, "reccnts", sReccnts);
  7621. }
  7622. else if(arrColID[j]=="주")
  7623. {
  7624. nFindRow = recitemDs.findRowExpr("degnitemno=='" +degnno+ "' && rowno=='"+i+"'&&colno=='1'");
  7625. sChkMain = eval(dsNm).getColumn(i, arrColID[j]);
  7626. if(sChkMain == 1 || sChkMain == "M")
  7627. {
  7628. sRectermcd = "";
  7629. sRectermnm = "";
  7630. sReccnts = "M";
  7631. }
  7632. else
  7633. {
  7634. sRectermcd = "";
  7635. sRectermnm = "";
  7636. sReccnts = "S";
  7637. }
  7638. recitemDs.setColumn(nFindRow, "reccnts", sReccnts);
  7639. }
  7640. else if(arrColID[j]=="진단명")
  7641. {
  7642. nFindRow = recitemDs.findRowExpr("degnitemno=='" +degnno+ "' && rowno=='"+i+"'&&colno=='2'");
  7643. sRectermcd = eval(dsNm).getColumn(i, "진단코드");
  7644. sRectermnm = eval(dsNm).getColumn(i, "진단명");
  7645. sReccnts = eval(dsNm).getColumn(i, "Comments");
  7646. recitemDs.setColumn(nFindRow, "reccnts", sReccnts);
  7647. }
  7648. else
  7649. continue;
  7650. recitemDs.setColumn(nFindRow, "rectermcd", sRectermcd);
  7651. recitemDs.setColumn(nFindRow, "rectermnm", sRectermnm);
  7652. if(utlf_isNull(sRectermcd) && utlf_isNull(sRectermnm) && utlf_isNull(sReccnts))
  7653. {
  7654. //recitemDs.deleteRow(nFindRow);
  7655. //2016.03.16 초기 데이터가 진단명 정보 없이 R/O, 주만 있는 경우가 없다고 판단
  7656. if(!utlf_isNull(mode) && arrColID[j]=="진단명"){
  7657. recitemDs.filter("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"' && rowno == '" + i + "' ");
  7658. for(var k = recitemDs.rowcount-1; k >= 0; k--)
  7659. {
  7660. recitemDs.deleteRow(k);
  7661. }
  7662. recitemDs.filter("");
  7663. }else{
  7664. recitemDs.deleteRow(nFindRow);
  7665. }
  7666. }
  7667. }
  7668. var sRowno = recitemDs.findRowExpr("degnitemno == '" +degnno+ "' && rowno > 0 && rowno == '" + i + "' && degnitemkind == 'GRD'");
  7669. if(sRowno != -1) // GRD헤더 삭제
  7670. {
  7671. recitemDs.deleteRow(sRowno);
  7672. }
  7673. }
  7674. dsf_setTypeFormat(recitemDs, "degnitemno:BIGDECIMAL^rowno:BIGDECIMAL^colno:BIGDECIMAL");
  7675. recitemDs.keystring = "";
  7676. recitemDs.keystring = "S:+degnitemno+rowno+colno";
  7677. recitemDs.loadCSV(recitemDs.saveCSV());
  7678. }
  7679. /****************************************************************************************
  7680. * Function : fGetOPNGridRec
  7681. * Description : 수술명 grid 정보를 recitem에 세팅
  7682. * Argument : 01. dsNm : DS 명
  7683. * : 02. degnno : grid degnitemno
  7684. * retrun type :
  7685. * Creator :
  7686. ****************************************************************************************/
  7687. function fGetOPNGridRec(dsNm, degnno, mode)
  7688. {
  7689. var LevRow = ds_data_formdegn.findRowExpr("degnitemno =="+degnno + "&& degnitemkind == 'OPN'");
  7690. var degnLev = ds_data_formdegn.getColumn(LevRow, "degnitemlevlcd");
  7691. var levLen = degnLev.length;
  7692. var nFindRow;
  7693. var sOptermcd, sOptermnm;
  7694. var nRowCnt = eval(dsNm).getRowCount();
  7695. var nColCnt = eval(dsNm).colcount;
  7696. var recitemDs:Dataset = new Dataset;
  7697. if( !utlf_isNull( mode ) ){
  7698. recitemDs = this.objects["ds_hidden_recitem"];
  7699. }else{
  7700. recitemDs = this.objects["ds_data_recitem"];
  7701. }
  7702. //그리드 정리!! - 빈 row 삭제
  7703. if( nRowCnt == 0 ){
  7704. recitemDs.filter("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"' && rowno == '" + nRowCnt + "' ");
  7705. for(var k = recitemDs.rowcount-1; k >= 0; k--)
  7706. {
  7707. recitemDs.deleteRow(k);
  7708. }
  7709. recitemDs.filter("");
  7710. }
  7711. for(var i=0; i<nRowCnt; i++)
  7712. {
  7713. if(i > 0)
  7714. {
  7715. recitemDs.filter("");
  7716. nFindRow = recitemDs.findRowExpr("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"' && rowno == '"+i+"' && colno == '-1'");
  7717. if(nFindRow >= 0)
  7718. recitemDs.deleteRow(nFindRow);
  7719. }
  7720. // var nExistRow = ds_data_recitem.findRow("rowno", i);
  7721. var nExistRow = recitemDs.findRowExpr("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"' && rowno == '"+i+"'");
  7722. if(nExistRow < 0)
  7723. {
  7724. lf_addRecItemOne(dsNm, i, degnno);
  7725. }
  7726. nFindRow = recitemDs.findRowExpr("degnitemno == '" +degnno+ "' && rowno=='"+i+"'&& colno=='0'");
  7727. sOptermcd = eval(dsNm).getColumn(i, "수술코드");
  7728. sOptermnm = eval(dsNm).getColumn(i, "수술명");
  7729. recitemDs.setColumn(nFindRow, "reccnts", eval(dsNm).getColumn(i, "Comments"));
  7730. recitemDs.setColumn(nFindRow, "rectermcd", sOptermcd);
  7731. recitemDs.setColumn(nFindRow, "rectermnm", sOptermnm);
  7732. if(utlf_isNull(sOptermcd) && utlf_isNull(sOptermnm))
  7733. {
  7734. recitemDs.filter("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"' && rowno == '" + i + "' ");
  7735. for(var k = recitemDs.rowcount-1; k >= 0; k--)
  7736. {
  7737. recitemDs.deleteRow(k);
  7738. }
  7739. recitemDs.filter("");
  7740. }
  7741. var sRowno = recitemDs.findRowExpr("degnitemno=='" +degnno+ "' && rowno > 0 && rowno =='" + i + "' && degnitemkind=='GRD'");
  7742. if(sRowno != -1) // GRD헤더 삭제
  7743. {
  7744. recitemDs.deleteRow(sRowno);
  7745. }
  7746. }
  7747. }
  7748. /****************************************************************************************
  7749. * Function : fGetGRDGridRec
  7750. * Description : 진단명 grid 정보를 recitem에 세팅
  7751. * Argument : 01. gridNm : grid 명
  7752. * : 02. degnno : grid degnitemno
  7753. * retrun type :
  7754. * Creator :
  7755. ****************************************************************************************/
  7756. function fGetGRDGridRec(dsNm, degnno, mode)
  7757. {
  7758. var LevRow = ds_data_formdegn.findRowExpr("degnitemno =="+degnno + "&& degnitemkind == 'GRD'");
  7759. var degnLev = ds_data_formdegn.getColumn(LevRow, "degnitemlevlcd");
  7760. var sFstlevlcd = ds_data_formdegn.getColumn(LevRow, "degnitemcd");
  7761. var levLen = degnLev.length;
  7762. var grdObj;
  7763. var nFindRow;
  7764. var nFindRow1;
  7765. var nFindRow2;
  7766. var sCellType;
  7767. var sValue;
  7768. var sValue1;
  7769. var sValue2;
  7770. var sText;
  7771. var nRowCnt = eval(dsNm).getRowCount();
  7772. var nColCnt = eval(dsNm).colcount;
  7773. var vGrdNm = "GRD_"+degnno;
  7774. var vGridType = this.components[vGrdNm].gridtype;
  7775. var recitemDs:Dataset = new Dataset;
  7776. if( !utlf_isNull( mode ) ){
  7777. recitemDs = this.objects["ds_hidden_recitem"];
  7778. }else{
  7779. recitemDs = this.objects["ds_data_recitem"];
  7780. }
  7781. recitemDs.filter("");
  7782. if(!utlf_isNull(vGridType) && vGridType == "X")//누적 그리드
  7783. {
  7784. //0. 그리드 데이터셋 미리 정리
  7785. for(var a=nColCnt-1; a> 0; a--)
  7786. {
  7787. var vBoolGrid1 = false;
  7788. var vBoolGrid2 = false;
  7789. for(var b=1; b<nRowCnt; b++)
  7790. {
  7791. var sVal = eval(dsNm).getColumn(b, a);
  7792. if(!utlf_isNull(sVal))
  7793. {
  7794. vBoolGrid1 = true;
  7795. }
  7796. else
  7797. {
  7798. }
  7799. }
  7800. var c = a+1;
  7801. //삭제하려는 column의 오른쪽에 column이 존재하는 경우 break;
  7802. if(!utlf_isNull(eval(dsNm).getConstColumn(c)))
  7803. {
  7804. break;
  7805. }
  7806. if(vBoolGrid1 == false)
  7807. {
  7808. if(utlf_isNull(mode)){
  7809. eval(dsNm).deleteColumn(a);
  7810. }
  7811. var nRowno = a;
  7812. var sFstlevlcd = recitemDs.lookupExpr("degnitemkind == 'GRD' && degnitemno == '"+degnno+"' && rowno == '0' && colno == '-1'", "fstlevlitemcd");
  7813. recitemDs.filter("colno=='"+nRowno+"' && fstlevlitemcd == '"+sFstlevlcd+"'");
  7814. var nRowCnt = recitemDs.getRowCount();
  7815. for(var i=(nRowCnt-1);i>=0; i--)
  7816. {
  7817. recitemDs.deleteRow(i);
  7818. }
  7819. recitemDs.filter("");
  7820. }
  7821. }
  7822. //1. ds_data_recitem 정리 시작
  7823. var nRowCnt = eval(dsNm).rowcount;
  7824. var nColCnt = eval(dsNm).colcount;
  7825. for(var j=0; j<nColCnt; j++)
  7826. {
  7827. // var nExistRow = ds_data_recitem.findRow("rowno", i);
  7828. // if(nExistRow < 0)
  7829. // {
  7830. // lf_addRecItemOne2(dsNm, i, degnno);
  7831. // }
  7832. for(var i=0; i<nRowCnt; i++)
  7833. {
  7834. recitemDs.filter("");
  7835. var sExpr = "degnitemkind== 'GSU' && rowno=='"+i+"' && colno=='"+j+"' && degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"'";;
  7836. nFindRow = recitemDs.findRowExpr(sExpr);
  7837. sValue = eval(dsNm).getColumn(i, j);
  7838. if(!utlf_isNull(sValue))
  7839. {
  7840. //ds_data_recitem.setColumn(nFindRow1, "reccnts", sValue1);
  7841. //rectermnm
  7842. recitemDs.setColumn(nFindRow, "reccnts", sValue);
  7843. /*
  7844. recitemDs.setColumn(nFindRow, "recitemnm", sValue);
  7845. recitemDs.setColumn(nFindRow, "rectermnm", sValue);
  7846. */
  7847. }
  7848. else
  7849. {
  7850. //ds_data_recitem.deleteRow(nFindRow1);
  7851. //ds_data_recitem.deleteRow(nFindRow2);
  7852. }
  7853. /*
  7854. if(i>1 && j>1)
  7855. {
  7856. var sExprGSL = "degnitemkind== 'GSL' && rowno=='"+i+"' && colno=='"+j+"' && degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"'";
  7857. var sExprGRD = "degnitemkind== 'GRD' && rowno=='"+i+"' && colno=='"+j+"' && degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"'";
  7858. var nFindRowGSL = recitemDs.findRowExpr(sExprGSL);
  7859. var nFindRowGRD = recitemDs.findRowExpr(sExprGRD);
  7860. if(!utlf_isNull(nFindRowGSL) && sExprGSL !=-1)
  7861. {
  7862. recitemDs.deleteRow(nFindRowGSL)
  7863. }
  7864. if(!utlf_isNull(nFindRowGRD) && sExprGRD !=-1)
  7865. {
  7866. recitemDs.deleteRow(nFindRowGRD)
  7867. }
  7868. }
  7869. */
  7870. }
  7871. }
  7872. //2. 불필요 Row 제거
  7873. //그리드 정리!! - 빈 row 삭제
  7874. for(var a=0; a < nRowCnt; a++)
  7875. {
  7876. var bBool = false;
  7877. for(var b=1; b < nColCnt; b++)
  7878. {
  7879. var sValueNull = eval(dsNm).getColumn(a, b);
  7880. if(!utlf_isNull(sValueNull))
  7881. {
  7882. bBool= true;
  7883. //break;
  7884. }
  7885. if( b>1 ){
  7886. var sExprGSL = "degnitemkind== 'GSL' && rowno=='"+a+"' && colno=='"+b+"' && degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"'";
  7887. var sExprGRD = "degnitemkind== 'GRD' && rowno=='"+a+"' && colno=='"+b+"' && degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"'";
  7888. var nFindRowGSL = recitemDs.findRowExpr(sExprGSL);
  7889. var nFindRowGRD = recitemDs.findRowExpr(sExprGRD);
  7890. if(!utlf_isNull(nFindRowGSL) && sExprGSL !=-1)
  7891. {
  7892. recitemDs.deleteRow(nFindRowGSL)
  7893. }
  7894. if(!utlf_isNull(nFindRowGRD) && sExprGRD !=-1)
  7895. {
  7896. recitemDs.deleteRow(nFindRowGRD)
  7897. }
  7898. }
  7899. }
  7900. if(bBool == false)
  7901. {
  7902. recitemDs.filter("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"' && rowno=='"+a+"'");
  7903. for(var k = recitemDs.rowcount-1; k >= 0; k--)
  7904. {
  7905. recitemDs.deleteRow(k);
  7906. }
  7907. recitemDs.filter("");
  7908. }
  7909. }
  7910. //20170630 x009 추가 - x축그리드에 대한 max열갯수 및 그리드 열갯수 Set(xml가라 node을 만들기 위한 set - 통합기록조회 및 사본에서 max열갯수에 따른 표를 그리기 위해)
  7911. if(fGetFormMast("formxfdluseyn")=="Y"){
  7912. //trace("========================= x축그리드 x009 타냐!!!!!! ================================================== ");
  7913. fnSetXgridTableInfo(eval(vGrdNm), eval(dsNm), degnLev, degnno);
  7914. }
  7915. recitemDs.filter("");
  7916. }
  7917. else if(!utlf_isNull(vGridType) && vGridType == "T")//누적 그리드
  7918. {
  7919. //1. ds_data_recitem 정리 시작
  7920. var nRowCnt = eval(dsNm).rowcount;
  7921. var nColCnt = eval(dsNm).colcount;
  7922. for(var j=0; j<nColCnt; j++)
  7923. {
  7924. for(var i=0; i<nRowCnt; i++)
  7925. {
  7926. recitemDs.filter("");
  7927. var sExpr = "degnitemkind== 'GSU' && rowno=='"+i+"' && colno=='"+j+"' && degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"'";;
  7928. nFindRow = recitemDs.findRowExpr(sExpr);
  7929. sValue = eval(dsNm).getColumn(i, j);
  7930. if(!utlf_isNull(sValue))
  7931. {
  7932. recitemDs.setColumn(nFindRow, "reccnts", sValue);
  7933. }
  7934. }
  7935. }
  7936. //2. 불필요 Row 제거
  7937. //그리드 정리!! - 빈 row 삭제
  7938. for(var a=0; a < nRowCnt; a++)
  7939. {
  7940. var bBool = false;
  7941. for(var b=1; b < nColCnt; b++)
  7942. {
  7943. var sValueNull = eval(dsNm).getColumn(a, b);
  7944. if(!utlf_isNull(sValueNull))
  7945. {
  7946. bBool= true;
  7947. break;
  7948. }
  7949. }
  7950. if(bBool == false)
  7951. {
  7952. recitemDs.filter("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"' && rowno=='"+a+"'");
  7953. for(var k = recitemDs.rowcount-1; k >= 0; k--)
  7954. {
  7955. recitemDs.deleteRow(k);
  7956. }
  7957. recitemDs.filter("");
  7958. }
  7959. }
  7960. recitemDs.filter("");
  7961. }
  7962. else //일반 그리드
  7963. {
  7964. nRowCnt = eval(dsNm).getRowCount();
  7965. nColCnt = eval(dsNm).colcount;
  7966. //그리드 정리!! - 빈 row 삭제
  7967. for(var a=0; a < nRowCnt; a++)
  7968. {
  7969. var bBool = false;
  7970. for(var b=0; b < nColCnt; b++)
  7971. {
  7972. var sValueNull = eval(dsNm).getColumn(a, b);
  7973. if(!utlf_isNull(sValueNull))
  7974. {
  7975. bBool= true;
  7976. break;
  7977. }
  7978. }
  7979. if(bBool == false)
  7980. {
  7981. if(utlf_isNull(mode)){
  7982. eval(dsNm).deleteRow(a);
  7983. }
  7984. recitemDs.filter("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"' && rowno == '" + a + "' ");
  7985. for(var k = recitemDs.rowcount-1; k >= 0; k--)
  7986. {
  7987. recitemDs.deleteRow(k);
  7988. }
  7989. recitemDs.filter("");
  7990. }
  7991. }
  7992. // 위치 이동
  7993. nRowCnt = eval(dsNm).getRowCount();
  7994. nColCnt = eval(dsNm).colcount;
  7995. // 1. recitem에 부족한 row 추가
  7996. for(var c=0; c < nRowCnt; c++)
  7997. {
  7998. var nExistRow = recitemDs.findRowExpr("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"' && rowno == '"+c+"'");
  7999. if(nExistRow < 0)
  8000. {
  8001. lf_addRecItemOne(dsNm, c, degnno, mode);
  8002. }
  8003. else
  8004. {
  8005. }
  8006. }
  8007. //2. recitem에 data set
  8008. for(var i=0; i < nRowCnt; i++) // 행
  8009. {
  8010. if(i > 0)
  8011. {
  8012. recitemDs.filter(""); // GRD 헤더 삭제
  8013. nFindRow = recitemDs.findRowExpr("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"' && rowno == '"+i+"' && colno == '-1'");
  8014. if(nFindRow >= 0)
  8015. recitemDs.deleteRow(nFindRow);
  8016. }
  8017. for(var j=0; j<nColCnt; j++) // 열
  8018. {
  8019. ds_data_recitem.filter("");
  8020. nFindRow = recitemDs.findRowExpr("rowno=='"+i+"' && colno=='"+j+"' && degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"'");
  8021. sValue = eval(dsNm).getColumn(i, j);
  8022. if(!utlf_isNull(sValue))
  8023. {
  8024. recitemDs.setColumn(nFindRow, "reccnts", sValue);
  8025. }
  8026. else
  8027. {
  8028. recitemDs.deleteRow(nFindRow);
  8029. }
  8030. }
  8031. }
  8032. }
  8033. recitemDs.keystring = "";
  8034. //if( !utlf_isNull(vGridType) && (vGridType == "X" || vGridType == "T") ){
  8035. // saveCSV 오류로 인해 특수그리드와 일반그리드 소팅 조건 변경.
  8036. dsf_setTypeFormat(recitemDs, "degnitemno:BIGDECIMAL^rowno:BIGDECIMAL^colno:BIGDECIMAL");
  8037. recitemDs.keystring = "S:+degnitemno+rowno+colno";
  8038. //recitemDs.keystring = "S:+degnitemno";
  8039. //}else{
  8040. //dsf_setTypeFormat(recitemDs, "degnitemno:INT^rowno:INT^colno:INT");
  8041. //recitemDs.keystring = "S:+degnitemno+rowno+colno";
  8042. // recitemDs.keystring = "S:+degnitemno";
  8043. //}
  8044. recitemDs.loadCSV(recitemDs.saveCSV());
  8045. }
  8046. /****************************************************************************************
  8047. * Function : fGetCCNGridRec
  8048. * Description : 주호소 grid 정보를 recitem에 세팅
  8049. * Argument : 01. dsNm : DS 명
  8050. * : 02. degnno : grid degnitemno
  8051. * retrun type :
  8052. * Creator :
  8053. ****************************************************************************************/
  8054. function fGetCCNGridRec(dsNm, degnno, mode)
  8055. {
  8056. var LevRow = ds_data_formdegn.findRowExpr("degnitemno =="+degnno + "&& degnitemkind == 'CCN'");
  8057. var degnLev = ds_data_formdegn.getColumn(LevRow, "degnitemlevlcd");
  8058. var levLen = degnLev.length;
  8059. var nFindRow;
  8060. var sRectermcd, sRectermnm;
  8061. var sChkMain, sChkRO, sChkSP;
  8062. var arrColID = ["주호소명", "발생일"];
  8063. var nRowCnt = eval(dsNm).getRowCount();
  8064. var nColCnt = arrColID.length;
  8065. var recitemDs:Dataset = new Dataset;
  8066. if( !utlf_isNull( mode ) ){
  8067. recitemDs = this.objects["ds_hidden_recitem"];
  8068. }else{
  8069. recitemDs = this.objects["ds_data_recitem"];
  8070. }
  8071. for(var i=0; i<nRowCnt; i++)
  8072. {
  8073. if(i > 0)
  8074. {
  8075. recitemDs.filter("");
  8076. nFindRow = recitemDs.findRowExpr("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"' && rowno == '"+i+"' && colno == '-1'");
  8077. if(nFindRow >= 0)
  8078. recitemDs.deleteRow(nFindRow);
  8079. }
  8080. //var nExistRow = recitemDs.findRow("rowno", i);
  8081. var nExistRow = recitemDs.findRowExpr("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"' && rowno == '"+i+"'");
  8082. recitemDs.filter("");
  8083. if(nExistRow < 0)
  8084. {
  8085. lf_addRecItemOne(dsNm, i, degnno, mode);
  8086. }
  8087. for(var j=0; j<nColCnt; j++)
  8088. {
  8089. if(arrColID[j]=="주호소명")
  8090. {
  8091. nFindRow = recitemDs.findRowExpr("degnitemno=='" +degnno+ "' && rowno=='"+i+"'&&colno=='0'");
  8092. sRectermcd = eval(dsNm).getColumn(i, "주호소코드");
  8093. sRectermnm = eval(dsNm).getColumn(i, "주호소명");
  8094. recitemDs.setColumn(nFindRow, "reccnts", eval(dsNm).getColumn(i, "Comments"));
  8095. }
  8096. else if(arrColID[j]=="발생일")
  8097. {
  8098. nFindRow = recitemDs.findRowExpr("degnitemno=='" +degnno+ "' && rowno=='"+i+"'&&colno=='1'");
  8099. sRectermcd = "";
  8100. sRectermnm = "";
  8101. recitemDs.setColumn(nFindRow, "reccnts", eval(dsNm).getColumn(i, arrColID[j]) );
  8102. }
  8103. else
  8104. continue;
  8105. recitemDs.setColumn(nFindRow, "rectermcd", sRectermcd);
  8106. recitemDs.setColumn(nFindRow, "rectermnm", sRectermnm);
  8107. if(utlf_isNull(sRectermcd) && utlf_isNull(sRectermnm))
  8108. {
  8109. // var rNum = recitemDs.getColumn(nFindRow, "rowno");
  8110. // var nDelRows = new Array();
  8111. // nDelRows = objExt.findRows(ds_data_recitem, "rowno", rNum);
  8112. recitemDs.filter("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"' && rowno == '" + nFindRow + "' ");
  8113. //for(var k = nDelRows.length-1; k >= 0; k--)
  8114. for(var k = recitemDs.rowcount-1; k >= 0; k--)
  8115. {
  8116. //20150223 - 주석처리 테스트
  8117. //ds_data_recitem.deleteRow(nDelRows[k]);
  8118. }
  8119. recitemDs.filter("");
  8120. }
  8121. }
  8122. var sRowno = recitemDs.findRowExpr("degnitemno == '" +degnno+ "' && rowno > 0 && rowno == '" + i + "' && degnitemkind == 'GRD'");
  8123. if(sRowno != -1) // GRD헤더 삭제
  8124. {
  8125. recitemDs.deleteRow(sRowno);
  8126. }
  8127. }
  8128. //NULL data정리 -1
  8129. recitemDs.filter("");
  8130. recitemDs.filter("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"'");
  8131. var nRecRowCount = recitemDs.getRowCount();
  8132. for(var a=nRecRowCount -1; a>=0; a--)
  8133. {
  8134. var sRectermcd = recitemDs.getColumn(a, "rectermcd");
  8135. var sRectermnm = recitemDs.getColumn(a, "rectermnm");
  8136. var sReccnts = recitemDs.getColumn(a, "reccnts");
  8137. var sDegnitemnm = recitemDs.getColumn(a, "degnitemnm");
  8138. var sColno = recitemDs.getColumn(a, "colno");
  8139. if((utlf_isNull(sRectermcd) && utlf_isNull(sRectermnm) && utlf_isNull(sReccnts)) && ( sDegnitemnm != "C/C" ) && (!utlf_isNull(sColno) && sColno != -1))
  8140. {
  8141. recitemDs.deleteRow(a);
  8142. }
  8143. }
  8144. recitemDs.filter("");
  8145. var nCaseCount = recitemDs.getCaseCount("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"' && rowno == '0' ");
  8146. if( nCaseCount == 1 ){
  8147. var nFindRow = recitemDs.findRowExpr("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnLev+"' && rowno == '0' && colno == '-1'");
  8148. if(nFindRow >= 0)
  8149. recitemDs.deleteRow(nFindRow);
  8150. }
  8151. }
  8152. /****************************************************************************************
  8153. * Function : lf_setButtonToggleByRecYn
  8154. * Description : 확장버튼(이미지,가계도,추가기록)을 기록여부에 따라 표시한다.
  8155. * Argument : 01. pViewObj : button을 가지고 있는 화면이 열린 view
  8156. * Argument : 02. obj : 확장버튼(이미지,가계도,추가기록)의 id
  8157. * retrun type : N/A
  8158. * Creator :
  8159. ****************************************************************************************/
  8160. function lf_setButtonToggleByRecYn(pViewObj, obj:Button)
  8161. {
  8162. utlf_addLog("***** lf_setButtonToggleByRecYn("+pViewObj+", "+obj+") *****");
  8163. var buttonObj = null;
  8164. if (utlf_isNull(pViewObj))
  8165. pViewObj = this;
  8166. var btnName = obj.name;
  8167. var arr = btnName.split("_");
  8168. var supperItemCd = arr[2];
  8169. var recPath = "";
  8170. if (arr[1] == "imge")
  8171. {
  8172. obj.class = "btn_picture_s";
  8173. }
  8174. /*
  8175. else if (arr[1] == "fmy" || arr[1] == "etcrec" || arr[1] == "lastdiag")
  8176. {
  8177. obj.class = "btn5";
  8178. }
  8179. */
  8180. else if (arr[1] == "fmy")
  8181. {
  8182. obj.class = "btn_Fmytree_s";
  8183. }
  8184. else if (arr[1] == "etcrec")
  8185. {
  8186. obj.class = "btn_Assrecord_s";
  8187. }
  8188. else if (arr[1] == "lastdiag")
  8189. {
  8190. obj.class = "btn5";
  8191. }
  8192. else
  8193. return;
  8194. }
  8195. /****************************************************************************************
  8196. * Function : lf_getComponentID
  8197. * Description : 컴포넌트 Object를 설정한다.
  8198. * Argument : 01. formdegnseq : form seq
  8199. * : 02. sName : 대상이 되는 섹션의 아이템 코드
  8200. * retrun type : Component object
  8201. * Creator :
  8202. ****************************************************************************************/
  8203. function lf_getComponentID(formdegnseq, sName)
  8204. {
  8205. utlf_addLog("***** lf_getComponentID("+formdegnseq+", "+sName+") *****");
  8206. var objComp;
  8207. if(utlf_isNull(formdegnseq)){
  8208. objComp = ComnFormObj.components["ivw_"+sName];
  8209. if(!utlf_isNull(objComp)){
  8210. objComp.visible = false;
  8211. }
  8212. objComp = ComnFormObj.components["cap_"+sName];
  8213. if(!utlf_isNull(objComp)){
  8214. objComp.visible = false;
  8215. }
  8216. objComp = ComnFormObj.components["tar_"+sName];
  8217. if(!utlf_isNull(objComp)){
  8218. objComp.visible = true;
  8219. objComp.wordwrap = "word";
  8220. }
  8221. }else{
  8222. objComp = ComnFormObj.components["tar_"+sName];
  8223. if(!utlf_isNull(objComp)){
  8224. objComp.visible = false;
  8225. objComp.wordwrap = "word";
  8226. }
  8227. var sUrl;
  8228. objComp = ComnFormObj.components["ivw_"+sName];
  8229. if(!utlf_isNull(objComp)){
  8230. sUrl = objComp.url;
  8231. }
  8232. if(utlf_isNull(sUrl)){
  8233. if(!utlf_isNull(objComp)){
  8234. objComp.visible = false;
  8235. }
  8236. objComp = ComnFormObj.components["cap_"+sName];
  8237. }else{
  8238. objComp = ComnFormObj.components["cap_"+sName];
  8239. if(!utlf_isNull(objComp)){
  8240. objComp.visible = false;
  8241. }
  8242. objComp = ComnFormObj.components["ivw_"+sName];
  8243. }
  8244. if(!utlf_isNull(objComp)){
  8245. objComp.visible = true;
  8246. }
  8247. }
  8248. // if(sName=="0001013001"&&utlf_isNull(objComp)){
  8249. // objComp = ComnFormObj.components["cap_"+sName];
  8250. // if(!utlf_isNull(objComp)){
  8251. // objComp.visible = true;
  8252. // }
  8253. // }
  8254. return objComp;
  8255. }
  8256. /****************************************************************************************
  8257. * Function : lf_addGridRow
  8258. * Description : Grid 행추가 이벤트
  8259. * Argument : 01. obj
  8260. * : 02. e
  8261. * retrun type :
  8262. * Creator :
  8263. ****************************************************************************************/
  8264. function lf_addGridRow(obj:Button, e:ClickEventInfo)
  8265. {
  8266. var degnno, dsNm, nRowno;
  8267. var btnNm = obj.name;
  8268. degnno = btnNm.replace("_EXT2", "");
  8269. degnno = degnno.replace("_EXT1", "");
  8270. degnno = degnno.replace("_EXT", "");
  8271. degnno = degnno.replace("BTN_", "");
  8272. dsNm = "ds_data_grd_"+degnno;
  8273. nRowno = eval(dsNm).addRow();
  8274. if(nRowno > -1)
  8275. lf_addRecItemOne(dsNm, nRowno, degnno);
  8276. }
  8277. /****************************************************************************************
  8278. * Function : lf_removeGridRow
  8279. * Description : Grid 행삭제 이벤트
  8280. * Argument : 01. obj
  8281. * : 02. e
  8282. * retrun type :
  8283. * Creator :
  8284. ****************************************************************************************/
  8285. function lf_removeGridRow(obj:Button, e:ClickEventInfo)
  8286. {
  8287. var degnno, grdNm, nRowno, sFstlevlcd, nRecRow;
  8288. var btnNm = obj.name;
  8289. degnno = btnNm.replace("_EXT2", "");
  8290. degnno = degnno.replace("_EXT1", "");
  8291. degnno = degnno.replace("_EXT", "");
  8292. degnno = degnno.replace("BTN_", "");
  8293. dsNm = "ds_data_grd_"+degnno;
  8294. nRowno = eval(dsNm).rowposition;
  8295. if( eval(dsNm).deleteRow(nRowno) )
  8296. {
  8297. sFstlevlcd = ds_data_recitem.lookupExpr("degnitemkind == 'GRD' && degnitemno == '"+degnno+"' && rowno == '0' && colno == '-1'", "fstlevlitemcd");
  8298. ds_data_recitem.filter("rowno=='"+nRowno+"' && fstlevlitemcd == '"+sFstlevlcd+"'");
  8299. var nRowCnt = ds_data_recitem.getRowCount();
  8300. for(var i=(nRowCnt-1);i>=0; i--)
  8301. {
  8302. ds_data_recitem.deleteRow(i);
  8303. }
  8304. ds_data_recitem.filter("");
  8305. // rowno 재정렬
  8306. ds_data_recitem.filter("rowno > '"+nRowno+"' && fstlevlitemcd == '"+sFstlevlcd+"'");
  8307. nRowCnt = ds_data_recitem.getRowCount();
  8308. for(var j=0; j < nRowCnt; j++)
  8309. {
  8310. var nSelfRowno = ds_data_recitem.getColumn(j, "rowno");
  8311. ds_data_recitem.setColumn(j, "rowno", nSelfRowno - 1);
  8312. }
  8313. ds_data_recitem.filter("");
  8314. }
  8315. }
  8316. /****************************************************************************************
  8317. * Function : lf_setGrdRecToDS
  8318. * Description : 서식내의 grid값 변경시 recitem DS 값 세팅
  8319. * Argument : 01.obj : Object Event has occurred
  8320. * : 02.e : Event Object
  8321. * retrun type :
  8322. * Creator :
  8323. ****************************************************************************************/
  8324. function lf_setGrdRecToDS(obj:Dataset, e:DSColChangeEventInfo)
  8325. {
  8326. utlf_addLog("***** if_setGrdRecToDS *****");
  8327. var objName = obj.name;
  8328. var objDegnNo = "";
  8329. if(obj != undefined)
  8330. {
  8331. objDegnNo = objName.replace("ds_data_grd_", "");
  8332. var nRow = ds_data_recitem.findRowExpr("degnitemkind == 'GSU' && degnitemno == '"+ objDegnNo +"' && rowno == '"+ e.row +"' && colno == '"+ e.col +"'");
  8333. if(obj.getColID(e.col) == "code" || obj.getColID(e.col) == "status")
  8334. ds_data_recitem.setColumn(nRow, "rectermcd", e.newvalue);
  8335. else
  8336. ds_data_recitem.setColumn(nRow, "rectermnm", e.newvalue);
  8337. }
  8338. }
  8339. /****************************************************************************************
  8340. * Function : if_setGrdRecToDS
  8341. * Description : 서식내의 grid값 변경시 DGN의 경우 fCheckDiagMsKindFlag() 로직 동작 처리
  8342. * Argument : 01.obj : Object Event has occurred
  8343. * : 02.e : Event Object
  8344. * retrun type :
  8345. * Creator :
  8346. ****************************************************************************************/
  8347. function if_setGrdRecToDS(obj:Dataset, e:DSColChangeEventInfo)
  8348. {
  8349. //utlf_addLog("***** if_setGrdRecToDS *****");
  8350. var objName = obj.name;
  8351. var objDegnNo = "";
  8352. var objDGN = "";
  8353. try{
  8354. if(obj != undefined)
  8355. {
  8356. objDegnNo = objName.replace("ds_data_grd_", "");
  8357. objDGN = this.components["DGN_"+objDegnNo];
  8358. if( !utlf_isNull(objDGN) ){
  8359. var nCnt = obj.rowcount;
  8360. if( nCnt == 1 ) return;
  8361. var nRowno = e.row;
  8362. var nDiagmskindflag = obj.getColumn(nRowno, e.col);
  8363. if( obj.getColID(e.col)== "주" && nDiagmskindflag == 1 ){
  8364. obj.enableevent = false;
  8365. var nDiagcd = obj.getColumn(nRowno, "진단코드");
  8366. var nDiagnm = obj.getColumn(nRowno, "진단명");
  8367. if( utlf_isNull(nDiagcd) || utlf_isNull(nDiagnm) ){
  8368. obj.setColumn(nRowno, e.col, 0);
  8369. obj.enableevent = true;
  8370. return
  8371. }
  8372. for(var i=0; i<nCnt; i++)
  8373. {
  8374. var sChkMainFor = obj.getColumn(i, "주");
  8375. if(sChkMainFor==1 && i!=nRowno)
  8376. {
  8377. obj.setColumn(i, "주" , 0);
  8378. }
  8379. }
  8380. if(e.row != 0)
  8381. {
  8382. // 첫번째 행의 rowno를 선택된 행의 rowno로 바꾼다
  8383. obj.moveRow(nRowno, 0);
  8384. }
  8385. obj.enableevent = true;
  8386. }
  8387. }
  8388. }
  8389. }catch(e){
  8390. sysf_catchTrace(e);
  8391. }
  8392. }
  8393. /****************************************************************************************
  8394. * Argument : N/A
  8395. * Description : 행추가.
  8396. ****************************************************************************************/
  8397. function lf_compAddRow(obj:Dataset)
  8398. {
  8399. var row = 0;
  8400. var bRtn = true;
  8401. var objParent = lv_rObjId.parent;
  8402. //CarePlan
  8403. if(obj.name == "ds_grid_grd_diaglist")
  8404. {
  8405. if(utlf_isNull(objParent["fAddRow"])) bRtn == false;
  8406. else objParent.fAddRow();
  8407. }
  8408. //서식주호소
  8409. if(obj.name == "ds_grid_grd_cclist")
  8410. {
  8411. if(utlf_isNull(objParent["fAddRow"])) bRtn == false;
  8412. else objParent.fAddRow();
  8413. }
  8414. if(bRtn == false)
  8415. {
  8416. row = obj.addRow();
  8417. }
  8418. }
  8419. /****************************************************************************************
  8420. * Argument : N/A
  8421. * Description : 그리드 행삭제.
  8422. ****************************************************************************************/
  8423. function lf_compGrdDelRow(obj:Dataset)
  8424. {
  8425. var row = obj.rowposition;
  8426. var bRtn = true;
  8427. var objParent = lv_rObjId.parent;
  8428. //CarePlan
  8429. if(obj.name == "ds_grid_grd_diaglist")
  8430. {
  8431. if(utlf_isNull(objParent["fGrdDelRow"])) bRtn == false;
  8432. else objParent.fGrdDelRow();
  8433. }
  8434. //서식주호소
  8435. if(obj.name == "ds_grid_grd_cclist")
  8436. {
  8437. if(utlf_isNull(objParent["fGrdDelRow"])) bRtn == false;
  8438. else objParent.fGrdDelRow();
  8439. }
  8440. if(bRtn == false)
  8441. {
  8442. obj.deleteRow(row);
  8443. }
  8444. }
  8445. function fSetMtxSize(degnitemno, left, top, width, height)
  8446. {
  8447. utlf_addLog("***** MRF01200 fSetMtxSize("+degnitemno+", "+left+", "+top+", "+width+", "+height+") *****");
  8448. //var grp = document.controls("grp_" + degnitemno);
  8449. var grp = eval("grp_" + degnitemno);
  8450. if(!utlf_isNull(grp))
  8451. {
  8452. grp.position2.left = left;
  8453. grp.position2.top = top;
  8454. grp.position2.width = width;
  8455. grp.position2.height = height;
  8456. }
  8457. //var mtx = document.controls("MTX_" + degnitemno);
  8458. var mtx = eval("MTX_" + degnitemno);
  8459. if(!utlf_isNull(mtx))
  8460. {
  8461. mtx.position2.left = 0;
  8462. mtx.position2.top = 0;
  8463. mtx.position2.width = parseInt(width) - 5;
  8464. mtx.position2.height = parseInt(height) - 2;
  8465. mtx.style.border = "none";
  8466. }
  8467. }
  8468. /****************************************************************************************
  8469. * Function : lf_setChkVal
  8470. * Description : checkbox 값 조합 및 itemvalue DS 매핑
  8471. * Argument : 01. cmpInfo : checkboxList 컴포짓 ID, valuelist 그룹코드
  8472. * retrun type :
  8473. * Creator :
  8474. ****************************************************************************************/
  8475. function lf_setChkVal(cmpInfo)
  8476. {
  8477. utlf_addLog("****** lf_setChkVal( " + cmpInfo + " ) *****");
  8478. var chktext = "";
  8479. var chkval = "";
  8480. var chklabel = "";
  8481. var arrTemp = new Array();
  8482. arrTemp = cmpInfo.split(", ");
  8483. var dsNM = "ds_data_V_"+arrTemp[1];
  8484. var degnitemno = arrTemp[0].replace("CHK_","");
  8485. // arrTemp[0] : 컴포짓 ID
  8486. // arrTemp[1] : 벨류리스트 코드
  8487. // eval : 스트링을 Object 형태로 만들어줌
  8488. var objComp = getFocus(); // 포커스 아이템 obj 전달
  8489. utlf_addLog("arrTemp[0] : " + arrTemp[0]);
  8490. utlf_addLog("arrTemp[0] : " + eval(arrTemp[0]));
  8491. for(var i = 0; i < eval(arrTemp[0]).components.length; i++)
  8492. {
  8493. var chkbox = eval(arrTemp[0]).components[i];
  8494. var nRow = ds_data_recitem.findRowExpr("degnitemno == '"+ degnitemno +"' && colno == '"+ chkbox.colno +"' && degnitemkind == 'CHK'");
  8495. if(utlf_isNull(chkval))
  8496. {
  8497. chkval = chkbox.value;
  8498. }
  8499. else
  8500. {
  8501. chkval += " " + chkbox.value;
  8502. }
  8503. if(nRow > -1)
  8504. {
  8505. chklabel = lf_getValist(dsNM, chkbox.value);
  8506. ds_data_recitem.setColumn(nRow, "rectermcd", chkbox.value);
  8507. ds_data_recitem.setColumn(nRow, "rectermnm", chklabel); // valuelist에서 해당 값에 해당하는 label 리턴
  8508. }
  8509. }
  8510. ds_data_itemvalue.setColumn(0, arrTemp[0], chkval);
  8511. if(!utlf_isNull(objComp) && objComp instanceof cp_reccheckList )
  8512. lf_dsBind(objComp);
  8513. }
  8514. /****************************************************************************************
  8515. * Function : lf_getValist
  8516. * Description : composite 라벨 리턴
  8517. * Argument : 01. dsNM : 대상 valuelist DS
  8518. * : 01. chkval : checkboxList 컴포짓 ID, valueliat 그룹코드
  8519. * retrun type : Obj : 오브젝트 형태
  8520. * Creator :
  8521. ****************************************************************************************/
  8522. function lf_getValist(dsNM, chkval)
  8523. {
  8524. var label = "";
  8525. if(chkval != "" && dsNM != "")
  8526. {
  8527. var nRow = eval(dsNM).findRowExpr("termbasecd == '"+ chkval +"'");
  8528. label = eval(dsNM).getColumn(nRow, "valitemnm");
  8529. }
  8530. return label;
  8531. }
  8532. /****************************************************************************************
  8533. * Function : lf_getValitempnt
  8534. * Description : composite Valitempnt 리턴
  8535. * Argument : 01. dsNM : 대상 valuelist DS
  8536. * : 01. chkval : checkboxList 컴포짓 ID, valueliat 그룹코드
  8537. * retrun type : Obj : 오브젝트 형태
  8538. * Creator :
  8539. ****************************************************************************************/
  8540. function lf_getValitempnt(dsNM, chkval)
  8541. {
  8542. var valitempnt = "";
  8543. if(chkval != "" && dsNM != "")
  8544. {
  8545. if(eval(dsNM).getColumnInfo("valitempnt") != null){
  8546. var nRow = eval(dsNM).findRowExpr("termbasecd == '"+ chkval +"'");
  8547. valitempnt = eval(dsNM).getColumn(nRow, "valitempnt");
  8548. }
  8549. }
  8550. return valitempnt;
  8551. }
  8552. /****************************************************************************************
  8553. * Function : lf_setRdoVal
  8554. * Description : radio 값 조합 및 itemvalue DS 매핑
  8555. * Argument : 01. cmpInfo : checkboxList 컴포짓 ID, valueliat 그룹코드
  8556. * retrun type :
  8557. * Creator :
  8558. ****************************************************************************************/
  8559. function lf_setRdoVal(cmpInfo)
  8560. {
  8561. utlf_addLog("***** lf_setRdoVal("+cmpInfo+") *****");
  8562. var arrTemp = new Array();
  8563. arrTemp = cmpInfo.split(", ");
  8564. var dsNM = "ds_data_V_"+arrTemp[1];
  8565. var objComp = getFocus(); // 포커스 아이템 obj 전달
  8566. var orgValue = ds_data_itemvalue.getColumn(0, arrTemp[0]);
  8567. var degnitemno = arrTemp[0].replace("RDO_","");
  8568. var nRow = ds_data_recitem.findRowExpr("degnitemno == '"+ degnitemno +"' && degnitemkind == 'RDO'");
  8569. if(orgValue == getData())
  8570. {
  8571. setData("");
  8572. ds_data_itemvalue.setColumn(0, arrTemp[0], "");
  8573. ds_data_recitem.setColumn(nRow, "rectermnm", rdolabel);
  8574. ds_data_recitem.setColumn(nRow, "rowno", "");
  8575. }
  8576. else
  8577. {
  8578. var rdolabel = lf_getValist(dsNM, getData());
  8579. var nDegnitempnts = lf_getValitempnt(dsNM, getData());
  8580. ds_data_itemvalue.setColumn(0, arrTemp[0], getData());
  8581. ds_data_recitem.setColumn(nRow, "rectermnm", rdolabel);
  8582. utlf_addLog("nRow : " + nRow + " || rectermnm : " + rdolabel);
  8583. if( !utlf_isNull(nDegnitempnts) ){
  8584. ds_data_recitem.setColumn(nRow, "rowno", nDegnitempnts);
  8585. }
  8586. }
  8587. if(!utlf_isNull(objComp))
  8588. lf_dsBind(objComp);
  8589. }
  8590. /****************************************************************************************
  8591. * Function : lf_setSelCtrl
  8592. * Description : RDO, CHK 컨트롤에 값 반영
  8593. * Argument : 01. itemName : 컨트롤ID 명
  8594. * Argument : 02. nVal : 세팅될 값
  8595. * retrun type :
  8596. * Creator :
  8597. ****************************************************************************************/
  8598. function lf_setSelCtrl(itemName, nVal, objRecDS)
  8599. {
  8600. if(itemName.indexOf("EXTN") == -1)
  8601. {
  8602. for(var i = 0; i < eval(itemName).components.length; i++)
  8603. {
  8604. var ctrl = eval(itemName).components[i];
  8605. var ctrlNm = ctrl.name;
  8606. if(ctrlNm.indexOf("CHK") != -1)
  8607. {
  8608. var cnrlColno = ctrl.colno;
  8609. var cnrlTrueValue = ctrl.truevalue;
  8610. var degnitemno = itemName.replace("CHK_","");
  8611. var arrTemp = new Array();
  8612. var strtIndx = 0;
  8613. if(!utlf_isNull(objRecDS)){
  8614. var nRow = objRecDS.findRowExpr("degnitemno == '"+ degnitemno +"' && colno == '"+ ctrl.colno +"' && degnitemkind == 'CHK'", strtIndx);
  8615. if(nRow != -1)
  8616. {
  8617. strtIndx = nRow;
  8618. nVal = objRecDS.getColumn(nRow, "rectermcd");
  8619. // 2017.07.20 CHK OBJECT CHECK
  8620. if( nVal != cnrlTrueValue ){
  8621. if( eval(itemName).objects["ds_checkList"] != null ){
  8622. var nFindRow = eval(itemName).ds_checkList.findRow("val", nVal);
  8623. if( nFindRow > -1 ){
  8624. ctrl = eval(itemName).components[nFindRow];
  8625. }
  8626. }
  8627. }
  8628. ctrl.value = nVal;
  8629. }
  8630. }
  8631. ctrl.value = nVal;
  8632. }
  8633. else
  8634. {
  8635. ctrl.value = nVal;
  8636. }
  8637. }
  8638. if(fGetFormRec("status") == "C")
  8639. //fReCalculate(eval(itemName)); // 산술식 적용
  8640. }
  8641. }
  8642. /****************************************************************************************
  8643. * Function : lf_setGrdDS
  8644. * Description : GRD에 바인딩된 DS에 기록값 세팅
  8645. * Argument : 01. GrdNm : 그리드 ID
  8646. * : 02. ObjRecDS : 기록데이터가 있는 div
  8647. * : 02. Obj : 해당 Obj
  8648. * retrun type :
  8649. * Creator :
  8650. ****************************************************************************************/
  8651. function lf_setGrdDS(GrdNm, ObjRecDS, Obj:Div)
  8652. {
  8653. // degnitemkind == 'GSU' ADD
  8654. ObjRecDS.ds_data_recitem.filter("degnitemkind == 'GRD' || degnitemkind == 'GSU'");
  8655. var nRow = "";
  8656. var nCol = "";
  8657. var nReccnts = "";
  8658. var nRectermcd = "";
  8659. var dsNm = "ds_data_"+GrdNm.toLowerCase();
  8660. // eval(Obj.name +"."+ dsNm).clearData();
  8661. // if(eval(Obj.name +"."+ dsNm).addRow();
  8662. for(i = 0; i < ObjRecDS.ds_data_recitem.rowcount; i++)
  8663. {
  8664. nRow = ObjRecDS.ds_data_recitem.getColumn(i, "rowno");
  8665. nCol = ObjRecDS.ds_data_recitem.getColumn(i, "colno");
  8666. nReccnts = ObjRecDS.ds_data_recitem.getColumn(i, "reccnts");
  8667. nRectermcd = ObjRecDS.ds_data_recitem.getColumn(i, "rectermcd");
  8668. if(nCol < 0 || nRow < 0)
  8669. continue;
  8670. if(nReccnts != "" && nReccnts != undefined)
  8671. eval(Obj.name +"."+ dsNm).setColumn(toNumber(nRow), toNumber(nCol), nReccnts);
  8672. else if(nRectermcd != "" && nRectermcd != undefined)
  8673. eval(Obj.name +"."+ dsNm).setColumn(toNumber(nRow), toNumber(nCol), nRectermcd);
  8674. }
  8675. ObjRecDS.ds_data_recitem.filter("");
  8676. }
  8677. /////////////////////////////////////////////////////////
  8678. //////////////////// EMRCommon ///////////////////////
  8679. /////////////////////////////////////////////////////////
  8680. /**********************************************************************************
  8681. * Method Name : ITEMVAL
  8682. * Description : 아이템 value 변수 초기화
  8683. * argument :
  8684. * return Type :
  8685. * Creator : 서식관련 MMRCommon으로 이동
  8686. **********************************************************************************/
  8687. function ITEMVAL()
  8688. {
  8689. this.rectermcd = "";
  8690. this.rectermnm = "";
  8691. this.reccnts = "";
  8692. this.recimge = "";
  8693. }
  8694. /**********************************************************************************
  8695. * Method Name : PARAM
  8696. * Description :
  8697. * argument : 01. name
  8698. * : 02. value
  8699. * return Type :
  8700. * Creator : 서식관련 MMRCommon으로 이동
  8701. **********************************************************************************/
  8702. function PARAM(name, value)
  8703. {
  8704. this.name = name;
  8705. this.value = value;
  8706. }
  8707. /**********************************************************************************
  8708. * Method Name : getStyleValue
  8709. * Description : 컨트롤의 스타일 값 가져오기
  8710. * argument : 01. attrs :
  8711. * : 02. attrNm :
  8712. * : 03. ctrltype:
  8713. * return Type :
  8714. * Creator : 서식관련 MMRCommon으로 이동
  8715. **********************************************************************************/
  8716. function getStyleValue(attrs, attrNm, ctrltype)
  8717. {
  8718. utlf_addLog("***** getStyleValue("+attrs+", "+attrNm+", "+ctrltype+") EMRCommon -> MMRCommon *****");
  8719. if(!utlf_isNull(ctrltype))
  8720. attrNm = ctrltype + "." + attrNm;
  8721. var arrAttrs = attrs.split(";");
  8722. for(var i = 0; i < arrAttrs.length; i++)
  8723. {
  8724. var arrAttr = arrAttrs[i].split(":");
  8725. if(arrAttr.length == 0)
  8726. continue;
  8727. if(arrAttr[0] == attrNm)
  8728. {
  8729. return arrAttr[1];
  8730. }
  8731. }
  8732. return "";
  8733. }
  8734. /**********************************************************************************
  8735. * Method Name : clearData
  8736. * Description : Data Clear
  8737. * argument :
  8738. * return Type :
  8739. * Creator : 서식관련 MMRCommon으로 이동 (lf_clearFormRec 로 통합 사용안함)
  8740. **********************************************************************************/
  8741. function lf_clearData()
  8742. {
  8743. utlf_addLog("***** lf_clearData() EMRCommon -> MMRCommon *****");
  8744. // 특수서식은 temp recitem 이 없다.
  8745. dsf_copyDsList(arrDsRecinfo, arrDsTempRecinfo, "replace", this, this);
  8746. lf_setItemValueDS();
  8747. // ds_data_itemvalue.clearData();
  8748. // ds_data_itemvalue.addRow();
  8749. dsf_clearDsList(arrDsExtnRecinfo, this);
  8750. dsf_clearDsList(["ds_hidden_recitem"], this);
  8751. clearImgeData();
  8752. }
  8753. /**********************************************************************************
  8754. * Method Name : clearImgeData
  8755. * Description : 이미지데이터를 clear한다
  8756. * argument : 01. targetPath
  8757. * : 02. appendMode
  8758. * : 03. pmodel
  8759. * : 04. pageInfo
  8760. * : 05. mode
  8761. * return Type :
  8762. * Creator : 서식관련 MMRCommon으로 이동 (lf_clearFormRec 로 통합 사용안함)
  8763. **********************************************************************************/
  8764. function clearImgeData()
  8765. {
  8766. utlf_addLog("***** clearImgeData() EMRCommon -> MMRCommon *****");
  8767. var pageInfo = new PAGEINFO();
  8768. var nodeListDs = this.objects["ds_data_recitem"];
  8769. var nodeListDsCnt = nodeListDs == null ? 0 : nodeListDs.getCaseCount("degnitemkind == 'IMG'");
  8770. // 공통서식인지 과별서식인지 구분
  8771. var FormInfoNodeDs = this.objects["ds_data_formmast"];//instance1.selectNodes(pageInfo.formmastRef);
  8772. var FormInfoNodeDsCnt = FormInfoNodeDs == null ? 0 : FormInfoNodeDs.rowcount;
  8773. var isFormMain = "";
  8774. if(FormInfoNodeDsCnt > 0)
  8775. {
  8776. //var formmastInfoNode = FormInfoNode.item(0);
  8777. var formprogflag = FormInfoNodeDs.getColumn(i, "formprogflag");
  8778. var formprognm = FormInfoNodeDs.getColumn(i, "formprognm");
  8779. var formkind = FormInfoNodeDs.getColumn(i, "formkind");
  8780. if(formprognm != "-" && formkind == "C" && formprogflag != "-")
  8781. {
  8782. isFormMain = true;
  8783. }
  8784. else
  8785. {
  8786. isFormMain = false;
  8787. }
  8788. }
  8789. if( nodeListDsCnt > 0 )
  8790. nodeListDs.filter("degnitemkind == 'IMG'");
  8791. for(var i = 0; i < nodeListDsCnt; i++)
  8792. {
  8793. //var itemNode = nodeList.item(i);
  8794. var degnitemno = nodeListDs.getColumn(i, "degnitemno");
  8795. var degnitemcd = nodeListDs.getColumn(i, "degnitemcd");
  8796. var degnitemlevlcd = nodeListDs.getColumn(i, "degnitemlevlcd");
  8797. var formdegnRefDs = this.objects["ds_data_formdegn"];
  8798. utlf_addLog(" @@@@@ formdegnRefDs : " + formdegnRefDs + " MMRCommon clearImageData @@@@@");
  8799. var itemattrval = formdegnRefDs == null ? "" : formdegnRefDs.lookup("degnitemno", degnitemno, "itemattrval");
  8800. var imgedit = getStyleValue(itemattrval, "imgedit");
  8801. if(imgedit != "Y")
  8802. continue;
  8803. var degnattrval = formdegnRefDs.lookup("degnitemno", degnitemno, "degnattrval");
  8804. var ctrlwidth = getStyleValue(degnattrval, "ctrl.width");
  8805. var ctrlheight = getStyleValue(degnattrval, "ctrl.height");
  8806. var ctrlid = "IMG_" + degnitemno;
  8807. var ctrlObj = this.components["IMG_" + degnitemno];
  8808. var strShape = ctrlObj.DeleteAllShape();
  8809. var Viewmode = ctrlObj.GetViewMode();
  8810. if(Viewmode != "1")
  8811. {
  8812. ctrlObj.SetViewMode(1);
  8813. }
  8814. if (!utlf_isNull(ctrlwidth)) // 2011-01-17 경북대 최원돈 예외사항 오류수정
  8815. {
  8816. ctrlObj.width = ctrlwidth;
  8817. }
  8818. if (!urlf_isNull(ctrlheight)) // 2011-01-17 경북대 최원돈 예외사항 오류수정
  8819. {
  8820. ctrlObj.height = ctrlheight;
  8821. }
  8822. var domain = sysf_getURLprefix();
  8823. var imgurl = GetImgUrl(degnitemcd);
  8824. var imgsrc = domain + imgurl;
  8825. ctrlObj.LoadImage(imgsrc);
  8826. }
  8827. if( nodeListDsCnt > 0 )
  8828. nodeListDs.filter("");
  8829. }
  8830. /**********************************************************************************
  8831. * Method Name : getSaveData
  8832. * Description : 저장할 기록정보를 가져온다
  8833. * argument : 01. targetPath
  8834. * : 02. appendMode
  8835. * : 03. pmodel
  8836. * : 04. pageInfo
  8837. * : 05. mode
  8838. * return Type :
  8839. * Creator : 서식관련 MMRCommon으로 이동 (lf_getRecDS 로 통합 사용안함)
  8840. **********************************************************************************/
  8841. function getSaveData(targetPath, appendMode, pmodel, pageInfo, mode)
  8842. {
  8843. utlf_addLog("***** getSaveData("+targetPath+", "+appendMode+", "+pmodel+", "+pageInfo+", "+mode+") EMRCommon *****");
  8844. if(utlf_isNull(mode))
  8845. mode = "";
  8846. if(mode == "all")
  8847. getSaveDataAll(targetPath, appendMode, pmodel, pageInfo);
  8848. else
  8849. getSaveDataVal(targetPath, appendMode, pmodel, pageInfo);
  8850. }
  8851. /**********************************************************************************
  8852. * Method Name : getSaveDataVal
  8853. * Description : 저장할 기록정보를 모두 가져온다
  8854. * argument : 01. targetPath
  8855. * : 02. appendMode
  8856. * : 03. pmodel
  8857. * : 04. pageInfo
  8858. * return Type :
  8859. * Creator : 서식관련 MMRCommon으로 이동 (lf_getRecDS 로 통합 사용안함)
  8860. **********************************************************************************/
  8861. function getSaveDataAll(targetPath, appendMode, pmodel, pageInfo)
  8862. {
  8863. utlf_addLog("***** MMRCommon getSaveDataAll("+targetPath+", "+appendMode+", "+pmodel+", "+pageInfo+") EMRCommon*****");
  8864. if(utlf_isNull(pageInfo))
  8865. pageInfo = new PAGEINFO();
  8866. if(utlf_isNull(pmodel))
  8867. pmodel == this;
  8868. dsf_clearDsList( pageInfo.savedInfoRef2 );
  8869. utlf_addLog("model.makeValue(pageInfo.savedInfoRef2... 체크필요");
  8870. // model.removeNodeset(pageInfo.savedInfoRef2);
  8871. // model.makeValue(pageInfo.savedInfoRef2, "");
  8872. var recItemRefDs = this.objects[pageInfo.recItemRef];
  8873. var nodeListCnt = 0;
  8874. if( !utlf_isNull(recItemRefDs) ){
  8875. recItemRefDs.filter("degnitemkind != 'GRD' && degnitemkind != 'IMG'");
  8876. nodeListCnt = recItemRefDs.rowcount;
  8877. //temp
  8878. dsf_create("tmp_recItemRefDs");
  8879. tmp_recItemRefDs.copyDs(recItemRefDs, true);
  8880. recItemRefDs.filter("");
  8881. }
  8882. //var nodeList = model.instances(0).selectNodes(pageInfo.recItemRef + "[degnitemkind != 'GRD' and degnitemkind != 'IMG']");
  8883. for(var i = 0; i < nodeListCnt; i++)
  8884. {
  8885. var condition = "";
  8886. //var itemsNode = nodeList.item(i);
  8887. var degnitemnoNode = tmp_recItemRefDs.getColumn(i, "degnitemno");
  8888. if(utlf_isNull(degnitemnoNode))
  8889. continue;
  8890. var rowCondition = "";
  8891. if(utlf_isNull(condition))
  8892. condition = "degnitemno == '" + degnitemnoNode + "'" + rowCondition;
  8893. else
  8894. condition += " || degnitemno == '" + degnitemnoNode + "'" + rowCondition;
  8895. var supdegnitemno = (this.objects[gPrePath_formdegnRef]).lookup("degnitemno", degnitemnoNode, "supdegnitemno");
  8896. if(!utlf_isNull(supdegnitemno))
  8897. condition = getSaveDataParent(supdegnitemno, condition);
  8898. if(!utlf_isNull(condition)){
  8899. //copyNodeset(pageInfo.savedInfoItemRef2, gPrePath_recItemRef + condition + "]", "append", model, model);
  8900. var savedInfoItemRef2Ds = this.objects[pageInfo.savedInfoItemRef2];
  8901. var recItemRefDs = this.objects[gPrePath_recItemRef];
  8902. if( utlf_isNull(savedInfoItemRef2Ds) ){
  8903. dsf_createDs( pageInfo.savedInfoItemRef2 );
  8904. dsf_copyColInfo( savedInfoItemRef2Ds, recItemRefDs );
  8905. }
  8906. recItemRefDs.filter( condition );
  8907. savedInfoItemRef2Ds.appendData( recItemRefDs );
  8908. recItemRefDs.filter( "" );
  8909. }
  8910. condAll += condition;
  8911. }
  8912. getCheckSaveData(pageInfo);
  8913. if(!utlf_isNull(this.objects[pageInfo.savedInfoItemRef2]) && (this.objects[pageInfo.savedInfoItemRef2]).rowcount > 0)
  8914. {
  8915. if(!utlf_isNull(pageInfo.formCd))
  8916. {
  8917. var idx = getNodesetCnt(pmodel, targetPath) + 1;
  8918. pmodel.makeValue(targetPath + "[" + idx + "]/instcd", "");
  8919. pmodel.makeValue(targetPath + "[" + idx + "]/rechistseq", "");
  8920. pmodel.makeValue(targetPath + "[" + idx + "]/recitemno", "");
  8921. pmodel.makeValue(targetPath + "[" + idx + "]/fstlevlitemcd", pageInfo.fstLevlItemCd);
  8922. pmodel.makeValue(targetPath + "[" + idx + "]/formcd", pageInfo.formCd);
  8923. pmodel.makeValue(targetPath + "[" + idx + "]/formdegnseq", pageInfo.formDegnSeq);
  8924. pmodel.makeValue(targetPath + "[" + idx + "]/degnitemno", pageInfo.degnItemNo);
  8925. pmodel.makeValue(targetPath + "[" + idx + "]/degnitemcd", pageInfo.degnItemCd);
  8926. pmodel.makeValue(targetPath + "[" + idx + "]/degnitemkind", pageInfo.degnitemkind);
  8927. pmodel.makeValue(targetPath + "[" + idx + "]/degnitemlevlno", pageInfo.degnitemlevlno);
  8928. pmodel.makeValue(targetPath + "[" + idx + "]/degnitemnm", pageInfo.degnitemnm);
  8929. pmodel.makeValue(targetPath + "[" + idx + "]/rectermnm", pageInfo.rectermnm);
  8930. pmodel.makeValue(targetPath + "[" + idx + "]/degnitemlevlcd", pageInfo.degnItemLevlCd);
  8931. pmodel.makeValue(targetPath + "[" + idx + "]/rectermcd", "");
  8932. pmodel.makeValue(targetPath + "[" + idx + "]/recrefcd", "");
  8933. pmodel.makeValue(targetPath + "[" + idx + "]/recitemnm", "");
  8934. pmodel.makeValue(targetPath + "[" + idx + "]/reccnts", "");
  8935. pmodel.makeValue(targetPath + "[" + idx + "]/recimge", "");
  8936. pmodel.makeValue(targetPath + "[" + idx + "]/srcimge", "");
  8937. pmodel.makeValue(targetPath + "[" + idx + "]/rowno", "");
  8938. pmodel.makeValue(targetPath + "[" + idx + "]/colno", "");
  8939. }
  8940. copyNodeset(targetPath, pageInfo.savedInfoItemRef2, appendMode, pmodel, model);
  8941. }
  8942. }
  8943. /**********************************************************************************
  8944. * Method Name : getSaveDataVal
  8945. * Description : 저장할 기록정보 값을 가져온다
  8946. * argument : 01. targetPath
  8947. * : 02. appendMode
  8948. * : 03. pmodel
  8949. * : 04. pageInfo
  8950. * return Type :
  8951. * Creator : 서식관련 MMRCommon으로 이동 (lf_getRecDS 로 통합 사용안함)
  8952. **********************************************************************************/
  8953. function getSaveDataVal(targetPath, appendMode, pmodel, pageInfo)
  8954. {
  8955. utlf_addLog("***** getSaveDataVal("+targetPath+", "+appendMode+", "+pmodel.name+", "+pageInfo+") EMRCommon -> MMRCommon *****");
  8956. utlf_addLog("***** 저장할 기록정보 값을 가져온다 ****");
  8957. if(utlf_isNull(pageInfo))
  8958. pageInfo = new PAGEINFO();
  8959. if(utlf_isNull(pmodel))
  8960. pmodel == this;
  8961. //이미지ocx에 있는 annotation 정보 grep
  8962. getImgeData();
  8963. //그리드 데이타를 변형하기 위해 일단 main에서 hidden으로 옮긴다.
  8964. utlf_addLog(" jw.choe 그리드 데이타셋 추가 체크 필요 MMRCommon ");
  8965. dsf_clearDsList(["ds_hidden_savedinfo_recitem"], this); //
  8966. // model.removeNodeset(pageInfo.savedInfoRef2);
  8967. // model.makeValue(pageInfo.savedInfoRef2, "");
  8968. if( pmodel.objects[targetPath] == null ){
  8969. var objDs = new Dataset(targetPath);
  8970. pmodel.addChild(targetPath, objDs);
  8971. objDs.name = targetPath;
  8972. }
  8973. getGridSaveData(pageInfo);
  8974. /////////////////////////////
  8975. // 2010.02.08, 주희경 수정
  8976. // 기본서식 기록 데이터가 없고 [추가기록, 이미지, 가계도, 확장서식]의 데이터가 있는경우 부분서식 타이틀 저장을 위해 체크 및 데이터 셋팅
  8977. var expr = "!utlf_isNull(rectermcd) || !utlf_isNull(reccnts)";
  8978. var etcrecItemRefDs = this.objects["ds_temp_etcrec_recitem"];
  8979. var etcrecItemRefCnt = etcrecItemRefDs == null ? 0 : etcrecItemRefDs.getCaseCount(expr);
  8980. //추가기록이 존재하면 기본서식 노드리스트의 헤더에 값을 셋팅
  8981. if ( etcrecItemRefCnt > 0 )
  8982. {
  8983. etcrecItemRefDs.filter(expr);
  8984. fSetFormRecItemHeader(pageInfo, etcrecItemRefDs, false);
  8985. etcrecItemRefDs.filter("");
  8986. //fSetFormRecItemHeader(pageInfo, etcrecNodeList, false);
  8987. }
  8988. var imgerecItemRefDs = this.objects["ds_temp_imgerec_recitem"];
  8989. var imgerecItemRefCnt = imgerecItemRefDs == null ? 0 : imgerecItemRefDs.getCaseCount(expr);
  8990. //이미지가 존재하면 기본서식 노드리스트의 헤더에 값을 셋팅
  8991. if ( imgerecItemRefCnt > 0 )
  8992. {
  8993. imgerecItemRefDs.filter(expr);
  8994. fSetFormRecItemHeader(pageInfo, imgerecItemRefDs, false);
  8995. imgerecItemRefDs.filter("");
  8996. //fSetFormRecItemHeader(pageInfo, imgrecNodeList, false);
  8997. }
  8998. var fmyrecItemRefDs = this.objects["ds_temp_fmyrec_recitem"];
  8999. var fmyrecItemRefCnt = fmyrecItemRefDs == null ? 0 : fmyrecItemRefDs.getCaseCount(expr);
  9000. //가계도가 존재하면 기본서식 노드리스트의 헤더에 값을 셋팅
  9001. if ( fmyrecItemRefCnt > 0 )
  9002. {
  9003. fmyrecItemRefDs.filter(expr);
  9004. fSetFormRecItemHeader(pageInfo, fmyrecItemRefDs, false);
  9005. fmyrecItemRefDs.filter("");
  9006. //fSetFormRecItemHeader(pageInfo, fmyrecNodeList, false);
  9007. }
  9008. var extnrecRefDs = this.objects["ds_hidden_extnformrec_recitem"];//pageInfo.extnrecRef
  9009. var extnrecRefCnt = extnrecRefDs == null ? 0 : extnrecRefDs.getCaseCount(expr);
  9010. //확장서식 데이터가 존재하면 기본서식 노드리스트의 헤더에 값을 셋팅
  9011. if ( extnrecRefCnt > 0 )
  9012. {
  9013. extnrecRefDs.filter(expr);
  9014. fSetFormRecItemHeader(pageInfo, extnrecRefDs, false);
  9015. extnrecRefDs.filter("");
  9016. //fSetFormRecItemHeader(pageInfo, extnecNodeList, false);
  9017. }
  9018. //
  9019. /////////////////////////////////////////////
  9020. // 그리드 이외의 아이템 노드리스트를 가져온다.
  9021. //var nodeList = model.instances(0).selectNodes(pageInfo.recItemRef + "[(rectermcd != '' or reccnts != '') and degnitemkind != 'GRD' and degnitemkind != 'GSU']");
  9022. ds_data_recitem.filter("(!utlf_isNull(rectermcd) || !utlf_isNull(reccnts)) && degnitemkind != 'GRD' && degnitemkind != 'GSU'");
  9023. var nodeListCnt = ds_data_recitem.rowcount;
  9024. if( nodeListCnt > 0 ){
  9025. dsf_createDs("tmp_ds_data_recitem");
  9026. tmp_ds_data_recitem.copyData(ds_data_recitem, true);
  9027. }
  9028. ds_data_recitem.filter("");
  9029. //////////////////////////
  9030. // 2010.02.08, 주희경 수정
  9031. // 기본 서식의 타이틀에 셋팅한 데이터 원복
  9032. //추가기록, 기본 서식의 타이틀에 셋팅한 데이터 원복
  9033. if ( etcrecItemRefCnt > 0 )
  9034. fSetFormRecItemHeader(pageInfo, etcrecItemRefDs, true);
  9035. //이미지, 기본 서식의 타이틀에 셋팅한 데이터 원복
  9036. if ( imgerecItemRefCnt > 0 )
  9037. fSetFormRecItemHeader(pageInfo, imgerecItemRefDs, true);
  9038. //가계도, 기본 서식의 타이틀에 셋팅한 데이터 원복
  9039. if ( fmyrecItemRefCnt > 0 )
  9040. fSetFormRecItemHeader(pageInfo, fmyrecItemRefDs, true);
  9041. //확장서식, 기본 서식의 타이틀에 셋팅한 데이터 원복
  9042. if ( extnrecRefCnt > 0 )
  9043. fSetFormRecItemHeader(pageInfo, extnrecRefDs, true);
  9044. //
  9045. //////////////////////////////
  9046. // grdClone은 <grid> 의 row 하나를 뜻함.
  9047. for(var i = 0; i < nodeListCnt; i++)
  9048. {
  9049. var condition = "";
  9050. var itemsNode = tmp_ds_data_recitem; //nodeList.item(i); // 값이 있는 단일 노드
  9051. var degnitemnoNode = itemsNode.getColumn(i, "degnitemno"); // itemsNode의 degnitemno값
  9052. var degnitemnmNode = itemsNode.getColumn(i, "degnitemnm"); // itemsNode의 degnitemnm값
  9053. var degnitemkindNode = itemsNode.getColumn(i, "degnitemkind"); // itemsNode의 degnitemkind값
  9054. var RecCntsNode = itemsNode.getColumn(i, "reccnts"); // itemsNode의 reccnts값
  9055. var recimgeNode = itemsNode.getColumn(i, "recimge"); // itemsNode의 reccnts값
  9056. var subrecrefcdNode = itemsNode.getColumn(i, "recrefcd");
  9057. var subrecitemnmNode = itemsNode.getColumn(i, "recitemnm");
  9058. var subtermcdNode = itemsNode.getColumn(i, "rectermcd");
  9059. var subfstlevlcdNode = itemsNode.getColumn(i, "fstlevlitemcd");
  9060. var sublevlcdNode = itemsNode.getColumn(i, "degnitemlevlcd");
  9061. var sublevlnoNode = itemsNode.getColumn(i, "degnitemlevlno");
  9062. utlf_addLog("@@@@@ reccnts : " + RecCntsNode + " MMRCommon " );
  9063. if(itemsNode.getColumnInfo("degnitemno") == null)
  9064. continue;
  9065. if(degnitemkindNode == "IMG" && degnitemnmNode == "빈이미지" && !utlf_isNull(RecCntsNode))
  9066. {
  9067. var tmpMeta = removeXvgTag(RecCntsNode);
  9068. if( utlf_isNull(tmpMeta))
  9069. continue;
  9070. }
  9071. var rowCondition = "";
  9072. var srchno = "'" + degnitemnoNode + "'";
  9073. if(!utlf_isSearchString(condition, srchno) && !utlf_isSearchString(condAll, srchno))
  9074. {
  9075. if(utlf_isNull(condition))
  9076. condition = "degnitemno == '" + degnitemnoNode + "'" + rowCondition;
  9077. else
  9078. condition += " || degnitemno == '" + degnitemnoNode + "'" + rowCondition;
  9079. }
  9080. var supdegnitemno = ds_data_formdegn.lookup("degnitemno", degnitemnoNode, "supdegnitemno");
  9081. if(!utlf_isNull(supdegnitemno) && supdegnitemno != "0")
  9082. condition = getSaveDataParent(supdegnitemno, condition);
  9083. if(!utlf_isNull(condition))
  9084. {
  9085. //copyNodeset(pageInfo.savedInfoItemRef2, gPrePath_recItemRef + condition + "]", "append", model, model);
  9086. ds_data_recitem.filter(condition);
  9087. dsf_copyDsList(["ds_hidden_savedinfo_recitem"], ["ds_data_recitem"], "append", this, this);
  9088. ds_data_recitem.filter("");
  9089. // MSL-SSU 데이터 체크
  9090. //var nodelist = model.instances(0).selectNodes(pageInfo.savedInfoItemRef2 + "[degnitemkind = 'MSL']");
  9091. ds_hidden_savedinfo_recitem.filter("degnitemkind == 'MSL'");
  9092. var oDs = ds_hidden_savedinfo_recitem;
  9093. for(var idx = oDs.rowcount-1; idx > -1; idx--) // jw.choe 삭제는 뒷부분부터 처리되도록 수정.
  9094. {
  9095. //var recitemNode = nodelist.item(idx);
  9096. var degnitemnm = oDs.getColumn(idx, "degnitemnm");
  9097. var degnitemno = oDs.getColumn(idx, "degnitemno");
  9098. var degnitemkind = oDs.getColumn(idx, "degnitemkind");
  9099. var degnitemlevlcd = oDs.getColumn(idx, "degnitemlevlcd");
  9100. var rectermcd = oDs.getColumn(idx, "rectermcd");
  9101. var rectermnm = oDs.getColumn(idx, "rectermnm");
  9102. var reccnts = oDs.getColumn(idx, "reccnts");
  9103. var rowno = oDs.getColumn(idx, "rowno");
  9104. var colno = oDs.getColumn(idx, "colno");
  9105. if( !utlf_isNull(rectermcd))
  9106. continue;
  9107. else if(!utlf_isNull(reccnts))
  9108. continue;
  9109. oDs.deleteRow(idx);
  9110. }
  9111. ds_hidden_savedinfo_recitem.filter("");
  9112. }
  9113. if(utlf_isNull(condAll))
  9114. condAll = condition;
  9115. else
  9116. {
  9117. if(!utlf_isNull(condition))
  9118. condAll += " || " + condition;
  9119. }
  9120. }
  9121. if( nodeListCnt > 0 ){
  9122. dsf_deleteDs("tmp_ds_data_recitem");
  9123. }
  9124. condAll = "";
  9125. getCheckSaveData(pageInfo);
  9126. var savedInfoItemRef2Ds = this.objects["ds_hidden_savedinfo_recitem"];
  9127. var savedInfoItemRef2Cnt = savedInfoItemRef2Ds == null ? 0 : savedInfoItemRef2Ds.rowcount;
  9128. if(savedInfoItemRef2Cnt > 0)
  9129. {
  9130. if(!utlf_isNull(pageInfo.formCd))
  9131. {
  9132. // pmodel : this, targetPath : ds_temp_sort_recitem
  9133. var targetPathDs = pmodel.objects[targetPath];
  9134. var idx = targetPathDs.rowcount;//getNodesetCnt(pmodel, targetPath) + 1;
  9135. dsf_makeValue(targetPathDs, "instcd", "string", "", idx);
  9136. dsf_makeValue(targetPathDs, "rechistseq", "BIGDECIMAL", "", idx);
  9137. dsf_makeValue(targetPathDs, "recitemno", "INT", "", idx);
  9138. dsf_makeValue(targetPathDs, "fstlevlitemcd", "string", pageInfo.fstLevlItemCd, idx);
  9139. dsf_makeValue(targetPathDs, "formcd", "string", pageInfo.formCd, idx);
  9140. dsf_makeValue(targetPathDs, "formdegnseq", "BIGDECIMAL", pageInfo.formDegnSeq, idx);
  9141. dsf_makeValue(targetPathDs, "degnitemno", "INT", pageInfo.degnItemNo, idx);
  9142. dsf_makeValue(targetPathDs, "degnitemcd", "string", pageInfo.degnItemCd, idx);
  9143. dsf_makeValue(targetPathDs, "degnitemkind", "string", pageInfo.degnitemkind, idx);
  9144. dsf_makeValue(targetPathDs, "degnitemlevlno", "string", pageInfo.degnitemlevlno, idx);
  9145. dsf_makeValue(targetPathDs, "degnitemnm", "string", pageInfo.degnitemnm, idx);
  9146. dsf_makeValue(targetPathDs, "rectermnm", "string", pageInfo.rectermnm, idx);
  9147. dsf_makeValue(targetPathDs, "degnitemlevlcd", "string", pageInfo.degnItemLevlCd, idx);
  9148. dsf_makeValue(targetPathDs, "rectermcd", "string", "", idx);
  9149. dsf_makeValue(targetPathDs, "recrefcd", "string", "", idx);
  9150. dsf_makeValue(targetPathDs, "recitemnm", "string", "", idx);
  9151. dsf_makeValue(targetPathDs, "reccnts", "string", "", idx);
  9152. dsf_makeValue(targetPathDs, "recimge", "BLOB", "", idx);
  9153. dsf_makeValue(targetPathDs, "srcimge", "BLOB", "", idx);
  9154. dsf_makeValue(targetPathDs, "rowno", "string", "", idx);
  9155. dsf_makeValue(targetPathDs, "colno", "string", "", idx);
  9156. dsf_makeValue(targetPathDs, "degnunitcd", "string", "", idx);
  9157. }
  9158. dsf_copyDsList([targetPath], ["ds_hidden_savedinfo_recitem"], appendMode, pmodel, this);
  9159. }
  9160. }
  9161. /**********************************************************************************
  9162. * Method Name : fSetFormRecItemHeader
  9163. * Description : 기본서식 기록 데이터가 없고 [추가기록, 이미지, 가계도, 확장서식]의 데이터가 있는경우 부분서식 타이틀 저장을 위해 체크 및 데이터 셋팅
  9164. * argument : 01. pageInfo
  9165. * : 02. etcNodeList
  9166. * : 03. resetDataFlag
  9167. * return Type :
  9168. * Creator : 서식관련 MMRCommon으로 이동 ( 추가기록, 이미지, 가계도, 확장서식 노드 삭제 및 lf_getRecDS 로 통합)
  9169. **********************************************************************************/
  9170. function fSetFormRecItemHeader(pageInfo, etcNodeList, resetDataFlag)
  9171. {
  9172. utlf_addLog("***** fSetFormRecItemHeader("+pageInfo+", "+etcNodeList+", "+resetDataFlag+") EMRCommon -> MMRCommon*****");
  9173. var tmpivwObj = "";
  9174. for(var i = 0; i < etcNodeList.rowcount; i++)
  9175. {
  9176. var etcfstlevlitemcd = etcNodeList.getColumn(i, "fstlevlitemcd");
  9177. var etcreccnts = etcNodeList.getColumn(i, "reccnts").text;
  9178. var fRow = ds_data_recitem.findRow("fstlevlitemcd", etcfstlevlitemcd);
  9179. var orgreccnts = ds_data_recitem.getColumn(fRow, "reccnts");
  9180. if (utlf_isNull(etcreccnts))
  9181. etcreccnts = etcNodeList.getColumn(i, "rectermcd");
  9182. tmpivwObj = this.components["ivw_" + etcfstlevlitemcd];
  9183. if (!resetDataFlag)
  9184. {
  9185. if(!utlf_isNull(tmpivwObj) && !utlf_isNull(tmpivwObj.url))
  9186. {
  9187. var cnt = tmpivwObj.getFormRecItemExist();
  9188. if (cnt < 1 && utlf_isNull(orgreccnts) && !utlf_isNull(etcreccnts))
  9189. {
  9190. ds_data_recitem.setColumn(fRow, "reccnts", etcreccnts);
  9191. }
  9192. }
  9193. else
  9194. {
  9195. if (utlf_isNull(orgreccnts))
  9196. {
  9197. ds_data_recitem.setColumn(fRow, "reccnts", etcreccnts);
  9198. }
  9199. }
  9200. }
  9201. else
  9202. {
  9203. if(!utlf_isNull(tmpivwObj) && !utlf_isNull(tmpivwObj.url))
  9204. {
  9205. var cnt = tmpivwObj.getFormRecItemExist();
  9206. if (cnt < 1 && orgreccnts == etcreccnts && !utlf_isNull(etcreccnts))
  9207. {
  9208. ds_data_recitem.setColumn(fRow, "reccnts", "");
  9209. }
  9210. }
  9211. else
  9212. {
  9213. if (orgreccnts == etcreccnts)
  9214. {
  9215. ds_data_recitem.setColumn(fRow, "reccnts", "");
  9216. }
  9217. }
  9218. }
  9219. }
  9220. }
  9221. /**********************************************************************************
  9222. * Method Name : selectComnuseMenu
  9223. * Description : 상용구메뉴선택
  9224. * argument :
  9225. * return Type :
  9226. * Creator : 서식관련 MMRCommon으로 이동
  9227. **********************************************************************************/
  9228. function selectComnuseMenu()
  9229. {
  9230. selectComnuse(this.frmf_getParameter("comn_srcFormCd"), this.frmf_getParameter("comn_degnitemno"), "C", this.frmf_getParameter("comn_ctrlid"));
  9231. }
  9232. /**********************************************************************************
  9233. * Method Name : selectCopyMenu
  9234. * Description : 복사하기(메뉴)
  9235. * argument :
  9236. * return Type :
  9237. * Creator : 서식관련 MMRCommon으로 이동
  9238. **********************************************************************************/
  9239. function selectCopyMenu()
  9240. {
  9241. selectCopy(this.frmf_getParameter("comn_srcFormCd"), this.frmf_getParameter("comn_degnitemno"), "C", this.frmf_getParameter("comn_ctrlid"));
  9242. }
  9243. /**********************************************************************************
  9244. * Method Name : selectCutMenu
  9245. * Description : 잘라내기(메뉴)
  9246. * argument :
  9247. * return Type :
  9248. * Creator : 서식관련 MMRCommon으로 이동
  9249. **********************************************************************************/
  9250. function selectCutMenu()
  9251. {
  9252. selectCut(this.frmf_getParameter("comn_srcFormCd"), this.frmf_getParameter("comn_degnitemno"), "C", this.frmf_getParameter("comn_ctrlid"));
  9253. }
  9254. /**********************************************************************************
  9255. * Method Name : selectSelAllMenu
  9256. * Description : 모두선택(메뉴)
  9257. * argument :
  9258. * return Type :
  9259. * Creator : 서식관련 MMRCommon으로 이동
  9260. **********************************************************************************/
  9261. function selectSelAllMenu()
  9262. {
  9263. selectSelAll(this.frmf_getParameter("comn_srcFormCd"), this.frmf_getParameter("comn_degnitemno"), "C", this.frmf_getParameter("comn_ctrlid"));
  9264. }
  9265. /**********************************************************************************
  9266. * Method Name : selectPasteMenu
  9267. * Description : 붙여넣기(메뉴)
  9268. * argument :
  9269. * return Type :
  9270. * Creator : 서식관련 MMRCommon으로 이동
  9271. **********************************************************************************/
  9272. function selectPasteMenu()
  9273. {
  9274. selectPaste(this.frmf_getParameter("comn_srcFormCd"), this.frmf_getParameter("comn_degnitemno"), "C", this.frmf_getParameter("comn_ctrlid"));
  9275. }
  9276. /**********************************************************************************
  9277. * Method Name : selectDeleteMenu
  9278. * Description : 삭제(메뉴)
  9279. * argument :
  9280. * return Type :
  9281. * Creator : 서식관련 MMRCommon으로 이동
  9282. **********************************************************************************/
  9283. function selectDeleteMenu()
  9284. {
  9285. selectDelete(this.frmf_getParameter("comn_srcFormCd"), this.frmf_getParameter("comn_degnitemno"), "C", this.frmf_getParameter("comn_ctrlid"));
  9286. }
  9287. /**********************************************************************************
  9288. * Method Name : selectComnuse
  9289. * Description : 상용구 선택
  9290. * argument :
  9291. * return Type :
  9292. * Creator : 서식관련 MMRCommon으로 이동
  9293. **********************************************************************************/
  9294. function selectComnuse(srcFormCd, degnitemno, chosflag, ctrlid)
  9295. {
  9296. utlf_addLog("***** selectComnuse("+srcFormCd+", "+degnitemno+", "+chosflag+", "+ctrlid+") *****");
  9297. // 타과인지 본인과인지 확인
  9298. var deptcd = sysf_getUserInfo("dutplcecd");
  9299. var obj = "";
  9300. var popYn = lf_isPopForm();
  9301. if( popYn )
  9302. obj = opener;
  9303. else
  9304. obj = parent;
  9305. var formmastDs = obj.objects["ds_data_formmast"];
  9306. var supformcd = "";
  9307. var supformkind = "";
  9308. if(!utlf_isNull(formmastDs))
  9309. {
  9310. var formcdNode = formmastDs.getColumn(0, "formcd");
  9311. var formprogflagNode = formmastDs.getColumn(0, "formprogflag");
  9312. var formprognmNode = formmastDs.getColumn(0, "formprognm");
  9313. var formdeptcdNode = formmastDs.getColumn(0, "formdeptcd");
  9314. var srcformcdNode = formmastDs.getColumn(0, "srcformcd");
  9315. var formkindNode = formmastDs.getColumn(0, "formkind");
  9316. supformcd = formcdNode;
  9317. supformkind = formkindNode;
  9318. // formcd로 변경
  9319. this.frmf_setParameter("comn_formprogflag", formprogflagNode);
  9320. // 공통서식인지 확인
  9321. if((formprogflagNode == "PROG" || formprogflagNode == "MAIN")
  9322. && formkindNode == "C" && !utlf_isNull(formprognmNode))
  9323. {
  9324. srcFormCd = srcformcdNode;
  9325. this.frmf_setParameter("deptflag", "U");
  9326. }
  9327. else if(formprogflagNode == "PROF") // 제증명
  9328. {
  9329. srcFormCd = srcformcdNode;
  9330. this.frmf_setParameter("deptflag", "U");
  9331. }
  9332. else // 특수서식이면
  9333. {
  9334. // 특수 서식중에 타과 서식인지 사용자부서 서식인지 확인
  9335. if(deptcd == formdeptcdNode)
  9336. {
  9337. this.frmf_setParameter("deptflag", "U");
  9338. }
  9339. else
  9340. {
  9341. this.frmf_setParameter("deptflag", "E");
  9342. this.frmf_setParameter("otherdeptcd", formdeptcdNode);
  9343. }
  9344. }
  9345. }
  9346. //var fstlevlitemcd = ds_data_recitem.lookup("degnitemno", degnitemno, "fstlevlitemcd");
  9347. this.frmf_setParameter("openmode", "select");
  9348. this.frmf_setParameter("comn_chosflag", chosflag);
  9349. //this.frmf_setParameter("comn_degnitemcd", fstlevlitemcd);
  9350. this.frmf_setParameter("comn_degnitemcd", degnitemno);
  9351. this.frmf_setParameter("comn_srcformcd", srcFormCd);
  9352. //modalForComnUse("SPMRF04900",1 ,50, 50);
  9353. frmf_modal("SPMRF04900", "SPMRF04900", "","","","","","","","","","","M");
  9354. var comnuse = this.frmf_getParameter("comncnts"); //내용
  9355. if(utlf_isNull(comnuse))
  9356. return;
  9357. //입력받은 내용 기입
  9358. fSetComnUse(comnuse, degnitemno);
  9359. this.frmf_setParameter("comncnts", ""); //내용
  9360. this.frmf_setParameter("deptflag", "");
  9361. this.frmf_setParameter("otherdeptcd", "");
  9362. }
  9363. /**********************************************************************************
  9364. * Method Name : fSetComnUse
  9365. * Description :
  9366. * argument : 01. rtn : 상용구 data
  9367. * return Type :
  9368. * Creator :
  9369. **********************************************************************************/
  9370. function fSetComnUse(rtn, degnitemno)
  9371. {
  9372. utlf_addLog("***** fSetComnUse("+rtn+") ******");
  9373. var obj = lv_rObjId;
  9374. if(lv_rArrObjInfo.length > 0){
  9375. var objParent = obj.parent;
  9376. var objDs = objParent.objects[obj.binddataset];
  9377. var nRow = lv_rArrObjInfo[0];
  9378. var arrRtn = rtn.split("▩");
  9379. var arrComnuse = arrRtn[0].split("▦");
  9380. var nRtnCnt = arrComnuse.length;
  9381. for(var i=0; i<nRtnCnt; i++){
  9382. if(!utlf_isNull(arrComnuse[i])){
  9383. objDs.setColumn(nRow, lv_rArrObjInfo[1], arrComnuse[i]);
  9384. if((nRow+1)==objDs.getRowCount()){
  9385. nRow = objDs.addRow();
  9386. }
  9387. }
  9388. }
  9389. }else{
  9390. var arrRtn = rtn.split("▩");
  9391. var selidx = obj.getSelect();
  9392. var txtSelPos = selidx[0];
  9393. var SetEndCursorPos = txtSelPos;
  9394. var curText = utlf_transNullToEmpty(obj.value);
  9395. var curTextBefore = curText.substr(0, txtSelPos).setReplaceWord("\r\n", "\n");
  9396. curTextBefore = curTextBefore.setReplaceWord("\n", "\r\n");
  9397. var curTextAfter = curText.substr(txtSelPos, curText.length).setReplaceWord("\r\n", "\n");
  9398. curTextAfter = curTextAfter.setReplaceWord("\n", "\r\n");
  9399. arrComnObj = new Array();
  9400. var tarObj = null;
  9401. var tarRecitemDs = this.objects["ds_data_recitem"];
  9402. if( this.name == "ivw_base"){
  9403. tarObj = parent;
  9404. }else{
  9405. tarObj = parent.parent.parent;
  9406. }
  9407. var formprogflag = this.frmf_getParameter("comn_formprogflag");
  9408. //var formprogflag = tarObj.ds_data_formmast.getColumn(0, "formprogflag");
  9409. utlf_addLog("curTextBefore : " + curTextBefore + " || curTextAfter : " + curTextAfter );
  9410. utlf_addLog("this.name : " + this.name + " || obj.name : " + obj.name + " || formprogflag : " + formprogflag );
  9411. utlf_addLog("rtn : " + rtn);
  9412. frmf_getComnUse(tarObj, 0);
  9413. for(var i=0; i<arrRtn.length -1; i++){
  9414. //obj 초기화
  9415. obj = lv_rObjId;
  9416. tarRecitemDs = this.objects["ds_data_recitem"];
  9417. var arrComnuse = arrRtn[i].split("▦");
  9418. var nCnt = arrComnuse.length;
  9419. //var sComnuse = arrComnuse[1]+"\n";
  9420. var sComnuse = utlf_transNullToEmpty(arrComnuse[1]).setReplaceWord("\r\n", "\n");
  9421. sComnuse = sComnuse.setReplaceWord("\n", "\r\n");
  9422. var sDegnitemcd = arrComnuse[0];
  9423. var sFstlevlitemcd = degnitemno;
  9424. //sysf_trace("degnitemno : " + degnitemno + " || sDegnitemcd : " + sDegnitemcd + " || sFstlevlitemcd : " + sFstlevlitemcd);
  9425. var objNm = obj.name;
  9426. if( formprogflag == "PROG" || formprogflag == "MAIN" ){
  9427. if( objNm.indexOf(sDegnitemcd) == -1 ){
  9428. for(var j=0; j<arrComnObj.length; j++){
  9429. var tmpComnuse = arrComnObj[j][1];
  9430. if( tmpComnuse.indexOf("tar_") > -1
  9431. && tmpComnuse.indexOf(sDegnitemcd) > -1
  9432. && (!utlf_isNull(gMaxSectionID) || arrComnObj[j][0].visible == true)
  9433. && arrComnObj[j][0].enable == true ){
  9434. obj = arrComnObj[j][0];
  9435. break;
  9436. }
  9437. }
  9438. }
  9439. }else{
  9440. if( tarObj.isValidObject("ds_data_unitformmast") == true ){
  9441. var nFindRow = tarObj.ds_data_unitformmast.findRow("orgsupdegnitemcd", sDegnitemcd);
  9442. if( nFindRow > -1 ){
  9443. // 부모 찾기
  9444. for(var j=0; j<arrComnObj.length; j++){
  9445. var sTmpIvwNm = "ivw_"+sDegnitemcd;
  9446. //var sTmpTarNm = "tar_"+sDegnitemcd;//|| tmpComnuse == sTmpTarNm
  9447. var tmpComnuse = arrComnObj[j][1];
  9448. if( tmpComnuse == sTmpIvwNm && arrComnObj[j][0].visible == true && arrComnObj[j][0].enable == true ){
  9449. var ivwRecitemDs = arrComnObj[j][0].objects["ds_data_recitem"];
  9450. if( ivwRecitemDs != null ){
  9451. var nFormcd = ivwRecitemDs.getColumn(0, "formcd");
  9452. if( nFormcd == "0000000005" || ivwRecitemDs.findRowExpr("fstlevlitemcd == '"+sDegnitemcd+"' && degnitemkind == 'MTX'") > -1 ){
  9453. tarRecitemDs = arrComnObj[j][0].objects["ds_data_recitem"];
  9454. }
  9455. }
  9456. }
  9457. }
  9458. }
  9459. }
  9460. var nFindRow = tarRecitemDs.findRowExpr("fstlevlitemcd == '"+sDegnitemcd+"' && degnitemkind == 'MTX'");
  9461. var nFormcd = tarRecitemDs.getColumn(0, "formcd");
  9462. var sTmpDegnitemno = tarRecitemDs.getColumn(nFindRow, "degnitemno");
  9463. if( nFormcd == "0000000005" ) sTmpDegnitemno = "1";
  9464. utlf_addLog("sTmpDegnitemno : " + sTmpDegnitemno);
  9465. if( !utlf_isNull(sTmpDegnitemno) ){
  9466. var sTmpNm = "MTX_" + sTmpDegnitemno;
  9467. // if( objNm != sTmpNm ){
  9468. for(var j=0; j<arrComnObj.length; j++){
  9469. var tmpComnuse = arrComnObj[j][1];
  9470. utlf_addLog("arrComnObj[j][2] : " + arrComnObj[j][2] + " || tarObj.name : " + tarObj.name);
  9471. if( tmpComnuse == sTmpNm
  9472. && !utlf_isNull(arrComnObj[j][2])
  9473. && (arrComnObj[j][2].indexOf(sDegnitemcd) > -1 || arrComnObj[j][2] == "ivw_base")
  9474. && arrComnObj[j][0].visible == true && arrComnObj[j][0].enable == true ){
  9475. obj = arrComnObj[j][0];
  9476. break;
  9477. }
  9478. }
  9479. // }
  9480. }
  9481. }
  9482. if(utlf_isNull(obj.value)){
  9483. obj.value = sComnuse;
  9484. }else{
  9485. if( sFstlevlitemcd == sDegnitemcd ){
  9486. obj.value = curTextBefore + sComnuse + curTextAfter;
  9487. SetEndCursorPos += sComnuse.length;
  9488. }else{
  9489. obj.value += "\n" + sComnuse;
  9490. }
  9491. }
  9492. obj.setCaretPos(SetEndCursorPos);
  9493. fComnFormMtxChanged(obj);
  9494. }
  9495. }
  9496. }
  9497. var arrComnObj;
  9498. function frmf_getComnUse(obj, seq)
  9499. {
  9500. var sType;
  9501. for(var i = 0 ; i < obj.components.length; i++ )
  9502. {
  9503. sType = obj.components[i].toString().toUpperCase();
  9504. switch(sType) {
  9505. case "[OBJECT TEXTAREA]":
  9506. case "[OBJECT MASKEDIT]":
  9507. case "[OBJECT TABPAGE]":
  9508. case "[OBJECT DIV]":
  9509. break;
  9510. default:
  9511. continue;
  9512. break;
  9513. }
  9514. arrComnObj[seq] = new Array(3);
  9515. arrComnObj[seq][0] = obj.components[i];
  9516. arrComnObj[seq][1] = obj.components[i].name;
  9517. if( !utlf_isNull(obj.components[i].parent) )
  9518. arrComnObj[seq][2] = obj.components[i].parent.name;
  9519. utlf_addLog("obj.components[i].name : " + obj.components[i].name );
  9520. ++seq;
  9521. if (obj.components[i].components)
  9522. {
  9523. switch(sType) {
  9524. case "[OBJECT TABPAGE]":
  9525. case "[OBJECT DIV]":
  9526. //if(utlf_isNull(obj.components[i].url == true)) seq = frmf_getComnUse(obj.components[i], seq);
  9527. seq = frmf_getComnUse(obj.components[i], seq);
  9528. break;
  9529. }
  9530. }
  9531. }
  9532. return seq;
  9533. }
  9534. /**********************************************************************************
  9535. * Method Name : selectCopy
  9536. * Description : 복사하기
  9537. * argument : 01. srcFormcd
  9538. * : 02. degnitemnm
  9539. * : 03. chosflag
  9540. * : 04. ctrlid
  9541. * return Type :
  9542. * Creator : 서식관련 MMRCommon으로 이동
  9543. **********************************************************************************/
  9544. function selectCopy(srcFormCd, degnitemno, chosflag, ctrlid)
  9545. {
  9546. utlf_addLog("***** selectCopy("+srcFormCd+", "+degnitemno+", "+chosflag+", "+ctrlid+") *****");
  9547. var obj = lv_rObjId;
  9548. system.setClipboard("CF_TEXT", obj.getSelectedText());
  9549. }
  9550. /**********************************************************************************
  9551. * Method Name : selectCut
  9552. * Description : 잘라내기
  9553. * argument : 01. srcFormcd
  9554. * : 02. degnitemnm
  9555. * : 03. chosflag
  9556. * : 04. ctrlid
  9557. * return Type :
  9558. * Creator : 서식관련 MMRCommon으로 이동
  9559. **********************************************************************************/
  9560. function selectCut(srcFormCd, degnitemno, chosflag, ctrlid)
  9561. {
  9562. utlf_addLog("***** selectCut("+srcFormCd+", "+degnitemno+", "+chosflag+", "+ctrlid+") *****");
  9563. var obj = lv_rObjId;
  9564. system.setClipboard("CF_TEXT", obj.getSelectedText());
  9565. obj.setSelectedText("");
  9566. fComnFormMtxChanged(obj);
  9567. }
  9568. /**********************************************************************************
  9569. * Method Name : selectDelete
  9570. * Description : 삭제
  9571. * argument : 01. srcFormcd
  9572. * : 02. degnitemnm
  9573. * : 03. chosflag
  9574. * : 04. ctrlid
  9575. * return Type :
  9576. * Creator : 서식관련 MMRCommon으로 이동
  9577. **********************************************************************************/
  9578. function selectDelete(srcFormCd, degnitemno, chosflag, ctrlid)
  9579. {
  9580. utlf_addLog("***** selectDelete("+srcFormCd+", "+degnitemno+", "+chosflag+", "+ctrlid+") *****");
  9581. var obj = lv_rObjId;
  9582. obj.setSelectedText("");
  9583. fComnFormMtxChanged(obj);
  9584. }
  9585. /**********************************************************************************
  9586. * Method Name : selectSelAll
  9587. * Description : 모두선택
  9588. * argument : 01. srcFormcd
  9589. * : 02. degnitemnm
  9590. * : 03. chosflag
  9591. * : 04. ctrlid
  9592. * return Type :
  9593. * Creator : 서식관련 MMRCommon으로 이동
  9594. **********************************************************************************/
  9595. function selectSelAll(srcFormCd, degnitemno, chosflag, ctrlid)
  9596. {
  9597. utlf_addLog("***** selectSelAll("+srcFormCd+", "+degnitemno+", "+chosflag+", "+ctrlid+") *****");
  9598. var obj = lv_rObjId;
  9599. obj.setSelect(0, -1);
  9600. /*
  9601. if(ctrlid == null)
  9602. ctrlid = "MTX_" + degnitemno;
  9603. var ctrl = document.controls(ctrlid);
  9604. ctrl.selBegin = 0;
  9605. ctrl.selEnd = (ctrl.currentText).length;
  9606. */
  9607. }
  9608. /**********************************************************************************
  9609. * Method Name : selectPaste
  9610. * Description : 붙여넣기
  9611. * argument : 01. srcFormcd
  9612. * : 02. degnitemnm
  9613. * : 03. chosflag
  9614. * : 04. ctrlid
  9615. * return Type :
  9616. * Creator : 서식관련 MMRCommon으로 이동
  9617. **********************************************************************************/
  9618. function selectPaste(srcFormCd, degnitemno, chosflag, ctrlid)
  9619. {
  9620. utlf_addLog("***** selectPaste("+srcFormCd+", "+degnitemno+", "+chosflag+", "+ctrlid+") *****");
  9621. var obj = lv_rObjId;
  9622. var selidx = obj.getSelect();
  9623. var curText = utlf_transNullToEmpty(obj.value);
  9624. var curTextBefore = curText.substr(0, selidx[0]);
  9625. var curTextAfter = curText.substr(selidx[1], curText.length);
  9626. var comncnts = escape(system.getClipboard("CF_TEXT"));
  9627. if( !utlf_isNull(comncnts) ){
  9628. comncnts = comncnts.setReplaceWord("%0D%0A", "%0A");
  9629. var tmpVal = curTextBefore.setReplaceWord("\r\n", "\n") + unescape(comncnts) + curTextAfter.setReplaceWord("\r\n", "\n");
  9630. tmpVal = tmpVal.setReplaceWord("\n", "\r\n");
  9631. obj.value = tmpVal;
  9632. obj.setCaretPos(selidx[0]);
  9633. fComnFormMtxChanged(obj);
  9634. }
  9635. }
  9636. /****************************************************************************************
  9637. * Function : getFormRecItemExist
  9638. * Description : 기록아이템 값을 가져온다
  9639. * Argument : 01. :
  9640. * retrun type :
  9641. * Creator : 서식관련 MMRCommon으로 이동
  9642. ****************************************************************************************/
  9643. function getFormRecItemExist()
  9644. {
  9645. utlf_addLog("***** getFormRecItemExist() 기록아이템값 조회 EMRCommon -> MMRCommon *****")
  9646. var iNodeCnt = 0;
  9647. var iNodeCnt = ds_data_recitem.getCaseCount("!utlf_isNull(reccnts) || !utlf_isNull(rectermcd) || !utlf_isNull(rectermnm)");
  9648. return iNodeCnt;
  9649. }
  9650. /****************************************************************************************
  9651. * Function : dispOnLoadComplete
  9652. * Description : 부모 화면으로 onloadcomplete 이벤트를 dispatch
  9653. * Argument : 01. curformtype : 로딩이 완료된 서식의 종류 (COMN_FORM/UNIT_FORM/GENL_FORM)
  9654. * 02. formcd : iviewer에 로딩된 서식의 코드
  9655. * retrun type :
  9656. * Creator : 서식관련 MMRCommon으로 이동
  9657. ****************************************************************************************/
  9658. function dispOnLoadComplete(curformtype, formcd)
  9659. {
  9660. utlf_addLog("***** dispOnLoadComplete("+curformtype+", "+formcd+") EMRCommon -> MMRCommon*****");
  9661. var oParent = null;
  9662. var Obj = lf_getObj(this);
  9663. if( Obj.name == "ivw_base" ){
  9664. oParent = parent;
  9665. }else if( Obj.name == "ivw_loader" ){
  9666. oParent = parent;
  9667. }else{
  9668. oParent = parent.parent;
  9669. }
  9670. if(utlf_isNull(oParent))
  9671. return;
  9672. oParent.frmf_setParameter("loadstatus", curformtype);
  9673. oParent.frmf_setParameter("loadformcd", formcd);
  9674. oParent.lf_onloadcomplete();
  9675. }
  9676. /****************************************************************************************
  9677. * Function : setFstLevlItemCd
  9678. * Description : 부분서식의 아이템에 부분서식 상위코드를 세팅
  9679. * Argument : 01. ivwObj : 최상위 아이템 코드를 세팅할 iviewer 객체
  9680. * 02. formcd : iviewer에 로딩된 서식의 코드
  9681. * retrun type :
  9682. * Creator : 서식관련 MMRCommon으로 이동(사용안함)
  9683. ****************************************************************************************/
  9684. function setFstLevlItemCd(ivwObj, formcd)
  9685. {
  9686. utlf_addLog("***** setFstLevlItemCd("+ivwObj+", "+formcd+") *****");
  9687. var fRow = ds_data_unitformmast.findRowExpr("formcd=='" + formcd + "' && loaded != 'true'");
  9688. var orgsupdegnitemno = ds_data_unitformmast.getColumn(fRow, "orgsupdegnitemno");
  9689. var degnitemlevlcd = ds_data_formdegn.lookup("degnitemno", orgsupdegnitemno, "degnitemlevlcd");
  9690. var fstLevlBaseItemCd = degnitemlevlcd.substr(0, degnitemlevlcd.indexOf(".") >= 0 ? degnitemlevlcd.indexOf(".") : degnitemlevlcd.length);
  9691. var fstLevlItemCd = ds_data_formdegn.lookup("degnitemlevlcd", fstLevlBaseItemCd, "degnitemcd");
  9692. if( ivwObj.isValidObject("ds_data_recitem") ){
  9693. var nodeList = ivwObj.ds_data_recitem;
  9694. for(var i = 0; i < nodeList.rowcount; i++)
  9695. {
  9696. var recitemNode = nodeList;
  9697. if(recitemNode.getColumnInfo("fstlevlitemcd") == null)
  9698. continue;
  9699. if(recitemNode.getColumnInfo("degnunitcd") == null)
  9700. {
  9701. recitemNode.addColumn("degnunitcd", "string");
  9702. }
  9703. recitemNode.setColumn(i, "fstlevlitemcd", fstLevlItemCd);
  9704. recitemNode.setColumn(i, "degnitemlevlcd", fstLevlItemCd.substr(0, 7) + "." + recitemNode.getColumn(i, "degnitemlevlcd"));
  9705. recitemNode.setColumn(i, "degnitemlevlno", parseInt(recitemNode.getColumn(i, "degnitemlevlno")) + 1)
  9706. }
  9707. }
  9708. var tempnodeList = ivwObj.objects["ds_temp_recitem"];
  9709. var tempnodeListCnt = 0;
  9710. if( tempnodeList != null ) tempnodeListCnt = tempnodeList.rowcount;
  9711. if( ivwObj.isValidObject("ds_temp_recitem") ){
  9712. var tempnodeList = ivwObj.ds_temp_recitem;
  9713. for(var i = 0; i < tempnodeListCnt; i++)
  9714. {
  9715. var recitemNode = tempnodeList;
  9716. //var fstlevlitemcdNode = recitemNode.selectSingleNode("fstlevlitemcd");
  9717. if(recitemNode.getColumnInfo("fstlevlitemcd") == null)
  9718. continue;
  9719. if(recitemNode.getColumnInfo("degnunitcd") == null)
  9720. {
  9721. recitemNode.addColumn("degnunitcd", "string");
  9722. }
  9723. recitemNode.setColumn(i, "fstlevlitemcd", fstLevlItemCd);
  9724. recitemNode.setColumn(i, "degnitemlevlcd", fstLevlItemCd.substr(0, 7) + "." + recitemNode.getColumn(i, "degnitemlevlcd"));
  9725. recitemNode.setColumn(i, "degnitemlevlno", parseInt(recitemNode.getColumn(i, "degnitemlevlno")) + 1);
  9726. }
  9727. }
  9728. }
  9729. /****************************************************************************************
  9730. * Function : setFstLevlItemCdOnUnitForm
  9731. * Description : 부분서식의 아이템에 부분서식 상위코드를 세팅
  9732. * 동일한 부분서식이 두개이상일때 문제점이 발견되어 보완함.
  9733. * Argument : 01. ivwObj : 최상위 아이템 코드를 세팅할 iviewer 객체
  9734. * 02. orgSupDegnItemNo
  9735. * retrun type :
  9736. * Creator : 서식관련 MMRCommon으로 이동(사용안함)
  9737. ****************************************************************************************/
  9738. function setFstLevlItemCdOnUnitForm(ivwObj, orgSupDegnItemNo)
  9739. {
  9740. utlf_addLog("***** setFstLevlItemCdOnUnitForm("+ivwObj+", "+orgSupDegnItemNo+") EMRCommon -> MMRCommon 부분서식의 아이템에 부분서식 상위코드를 세팅*****");
  9741. //var EMR_formdegnRefDs = this.objects[gPageInfo_EMR.formdegnRef];
  9742. var degnitemlevlcd = ds_data_formdegn.lookup("degnitemno", orgSupDegnItemNo, "degnitemlevlcd");
  9743. var fstLevlBaseItemCd = degnitemlevlcd.substr(0, degnitemlevlcd.indexOf(".") >= 0 ? degnitemlevlcd.indexOf(".") : degnitemlevlcd.length);
  9744. var fstLevlItemCd = ds_data_formdegn.lookup("degnitemlevlcd", fstLevlBaseItemCd, "degnitemcd");
  9745. var nodeList = ivwObj.objects["ds_data_recitem"];
  9746. var nodeListCnt = 0;
  9747. if( nodeList != null ) nodeListCnt = nodeList.rowcount;
  9748. for(var i = 0; i < nodeListCnt; i++)
  9749. {
  9750. var recitemNode = nodeList;
  9751. if(recitemNode.getColumnInfo("fstlevlitemcd") == null)
  9752. continue;
  9753. if(recitemNode.getColumnInfo("degnunitcd") == null)
  9754. {
  9755. recitemNode.addColumn("degnunitcd", "string");
  9756. }
  9757. recitemNode.setColumn(i, "fstlevlitemcd", fstLevlItemCd);
  9758. recitemNode.setColumn(i, "degnitemlevlcd", fstLevlItemCd.substr(0, 7) + "." + recitemNode.getColumn(i, "degnitemlevlcd"));
  9759. recitemNode.setColumn(i, "degnitemlevlno", parseInt(recitemNode.getColumn(i, "degnitemlevlno")) + 1)
  9760. }
  9761. var tempnodeList = ivwObj.objects["ds_temp_recitem"];//ivwObj.objects[gPageInfo_EMR.initrecItemRef];
  9762. var tempnodeListCnt = 0;
  9763. if( tempnodeList != null ) tempnodeListCnt = tempnodeList.rowcount;
  9764. for(var i = 0; i < tempnodeListCnt; i++)
  9765. {
  9766. var recitemNode = tempnodeList;
  9767. //var fstlevlitemcdNode = recitemNode.selectSingleNode("fstlevlitemcd");
  9768. if(recitemNode.getColumnInfo("fstlevlitemcd") == null)
  9769. continue;
  9770. if(recitemNode.getColumnInfo("degnunitcd") == null)
  9771. {
  9772. recitemNode.addColumn("degnunitcd", "string");
  9773. }
  9774. recitemNode.setColumn(i, "fstlevlitemcd", fstLevlItemCd);
  9775. recitemNode.setColumn(i, "degnitemlevlcd", fstLevlItemCd.substr(0, 7) + "." + recitemNode.getColumn(i, "degnitemlevlcd"));
  9776. recitemNode.setColumn(i, "degnitemlevlno", parseInt(recitemNode.getColumn(i, "degnitemlevlno")) + 1);
  9777. }
  9778. }
  9779. /****************************************************************************************
  9780. * Function : lf_AllLoadUnitFormExpand
  9781. * Description : 부분 서식 전체 로드, 펼치기.
  9782. * Argument : 01. gItemCds : 대상이 되는 섹션의 아이템 코드
  9783. * retrun type : N/A
  9784. * Creator :
  9785. ****************************************************************************************/
  9786. var gAllTimer = true;
  9787. function lf_AllLoadUnitFormExpand(gItemCds)
  9788. {
  9789. var objForm = this.getOwnerFrame();
  9790. // 부분서식을 불러온다.
  9791. lf_setAllLoadUnitForm(gItemCds, "ALL");
  9792. // lf_expandAllSection(gItemCds, true);
  9793. if(gAllTimer){
  9794. var nEvent = objForm.form.ontimer.addHandler(UnitForm_ontimer);
  9795. objForm.form.setTimer(1, 500);
  9796. }else{
  9797. // 불러온 부분서식으로 Div Max Resize
  9798. lf_expandAllSection(gItemCds, true);
  9799. }
  9800. }
  9801. /****************************************************************************************
  9802. * Function : UnitForm_ontimer
  9803. * Description : Div에 Url을 로딩한후 Div Expand
  9804. * Argument : 01. obj : 이벤트 발생 컨트롤
  9805. * : 02. e : TimerEventInfo
  9806. * retrun type : N/A
  9807. * Creator :
  9808. ****************************************************************************************/
  9809. function UnitForm_ontimer(obj:Form, e:TimerEventInfo)
  9810. {
  9811. try {
  9812. var objForm = this.getOwnerFrame();
  9813. var sEventId = e.timerid;
  9814. switch(sEventId)
  9815. {
  9816. case 1: // All Expand
  9817. if(!utlf_isNull(objForm)){
  9818. objForm.form.killTimer(1);
  9819. }
  9820. lf_expandAllSection(gItemCds, true);
  9821. gAllTimer = false;
  9822. break;
  9823. case 2: // Single Expand
  9824. if(!utlf_isNull(objForm)){
  9825. objForm.form.killTimer(2);
  9826. }
  9827. lf_expandSection(gItemCds, gObjItem);
  9828. break;
  9829. }
  9830. if(!utlf_isNull(objForm)){
  9831. objForm.form.ontimer.removeHandler(UnitForm_ontimer);
  9832. }
  9833. }catch(e){
  9834. return;
  9835. }
  9836. }
  9837. /****************************************************************************************
  9838. * Function : lf_expandAllSection
  9839. * Description : Section영역 최대화 ( <-- SetMaxSizeSection)
  9840. * Argument : 01. itemCds : 대상이 되는 섹션의 아이템 코드
  9841. * : 02. bMaxSize : 부분서식 최대화 여부.
  9842. * retrun type : N/A
  9843. * Creator :
  9844. ****************************************************************************************/
  9845. function lf_expandAllSection(itemCds, bMaxSize)
  9846. {
  9847. ComnFormObj.enableredraw = false;
  9848. var ctrl;
  9849. var nBottomSize, nToggleSize, sAnchor;
  9850. var formdegnseq, unitformcd, nRow;
  9851. var nCompCnt = itemCds.length;
  9852. for(var i=0; i<nCompCnt; i++){
  9853. nRow = ds_data_unitformmast.findRow("orgsupdegnitemcd", itemCds[i]);
  9854. unitformcd = ds_data_unitformmast.getColumn( nRow, "formcd");
  9855. formdegnseq = ds_data_unitformmast.getColumn( nRow, "formdegnseq");
  9856. ctrl = lf_getComponentID(formdegnseq, itemCds[i]);
  9857. /*
  9858. // 부분서식 기본 사이즈
  9859. gMinBottomSize = gItemSize[i];
  9860. // 해당 섹션 이벤트
  9861. nBottomSize = bMaxSize?lf_getBottomSize(ctrl):gMinBottomSize;
  9862. if(!utlf_isNull(ctrl))
  9863. {
  9864. ctrl.anchor = "";
  9865. lf_setComponentResize(itemCds, i, nBottomSize);
  9866. ctrl.anchor = "left top right";
  9867. }
  9868. */
  9869. if(ctrl instanceof Div){
  9870. ctrl.resetScroll();
  9871. }
  9872. }
  9873. ComnFormObj.vscrollbar.pos = 0;
  9874. ComnFormObj.resetScroll();
  9875. ComnFormObj.enableredraw = true;
  9876. }
  9877. /****************************************************************************************
  9878. * Function : lf_expandSection
  9879. * Description : Section영역 최대화 ( <-- SetMaxSizeSection)
  9880. * Argument : 01. itemCds : 대상이 되는 섹션의 아이템 코드
  9881. * : 02. obj : 이벤트 발생 컨트롤
  9882. * retrun type :
  9883. * Creator :
  9884. ****************************************************************************************/
  9885. // Div, TextArea Min Size
  9886. var gMinBottomSize;
  9887. function lf_expandSection(itemCds, obj:Static)
  9888. {
  9889. this.enableredraw = false;
  9890. var ctrlID = obj;
  9891. var nVscrollPos = ctrlID.position.top;
  9892. var itemcd = ctrlID.name.replace("lbl_", "");
  9893. var ctrl;
  9894. var nBottomSize, nToggleSize, sAnchor;
  9895. var formdegnseq, unitformcd, nRow;
  9896. var nCompCnt = itemCds.length;
  9897. for(var i=0; i<nCompCnt; i++)
  9898. {
  9899. nRow = ds_data_unitformmast.findRow("orgsupdegnitemcd", itemCds[i]);
  9900. unitformcd = ds_data_unitformmast.getColumn( nRow, "formcd");
  9901. formdegnseq = ds_data_unitformmast.getColumn( nRow, "formdegnseq");
  9902. ctrl = lf_getComponentID(formdegnseq, itemCds[i]);
  9903. /*
  9904. // 부분서식 기본 사이즈
  9905. gMinBottomSize = gItemSize[i];
  9906. // 해당 섹션 이벤트
  9907. nBottomSize = lf_getBottomSize(ctrl);
  9908. nToggleSize = lf_getToggleSize(ctrl);
  9909. if(itemcd==itemCds[i])
  9910. {
  9911. if(!g_nBtn)
  9912. {
  9913. if(nBottomSize==nToggleSize||gMinBottomSize==nBottomSize){
  9914. nBottomSize = gMinBottomSize;
  9915. }
  9916. }
  9917. g_nBtn = false;
  9918. }
  9919. else
  9920. {
  9921. nBottomSize = nToggleSize;
  9922. }
  9923. if(!utlf_isNull(ctrl))
  9924. {
  9925. ctrl.anchor = "";
  9926. lf_setComponentResize(itemCds, i, nBottomSize);
  9927. ctrl.anchor = "left top right";
  9928. }
  9929. */
  9930. if(ctrl instanceof Div)
  9931. {
  9932. ctrl.resetScroll();
  9933. // ctrl.position.botton += 5;
  9934. }
  9935. }
  9936. ComnFormObj.resetScroll();
  9937. this.enableredraw = true;
  9938. }
  9939. /****************************************************************************************
  9940. * Function : lf_setAllLoadUnitForm
  9941. * Description : 전체 또는 저장된 기록값이 있는 부분서식 로드
  9942. * Argument : 01. itemCds : 대상이 되는 섹션의 아이템 코드
  9943. * : 02. AllYn : 전체 또는 기록된 서식만 오픈여부
  9944. * retrun type : N/A
  9945. * Creator :
  9946. ****************************************************************************************/
  9947. function lf_setAllLoadUnitForm(itemCds, AllYn)
  9948. {
  9949. var nCompCnt = itemCds.length;
  9950. if(AllYn != "ALL")
  9951. {
  9952. for(var i=0; i < ds_data_unitformmast.rowcount; i++)
  9953. {
  9954. var formcd = ds_data_unitformmast.getColumn(i, "formcd");
  9955. var nRow = parent.ds_data_recitem.findRow("formcd", formcd); // 기록데이터가 있는 부분서식들만 펼치기
  9956. if(nRow != -1)
  9957. {
  9958. var formdegnseq = ds_data_unitformmast.getColumn(i, "formdegnseq");
  9959. var mainItemCd = ds_data_unitformmast.getColumn(i, "orgsupdegnitemcd");
  9960. lf_loadUnitForm(mainItemCd);
  9961. lf_getComponentID(formdegnseq, mainItemCd);
  9962. }
  9963. else
  9964. {
  9965. continue;
  9966. }
  9967. }
  9968. }
  9969. else // 모든 부분서식 펼치기
  9970. {
  9971. for(var i=0; i < nCompCnt; i++)
  9972. {
  9973. lf_loadUnitForm(itemCds[i]);
  9974. }
  9975. }
  9976. }
  9977. /****************************************************************************************
  9978. * Function : lf_loadUnitForm
  9979. * Description : 섹션 오픈 시 부분서식 로드
  9980. * Argument : 01. itemCd : 대상이 되는 섹션의 아이템 코드
  9981. * retrun type :
  9982. * Creator :
  9983. ****************************************************************************************/
  9984. function lf_loadUnitForm(itemCd)
  9985. {
  9986. //섹션 선택시 해당 섹션의 부분서식의 로딩되어있는지 확인하여
  9987. //로딩되어 있지 않으면 부분서식로딩
  9988. var ivwObj = ComnFormObj.components["ivw_" + itemCd];
  9989. if(!utlf_isNull(ivwObj))
  9990. {
  9991. if(utlf_isNull(ivwObj.url))
  9992. {
  9993. var nRow = ds_data_unitformmast.findRowExpr("orgsupdegnitemcd == '" + itemCd + "'");
  9994. var unitformcd = ds_data_unitformmast.getColumn(nRow, "formcd");
  9995. var formdegnseq = "";
  9996. var formprogflag = "";
  9997. var formprognm = "";
  9998. if (!utlf_isNull(unitformcd))
  9999. {
  10000. formdegnseq = ds_data_unitformmast.getColumn(nRow, "formdegnseq");
  10001. formprogflag = ds_data_unitformmast.getColumn(nRow, "formprogflag");
  10002. formprognm = ds_data_unitformmast.getColumn(nRow, "formprognm");
  10003. var UnitFormXfdlUseYn = ds_data_unitformmast.getColumn(nRow, "formxfdluseyn");
  10004. if(formprogflag == "PROG")
  10005. {
  10006. var obj = sysf_getScreenInfo(formprognm.split("_")[0]);
  10007. ivwObj.url = obj.scrnurlxp;
  10008. //ivwObj.url = "emr_formmngtxp::" + ds_data_unitformmast.getColumn(nRow, "formprognm") +".xfdl";
  10009. }
  10010. else
  10011. fGetFormDegn(formdegnseq, itemCd, ComnFormObj, UnitFormXfdlUseYn);
  10012. }
  10013. }
  10014. }
  10015. }
  10016. /****************************************************************************************
  10017. * Function : lf_getSyncData
  10018. * Description : 연동정보 조회 및 세팅
  10019. * retrun type :
  10020. * Creator :
  10021. ****************************************************************************************/
  10022. function lf_getSyncData()
  10023. {
  10024. lf_setInitData();
  10025. ds_cond_syncreq.clearData();
  10026. ds_cond_syncreq.addRow();
  10027. ds_cond_syncreq.setColumn(0, "pid", fGetFormRec("pid"));
  10028. ds_cond_syncreq.setColumn(0, "orddd", fGetFormRec("orddd"));
  10029. ds_cond_syncreq.setColumn(0, "orddrid", fGetFormRec("orddrid"));
  10030. ds_cond_syncreq.setColumn(0, "orddeptcd", fGetFormRec("orddeptcd"));
  10031. ds_cond_syncreq.setColumn(0, "chosflag", fGetFormRec("chosflag"));
  10032. ds_cond_syncreq.setColumn(0, "cretno", fGetFormRec("cretno"));
  10033. ds_cond_syncreq.setColumn(0, "formcd", fGetFormRec("formcd"));
  10034. ds_cond_syncreq.setColumn(0, "formdegnseq", fGetFormRec("formdegnseq"));
  10035. ds_cond_syncreq.setColumn(0, "merecyn", "N");
  10036. ds_cond_syncreq.setColumn(0, "formcd", fGetFormRec("formcd"));
  10037. ds_cond_syncreq.setColumn(0, "srcformcd", fGetFormRec("srcformcd"));
  10038. var nFormcd = ds_data_recitem.getColumn(0, "formcd");
  10039. // 2016.10.26 PROG 부분서식이 많을 경우 트렌적션 중복 오류
  10040. var submitID = "TRMMR01102";
  10041. if( !utlf_isNull(nFormcd) ){
  10042. submitID = submitID + nFormcd;
  10043. }
  10044. var objParam = new Object();
  10045. objParam.id = submitID;
  10046. objParam.service = "medirecapp.ComnMediRec";
  10047. objParam.method = "reqGetRecAcmlData";
  10048. objParam.inds = "req=ds_cond_syncreq";
  10049. objParam.outds ="ds_data_acmldata=recitem";
  10050. // objParam.callback = "cbf_TRMMR01102";
  10051. objParam.async = false;
  10052. objParam.progress = false;
  10053. tranf_submit(objParam);
  10054. }
  10055. function lf_setSyncData(Obj)
  10056. {
  10057. var sFormprogflag = fGetFormMast("formprogflag");
  10058. var acmlCnt = ds_data_acmldata.getRowCount();
  10059. if( acmlCnt > 0 && sFormprogflag != "PROG" ){
  10060. if(Obj.isValidObject("ds_data_itemvalue"))
  10061. {
  10062. for(var i = 0; i < Obj.ds_data_itemvalue.colcount; i++)
  10063. {
  10064. ColId = Obj.ds_data_itemvalue.getColID(i);
  10065. lf_setRecItemDS(ColId, Obj, "acmlForm");
  10066. }
  10067. Obj.lf_calculateInit(); //산술식 초기화
  10068. }
  10069. for(var i = 0; i < Obj.all.length; i++)
  10070. {
  10071. if(Obj.all[i] instanceof Dataset) //Object를 비교하는 구문
  10072. {
  10073. dsNm = Obj.all[i].name;
  10074. if(dsNm.indexOf("ds_data_grd_") != -1)
  10075. {
  10076. dsDegnNo = dsNm.replace("ds_data_grd_", "")
  10077. Obj.fSetFormGridRec(dsNm, dsDegnNo, "acmlForm"); // 기록내용 그리드에 세팅
  10078. }
  10079. }
  10080. if(Obj.all[i] instanceof ActiveX) //Object를 비교하는 구문
  10081. {
  10082. imgObj = Obj.all[i];
  10083. imgNo = imgObj.name;
  10084. imgNo = imgNo.replace("IMG_", "");
  10085. var nRow = parent.ds_data_acmldata.findRow("degnitemno", imgNo);
  10086. if(nRow != -1)
  10087. {
  10088. var imgBinary = objExt.encodeBase64(parent.ds_data_acmldata.getColumn(nRow, "recimge"));
  10089. imgObj.LoadImageBase64(imgBinary);
  10090. lf_reSizeImg(imgObj);
  10091. }
  10092. }
  10093. }
  10094. }
  10095. }
  10096. /****************************************************************************************
  10097. * Function : lf_setFormInitData
  10098. * Description : 연동값 이외에 특수서식 로딩 시 필요한 기초 정보 세팅
  10099. * MRRDegnForm.js initFormAtLast_MMRDegnForm 로직 부분
  10100. * retrun type :
  10101. * Creator :
  10102. ****************************************************************************************/
  10103. function lf_setFormInitData()
  10104. {
  10105. var formcd = fGetFormMast("formcd");
  10106. if(formcd == "0900005261"){ // 마취전 평가 및 협진서
  10107. //lf_setFormInitData_0900005261();
  10108. //이윤주 수정
  10109. }else if(formcd == "0000000615") { //Delivery Note
  10110. lf_setFormInitData_0000000615();
  10111. }else if(formcd == "1600018197") {
  10112. lf_setFormInitData_1600018197(); // 마취유도직전평가서
  10113. }
  10114. }
  10115. function lf_setFormInitData_0900005261()
  10116. {
  10117. var opcnfmdd, oprsrvno;
  10118. dsf_createDsRow("ds_cond_operationinfo",
  10119. [{col:"opcnfmdd", val:""}]);
  10120. dsf_createDsRow("ds_data_operationinfo",
  10121. [{col:"opcnfmdd", val:""}]);
  10122. var operation = sysf_getGlobalVariable("operation");
  10123. if( !utlf_isNull(operation) ){
  10124. dsf_setCSVToDs("ds_cond_operationinfo", operation);
  10125. }
  10126. if(ds_cond_operationinfo.rowcount > 0)
  10127. {
  10128. opcnfmdd = ds_cond_operationinfo.getColumn(0, "opcnfmdd");
  10129. oprsrvno = ds_cond_operationinfo.getColumn(0, "oprsrvno");
  10130. }
  10131. // 2016.05.09 상단 미연동시 처리
  10132. if( gTopYn == false ){
  10133. opcnfmdd = oOpener.frmf_getParameter("opcnfmdd");
  10134. oprsrvno = oOpener.frmf_getParameter("oprsrvno");
  10135. }
  10136. if( !utlf_isNull(oprsrvno) ){
  10137. dsf_createDsRow("ds_cond_operationinfo",
  10138. [{col:"opcnfmdd", val:opcnfmdd}
  10139. ,{col:"pid", val:fGetFormRec("pid")}
  10140. ,{col:"oprsrvno", val:oprsrvno}]);
  10141. dsf_createDsRow("ds_data_operrecitem",
  10142. [{col:"opcnfmdd", val:opcnfmdd}
  10143. ,{col:"oprsrvno", val:oprsrvno}]);
  10144. var objParam = new Object();
  10145. objParam.id = "TRMMR01103";
  10146. objParam.service = "medirecapp.ComnMediRec";
  10147. objParam.method = "reqGetOpTestData";
  10148. objParam.inds = "req=ds_cond_operationinfo";
  10149. objParam.outds ="ds_data_operrecitem=recitem";
  10150. objParam.callback = "cbf_TRMMR01103";
  10151. tranf_submit(objParam);
  10152. }
  10153. //MRF01200.js ready part
  10154. var objForm = this.getOwnerFrame().form;
  10155. if (!utlf_isNull(objForm) && objForm.frmf_getScreenID() == "SSMMR01100")
  10156. {
  10157. var nFindRow = ivw_base.ds_data_recitem.findRow("degnitemno", "181");
  10158. var atdoctnm = ivw_base.ds_data_recitem.getColumn(nFindRow, "reccnts");
  10159. nFindRow = ivw_base.ds_data_recitem.findRow("degnitemno", "208");
  10160. var staffname = ivw_base.ds_data_recitem.getColumn(nFindRow, "rectermcd");
  10161. var itemVal = new ITEMVAL();
  10162. if( utlf_isNull(atdoctnm) ){
  10163. itemVal.reccnts = sysf_getUserInfo("usernm");
  10164. ivw_base.lf_setFormItemValue("0017137", itemVal);
  10165. }
  10166. if( utlf_isNull(staffname) ){
  10167. if( !utlf_isNull(parent.opener.opener) && parent.opener.opener.name == "iv_anstinfo" ){
  10168. var usernm = parent.opener.opener.cmb_anstdrid1.text;
  10169. var usercd = parent.opener.opener.cmb_anstdrid1.value;
  10170. if( !utlf_isNull(usernm) && usernm != "-" ){
  10171. dsf_createDsRow("ds_cond_TRMRF00307", [{col:"valitemnm", type:"string", size:256, val:usernm}
  10172. , {col:"grupcd", type:"string", size:256, val:"0003106006"}]);
  10173. dsf_createDs("ds_data_TRMRF00307");
  10174. var oParam = {};
  10175. oParam.id = "TRMRF00302";
  10176. oParam.service = "formmngtapp.ValListMngt";
  10177. oParam.method = "reqGetValListValue";
  10178. oParam.inds = "req=ds_cond_TRMRF00307";
  10179. oParam.outds = "ds_data_TRMRF00307=item";
  10180. oParam.async = false;
  10181. oParam.progress = false;
  10182. //oParam.callback = "cf_TRMRF00302";
  10183. tranf_submit(oParam);
  10184. if( ds_data_TRMRF00307.rowcount > 0 ){
  10185. var valcd = ds_data_TRMRF00307.getColumn(0, "valcd");
  10186. if( !utlf_isNull(valcd) ){
  10187. itemVal.rectermcd = valcd;
  10188. itemVal.rectermnm = utlf_transNullToEmpty(ds_data_TRMRF00307.getColumn(0, "valnm"));
  10189. ivw_base.lf_setFormItemValue("0035977", itemVal);
  10190. }
  10191. }
  10192. }
  10193. }
  10194. }
  10195. //20131104 Start 마취전 평가서를 오픈시 마취 일반정보의 수술 구분이 응급이라면 마취전 평가서에 'E'로 체크 되도록 기능 추가
  10196. if( !utlf_isNull(parent.opener.opener) && parent.opener.opener.name == "iv_anstinfo" ){
  10197. var opflag = parent.opener.opener.rdo_opflag.value;
  10198. if(opflag == "2"){//degnitemno = 146
  10199. itemVal.rectermcd = "0031829001";
  10200. itemVal.rectermnm = "E";
  10201. ivw_base.lf_setFormItemValue("0000153", itemVal);
  10202. }
  10203. }
  10204. }
  10205. }
  10206. function cbf_TRMMR01103(strSvcID, nErrorCode, strErrorMsg)
  10207. {
  10208. if(ds_data_operrecitem.rowcount > 0)
  10209. {
  10210. var itemVal = new ITEMVAL();
  10211. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"hb");
  10212. ivw_base.lf_setFormItemValue("0005344.0001179", itemVal);
  10213. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"hct");
  10214. ivw_base.lf_setFormItemValue("0005344.0001276", itemVal);
  10215. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"platelet");
  10216. ivw_base.lf_setFormItemValue("0005344.0002551", itemVal);
  10217. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"bt");
  10218. ivw_base.lf_setFormItemValue("0005344.0005327", itemVal);
  10219. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"pt");
  10220. ivw_base.lf_setFormItemValue("0005344.0002243", itemVal);
  10221. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"ptinr");
  10222. ivw_base.lf_setFormItemValue("0005344.0008378", itemVal);
  10223. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"aptt");
  10224. ivw_base.lf_setFormItemValue("0005344.0006147", itemVal);
  10225. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"fbs");
  10226. ivw_base.lf_setFormItemValue("0005344.0001267", itemVal);
  10227. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"sgot");
  10228. ivw_base.lf_setFormItemValue("0005344.0002885", itemVal);
  10229. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"sgpt");
  10230. ivw_base.lf_setFormItemValue("0005344.0002886", itemVal);
  10231. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"na");
  10232. ivw_base.lf_setFormItemValue("0005344.0002901", itemVal);
  10233. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"k");
  10234. ivw_base.lf_setFormItemValue("0005344.0002902", itemVal);
  10235. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"bun");
  10236. ivw_base.lf_setFormItemValue("0005344.0002881", itemVal);
  10237. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"cr");
  10238. ivw_base.lf_setFormItemValue("0005344.0002882", itemVal);
  10239. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"ca");
  10240. ivw_base.lf_setFormItemValue("0005344.0002904", itemVal);
  10241. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"mg");
  10242. ivw_base.lf_setFormItemValue("0005344.0006138", itemVal);
  10243. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"hbsag");
  10244. ivw_base.lf_setFormItemValue("0005344.0003046", itemVal);
  10245. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"hiv");
  10246. ivw_base.lf_setFormItemValue("0005344.0000800", itemVal);
  10247. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"bilirubin");
  10248. ivw_base.lf_setFormItemValue("0005344.0000476.0008021", itemVal);
  10249. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"ph");
  10250. ivw_base.lf_setFormItemValue("0005344.0000476.0006334", itemVal);
  10251. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"glucose");
  10252. ivw_base.lf_setFormItemValue("0005344.0000476.0006142", itemVal);
  10253. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"ketonebody");
  10254. ivw_base.lf_setFormItemValue("0005344.0000476.0016878", itemVal);
  10255. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"protein");
  10256. ivw_base.lf_setFormItemValue("0005344.0000476.0000184", itemVal);
  10257. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"color");
  10258. ivw_base.lf_setFormItemValue("0005344.0000476.0002872", itemVal);
  10259. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"sg");
  10260. ivw_base.lf_setFormItemValue("0005344.0000476.0005947", itemVal);
  10261. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"uro");
  10262. ivw_base.lf_setFormItemValue("0005344.0000476.0016879", itemVal);
  10263. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"leuk");
  10264. ivw_base.lf_setFormItemValue("0005344.0000476.0016880", itemVal);
  10265. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"ob");
  10266. ivw_base.lf_setFormItemValue("0005344.0000476.0005976", itemVal);
  10267. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"nitrate");
  10268. ivw_base.lf_setFormItemValue("0005344.0000476.0016881", itemVal);
  10269. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"ph2");
  10270. ivw_base.lf_setFormItemValue("0005344.0005956.0006334", itemVal);
  10271. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"pao");
  10272. ivw_base.lf_setFormItemValue("0005344.0005956.0007043", itemVal);
  10273. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"paco");
  10274. ivw_base.lf_setFormItemValue("0005344.0005956.0005958", itemVal);
  10275. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"hc");
  10276. ivw_base.lf_setFormItemValue("0005344.0005956.0005959", itemVal);
  10277. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"be");
  10278. ivw_base.lf_setFormItemValue("0005344.0005956.0002584", itemVal);
  10279. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"sao");
  10280. ivw_base.lf_setFormItemValue("0005344.0005956.0005957", itemVal);
  10281. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"blood");
  10282. ivw_base.lf_setFormItemValue("0005344.0001184", itemVal);
  10283. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"wt");
  10284. ivw_base.lf_setFormItemValue("0000570.0000268", itemVal);
  10285. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"ht");
  10286. ivw_base.lf_setFormItemValue("0000570.0000566", itemVal);
  10287. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"bp1");
  10288. ivw_base.lf_setFormItemValue("0000570.0001180.0000525", itemVal);
  10289. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"bp2");
  10290. ivw_base.lf_setFormItemValue("0000570.0001180.0000791", itemVal);
  10291. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"pr");
  10292. ivw_base.lf_setFormItemValue("0000570.0000258", itemVal);
  10293. itemVal.reccnts = ds_data_operrecitem.getColumn(0,"opnm");
  10294. ivw_base.lf_setFormItemValue("0000665", itemVal);
  10295. var nRow = ds_data_formdegn.findRow("degnitemlevlcd", "0000960");
  10296. var nDegnItemNo = ds_data_formdegn.getColumn(nRow, "degnitemno");
  10297. var grdDsNm = "ds_data_grd_" + nDegnItemNo;
  10298. var grdDs = ivw_base.objects["ds_data_grd_" + nDegnItemNo];
  10299. var grdObj = ivw_base.components["DGN_"+nDegnItemNo];
  10300. if( utlf_isNull(grdObj ) || utlf_isNull(grdDs) )
  10301. return;
  10302. if( grdDs.rowcount > 0 ){
  10303. for(var i=grdDs.rowcount-1;i>=1;i--){
  10304. // recitem Delete rowno
  10305. ds_data_recitem.filter("rowno=='"+i+"' && degnitemno == '"+nDegnItemNo+"'");
  10306. var nRowCnt = ds_data_recitem.getRowCount();
  10307. for(var j=(nRowCnt-1);j>=0; j--){
  10308. ds_data_recitem.deleteRow(j);
  10309. }
  10310. ds_data_recitem.filter("");
  10311. }
  10312. // Grid DeleteRow
  10313. grdDs.clearData();
  10314. }
  10315. for (var i = 0; i < ds_data_operrecitem.rowcount; i++)
  10316. {
  10317. var diagcd = "";
  10318. var diagnm = "";
  10319. diagnm = ds_data_operrecitem.getColumn(i, "diagnm");
  10320. diagcd = ds_data_operrecitem.getColumn(i, "diagcd");
  10321. if( grdDs.getCaseCount("진단코드 == '" + diagcd + "'") > 0 ){
  10322. continue;
  10323. }
  10324. var nRowno = grdDs.addRow();
  10325. // 진단코드, 진단명
  10326. grdDs.setColumn(nRowno, "진단코드", diagcd);
  10327. grdDs.setColumn(nRowno, "진단명" , diagnm);
  10328. }// end of for (var i = 0; i < nodeList.length; i++)
  10329. lf_addRowComm(grdObj, grdObj.name);
  10330. grdDs.rowposition = 0;
  10331. }
  10332. }
  10333. function lf_setFormInitData_0000000615(){
  10334. dsf_createDsRow("ds_cond_TRMMR01302", [{col:"infoflag", type:"string", size:256, val:"etc_deliverynote"}
  10335. , {col:"pid", type:"string", size:256, val:fGetFormRec("pid")}
  10336. , {col:"orddd", type:"string", size:256, val:fGetFormRec("orddd")}
  10337. , {col:"cretno", type:"string", size:256, val:fGetFormRec("cretno")}]);
  10338. dsf_createDs("ds_data_TRMMR01302");
  10339. var oParam = {};
  10340. oParam.id = "TRMMR01302";
  10341. oParam.service = "medirecapp.RecIf";
  10342. oParam.method = "reqGetFormRecExtnInfo";
  10343. oParam.inds = "req=ds_cond_TRMMR01302";
  10344. oParam.outds = "ds_data_TRMMR01302=etcinfo";
  10345. oParam.async = false;
  10346. oParam.progress = false;
  10347. //oParam.callback = "cf_TRMMR01302";
  10348. tranf_submit(oParam);
  10349. if( ds_data_TRMMR01302.rowcount == 0 ) return;
  10350. var cnt = ds_data_TRMMR01302.rowcount;
  10351. var pre_levlcd = "0000363.";
  10352. var mid_levlcd = new Array("0000988", "0000218", "0000471", "0002692"); //1st,2nd,3rd,4th
  10353. //"bthdd", "bthtm", "liveyn", "gndr", "weig", "apgarscore1", "apgarscore5"
  10354. var post_levlcd = new Array(".0000160", ".0000538", ".0009800", ".0000458", ".0000268", ".0010920.0010922", ".0010920.0006010");
  10355. var dest_path = "";
  10356. var src_val = "";
  10357. var buf = "";
  10358. for (var i=0; i<cnt; i++) {
  10359. for (var j=0; j<post_levlcd.length; j++) {
  10360. dest_path = pre_levlcd + mid_levlcd[i] + post_levlcd[j];
  10361. src_val = ds_data_TRMMR01302.getColumn(i, "col" + j);
  10362. var itemVal = new ITEMVAL();
  10363. if (post_levlcd[j] == ".0009800") {
  10364. //liveyn - Y:0028890001, N:0003918001
  10365. if (src_val == "Y") {
  10366. itemVal.rectermcd = "0028890001";
  10367. itemVal.rectermnm = "Living";
  10368. }
  10369. else if (src_val == "N") {
  10370. itemVal.rectermcd = "0003918001";
  10371. itemVal.rectermnm = "Dead";
  10372. }
  10373. else continue;
  10374. }
  10375. else if (post_levlcd[j] == ".0000458") {
  10376. //gndr - M:0003466001, F:0003399001
  10377. if (src_val == "M") {
  10378. itemVal.rectermcd = "0003466001";
  10379. itemVal.rectermnm = "M";
  10380. }
  10381. else if (src_val == "F") {
  10382. itemVal.rectermcd = "0003399001";
  10383. itemVal.rectermnm = "F";
  10384. }
  10385. else continue;
  10386. }
  10387. else {
  10388. itemVal.reccnts = src_val;
  10389. }
  10390. ivw_base.lf_setFormItemValue(dest_path, itemVal);
  10391. }
  10392. }
  10393. }
  10394. function lf_setFormInitData_1600018197(){
  10395. var objForm = this.getOwnerFrame().form;
  10396. if (!utlf_isNull(objForm) && objForm.frmf_getScreenID() == "SSMMR01100")
  10397. {
  10398. if( !utlf_isNull(parent.opener.opener) && parent.opener.opener.name == "tabpage4" ){
  10399. var nEspiseq = parent.opener.opener.frmf_getParameter("SMMMO04500_espiseq");
  10400. var nFormcd = parent.opener.opener.frmf_getParameter("SMMMO04500_formcd");
  10401. if( !utlf_isNull(nEspiseq) ){
  10402. frmf_setParameter("SPMRI02400_prtrecinfo", "E" + "▦" + nEspiseq + "▦" + nFormcd + "▩");
  10403. frmf_setParameter("SPMRI02400_prtyn", "N");
  10404. frmf_setParameter("SPMRI02400_defaultvw", "ChartView");
  10405. var curVIEWobj = frmf_findPopup("SPMRI02400");
  10406. if( !utlf_isNull(curVIEWobj) ){
  10407. //curVIEWobj.close();
  10408. curVIEWobj.fInitalize();
  10409. }else{
  10410. frmf_open("SPMRI02400", "SPMRI02400", null, null, null, null, null, null, null, null, null, null, "M");
  10411. objForm.onclose.addHandler(lf_FormClose_1600018197);
  10412. }
  10413. }
  10414. }
  10415. }
  10416. }
  10417. function lf_FormClose_1600018197(){
  10418. var curVIEWobj = frmf_findPopup("SPMRI02400");
  10419. if( !utlf_isNull(curVIEWobj) ){
  10420. curVIEWobj.close();
  10421. }
  10422. }
  10423. function lf_makeRecitem(){
  10424. utlf_addLog("***** MMRCommon lf_makerecitem() 인스턴스 생성 *****");
  10425. g_maxdegnitemno = parent.ds_data_formdegn.getCaseMax("degnitemno > 0", "degnitemno");
  10426. utlf_addLog("@@@@ g_maxdegnitemno : " + g_maxdegnitemno );
  10427. var itemcnt = parent.ds_data_formdegn.rowcount;
  10428. var reccnt = parent.ds_data_recitem.rowcount;
  10429. var diff = 0;
  10430. var idxdiff = 0;
  10431. var selIdx = 0;
  10432. for(var idx = 0; idx < itemcnt; idx++)
  10433. {
  10434. var recMastRefDs = parent.ds_data_formrec;
  10435. var formmastRefDs = parent.ds_data_formmast;
  10436. var formdegnRefDs = parent.ds_data_formdegn;
  10437. //var rechistseq = recMastRefDs.getColumn(0, "rechistseq");
  10438. var formcd = formmastRefDs.getColumn(0, "formcd");
  10439. var formdegnseq = formmastRefDs.getColumn(0, "formdegnseq");
  10440. var degnitemno = formdegnRefDs.getColumn(idx, "degnitemno");
  10441. var degnitemkind = formdegnRefDs.getColumn(idx, "degnitemkind");
  10442. var degnitemcd = formdegnRefDs.getColumn(idx, "degnitemcd");
  10443. var supdegnitemno = formdegnRefDs.getColumn(idx, "supdegnitemno");
  10444. var supdegnitemkind = formdegnRefDs.lookup("degnitemno", supdegnitemno, "degnitemkind");
  10445. var degnitemlevlno = formdegnRefDs.getColumn(idx, "degnitemlevlno");
  10446. var degnitemnm = formdegnRefDs.getColumn(idx, "degnitemnm");
  10447. var degnitemdefltval = formdegnRefDs.getColumn(idx, "degnitemdefltval");
  10448. var unitcd = formdegnRefDs.getColumn(idx, "unitcd");
  10449. var unitnm = formdegnRefDs.getColumn(idx, "unitnm");
  10450. var valgrupcd = formdegnRefDs.getColumn(idx, "valgrupcd");
  10451. /*
  10452. // MSL, IMG의 경우 아이템기본값 처리 루틴 추가
  10453. // 수정자: 이경희
  10454. // 수정일: 2008.04.18
  10455. */
  10456. if(degnitemkind == "MSL" && !utlf_isNull(degnitemdefltval)) //0000903001 0000985001
  10457. {
  10458. g_arrMslDefVal = degnitemdefltval.split(" ");
  10459. }
  10460. if(degnitemkind == "IMG" && !utlf_isNull(degnitemdefltval)) //0012574001 0012679001
  10461. {
  10462. g_arrImgDefVal = degnitemdefltval.split(" ");
  10463. }
  10464. if(degnitemkind == "MSL" || supdegnitemkind == "SSL" && degnitemkind == "SSU")
  10465. {
  10466. if(degnitemkind == "MSL")
  10467. selIdx = 0;
  10468. diff++;
  10469. continue;
  10470. }
  10471. if(supdegnitemkind == "MSL" && degnitemkind == "SSU")
  10472. {
  10473. var MslDefVal = "";
  10474. var termcd = formdegnRefDs.getColumn(idx, "termcd");
  10475. var i = 0;
  10476. var DataSet = 0; // 아이템 기본값 설정 여부 확인 변수
  10477. while(i < g_arrMslDefVal.length)
  10478. {
  10479. // 전역 변수(g_MslDefVal) 의 값을 비교
  10480. MslDefVal = g_arrMslDefVal[i];
  10481. if(MslDefVal == termcd)
  10482. {
  10483. //alert("g_arrMslDefVal[" + i + "]: " + MslDefVal);
  10484. //alert("rectermnm:" + degnitemnm);
  10485. // makeSubSelectInstance(pageInfo, supdegnitemno, selIdx++, degnitemnm, MslDefVal);
  10486. DataSet = 1;
  10487. break;
  10488. }
  10489. i++;
  10490. }
  10491. if(DataSet == 0) // 아이템 기본값 설정이 안되었을 경우
  10492. {
  10493. // makeSelectInstance(pageInfo, supdegnitemno, selIdx++);
  10494. }
  10495. continue;
  10496. }
  10497. //selIdx = 0;
  10498. if(supdegnitemkind == "IMG" && degnitemkind == "ISU")
  10499. {
  10500. var ImgDefVal = "";
  10501. var termcd = formdegnRefDs.getColumn(idx, "termcd");
  10502. var i = 0;
  10503. var DataSet = 0; // 아이템 기본값 설정 여부 확인 변수
  10504. while(i < g_arrImgDefVal.length)
  10505. {
  10506. // 전역 변수(g_MslDefVal) 의 값을 비교
  10507. ImgDefVal = g_arrImgDefVal[i];
  10508. if(ImgDefVal == termcd)
  10509. {
  10510. //alert("g_arrImgDefVal[" + i+ "]: " + MslDefVal);
  10511. //alert("rectermnm:" + degnitemnm);
  10512. // makeSubSelectInstance(pageInfo, degnitemno, selIdx++, degnitemnm, ImgDefVal);
  10513. DataSet = 1;
  10514. break;
  10515. }
  10516. i++;
  10517. }
  10518. if(DataSet == 0) // 아이템 기본값 설정이 안되었을 경우
  10519. {
  10520. // makeSelectInstance(pageInfo, degnitemno, selIdx++);
  10521. }
  10522. continue;
  10523. }
  10524. if(degnitemkind == "GRD" || degnitemkind == "GSU")
  10525. {
  10526. // makeGridInstance(pageInfo, degnitemno);
  10527. // continue;
  10528. }
  10529. if(degnitemkind == "DGN")
  10530. {
  10531. // makeDGNInstance(pageInfo, degnitemno);
  10532. // continue;
  10533. }
  10534. if(degnitemkind == "OPN")
  10535. {
  10536. // makeOPNInstance(pageInfo, degnitemno);
  10537. // continue;
  10538. }
  10539. if(degnitemkind == "CCN")
  10540. {
  10541. // makeCCNInstance(pageInfo, degnitemno);
  10542. // continue;
  10543. }
  10544. if(degnitemkind == "BTN")
  10545. // continue;
  10546. var degnitemlevlcd = "";
  10547. // if(!utlf_isNull(pageInfo.fstLevlItemCd))
  10548. // degnitemlevlcd = pageInfo.fstLevlItemCd.substr(0, 7) + "." + formdegnRefDs.getColumn(idx, "degnitemlevlcd");
  10549. // else
  10550. degnitemlevlcd = formdegnRefDs.getColumn(idx, "degnitemlevlcd");
  10551. var fstlevlitembasecd = degnitemlevlcd.split(".")[0];
  10552. var fstlevlitemcd = formdegnRefDs.lookup("degnitemlevlcd", fstlevlitembasecd, "degnitemcd");
  10553. // if(!utlf_isNull(pageInfo.fstLevlItemCd))
  10554. // fstlevlitemcd = pageInfo.fstLevlItemCd;
  10555. idxdiff = idx - diff;
  10556. utlf_addLog("idx : " + idx + " diff : " + diff + " idxdiff : " + idxdiff ) ;
  10557. var recItemRefDs = this.objects["ds_data_recitem"];
  10558. dsf_makeValue(recItemRefDs, "instcd", "string", "", idxdiff);
  10559. dsf_makeValue(recItemRefDs, "rechistseq", "BIGDECIMAL", "", idxdiff);
  10560. dsf_makeValue(recItemRefDs, "recitemno", "INT", "", idxdiff);
  10561. dsf_makeValue(recItemRefDs, "fstlevlitemcd", "string", fstlevlitemcd, idxdiff);
  10562. dsf_makeValue(recItemRefDs, "formcd", "string", formcd, idxdiff);
  10563. dsf_makeValue(recItemRefDs, "formdegnseq", "BIGDECIMAL", formdegnseq, idxdiff);
  10564. dsf_makeValue(recItemRefDs, "degnitemno", "INT", degnitemno, idxdiff);
  10565. dsf_makeValue(recItemRefDs, "degnitemcd", "string", degnitemcd, idxdiff);
  10566. dsf_makeValue(recItemRefDs, "degnitemkind", "string", degnitemkind, idxdiff);
  10567. dsf_makeValue(recItemRefDs, "degnitemlevlno", "string", degnitemlevlno, idxdiff);
  10568. dsf_makeValue(recItemRefDs, "degnitemnm", "string", degnitemnm, idxdiff);
  10569. dsf_makeValue(recItemRefDs, "degnitemlevlcd", "string", degnitemlevlcd, idxdiff);
  10570. dsf_makeValue(recItemRefDs, "rectermcd", "string", "", idxdiff);
  10571. dsf_makeValue(recItemRefDs, "rectermnm", "string", "", idxdiff);
  10572. dsf_makeValue(recItemRefDs, "recrefcd", "string", "", idxdiff);
  10573. dsf_makeValue(recItemRefDs, "recitemnm", "string", "", idxdiff);
  10574. dsf_makeValue(recItemRefDs, "reccnts", "string", "", idxdiff);
  10575. dsf_makeValue(recItemRefDs, "unitnm", "string", unitnm, idxdiff);
  10576. dsf_makeValue(recItemRefDs, "recimge", "BLOB", "", idxdiff);
  10577. dsf_makeValue(recItemRefDs, "srcimge", "BLOB", "", idxdiff);
  10578. dsf_makeValue(recItemRefDs, "rowno", "string", "", idxdiff);
  10579. dsf_makeValue(recItemRefDs, "colno", "string", "", idxdiff);
  10580. dsf_makeValue(recItemRefDs, "supdegnitemno", "INT", supdegnitemno, idxdiff);
  10581. dsf_makeValue(recItemRefDs, "extdegnitemlevlcd", "string", "", idxdiff);
  10582. dsf_makeValue(recItemRefDs, "rectermflag", "string", "", idxdiff);
  10583. dsf_makeValue(recItemRefDs, "degnunitcd", "string", unitcd, idxdiff);
  10584. if(degnitemkind == "CHK" || degnitemkind == "RDO" || degnitemkind == "CMB" ||
  10585. degnitemkind == "SSL" || degnitemkind == "MSL" || degnitemkind == "BOL")
  10586. {
  10587. recItemRefDs.setColumn(idxdiff, "rectermcd", degnitemdefltval);
  10588. // BOL 기본값 처리
  10589. if(degnitemkind == "BOL")
  10590. {
  10591. if(!utlf_isNull(degnitemdefltval))
  10592. recItemRefDs.setColumn(idxdiff, "rectermnm", degnitemnm);
  10593. }
  10594. // SSL 기본값 처리
  10595. if(degnitemkind == "SSL")
  10596. {
  10597. var defltvalnm = formdegnRefDs.lookup("termcd", degnitemdefltval, "degnitemnm");
  10598. var tmpdefltvalnm = formdegnRefDs.lookup("termcd", degnitemdefltval, "itemnm");
  10599. if(utlf_isNull(defltvalnm))
  10600. defltvalnm = tmpdefltvalnm;
  10601. recItemRefDs.setColumn(idxdiff, "rectermnm", defltvalnm);
  10602. }
  10603. /*
  10604. // 추가 내용: 아이템 기본값으로 기록내용 저장 시 rectermnm이 없이 저장이 되어 통합기록조회에서 보이지 않음.
  10605. */
  10606. // 1. vallist 노드를 찾는다.
  10607. /*
  10608. if(!utlf_isNull(valgrupcd))
  10609. {
  10610. var vallistRefDs = this.objects["ds_data_vallist"];
  10611. var cnt = vallistRefDs.getCaseCount("grupcd=='" + valgrupcd + "'");
  10612. var sLabel = "";
  10613. var sValue = "";
  10614. if(!utlf_isNull(degnitemdefltval))
  10615. {
  10616. var g_vallistRefDs = this.objects["ds_data_vallist"];
  10617. g_vallistRefDs.filter("grupcd=='" + valgrupcd + "'");
  10618. for(var i=0; i<cnt; i++)
  10619. {
  10620. sLabel = g_vallistRefDs.getColumn(i, "valitemnm");
  10621. sValue = g_vallistRefDs.getColumn(i, "valcd");
  10622. // 2. 아이템 기본값과 같은 값인 경우 rectermnm을 추가
  10623. if(sValue == degnitemdefltval)
  10624. {
  10625. recItemRefDs.setColumn(idxdiff, "rectermnm", sLabel);
  10626. break;
  10627. }
  10628. }
  10629. g_vallistRefDs.filter("");
  10630. }
  10631. }
  10632. */
  10633. }
  10634. else if(degnitemkind == "STX" || degnitemkind == "MTX" || degnitemkind == "CAL")
  10635. {
  10636. recItemRefDs.setColumn(idxdiff, "reccnts", degnitemdefltval);
  10637. }
  10638. }
  10639. //utlf_addLog(ds_data_recitem.saveXML());
  10640. /*
  10641. if(bInit){
  10642. utlf_addLog("bInit : " + bInit);
  10643. dsf_copyDsList(arrDsTempRecinfo, arrDsRecinfo, "replace", this, this);
  10644. }
  10645. */
  10646. }
  10647. /****************************************************************************************
  10648. * Function : InitBtnImge
  10649. * Description : 이미지 버튼 함수 설정
  10650. * Argument : 01. itemCds
  10651. * retrun type :
  10652. * Creator :
  10653. ****************************************************************************************/
  10654. function InitBtnImge_CS(itemCds)
  10655. {
  10656. utlf_addLog("***** InitBtnImge("+itemCds+") MMRCommon *****");
  10657. for (var i = 0; i < itemCds.length; i++)
  10658. {
  10659. ComnFormObj = grup_base.grup_cnts.components["grup_" + itemCds[i]];
  10660. ctrl = ComnFormObj.components["btn_imge_" + itemCds[i]];
  10661. if (!utlf_isNull(ctrl)){
  10662. ctrl.onclick.addHandler(OpenUnitFormImge);
  10663. }
  10664. ComnFormObj = this.grup_base;
  10665. }
  10666. }
  10667. /****************************************************************************************
  10668. * Function : InitBtnEtcRec_CS
  10669. * Description : 추가기록 버튼 함수 설정
  10670. * Argument : 01. itemCds
  10671. * retrun type :
  10672. * Creator :
  10673. ****************************************************************************************/
  10674. function InitBtnEtcRec_CS(itemCds)
  10675. {
  10676. utlf_addLog("***** InitBtnEtcRec("+itemCds+") MMRCommon *****");
  10677. for (var i = 0; i < itemCds.length; i++)
  10678. {
  10679. ComnFormObj = grup_base.grup_cnts.components["grup_" + itemCds[i]];
  10680. ctrl =ComnFormObj.components["btn_etcrec_" + itemCds[i]];
  10681. if (!utlf_isNull(ctrl))
  10682. ctrl.onclick.addHandler(openEtcRec);
  10683. ComnFormObj = this.grup_base;
  10684. }
  10685. }
  10686. /****************************************************************************************
  10687. * Function : lf_setProfIssUsge
  10688. * Description : 제증명 용도 팝업
  10689. * Argument :
  10690. * retrun type :
  10691. * Creator :
  10692. ****************************************************************************************/
  10693. function lf_setProfIssUsge(obj:Button, e:ClickEventInfo)
  10694. {
  10695. var left = e.screenX + 100;
  10696. var top = e.screenY - 300;
  10697. var prstusgenm = gPrstusge;
  10698. frmf_setParameter("SPMMR02200_flag", "REC");
  10699. utlf_addLog("prstusgenm : " + prstusgenm);
  10700. frmf_setParameter("SPMMR02200_usage", prstusgenm);
  10701. frmf_setParameter("SPMMR02200_multichkyn", "N");
  10702. var rtObj = frmf_modal("SPMMR02200", "SPMMR02200", null, null, null, left, top, null, null, null, null, null, "M");
  10703. var jeissgoalcd = "noneValue";
  10704. var reqdata = "";
  10705. if(frmf_getParameter("rsltYN")=="Y"){
  10706. var nRow = rtObj.copyInfoDs.rowposition;
  10707. jeissgoalcd = getArrayData ( rtObj.copyInfoDs.getColumn(nRow, "reqdata"), 1, 1, "▩", "▦" );;
  10708. reqdata = rtObj.copyInfoDs.getColumn(nRow, "reqdata");
  10709. }
  10710. //if(!utlf_isNull(jeissgoalcd)){
  10711. var itemVal = new ITEMVAL();
  10712. itemVal.reccnts = jeissgoalcd;
  10713. grp_base.ivw_loader.lf_setFormItemValue("0013100", itemVal);
  10714. gPrstusge = jeissgoalcd;
  10715. //}
  10716. var objForm = this.getOwnerFrame().form;
  10717. if( !utlf_isNull(objForm) && objForm.isValidObject("ds_main") == true ){
  10718. objForm.ds_main.setColumn(0, "issusge", reqdata);
  10719. }
  10720. }
  10721. /****************************************************************************************
  10722. * Argument : N/A
  10723. * Description : (제증명) 그리드 keydown 이벤트 : insert, delete, 진단조회.
  10724. ****************************************************************************************/
  10725. function lf_procGrdFunc(obj:Grid, e:KeyEventInfo)
  10726. {
  10727. var objDS = eval(obj.binddataset);
  10728. var nRow = objDS.rowposition;
  10729. var nCell = obj.getCellPos();
  10730. var nKeyCode = e.keycode;
  10731. var grdNm = obj.name;
  10732. if(nRow > -1)
  10733. {
  10734. var nCell = obj.getCellPos();
  10735. if(nKeyCode == 46)
  10736. {
  10737. // delete
  10738. lf_grdCommDelRow(objDS, obj.name);
  10739. }
  10740. else if(nKeyCode == 45)
  10741. {
  10742. // insert
  10743. lf_addRowComm(obj, obj.name);
  10744. }
  10745. else if(grdNm.indexOf("DGN") > -1 && nKeyCode == 13 && (nCell == 3 ||nCell == 4))
  10746. {
  10747. obj.updateToDataset();
  10748. // 진단코드, 진단명 조회 //fFindDiagInfo
  10749. lf_diagSrch(obj, objDS);
  10750. }
  10751. }
  10752. else
  10753. {
  10754. if(nKeyCode == 45)
  10755. {
  10756. // insert
  10757. lf_addRowComm(obj, obj.name);
  10758. }
  10759. }
  10760. }
  10761. /****************************************************************************************
  10762. * Argument : objGrid - Grid Object, objDS - Grid Mapping Dataset
  10763. * Description : 진단코드, 진단코드 조회
  10764. ****************************************************************************************/
  10765. var ErrorCode;
  10766. function lf_diagSrch(objGrid:Grid, objDS:Dataset)
  10767. {
  10768. // 선택된 행
  10769. var nRow = objDS.rowposition;
  10770. // 선택된 열
  10771. var curcol = objGrid.getCellPos();
  10772. var sCond1 = "";
  10773. var sCond2 = "";
  10774. var sCond5 = "";
  10775. if( curcol == 3 ){
  10776. sCond5 = objDS.getColumn(nRow, "진단코드");
  10777. objDS.setColumn(nRow, "진단코드", "");
  10778. sCond1 = "1";
  10779. sCond2 = "1";
  10780. }else if( curcol == 4 ){
  10781. sCond5 = objDS.getColumn(nRow, "진단명");
  10782. objDS.setColumn(nRow, "진단명", "");
  10783. sCond1 = "2";
  10784. sCond2 = "4";
  10785. }
  10786. // 검색어를 입력하지 않은 경우
  10787. if(utlf_isNull(sCond5)){
  10788. sysf_messageBox("검색어를 ", "C001");
  10789. return;
  10790. }
  10791. // 한글, 영문구분
  10792. var sCond3 = utlf_isHangul(sCond5);
  10793. if ( sCond3 == "E" ){
  10794. //영문,숫자일때는 3글자 넣어야 검색가능
  10795. if (sCond5.length < 2){
  10796. sysf_messageBox ( "2글자 이상", "C001" );
  10797. return;
  10798. }
  10799. }
  10800. // 기준일자
  10801. var sCond4 = utlf_getCurrentDate();
  10802. frmf_setParameter ( "SPMMO00800_cond1", sCond1 );
  10803. frmf_setParameter ( "SPMMO00800_cond2", sCond2 );
  10804. frmf_setParameter ( "SPMMO00800_cond3", sCond3 );
  10805. frmf_setParameter ( "SPMMO00800_cond4", sCond4 );
  10806. frmf_setParameter ( "SPMMO00800_cond5", sCond5 );
  10807. frmf_modal ("SPMMO00800", "SPMMO00800", null, 1, 10, 10, null, null, null, null, null, null, "M");
  10808. if (frmf_getParameter( "SPMMO00800_rtn_useyn" ) == "Y" ) {
  10809. //sysf_trace( frmf_getParameter( "SPMMO00800_rtn" ) );
  10810. //fAddDiagInfo (frmf_getParameter( "SPMMO00800_rtn" ), degnitemno, row);
  10811. var diagInfo = frmf_getParameter( "SPMMO00800_rtn" );
  10812. if(utlf_isNull(diagInfo)){
  10813. return;
  10814. }
  10815. frmf_setParameter( "SPMMO00800_rtn_useyn", "" );
  10816. //var objGrdDS = eval(objGrid.binddataset);
  10817. var objTempDS = this.objects[objDS.name.replace("ds_data", "ds_temp")];
  10818. var nRowno = objDS.rowposition;
  10819. var nRowCnt = objDS.getRowCount();
  10820. var sRectermnm = "";
  10821. var sNo = objGrid.name.replace("DGN_", "");
  10822. var sTmpdiagcd = "";
  10823. var sTmpdiagengnm = "";
  10824. var nDiagListCnt = diagInfo.split("▩").length;//▩
  10825. var formprogflag = fGetFormMast("formprogflag");
  10826. var langflag = fGetFormMast("langflag");
  10827. if(nDiagListCnt > 0)
  10828. {
  10829. objDS.enableevent = false;
  10830. // Grid 구성 Item
  10831. var nTempCnt = objTempDS.getRowCount();
  10832. for(var i=0 ; i<nDiagListCnt -1; i++){
  10833. var tmpcopy = false;
  10834. sTmpdiagcd = getArrayData ( diagInfo, i, 9, "▩", "▦" );
  10835. sTmpdiagengnm = getArrayData ( diagInfo, i, 2, "▩", "▦" );
  10836. if(formprogflag == "PROF")
  10837. {
  10838. sTmpdiagcd = getArrayData ( diagInfo, i, 8, "▩", "▦" );;
  10839. if(langflag != "EN")
  10840. sTmpdiagengnm = getArrayData ( diagInfo, i, 3, "▩", "▦" );;
  10841. }
  10842. // var nFindRow = objDS.findRow("진단코드", sTmpdiagcd);
  10843. // if(nFindRow>-1){
  10844. // continue;
  10845. // }
  10846. if( parseInt(nRowno) >= parseInt(nRowCnt) ){
  10847. nRowno = objDS.addRow();
  10848. tempcopy = true;
  10849. }
  10850. /*
  10851. // <!--주부유형-->
  10852. objDS.setColumn(nRowno, "주" , 0);
  10853. objDS.setColumn(nRowno, "진단코드", "S");
  10854. objDS.setColumn(nRowno, "진단명", "부");
  10855. // <!--R/O-->
  10856. objDS.setColumn(nRowno, "R/O" , 0);
  10857. objDS.setColumn(nRowno, "진단코드", "C");
  10858. objDS.setColumn(nRowno, "진단명", "");
  10859. */
  10860. // <!--진단코드, 진단명-->
  10861. objDS.setColumn(nRowno, "진단코드", sTmpdiagcd);
  10862. objDS.setColumn(nRowno, "진단명" , sTmpdiagengnm);
  10863. if( tmpcopy == true ){
  10864. for(var j=0; j<nTempCnt; j++){
  10865. var nAddRow = ds_data_recitem.addRow();
  10866. ds_data_recitem.copyRow(nAddRow, objTempDS, j);
  10867. ds_data_recitem.setColumn(nAddRow, "rowno", nRowno);
  10868. }
  10869. }
  10870. nRowno++;
  10871. }
  10872. objDS.enableevent = true;
  10873. }
  10874. lf_addRowComm(objGrid, objGrid.name);
  10875. }
  10876. }
  10877. /****************************************************************************************
  10878. * Argument : N/A
  10879. * Description : 행추가.
  10880. ****************************************************************************************/
  10881. function lf_addRowComm(objGrid:Grid, objNm)
  10882. {
  10883. var objGrdDS = eval(objGrid.binddataset);
  10884. var nRowCnt = objGrdDS.getRowCount();
  10885. var dsNm = objGrdDS.name;
  10886. var degnno = dsNm.replace("ds_data_grd_", "");
  10887. var nRow = objGrdDS.rowposition;
  10888. var sSmmCnts = "";
  10889. var sSmmCntCd = "";
  10890. if(nRowCnt<1){
  10891. objGrdDS.clearData();
  10892. objGrdDS.addRow();
  10893. }else{
  10894. objGrid.updateToDataset();
  10895. var objTempDS = this.objects[objGrdDS.name.replace("ds_data", "ds_temp")];
  10896. if(objNm.indexOf("DGN") > -1)
  10897. {
  10898. sSmmCnts = objGrdDS.getColumn(nRow, "진단명");
  10899. sSmmCntCd = objGrdDS.getColumn(nRow, "진단코드");
  10900. } else if(objNm.indexOf("OPN") > -1) {
  10901. sSmmCnts = objGrdDS.getColumn(nRow, "수술명");
  10902. sSmmCntCd = objGrdDS.getColumn(nRow, "수술코드");
  10903. } else if(objNm.indexOf("CCN") > -1) {
  10904. sSmmCnts = objGrdDS.getColumn(nRow, "주호소명");
  10905. sSmmCntCd = objGrdDS.getColumn(nRow, "주호소코드");
  10906. }
  10907. if(nRow>-1 && !utlf_isNull(sSmmCnts)||!utlf_isNull(sSmmCntCd)){
  10908. if(nRow==(nRowCnt-1)){
  10909. var nRowno = objGrdDS.addRow();
  10910. var nAddRow, nCellPos;
  10911. var nTempCnt = objTempDS.getRowCount();
  10912. for(var i=0; i<nTempCnt; i++)
  10913. {
  10914. nAddRow = ds_data_recitem.addRow();
  10915. ds_data_recitem.copyRow(nAddRow, objTempDS, i);
  10916. ds_data_recitem.setColumn(nAddRow, "rowno", nRowno);
  10917. var nColno = ds_data_recitem.getColumn(nAddRow, "colno");
  10918. if(nColno==3)
  10919. {
  10920. ds_data_recitem.setColumn(nAddRow, "rectermcd" , "-");
  10921. ds_data_recitem.setColumn(nAddRow, "rectermflag", "002");
  10922. }
  10923. }
  10924. ds_data_recitem.filter("");
  10925. ds_data_recitem.filter("rowno > '"+nRow+"' && degnitemno == '"+degnno+"'");
  10926. var nMaxRow = ds_data_recitem.getMax('parseInt(rowno)');
  10927. ds_data_recitem.setColumn(nMaxRow, "rectermcd", "");
  10928. }
  10929. }
  10930. ds_data_recitem.filter("");
  10931. }
  10932. }
  10933. /****************************************************************************************
  10934. * Argument : objDS - Grid Mapping Dataset
  10935. * Description : 그리드 행삭제.
  10936. ****************************************************************************************/
  10937. function lf_grdCommDelRow(objDS:Dataset, objNm)
  10938. {
  10939. utlf_addLog("***** lf_grdCommDelRow " + objNm + " ****");
  10940. var dsNm = objDS.name;
  10941. var degnno = dsNm.replace("ds_data_grd_", "");
  10942. var nRow = objDS.rowposition;
  10943. var sSmmCnts = "";
  10944. var sSmmCntCd = "";
  10945. if(objNm.indexOf("DGN") > -1)
  10946. {
  10947. var sChkMain = objDS.getColumn(nRow, "주");
  10948. if(sChkMain=="M"){
  10949. sysf_messageBox("주진단은 삭제", "E001");
  10950. return;
  10951. }
  10952. sSmmCnts = objDS.getColumn(nRow, "진단명");
  10953. sSmmCntCd = objDS.getColumn(nRow, "진단코드");
  10954. }
  10955. else if(objNm.indexOf("OPN") > -1)
  10956. {
  10957. sSmmCnts = objDS.getColumn(nRow, "수술명");
  10958. sSmmCntCd = objDS.getColumn(nRow, "수술코드");
  10959. }
  10960. else if(objNm.indexOf("CCN") > -1)
  10961. {
  10962. sSmmCnts = objDS.getColumn(nRow, "주호소명");
  10963. sSmmCntCd = objDS.getColumn(nRow, "주호소코드");
  10964. }
  10965. if(nRow>-1&&(!utlf_isNull(sSmmCnts)||!utlf_isNull(sSmmCntCd)))
  10966. {
  10967. // Grid DeleteRow
  10968. objDS.deleteRow(nRow);
  10969. // recitem Delete rowno
  10970. ds_data_recitem.filter("rowno=='"+nRow+"'");
  10971. var nRowCnt = ds_data_recitem.getRowCount();
  10972. for(var i=(nRowCnt-1);i>=0; i--)
  10973. {
  10974. ds_data_recitem.deleteRow(i);
  10975. }
  10976. ds_data_recitem.filter("");
  10977. ds_data_recitem.filter("rowno > '"+nRow+"' && degnitemno == '"+degnno+"'");
  10978. var nRowCnt = ds_data_recitem.getRowCount();
  10979. for(var j=0; j < nRowCnt; j++)
  10980. {
  10981. var nSelfRowno = ds_data_recitem.getColumn(j, "rowno");
  10982. ds_data_recitem.setColumn(j, "rowno", nSelfRowno - 1);
  10983. }
  10984. }
  10985. ds_data_recitem.filter("");
  10986. }
  10987. function lf_compGrdRightMenuInit(obj:Grid, e)//GridMouseEventInfo
  10988. {
  10989. if(this.isValidObject("popup_Menu") == true)
  10990. {
  10991. var oRemoveMenu = this.removeChild("popup_Menu");
  10992. oRemoveMenu = null;
  10993. }
  10994. var arrMenuInfo = new Array();
  10995. arrMenuInfo[arrMenuInfo.length] = lf_getCommPopupMenu("100", "행 추가");
  10996. arrMenuInfo[arrMenuInfo.length] = lf_getCommPopupMenu("200", "행 삭제");
  10997. frmf_createPopupMenu("popup_Menu", "lf_commPopupMenu", arrMenuInfo, "frmfds_init_mouserght");
  10998. var objGrid = this.components[obj.name];
  10999. var objDS = eval(objGrid.binddataset);
  11000. var nRow = e.row;
  11001. if(nRow>-1){
  11002. obj.setFocus();
  11003. //grdf_setSelectedCell(obj, e);
  11004. objDS.rowposition = nRow;
  11005. popup_Menu.trackPopup(e.screenX, e.screenY);
  11006. }
  11007. }
  11008. /****************************************************************************************
  11009. * Argument : sId - popupmenu Click Event ID, sTitle - popupmenu Title
  11010. * Description : 미리보기에서 데이터복사하기
  11011. ****************************************************************************************/
  11012. function lf_getCommPopupMenu(sId, sTitle)
  11013. {
  11014. var objColInfo = new Object();
  11015. objColInfo.id = sId;
  11016. objColInfo.level = "0";
  11017. objColInfo.title = sTitle;
  11018. return objColInfo;
  11019. }
  11020. /****************************************************************************************
  11021. * Components : PopupMenu
  11022. * Components ID : popup_Menu
  11023. * Event : onmenuclick
  11024. * Argument : 01.obj : Object Event has occurred
  11025. * : 02.e : Event Object
  11026. * Description : Popup Menu Call
  11027. ****************************************************************************************/
  11028. function lf_commPopupMenu(obj:PopupMenu, e:MenuClickEventInfo)
  11029. {
  11030. var objGrid = this.components[this.getFocus().name];
  11031. var objDS = eval(objGrid.binddataset);
  11032. var sEventID = e.id;
  11033. switch(sEventID)
  11034. {
  11035. case "100": lf_addRowComm(objGrid, objGrid.name); break;
  11036. case "200": lf_grdCommDelRow(objDS, objGrid.name); break;
  11037. }
  11038. }
  11039. function lf_getDiagInfoEx(obj:Button, e:ClickEventInfo)
  11040. {
  11041. sPopUpRectermnm = "";
  11042. var btnNm = obj.name;
  11043. btnNm = btnNm.replace("BTN_","");
  11044. var btnCd = btnNm.replace("_EXT1","");
  11045. var objGrid = this.components["DGN_"+btnCd];
  11046. lf_clickCommOpenPopUp(objGrid);
  11047. }
  11048. /****************************************************************************************
  11049. * Argument : objGrid - Grid Object
  11050. * Description : 진단 검색 및 설정 (SPMMO03100_진단.xfdl) - 처방사용 진단팝업과 통일
  11051. ****************************************************************************************/
  11052. function lf_clickCommOpenPopUp(objGrid:Grid)
  11053. {
  11054. var langflag = fGetFormMast("langflag");
  11055. var objPop = new Object();
  11056. var pid = parent.ds_data_paminfo.getColumn(0, "pid");
  11057. var orddd = parent.ds_data_paminfo.getColumn(0, "orddd");
  11058. var cond = pid + "▦" + orddd;
  11059. frmf_setParameter("SPMMO03100_patinfo", cond);
  11060. var objRtnParam = frmf_modal("SPMMO03100", "SPMMO03100", objPop, null, null, null, null, null, null, null, null, null, "M");
  11061. var objGrdDS = eval(objGrid.binddataset);
  11062. var objTempDS = this.objects[objGrdDS.name.replace("ds_data", "ds_temp")];
  11063. var diagInfo = frmf_getParameter( "SPMMO03100_rtn" );
  11064. if(utlf_isNull(diagInfo)){
  11065. return;
  11066. }
  11067. var nRowno = objGrdDS.rowposition;
  11068. var nRowCnt = objGrdDS.getRowCount();
  11069. var sRectermnm = "";
  11070. var sNo = objGrid.name.replace("DGN_", "");
  11071. sRectermnm = objGrdDS.getColumn((nRowCnt-1), "진단명");
  11072. if(utlf_isNull(sRectermnm))
  11073. {
  11074. // Grid DeleteRow
  11075. objGrdDS.deleteRow(nRowCnt-1);
  11076. // recitem Delete rowno
  11077. ds_data_recitem.filter("rowno=='"+nRowno+"' && degnitemno == '"+sNo+"'");
  11078. var nRowCnt = ds_data_recitem.getRowCount();
  11079. for(var i=(nRowCnt-1);i>=0; i--){
  11080. ds_data_recitem.deleteRow(i);
  11081. }
  11082. ds_data_recitem.filter("");
  11083. }
  11084. var sTmpdiagcd = "";
  11085. var sTmpdiagengnm = "";
  11086. var nDiagListCnt = diagInfo.split ( "▩" ).length;
  11087. if(nDiagListCnt>0)
  11088. {
  11089. objGrdDS.enableevent = false;
  11090. // Grid 구성 Item
  11091. var nTempCnt = objTempDS.getRowCount();
  11092. for(var i=0 ; i<nDiagListCnt -1; i++){
  11093. sTmpdiagcd = getArrayData ( diagInfo, i, 8, "▩", "▦" );
  11094. if(langflag == "KO")
  11095. {
  11096. sTmpdiagengnm = getArrayData ( diagInfo, i, 3, "▩", "▦" );
  11097. }
  11098. else
  11099. {
  11100. sTmpdiagengnm = getArrayData ( diagInfo, i, 2, "▩", "▦" );
  11101. }
  11102. var nFindRow = objGrdDS.findRow("진단코드", sTmpdiagcd);
  11103. if(nFindRow>-1){
  11104. continue;
  11105. }
  11106. nRowno = objGrdDS.addRow();
  11107. // <!--주부유형-->
  11108. objGrdDS.setColumn(nRowno, "주" , 0);
  11109. objGrdDS.setColumn(nRowno, "진단코드", "S");
  11110. objGrdDS.setColumn(nRowno, "진단명", "부");
  11111. // <!--R/O-->
  11112. objGrdDS.setColumn(nRowno, "R/O" , 0);
  11113. objGrdDS.setColumn(nRowno, "진단코드", "C");
  11114. objGrdDS.setColumn(nRowno, "진단명", "");
  11115. // <!--진단코드, 진단명-->
  11116. objGrdDS.setColumn(nRowno, "진단코드", sTmpdiagcd);
  11117. objGrdDS.setColumn(nRowno, "진단명" , sTmpdiagengnm);
  11118. var nExistRow = ds_data_recitem.findRowExpr("rowno=='"+nRowno+"' && degnitemno == '"+sNo+"'");
  11119. if( nExistRow < 0 ){
  11120. for(var j=0; j<nTempCnt; j++){
  11121. var nAddRow = ds_data_recitem.addRow();
  11122. ds_data_recitem.copyRow(nAddRow, objTempDS, j);
  11123. ds_data_recitem.setColumn(nAddRow, "rowno", nRowno);
  11124. }
  11125. }
  11126. }
  11127. objGrdDS.enableevent = true;
  11128. }
  11129. lf_addRowComm(objGrid, objGrid.name);
  11130. }
  11131. //상용구 관련 추가
  11132. function lf_addRightMenuMTX(ds)
  11133. {
  11134. var vFilter = "degnitemkind == 'MTX'";
  11135. ds.filter(vFilter);
  11136. for(var i=0; i< ds.getRowCount(); i++)
  11137. {
  11138. var vMTXno = ds.getColumn(i, "degnitemno");
  11139. var vMTX = "MTX_" + vMTXno;
  11140. lf_compRightMenuInit2(this.components[vMTX]);
  11141. }
  11142. ds.filter("");
  11143. }
  11144. function lf_compRightMenuInit2(obj, formKind)
  11145. {
  11146. if(obj == "[object Grid]")
  11147. {
  11148. //obj.onrbuttondown.addHandler(lf_compGrdMenuEvent);
  11149. }
  11150. else if(obj == "[object TextArea]")
  11151. {
  11152. obj.usecontextmenu = false;
  11153. obj.onrbuttondown.addHandler(lf_compTxtMenuEvent2);
  11154. }
  11155. else
  11156. {
  11157. //trace("Grid,TextArea 만 적용됩니다.");
  11158. }
  11159. }
  11160. var lv_rObjId; //팝업 호출id
  11161. var lv_rArrObjInfo;
  11162. function lf_compTxtMenuEvent2(obj:TextArea, e:MouseEventInfo)
  11163. {
  11164. lv_rObjId = obj;
  11165. lv_rArrObjInfo = new Array();
  11166. var objNm = obj.name;
  11167. var objNoSplit;
  11168. objNoSplit = objNm.split("_");
  11169. var objNo = objNoSplit[1];
  11170. var oDs = this.objects["ds_data_recitem"];
  11171. var vFilter = "degnitemkind == 'MTX' && degnitemno == '"+objNo+"'";
  11172. oDs.filter(vFilter);
  11173. if(oDs.getRowCount() >1 || oDs.getRowCount() ==0|| oDs.getRowCount() == -1)
  11174. {
  11175. oDs.filter("");
  11176. return;
  11177. }
  11178. var sCode = oDs.getColumn(0,"degnitemlevlcd");
  11179. //sCode = sCode.substr(0,7);
  11180. var vFormcd = oDs.getColumn(0,"formcd");
  11181. this.frmf_setParameter("srcformcd", fGetFormRec("srcformcd"));
  11182. if(utlf_isNull(sCode)|| utlf_isNull(vFormcd))
  11183. {
  11184. oDs.filter("");
  11185. return;
  11186. }
  11187. //sCode = sCode.substr(0,7);
  11188. fCompShowCntxMenu(sCode);
  11189. var nX = system.clientToScreenX(obj, e.clientX);
  11190. var nY = system.clientToScreenY(obj, e.clientY);
  11191. lpopup_cntxnMenu.trackPopup(nX, nY);
  11192. oDs.filter("");
  11193. }
  11194. /****************************************************************************************
  11195. * Function : lf_getOrdSpec
  11196. * Description : 방사선치료기록지 조회 formcd : 1200013062
  11197. * Argument : 01.
  11198. * retrun type :
  11199. * Creator : MRF01200 함수 이동
  11200. ****************************************************************************************/
  11201. function lf_getOrdSpec() {
  11202. dsf_createDsRow("ds_cond_ordspec", [{col:"pid", type:"string", size:256, val:parent.ds_data_paminfo.getColumn(0, "pid")}
  11203. , {col:"orddd", type:"string", size:256, val:parent.ds_data_paminfo.getColumn(0, "orddd")}
  11204. , {col:"ordddfrom", type:"string", size:256, val:ipt_fromdd.value}
  11205. , {col:"ordddto", type:"string", size:256, val:ipt_todd.value}
  11206. , {col:"orddrid", type:"string", size:256, val:sysf_getUserId()}
  11207. , {col:"orddeptcd", type:"string", size:256, val:parent.ds_data_paminfo.getColumn(0, "orddeptcd")}
  11208. ]);
  11209. dsf_createDs("ds_data_ordspecinfo");
  11210. var oParam = {};
  11211. oParam.id = "TRMRF01221";
  11212. oParam.service = "formmngtapp.FormIfMngt";
  11213. oParam.method = "reqGetOrdSpecInfo";
  11214. oParam.inds = "req=ds_cond_ordspec";
  11215. oParam.outds = "ds_data_ordspecinfo=ordspecinfo";
  11216. oParam.async = true;
  11217. oParam.callback = "cf_TRMRF01221";
  11218. tranf_submit(oParam);
  11219. return;
  11220. }
  11221. function cf_TRMRF01221(sSvcId, nErrorCode, sErrorMsg) {
  11222. if(nErrorCode < 0) return;
  11223. var iCnt = ds_data_ordspecinfo.rowcount;
  11224. var iRow = ds_data_grd_1.getCaseCount("!utlf_isNull(치료일)");
  11225. for (var i = 0; i < iCnt; i++) {
  11226. if( ds_data_grd_1.getCaseCount("치료일 == '" + ds_data_ordspecinfo.getColumn(i, "orddd") + "'" ) == 0 ){//같은 일자가 존재하지 않는 일자만
  11227. BTN_1_EXT2.click();
  11228. ds_data_grd_1.setColumn(iRow, "치료일", ds_data_ordspecinfo.getColumn(i, "orddd"));
  11229. ds_data_grd_1.setColumn(iRow, "치료관찰기록", "치료실 선량 확인하였음(이상무)" );
  11230. ds_data_grd_1.setColumn(iRow, "진료의사", sysf_getUserName());
  11231. iRow++;
  11232. }
  11233. }
  11234. dsf_deleteDs("ds_cond_ordspec");
  11235. dsf_deleteDs("ds_data_ordspecinfo");
  11236. }
  11237. /****************************************************************************************
  11238. * Function : lf_setInitData
  11239. * Description : 2012.10.25 신규서식 작성시 각종 데이터 당겨오기 (이윤주)
  11240. * Argument : 01.
  11241. * retrun type : 종양치료반응 및 부작용 formcd : 1300014511 경과기록-호흡기내과
  11242. * Creator : MRF01200 함수 이동
  11243. ****************************************************************************************/
  11244. function lf_setInitData()
  11245. {
  11246. utlf_addLog(":::::::: lf_setInitData Start :::::::");
  11247. //var formcd = fGetFormMast("formcd");
  11248. var formcd = ds_data_recitem.getColumn(0, "formcd");
  11249. // 2016.10.26 PROG 부분서식이 많을 경우 트렌적션 중복 오류
  11250. var submitID = "TRMRF01220";
  11251. if( !utlf_isNull(formcd) ){
  11252. submitID = submitID + formcd;
  11253. }
  11254. dsf_createDsRow("ds_cond_TRMRF01220", [{col:"hardcdno", type:"string", size:256, val:5622}
  11255. , {col:"trgtcd", type:"string", size:256, val:formcd}
  11256. ]);
  11257. dsf_createDs("ds_data_TRMRF01220", [{col:"trgtcdnm", type:"string", size:256}
  11258. , {col:"condqry", type:"string", size:256}
  11259. ], true);
  11260. var oParam = {};
  11261. oParam.id = submitID;
  11262. oParam.service = "formmngtapp.FormIfMngt";
  11263. oParam.method = "reqGetRecInfo";
  11264. oParam.inds = "req=ds_cond_TRMRF01220";
  11265. oParam.outds = "ds_data_TRMRF01220=recinfo";
  11266. oParam.async = false;
  11267. oParam.progress = false;
  11268. oParam.callback = "cf_TRMRF01220";
  11269. tranf_submit(oParam);
  11270. }
  11271. function cf_TRMRF01220(sSvcId, nErrorCode, sErrorMsg) {
  11272. if(nErrorCode < 0) return;
  11273. if( ds_data_TRMRF01220.rowcount < 1 ){
  11274. utlf_addLog(":::::::: lf_setInitData End(Not Empty) :::::::");
  11275. dsf_deleteDs("ds_cond_TRMRF01220");
  11276. dsf_deleteDs("ds_data_TRMRF01220");
  11277. return;
  11278. }
  11279. var formcd = ds_data_recitem.getColumn(0, "formcd");
  11280. var tarPaminfo;
  11281. if( this.name == "ivw_base" ){
  11282. tarPaminfo = parent;
  11283. }else if ( this.name == "ivw_0011449001" ){
  11284. tarPaminfo = parent.parent.parent.parent.parent;
  11285. }else{
  11286. tarPaminfo = parent.parent.parent;
  11287. }
  11288. var pid = tarPaminfo.ds_data_paminfo.getColumn(0, "pid");
  11289. var orddd = tarPaminfo.ds_data_paminfo.getColumn(0, "orddd");
  11290. var indd = tarPaminfo.ds_data_paminfo.getColumn(0, "indd");
  11291. var ioflag = tarPaminfo.ds_data_paminfo.getColumn(0, "ioflag");
  11292. var cretno = tarPaminfo.ds_data_paminfo.getColumn(0, "cretno");
  11293. var wardcd = tarPaminfo.ds_data_paminfo.getColumn(0, "wardcd");
  11294. var oprsrvno = tarPaminfo.ds_data_formrec.getColumn(0, "oprsrvno");
  11295. var formrecdd = tarPaminfo.ds_data_formrec.getColumn(0, "formrecdd");
  11296. dsf_createDsRow("ds_cond_operationinfo",
  11297. [{col:"opcnfmdd", val:""}]);
  11298. var operation = sysf_getGlobalVariable("operation");
  11299. if( !utlf_isNull(operation) ){
  11300. dsf_setCSVToDs("ds_cond_operationinfo", operation);
  11301. }
  11302. if( ds_cond_operationinfo.rowcount > 0 ){
  11303. oprsrvno = utlf_transNullToEmpty(ds_cond_operationinfo.getColumn(0, "oprsrvno"));
  11304. }
  11305. dsf_deleteDs("ds_cond_operationinfo");
  11306. // 2016.05.09 상단 미연동시 처리
  11307. if( gTopYn == false ){
  11308. pid = tarPaminfo.ds_data_formrec.getColumn(0, "pid");
  11309. orddd = tarPaminfo.ds_data_formrec.getColumn(0, "orddd");
  11310. indd = tarPaminfo.ds_data_formrec.getColumn(0, "orddd");
  11311. ioflag = tarPaminfo.ds_data_formrec.getColumn(0, "ioflag");
  11312. cretno = tarPaminfo.ds_data_formrec.getColumn(0, "cretno");
  11313. oprsrvno = tarPaminfo.ds_data_formrec.getColumn(0, "oprsrvno");
  11314. wardcd = tarPaminfo.ds_data_formrec.getColumn(0, "wardcd");
  11315. }
  11316. if (ioflag !="O"){
  11317. if (ioflag !="S"){
  11318. orddd = indd;
  11319. }
  11320. }
  11321. var loopcnt = ds_data_TRMRF01220.rowcount;
  11322. for (var i=0; i<loopcnt; i++)
  11323. {
  11324. var recinfo = utlf_transNullToEmpty(ds_data_TRMRF01220.getColumn(i, "trgtcdnm"));
  11325. var condqry = utlf_transNullToEmpty(ds_data_TRMRF01220.getColumn(i, "condqry"));
  11326. dsf_createDsRow("ds_cond_TRMRF01219", [{col:"pid", type:"string", size:256, val:pid}
  11327. , {col:"cretno", type:"string", size:256, val:cretno}
  11328. , {col:"orddd", type:"string", size:256, val:orddd}
  11329. , {col:"formcd", type:"string", size:256, val:formcd}
  11330. , {col:"recinfo", type:"string", size:256, val:recinfo}
  11331. , {col:"oprsrvno", type:"string", size:256, val:oprsrvno}
  11332. , {col:"formrecdd", type:"string", size:256, val:formrecdd}
  11333. , {col:"condqry", type:"string", size:256, val:condqry}
  11334. , {col:"dutplcecd", type:"string", size:256, val:sysf_getUserInfo("dutplcecd")}
  11335. , {col:"userid", type:"string", size:256, val:sysf_getUserInfo("userid")}
  11336. , {col:"instcd", type:"string", size:256, val:sysf_getUserInfo("dutplceinstcd")}
  11337. , {col:"wardcd", type:"string", size:256, val:wardcd}
  11338. ]);
  11339. dsf_createDs("ds_data_TRMRF01219");
  11340. var oParam = {};
  11341. oParam.id = "TRMRF01219";
  11342. oParam.service = "formmngtapp.FormIfMngt";
  11343. oParam.method = "reqGetDataInfo";
  11344. oParam.inds = "req=ds_cond_TRMRF01219";
  11345. oParam.outds = "ds_data_TRMRF01219=datainfo";
  11346. oParam.async = false;
  11347. oParam.progress = false;
  11348. // oParam.callback = "cf_TRMRF01219";
  11349. tranf_submit(oParam);
  11350. utlf_addLog(ds_data_TRMRF01219.saveXML());
  11351. utlf_addLog("recinfo : " + recinfo );
  11352. recinfo = recinfo.split("|");
  11353. var levelcd = recinfo[0];
  11354. var basecd = recinfo[1];
  11355. var targetRef = recinfo[2];
  11356. var colno = recinfo[3];
  11357. var extnflag = recinfo[4];
  11358. // 0008224.0005540.0000053|0000053001|reccnts
  11359. if( !utlf_isNull(levelcd) ){
  11360. var startIdx = levelcd.indexOf(".");
  11361. var endIdx = levelcd.length;
  11362. levelcd = levelcd.substr(startIdx + 1, endIdx);
  11363. }
  11364. var itemval = ds_data_TRMRF01219.getColumn(0, "itemval");
  11365. //fSetItemDataByItemBaseCd(levelcd, basecd, itemval, targetRef);
  11366. utlf_addLog("itemval : " + itemval);
  11367. if( utlf_isNull(colno) ){
  11368. ds_data_recitem.filter("String(degnitemlevlcd).indexOf('" + levelcd + "') >= 0 && String(degnitemcd).indexOf('" + basecd + "') >= 0");
  11369. }else{
  11370. ds_data_recitem.filter("String(degnitemlevlcd).indexOf('" + levelcd + "') >= 0 && String(colno).indexOf('" + colno + "') >= 0 && String(degnitemcd).indexOf('" + basecd + "') >= 0");
  11371. }
  11372. for(var j = 0; j < ds_data_recitem.getRowCount(); j++){
  11373. var degnitemno = ds_data_recitem.getColumn(j, "degnitemno");
  11374. var degnitemkind = ds_data_recitem.getColumn(j, "degnitemkind");
  11375. var colId = degnitemkind + "_" + degnitemno;
  11376. utlf_addLog("colId : " + colId );
  11377. if(!utlf_isNull(colId))
  11378. {
  11379. if(!utlf_isNull(itemval)){
  11380. if( this.components[colId] != null ){
  11381. if( !utlf_isNull(eval(colId).userMask) && eval(colId).userMask == "include" && eval(colId) instanceof Calendar && !utlf_isNull(itemval) ){
  11382. if( itemval.indexOf("-") > -1 ){
  11383. itemval = itemval.replace(/-/g,"");
  11384. }
  11385. }
  11386. }
  11387. if(colId.indexOf("MSL") == -1)
  11388. {
  11389. if(!utlf_isNull(extnflag) && extnflag == "Y"){ // 확장 컨트롤값 세팅
  11390. if( ds_data_itemvalue.getColumnInfo(colId+"_EXTN") != null )
  11391. ds_data_itemvalue.setColumn(0, colId+"_EXTN", itemval);
  11392. else
  11393. utlf_addLog( "lf_setFormItemValue #1: " + colId+"_EXTN 이 존재하지 않습니다.");
  11394. }else{
  11395. ds_data_itemvalue.setColumn(0, colId, itemval);
  11396. try{
  11397. if( (degnitemkind == "RDO" || degnitemkind == "CHK") && !utlf_isNull(itemval) )
  11398. {
  11399. // 컴포짓에 value 세팅하는 함수
  11400. lf_setSelCtrl(colId, itemval);
  11401. }
  11402. // lf_setRecDS이벤트에서 값이 셋팅되어야 하나 objComp 가 btn_signsave 로 인식되어 정상적으로 데이터가 셋팅되지 않음.
  11403. else if(degnitemkind == "CMB" && !utlf_isNull(itemval) && !utlf_isNull(eval(colId).innerdataset))
  11404. {
  11405. ds_data_recitem.setColumn(j, "rectermnm", eval(colId).innerdataset.lookup("termbasecd", ds_data_itemvalue.getColumn(0, colId) , "valitemnm"));
  11406. }
  11407. }catch(e){
  11408. sysf_catchTrace(e);
  11409. alert("연동데이터 설정 시 오류가 발생하였습니다. 전산실로 문의바랍니다.");
  11410. }
  11411. }
  11412. }
  11413. else
  11414. {
  11415. var arrTemp = new Array();
  11416. for(var k = 0; k < this.components.length; k++)
  11417. {
  11418. var ctrl = this.components[k];
  11419. var bCtrl = false;
  11420. if( !utlf_isNull(colno) ){
  11421. if( ctrl.colno == colno ){
  11422. bCtrl = true;
  11423. }
  11424. }else{
  11425. if( ctrl.truevalue == itemval ){
  11426. bCtrl = true;
  11427. }
  11428. }
  11429. if(bCtrl && ctrl.supdegnitemno == degnitemno)
  11430. {
  11431. if( !utlf_isNull(extnflag) && extnflag == "Y"){ // 확장 컨트롤값 세팅
  11432. //ctrl.enable = true;
  11433. if( ds_data_itemvalue.getColumnInfo(ctrl.name+"_EXTN") != null )
  11434. ds_data_itemvalue.setColumn(0, ctrl.name+"_EXTN", itemval);
  11435. else
  11436. sysf_trace( "setFormItemValue #2: " + ctrl.name+"_EXTN 이 존재하지 않습니다.");
  11437. }else{
  11438. ctrl.value = itemval;
  11439. }
  11440. }
  11441. }
  11442. }
  11443. }
  11444. }
  11445. }
  11446. ds_data_recitem.filter("");
  11447. }
  11448. // 산술식 적용
  11449. lf_calculateInit();
  11450. dsf_deleteDs("ds_cond_TRMRF01219");
  11451. dsf_deleteDs("ds_data_TRMRF01219");
  11452. dsf_deleteDs("ds_cond_TRMRF01220");
  11453. dsf_deleteDs("ds_data_TRMRF01220");
  11454. utlf_addLog(":::::::: lf_setInitData End :::::::");
  11455. }
  11456. function lf_showImgeEdit(obj:Button, e:ClickEventInfo)
  11457. {
  11458. var fstitemlevlcd = "";
  11459. var openmode = "";
  11460. var ctrlNm = obj.name;
  11461. ctrlNm = ctrlNm.replace("BTN_", "");
  11462. var degnitemno = ctrlNm.replace("_EXT1", "");
  11463. var obj_Image = this.components["IMG_"+degnitemno];
  11464. var obj_Btn = obj;
  11465. var objImgedit = this.components["ivw_imgedit_"+degnitemno];
  11466. if(utlf_isNull(objImgedit))
  11467. {
  11468. var nLeft = obj_Image.position.left;
  11469. var nTop = obj_Image.position.bottom;
  11470. var nRight = nLeft + 205;
  11471. var nBottom = nTop + 155;
  11472. for(var k = 0; k < this.all.length; k++)
  11473. {
  11474. if(this.all[k] instanceof ActiveX) // 이미지 정보 취합
  11475. {
  11476. var objActiveX = this.all[k];
  11477. // Log Add
  11478. utlf_addLog(nBottom + " >= " + objActiveX.position.top + " || " + nTop + " <= " + objActiveX.position.top);
  11479. utlf_addLog(this.position.right + " < " + (nRight+205) + " || " + (this.position.bottom + this.vscrollbar.max) + " < " + (nTop + 55));
  11480. //if( ((nBottom >= objActiveX.position.top) && (nTop <= objActiveX.position.top)) || (parent.position.bottom < nTop) )
  11481. if( (((nBottom-100) >= objActiveX.position.top) && (nTop <= objActiveX.position.top ))
  11482. || (this.position.right < (nRight+205) || (this.position.bottom + this.vscrollbar.max) < (nTop + 55)) )
  11483. { // 팔레트 영역이 다른 ActiveX에 겹치거나 로더 bottom보다 아래로 그려질 시 버튼 밑으로 display
  11484. nLeft = obj_Image.position.right + 1;
  11485. nRight = nLeft + 205;
  11486. nTop = obj_Btn.position.top + 20;
  11487. nBottom = nTop + 155;
  11488. break;
  11489. }
  11490. }
  11491. }
  11492. objImgedit = new Div("ivw_imgedit_"+degnitemno, nLeft, nTop, nRight, nBottom);
  11493. this.addChild("ivw_imgedit_"+degnitemno, objImgedit);
  11494. objImgedit.url = "emr_formmngtxp::SSMRF04600.xfdl";
  11495. objImgedit.visible = false;
  11496. objImgedit.class = "div_DA";
  11497. objImgedit.show();
  11498. objImgedit.ondrag.addHandler(lf_ivw_imgedit_ondrag);
  11499. objImgedit.ondragmove.addHandler(lf_ivw_imgedit_ondragmove);
  11500. //objImgedit.bringToFront();
  11501. }
  11502. if(objImgedit.visible)
  11503. {
  11504. objImgedit.visible = false;
  11505. if( obj_Btn.class == "bn_block_max" )
  11506. obj_Btn.class = "bn_block_min";
  11507. else
  11508. obj_Btn.class = "icon_top";
  11509. obj_Image.SetDrawMode(false);
  11510. obj_Image.SelectDrawType(0, false);
  11511. }
  11512. else
  11513. {
  11514. var objFormDegnDS = "";
  11515. var objFormMastDS = "";
  11516. if(frmf_isPopup())
  11517. {
  11518. objFormDegnDS = this.parent.objects["ds_data_formdegn"];
  11519. objFormMastDS = this.parent.objects["ds_data_formmast"];
  11520. }
  11521. if(utlf_isNull(objFormDegnDS)) // 프로그램 서식
  11522. {
  11523. for(var i = 0; i < parent.parent.all.length; i++)
  11524. {
  11525. if(parent.parent.parent.all[i] instanceof Dataset) //Object를 비교하는 구문
  11526. {
  11527. dsNm = parent.parent.parent.all[i].name;
  11528. if(dsNm.indexOf("ds_data_formmast") != -1)
  11529. {
  11530. objFormMastDS = parent.parent.parent.all[i];
  11531. }
  11532. }
  11533. }
  11534. objFormDegnDS = this.objects["ds_data_recitem"];
  11535. }
  11536. var recitemNode = "";
  11537. var degnitemcd = "";
  11538. var degnitemlevlcd = "";
  11539. var degnitemnm = "";
  11540. // 이미지의 디자인 정보를 확인한다.
  11541. var imgNode = objFormDegnDS.findRow("degnitemno", degnitemno);
  11542. utlf_addLog("degnitemno : " + degnitemno);
  11543. var isCommonForm = false;
  11544. var supformkindNode = "";
  11545. var supformprogflagNode = "";
  11546. var supformcdNode = "";
  11547. var supsrcformcdNode = "";
  11548. var supformprognmNode = "";
  11549. var nRow = objFormMastDS.rowposition;
  11550. if(nRow>-1)
  11551. {
  11552. supformcdNode = objFormMastDS.getColumn(nRow, "formcd");
  11553. supsrcformcdNode = objFormMastDS.getColumn(nRow, "srcformcd");
  11554. supformkindNode = objFormMastDS.getColumn(nRow, "formkind");
  11555. supformprogflagNode = objFormMastDS.getColumn(nRow, "formprogflag");
  11556. supformprognmNode = objFormMastDS.getColumn(nRow, "formprognm");
  11557. if(supformkindNode == "C" && supformprogflagNode == "PROG" && supformprognmNode != "-"){
  11558. isCommonForm = true;
  11559. }
  11560. }
  11561. var objRecItemDS = this.objects["ds_data_recitem"];
  11562. if(isCommonForm)
  11563. {
  11564. // 공통서식
  11565. fstitemlevlcd = this.name.replace("ivw_", "");
  11566. fstitemlevlcd = fstitemlevlcd.substr(0, 7);
  11567. nRow = imgNode.rowposition;
  11568. if(nRow>-1)
  11569. {
  11570. degnitemlevlcd = imgNode.getColumn(nRow, "degnitemlevlcd");
  11571. recitemNode = objRecItemDS.findRowExpr("degnitemlevlcd=='"+fstitemlevlcd+"."+degnitemlevlcd+"'");
  11572. }
  11573. }
  11574. else
  11575. {
  11576. // 특수서식
  11577. nRow = imgNode;
  11578. if(nRow>-1)
  11579. {
  11580. degnitemlevlcd = objFormDegnDS.getColumn(nRow, "degnitemlevlcd");
  11581. openmode = frmf_getParameter("openmode");
  11582. // 확장서식을 기록화면에서 기본서식의 팝업으로 띄울경우 기본서식과 동일하게 처리
  11583. if(openmode=="extnunitform")
  11584. {
  11585. fstitemlevlcd = objRecItemDS.lookup("degnitemno", degnitemno, "fstlevlitemcd");
  11586. fstitemlevlcd = fstitemlevlcd.substr(0, 7);
  11587. recitemNode = objRecItemDS.findRowExpr("degnitemlevlcd=='"+fstitemlevlcd+"."+degnitemlevlcd+"'");
  11588. }
  11589. else
  11590. {
  11591. recitemNode = objRecItemDS.findRowExpr("degnitemlevlcd=='"+degnitemlevlcd+"'");
  11592. }
  11593. }
  11594. }
  11595. if(recitemNode != -1)
  11596. {
  11597. degnitemcd = objRecItemDS.getColumn(recitemNode, "degnitemcd");
  11598. degnitemno = objRecItemDS.getColumn(recitemNode, "degnitemno");
  11599. degnitemlevlcd = objRecItemDS.getColumn(recitemNode, "degnitemlevlcd");
  11600. degnitemnm = objRecItemDS.getColumn(recitemNode, "degnitemnm");
  11601. }
  11602. // SSMRF04600 인스턴스 설정
  11603. var objImgeinfoDS = objImgedit.objects["ds_data_imgeInfo"];
  11604. nRow = objImgeinfoDS.rowposition;
  11605. if(nRow>-1)
  11606. {
  11607. objImgeinfoDS.setColumn(nRow, "degnitemcd", degnitemcd);
  11608. objImgeinfoDS.setColumn(nRow, "degnitemno", degnitemno);
  11609. objImgeinfoDS.setColumn(nRow, "degnitemlevlcd", degnitemlevlcd);
  11610. objImgeinfoDS.setColumn(nRow, "degnitemnm", degnitemnm);
  11611. }
  11612. objImgedit.visible = true;
  11613. if( obj_Btn.class == "bn_block_min" )
  11614. obj_Btn.class = "bn_block_max";
  11615. else
  11616. obj_Btn.class = "icon_bottom";
  11617. obj_Image.SetDrawMode(true);
  11618. }
  11619. }
  11620. var xss;
  11621. var yss;
  11622. function lf_ivw_imgedit_ondrag(obj:Div, e:DragEventInfo)
  11623. {
  11624. xss = obj.position.left - e.screenX;
  11625. yss = obj.position.top - e.screenY;
  11626. return true;
  11627. }
  11628. function lf_ivw_imgedit_ondragmove(obj:Div, e:DragEventInfo)
  11629. {
  11630. obj.move(e.screenX + xss, e.screenY + yss);
  11631. }
  11632. function lf_clearExtninfo(ds:Form){
  11633. var arrDataset = new Array("ds_main_extninfo_resultinfo", "ds_main_extninfo_staffauthinfo", "ds_main_extninfo_oprinfo"
  11634. , "ds_main_extninfo_oplistinfo", "ds_main_extninfo_recitem", "ds_main_extninfo_drlistinfo"
  11635. , "ds_data_diagcdlist", "ds_main_extninfo_selectoplist", "ds_main_extninfo_dscinoutinfo"
  11636. , "ds_main_extninfo_rectextinfo", "ds_main_extninfo_anstdrlistinfo", "ds_main_extninfo_oproomlistinfo"
  11637. , "ds_main_extninfo_recseqinfo", "ds_main_extninfo_etcinfo");
  11638. for(var i=0; i<arrDataset.length; i++){
  11639. if( this.isValidObject(arrDataset[i]) == true ){
  11640. var objDs = this.objects[arrDataset[i]];
  11641. objDs.clearData();
  11642. }
  11643. }
  11644. }
  11645. /****************************************************************************************
  11646. * Function : lf_getCCInfo
  11647. * Description : 주호소 팝업
  11648. * Creator :
  11649. ****************************************************************************************/
  11650. function lf_getCCInfo(obj:Button, e:ClickEventInfo)
  11651. {
  11652. var degnno, dsNm, nRowno;
  11653. var btnNm = obj.name;
  11654. degnno = btnNm.replace("_EXT2", "");
  11655. degnno = degnno.replace("_EXT1", "");
  11656. degnno = degnno.replace("_EXT", "");
  11657. degnno = degnno.replace("BTN_", "");
  11658. dsNm = "ds_data_grd_"+degnno;
  11659. //GRD_212
  11660. var vGrdNm = "CCN_" + +degnno;
  11661. frmf_setParameter("SPMRF04200_param_nodepath", "ds_temp_ccinfo");
  11662. frmf_modal("SPMRF04200", "SPMRF04200", null, 1, 0, 0, null, null, null, null, null, null, "M");
  11663. var dataYn = frmf_getParameter("MRF04200_DataYn");
  11664. if(dataYn == "Y")
  11665. {
  11666. var grdDs = this.objects[dsNm];
  11667. var objTempDS = this.objects[dsNm.replace("ds_data", "ds_temp")];
  11668. var nRow = grdDs.rowposition;
  11669. var nLastRow = grdDs.getRowCount() - 1;
  11670. var smmcnts = grdDs.getColumn(nLastRow, "주호소명");
  11671. grdDs.enableevent = false;
  11672. if( utlf_isNull(grdDs.getColumn(nLastRow, "주호소명")) && utlf_isNull(grdDs.getColumn(nLastRow, "주호소코드")) ){
  11673. // Grid DeleteRow
  11674. grdDs.deleteRow(nLastRow);
  11675. // recitem Delete rowno
  11676. ds_data_recitem.filter("rowno=='"+nRow+"' && degnitemno == '"+degnno+"'");
  11677. var nRowCnt = ds_data_recitem.getRowCount();
  11678. for(var i=(nRowCnt-1);i>=0; i--){
  11679. ds_data_recitem.deleteRow(i);
  11680. }
  11681. ds_data_recitem.filter("");
  11682. }
  11683. // add Row
  11684. if( isValidObject("ds_temp_ccinfo") && ds_temp_ccinfo.getRowCount() > 0 ){
  11685. for(var k=0; k<ds_temp_ccinfo.getRowCount(); k++){
  11686. var rectermcd = ds_temp_ccinfo.getColumn(k, "termcd");
  11687. var rectermnm = ds_temp_ccinfo.getColumn(k, "termengnm");
  11688. var reccnts = ds_temp_ccinfo.getColumn(k, "comments");
  11689. var reccnts2 = ds_temp_ccinfo.getColumn(k, "happendd");
  11690. var nDupRow = grdDs.findRow("주호소코드", rectermcd);
  11691. if( nDupRow < 0 ){
  11692. nRowno = grdDs.addRow();
  11693. grdDs.setColumn(nRowno, "주호소코드", rectermcd);
  11694. grdDs.setColumn(nRowno, "주호소명", rectermnm);
  11695. grdDs.setColumn(nRowno, "Comments", reccnts);
  11696. grdDs.setColumn(nRowno, "발생일", reccnts2);
  11697. }
  11698. for(var j=0; j<nTempCnt; j++){
  11699. var nAddRow = ds_data_recitem.addRow();
  11700. ds_data_recitem.copyRow(nAddRow, objTempDS, j);
  11701. ds_data_recitem.setColumn(nAddRow, "rowno", nRowno);
  11702. }
  11703. }
  11704. }
  11705. grdDs.enableevent = true;
  11706. }
  11707. }
  11708. /****************************************************************************************
  11709. * Function : lf_addGridCol
  11710. * Description : 누적 그리드 열추가 버튼 이벤트
  11711. * retrun type :
  11712. * Creator :
  11713. ****************************************************************************************/
  11714. function lf_addGridCol(obj:Button, e:ClickEventInfo)
  11715. {
  11716. var degnno, dsNm, nRowno;
  11717. var btnNm = obj.name;
  11718. degnno = btnNm.replace("_EXT2", "");
  11719. degnno = degnno.replace("_EXT1", "");
  11720. degnno = degnno.replace("_EXT", "");
  11721. degnno = degnno.replace("BTN_", "");
  11722. dsNm = "ds_data_grd_"+degnno;
  11723. //GRD_212
  11724. var vGrdNm = "GRD_" + +degnno;
  11725. var vColNm = this.objects[dsNm].getColCount();
  11726. vColNm = "Column"+vColNm;
  11727. nColno = eval(dsNm).addColumn(vColNm, "string");
  11728. if(nColno > -1)
  11729. {
  11730. for(var i=0; i < eval(dsNm).rowcount; i++ )
  11731. {
  11732. this.objects[dsNm].setColumn(i, vColNm, "");
  11733. }
  11734. //this.components[vGrdNm]
  11735. var vAddafterColCount = this.objects[dsNm].getColCount() -1;
  11736. vColNm = "bind:"+ vColNm;
  11737. this.components[vGrdNm].insertContentsCol(vAddafterColCount);
  11738. this.components[vGrdNm].setCellProperty("Body", vAddafterColCount, "text", vColNm);
  11739. this.components[vGrdNm].setCellProperty("Body", vAddafterColCount, "edittype", "normal");
  11740. this.components[vGrdNm].setCellProperty("Body", vAddafterColCount, "displaytype", "normal");
  11741. this.components[vGrdNm].setCellProperty("Body", vAddafterColCount, "class", "cell_nopadding");
  11742. this.components[vGrdNm].setCellProperty("Body", vAddafterColCount, "wordwrap", "word");
  11743. this.components[vGrdNm].setCellProperty("Body", vAddafterColCount, "tooltiptype", "bottom");
  11744. //Grid.setFormatColProperty(nColIdx,strPropID,nValue);
  11745. this.components[vGrdNm].setFormatColProperty(vAddafterColCount, "size", 100);
  11746. lf_addRecItemOne2(dsNm, nColno, degnno);
  11747. }
  11748. // Grid Row Size 보정
  11749. lf_setRealRowSize(this.components[vGrdNm]);
  11750. }
  11751. /****************************************************************************************
  11752. * Function : lf_removeGridCol
  11753. * Description : 누적 그리드 열삭제 버튼 이벤트
  11754. * retrun type :
  11755. * Creator :
  11756. ****************************************************************************************/
  11757. function lf_removeGridCol(obj:Button, e:ClickEventInfo)
  11758. {
  11759. //선택한 column을 삭제하는 것이 아니라 마지막 column을 삭제한다.
  11760. var degnno, dsNm, nRowno;
  11761. var btnNm = obj.name;
  11762. degnno = btnNm.replace("_EXT2", "");
  11763. degnno = degnno.replace("_EXT1", "");
  11764. degnno = degnno.replace("_EXT", "");
  11765. degnno = degnno.replace("BTN_", "");
  11766. dsNm = "ds_data_grd_"+degnno;
  11767. var vGrdNm = "GRD_" + +degnno;
  11768. var vCount = this.objects[dsNm].getColCount() -1;
  11769. if(vCount < 1)
  11770. {
  11771. //더 이상 삭제 할 수 없음
  11772. return;
  11773. }
  11774. else
  11775. {
  11776. //이벤트 중지
  11777. this.objects[dsNm].updatecontrol = false;
  11778. //그리드 데이터셋 column삭제
  11779. for(var i=0; i < this.objects[dsNm].rowcount; i++ )
  11780. {
  11781. this.objects[dsNm].setColumn(i, vCount, "");
  11782. }
  11783. //this.objects[dsNm].setColumn(vCount);
  11784. this.objects[dsNm].deleteColumn(vCount);
  11785. this.objects[dsNm].updatecontrol = true;
  11786. //rec 데이터셋 관련 row삭제
  11787. var nRowno = vCount;
  11788. var sFstlevlcd = ds_data_recitem.lookupExpr("degnitemkind == 'GRD' && degnitemno == '"+degnno+"' && rowno == '0' && colno == '-1'", "fstlevlitemcd");
  11789. ds_data_recitem.filter("colno=='"+nRowno+"' && fstlevlitemcd == '"+sFstlevlcd+"'");
  11790. var nRowCnt = ds_data_recitem.getRowCount();
  11791. for(var i=(nRowCnt-1);i>=0; i--)
  11792. {
  11793. ds_data_recitem.deleteRow(i);
  11794. }
  11795. ds_data_recitem.filter("");
  11796. //이벤트 재가동
  11797. //this.objects[dsNm].updatecontrol = true;
  11798. //그리드(화면) 삭제
  11799. var vCountGrdCol = this.components[vGrdNm].getFormatColCount() -1;
  11800. this.components[vGrdNm].deleteContentsCol(vCount);
  11801. }
  11802. // Grid Row Size 보정
  11803. lf_setRealRowSize(this.components[vGrdNm]);
  11804. }
  11805. /****************************************************************************************
  11806. * Function : lf_getOpInfo
  11807. * Description : 수술그리드 팝업 버튼 클릭 시
  11808. * retrun type :
  11809. * Creator :
  11810. ****************************************************************************************/
  11811. function lf_getOpInfo(obj:Button, e:ClickEventInfo)
  11812. {
  11813. sPopUpRectermnm = "";
  11814. var btnNm = obj.name;
  11815. btnNm = btnNm.replace("BTN_","");
  11816. var btnCd = btnNm.replace("_EXT1","");
  11817. var objGrid = this.components["OPN_"+btnCd];
  11818. lf_clickOpOpenPopUp(objGrid);
  11819. }
  11820. /****************************************************************************************
  11821. * Argument : objGrid - Grid Object
  11822. * Description : 수술 검색 및 설정 (SPMMO03300_수술팝업.xfdl)
  11823. ****************************************************************************************/
  11824. function lf_clickOpOpenPopUp(objGrid:Grid)
  11825. {
  11826. var langflag = fGetFormMast("langflag");
  11827. frmf_setParameter("SPMMO3300_param_nodepath", "ds_temp_opinfo");
  11828. var objPop = new Object();
  11829. objPop.plgv_opParam = "N";
  11830. objPop.plgv_searchdata = "";
  11831. var objRtnParam = frmf_modal("SPMMO03300", "SPMMO03300", objPop, null, null, null, null, null, null, null, null, null, "M");
  11832. var objGrdDS = eval(objGrid.binddataset);
  11833. var objTempDS = this.objects[objGrdDS.name.replace("ds_data", "ds_temp")];
  11834. var rtnValue = frmf_getParameter("SPMMO03300_rtn_useyn");
  11835. if(rtnValue=="N"){
  11836. return;
  11837. }
  11838. var objOpInfoDS:Dataset = new Dataset;
  11839. //objOpInfoDS = objRtnParam.prds_selOpDs;
  11840. objOpInfoDS = this.objects["ds_temp_opinfo"];
  11841. var nRowno = objGrdDS.rowposition;
  11842. var nRowCnt = objGrdDS.getRowCount();
  11843. var sRectermnm = "";
  11844. var sNo = objGrid.name.replace("OPN_", "");
  11845. // sRectermnm = objGrdDS.getColumn((nRowCnt-1), "수술명");
  11846. // if(utlf_isNull(sRectermnm))
  11847. // {
  11848. for(var i=0; i<nRowCnt; i++){
  11849. // Grid DeleteRow
  11850. objGrdDS.deleteRow(i);
  11851. // recitem Delete rowno
  11852. ds_data_recitem.filter("rowno=='"+i+"' && degnitemno == '"+sNo+"'");
  11853. var nRowCnt = ds_data_recitem.getRowCount();
  11854. for(var i=(nRowCnt-1);i>=0; i--){
  11855. ds_data_recitem.deleteRow(i);
  11856. }
  11857. ds_data_recitem.filter("");
  11858. }
  11859. var sTmpopcd = "";
  11860. var sTmpopengnm = "";
  11861. var nOpListCnt = objOpInfoDS.getRowCount();
  11862. if(nOpListCnt>0)
  11863. {
  11864. objGrdDS.enableevent = false;
  11865. // Grid 구성 Item
  11866. var nTempCnt = objTempDS.getRowCount();
  11867. for(var i=0; i<nOpListCnt; i++)
  11868. {
  11869. sTmpOpcd = objOpInfoDS.getColumn(i, "opcd");
  11870. // if(langflag == "KO")
  11871. // {
  11872. // sTmpOphngnm = objOpInfoDS.getColumn(i, "ophngnm");
  11873. // }
  11874. // else
  11875. // {
  11876. sTmpOphngnm = objOpInfoDS.getColumn(i, "opengnm");
  11877. // }
  11878. var nFindRow = objGrdDS.findRow("수술코드", sTmpOpcd);
  11879. if(nFindRow>-1)
  11880. {
  11881. continue;
  11882. }
  11883. nRowno = objGrdDS.addRow();
  11884. // <!--수술코드, 수술명-->
  11885. objGrdDS.setColumn(nRowno, "수술코드", sTmpOpcd);
  11886. objGrdDS.setColumn(nRowno, "수술명" , sTmpOphngnm);
  11887. var degnitemno, nInitRow, nAddRow;
  11888. for(var j=0; j<nTempCnt; j++){
  11889. var nAddRow = ds_data_recitem.addRow();
  11890. ds_data_recitem.copyRow(nAddRow, objTempDS, j);
  11891. ds_data_recitem.setColumn(nAddRow, "rowno", nRowno);
  11892. }
  11893. /*
  11894. for(var j=0; j<nTempCnt; j++)
  11895. {
  11896. if(i==0)
  11897. {
  11898. degnitemno = objTempDS.getColumn(0, "degnitemno");
  11899. nInitRow = ds_data_recitem.findRowExpr("degnitemno=='" + degnitemno + "' && rowno=='0' && colno=='0'");
  11900. if(nInitRow > -1 && !utlf_isNull(ds_data_recitem.getColumn(nInitRow, "rectermcd")))
  11901. {
  11902. nAddRow = nInitRow;
  11903. }
  11904. }
  11905. else
  11906. {
  11907. nAddRow = ds_data_recitem.addRow();
  11908. }
  11909. ds_data_recitem.copyRow(nAddRow, objTempDS, j);
  11910. ds_data_recitem.setColumn(nAddRow, "rowno", nRowno);
  11911. }
  11912. */
  11913. }
  11914. objGrdDS.enableevent = true;
  11915. }
  11916. lf_addRowOp(objGrid);
  11917. }
  11918. /****************************************************************************************
  11919. * Argument : N/A
  11920. * Description : 수술그리드 행추가.
  11921. ****************************************************************************************/
  11922. function lf_addRowOp(objGrid:Grid)
  11923. {
  11924. var objGrdDS = eval(objGrid.binddataset);
  11925. var nRowCnt = objGrdDS.getRowCount();
  11926. if(nRowCnt<1){
  11927. objGrdDS.clearData();
  11928. objGrdDS.addRow();
  11929. }else{
  11930. objGrid.updateToDataset();
  11931. var objTempDS = this.objects[objGrdDS.name.replace("ds_data", "ds_temp")];
  11932. var nRow = objGrdDS.rowposition;
  11933. var sSmmCnts = objGrdDS.getColumn(nRow, "수술명");
  11934. if(!utlf_isNull(sSmmCnts)){
  11935. if(nRow==(nRowCnt-1)){
  11936. var nRowno = objGrdDS.addRow();
  11937. var nAddRow, nCellPos;
  11938. var nTempCnt = objTempDS.getRowCount();
  11939. for(var i=0; i<nTempCnt; i++){
  11940. nAddRow = ds_data_recitem.addRow();
  11941. ds_data_recitem.copyRow(nAddRow, objTempDS, i);
  11942. ds_data_recitem.setColumn(nAddRow, "rowno", nRowno);
  11943. var nColno = ds_data_recitem.getColumn(nAddRow, "colno");
  11944. }
  11945. var nMaxRow = ds_data_recitem.getMax('parseInt(rowno)');
  11946. ds_data_recitem.setColumn(nMaxRow, "rectermcd", "");
  11947. }
  11948. }
  11949. }
  11950. }
  11951. /****************************************************************************************
  11952. * Function : lf_editFdg
  11953. * Description : 가계도 편집 버튼 이벤트
  11954. * retrun type :
  11955. * Creator :
  11956. ****************************************************************************************/
  11957. function lf_editFdg(obj, e)
  11958. {
  11959. var vObj = obj.name;
  11960. var vNos = vObj.split("_");//vNos[1]
  11961. var vNo = "FDG_"+vNos[1];
  11962. var vFDG = this.components[vNo];
  11963. var vDs = this.objects["ds_data_recitem"];
  11964. var nFindRow;
  11965. if(!utlf_isNull(vFDG))
  11966. {
  11967. this.frmf_clearParameter("SPMMR04711_shape");
  11968. this.frmf_clearParameter("SPMMR04711_base64");
  11969. var sFdgInfo;
  11970. var sFdgImg;
  11971. frmf_modal("SPMMR04700", "SPMMR04700", null, null, null, null, null, null, null, null, null, null, "M");
  11972. sFdgInfo = this.frmf_getParameter("SPMMR04711_shape");
  11973. sFdgImg = this.frmf_getParameter("SPMMR04711_base64");
  11974. nFindRow = vDs.findRowExpr("degnitemkind == 'FDG' && degnitemno == '"+vNos[1]+"'");
  11975. if(!utlf_isNull(sFdgInfo) && !utlf_isNull(nFindRow) && nFindRow > -1)
  11976. {
  11977. //이미지 세팅
  11978. vFDG.RemoveAll();
  11979. vFDG.LoadMetaData("");
  11980. vFDG.LoadMetaData(sFdgInfo);
  11981. var objImgeData = objExt.decodeBase64(sFdgImg, "BIN");
  11982. vDs.setColumn(nFindRow, "reccnts", sFdgInfo);
  11983. vDs.setColumn(nFindRow, "recimge", objImgeData);
  11984. }
  11985. }
  11986. }
  11987. /****************************************************************************************
  11988. * Function : lf_setRealRowSize
  11989. * Description : 그리드 row size 보정 ( Gridtype : T, X )
  11990. * retrun type :
  11991. * Creator :
  11992. ****************************************************************************************/
  11993. //GRD만 해당으로 처리, DGN,DGN2 등 다른 그리드는 처리되지 않음
  11994. function lf_setRealRowSize(obj:Grid)
  11995. {
  11996. var rowcount = obj.rowcount; //row개수
  11997. var rowheights = ""; //rowheight 속성값
  11998. var rowheightArray = null; //rowheights값을 통해 row별로 size를 배열에 담는다.
  11999. if(obj.rowheight !=null || obj.rowheight != undefined)
  12000. {
  12001. rowheights = obj.rowheight;
  12002. rowheightArray = rowheights.split(",");
  12003. }
  12004. if(rowcount > 0 && rowheights !="")
  12005. {
  12006. //row 사이즈 조정가능
  12007. }
  12008. else
  12009. {
  12010. //row 사이즈 조정불가 return
  12011. return;
  12012. }
  12013. if(rowcount+1 == rowheightArray.length) //rowcount (head부분 제외)
  12014. {
  12015. for(var i=0; i <rowcount; i++)
  12016. {
  12017. //row별 사이즈 조정
  12018. obj.setRealRowSize(i, rowheightArray[i+1]);
  12019. }
  12020. }
  12021. }
  12022. /****************************************************************************************
  12023. * Function : lf_setCurrentDateCal
  12024. * Description : Calendar 현재일자 설정
  12025. * retrun type :
  12026. * Creator :
  12027. ****************************************************************************************/
  12028. function lf_setCurrentDateCal(objCal){
  12029. if( !utlf_isNull(objCal) && objCal instanceof Calendar && !utlf_isNull(objCal.curDate) ){
  12030. objCal.value = utlf_getCurrentDate();
  12031. }
  12032. }
  12033. /****************************************************************************************
  12034. * Function : lf_setDiagNmbyDegnItemLevlCd_prof
  12035. * Description : 서식 아이템의 값 반환
  12036. * Argument : pid - 환자등록번호
  12037. * cretno - 환자등록생성번호
  12038. * orddd - 진료일 (입원일)
  12039. * orddeptcd - 진료과
  12040. * ioflag - 입원/외래 구분
  12041. * degnlvcd - 서식항목 식별 코드
  12042. * retrun type :
  12043. * Creator : 서식관련 MMRCommon으로 이동(MMR01200)
  12044. ****************************************************************************************/
  12045. function lf_setDiagNmbyDegnItemLevlCd_prof(pid, cretno, orddd, orddeptcd, ioflag, degnlvcd, mediflag, srcformcd)
  12046. {
  12047. //진단명 그리드 찾기
  12048. var dgnDs = lf_getDGN("DGN");
  12049. var DGN = true;
  12050. if(utlf_isNull(dgnDs))
  12051. {
  12052. DGN = false;
  12053. }
  12054. if( DGN == false ) return;
  12055. var sOutDs = dsf_createDsRow("ds_data_diaginfo_prop", [{col:"diagdd", type:"string", size:256, val:""},
  12056. {col:"diagcd", type:"string", size:256, val:""},
  12057. {col:"icd10cd", type:"string", size:256, val:""},
  12058. {col:"dispdiagcd", type:"string", size:256, val:""},
  12059. {col:"diagengnm", type:"string", size:256, val:""},
  12060. {col:"diaghngnm", type:"string", size:256, val:""},
  12061. {col:"diagkindcd" , type:"string", size:256, val:""},
  12062. {col:"diagkindcdflag" , type:"string", size:256, val:""}
  12063. ]);
  12064. var objOutDs:Dataset = new Dataset;
  12065. objOutDs = this.objects[sOutDs];
  12066. //20100719-kys-발행된 제증명 존재시 제증명 진단명연동건으로 분기
  12067. var sSendDs;
  12068. var objSendDs:Dataset = new Dataset;
  12069. if(utlf_isNull(mediflag)){
  12070. sSendDs = dsf_createDsRow("ds_cond_diaginfo_prop", [{col:"pid", type:"string", size:256, val:pid},
  12071. {col:"orddd", type:"string", size:256, val:""},
  12072. {col:"cretno", type:"string", size:256, val:""},
  12073. {col:"mskind", type:"string", size:256, val:"Y"},
  12074. {col:"histflag", type:"string", size:256, val:"Y"},
  12075. {col:"grupflag", type:"string", size:256, val:"Y"},
  12076. {col:"orddeptcd", type:"string", size:256, val:orddeptcd},
  12077. {col:"fromdd", type:"string", size:256, val:""},
  12078. {col:"todd", type:"string", size:256, val:""},
  12079. {col:"ioflag", type:"string", size:256, val:ioflag},
  12080. {col:"srcformcd", type:"string", size:256, val:srcformcd}
  12081. ]);
  12082. objSendDs = this.objects[sSendDs];
  12083. var oParam = {};
  12084. oParam.id = "TRMMR02908";
  12085. oParam.service = "medirecapp.ExtnMediRec";
  12086. oParam.method = "reqGetPatDiagInfo";
  12087. oParam.inds = "req="+sSendDs;
  12088. oParam.outds = sOutDs+"=diagcdlist";
  12089. oParam.async = false;
  12090. //oParam.callback = "cf_TRMMR02908";
  12091. tranf_submit(oParam);
  12092. }else if(!utlf_isNull(mediflag)){
  12093. var arrMediflag = mediflag.split(",");
  12094. sSendDs = dsf_createDsRow("ds_cond_diaginfo_prop", [{col:"formrecseq", type:"string", size:256, val:arrMediflag[0]},
  12095. {col:"langflag", type:"string", size:256, val:arrMediflag[1]}
  12096. ]);
  12097. objSendDs = this.objects[sSendDs];
  12098. var oParam = {};
  12099. oParam.id = "TRMMR02915";
  12100. oParam.service = "medirecapp.ExtnMediRec";
  12101. oParam.method = "reqGetPatIssDiagInfo";
  12102. oParam.inds = "req="+sSendDs;
  12103. oParam.outds = sOutDs+"=diagcdlist";
  12104. oParam.async = false;
  12105. //oParam.callback = "cf_TRMMR02915";
  12106. tranf_submit(oParam);
  12107. }
  12108. var sLangFlag = grp_base.ivw_loader.fGetFormMast("langflag");
  12109. var nDelRow = dgnDs.clearData();
  12110. if( nDelRow > 1 ){
  12111. var dsNm = dgnDs.name
  12112. var degnno = dsNm.replace("ds_data_grd_", "");
  12113. var degnitemlevlcd = grp_base.ivw_loader.ds_data_formdegn.lookup("degnitemno", degnno, "degnitemlevlcd");
  12114. var levLen = degnitemlevlcd.length;
  12115. for( var a=1; a< nDelRow; a++){
  12116. grp_base.ivw_loader.ivw_base.ds_data_recitem.filter("degnitemlevlcd.toString().substr(0, "+levLen+") =='"+degnitemlevlcd+"' && rowno == '" + a + "' ");
  12117. for(var k = grp_base.ivw_loader.ivw_base.ds_data_recitem.rowcount-1; k >= 0; k--)
  12118. {
  12119. grp_base.ivw_loader.ivw_base.ds_data_recitem.deleteRow(k);
  12120. }
  12121. grp_base.ivw_loader.ivw_base.ds_data_recitem.filter("");
  12122. }
  12123. }
  12124. var RowCount = objOutDs.getRowCount();
  12125. for(var d=0; d< RowCount; d++)
  12126. {
  12127. var diagcd = objOutDs.getColumn(d, "icd10cd");
  12128. // if( dgnDs.getCaseCount("진단코드 == '"+ diagcd +"'") > 0 )
  12129. // continue;
  12130. dgnDs.addRow();
  12131. var diagnm = "";
  12132. if( sLangFlag == "EN" ){
  12133. diagnm = objOutDs.getColumn(d, "diagengnm");
  12134. }else{
  12135. diagnm = objOutDs.getColumn(d, "diaghngnm");
  12136. }
  12137. if( utlf_isNull(diagnm) ){
  12138. diagnm = objOutDs.getColumn(d, "diagengnm");
  12139. }
  12140. if(objOutDs.getColumn(d, "diagkindcdflag") == "M")
  12141. {
  12142. dgnDs.setColumn(d, "주", 1);
  12143. this.getOwnerFrame().form.frmf_setParameter("SSMRF04000_diagnm", diagnm);
  12144. }
  12145. if(objOutDs.getColumn(d, "diagkindcd") == "R")
  12146. {
  12147. dgnDs.setColumn(d, "R/O", 1);
  12148. }
  12149. if(!utlf_isNull(objOutDs.getColumn(d, "icd10cd")))
  12150. {
  12151. dgnDs.setColumn(d, "진단코드", objOutDs.getColumn(d, "icd10cd"));
  12152. }
  12153. if(!utlf_isNull(diagnm))
  12154. {
  12155. dgnDs.setColumn(d, "진단명", diagnm);
  12156. }
  12157. // if(!utlf_isNull(objOutDs.getColumn(d, "diagcmtcnts")))
  12158. // {
  12159. // dgnDs.setColumn(d, "Comments", objOutDs.getColumn(d, "diagcmtcnts"));
  12160. // }
  12161. }
  12162. dgnDs.addRow();
  12163. }
  12164. /****************************************************************************************
  12165. * Description : 서식내 그리드 존재유무
  12166. * retrun type : Dataset Object
  12167. * Creator :
  12168. ****************************************************************************************/
  12169. function lf_getDGN(gridName)
  12170. {
  12171. var length = grp_base.ivw_loader.ivw_base.all.length;
  12172. if(utlf_isNull(length))
  12173. {
  12174. return;
  12175. }
  12176. for(var c=0; c<length; c++)
  12177. {
  12178. var Name = grp_base.ivw_loader.ivw_base.all[c].name;
  12179. if(Name.indexOf(gridName) > -1)
  12180. {
  12181. var underBar = gridName+"_"
  12182. var nDegnItemNo = Name.replace(underBar, "");
  12183. var DsNm = "ds_data_grd_" + nDegnItemNo;
  12184. var Ds = grp_base.ivw_loader.ivw_base.objects[DsNm];
  12185. return Ds;
  12186. break;
  12187. }
  12188. }
  12189. return;
  12190. }
  12191. /****************************************************************************************
  12192. * Function : lf_addRow
  12193. * Description : Grid 행추가 이벤트
  12194. * Argument : 01. obj
  12195. * : 02. e
  12196. * retrun type :
  12197. * Creator :
  12198. ****************************************************************************************/
  12199. function lf_addRow(obj:Button, e:ClickEventInfo){
  12200. BTN_1_EXT2.click();
  12201. var degnno, dsNm, nRowno;
  12202. var btnNm = obj.name;
  12203. degnno = btnNm.replace("_EXT3", "");
  12204. degnno = degnno.replace("_EXT2", "");
  12205. degnno = degnno.replace("_EXT1", "");
  12206. degnno = degnno.replace("_EXT", "");
  12207. degnno = degnno.replace("BTN_", "");
  12208. dsNm = "ds_data_grd_"+degnno;
  12209. nRowno = eval(dsNm).rowcount - 1;
  12210. var formrecdd = parent.ds_data_formrec.getColumn(0, "formrecdd");
  12211. var formrechm = parent.ds_data_formrec.getColumn(0, "formrechm");
  12212. eval(dsNm).setColumn(nRowno, 0, formrecdd);
  12213. eval(dsNm).setColumn(nRowno, 1, formrechm);
  12214. return;
  12215. }
  12216. function lf_setSizeImg(obj_imge){
  12217. if( utlf_isNull(obj_imge) || (!utlf_isNull(obj_imge) && !(obj_imge instanceof ActiveX)) ){
  12218. return;
  12219. }
  12220. if( utlf_isNull(obj_imge.orgHeight) ){
  12221. obj_imge.orgHeight = obj_imge.position.height;
  12222. }
  12223. if( utlf_isNull(obj_imge.orgWidth) ){
  12224. obj_imge.orgWidth = obj_imge.position.width;
  12225. }
  12226. if( !utlf_isNull(obj_imge.style.backgroundRepeat) ){
  12227. obj_imge.style.backgroundRepeat = "";
  12228. }
  12229. // 2018.05.24 [요청번호:20180402024] [치과병원]서식자료(디자인) 작성 시, 오류에 따른 전산 요청
  12230. utlf_addLog("lf_setSizeImg >> " + obj_imge.GetViewMode());
  12231. if( obj_imge.GetViewMode() != 4 && !utlf_isNull(obj_imge.name) && obj_imge.name != "IMG_98"){
  12232. utlf_addLog("obj_imge.SetViewMode(4) >> ");
  12233. obj_imge.SetViewMode(4);
  12234. }
  12235. }
  12236. function lf_reSizeImg(obj_imge){
  12237. if( !utlf_isNull(obj_imge) && !(obj_imge instanceof ActiveX) && utlf_isNull(obj_imge.orgHeight) && utlf_isNull(obj_imge.orgWidth) ){
  12238. return;
  12239. }
  12240. var sz = obj_imge.GetImageSizeEx(false);
  12241. var arrSz = sz.split("|");
  12242. if(obj_imge.position.width > arrSz[0]){
  12243. obj_imge.position.width = arrSz[0];
  12244. }else if(obj_imge.position.width <= arrSz[0]){
  12245. obj_imge.position.width = obj_imge.orgWidth;
  12246. }
  12247. if(obj_imge.position.height > arrSz[1]){
  12248. obj_imge.position.height = arrSz[1];
  12249. }else if(obj_imge.position.height <= arrSz[1]){
  12250. obj_imge.position.height = obj_imge.orgHeight;
  12251. }
  12252. }
  12253. /****************************************************************************************
  12254. * Argument : objGrid - Grid Object
  12255. * Description : 협력회신용 처방 검색 및 설정
  12256. - 전원소견서 및 C진료의뢰서(칠곡) 제증명 투약정보에서 사용
  12257. ****************************************************************************************/
  12258. function lf_getPrcpInfoEx(obj:Button, e:ClickEventInfo)
  12259. {
  12260. sPopUpRectermnm = "";
  12261. var btnNm = obj.name;
  12262. btnNm = btnNm.replace("BTN_","");
  12263. var btnCd = btnNm.replace("_EXT","");
  12264. var objGrid = this.components["GRD_"+btnCd];
  12265. lf_clickCommOpenPopUp_Prcp(objGrid);
  12266. }
  12267. /****************************************************************************************
  12268. * Argument : objGrid - Grid Object
  12269. * Description : 협력회신용 처방 검색 및 설정
  12270. ****************************************************************************************/
  12271. function lf_clickCommOpenPopUp_Prcp(objGrid:Grid)
  12272. {
  12273. var langflag = fGetFormMast("langflag");
  12274. var objPop = new Object();
  12275. var pid = parent.fGetFormRec("pid");
  12276. var orddeptcd = parent.fGetFormRec("orddeptcd");
  12277. var orddd = parent.fGetFormRec("orddd");
  12278. var ioflag = parent.fGetFormRec("chosflag");
  12279. var cond = pid + "▦" + orddeptcd + "▦" + orddd + "▦" + ioflag;
  12280. frmf_setParameter("SPARC00200_patinfo", cond);
  12281. frmf_setParameter( "SPARC00200_rtn", "");
  12282. var objRtnParam = frmf_modal("SPARC00200", "SPARC00200", objPop, null, null, null, null, null, null, null, null, null, "M");
  12283. var objGrdDS = eval(objGrid.binddataset);
  12284. var objTempDS = this.objects[objGrdDS.name.replace("ds_data", "ds_temp")];
  12285. var prcpInfo = frmf_getParameter( "SPARC00200_rtn" );
  12286. if(utlf_isNull(prcpInfo)){
  12287. return;
  12288. }
  12289. var nRowno = objGrdDS.rowposition;
  12290. var nRowCnt = objGrdDS.getRowCount();
  12291. var sRectermnm = "";
  12292. var sNo = objGrid.name.replace("GRD_", "");
  12293. sRectermnm = objGrdDS.getColumn((nRowCnt-1), "처방명");
  12294. if(utlf_isNull(sRectermnm))
  12295. {
  12296. // Grid DeleteRow
  12297. objGrdDS.deleteRow(nRowCnt-1);
  12298. // recitem Delete rowno
  12299. ds_data_recitem.filter("rowno=='"+nRowno+"' && degnitemno == '"+sNo+"'");
  12300. var nRowCnt = ds_data_recitem.getRowCount();
  12301. for(var i=(nRowCnt-1);i>=0; i--){
  12302. ds_data_recitem.deleteRow(i);
  12303. }
  12304. ds_data_recitem.filter("");
  12305. }
  12306. var sTmpprcpdd = "";
  12307. var sTmpprcpcd = "";
  12308. var sTmpprcpnm = "";
  12309. var nPrcpListCnt = prcpInfo.split ( "▩" ).length;
  12310. if(nPrcpListCnt>0)
  12311. {
  12312. objGrdDS.enableevent = false;
  12313. // Grid 구성 Item
  12314. var nTempCnt = objTempDS.getRowCount();
  12315. for(var i=0 ; i<nPrcpListCnt -1; i++){
  12316. sTmpprcpdd = getArrayData ( prcpInfo, i, 0, "▩", "▦" );
  12317. sTmpprcpcd = getArrayData ( prcpInfo, i, 1, "▩", "▦" );
  12318. sTmpprcpnm = getArrayData ( prcpInfo, i, 2, "▩", "▦" );
  12319. var nFindRow = objGrdDS.findRowExpr("처방코드=='"+sTmpprcpcd+"' && 처방일자=='"+sTmpprcpdd+"'");
  12320. if(nFindRow>-1){
  12321. continue;
  12322. }
  12323. nRowno = objGrdDS.addRow();
  12324. objGrdDS.setColumn(nRowno, "처방일자" , sTmpprcpdd);
  12325. objGrdDS.setColumn(nRowno, "처방코드" , sTmpprcpcd);
  12326. objGrdDS.setColumn(nRowno, "처방명" , sTmpprcpnm);
  12327. objGrdDS.setColumn(nRowno, "1회수량" , getArrayData ( prcpInfo, i, 11, "▩", "▦" ));
  12328. objGrdDS.setColumn(nRowno, "단위" , getArrayData ( prcpInfo, i, 4, "▩", "▦" ));
  12329. objGrdDS.setColumn(nRowno, "횟수" , getArrayData ( prcpInfo, i, 5, "▩", "▦" ));
  12330. objGrdDS.setColumn(nRowno, "일수" , getArrayData ( prcpInfo, i, 6, "▩", "▦" ));
  12331. objGrdDS.setColumn(nRowno, "용법" , getArrayData ( prcpInfo, i, 12, "▩", "▦" ));
  12332. var nExistRow = ds_data_recitem.findRowExpr("rowno=='"+nRowno+"' && degnitemno == '"+sNo+"'");
  12333. if( nExistRow < 0 ){
  12334. for(var j=0; j<nTempCnt; j++){
  12335. var nAddRow = ds_data_recitem.addRow();
  12336. ds_data_recitem.copyRow(nAddRow, objTempDS, j);
  12337. ds_data_recitem.setColumn(nAddRow, "rowno", nRowno);
  12338. }
  12339. }
  12340. }
  12341. objGrdDS.enableevent = true;
  12342. }
  12343. lf_addRowComm(objGrid, objGrid.name);
  12344. }
  12345. /****************************************************************************************
  12346. * Function : lf_initDGNGrd
  12347. * Description : 제증명 서식 DGN grid 초기화
  12348. * retrun type :
  12349. * Creator :
  12350. ****************************************************************************************/
  12351. function lf_initDGNGrd()
  12352. {
  12353. utlf_addLog("***** lf_initDGNGrd() *****");
  12354. var grdItemRow = ds_data_formdegn.findRow("degnitemkind", "DGN");
  12355. var nRowno = "";
  12356. if(grdItemRow != -1)
  12357. {
  12358. var arrGrdRows = new Array();
  12359. arrGrdRows = objExt.findRows(ds_data_formdegn, "degnitemkind", "DGN");
  12360. if(arrGrdRows.length > 0)
  12361. {
  12362. for(var j = 0; j < arrGrdRows.length; j++)
  12363. {
  12364. var nRow = arrGrdRows[j];
  12365. var nDegnItemNo = ds_data_formdegn.getColumn(nRow, "degnitemno");
  12366. var DsNm = "ds_data_grd_" + nDegnItemNo;
  12367. var vGrdNm = "GRD_"+nDegnItemNo;
  12368. try{
  12369. var vGrdObj = eval(vGrdNm);
  12370. if( vGrdObj.autoenter == "select" ){
  12371. vGrdObj.autoenter = "key";
  12372. }
  12373. }catch(e){}
  12374. }
  12375. }
  12376. }
  12377. }
  12378. /****************************************************************************************
  12379. * Argument : objGrid - Grid Object
  12380. * Description : 협력회신용 수술정보 검색 및 설정
  12381. - 전원소견서 및 C진료의뢰서(칠곡) 제증명 수술정보에서 사용
  12382. ****************************************************************************************/
  12383. function lf_getOpInfoEx(obj:Button, e:ClickEventInfo)
  12384. {
  12385. sPopUpRectermnm = "";
  12386. var btnNm = obj.name;
  12387. btnNm = btnNm.replace("BTN_","");
  12388. var btnCd = btnNm.replace("_EXT","");
  12389. var objGrid = this.components["GRD_"+btnCd];
  12390. lf_clickCommOpenPopUp_Op(objGrid);
  12391. }
  12392. /****************************************************************************************
  12393. * Argument : objGrid - Grid Object
  12394. * Description : 협력회신용 수술 검색 및 설정
  12395. ****************************************************************************************/
  12396. function lf_clickCommOpenPopUp_Op(objGrid:Grid)
  12397. {
  12398. var langflag = fGetFormMast("langflag");
  12399. var objPop = new Object();
  12400. var pid = parent.fGetFormRec("pid");
  12401. var orddeptcd = parent.fGetFormRec("orddeptcd");
  12402. var orddd = parent.fGetFormRec("orddd");
  12403. var ioflag = parent.fGetFormRec("chosflag");
  12404. var cond = pid + "▦" + orddeptcd + "▦" + orddd + "▦" + ioflag;
  12405. frmf_setParameter("SPARC00210_patinfo", cond);
  12406. frmf_setParameter( "SPARC00210_rtn", "");
  12407. var objRtnParam = frmf_modal("SPARC00210", "SPARC00210", objPop, null, null, null, null, null, null, null, null, null, "M");
  12408. var objGrdDS = eval(objGrid.binddataset);
  12409. var objTempDS = this.objects[objGrdDS.name.replace("ds_data", "ds_temp")];
  12410. var prcpInfo = frmf_getParameter( "SPARC00210_rtn" );
  12411. if(utlf_isNull(prcpInfo)){
  12412. return;
  12413. }
  12414. var nRowno = objGrdDS.rowposition;
  12415. var nRowCnt = objGrdDS.getRowCount();
  12416. var sRectermnm = "";
  12417. var sNo = objGrid.name.replace("GRD_", "");
  12418. sRectermnm = objGrdDS.getColumn((nRowCnt-1), "수술명");
  12419. if(utlf_isNull(sRectermnm))
  12420. {
  12421. // Grid DeleteRow
  12422. objGrdDS.deleteRow(nRowCnt-1);
  12423. // recitem Delete rowno
  12424. ds_data_recitem.filter("rowno=='"+nRowno+"' && degnitemno == '"+sNo+"'");
  12425. var nRowCnt = ds_data_recitem.getRowCount();
  12426. for(var i=(nRowCnt-1);i>=0; i--){
  12427. ds_data_recitem.deleteRow(i);
  12428. }
  12429. ds_data_recitem.filter("");
  12430. }
  12431. var sTmpprcpdd = "";
  12432. var sTmpprcpcd = "";
  12433. var sTmpprcpnm = "";
  12434. var nPrcpListCnt = prcpInfo.split ( "▩" ).length;
  12435. if(nPrcpListCnt>0)
  12436. {
  12437. objGrdDS.enableevent = false;
  12438. // Grid 구성 Item
  12439. var nTempCnt = objTempDS.getRowCount();
  12440. for(var i=0 ; i<nPrcpListCnt -1; i++){
  12441. sTmpopdd = getArrayData ( prcpInfo, i, 0, "▩", "▦" );
  12442. sTmpopnm = getArrayData ( prcpInfo, i, 1, "▩", "▦" );
  12443. sTmpopcd = getArrayData ( prcpInfo, i, 2, "▩", "▦" );
  12444. var nFindRow = objGrdDS.findRowExpr("수술코드=='"+sTmpopcd+"' && 수술일=='"+sTmpopdd+"'");
  12445. if(nFindRow>-1){
  12446. continue;
  12447. }
  12448. nRowno = objGrdDS.addRow();
  12449. objGrdDS.setColumn(nRowno, "수술일" , sTmpopdd);
  12450. objGrdDS.setColumn(nRowno, "수술명" , sTmpopnm);
  12451. objGrdDS.setColumn(nRowno, "수술코드" , sTmpopcd);
  12452. var nExistRow = ds_data_recitem.findRowExpr("rowno=='"+nRowno+"' && degnitemno == '"+sNo+"'");
  12453. if( nExistRow < 0 ){
  12454. for(var j=0; j<nTempCnt; j++){
  12455. var nAddRow = ds_data_recitem.addRow();
  12456. ds_data_recitem.copyRow(nAddRow, objTempDS, j);
  12457. ds_data_recitem.setColumn(nAddRow, "rowno", nRowno);
  12458. }
  12459. }
  12460. }
  12461. objGrdDS.enableevent = true;
  12462. }
  12463. lf_addRowComm(objGrid, objGrid.name);
  12464. }
  12465. /****************************************************************************************
  12466. *소아청소년과 입원예약시 SMS 로딩
  12467. ****************************************************************************************/
  12468. function lf_sendSMS(obj:Button, e:ClickEventInfo)
  12469. {
  12470. var pid = parent.fGetFormRec("pid");
  12471. dsf_createDsRow("ds_send_info", [{col:"pid", type:"string", size:256, val:pid}]);
  12472. dsf_createDsRow("ds_rtn_info", [{col:"hngnm", type:"string", size:256, val:""}
  12473. ,{col:"mpphontel", type:"string", size:256, val:""}]);
  12474. var oParam = {};
  12475. oParam.id = "reqGetPhoneInfo";
  12476. oParam.service = "medirecapp.ComnMediRec";
  12477. oParam.method = "reqGetPhoneInfo";
  12478. oParam.inds = "req=ds_send_info";
  12479. oParam.outds = "ds_rtn_info=list";
  12480. oParam.async = false;
  12481. //oParam.callback = "cf_TRMMR00301";
  12482. tranf_submit(oParam);
  12483. var hngnm = ds_rtn_info.getColumn(0,"hngnm");
  12484. var mpphontel = ds_rtn_info.getColumn(0,"mpphontel");
  12485. dsf_deleteDs("ds_send_info");
  12486. dsf_deleteDs("ds_rtn_info");
  12487. dsf_createDsRow("ds_hidden_smsdata", [{col:"bizabbr", type:"string", size:256, val:"EMR"}
  12488. ,{col:"replytelno", type:"string", size:256, val:""}
  12489. ,{col:"rsrvyn", type:"string", size:256, val:""}
  12490. ,{col:"rsrvdate", type:"string", size:256, val:""}
  12491. ,{col:"rsrvtime", type:"string", size:256, val:""}]);
  12492. dsf_createDsRow("ds_hidden_smsdata_recvr", [{col:"chk", type:"string", size:256, val:""}
  12493. ,{col:"recvrnm", type:"string", size:256, val:hngnm}
  12494. ,{col:"recvrtelno", type:"string", size:256, val:mpphontel}]);
  12495. var objArg = new Object();
  12496. objArg.arg_ds_main = ds_hidden_smsdata;
  12497. objArg.arg_ds_recvr = ds_hidden_smsdata_recvr;
  12498. frmf_open("SPZMS00100", "SPZMS00100", objArg, "","1", "700", "400", "", "", "", "", "","M");
  12499. dsf_deleteDs("ds_hidden_smsdata");
  12500. dsf_deleteDs("ds_hidden_smsdata_recvr");
  12501. }
  12502. /****************************************************************************************
  12503. *소아청소년과 입원예약시 입원안내문 출력
  12504. * cctlyn :자식창에서 제어여부
  12505. ****************************************************************************************/
  12506. function lf_prntIninfo(cctlyn)
  12507. {
  12508. var pid = parent.fGetFormRec("pid");
  12509. var status = parent.fGetFormRec("status");
  12510. dsf_createDsRow("ds_send_info", [{col:"pid", type:"string", size:256, val:pid}]);
  12511. dsf_createDsRow("ds_rtn_info", [{col:"hngnm", type:"string", size:256, val:""}
  12512. ,{col:"schedd", type:"string", size:256, val:""}
  12513. ,{col:"pid", type:"string", size:256, val:""}]);
  12514. var oParam = {};
  12515. oParam.id = "reqGetPhoneInfo";
  12516. oParam.service = "medirecapp.ComnMediRec";
  12517. oParam.method = "reqGetPhoneInfo";
  12518. oParam.inds = "req=ds_send_info";
  12519. oParam.outds = "ds_rtn_info=list";
  12520. oParam.async = false;
  12521. //oParam.callback = "cf_TRMMR00301";
  12522. tranf_submit(oParam);
  12523. ds_rtn_info.setColumn(0,"schedd",parent.parent.ds_main_scherecinfo.getColumn(0,"schedd"));
  12524. var objDOM = rptf_createDOM(); // DOM 객체 설정
  12525. rptf_setNodeListToDOM(objDOM, "/root/main/prninfo" , ds_rtn_info); // 데이터셋 1
  12526. var objParam = new Object();
  12527. objParam.xml_data_XML1 = objDOM.documentElement.source; // 최상의노드 XML 스트링 추출
  12528. parent.parent.ds_main_scherecinfo.setColumn(0,"cctlyn",cctlyn);
  12529. if (cctlyn == "Y" ) {
  12530. var option = "open=1;save=1;directprint=1;printdialog=0;print=1;zoom=0;callback=lf_end";
  12531. }
  12532. else {
  12533. var option = "open=1;save=1;directprint=1;printdialog=0;print=1;zoom=0";
  12534. }
  12535. if (status == "U") {
  12536. if ("6" == sysf_messageBox("입원안내문을 출력하시겠습니까?","Q")) {
  12537. rptf_exeReportPreview30(["RPMMP00001_소아청소년입원안내문"],[objParam], option);
  12538. }
  12539. }
  12540. else {
  12541. rptf_exeReportPreview30(["RPMMP00001_소아청소년입원안내문"],[objParam], option);
  12542. }
  12543. dsf_deleteDs("ds_send_info");
  12544. dsf_deleteDs("ds_rtn_info");
  12545. }
  12546. function lf_end(){
  12547. parent.parent.fClkBtnInit();
  12548. }
  12549. /****************************************************************************************
  12550. * Argument : N/A
  12551. * Description : 권역외상센터 등록체계 AIS 정보 조회 및 설정 (formcd : 1800021979)
  12552. ****************************************************************************************/
  12553. function lf_SetRptmAISInfo(){
  12554. var scrnid = oOpener.frmf_getScreenID();
  12555. if( scrnid == "SPMMO08012" || scrnid == "SPMMO08016"){ // 권역외상센터 등록체계
  12556. // 두경부
  12557. var apDs = ["ds_main_aisinfo1", "ds_main_aisinfo2", "ds_main_aisinfo3", "ds_main_aisinfo4", "ds_main_aisinfo5", "ds_main_aisinfo6"];
  12558. var atDs = ["ds_data_grd_15", "ds_data_grd_34", "ds_data_grd_130", "ds_data_grd_654", "ds_data_grd_660", "ds_data_grd_666"];
  12559. for(var i=0; i<apDs.length; i++){
  12560. var pDs = oOpener.objects[apDs[i]];
  12561. var tDs = this.objects[atDs[i]];
  12562. if( pDs != null ){
  12563. var nCnt = pDs.rowcount;
  12564. for(var k=0; k<nCnt; k++){
  12565. var aic = pDs.getColumn(k, "aic");
  12566. var ais = pDs.getColumn(k, "ais");
  12567. var pos = pDs.getColumn(k, "pos");
  12568. var ain = pDs.getColumn(k, "ain");
  12569. if( !utlf_isNull(aic) && tDs.findRow("코드", aic) < 0 ){
  12570. var nFindRow = tDs.findRowExpr("utlf_isNull(코드) && utlf_isNull(점수) && utlf_isNull(부위) && utlf_isNull(설명) && utlf_isNull(작성자)");
  12571. //trace("nFindRow : " + nFindRow);
  12572. var nRow = nFindRow;
  12573. if( nFindRow < 0 ){
  12574. nRow = tDs.addRow();
  12575. }
  12576. tDs.setColumn(nRow, "코드", aic);
  12577. tDs.setColumn(nRow, "점수", ais);
  12578. tDs.setColumn(nRow, "부위", pos);
  12579. tDs.setColumn(nRow, "설명", ain);
  12580. tDs.setColumn(nRow, "작성자", "권역외상센터");
  12581. }
  12582. }
  12583. }
  12584. }
  12585. BTN_809_EXT.click();
  12586. }
  12587. }
  12588. /****************************************************************************************
  12589. * Components : Button
  12590. * Components ID : BTN_[grid]_[pinjpart]
  12591. * Event : onclick
  12592. * Argument : 01.obj : Object Event has occurred
  12593. * : 02.e : Event Object
  12594. * Description : AIS 기준자료 (formcd : 1800021979)
  12595. ****************************************************************************************/
  12596. function comn_SetRptmAISInfo_onclick(obj:Button, e:ClickEventInfo)
  12597. {
  12598. var btnNm = obj.name;
  12599. var aBtn = btnNm.split("_");
  12600. frmf_setParameter("SPMMO07000_pinjpart", aBtn[2]);
  12601. frmf_modal("SPMMO07000", "SPMMO07000", null, null, null, null, null, null, null, null, null, null, "M");
  12602. if ( !utlf_isNull(frmf_getParameter("SPMMO07000_rtnaiscode"))) {
  12603. var tDs = this.objects["ds_data_grd_" + aBtn[1]];
  12604. if( tDs == null ) return;
  12605. var nFindRow = tDs.findRowExpr("utlf_isNull(코드) && utlf_isNull(점수) && utlf_isNull(부위) && utlf_isNull(설명) && utlf_isNull(작성자)");
  12606. var nRow = nFindRow;
  12607. if( nFindRow < 0 ){
  12608. nRow = tDs.addRow();
  12609. }
  12610. tDs.setColumn(nRow, "코드", frmf_getParameter("SPMMO07000_rtnaiscode"));
  12611. tDs.setColumn(nRow, "점수", frmf_getParameter("SPMMO07000_rtnpnt"));
  12612. tDs.setColumn(nRow, "부위", frmf_getParameter("SPMMO07000_rtnpos"));
  12613. tDs.setColumn(nRow, "설명", frmf_getParameter("SPMMO07000_rtnaiscnts"));
  12614. tDs.setColumn(nRow, "작성자", sysf_getUserName());
  12615. frmf_clearParameter("SPMMO07000_pinjpart");
  12616. frmf_clearParameter("SPMMO07000_rtnaiscode");
  12617. frmf_clearParameter("SPMMO07000_rtnaiscnts");
  12618. frmf_clearParameter("SPMMO07000_rtnpnt");
  12619. }
  12620. }
  12621. /****************************************************************************************
  12622. * Components : Button
  12623. * Components ID : BTN_[deginitemno]_EXT
  12624. * Event : onclick
  12625. * Argument : 01.obj : Object Event has occurred
  12626. * : 02.e : Event Object
  12627. * Description : 권역외상센터 등록체계 ISS 계산 (formcd : 1800021979)
  12628. * : SPMMO08012.xjs fISSScore() 동일
  12629. ****************************************************************************************/
  12630. function lf_IssCalc_onclick(obj:Button, e:ClickEventInfo)
  12631. {
  12632. var degnno, dsNm, nRowno;
  12633. var btnNm = obj.name;
  12634. degnno = btnNm.replace("_EXT2", "");
  12635. degnno = degnno.replace("_EXT1", "");
  12636. degnno = degnno.replace("_EXT", "");
  12637. degnno = degnno.replace("BTN_", "");
  12638. var badnum = 0;
  12639. var iss = 0;
  12640. var issA = 0;
  12641. var issB = 0;
  12642. var issC = 0;
  12643. var ais = new Array(6);
  12644. var ais1 = new Array(10);
  12645. var ais2 = new Array(10);
  12646. var ais3 = new Array(10);
  12647. var ais4 = new Array(10);
  12648. var ais5 = new Array(10);
  12649. var ais6 = new Array(10);
  12650. var i1 = 0;
  12651. var i2 = 0;
  12652. var i3 = 0;
  12653. var i4 = 0;
  12654. var i5 = 0;
  12655. var i6 = 0;
  12656. //external 계산을 위해 해당하는 값들 ais6번으로 옮기기
  12657. var oDs = this.objects["ds_data_grd_15"];
  12658. for (var x = 0 ; x < oDs.rowcount; x++) {
  12659. var v_aic = utlf_transNullToEmpty(oDs.getColumn(x, "코드"));
  12660. var v_ais = utlf_transNullToEmpty(oDs.getColumn(x, "점수"));
  12661. if( utlf_isNull(v_aic) ){
  12662. continue;
  12663. }
  12664. dsf_createDsRow("ds_send_issinfo", [{col:"aiscode", type:"STRING", size:256, val:v_aic}]);
  12665. dsf_createDs("ds_temp_issinfo", [{col:"extyn", type:"STRING", size:256}]);
  12666. var oParam = {};
  12667. oParam.id = "TRMMO08013";
  12668. oParam.service = "prcpmngtapp.ErMngt";
  12669. oParam.method = "reqGetExtAisCodeYN";
  12670. oParam.inds = "req=ds_send_issinfo";
  12671. oParam.outds = "ds_temp_issinfo=issinfo";
  12672. oParam.async = false;
  12673. oParam.progress = false;
  12674. tranf_submit(oParam);
  12675. if (ds_temp_issinfo.getColumn(0, "extyn") == "Y") {
  12676. ais6[i6] = v_ais;
  12677. i6 ++;
  12678. } else {
  12679. ais1[i1] = v_ais;
  12680. i1 ++;
  12681. }
  12682. }
  12683. var oDs = this.objects["ds_data_grd_34"];
  12684. for (var x = 0 ; x < oDs.rowcount; x++) {
  12685. var v_aic = utlf_transNullToEmpty(oDs.getColumn(x, "코드"));
  12686. var v_ais = utlf_transNullToEmpty(oDs.getColumn(x, "점수"));
  12687. if( utlf_isNull(v_aic) ){
  12688. continue;
  12689. }
  12690. dsf_createDsRow("ds_send_issinfo", [{col:"aiscode", type:"STRING", size:256, val:v_aic}]);
  12691. dsf_createDs("ds_temp_issinfo", [{col:"extyn", type:"STRING", size:256}]);
  12692. var oParam = {};
  12693. oParam.id = "TRMMO08013";
  12694. oParam.service = "prcpmngtapp.ErMngt";
  12695. oParam.method = "reqGetExtAisCodeYN";
  12696. oParam.inds = "req=ds_send_issinfo";
  12697. oParam.outds = "ds_temp_issinfo=issinfo";
  12698. oParam.async = false;
  12699. oParam.progress = false;
  12700. tranf_submit(oParam);
  12701. if (ds_temp_issinfo.getColumn(0, "extyn") == "Y") {
  12702. ais6[i6] = v_ais;
  12703. i6 ++;
  12704. } else {
  12705. ais2[i2] = v_ais;
  12706. i2 ++;
  12707. }
  12708. }
  12709. var oDs = this.objects["ds_data_grd_130"];
  12710. for (var x = 0 ; x < oDs.rowcount; x++) {
  12711. var v_aic = utlf_transNullToEmpty(oDs.getColumn(x, "코드"));
  12712. var v_ais = utlf_transNullToEmpty(oDs.getColumn(x, "점수"));
  12713. if( utlf_isNull(v_aic) ){
  12714. continue;
  12715. }
  12716. dsf_createDsRow("ds_send_issinfo", [{col:"aiscode", type:"STRING", size:256, val:v_aic}]);
  12717. dsf_createDs("ds_temp_issinfo", [{col:"extyn", type:"STRING", size:256}]);
  12718. var oParam = {};
  12719. oParam.id = "TRMMO08013";
  12720. oParam.service = "prcpmngtapp.ErMngt";
  12721. oParam.method = "reqGetExtAisCodeYN";
  12722. oParam.inds = "req=ds_send_issinfo";
  12723. oParam.outds = "ds_temp_issinfo=issinfo";
  12724. oParam.async = false;
  12725. oParam.progress = false;
  12726. tranf_submit(oParam);
  12727. if (ds_temp_issinfo.getColumn(0, "extyn") == "Y") {
  12728. ais6[i6] = v_ais;
  12729. i6 ++;
  12730. } else {
  12731. ais3[i3] = v_ais;
  12732. i3 ++;
  12733. }
  12734. }
  12735. var oDs = this.objects["ds_data_grd_654"];
  12736. for (var x = 0 ; x < oDs.rowcount; x++) {
  12737. var v_aic = utlf_transNullToEmpty(oDs.getColumn(x, "코드"));
  12738. var v_ais = utlf_transNullToEmpty(oDs.getColumn(x, "점수"));
  12739. if( utlf_isNull(v_aic) ){
  12740. continue;
  12741. }
  12742. dsf_createDsRow("ds_send_issinfo", [{col:"aiscode", type:"STRING", size:256, val:v_aic}]);
  12743. dsf_createDs("ds_temp_issinfo", [{col:"extyn", type:"STRING", size:256}]);
  12744. var oParam = {};
  12745. oParam.id = "TRMMO08013";
  12746. oParam.service = "prcpmngtapp.ErMngt";
  12747. oParam.method = "reqGetExtAisCodeYN";
  12748. oParam.inds = "req=ds_send_issinfo";
  12749. oParam.outds = "ds_temp_issinfo=issinfo";
  12750. oParam.async = false;
  12751. oParam.progress = false;
  12752. tranf_submit(oParam);
  12753. if (ds_temp_issinfo.getColumn(0, "extyn") == "Y") {
  12754. ais6[i6] = v_ais;
  12755. i6 ++;
  12756. } else {
  12757. ais4[i4] = v_ais;
  12758. i4 ++;
  12759. }
  12760. }
  12761. var oDs = this.objects["ds_data_grd_660"];
  12762. for (var x = 0 ; x < oDs.rowcount; x++) {
  12763. var v_aic = utlf_transNullToEmpty(oDs.getColumn(x, "코드"));
  12764. var v_ais = utlf_transNullToEmpty(oDs.getColumn(x, "점수"));
  12765. if( utlf_isNull(v_aic) ){
  12766. continue;
  12767. }
  12768. dsf_createDsRow("ds_send_issinfo", [{col:"aiscode", type:"STRING", size:256, val:v_aic}]);
  12769. dsf_createDs("ds_temp_issinfo", [{col:"extyn", type:"STRING", size:256}]);
  12770. var oParam = {};
  12771. oParam.id = "TRMMO08013";
  12772. oParam.service = "prcpmngtapp.ErMngt";
  12773. oParam.method = "reqGetExtAisCodeYN";
  12774. oParam.inds = "req=ds_send_issinfo";
  12775. oParam.outds = "ds_temp_issinfo=issinfo";
  12776. oParam.async = false;
  12777. oParam.progress = false;
  12778. tranf_submit(oParam);
  12779. if (ds_temp_issinfo.getColumn(0, "extyn") == "Y") {
  12780. ais6[i6] = v_ais;
  12781. i6 ++;
  12782. } else {
  12783. ais5[i5] = v_ais;
  12784. i5 ++;
  12785. }
  12786. }
  12787. var oDs = this.objects["ds_data_grd_666"];
  12788. for (var x = 0 ; x < oDs.rowcount; x++) {
  12789. var v_aic = utlf_transNullToEmpty(oDs.getColumn(x, "코드"));
  12790. var v_ais = utlf_transNullToEmpty(oDs.getColumn(x, "점수"));
  12791. if( utlf_isNull(v_aic) ){
  12792. continue;
  12793. }
  12794. ais6[i6] = v_ais;
  12795. i6 ++;
  12796. }
  12797. aissort1 = ais1.sort();
  12798. aissort2 = ais2.sort();
  12799. aissort3 = ais3.sort();
  12800. aissort4 = ais4.sort();
  12801. aissort5 = ais5.sort();
  12802. aissort6 = ais6.sort();
  12803. ais[0] = aissort1[i1 - 1];
  12804. ais[1] = aissort2[i2 - 1];
  12805. ais[2] = aissort3[i3 - 1];
  12806. ais[3] = aissort4[i4 - 1];
  12807. ais[4] = aissort5[i5 - 1];
  12808. ais[5] = aissort6[i6 - 1];
  12809. aissort = ais.sort();
  12810. for (var i = 0; i < 6; i ++) {
  12811. if (ais[i] == null || ais[i] < 0) {
  12812. break;
  12813. }
  12814. }
  12815. var x = i - 1;
  12816. if ( x > 1) {
  12817. issA = ais[x - 2] * ais[x - 2];
  12818. } else {
  12819. issA = 0
  12820. }
  12821. if ( x > 0) {
  12822. issB = ais[x - 1] * ais[x - 1];
  12823. } else {
  12824. issB = 0
  12825. }
  12826. issC = ais[x] * ais[x];
  12827. if( isNaN(issC) ){
  12828. issC = -1;
  12829. }
  12830. if (issC == 36) iss = 75;
  12831. else iss = issA + issB + issC;
  12832. ds_data_itemvalue.setColumn(0, "STX_"+degnno, iss);
  12833. }
  12834. /****************************************************************************************
  12835. * Argument : 01.obj : Object Event has occurred
  12836. * Description : 공통기록 버튼 이벤트 설정(NEW)
  12837. ****************************************************************************************/
  12838. function InitBtn(obj){
  12839. lf_setBtnAddHandler(obj, 0);
  12840. }
  12841. /****************************************************************************************
  12842. * Argument : 01.obj : Object Event has occurred
  12843. * 02.seq : depth
  12844. * Description : 공통기록 버튼 이벤트 설정(NEW)
  12845. ****************************************************************************************/
  12846. function lf_setBtnAddHandler(obj, seq)
  12847. {
  12848. var sType;
  12849. for(var i = 0 ; i < obj.components.length; i++ )
  12850. {
  12851. sType = obj.components[i].toString().toUpperCase();
  12852. switch(sType) {
  12853. case "[OBJECT TABPAGE]":
  12854. case "[OBJECT DIV]":
  12855. break;
  12856. case "[OBJECT BUTTON]":
  12857. if( !utlf_isNull(obj.components[i].class)
  12858. && !utlf_isNull(obj.components[i].name) && obj.components[i].name.indexOf("chnghosp") > -1 ){
  12859. obj.components[i].onclick.addHandler(lf_SrchChngHosp);
  12860. }
  12861. break;
  12862. default:
  12863. continue;
  12864. break;
  12865. }
  12866. ++seq;
  12867. if (obj.components[i].components)
  12868. {
  12869. switch(sType) {
  12870. case "[OBJECT TABPAGE]":
  12871. case "[OBJECT DIV]":
  12872. seq = lf_setBtnAddHandler(obj.components[i], seq);
  12873. break;
  12874. }
  12875. }
  12876. }
  12877. return seq;
  12878. }
  12879. /****************************************************************************************
  12880. * Components : Button
  12881. * Components ID : btn__chnghosp_[deginitemcd]
  12882. * Event : onclick
  12883. * Argument : 01.obj : Object Event has occurred
  12884. * : 02.e : Event Object
  12885. * Description : 전원기관명 검색
  12886. ****************************************************************************************/
  12887. function lf_SrchChngHosp(obj, e){
  12888. var sDegnitemlevlcd = obj.degnitemlevlcd;
  12889. var sItemCd = obj.name.replace("btn_chnghosp_", "");
  12890. if( !utlf_isNull(sDegnitemlevlcd) ){
  12891. frmf_modal("SPMMO07400","SPMMO07400", null, null, null, null, null, null, null, null, null, null, "M");
  12892. var nFhkind = utlf_transEmptyToNull(frmf_clearParameter("SPMMO07400_rtnfhkind")); //의료기관 코드
  12893. var nFhcdnm = utlf_transEmptyToNull(frmf_clearParameter("SPMMO07400_rtnfhcdnm")); //의료기관명
  12894. var nFhhscd = utlf_transEmptyToNull(frmf_clearParameter("SPMMO07400_rtnfhhscd")); //의료기관명
  12895. var sVal = "";
  12896. var sValNm = "";
  12897. var nFindRow = ds_data_recitem.findRow("degnitemlevlcd", sDegnitemlevlcd);
  12898. if(nFindRow == -1)
  12899. {
  12900. nFindRow = ds_data_recitem.addRow();
  12901. var insRow = ds_temp_mainrecitem.findRow("degnitemlevlcd", sDegnitemlevlcd);
  12902. ds_data_recitem.copyRow(nFindRow, ds_temp_mainrecitem, insRow);
  12903. }
  12904. if( nFhkind != null && nFhcdnm != null && nFhhscd != null ){
  12905. sVal = nFhcdnm + "|" + nFhhscd + "|" + nFhkind;
  12906. sValNm = nFhcdnm;
  12907. }
  12908. ds_data_recitem.setColumn(nFindRow, "reccnts", sValNm);
  12909. ds_data_recitem.setColumn(nFindRow, "rectermcd", sVal);
  12910. var objTextArea = ComnFormObj.group1.components["tar_chnghosp_" + sItemCd];
  12911. objTextArea.value = sValNm;
  12912. }
  12913. }
  12914. /****************************************************************************************
  12915. * Argument : 01.ivwObj : 부분서식 Object
  12916. * 02.aItemCds : 부분서식 1 depth MTX array
  12917. * Description : 서식 사용자 작성안내(도움말) 관리
  12918. * Comments : ex) degnitemlevlcd | degnitemcd | colno | extnyn | fstlevlitemcd
  12919. ****************************************************************************************/
  12920. function lf_setInitHelpData(ivwObj, aItemCds)
  12921. {
  12922. utlf_addLog(":::::::: lf_setInitHelpData Start :::::::");
  12923. var formcd = ds_data_recitem.getColumn(0, "formcd");
  12924. var srcformcd = fGetFormMast("srcformcd");
  12925. // 2016.10.26 PROG 부분서식이 많을 경우 트렌적션 중복 오류
  12926. var submitID = "TRMRF007010";
  12927. if( !utlf_isNull(formcd) ){
  12928. submitID = submitID + formcd;
  12929. }
  12930. if( utlf_isNull(aItemCds) ){
  12931. aItemCds = "";
  12932. }
  12933. dsf_createDsRow("ds_cond_TRMRF007010", [{col:"hardcdno", type:"string", size:256, val:10020}
  12934. , {col:"trgtcd", type:"string", size:256, val:srcformcd}
  12935. , {col:"aitemcds", type:"string", size:256, val:aItemCds}
  12936. ]);
  12937. dsf_createDs("ds_data_TRMRF007010", [{col:"trgtcdnm", type:"string", size:256}
  12938. , {col:"condqry", type:"string", size:256}
  12939. ], true);
  12940. var oParam = {};
  12941. oParam.id = submitID;
  12942. oParam.service = "formmngtapp.FormIfMngt";
  12943. oParam.method = "reqGetRecInfo";
  12944. oParam.inds = "req=ds_cond_TRMRF007010";
  12945. oParam.outds = "ds_data_TRMRF007010=recinfo";
  12946. oParam.async = false;
  12947. oParam.progress = false;
  12948. oParam.callback = "cf_TRMRF007010";
  12949. tranf_submit(oParam);
  12950. utlf_addLog(ds_cond_TRMRF007010.saveXML());
  12951. utlf_addLog(ds_data_TRMRF007010.saveXML());
  12952. if( ds_data_TRMRF007010.rowcount < 1 ){
  12953. utlf_addLog(":::::::: lf_setInitHelpData End(Not Empty) :::::::");
  12954. dsf_deleteDs("ds_cond_TRMRF007010");
  12955. dsf_deleteDs("ds_data_TRMRF007010");
  12956. return;
  12957. }
  12958. //var formcd = ds_data_recitem.getColumn(0, "formcd");
  12959. //var aItemCds = utlf_transNullToEmpty(ds_cond_TRMRF007010.getColumn(i, "aitemcds"));
  12960. try{
  12961. var loopcnt = ds_data_TRMRF007010.rowcount;
  12962. for (var i=0; i<loopcnt; i++)
  12963. {
  12964. var recinfo = utlf_transNullToEmpty(ds_data_TRMRF007010.getColumn(i, "trgtcdnm"));
  12965. var condqry = utlf_transNullToEmpty(ds_data_TRMRF007010.getColumn(i, "condqry"));
  12966. utlf_addLog("recinfo : " + recinfo );
  12967. utlf_addLog("condqry : " + condqry);
  12968. recinfo = recinfo.split("|");
  12969. var levelcd = recinfo[0];
  12970. var basecd = recinfo[1];
  12971. var colno = recinfo[2];
  12972. var extnflag = recinfo[3];
  12973. var fstlevlitemcd = recinfo[4];
  12974. if( !utlf_isNull(levelcd) ){
  12975. var startIdx = levelcd.indexOf(".");
  12976. var endIdx = levelcd.length;
  12977. levelcd = levelcd.substr(startIdx + 1, endIdx);
  12978. }
  12979. // 부분서식 MTX
  12980. if( !utlf_isNull(aItemCds) ){
  12981. if( (aItemCds.toString()).indexOf(basecd) > -1 ){
  12982. var tarObj = ComnFormObj.components["tar_" + basecd];
  12983. if( tarObj != null && tarObj.visible == true && !utlf_isNull(condqry)){
  12984. tarObj.displaynulltext = condqry;
  12985. }
  12986. }
  12987. // 일반서식 or 부분서식
  12988. }else{
  12989. if( utlf_isNull(colno) ){
  12990. ds_data_recitem.filter("String(degnitemlevlcd).indexOf('" + levelcd + "') >= 0 && String(degnitemcd).indexOf('" + basecd + "') >= 0");
  12991. }else{
  12992. ds_data_recitem.filter("String(degnitemlevlcd).indexOf('" + levelcd + "') >= 0 && String(colno).indexOf('" + colno + "') >= 0 && String(degnitemcd).indexOf('" + basecd + "') >= 0");
  12993. }
  12994. for(var j = 0; j < ds_data_recitem.getRowCount(); j++){
  12995. var degnitemno = ds_data_recitem.getColumn(j, "degnitemno");
  12996. var degnitemkind = ds_data_recitem.getColumn(j, "degnitemkind");
  12997. var colId = degnitemkind + "_" + degnitemno;
  12998. utlf_addLog("colId : " + colId );
  12999. if(!utlf_isNull(colId))
  13000. {
  13001. if(!utlf_isNull(condqry)){
  13002. if( this.components[colId] != null ){
  13003. if( formcd == "0000000005" && !utlf_isNull(ivwObj)){ // 자유서식 일경우 조건 변경
  13004. var ColFstlevlitemcd = (ivwObj.name).split("_")[1];
  13005. utlf_addLog("ColFstlevlitemcd : " + ColFstlevlitemcd);
  13006. if( !utlf_isNull(fstlevlitemcd) && fstlevlitemcd == ColFstlevlitemcd ){
  13007. eval(colId).displaynulltext = condqry;
  13008. }
  13009. }else if( (eval(colId) instanceof TextArea || eval(colId) instanceof Edit) && utlf_isNull(extnflag) ){
  13010. eval(colId).displaynulltext = condqry;
  13011. }else if(!utlf_isNull(extnflag) && extnflag == "Y"){
  13012. var tmpcolId = colId+"EXTN";
  13013. if( (eval(tmpcolId) instanceof Textarea || eval(tmpcolId) instanceof Edit) ){
  13014. eval(tmpcolId).displaynulltext = condqry;
  13015. }
  13016. }
  13017. }
  13018. }
  13019. }
  13020. }
  13021. ds_data_recitem.filter("");
  13022. }
  13023. }
  13024. }catch(e){
  13025. sysf_catchTrace(e);
  13026. ds_data_recitem.filter("");
  13027. }
  13028. dsf_deleteDs("ds_cond_TRMRF01219");
  13029. dsf_deleteDs("ds_data_TRMRF01219");
  13030. utlf_addLog(":::::::: lf_setInitHelpData End :::::::");
  13031. }
  13032. function cf_TRMRF007010(sSvcId, nErrorCode, sErrorMsg) {
  13033. if(nErrorCode < 0) return;
  13034. }
  13035. //20170630 x009추가 - x축그리드 테이블 정보 Set
  13036. function fnSetXgridTableInfo(objGrd, objDs, degnItemLevlCd, degnItemNo){
  13037. var sMaxColCnt = objGrd.maxcolcnt;
  13038. if(utlf_isNull(sMaxColCnt))
  13039. sMaxColCnt = "5";
  13040. var xGridTempNodeInfo = fGetFormRec("xgridtempnodeinfo");
  13041. if(!utlf_isNull(xGridTempNodeInfo)){
  13042. xGridTempNodeInfo += "^"; // 한서식에 x축그리드가 여러개일수도 있다.
  13043. }
  13044. //저장될Col갯수|표현(표) Col갯수|아이템레벨cd|아이템No
  13045. //해당 셋팅되는 내용은 저장시 xml에 temp node로 저장데이터와 함께 저장됨. fnSaveRecXML()
  13046. xGridTempNodeInfo += ((objDs.colcount - 1) == 0 ? 1 : (objDs.colcount - 1)) + "|" + sMaxColCnt + "|" + degnItemLevlCd + "|" + degnItemNo;
  13047. fSetFormRec("xgridtempnodeinfo", xGridTempNodeInfo);
  13048. }
  13049. /****************************************************************************************
  13050. * Components : Button
  13051. * Components ID : HLP
  13052. * Event : onclick
  13053. * Argument : 01.obj : Object Event has occurred
  13054. * : 02.e : Event Object
  13055. * Description : 도움말 버튼
  13056. ****************************************************************************************/
  13057. function fClickHelp(obj, e){
  13058. //var attrVal = ds_data_formdegn.lookup("degnitemno", obj.degnitemno, "itemattrval");
  13059. var attrVal = obj.HelpForm;
  13060. if( utlf_isNull(attrVal) ) return;
  13061. var formcd = attrVal.replace(/^.*formcd:(\d*);.*$/, "$1");
  13062. frmf_setParameter("formcd", formcd);
  13063. frmf_open("SPMRF01100", "SPMRF01100", null, null, null, null, null, null, null, null, null, null, "M");
  13064. //frmf_modal("FPMMR04901", "FPMMR04901", {p_formcd:formcd}, null, null, null, null, null, null, null, null, null, "M");
  13065. }
  13066. /****************************************************************************************
  13067. * Components : Button
  13068. * Components ID : URL
  13069. * Event : onclick
  13070. * Argument : 01.obj : Object Event has occurred
  13071. * : 02.e : Event Object
  13072. * Description : URL 링크 실행 이벤트 버튼
  13073. ****************************************************************************************/
  13074. function fnCallUrl(obj, e)
  13075. {
  13076. var urlAddr = obj.urlAddr;
  13077. if(utlf_isNull(urlAddr))
  13078. return;
  13079. // UxStudio Ver 9.2.2.220 오류사항으로 분기 상위버전은 사용가능함. 차후 버전 업데이트시 제거필요.
  13080. try{
  13081. if( urlAddr.indexOf("http") > -1 ){
  13082. system.execBrowser(urlAddr, "default");
  13083. }else{
  13084. system.execShell(urlAddr);
  13085. }
  13086. }catch(ex){
  13087. sysf_catchTrace(ex);
  13088. return;
  13089. }
  13090. }
  13091. /****************************************************************************************
  13092. * Function : lf_getInptTerm
  13093. * Description : 환자수진이력 팝업
  13094. ****************************************************************************************/
  13095. function lf_getInptTerm(obj:Button, e:ClickEventInfo)
  13096. {
  13097. var opener = frmf_getoOpener();
  13098. opener.fGetPatHist();
  13099. }
  13100. /****************************************************************************************
  13101. * Description : Default값 Setting
  13102. * Argument : N/A
  13103. ****************************************************************************************/
  13104. function fnLoadDegnNewForm(){
  13105. if( this.objects["ds_formdegn"] == null ) return;
  13106. utlf_addLog("@@@@@@@@@@@@@@@ fnLoadDegnNewForm Call Start!!!!");
  13107. for(var i = 0 ; i < ds_formdegn.rowcount; i++){
  13108. var itemKind = ds_formdegn.getColumn(i, "degnitemkind");
  13109. var itemNo = ds_formdegn.getColumn(i, "degnitemno");
  13110. var defltVal = ds_formdegn.getColumn(i, "degnitemdefltval");
  13111. var parentDegnItemNo = ds_formdegn.getColumn(i, "parentdegnitemno");
  13112. if( itemKind != "MSL" ) continue;
  13113. // var objFormRoot = this;
  13114. // if(!utlf_isNull(parentDegnItemNo))
  13115. // objFormRoot = this.all["FRM_" + parentDegnItemNo];
  13116. if(!utlf_isNull(defltVal)){
  13117. utlf_addLog("===> " + itemKind + "_" + itemNo + " - Default Value : " + defltVal);
  13118. defltVal = MMRCommon_fnSetDefltValByArgs(itemNo, defltVal, parentDegnItemNo);
  13119. utlf_addLog("===> " + itemKind + "_" + itemNo + " - Default Value : " + defltVal);
  13120. setValueByDegnItemNo(itemNo, defltVal, parentDegnItemNo);
  13121. }
  13122. }
  13123. utlf_addLog("@@@@@@@@@@@@@@@ fnLoadDegnNewForm Call End!!!!");
  13124. }
  13125. /****************************************************************************************
  13126. * Description : Default값 Setting
  13127. * Argument : N/A
  13128. ****************************************************************************************/
  13129. function MMRCommon_fnSetDefltValByArgs(itemNo, defltVal, parentDegnItemNo)
  13130. {
  13131. if (defltVal.indexOf("$") > -1) {
  13132. if (defltVal.indexOf("$날짜시간.시분$") > -1) {
  13133. defltVal = defltVal.replace(/\$날짜시간.시분\$/gi, utlf_getCurrentTime().substring(0,4));
  13134. }
  13135. }
  13136. return defltVal;
  13137. }
  13138. /****************************************************************************************
  13139. * Description : Default값 Setting
  13140. * Argument : N/A
  13141. ****************************************************************************************/
  13142. function setValueByDegnItemNo(itemNo, value, parentDegnItemNo, extnValue){
  13143. //신규서식 로딩시 산술식에 의해서 0, null, NaN의 값이 나오면 이것은 셋팅을 하지 않는다.
  13144. if( ( utlf_isNull(value) || value == 0 || (typeof value == "number" && value != parseFloat(value))) )
  13145. return true;
  13146. if( utlf_isNull( parentDegnItemNo) )
  13147. parentDegnItemNo = "";
  13148. var nRow = ds_formdegn.findRowExpr("degnitemno=='" + itemNo + "'&&parentdegnitemno=='" + parentDegnItemNo + "'");
  13149. utlf_addLog("nRow : " + nRow + " || value : " + value);
  13150. if( nRow == -1 )
  13151. return false;
  13152. var itemKind = ds_formdegn.getColumn(nRow, "degnitemkind");
  13153. //20170330 x009 - 위에서 위치이동함. - 산술식 계산시 디자인속성의 반올림, 올림,내림의 속성이 적용되지 않은 오류 수정
  13154. //value가 정의되지 않은 값일경우 'undefined' 값 세팅되는 문제 수정
  13155. var itemattrval = ds_formdegn.getColumn(nRow, "itemattrval");
  13156. if(utlf_isNull(value)){
  13157. value = "";
  13158. }
  13159. value = "" + value;
  13160. var viewFlag = ds_formdegn.getColumn(nRow, "degncntrviewflag");
  13161. if( viewFlag == "L" )
  13162. return false;
  13163. //동일값 입력 방지처리
  13164. //var recitemRow = ds_data_recitem.findRowExpr("degnitemno=='" + itemNo + "'&&parentdegnitemno=='" + parentDegnItemNo + "'");
  13165. var recitemRow = ds_data_recitem.findRowExpr("degnitemno=='" + itemNo );
  13166. var preValue;
  13167. if( /STX|MTX|CAL|MSK/.test(itemKind) ){
  13168. preValue = ds_data_recitem.getColumn(recitemRow, "reccnts");
  13169. } else {
  13170. preValue = ds_data_recitem.getColumn(recitemRow, "rectermcd");
  13171. }
  13172. // if(value === null) //===는 오타 아님 형까지 구분해야 하는 상황이라 사용한것
  13173. // value = ""; //이렇게 안해주면 String으로 바꾸는 과정에서 "null"이 된다.
  13174. // else if(typeof value == "number")
  13175. // value = Math.round(value, 10); //숫자면 산술식결과 값이므로 10자리 끊음
  13176. // /*
  13177. // 0과 null이 구분안되는 문제로 value를 String으로 바꿔준다.
  13178. // 0 == null //true
  13179. // 0 == "0" //true
  13180. // "0" == null //false
  13181. // */
  13182. if( itemKind != "MSL" &&
  13183. itemKind != "SSL" &&
  13184. itemKind != "IMG" &&
  13185. preValue == value )
  13186. return true;
  13187. var objFormRoot = this;
  13188. if(!utlf_isNull(parentDegnItemNo))
  13189. objFormRoot = this.all["FRM_" + parentDegnItemNo];
  13190. var obj = objFormRoot.all[( itemKind == "CAL" ? "STX":itemKind )+ "_" + itemNo];
  13191. var e = new EventInfo;
  13192. switch( itemKind ){
  13193. case "MSL":
  13194. //var nRow = ds_data_formdegn.findRowExpr("supdegnitemno=='" + itemNo + "'&&termcd=='" + value + "'");
  13195. utlf_addLog("★★ itemNo="+itemNo+"//termcd="+value+"//parentdegnitemno="+parentDegnItemNo)
  13196. var nRow = ds_formdegn.findRowExpr("supdegnitemno=='" + itemNo + "'&&termcd=='" + value + "'&&parentdegnitemno=='" + parentDegnItemNo + "'");
  13197. if(nRow > -1){
  13198. itemNo = ds_formdegn.getColumn(nRow, "degnitemno");
  13199. obj = objFormRoot.all["SSU_" + itemNo];
  13200. obj.value = value;
  13201. utlf_addLog("★★ itemNo="+itemNo)
  13202. utlf_addLog("★★ obj="+obj)
  13203. obj.onchanged.fireEvent(obj, e);
  13204. }
  13205. else {
  13206. //itemNo = ds_data_formdegn.lookup("supdegnitemno", itemNo, "degnitemno");
  13207. utlf_addLog("★★ else itemNo="+itemNo)
  13208. utlf_addLog("★★ else obj="+obj)
  13209. //2018.01.16 MSL연동오류로 인하여 분리
  13210. if(itemKind == "MSL") {
  13211. var subItemKind = "SSU";
  13212. //초기값설정되어 있는 서식인경우(ex:제증명 당뇨병환자 소모성재료 처방전)
  13213. //fnOnclearMSLISU(itemNo, subItemKind, parentDegnItemNo);
  13214. if(utlf_isNull(value)) {
  13215. //2018.02.27 부분서식안에 MSL->SSU인경우 이벤트 강제 호출한다.
  13216. nRow = ds_formdegn.findRowExpr("supdegnitemno=='" + itemNo + "'&&parentdegnitemno=='" + parentDegnItemNo + "'");
  13217. subItemNo = ds_formdegn.getColumn(nRow, "degnitemno");
  13218. obj = objFormRoot.all["SSU_" + subItemNo];
  13219. if(obj != null){
  13220. obj.value = value;
  13221. obj.onchanged.fireEvent(obj, e);//dataset 반영, calculation 수행
  13222. }
  13223. break;
  13224. }
  13225. //딜리미터가 제각각이다. 이걸 알아내자. " , " 와 " "확인
  13226. var delimiter = fnGetDelimiter(value);
  13227. arrValue = value.split(delimiter);
  13228. var nRow = -1;
  13229. for( var k in arrValue ){
  13230. utlf_addLog("★★★ else supdegnitemno="+itemNo+"//termcd="+arrValue[k]+"//parentdegnitemno="+parentDegnItemNo);
  13231. nRow = ds_formdegn.findRowExpr("supdegnitemno=='" + itemNo + "'&&termcd=='" + arrValue[k] + "'&&parentdegnitemno=='" + parentDegnItemNo + "'");
  13232. if(nRow > -1){
  13233. subItemNo = ds_formdegn.getColumn(nRow, "degnitemno");
  13234. obj = objFormRoot.all["SSU" + "_" + subItemNo];
  13235. utlf_addLog("★★★ else nRow="+nRow+"//subItemNo="+subItemNo+"//subItemKind="+subItemKind+"//obj="+obj);
  13236. obj.value = arrValue[k];
  13237. obj.onchanged.fireEvent(obj, e);
  13238. if(!utlf_isNull(extnValue)){
  13239. var extnObj = objFormRoot.all["STX_" + subItemNo];
  13240. if(extnObj == null)
  13241. extnObj = objFormRoot.all["MTX_" + subItemNo];//공통서식의 경우 MTX인경우 있음.
  13242. utlf_addLog("extnValue :::::: " + extnValue + ", objFormRoot : " + objFormRoot + ", STX_" + subItemNo + ", extnObj::::" + extnObj);
  13243. if(extnObj != null){
  13244. extnObj.value = extnValue;
  13245. extnObj.ontextchanged.fireEvent(extnObj, e);//dataset 반영, calculation 수행
  13246. }
  13247. }
  13248. }
  13249. }
  13250. }
  13251. }
  13252. if(!utlf_isNull(extnValue)){
  13253. var extnObj = objFormRoot.all["STX_" + itemNo];
  13254. if(extnObj == null)
  13255. extnObj = objFormRoot.all["MTX_" + itemNo];//공통서식의 경우 MTX인경우 있음.
  13256. utlf_addLog("extnValue :::::: " + extnValue + ", objFormRoot : " + objFormRoot + ", STX_" + itemNo + ", extnObj::::" + extnObj);
  13257. if(extnObj != null){
  13258. extnObj.value = extnValue;
  13259. extnObj.ontextchanged.fireEvent(extnObj, e);//dataset 반영, calculation 수행
  13260. }
  13261. }
  13262. break;
  13263. default:
  13264. break;
  13265. }
  13266. return true;
  13267. }
  13268. /****************************************************************************************
  13269. * Description : 구분자 확인
  13270. * Argument : N/A
  13271. ****************************************************************************************/
  13272. function fnGetDelimiter(value){
  13273. // 2016-05-19 KTJ 일부서식에서 valcd가 7자리로 들어가 있는 경우가 발견되어 7자리로 끊는 로직추가
  13274. var delimiter = /^\d{7,10}(\D+)\d{7,10}/.exec(value);
  13275. return (delimiter == null) ? " ": delimiter[1];
  13276. }]]></Script>