SMMNR20100.js 251 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855
  1. /*
  2. Flow Sheet(SMMNR10100.xfm - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. */
  6. var sCondPath = "/root/main/cond";
  7. var xChartHeaderListPath = "/root/main/chartheaderlist";
  8. var xStnddayClincObsRecListPath = "/root/main/clincobsrecinfo/stnddayclincobsrecinfo/stnddayclincobsreclist";
  9. var xFormerdayClincObsRecListPath = "/root/main/clincobsrecinfo/formerclincobsrecinfo/formerclincobsreclist";
  10. var xHoursClincObsRecList = "/root/main/clincobsrecinfo/hoursclincobsrecinfo/hoursclincobsreclist";
  11. var xDaysClincObsRecList = "/root/main/clincobsrecinfo/daysclincobsrecinfo/daysclincobsreclist";
  12. var xPamInfoPath = "/root/main/paminfo/pamlist"; // 환자정보
  13. var xDayCountListPath = "/root/main/daycountinfo/daycountlist";
  14. var xFormerDayCountListPath = "/root/main/formerdaycountinfo/daycountlist";
  15. var xIntervalRecYNListPath = "/root/temp/clincobsrecinfo/intervalrecynlist";
  16. var xClincObsRecListPath = "/root/temp/clincobsrecinfo/clincobsreclist";
  17. var sAttrListPath = "/root/temp/clincobsrecinfo/attrlist";
  18. var sAttrListPath1 = "/root/temp/clincobsrecinfo/attrlist1";
  19. var xRecUserListPath = "/root/temp/clincobsrecinfo/recuserlist";
  20. var xTMSettingListPath = "/root/temp/clincobsrecinfo/tmsettinglist";
  21. var sAttrListTempPath = "/root/temp/attrinfo/attrlist";
  22. var sAttrListInitPath = "/root/temp/initcmblnfo/initcmblist";
  23. var xFormerIntervalRecYNListPath = "/root/temp/formerclincobsrecinfo/intervalrecynlist";
  24. var xFormerClincObsRecListPath = "/root/temp/formerclincobsrecinfo/clincobsreclist";
  25. var xFormerAttrListPath = "/root/temp/formerclincobsrecinfo/attrlist";
  26. var xFormerAttrListPath1 = "/root/temp/formerclincobsrecinfo/attrlist1";
  27. var xFormerRecUserListPath = "/root/temp/formerclincobsrecinfo/recuserlist";
  28. var xPathViewData = "/root/temp/clincobsrecinfo/rtnsigndata";
  29. var xFormerRecPath = "/root/temp/formerclincobsrecinfo";
  30. var sSettingNode = "/root/temp/viewersettinginfo/viewersettinglist" ;
  31. var xFluidPath = "/root/temp/clincobsrecinfo/fluidlist";
  32. var xInstrmtPath = "/root/temp/clincobsrecinfo/instrmtlist";
  33. var xFluidTmpPath = "/root/temp/clincobsfluidrecinfo/fluidlist";
  34. var xResultPath = "/root/certtemp/recinfo";
  35. var xResultAttrPath = "/root/certattrtemp/recattrinfo";
  36. var xItemPopupPath = "/root/init/popmenu/itemcolmenu";
  37. var xItemInitPopupPath = "/root/init/popmenu/iteminitmenu/menulist";
  38. var sHeader = new Array();
  39. var sFormerHeader = new Array();
  40. var sPid = ""; // 환자번호
  41. var sIndd = ""; // 입원일자
  42. var sCretNo = ""; // 환자 일자별 일련번호
  43. var sInstcd = ""; // 기관코드
  44. var sIOFlag = ""; // 입원/외래 구분
  45. var sWardCD = ""; // 병동코드
  46. var sRoomCD = ""; // 병실코드
  47. var sJobKindCD = ""; // 직급코드
  48. var sIndschacptstat = "";
  49. var sDschdd = "";
  50. var sChartItem = new Array();
  51. var sDayCountFlag = "";
  52. var sPopUpMenuFlag = "";
  53. var s4DateSrch = "";
  54. var sViewerRecDD = "";
  55. var sViewerFunc = "sign";
  56. var sMakeChartInfo = new Array();
  57. var sImageRecDD = "";
  58. var sPatNm = "";
  59. var sSexAge = "";
  60. var sDutplcecd = "";
  61. var sOrdDeptcd = "";
  62. var sMedispclid = "";
  63. var sUserFlag = "";
  64. var sUserDeptCd = "";
  65. var sUserId = "";
  66. var sUserNm = "";
  67. var sSpParamInfo = "";
  68. var sPamInfo = "";
  69. var sParamInfo = "";
  70. var sSelectView = "24hours";
  71. var sFluidSumInfo = new Array(); //Fluid 합계 정보 배열
  72. var sFluidBfSumInfo = new Array(); //Fluid 과거 합계 정보 배열
  73. //환경설정 변수
  74. var sDayStndTm = "999999";
  75. var sEvenStndTm = "999999";
  76. var sNightStndTm = "999999";
  77. var sIoTmUseYn = "Y";
  78. var sEventItemUseYn = "N";
  79. var sSeriousYseYn = "N";
  80. var sApchUseYn = "N";
  81. var sHdayUseYn = "Y";
  82. var sPodUseYn = "Y";
  83. var sIcuDayUseYn = "N";
  84. var sCpDayUseYn = "N";
  85. var sBmtUseYn = "N";
  86. var sAntiDayUseYn = "N";
  87. var sHeightUseYn = "N";
  88. var sWeightUseYn = "N";
  89. var sBloodUseYn = "N";
  90. var sChngRoomUseYn = "N";
  91. var sOpddUseYn = "Y";
  92. var sStartTm = "060000";
  93. var sGraphUseYn = "Y"
  94. var sSrchTypeInfo = "ALL";
  95. var sInitTimeFlag = "60";
  96. var sFamilyMeetUseYn = "N";
  97. var sBrthddUseYn = "N";
  98. var sWardBtnUseYn = "N";
  99. var sHeaderFlag = "D";
  100. var sTmpSaveUseYn = "N";
  101. var sPatInfoViewCdnt = 0;
  102. var sDayCountCnt = 0;
  103. var sDataRowHeight = 23;
  104. var sDataFontSize = 12;
  105. var sTotaluseYn = "Y";
  106. var sSubTotaluseYn = "N";
  107. var sRunTotaluseYn = "N";
  108. var sCurrentTMColInfo = 0; //Now 기준 Col정보
  109. var sDutyTMColInfo1 = 0; //Day 기준 Col정보
  110. var sDutyTMColInfo2 = 0; //Evening 기준 Col정보
  111. var sDutyTMColInfo3 = 0; //Night 기준 Col정보
  112. var sNowDate = "";
  113. var sCmbWardValue = "";
  114. var sCmbRoomValue = "";
  115. var sCmbPatValue = "";
  116. var sCmbMyPatValue = "";
  117. var s24ClsListInitYn = "N";
  118. var sSclsChkFlag = "Y";
  119. //---------(20110228) 경북대
  120. var gcurrentpid = "";
  121. var gpidPath = "/root/temp/cond/settingpatient/settingpatientlist";
  122. //---------(20110228) 경북대
  123. //경북대 응급실 관련 변수 (2011.03.02 Ahn)
  124. var eERDEPTCD = "";
  125. var eERFLAG = "";
  126. //경북대 환자 콤보 리스트 경로
  127. var erPatPidPath = "/root/temp/cond/patientgrup/patientgruplist";
  128. //경북대 기록지 구분용 (기록 유무 표시) _ 2011.03.10 (ahn)
  129. var eRECFLAG = "erFlow"; // 임상관찰기록
  130. //var sChartNum = 1;
  131. /**
  132. * @group :
  133. * @ver : 2009.12.15
  134. * @by : 양천덕
  135. * @---------------------------------------------------
  136. * @type : function
  137. * @access : public
  138. * @desc : FlowSheet 환경 설정 조회
  139. * @param :
  140. * @return :
  141. * @---------------------------------------------------
  142. */
  143. function fInitViewer(){
  144. //FlowSheet 환경설정 정보 조회(FlowSheet에서 화면설정 버튼 눌러 설정하는 정보들)
  145. submit("TRMNR10101", false);
  146. if( getNodesetCount(sSettingNode) > 0 ){
  147. //화면 open시점 설정 정보
  148. sStartTm = model.getValue(sSettingNode + "/starttm" ); //조회시작시간
  149. sGraphUseYn = model.getValue(sSettingNode + "/graphuseyn" ); //그래프사용여부
  150. sSrchTypeInfo = model.getValue(sSettingNode + "/srchtypeinfo" ); //조회분류정보
  151. sInitTimeFlag = model.getValue(sSettingNode + "/inittimeflag" ); //초기조회시간구분
  152. sWardBtnUseYn = model.getValue(sSettingNode + "/wardbtnuseyn" ); //병동버튼사용여부
  153. sTmpSaveUseYn = model.getValue(sSettingNode + "/tmpsaveuseyn" ); //임시저장사용여부
  154. sIoTmUseYn = model.getValue(sSettingNode + "/iotmuseyn" ); //경구입력화면 버튼 사용여부
  155. if(getNodesetCount(sSettingNode + "/srchtminfo/minlist/item") > 0){
  156. model.copynode("/root/init/minlist", sSettingNode + "/srchtminfo/minlist"); //조회시간값
  157. }
  158. //환자 정보 조회 후 설정 정보
  159. sSeriousYseYn = model.getValue(sSettingNode + "/serioususeyn" ); //중증정보사용여부
  160. sApchUseYn = model.getValue(sSettingNode + "/apchuseyn" ); //아파치정보사용여부
  161. sHdayUseYn = model.getValue(sSettingNode + "/hdayuseyn" ); //HospitalDay사용여부
  162. sIcuDayUseYn = model.getValue(sSettingNode + "/icudayuseyn" ); //ICUDay사용여부
  163. sOpddUseYn = model.getValue(sSettingNode + "/opdduseyn" ); //수술일정보사용여부
  164. sPodUseYn = model.getValue(sSettingNode + "/poduseyn" ); //OP경과일사용여부
  165. sCpDayUseYn = model.getValue(sSettingNode + "/cpdayuseyn" ); //CP적용일자사용여부
  166. sBmtUseYn = model.getValue(sSettingNode + "/bmtuseyn" ); //BMT적용일자사용여부
  167. sAntiDayUseYn = model.getValue(sSettingNode + "/antidayuseyn" ); //항암프로토콜적용일사용여부
  168. sHeightUseYn = model.getValue(sSettingNode + "/heightuseyn" ); //키정보사용여부
  169. sWeightUseYn = model.getValue(sSettingNode + "/weightuseyn" ); //몸무게정보사용여부
  170. sBloodUseYn = model.getValue(sSettingNode + "/blooduseyn" ); //혈액준비사용여부
  171. sChngRoomUseYn = model.getValue(sSettingNode + "/chngroomuseyn" ); //전실사용여부
  172. sFamilyMeetUseYn = model.getValue(sSettingNode + "/familymeetuseyn"); //가족면회정보사용여부
  173. sBrthddUseYn = model.getValue(sSettingNode + "/brthdduseyn" ); //출생일정보조회여부
  174. //데이터 조회 후 처리 설정 정보
  175. sHeaderFlag = model.getValue(sSettingNode + "/headerflag" ); //조회해더구분(A:전체, D:일시 두줄 조회, T:일시 한줄조회)
  176. sDayStndTm = model.getValue(sSettingNode + "/daystndtm" ); //Day기준시간
  177. sEvenStndTm = model.getValue(sSettingNode + "/evenstndtm" ); //Evening기준시간
  178. sNightStndTm = model.getValue(sSettingNode + "/nightstndtm" ); //Night기준시간
  179. sDataRowHeight = model.getValue(sSettingNode + "/datarowheight" ); //Grid행 높이
  180. sDataFontSize = model.getValue(sSettingNode + "/datafontsize" ); //Grid글씨크기
  181. sTotaluseYn = model.getValue(sSettingNode + "/totaluseyn" ); //합계사용여부
  182. sSubTotaluseYn = model.getValue(sSettingNode + "/subtotaluseyn" ); //부분합계사용여부
  183. sRunTotaluseYn = model.getValue(sSettingNode + "/runtotaluseyn" ); //누적합계사용여부
  184. sEventItemUseYn = model.getValue(sSettingNode + "/eventitemuseyn" ); //Event사용여부
  185. }
  186. //화면 선택 정보(24시간 기준으로 ~)
  187. sSelectView = "24hours";
  188. //그래프 사용 여부 설정
  189. if(sGraphUseYn == "Y"){
  190. if(model.getValue(sCondPath+"/vwctrl_4days") == ""){ // (A : Graph Off, I : Graph On)
  191. model.setValue(sCondPath+"/vwctrl_4days", "I");
  192. }
  193. if(model.getValue(sCondPath+"/vwctrl_24hours") == ""){ // (A : Graph Off, I : Graph On)
  194. model.setValue(sCondPath+"/vwctrl_24hours", "I");
  195. }
  196. //그래프 초기화 작업 함수 호출(그래프 생성 함수와 동일 Parameter로 처리)
  197. fMakeChart("init24hours");
  198. }else{
  199. if(model.getValue(sCondPath+"/vwctrl_4days") == ""){ // (A : Graph Off, I : Graph On)
  200. model.setValue(sCondPath+"/vwctrl_4days", "A");
  201. }
  202. if(model.getValue(sCondPath+"/vwctrl_24hours") == ""){ // (A : Graph Off, I : Graph On)
  203. model.setValue(sCondPath+"/vwctrl_24hours", "A");
  204. }
  205. }
  206. //병동관련 업무 Btn그룹 사용 여부 설정
  207. if(sWardBtnUseYn == "Y"){
  208. grp_wardbtn.visible = true;
  209. }else{
  210. grp_wardbtn.visible = false;
  211. }
  212. //임시저장 기능 사용 여부 설정
  213. if(sTmpSaveUseYn == "Y"){
  214. btn_tempsave.disabled = false;
  215. }else{
  216. btn_tempsave.disabled = true;
  217. }
  218. //경구입력화면 버튼 사용여부
  219. if( sIoTmUseYn == "Y" ){
  220. btn_EtrlInpt.visible = true;
  221. }else{
  222. btn_EtrlInpt.visible = false;
  223. }
  224. //model.setValue(sCondPath+"/vwctrl_button","24hours");
  225. //model.setValue(sCondPath+"/daycountinfo", "1 2 3 4 5 6");
  226. //model.setValue(sCondPath+"/formerdaycountinfo", "1 2 3 4 5 6");
  227. //화면 전환 및 그래프 설정
  228. fChageView(sSelectView);
  229. //파라미터 정보 조회
  230. sParamInfo = "";
  231. sSpParamInfo = "";
  232. //24시간 그리드 콤보 노드 세팅
  233. for(var i=0; i< 24; i++){
  234. model.makeNode("/root/init/hourlist/item["+(i+1)+"]");
  235. if(i <10){
  236. model.makeValue("/root/init/hourlist/item["+(i+1)+"]/cd","0"+i);
  237. }else{
  238. model.makeValue("/root/init/hourlist/item["+(i+1)+"]/cd",i);
  239. }
  240. model.makeValue("/root/init/hourlist/item["+(i+1)+"]/nm",i);
  241. }
  242. //사용자 직급구분에 따른 화면 제어 설정
  243. sJobKindCD = getUserInfo("jobkindcd"); // 직급코드
  244. sUserDeptCd = getUserInfo("dutplcecd"); // 근무부서코드
  245. sUserId = getUserInfo("userid"); // 사용자ID
  246. sUserNm = getUserInfo("usernm"); // 사용자명
  247. //---------(20101204) 경북대
  248. //추가
  249. var ssflag = "";
  250. if(getUserInfo("dutplceinstcd") != '032' && getUserInfo("dutplceinstcd") != '031') {
  251. //경북대가 아니면
  252. if( sJobKindCD == "0330" || sJobKindCD == "0310"){
  253. ssflag = "Y";
  254. }else{
  255. ssflag = "N";
  256. }
  257. } else if(getUserInfo("dutplceinstcd") == '032' || getUserInfo("dutplceinstcd") == '031') {
  258. //경북대이면 03%로 체크한다.
  259. if( sJobKindCD.substring(0, 2) == "03"){
  260. ssflag = "Y";
  261. }else{
  262. ssflag = "N";
  263. }
  264. }
  265. //원본:의사의 경우만
  266. //병동, 진료 구분 설정
  267. //if(sJobKindCD == "0330" || sJobKindCD == "0310"){
  268. if(ssflag=="Y") {
  269. //---------(20101204) 경북대
  270. sUserFlag = "2";
  271. }else{
  272. sUserFlag = "1";
  273. }
  274. //사용자 구분에 따른 설정 변경 Test Setting
  275. //sUserFlag = "2";
  276. model.setValue(sCondPath+"/srchflag", sUserFlag);
  277. //Parameter 정보 체크
  278. if(checkOpener()){
  279. /**
  280. SMMNR00900_Param
  281. pid▦indd▦cretno▦instcd▩ ==> 등록번호▦입원일자▦생성번호▦기관코드▩
  282. SMMNR00900_SpParam
  283. pid▦indd▦cretno▦instcd▦inrmdt▦dutplcecd▩ ==> 등록번호▦입원일자▦생성번호▦기관코드▦근무지코드▩
  284. => Sample Param
  285. sSpParamInfo = "pid▦indd▦cretno▦instcd▦inrmdt▩18907181▦20080102▦800340650▦012▦20080930120300▦3073300000▩";
  286. sParamInfo = "pid▦indd▦cretno▦instcd▩19466116▦20080913▦800511468▦012▩";
  287. **/
  288. sSpParamInfo = opener.javascript.getParameter("SMMNR00900_SpParam");
  289. if(sSpParamInfo == ""){
  290. sParamInfo = opener.javascript.getParameter("SMMNR00900_Param");
  291. setParameter("SMMNR00900_Param","");
  292. }else{
  293. sParamInfo = sSpParamInfo;
  294. sDutplcecd = fGetArrayDataTPR(sSpParamInfo,1,5);
  295. }
  296. }
  297. model.setValue(sCondPath+"/timeflag", sInitTimeFlag);
  298. model.setValue(sCondPath+"/cmbstatusx", "0");
  299. model.setValue(sCondPath+"/cmbstatusy", "0");
  300. model.setValue(sCondPath+"/rectm",sStartTm);
  301. }
  302. function fControlPatInfo(){
  303. sPatInfoViewCdnt = 15; //0->15로 수정_20110207_SMY
  304. if(sSeriousYseYn == "Y"){
  305. cap_serious.visible = true;
  306. cap_seriousvalue1.visible = true;
  307. cap_seriousvalue2.visible = true;
  308. cap_seriousvalue3.visible = true;
  309. cap_serious.attribute("left") = sPatInfoViewCdnt;
  310. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_serious.attribute("width").replace("px", ""));
  311. cap_seriousvalue1.attribute("left") = sPatInfoViewCdnt;
  312. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_seriousvalue1.attribute("width").replace("px", ""));
  313. cap_seriousvalue2.attribute("left") = sPatInfoViewCdnt;
  314. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_seriousvalue2.attribute("width").replace("px", ""));
  315. cap_seriousvalue3.attribute("left") = sPatInfoViewCdnt;
  316. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_seriousvalue3.attribute("width").replace("px", "")) + 5;
  317. }
  318. if(sApchUseYn == "Y"){
  319. cap_apch.visible = true;
  320. cap_apchvalue.visible = true;
  321. cap_apch.attribute("left") = sPatInfoViewCdnt;
  322. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_apch.attribute("width").replace("px", ""));
  323. cap_apchvalue.attribute("left") = sPatInfoViewCdnt;
  324. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_apchvalue.attribute("width").replace("px", "")) + 5;
  325. }
  326. if(sHdayUseYn == "Y"){
  327. sDayCountCnt++;
  328. cap_hd.visible = true;
  329. cap_hdvalue.visible = true;
  330. cap_hd.attribute("left") = sPatInfoViewCdnt;
  331. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_hd.attribute("width").replace("px", ""));
  332. cap_hdvalue.attribute("left") = sPatInfoViewCdnt;
  333. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_hdvalue.attribute("width").replace("px", "")) + 5;
  334. }
  335. if(sIcuDayUseYn == "Y"){
  336. sDayCountCnt++;
  337. cap_icu.visible = true;
  338. cap_icuvalue.visible = true;
  339. cap_icu.attribute("left") = sPatInfoViewCdnt;
  340. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_icu.attribute("width").replace("px", ""));
  341. cap_icuvalue.attribute("left") = sPatInfoViewCdnt;
  342. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_icuvalue.attribute("width").replace("px", "")) + 5;
  343. }
  344. if(sOpddUseYn == "Y"){
  345. cap_opdd.visible = true;
  346. cap_opddvalue.visible = true;
  347. cap_opdd.attribute("left") = sPatInfoViewCdnt;
  348. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_opdd.attribute("width").replace("px", ""));
  349. cap_opddvalue.attribute("left") = sPatInfoViewCdnt;
  350. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_opddvalue.attribute("width").replace("px", "")) + 5;
  351. }
  352. if(sPodUseYn == "Y"){
  353. sDayCountCnt++;
  354. cap_pod.visible = true;
  355. cap_podvalue.visible = true;
  356. cap_pod.attribute("left") = sPatInfoViewCdnt;
  357. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_pod.attribute("width").replace("px", ""));
  358. cap_podvalue.attribute("left") = sPatInfoViewCdnt;
  359. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_podvalue.attribute("width").replace("px", "")) + 5;
  360. }
  361. if(sCpDayUseYn == "Y"){
  362. sDayCountCnt++;
  363. cap_cp.visible = true;
  364. cap_cpvalue.visible = true;
  365. cap_cp.attribute("left") = sPatInfoViewCdnt;
  366. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_cp.attribute("width").replace("px", ""));
  367. cap_cpvalue.attribute("left") = sPatInfoViewCdnt;
  368. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_cpvalue.attribute("width").replace("px", "")) + 5;
  369. }
  370. if(sBmtUseYn == "Y"){
  371. sDayCountCnt++;
  372. cap_bmt.visible = true;
  373. cap_bmtvalue.visible = true;
  374. cap_bmt.attribute("left") = sPatInfoViewCdnt;
  375. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_bmt.attribute("width").replace("px", ""));
  376. cap_bmtvalue.attribute("left") = sPatInfoViewCdnt;
  377. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_bmtvalue.attribute("width").replace("px", "")) + 5;
  378. }
  379. if(sAntiDayUseYn == "Y"){
  380. sDayCountCnt++;
  381. cap_d.visible = true;
  382. cap_dvalue.visible = true;
  383. cap_d.attribute("left") = sPatInfoViewCdnt;
  384. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_d.attribute("width").replace("px", ""));
  385. cap_dvalue.attribute("left") = sPatInfoViewCdnt;
  386. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_dvalue.attribute("width").replace("px", "")) + 5;
  387. }
  388. if(sHeightUseYn == "Y"){
  389. cap_height.visible = true;
  390. cap_heightvalue.visible = true;
  391. cap_height.attribute("left") = sPatInfoViewCdnt;
  392. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_height.attribute("width").replace("px", ""));
  393. cap_heightvalue.attribute("left") = sPatInfoViewCdnt;
  394. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_heightvalue.attribute("width").replace("px", "")) + 5;
  395. }
  396. if(sWeightUseYn == "Y"){
  397. cap_weight.visible = true;
  398. cap_weightvalue.visible = true;
  399. cap_weight.attribute("left") = sPatInfoViewCdnt;
  400. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_weight.attribute("width").replace("px", ""));
  401. cap_weightvalue.attribute("left") = sPatInfoViewCdnt;
  402. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_weightvalue.attribute("width").replace("px", "")) + 5;
  403. }
  404. if(sBloodUseYn == "Y"){
  405. cap_blood.visible = true;
  406. cap_bloodvalue.visible = true;
  407. cap_blood.attribute("left") = sPatInfoViewCdnt;
  408. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_blood.attribute("width").replace("px", ""));
  409. cap_bloodvalue.attribute("left") = sPatInfoViewCdnt;
  410. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_bloodvalue.attribute("width").replace("px", "")) + 5;
  411. }
  412. if(sChngRoomUseYn == "Y"){
  413. cap_chngroom.visible = true;
  414. cap_chngroomvalue.visible = true;
  415. cap_chngroom.attribute("left") = sPatInfoViewCdnt;
  416. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_chngroom.attribute("width").replace("px", ""));
  417. cap_chngroomvalue.attribute("left") = sPatInfoViewCdnt;
  418. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_chngroomvalue.attribute("width").replace("px", "")) + 5;
  419. }
  420. if(sBrthddUseYn == "Y"){
  421. cap_brthdd.visible = true;
  422. cap_brthddvalue.visible = true;
  423. cap_brthdd.attribute("left") = sPatInfoViewCdnt;
  424. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_brthdd.attribute("width").replace("px", ""));
  425. cap_brthddvalue.attribute("left") = sPatInfoViewCdnt;
  426. sPatInfoViewCdnt = eval(sPatInfoViewCdnt) + eval(cap_brthddvalue.attribute("width").replace("px", "")) + 10;
  427. }
  428. if(sFamilyMeetUseYn == "Y"){
  429. cap_familymeetam.visible = true;
  430. cap_familymeetamvalue.visible = true;
  431. cap_familymeetpm.visible = true;
  432. cap_familymeetpmvalue.visible = true;
  433. }
  434. patinfolist_width = 1071;
  435. patinfolist_left = 0;
  436. //환자 기본 정보 조회 화면 위치 설정
  437. if(patinfolist_width - sPatInfoViewCdnt >= 225 ){
  438. grp_patinfolist.attribute("left") = 225;
  439. grp_patinfolist.attribute("width") = patinfolist_width - 225;
  440. }else{
  441. grp_patinfolist.attribute("left") = patinfolist_width - sPatInfoViewCdnt ;
  442. grp_patinfolist.attribute("width") = sPatInfoViewCdnt;
  443. }
  444. }
  445. /**
  446. * @group :
  447. * @ver : 2009.12.15
  448. * @by : 양천덕
  449. * @---------------------------------------------------
  450. * @type : function
  451. * @access : public
  452. * @desc : 화면 초기화
  453. * @param :
  454. * @return :
  455. * @---------------------------------------------------
  456. */
  457. function fInitialize(pFlag){
  458. fSettingPamInfo(); // 함수 내 응급실 부서코드 조회 추가 (2011.03.02 Ahn)
  459. /* 중환자실 부서 조회 ( 2011.03.25 Ahn)
  460. * 내환자 저장 시 다음환자 넘어가지 않는 부서 추가 ( 2011.04.18)
  461. * 간호일지, 임상관찰기록 화면 공통코드 신규 생성 ('T30')
  462. */
  463. model.makeValue("/root/send/cdgpid", "T30");
  464. submit("TRMNW04001");
  465. if (pFlag == "init") {
  466. sParamInfo = "";
  467. }
  468. //parameter 정보 여부에 따른 처리ㅋ
  469. if(sParamInfo == ""){
  470. //환자정보 조회
  471. sPamInfo = getGlobalVariable("paminfo");
  472. model.removenodeset("/root/main/paminfo/pamlist");
  473. setCSVToNode("/root/main/paminfo",sPamInfo,"pamlist");
  474. //상단정보 존재 여부 체크
  475. if(sPamInfo == ""){
  476. //내환자 등록 내역이 있으면 내환자 첫번째 환자 세팅
  477. if( getNodesetCount("/root/temp/cond/settingpatient/settingpatientlist") > 0){
  478. fSetParam("SettingPat", 1);
  479. return;
  480. }else{
  481. model.setValue(sCondPath+"/recdd",getCurrentDate());
  482. model.setValue(sCondPath+"/formerrecdd", getDateCalc(model.getValue(sCondPath+"/recdd"),1));
  483. fChkTgtPatInfo("disable");
  484. fChangUserTypeSrch(sUserFlag);
  485. model.refresh();
  486. return;
  487. }
  488. }else{
  489. fChkTgtPatInfo("able");
  490. fSettingViewCtrl();
  491. }
  492. fSettingPatInfo();
  493. //2008-04-28 삭제
  494. //var patinfo = "등록번호: "+sPid+", 환자명: "+model.getValue(xPamInfoPath+"/hngnm")+", 성별/나이: "+
  495. //model.getValue(xPamInfoPath+"/sex")+"/"+model.getValue(xPamInfoPath+"/age")+", 병실:"+model.getValue(xPamInfoPath+"/roomcd");
  496. //model.setValue(sCondPath+"/patinfo",patinfo);
  497. }else{
  498. sPid = fGetArrayDataTPR(sParamInfo,1,0); // 등록번호
  499. sIndd = fGetArrayDataTPR(sParamInfo,1,1); // 입원일자
  500. sCretNo = fGetArrayDataTPR(sParamInfo,1,2); // 생성번호
  501. sInstcd = fGetArrayDataTPR(sParamInfo,1,3); // 기관코드
  502. //sJobKindCD = fGetArrayDataTPR(sParamInfo,1,4); // 직급코드
  503. model.makeValue("/root/send/pid", sPid);
  504. model.makeValue("/root/send/indd", sIndd);
  505. model.makeValue("/root/send/cretno", sCretNo);
  506. model.makeValue("/root/send/instcd", sInstcd);
  507. submit("TRMNR00910", false);
  508. if(getNodesetCount("/root/main/patinfo") < 1){
  509. model.setValue(sCondPath+"/recdd",getCurrentDate());
  510. model.setValue(sCondPath+"/formerrecdd", getDateCalc(model.getValue(sCondPath+"/recdd"),1));
  511. fChkTgtPatInfo("disable");
  512. fChangUserTypeSrch(sUserFlag);
  513. //model.toggle("case_24hoursstnd");
  514. model.refresh();
  515. return;
  516. }else{
  517. fChkTgtPatInfo("able");
  518. fSettingViewCtrl();
  519. }
  520. sIOFlag = model.getValue("/root/main/patinfo/ordtype"); // 입원/외래 구분
  521. sWardCD = model.getValue("/root/main/patinfo/wardcd"); // 병동코드
  522. sRoomCD = model.getValue("/root/main/patinfo/roomcd"); // 병실코드
  523. sIndschacptstat = model.getValue("/root/main/patinfo/indschacptstat"); //입퇴원구분코드
  524. sDschdd = model.getValue("/root/main/patinfo/dschdd"); // 퇴원일자
  525. sOrdDeptcd = model.getValue("/root/main/patinfo/orddeptcd"); // 진료과
  526. sMedispclid = model.getValue("/root/main/patinfo/medispclid"); // 주치의
  527. model.setValue(sCondPath+"/pid", sPid);
  528. }
  529. // 응급실일 경우 (2011.02.24 Ahn)
  530. fGetWardChngInfo("Y", pFlag);
  531. fSettingPatInfo2("init");
  532. }
  533. /**
  534. * @group :
  535. * @ver : 2009.12.15
  536. * @by : 양천덕
  537. * @---------------------------------------------------
  538. * @type : function
  539. * @access : public
  540. * @desc : 사용자별 조회 조건 변경
  541. * @param :
  542. * @return :
  543. * @---------------------------------------------------
  544. */
  545. function fSettingUserTypeSrch(pFlag){
  546. if( pFlag == "1"){
  547. grp_outpatinfo.visible = false;
  548. grp_oderinpatinfo.visible = false;
  549. grp_inpatinfo.visible = true;
  550. }else{
  551. grp_outpatinfo.visible = false;
  552. grp_inpatinfo.visible = false;
  553. grp_oderinpatinfo.visible = true;
  554. }
  555. }
  556. /**
  557. * @group :
  558. * @ver : 2009.12.15
  559. * @by : 양천덕
  560. * @---------------------------------------------------
  561. * @type : function
  562. * @access : public
  563. * @desc : 사용자별 조회 조건 변경
  564. * @param :
  565. * @return :
  566. * @---------------------------------------------------
  567. */
  568. function fChangUserTypeSrch(pFlag){
  569. fInitViewInfo();
  570. fSettingUserTypeSrch(pFlag);
  571. var sSettingId1 = "-";
  572. var sSettingId2 = "-";
  573. if( pFlag == "1" ){
  574. if( cmb_wardlist.value == "" ){
  575. cmb_wardlist.value = sUserDeptCd;
  576. cmb_wardlist.dispatch("xforms-value-changed");
  577. }else{
  578. fGetCareComRoomList(sUserDeptCd);
  579. model.setValue("/root/temp/cond/wardcdgrup/wardcdgruplist", sUserDeptCd);
  580. cmb_wardlist.refresh();
  581. }
  582. }else{
  583. if( sUserFlag == "2" ){
  584. if( cmb_deptlist.value == "" ) return;
  585. mmbfGetUserComboList("/root/send/reqdata", "/root/temp/cond/doctlist/medispcl" , sUserDeptCd, "0330", "", "M");
  586. mmbfGetUserComboList("/root/send/reqdata", "/root/temp/cond/doctlist/atdoct", sUserDeptCd, "0330", "", "A");
  587. addComboInstance("/root/temp/cond/doctlist/medispcl", "userid^usernm", "-^전체", "usercombo"); //의사콤보 전체항목 추가
  588. addComboInstance("/root/temp/cond/doctlist/atdoct", "userid^usernm", "-^전체", "usercombo");//의사콤보 전체항목 추가
  589. if(model.getValue("/root/temp/cond/doctlist/medispcl/usercombo[userid='"+ sUserId+"']/userid") != ""){
  590. sSettingId1 = sUserId
  591. }
  592. if(model.getValue("/root/temp/cond/doctlist/atdoct/usercombo[userid='"+ sUserId+"']/userid") != ""){
  593. sSettingId2 = sUserId
  594. }
  595. fGetCareComDeptPatList(sUserDeptCd, sSettingId1 , sSettingId2, model.getValue("/root/init/mypatsrchflag"));
  596. if( model.getValue("/root/temp/cond/deptgrup/deptgruplist[deptcd='"+ sUserDeptCd +"']/dept") != "" ){
  597. model.setValue("/root/temp/cond/deptgrup/deptgruplist/dept", sUserDeptCd);
  598. model.setValue("/root/temp/cond/doctlist/medispcl/usercombo", sSettingId1);
  599. model.setValue("/root/temp/cond/doctlist/atdoct/usercombo", sSettingId2);
  600. }else{
  601. model.setValue("/root/temp/cond/deptgrup/deptgruplist/dept", "-");
  602. }
  603. }else{
  604. model.setValue("/root/temp/cond/deptgrup/deptgruplist/dept", "-");
  605. model.removenodeset("/root/temp/cond/doctlist/medispcl/usercombo");
  606. model.removenodeset("/root/temp/cond/doctlist/atdoct/usercombo");
  607. }
  608. cmb_deptlist.refresh();
  609. cmb_medispcllist.refresh();
  610. cmb_atdoctlist.refresh();
  611. }
  612. }
  613. /**
  614. * @group :
  615. * @ver : 2009.12.15
  616. * @by : 양천덕
  617. * @---------------------------------------------------
  618. * @type : function
  619. * @access : public
  620. * @desc : 초기 param 존재 하지 않을 경우 환자 선택화면 설정
  621. * @param :
  622. * @return :
  623. * @---------------------------------------------------
  624. */
  625. function fSettingPamInfo(){
  626. //병동코드 조회
  627. fGetCareComWardList("false");
  628. //------------(20110209) 경북대
  629. //내환자 조회
  630. //fGetSettingPatientList("false");
  631. fGetSettingPatientList_type2("false");
  632. //------------(20110209) 경북대
  633. //진료과 정보 조회
  634. mmbfGetDeptCodeComboList("/root/send/reqdata", "/root/temp/cond/deptgrup/deptgruplist" , "D"); //부서코드 콤보
  635. //응급의료센터 부서코드 추출_ 경북대 (2011.02.24 Ahn)
  636. model.makeValue("/root/send/cdgrupid", "'002'");
  637. model.makeValue("/root/send/srchdd" , getCurrentDate()); // 조회기준일자
  638. model.makeNode("/root/code/codeinfo");
  639. if(submit("TRMNW00001", false)){
  640. eERDEPTCD = model.getvalue("/root/code/codeinfo/codelist[cdgrupid='002']/cdid");
  641. }
  642. }
  643. /**
  644. * @group :
  645. * @ver : 2009.12.15
  646. * @by : 양천덕
  647. * @---------------------------------------------------
  648. * @type : function
  649. * @access : public
  650. * @desc : 화면 버튼 설정
  651. * @param :
  652. * @return :
  653. * @---------------------------------------------------
  654. */
  655. function fSettingViewCtrl(){
  656. // 의사의 경우는 조회만 가능
  657. if(sUserFlag == "2"){
  658. btn_viewsetting.disabled = true;
  659. btn_cleanitem.disabled = true;
  660. grp_wardbtn.disabled = true;
  661. btn_EtrlInpt.disabled = true;
  662. btn_cdisopen.disabled = true;
  663. btn_24hoursnursitem.disabled = true;
  664. btn_tempsave.disabled = true;
  665. btn_24hourscertsave.disabled = true;
  666. }
  667. /*
  668. else{
  669. btn_24hourscertsave.disabled = false;
  670. btn_24hoursnursitem.disabled = false;
  671. btn_EtrlInpt.disabled = false;
  672. btn_cdisopen.disabled = false;
  673. }
  674. */
  675. }
  676. /**
  677. * @group :
  678. * @ver : 2009.12.15
  679. * @by : 양천덕
  680. * @---------------------------------------------------
  681. * @type : function
  682. * @access : public
  683. * @desc : 이전/이후 날짜 Setting
  684. * @param :
  685. * @return :
  686. * @---------------------------------------------------
  687. */
  688. function fCalcDate(pFlag, pVWFlag, pTerm){
  689. var sRecDT = model.getValue(sCondPath+"/recdd")+model.getValue(sCondPath+"/rectm");
  690. switch(pVWFlag){
  691. case "24hours" :
  692. var sTime = eval(model.getValue(sCondPath+"/timeflag")) * pTerm;
  693. sRecDT = sRecDT.toDate("YYYYMMDDhhmmss");
  694. if(pFlag == "-"){
  695. sRecDT.setMinutes(sRecDT.getMinutes() - sTime);
  696. }else{
  697. sRecDT.getAddDate(sTime, "m");
  698. }
  699. model.setValue(sCondPath+"/recdd",getDateTime(sRecDT,'기본').substr(0,8));
  700. model.setValue(sCondPath+"/rectm",getDateTime(sRecDT,'기본').substr(8,6));
  701. break;
  702. case "4days" :
  703. model.setValue(sCondPath+"/recdd",getDateCalc(model.getValue(sCondPath+"/recdd"),4,pFlag));
  704. break;
  705. }
  706. fSearchClincObsRec(pVWFlag);
  707. }
  708. /**
  709. * @group :
  710. * @ver : 2009.12.15
  711. * @by : 양천덕
  712. * @---------------------------------------------------
  713. * @type : function
  714. * @access : public
  715. * @desc : 화면 전환
  716. * @param :
  717. * @return :
  718. * @---------------------------------------------------
  719. */
  720. function fChageView(pFlag){
  721. model.setValue(sCondPath+"/vwctrl_button", pFlag);
  722. switch(pFlag){
  723. case "24hours" :
  724. //model.toggle("case_24hoursstnd");
  725. //chk_24hoursclslist.visible = true;
  726. //chk_supitemcd.visible = false;
  727. model.setValue(sCondPath+"/hourschartinfo","1 2 3 4 5");
  728. //model.setValue(sCondPath+"/daycountinfo", "1 2 3 4 5 6");
  729. break;
  730. }
  731. fControlGridSize(pFlag);
  732. //fSearchClincObsRec();
  733. }
  734. /**
  735. * @group :
  736. * @ver : 2009.12.15
  737. * @by : 양천덕
  738. * @---------------------------------------------------
  739. * @type : function
  740. * @access : public
  741. * @desc : 시작일자 계산, FlowSheet 화면 보는 단위가 1분이 아닐경우에는 분을 0분으로 맞춰서 리턴함.
  742. * @param :
  743. * @return :
  744. * @---------------------------------------------------
  745. */
  746. function fCalcStartDate(pDate, pTimeFlag){
  747. var sStartDT = pDate.toDate("YYYYMMDDhhmmss");
  748. var sTime = "";
  749. var sRemainder = 0;
  750. if(pTimeFlag != 1 ){
  751. sRemainder = eval(pDate.substr(10,2))%pTimeFlag;
  752. }
  753. sStartDT.setMinutes(sStartDT.getMinutes()-sRemainder);
  754. return sStartDT;
  755. }
  756. /**
  757. * @group :
  758. * @ver : 2009.12.15
  759. * @by : 양천덕
  760. * @---------------------------------------------------
  761. * @type : function
  762. * @access : public
  763. * @desc : 그리드 크기 조절(Graph Off/ Graph On)
  764. * @param :
  765. * @return :
  766. * @---------------------------------------------------
  767. */
  768. function fControlGridSize(pFlag){
  769. switch(pFlag){
  770. case "24hours" : // 24시간 화면
  771. if(model.getValue(sCondPath+"/vwctrl_24hours") == "A"){ // Graph Off
  772. btn_24hoursvwctrl.value = "차트보기";
  773. model.setValue(sCondPath+"/vwctrl_24hours","I");
  774. document.all.item("obj_24hourschart").visible = false;
  775. document.all.item("obj_24hourschart").refresh();
  776. //grd_24hoursheader.visible = false;
  777. btn_24hoursup.visible = false;
  778. btn_24hoursdown.visible = false;
  779. //그래프 체크박스 숨김,보임 설정
  780. grp_chkbox.visible = false;
  781. chk_hourschartinfo.visible = false;
  782. //chk_dayschartinfo.visible = false;
  783. line2.attribute("y1") = 0;
  784. line2.attribute("y2") = 0;
  785. grd_24hoursclincobsreclist.attribute("top") = 4;
  786. grd_24hoursclincobsreclist.attribute("height") = 662;
  787. btn_24hoursdetailbefore.attribute("top") = 6;
  788. btn_24hoursdetailafter.attribute("top") = 6;
  789. }else{
  790. btn_24hoursvwctrl.value = "차트닫기";
  791. model.setValue(sCondPath+"/vwctrl_24hours","A");
  792. document.all.item("obj_24hourschart").visible = true;
  793. document.all.item("obj_24hourschart").refresh();
  794. //grd_24hoursheader.visible = true;
  795. btn_24hoursup.visible = true;
  796. btn_24hoursdown.visible = true;
  797. //그래프 체크박스 숨김,보임 설정
  798. grp_chkbox.visible = true;
  799. chk_hourschartinfo.visible = true;
  800. //chk_dayschartinfo.visible = false;
  801. line2.attribute("y1") = 224;
  802. line2.attribute("y2") = 224;
  803. grd_24hoursclincobsreclist.attribute("top") = 228;
  804. grd_24hoursclincobsreclist.attribute("height") = 429;
  805. btn_24hoursdetailbefore.attribute("top") = 231;
  806. btn_24hoursdetailafter.attribute("top") = 231;
  807. }
  808. btn_24hoursvwctrl.refresh();
  809. //fCreateHeader(pFlag);
  810. setTree(grd_24hoursclincobsreclist,31,0,false);
  811. break;
  812. }
  813. }
  814. /**
  815. * @group :
  816. * @ver : 2009.12.15
  817. * @by : 양천덕
  818. * @---------------------------------------------------
  819. * @type : function
  820. * @access : public
  821. * @desc : 차트 생성
  822. * @param :
  823. * @return :
  824. * @---------------------------------------------------
  825. */
  826. function fMakeChart(pFlag){
  827. var Obj_Chart;
  828. var sColCnt = 0;
  829. var sRecRslt = "";
  830. var sRecRslt1 = "";
  831. var sChartInfo = "";
  832. var sRecDD = "";
  833. var sRecTM = "";
  834. var sRecRsltArr = new Array();
  835. var sRecRslt1Arr = new Array();
  836. var iArrSize = 0;
  837. var iChartPos = 0;
  838. var idx=0;
  839. if(pFlag == "24hours" || pFlag == "4days"){
  840. //2008-05-19 추가
  841. for(var i = 1 ; i <= getNodesetCount(xClincObsRecListPath) ; i++){
  842. if(model.getValue(xClincObsRecListPath +"["+ i +"]/leftaxis") == "1" ){
  843. sChartItem[0] = model.getValue(xClincObsRecListPath +"["+ i +"]/itemcd");
  844. }else if(model.getValue(xClincObsRecListPath +"["+ i +"]/leftaxis") == "2"){
  845. sChartItem[1] = model.getValue(xClincObsRecListPath +"["+ i +"]/itemcd");
  846. }else if(model.getValue(xClincObsRecListPath +"["+ i +"]/leftaxis") == "3" && model.getValue(xClincObsRecListPath +"["+ i +"]/graphappyn")=="Y" ){
  847. sChartItem[2] = model.getValue(xClincObsRecListPath +"["+ i +"]/itemcd");
  848. }else if(model.getValue(xClincObsRecListPath +"["+ i +"]/leftaxis") == "4" && model.getValue(xClincObsRecListPath +"["+ i +"]/graphappyn")=="Y" ){
  849. sChartItem[3] = model.getValue(xClincObsRecListPath +"["+ i +"]/itemcd");
  850. }else if(model.getValue(xClincObsRecListPath +"["+ i +"]/leftaxis") == "5" && model.getValue(xClincObsRecListPath +"["+ i +"]/graphappyn")=="Y" ){
  851. sChartItem[4] = model.getValue(xClincObsRecListPath +"["+ i +"]/itemcd");
  852. }else if(model.getValue(xClincObsRecListPath +"["+ i +"]/leftaxis") == "6" && model.getValue(xClincObsRecListPath +"["+ i +"]/graphappyn")=="Y" ){
  853. sChartItem[5] = model.getValue(xClincObsRecListPath +"["+ i +"]/itemcd");
  854. }
  855. }
  856. }else{
  857. sChartItem[0] = "99999999"; // 혈압(low)
  858. sChartItem[1] = "99999999"; // 혈압(high)
  859. sChartItem[2] = "99999999"; // 맥박
  860. sChartItem[3] = "99999999"; // 호흡
  861. sChartItem[4] = "99999999"; // 체온
  862. sChartItem[5] = "99999999"; // BP(M)
  863. }
  864. if(pFlag == "24hours" || pFlag == "init24hours" ){
  865. obj_24hourschart.ClearChart();
  866. sChartInfo = model.getValue(sCondPath+"/hourschartinfo").split(" ");
  867. //obj_24hourschart.RemoveAllSeries();
  868. //obj_24hourschart.Axis.RemoveAllCustom();
  869. //margin 값 정하기
  870. //obj_24hourschart.Panel.MarginTop = 1;
  871. obj_24hourschart.Panel.MarginTop = 3;
  872. obj_24hourschart.Panel.MarginLeft = 10;
  873. obj_24hourschart.Panel.MarginRight = 0;
  874. obj_24hourschart.Panel.MarginBottom = -1;
  875. //하단축 칸 수 정하기와 눈금 없애기
  876. obj_24hourschart.Axis.Bottom.Automatic = false; //하단축 자동 설정(기본값)
  877. obj_24hourschart.Axis.Bottom.Labels.Visible = true; //하단축 Label 설정
  878. obj_24hourschart.Axis.Bottom.Labels.multiline = true; //하단축 Label 2줄 설정
  879. obj_24hourschart.Axis.Bottom.Labels.Font.Size = 1; //하단축 Label 폰트 사이즈 조절
  880. //obj_24hourschart.Axis.Bottom.SetMinMax (0, 24); //하단축 최소, 최대 길이 설정
  881. obj_24hourschart.Axis.Bottom.Minimum = 0;
  882. obj_24hourschart.Axis.Bottom.Maximum = 24.1;
  883. obj_24hourschart.Axis.Bottom.Increment = 1; //하단축 증가값 설정
  884. obj_24hourschart.Axis.Bottom.MinorTickCount = 0; //하단축 눈금 갯수 설정
  885. obj_24hourschart.Axis.Bottom.TicksInner.visible = true; //하단축 눈금 안쪽 표시 설정
  886. Obj_Chart = obj_24hourschart;
  887. sColCnt = 24;
  888. }
  889. Obj_Chart.Axis.Bottom.AxisPen.Visible = false ;
  890. Obj_Chart.Axis.Bottom.AxisPen.Color = 0x000000;
  891. Obj_Chart.Axis.Bottom.Labels.Font.Color = 0x000000; //하단 축 눈금 명칭 색을 바탕색으로 하여 보이지 않게 처리
  892. Obj_Chart.Panel.BevelWidth = 0; // 주위 테두리 넓이 0으로 설정
  893. Obj_Chart.Header.Visible = false; // Graph Header 정보 사용 여부
  894. Obj_Chart.Aspect.View3D = false; // 2d 로 표현하기
  895. Obj_Chart.Zoom.Enable = true; // zoom 사용하지 않기 (마우스 하단으로 드래그 zoomin, 마우스 상단으로 드래그 zoomout)
  896. Obj_Chart.Scroll.Enable = true; // scroll 사용하지 않기
  897. Obj_Chart.Legend.Visible = false; // 그래프 참조 박스 띄우지 않기
  898. Obj_Chart.Tools.Add(8); // 그래프 Hint 설정
  899. Obj_Chart.Panel.Gradient.Visible = true; // 페널에 그라디언트 적용
  900. Obj_Chart.Panel.Gradient.StartColor = 0xffffff; // 그라디언트 시작색깔
  901. Obj_Chart.Panel.Gradient.EndColor = 0xffffff; // 그라디언트 종료색깔
  902. Obj_Chart.Environment.MouseWheelScroll = true; // Graph 마우스 휠 사용 여부
  903. // 혈압을 나타내는 막대그래프를 먼저 그려야 맥박, 체온,호흡 점이 막대 그래프에 가려지지 않는다.
  904. // 20130106_dark9258_이해확인을 위한 주석 추가.
  905. // 그래프의 좌측에 그래프 선색깔 각각별로의 축을 그린다.(축에 대한 정보를 그린다.)
  906. // 현재는 3가지의 축을 그린다.( (혈압,맥박), (호흡), (체온)에 대한 축을 그린다.
  907. // 3가지 종류만 그린이유는 그래프에 들어갈 값의 범위별로 Axis.Custom객체를 추가하였다..
  908. //스크롤없이 처음 한화면에 보이는 범위이다.
  909. // 혈압 및 맥박의 범위는 20~200, 증가는 20단위..
  910. // 호흡의 범위는 0~90
  911. var cus_axis1 = Obj_Chart.Axis.AddCustom(false); // 혈압축
  912. Obj_Chart.Axis.Custom(0).AxisPen.Color = 0x0000ff;
  913. //Obj_Chart.Axis.Custom(0).Title.Caption = "혈압/맥박"
  914. Obj_Chart.Axis.Custom(0).Title.Font.Size = 8;
  915. Obj_Chart.Axis.Custom(0).Title.Font.Bold = true;
  916. Obj_Chart.Axis.Custom(0).Title.Angle = 90;
  917. Obj_Chart.Axis.Custom(0).PositionPercent = -1;
  918. Obj_Chart.Axis.Custom(0).StartPosition = 0;
  919. Obj_Chart.Axis.Custom(0).EndPosition = 100;
  920. Obj_Chart.Axis.Custom(0).Automatic = false;
  921. Obj_Chart.Axis.Custom(0).Maximum = 200;
  922. Obj_Chart.Axis.Custom(0).Minimum = 20;
  923. Obj_Chart.Axis.Custom(0).Increment = 20;
  924. var cus_axis2 = Obj_Chart.Axis.AddCustom(false); // 호흡축
  925. Obj_Chart.Axis.Custom(1).AxisPen.Color = 0x00ff00;
  926. //Obj_Chart.Axis.Custom(1).Title.Caption = "호흡";
  927. Obj_Chart.Axis.Custom(1).Title.Font.Size = 8;
  928. Obj_Chart.Axis.Custom(1).Title.Font.Bold = true;
  929. Obj_Chart.Axis.Custom(1).Title.Angle = 90;
  930. Obj_Chart.Axis.Custom(1).PositionPercent = -9;
  931. Obj_Chart.Axis.Custom(1).Automatic = false;
  932. Obj_Chart.Axis.Custom(1).Maximum = 90;
  933. Obj_Chart.Axis.Custom(1).Minimum = 0;
  934. Obj_Chart.Axis.Custom(1).Increment = 10;
  935. var cus_axis3 = Obj_Chart.Axis.AddCustom(false); // 체온축
  936. Obj_Chart.Axis.Custom(2).AxisPen.Color = 0xff0000;
  937. //Obj_Chart.Axis.Custom(2).Title.Caption = "체온";
  938. Obj_Chart.Axis.Custom(2).Title.Font.Size = 8;
  939. Obj_Chart.Axis.Custom(2).Title.Font.Bold = true;
  940. Obj_Chart.Axis.Custom(2).Title.Angle = 90;
  941. Obj_Chart.Axis.Custom(2).PositionPercent = -5;
  942. Obj_Chart.Axis.Custom(2).Automatic = false;
  943. Obj_Chart.Axis.Custom(2).Maximum = 40.0;
  944. Obj_Chart.Axis.Custom(2).Minimum = 35.5;
  945. Obj_Chart.Axis.Custom(2).Increment = 0.5;
  946. //Custom 차트의 종류를 추가한다.(Series는 chart종류를 의미한다.
  947. //AddSeries(0)은 Line Series를 의미한다.
  948. //AddSeries(11)은 caldle
  949. // 37 horizon line
  950. Obj_Chart.AddSeries (0); //38도선
  951. Obj_Chart.Series(0).VerticalAxisCustom = cus_axis3; //38도선
  952. Obj_Chart.Series(0).asLine.LinePen.Width = 2; //라인의 굵기를 정함, 그래프 라인굵기
  953. Obj_Chart.Series(0).Color = 0xffcc00; //진한하늘색 38도선 그래프 라인 색깔.
  954. Obj_Chart.Series(0).Depth = 1;
  955. Obj_Chart.Series(0).AddXY (-5, 38, "", Obj_Chart.Series(0).Color );
  956. Obj_Chart.Series(0).AddXY (70, 38, "", Obj_Chart.Series(0).Color );
  957. Obj_Chart.AddSeries (11); // OP
  958. Obj_Chart.Series(1).VerticalAxisCustom = cus_axis1; // OP
  959. Obj_Chart.Series(1).asCandle.CandleStyle = 2;
  960. Obj_Chart.Series(1).asCandle.CandleWidth = 2;
  961. Obj_Chart.Series(1).Color = 0x0000ff; //red OP
  962. Obj_Chart.Series(1).Depth = 1;
  963. Obj_Chart.AddSeries (11); // 혈압
  964. Obj_Chart.Series(2).VerticalAxisCustom = cus_axis1; // 혈압
  965. Obj_Chart.Series(2).asCandle.CandleStyle = 2; //1:2:선 0:안보임
  966. Obj_Chart.Series(2).asCandle.CandleWidth = 6; //세로막대표시 선 굵기.
  967. Obj_Chart.Series(2).Color = 0x000000; //black 혈압
  968. Obj_Chart.Series(2).Depth = 1;
  969. Obj_Chart.AddSeries (0); //맥박
  970. Obj_Chart.Series(3).VerticalAxisCustom = cus_axis1;//맥박
  971. Obj_Chart.Series(3).asLine.LinePen.Width = 2;
  972. Obj_Chart.Series(3).Color = 0x0000ff; //red
  973. Obj_Chart.Series(3).asLine.Pointer.Visible = true; //맥박 Pointer 설정
  974. Obj_Chart.Series(3).asLine.Pointer.Style = 1;
  975. Obj_Chart.Series(3).asLine.Pointer.VerticalSize = 3;
  976. Obj_Chart.Series(3).asLine.Pointer.HorizontalSize = 3;
  977. Obj_Chart.Series(3).Depth = 1;
  978. Obj_Chart.AddSeries (0); // 호흡
  979. Obj_Chart.Series(4).VerticalAxisCustom = cus_axis2; // 호흡
  980. Obj_Chart.Series(4).asLine.LinePen.Width = 2;
  981. Obj_Chart.Series(4).Color = 0x00ff00; //green 호흡
  982. Obj_Chart.Series(4).asLine.Pointer.Visible = true;
  983. Obj_Chart.Series(4).asLine.Pointer.Style = 0;
  984. Obj_Chart.Series(4).asLine.Pointer.VerticalSize = 2;
  985. Obj_Chart.Series(4).asLine.Pointer.HorizontalSize = 2;
  986. Obj_Chart.Series(4).Depth = 1;
  987. Obj_Chart.AddSeries (0); // 체온
  988. Obj_Chart.Series(5).VerticalAxisCustom = cus_axis3; // 체온
  989. Obj_Chart.Series(5).asLine.LinePen.Width = 2;
  990. Obj_Chart.Series(5).Color = 0xff0000; //blue 체온
  991. Obj_Chart.Series(5).asLine.Pointer.Visible = true;
  992. Obj_Chart.Series(5).asLine.Pointer.Pen.color = 0xff0000;
  993. Obj_Chart.Series(5).asLine.Pointer.Pen.width = 2;
  994. Obj_Chart.Series(5).asLine.Pointer.Style = 2; //점표시
  995. Obj_Chart.Series(5).asLine.Pointer.VerticalSize = 2; //
  996. Obj_Chart.Series(5).asLine.Pointer.HorizontalSize = 2; //
  997. Obj_Chart.Series(5).Depth = 3;
  998. //BP(M)
  999. Obj_Chart.AddSeries (0); //
  1000. Obj_Chart.Series(6).VerticalAxisCustom = cus_axis1; //
  1001. Obj_Chart.Series(6).asLine.LinePen.Width = 2; //
  1002. Obj_Chart.Series(6).asLine.LinePen.style = 2; //
  1003. Obj_Chart.Series(6).Color = 0x000000; //Line 색 Black
  1004. Obj_Chart.Series(6).asLine.Pointer.Visible = true; //Pointer 표시여부
  1005. Obj_Chart.Series(6).asLine.Pointer.Pen.color = 0x000000; //Pointer 색 Black
  1006. Obj_Chart.Series(6).asLine.Pointer.Pen.width = 2; //Pointer 선굵기 2
  1007. Obj_Chart.Series(6).asLine.Pointer.Style = 5; //점표시 모양이 X모양의 점이다.
  1008. Obj_Chart.Series(6).asLine.Pointer.VerticalSize = 8; //Pointer 세로너비
  1009. Obj_Chart.Series(6).asLine.Pointer.HorizontalSize = 2; //Pointer 가로너비
  1010. Obj_Chart.Series(6).Depth = 4;
  1011. //Obj_Chart.Series(?).asLine.Pointer.Style => 0:네모점 1:동그란점 2:세모 3:역삼각? 4:「모향 5:x 6:굵고진한X 7: 테두리없는점. 8:없음..
  1012. if(pFlag == "24hours" || pFlag == "4days"){
  1013. var sTime = model.getValue("/root/main/cond/timeflag");
  1014. iArrSize = model.getValue("/root/init/minlist/item[cd='"+sTime+"']/gap");
  1015. // 그래프 표시
  1016. /* emr.mnrdrcia테이블에 있는 leftaxis값에 대한 아이템값이 설정된다.
  1017. sChartItem[0] = leftaxis값이 1인것 SBP;
  1018. sChartItem[1] = leftaxis값이 2인것 DBP;
  1019. sChartItem[2] = leftaxis값이 3인것 맥박;
  1020. sChartItem[3] = leftaxis값이 4인것 호흡;
  1021. sChartItem[4] = leftaxis값이 5인것 체온;
  1022. sChartItem[5] = leftaxis값이 6인것 MBP;
  1023. }
  1024. */
  1025. for(var i=0; i<sChartInfo.length; i++){
  1026. if(sChartInfo[i] == "") continue;
  1027. sChartInfo[i] = eval(sChartInfo[i]); // 그래프 최좌측 1:혈압, 2:맥박, 3:호흡, 4:체온, 5:BP(M)
  1028. for(var iCol=1; iCol<=sColCnt; iCol++){
  1029. //막대그래프(혈압), Series(2)가 혈압이다.
  1030. if(sChartInfo[i] == 1){
  1031. Obj_Chart.Series(sChartInfo[i]+1).asCandle.UpCloseColor = 0xffffff; //혈압의경우 두점이 sbp가 dbp보다 작을경우는 검은색 sbp가 dbp보다 클경우는 빨간색
  1032. Obj_Chart.Series(sChartInfo[i]+1).asCandle.DownCloseColor = 0x0000ff;
  1033. if(pFlag == "24hours"){
  1034. //값들중에, SBP과 DBP의 값을 가져온다.
  1035. sRecRslt1 = model.getValue(xHoursClincObsRecList+"[itemcd='"+sChartItem[(sChartInfo[i]-1)]+"']/recrslt"+iCol); // SBP
  1036. sRecRslt = model.getValue(xHoursClincObsRecList+"[itemcd='"+sChartItem[sChartInfo[i]]+"']/recrslt"+iCol); // DBP
  1037. if(sRecRslt != "" && sRecRslt1 != "" && fIsNumber(sRecRslt) == true && fIsNumber(sRecRslt1) == true){
  1038. Obj_Chart.Series(sChartInfo[i]+1).asCandle.AddCandle (iCol-1, eval(sRecRslt), 0, 0, eval(sRecRslt1)); //Candle타입 그림그리기.
  1039. }
  1040. //30분모드거나 60분모드일 경우에는 10분별로 기록된 상세정보를 가져와서
  1041. //if( sTime == "30" || sTime == "60" ){
  1042. // sRecRslt1 = model.getValue(xIntervalRecYNListPath+"[itemcd='"+sChartItem[(sChartInfo[i]-1)]+"']/recrsltitvl"+iCol);
  1043. // sRecRslt = model.getValue(xIntervalRecYNListPath+"[itemcd='"+sChartItem[sChartInfo[i]]+"']/recrsltitvl"+iCol);
  1044. //
  1045. // sRecRslt1Arr = sRecRslt1.split(" ");
  1046. // sRecRsltArr = sRecRslt.split(" ");
  1047. //
  1048. // idx = 0;
  1049. //
  1050. // for( var arr = (sHeader[4][iCol]=="00" ? 0 : 3) ; arr < sRecRslt1Arr.length && arr < sRecRsltArr.length ; arr++ ){
  1051. // iChartPos = (iCol-1) + ( (1/iArrSize)*(idx+1) );
  1052. // idx++;
  1053. // if(sRecRslt1Arr[arr] != "0" && sRecRsltArr[arr] != "0" && fIsNumber(sRecRslt1Arr[arr].substr(14)) == true && fIsNumber(sRecRslt1Arr[arr].substr(14)) == true){
  1054. // Obj_Chart.Series(sChartInfo[i]+1).asCandle.AddCandle (iChartPos, eval(sRecRsltArr[arr].substr(14)), 0, 0, eval(sRecRslt1Arr[arr].substr(14)));
  1055. // }
  1056. // }
  1057. //}
  1058. }else{
  1059. sRecRslt1 = model.getValue(xDaysClincObsRecList+"[itemcd='"+sChartItem[(sChartInfo[i]-1)]+"']/recrslt"+iCol);
  1060. sRecRslt = model.getValue(xDaysClincObsRecList+"[itemcd='"+sChartItem[sChartInfo[i]]+"']/recrslt"+iCol);
  1061. if(sRecRslt != "" && sRecRslt1 != "" && fIsNumber(sRecRslt) == true && fIsNumber(sRecRslt1) == true){
  1062. Obj_Chart.Series(sChartInfo[i]+1).asCandle.AddCandle ((iCol/4)-0.25, eval(sRecRslt), 0, 0, eval(sRecRslt1));
  1063. }
  1064. }
  1065. }else{
  1066. if(pFlag == "24hours"){
  1067. sRecRslt = model.getValue(xHoursClincObsRecList+"[itemcd='"+sChartItem[sChartInfo[i]]+"']/recrslt"+iCol);
  1068. if(sRecRslt != "" && fIsNumber(sRecRslt) == true){
  1069. Obj_Chart.Series(sChartInfo[i]+1).AddXY (iCol-1, eval(sRecRslt), "", Obj_Chart.Series(sChartInfo[i]+1).Color);
  1070. }
  1071. //if ( sTime == "30" || sTime == "60" ){
  1072. // sRecRslt = model.getValue(xIntervalRecYNListPath+"[itemcd='"+sChartItem[sChartInfo[i]]+"']/recrsltitvl"+iCol);
  1073. //
  1074. // sRecRsltArr = sRecRslt.split(" ");
  1075. //
  1076. // idx = 0;
  1077. //
  1078. // for( var arr = (sHeader[4][iCol]=="00" ? 0 : 3) ; arr < sRecRsltArr.length ; arr++ ){
  1079. // iChartPos = (iCol-1) + ( (1/iArrSize)*(idx+1) );
  1080. // idx++;
  1081. // if(sRecRsltArr[arr] != "0" && fIsNumber(sRecRsltArr[arr].substr(14)) == true){
  1082. // Obj_Chart.Series(sChartInfo[i]+1).AddXY (iChartPos, eval(sRecRsltArr[arr].substr(14)), "", Obj_Chart.Series(sChartInfo[i]+1).Color);
  1083. // }
  1084. // }
  1085. //}
  1086. }else{
  1087. sRecRslt = model.getValue(xDaysClincObsRecList+"[itemcd='"+sChartItem[sChartInfo[i]]+"']/recrslt"+iCol);
  1088. if(sRecRslt != "" && fIsNumber(sRecRslt) == true){
  1089. Obj_Chart.Series(sChartInfo[i]+1).AddXY ((iCol/4)-0.25, eval(sRecRslt), "", Obj_Chart.Series(sChartInfo[i]+1).Color);
  1090. }
  1091. }
  1092. }
  1093. }
  1094. }
  1095. // 수술시간 표시
  1096. Obj_Chart.Series(1).asCandle.UpCloseColor = 0x0000ff;
  1097. Obj_Chart.Series(1).asCandle.DownCloseColor = 0x0000ff;
  1098. Obj_Chart.Series(1).Marks.visible = false;
  1099. var sX = 0;
  1100. var OPChartRow = 1; // 수술관련 Tools Itme은 위에 Hint Item이 존재하여 1부터 시작
  1101. var sOPX = 0;
  1102. for(var i=1; i<=sColCnt+1; i++){
  1103. if(i == 1 || sRecDD != sHeader[1][i]){
  1104. sRecDD = sHeader[1][i];
  1105. sRecTM = model.getValue(xDayCountListPath+"[recdd ='"+sRecDD+"']/optm");
  1106. //TEST 수술일자
  1107. //sRecDD = "20100315";
  1108. //sRecTM = "1240";
  1109. if(sRecTM == "") continue;
  1110. for(var iCol=1; iCol<=sColCnt+1; iCol++){
  1111. if((sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]) >= (sRecDD+sRecTM) &&
  1112. (sHeader[1][1]+sHeader[3][1]+sHeader[4][1]) <= (sRecDD+sRecTM)){
  1113. sOpPnt = "";
  1114. sOpPnt1 = 0;
  1115. if(model.getValue("/root/main/cond/vwctrl_button") == "24hours"){
  1116. sTimeFlag = model.getValue("/root/main/cond/timeflag");
  1117. if(sRecTM.substr(2,1) == "0"){
  1118. sOpPnt = eval(sRecTM.substr(3,1)) % eval(sTimeFlag) / eval(sTimeFlag);
  1119. }else{
  1120. sOpPnt = eval(sRecTM.substr(2,2)) % eval(sTimeFlag) / eval(sTimeFlag);
  1121. }
  1122. //나머지값이 1일 경우 +1을 해줌
  1123. if(eval(sRecTM.substr(2,2)) % eval(sTimeFlag) == 0){
  1124. sOpPnt = sOpPnt+1;
  1125. }
  1126. }else{
  1127. if(sRecTM.substr(2,1) == "0"){
  1128. sOpPnt1 = eval(sRecTM.substr(3,1));
  1129. }else{
  1130. sOpPnt1 = eval(sRecTM.substr(2,2));
  1131. }
  1132. if(iCol == 2 || iCol == 6 || iCol == 10 || iCol == 14 ){
  1133. if(sRecTM.substr(0,2) == "06"){
  1134. sOpPnt = (iCol - 2);
  1135. }else if(sRecTM.substr(0,2) == "07"){
  1136. sOpPnt = (iCol - 2) + 1 / 8 + sOpPnt1/60/8;
  1137. }else if(sRecTM.substr(0,2) == "08"){
  1138. sOpPnt = (iCol - 2) + 2 / 8 + sOpPnt1/60/8;
  1139. }else if(sRecTM.substr(0,2) == "09"){
  1140. sOpPnt = (iCol - 2) + 3 / 8 + sOpPnt1/60/8;
  1141. }else if(sRecTM.substr(0,2) == "10"){
  1142. sOpPnt = (iCol - 2) + 4 / 8 + sOpPnt1/60/8;
  1143. }else if(sRecTM.substr(0,2) == "11"){
  1144. sOpPnt = (iCol - 2) + 5 / 8 + sOpPnt1/60/8;
  1145. }else if(sRecTM.substr(0,2) == "12"){
  1146. sOpPnt = (iCol - 2) + 6 / 8 + sOpPnt1/60/8;
  1147. }else if(sRecTM.substr(0,2) == "13"){
  1148. sOpPnt = (iCol - 2) + 7 / 8 + sOpPnt1/60/8;
  1149. }else if(sRecTM.substr(0,2) == "14"){
  1150. sOpPnt = (iCol - 1);
  1151. }
  1152. }else if(iCol == 3 || iCol == 7 || iCol == 11 || iCol == 15 ){
  1153. if(sRecTM.substr(0,2) == "14"){
  1154. sOpPnt = (iCol - 2);
  1155. }else if(sRecTM.substr(0,2) == "15"){
  1156. sOpPnt = (iCol - 2) + 1/4 + sOpPnt1/60/4;
  1157. }else if(sRecTM.substr(0,2) == "16"){
  1158. sOpPnt = (iCol - 2) + 2/4 + sOpPnt1/60/4;
  1159. }else if(sRecTM.substr(0,2) == "17"){
  1160. sOpPnt = (iCol - 2) + 3/4 + sOpPnt1/60/4;
  1161. }else if(sRecTM.substr(0,2) == "18"){
  1162. sOpPnt = (iCol - 1);
  1163. }
  1164. }else if(iCol == 4 || iCol == 8 || iCol == 12 || iCol == 16 ){
  1165. if(sRecTM.substr(0,2) == "18"){
  1166. sOpPnt = (iCol - 2);
  1167. }else if(sRecTM.substr(0,2) == "19"){
  1168. sOpPnt = (iCol - 2) + 1/4 + sOpPnt1/60/4;
  1169. }else if(sRecTM.substr(0,2) == "20"){
  1170. sOpPnt = (iCol - 2) + 2/4 + sOpPnt1/60/4;
  1171. }else if(sRecTM.substr(0,2) == "21"){
  1172. sOpPnt = (iCol - 2) + 3/4 + sOpPnt1/60/4;
  1173. }else if(sRecTM.substr(0,2) == "22"){
  1174. sOpPnt = (iCol - 1);
  1175. }
  1176. }else if(iCol == 5 || iCol == 9 || iCol == 13 || iCol == 17 ){
  1177. if(sRecTM.substr(0,2) == "22"){
  1178. sOpPnt = (iCol - 2);
  1179. }else if(sRecTM.substr(0,2) == "23"){
  1180. sOpPnt = (iCol - 2) + 1 / 8 + sOpPnt1/60/8;
  1181. }else if(sRecTM.substr(0,2) == "00"){
  1182. sOpPnt = (iCol - 2) + 2 / 8 + sOpPnt1/60/8;
  1183. }else if(sRecTM.substr(0,2) == "01"){
  1184. sOpPnt = (iCol - 2) + 3 / 8 + sOpPnt1/60/8;
  1185. }else if(sRecTM.substr(0,2) == "02"){
  1186. sOpPnt = (iCol - 2) + 4 / 8 + sOpPnt1/60/8;
  1187. }else if(sRecTM.substr(0,2) == "03"){
  1188. sOpPnt = (iCol - 2) + 5 / 8 + sOpPnt1/60/8;
  1189. }else if(sRecTM.substr(0,2) == "04"){
  1190. sOpPnt = (iCol - 2) + 6 / 8 + sOpPnt1/60/8;
  1191. }else if(sRecTM.substr(0,2) == "05"){
  1192. sOpPnt = (iCol - 2) + 7 / 8 + sOpPnt1/60/8;
  1193. }else if(sRecTM.substr(0,2) == "06"){
  1194. sOpPnt = (iCol - 1);
  1195. }
  1196. }else{
  1197. sOpPnt = (iCol - 1);
  1198. }
  1199. }
  1200. if(pFlag == "24hours"){
  1201. sX = iCol-2+sOpPnt;
  1202. if(iCol < 2){
  1203. sOPX = 110 + ((iCol-1) * 41.3) // max = 950;
  1204. }else if(iCol < 25){
  1205. sOPX = 120 + ((iCol-2) * 41.3) // max = 950;
  1206. }else{
  1207. sOPX = 90 + ((iCol-2) * 41.3) // max = 950;
  1208. }
  1209. }else{
  1210. //sX = iCol/4-0.50;
  1211. sX = eval(sOpPnt)/4;
  1212. if(iCol < 2){
  1213. sOPX = 110 + ((iCol -1) * 63.2) // max = 950;
  1214. }else{
  1215. if(iCol == 17){
  1216. sOPX = 110 + ((iCol-2) * 63.2);// max = 950;
  1217. }else{
  1218. sOPX = 110 + ((iCol-2) * 63.2) + 16/iCol * 10 // max = 950;
  1219. }
  1220. }
  1221. }
  1222. Obj_Chart.Series(1).asCandle.AddCandle (sX, 0, 0, 0, 170);
  1223. Obj_Chart.Tools.Add(10);
  1224. Obj_Chart.Tools.Items(OPChartRow).Active = true;
  1225. Obj_Chart.Tools.Items(OPChartRow).asAnnotation.Shape.Top= 8;
  1226. Obj_Chart.Tools.Items(OPChartRow).asAnnotation.Shape.Left= sOPX;
  1227. Obj_Chart.Tools.Items(OPChartRow).asAnnotation.Text = "OP "+ sRecTM.substr(0,2)+":"+sRecTM.substr(2,2);
  1228. OPChartRow++;
  1229. break;
  1230. }
  1231. }
  1232. }
  1233. }
  1234. }
  1235. }
  1236. /**
  1237. * @group :
  1238. * @ver : 2009.12.15
  1239. * @by : 양천덕
  1240. * @---------------------------------------------------
  1241. * @type : function
  1242. * @access : public
  1243. * @desc :
  1244. * sHeaderFlag = 'A' : 화면설정에서 헤더정보설정이 일자/시간/분일경우
  1245. * 일자
  1246. * HD: /POD: / ICU: / CP:
  1247. * 06시 07시 08시 09시 10시
  1248. * 00분 00분 00분 00분 00분
  1249. *
  1250. * sHeaderFlag = 'D' : 화면설정에서 헤더정보설정이 시간/분일 경우
  1251. * 06시 07시 08시 09시 10시
  1252. * 00분 00분 00분 00분 00분
  1253. *
  1254. * sHeaderFlag = '' : 화면설정에서 헤더정보설정이 시간/분일 경우
  1255. * 06:00 07:00 08:00 09:00 10:00 11:00
  1256. *
  1257. * 형식으로 그리드 Caption을 Setting한다.
  1258. * @param :
  1259. * @return :
  1260. * @---------------------------------------------------
  1261. */
  1262. function fCreateHeader(pFlag){
  1263. var sRecDT = "";
  1264. //var sChartCapNm = "";
  1265. var sGridCapNm = "";
  1266. var sTimeFlag = 0;
  1267. var sCDay = new Array();
  1268. var sDayInfo = "";
  1269. var iDayRow = 0;
  1270. var sDayCountInfo = "";
  1271. var sDateList = "";
  1272. sHeader[1] = new Array();
  1273. sHeader[2] = new Array();
  1274. sHeader[3] = new Array();
  1275. sHeader[4] = new Array();
  1276. sHeader[1][0] = "날 짜";
  1277. sHeader[2][0] = "Day count";
  1278. sHeader[3][0] = "시 간";
  1279. sHeader[4][0] = "분";
  1280. model.removenode("/root/send");
  1281. model.makeValue("/root/send/pid", sPid);
  1282. model.makeValue("/root/send/indd", sIndd);
  1283. model.makeValue("/root/send/cretno", sCretNo);
  1284. model.makeValue("/root/send/instcd", sInstcd);
  1285. model.makeValue("/root/send/ioflag", sIOFlag);
  1286. model.makeValue("/root/send/dayinfo", ipt_24hoursrecdd.value);
  1287. //현재 시점의 환자 기본 정보 조회
  1288. submit("TRMNR10102");
  1289. fControlPatInfo();
  1290. switch(pFlag){
  1291. case "24hours" :
  1292. //그리드 스타일 초기화
  1293. grd_24hoursclincobsreclist.rebuildStyle();
  1294. /*
  1295. 화면 초기화될시에 화면설정정보시간이 rectm에 셋팅되므로, 0600가 기본이다.
  1296. 결국 처음 FlowSheet조회할 경우에는 그날의 0600부터 다음날 05시까지가 기본으로
  1297. Setting되어져서 보여지게 된다.
  1298. */
  1299. sTimeFlag = eval(model.getValue(sCondPath+"/timeflag"));
  1300. sRecDT = model.getValue(sCondPath+"/recdd")+model.getValue(sCondPath+"/rectm");
  1301. var sStartDT = fCalcStartDate(sRecDT,sTimeFlag);
  1302. var sTime = 0;
  1303. //Header[1]은 날짜정보
  1304. //Header[2]는 HD, ICUD정보들.
  1305. //Header[3]는 시간정보들.
  1306. //Header[4]는 분정보들.
  1307. //첫조회시, sHeader[1][1] = '20130318'; sHeader[3][1] = '06' sHeader[4][1] = '00'의 값이 들어간다.
  1308. for(var i=1; i<=25; i++){
  1309. if(i>1){
  1310. sStartDT = sStartDT.getAddDate(sTimeFlag,"m"); //시간을 더해서 셋팅한다.(60분일 경우는 60분씩 더한다.)
  1311. }
  1312. sHeader[1][i] = getDateTime(sStartDT,'기본').substr(0,8); //일자를 더한다.
  1313. if(iDayRow == 0 || sCDay[iDayRow-1] != sHeader[1][i]){
  1314. sCDay[iDayRow] = sHeader[1][i];
  1315. iDayRow++;
  1316. }
  1317. sHeader[3][i] = getDateTime(sStartDT,'기본').substr(8,2);
  1318. sHeader[4][i] = getDateTime(sStartDT,'기본').substr(10,2);
  1319. }
  1320. for(var i=0; i<sCDay.length;i++){
  1321. sDayInfo += sCDay[i];
  1322. if(i != sCDay.length-1){
  1323. sDayInfo += ",";
  1324. }
  1325. }
  1326. if(sDayCountCnt > 0){
  1327. model.makeValue("/root/send/dayinfo",sDayInfo);
  1328. if(submit("TRMNR00903", false)){ // 2008-07-09
  1329. sDayCountInfo = model.getValue(sCondPath+"/daycountinfo").split(" ");
  1330. for(var i=1; i<=24; i++){
  1331. sHeader[2][i] = "";
  1332. if(sHdayUseYn == "Y"){
  1333. if(sHeader[2][i] != "") sHeader[2][i] += "/";
  1334. sHeader[2][i] += "HD:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/hd");
  1335. }
  1336. if(sPodUseYn == "Y"){
  1337. if(sHeader[2][i] != "") sHeader[2][i] += "/";
  1338. sHeader[2][i] += "POD:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/pod");
  1339. }
  1340. if(sIcuDayUseYn == "Y"){
  1341. if(sHeader[2][i] != "") sHeader[2][i] += "/";
  1342. sHeader[2][i] += "ICU:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/icu");
  1343. }
  1344. if(sAntiDayUseYn == "Y"){
  1345. if(sHeader[2][i] != "") sHeader[2][i] += "/";
  1346. sHeader[2][i] += "D:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/d");
  1347. }
  1348. if(sBmtUseYn == "Y"){
  1349. if(sHeader[2][i] != "") sHeader[2][i] += "/";
  1350. sHeader[2][i] += "BMT:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/bmt");
  1351. }
  1352. if(sCpDayUseYn == "Y"){
  1353. if(sHeader[2][i] != "") sHeader[2][i] += "/";
  1354. sHeader[2][i] += "CP:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/cp");
  1355. }
  1356. }
  1357. }
  1358. }
  1359. //환경 설정 정보를 이용하여 그리드 Caption Control
  1360. /*
  1361. sHeaderFlag = 'A' : 화면설정에서 헤더정보설정이 일자/시간/분일경우
  1362. 일자
  1363. HD: /POD: / ICU: / CP:
  1364. 06시 07시 08시 09시 10시
  1365. 00분 00분 00분 00분 00분
  1366. sHeaderFlag = 'D' : 화면설정에서 헤더정보설정이 시간/분일 경우
  1367. 06시 07시 08시 09시 10시
  1368. 00분 00분 00분 00분 00분
  1369. sHeaderFlag = '' : 화면설정에서 헤더정보설정이 시간/분일 경우
  1370. 06:00 07:00 08:00 09:00 10:00 11:00
  1371. 형식으로 그리드 Caption을 Setting한다.
  1372. */
  1373. if(sHeaderFlag == "A"){
  1374. for(var iRow=1; iRow<=4; iRow++){
  1375. if(iRow == 2 && sDayCountCnt == 0 ) continue;
  1376. for(var iCol=0; iCol<=24; iCol++){
  1377. if(iRow == 1){
  1378. if(iCol == 0){
  1379. sGridCapNm += sHeader[iRow][iCol]; // 년월일
  1380. }else{
  1381. sGridCapNm += sHeader[iRow][iCol].toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일")+
  1382. " ("+sHeader[iRow][iCol].toDate("YYYYMMDD").getDayOfWeek("k")+")";
  1383. }
  1384. }else if(iRow == 2){ // day count
  1385. sGridCapNm += sHeader[iRow][iCol];
  1386. }else if(iRow == 3){ // 시
  1387. sGridCapNm += sHeader[iRow][iCol];
  1388. if(iCol != 0){
  1389. sGridCapNm += "시";
  1390. }
  1391. }else if(iRow == 4){ // 분
  1392. sGridCapNm += sHeader[iRow][iCol];
  1393. if(iCol != 0){
  1394. sGridCapNm += "분";
  1395. }
  1396. }
  1397. if(iCol != 24){
  1398. sGridCapNm += "^";
  1399. }
  1400. }
  1401. if(iRow != 4){
  1402. sGridCapNm += "|";
  1403. }
  1404. }
  1405. }else if(sHeaderFlag == "D"){
  1406. for(var iRow=1; iRow<=4; iRow++){
  1407. if(iRow == 1 || iRow == 2 ) continue;
  1408. for(var iCol=0; iCol<=24; iCol++){
  1409. if(iRow == 3){ // 시
  1410. sGridCapNm += sHeader[iRow][iCol];
  1411. if(iCol != 0){
  1412. sGridCapNm += "시";
  1413. }
  1414. }else if(iRow == 4){ // 분
  1415. sGridCapNm += sHeader[iRow][iCol];
  1416. if(iCol != 0){
  1417. sGridCapNm += "분";
  1418. }
  1419. }
  1420. if(iCol != 24){
  1421. sGridCapNm += "^";
  1422. }
  1423. }
  1424. if(iRow != 4){
  1425. sGridCapNm += "|";
  1426. }
  1427. }
  1428. }else{
  1429. for(var iCol=0; iCol<=24; iCol++){
  1430. //24시간 화면 Caption 설정
  1431. if(iCol != 0){
  1432. sGridCapNm += sHeader[3][iCol] + ":" + sHeader[4][iCol];
  1433. }else{
  1434. sGridCapNm += sHeader[3][iCol];
  1435. }
  1436. if(iCol != 24){
  1437. sGridCapNm += "^";
  1438. }
  1439. }
  1440. }
  1441. grd_24hoursclincobsreclist.caption = sGridCapNm;
  1442. break;
  1443. }
  1444. }
  1445. /**
  1446. * @group :
  1447. * @ver : 2009.12.15
  1448. * @by : 양천덕
  1449. * @---------------------------------------------------
  1450. * @type : function
  1451. * @access : public
  1452. * @desc : 차트 Down
  1453. * @param :
  1454. * @return :
  1455. * @---------------------------------------------------
  1456. */
  1457. function fControlChartDown(pFlag){
  1458. var sObj_Chart;
  1459. switch(pFlag){
  1460. case "24hours" :
  1461. sObj_Chart = obj_24hourschart;
  1462. break;
  1463. case "4days" :
  1464. sObj_Chart = obj_4dayschart;
  1465. break;
  1466. }
  1467. sObj_Chart.Axis.Custom(0).Maximum = sObj_Chart.Axis.Custom(0).Maximum-20;
  1468. sObj_Chart.Axis.Custom(0).Minimum = sObj_Chart.Axis.Custom(0).Minimum-20;
  1469. sObj_Chart.Axis.Custom(1).Maximum = sObj_Chart.Axis.Custom(1).Maximum-10;
  1470. sObj_Chart.Axis.Custom(1).Minimum = sObj_Chart.Axis.Custom(1).Minimum-10;
  1471. sObj_Chart.Axis.Custom(2).Maximum = sObj_Chart.Axis.Custom(2).Maximum-1;
  1472. sObj_Chart.Axis.Custom(2).Minimum = sObj_Chart.Axis.Custom(2).Minimum-1;
  1473. for(var i=0; i < sObj_Chart.Tools.Count-1; i++){
  1474. sObj_Chart.Tools.Items(i).asAnnotation.Shape.Top= sObj_Chart.Tools.Items(i).asAnnotation.Shape.Top - 20;
  1475. }
  1476. }
  1477. /**
  1478. * @group :
  1479. * @ver : 2009.12.15
  1480. * @by : 양천덕
  1481. * @---------------------------------------------------
  1482. * @type : function
  1483. * @access : public
  1484. * @desc : 차트 Up
  1485. * @param :
  1486. * @return :
  1487. * @---------------------------------------------------
  1488. */
  1489. function fControlChartUp(pFlag){
  1490. var sObj_Chart;
  1491. switch(pFlag){
  1492. case "24hours" :
  1493. sObj_Chart = obj_24hourschart;
  1494. break;
  1495. case "4days" :
  1496. sObj_Chart = obj_4dayschart;
  1497. break;
  1498. }
  1499. sObj_Chart.Axis.Custom(0).Maximum = sObj_Chart.Axis.Custom(0).Maximum+20; // 맥박
  1500. sObj_Chart.Axis.Custom(0).Minimum = sObj_Chart.Axis.Custom(0).Minimum+20;
  1501. sObj_Chart.Axis.Custom(1).Maximum = sObj_Chart.Axis.Custom(1).Maximum+10;
  1502. sObj_Chart.Axis.Custom(1).Minimum = sObj_Chart.Axis.Custom(1).Minimum+10;
  1503. sObj_Chart.Axis.Custom(2).Maximum = sObj_Chart.Axis.Custom(2).Maximum+1;
  1504. sObj_Chart.Axis.Custom(2).Minimum = sObj_Chart.Axis.Custom(2).Minimum+1;
  1505. for(var i=0; i < sObj_Chart.Tools.Count-1; i++){
  1506. sObj_Chart.Tools.Items(i).asAnnotation.Shape.Top= sObj_Chart.Tools.Items(i).asAnnotation.Shape.Top + 10;
  1507. }
  1508. }
  1509. /**
  1510. * @group :
  1511. * @ver : 2009.12.15
  1512. * @by : 양천덕
  1513. * @---------------------------------------------------
  1514. * @type : function
  1515. * @access : public
  1516. * @desc : FlowSheet 기록 조회
  1517. * @param :
  1518. * @return :
  1519. * @---------------------------------------------------
  1520. */
  1521. function fSearchClincObsRec(pClsFlag){
  1522. sFluidSumInfo = new Array();
  1523. if(model.getValue("/root/main/patinfo/pid") == ""){
  1524. messageBox("환자를 선택하십시요","I");
  1525. return;
  1526. }
  1527. var sStrTime = "";
  1528. var sRecCnt = 0;
  1529. var sItemCD = "";
  1530. var sItemSeqNo = "";
  1531. var pFlag = model.getValue(sCondPath+"/vwctrl_button");
  1532. var sTimeFlag = model.getValue(sCondPath+"/timeflag");
  1533. var sRecDd = model.getValue(sCondPath+"/recdd");
  1534. fCreateHeader(pFlag);
  1535. model.removenode("/root/send");
  1536. model.makeValue("/root/send/pid", sPid);
  1537. model.makeValue("/root/send/indd", sIndd);
  1538. model.makeValue("/root/send/cretno", sCretNo);
  1539. model.makeValue("/root/send/instcd", sInstcd);
  1540. model.makeValue("/root/send/timeflag", sTimeFlag);
  1541. model.makeValue("/root/send/srchdd",sRecDd );//20090730 김홍점 [임상관찰기록] 삽관, 기구 관련 그룹정보 연동 시 삽입(적용)일 및 적용일수 정보 조회를 위한 기준일자
  1542. //model.makeValue("/root/send/ioflag", sIOFlag);
  1543. model.makeValue("/root/send/fromdt",sHeader[1][1]+sHeader[3][1]+sHeader[4][1]+"00");
  1544. model.makeValue("/root/send/existsdelinfo", model.getValue("/root/main/cond/existsdelinfo"));
  1545. model.removenodeset(xHoursClincObsRecList);
  1546. model.removenodeset(xDaysClincObsRecList);
  1547. model.removenodeSet(xClincObsRecListPath);
  1548. model.removenodeset(xFormerRecPath);
  1549. sCmbWardValue = cmb_wardlist.value;
  1550. sCmbRoomValue = cmb_roomlist.value;
  1551. sCmbPatValue = cmb_patlist.value;
  1552. sCmbMyPatValue = cmb_mypatlist.value;
  1553. switch(pFlag){
  1554. case "24hours" :
  1555. var iHoursRecRow = 0;
  1556. var iHoursDataRow = 0;
  1557. var sBizLnkFlag = model.getValue(sCondPath+"/bizlnkflag");
  1558. model.makeValue("/root/send/todt",sHeader[1][25]+sHeader[3][25]+sHeader[4][25]+"00");
  1559. model.makeValue("/root/send/recflag", "24hours");
  1560. for(var i=1; i <= 25; i++){
  1561. if(sStrTime == ""){
  1562. sStrTime += sHeader[1][i]+sHeader[3][i]+sHeader[4][i]+"00";
  1563. }else{
  1564. sStrTime += ","+sHeader[1][i]+sHeader[3][i]+sHeader[4][i]+"00";
  1565. }
  1566. }
  1567. model.makeValue("/root/send/strtime", sStrTime);
  1568. if(sBizLnkFlag == "Y"){
  1569. model.makeValue("/root/send/bizdeptcd", sDutplcecd);
  1570. }
  1571. //if(pClsFlag == "selectedcls"){
  1572. // model.makeValue("/root/send/clsinfo", model.getValue(sCondPath+"/hoursclsinfo"));
  1573. //}else{
  1574. // model.setValue(sCondPath+"/hoursclsinfo","");
  1575. //}
  1576. grd_24hoursclincobsreclist.rebuild(); //Grid 설정 초기화
  1577. grd_24hoursclincobsreclist.dataHeight = sDataRowHeight; //Grid 행 높이 설정
  1578. submit("TRMNR00901_SJH", false);
  1579. chk_24hoursclslist.attribute("cols") = getNodesetCnt(model, "/root/init/clsinfo/clslist");
  1580. if(s24ClsListInitYn == "N"){
  1581. var sSrchClsInfoList = "";
  1582. if(sSrchTypeInfo == "ALL"){
  1583. for(var i = 0 ; i <= getNodesetCnt(model, "/root/init/clsinfo/clslist") ; i++){
  1584. if(sSrchClsInfoList == ""){
  1585. sSrchClsInfoList += model.getValue("/root/init/clsinfo/clslist["+i+"]/itemcd");
  1586. }else{
  1587. sSrchClsInfoList += " " + model.getValue("/root/init/clsinfo/clslist["+i+"]/itemcd");
  1588. }
  1589. }
  1590. model.setValue("/root/main/cond/hoursclsinfo", sSrchClsInfoList);
  1591. }else{
  1592. model.setValue("/root/main/cond/hoursclsinfo", sSrchTypeInfo);
  1593. }
  1594. s24ClsListInitYn = "Y";
  1595. }
  1596. chk_24hoursclslist.refresh();
  1597. model.makeValue("/root/send/clsinfo", model.getValue(sCondPath+"/hoursclsinfo") );
  1598. //submit("TRMNR00902", false); // 2008-07-09
  1599. submit("TRMNR10103", false); // 2008-07-09
  1600. break;
  1601. }
  1602. fSettingClincObsRec(pFlag);
  1603. }
  1604. /**
  1605. * @group :
  1606. * @ver : 2009.12.15
  1607. * @by : 양천덕
  1608. * @---------------------------------------------------
  1609. * @type : function
  1610. * @access : public
  1611. * @desc : 셀이 포커스를 얻을 때 발생
  1612. * @param :
  1613. * @return :
  1614. * @---------------------------------------------------
  1615. */
  1616. function fEnterGridCell(pFlag){
  1617. var iRow = 0;
  1618. var iCol = 0;
  1619. var iRecRow = 0;
  1620. var sRecFromDT = "";
  1621. var sRecToDT = "";
  1622. var sRecDT = "";
  1623. var sAttrCD = "";
  1624. switch(pFlag){
  1625. case "24hours" :
  1626. sMouseiCol = grd_24hoursclincobsreclist.mouseCol;
  1627. if(sMouseiCol == grd_24hoursclincobsreclist.colRef("itemnm")) return;
  1628. iRecRow = grd_24hoursclincobsreclist.row - grd_24hoursclincobsreclist.fixedrows+1;
  1629. iRow = grd_24hoursclincobsreclist.row;
  1630. iCol = grd_24hoursclincobsreclist.col;
  1631. sRecDT = sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]+"59";
  1632. sRecFromDT = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("recfromdt"));
  1633. sRecToDT = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("rectodt"));
  1634. sAttrCD = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("attrcd"));
  1635. sReChartFlag = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("reccharflag"));
  1636. //추가
  1637. if(model.getValue("/root/main/cond/cmbstatusx") != "0" && model.getValue("/root/main/cond/cmbstatusy") != "0"){
  1638. if(sReChartFlag == "A"){
  1639. var cmbstatusx = model.getValue("/root/main/cond/cmbstatusx");
  1640. var cmbstatusy = model.getValue("/root/main/cond/cmbstatusy");
  1641. var cmbRecRow = cmbstatusx - grd_24hoursclincobsreclist.fixedrows+1;
  1642. var cmbAttrCD = model.getValue(xHoursClincObsRecList+"["+cmbRecRow+"]/attrcd");
  1643. grd_24hoursclincobsreclist.cellComboNodeset(cmbstatusx,cmbstatusy) = sAttrListPath1+"[supcd='"+cmbAttrCD+"']";
  1644. cmbstatusx = "0";
  1645. cmbstatusy = "0";
  1646. }else{
  1647. cmbstatusx = "0";
  1648. cmbstatusy = "0";
  1649. }
  1650. }
  1651. //---------(20101204) 경북대
  1652. //추가
  1653. var ssflag = "";
  1654. if(getUserInfo("dutplceinstcd") != '032' && getUserInfo("dutplceinstcd") != '031') {
  1655. //경북대가 아니면
  1656. if( sJobKindCD == "0330" || sJobKindCD == "0310"){
  1657. ssflag = "Y";
  1658. }else{
  1659. ssflag = "N";
  1660. }
  1661. } else if(getUserInfo("dutplceinstcd") == '032' || getUserInfo("dutplceinstcd") == '031') {
  1662. //경북대이면 03%로 체크한다.
  1663. if( sJobKindCD.substring(0, 2) == "03"){
  1664. ssflag = "Y";
  1665. }else{
  1666. ssflag = "N";
  1667. }
  1668. }
  1669. //원본:의사의 경우만
  1670. //if(sJobKindCD == "30" ){
  1671. if(ssflag=="Y"){
  1672. //---------(20101204) 경북대
  1673. grd_24hoursclincobsreclist.combo.button.visible = false;
  1674. grd_24hoursclincobsreclist.isReadOnly(iRow,grd_24hoursclincobsreclist.fixedCols,iRow, grd_24hoursclincobsreclist.cols-1) = true;
  1675. return;
  1676. }
  1677. if(sReChartFlag =="A" && sAttrCD != ""){
  1678. model.removenodeSet(sAttrListPath);
  1679. for(var i = 1 ; i <= getNodesetCount(sAttrListPath1) ; i ++){
  1680. if(sAttrCD == model.getValue(sAttrListPath1+"["+i+"]/supcd") ){
  1681. var insComboNode = eval(getNodesetCount(sAttrListPath)) + 1 ;
  1682. if(insComboNode == 1){
  1683. model.makeNode(sAttrListPath);
  1684. model.makeValue(sAttrListPath+"["+insComboNode+"]/attrnm", "");
  1685. model.makeValue(sAttrListPath+"["+insComboNode+"]/attrcd", "");
  1686. insComboNode++;
  1687. }
  1688. model.makeValue(sAttrListPath+"["+insComboNode+"]/attrnm", model.getValue(sAttrListPath1+"["+i+"]/attrdesc"));
  1689. model.makeValue(sAttrListPath+"["+insComboNode+"]/attrcd", model.getValue(sAttrListPath1+"["+i+"]/attrcd"));
  1690. }
  1691. }
  1692. model.setValue("/root/main/cond/cmbstatusx",iRow );
  1693. model.setValue("/root/main/cond/cmbstatusy",iCol );
  1694. grd_24hoursclincobsreclist.combo.button.visible = true;
  1695. grd_24hoursclincobsreclist.cellComboNodeset(iRow,iCol) = sAttrListPath;
  1696. grd_24hoursclincobsreclist.combo.input.attribute("width") = grd_24hoursclincobsreclist.colWidth(grd_24hoursclincobsreclist.col)-20;
  1697. //2008-05-22 콤보 선택시 콤보노드 변경을 위해 추가
  1698. model.setFocus("body");
  1699. grd_24hoursclincobsreclist.row = iRow;
  1700. grd_24hoursclincobsreclist.col = iCol;
  1701. //model.setFocus("grd_24hoursclincobsreclist");
  1702. }else{
  1703. //grd_24hoursclincobsreclist.colAttribute(iCol, "type") = "input";
  1704. grd_24hoursclincobsreclist.combo.button.visible = false;
  1705. //grd_24hoursclincobsreclist.cellComboNodeset(iRow,iCol) = sAttrListInitPath;
  1706. grd_24hoursclincobsreclist.combo.input.attribute("width") = grd_24hoursclincobsreclist.colWidth(grd_24hoursclincobsreclist.col);
  1707. //model.setFocus("body");
  1708. //model.setFocus("grd_24hoursclincobsreclist");
  1709. }
  1710. //2008-05-21 멀티 선택이 되지 않아 삭제(콤보 변경이 안됌)
  1711. //model.setFocus("body");
  1712. //model.setFocus("grd_24hoursclincobsreclist");
  1713. break;
  1714. }
  1715. }
  1716. /**
  1717. * @group :
  1718. * @ver : 2009.12.15
  1719. * @by : 양천덕
  1720. * @---------------------------------------------------
  1721. * @type : function
  1722. * @access : public
  1723. * @desc : 셀의 서브컨트롤이 “input” 또는 “inputbutton”일 때 edit 상태로 들어가서 키보드 이벤트가 발생하기 시작하는 시점에서 발생
  1724. * @param :
  1725. * @return :
  1726. * @---------------------------------------------------
  1727. */
  1728. function fChangeGridEdit(pFlag){
  1729. var iRow = 0;
  1730. switch(pFlag){
  1731. case "24hours" :
  1732. iRow = grd_24hoursclincobsreclist.row - grd_24hoursclincobsreclist.fixedrows + 1;
  1733. if(eval(model.getValue(xHoursClincObsRecList+"["+iRow+"]/depth")) >= 2 && model.getValue(xHoursClincObsRecList+"["+iRow+"]/attrcd") != "" && model.getValue(xHoursClincObsRecList+"["+iRow+"]/reccharflag") == "A"){
  1734. event.preventDefault();
  1735. }
  1736. break;
  1737. }
  1738. }
  1739. /**
  1740. * @group :
  1741. * @ver : 2009.12.15
  1742. * @by : 양천덕
  1743. * @---------------------------------------------------
  1744. * @type : function
  1745. * @access : public
  1746. * @desc : 상세값과 사용자 정보를 Hint로 보여줌.
  1747. * @param :
  1748. * @return :
  1749. * @---------------------------------------------------
  1750. */
  1751. function fSearchDetlRecHintInfo(pFlag){
  1752. var iRow = 0;
  1753. var iCol = 0;
  1754. var sItemCD = "";
  1755. var sItemSeqNo = "";
  1756. var sRecDD = "";
  1757. var sRecTM = "";
  1758. var sAttrCD = "";
  1759. var sAttrNM = "";
  1760. var sRecFlag = "";
  1761. var sTimeFlag = "";
  1762. var sRecRslt = "";
  1763. var sSubTotal = 0;
  1764. var sFromDT = "";
  1765. var sToDT = "";
  1766. var sStndDT = "";
  1767. var sHintInfo = "";
  1768. switch(pFlag){
  1769. case "24hours" :
  1770. iRow = grd_24hoursclincobsreclist.mouseRow - grd_24hoursclincobsreclist.fixedrows+1;
  1771. iCol = grd_24hoursclincobsreclist.mouseCol;
  1772. if(iRow < 1 || iCol < 0 ){
  1773. sHintInfo = "";
  1774. }else{
  1775. if(iCol == 0){
  1776. sHintInfo = model.getValue(xHoursClincObsRecList+"["+iRow+"]/itemnm");
  1777. }else{
  1778. sItemCD = model.getValue(xHoursClincObsRecList+"["+iRow+"]/itemcd");
  1779. sItemSeqNo = model.getValue(xHoursClincObsRecList+"["+iRow+"]/itemseqno");
  1780. sCareRecSeqNo = model.getValue(xHoursClincObsRecList+"["+iRow+"]/carerecseqno");
  1781. sRecDD = sHeader[1][iCol];
  1782. sRecTM = sHeader[3][iCol]+sHeader[4][iCol]+"00";
  1783. sTimeFlag = model.getValue(sCondPath+"/timeflag");
  1784. sRecFlag = model.getValue(xHoursClincObsRecList+"["+iRow+"]/recflag");
  1785. var sHistRecUserNm = model.getValue(xRecUserListPath+"[carerecseqno = '"+sCareRecSeqNo+"']/usernm").split("^");
  1786. var sHistRecDT = model.getValue(xRecUserListPath+"[carerecseqno = '"+sCareRecSeqNo+"']/recdt").split("^");
  1787. //model.setValue(sCondPath+"/detlrecinfo/usernm", sSettingUserNm);
  1788. //model.setValue(sCondPath+"/detlrecinfo/usernm", model.getValue(xRecUserListPath+"[carerecseqno ='"+sCareRecSeqNo+"' and recdt ='"+sRecDD+sRecTM+"']/usernm"));
  1789. sAttrCD = model.getValue(xHoursClincObsRecList+"["+iRow+"]/attrcd");
  1790. if(sAttrCD == ""){
  1791. sHintInfo = model.getValue(xHoursClincObsRecList+"["+iRow+"]/recrslt"+iCol);
  1792. }else{
  1793. sAttrCD = model.getValue(xHoursClincObsRecList+"["+iRow+"]/recrslt"+iCol);
  1794. sAttrNM = model.getValue(sAttrListPath1+"[attrcd ='"+sAttrCD+"']/attrdesc");
  1795. if(sAttrNM == ""){
  1796. sHintInfo = sAttrCD;
  1797. }else{
  1798. sHintInfo = sAttrNM;
  1799. }
  1800. }
  1801. var sSettingUserNm = "";
  1802. if(sHistRecDT.length > 0){
  1803. for(var histrow = 0 ; histrow < sHistRecDT.length ; histrow++){
  1804. if((sRecDD + sRecTM) == sHistRecDT[histrow]){
  1805. sSettingUserNm = sHistRecUserNm[histrow];
  1806. }
  1807. }
  1808. }
  1809. if(sSettingUserNm != ""){
  1810. sHintInfo += "\n" + sSettingUserNm;
  1811. }
  1812. sFromDT = sHeader[1][1]+sHeader[3][1]+sHeader[4][1];
  1813. sToDT = sRecDD+sRecTM.substr(0,4);
  1814. if( model.getValue(xHoursClincObsRecList+"["+iRow+"]/recrslt"+iCol)!= "" &&
  1815. (model.getValue(xHoursClincObsRecList+"["+iRow+"]/attrcd") == "" || model.getValue(xHoursClincObsRecList+"["+iRow+"]/totalyn") == "Y") &&
  1816. (sRecFlag == "B" || sRecFlag == "C" || sRecFlag == "T") ){
  1817. for(var i=1; i<= iCol; i++){
  1818. sStndDT = sHeader[1][i]+sHeader[3][i]+sHeader[4][i];
  1819. if(sStndDT >= sFromDT && sStndDT <= sToDT){
  1820. sRecRslt = model.getValue(xHoursClincObsRecList+"["+iRow+"]/recrslt"+i);
  1821. if(sRecRslt != "" && fIsNumber(sRecRslt) == true ){
  1822. sSubTotal += eval(sRecRslt);
  1823. }
  1824. }
  1825. }
  1826. }
  1827. if(sSubTotal == 0) sSubTotal== "";
  1828. if(sSubTotal != "") sHintInfo += "\n" + sSubTotal;
  1829. }
  1830. }
  1831. break;
  1832. }
  1833. return sHintInfo;
  1834. }
  1835. /**
  1836. * @group :
  1837. * @ver : 2009.12.15
  1838. * @by : 양천덕
  1839. * @---------------------------------------------------
  1840. * @type : function
  1841. * @access : public
  1842. * @desc : 상세값과 사용자 정보를 보여줌.
  1843. * @param :
  1844. * @return :
  1845. * @---------------------------------------------------
  1846. */
  1847. function fSearchDetlRecInfo(pFlag){
  1848. var iRow = 0;
  1849. var iCol = 0;
  1850. var sItemCD = "";
  1851. var sItemSeqNo = "";
  1852. var sRecDD = "";
  1853. var sRecTM = "";
  1854. var sAttrCD = "";
  1855. var sAttrNM = "";
  1856. var sRecFlag = "";
  1857. var sTimeFlag = "";
  1858. var sRecRslt = "";
  1859. var sSubTotal = 0;
  1860. var sFromDT = "";
  1861. var sToDT = "";
  1862. var sStndDT = "";
  1863. var sSubTotalArray = "";
  1864. switch(pFlag){
  1865. case "24hours" :
  1866. iRow = grd_24hoursclincobsreclist.mouseRow - grd_24hoursclincobsreclist.fixedrows+1;
  1867. iCol = grd_24hoursclincobsreclist.mouseCol;
  1868. if(iRow < 1 || iCol < 0 ){
  1869. model.setValue(sCondPath+"/detlrecinfo/detlval" , "");
  1870. model.setValue(sCondPath+"/detlrecinfo/usernm" , "");
  1871. model.setValue(sCondPath+"/detlrecinfo/subtotal", "");
  1872. model.setValue(sCondPath+"/detlrecinfo/subtotalarray", "");
  1873. }else{
  1874. if(iCol == 0){
  1875. model.setValue(sCondPath+"/detlrecinfo/detlval", model.getValue(xHoursClincObsRecList+"["+iRow+"]/itemnm"));
  1876. model.setValue(sCondPath+"/detlrecinfo/usernm", "");
  1877. model.setValue(sCondPath+"/detlrecinfo/subtotal", "");
  1878. model.setValue(sCondPath+"/detlrecinfo/subtotalarray", "");
  1879. }else{
  1880. sItemCD = model.getValue(xHoursClincObsRecList+"["+iRow+"]/itemcd");
  1881. sItemSeqNo = model.getValue(xHoursClincObsRecList+"["+iRow+"]/itemseqno");
  1882. sCareRecSeqNo = model.getValue(xHoursClincObsRecList+"["+iRow+"]/carerecseqno");
  1883. sRecDD = sHeader[1][iCol];
  1884. sRecTM = sHeader[3][iCol]+sHeader[4][iCol]+"00";
  1885. sTimeFlag = model.getValue(sCondPath+"/timeflag");
  1886. sRecFlag = model.getValue(xHoursClincObsRecList+"["+iRow+"]/recflag");
  1887. var sHistRecUserNm = model.getValue(xRecUserListPath+"[carerecseqno = '"+sCareRecSeqNo+"']/usernm").split("^");
  1888. var sHistRecDT = model.getValue(xRecUserListPath+"[carerecseqno = '"+sCareRecSeqNo+"']/recdt").split("^");
  1889. var sSettingUserNm = "";
  1890. if(sHistRecDT.length > 0){
  1891. for(var histrow = 0 ; histrow < sHistRecDT.length ; histrow++){
  1892. if((sRecDD + sRecTM) == sHistRecDT[histrow]){
  1893. sSettingUserNm = sHistRecUserNm[histrow];
  1894. }
  1895. }
  1896. }
  1897. model.setValue(sCondPath+"/detlrecinfo/usernm", sSettingUserNm);
  1898. //model.setValue(sCondPath+"/detlrecinfo/usernm", model.getValue(xRecUserListPath+"[carerecseqno ='"+sCareRecSeqNo+"' and recdt ='"+sRecDD+sRecTM+"']/usernm"));
  1899. sAttrCD = model.getValue(xHoursClincObsRecList+"["+iRow+"]/attrcd");
  1900. if(sAttrCD == ""){
  1901. model.setValue(sCondPath+"/detlrecinfo/detlval", model.getValue(xHoursClincObsRecList+"["+iRow+"]/recrslt"+iCol));
  1902. }else{
  1903. sAttrCD = model.getValue(xHoursClincObsRecList+"["+iRow+"]/recrslt"+iCol);
  1904. sAttrNM = model.getValue(sAttrListPath1+"[attrcd ='"+sAttrCD+"']/attrdesc");
  1905. if(sAttrNM == ""){
  1906. model.setValue(sCondPath+"/detlrecinfo/detlval", sAttrCD);
  1907. }else{
  1908. model.setValue(sCondPath+"/detlrecinfo/detlval", sAttrNM);
  1909. }
  1910. }
  1911. sFromDT = sHeader[1][1]+sHeader[3][1]+sHeader[4][1];
  1912. sToDT = sRecDD+sRecTM.substr(0,4);
  1913. if( model.getValue(xHoursClincObsRecList+"["+iRow+"]/recrslt"+iCol)!= "" &&
  1914. (model.getValue(xHoursClincObsRecList+"["+iRow+"]/attrcd") == "" || model.getValue(xHoursClincObsRecList+"["+iRow+"]/totalyn") == "Y") &&
  1915. (sRecFlag == "B" || sRecFlag == "C" || sRecFlag == "T") ){
  1916. for(var i=1; i<= iCol; i++){
  1917. sStndDT = sHeader[1][i]+sHeader[3][i]+sHeader[4][i];
  1918. if(sStndDT >= sFromDT && sStndDT <= sToDT){
  1919. sRecRslt = model.getValue(xHoursClincObsRecList+"["+iRow+"]/recrslt"+i);
  1920. if(sRecRslt != "" && fIsNumber(sRecRslt) == true ){
  1921. sSubTotal += eval(sRecRslt);
  1922. }
  1923. }
  1924. }
  1925. }
  1926. if( sSubTotal == 0 ) sSubTotal="";
  1927. model.setValue(sCondPath+"/detlrecinfo/subtotal", sSubTotal);
  1928. if( sSubTotal == "" ){
  1929. model.setValue(sCondPath+"/detlrecinfo/subtotalarray", "");
  1930. }else{
  1931. sFromDT = sFromDT.substr(4,2)+"/"+sFromDT.substr(6,2)+" "+sFromDT.substr(8,2)+":"+sFromDT.substr(10,2);
  1932. sToDT = sToDT.substr(4,2)+"/"+sToDT.substr(6,2)+" "+sToDT.substr(8,2)+":"+sToDT.substr(10,2);
  1933. model.setValue(sCondPath+"/detlrecinfo/subtotalarray", sFromDT + "~" + sToDT);
  1934. }
  1935. }
  1936. }
  1937. break;
  1938. }
  1939. opt_detlval.refresh();
  1940. opt_usernm.refresh();
  1941. opt_subtotal.refresh();
  1942. opt_subtotalarray.refresh();
  1943. }
  1944. /**
  1945. * @group :
  1946. * @ver : 2009.12.15
  1947. * @by : 양천덕
  1948. * @---------------------------------------------------
  1949. * @type : function
  1950. * @access : public
  1951. * @desc : 임상관찰 기록 저장(임시저장)
  1952. * @param :
  1953. * @return :
  1954. * @---------------------------------------------------
  1955. */
  1956. function fSaveTempClincObsRec(pRecFlag){
  1957. var sSaveDataHeader = "status▦pid▦indd▦cretno▦wardcd▦roomcd▦instcd▦ioflag▦itemcd▦itemseqno▦recflag▦recdt▦recrslt▦certkey▦carerecseqno▩";
  1958. var sSaveData = ""; // 저장데이터
  1959. var sRowCnt = 0; // 전체 row 갯수
  1960. var sItemCD = ""; // 항목코드
  1961. var sItemSeqNO = ""; // 항목일련번호
  1962. var sRecRslt_BK = ""; // 기존 기록결과
  1963. var sRecRslt = ""; // 신규 기록결과
  1964. var sCertKey = ""; // 기존 인증키
  1965. var sStatus = ""; // 상태
  1966. var sStrTime = ""; // 각 컬럼의 시간
  1967. var sRecFlag = ""; // 기록구분
  1968. var sRecCharFlag = ""; // 기록성격구분
  1969. var sChkChngData = false;
  1970. var sBizLnkFlag = model.getValue(sCondPath+"/bizlnkflag");
  1971. var sTimeFlag = model.getValue(sCondPath+"/timeflag");
  1972. var sRecDd = model.getValue(sCondPath+"/recdd");
  1973. sFluidSumInfo = new Array();
  1974. model.removeNodeSet(xResultPath);
  1975. model.removenode("/root/send");
  1976. if(sPid == ""){
  1977. sPid = model.getValue("/root/main/patinfo/pid");
  1978. sIndd = model.getValue("/root/main/patinfo/indd");
  1979. sCretNo = model.getValue("/root/main/patinfo/cretno");
  1980. sIOFlag = model.getValue("/root/main/patinfo/ordtype");
  1981. }
  1982. model.makeValue("/root/send/pid" , sPid);
  1983. model.makeValue("/root/send/indd" , sIndd);
  1984. model.makeValue("/root/send/cretno" , sCretNo);
  1985. model.makeValue("/root/send/instcd" , sInstcd);
  1986. model.makeValue("/root/send/ioflag" , sIOFlag);
  1987. model.makeValue("/root/send/timeflag" , sTimeFlag);
  1988. model.makeValue("/root/send/srchdd" , sRecDd );//20090730 김홍점 [임상관찰기록] 삽관, 기구 관련 그룹정보 연동 시 삽입(적용)일 및 적용일수 정보 조회를 위한 기준일자
  1989. model.makeValue("/root/send/fromdt" , sHeader[1][1]+sHeader[3][1]+sHeader[4][1]+"00");
  1990. model.makeValue("/root/send/existsdelinfo", model.getValue("/root/main/cond/existsdelinfo"));
  1991. switch(pRecFlag){
  1992. case "24hours" :
  1993. if(sBizLnkFlag == "Y"){
  1994. model.makeValue("/root/send/bizdeptcd", sDutplcecd);
  1995. }
  1996. model.makeValue("/root/send/todt",sHeader[1][24]+sHeader[3][24]+sHeader[4][24]+"00");
  1997. model.makeValue("/root/send/recflag", "24hours");
  1998. model.makeValue("/root/send/clsinfo", model.getValue(sCondPath+"/hoursclsinfo") );
  1999. for(var i=1; i <= 25; i++){
  2000. if(sStrTime == ""){
  2001. sStrTime += sHeader[1][i]+sHeader[3][i]+sHeader[4][i]+"00";
  2002. }else{
  2003. sStrTime += ","+sHeader[1][i]+sHeader[3][i]+sHeader[4][i]+"00";
  2004. }
  2005. }
  2006. model.makeValue("/root/send/strtime", sStrTime);
  2007. sRowCnt = grd_24hoursclincobsreclist.rows - grd_24hoursclincobsreclist.fixedrows;
  2008. for(var iRow = 1; iRow<=sRowCnt; iRow++){
  2009. sItemCD = model.getValue(xHoursClincObsRecList+"["+iRow+"]/itemcd" );
  2010. sItemSeqNO = model.getValue(xHoursClincObsRecList+"["+iRow+"]/itemseqno" );
  2011. sRecFlag = model.getValue(xHoursClincObsRecList+"["+iRow+"]/recflag" );
  2012. sRecCharFlag = model.getValue(xHoursClincObsRecList+"["+iRow+"]/reccharflag" );
  2013. sCareRecSeqNo = model.getValue(xHoursClincObsRecList+"["+iRow+"]/carerecseqno");
  2014. sItemNM = model.getValue(xHoursClincObsRecList+"["+iRow+"]/itemnm" );
  2015. sLnkBizCd = model.getValue(xHoursClincObsRecList+"["+iRow+"]/lnkbizcd" );
  2016. sStype = model.getValue(xHoursClincObsRecList+"["+iRow+"]/style" );
  2017. // 값조회, 추가행, Graph사용 수액의 경우는 저장이 필요없음.
  2018. if( sRecCharFlag == "C" || sRecCharFlag == "" || ( sLnkBizCd == "12" && sStype == "01") ) continue;
  2019. for(var iCol=1; iCol<= 24; iCol++){
  2020. //sRecRslt_BK = model.getValue(xClincObsRecListPath+"[itemcd='"+sItemCD+"' and itemseqno='"+sItemSeqNO+"' and recflag='"+sRecFlag+"']/recrslt"+iCol);
  2021. sRecRslt_BK = model.getValue(xClincObsRecListPath+"[carerecseqno='"+sCareRecSeqNo+"']/recrslt"+iCol);
  2022. sRecRslt = model.getValue(xHoursClincObsRecList+"["+iRow+"]/recrslt"+iCol);
  2023. sStatus = "";
  2024. sResultPath = "";
  2025. //상태값 변경
  2026. if(sLnkBizCd == "99" || sLnkBizCd == "01" || sLnkBizCd == "02" || sLnkBizCd == "03" || sLnkBizCd == "04"){ //연계항목, 분류는 제외
  2027. sStatus = "";
  2028. }else if(sRecRslt_BK == "" && sRecRslt == ""){
  2029. sStatus = "";
  2030. }else if(sRecRslt_BK == "" && sRecRslt != ""){
  2031. sStatus = "U";
  2032. }else if(sRecRslt_BK != "" && sRecRslt == ""){
  2033. sStatus = "U";
  2034. }else if(sRecRslt_BK != "" && sRecRslt_BK != sRecRslt){
  2035. sStatus = "U";
  2036. }
  2037. if(sStatus == "") continue;
  2038. //sCertKey = model.getValue(xRecUserListPath+"[itemcd='"+sItemCD+"' and itemseqno='"+ sItemSeqNO+"' and recflag ='"+sRecFlag+"' and recdt = '"+sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]+"00']/certkey");
  2039. var sRsltNodeCnt = eval(getNodesetCount(xResultPath)) + 1;
  2040. var sSaveRecDt = "";
  2041. //간편 입력 저장 부분
  2042. var sArraySaveData = new Array();
  2043. if(isSearchString(sRecRslt, "'") == true){
  2044. sArraySaveData = sRecRslt.split("/");
  2045. for(var i = 0 ; i < sArraySaveData.length ; i++){
  2046. if(i == sArraySaveData.length -1 && isSearchString(sArraySaveData[i], "'") == true && sArraySaveData[i].replace("'", "").isNumber() == true && sArraySaveData[i].replace("'", "") < 60 && sArraySaveData[i].replace("'", "").length == 2){
  2047. sSaveRecDt = sHeader[1][iCol]+sHeader[3][iCol]+sArraySaveData[i].replace("'", "")+"00";
  2048. sRecRslt = sRecRslt.replace("/" + sArraySaveData[i], "" );
  2049. }
  2050. }
  2051. }
  2052. //if(sRecRslt.length < 1) return;
  2053. if(sSaveRecDt == "") sSaveRecDt = sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]+"00";
  2054. model.makeValue(xResultPath+"["+sRsltNodeCnt+"]/reclist" , sRecRslt );
  2055. model.makeValue(xResultPath+"["+sRsltNodeCnt+"]/recdt" , sSaveRecDt );
  2056. model.makeValue(xResultAttrPath+"["+sRsltNodeCnt+"]/attrcd" , model.getValue(xHoursClincObsRecList+"["+iRow+"]/attrcd") );
  2057. model.makeValue(xResultAttrPath+"["+sRsltNodeCnt+"]/reclist" , sRecRslt );
  2058. sChkChngData = true;
  2059. //sCertKey = model.getValue(xRecUserListPath+"[carerecseqno='"+sCareRecSeqNo+"' and recdt = '"+sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]+"00']/certkey");
  2060. sSaveData += sStatus +"▦"
  2061. + sPid +"▦"
  2062. + sIndd +"▦"
  2063. + sCretNo +"▦"
  2064. + sWardCD +"▦"
  2065. + sRoomCD +"▦"
  2066. + sInstcd +"▦"
  2067. + sIOFlag +"▦"
  2068. + sItemCD +"▦"
  2069. + sItemSeqNO +"▦"
  2070. + sRecFlag +"▦"
  2071. + sSaveRecDt +"▦"
  2072. + sRecRslt +"▦"
  2073. + sCertKey +"▦"
  2074. + sCareRecSeqNo +"▩";
  2075. }
  2076. }
  2077. // 변경데이터 유뮤 체크
  2078. if(sChkChngData == false){
  2079. messageBox("저장 할 데이터", "I004");
  2080. model.removeNodeSet("/root/send");
  2081. return;
  2082. }
  2083. //**********************************************************************************************************************
  2084. // 인증 구현 부분 24시 화면
  2085. //**********************************************************************************************************************
  2086. model.makeValue("/root/send/clincobsreclist",sSaveDataHeader+sSaveData);
  2087. //return;
  2088. model.removenodeSet("/root/main/clincobsrecinfo/hoursclincobsrecinfo");
  2089. //submit("TXMNR00901", false); //2008-07-09
  2090. submit("TXMNR10101", false); //2008-07-09
  2091. break;
  2092. }
  2093. fSettingClincObsRec(pRecFlag);
  2094. }
  2095. /**
  2096. * @group :
  2097. * @ver : 2009.12.15
  2098. * @by : 양천덕
  2099. * @---------------------------------------------------
  2100. * @type : function
  2101. * @access : public
  2102. * @desc : 임상관찰 기록 저장(인증저장)
  2103. * @param :
  2104. * @return :
  2105. * @---------------------------------------------------
  2106. */
  2107. function fSaveClincObsRec(pRecFlag){
  2108. sViewerFunc = "sign"
  2109. var sSaveDataHeader = "status▦pid▦indd▦cretno▦wardcd▦roomcd▦instcd▦ioflag▦itemcd▦itemseqno▦recflag▦recdt▦recrslt▦certkey▦carerecseqno▩";
  2110. var sSaveData = ""; // 저장데이터
  2111. var sRowCnt = 0; // 전체 row 갯수
  2112. var sItemCD = ""; // 항목코드
  2113. var sItemSeqNO = ""; // 항목일련번호
  2114. var sRecRslt_BK = ""; // 기존 기록결과
  2115. var sRecRslt = ""; // 신규 기록결과
  2116. var sCertKey = ""; // 기존 인증키
  2117. var sStatus = ""; // 상태
  2118. var sStrTime = ""; // 각 컬럼의 시간
  2119. var sRecFlag = ""; // 기록구분
  2120. var sRecCharFlag = ""; // 기록성격구분
  2121. var sChkChngData = false;
  2122. var sBizLnkFlag = model.getValue(sCondPath+"/bizlnkflag");
  2123. var sTimeFlag = model.getValue(sCondPath+"/timeflag");
  2124. var sRecDd = model.getValue(sCondPath+"/recdd");
  2125. sFluidSumInfo = new Array();
  2126. model.removeNodeSet(xResultPath);
  2127. model.removenode("/root/send");
  2128. if(sPid == ""){
  2129. sPid = model.getValue("/root/main/patinfo/pid");
  2130. sIndd = model.getValue("/root/main/patinfo/indd");
  2131. sCretNo = model.getValue("/root/main/patinfo/cretno");
  2132. sIOFlag = model.getValue("/root/main/patinfo/ordtype");
  2133. }
  2134. model.makeValue("/root/send/pid", sPid);
  2135. model.makeValue("/root/send/indd", sIndd);
  2136. model.makeValue("/root/send/cretno", sCretNo);
  2137. model.makeValue("/root/send/instcd", sInstcd);
  2138. model.makeValue("/root/send/ioflag", sIOFlag);
  2139. model.makeValue("/root/send/timeflag",sTimeFlag );
  2140. model.makeValue("/root/send/srchdd",sRecDd );//20090730 김홍점 [임상관찰기록] 삽관, 기구 관련 그룹정보 연동 시 삽입(적용)일 및 적용일수 정보 조회를 위한 기준일자
  2141. model.makeValue("/root/send/fromdt",sHeader[1][1]+sHeader[3][1]+sHeader[4][1]+"00");
  2142. model.makeValue("/root/send/existsdelinfo", model.getValue("/root/main/cond/existsdelinfo"));
  2143. switch(pRecFlag){
  2144. case "24hours" :
  2145. if(sBizLnkFlag == "Y"){
  2146. model.makeValue("/root/send/bizdeptcd", sDutplcecd);
  2147. }
  2148. model.makeValue("/root/send/todt",sHeader[1][24]+sHeader[3][24]+sHeader[4][24]+"00");
  2149. model.makeValue("/root/send/recflag", "24hours");
  2150. model.makeValue("/root/send/clsinfo", model.getValue(sCondPath+"/hoursclsinfo") );
  2151. for(var i=1; i <= 25; i++){
  2152. if(sStrTime == ""){
  2153. sStrTime += sHeader[1][i]+sHeader[3][i]+sHeader[4][i]+"00";
  2154. }else{
  2155. sStrTime += ","+sHeader[1][i]+sHeader[3][i]+sHeader[4][i]+"00";
  2156. }
  2157. }
  2158. model.makeValue("/root/send/strtime", sStrTime);
  2159. sRowCnt = grd_24hoursclincobsreclist.rows - grd_24hoursclincobsreclist.fixedrows;
  2160. for(var iRow = 1; iRow<=sRowCnt; iRow++){
  2161. sItemCD = model.getValue(xHoursClincObsRecList+"["+iRow+"]/itemcd" );
  2162. sItemSeqNO = model.getValue(xHoursClincObsRecList+"["+iRow+"]/itemseqno" );
  2163. sRecFlag = model.getValue(xHoursClincObsRecList+"["+iRow+"]/recflag" );
  2164. sRecCharFlag = model.getValue(xHoursClincObsRecList+"["+iRow+"]/reccharflag" );
  2165. sCareRecSeqNo = model.getValue(xHoursClincObsRecList+"["+iRow+"]/carerecseqno");
  2166. sItemNM = model.getValue(xHoursClincObsRecList+"["+iRow+"]/itemnm" );
  2167. sLnkBizCd = model.getValue(xHoursClincObsRecList+"["+iRow+"]/lnkbizcd" );
  2168. sStype = model.getValue(xHoursClincObsRecList+"["+iRow+"]/style" );
  2169. // 값조회, 추가행, Graph사용 수액의 경우는 저장이 필요없음.
  2170. if(sRecCharFlag == "C" || sRecCharFlag == "" || ( sLnkBizCd == "12" && sStype == "01") ) continue;
  2171. //인증키 확인 로직
  2172. var sHistRecDT = model.getValue(xRecUserListPath+"[carerecseqno = '"+sCareRecSeqNo+"']/recdt").split("^");
  2173. var sHistCertKey = model.getValue(xRecUserListPath+"[carerecseqno = '"+sCareRecSeqNo+"']/certkey").split("^");
  2174. for(var iCol=1; iCol<= 24; iCol++){
  2175. sRecRslt_BK = model.getValue(xClincObsRecListPath+"[carerecseqno='"+sCareRecSeqNo+"']/recrslt"+iCol);
  2176. sRecRslt = model.getValue(xHoursClincObsRecList+"["+iRow+"]/recrslt"+iCol);
  2177. sCertKey = "";
  2178. if(sHistRecDT.length > 0){
  2179. for(var histrow = 0 ; histrow < sHistRecDT.length ; histrow++){
  2180. if(sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]+"00" == sHistRecDT[histrow]){
  2181. sCertKey = sHistCertKey[histrow];
  2182. }
  2183. }
  2184. }
  2185. sStatus = "";
  2186. sResultPath = "";
  2187. //상태값 변경
  2188. if(sLnkBizCd == "99" || sLnkBizCd == "01" || sLnkBizCd == "02" || sLnkBizCd == "03" || sLnkBizCd == "04"){ //연계항목, 분류는 제외
  2189. sStatus = "";
  2190. }else if(sRecRslt_BK == "" && sRecRslt == ""){
  2191. sStatus = "";
  2192. }else if(sRecRslt_BK == sRecRslt && sCertKey == ""){
  2193. sStatus = "U";
  2194. }else if(sRecRslt_BK == "" && sRecRslt != ""){
  2195. sStatus = "U";
  2196. }else if(sRecRslt_BK != "" && sRecRslt == ""){
  2197. sStatus = "U";
  2198. }else if(sRecRslt_BK != "" && sRecRslt_BK != sRecRslt){
  2199. sStatus = "U";
  2200. }
  2201. if(sStatus == "") continue;
  2202. //sCertKey = model.getValue(xRecUserListPath+"[itemcd='"+sItemCD+"' and itemseqno='"+ sItemSeqNO+"' and recflag ='"+sRecFlag+"' and recdt = '"+sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]+"00']/certkey");
  2203. var sRsltNodeCnt = eval(getNodesetCount(xResultPath)) + 1;
  2204. var sSaveRecDt = "";
  2205. //간편 입력 저장 부분
  2206. var sArraySaveData = new Array();
  2207. if(isSearchString(sRecRslt, "'") == true){
  2208. sArraySaveData = sRecRslt.split("/");
  2209. for(var i = 0 ; i < sArraySaveData.length ; i++){
  2210. if(i == sArraySaveData.length -1 && isSearchString(sArraySaveData[i], "'") == true && sArraySaveData[i].replace("'", "").isNumber() == true && sArraySaveData[i].replace("'", "") < 60 && sArraySaveData[i].replace("'", "").length == 2){
  2211. sSaveRecDt = sHeader[1][iCol]+sHeader[3][iCol]+sArraySaveData[i].replace("'", "")+"00";
  2212. sRecRslt = sRecRslt.replace("/" + sArraySaveData[i], "" );
  2213. }
  2214. }
  2215. }
  2216. //if(sRecRslt.length < 1) return;
  2217. if(sSaveRecDt == "") sSaveRecDt = sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]+"00";
  2218. model.makeValue(xResultPath+"["+sRsltNodeCnt+"]/reclist" , sRecRslt );
  2219. model.makeValue(xResultPath+"["+sRsltNodeCnt+"]/recdt" , sSaveRecDt );
  2220. model.makeValue(xResultAttrPath+"["+sRsltNodeCnt+"]/attrcd" , model.getValue(xHoursClincObsRecList+"["+iRow+"]/attrcd") );
  2221. model.makeValue(xResultAttrPath+"["+sRsltNodeCnt+"]/reclist" , sRecRslt );
  2222. sChkChngData = true;
  2223. sSaveData += sStatus +"▦"
  2224. + sPid +"▦"
  2225. + sIndd +"▦"
  2226. + sCretNo +"▦"
  2227. + sWardCD +"▦"
  2228. + sRoomCD +"▦"
  2229. + sInstcd +"▦"
  2230. + sIOFlag +"▦"
  2231. + sItemCD +"▦"
  2232. + sItemSeqNO +"▦"
  2233. + sRecFlag +"▦"
  2234. + sSaveRecDt +"▦"
  2235. + sRecRslt +"▦"
  2236. + sCertKey +"▦"
  2237. + sCareRecSeqNo +"▩";
  2238. }
  2239. }
  2240. // 변경데이터 유뮤 체크
  2241. if(sChkChngData == false){
  2242. messageBox("저장 할 데이터", "I004");
  2243. model.removeNodeSet("/root/send");
  2244. return;
  2245. }
  2246. //**********************************************************************************************************************
  2247. // 인증 구현 부분 24시 화면
  2248. //************************************************ **********************************************************************
  2249. //Sign.CERT_YEAR = 1970;
  2250. if(Sign.signprocess() == true ){
  2251. //var sSignDataRowCnt = eval(getNodesetCount("/rot/send/signdata")) + 1;
  2252. model.makeValue("/root/send/signdata/pid", sPid);
  2253. model.makeValue("/root/send/signdata/orddd", sIndd);
  2254. model.makeValue("/root/send/signdata/signno", "" );
  2255. model.makeValue("/root/send/signdata/cretno", sCretNo);
  2256. model.makeValue("/root/send/signdata/recdd", getCurrentDate());
  2257. model.makeValue("/root/send/signdata/rectm", getCurrentTime());
  2258. model.makeValue("/root/send/signdata/recsaveflag", "Y");
  2259. model.makeValue("/root/send/signdata/signflag", "02");
  2260. model.makeValue("/root/send/signdata/signgenrflag", sIOFlag);
  2261. model.makeValue("/root/send/signdata/formcd", "0000002443");
  2262. model.makeValue("/root/send/signdata/orddeptcd", model.getValue("/root/main/paminfo/pamlist/orddeptcd"));
  2263. model.makeValue("/root/send/signdata/orddrid", model.getValue("/root/main/paminfo/pamlist/medispclid"));
  2264. model.makeValue("/root/send/signdata/carerecseqno", sCareRecSeqNo);
  2265. model.makeValue("/root/send/signdata/itemseqno", sItemSeqNO);
  2266. model.makeValue("/root/send/signdata/recflag", sRecFlag);
  2267. model.makeValue("/root/send/signdata/lnkrecdt", sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]+"00");
  2268. model.makeValue("/root/send/signdata/dispyn", "N");
  2269. //alert( Sign.signedInfos[1]);
  2270. //alert( Sign.signedInfos[2]);
  2271. //alert( Sign.signedInfos[3]);
  2272. //alert( Sign.signedInfos[4]);
  2273. //alert( Sign.signedInfos[5]);
  2274. // ▶ 인증할 데이터 정보(미기록 노드 제거된 정보)
  2275. // ▶ 미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
  2276. model.makeValue("/root/send/signdata/signbfcnts", Sign.signedInfos[1]);
  2277. //
  2278. // ▶ 공인인증 처리후 데이터
  2279. model.makeValue("/root/send/signdata/signaftcnts", Sign.signedInfos[2]);
  2280. // 응급실 여부에 따라 다음 내환자 동작 제어 (2011.03.09 Ahn)
  2281. if(eERFLAG == "Y"){
  2282. fgetSelectPid(cmb_erpat);
  2283. }else{
  2284. //-------(20110228) 경북대
  2285. //alert("0");
  2286. fgetSelectPid(cmb_mypatlist);
  2287. //alert("1");
  2288. //-------(20110228) 경북대
  2289. }
  2290. }else{
  2291. return false;
  2292. }
  2293. //**********************************************************************************************************************
  2294. model.makeValue("/root/send/clincobsreclist",sSaveDataHeader+sSaveData);
  2295. model.removenodeSet("/root/main/clincobsrecinfo/hoursclincobsrecinfo");
  2296. //submit("TXMNR00901", false); //2008-07-09
  2297. submit("TXMNR10101", false); //2008-07-09
  2298. model.removenodeSet("/root/certtemp");
  2299. model.removenodeSet("/root/certattrtemp");
  2300. fMakeViewData();
  2301. model.removenodeSet("/root/send");
  2302. model.removenodeSet("/root/temp/clincobsrecinfo/rtnsigndata");
  2303. model.removenodeSet("/root/temp/SignData");
  2304. //model.refresh();
  2305. // 응급실 여부에 따라 다음 내환자 동작 제어 (2011.03.08 Ahn)
  2306. if(eERFLAG == "Y"){
  2307. fGetCareComPatList(cmb_wardlist.value, cmb_roomlist.value, cmb_zone.value, eRECFLAG);
  2308. fNextSelectErPat(cmb_erpat);
  2309. cmb_erpat.refresh();
  2310. }else{
  2311. //-------(20110228) 경북대
  2312. //alert("3");
  2313. //내환자 조회-간호일지용
  2314. //debugger;
  2315. if (gcurrentpid != "") {
  2316. fGetSettingPatientList_type2(); //--테스트완료 , XRW를 변경하면됨
  2317. //alert("4");
  2318. var posi = fgetSelectPidNext();
  2319. //alert("5/"+ posi);
  2320. fsetSelectPidNext(cmb_mypatlist,posi);
  2321. //alert("6");
  2322. cmb_mypatlist.refresh();
  2323. }
  2324. //-------(20110228) 경북대
  2325. }
  2326. break;
  2327. }
  2328. fSettingClincObsRec(pRecFlag);
  2329. }
  2330. /* -----(20110228) 경북대 ------------------------ */
  2331. // 현재 위치 인지하기
  2332. function fgetSelectPid(sobj){
  2333. //현재위치찾기
  2334. //alert("sobj.value:" + sobj.value);
  2335. if (sobj.value != "") {
  2336. gcurrentpid = sobj.value;
  2337. } else {
  2338. gcurrentpid = "";
  2339. }
  2340. //alert("gcurrentpid:" + gcurrentpid);
  2341. }
  2342. // 이전 저장위치이전 다음으로 조회시키기
  2343. function fgetSelectPidNext(){
  2344. //var sPath = "/root/temp/mypatsettinginfo/settingpatient/settingpatientlist"
  2345. var tempPid = "";
  2346. var sposition = 0;
  2347. //alert("gcurrentpid:" + gcurrentpid + "/" + getNodesetCount(gpidPath));
  2348. if ( gcurrentpid != "") {
  2349. for(i = 1; i <= getNodesetCount(gpidPath); i++ ) {
  2350. tempPid = model.getValue(gpidPath + "["+ i +"]/pid");
  2351. //alert(gcurrentpid + "/" + tempPid);
  2352. //gcurrentpid 전역변수
  2353. if (gcurrentpid == tempPid) {
  2354. sposition = i;
  2355. //alert("pid찾음");
  2356. i = getNodesetCount(gpidPath) + 1;
  2357. }
  2358. }
  2359. }
  2360. return sposition;
  2361. }
  2362. // 재설정하기
  2363. function fsetSelectPidNext(sobj,sposition){
  2364. var nextyn = model.getValue(chk_nextyn.attribute("ref"));
  2365. // 중환자실 환자인 경우 저장 후 현재 환자 재선택 (2011.03.25 Ahn)
  2366. if(fIsICUPatient(sWardCD)){
  2367. if(nextyn == "Y") {
  2368. sobj.select(sposition);
  2369. } else {
  2370. sobj.select(parseInt(sposition)-1);
  2371. }
  2372. //sobj.select(parseInt(sposition)-1);
  2373. }else{
  2374. if ( getNodesetCount(gpidPath) > sposition ) {
  2375. if(nextyn == "Y") {
  2376. sobj.select(sposition);
  2377. } else {
  2378. sobj.select(parseInt(sposition)-1);
  2379. }
  2380. //alert("1");
  2381. }else {
  2382. //콤보믄 0부터시작
  2383. //instance는 1부터시작
  2384. if(nextyn == "Y") {
  2385. sobj.select(0);
  2386. } else {
  2387. sobj.select(parseInt(sposition)-1);
  2388. }
  2389. //alert("2");
  2390. }
  2391. }
  2392. }
  2393. /* -----(20110228) 경북대 ------------------------ */
  2394. /**
  2395. * @group :
  2396. * @ver : 2009.12.15
  2397. * @by : 양천덕
  2398. * @---------------------------------------------------
  2399. * @type : function
  2400. * @access : public
  2401. * @desc : FlowSheet 기록 Setting
  2402. * @param :
  2403. * @return :
  2404. * @---------------------------------------------------
  2405. */
  2406. function fSettingClincObsRec(pRecFlag){
  2407. var sCurDT = getCurrentDate() + getCurrentTime();
  2408. var sRecDT = ""; // 기록일시
  2409. var sRecFromDT = ""; // 기록시작일시
  2410. var sRecToDT = ""; // 기록종료일시
  2411. var sAttrCD = ""; // 속성코드
  2412. //var sUserID = getUserId();
  2413. var sRecRslt = "";
  2414. var sAnptTmSpec = "";
  2415. var sSupCD = "";
  2416. var sRecFlag = ""; // 기록구분
  2417. var sTotalSum = new Array();
  2418. var sSubTotalSum = new Array();
  2419. var sRunTotalSum = new Array();
  2420. var sRunTotalValue = "";
  2421. var sTotalSumRow = 0;
  2422. var sSubTotalSumRow = 0;
  2423. var sRunTotalSumRow = 0;
  2424. var sAttrCD = "";
  2425. var sAttrValue = "";
  2426. var sChkTotal = "N";
  2427. var sChkSubTotal = "N";
  2428. var sChkRunTotal = "N";
  2429. var sTotalNm = "";
  2430. var sStartOutput = "N";
  2431. var sRecAddRow = "";
  2432. var sReChartFlag = "";
  2433. var sFixRow = 0;
  2434. var sItemColRef = "";
  2435. var sChkFluidRow = 0;
  2436. var sChkDrugRow = 0;
  2437. var sChkTotalIdx = "";
  2438. var sChkSubTotalIdx = "";
  2439. var sChkRunTotalIdx = "";
  2440. var sRecFluidUnit = "";
  2441. sNowDate = getCurrentDate() + getCurrentTime();
  2442. switch(pRecFlag){
  2443. case "24hours" :
  2444. sCurDT = fCalcStartDate(sCurDT, eval(model.getValue(sCondPath+"/timeflag")));
  2445. grd_24hoursclincobsreclist.rebuildStyle();
  2446. grd_24hoursclincobsreclist.backcoloralternate = "transparent";
  2447. //기록건수
  2448. sRecCnt = getNodesetCnt(model, xClincObsRecListPath);
  2449. sItemColRef = grd_24hoursclincobsreclist.colRef("itemnm");
  2450. sFixRow = grd_24hoursclincobsreclist.fixedrows - 1 ;
  2451. for(var i=1; i<= 24; i++){
  2452. sTotalSum[i] = null;
  2453. sSubTotalSum[i] = null;
  2454. sRunTotalSum[i] = null;
  2455. }
  2456. for(var iRow=1; iRow <= sRecCnt; iRow++){
  2457. //그리드 합계 Row 설정 처리
  2458. var addRow = eval(getNodesetCount(xHoursClincObsRecList)) + 1;
  2459. if( sTotalNm == "" ) sTotalNm = model.getValue( xClincObsRecListPath+"["+iRow+"]/totalnm" );
  2460. sTotalYn = model.getValue(xClincObsRecListPath+"["+iRow+"]/totalyn" );
  2461. sSubTotalYn = model.getValue(xClincObsRecListPath+"["+iRow+"]/subtotalyn" );
  2462. sSubTotalNm = model.getValue(xClincObsRecListPath+"["+iRow+"]/subtotalnm" );
  2463. sRunTotalYn = model.getValue(xClincObsRecListPath+"["+iRow+"]/runtotalyn" );
  2464. sRunTotalNm = model.getValue(xClincObsRecListPath+"["+iRow+"]/runtotalnm" );
  2465. sRecFlag = model.getValue(xClincObsRecListPath+"["+iRow+"]/recflag" );
  2466. sLnkBizCd = model.getValue(xClincObsRecListPath+"["+iRow+"]/lnkbizcd" );
  2467. sSupCD = model.getValue(xClincObsRecListPath+"["+iRow+"]/supcd" );
  2468. sStyle = model.getValue(xClincObsRecListPath+"["+iRow+"]/style" );
  2469. sItemNm = model.getValue(xClincObsRecListPath+"["+iRow+"]/itemnm" );
  2470. sCareRecSeqNo = model.getValue(xClincObsRecListPath+"["+iRow+"]/carerecseqno");
  2471. sRecFluidUnit = model.getValue(xClincObsRecListPath+"["+iRow+"]/recfluidunit");
  2472. //현재 행 다음의 기록구분을 조회
  2473. if(iRow == sRecCnt){
  2474. sNextRecFlag = "Last";
  2475. sNextSetnm = "";
  2476. sNextSupCD = "";
  2477. sNextSubTotalYn = "N";
  2478. sNextSubTotalNm = "";
  2479. sNextRunTotalYn = "N";
  2480. sNextRunTotalNm = "";
  2481. }else{
  2482. sNextRecFlag = model.getValue(xClincObsRecListPath+"["+(iRow+1)+"]/recflag" );
  2483. sNextSetnm = model.getValue(xClincObsRecListPath+"["+(iRow+1)+"]/totalnm" );
  2484. sNextSupCD = model.getValue(xClincObsRecListPath+"["+(iRow+1)+"]/supcd" );
  2485. sNextSubTotalYn = model.getValue(xClincObsRecListPath+"["+(iRow+1)+"]/subtotalyn" );
  2486. sNextSubTotalNm = model.getValue(xClincObsRecListPath+"["+(iRow+1)+"]/subtotalnm" );
  2487. sNextRunTotalYn = model.getValue(xClincObsRecListPath+"["+(iRow+1)+"]/runtotalyn" );
  2488. sNextRunTotalNm = model.getValue(xClincObsRecListPath+"["+(iRow+1)+"]/runtotalnm" );
  2489. }
  2490. //전체합계 시작 여부
  2491. if(sChkTotal == "N" && sTotalYn == "Y"){
  2492. sChkTotal = sTotalYn;
  2493. }
  2494. //부분합계 시작 여부
  2495. if(sChkSubTotal == "N" && sSubTotalYn == "Y"){
  2496. sChkSubTotal = sSubTotalYn;
  2497. }
  2498. //누적합계 시작 여부
  2499. if(sChkRunTotal == "N" && sRunTotalYn == "Y"){
  2500. sChkRunTotal = sRunTotalYn;
  2501. }
  2502. //약,주사 행 추가 부분
  2503. if( (sLnkBizCd =="02" || sLnkBizCd =="12") && sStyle != "01" && sChkDrugRow == 0 ){
  2504. sChkDrugRow = addRow;
  2505. fMakeGridNode(pRecFlag, addRow, "약/주사", "B", 2, sLnkBizCd, "-", "", "Y", "");
  2506. addRow = addRow + 1;
  2507. }
  2508. //Fluid 행 추가 부분
  2509. if( (sLnkBizCd =="02" || sLnkBizCd =="12") && sStyle == "01" && sChkFluidRow == 0 ){
  2510. sChkFluidRow = addRow;
  2511. fMakeGridNode(pRecFlag, addRow, "지속적약물", "B", 2, sLnkBizCd, "-", "", "Y", "");
  2512. addRow = addRow + 1;
  2513. }
  2514. model.makeNode(xHoursClincObsRecList+"["+addRow+"]");
  2515. model.copyNode(xHoursClincObsRecList+"["+addRow+"]", xClincObsRecListPath+"["+iRow+"]");
  2516. //Graph 행 추가 부분
  2517. //var ChkFluidList = model.getValue(xFluidPath+"[carerecseqno ='" +sCareRecSeqNo+ "']/carerecseqno" );
  2518. //if( (sLnkBizCd =="02" || sLnkBizCd =="12") && sStyle == "01" && ChkFluidList != ""){
  2519. if( sStyle == "01" ){
  2520. if( sLnkBizCd =="02" || sLnkBizCd =="12" ){
  2521. var sRealFluidRow = addRow;
  2522. var sGraphRow = eval(getNodesetCount(xHoursClincObsRecList)) + 1;
  2523. var sGraphNm = "Graph";
  2524. if( !isNull(sRecFluidUnit) ) sGraphNm = sRecFluidUnit;
  2525. fMakeGridNode(pRecFlag, sGraphRow, sGraphNm, "B", 4, sLnkBizCd, sStyle, "", "Y", sCareRecSeqNo);
  2526. fSettingFluidInfo("F", "Init", sRealFluidRow, sGraphRow, sCareRecSeqNo);
  2527. }else{
  2528. var sRealFluidRow = addRow;
  2529. fSettingFluidInfo("I", "Init", sRealFluidRow, sRealFluidRow, sCareRecSeqNo);
  2530. }
  2531. }
  2532. //부분합계 행 추가 부분 FFCC99 //연주황색
  2533. if( sSubTotaluseYn == "Y" && sChkSubTotal == "Y" ){
  2534. if( sChkSubTotalIdx != "" ) sChkSubTotalIdx += ",";
  2535. sChkSubTotalIdx += "/"+sCareRecSeqNo+"/";
  2536. if(( sRecFlag == "A" && ( sSupCD != sNextSupCD || sSubTotalNm != sNextSubTotalNm || sRecFlag != sNextRecFlag )) ||
  2537. ( sRecFlag == "B" && ( sSupCD != sNextSupCD || sSubTotalNm != sNextSubTotalNm || sRecFlag != sNextRecFlag )) ||
  2538. ( sRecFlag == "C" && ( sSupCD != sNextSupCD || sSubTotalNm != sNextSubTotalNm || sRecFlag != sNextRecFlag )) ){
  2539. var addSubTotalRow = eval(getNodesetCount(xHoursClincObsRecList)) + 1;
  2540. fMakeGridNode(pRecFlag, addSubTotalRow, sSubTotalNm, "S", 2, "", "-", "#FFCC99", "Y", "", sChkSubTotalIdx);
  2541. sChkSubTotalIdx = "";
  2542. sChkSubTotal = "N";
  2543. sSubTotalNm = "";
  2544. }
  2545. }
  2546. //누적합계 행 추가 부분 #FFFFCC" //연노란색
  2547. if( sRunTotaluseYn == "Y" && sChkRunTotal == "Y" ){
  2548. if( sChkRunTotalIdx != "" ) sChkRunTotalIdx += ",";
  2549. sChkRunTotalIdx += "/"+sCareRecSeqNo+"/";
  2550. if(( sRecFlag == "A" && ( sSupCD != sNextSupCD || sRunTotalNm != sNextRunTotalNm || sRecFlag != sNextRecFlag )) ||
  2551. ( sRecFlag == "B" && ( sSupCD != sNextSupCD || sRunTotalNm != sNextRunTotalNm || sRecFlag != sNextRecFlag )) ||
  2552. ( sRecFlag == "C" && ( sSupCD != sNextSupCD || sRunTotalNm != sNextRunTotalNm || sRecFlag != sNextRecFlag )) ){
  2553. var addRunTotalRow = eval(getNodesetCount(xHoursClincObsRecList)) + 1;
  2554. fMakeGridNode(pRecFlag, addRunTotalRow, sRunTotalNm, "R", 2, "", "-", "#FFFFCC", "Y", "", sChkRunTotalIdx);
  2555. sChkRunTotalIdx = "";
  2556. sChkRunTotal = "N";
  2557. sRunTotalNm = "";
  2558. }
  2559. }
  2560. //분류별 전체 합계 행 추가 부분(Total Intake, Total Output, GCS총점)
  2561. if( sTotaluseYn == "Y" && sChkTotal == "Y" ){
  2562. if( sChkTotalIdx != "" ) sChkTotalIdx += ",";
  2563. sChkTotalIdx += "/"+sCareRecSeqNo+"/";
  2564. if( ( sRecFlag == "A" && ( sSupCD != sNextSupCD || sTotalNm != sNextSetnm || sRecFlag != sNextRecFlag ) ) ||
  2565. ( sRecFlag == "B" && ( sSupCD != sNextSupCD || sRecFlag != sNextRecFlag ) ) ||
  2566. ( sRecFlag == "C" && ( sSupCD != sNextSupCD || sRecFlag != sNextRecFlag ) ) ) {
  2567. var addIntakeRow = eval(getNodesetCount(xHoursClincObsRecList)) + 1;
  2568. sSumRowColor = "#dbb7ff"; //연보라색
  2569. if( sRecFlag == "B" || sRecFlag == "C" ) sSumRowColor = "#FF7CFD"; //진분홍색
  2570. fMakeGridNode(pRecFlag, addIntakeRow, sTotalNm, "T", 2, "", "-", sSumRowColor, "Y", "", sChkTotalIdx);
  2571. sChkTotalIdx = "";
  2572. sChkTotal = "N";
  2573. sTotalNm = "";
  2574. }
  2575. }
  2576. // Intake/OutTake 변경시 초기화
  2577. if(sRecFlag != sNextRecFlag){
  2578. //sChkTotal = "N";
  2579. sStartOutput = "N";
  2580. }
  2581. }
  2582. grd_24hoursclincobsreclist.refresh();
  2583. grd_24hoursclincobsreclist.allStyle("data", "font-size") = sDataFontSize; //Grid 글씨 크기
  2584. sCurrentTMColInfo = 0;
  2585. sDutyTMColInfo1 = 0;
  2586. sDutyTMColInfo2 = 0;
  2587. sDutyTMColInfo3 = 0;
  2588. //그리드 스타일 설정
  2589. for(var iRow = grd_24hoursclincobsreclist.fixedRows ; iRow < grd_24hoursclincobsreclist.rows ; iRow++){
  2590. sCareRecSeqno = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("carerecseqno") );
  2591. sRecFromDT = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("recfromdt") );
  2592. sRecToDT = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("rectodt") );
  2593. sDepth = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("depth") );
  2594. sAttrCD = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("attrcd") );
  2595. sReChartFlag = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("reccharflag") );
  2596. sLnkBizCd = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("lnkbizcd") );
  2597. sTotalYn = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("totalyn") );
  2598. sSubTotalYn = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("subtotalyn") );
  2599. sRunTotalYn = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("runtotalyn") );
  2600. sRecFlag = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("recflag") );
  2601. sFontColor = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("color") );
  2602. sStyleValue = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("style") );
  2603. sFluidStatInfo = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("fluidstat") );
  2604. sReadOnlyYn = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("readonlyyn") );
  2605. //현재 행 다음의 기록구분을 조회
  2606. if(iRow == grd_24hoursclincobsreclist.rows){
  2607. sNextRecFlag = "Last";
  2608. }else{
  2609. sNextRecFlag = grd_24hoursclincobsreclist.valueMatrix((iRow+1), grd_24hoursclincobsreclist.colRef("recflag"));
  2610. }
  2611. if(sReadOnlyYn == "Y" || (sStyleValue == "01" && (sLnkBizCd == "02" || sLnkBizCd == "12"))) grd_24hoursclincobsreclist.isReadOnly(iRow,grd_24hoursclincobsreclist.fixedCols, iRow, grd_24hoursclincobsreclist.cols-1) = true;
  2612. // 분류의 경우
  2613. if(eval(sDepth) == 1){
  2614. grd_24hoursclincobsreclist.mergeByFree(iRow, grd_24hoursclincobsreclist.fixedCols, iRow, grd_24hoursclincobsreclist.cols-1);
  2615. grd_24hoursclincobsreclist.rowStyle(iRow,"data","background-color") = "#d0e7ff"; //하늘색
  2616. grd_24hoursclincobsreclist.rowStyle(iRow,"data","font-weight") = "bold";
  2617. }else{ //분류가 아닐 경우
  2618. // SubTotal 항목 표시
  2619. if(sTotalYn == "Y"){
  2620. grd_24hoursclincobsreclist.cellStyle("background-color", iRow, sItemColRef, iRow, sItemColRef) = "#fffebb"; //연노란색
  2621. }
  2622. //20090209 khj hierarchies 자동세팅관련 임상관찰기록에서 작성대상이 아닌 상위아이템행은 읽기전용으로 세팅
  2623. if(sTotalYn == "H"){
  2624. grd_24hoursclincobsreclist.mergeByFree(iRow, grd_24hoursclincobsreclist.fixedCols, iRow, grd_24hoursclincobsreclist.cols-1);
  2625. grd_24hoursclincobsreclist.isReadOnly(iRow, grd_24hoursclincobsreclist.fixedCols, iRow, grd_24hoursclincobsreclist.cols-1) = true;
  2626. }
  2627. //연계업무항목 설정 추가
  2628. if( sLnkBizCd == "01" || sLnkBizCd == "04" || sLnkBizCd == "05" ){ //경구기록, 혈당기록, CAPD기록
  2629. grd_24hoursclincobsreclist.cellStyle("background-color", iRow, sItemColRef+1, iRow, grd_24hoursclincobsreclist.cols-1)= "#EAEAEA"; //추가, 회색
  2630. grd_24hoursclincobsreclist.cellStyle("color", iRow, sItemColRef+1, iRow, grd_24hoursclincobsreclist.cols-1) = "#FF0000"; //빨간색
  2631. }else if( sLnkBizCd == "02" || sLnkBizCd == "12" ){ //투약기록, 수액확장
  2632. if( sDepth == 2 ){
  2633. grd_24hoursclincobsreclist.mergeByFree(iRow, grd_24hoursclincobsreclist.fixedCols, iRow, grd_24hoursclincobsreclist.cols-1);
  2634. grd_24hoursclincobsreclist.cellStyle("background-color", iRow, grd_24hoursclincobsreclist.fixedCols, iRow, grd_24hoursclincobsreclist.cols-1)= "#ffffff"; //추가, 흰색
  2635. }
  2636. }else if( sLnkBizCd == "03" ){ //수혈간호기록
  2637. if( sDepth == 2 ){
  2638. grd_24hoursclincobsreclist.mergeByFree(iRow, grd_24hoursclincobsreclist.fixedCols, iRow, grd_24hoursclincobsreclist.cols-1);
  2639. grd_24hoursclincobsreclist.cellStyle("background-color", iRow, grd_24hoursclincobsreclist.fixedCols, iRow, grd_24hoursclincobsreclist.cols-1)= "#ffffff"; //추가
  2640. }else{
  2641. grd_24hoursclincobsreclist.cellStyle("background-color", iRow, sItemColRef+1, iRow, grd_24hoursclincobsreclist.cols-1)= "#EAEAEA"; //추가
  2642. grd_24hoursclincobsreclist.cellStyle("color", iRow, sItemColRef+1, iRow, grd_24hoursclincobsreclist.cols-1) = "#FF0000";
  2643. }
  2644. }
  2645. // Total Intake, Total Output 색 및 글꼴 변경
  2646. if( sRecFlag == "T" || sRecFlag == "R" || sRecFlag == "S" ){
  2647. grd_24hoursclincobsreclist.rowStyle(iRow,"data","background-color") = sFontColor;
  2648. grd_24hoursclincobsreclist.cellStyle("font-weight", iRow, sItemColRef, iRow, sItemColRef) = "bold";
  2649. if(sRecFlag == "T") sTotalSumRow = iRow;
  2650. if(sRecFlag == "S") sSubTotalSumRow = iRow;
  2651. if(sRecFlag == "R") sRunTotalSumRow = iRow;
  2652. }else{
  2653. // 색상지정 항목 색상 변경 및 글자 강조
  2654. if( sFontColor != "" ){
  2655. grd_24hoursclincobsreclist.cellStyle("color", iRow, sItemColRef, iRow, grd_24hoursclincobsreclist.cols-1) = sFontColor;
  2656. grd_24hoursclincobsreclist.cellStyle("font-weight", iRow, sItemColRef, iRow, sItemColRef) = "bold";
  2657. }
  2658. }
  2659. //컬럼별 설정 부분
  2660. for(var iCol=1; iCol<= 24; iCol++){
  2661. sRecRslt = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("recrslt"+iCol));
  2662. sRecDT = sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]+"59";
  2663. sFluidRecDT = sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]+"00";
  2664. //Total Intake, Total Output 제외 대상 색 및 글꼴 변경
  2665. if(sRecFlag != "T"){
  2666. var sChkRecYn = model.getValue(xIntervalRecYNListPath+"[carerecseqno ='"+sCareRecSeqno+"']/recyn"+iCol);
  2667. if(sChkRecYn == "Y" ){ //인증저장
  2668. grd_24hoursclincobsreclist.cellStyle("background-image",iRow,iCol) = "../../../com/commonweb/images/input_s_essential.gif"; //노란별*
  2669. grd_24hoursclincobsreclist.cellStyle("background-position",iRow,iCol) = "top right";
  2670. }else if(sChkRecYn == "Z"){ //임시저장
  2671. grd_24hoursclincobsreclist.cellStyle("background-image",iRow,iCol) = "../../../com/commonweb/images/input_essential.gif"; //파란별*
  2672. grd_24hoursclincobsreclist.cellStyle("background-position",iRow,iCol) = "top right";
  2673. }
  2674. //Grid Graph 설정
  2675. if(sStyleValue == "01" && isSearchString(sFluidStatInfo, sFluidRecDT) == true){
  2676. grd_24hoursclincobsreclist.cellstyle("border-bottom-color",iRow,iCol) = "#0000ff"; //파란색
  2677. grd_24hoursclincobsreclist.cellstyle("border-bottom-width",iRow,iCol) = 2;
  2678. }
  2679. // 기록 가능 일시가 아닌 경우(20090512 김홍점 모든 아이템에 대해서 입실체크 이전의 blocking 해제 김영림 05-12 12:55)
  2680. if(sReadOnlyYn != "Y" && sRecDT > sRecToDT ){
  2681. grd_24hoursclincobsreclist.isReadOnly(iRow,iCol) = true;
  2682. grd_24hoursclincobsreclist.cellStyle("background-color",iRow,iCol,iRow,iCol)= "#ffeeee"; //추가, 연분홍색
  2683. }
  2684. // 속성 매핑 Item에 속성 정보 세팅
  2685. if(sReChartFlag == "A" && sAttrCD != "") {
  2686. if(sRecRslt != ""){
  2687. grd_24hoursclincobsreclist.cellComboNodeset(iRow,iCol) = sAttrListPath1+"[supcd='"+sAttrCD+"']";
  2688. }
  2689. }
  2690. var sHistRecDT = model.getValue(xRecUserListPath+"[carerecseqno = '"+sCareRecSeqno+"']/recdt").split("^");
  2691. var sHistCertKey = model.getValue(xRecUserListPath+"[carerecseqno = '"+sCareRecSeqno+"']/certkey").split("^");
  2692. var sSettingRecDT = "";
  2693. var sSettingCertKey = "";
  2694. if(sHistRecDT.length > 0){
  2695. for(var histrow = 0 ; histrow < sHistRecDT.length ; histrow++){
  2696. if(sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]+"00" == sHistRecDT[histrow]){
  2697. sSettingCertKey = sHistCertKey[histrow];
  2698. }
  2699. }
  2700. if(sSettingCertKey == "" && ( sLnkBizCd == "11" || ( sLnkBizCd == "12" && sStyleValue != "01" ) || sLnkBizCd == "-" || sLnkBizCd == "99" )){ //11:경구확장, 12:수액확장
  2701. grd_24hoursclincobsreclist.cellStyle("font-weight", iRow, iCol) = "bold";
  2702. if(sRecRslt != ""){
  2703. //임시저장 Cell Color
  2704. grd_24hoursclincobsreclist.cellStyle("color",iRow,iCol) = "#0000ff"; //파란색
  2705. }else{
  2706. //미저장 Cell Color
  2707. grd_24hoursclincobsreclist.cellStyle("color",iRow,iCol) = "#ff9900"; //주황색
  2708. }
  2709. }
  2710. }
  2711. //첫번째 Row 정보로 스타일 적용가능한 부분 처리
  2712. if(iRow == grd_24hoursclincobsreclist.fixedRows+1){
  2713. //현재시간 색 표시
  2714. if(sCurrentTMColInfo == 0){
  2715. if(getDateTime(sCurDT,'기본').substr(0,12) <= (sHeader[1][iCol]+ sHeader[3][iCol]+sHeader[4][iCol])){
  2716. if(iCol == 1){
  2717. grd_24hoursclincobsreclist.colstyle(iCol,"all","background-color") = "#ffe1fe";
  2718. sCurrentTMColInfo = iCol;
  2719. }else{
  2720. if(getDateTime(sCurDT,'기본').substr(0,12) > (sHeader[1][iCol-1]+ sHeader[3][iCol-1]+sHeader[4][iCol-1])){
  2721. grd_24hoursclincobsreclist.colstyle(iCol,"all","background-color") = "#ffe1fe"; //연분홍색
  2722. sCurrentTMColInfo = iCol;
  2723. }
  2724. }
  2725. }
  2726. }
  2727. //Duty 기준선 표시 설정
  2728. if( iCol > 0 ){
  2729. if( sHeader[3][iCol]+sHeader[4][iCol]+"00" == sDayStndTm ) sDutyTMColInfo1 = iCol;
  2730. if( sHeader[3][iCol]+sHeader[4][iCol]+"00" == sEvenStndTm ) sDutyTMColInfo2 = iCol;
  2731. if( sHeader[3][iCol]+sHeader[4][iCol]+"00" == sNightStndTm ) sDutyTMColInfo3 = iCol;
  2732. if(sDutyTMColInfo1 == iCol || sDutyTMColInfo2 == iCol || sDutyTMColInfo3 == iCol){
  2733. //Duty 기준선 해당시간 왼쪽으로 셋팅되도록 수정_20110210_SMY
  2734. //grd_24hoursclincobsreclist.colstyle(iCol,"all","border-right-color") = "#ff0000"; //빨간색
  2735. //grd_24hoursclincobsreclist.colstyle(iCol+1,"all","border-left-color") = "#ff0000";
  2736. grd_24hoursclincobsreclist.colstyle(iCol-1,"all","border-right-color") = "#ff0000"; //빨간색
  2737. grd_24hoursclincobsreclist.colstyle(iCol,"all","border-left-color") = "#ff0000";
  2738. }
  2739. }
  2740. }
  2741. }
  2742. //**************************** clear ********************************
  2743. //부분합계 계산 처리
  2744. if( sSubTotalYn == "Y" ){
  2745. sChkSubTotal = "Y";
  2746. if( sLnkBizCd == "12" && sStyleValue == "01" ){
  2747. for( var i = 0 ; i < sFluidSumInfo.length ; i++ ){
  2748. if( sFluidSumInfo[i][0] == sCareRecSeqno ){
  2749. if(sFluidSumInfo[i][iCol] > 0 ) sSubTotalSum[iCol] += eval(sFluidSumInfo[i][iCol]);
  2750. }
  2751. }
  2752. }else{
  2753. if(sRecRslt != ""){
  2754. if(sRecFlag == "A"){
  2755. if(sAttrCD == "" && fIsNumber(sRecRslt) == true){
  2756. sSubTotalSum[iCol] += eval(sRecRslt);
  2757. }else{
  2758. if( isNull(model.getValue(sAttrListPath1+"[attrcd ='"+sRecRslt+"']/attrdesc")) && fIsNumber(sRecRslt) == true ){
  2759. sSubTotalSum[iCol] += eval(sRecRslt);
  2760. }else{
  2761. sAttrValue =( isNull(model.getValue(sAttrListPath1+"[attrcd ='"+sRecRslt+"']/attrdesc"))
  2762. ? sRecRslt.split(":")
  2763. : model.getValue(sAttrListPath1+"[attrcd ='"+sRecRslt+"']/attrdesc").split(":")
  2764. );
  2765. if(sAttrValue[0].getTrim().isNumber()){
  2766. sSubTotalSum[iCol] += eval(sAttrValue[0]);
  2767. }
  2768. }
  2769. }
  2770. }else if (sRecFlag == "B" || sRecFlag == "C"){
  2771. if(sAttrCD == "" && fIsNumber(sRecRslt) == true){
  2772. sSubTotalSum[iCol] += eval(sRecRslt);
  2773. }else{
  2774. if(fIsNumber(sRecRslt) == true){
  2775. sSubTotalSum[iCol] += eval(sRecRslt);
  2776. }else{
  2777. sAttrValue =( isNull(model.getValue(sAttrListPath1+"[attrcd ='"+sRecRslt+"']/attrdesc"))
  2778. ? sRecRslt.split(":")
  2779. : model.getValue(sAttrListPath1+"[attrcd ='"+sRecRslt+"']/attrdesc").split(":")
  2780. );
  2781. if(sAttrValue[0].getTrim().isNumber()){
  2782. sSubTotalSum[iCol] += eval(sAttrValue[0]);
  2783. }
  2784. }
  2785. }
  2786. }
  2787. }
  2788. }
  2789. }
  2790. //누적합계 계산 처리
  2791. if(sRunTotalYn == "Y"){
  2792. sChkRunTotal = "Y";
  2793. if( sLnkBizCd == "12" && sStyleValue == "01" ){
  2794. for( var i = 0 ; i < sFluidSumInfo.length ; i++ ){
  2795. if( sFluidSumInfo[i][0] == sCareRecSeqno ){
  2796. if(sFluidSumInfo[i][iCol] > 0 ) sRunTotalSum[iCol] += eval(sFluidSumInfo[i][iCol]);
  2797. }
  2798. }
  2799. }else{
  2800. if(sRecRslt != ""){
  2801. if(sRecFlag == "A"){
  2802. if(sAttrCD == "" && fIsNumber(sRecRslt) == true){
  2803. sRunTotalSum[iCol] += eval(sRecRslt);
  2804. }else{
  2805. if( isNull(model.getValue(sAttrListPath1+"[attrcd ='"+sRecRslt+"']/attrdesc")) && fIsNumber(sRecRslt) == true ){
  2806. sRunTotalSum[iCol] += eval(sRecRslt);
  2807. }else{
  2808. sAttrValue =( isNull(model.getValue(sAttrListPath1+"[attrcd ='"+sRecRslt+"']/attrdesc"))
  2809. ? sRecRslt.split(":")
  2810. : model.getValue(sAttrListPath1+"[attrcd ='"+sRecRslt+"']/attrdesc").split(":")
  2811. );
  2812. if(sAttrValue[0].getTrim().isNumber()){
  2813. sRunTotalSum[iCol] += eval(sAttrValue[0]);
  2814. }
  2815. }
  2816. }
  2817. }else if (sRecFlag == "B" || sRecFlag == "C"){
  2818. if(sAttrCD == "" && fIsNumber(sRecRslt) == true){
  2819. sRunTotalSum[iCol] += eval(sRecRslt);
  2820. }else{
  2821. if(fIsNumber(sRecRslt) == true){
  2822. sRunTotalSum[iCol] += eval(sRecRslt);
  2823. }else{
  2824. sAttrValue =( isNull(model.getValue(sAttrListPath1+"[attrcd ='"+sRecRslt+"']/attrdesc"))
  2825. ? sRecRslt.split(":")
  2826. : model.getValue(sAttrListPath1+"[attrcd ='"+sRecRslt+"']/attrdesc").split(":")
  2827. );
  2828. if(sAttrValue[0].getTrim().isNumber()){
  2829. sRunTotalSum[iCol] += eval(sAttrValue[0]);
  2830. }
  2831. }
  2832. }
  2833. }
  2834. }
  2835. }
  2836. }
  2837. // Intake/output 합계 계산
  2838. if(sTotalYn == "Y"){
  2839. sChkTotal = "Y";
  2840. if( sLnkBizCd == "12" && sStyleValue == "01" ){
  2841. for( var i = 0 ; i < sFluidSumInfo.length ; i++ ){
  2842. if( sFluidSumInfo[i][0] == sCareRecSeqno ){
  2843. if(sFluidSumInfo[i][iCol] > 0 ) sTotalSum[iCol] += eval(sFluidSumInfo[i][iCol]);
  2844. }
  2845. }
  2846. }else{
  2847. if(sRecRslt != ""){
  2848. if(sRecFlag == "A"){
  2849. if(sAttrCD == "" && fIsNumber(sRecRslt) == true){
  2850. sTotalSum[iCol] += eval(sRecRslt);
  2851. }else{
  2852. if( isNull(model.getValue(sAttrListPath1+"[attrcd ='"+sRecRslt+"']/attrdesc")) && fIsNumber(sRecRslt) == true ){
  2853. sTotalSum[iCol] += eval(sRecRslt);
  2854. }else{
  2855. sAttrValue =( isNull(model.getValue(sAttrListPath1+"[attrcd ='"+sRecRslt+"']/attrdesc"))
  2856. ? sRecRslt.split(":")
  2857. : model.getValue(sAttrListPath1+"[attrcd ='"+sRecRslt+"']/attrdesc").split(":")
  2858. );
  2859. if(sAttrValue[0].getTrim().isNumber()){
  2860. sTotalSum[iCol] += eval(sAttrValue[0]);
  2861. }
  2862. }
  2863. }
  2864. }else if (sRecFlag == "B" || sRecFlag == "C"){
  2865. if(sAttrCD == "" && fIsNumber(sRecRslt) == true){
  2866. sTotalSum[iCol] += eval(sRecRslt);
  2867. }else{
  2868. if(fIsNumber(sRecRslt) == true){
  2869. sTotalSum[iCol] += eval(sRecRslt);
  2870. }else{
  2871. sAttrValue =( isNull(model.getValue(sAttrListPath1+"[attrcd ='"+sRecRslt+"']/attrdesc"))
  2872. ? sRecRslt.split(":")
  2873. : model.getValue(sAttrListPath1+"[attrcd ='"+sRecRslt+"']/attrdesc").split(":")
  2874. );
  2875. if(sAttrValue[0].getTrim().isNumber()){
  2876. sTotalSum[iCol] += eval(sAttrValue[0]);
  2877. }
  2878. }
  2879. }
  2880. }
  2881. }
  2882. }
  2883. }
  2884. // 부분합계 계산목록 Setting
  2885. if( ( sRecFlag == "S" || sRecFlag != sNextRecFlag ) && sChkSubTotal == "Y" && sSubTotalSumRow != "" ){
  2886. if( sSubTotalSum[iCol] != null ){
  2887. grd_24hoursclincobsreclist.valueMatrix(sSubTotalSumRow, iCol) = sSubTotalSum[iCol] ;
  2888. }
  2889. if( iCol == 24 ){
  2890. sChkSubTotal = "C";
  2891. }
  2892. }
  2893. // 누적합계 계산목록 Setting
  2894. if( (sRecFlag == "S" || sRecFlag != sNextRecFlag ) && sChkRunTotal == "Y" && sRunTotalSumRow != "" ){
  2895. if( sDutyTMColInfo1+1 == iCol || sDutyTMColInfo2+1 == iCol || sDutyTMColInfo3+1 == iCol ) sRunTotalValue = "";
  2896. if( sRunTotalSum[iCol] != null ){
  2897. if( sRunTotalValue == "" ){
  2898. sRunTotalValue = sRunTotalSum[iCol];
  2899. }else{
  2900. sRunTotalValue += sRunTotalSum[iCol];
  2901. }
  2902. grd_24hoursclincobsreclist.valueMatrix(sRunTotalSumRow, iCol) = sRunTotalValue ;
  2903. }
  2904. if(iCol == 24){
  2905. sChkRunTotal = "C";
  2906. }
  2907. }
  2908. // 합계 계산목록 Intake/OutTake에 세팅
  2909. if( (sRecFlag == "T" || sRecFlag != sNextRecFlag ) && sChkTotal == "Y" && sTotalSumRow != "" ){
  2910. if( sTotalSum[iCol] != null ){
  2911. grd_24hoursclincobsreclist.valueMatrix(sTotalSumRow, iCol) = sTotalSum[iCol] ;
  2912. }
  2913. if(iCol == 24){
  2914. sChkTotal = "C";
  2915. }
  2916. }
  2917. }
  2918. //부분합계 관련 변수 초기화
  2919. if(sChkSubTotal == "C"){
  2920. for(var i = 1 ; i <25 ; i ++){
  2921. sSubTotalSum[i] = null;
  2922. }
  2923. sSubTotalSumRow = "";
  2924. sChkSubTotal = "N";
  2925. }
  2926. //누적합계 관련 변수 초기화
  2927. if(sChkRunTotal == "C"){
  2928. for(var i = 1 ; i <25 ; i ++){
  2929. sRunTotalSum[i] = null;
  2930. }
  2931. sRunTotalValue = "";
  2932. sRunTotalSumRow = "";
  2933. sChkRunTotal = "N";
  2934. }
  2935. //전체합계 관련 변수 초기화
  2936. if(sChkTotal == "C"){
  2937. for(var i = 1 ; i <25 ; i ++){
  2938. sTotalSum[i] = null;
  2939. }
  2940. sTotalSumRow = "";
  2941. sChkTotal = "N";
  2942. }
  2943. }
  2944. }
  2945. setTree(grd_24hoursclincobsreclist, grd_24hoursclincobsreclist.colRef("depth"), 0, false, 4); //변경
  2946. // 차트표시
  2947. fMakeChart(pRecFlag);
  2948. model.removenodeSet(xIntervalRecYNListPath);
  2949. break;
  2950. }
  2951. }
  2952. /**
  2953. * @group :
  2954. * @ver : 2009.12.15
  2955. * @by : 양천덕
  2956. * @---------------------------------------------------
  2957. * @type : function
  2958. * @access : public
  2959. * @desc : 그리드 팝업메뉴 SETTING
  2960. * @param : pFlag
  2961. * @return :
  2962. * @---------------------------------------------------
  2963. */
  2964. function fSettingPopUpMenu(pFlag, pGridFlag){
  2965. var iRow = 0;
  2966. var sX = 0;
  2967. var sY = 0;
  2968. var sPopupMenumNodeCnt = 0;
  2969. switch(pFlag){
  2970. case "24hours" :
  2971. iRow = grd_24hoursclincobsreclist.mouseRow;
  2972. iCol = grd_24hoursclincobsreclist.mouseCol;
  2973. if(event.button == 3){
  2974. model.removeNodeset(xItemPopupPath);
  2975. var sPopupCareRecSeqNo = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("carerecseqno"));
  2976. var sPopupLnkBizCd = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("lnkbizcd"));
  2977. var sPopupRecFlag = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("recflag"));
  2978. var SPopupRecCharFlag = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("reccharflag"));
  2979. if(iRow < grd_24hoursclincobsreclist.fixedRows){
  2980. sPopupMenumNodeCnt = eval(getNodesetCount(xItemPopupPath))+1;
  2981. model.makeValue(xItemPopupPath+"["+sPopupMenumNodeCnt+"]/name" , model.getValue(xItemInitPopupPath+"[idx ='"+4+"']/name") );
  2982. model.makeValue(xItemPopupPath+"["+sPopupMenumNodeCnt+"]/func" , model.getValue(xItemInitPopupPath+"[idx ='"+4+"']/func") );
  2983. window.showPopupMenu(true);
  2984. window.setPopupMenu(true, xItemPopupPath, "name", "func", false);
  2985. }else{
  2986. if( iCol == grd_24hoursclincobsreclist.colRef("itemnm") ){
  2987. if( sPopupCareRecSeqNo != "" && sPopupCareRecSeqNo != 0 ){
  2988. if( SPopupRecCharFlag == "A" ){
  2989. //Item 시작/종료 시간 설정
  2990. sPopupMenumNodeCnt = eval(getNodesetCount(xItemPopupPath))+1;
  2991. model.makeValue(xItemPopupPath+"["+sPopupMenumNodeCnt+"]/name" , model.getValue(xItemInitPopupPath+"[idx ='"+2+"']/name") );
  2992. model.makeValue(xItemPopupPath+"["+sPopupMenumNodeCnt+"]/func" , model.getValue(xItemInitPopupPath+"[idx ='"+2+"']/func") );
  2993. }
  2994. //확장명 변경 popup메뉴 설정
  2995. if( sPopupLnkBizCd == "11" || sPopupLnkBizCd == "12" ){
  2996. sPopupMenumNodeCnt = eval(getNodesetCount(xItemPopupPath))+1;
  2997. model.makeValue(xItemPopupPath+"["+sPopupMenumNodeCnt+"]/name" , model.getValue(xItemInitPopupPath+"[idx ='"+1+"']/name") );
  2998. model.makeValue(xItemPopupPath+"["+sPopupMenumNodeCnt+"]/func" , model.getValue(xItemInitPopupPath+"[idx ='"+1+"']/func") );
  2999. }
  3000. }
  3001. }
  3002. if( sPopupCareRecSeqNo != "" && sPopupCareRecSeqNo != 0 || sPopupRecFlag == "T" || sPopupRecFlag == "S" || sPopupRecFlag == "R" ){
  3003. //부분합계 popup메뉴 설정
  3004. sPopupMenumNodeCnt = eval(getNodesetCount(xItemPopupPath))+1;
  3005. model.makeValue(xItemPopupPath+"["+sPopupMenumNodeCnt+"]/name" , model.getValue(xItemInitPopupPath+"[idx ='"+3+"']/name") );
  3006. model.makeValue(xItemPopupPath+"["+sPopupMenumNodeCnt+"]/func" , model.getValue(xItemInitPopupPath+"[idx ='"+3+"']/func") );
  3007. if( sPopupRecFlag != "T" && sPopupRecFlag != "S" && sPopupRecFlag != "R" ){
  3008. //입력값 복사 popup메뉴 설정
  3009. sPopupMenumNodeCnt = eval(getNodesetCount(xItemPopupPath))+1;
  3010. model.makeValue(xItemPopupPath+"["+sPopupMenumNodeCnt+"]/name" , model.getValue(xItemInitPopupPath+"[idx ='"+5+"']/name") );
  3011. model.makeValue(xItemPopupPath+"["+sPopupMenumNodeCnt+"]/func" , model.getValue(xItemInitPopupPath+"[idx ='"+5+"']/func") );
  3012. //입력값 삭제 popup메뉴 설정
  3013. sPopupMenumNodeCnt = eval(getNodesetCount(xItemPopupPath))+1;
  3014. model.makeValue(xItemPopupPath+"["+sPopupMenumNodeCnt+"]/name" , model.getValue(xItemInitPopupPath+"[idx ='"+6+"']/name") );
  3015. model.makeValue(xItemPopupPath+"["+sPopupMenumNodeCnt+"]/func" , model.getValue(xItemInitPopupPath+"[idx ='"+6+"']/func") );
  3016. }
  3017. }
  3018. setPopupMenu("grd_24hoursclincobsreclist", false, xItemPopupPath, "name", "func");
  3019. }
  3020. }
  3021. //grd_24hoursclincobsreclist.focusColor = "#ffe79d";
  3022. //grd_24hoursclincobsreclist.colStyle(iCol, "data", "background-color") = "#ffe79d";
  3023. break;
  3024. }
  3025. }
  3026. /**
  3027. * @group :
  3028. * @ver : 2009.12.15
  3029. * @by : 양천덕
  3030. * @---------------------------------------------------
  3031. * @type : function
  3032. * @access : public
  3033. * @desc : Day Count 설정
  3034. * @param :
  3035. * @return :
  3036. * @---------------------------------------------------
  3037. */
  3038. function fChangedDayCountInfo(){
  3039. var sDayCountInfo = "";
  3040. var sCapNm = "";
  3041. switch(sDayCountFlag){
  3042. case "24HoursHeader" :
  3043. sDayCountInfo = model.getValue(sCondPath+"/daycountinfo").split(" ");
  3044. for(var i=1; i<=24; i++){
  3045. sHeader[2][i] = "";
  3046. for(var j=0; j<sDayCountInfo.length; j++){
  3047. if(sHeader[2][i] != "") sHeader[2][i] += ", ";
  3048. if(sDayCountInfo[j] == "1"){
  3049. sHeader[2][i] += "HD:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/hd");
  3050. }else if(sDayCountInfo[j] == "2"){
  3051. sHeader[2][i] +="POD:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/pod");
  3052. }else if(sDayCountInfo[j] == "3"){
  3053. sHeader[2][i] += "ICU:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/icu");
  3054. }else if(sDayCountInfo[j] == "4"){
  3055. sHeader[2][i] += "D:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/d");
  3056. }else if(sDayCountInfo[j] == "5"){
  3057. sHeader[2][i] += "BMT:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/bmt");
  3058. }else if(sDayCountInfo[j] == "6"){
  3059. sHeader[2][i] += "CP:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/cp");
  3060. }
  3061. }
  3062. }
  3063. for(var iRow=1; iRow<=4; iRow++){
  3064. for(var iCol=0; iCol<=24; iCol++){
  3065. if(iRow == 1){
  3066. sCapNm += sHeader[iRow+1][iCol]; // day count
  3067. }else if(iRow == 3){ // 시
  3068. sCapNm += sHeader[iRow][iCol];
  3069. if(iCol != 0){ sCapNm += "시"; }
  3070. }else if(iRow == 4){ // 분
  3071. sCapNm += sHeader[iRow][iCol];
  3072. if(iCol != 0){ sCapNm += "분"; }
  3073. }
  3074. if(iCol != 24){
  3075. if(iRow != 2){ sCapNm += "^"; }
  3076. }
  3077. }
  3078. if(iRow != 4){
  3079. if((iRow%2)== 1){ sCapNm += "|"; }
  3080. }
  3081. }
  3082. grd_24hoursheader.caption = sCapNm;
  3083. break;
  3084. case "4DaysHeader" :
  3085. sDayCountInfo = model.getValue(sCondPath+"/daycountinfo").split(" ");
  3086. for(var i=1; i<=16; i++){
  3087. sHeader[2][i] = "";
  3088. for(var j=0; j<sDayCountInfo.length; j++){
  3089. if(sHeader[2][i] != "") sHeader[2][i] += ", ";
  3090. if(sDayCountInfo[j] == "1"){
  3091. sHeader[2][i] += "HD:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/hd");
  3092. }else if(sDayCountInfo[j] == "2"){
  3093. sHeader[2][i] +="POD:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/pod");
  3094. }else if(sDayCountInfo[j] == "3"){
  3095. sHeader[2][i] += "ICU:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/icu");
  3096. }else if(sDayCountInfo[j] == "4"){
  3097. sHeader[2][i] += "D:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/d");
  3098. }else if(sDayCountInfo[j] == "5"){
  3099. sHeader[2][i] += "BMT:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/bmt");
  3100. }else if(sDayCountInfo[j] == "6"){
  3101. sHeader[2][i] += "CP:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/cp");
  3102. }
  3103. }
  3104. }
  3105. for(var iRow=1; iRow<=3; iRow++){
  3106. for(var iCol=0; iCol<= 16; iCol++){
  3107. if(iRow == 1){
  3108. sCapNm += sHeader[iRow+1][iCol]; // day count
  3109. }else if(iRow == 3){ // 시
  3110. sCapNm += sHeader[iRow][iCol];
  3111. if(iCol != 0){ sCapNm += ":"+sHeader[4][iCol]; }
  3112. }
  3113. if(iCol != 16){
  3114. if(iRow != 2){ sCapNm += "^"; }
  3115. }
  3116. }
  3117. if(iRow != 3){
  3118. if(iRow == 1){ sCapNm += "|"; }
  3119. }
  3120. }
  3121. grd_4dayschartheader.caption = sCapNm;
  3122. break;
  3123. case "former" :
  3124. sDayCountInfo = model.getValue(sCondPath+"/formerdaycountinfo").split(" ");
  3125. for(var i=1; i<=6; i++){
  3126. sFormerHeader[2][i] = "";
  3127. for(var j=0; j<sDayCountInfo.length; j++){
  3128. if(sFormerHeader[2][i] != "") sFormerHeader[2][i] += ", ";
  3129. if(sDayCountInfo[j] == "1"){
  3130. sFormerHeader[2][i] += "HD:"+model.getValue(xFormerDayCountListPath+"[recdd='"+sFormerHeader[1][i]+"']/hd");
  3131. }else if(sDayCountInfo[j] == "2"){
  3132. sFormerHeader[2][i] +="POD:"+model.getValue(xFormerDayCountListPath+"[recdd='"+sFormerHeader[1][i]+"']/pod");
  3133. }else if(sDayCountInfo[j] == "3"){
  3134. sFormerHeader[2][i] += "ICU:"+model.getValue(xFormerDayCountListPath+"[recdd='"+sFormerHeader[1][i]+"']/icu");
  3135. }else if(sDayCountInfo[j] == "4"){
  3136. sFormerHeader[2][i] += "D:"+model.getValue(xFormerDayCountListPath+"[recdd='"+sFormerHeader[1][i]+"']/d");
  3137. }else if(sDayCountInfo[j] == "5"){
  3138. sFormerHeader[2][i] += "BMT:"+model.getValue(xFormerDayCountListPath+"[recdd='"+sFormerHeader[1][i]+"']/bmt");
  3139. }else if(sDayCountInfo[j] == "6"){
  3140. sFormerHeader[2][i] += "CP:"+model.getValue(xFormerDayCountListPath+"[recdd='"+sFormerHeader[1][i]+"']/cp");
  3141. }
  3142. }
  3143. }
  3144. for(var iRow=1; iRow<=4; iRow++){
  3145. for(var iCol=0; iCol<=6; iCol++){
  3146. if(iRow == 1){
  3147. if(iCol == 0){
  3148. sCapNm += sFormerHeader[iRow][iCol];
  3149. }else{
  3150. sCapNm += sFormerHeader[iRow][iCol].toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일")+
  3151. " ("+sFormerHeader[iRow][iCol].toDate("YYYYMMDD").getDayOfWeek("k")+")";
  3152. }
  3153. }else if(iRow == 2){ // day count
  3154. sCapNm += sFormerHeader[iRow][iCol];
  3155. }else if(iRow == 3){ // 시
  3156. sCapNm += sFormerHeader[iRow][iCol];
  3157. if(iCol != 0){ sCapNm += "시"; }
  3158. }else if(iRow == 4){ // 분
  3159. sCapNm += sFormerHeader[iRow][iCol];
  3160. if(iCol != 0){ sCapNm += "분"; }
  3161. }
  3162. if(iCol != 6){ sCapNm += "^"; }
  3163. }
  3164. if(iRow != 4){ sCapNm += "|";}
  3165. }
  3166. grd_formersclincobsreclist.caption = sCapNm;
  3167. break;
  3168. case "stnd" :
  3169. sDayCountInfo = model.getValue(sCondPath+"/daycountinfo").split(" ");
  3170. for(var i=1; i<=14; i++){
  3171. sHeader[2][i] = "";
  3172. for(var j=0; j<sDayCountInfo.length; j++){
  3173. if(sHeader[2][i] != "") sHeader[2][i] += ", ";
  3174. if(sDayCountInfo[j] == "1"){
  3175. sHeader[2][i] += "HD:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/hd");
  3176. }else if(sDayCountInfo[j] == "2"){
  3177. sHeader[2][i] +="POD:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/pod");
  3178. }else if(sDayCountInfo[j] == "3"){
  3179. sHeader[2][i] += "ICU:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/icu");
  3180. }else if(sDayCountInfo[j] == "4"){
  3181. sHeader[2][i] += "D:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/d");
  3182. }else if(sDayCountInfo[j] == "5"){
  3183. sHeader[2][i] += "BMT:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/bmt");
  3184. }else if(sDayCountInfo[j] == "6"){
  3185. sHeader[2][i] += "CP:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/cp");
  3186. }
  3187. }
  3188. }
  3189. for(var iRow=1; iRow<=4; iRow++){
  3190. for(var iCol=0; iCol<=14; iCol++){
  3191. if(iRow == 1){
  3192. if(iCol == 0){
  3193. sCapNm += sHeader[iRow][iCol]; // 년월일
  3194. }else{
  3195. sCapNm += sHeader[iRow][iCol].toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일")+
  3196. " ("+sHeader[iRow][iCol].toDate("YYYYMMDD").getDayOfWeek("k")+")";
  3197. }
  3198. }else if(iRow == 2){ // day count
  3199. sCapNm += sHeader[iRow][iCol];
  3200. }else if(iRow == 3){ // 시
  3201. sCapNm += sHeader[iRow][iCol];
  3202. if(iCol != 0){ sCapNm += "시"; }
  3203. }else if(iRow == 4){ // 분
  3204. sCapNm += sHeader[iRow][iCol];
  3205. if(iCol != 0){ sCapNm += "분"; }
  3206. }
  3207. if(iCol != 14){ sCapNm += "^"; }
  3208. }
  3209. if(iRow != 4){ sCapNm += "|";}
  3210. }
  3211. grd_stndclincobsreclist.caption = sCapNm;
  3212. break;
  3213. case "24hours" :
  3214. sDayCountInfo = model.getValue(sCondPath+"/daycountinfo").split(" ");
  3215. for(var i=1; i<=24; i++){
  3216. sHeader[2][i] = "";
  3217. for(var j=0; j<sDayCountInfo.length; j++){
  3218. if(sHeader[2][i] != "") sHeader[2][i] += ", ";
  3219. if(sDayCountInfo[j] == "1"){
  3220. sHeader[2][i] += "HD:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/hd");
  3221. }else if(sDayCountInfo[j] == "2"){
  3222. sHeader[2][i] +="POD:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/pod");
  3223. }else if(sDayCountInfo[j] == "3"){
  3224. sHeader[2][i] += "ICU:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/icu");
  3225. }else if(sDayCountInfo[j] == "4"){
  3226. sHeader[2][i] += "D:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/d");
  3227. }else if(sDayCountInfo[j] == "5"){
  3228. sHeader[2][i] += "BMT:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/bmt");
  3229. }else if(sDayCountInfo[j] == "6"){
  3230. sHeader[2][i] += "CP:"+model.getValue(xDayCountListPath+"[recdd='"+sHeader[1][i]+"']/cp");
  3231. }
  3232. }
  3233. }
  3234. for(var iRow=1; iRow<=4; iRow++){
  3235. for(var iCol=0; iCol<=24; iCol++){
  3236. if(iRow == 1){
  3237. if(iCol == 0){
  3238. sCapNm += sHeader[iRow][iCol]; // 년월일
  3239. }else{
  3240. sCapNm += sHeader[iRow][iCol].toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일")+
  3241. " ("+sHeader[iRow][iCol].toDate("YYYYMMDD").getDayOfWeek("k")+")";
  3242. }
  3243. }else if(iRow == 2){ // day count
  3244. sCapNm += sHeader[iRow][iCol];
  3245. }else if(iRow == 3){ // 시
  3246. sCapNm += sHeader[iRow][iCol];
  3247. if(iCol != 0){ sCapNm += "시"; }
  3248. }else if(iRow == 4){ // 분
  3249. sCapNm += sHeader[iRow][iCol];
  3250. if(iCol != 0){ sCapNm += "분"; }
  3251. }
  3252. if(iCol != 24){ sCapNm += "^"; }
  3253. }
  3254. if(iRow != 4){ sCapNm += "|"; }
  3255. }
  3256. grd_24hoursclincobsreclist.caption = sCapNm;
  3257. break;
  3258. }
  3259. }
  3260. /**
  3261. * @group :
  3262. * @ver : 2009.12.15
  3263. * @by : 양천덕
  3264. * @---------------------------------------------------
  3265. * @type : function
  3266. * @access : public
  3267. * @desc : 그리드 항목별 부분 합계 Setting
  3268. * @param :
  3269. * @return :
  3270. * @---------------------------------------------------
  3271. */
  3272. function fAddItemSubTotal(){
  3273. var iSelectedRow = 0;
  3274. switch(sPopUpMenuFlag){
  3275. case "24hours" :
  3276. var iRowCnt = grd_24hoursclincobsreclist.selectedCells.length-1;
  3277. //alert(iRowCnt);
  3278. iSelectedRow = grd_24hoursclincobsreclist.selectedCells.item(iRowCnt).row;
  3279. //alert(grd_24hoursclincobsreclist.selectedCells.length);
  3280. //alert(iSelectedRow);
  3281. // grd_24hoursclincobsreclist.insertRow(++iSelectedRow,"below");
  3282. // var iCol =
  3283. break;
  3284. case "4days" :
  3285. break;
  3286. case "stnd" :
  3287. break;
  3288. }
  3289. }
  3290. /**
  3291. * @group :
  3292. * @ver : 2009.12.15
  3293. * @by : 양천덕
  3294. * @---------------------------------------------------
  3295. * @type : function
  3296. * @access : public
  3297. * @desc : 그리드 값별 부분 합계 계산
  3298. * @param :
  3299. * @return :
  3300. * @---------------------------------------------------
  3301. */
  3302. function fCalcValueSubTotal(){
  3303. var sPopUpMenuFlag = model.getValue("/root/main/cond/vwctrl_button");
  3304. var sDataSum = 0;
  3305. switch(sPopUpMenuFlag){
  3306. case "24hours" :
  3307. var sCells = grd_24hoursclincobsreclist.selectedCells;
  3308. for(var i = 0 ; i < sCells.length ; i ++){
  3309. var col = sCells.item(i).col;
  3310. var row = sCells.item(i).row;
  3311. var subtotal = 0;
  3312. var sSubTotalRecFlag = grd_24hoursclincobsreclist.valueMatrix(row, grd_24hoursclincobsreclist.colRef("recflag"));
  3313. var sSubTotalAttrCd = grd_24hoursclincobsreclist.valueMatrix(row, grd_24hoursclincobsreclist.colRef("attrcd"));
  3314. if( sSubTotalAttrCd == "" || sSubTotalRecFlag == "B" || sSubTotalRecFlag == "C" || sSubTotalRecFlag == "T" ){
  3315. subtotal = grd_24hoursclincobsreclist.valueMatrix( row, col );
  3316. }
  3317. if( subtotal != "" && fIsNumber(subtotal) == true){
  3318. sDataSum += Number(subtotal) ;
  3319. }
  3320. }
  3321. break;
  3322. }
  3323. sPopUpMenuFlag = "";
  3324. }
  3325. /**
  3326. * @group :
  3327. * @ver : 2009.12.15
  3328. * @by : 양천덕
  3329. * @---------------------------------------------------
  3330. * @type : function
  3331. * @access : public
  3332. * @desc : 환자 선택시 상단정보 변경
  3333. * @param :
  3334. * @return :
  3335. * @---------------------------------------------------
  3336. */
  3337. function fSetParam(pFlag, pIndex){
  3338. if(getNodesetCount("/root/main/paminfo/pamlist") > 0){
  3339. model.removenodeset("root/main/paminfo/pamlist");
  3340. }
  3341. var sOrdtype = "";
  3342. var sPid = "";
  3343. var sIndd = "";
  3344. var sCretno = "";
  3345. var sInstcd = "";
  3346. var param = "";
  3347. if(pFlag == "SrchPat"){
  3348. sOrdtype = model.getValue("/root/temp/cond/patientgrup/patientgruplist["+ pIndex +"]/ordtype" );
  3349. if(sOrdtype == "I" || sOrdtype == "D") {
  3350. sOrdtype = "I";
  3351. }
  3352. sPid = model.getValue("/root/temp/cond/patientgrup/patientgruplist["+ pIndex +"]/pid" );
  3353. sIndd = model.getValue("/root/temp/cond/patientgrup/patientgruplist["+ pIndex +"]/indd" );
  3354. sCretno = model.getValue("/root/temp/cond/patientgrup/patientgruplist["+ pIndex +"]/cretno" );
  3355. sInstcd = model.getValue("/root/temp/cond/patientgrup/patientgruplist["+ pIndex +"]/instcd" );
  3356. cmb_mypatlist.value = "";
  3357. }else if(pFlag == "SettingPat"){
  3358. sOrdtype = model.getValue("/root/temp/cond/settingpatient/settingpatientlist["+ pIndex +"]/ordtype" );
  3359. //20120207_KNUH_Start 환자선택시 DSC같은 경우에는 상단 parameter가 잘못되었습니다 오류뜸.(그래서 I로 넣어줌, 항암메인과 조건동일)
  3360. if(sOrdtype == "I" || sOrdtype == "D") {
  3361. sOrdtype = "I";
  3362. }
  3363. sPid = model.getValue("/root/temp/cond/settingpatient/settingpatientlist["+ pIndex +"]/pid" );
  3364. sIndd = model.getValue("/root/temp/cond/settingpatient/settingpatientlist["+ pIndex +"]/indd" );
  3365. sCretno = model.getValue("/root/temp/cond/settingpatient/settingpatientlist["+ pIndex +"]/cretno" );
  3366. sInstcd = model.getValue("/root/temp/cond/settingpatient/settingpatientlist["+ pIndex +"]/instcd" );
  3367. }
  3368. param = sOrdtype + "▦"
  3369. + sPid + "▦"
  3370. + sIndd + "▦"
  3371. + sCretno + "▦"
  3372. + sInstcd + "▦"
  3373. + "▦" ;
  3374. setParameter("condparam", param);
  3375. modal("SPMMO08900", 1, "", "", "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  3376. if(pFlag == "SrchPat"){
  3377. //fInitialize("patinit");
  3378. fSettingPat("patinit");
  3379. }else if(pFlag == "SettingPat"){
  3380. //fInitialize("reset");
  3381. fSettingPat("reset");
  3382. }
  3383. }
  3384. /**
  3385. * @group :
  3386. * @ver : 2009.12.15
  3387. * @by : 양천덕
  3388. * @---------------------------------------------------
  3389. * @type : function
  3390. * @access : public
  3391. * @desc : 환자 선택시 상단정보 변경
  3392. * @param :
  3393. * @return :
  3394. * @---------------------------------------------------
  3395. */
  3396. function fSettingPat(pFlag){
  3397. if(sSelectView == "24hours") fMakeChart("init24hours");
  3398. //if(sSelectView == "4days" ) fMakeChart("init4days" );
  3399. //환자정보 조회
  3400. sPamInfo = getGlobalVariable("paminfo");
  3401. model.removenodeset("/root/main/paminfo/pamlist");
  3402. setCSVToNode("/root/main/paminfo",sPamInfo,"pamlist");
  3403. if(sPamInfo == ""){
  3404. fChkTgtPatInfo("disable");
  3405. fChangUserTypeSrch(sUserFlag);
  3406. model.refresh();
  3407. return;
  3408. }else{
  3409. fChkTgtPatInfo("able");
  3410. fSettingViewCtrl();
  3411. }
  3412. fSettingPatInfo(pFlag);
  3413. fSettingPatInfo2(pFlag);
  3414. }
  3415. function fSettingPatInfo(){
  3416. sPid = model.getValue(xPamInfoPath+"/pid"); // 환자번호
  3417. sCretNo = model.getValue(xPamInfoPath+"/cretno"); // 환자 일자별 일련번호
  3418. sInstcd = model.getValue(xPamInfoPath+"/instcd"); // 기관코드
  3419. sIOFlag = model.getValue(xPamInfoPath+"/ioflag"); // 입원/외래 구분
  3420. sWardCD = model.getValue(xPamInfoPath+"/wardcd"); // 병동코드
  3421. sRoomCD = model.getValue(xPamInfoPath+"/roomcd"); // 병실코드
  3422. sIndschacptstat = model.getValue(xPamInfoPath+"/indschacptstat"); //입퇴원구분코드
  3423. sDschdd = model.getValue(xPamInfoPath+"/dschdd"); // 퇴원일자
  3424. sPatNm = model.getValue(xPamInfoPath+"/hngnm"); // 환자명
  3425. sSexAge = model.getValue(xPamInfoPath+"/sex") +"/"+ model.getValue(xPamInfoPath+"/age"); // 성별
  3426. sOrdDeptcd = model.getValue(xPamInfoPath+"/orddeptcd");
  3427. sMedispclid = model.getValue(xPamInfoPath+"/medispclid");
  3428. var eSectionCD = model.getValue(xPamInfoPath+"/sectioncd"); // 구역코드 (2011.03.02 Ahn)
  3429. if(sIOFlag == "O"){
  3430. sIndd = model.getValue(xPamInfoPath+"/orddd"); // 진료일자
  3431. }else{
  3432. sIndd = model.getValue(xPamInfoPath+"/indd"); // 입원일자
  3433. }
  3434. model.setValue(sCondPath+"/pid", sPid);
  3435. model.setValue("/root/main/patinfo/pid", sPid);
  3436. model.setValue("/root/main/patinfo/indd", sIndd);
  3437. model.setValue("/root/main/patinfo/cretno", sCretNo);
  3438. model.setValue("/root/main/patinfo/ordtype", sIOFlag);
  3439. model.setValue("/root/main/patinfo/indschacptstat", sIndschacptstat);
  3440. model.setValue("/root/main/patinfo/dschdd", sDschdd);
  3441. model.setValue("/root/main/patinfo/wardcd", sWardCD);
  3442. model.setValue("/root/main/patinfo/roomcd", sRoomCD);
  3443. model.setValue("/root/main/patinfo/patnm", sPatNm);
  3444. model.setValue("/root/main/patinfo/sexage", sSexAge);
  3445. model.setValue("/root/main/patinfo/orddeptcd", sOrdDeptcd);
  3446. model.setValue("/root/main/patinfo/medispclid", sMedispclid);
  3447. model.setValue("/root/main/patinfo/sectioncd", eSectionCD); // 구역코드 (2011.03.02 Ahn)
  3448. }
  3449. function fSettingPatInfo2(pFlag){
  3450. //외래 환자 임상관찰기록 화면 컨트롤 제어
  3451. if(sIOFlag == "O"){
  3452. fChkTgtPatInfo("disable");
  3453. messageBox("외래 환자는 임상관찰기록이 ","I004");
  3454. //model.toggle("case_24hoursstnd");
  3455. model.refresh();
  3456. return;
  3457. }
  3458. //퇴원/입원 환자 구분에 따른 화면 제어
  3459. if(sIndschacptstat == "D"){
  3460. rdo_srchflag.visible = false; //퇴원환자 조회구분 숨기기
  3461. grp_oderinpatinfo.visible = false;
  3462. grp_inpatinfo.visible = false;
  3463. grp_outpatinfo.visible = true;
  3464. model.setValue(sCondPath+"/recdd",sDschdd);
  3465. model.setValue(sCondPath+"/formerrecdd", getDateCalc(sDschdd,1));
  3466. }else{
  3467. if(pFlag == "init" || pFlag == "reset"){
  3468. fSettingUserTypeSrch(sUserFlag);
  3469. }
  3470. var sRecdate = "";
  3471. var sRectime = "";
  3472. if(sSpParamInfo == ""){
  3473. if(getCurrentTime().substr(0,4) < sStartTm.substr(0,4)){
  3474. sRecdate = getDateCalc(getCurrentDate(),1,"-");
  3475. }else{
  3476. sRecdate = getCurrentDate();
  3477. }
  3478. }else{
  3479. sRecdate = fGetArrayDataTPR(sSpParamInfo,1,4).substr(0,8);
  3480. sRectime = fGetArrayDataTPR(sSpParamInfo,1,4).substr(8,6);
  3481. model.setValue(sCondPath+"/rectm",sRectime);
  3482. }
  3483. model.setValue(sCondPath+"/recdd",sRecdate);
  3484. model.setValue(sCondPath+"/formerrecdd", getDateCalc(model.getValue(sCondPath+"/recdd"),1));
  3485. /*
  3486. if(pFlag == "init"){
  3487. //병동코드 조회
  3488. fGetCareComWardList("false");
  3489. //진료과 정보 조회(진료 제공 인터페이스)
  3490. mmbfGetDeptCodeComboList("/root/send/reqdata", "/root/temp/cond/deptgrup/deptgruplist" , "D"); //부서코드 콤보
  3491. //내환자 조회
  3492. fGetSettingPatientList("false");
  3493. }
  3494. */
  3495. if(pFlag == "reset" || pFlag == "init"){
  3496. if(sUserFlag == "2"){
  3497. mmbfGetUserComboList("/root/send/reqdata", "/root/temp/cond/doctlist/medispcl" , sOrdDeptcd, "0330", "", "M");
  3498. mmbfGetUserComboList("/root/send/reqdata", "/root/temp/cond/doctlist/atdoct", sOrdDeptcd, "0330", "", "A");
  3499. addComboInstance("/root/temp/cond/doctlist/medispcl", "userid^usernm", "-^전체", "usercombo"); //의사콤보 전체항목 추가
  3500. addComboInstance("/root/temp/cond/doctlist/atdoct", "userid^usernm", "-^전체", "usercombo");//의사콤보 전체항목 추가
  3501. //model.setValue("/root/temp/cond/doctlist/atdoct", "-");
  3502. fGetCareComDeptPatList(sOrdDeptcd, sMedispclid , '-', model.getValue("/root/init/mypatsrchflag"));
  3503. cmb_deptlist.value = sOrdDeptcd;
  3504. cmb_medispcllist.value = sMedispclid;
  3505. cmb_atdoctlist.value = "-";
  3506. cmb_oderpatlist.value = sPid;
  3507. ipt_orderpid.value = sPid;
  3508. //model.setValue("/root/temp/cond/deptgrup/deptgruplist/dept", sOrdDeptcd);
  3509. //model.setValue("/root/temp/cond/doctlist/medispcl/usercombo", sMedispclid);
  3510. //model.setValue("/root/temp/cond/doctlist/atdoct/usercombo", "-");
  3511. //model.setValue("/root/temp/cond/patientgrup/patientgruplist", sPid);
  3512. //model.setValue("/root/main/cond/pid", sPid);
  3513. }else{
  3514. fGetCareComRoomList(sWardCD);
  3515. fGetCareComPatList(sWardCD, sRoomCD, cmb_zone.value, eRECFLAG); // 환자 조회시 구역코드 추가 (2011.03.02 Ahn)
  3516. cmb_wardlist.value = sWardCD;
  3517. cmb_roomlist.value = sRoomCD;
  3518. cmb_patlist.value = sPid;
  3519. ipt_pid.value = sPid;
  3520. cmb_mypatlist.value = sPid;
  3521. //model.setValue("/root/temp/cond/wardcdgrup/wardcdgruplist", sWardCD);
  3522. //model.setValue("/root/temp/cond/roomcdgrup/roomcdgruplist", sRoomCD);
  3523. //model.setValue("/root/temp/cond/patientgrup/patientgruplist", sPid);
  3524. //model.setValue("/root/main/cond/pid", sPid);
  3525. //model.setValue("/root/temp/cond/settingpatient/settingpatientlist", sPid);
  3526. }
  3527. }else if(pFlag == "patinit"){
  3528. cmb_mypatlist.value = sPid;
  3529. }
  3530. }
  3531. //*********************************************************************************
  3532. // 환자 조회 이후 처리 로직
  3533. //*********************************************************************************
  3534. //활력징후 대상 환자 환자 V/S 세팅
  3535. var vsinfo = "";
  3536. if(model.getValue("/root/temp/cond/patientgrup/patientgruplist[pid = "+ sPid +"]/unstableyn") == "Y"){
  3537. vsinfo = model.getValue("/root/temp/cond/patientgrup/patientgruplist[pid = "+ sPid +"]/chosdt").substr(0, 4) + "-"
  3538. + model.getValue("/root/temp/cond/patientgrup/patientgruplist[pid = "+ sPid +"]/chosdt").substr(4, 2) + "-"
  3539. + model.getValue("/root/temp/cond/patientgrup/patientgruplist[pid = "+ sPid +"]/chosdt").substr(6, 2) + " "
  3540. + model.getValue("/root/temp/cond/patientgrup/patientgruplist[pid = "+ sPid +"]/chosdt").substr(8, 2) + ":"
  3541. + model.getValue("/root/temp/cond/patientgrup/patientgruplist[pid = "+ sPid +"]/chosdt").substr(10, 2) + "\n"
  3542. + model.getValue("/root/temp/cond/patientgrup/patientgruplist[pid = "+ sPid +"]/highbp" ) + "/"
  3543. + model.getValue("/root/temp/cond/patientgrup/patientgruplist[pid = "+ sPid +"]/lowbp" ) + "-"
  3544. + model.getValue("/root/temp/cond/patientgrup/patientgruplist[pid = "+ sPid +"]/mntpulsecnt" ) + "-"
  3545. + model.getValue("/root/temp/cond/patientgrup/patientgruplist[pid = "+ sPid +"]/mntbrethcnt" ) + "-"
  3546. + model.getValue("/root/temp/cond/patientgrup/patientgruplist[pid = "+ sPid +"]/chosbdtp" ) + "-"
  3547. + model.getValue("/root/temp/cond/patientgrup/patientgruplist[pid = "+ sPid +"]/oxyconcen" ) ; //산소포화도 추가_20110207_SMY
  3548. }
  3549. model.setValue("/root/temp/vsinfo", vsinfo);
  3550. var sBizLnkFlag = model.getValue(sCondPath+"/bizlnkflag");
  3551. // 2008/04/21 추가
  3552. //model.copyNode("/root/send", xPamInfoPath);
  3553. model.copyNode("/root/send", "/root/main/patinfo");
  3554. chk_24hoursclslist.attribute("cols")= 0;
  3555. if(sBizLnkFlag == "Y"){
  3556. model.makeValue("/root/send/bizdeptcd", sDutplcecd);
  3557. }
  3558. //환자 기록 정보 조회
  3559. fSearchClincObsRec();
  3560. }
  3561. /**
  3562. * @group :
  3563. * @ver : 2009.12.15
  3564. * @by : 양천덕
  3565. * @---------------------------------------------------
  3566. * @type : function
  3567. * @access : public
  3568. * @desc : 셀 선택시 합계 계산
  3569. * @param :
  3570. * @return :
  3571. * @---------------------------------------------------
  3572. */
  3573. function fCalcDataSmmy(pFlag){
  3574. var sDataSum = 0;
  3575. var sStartDt = "";
  3576. var sEndDt = "";
  3577. switch(pFlag){
  3578. case "24hours" :
  3579. var sCells = grd_24hoursclincobsreclist.selectedCells;
  3580. for(var i = 0 ; i < sCells.length ; i ++){
  3581. var col = sCells.item(i).col;
  3582. var row = sCells.item(i).row;
  3583. var subtotal = 0;
  3584. if(//grd_24hoursclincobsreclist.cellComboNodeset(row, col) == "/root/temp/attrinfo/attrlist" &&
  3585. //grd_24hoursclincobsreclist.valueMatrix(row, grd_24hoursclincobsreclist.colRef("totalyn")) == "Y" &&
  3586. (grd_24hoursclincobsreclist.valueMatrix(row, grd_24hoursclincobsreclist.colRef("recflag")) == "B" ||
  3587. grd_24hoursclincobsreclist.valueMatrix(row, grd_24hoursclincobsreclist.colRef("recflag")) == "C" ||
  3588. grd_24hoursclincobsreclist.valueMatrix(row, grd_24hoursclincobsreclist.colRef("recflag")) == "T" )){
  3589. subtotal = grd_24hoursclincobsreclist.valueMatrix( row, col );
  3590. }
  3591. if( subtotal != "" && fIsNumber(subtotal) == true){
  3592. sDataSum += Number(subtotal) ;
  3593. }
  3594. if( sStartDt == "" || sStartDt > sHeader[1][col]+sHeader[3][col]+sHeader[4][col] ) sStartDt = sHeader[1][col].substr(4,2)+"/"+sHeader[1][col].substr(6,2)+" "+sHeader[3][col]+":"+sHeader[4][col];
  3595. if( sEndDt == "" || sEndDt < sHeader[1][col]+sHeader[3][col]+sHeader[4][col] ) sEndDt = sHeader[1][col].substr(4,2)+"/"+sHeader[1][col].substr(6,2)+" "+sHeader[3][col]+":"+sHeader[4][col];
  3596. }
  3597. if( sDataSum == 0 || sDataSum == ""){
  3598. model.setValue(sCondPath+"/detlrecinfo/subtotal", "");
  3599. model.setValue(sCondPath+"/detlrecinfo/subtotalarray", "");
  3600. }else{
  3601. model.setValue(sCondPath+"/detlrecinfo/subtotal", sDataSum);
  3602. model.setValue(sCondPath+"/detlrecinfo/subtotalarray", sStartDt + "~" + sEndDt);
  3603. }
  3604. opt_subtotalarray.refresh();
  3605. opt_subtotal.refresh();
  3606. break;
  3607. }
  3608. }
  3609. /**
  3610. * @group :
  3611. * @ver : 2009.12.15
  3612. * @by : 양천덕
  3613. * @---------------------------------------------------
  3614. * @type : function
  3615. * @access : public
  3616. * @desc : 그리드 선택시 선택 모드 변경 부분
  3617. * @param :
  3618. * @return :
  3619. * @---------------------------------------------------
  3620. */
  3621. function fChangeDataGridSelectionModeSet(pFlag){
  3622. if( sCells.item(0).col == sCells.item(sCells.length-1).lcol ){
  3623. grd_24hoursclincobsreclist.selectionmode = "bycol";
  3624. }else{
  3625. grd_24hoursclincobsreclist.selectionmode = "free";
  3626. }
  3627. }
  3628. /**
  3629. * @group :
  3630. * @ver : 2009.12.15
  3631. * @by : 양천덕
  3632. * @---------------------------------------------------
  3633. * @type : function
  3634. * @access : public
  3635. * @desc : 셀 입력 완료 후 포커스를 받았을 경우 발생
  3636. * @param :
  3637. * @return :
  3638. * @---------------------------------------------------
  3639. */
  3640. function fEnterKeyGridCell(pFlag){
  3641. var iRow = 0;
  3642. var iCol = 0;
  3643. var iRecRow = 0;
  3644. var sRecFromDT = "";
  3645. var sRecToDT = "";
  3646. var sRecDT = "";
  3647. var sAttrCD = "";
  3648. switch(pFlag){
  3649. case "24hours" :
  3650. iRecRow = grd_24hoursclincobsreclist.row - grd_24hoursclincobsreclist.fixedrows+1;
  3651. iRow = grd_24hoursclincobsreclist.row;
  3652. iCol = grd_24hoursclincobsreclist.col;
  3653. sRecDT = sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]+"59";
  3654. sRecFromDT = model.getValue(xHoursClincObsRecList+"["+iRecRow+"]/recfromdt");
  3655. sRecToDT = model.getValue(xHoursClincObsRecList+"["+iRecRow+"]/rectodt");
  3656. sAttrCD = model.getValue(xHoursClincObsRecList+"["+iRecRow+"]/attrcd");
  3657. sReChartFlag = model.getValue(xHoursClincObsRecList+"["+iRecRow+"]/reccharflag");
  3658. //alert("fEnterKeyGridCell" +" : " + iRow);
  3659. // 의사의 경우
  3660. //---------(20101204) 경북대
  3661. //추가
  3662. var ssflag = "";
  3663. if(getUserInfo("dutplceinstcd") != '032' && getUserInfo("dutplceinstcd") != '031') {
  3664. //경북대가 아니면
  3665. if( sJobKindCD == "0330" || sJobKindCD == "0310"){
  3666. ssflag = "Y";
  3667. }else{
  3668. ssflag = "N";
  3669. }
  3670. } else if(getUserInfo("dutplceinstcd") == '032' || getUserInfo("dutplceinstcd") == '031') {
  3671. //경북대이면 03%로 체크한다.
  3672. if( sJobKindCD.substring(0, 2) == "03"){
  3673. ssflag = "Y";
  3674. }else{
  3675. ssflag = "N";
  3676. }
  3677. }
  3678. //원본:의사의 경우만
  3679. //if(sJobKindCD == "30"){
  3680. if(ssflag=="Y") {
  3681. //---------(20101204) 경북대
  3682. grd_24hoursclincobsreclist.combo.button.visible = false;
  3683. grd_24hoursclincobsreclist.isReadOnly(iRow,grd_24hoursclincobsreclist.fixedCols,iRow, grd_24hoursclincobsreclist.cols-1) = true;
  3684. return;
  3685. }
  3686. // if(eval(model.getValue(xHoursClincObsRecList+"["+iRecRow+"]/depth")) == 1){
  3687. // grd_24hoursclincobsreclist.combo.button.visible = false;
  3688. // grd_24hoursclincobsreclist.isReadOnly(iRow,grd_24hoursclincobsreclist.fixedCols,iRow, grd_24hoursclincobsreclist.cols-1) = true;
  3689. // }else{
  3690. // //2008-05-21 변경
  3691. // //if(sRecDT < sRecFromDT || sRecDT > sRecToDT || model.getValue(xHoursClincObsRecList+"["+iRecRow+"]/recyn") == "N"){
  3692. // if(sRecDT < sRecFromDT || sRecDT > sRecToDT ){
  3693. // if(model.getValue(xHoursClincObsRecList+"["+iRecRow+"]/attrcd") == ""){
  3694. // grd_24hoursclincobsreclist.combo.button.visible = false;
  3695. // grd_24hoursclincobsreclist.combo.input.attribute("width") = grd_24hoursclincobsreclist.colWidth(grd_24hoursclincobsreclist.col);
  3696. // }
  3697. // grd_24hoursclincobsreclist.isReadOnly(iRow,iCol) = true;
  3698. //
  3699. // }else{
  3700. if(sReChartFlag =="A" && sAttrCD != ""){
  3701. grd_24hoursclincobsreclist.combo.button.visible = true;
  3702. grd_24hoursclincobsreclist.cellComboNodeset(iRow,iCol) = sAttrListPath1+"[supcd='"+sAttrCD+"']";
  3703. grd_24hoursclincobsreclist.combo.input.attribute("width") = grd_24hoursclincobsreclist.colWidth(grd_24hoursclincobsreclist.col)-20;
  3704. //model.setFocus("body");
  3705. //model.setFocus("grd_24hoursclincobsreclist");
  3706. }else{
  3707. grd_24hoursclincobsreclist.combo.button.visible = false;
  3708. grd_24hoursclincobsreclist.combo.input.attribute("width") = grd_24hoursclincobsreclist.colWidth(grd_24hoursclincobsreclist.col);
  3709. }
  3710. break;
  3711. // 2008-10-09 주석 추가
  3712. // case "4days" :
  3713. // iRecRow = grd_4daysclincobsreclist.row - grd_4daysclincobsreclist.fixedrows+1;
  3714. // iRow = grd_4daysclincobsreclist.row;
  3715. // iCol = grd_4daysclincobsreclist.col;
  3716. // sRecDT = sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]+"59";
  3717. // sRecFromDT = model.getValue(xDaysClincObsRecList+"["+iRecRow+"]/recfromdt");
  3718. // sRecToDT = model.getValue(xDaysClincObsRecList+"["+iRecRow+"]/rectodt");
  3719. // sAttrCD = model.getValue(xDaysClincObsRecList+"["+iRecRow+"]/attrcd");
  3720. // sReChartFlag = model.getValue(xDaysClincObsRecList+"["+iRecRow+"]/reccharflag");
  3721. //
  3722. // // 의사의 경우
  3723. // if(sJobKindCD == "30"){
  3724. // grd_4daysclincobsreclist.combo.button.visible = false;
  3725. // grd_4daysclincobsreclist.isReadOnly(iRow,grd_4daysclincobsreclist.fixedCols,iRow, grd_4daysclincobsreclist.cols-1) = true;
  3726. // return;
  3727. // }
  3728. // if(eval(model.getValue(xDaysClincObsRecList+"["+iRecRow+"]/depth")) == 1){
  3729. // grd_4daysclincobsreclist.combo.button.visible = false;
  3730. // grd_4daysclincobsreclist.isReadOnly(iRow,grd_4daysclincobsreclist.fixedCols,iRow, grd_4daysclincobsreclist.cols-1) = true;
  3731. // }else{
  3732. // //2008-05-21 변경
  3733. // //if(sRecDT < sRecFromDT || sRecDT > sRecToDT ){
  3734. // if(sRecDT < sRecFromDT || sRecDT > sRecToDT || model.getValue(xDaysClincObsRecList+"["+iRecRow+"]/reccharflag") == "C" ){
  3735. // if(model.getValue(xDaysClincObsRecList+"["+iRecRow+"]/attrcd") == ""){
  3736. // grd_4daysclincobsreclist.combo.button.visible = false;
  3737. // grd_4daysclincobsreclist.combo.input.attribute("width") = grd_4daysclincobsreclist.colWidth(grd_4daysclincobsreclist.col);
  3738. // }
  3739. // grd_4daysclincobsreclist.isReadOnly(iRow,iCol) = true;
  3740. // }else{
  3741. // if(sReChartFlag =="A" && sAttrCD != ""){
  3742. // grd_4daysclincobsreclist.combo.button.visible = true;
  3743. // grd_4daysclincobsreclist.cellComboNodeset(iRow,iCol) = sAttrListPath+"[supcd='"+sAttrCD+"']";
  3744. // grd_4daysclincobsreclist.combo.input.attribute("width") = grd_4daysclincobsreclist.colWidth(grd_4daysclincobsreclist.col)-20;
  3745. // }else{
  3746. // grd_4daysclincobsreclist.combo.button.visible = false;
  3747. // grd_4daysclincobsreclist.combo.input.attribute("width") = grd_4daysclincobsreclist.colWidth(grd_4daysclincobsreclist.col);
  3748. // }
  3749. // }
  3750. // }
  3751. // model.setFocus("body");
  3752. // model.setFocus("grd_4daysclincobsreclist");
  3753. // break;
  3754. // case "stnd":
  3755. // iRecRow = grd_stndclincobsreclist.row - grd_stndclincobsreclist.fixedrows+1;
  3756. // iRow = grd_stndclincobsreclist.row;
  3757. // iCol = grd_stndclincobsreclist.col;
  3758. // sRecDT = sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]+"59";
  3759. // sRecFromDT = model.getValue(xStnddayClincObsRecListPath+"["+iRecRow+"]/recfromdt");
  3760. // sRecToDT = model.getValue(xStnddayClincObsRecListPath+"["+iRecRow+"]/rectodt");
  3761. // // 의사의 경우
  3762. // if(sJobKindCD == "30"){
  3763. // grd_stndclincobsreclist.combo.button.visible = false;
  3764. // grd_stndclincobsreclist.isReadOnly(iRow,grd_stndclincobsreclist.fixedCols,iRow, grd_stndclincobsreclist.cols-1) = true;
  3765. // return;
  3766. // }
  3767. // if(eval(model.getValue(xStnddayClincObsRecListPath+"["+iRecRow+"]/depth")) == 1){
  3768. // grd_stndclincobsreclist.combo.button.visible = false;
  3769. // grd_stndclincobsreclist.isReadOnly(iRow,grd_stndclincobsreclist.fixedCols,iRow, grd_stndclincobsreclist.cols-1) = true;
  3770. // }else{
  3771. // //2008-05-21 변경
  3772. // //if(sRecDT < sRecFromDT || sRecDT > sRecToDT || model.getValue(xStnddayClincObsRecListPath+"["+iRecRow+"]/recyn") == "N"){
  3773. // if(sRecDT < sRecFromDT || sRecDT > sRecToDT || model.getValue(xStnddayClincObsRecListPath+"["+iRecRow+"]/reccharflag") == "C"){
  3774. // if(model.getValue(xStnddayClincObsRecListPath+"["+iRecRow+"]/attrcd") == ""){
  3775. // grd_stndclincobsreclist.combo.button.visible = false;
  3776. // grd_stndclincobsreclist.combo.input.attribute("width") = grd_stndclincobsreclist.colWidth(grd_stndclincobsreclist.col);
  3777. // }
  3778. // grd_stndclincobsreclist.isReadOnly(iRow,iCol) = true;
  3779. // }else{
  3780. // sAttrCD = model.getValue(xStnddayClincObsRecListPath+"["+iRecRow+"]/attrcd");
  3781. // sReChartFlag = model.getValue(xStnddayClincObsRecListPath+"["+iRecRow+"]/reccharflag");
  3782. // if(sReChartFlag =="A" && sAttrCD != ""){
  3783. // grd_stndclincobsreclist.combo.button.visible = true;
  3784. // grd_stndclincobsreclist.cellComboNodeset(iRow,iCol) = sAttrListPath+"[supcd='"+sAttrCD+"']";
  3785. // grd_stndclincobsreclist.combo.input.attribute("width") = grd_stndclincobsreclist.colWidth(grd_stndclincobsreclist.col)-20;
  3786. // }else{
  3787. // grd_stndclincobsreclist.combo.button.visible = false;
  3788. // grd_stndclincobsreclist.combo.input.attribute("width") = grd_stndclincobsreclist.colWidth(grd_stndclincobsreclist.col);
  3789. // }
  3790. // }
  3791. // }
  3792. // model.setFocus("body");
  3793. // model.setFocus("grd_stndclincobsreclist");
  3794. // break;
  3795. }
  3796. }
  3797. function fChageComboSet(pFlag){
  3798. switch(pFlag){
  3799. case "24hours" :
  3800. iRecRow = grd_24hoursclincobsreclist.row - grd_24hoursclincobsreclist.fixedrows+1;
  3801. iRow = grd_24hoursclincobsreclist.row;
  3802. iCol = grd_24hoursclincobsreclist.col;
  3803. //sAttrCD = model.getValue(xHoursClincObsRecList+"["+iRecRow+"]/attrcd");
  3804. //sReChartFlag = model.getValue(xHoursClincObsRecList+"["+iRecRow+"]/reccharflag");
  3805. sAttrCD = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("attrcd"));
  3806. sReChartFlag = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("reccharflag"));
  3807. if(sReChartFlag =="A" && sAttrCD != ""){
  3808. grd_24hoursclincobsreclist.combo.button.visible = true;
  3809. grd_24hoursclincobsreclist.cellComboNodeset(iRow,iCol) = sAttrListPath1+"[supcd='"+sAttrCD+"']";
  3810. grd_24hoursclincobsreclist.combo.input.attribute("width") = grd_24hoursclincobsreclist.colWidth(iCol)-20;
  3811. //grd_24hoursclincobsreclist.select(iRow, iCol) = false;
  3812. //2008-05-22 콤보 선택시 콤보노드 변경을 위해 추가
  3813. //model.setFocus("body");
  3814. //model.setFocus("grd_24hoursclincobsreclist");
  3815. var iDataRow = 0;
  3816. var sRecCharFlag = "";
  3817. for(var row = iRow+1; row <= grd_24hoursclincobsreclist.rows;row++){
  3818. iDataRow = row - grd_24hoursclincobsreclist.fixedrows+1;
  3819. sRecCharFlag = grd_24hoursclincobsreclist.valueMatrix(row, grd_24hoursclincobsreclist.colRef("reccharflag"));
  3820. if(sRecCharFlag == "A" || sRecCharFlag == "B"){
  3821. model.setFocus("body");
  3822. row = grd_24hoursclincobsreclist.rows + 1;
  3823. }
  3824. }
  3825. }
  3826. // else{
  3827. // grd_24hoursclincobsreclist.combo.button.visible = false;
  3828. // grd_24hoursclincobsreclist.combo.input.attribute("width") = grd_24hoursclincobsreclist.colWidth(iCol);
  3829. // }
  3830. break;
  3831. }
  3832. }
  3833. /**
  3834. * @group :
  3835. * @ver : 2009.12.15
  3836. * @by : 양천덕
  3837. * @---------------------------------------------------
  3838. * @type : function
  3839. * @access : public
  3840. * @desc :
  3841. * @param : 경구입력 팝업 제어부분
  3842. * @return :
  3843. * @---------------------------------------------------
  3844. */
  3845. function fPopupOralRec(){
  3846. //화면 재조회 popup호출을 할 경우 미기록 정보 체크 함수
  3847. //fSearchClincObsRec 함수를 호출하는 함수에 추가 필요
  3848. if( fChkSaveData() == false ) return;
  3849. var sIndex = cmb_patlist.focusIndex + 1
  3850. var sParam_Header = "pid▦orddd▦cretno▦wardcd▦recdd▩";
  3851. var sParam_Data = model.getValue(sCondPath+"/pid")+"▦"
  3852. + model.getValue("/root/temp/cond/patientgrup/patientgruplist["+ sIndex +"]/indd" ) + "▦"
  3853. + model.getValue("/root/temp/cond/patientgrup/patientgruplist["+ sIndex +"]/cretno" ) + "▦"
  3854. + cmb_wardlist.value + "▦"
  3855. + model.getValue(sCondPath+"/recdd")+"▩";
  3856. setParameter("SPMNR05700_Param",sParam_Header+sParam_Data);
  3857. modal("SPMNR05700", "1", event.clientX , event.clientY);
  3858. fSearchClincObsRec("24hours");
  3859. //parameter 정보 초기화
  3860. clearParameter("SPMNR05700_Param");
  3861. }
  3862. /**
  3863. * @group :
  3864. * @ver : 2009.12.15
  3865. * @by : 양천덕
  3866. * @---------------------------------------------------
  3867. * @type : function
  3868. * @access : public
  3869. * @desc :
  3870. * @param : CDIS 데이터 연동 팝업 제어부분
  3871. * @return :
  3872. * @---------------------------------------------------
  3873. */
  3874. function fPopupCDISRec(){
  3875. //화면 재조회 popup호출을 할 경우 미기록 정보 체크 함수
  3876. //fSearchClincObsRec 함수를 호출하는 함수에 추가 필요
  3877. if( fChkSaveData() == false ) return;
  3878. var sIndex = cmb_patlist.focusIndex + 1
  3879. var sParam_Header = "srchdd▦stndtm▦pid▦orddd▦cretno▦starttm▦ordtype▦wardcd▦roomcd▩";
  3880. var sParam_Data = getCurrentDate()+"▦"
  3881. + "01"+"▦"
  3882. + model.getValue(sCondPath+"/pid")+"▦"
  3883. + model.getValue("/root/temp/cond/patientgrup/patientgruplist["+ sIndex +"]/indd" ) + "▦"
  3884. + model.getValue("/root/temp/cond/patientgrup/patientgruplist["+ sIndex +"]/cretno" ) + "▦"
  3885. + getCurrentTime().substr(0,2) + "▦"
  3886. + model.getValue("/root/temp/cond/patientgrup/patientgruplist["+ sIndex +"]/ordtype" ) + "▦"
  3887. + cmb_wardlist.value + "▦"
  3888. + cmb_roomlist.value + "▦"
  3889. + model.getValue("/root/temp/cond/patientgrup/patientgruplist["+ sIndex +"]/instcd" ) + "▩";
  3890. setParameter("SPMNR06200_Param",sParam_Header+sParam_Data);
  3891. modal("SPMNR06200", "1", event.clientX , event.clientY);
  3892. fSearchClincObsRec("24hours");
  3893. //parameter 정보 초기화
  3894. clearParameter("SPMNR06200_Param");
  3895. }
  3896. /**
  3897. * @group :
  3898. * @ver : 2009.12.15
  3899. * @by : 양천덕
  3900. * @---------------------------------------------------
  3901. * @type : function
  3902. * @access : public
  3903. * @desc :
  3904. * @param : 항목별 연계
  3905. * @return :
  3906. * @---------------------------------------------------
  3907. */
  3908. function fChkLnkBiz(pFlag){
  3909. var sLnkBizCd = "";
  3910. var sStyle = "";
  3911. var sCareRecSeqNo = "";
  3912. var sMessageSpec = "연동된 자료는 해당 기록지에서 직접 입력 및 수정하여야 합니다. ";
  3913. switch (pFlag){
  3914. case "24hours" :
  3915. sLnkBizCd = grd_24hoursclincobsreclist.valueMatrix(grd_24hoursclincobsreclist.row, grd_24hoursclincobsreclist.colRef("lnkbizcd"));
  3916. sStyle = grd_24hoursclincobsreclist.valueMatrix(grd_24hoursclincobsreclist.row, grd_24hoursclincobsreclist.colRef("style"));
  3917. sCareRecSeqNo = grd_24hoursclincobsreclist.valueMatrix(grd_24hoursclincobsreclist.row, grd_24hoursclincobsreclist.colRef("carerecseqno"));
  3918. break;
  3919. case "4days":
  3920. sLnkBizCd = grd_4daysclincobsreclist.valueMatrix(grd_4daysclincobsreclist.row, grd_4daysclincobsreclist.colRef("lnkbizcd"));
  3921. break;
  3922. case "stnd":
  3923. sLnkBizCd = grd_stndclincobsreclist.valueMatrix(grd_stndclincobsreclist.row, grd_stndclincobsreclist.colRef("lnkbizcd"));
  3924. break;
  3925. case "former":
  3926. sLnkBizCd = grd_formersclincobsreclist.valueMatrix(grd_formersclincobsreclist.row, grd_formersclincobsreclist.colRef("lnkbizcd"));
  3927. break;
  3928. }
  3929. switch (sLnkBizCd){
  3930. case "01" :
  3931. messageBox(sMessageSpec + "(경구입력)","I");
  3932. break;
  3933. case "02" :
  3934. messageBox(sMessageSpec + "(투약기록지)","I");
  3935. break;
  3936. case "03" :
  3937. messageBox(sMessageSpec + "(수혈간호기록지)","I");
  3938. break;
  3939. case "04" :
  3940. messageBox(sMessageSpec + "(혈당간호기록지)","I");
  3941. break;
  3942. case "05" :
  3943. messageBox(sMessageSpec + "(CAPD기록지)","I");
  3944. break;
  3945. case "06" :
  3946. messageBox(sMessageSpec + "(CRRT기록지)","I");
  3947. break;
  3948. case "06" :
  3949. messageBox(sMessageSpec + "(CPCR기록지)","I");
  3950. break;
  3951. case "12" :
  3952. var rtnmsg = "";
  3953. //if( sStyle == "01" && sCareRecSeqNo != "" && grd_24hoursclincobsreclist.col != grd_24hoursclincobsreclist.colRef("itemnm") ) rtnmsg = messageBox("Fluid 기록 입력 화면을 여시겠습니까?","Q");
  3954. //if( rtnmsg == "6" ) fPopupFluid();
  3955. if( sStyle == "01" && sCareRecSeqNo != "" && grd_24hoursclincobsreclist.col != grd_24hoursclincobsreclist.colRef("itemnm") ){
  3956. fPopupFluid();
  3957. }
  3958. break;
  3959. }
  3960. }
  3961. /**
  3962. * @group :
  3963. * @ver : 2009.12.15
  3964. * @by : 양천덕
  3965. * @---------------------------------------------------
  3966. * @type : function
  3967. * @access : public
  3968. * @desc : 문자여부 확인
  3969. * @param : str : 값
  3970. * @return : true / false
  3971. * @---------------------------------------------------
  3972. */
  3973. function fIsNumber(str) {
  3974. str += ''; // 문자열로 변환
  3975. str = str.replace(/^\s*|\s*$/g, ''); // 좌우 공백 제거
  3976. if (str == '' || isNaN(str)) return false;
  3977. return true;
  3978. }
  3979. /**
  3980. * @group :
  3981. * @ver : 2009.12.15
  3982. * @by : 양천덕
  3983. * @---------------------------------------------------
  3984. * @type : function
  3985. * @access : public
  3986. * @desc :
  3987. * @param : IO조회 Popup 호출
  3988. * @return :
  3989. * @---------------------------------------------------
  3990. */
  3991. function fPopupIOSearch(){
  3992. if(model.getValue("/root/main/patinfo/pid") == ""){
  3993. messageBox("환자를 선택하십시요","I");
  3994. return;
  3995. }
  3996. var sIndex = cmb_patlist.focusIndex + 1
  3997. var sParam_Header = "pid▦orddd▦cretno▦wardcd▦recdd▩";
  3998. var sParam_Data = model.getValue(sCondPath+"/pid")+"▦"
  3999. + model.getValue("/root/temp/cond/patientgrup/patientgruplist["+ sIndex +"]/indd" ) + "▦"
  4000. + model.getValue("/root/temp/cond/patientgrup/patientgruplist["+ sIndex +"]/cretno" ) + "▦"
  4001. + cmb_wardlist.value + "▦"
  4002. + model.getValue(sCondPath+"/recdd")+"▩";
  4003. setParameter("SPMNR05800_Param",sParam_Header+sParam_Data);
  4004. open("SPMNR05800", "1", event.clientX , event.clientY);
  4005. //parameter 정보 초기화
  4006. //clearParameter("SPMNR05800_Param");
  4007. //fPopupIOSearchInitParam();
  4008. }
  4009. /**
  4010. * @group :
  4011. * @ver : 2009.12.15
  4012. * @by : 양천덕
  4013. * @---------------------------------------------------
  4014. * @type : function
  4015. * @access : public
  4016. * @desc : FlowSheet I/O 조회화면 Parameter 초기화 함수
  4017. * I/O 조회 화면에서 초기화함수 호출.
  4018. * @param :
  4019. * @return :
  4020. * @---------------------------------------------------
  4021. */
  4022. function fPopupIOSearchInitParam(){
  4023. //parameter 정보 초기화
  4024. clearParameter("SPMNR05800_Param");
  4025. }
  4026. /**
  4027. * @group :
  4028. * @ver : 2009.12.15
  4029. * @by : 양천덕
  4030. * @---------------------------------------------------
  4031. * @type : function
  4032. * @access : public
  4033. * @desc :
  4034. * @param : 간호관리ITEM 팝업 제어부분
  4035. * @return :
  4036. * @---------------------------------------------------
  4037. */
  4038. function fPopupItem(){
  4039. //화면 재조회 popup호출을 할 경우 미기록 정보 체크 함수
  4040. //fSearchClincObsRec 함수를 호출하는 함수에 추가 필요
  4041. if( fChkSaveData() == false ) return;
  4042. modal("SMMNR04100", "1", event.clientX , event.clientY);
  4043. fSearchClincObsRec("24hours");
  4044. }
  4045. /**
  4046. * @group :
  4047. * @ver : 2009.12.15
  4048. * @by : 양천덕
  4049. * @---------------------------------------------------
  4050. * @type : function
  4051. * @access : public
  4052. * @desc :
  4053. * @param : 환자 선택 여부확인
  4054. * @return :
  4055. * @---------------------------------------------------
  4056. */
  4057. function fChkTgtPatInfo(pFlag){
  4058. switch(pFlag){
  4059. case "disable":
  4060. grp_srchbaselist.visible = false;
  4061. grp_btnlist.visible = false;
  4062. btn_24hoursdetailbefore.visible = false;
  4063. btn_24hoursdetailafter.visible = false;
  4064. btn_24hoursup.disabled = true;
  4065. btn_24hoursdown.disabled = true;
  4066. break;
  4067. case "able":
  4068. grp_srchbaselist.visible = true;
  4069. grp_btnlist.visible = true;
  4070. btn_24hoursdetailbefore.visible = true;
  4071. btn_24hoursdetailafter.visible = true;
  4072. btn_24hoursup.disabled = false;
  4073. btn_24hoursdown.disabled = false;
  4074. break;
  4075. }
  4076. }
  4077. /**
  4078. * @group :
  4079. * @ver : 2009.12.15
  4080. * @by : 양천덕
  4081. * @---------------------------------------------------
  4082. * @type : function
  4083. * @access : public
  4084. * @desc :
  4085. * @param : 임상관찰기록 인증 데이터 생성
  4086. * @return :
  4087. * @---------------------------------------------------
  4088. */
  4089. function fMake_SignData(){
  4090. switch(sViewerFunc){
  4091. case "sign":
  4092. Sign.addnode("/root/certtemp");
  4093. var xPathSignData = Sign.XPATH_SIGNINFO+"/certtemp/recinfo";
  4094. for(var i = 0 ; i <= getNodesetCount(xPathSignData) ; i++){
  4095. var sRecRslt = model.getValue(xPathSignData+"["+i+"]/reclist");
  4096. var sCertAttrCd = model.getValue(xResultAttrPath+"["+i+"]/attrcd");
  4097. var sCertAttrNm = model.getValue(sAttrListPath1+"[attrcd='"+sRecRslt+"']/attrdesc");
  4098. if(sRecRslt != "" && sCertAttrCd != "" && sCertAttrNm != ""){
  4099. model.setValue(xPathSignData+"["+i+"]/reclist", sCertAttrNm);
  4100. }
  4101. }
  4102. break;
  4103. case "veiw":
  4104. Sign.addnode("/root/viewtemp/viewinfo");
  4105. break;
  4106. }
  4107. }
  4108. /**
  4109. * @group :
  4110. * @ver : 2009.12.15
  4111. * @by : 양천덕
  4112. * @---------------------------------------------------
  4113. * @type : function
  4114. * @access : public
  4115. * @desc :
  4116. * @param : 기록일별 기록 정보 view 생성
  4117. * @return :
  4118. * @---------------------------------------------------
  4119. */
  4120. function fMakeViewData(){
  4121. model.removenodeSet("/root/send");
  4122. model.removenodeSet("/root/viewtemp");
  4123. sViewerFunc = "veiw";
  4124. var sCntViewData = getNodesetCount(xPathViewData);
  4125. var sTopColInfo = "";
  4126. var sSrow = "";
  4127. var sErow = "";
  4128. sViewerRecDD = "";
  4129. sMakeChartInfo[1] = new Array(); //Y축명
  4130. sMakeChartInfo[2] = new Array(); //Y축정보
  4131. sMakeChartInfo[3] = new Array(); //기록시간
  4132. sMakeChartInfo[4] = new Array(); //기록값
  4133. if(sCntViewData > 0 ){
  4134. for(var i = 1 ; i <= eval(getNodesetCount(xPathViewData)) ; i++){
  4135. if(model.getValue(xPathViewData+"["+i+"]/leftaxis") != "" && model.getValue(xPathViewData+"["+i+"]/leftaxis") != "-" ){
  4136. var insIndex = sMakeChartInfo[1].length;
  4137. sMakeChartInfo[1][insIndex] = model.getValue(xPathViewData + "[" +i+ "]/captiony");
  4138. sMakeChartInfo[2][insIndex] = model.getValue(xPathViewData + "[" +i+ "]/leftaxis");
  4139. sMakeChartInfo[3][insIndex] = model.getValue(xPathViewData + "[" +i+ "]/recdtlist");
  4140. sMakeChartInfo[4][insIndex] = model.getValue(xPathViewData + "[" +i+ "]/recrsltlist");
  4141. }
  4142. //일자 정보 변경시 데이터 저장함수 호출
  4143. if(model.getValue(xPathViewData +"[" +i+ "]/itemcd") == "-" && sViewerRecDD != "") {
  4144. sTopColInfo = "";
  4145. //fChngViewNode();
  4146. //pErow = i -1;
  4147. fSaveViewData();
  4148. //fMakeViewChart(pSrow, pErow);
  4149. model.removenodeSet("/root/viewtemp/viewinfo");
  4150. //pSrow = "";
  4151. //pErow = "";
  4152. //pSrow = i;
  4153. }
  4154. if(model.getValue(xPathViewData +"[" +i+ "]/itemcd") == "-") {
  4155. //pSrow = i;
  4156. var sViewDate = model.getValue(xPathViewData+"["+i+"]/recdd");
  4157. var sEndRows = 0;
  4158. sViewerRecDD = sViewDate;
  4159. model.makeValue("/root/viewtemp/viewinfo/vierdate" , sViewDate.substr(0,4)+"-"+sViewDate.substr(4,2)+"-"+sViewDate.substr(6,4));
  4160. model.makeValue("/root/viewtemp/viewinfo/recdd" , sViewDate);
  4161. model.makeValue("/root/viewtemp/viewinfo/pid" , sPid);
  4162. model.makeValue("/root/viewtemp/viewinfo/orddd" , sIndd);
  4163. model.makeValue("/root/viewtemp/viewinfo/cretno" , sCretNo);
  4164. model.makeValue("/root/viewtemp/viewinfo/recflag" , "A");
  4165. model.makeValue("/root/viewtemp/viewinfo/server" , getDomain());
  4166. model.makeValue("/root/viewtemp/viewinfo/instcd" , sInstcd);
  4167. sTopColInfo = model.getValue(xPathViewData +"[" + i + "]/recdtlist").split("^");
  4168. var jrow = 0 ;
  4169. var insRow = 0;
  4170. for(var k = 0 ; k < sTopColInfo.length ; k++) {
  4171. var insCol = (k % 9) ;
  4172. //var tmpRow = (""+k / 9+"").getTruncate();
  4173. if(jrow == 0){
  4174. if(insRow != 0){
  4175. insRow = eval(getNodesetCount("/root/viewtemp/viewinfo/viewlist")) ;
  4176. }else{
  4177. insRow = eval(getNodesetCount("/root/viewtemp/viewinfo/viewlist")) + 1 ;
  4178. model.makeValue("/root/viewtemp/viewinfo/viewlist["+insRow+"]/itemnm", "기록시간");
  4179. }
  4180. }else{
  4181. insRow = eval(getNodesetCount("/root/viewtemp/viewinfo/viewlist")) + 1 ;
  4182. model.makeValue("/root/viewtemp/viewinfo/viewlist["+insRow+"]/itemnm", " ");
  4183. insRow++;
  4184. jrow = 0;
  4185. }
  4186. var sTempNode = "/root/viewtemp/viewinfo/viewlist["+insRow +"]/col"+insCol;
  4187. model.makeValue(sTempNode, sTopColInfo[k]);
  4188. if(insCol == 8 || k == sTopColInfo.length-1){
  4189. for(var j = i + 1 ; j <= eval(getNodesetCount(xPathViewData)) ; j++) {
  4190. if(sViewDate == model.getValue(xPathViewData+"["+j+"]/recdd")) {
  4191. var sColInfo = model.getValue(xPathViewData +"[" +j+ "]/recdtlist").split("^");
  4192. var sColrsltInfo = model.getValue(xPathViewData +"[" +j+ "]/recrsltlist").split("^");
  4193. var sColrecnm = model.getValue(xPathViewData +"[" +j+ "]/recnm").split("^");
  4194. for(var d = 0 ; d < sColInfo.length ; d++){
  4195. var insSubCol = (d % 9) ;
  4196. //var tmpSubRow = (""+d / 9+"").getTruncate();
  4197. var insSubRow = insRow + j;
  4198. model.makeValue("/root/viewtemp/viewinfo/viewlist["+insSubRow+"]/itemnm", model.getValue(xPathViewData+"["+j+"]/itemnm"));
  4199. for(var z = 0 ; z <= insCol ; z++){
  4200. if(model.getValue("/root/viewtemp/viewinfo/viewlist["+insRow+"]/col"+z) == sColInfo[d]){
  4201. var sTempNode = "/root/viewtemp/viewinfo/viewlist["+insSubRow+"]/col"+z;
  4202. var sTempNodeRow = "/root/viewtemp/viewinfo/viewlist["+insSubRow+"]/row"+z;
  4203. var sTempRecNM = "";
  4204. // if( model.getValue(xPathViewData+"["+j+"]/recnm") != "") {
  4205. // sTempRecNM = "\n" + "[" + model.getValue(xPathViewData+"["+j+"]/recnm") + "]"
  4206. // }
  4207. // model.makeValue(sTempNode, sColrsltInfo[d] + sTempRecNM);
  4208. model.makeValue(sTempNode, sColrsltInfo[d]);
  4209. if( sColrecnm[d] != "") {
  4210. sTempRecNM = "[" + sColrecnm[d] + "]";
  4211. model.makeValue(sTempNodeRow, sTempRecNM);
  4212. }
  4213. jrow = j;
  4214. }
  4215. }
  4216. }
  4217. }
  4218. }
  4219. }
  4220. }
  4221. i = jrow;
  4222. }
  4223. //데이터 생성 종료시 저장 함수 호출
  4224. if(i == getNodesetCount(xPathViewData)){
  4225. fSaveViewData();
  4226. }
  4227. }
  4228. submit("TXMNR00904", false);
  4229. fMakeViewChartImg();
  4230. }
  4231. //fMakeViewChart(pSrow, pErow);
  4232. //return;
  4233. }
  4234. /**
  4235. * @group :
  4236. * @ver : 2009.12.15
  4237. * @by : 양천덕
  4238. * @---------------------------------------------------
  4239. * @type : function
  4240. * @access : public
  4241. * @desc :
  4242. * @param : 기록일별 view 정보 저장
  4243. * @return :
  4244. * @---------------------------------------------------
  4245. */
  4246. function fSaveViewData(){
  4247. //**********************************************************************************************************************
  4248. // VIEWER 인증 구현 부분
  4249. //**********************************************************************************************************************
  4250. var today = new Date();
  4251. Sign.CERT_YEAR = today.getFullYear();
  4252. Sign.CERT_MONTH = today.getMonth() + 1;
  4253. Sign.CERT_DATE = today.getDate();
  4254. if(Sign.signprocess() == true ){
  4255. var sSignDataRowCnt = eval(getNodesetCount("/root/send/signdata")) + 1;
  4256. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/pid", sPid);
  4257. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/orddd", sIndd);
  4258. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/signno", "" );
  4259. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/cretno", sCretNo);
  4260. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/recdd", sViewerRecDD);
  4261. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/rectm", "000000");
  4262. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/recsaveflag", "Y");
  4263. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/signflag", "02");
  4264. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/signgenrflag", sIOFlag);
  4265. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/formcd", "0000002443");
  4266. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/orddeptcd", model.getValue("/root/main/paminfo/pamlist/orddeptcd"));
  4267. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/orddrid", model.getValue("/root/main/paminfo/pamlist/medispclid"));
  4268. //alert( Sign.signedInfos[1]);
  4269. //alert( Sign.signedInfos[2]);
  4270. //alert( Sign.signedInfos[3]);
  4271. //alert( Sign.signedInfos[4]);
  4272. //alert( Sign.signedInfos[5]);
  4273. //▶ 인증할 데이터 정보(미기록 노드 제거된 정보)
  4274. //▶ 미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
  4275. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/signbfcnts", Sign.signedInfos[1]);
  4276. //▶ 공인인증 처리후 데이터
  4277. //model.makeValue("/root/send/signdata/signaftcnts", Sign.signedInfos[2]);
  4278. }else{
  4279. return false;
  4280. }
  4281. model.removenodeSet("/root/viewtemp/viewinfo");
  4282. //return;
  4283. //**********************************************************************************************************************
  4284. }
  4285. /**
  4286. * @group :
  4287. * @ver : 2009.12.15
  4288. * @by : 양천덕
  4289. * @---------------------------------------------------
  4290. * @type : function
  4291. * @access : public
  4292. * @desc :
  4293. * @param : 기록일별 view Chart 생성
  4294. * @return :
  4295. * @---------------------------------------------------
  4296. */
  4297. function fMakeViewChart(pSrow, pErow){
  4298. var Obj_Chart;
  4299. var sColCnt = 0;
  4300. var sRecRslt = "";
  4301. var sRecRslt1 = "";
  4302. var sChartInfo = "";
  4303. var sRecDD = "";
  4304. var sRecTM = "";
  4305. //sChartInfo = model.getValue(sCondPath+"/hourschartinfo").split(" ");
  4306. obj_viewchart.ClearChart();
  4307. //obj_viewchart.RemoveAllSeries();
  4308. //obj_viewchart.Axis.RemoveAllCustom();
  4309. //margin 값 정하기
  4310. //obj_24hourschart.Panel.MarginTop = 1;
  4311. obj_viewchart.Panel.MarginTop = 2;
  4312. obj_viewchart.Panel.MarginLeft = 12;
  4313. obj_viewchart.Panel.MarginRight = 0;
  4314. obj_viewchart.Panel.MarginBottom = 0;
  4315. //하단축 칸 수 정하기와 눈금 없애기
  4316. obj_viewchart.Axis.Bottom.TickLength = 10;
  4317. obj_viewchart.Axis.Bottom.SetMinMax (0, 24); //하루 동안 좌표를 표현
  4318. obj_viewchart.Axis.Bottom.Increment = 1;
  4319. obj_viewchart.Axis.Bottom.MinorTickCount = 1;
  4320. obj_viewchart.Axis.Bottom.Labels.Visible = true;
  4321. obj_viewchart.Axis.Bottom.Labels.Font.Color = 0x000000;
  4322. for(var i = 0 ; i < 24 ; i ++){
  4323. obj_viewchart.Axis.Bottom.Labels.Add (i, i);
  4324. }
  4325. Obj_Chart = obj_viewchart;
  4326. sColCnt = 24*60;
  4327. Obj_Chart.Axis.Bottom.AxisPen.Color = 0x000000;
  4328. Obj_Chart.Axis.Bottom.Labels.Font.Color = 0xffffff; //Obj_Chart.Panel.Color; //하단 축 눈금 명칭 색을 바탕색으로 하여 보이지 않게 처리
  4329. //Obj_Chart.Axis.Bottom.Labels.Font.Color = 0x000000
  4330. Obj_Chart.Header.Visible = false;
  4331. Obj_Chart.Aspect.View3D = 0; //2d 로 표현하기
  4332. Obj_Chart.Zoom.Enable = false; // zoom 사용하지 않기
  4333. Obj_Chart.Scroll.Enable = false; // scroll 사용하지 않기
  4334. Obj_Chart.Legend.Visible = false; // 그래프 참조 박스 띄우지 않기
  4335. Obj_Chart.Panel.Gradient.Visible = true; // 페널에 그라디언트 적용
  4336. Obj_Chart.Panel.Gradient.StartColor = 0xffffff;
  4337. Obj_Chart.Panel.Gradient.EndColor=0xffffff;
  4338. Obj_Chart.Environment.MouseWheelScroll = false;
  4339. // 혈압을 나타내는 막대그래프를 먼저 그려야 맥박, 체온,호흡 점이 막대 그래프에 가려지지 않는다.
  4340. var cus_axis1 = Obj_Chart.Axis.AddCustom(false); // 혈압축
  4341. Obj_Chart.Axis.Custom(0).AxisPen.Color = 0x0000ff;
  4342. Obj_Chart.Axis.Custom(0).Title.Caption = "혈압/맥박"
  4343. Obj_Chart.Axis.Custom(0).Title.Font.Size = 8;
  4344. Obj_Chart.Axis.Custom(0).Title.Font.Bold = true;
  4345. Obj_Chart.Axis.Custom(0).Title.Angle = 90;
  4346. Obj_Chart.Axis.Custom(0).PositionPercent = 0;
  4347. Obj_Chart.Axis.Custom(0).StartPosition = 0;
  4348. Obj_Chart.Axis.Custom(0).EndPosition = 100;
  4349. Obj_Chart.Axis.Custom(0).Automatic = false;
  4350. Obj_Chart.Axis.Custom(0).Maximum = 200;
  4351. Obj_Chart.Axis.Custom(0).Minimum = 20;
  4352. Obj_Chart.Axis.Custom(0).Increment = 20;
  4353. var cus_axis2 = Obj_Chart.Axis.AddCustom(false); // 호흡축
  4354. Obj_Chart.Axis.Custom(1).AxisPen.Color = 0x00ff00;
  4355. Obj_Chart.Axis.Custom(1).Title.Caption = "호흡";
  4356. Obj_Chart.Axis.Custom(1).Title.Font.Size = 8;
  4357. Obj_Chart.Axis.Custom(1).Title.Font.Bold = true;
  4358. Obj_Chart.Axis.Custom(1).Title.Angle = 90;
  4359. Obj_Chart.Axis.Custom(1).PositionPercent = -10;
  4360. Obj_Chart.Axis.Custom(1).Automatic = false;
  4361. Obj_Chart.Axis.Custom(1).Maximum = 90;
  4362. Obj_Chart.Axis.Custom(1).Minimum = 0;
  4363. Obj_Chart.Axis.Custom(1).Increment = 10;
  4364. var cus_axis3 = Obj_Chart.Axis.AddCustom(false); // 체온축
  4365. Obj_Chart.Axis.Custom(2).AxisPen.Color = 0xff0000;
  4366. Obj_Chart.Axis.Custom(2).Title.Caption = "체온";
  4367. Obj_Chart.Axis.Custom(2).Title.Font.Size = 8;
  4368. Obj_Chart.Axis.Custom(2).Title.Font.Bold = true;
  4369. Obj_Chart.Axis.Custom(2).Title.Angle = 90;
  4370. Obj_Chart.Axis.Custom(2).PositionPercent = -5;
  4371. Obj_Chart.Axis.Custom(2).Automatic = false;
  4372. Obj_Chart.Axis.Custom(2).Maximum = 43;
  4373. Obj_Chart.Axis.Custom(2).Minimum = 34;
  4374. Obj_Chart.Axis.Custom(2).Increment = 1;
  4375. Obj_Chart.AddSeries (11); // 혈압
  4376. Obj_Chart.AddSeries (0); // 맥박
  4377. Obj_Chart.AddSeries (0); // 호흡
  4378. Obj_Chart.AddSeries (0); // 체온
  4379. Obj_Chart.AddSeries (0); // 38선
  4380. Obj_Chart.AddSeries (0); // BP(M)
  4381. //Obj_Chart.AddSeries (11); // OP
  4382. Obj_Chart.Series(0).VerticalAxisCustom = cus_axis1; // 혈압
  4383. Obj_Chart.Series(1).VerticalAxisCustom = cus_axis1; // 맥박
  4384. Obj_Chart.Series(2).VerticalAxisCustom = cus_axis2; // 호흡
  4385. Obj_Chart.Series(3).VerticalAxisCustom = cus_axis3; // 체온
  4386. Obj_Chart.Series(4).VerticalAxisCustom = cus_axis1; // BP(M)
  4387. Obj_Chart.Series(5).VerticalAxisCustom = cus_axis3; // 38선
  4388. //Obj_Chart.Series(5).VerticalAxisCustom = cus_axis1; // OP
  4389. //라인의 굵기를 정해준다.
  4390. Obj_Chart.Series(0).asCandle.CandleStyle = 2;
  4391. Obj_Chart.Series(0).asCandle.CandleWidth = 3;
  4392. Obj_Chart.Series(1).asLine.LinePen.Width = 1;
  4393. Obj_Chart.Series(2).asLine.LinePen.Width = 1;
  4394. Obj_Chart.Series(3).asLine.LinePen.Width = 1;
  4395. Obj_Chart.Series(4).asLine.LinePen.Width = 1;
  4396. Obj_Chart.Series(4).asLine.LinePen.style = 7;
  4397. Obj_Chart.Series(5).asLine.LinePen.Width = 1;
  4398. //Obj_Chart.Series(5).asCandle.CandleStyle = 2;
  4399. //Obj_Chart.Series(5).asCandle.CandleWidth = 4;
  4400. Obj_Chart.Series(0).Color = 0x000000; //black 혈압
  4401. Obj_Chart.Series(1).Color = 0x0000ff; //red 맥박
  4402. Obj_Chart.Series(2).Color = 0x00ff00; //green 호흡
  4403. Obj_Chart.Series(3).Color = 0xff0000; //blue 체온
  4404. Obj_Chart.Series(4).Color = 0x000000; //black BP(M)
  4405. Obj_Chart.Series(5).Color = 0x000000; //black 38선
  4406. //Obj_Chart.Series(5).Color = 0x000000; //black OP
  4407. Obj_Chart.Series(1).asLine.Pointer.Visible = true;
  4408. Obj_Chart.Series(1).asLine.Pointer.Style = 1;
  4409. Obj_Chart.Series(1).asLine.Pointer.VerticalSize = 3;
  4410. Obj_Chart.Series(1).asLine.Pointer.HorizontalSize = 3;
  4411. Obj_Chart.Series(2).asLine.Pointer.Visible = true;
  4412. Obj_Chart.Series(2).asLine.Pointer.Style = 0;
  4413. Obj_Chart.Series(2).asLine.Pointer.VerticalSize = 2;
  4414. Obj_Chart.Series(2).asLine.Pointer.HorizontalSize = 2;
  4415. Obj_Chart.Series(3).asLine.Pointer.Visible = true;
  4416. Obj_Chart.Series(3).asLine.Pointer.Style = 2;
  4417. Obj_Chart.Series(3).asLine.Pointer.VerticalSize = 2;
  4418. Obj_Chart.Series(3).asLine.Pointer.HorizontalSize = 2;
  4419. Obj_Chart.Series(4).asLine.Pointer.Visible = true;
  4420. Obj_Chart.Series(4).asLine.Pointer.Pen.color = 0x000000;
  4421. Obj_Chart.Series(4).asLine.Pointer.Style = 5;
  4422. Obj_Chart.Series(4).asLine.Pointer.VerticalSize = 2;
  4423. Obj_Chart.Series(4).asLine.Pointer.HorizontalSize = 2;
  4424. //depth 정하기
  4425. Obj_Chart.Series(1).Depth = 1;
  4426. Obj_Chart.Series(2).Depth = 1;
  4427. Obj_Chart.Series(3).Depth = 1;
  4428. Obj_Chart.Series(4).Depth = 1;
  4429. Obj_Chart.Series(5).Depth = 3;
  4430. //Obj_Chart.Series(5).Depth = 5;
  4431. //Obj_Chart.Series(6).Depth = 6;
  4432. //38선 그리기
  4433. //Obj_Chart.Series(5).AddXY (-5, 38.5, "", Obj_Chart.Series(5).Color );
  4434. //Obj_Chart.Series(5).AddXY (70, 38.5, "", Obj_Chart.Series(5).Color );
  4435. //혈압 Candle 색설정
  4436. Obj_Chart.Series(0).asCandle.UpCloseColor = 0xffffff;
  4437. Obj_Chart.Series(0).asCandle.DownCloseColor = 0x0000ff;
  4438. //그래프 표시
  4439. //Header Info
  4440. var sChartAllDateList = new Array();
  4441. //Date Info
  4442. var sChartDate1List = new Array();
  4443. var sChartDate2List = new Array();
  4444. var sChartDate3List = new Array();
  4445. var sChartDate4List = new Array();
  4446. var sChartDate5List = new Array();
  4447. var sChartDate6List = new Array();
  4448. //Result Info
  4449. var sChartRslt1List = new Array();
  4450. var sChartRslt2List = new Array();
  4451. var sChartRslt3List = new Array();
  4452. var sChartRslt4List = new Array();
  4453. var sChartRslt5List = new Array();
  4454. var sChartRslt6List = new Array();
  4455. var sRecData1 = "";
  4456. var sRecData2 = "";
  4457. var sRecData3 = "";
  4458. var sRecData4 = "";
  4459. var sRecData5 = "";
  4460. var sRecData6 = "";
  4461. //instance 에서 그래프에 표기할 시간, 기록값 추출
  4462. for(var i =pSrow ; i <= pErow ; i++){
  4463. if(model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/leftaxis") == "-" &&
  4464. model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/itemcd") == "-" ){
  4465. sChartAllDateList = model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/recdtlist").split("^");
  4466. }
  4467. if(model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/leftaxis") == "1"){
  4468. sChartDate1List = model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/recdtlist").split("^");
  4469. sChartRslt1List = model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/recrsltlist").split("^");
  4470. }
  4471. if(model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/leftaxis") == "2"){
  4472. sChartDate2List = model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/recdtlist").split("^");
  4473. sChartRslt2List = model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/recrsltlist").split("^");
  4474. }
  4475. if(model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/leftaxis") == "3"){
  4476. sChartDate3List = model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/recdtlist").split("^");
  4477. sChartRslt3List = model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/recrsltlist").split("^");
  4478. }
  4479. if(model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/leftaxis") == "4"){
  4480. sChartDate4List = model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/recdtlist").split("^");
  4481. sChartRslt4List = model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/recrsltlist").split("^");
  4482. }
  4483. if(model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/leftaxis") == "5"){
  4484. sChartDate5List = model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/recdtlist").split("^");
  4485. sChartRslt5List = model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/recrsltlist").split("^");
  4486. }
  4487. if(model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/leftaxis") == "6"){
  4488. sChartDate6List = model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/recdtlist").split("^");
  4489. sChartRslt6List = model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/recrsltlist").split("^");
  4490. }
  4491. }
  4492. for(var i = 0 ; i < sChartAllDateList.length ; i++){
  4493. sRecData1 = "";
  4494. sRecData2 = "";
  4495. sRecData3 = "";
  4496. sRecData4 = "";
  4497. sRecData5 = "";
  4498. sRecData6 = "";
  4499. //if(sChartAllDateList[i].substr(3,2) == "00" || sChartAllDateList[i].substr(3,2) == "30"){
  4500. var sCoordinate = eval(sChartAllDateList[i].substr(0,2)) + eval(sChartAllDateList[i].substr(3,2) / 60) ;
  4501. //시간별 기록 데이터 추출
  4502. for(var list1 = 0 ; list1 < sChartDate1List.length ; list1++){
  4503. if(sChartAllDateList[i] == sChartDate1List[list1]){
  4504. sRecData1 = sChartRslt1List[list1];
  4505. }
  4506. }
  4507. for(var list2 = 0 ; list2 < sChartDate2List.length ; list2++){
  4508. if(sChartAllDateList[i] == sChartDate2List[list2]){
  4509. sRecData2 = sChartRslt2List[list2];
  4510. }
  4511. }
  4512. for(var list3 = 0 ; list3 < sChartDate3List.length ; list3++){
  4513. if(sChartAllDateList[i] == sChartDate3List[list3]){
  4514. sRecData3 = sChartRslt3List[list3];
  4515. }
  4516. }
  4517. for(var list4 = 0 ; list4 < sChartDate4List.length ; list4++){
  4518. if(sChartAllDateList[i] == sChartDate4List[list4]){
  4519. sRecData4 = sChartRslt4List[list4];
  4520. }
  4521. }
  4522. for(var list5 = 0 ; list5 < sChartDate5List.length ; list5++){
  4523. if(sChartAllDateList[i] == sChartDate5List[list5]){
  4524. sRecData5 = sChartRslt5List[list5];
  4525. }
  4526. }
  4527. for(var list6 = 0 ; list6 < sChartDate6List.length ; list6++){
  4528. if(sChartAllDateList[i] == sChartDate6List[list6]){
  4529. sRecData6 = sChartRslt6List[list6];
  4530. }
  4531. }
  4532. //그래프에 데이터 입력
  4533. if(sRecData1 != "" && sRecData2 != "" && fIsNumber(sRecData1) == true && fIsNumber(sRecData2) == true){
  4534. Obj_Chart.Series(0).asCandle.AddCandle (eval(sCoordinate), eval(sRecData2), 0, 0, eval(sRecData1));
  4535. }
  4536. if(sRecData3 != "" && fIsNumber(sRecData3) == true){
  4537. Obj_Chart.Series(1).AddXY (eval(sCoordinate), eval(sRecData3), "", Obj_Chart.Series(1).Color);
  4538. }
  4539. if(sRecData4 != "" && fIsNumber(sRecData4) == true){
  4540. Obj_Chart.Series(2).AddXY (eval(sCoordinate), eval(sRecData4), "", Obj_Chart.Series(2).Color);
  4541. }
  4542. if(sRecData5 != "" && fIsNumber(sRecData5) == true){
  4543. Obj_Chart.Series(3).AddXY (eval(sCoordinate), eval(sRecData5), "", Obj_Chart.Series(3).Color);
  4544. }
  4545. if(sRecData6 != "" && fIsNumber(sRecData6) == true){
  4546. Obj_Chart.Series(4).AddXY (eval(sCoordinate), eval(sRecData6), "", Obj_Chart.Series(4).Color);
  4547. }
  4548. //}
  4549. }
  4550. //그래프 이미지 특정 폴더에 저장
  4551. var fso, fldr;
  4552. fladr = "C:/Program Files/himed/vitaltempimage";
  4553. fso = new ActiveXObject("Scripting.FileSystemObject");
  4554. if (fso.FolderExists(fladr)) {
  4555. //IMAGE FILE 설정( PARAM : File Name ; Gray ; Performance ; Quality ; Width ; Height )
  4556. //File 크기 조절 : Quality 및 Width, Height 설정(Width, Height 변경시 그래프 설정도 변경해야 함.)
  4557. Obj_Chart.Export.SaveToJPEGFile(fladr+"/tchart.jpeg", false, 0, 30, 1155, 300 );
  4558. //sChartNum++;
  4559. } else {
  4560. fldr = fso.CreateFolder(fladr);
  4561. Obj_Chart.Export.SaveToJPEGFile(fladr+"/tchart.jpeg", false, 0, 30, 1155, 300 );
  4562. //sChartNum++;
  4563. }
  4564. var file = fladr+"/tchart.jpeg";
  4565. //var f = fso.GetFile(file);
  4566. //fChangeImage(file);
  4567. var pos = file.lastIndexOf("\\");
  4568. var localFileName= file.substring(pos+1, file.length);
  4569. img_tmp.src = "";
  4570. img_tmp.src = file;
  4571. var ldata = img_tmp.getbase64data();
  4572. //var data = file.getbase64data();
  4573. var sImgDataRowCnt = eval(getNodesetCount("/root/send/imginfo")) + 1;
  4574. model.makeValue("/root/send/imginfo["+sImgDataRowCnt+"]/pid", sPid);
  4575. model.makeValue("/root/send/imginfo["+sImgDataRowCnt+"]/orddd", sIndd);
  4576. model.makeValue("/root/send/imginfo["+sImgDataRowCnt+"]/cretno", sCretNo);
  4577. model.makeValue("/root/send/imginfo["+sImgDataRowCnt+"]/recdd", sImageRecDD);
  4578. model.makeValue("/root/send/imginfo["+sImgDataRowCnt+"]/recflag", "A");
  4579. model.makeValue("/root/send/imginfo["+sImgDataRowCnt+"]/imgrslt", ldata);
  4580. model.makeValue("/root/send/imginfo["+sImgDataRowCnt+"]/imght", "1155");
  4581. model.makeValue("/root/send/imginfo["+sImgDataRowCnt+"]/imgwidt", "300");
  4582. setImageRefInstance("/root/send/imginfo["+sImgDataRowCnt+"]/imgrslt");
  4583. //getDomain()
  4584. }
  4585. /**
  4586. * @group :
  4587. * @ver : 2009.12.15
  4588. * @by : 양천덕
  4589. * @---------------------------------------------------
  4590. * @type : function
  4591. * @access : public
  4592. * @desc :
  4593. * @param : 기록일별 view img 정보 생성 및 저장
  4594. * @return :
  4595. * @---------------------------------------------------
  4596. */
  4597. function fMakeViewChartImg(){
  4598. model.removenodeSet("/root/send");
  4599. sImageRecDD = "";
  4600. var sSrow = "";
  4601. var sErow = "";
  4602. //sChartNum = 1;
  4603. for(var i = 1 ; i <= eval(getNodesetCount("/root/temp/clincobsrecinfo/rtnsigndata")) ; i++){
  4604. if(model.getValue("/root/temp/clincobsrecinfo/rtnsigndata[" +i+ "]/itemcd") == "-"){
  4605. if(sImageRecDD != ""){
  4606. sErow = i -1;
  4607. fMakeViewChart(sSrow, sErow);
  4608. sImageRecDD = model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/recdd");
  4609. sSrow = "";
  4610. sErow = "";
  4611. sSrow = i;
  4612. }else{
  4613. sImageRecDD = model.getValue("/root/temp/clincobsrecinfo/rtnsigndata["+i+"]/recdd");
  4614. sSrow = i;
  4615. }
  4616. }
  4617. //데이터 생성 종료시 저장 함수 호출
  4618. if(i == getNodesetCount("/root/temp/clincobsrecinfo/rtnsigndata")){
  4619. sErow = i;
  4620. fMakeViewChart(sSrow, sErow);
  4621. sSrow = "";
  4622. sErow = "";
  4623. }
  4624. }
  4625. submit("TXMNR00905", false);
  4626. model.removenodeSet("/root/send");
  4627. }
  4628. /**
  4629. * @group :
  4630. * @ver : 2009.12.15
  4631. * @by : 양천덕
  4632. * @---------------------------------------------------
  4633. * @type : function
  4634. * @access : public
  4635. * @desc :
  4636. * @param : 화면 초기화
  4637. * @return :
  4638. * @---------------------------------------------------
  4639. */
  4640. function fInitViewInfo(){
  4641. if(getNodesetCount("/root/temp/cond/patientgrup") < 1){
  4642. return;
  4643. }
  4644. fInitTopInfo();
  4645. model.removenodeset(xHoursClincObsRecList);
  4646. model.removenodeset(xDaysClincObsRecList);
  4647. model.removenodeset(xStnddayClincObsRecListPath);
  4648. model.removenodeset(xFormerdayClincObsRecListPath);
  4649. model.removenodeSet(xClincObsRecListPath);
  4650. model.removenodeset(xFormerRecPath);
  4651. model.removenodeset(xDayCountListPath);
  4652. model.removenodeset(xFormerDayCountListPath);
  4653. model.removenodeset(xPamInfoPath);
  4654. model.removenodeset(xRecUserListPath);
  4655. model.removenodeset(sAttrListPath1);
  4656. model.removenodeset(xFormerAttrListPath1);
  4657. model.removenodeset(xFormerRecUserListPath);
  4658. model.removenodeset("/root/init/clsinfo");
  4659. model.removeNode("/root/temp/cond/patientgrup");
  4660. model.removeNode("/root/main/patdetlinfo");
  4661. grd_24hoursclincobsreclist.caption = "";
  4662. //grd_4daysclincobsreclist.caption = "";
  4663. //grd_formersclincobsreclist.caption = "";
  4664. //grd_stndclincobsreclist.caption = "";
  4665. cpt_vsinfo.value = "";
  4666. cmb_mypatlist.value = "";
  4667. btn_24hoursdetailbefore.visible = false;
  4668. btn_24hoursdetailafter.visible = false;
  4669. fMakeChart("init24hours");
  4670. //fMakeChart("init4days");
  4671. if(getNodesetCount("/root/main/patinfo") > 0){
  4672. model.setValue("/root/main/patinfo/pid", "");
  4673. model.setValue("/root/main/patinfo/indd", "");
  4674. model.setValue("/root/main/patinfo/cretno", "");
  4675. model.setValue("/root/main/patinfo/ordtype", "");
  4676. model.setValue("/root/main/patinfo/indschacptstat", "");
  4677. model.setValue("/root/main/patinfo/dschdd", "");
  4678. model.setValue("/root/main/patinfo/eroutdd", "");
  4679. model.setValue("/root/main/patinfo/patnm", "");
  4680. model.setValue("/root/main/patinfo/sexage", "");
  4681. model.setValue("/root/main/patinfo/wardcd", "");
  4682. model.setValue("/root/main/patinfo/roomcd", "");
  4683. }
  4684. sPid == "";
  4685. sIndd == "";
  4686. sCretNo == "";
  4687. sInstcd == "";
  4688. sIOFlag == "";
  4689. sWardCD == "";
  4690. sRoomCD == "";
  4691. sIndschacptstat == "";
  4692. sDschdd == "";
  4693. sOrdDeptcd == "";
  4694. sMedispclid == "";
  4695. model.setValue(sCondPath+"/pid", "");
  4696. //fChkTgtPatInfo("disable");
  4697. }
  4698. /**
  4699. * @group :
  4700. * @ver : 2009.12.15
  4701. * @by : 양천덕
  4702. * @---------------------------------------------------
  4703. * @type : function
  4704. * @access : public
  4705. * @desc : 구분자로 분리된 특정자료를 Reading
  4706. * @param : pData : 원본데이터
  4707. * @param : pRow : 찾고자 하는 위치의 row
  4708. * @param : pCol : 찾고자 하는 위치의 column
  4709. * @return : 해당 row, column의 문자열
  4710. * @---------------------------------------------------
  4711. */
  4712. function fGetArrayDataTPR(pData, pRow, pCol){
  4713. var rowSep = "▩"; // row 구분자
  4714. var colSep = "▦"; // column 구분자;
  4715. var arrRow = pData.split(rowSep);
  4716. if(arrRow.length <= pRow) return "";
  4717. var arrCol = arrRow[pRow].split(colSep);
  4718. if(arrCol.length <= pCol) return "";
  4719. return arrCol[pCol];
  4720. }
  4721. /**
  4722. * @group :
  4723. * @ver : 2009.12.15
  4724. * @by : 양천덕
  4725. * @---------------------------------------------------
  4726. * @type : function
  4727. * @access : public
  4728. * @desc : 임상관찰기록 일별 전체 조회
  4729. * @param :
  4730. * @return :
  4731. * @---------------------------------------------------
  4732. */
  4733. function fPopupSearchRecData(){
  4734. var sIndex = cmb_patlist.focusIndex + 1
  4735. var sParam_Header = "pid▦srchdd▩";
  4736. var sParam_Data = model.getValue(sCondPath+"/pid") + "▦"
  4737. + model.getValue(sCondPath+"/recdd") + "▩";
  4738. setParameter("SPMNR06300_Param",sParam_Header+sParam_Data);
  4739. open("SPMNR06300", "1", event.clientX , event.clientY);
  4740. //parameter 정보 초기화
  4741. //clearParameter("SPMNR06300_Param");
  4742. }
  4743. /**
  4744. * @group :
  4745. * @ver : 2009.12.15
  4746. * @by : 양천덕
  4747. * @---------------------------------------------------
  4748. * @type : function
  4749. * @access : public
  4750. * @desc : 임상관찰기록 일별 전체 조회화면 Parameter 초기화 함수
  4751. * 일별 전체 조회 화면에서 초기화함수 호출.
  4752. * @param :
  4753. * @return :
  4754. * @---------------------------------------------------
  4755. */
  4756. function fPopupSearchRecDataInitParam(){
  4757. //parameter 정보 초기화
  4758. clearParameter("SPMNR06300_Param");
  4759. }
  4760. /**
  4761. * @group :
  4762. * @ver : 2009.12.22
  4763. * @by : 양천덕
  4764. * @---------------------------------------------------
  4765. * @type : function
  4766. * @access : public
  4767. * @desc : Flow Sheet 환경 설정 화면 Open
  4768. * @param :
  4769. * @return :
  4770. * @---------------------------------------------------
  4771. */
  4772. function fPopupFlowSheetSetting(){
  4773. modal("SMMNR10200", "1", event.clientX , event.clientY);
  4774. window.reload();
  4775. }
  4776. /**
  4777. * @group :
  4778. * @ver : 2010.01.20
  4779. * @by : 양천덕
  4780. * @---------------------------------------------------
  4781. * @type : function
  4782. * @access : public
  4783. * @desc : FlowSheet 그리드 행추가 로직
  4784. * @param :
  4785. * @return :
  4786. * @---------------------------------------------------
  4787. */
  4788. function fMakeGridNode(pFlag, pAddRow, pItemnm, pRecFlag, pDepth, pLnkBizCd, pStyle, pColor, pReadOnly, pCareRecSeqNo, pTotalIdx){
  4789. switch(pFlag){
  4790. case "24hours" :
  4791. model.makeNode(xHoursClincObsRecList+"["+pAddRow+"]");
  4792. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/itemnm" , pItemnm );
  4793. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt1" , "" );
  4794. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt2" , "" );
  4795. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt3" , "" );
  4796. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt4" , "" );
  4797. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt5" , "" );
  4798. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt6" , "" );
  4799. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt7" , "" );
  4800. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt8" , "" );
  4801. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt9" , "" );
  4802. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt10" , "" );
  4803. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt11" , "" );
  4804. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt12" , "" );
  4805. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt13" , "" );
  4806. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt14" , "" );
  4807. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt15" , "" );
  4808. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt16" , "" );
  4809. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt17" , "" );
  4810. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt18" , "" );
  4811. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt19" , "" );
  4812. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt20" , "" );
  4813. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt21" , "" );
  4814. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt22" , "" );
  4815. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt23" , "" );
  4816. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt24" , "" );
  4817. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recflag" , pRecFlag );
  4818. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/attrcd" , "" );
  4819. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/itemcd" , "" );
  4820. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/itemseqno" , "" );
  4821. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/depth" , pDepth );
  4822. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recfromdt" , "" );
  4823. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/reccharflag" , "" );
  4824. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/rectodt" , "" );
  4825. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/supcd" , "" );
  4826. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/carerecseqno" , "" );
  4827. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/leftaxis" , "" );
  4828. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/graphappyn" , "" );
  4829. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/color" , pColor );
  4830. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/totalyn" , "" );
  4831. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/totalnm" , "" );
  4832. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/lnkbizcd" , pLnkBizCd );
  4833. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/style" , pStyle );
  4834. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/subtotalyn" , "" );
  4835. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/subtotalnm" , "" );
  4836. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/runtotalyn" , "" );
  4837. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/runtotalnm" , "" );
  4838. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/fluidstat" , "" );
  4839. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/readonlyyn" , pReadOnly );
  4840. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/lnkcarerecseqno" , pCareRecSeqNo );
  4841. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/totalidx" , pTotalIdx );
  4842. model.makeValue(xHoursClincObsRecList+"["+pAddRow+"]/recfluidunit" , "" );
  4843. break;
  4844. case "24hours_Init" :
  4845. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt1" , "" );
  4846. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt2" , "" );
  4847. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt3" , "" );
  4848. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt4" , "" );
  4849. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt5" , "" );
  4850. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt6" , "" );
  4851. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt7" , "" );
  4852. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt8" , "" );
  4853. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt9" , "" );
  4854. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt10" , "" );
  4855. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt11" , "" );
  4856. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt12" , "" );
  4857. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt13" , "" );
  4858. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt14" , "" );
  4859. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt15" , "" );
  4860. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt16" , "" );
  4861. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt17" , "" );
  4862. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt18" , "" );
  4863. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt19" , "" );
  4864. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt20" , "" );
  4865. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt21" , "" );
  4866. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt22" , "" );
  4867. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt23" , "" );
  4868. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/recrslt24" , "" );
  4869. model.setValue(xHoursClincObsRecList+"["+pAddRow+"]/fluidstat" , "" );
  4870. break;
  4871. }
  4872. }
  4873. /**
  4874. * @group :
  4875. * @ver : 2010.01.26
  4876. * @by : 양천덕
  4877. * @---------------------------------------------------
  4878. * @type : function
  4879. * @access : public
  4880. * @desc :
  4881. * @param : 확장명/부위 정보 입력 popup 호출
  4882. * @return :
  4883. * @---------------------------------------------------
  4884. */
  4885. function fPopupInputExtNm(){
  4886. var iRow = grd_24hoursclincobsreclist.row;
  4887. var sCareRecSeqNo = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("carerecseqno"));
  4888. var sItemnm = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("itemnm"));
  4889. var sItemLnkBizCd = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("lnkbizcd"));
  4890. var sItemCd = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("itemcd"));
  4891. var sRecFluidUnit = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("recfluidunit"));
  4892. var sItemOrigin = "00";
  4893. var sParamInfo = "";
  4894. var sRtnParamInfo = "";
  4895. if(sItemLnkBizCd == "11" || sItemLnkBizCd == "12" ) sItemOrigin = "04";
  4896. sParamInfo = "upd▦";
  4897. setParameter("SPMNR06100_Param",sParamInfo+sItemOrigin+"▦"+sCareRecSeqNo+"▦"+sPid+"▦"+sIndd+"▦"+sCretNo+"▦"+sItemnm+"▦"+sItemnm+"▦"+sItemCd+"▦"+sRecFluidUnit+"▩");
  4898. modal("SPMNR06100", "1", event.clientX , event.clientY);
  4899. sRtnParamInfo = getParameter("SPMNR06100_RtnParam");
  4900. if(sRtnParamInfo == "") return;
  4901. grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("itemnm")) = fGetArrayDataTPR(sRtnParamInfo, 0, 3);
  4902. grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("recfluidunit")) = fGetArrayDataTPR(sRtnParamInfo, 0, 4);
  4903. grd_24hoursclincobsreclist.valueMatrix(grd_24hoursclincobsreclist.findRow(sCareRecSeqNo, iRow, grd_24hoursclincobsreclist.colRef("lnkcarerecseqno")), grd_24hoursclincobsreclist.colRef("itemnm")) = fGetArrayDataTPR(sRtnParamInfo, 0, 4);
  4904. //parameter 정보 초기화
  4905. clearParameter("SPMNR06100_Param");
  4906. clearParameter("SPMNR06100_RtnParam");
  4907. }
  4908. /**
  4909. * @group :
  4910. * @ver : 2010.01.26
  4911. * @by : 양천덕
  4912. * @---------------------------------------------------
  4913. * @type : function
  4914. * @access : public
  4915. * @desc :
  4916. * @param : 기타기록(면회정보, 출생일) 입력 Popup
  4917. * @return :
  4918. * @---------------------------------------------------
  4919. */
  4920. function fPopupEtcRec(pFlag){
  4921. var sRecDD = getCurrentDate();
  4922. var sViewFlag = pFlag;
  4923. var sParamInfo = "";
  4924. setParameter("SPMNR10300_Param", sRecDD+"▦"+sViewFlag+"▦"+sPid+"▦"+sIndd+"▦"+sCretNo+"▦"+sIOFlag+"▩");
  4925. modal("SPMNR10300","1", event.screenX, event.screenY);
  4926. clearParameter("SPMNR10300_Param");
  4927. model.removenode("/root/send");
  4928. model.makeValue("/root/send/pid", sPid);
  4929. model.makeValue("/root/send/indd", sIndd);
  4930. model.makeValue("/root/send/cretno", sCretNo);
  4931. model.makeValue("/root/send/instcd", sInstcd);
  4932. model.makeValue("/root/send/ioflag", sIOFlag);
  4933. model.makeValue("/root/send/dayinfo", ipt_24hoursrecdd.value);
  4934. submit("TRMNR10102");
  4935. fControlPatInfo();
  4936. }
  4937. /**
  4938. * @group :
  4939. * @ver : 2010.07.19
  4940. * @by : 양천덕
  4941. * @---------------------------------------------------
  4942. * @type : function
  4943. * @access : public
  4944. * @desc :
  4945. * @param : 환자 면회 정보 입력 / 조회 Popup
  4946. * @return :
  4947. * @---------------------------------------------------
  4948. */
  4949. function fPopupPatMeetRec(){
  4950. var sRecDD = ipt_24hoursrecdd.value;
  4951. var sViewFlag = "01";
  4952. var sParamInfo = "";
  4953. setParameter("SPMNR10800_Param", sRecDD.substr(0, 6)+"▦"+sViewFlag+"▦"+sPid+"▦"+sIndd+"▦"+sCretNo+"▦"+sIOFlag+"▦"+sRecDD+"▦"+sPatNm+"▩");
  4954. modal("SPMNR10800","1", event.screenX, event.screenY);
  4955. clearParameter("SPMNR10800_Param");
  4956. model.removenode("/root/send");
  4957. model.makeValue("/root/send/pid", sPid);
  4958. model.makeValue("/root/send/indd", sIndd);
  4959. model.makeValue("/root/send/cretno", sCretNo);
  4960. model.makeValue("/root/send/instcd", sInstcd);
  4961. model.makeValue("/root/send/ioflag", sIOFlag);
  4962. model.makeValue("/root/send/dayinfo", ipt_24hoursrecdd.value);
  4963. submit("TRMNR10102");
  4964. fControlPatInfo();
  4965. }
  4966. /**
  4967. * @group :
  4968. * @ver : 2010.07.19
  4969. * @by : 양천덕
  4970. * @---------------------------------------------------
  4971. * @type : function
  4972. * @access : public
  4973. * @desc :
  4974. * @param : 근무 담당자 정보 입력 / 조회 Popup
  4975. * @return :
  4976. * @---------------------------------------------------
  4977. */
  4978. function fPopupDutyUserRec(){
  4979. var sRecDD = ipt_24hoursrecdd.value;
  4980. var sViewFlag = "03";
  4981. var sParamInfo = "";
  4982. setParameter("SPMNR10700_Param", sRecDD.substr(0, 6)+"▦"+sViewFlag+"▦"+sPid+"▦"+sIndd+"▦"+sCretNo+"▦"+sIOFlag+"▦"+sRecDD+"▦"+sPatNm+"▩");
  4983. modal("SPMNR10700","1", event.screenX, event.screenY);
  4984. clearParameter("SPMNR10700_Param");
  4985. model.removenode("/root/send");
  4986. model.makeValue("/root/send/pid", sPid);
  4987. model.makeValue("/root/send/indd", sIndd);
  4988. model.makeValue("/root/send/cretno", sCretNo);
  4989. model.makeValue("/root/send/instcd", sInstcd);
  4990. model.makeValue("/root/send/ioflag", sIOFlag);
  4991. model.makeValue("/root/send/dayinfo", ipt_24hoursrecdd.value);
  4992. submit("TRMNR10102");
  4993. fControlPatInfo();
  4994. }
  4995. /**
  4996. * @group :
  4997. * @ver : 2010.01.26
  4998. * @by : 양천덕
  4999. * @---------------------------------------------------
  5000. * @type : function
  5001. * @access : public
  5002. * @desc :
  5003. * @param : Fluid기록 입력 화면 호출
  5004. * @return :
  5005. * @---------------------------------------------------
  5006. */
  5007. function fPopupFluid(){
  5008. //화면 재조회 popup호출을 할 경우 미기록 정보 체크 함수
  5009. //fSearchClincObsRec 함수를 호출하는 함수에 추가 필요
  5010. //해당 함수는 필요가 없으나 예외 처리로 넣어둠.
  5011. if( fChkSaveData() == false ) return;
  5012. var sSearchDataHeader = "carerecseqno▦fromdt▦todt▦pid▦indd▦cretno▦wardcd▦roomcd▦ioflag▦orddeptcd▦orddrid▦recfluidunit▩";
  5013. var sParamValue = "";
  5014. iRow = grd_24hoursclincobsreclist.row;
  5015. iCol = grd_24hoursclincobsreclist.col;
  5016. iNodeRowValue = iRow - grd_24hoursclincobsreclist.fixedRows + 1;
  5017. var sCareRecSeqNo = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("carerecseqno"));
  5018. var sBaseFromDt = sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]+"00";
  5019. var sBaseToDt = sHeader[1][iCol+1]+sHeader[3][iCol+1]+sHeader[4][iCol+1]+"00";
  5020. var sRecFluidUnit = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("recfluidunit"));
  5021. sParamValue += sCareRecSeqNo +"▦"
  5022. + sBaseFromDt +"▦"
  5023. + sBaseToDt +"▦"
  5024. + sPid +"▦"
  5025. + sIndd +"▦"
  5026. + sCretNo +"▦"
  5027. + sWardCD +"▦"
  5028. + sRoomCD +"▦"
  5029. + sIOFlag +"▦"
  5030. + model.getValue("/root/main/paminfo/pamlist/orddeptcd" ) +"▦"
  5031. + model.getValue("/root/main/paminfo/pamlist/medispclid") +"▦"
  5032. + sRecFluidUnit +"▩";
  5033. setParameter("SPMNR10400_Param", sParamValue);
  5034. modal("SPMNR10400", "1", event.clientX , event.clientY);
  5035. //입력 및 정보 조회 Parameter 설정
  5036. model.makeValue("/root/send/clincobsfluidreclist", sSearchDataHeader + sParamValue);
  5037. //특정 Fluid 정보 재조회 후 처리
  5038. if(submit("TRMNR10104", false)){
  5039. if( getNodesetCount(xFluidTmpPath) > 0 ){
  5040. for( var i = 1 ; i <= getNodesetCount(xFluidTmpPath) ; i++ ){
  5041. InsFluidNo = model.getValue(xFluidTmpPath+"[" + i + "]/carerecseqno");
  5042. if(model.getValue(xFluidPath+"[carerecseqno ='" + sCareRecSeqNo + "']/carerecseqno") != "" ){
  5043. model.setValue(xFluidPath+"[carerecseqno ='" + sCareRecSeqNo + "']/recdt" , model.getValue(xFluidTmpPath+"[" + i + "]/recdt" ));
  5044. model.setValue(xFluidPath+"[carerecseqno ='" + sCareRecSeqNo + "']/recrslt" , model.getValue(xFluidTmpPath+"[" + i + "]/recrslt" ));
  5045. model.setValue(xFluidPath+"[carerecseqno ='" + sCareRecSeqNo + "']/fluidstat" , model.getValue(xFluidTmpPath+"[" + i + "]/fluidstat" ));
  5046. model.setValue(xFluidPath+"[carerecseqno ='" + sCareRecSeqNo + "']/fluidetcinfo" , model.getValue(xFluidTmpPath+"[" + i + "]/fluidetcinfo" ));
  5047. model.setValue(xFluidPath+"[carerecseqno ='" + sCareRecSeqNo + "']/usernm" , model.getValue(xFluidTmpPath+"[" + i + "]/usernm" ));
  5048. model.setValue(xFluidPath+"[carerecseqno ='" + sCareRecSeqNo + "']/userid" , model.getValue(xFluidTmpPath+"[" + i + "]/userid" ));
  5049. model.setValue(xFluidPath+"[carerecseqno ='" + sCareRecSeqNo + "']/certkey" , model.getValue(xFluidTmpPath+"[" + i + "]/certkey" ));
  5050. model.setValue(xFluidPath+"[carerecseqno ='" + sCareRecSeqNo + "']/clncobsseqno" , model.getValue(xFluidTmpPath+"[" + i + "]/clncobsseqno" ));
  5051. }else{
  5052. AddRow = eval(getNodesetCount(xFluidPath)) + 1;
  5053. model.makeValue(xFluidPath+"[" + AddRow + "]/carerecseqno" , InsFluidNo ) ;
  5054. model.makeValue(xFluidPath+"[" + AddRow + "]/recdt" , model.getValue(xFluidTmpPath+"[" + i + "]/recdt" ));
  5055. model.makeValue(xFluidPath+"[" + AddRow + "]/recrslt" , model.getValue(xFluidTmpPath+"[" + i + "]/recrslt" ));
  5056. model.makeValue(xFluidPath+"[" + AddRow + "]/fluidstat" , model.getValue(xFluidTmpPath+"[" + i + "]/fluidstat" ));
  5057. model.makeValue(xFluidPath+"[" + AddRow + "]/fluidetcinfo" , model.getValue(xFluidTmpPath+"[" + i + "]/fluidetcinfo" ));
  5058. model.makeValue(xFluidPath+"[" + AddRow + "]/usernm" , model.getValue(xFluidTmpPath+"[" + i + "]/usernm" ));
  5059. model.makeValue(xFluidPath+"[" + AddRow + "]/userid" , model.getValue(xFluidTmpPath+"[" + i + "]/userid" ));
  5060. model.makeValue(xFluidPath+"[" + AddRow + "]/certkey" , model.getValue(xFluidTmpPath+"[" + i + "]/certkey" ));
  5061. model.makeValue(xFluidPath+"[" + AddRow + "]/clncobsseqno" , model.getValue(xFluidTmpPath+"[" + i + "]/clncobsseqno" ));
  5062. }
  5063. }
  5064. }else{
  5065. model.removeNodeset(xFluidPath+"[carerecseqno ='" + sCareRecSeqNo + "']");
  5066. }
  5067. //재조회 Path 삭제
  5068. model.removenode("/root/temp/clincobsfluidrecinfo");
  5069. //Fluid 행 초기화
  5070. fMakeGridNode("24hours_Init", iNodeRowValue);
  5071. fMakeGridNode("24hours_Init", iNodeRowValue+1);
  5072. //Fluid 정보를 이용하여 화면 Style및 정보 Setting
  5073. fSettingFluidInfo("F", "Chng", iNodeRowValue, iNodeRowValue+1, sCareRecSeqNo);
  5074. sFluidStatInfo = grd_24hoursclincobsreclist.valueMatrix(iRow+1, grd_24hoursclincobsreclist.colRef("fluidstat"));
  5075. for(var iCol=1; iCol<= 24; iCol++){
  5076. sFluidRecDT = sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]+"00";
  5077. //Grid Graph 설정
  5078. if(isSearchString(sFluidStatInfo, sFluidRecDT) == true){
  5079. grd_24hoursclincobsreclist.cellstyle("border-bottom-color", iRow+1, iCol) = "#0000ff";
  5080. grd_24hoursclincobsreclist.cellstyle("border-bottom-width", iRow+1, iCol) = 2;
  5081. }else{
  5082. grd_24hoursclincobsreclist.cellstyle("border-bottom-color", iRow+1, iCol) = "#B0B0B0";
  5083. grd_24hoursclincobsreclist.cellstyle("border-bottom-width", iRow+1, iCol) = 1;
  5084. }
  5085. }
  5086. }
  5087. //Fluid 입력 화면에서 I/O처리 후 Param 정보가 있을 경우 처리
  5088. if( getParameter("SPMNR10400_ReturnSaveInfo") != "" ){
  5089. submit("TRMNR10105", false);
  5090. xPathViewData = "/root/temp/rtnsigndatainfo/rtnsigndata";
  5091. fMakeViewData();
  5092. model.removenodeSet(xPathViewData);
  5093. model.removenodeSet("/root/temp/SignData");
  5094. xPathViewData = "/root/temp/clincobsrecinfo/rtnsigndata";
  5095. }
  5096. //parameter 정보 초기화
  5097. clearParameter("SPMNR10400_Param");
  5098. clearParameter("SPMNR10400_ReturnSaveInfo");
  5099. }
  5100. /**
  5101. * @group :
  5102. * @ver : 2010.07.30
  5103. * @by : 양천덕
  5104. * @---------------------------------------------------
  5105. * @type : function
  5106. * @access : public
  5107. * @desc :
  5108. * @param : 체중누적조회 화면 호출
  5109. * @return :
  5110. * @---------------------------------------------------
  5111. */
  5112. function fPopupWeightList(){
  5113. var sParamValue = "pid▦indd▦cretno▦wardcd▦recdd▩" ;
  5114. sParamValue += sPid + "▦"
  5115. + sIndd + "▦"
  5116. + sCretNo + "▦"
  5117. + "" + "▦"
  5118. + model.getValue("/root/main/cond/seardd") + "▩";
  5119. setParameter("SPMNR11000_Param", sParamValue);
  5120. open("SPMNR11000", "1", event.clientX , event.clientY);
  5121. }
  5122. /**
  5123. * @group :
  5124. * @ver : 2010.01.26
  5125. * @by : 양천덕
  5126. * @---------------------------------------------------
  5127. * @type : function
  5128. * @access : public
  5129. * @desc : Fluid 정보 Setting
  5130. * @param : pFlag : 세팅 구분
  5131. * pRealFluidRow : Fluid Row 정보
  5132. * pGraphRow : Fluid Graph Row 정보
  5133. * pIndex : Fluid 간호일련번호 정보
  5134. * @return :
  5135. * @---------------------------------------------------
  5136. */
  5137. function fSettingFluidInfo(pFlag, pStat, pRealFluidRow, pGraphRow, pIndex){
  5138. if(pRealFluidRow < 1 || pGraphRow < 1) return;
  5139. var xRowGraphPath = "";
  5140. if( pFlag == "I" ){
  5141. xRowGraphPath = xInstrmtPath;
  5142. }else{
  5143. xRowGraphPath = xFluidPath;
  5144. }
  5145. var sFluidCareRecSeqNo = model.getValue(xRowGraphPath+"[carerecseqno ='" +pIndex+ "']/carerecseqno" );
  5146. var sFluidRecDt = model.getValue(xRowGraphPath+"[carerecseqno ='" +pIndex+ "']/recdt" );
  5147. var sFluidRslt = model.getValue(xRowGraphPath+"[carerecseqno ='" +pIndex+ "']/recrslt" );
  5148. var sFluidStat = model.getValue(xRowGraphPath+"[carerecseqno ='" +pIndex+ "']/fluidstat" );
  5149. var sFluidEtcInfo = model.getValue(xRowGraphPath+"[carerecseqno ='" +pIndex+ "']/fluidetcinfo" );
  5150. if( sFluidCareRecSeqNo == "" ) sFluidCareRecSeqNo = pIndex;
  5151. var sFluidRsltArray = new Array();
  5152. var sFluidStatArray = new Array();
  5153. var sFluidEtcInfoArray = new Array();
  5154. var sFluidRecDtArray = new Array();
  5155. sFluidRsltArray = sFluidRslt.split("^");
  5156. sFluidStatArray = sFluidStat.split("^");
  5157. sFluidEtcInfoArray = sFluidEtcInfo.split("^");
  5158. sFluidRecDtArray = sFluidRecDt.split("^");
  5159. var sFluidStatTmpInfo = ""; //Fluid 유지임시정보(시간정보)
  5160. var sFluidStartTm = "";
  5161. var sFluidChngTm = "";
  5162. var sFluidEndTm = "";
  5163. var sStayRsltValue = ""; //Fluid 결과값 유지 정보
  5164. var sStayEtcInfoValue = ""; //Fluid 투여속도 유지 정보
  5165. var sFluidStayFromdt = "";
  5166. var sFluidStayTodt = "";
  5167. var sFluidStayRslt = "";
  5168. var sFluidStayFlag = "";
  5169. var sFluidRunSumCalcValue = 0;
  5170. var sFluidInitStayRslt = "";
  5171. var sFluidInitStayEtcInfo = "";
  5172. var sFluidIndexValue = "";
  5173. if(pFlag == "F"){
  5174. //Fluid 합계 배열 생성 부분
  5175. for( var i=0 ; i < sFluidSumInfo.length ; i++ ){
  5176. if( sFluidSumInfo[i][0] == sFluidCareRecSeqNo ){
  5177. sFluidBfSumInfo[0] = sFluidCareRecSeqNo;
  5178. sFluidIndexValue = i;
  5179. }
  5180. }
  5181. if( fIsNumber(sFluidIndexValue) == false ){
  5182. sFluidIndexValue = sFluidSumInfo.length;
  5183. sFluidSumInfo[sFluidIndexValue] = new Array;
  5184. sFluidSumInfo[sFluidIndexValue][0] = sFluidCareRecSeqNo;
  5185. }
  5186. for( var iCol=1; iCol<= 24; iCol++ ){
  5187. sFluidBfSumInfo[iCol] = 0;
  5188. if( fIsNumber(sFluidSumInfo[sFluidIndexValue][iCol]) == true ){
  5189. sFluidBfSumInfo[iCol] = sFluidSumInfo[sFluidIndexValue][iCol]; //이전 합계 정보 저장
  5190. }
  5191. sFluidSumInfo[sFluidIndexValue][iCol] = 0; //합계 배열 초기화
  5192. sColDate = sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]+"00"; //현재 Col의 일시 정보
  5193. sAfterColDate = sHeader[1][iCol+1]+sHeader[3][iCol+1]+sHeader[4][iCol+1]+"00"; //다음 Col의 일시 정보
  5194. for( var i = 0 ; i < sFluidRsltArray.length ; i ++ ){
  5195. if( sFluidStatArray[i] == "S" ){
  5196. if( sFluidRecDtArray[i] < sColDate || ( sFluidRecDtArray[i] >= sColDate && sFluidRecDtArray[i] < sAfterColDate )){
  5197. if( isSearchString(sFluidStatTmpInfo, sColDate) == false ){
  5198. sFluidStatTmpInfo += sColDate+" ";
  5199. }
  5200. sStayRsltValue = sFluidRsltArray[i];
  5201. sStayEtcInfoValue = sFluidEtcInfoArray[i];
  5202. sFluidStartTm = sFluidRecDtArray[i];
  5203. sFluidEndTm = "-";
  5204. sFluidChngTm = "-";
  5205. }
  5206. }else if( sFluidStatArray[i] == "C" ){
  5207. sFluidChngTm = sFluidRecDtArray[i];
  5208. }else if( sFluidStatArray[i] == "E" ){
  5209. if( sFluidEndTm == "-" ) sFluidEndTm = sFluidRecDtArray[i];
  5210. if( sFluidRecDtArray[i] < sColDate ){
  5211. sFluidStatTmpInfo = sFluidStatTmpInfo.replace(sColDate+" ", "");
  5212. }
  5213. sStayRsltValue = "";
  5214. sStayEtcInfoValue = "";
  5215. sFluidEndTm = sFluidRecDtArray[i];
  5216. sFluidChngTm = "-";
  5217. }
  5218. //Graph & '단위' Row에 값 입력
  5219. if( sFluidRecDtArray[i] >= sColDate && sFluidRecDtArray[i] < sAfterColDate ){
  5220. var sGraphRowValue = model.getValue(xHoursClincObsRecList+"["+pGraphRow+"]/recrslt"+iCol);
  5221. var sFluidRowValue = model.getValue(xHoursClincObsRecList+"["+pRealFluidRow+"]/recrslt"+iCol);
  5222. if( sFluidStatArray[i] == "S" ){
  5223. sFluidStayFromdt = sFluidRecDtArray[i];
  5224. sFluidStayRslt = sFluidRsltArray[i];
  5225. }else if( sFluidStatArray[i] == "C" ){
  5226. if( sFluidStayFromdt != "" && sFluidStayRslt != "" && sColDate < sNowDate ){
  5227. sFluidCalcFromdt = "";
  5228. if( sFluidStayFromdt < sColDate ){
  5229. sFluidCalcFromdt = sColDate;
  5230. }else{
  5231. sFluidCalcFromdt = sFluidStayFromdt;
  5232. }
  5233. sFluidSumInfo[sFluidIndexValue][iCol] += fMakeFluidSumData(sFluidCalcFromdt, sFluidRecDtArray[i], sFluidStayRslt, "+", "+");
  5234. sFluidStayFromdt = sFluidRecDtArray[i];
  5235. sFluidStayRslt = sFluidRsltArray[i];
  5236. }
  5237. }else if( sFluidStatArray[i] == "E" ){
  5238. sFluidCalcFromdt = "";
  5239. sFluidCalcTodt = "";
  5240. //시작 및 변경 시간 체크
  5241. if( sFluidStayFromdt < sColDate ){
  5242. sFluidCalcFromdt = sColDate;
  5243. }else{
  5244. sFluidCalcFromdt = sFluidStayFromdt;
  5245. }
  5246. //종료시간 체크
  5247. if( sFluidRecDtArray[i] < sNowDate){
  5248. sFluidCalcTodt = sFluidRecDtArray[i];
  5249. }else{
  5250. sFluidCalcTodt = sNowDate;
  5251. }
  5252. if( sFluidCalcFromdt < sFluidCalcTodt ){
  5253. sFluidSumInfo[sFluidIndexValue][iCol] += fMakeFluidSumData(sFluidCalcFromdt, sFluidCalcTodt, sFluidStayRslt, "+", "+");
  5254. }
  5255. sFluidStayFromdt = "";
  5256. sFluidStayRslt = "";
  5257. }
  5258. //Event 표시 여부에 따른 Fluid 표시 설정
  5259. if( sEventItemUseYn == "Y" ){
  5260. if( sFluidStatArray[i] == "C" ){
  5261. //Graph Row Setting
  5262. if( sFluidEtcInfoArray[i] != "" && sStayEtcInfoValue != sFluidEtcInfoArray[i]){
  5263. if( sGraphRowValue != "" ) sGraphRowValue += ", ";
  5264. sGraphRowValue += "(" + sStayEtcInfoValue + "→" + sFluidEtcInfoArray[i] + ")";
  5265. sGraphRowValue += "/"+sFluidRecDtArray[i].substr(10,2)+"'";
  5266. sStayEtcInfoValue = sFluidEtcInfoArray[i];
  5267. }
  5268. //Fluid Row Setting
  5269. if( sFluidRsltArray[i] != "" && sStayRsltValue != sFluidRsltArray[i]){
  5270. if( sFluidRowValue != "" ) sFluidRowValue += ", ";
  5271. sFluidRowValue += sStayRsltValue + "→" + sFluidRsltArray[i];
  5272. sFluidRowValue += "/"+sFluidRecDtArray[i].substr(10,2)+"'";
  5273. sStayRsltValue = sFluidRsltArray[i];
  5274. }
  5275. }else{
  5276. //Graph Row Setting
  5277. if( sFluidStatArray[i] != "" ){
  5278. if( sGraphRowValue != "" ) sGraphRowValue += ", ";
  5279. sGraphRowValue += sFluidStatArray[i];
  5280. }
  5281. if( sFluidEtcInfoArray[i] != "" ){
  5282. sGraphRowValue += "/("+sFluidEtcInfoArray[i]+")";
  5283. sStayEtcInfoValue = sFluidEtcInfoArray[i];
  5284. }
  5285. if( sFluidRecDtArray[i] != "" ) sGraphRowValue += "/"+sFluidRecDtArray[i].substr(10,2)+"'";
  5286. //Fluid Row Setting
  5287. if( sFluidRsltArray[i] != "" ){
  5288. if( sFluidRowValue != "" ) sFluidRowValue += ", ";
  5289. sFluidRowValue += sFluidRsltArray[i];
  5290. sStayRsltValue = sFluidRsltArray[i];
  5291. }
  5292. }
  5293. }else{
  5294. //Graph Row Setting
  5295. if( sFluidStatArray[i] != "" ){
  5296. if( sGraphRowValue != "" ) sGraphRowValue += ", ";
  5297. sGraphRowValue += sFluidStatArray[i];
  5298. }
  5299. if( sFluidEtcInfoArray[i] != "" ){
  5300. sGraphRowValue += "/("+sFluidEtcInfoArray[i]+")";
  5301. }
  5302. if( sFluidRecDtArray[i] != "" ) sGraphRowValue += "/"+sFluidRecDtArray[i].substr(10,2)+"'";
  5303. //Fluid Row Setting
  5304. if( sFluidRsltArray[i] != "" ){
  5305. if( sFluidRowValue != "" ) sFluidRowValue += ", ";
  5306. sFluidRowValue += sFluidRsltArray[i];
  5307. }
  5308. }
  5309. model.setValue(xHoursClincObsRecList+"["+pRealFluidRow+"]/recrslt"+iCol, sFluidRowValue );
  5310. model.setValue(xHoursClincObsRecList+"["+pGraphRow+"]/recrslt"+iCol, sGraphRowValue );
  5311. }else if( sFluidRecDtArray[i] < sColDate ){
  5312. if( sFluidStatArray[i] != "E" ){
  5313. if( sFluidStayFromdt <= sFluidRecDtArray[i] ){
  5314. if( sFluidRsltArray[i] != "" ) sStayRsltValue = sFluidRsltArray[i];
  5315. if( sFluidEtcInfoArray[i] != "" ) sStayEtcInfoValue = sFluidEtcInfoArray[i];
  5316. sFluidStayFromdt = sFluidRecDtArray[i];
  5317. sFluidStayRslt = sFluidRsltArray[i];
  5318. sFluidInitStayRslt = sFluidRsltArray[i];
  5319. sFluidInitStayEtcInfo = sFluidEtcInfoArray[i];
  5320. }
  5321. }else{
  5322. sStayRsltValue = "";
  5323. sFluidStayFromdt = "";
  5324. sFluidStayRslt = "";
  5325. }
  5326. }
  5327. }
  5328. //Fluid 합계 처리 부분
  5329. if( sFluidStayRslt != "" ){
  5330. if( isSearchString( sFluidStatTmpInfo, sColDate ) == true ){
  5331. if( sFluidStayFromdt < sAfterColDate && sFluidStayFromdt < sNowDate ){
  5332. sFluidCalcFromdt = "";
  5333. if( sFluidStayFromdt < sColDate ){
  5334. sFluidCalcFromdt = sColDate;
  5335. }else{
  5336. sFluidCalcFromdt = sFluidStayFromdt;
  5337. }
  5338. if( sNowDate < sAfterColDate ){
  5339. if( sFluidCalcFromdt < sNowDate ) sFluidSumInfo[sFluidIndexValue][iCol] += fMakeFluidSumData(sFluidCalcFromdt, sNowDate, sFluidStayRslt, "+", "+");
  5340. }else{
  5341. if( sFluidCalcFromdt < sAfterColDate ) sFluidSumInfo[sFluidIndexValue][iCol] += fMakeFluidSumData(sFluidCalcFromdt, sAfterColDate, sFluidStayRslt, "+", "+");
  5342. }
  5343. }
  5344. }
  5345. }
  5346. sFluidSumInfo[sFluidIndexValue][iCol] = Math.round(sFluidSumInfo[sFluidIndexValue][iCol] * Math.pow(10, (-4)*(-1)-1)) / Math.pow(10, (-4)*(-1)-1);
  5347. //조회 시작시간에 정보가 없을 때 바로 전 데이터 표시
  5348. if( iCol == "1" && model.getValue(xHoursClincObsRecList+"["+pRealFluidRow+"]/recrslt"+iCol) == "" && isSearchString( sFluidStatTmpInfo, sColDate ) == true ){
  5349. if( sFluidInitStayRslt != "" ) model.setValue(xHoursClincObsRecList+"["+pRealFluidRow+"]/recrslt"+iCol, sFluidInitStayRslt+"→" );
  5350. }
  5351. if( iCol == "1" && model.getValue(xHoursClincObsRecList+"["+pGraphRow+"]/recrslt"+iCol) == "" && isSearchString( sFluidStatTmpInfo, sColDate ) == true ){
  5352. if( sFluidInitStayEtcInfo != "" ) model.setValue(xHoursClincObsRecList+"["+pGraphRow+"]/recrslt"+iCol, sFluidInitStayEtcInfo+"→" );
  5353. }
  5354. }
  5355. }else{
  5356. for( var iCol=1; iCol<= 24; iCol++ ){
  5357. sColDate = sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]+"00"; //현재 Col의 일시 정보
  5358. sAfterColDate = sHeader[1][iCol+1]+sHeader[3][iCol+1]+sHeader[4][iCol+1]+"00"; //다음 Col의 일시 정보
  5359. for( var i = 0 ; i < sFluidStatArray.length ; i ++ ){
  5360. if( sFluidRsltArray[i] == "S" || sFluidRsltArray[i].substr(0,2) == "S/" ){
  5361. if( sFluidRecDtArray[i] < sColDate || ( sFluidRecDtArray[i] >= sColDate && sFluidRecDtArray[i] < sAfterColDate )){
  5362. if( isSearchString(sFluidStatTmpInfo, sColDate) == false ){
  5363. sFluidStatTmpInfo += sColDate+" ";
  5364. }
  5365. sStayRsltValue = sFluidRsltArray[i];
  5366. sFluidStartTm = sFluidRecDtArray[i];
  5367. sFluidEndTm = "-";
  5368. sFluidChngTm = "-";
  5369. }
  5370. }else if( sFluidRsltArray[i] == "C" || sFluidStatArray[i].substr(0,2) == "C/" ){
  5371. sFluidChngTm = sFluidRecDtArray[i];
  5372. }else if( sFluidRsltArray[i] == "E" || sFluidStatArray[i].substr(0,2) == "E/" ){
  5373. if( sFluidEndTm == "-" ) sFluidEndTm = sFluidRecDtArray[i];
  5374. if( sFluidRecDtArray[i] < sColDate ){
  5375. sFluidStatTmpInfo = sFluidStatTmpInfo.replace(sColDate+" ", "");
  5376. }
  5377. sStayRsltValue = "";
  5378. sStayEtcInfoValue = "";
  5379. sFluidEndTm = sFluidRecDtArray[i];
  5380. sFluidChngTm = "-";
  5381. }
  5382. }
  5383. }
  5384. }
  5385. //Fluid 종료되지 않았을 경우 처리 로직
  5386. if( sFluidEndTm == "-" ){
  5387. if( sFluidChngTm != "-") sFluidStartTm = sFluidChngTm;
  5388. for( var iCol=1; iCol<= 24; iCol++ ){
  5389. sColDate = sHeader[1][iCol]+sHeader[3][iCol]+sHeader[4][iCol]+"00"; //현재 Col의 일시 정보
  5390. if( sFluidStartTm <= sNowDate ){
  5391. if( sNowDate < sColDate ){
  5392. sFluidStatTmpInfo = sFluidStatTmpInfo.replace(sColDate+" ", "");
  5393. }
  5394. }else{
  5395. if( sFluidStartTm < sColDate ){
  5396. sFluidStatTmpInfo = sFluidStatTmpInfo.replace(sColDate+" ", "");
  5397. }
  5398. }
  5399. }
  5400. }
  5401. //Fluid Row Event 발생시 별도 처리 부분(합계값 변경)
  5402. if( pFlag == "F" ){
  5403. if( pStat == "Chng" ){
  5404. for(var iRow = grd_24hoursclincobsreclist.fixedRows ; iRow < grd_24hoursclincobsreclist.rows ; iRow++){
  5405. sSrchStrValue = "/"+ sFluidCareRecSeqNo +"/";
  5406. for( var iCol=1; iCol<= 24; iCol++ ){
  5407. sTotalidx = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("totalidx"));
  5408. sRecFlag = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("recflag"));
  5409. if( sTotalidx != "" && sSrchStrValue != "" && isSearchString(sTotalidx, sSrchStrValue) == true ){
  5410. sTotalValue = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef(("recrslt"+iCol)));
  5411. sFluidSumCalcValue = eval(sFluidSumInfo[sFluidIndexValue][iCol]) - eval(sFluidBfSumInfo[iCol]);
  5412. sChngFluidSumCalcValue = "";
  5413. if( fIsNumber(sFluidSumCalcValue) == true && sFluidSumCalcValue != 0 ){
  5414. if( sRecFlag == "R"){
  5415. if( sDutyTMColInfo1+1 != iCol && sDutyTMColInfo2+1 != iCol && sDutyTMColInfo3+1 != iCol ){
  5416. sFluidRunSumCalcValue += eval(sFluidSumCalcValue);
  5417. }else{
  5418. sFluidRunSumCalcValue = sFluidSumCalcValue;
  5419. }
  5420. if( fIsNumber(sTotalValue) == true ){
  5421. sChngFluidSumCalcValue = eval(sTotalValue) + eval(sFluidRunSumCalcValue);
  5422. }else{
  5423. sChngFluidSumCalcValue = eval(sFluidRunSumCalcValue);
  5424. }
  5425. }else if( sRecFlag == "T" || sRecFlag == "S" ){
  5426. if( fIsNumber(sTotalValue) == true ){
  5427. sChngFluidSumCalcValue = eval(sTotalValue) + eval(sFluidSumCalcValue);
  5428. }else{
  5429. sChngFluidSumCalcValue = eval(sFluidSumCalcValue);
  5430. }
  5431. }
  5432. //합계값이 숫자값이고 0이 아닐때 계산 값 입력
  5433. if( fIsNumber(sChngFluidSumCalcValue) == true && sChngFluidSumCalcValue != 0 ){
  5434. grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef(("recrslt"+iCol))) = sChngFluidSumCalcValue;
  5435. }else{
  5436. grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef(("recrslt"+iCol))) = "";
  5437. }
  5438. }
  5439. }
  5440. }
  5441. }
  5442. }
  5443. model.setValue(xHoursClincObsRecList+"["+pGraphRow+"]/readonlyyn", "Y");
  5444. }
  5445. model.setValue(xHoursClincObsRecList+"["+pGraphRow+"]/fluidstat", sFluidStatTmpInfo);
  5446. }
  5447. /**
  5448. * @group :
  5449. * @ver : 2010.02.23
  5450. * @by : 양천덕
  5451. * @---------------------------------------------------
  5452. * @type : function
  5453. * @access : public
  5454. * @desc : Fluid 합계 계산 로직
  5455. * @param : pFromdd : 계산시작일시
  5456. * pTodd : 계산종료일시
  5457. * pRslt : 계산수식
  5458. * pFromType : 계산시작일시 포함여부('+': 포함, '-': 제외)
  5459. * pToType : 계산종료일시 포함여부('+': 포함, '-': 제외)
  5460. * @return :
  5461. * @---------------------------------------------------
  5462. */
  5463. function fMakeFluidSumData(pFromdd, pTodd, pRslt, pFromType, pToType){
  5464. var sFromCalc = 0;
  5465. var sToCalc = 0;
  5466. if( pFromdd == pTodd ) return 0;
  5467. if(pFromType == "-") sFromCalc = -1;
  5468. if(pToType == "-") sToCalc = -1;
  5469. if( pRslt.isFloat() == false ) return;
  5470. var rstFromTime = new Date(eval(pFromdd.substr(0,4)), eval(pFromdd.substr(4,2))-1, eval(pFromdd.substr(6,2)), eval(pFromdd.substr(8,2)), eval(pFromdd.substr(10,2))+sFromCalc, eval(pFromdd.substr(12,2)) );
  5471. var rstEndTime = new Date(eval(pTodd.substr(0,4)), eval(pTodd.substr(4,2))-1, eval(pTodd.substr(6,2)), eval(pTodd.substr(8,2)), eval(pTodd.substr(10,2))+sToCalc, eval(pTodd.substr(12,2)) );
  5472. var diffTime = Math.ceil((rstEndTime - rstFromTime) / (60 * 1000)); //분단위로 반환
  5473. rtnValue = (eval(pRslt) / 60 * eval(diffTime));
  5474. if( rtnValue == "" ) return 0;
  5475. return rtnValue;
  5476. }
  5477. /**
  5478. * @group :
  5479. * @ver : 2010.03.08
  5480. * @by : 양천덕
  5481. * @---------------------------------------------------
  5482. * @type : function
  5483. * @access : public
  5484. * @desc : 기록항목 시작/종료 일시 설정 popup화면 호출
  5485. * @param :
  5486. * @return :
  5487. * @---------------------------------------------------
  5488. */
  5489. function fPopupChngTime(){
  5490. //화면 재조회 popup호출을 할 경우 미기록 정보 체크 함수
  5491. //fSearchClincObsRec 함수를 호출하는 함수에 추가 필요
  5492. if( fChkSaveData() == false ) return;
  5493. var iRow = grd_24hoursclincobsreclist.row;
  5494. var sCareRecSeqNo = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("carerecseqno"));
  5495. var sItemnm = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("itemnm"));
  5496. var sItemRecFromDt = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("recfromdt"));
  5497. var sItemRecToDt = grd_24hoursclincobsreclist.valueMatrix(iRow, grd_24hoursclincobsreclist.colRef("rectodt"));
  5498. setParameter("SPMNR10600_Param", sCareRecSeqNo+"▦"+sPid+"▦"+sIndd+"▦"+sCretNo+"▦"+sItemnm+"▦"+sItemRecFromDt+"▦"+sItemRecToDt+"▩");
  5499. modal("SPMNR10600", "1", event.clientX , event.clientY);
  5500. sRtnParamInfo = getParameter("SPMNR10600_RtnParam");
  5501. //SPMNR10600 화면에서 저장완료되면 fSearchClincObsRec("24hours") 호출
  5502. //fSearchClincObsRec("24hours");
  5503. clearParameter("SPMNR10600_Param");
  5504. clearParameter("SPMNR10600_RtnParam");
  5505. }
  5506. /**
  5507. * @group :
  5508. * @ver : 2010.03.09
  5509. * @by : 양천덕
  5510. * @---------------------------------------------------
  5511. * @type : function
  5512. * @access : public
  5513. * @desc : 화면 재조회 popup호출을 할 경우 미기록 정보 존재하는지 확인
  5514. * @param :
  5515. * @return :
  5516. * @---------------------------------------------------
  5517. */
  5518. function fChkSaveData(){
  5519. var sChkChngData = false;
  5520. var sBizLnkFlag = model.getValue(sCondPath+"/bizlnkflag");
  5521. var sTimeFlag = model.getValue(sCondPath+"/timeflag");
  5522. var sRecDd = model.getValue(sCondPath+"/recdd");
  5523. var sRtnMsg = "";
  5524. var sStrTime = "";
  5525. if( sHeader.length < 1 ) return;
  5526. for(var i=1; i <= 25; i++){
  5527. if(sStrTime == ""){
  5528. sStrTime += sHeader[1][i]+sHeader[3][i]+sHeader[4][i]+"00";
  5529. }else{
  5530. sStrTime += ","+sHeader[1][i]+sHeader[3][i]+sHeader[4][i]+"00";
  5531. }
  5532. }
  5533. sRowCnt = grd_24hoursclincobsreclist.rows - grd_24hoursclincobsreclist.fixedrows;
  5534. for(var iRow = 1; iRow<=sRowCnt; iRow++){
  5535. sItemCD = model.getValue(xHoursClincObsRecList+"["+iRow+"]/itemcd" );
  5536. sItemSeqNO = model.getValue(xHoursClincObsRecList+"["+iRow+"]/itemseqno" );
  5537. sRecFlag = model.getValue(xHoursClincObsRecList+"["+iRow+"]/recflag" );
  5538. sRecCharFlag = model.getValue(xHoursClincObsRecList+"["+iRow+"]/reccharflag" );
  5539. sCareRecSeqNo = model.getValue(xHoursClincObsRecList+"["+iRow+"]/carerecseqno");
  5540. sItemNM = model.getValue(xHoursClincObsRecList+"["+iRow+"]/itemnm" );
  5541. sLnkBizCd = model.getValue(xHoursClincObsRecList+"["+iRow+"]/lnkbizcd" );
  5542. sStype = model.getValue(xHoursClincObsRecList+"["+iRow+"]/style" );
  5543. // 값조회, 추가행, Graph사용 수액의 경우는 저장이 필요없음.
  5544. if(sRecCharFlag == "C" || sRecCharFlag == "" || ( sLnkBizCd == "12" && sStype == "01") ) continue;
  5545. for(var iCol=1; iCol<= 24; iCol++){
  5546. //sRecRslt_BK = model.getValue(xClincObsRecListPath+"[itemcd='"+sItemCD+"' and itemseqno='"+sItemSeqNO+"' and recflag='"+sRecFlag+"']/recrslt"+iCol);
  5547. sRecRslt_BK = model.getValue(xClincObsRecListPath+"[carerecseqno='"+sCareRecSeqNo+"']/recrslt"+iCol);
  5548. sRecRslt = model.getValue(xHoursClincObsRecList+"["+iRow+"]/recrslt"+iCol);
  5549. sStatus = "";
  5550. sResultPath = "";
  5551. //상태값 변경
  5552. if(sLnkBizCd == "99" || sLnkBizCd == "01" || sLnkBizCd == "02" || sLnkBizCd == "03" || sLnkBizCd == "04"){ //연계항목, 분류는 제외
  5553. sStatus = "";
  5554. }else if(sRecRslt_BK == "" && sRecRslt == ""){
  5555. sStatus = "";
  5556. }else if(sRecRslt_BK == "" && sRecRslt != ""){
  5557. sStatus = "U";
  5558. }else if(sRecRslt_BK != "" && sRecRslt == ""){
  5559. sStatus = "U";
  5560. }else if(sRecRslt_BK != "" && sRecRslt_BK != sRecRslt){
  5561. sStatus = "U";
  5562. }
  5563. if(sStatus == "") continue;
  5564. sChkChngData = true;
  5565. }
  5566. }
  5567. // 변경데이터 유뮤 체크
  5568. if(sChkChngData == true){
  5569. sRtnMsg = messageBox("저장하지 않은 데이터가 존재합니다.", "Q003");
  5570. if ( sRtnMsg == 6 ){
  5571. return true;
  5572. }else{
  5573. return false;
  5574. }
  5575. }
  5576. return true;
  5577. }
  5578. /**
  5579. * @group :
  5580. * @ver : 2010.03.15
  5581. * @by : 양천덕
  5582. * @---------------------------------------------------
  5583. * @type : function
  5584. * @access : public
  5585. * @desc : FlowSheet 화면 기록 목록 정리 함수
  5586. * @param :
  5587. * @return :
  5588. * @---------------------------------------------------
  5589. */
  5590. function fCleanPatItemList(pFlag){
  5591. if( fChkSaveData() == false ){
  5592. return;
  5593. }
  5594. var rtnmsg = messageBox("FlowSheet기록 항목을 부서기본 셋 정보로 정리하시겠습니까?\n\n(단, 지속적 물약 및 타기록이 주체인 기록항목은 정리하지 않습니다.)\n", "Q");
  5595. if( rtnmsg == "6" ){
  5596. model.removeNodeset("/root/send");
  5597. model.makeNode("/root/send");
  5598. model.makeValue("/root/send/pid", sPid );
  5599. model.makeValue("/root/send/indd", sIndd );
  5600. model.makeValue("/root/send/cretno", sCretNo );
  5601. model.makeValue("/root/send/deptcd", getUserInfo("dutplcecd") );
  5602. model.makeValue("/root/send/ordtype", sIOFlag );
  5603. model.makeValue("/root/send/inrmdt", getCurrentDate() + getCurrentTime().substr(0,4));
  5604. submit("TXMNR10102", false);
  5605. fSearchClincObsRec(pFlag);
  5606. }
  5607. }
  5608. /**
  5609. * @group :
  5610. * @ver : 2010.03.17
  5611. * @by : 양천덕
  5612. * @---------------------------------------------------
  5613. * @type : function
  5614. * @access : public
  5615. * @desc : 병동메인 Popup 호출
  5616. * @param :
  5617. * @return :
  5618. * @---------------------------------------------------
  5619. */
  5620. function fPopupNurseMain(pFlag){
  5621. if(pFlag == "N" ) pFlag = "";
  5622. model.setValue(gvMenuParamPath, pFlag);
  5623. open("SMMNW00100", "1", event.clientX , event.clientY);
  5624. //model.setValue(gvMenuParamPath, "");
  5625. }
  5626. /**
  5627. * @group :
  5628. * @ver : 2010.03.18
  5629. * @by : 양천덕
  5630. * @---------------------------------------------------
  5631. * @type : function
  5632. * @access : public
  5633. * @desc : 입원전과전실 조회 Popup 호출
  5634. * @param :
  5635. * @return :
  5636. * @---------------------------------------------------
  5637. */
  5638. function fPopupInOutInfo(){
  5639. var inout_orddd = model.getValue("/root/main/cond/recdd");
  5640. var inout_wardcd = model.getValue("/root/temp/cond/wardcdgrup/wardcdgruplist");
  5641. var param = inout_orddd + "▩" + inout_wardcd;
  5642. setParameter("SMMNW01100_PARAM1", param);
  5643. modal("SMMNW01100",1,50,250);
  5644. }
  5645. /**
  5646. * @group :
  5647. * @ver : 2010.03.18
  5648. * @by : 양천덕
  5649. * @---------------------------------------------------
  5650. * @type : function
  5651. * @access : public
  5652. * @desc : 통합검사결과 조회 Popup 호출
  5653. * @param :
  5654. * @return :
  5655. * @---------------------------------------------------
  5656. */
  5657. function fPopupProc(){
  5658. open("SMAER00800", "1", event.clientX , event.clientY);
  5659. }
  5660. /**
  5661. * @group :
  5662. * @ver : 2010.03.18
  5663. * @by : 양천덕
  5664. * @---------------------------------------------------
  5665. * @type : function
  5666. * @access : public
  5667. * @desc : 내환자세팅 Popup 호출
  5668. * @param :
  5669. * @return :
  5670. * @---------------------------------------------------
  5671. */
  5672. function fPopupMyPatSetting(){
  5673. setParameter("wardcd", sUserDeptCd);
  5674. setParameter("userid", sUserId );
  5675. setParameter("usernm", sUserNm);
  5676. modal("SMMNB00400","1" ,event.clientX , event.clientY);
  5677. //------------(20110209) 경북대
  5678. //내환자 조회
  5679. //fGetSettingPatientList("false");
  5680. //내환자 조회-임상관찰기록용
  5681. fGetSettingPatientList_type2();
  5682. //------------(20110209) 경북대
  5683. if( cmb_patlist.value == ""){
  5684. if( getNodesetCount("/root/temp/cond/settingpatient/settingpatientlist") > 0){
  5685. fSetParam("SettingPat", 1);
  5686. }
  5687. }else{
  5688. cmb_mypatlist.value = cmb_patlist.value;
  5689. }
  5690. }
  5691. //--------------(20110209) 경북대
  5692. /**
  5693. * @group :
  5694. * @ver : 2010.12.09
  5695. * @by : 양천덕
  5696. * @---------------------------------------------------
  5697. * @type : function
  5698. * @access : public
  5699. * @desc : 간호일지용 내환자 조회
  5700. * @param :
  5701. * @return :
  5702. * @---------------------------------------------------
  5703. */
  5704. function fGetSettingPatientList_type2(pFlag){
  5705. //model.removenode("/root/send");
  5706. var sRefresh = "true";
  5707. if( !isNull(pFlag)){
  5708. sRefresh = pFlag
  5709. }
  5710. if(submit("TRMNR00919", sRefresh)){
  5711. }
  5712. }
  5713. //--------------(20110209) 경북대
  5714. /**
  5715. * @group :
  5716. * @ver : 2010.03.24
  5717. * @by : 양천덕
  5718. * @---------------------------------------------------
  5719. * @type : function
  5720. * @access : public
  5721. * @desc : Fluid Item 추가 화면 호출
  5722. * @param :
  5723. * @return :
  5724. * @---------------------------------------------------
  5725. */
  5726. function fPopupAddFluid(){
  5727. //화면 재조회 popup호출을 할 경우 미기록 정보 체크 함수
  5728. //fSearchClincObsRec 함수를 호출하는 함수에 추가 필요
  5729. if( fChkSaveData() == false ) return;
  5730. var sParamValue = "flag▦itemcd▦itemnm▦pid▦orddd▦cretno▦ordtype▦lnkbizcd▩";
  5731. sParamValue += "Flow" +"▦"
  5732. + "" +"▦"
  5733. + "" +"▦"
  5734. + sPid +"▦"
  5735. + sIndd +"▦"
  5736. + sCretNo +"▦"
  5737. + sIOFlag +"▦"
  5738. + "12" +"▩";
  5739. setParameter("SPMNR06001_Param", sParamValue);
  5740. modal("SPMNR06001","1" ,event.clientX , event.clientY);
  5741. //약,주사 입력 화면에서 Item추가 후 Param 정보가 있을 경우 처리
  5742. if( getParameter("SPMNR06000_ReturnSaveInfo") != "" ){
  5743. fSearchClincObsRec("24hours");
  5744. }
  5745. //parameter 정보 초기화
  5746. clearParameter("SPMNR06001_Param");
  5747. clearParameter("SPMNR06000_ReturnSaveInfo");
  5748. }
  5749. /**
  5750. * @group :
  5751. * @ver : 2010.05.28
  5752. * @by : 양천덕
  5753. * @---------------------------------------------------
  5754. * @type : function
  5755. * @access : public
  5756. * @desc : FlowSheet 기능 구현(Copy)
  5757. * @param :
  5758. * @return :
  5759. * @---------------------------------------------------
  5760. */
  5761. function fControlGridCopy(){
  5762. var sCells = grd_24hoursclincobsreclist.selectedCells;
  5763. if( sCells.length < 2 ) return;
  5764. var sStartIdxCol = sCells.item(0).col;
  5765. var sStartIdxRow = sCells.item(0).row;
  5766. var sStartData = grd_24hoursclincobsreclist.valueMatrix(sStartIdxRow, sStartIdxCol);
  5767. var sCmbAttrCD = grd_24hoursclincobsreclist.valueMatrix(sStartIdxRow, grd_24hoursclincobsreclist.colRef("attrcd"));
  5768. if( sStartData == "" ) return;
  5769. for(var k = 1 ; k < sCells.length ; k ++){
  5770. var irow = sCells.item(k).row;
  5771. var icol = sCells.item(k).col;
  5772. if( sCmbAttrCD == "" ){
  5773. if( grd_24hoursclincobsreclist.isReadOnly(irow, icol) == false && icol != grd_24hoursclincobsreclist.colRef("itemnm") && grd_24hoursclincobsreclist.valueMatrix(irow, icol) == "" ){
  5774. if( grd_24hoursclincobsreclist.valueMatrix(irow, grd_24hoursclincobsreclist.colRef("attrcd")) == "" ){
  5775. grd_24hoursclincobsreclist.valueMatrix(irow, icol) = sStartData;
  5776. }else{
  5777. grd_24hoursclincobsreclist.valueMatrix(irow, icol) = sStartData;
  5778. grd_24hoursclincobsreclist.cellComboNodeset(irow, icol) = sAttrListPath1+"[supcd='"+sCmbAttrCD+"']";
  5779. }
  5780. }
  5781. }else{
  5782. if( sCmbAttrCD == grd_24hoursclincobsreclist.valueMatrix(irow, grd_24hoursclincobsreclist.colRef("attrcd")) ){
  5783. grd_24hoursclincobsreclist.valueMatrix(irow, icol) = sStartData;
  5784. grd_24hoursclincobsreclist.cellComboNodeset(irow, icol) = sAttrListPath1+"[supcd='"+sCmbAttrCD+"']";
  5785. }
  5786. }
  5787. }
  5788. }
  5789. /**
  5790. * @group :
  5791. * @ver : 2010.05.28
  5792. * @by : 양천덕
  5793. * @---------------------------------------------------
  5794. * @type : function
  5795. * @access : public
  5796. * @desc : FlowSheet 기능 구현(Clean)
  5797. * @param :
  5798. * @return :
  5799. * @---------------------------------------------------
  5800. */
  5801. function fControlGridClean(){
  5802. var sCells = grd_24hoursclincobsreclist.selectedCells;
  5803. if( sCells.length > 1){
  5804. var msg = messageBox("선택한 영역의 데이터를 삭제하시겠습니까?\n단 연동 항목 및 합계 부분 제외", "Q");
  5805. if( msg == "6" ){
  5806. for(var i = 0 ; i < sCells.length ; i ++){
  5807. var col = sCells.item(i).col;
  5808. var row = sCells.item(i).row;
  5809. if( grd_24hoursclincobsreclist.isReadOnly(row, col, row, col) == false && col != grd_24hoursclincobsreclist.colRef("itemnm") ){
  5810. grd_24hoursclincobsreclist.valueMatrix(row, col) = "";
  5811. }
  5812. }
  5813. }
  5814. }else{
  5815. for(var i = 0 ; i < sCells.length ; i ++){
  5816. var col = sCells.item(i).col;
  5817. var row = sCells.item(i).row;
  5818. if( grd_24hoursclincobsreclist.isReadOnly(row, col) == false && col != grd_24hoursclincobsreclist.colRef("itemnm") ){
  5819. grd_24hoursclincobsreclist.valueMatrix(row, col) = "";
  5820. }
  5821. }
  5822. }
  5823. }
  5824. /**
  5825. * @group :
  5826. * @ver : 2010.05.28
  5827. * @by : 양천덕
  5828. * @---------------------------------------------------
  5829. * @type : function
  5830. * @access : public
  5831. * @desc : FlowSheet 바코드 출력 기능 추가
  5832. * @param :
  5833. * @return :
  5834. * @---------------------------------------------------
  5835. */
  5836. function fPrintPatLabel(){
  5837. //설정된 상단정보를 불러옴
  5838. sPamInfo = getGlobalVariable("paminfo");
  5839. model.removenodeset(xPamInfoPath);
  5840. setCSVToNode("/root/main/paminfo",sPamInfo,"pamlist");
  5841. var xPathBarCdNode = "/root/barcdtemp/barcdprntsetup";
  5842. if (model.getValue(xPamInfoPath+"/pid") != "") { //상단정보에 환자가 셋팅되어 있을 경우
  5843. var pid, indd, cretno, mskind, histstat;
  5844. model.removenode("/root/send");
  5845. model.removenode(xPathBarCdNode);
  5846. model.makenode(xPathBarCdNode);
  5847. model.makeValue("/root/send/scrnid", "SMMNR00600");
  5848. var comport = "1";
  5849. if(submit("TRLLC90101")){
  5850. comport = model.getValue(xPathBarCdNode+"/prntsetupinfo/setupinfo[1]/comm02/comm");
  5851. }
  5852. // 바코드OCX 생성
  5853. //2. 바코드 라벨 환경설정
  5854. var barcdRef = xPathBarCdNode+"/prntsetupinfo/setupinfo";
  5855. lzzfMakeBrcdPrntObjHanDo("CommAX", barcdRef);
  5856. BarCdpid = model.getValue(xPamInfoPath+"/pid");
  5857. BarCdindd = model.getValue(xPamInfoPath+"/indd");
  5858. BarCdcretno = model.getValue(xPamInfoPath+"/cretno");
  5859. BarCdmskind = model.getValue(xPamInfoPath+"/mskind");
  5860. BarCdhiststat = model.getValue(xPamInfoPath+"/histstat");
  5861. model.makeNode("/root/send/data17");
  5862. model.makeNode("/root/hidden/h_receipt/receipt");
  5863. //원무 메소드 호출
  5864. //fInPatBarCodePrn(pid, indd, cretno, mskind, histstat, comport);
  5865. /* 삭제된 파라미터 : pPort - COM Port 지정값
  5866. * 추가된 파라미터 : pSetyn - 프린터설정정보 셋팅여부
  5867. * pScrid - 프린터설정정보 조회용 화면 아이디
  5868. * pBarcdRef - 설정정보 xpath
  5869. */
  5870. pmifPrintBarCode(BarCdpid, BarCdindd, BarCdcretno, BarCdmskind, BarCdhiststat, "N", "SMMNR00600", barcdRef); // 20090527 변경됨.
  5871. } else {
  5872. messageBox("환자를 선택 후 출력하십시오", "I");
  5873. }
  5874. }
  5875. /**
  5876. * @group :
  5877. * @ver : 2010.07.22
  5878. * @by : 양천덕
  5879. * @---------------------------------------------------
  5880. * @type : function
  5881. * @access : public
  5882. * @desc : FlowSheet 조회분류 전체 선택 / 취소 기능
  5883. * @param :
  5884. * @return :
  5885. * @---------------------------------------------------
  5886. */
  5887. function fControlChkClsInfo(){
  5888. if( sSclsChkFlag == "N" ){
  5889. var sSrchClsInfoList = "";
  5890. for( var i = 1 ; i <= getNodesetCount("/root/init/clsinfo/clslist") ; i ++ ){
  5891. if(sSrchClsInfoList == ""){
  5892. sSrchClsInfoList += model.getValue("/root/init/clsinfo/clslist["+i+"]/itemcd");
  5893. }else{
  5894. sSrchClsInfoList += " " + model.getValue("/root/init/clsinfo/clslist["+i+"]/itemcd");
  5895. }
  5896. }
  5897. model.setValue("/root/main/cond/hoursclsinfo", sSrchClsInfoList);
  5898. sSclsChkFlag = "Y";
  5899. }else{
  5900. model.setValue("/root/main/cond/hoursclsinfo", "");
  5901. sSclsChkFlag = "N";
  5902. }
  5903. chk_24hoursclslist.refresh();
  5904. }
  5905. /**
  5906. * @group :
  5907. * @ver : 2011.03.02
  5908. * @by : 안도영
  5909. * @---------------------------------------------------
  5910. * @type : function
  5911. * @access : public
  5912. * @desc : 구역정보 조회 및 내환자정보 숨기기 (응급실인 경우)
  5913. * @param :
  5914. * @param :
  5915. * @return :
  5916. * @---------------------------------------------------
  5917. */
  5918. function fGetWardChngInfo(initFlag, pFlag){
  5919. if(initFlag=="Y") {
  5920. var sWardCD = model.getValue(xPamInfoPath+"/wardcd");
  5921. }
  5922. else{
  5923. var sWardCD = model.getValue("/root/main/cond/wardcd");
  5924. }
  5925. if ( sWardCD == eERDEPTCD) {
  5926. eERFLAG = "Y";
  5927. }else{
  5928. eERFLAG = "";
  5929. }
  5930. //응급실인 경우 구역정보 추가조회
  5931. if(eERFLAG == "Y"){ // 응급실
  5932. fGetZoneList();
  5933. cap_ward.attribute("text") = "구 역 :";
  5934. cmb_zone.visible = "true";
  5935. cmb_erpat.visible = "true";
  5936. cmb_roomlist.visible = "false";
  5937. cmb_patlist.visible = "false";
  5938. cmb_mypatlist.visible = "false";
  5939. cap_mypat.visible = "false";
  5940. ipt_pid.visible = "false";
  5941. cap_ward.attribute("left") = 177; // (기존위치 + 35)
  5942. cmb_zone.attribute("left") = 245;
  5943. cap_patnm_pid.attribute("left") = 340;
  5944. cmb_wardlist.attribute("width") = 97; // (기존 폭 + 30)
  5945. if(pFlag != "SrchPat"){ // 환자를 직접 선택한 경우엔 구역정보 보존
  5946. // 처음 상단 정보로 화면 열릴 때
  5947. if(initFlag=="Y"){
  5948. model.setValue("/root/main/cond/zonecd", (model.getValue(xPamInfoPath+"/sectioncd") == "") ? "-" : model.getValue(xPamInfoPath+"/sectioncd"));
  5949. }else{
  5950. model.setValue("/root/main/cond/zonecd", "-"); // 'All'로 default
  5951. }
  5952. }
  5953. }else{
  5954. cap_ward.attribute("text") = "병 실 :";
  5955. cmb_zone.visible = "false";
  5956. cmb_erpat.visible = "false";
  5957. cmb_roomlist.visible = "true";
  5958. cmb_patlist.visible = "true";
  5959. cmb_mypatlist.visible = "true";
  5960. cap_mypat.visible = "true";
  5961. ipt_pid.visible = "true";
  5962. cap_ward.attribute("left") = 142; // (기존위치)
  5963. cmb_zone.attribute("left") = 210;
  5964. cap_patnm_pid.attribute("left") = 305;
  5965. cmb_wardlist.attribute("width") = 67; // (기존 폭)
  5966. model.setValue("/root/main/cond/zonecd", "");
  5967. // 구분 조건 default
  5968. //model.setValue(xRecSrchCondPath+"/recsrchflag", "DR^ER"); // DR : 타기록지연계, ER : 응급실 간호일지만
  5969. }
  5970. cmb_zone.refresh();
  5971. cap_ward.refresh();
  5972. cmb_roomlist.refresh();
  5973. cap_mypat.refresh();
  5974. cmb_mypatlist.refresh();
  5975. }
  5976. /**
  5977. * @group :
  5978. * @ver : 2011.03.09
  5979. * @by : 안도영
  5980. * @---------------------------------------------------
  5981. * @type : function
  5982. * @access : public
  5983. * @desc : 현재 선택/저장한 환자의 combo 재선택 (응급실인 경우)
  5984. * @param :
  5985. * @param :
  5986. * @return :
  5987. * @---------------------------------------------------
  5988. */
  5989. function fNextSelectErPat(sobj){
  5990. var tempPid = "";
  5991. var sPosition = 0;
  5992. if ( gcurrentpid != "") {
  5993. for(i = 1; i <= getNodesetCount(erPatPidPath); i++ ) {
  5994. tempPid = model.getValue(erPatPidPath + "["+ i +"]/pid");
  5995. if (gcurrentpid == tempPid) {
  5996. sPosition = i;
  5997. break;
  5998. }
  5999. }
  6000. }
  6001. if(sPosition == getNodesetCount(erPatPidPath)){
  6002. sobj.select(0); // 마지막 환자인 경우 처음 환자로 재 선택
  6003. }else{
  6004. sobj.select(sPosition);
  6005. }
  6006. }
  6007. /**
  6008. * @author : dhkim
  6009. * @create : 20080827
  6010. * @desc : 해당환자가 중환자실 환자인가?
  6011. * @return : boolean (true/false)
  6012. */
  6013. function fIsICUPatient(wardcd){
  6014. var ret = false;//icu 환자인지 여부 디폴트
  6015. //중증도 기록에서 사용하는 부서코드 조회_20090414_SMY추가
  6016. for(i = 1; i <= getNodesetCount("/root/init/icucdgrup/icucdgruplist"); i++){
  6017. if(wardcd == model.getValue("/root/init/icucdgrup/icucdgruplist[" + i + "]/wardcd")
  6018. && model.getValue("/root/init/icucdgrup/icucdgruplist[" + i + "]/clsflag") == '4'){
  6019. ret = true;
  6020. return true;
  6021. }
  6022. }
  6023. return ret;
  6024. }