SMPID20500.js 570 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504
  1. //================================================================================================
  2. // 외래사후심사 메인화면 (김상진)
  3. // 수정이력
  4. // - 2007.03.22 / 정주미
  5. // - 2008.06.03 / 김상진
  6. //================================================================================================
  7. /* --------------------------------------------------------------------------------------------------
  8. Fucntion Name || Description
  9. -----------------------------------------------------------------------------------------------------
  10. - fInitialize : 화면 초기화
  11. - initCalendar : 그리드달력 초기화
  12. --------------------------------
  13. - 팝업화면 Function
  14. --------------------------------
  15. - fGetOrderComment : 심사메모 : SPPIZ00700_심사Comment조회.xrw 호출
  16. - fSetLnUnitSpclSpec : 특정내역 : SPPIZ00500_특정내역상세관리.xrw
  17. - fSetLnUnitClsoSpclSpec : 특정내역 : SPPIZ00500_특정내역상세관리.xrw
  18. - fDiagOrderToothInput : 치식 : SPPIZ00600_상병및처방별치식
  19. - fGetOsclClamData : 상세계산 : SPPID22100_상세계산내역조회.xrw
  20. - fOrderGridInsertCnfmCd : 확인코드 : SPPIZ01100_확인코드조회
  21. - fOrderRsltSrch : 결과조회 : SMAER00800_결과조회
  22. - fSetHosInResnCd : 분업예외코드 : SPPIZ01500_의약분업예외사유코드조회.xrw
  23. - fSrchEstmCd : 산정의미코드 : SPPIZ00800_산정코드조회.xrw
  24. - fGetEmrInformation : 진료정보조회 : SMMMO02500_환자진료정보.xrw
  25. - fGetMemoHistList : 메모이력 : SPPIZ00300_메모이력조회.xrw
  26. - fGetDiagHistList : 상병이력조회 : SMPIZ00100_외래입원상병이력조회.xrw
  27. - fPrcpResnRef :처방사유조회 : SPMMO19000_중복처방사유조회
  28. --------------------------------
  29. - 상병관련 Function
  30. --------------------------------
  31. - fDiagSeqUp : 상병순서 위로
  32. - fDiagSeqDown : 상병순서 아래로
  33. - fSortDiagNo : 상병SORT
  34. - fDiagGridInsertRow : 행삽입
  35. - fDiagGridInsertRowMulti : 행추가(5줄)
  36. - fDiagGridDeleteRow : 행삭제
  37. - fDiagGridDeleteCancel : 삭제취소
  38. - fSearchDiageCode : 상병코드 PopUp 조회
  39. - fSearchSPPIZ00400 : 상병코드 PopUp 조회호출
  40. - fSetDiagCdNm : 상병코드 PopUp 반영
  41. --------------------------------
  42. - 특정내역관련 Function
  43. --------------------------------
  44. - fRepeatSpclSpec : 특정내역반복
  45. - fSpclGridInsertRow : 특정내역 "행 추가"
  46. - fSpclGridDeleteRow : 특정내역 "행 삭제"
  47. - fSetLnUnitClsoSpclSpec : 줄단위 원외특정내역 수정/입력 ==> SPPIZ01700_원외처방특정내역상세관리.xrw
  48. - fSetLnUnitSpclSpec : 줄단위 특정내역 수정/입력 ==> SPPIZ00500_특정내역상세관리.xrw
  49. - fSetDocRefLnSpclSpec : 명세서단위 특정내역 수정/입력 ==> SPPIZ00500_특정내역상세관리.xrw
  50. - fOrderGridInsertCmt : 처방 Grid 마우스 오른쪽 "처방주석입력" ==> SPPIZ00500_특정내역상세관리.xrw
  51. - fSetLnUnitMemoRefresh : 심사Comment 조회 Popup : 줄단위메모 설정 ==> SPPIZ00700_심사Comment조회.xrw
  52. - fSetJudgMemoRefresh : 심사Comment 조회 Popup : 심사메모 설정 ==> SPPIZ00700_심사Comment조회.xrw
  53. - fSetEdiMemoRefresh : 심사Comment 조회 Popup : EDI메모 설정 ==> SPPIZ00700_심사Comment조회.xrw
  54. - fSetCnfmCdSpclSpec : 특정내역 더블클릭 : 확인코드 줄단위 특정내역 수정/입력 ==> SPPIZ01100_확인코드조회
  55. - fOrderGridInsertCnfmCd : 처방내역 버튼클릭 : 확인코드 줄단위 특정내역 수정/입력 ==> SPPIZ01100_확인코드조회
  56. - fGetMemoHistList : 메모이력 버튼클릭 : 심사자메모, edi메모, JX999조회 입력 ==> SPPIZ00300_메모이력조회.xrw
  57. - fSetSpclSpecJX999 : 저장할때 : 기타메모(JX999)를 특정내역 형식에 맞춰 설정
  58. - fSetJudgEDIMemo : 저장할때 : 심사자메모, EDI청구메모를 특정내역 형식에 맞춰 설정한다.
  59. --------------------------------
  60. - 진료달력관련 Function
  61. --------------------------------
  62. - fViewOrddddisp : 진료달력 진료일 표시
  63. - fClickOrdYN : 진료달력 진료일 체크 (진료일표시, 진료일수(내원일수), 진료개시일, 진료종료일 계산)
  64. --------------------------------
  65. --------------------------------
  66. - 처방관련(수가조회)
  67. --------------------------------
  68. - fOrderGridInsertRow : 행추가
  69. - fOrderGridCopyRow : 행복사
  70. - fOrderGridDeleteRow : 행삭제
  71. - fOrderGridDeleteCancel : 삭제취소
  72. - fOrderGridAddRow : 처방추가
  73. - fSetSrchCalcScorCd : 신규코드 추가
  74. - fSetNewCalcScorCd : 신규코드 추가후
  75. - fSetCalcScorAmt : 수가코드의 금액정보를 표시
  76. - fSetOrderLnNo
  77. _
  78. - fSetTotDrugQtyAmt : 기존코드 수정 1회량/횟수/일수 수정시
  79. - fSetCalcScorAmt : 조회수가 금액표시
  80. - fSetOrderLnNo : 처방그리드 sort
  81. - fChangeOrderLnNo : 처방, 특정 줄번호 셋팅
  82. - fSortSpclNo : 특정그리드 sort
  83. - fSetNewCnfmCd : 확인코드, 분업예외코드, 검체검사위탁, 준용코드를 특정내역에 자동으로 추가
  84. --------------------------------
  85. - 저장 및 완료 후 프로세스(저장 및 조회)
  86. --------------------------------
  87. - fSaveOutAftJudg : 저장(B)
  88. - fGetNextAftJudgTrgtMan : 완료(C), 미심(A), 보류(N), 삭제(D)
  89. - pidfGetKDRGCode : KDRG 3.2 DRG분류번호 조회
  90. - fSrchNextJudgTrgtManCLBS : 다음 대상자 조회 찾기
  91. - fSrchNextJudgTrgtManSPEC : 다음 대상자 조회 찾기(선별심사인 경우)
  92. - fGetOutAftJudgMngt : 다음 대상자 조회(대상자에서 더블클릭했을 경우...)
  93. - fInitSrchData : 화면초기화 (기존환자 심사중 해제)
  94. - fSetAftJudgTrgtManSrchData : 다음 대상자 조회 이후
  95. - fSetJudgStatBtnAuth : 심사완료여부 상태따라 버튼 권한 설정(현재환자 심사중 설정)
  96. - fGetSelectedOrderData : 재료행위/급여/항목구분 Radio 선택
  97. - fSetOrderData : 처방 항목 구분 및 선별심사 처방 색깔 구분
  98. - fSetSubtotal : 항목별 소계(item1별로 금액sum해서 보여준다)
  99. --------------------------------
  100. - 이전명세서 조회
  101. --------------------------------
  102. - fSrchPreDocuList : 이전명세서 목록 조회
  103. - fPreListOnDblClick : 이전명세서 목록 팝업
  104. - fGetPreDocuAftJudgTrgtMan : 이전명세서 심사모드 조회
  105. --------------------------------
  106. - 원외처방관련 Function
  107. --------------------------------
  108. - fClopGridAllDeleteRow : 원외처방 "교부번호 전체삭제"
  109. - fClopGridDeleteRow : 원외처방 "행 삭제"
  110. - fClopOnEndEdit : 원외처방 수정
  111. - fOutOrderGridInsertRow : 원외처방 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가"
  112. - fSetSrchOutCalcScorCd : 수가코드, EDI코드를 조회한 후 원외처방으로 행 추가를 한다.
  113. - fOutOrderGridCopyRow : 원외처방 "행복사"
  114. --------------------------------
  115. - 기타조회
  116. --------------------------------
  117. - fClodSelectByPayflag : 급여구분별 처방조회
  118. - fOpenSMPIS00500DetailSnglCD : 처방별환자조회(계산)_수가코드
  119. - fOpenSMPIS00500DetailEdicd : 처방별환자조회(계산)_EDI코드
  120. - fOpenSMPIS00600Detail : 처방별환자조회(청구/삭감)
  121. --------------------------------
  122. - 메세지작성
  123. --------------------------------
  124. 2009. 08. 17 JHP
  125. fGetPatMsgYn : 심사화면 환자 메세지 여부확인 : SMPID20500_외래사후심사관리.xrw
  126. fPatJudgPatMsgTrsm : 환자기준 전송메세지작성 : SMPID20500_외래사후심사관리.xrw
  127. fOrderJudgPatMsgTrsm : 처방기준 전송메세지작성 : SMPID20500_외래사후심사관리.xrw
  128. fJudgPatMsgTrsmRef : 해당건 환자 전체 메세지 보기 : SMPID20500_외래사후심사관리.xrw
  129. -------------------------------------------------------------------------------------------------- */
  130. var gToday = new Date();
  131. var gBaseyear = gToday.getDateFormat("YYYY"); // (dateHelper.js)에서 제공하는 함수를 사용하여 해당 년를 구한다.
  132. var gBasemonth = gToday.getDateFormat("MM");
  133. var gBaseday = gToday.getDateFormat("DD");
  134. var gCurrentdd = gBaseyear + gBasemonth + gBaseday;
  135. var gCurrentym = gBaseyear + gBasemonth;
  136. var gClopSize = "AUTO"; // 현재상태 DEFAULT, FULL, AUTO, CHANGE
  137. // 20100614 환경초기화를 위한 로딩상태 저장
  138. var gCldihist_refdata = "";
  139. var gCldihist_sizedata = "";
  140. var gClodhist_refdata = "";
  141. var gClodhist_sizedata = "";
  142. var gClophist_refdata = "";
  143. var gClophist_sizedata = "";
  144. //-----------------------------------------------------
  145. // 화면 open시(와 초기화 버튼 클릭시) 화면 초기화 기능
  146. //-----------------------------------------------------
  147. function fInitialize() {
  148. // 처방 Grid "EDI코드"까지 틀 고정
  149. grd_clodhist.frozenCols = grd_clodhist.colRef("basecd");
  150. grd_clsphist.frozenCols = grd_clsphist.colRef("snglcalcscorcd");
  151. grd_oprcphist.frozenCols = grd_oprcphist.colRef("edicd");
  152. // 원외처방 Grid
  153. grd_oprcphist.mergecol(grd_oprcphist.colRef("edilnno")) = false;
  154. grd_oprcphist.mergecol(grd_oprcphist.colRef("snglcalcscorcd")) = false;
  155. grd_oprcphist.mergecol(grd_oprcphist.colRef("edicd")) = false;
  156. grd_oprcphist.mergecol(grd_oprcphist.colRef("hngnm")) = false;
  157. grd_oprcphist.mergecol(grd_oprcphist.colRef("payflag")) = false;
  158. grd_oprcphist.mergecol(grd_oprcphist.colRef("drugqty")) = false;
  159. grd_oprcphist.mergecol(grd_oprcphist.colRef("edidrugqty")) = false;
  160. grd_oprcphist.mergecol(grd_oprcphist.colRef("drugtims")) = false;
  161. grd_oprcphist.mergecol(grd_oprcphist.colRef("drugdayno")) = false;
  162. grd_oprcphist.mergecol(grd_oprcphist.colRef("edidrugdayno")) = false;
  163. grd_oprcphist.mergecol(grd_oprcphist.colRef("spclspecyn")) = false;
  164. grd_oprcphist.mergecol(grd_oprcphist.colRef("efcynm2")) = false;
  165. grd_oprcphist.mergecol(grd_oprcphist.colRef("efcynm3")) = false;
  166. grd_oprcphist.mergecol(grd_oprcphist.colRef("efcyclscd")) = false;
  167. grd_oprcphist.mergecol(grd_oprcphist.colRef("efcyclsnm")) = false;
  168. grd_oprcphist.mergecol(grd_oprcphist.colRef("ordnm")) = false;
  169. grd_oprcphist.mergecol(grd_oprcphist.colRef("edicdflag")) = false;
  170. grd_oprcphist.mergecol(grd_oprcphist.colRef("mpsno")) = false;
  171. grd_oprcphist.mergecol(grd_oprcphist.colRef("newmpsno")) = false;
  172. grd_oprcphist.mergecol(grd_oprcphist.colRef("seqno")) = false;
  173. grd_oprcphist.mergecol(grd_oprcphist.colRef("workflag")) = false;
  174. grd_oprcphist.mergecol(grd_oprcphist.colRef("clopseqno")) = false;
  175. grd_oprcphist.mergecol(grd_oprcphist.colRef("adjtresncd")) = false;
  176. grd_oprcphist.mergecells = "byrestriccol";
  177. // 상병, 특정내역, 처방 Group의 컨트롤 크기를 초기화한다.
  178. //cap_message.attribute("left") = "5";
  179. //opt_msgspclformat.attribute("left") = "490";
  180. //opt_msgspclformat.attribute("width") = "500";
  181. // 상병 Grid 크기를 초기화한다.
  182. grp_cldihist.attribute("height") = "168";
  183. grd_cldihist.attribute("height") = "143"; // 상병 Grid의 세로 폭을 축소한다.
  184. // 처방
  185. cap_clod.attribute("top") = "230";
  186. grd_clodhist.attribute("top") = "250";
  187. grd_clodhist.attribute("height") = "290";
  188. // 원외처방
  189. /*
  190. grp_clop.attribute("top") = "541";
  191. grp_clop.attribute("height") = "96";
  192. grd_oprcphist.attribute("top") = "25";
  193. grd_oprcphist.attribute("height") = "71";
  194. */
  195. fClopSizeChange("AUTO"); // 20091217 이걸루 대체 현재는 고정
  196. cap_grptemp.visible = false;
  197. grp_predoculist.visible = false; // 이전 명세서 목록용 Group
  198. grp_delclodlist.visible = false; // 처방 휴지통 Group
  199. grp_delorderlist.visible = false; // 심사변경 목록 Group
  200. case_spclspec.selected = false;
  201. case_judgrmemo.selected = false;
  202. case_ediclammemo.selected = false;
  203. // grid를 인스턴스에 mapping후 인스턴스에 해당하는 빈줄 1줄이 생기므로 grid 초기화
  204. model.removeNodeset("/root/main/list1/cldi");
  205. model.removeNodeset("/root/main/list2/clod");
  206. model.removeNodeset("/root/main/list3/clsp");
  207. model.removeNodeset("/root/main/list4/clbs");
  208. model.removeNodeset("/root/main/list5/clod");
  209. model.removeNodeset("/root/main/list6/delclod");
  210. model.removeNodeset("/root/main/list7/clop");
  211. model.removeNodeset("/root/hidden/list4/clbs");
  212. // 처방Grid용 조회부의 Radio 초기값을 "전체"로 설정한다.
  213. model.setValue("/root/hidden/list2/clodsrch/selectedRdoPay", "0");
  214. model.setValue("/root/hidden/list2/clodsrch/selectedRdoItem", "-");
  215. // 원외처방 - 항목구분 (기본값 : 전체)
  216. model.setValue("/root/hidden/list7/clop/selectedRdoPay", "0");
  217. // 특정내역Grid용 필터링 Radio 초기값
  218. model.setValue("/root/hidden/list3/selectedUnitFlag", "-");
  219. // 공통코드를 조회한다.
  220. // (ZBC001.js) com.ZBCMCODE에서 기초코드 값을 가져와서 Combo 컨트롤 item으로 설정하기 위해 사용한다.
  221. zbcfGetCodeList(
  222. new Array(
  223. "P0110" // 진료결과(보험)
  224. ,"P0297" // 진료결과(산재)
  225. ,"P0117" // 특정코드
  226. ,"P0127" // 조정사유
  227. ,"P0131" // 표준코드구
  228. ,"P0151" // 심사완료여부
  229. ,"P0291" // 진료분야
  230. ,"P0322" // 청구세부
  231. ,"P0236" // 공상구분
  232. ,"P0465" // 명세서삭제사유
  233. ,"P0466" // 반송부제기사유
  234. ,"P0155" // 청구구분
  235. ,"P0365" // 본인부담코드
  236. ,"P0261" // 의료급여종별구분
  237. ,"P0491" // 자격수정사유
  238. ),
  239. new Array(
  240. "/root/init/P0110list"
  241. ,"/root/init/P0297list"
  242. ,"/root/init/P0117list"
  243. ,"/root/init/P0127list"
  244. ,"/root/init/P0131list"
  245. ,"/root/init/P0151list"
  246. ,"/root/init/P0291list"
  247. ,"/root/init/P0322list"
  248. ,"/root/init/P0236list"
  249. ,"/root/init/P0465list"
  250. ,"/root/init/P0466list"
  251. ,"/root/init/P0155list"
  252. ,"/root/init/P0365list"
  253. ,"/root/init/P0261list"
  254. ,"/root/init/P0491list"
  255. ),
  256. false ); // minimum을 'false'로 설정한 경우에는 코드의 모든속성을 가져온다.
  257. pamfGetCodeList(new Array("PK221"), new Array("/root/init/PK221list"));
  258. //-------------------------------------------------
  259. // 진료과, 주치의 조회
  260. //-------------------------------------------------
  261. model.setValue("/root/main/item1/clbs/ioflag", "O");
  262. submit("TRPID20309", false);
  263. model.makeNode("root/hidden/tmp/orddeptcd");
  264. model.makeNode("root/hidden/tmp/orddeptcd2");
  265. model.makeNode("root/hidden/tmp/orddrid");
  266. model.makeNode("root/hidden/tmp/orddrid2");
  267. model.removeNodeset("root/init/orddeptcd");
  268. model.removeNodeset("root/init/orddeptcd2");
  269. model.removeNodeset("root/init/orddrid");
  270. model.removeNodeset("root/init/orddrid2");
  271. model.makeNode("root/init/orddeptcd");
  272. model.makeNode("root/init/orddeptcd2");
  273. model.makeNode("root/init/orddrid");
  274. model.makeNode("root/init/orddrid2");
  275. model.copyNode("root/init/orddeptcd", "root/hidden/tmp/orddeptcd");
  276. model.copyNode("root/init/orddeptcd2", "root/hidden/tmp/orddeptcd2");
  277. model.copyNode("root/init/orddrid", "root/hidden/tmp/orddrid");
  278. model.copyNode("root/init/orddrid2", "root/hidden/tmp/orddrid2");
  279. model.removeNodeset("root/hidden/tmp/orddeptcd");
  280. model.removeNodeset("root/hidden/tmp/orddeptcd2");
  281. model.removeNodeset("root/hidden/tmp/orddrid");
  282. model.removeNodeset("root/hidden/tmp/orddrid2");
  283. // 20100715 촉탁의 진료를 공상구분을 이용해서 사용하고 있음 (왜 이걸 사용했을까? 손댈부분이 많아서 그냥 이거 사용함)
  284. // 공상구분에 보이지 않아서 여기서 코드 추가 (정규 고시된 코드가 아니라 공통코드에는 추가하지 않음)
  285. model.removeNodeset("/root/hidden/tmp/P0236list/P0236");
  286. model.makeValue("/root/hidden/tmp/P0236list/P0236/cdid","Z");
  287. model.makeValue("/root/hidden/tmp/P0236list/P0236/cdnm","촉탁의원외처방(임시)");
  288. copyNodeType("/root/init/P0236list","/root/hidden/tmp/P0236list","after");
  289. model.removeNodeset("/root/hidden/tmp/P0236list");
  290. //-------------------------------------------------
  291. // 상병코드 조회
  292. //-------------------------------------------------
  293. //submit("TRPID20312", false);
  294. //--------------------------------
  295. // EDI관련 컬럼 표시
  296. //--------------------------------
  297. fEdiCheck();
  298. //----------------------------------------
  299. //사용자에게 보여줄 필요없는 컬럼을 숨긴다.
  300. //----------------------------------------
  301. fColHidden();
  302. //-----------------------------------------------------------------------
  303. // 20100614 환경저장 조회부분 처리전 로딩상태 저장 (환경초기화에서 사용)
  304. //-----------------------------------------------------------------------
  305. // 1. 상병리스트
  306. var cldihist_obj = document.controls.item("grd_cldihist");
  307. for (var i = 0; i < cldihist_obj.cols; i++) {
  308. var refval = cldihist_obj.colAttribute(i, "ref");
  309. gCldihist_refdata += refval + "^";
  310. var sizeval = cldihist_obj.colWidth(i);
  311. gCldihist_sizedata += sizeval + "^";
  312. }
  313. gCldihist_refdata = gCldihist_refdata.substring(0, gCldihist_refdata.length-1);
  314. gCldihist_sizedata = gCldihist_sizedata.substring(0, gCldihist_sizedata.length-1);
  315. // 2. 처방리스트
  316. var clodhist_obj = document.controls.item("grd_clodhist");
  317. for (var i = 0; i < clodhist_obj.cols; i++) {
  318. var refval = clodhist_obj.colAttribute(i, "ref");
  319. gClodhist_refdata += refval + "^";
  320. var sizeval = clodhist_obj.colWidth(i);
  321. gClodhist_sizedata += sizeval + "^";
  322. }
  323. gClodhist_refdata = gClodhist_refdata.substring(0, gClodhist_refdata.length-1);
  324. gClodhist_sizedata = gClodhist_sizedata.substring(0, gClodhist_sizedata.length-1);
  325. // 3. 원외처방리스트
  326. var clophist_obj = document.controls.item("grd_oprcphist");
  327. for (var i = 0; i < clophist_obj.cols; i++) {
  328. var refval = clophist_obj.colAttribute(i, "ref");
  329. gClophist_refdata += refval + "^";
  330. var sizeval = clophist_obj.colWidth(i);
  331. gClophist_sizedata += sizeval + "^";
  332. }
  333. gClophist_refdata = gClophist_refdata.substring(0, gClophist_refdata.length-1);
  334. gClophist_sizedata = gClophist_sizedata.substring(0, gClophist_sizedata.length-1);
  335. //-----------------------------------------------------------------------
  336. //-------------------------------------------------------------
  337. // 환경저장 조회부분(환경저장된 컬럼 ref순서대로 colMove시킨다.
  338. //-------------------------------------------------------------
  339. model.resetInstanceNode("/root/send/listval/uuee");
  340. model.setValue("/root/send/listval/uuee/scrnid", "SMPID20500"); // SMPID20500_외래사후심사관리
  341. if (submit("TRPID21602", false)) {
  342. var selrow = "";
  343. var compsnm = "";
  344. var refdata = "";
  345. var sizedata = "";
  346. var grdobj = "";
  347. var refarr = "";
  348. var sizearr = "";
  349. for ( var x = 1; x <= model.getXPathValue( "count(/root/hidden/listval/uuee)" ) ; x++ ) {
  350. compsnm = model.getValue("/root/hidden/listval/uuee[" + x + "]/compsnm");
  351. if (compsnm) { // Grid ID 정보
  352. refdata = model.getValue("/root/hidden/listval/uuee[" + x + "]/compscnts"); // Grid의 칼럼명
  353. sizedata = model.getValue("/root/hidden/listval/uuee[" + x + "]/compssizecnts"); // Grid의 칼럼Size
  354. grdobj = document.controls.item(compsnm);
  355. selrow = grd_cldihist.selectedRow(0); // row 선택 후 타이틀 부분 조정시 row = 0으로 바뀌므로 selectedRow로 체크함
  356. refarr = refdata.split("^");
  357. sizearr = sizedata.split("^");
  358. for (var i = 0; i < refarr.length; i++) {
  359. var colcnt = grdobj.colref("" + refarr[i] + "");
  360. if (i != colcnt) {
  361. grdobj.colMove(i, colcnt, "before", false);
  362. }
  363. var size = sizearr[i];
  364. grdobj.colWidth(i) = eval(size);
  365. }
  366. grdobj.rebuild();
  367. model.setFocus(compsnm);
  368. grdobj.select(selrow, 1) = true;
  369. grdobj.row = selrow; // 환경초기화 이후 row = -1로 설정되므로
  370. }
  371. }
  372. }
  373. grd_ordddcalc.rowhidden(0) = true;
  374. // 완료 ~ 삭제 Btn 색을 변경한다.
  375. btn_end.attribute("color") = "#cc3333"; // cc3333=붉은색
  376. btn_unjudg.attribute("color") = "#cc3333";
  377. btn_rete.attribute("color") = "#cc3333";
  378. btn_del.attribute("color") = "#cc3333";
  379. btn_save.attribute("font-weight") = "bold";
  380. btn_end.attribute("font-weight") = "bold";
  381. btn_unjudg.attribute("font-weight") = "bold";
  382. btn_rete.attribute("font-weight") = "bold";
  383. btn_del.attribute("font-weight") = "bold";
  384. btn_maininit.attribute("font-weight") = "bold";
  385. //---------------------------------------------------
  386. // 메모여부에 따라서 색깔을 바꾼다. 20090929 박창원
  387. //---------------------------------------------------
  388. //----------------------
  389. // 화면 권한을 설정한다.
  390. //----------------------
  391. fCheckAuth();
  392. //----------------------
  393. // Popup 여부체크
  394. //----------------------
  395. if (isPopup()) { // (common.js) 자신이 팝업인지 아닌지를 리턴한다.
  396. btn_closepredocupopup.visible = true; // Popup용 닫기 버튼
  397. btn_EnvSetup.visible = false; // 환경저장 버튼
  398. btn_predocu.visible = false; // 이전명세서 버튼
  399. var clamym = model.getValue("/root/send/item1/clbs/clamym"); // 청구년월
  400. var clamdg = model.getValue("/root/send/item1/clbs/clamdg"); // 청구차수
  401. var pid = model.getValue("/root/send/item1/clbs/pid"); // 등록번호
  402. var pidsn = model.getValue("/root/send/item1/clbs/pidsn"); // 등록번호순번
  403. if (clamym && clamdg && pid && pidsn) {
  404. //-------------------------------------
  405. //사후 심사 대상자를 조회한 이후의 처리
  406. //-------------------------------------
  407. submit("TRPID20301"); // 2008-08-01 김상진 : 입원으로 통합.
  408. fSetAftJudgTrgtManSrchData();
  409. }
  410. } else {
  411. btn_closepredocupopup.visible = false; // Popup용 닫기 버튼
  412. //btn_EnvSetup.visible = true; // 환경저장 버튼
  413. btn_predocu.visible = true; // 이전명세서 버튼
  414. //---------------------------------------------
  415. // Popup이 아닌 경우 대상자 조회를 바로 띄운다.
  416. //---------------------------------------------
  417. fGetOutAftJudgTrgtManPidSrch();
  418. }
  419. model.setValue("/root/hidden/reselect", "N"); // 재조회여부(저장버튼을 눌러서 재조회 할 경우)
  420. model.setValue("/root/hidden/orgjudgendyn", ""); // 오리지날 심사상태(심사중이었다가 해제되는 경우 원래값 돌려주기 위해 사용)
  421. }
  422. // 20100614 환경초기화
  423. function fClearSetInfo() {
  424. var selrow = "";
  425. var compsnm = "";
  426. var refdata = "";
  427. var sizedata = "";
  428. var grdobj = "";
  429. var refarr = "";
  430. var sizearr = "";
  431. // 1. 상병그리드 초기화
  432. selrow = grd_cldihist.selectedRow(0); // row 선택 후 타이틀 부분 조정시 row = 0으로 바뀌므로 selectedRow로 체크함
  433. compsnm = "grd_cldihist";
  434. refdata = gCldihist_refdata; // 초기설정 담아둔 글로벌 변수에서 가져온다. Grid의 칼럼명
  435. sizedata = gCldihist_sizedata; // 초기설정 담아둔 글로벌 변수에서 가져온다. Grid의 칼럼Size
  436. grdobj = document.controls.item(compsnm);
  437. refarr = refdata.split("^");
  438. sizearr = sizedata.split("^");
  439. for (var i = 0; i < refarr.length; i++) {
  440. var colcnt = grdobj.colref("" + refarr[i] + "");
  441. if (i != colcnt) {
  442. grdobj.colMove(i, colcnt, "before", false);
  443. }
  444. var size = sizearr[i];
  445. grdobj.colWidth(i) = eval(size);
  446. }
  447. grdobj.rebuild();
  448. model.setFocus(compsnm);
  449. grdobj.select(selrow, 1) = true;
  450. grdobj.row = selrow; // 환경초기화 이후 row = -1로 설정되므로
  451. // 2. 처방그리드 초기화
  452. selrow = grd_clodhist.selectedRow(0); // row 선택 후 타이틀 부분 조정시 row = 0으로 바뀌므로 selectedRow로 체크함
  453. compsnm = "grd_clodhist";
  454. refdata = gClodhist_refdata; // 초기설정 담아둔 글로벌 변수에서 가져온다. Grid의 칼럼명
  455. sizedata = gClodhist_sizedata; // 초기설정 담아둔 글로벌 변수에서 가져온다. Grid의 칼럼Size
  456. grdobj = document.controls.item(compsnm);
  457. refarr = refdata.split("^");
  458. sizearr = sizedata.split("^");
  459. for (var i = 0; i < refarr.length; i++) {
  460. var colcnt = grdobj.colref("" + refarr[i] + "");
  461. if (i != colcnt) {
  462. grdobj.colMove(i, colcnt, "before", false);
  463. }
  464. var size = sizearr[i];
  465. grdobj.colWidth(i) = eval(size);
  466. }
  467. grdobj.rebuild();
  468. model.setFocus(compsnm);
  469. grdobj.select(selrow, 1) = true;
  470. grdobj.row = selrow; // 환경초기화 이후 row = -1로 설정되므로
  471. // 3. 원외처방그리드 초기화
  472. selrow = grd_oprcphist.selectedRow(0); // row 선택 후 타이틀 부분 조정시 row = 0으로 바뀌므로 selectedRow로 체크함
  473. compsnm = "grd_oprcphist";
  474. refdata = gClophist_refdata; // 초기설정 담아둔 글로벌 변수에서 가져온다. Grid의 칼럼명
  475. sizedata = gClophist_sizedata; // 초기설정 담아둔 글로벌 변수에서 가져온다. Grid의 칼럼Size
  476. grdobj = document.controls.item(compsnm);
  477. refarr = refdata.split("^");
  478. sizearr = sizedata.split("^");
  479. for (var i = 0; i < refarr.length; i++) {
  480. var colcnt = grdobj.colref("" + refarr[i] + "");
  481. if (i != colcnt) {
  482. grdobj.colMove(i, colcnt, "before", false);
  483. }
  484. var size = sizearr[i];
  485. grdobj.colWidth(i) = eval(size);
  486. }
  487. grdobj.rebuild();
  488. model.setFocus(compsnm);
  489. grdobj.select(selrow, 1) = true;
  490. grdobj.row = selrow; // 환경초기화 이후 row = -1로 설정되므로
  491. }
  492. // 20100614 환경저장
  493. function fSaveSetInfo() {
  494. var uueemax = 0;
  495. var uueemod = "";
  496. var compsnm = "";
  497. var refdata = "";
  498. var sizedata = "";
  499. var grdobj = "";
  500. model.resetInstanceNode("/root/send/listval/uuee");
  501. // 1. 상병그리드 저장
  502. compsnm = "grd_cldihist";
  503. uueemax++;
  504. uueemod = "I";
  505. refdata = "";
  506. sizedata = "";
  507. if ( model.getValue("/root/hidden/listval/uuee[compsnm='"+compsnm+"']/compsnm") == compsnm ) {
  508. uueemod = "U";
  509. }
  510. grdobj = document.controls.item(compsnm);
  511. for (var i = 0; i < grdobj.cols; i++) {
  512. var refval = grdobj.colAttribute(i, "ref");
  513. refdata += refval + "^";
  514. var sizeval = grdobj.colWidth(i);
  515. sizedata += sizeval + "^";
  516. }
  517. refdata = refdata.substring(0, refdata.length-1);
  518. sizedata = sizedata.substring(0, sizedata.length-1);
  519. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/flag" ,uueemod);
  520. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/scrnid" ,"SMPID20500");
  521. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compsnm" ,compsnm);
  522. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compscnts" ,refdata);
  523. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compsrefcnts" ,"");
  524. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compssizecnts",sizedata);
  525. // 2. 처방그리드 저장
  526. compsnm = "grd_clodhist";
  527. uueemax++;
  528. uueemod = "I";
  529. refdata = "";
  530. sizedata = "";
  531. if ( model.getValue("/root/hidden/listval/uuee[compsnm='"+compsnm+"']/compsnm") == compsnm ) {
  532. uueemod = "U";
  533. }
  534. grdobj = document.controls.item(compsnm);
  535. for (var i = 0; i < grdobj.cols; i++) {
  536. var refval = grdobj.colAttribute(i, "ref");
  537. refdata += refval + "^";
  538. var sizeval = grdobj.colWidth(i);
  539. sizedata += sizeval + "^";
  540. }
  541. refdata = refdata.substring(0, refdata.length-1);
  542. sizedata = sizedata.substring(0, sizedata.length-1);
  543. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/flag" ,uueemod);
  544. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/scrnid" ,"SMPID20500");
  545. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compsnm" ,compsnm);
  546. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compscnts" ,refdata);
  547. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compsrefcnts" ,"");
  548. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compssizecnts",sizedata);
  549. // 3. 원외처방그리드 저장
  550. compsnm = "grd_oprcphist";
  551. uueemax++;
  552. uueemod = "I";
  553. refdata = "";
  554. sizedata = "";
  555. if ( model.getValue("/root/hidden/listval/uuee[compsnm='"+compsnm+"']/compsnm") == compsnm ) {
  556. uueemod = "U";
  557. }
  558. grdobj = document.controls.item(compsnm);
  559. for (var i = 0; i < grdobj.cols; i++) {
  560. var refval = grdobj.colAttribute(i, "ref");
  561. refdata += refval + "^";
  562. var sizeval = grdobj.colWidth(i);
  563. sizedata += sizeval + "^";
  564. }
  565. refdata = refdata.substring(0, refdata.length-1);
  566. sizedata = sizedata.substring(0, sizedata.length-1);
  567. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/flag" ,uueemod);
  568. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/scrnid" ,"SMPID20500");
  569. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compsnm" ,compsnm);
  570. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compscnts" ,refdata);
  571. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compsrefcnts" ,"");
  572. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compssizecnts",sizedata);
  573. if (submit("TXPID21601")) {
  574. messageBox("사용자 환경 저장이", "I002"); ///사용자 환경 저장이 완료되었습니다.
  575. }
  576. }
  577. //---------------------------------------------
  578. // 사용자에게 보여줄 필요가 없는 컬럼은 숨긴다.
  579. //---------------------------------------------
  580. function fColHidden() {
  581. grd_clodhist.colHidden(grd_clodhist.colRef("toot")) = true;
  582. grd_clodhist.colHidden(grd_clodhist.colRef("choiordamt")) = true; //선택단가
  583. grd_clodhist.colHidden(grd_clodhist.colRef("choiordtotamt")) = true; //선택진료sum
  584. grd_clodhist.colHidden(grd_clodhist.colRef("item1")) = true;
  585. grd_clodhist.colHidden(grd_clodhist.colRef("item2")) = true;
  586. grd_clodhist.colHidden(grd_clodhist.colRef("totdrugqty")) = true;
  587. grd_clodhist.colHidden(grd_clodhist.colRef("baserlapnt")) = true;
  588. grd_clodhist.colHidden(grd_clodhist.colRef("baseaddrlapnt")) = true;
  589. grd_clodhist.colHidden(grd_clodhist.colRef("pntunitcost")) = true;
  590. // grd_clodhist.colHidden(grd_clodhist.colRef("ordfromdd")) = true;
  591. // grd_clodhist.colHidden(grd_clodhist.colRef("ordtodd")) = true;
  592. grd_clodhist.colHidden(grd_clodhist.colRef("ediitem")) = true;
  593. grd_clodhist.colHidden(grd_clodhist.colRef("rcptunitcost")) = true;
  594. grd_clodhist.colHidden(grd_clodhist.colRef("prcpflag")) = true;
  595. grd_clodhist.colHidden(grd_clodhist.colRef("rcptcalcamt")) = true;
  596. grd_clodhist.colHidden(grd_clodhist.colRef("reductamt")) = true;
  597. grd_clodhist.colHidden(grd_clodhist.colRef("estmcdnm")) = true;
  598. grd_clodhist.colHidden(grd_clodhist.colRef("pynpy1")) = true;
  599. grd_clodhist.colHidden(grd_clodhist.colRef("earncls1")) = true;
  600. grd_clodhist.colHidden(grd_clodhist.colRef("earncls2")) = true;
  601. grd_clodhist.colHidden(grd_clodhist.colRef("earncls3")) = true;
  602. grd_clodhist.colHidden(grd_clodhist.colRef("mechfromdd")) = true;
  603. grd_clodhist.colHidden(grd_clodhist.colRef("mechtodd")) = true;
  604. grd_clodhist.colHidden(grd_clodhist.colRef("workflag")) = true;
  605. }
  606. //-----------------------
  607. // 그리드달력 초기화
  608. //-----------------------
  609. function initCalendar() {
  610. var curDate = getCurrentDate().toDate();
  611. model.setValue("/root/hidden/calendar/year", curDate.getDateFormat("YYYY"));
  612. model.setValue("/root/hidden/calendar/month", curDate.getDateFormat("MM"));
  613. //setCalendar(curDate);
  614. }
  615. //----------------------
  616. // 화면 권한을 설정한다.
  617. //----------------------
  618. function fCheckAuth() {
  619. if (isPopup()) { // (common.js) 자신이 팝업인지 아닌지를 리턴한다.
  620. var sendworkflag = model.getValue("/root/send/item1/clbs/workflag");
  621. if (sendworkflag != "11" && sendworkflag != "12") {
  622. document.title = "외래사후심사조회";
  623. var smpid20500_auth = opener.javascript.getParameter("smpid20500_auth");
  624. if (smpid20500_auth) {
  625. model.setValue("properties/auth", smpid20500_auth); // RXP권한
  626. } else {
  627. model.setValue("properties/auth", "10100000"); // RXP권한
  628. }
  629. btn_srchpid.visible = true;
  630. btn_pretrgtman.visible = true;
  631. btn_nexttrgtman.visible = true;
  632. cmb_adjtresncd.visible = true;
  633. cmb_docudelresncd.visible = true;
  634. cmb_abdresncd.visible = true;
  635. cmb_suppkindchgresn.visible = true;
  636. } else {
  637. if (sendworkflag == "11") {
  638. document.title = "심사전 명세서 조회";
  639. model.setValue("properties/auth", "00100000"); // RXP권한
  640. btn_srchpid.visible = false;
  641. btn_pretrgtman.visible = false;
  642. btn_nexttrgtman.visible = false;
  643. cmb_adjtresncd.visible = false;
  644. cmb_docudelresncd.visible = false;
  645. cmb_abdresncd.visible = false;
  646. cmb_suppkindchgresn.visible = false;
  647. } else {
  648. document.title = "이전 명세서 상병/처방 조회";
  649. model.setValue("properties/auth", "11100000"); // RXP권한
  650. btn_srchpid.visible = true;
  651. btn_pretrgtman.visible = true;
  652. btn_nexttrgtman.visible = true;
  653. cmb_adjtresncd.visible = true;
  654. cmb_docudelresncd.visible = true;
  655. cmb_abdresncd.visible = true;
  656. cmb_suppkindchgresn.visible = true;
  657. }
  658. }
  659. } else {
  660. model.setValue("properties/auth", "11100000"); // RXP권한
  661. btn_srchpid.visible = true;
  662. btn_pretrgtman.visible = true;
  663. btn_nexttrgtman.visible = true;
  664. cmb_adjtresncd.visible = true;
  665. cmb_docudelresncd.visible = true;
  666. cmb_abdresncd.visible = true;
  667. cmb_suppkindchgresn.visible = true;
  668. }
  669. var rAuth = !checkAuth("R");
  670. ipt_pid.disabled = rAuth;
  671. //ipt_judgno.disabled = rAuth;
  672. ipt_chosindayno.disabled = rAuth;
  673. ipt_medcaredayno.disabled = rAuth;
  674. cmb_supprate.disabled = rAuth; // 보조/요율
  675. cmb_ordrsltcd.disabled = rAuth; // 진료결과
  676. ipt_insuno.disabled = rAuth; // 조합기호
  677. ipt_certno.disabled = rAuth; // 증번호
  678. setScreenBtnDisabled(); // (common.js) 버튼 권한 속성(_auth)에 따라 화면권한(RXP)을 처리한다.
  679. }
  680. //-------------------------
  681. // 특정내역 반복
  682. //-------------------------
  683. function fRepeatSpclSpec() {
  684. for (var i = 0; i < grd_clsphist.selectedRows; i++) {
  685. var row = grd_clsphist.selectedrow(i);
  686. if (row > 0) { // 특정내역 Grid 필터링 적용시 row = 0 으로 설정하여 타이틀 부분에 setValue 하게 되어 에러 발생함
  687. var repeat = model.getValue("/root/main/list3/clsp["+ row +"]/rowstat"); // 특정내역 반복 설정 rowstat = 'R'
  688. var seqno = model.getValue("/root/main/list3/clsp["+ row +"]/seqno");
  689. // JX999 저장 보낼때는 기존처럼 seqno 없이 보내야 삭제가 정상적으로 됨
  690. if (repeat == "R") {
  691. if (seqno) { // seqno 값이 있으면 DB에 저장된 상태임
  692. repeat = "U";
  693. } else {
  694. repeat = "";
  695. }
  696. } else {
  697. repeat = "R";
  698. }
  699. model.setValue("/root/main/list3/clsp["+ row +"]/rowstat", repeat);
  700. var rowstatus = grd_clsphist.rowstatus(row);
  701. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  702. } else {
  703. grd_clsphist.rowstatus(row) = 2; // 2 : update 상태로 stat를 변경한다.
  704. }
  705. }
  706. }
  707. model.refresh();
  708. }
  709. //------------------------------------------------------------
  710. // 특정내역 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가"
  711. //------------------------------------------------------------
  712. function fSpclGridInsertRow() {
  713. // 특정내역 Grid 상에서 직접 행을 추가하는 경우 : 명세서단위 특정내역만을 추가할 수 있다.
  714. // 줄단위 특정내역의 경우, 처방 Grid에서 'T' 컬럼을 더블클릭하여 특정내역 상세관리 Popup을 통해 입력한다.
  715. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  716. grd_clsphist.insertRow(clsprow++, true);
  717. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "M");
  718. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", "0"); // 구분, 줄번호, 수정상태, 특정내역코드 순으로 sort 처리 하므로
  719. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clsoyn", "N");
  720. grd_clsphist.row = clsprow;
  721. }
  722. //------------------------------------------------------------
  723. // 특정내역 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 삭제"
  724. //------------------------------------------------------------
  725. function fSpclGridDeleteRow() {
  726. // 여러 row를 동시에 선택하고 삭제하는 기능을 부여한다.
  727. for (var i = 0; i < grd_clsphist.selectedRows; i++) {
  728. var row = grd_clsphist.selectedrow(i);
  729. // var row = grd_clsphist.row;
  730. // 줄번호가 부여된 줄단위 특정내역이 삭제된 경우, 처방Grid의 'T' 컬럼의 "*" 를 삭제한다.
  731. var clodseqno = model.getValue("/root/main/list3/clsp["+ row +"]/clodseqno");
  732. var clsoyn = model.getValue("/root/main/list3/clsp["+ row +"]/clsoyn");
  733. if (clodseqno != "" && clodseqno != "0") { // 줄단위 특정내역의 경우
  734. var spclcd = model.getValue("/root/main/list3/clsp["+ row +"]/spclcd");
  735. if (spclcd == "JT001") { // 확인코드를 삭제한 경우
  736. for (var j = 1; j < grd_clodhist.rows; j++) {
  737. var seqno = model.getValue("/root/main/list2/clod["+ j +"]/seqno");
  738. if (clodseqno == seqno) {
  739. model.resetInstanceNode("/root/main/list2/clod["+ j +"]/cnfmcd");
  740. j = grd_clodhist.rows;
  741. }
  742. }
  743. } else {
  744. var isSameLn = false;
  745. for (var j = 1; j < grd_clsphist.rows; j++) {
  746. var clspclodseqno = model.getValue("/root/main/list3/clsp["+ j +"]/clodseqno");
  747. var spclcd = model.getValue("/root/main/list3/clsp["+ j +"]/spclcd");
  748. if (clspclodseqno == "") { // 입력된 줄번호가 없는 경우 제외
  749. }
  750. else if (clspclodseqno == "0") { // 명일련 단위는 제외
  751. }
  752. else if (clspclodseqno == clodseqno && j != row && grd_clsphist.rowstatus(j) != 4 && spclcd != "JT001") {
  753. isSameLn = true; // 같은 줄번호에 여러개의 특정내역이 있는 경우임
  754. j = grd_clsphist.rows;
  755. }
  756. }
  757. if (isSameLn == false) { // 동일한 줄번호의 특정내역이 없는 경우
  758. for (var j = 1; j < grd_clodhist.rows; j++) {
  759. var seqno = model.getValue("/root/main/list2/clod["+ j +"]/seqno");
  760. if (seqno == clodseqno) {
  761. model.resetInstanceNode("/root/main/list2/clod["+ j +"]/lnunitspclspecyn");
  762. grd_clodhist.cellStyle("background-color", j, grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff = White
  763. j = grd_clodhist.rows;
  764. }
  765. }
  766. }
  767. }
  768. }
  769. var unitflag = model.getValue("/root/main/list3/clsp["+ row +"]/unitflag");
  770. var rowstatus = grd_clsphist.rowstatus(row);
  771. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  772. model.resetInstanceNode("/root/main/list3/clsp["+ row +"]/spclcd");
  773. model.resetInstanceNode("/root/main/list3/clsp["+ row +"]/spclspec");
  774. //grd_clsphist.deleteRow(row, false); // 해당 라인을 Grid에서 삭제한다.
  775. } else { // 0 : new, 2 : update
  776. grd_clsphist.rowstatus(row) = 4; // 4 : delete 상태로 stat를 변경한다.
  777. model.setValue("/root/main/list3/clsp["+ row +"]/insntstat","D");
  778. if (clsoyn == "Y") {
  779. model.resetInstanceNode("/root/main/list7/clop[seqno="+ clodseqno +"]/spclspecyn");
  780. }
  781. }
  782. if (unitflag == "M") { // 명세서 단위 특정내역의 경우
  783. // 특정코드 MT015, MT016, MT004 정보가 입력된 환자인지를 확인한다.
  784. fCheckSpclSpecData();
  785. }
  786. }
  787. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  788. fSortSpclNo();
  789. model.resetInstanceNode("/root/hidden/list3/msgspclformat");
  790. model.refreshpart("/root/hidden/list3/msgspclformat");
  791. grd_clodhist.refresh();
  792. grd_clsphist.refresh();
  793. }
  794. //----------------------------------------
  795. // 처방 Grid 마우스 오른쪽 "처방주석입력"
  796. //----------------------------------------
  797. function fOrderGridInsertCmt() {
  798. // 기존: 처방 항에 따라 심사Comment 조회 연결
  799. // 변경: 특정내역 상세 관리를 JX999로 설정하여 보여준다.
  800. model.removeNodeset("/root/hidden/sppiz00500/rslt"); // SPPIZ00500_특정내역상세관리 에서 선택된 결과가 copyNode되는 경로임
  801. model.removeNodeset("/root/hidden/sppiz00500/cond");
  802. var row = grd_clodhist.row;
  803. // 처방 Grid에서 줄번호가 부여된 경우
  804. var seqno = model.getValue("/root/main/list2/clod["+ row +"]/seqno");
  805. var edilnno = model.getValue("/root/main/list2/clod["+ row +"]/edilnno");
  806. var snglcalcscorcd = model.getValue("/root/main/list2/clod["+ row +"]/snglcalcscorcd");
  807. if (seqno != "" && seqno != "0") {
  808. var lnunitspclspecyn = model.getValue("/root/main/list2/clod["+ row +"]/lnunitspclspecyn");
  809. if (lnunitspclspecyn == "") {
  810. model.makeValue("/root/hidden/sppiz00500/cond/flag", "I");
  811. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", snglcalcscorcd);
  812. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", edilnno);
  813. model.makeValue("/root/hidden/sppiz00500/cond/clodseqno", seqno);
  814. model.makeValue("/root/hidden/sppiz00500/cond/spclcd", "JX999");
  815. model.makeValue("/root/hidden/sppiz00500/cond/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  816. model.makeNode("/root/hidden/sppiz00500/cond/spclspec");
  817. model.makeValue("/root/hidden/sppiz00500/cond/spclformat", "X(700)");
  818. model.makeNode("/root/hidden/sppiz00500/cond/rownum");
  819. model.makeValue("/root/hidden/sppiz00500/cond/cdnm", "기타내역");
  820. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", "J");
  821. } else { // 기존에 입력된 줄단위 특정내역이 있는 경우
  822. var rowcnt = 1;
  823. var setrow = 0;
  824. for (var i = 1; i < grd_clsphist.rows; i++) {
  825. var spcClodseqno = model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno");
  826. var spcClsoyn = model.getValue("/root/main/list3/clsp["+ i +"]/clsoyn"); //원외특정여부
  827. if (spcClodseqno == seqno && spcClsoyn == "N") {
  828. var spclcd = model.getValue("/root/main/list3/clsp["+ i +"]/spclcd");
  829. if (spclcd != "" && spclcd != "JT001" && grd_clsphist.rowstatus(i) != 4) { // 확인코드가 아닌 경우
  830. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/flag", "");
  831. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/rownum", i);
  832. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/snglcalcscorcd", model.getValue("/root/main/list3/clsp["+ i +"]/snglcalcscorcd"));
  833. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/clodseqno", model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno"));
  834. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/edilnno", model.getValue("/root/main/list3/clsp["+ i +"]/edilnno"));
  835. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclcd", spclcd);
  836. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  837. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclformat", model.getValue("/root/main/list3/clsp["+ i +"]/spclformat"));
  838. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/cdnm", model.getValue("/root/main/list3/clsp["+ i +"]/cdnm"));
  839. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/detldesc", model.getValue("/root/main/list3/clsp["+ i +"]/detldesc"));
  840. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/oldspclcd", spclcd);
  841. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/oldspclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  842. // 특정내역 상세 화면에 보여줄 특정내역 선택
  843. if (spclcd == "JX999") {
  844. setrow = i; // 줄단위의 경우 가장 마지막 row로 설정한다.
  845. }
  846. rowcnt = rowcnt+1;
  847. }
  848. }
  849. }
  850. if (setrow > 0) {
  851. model.makeValue("/root/hidden/sppiz00500/cond/flag", "");
  852. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", snglcalcscorcd);
  853. model.makeValue("/root/hidden/sppiz00500/cond/clodseqno", seqno);
  854. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", edilnno);
  855. model.makeValue("/root/hidden/sppiz00500/cond/spclcd", model.getValue("/root/main/list3/clsp["+ setrow +"]/spclcd"));
  856. model.makeValue("/root/hidden/sppiz00500/cond/detldesc", model.getValue("/root/main/list3/clsp["+ setrow +"]/detldesc"));
  857. model.makeValue("/root/hidden/sppiz00500/cond/spclspec", model.getValue("/root/main/list3/clsp["+ setrow +"]/spclspec"));
  858. model.makeValue("/root/hidden/sppiz00500/cond/spclformat", model.getValue("/root/main/list3/clsp["+ setrow +"]/spclformat"));
  859. model.makeValue("/root/hidden/sppiz00500/cond/rownum", setrow);
  860. model.makeValue("/root/hidden/sppiz00500/cond/cdnm", model.getValue("/root/main/list3/clsp["+ setrow +"]/cdnm"));
  861. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", "J");
  862. } else { // 기존에 입력된 JX999가 없는 경우
  863. model.makeValue("/root/hidden/sppiz00500/cond/flag", "I");
  864. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", snglcalcscorcd);
  865. model.makeValue("/root/hidden/sppiz00500/cond/clodseqno", seqno);
  866. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", edilnno);
  867. model.makeValue("/root/hidden/sppiz00500/cond/spclcd", "JX999");
  868. model.makeValue("/root/hidden/sppiz00500/cond/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  869. model.makeNode("/root/hidden/sppiz00500/cond/spclspec");
  870. model.makeValue("/root/hidden/sppiz00500/cond/spclformat", "X(700)");
  871. model.makeNode("/root/hidden/sppiz00500/cond/rownum");
  872. model.makeValue("/root/hidden/sppiz00500/cond/cdnm", "기타내역");
  873. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", "J");
  874. }
  875. }
  876. modal("SPPIZ00500", "1", "10", "10", "SPPIZ00500", "/root/hidden/sppiz00500", "/root/hidden/clsp", "", ""); // SPPIZ00500_특정내역상세관리.xrw
  877. var rsltcnt = getNodesetCount("/root/hidden/sppiz00500/rslt/list");
  878. // 처리 건수
  879. if (rsltcnt > 0) {
  880. for (var i = rsltcnt; i > 0; i--) {
  881. var flag = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/flag");
  882. var rownum = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/rownum");
  883. var newspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclcd");
  884. var newcdnm = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/cdnm");
  885. var newspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclspec");
  886. var newspclformat = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclformat ");
  887. var newdetldesc = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/detldesc");
  888. // 특정코드 추가인 경우
  889. if (flag == "I") {
  890. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  891. grd_clsphist.insertRow(clsprow++, true);
  892. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "J");
  893. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clodseqno", seqno);
  894. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", edilnno);
  895. model.setValue("/root/main/list3/clsp["+ clsprow +"]/snglcalcscorcd", snglcalcscorcd);
  896. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclcd", newspclcd);
  897. model.setValue("/root/main/list3/clsp["+ clsprow +"]/cdnm", newcdnm);
  898. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclspec", newspclspec);
  899. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclformat", newspclformat);
  900. model.setValue("/root/main/list3/clsp["+ clsprow +"]/detldesc", newdetldesc);
  901. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldedilnno", edilnno);
  902. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldspclcd", "");
  903. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clsoyn", "N"); //원외처방여부
  904. model.setValue("/root/hidden/list3/msgspclformat", "코드: "+ newspclcd +" / 명칭: "+ newcdnm +" / 내역: "+ newspclspec +" / 형식: "+ newspclformat);
  905. // 특정코드 변경인 경우
  906. } else if (flag == "U") {
  907. model.setValue("/root/main/list3/clsp["+ rownum +"]/snglcalcscorcd", snglcalcscorcd);
  908. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclcd", newspclcd);
  909. model.setValue("/root/main/list3/clsp["+ rownum +"]/cdnm", newcdnm);
  910. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclspec", newspclspec);
  911. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclformat", newspclformat);
  912. model.setValue("/root/main/list3/clsp["+ rownum +"]/detldesc", newdetldesc);
  913. //model.refresh();
  914. grd_clsphist.refresh();
  915. // 특정코드, 특정내역이 변경되었거나 삭제된 특정코드를 조회하여 "확인"을 선택한 경우
  916. var oldspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/oldspclcd");
  917. var oldspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/oldspclspec");
  918. var rowstatus = grd_clsphist.rowstatus(rownum);
  919. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  920. } else {
  921. grd_clsphist.rowstatus(rownum) = 2; // 2 : update 상태로 stat를 변경한다.
  922. }
  923. model.setValue("/root/hidden/list3/msgspclformat", "코드: "+ newspclcd +" / 명칭: "+ newcdnm +" / 내역: "+ newspclspec +" / 형식: "+ newspclformat);
  924. // 특정코드 삭제인 경우
  925. } else if (flag == "D" && rownum != "" ) {
  926. // 특정내역 Grid에서 삭제
  927. var rowstatus = grd_clsphist.rowstatus(rownum);
  928. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  929. grd_clsphist.deleteRow(rownum, false); // 해당 라인을 Grid에서 삭제한다.
  930. } else { // 0 : new, 2 : update
  931. grd_clsphist.rowstatus(rownum) = 4; // 4 : delete 상태로 stat를 변경한다.
  932. }
  933. grd_clsphist.row = rownum;
  934. model.setValue("/root/hidden/list3/msgspclformat", "입력된 줄단위 특정내역이 없습니다.");
  935. } // 특정 코드 상태 따른 if end
  936. } // for end
  937. var cnt = 0;
  938. var jx999cnt = 0;
  939. var nonjx999cnt = 0; // JX999가 아닌 특정내역코드의 수
  940. for (var i = 1; i < grd_clsphist.rows; i++) {
  941. if (grd_clsphist.rowstatus(i) != 4) {
  942. var spcClodseqno = model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno");
  943. var spcClsoyn = model.getValue("/root/main/list3/clsp["+ i +"]/clsoyn");
  944. if (spcClodseqno == seqno && spcClsoyn == "N") {
  945. cnt++;
  946. var spclcd = model.getValue("/root/main/list3/clsp["+ i +"]/spclcd");
  947. if (spclcd == "JX999") { // JX999인 경우
  948. jx999cnt++;
  949. }
  950. else if (spclcd != "JT001") { // JX999도, 확인코드도 아닌 경우
  951. nonjx999cnt++;
  952. }
  953. }
  954. }
  955. }
  956. if (cnt > 0) {
  957. model.setValue("/root/main/list2/clod["+ row +"]/lnunitspclspecyn", "*");
  958. if (jx999cnt > 0) {
  959. if (nonjx999cnt == 0) { // JX999만 있는 경우
  960. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#f7a08b"; // class="color_6" 다홍색
  961. } else { // JX999 + 다른 코드도 있는 경우
  962. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#b5a5d1"; // 연한 보라색
  963. }
  964. } else {
  965. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff = White
  966. }
  967. } else {
  968. model.resetInstanceNode("/root/main/list2/clod["+ row +"]/lnunitspclspecyn");
  969. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff = White
  970. }
  971. } // 처리 건수 if end
  972. //model.refresh();
  973. model.refreshpart("/root/hidden/list3/msgspclformat");
  974. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  975. fSortSpclNo();
  976. grd_clsphist.refresh();
  977. grd_clodhist.refresh();
  978. fSaveClspList();
  979. } else {
  980. messageBox("줄번호가 부여되지 않았으며 해당 줄단위 특정내역이", "I004"); ///줄번호가 부여되지 않았으며 해당 줄단위 특정내역이 없습니다.
  981. }
  982. }
  983. function fOrderGridInsertAllCmt() {
  984. // 기존: 처방 항에 따라 심사Comment 조회 연결
  985. // 변경: 특정내역 상세 관리를 JX999로 설정하여 보여준다.
  986. model.removeNodeset("/root/hidden/sppiz00500/rslt"); // SPPIZ00500_특정내역상세관리 에서 선택된 결과가 copyNode되는 경로임
  987. model.removeNodeset("/root/hidden/sppiz00500/cond");
  988. model.refresh();
  989. var grid_obj = document.controls.item("grd_clodhist");
  990. var grid_obj_clsp = document.controls.item("grd_clsphist");
  991. for (var k=0; k < grid_obj.selectedRows; k++ ) {
  992. var row = grid_obj.selectedRow(k);
  993. var seqno = grid_obj.valueMatrix(row, grid_obj.colref("seqno"));
  994. var edilnno = grid_obj.valueMatrix(row, grid_obj.colref("edilnno"));
  995. if (seqno != "" && seqno != "0") {
  996. } else {
  997. messageBox("줄번호가 부여되지 않았으며 해당 줄단위 특정내역이", "I004"); ///줄번호가 부여되지 않았으며 해당 줄단위 특정내역이 없습니다.
  998. return;
  999. }
  1000. }
  1001. var rowcnt = 1;
  1002. var setrow = 0;
  1003. for (var k=0; k < grid_obj.selectedRows; k++ ) {
  1004. var row = grid_obj.selectedRow(k);
  1005. // 처방 Grid에서 줄번호가 부여된 경우
  1006. var seqno = model.getValue("/root/main/list2/clod["+ row +"]/seqno");
  1007. var edilnno = model.getValue("/root/main/list2/clod["+ row +"]/edilnno");
  1008. var snglcalcscorcd = model.getValue("/root/main/list2/clod["+ row +"]/snglcalcscorcd");
  1009. //if (seqno != "" && seqno != "0") {
  1010. var lnunitspclspecyn = model.getValue("/root/main/list2/clod["+ row +"]/lnunitspclspecyn");
  1011. if (lnunitspclspecyn == "") {
  1012. model.makeValue("/root/hidden/sppiz00500/cond/flag", "I");
  1013. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", snglcalcscorcd);
  1014. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", edilnno);
  1015. model.makeValue("/root/hidden/sppiz00500/cond/clodseqno", seqno);
  1016. model.makeValue("/root/hidden/sppiz00500/cond/spclcd", "JX999");
  1017. model.makeValue("/root/hidden/sppiz00500/cond/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  1018. model.makeNode("/root/hidden/sppiz00500/cond/spclspec");
  1019. model.makeValue("/root/hidden/sppiz00500/cond/spclformat", "X(700)");
  1020. model.makeNode("/root/hidden/sppiz00500/cond/rownum");
  1021. model.makeValue("/root/hidden/sppiz00500/cond/cdnm", "기타내역");
  1022. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", "J");
  1023. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/flag", "I");
  1024. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/rownum", "");
  1025. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/snglcalcscorcd", snglcalcscorcd);
  1026. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/clodseqno", seqno);
  1027. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/edilnno", edilnno);
  1028. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclcd", "JX999");
  1029. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclspec", "");
  1030. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclformat", "X(700)");
  1031. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/cdnm", "기타내역");
  1032. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  1033. rowcnt = rowcnt+1;
  1034. } else { // 기존에 입력된 줄단위 특정내역이 있는 경우
  1035. for (var i = 1; i < grid_obj_clsp.rows; i++) {
  1036. var spcClodseqno = model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno");
  1037. var spcClsoyn = model.getValue("/root/main/list3/clsp["+ i +"]/clsoyn"); //원외특정여부
  1038. if (spcClodseqno == seqno && spcClsoyn == "N") {
  1039. var spclcd = model.getValue("/root/main/list3/clsp["+ i +"]/spclcd");
  1040. var spclcdJX999 = model.getValue("/root/main/list3/clsp[insntstat!='D' and spclcd='JX999' and snglcalcscorcd='"+snglcalcscorcd+"' ]/spclcd");
  1041. if (spclcd != "" && spclcd == "JX999" && grid_obj_clsp.rowstatus(i) != 4) { // 확인코드가 아닌 경우
  1042. model.makeValue("/root/hidden/sppiz00500/cond/flag", "U");
  1043. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", model.getValue("/root/main/list3/clsp["+ i +"]/snglcalcscorcd"));
  1044. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", model.getValue("/root/main/list3/clsp["+ i +"]/edilnno"));
  1045. model.makeValue("/root/hidden/sppiz00500/cond/clodseqno", model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno"));
  1046. model.makeValue("/root/hidden/sppiz00500/cond/spclcd", spclcd);
  1047. model.makeValue("/root/hidden/sppiz00500/cond/detldesc", model.getValue("/root/main/list3/clsp["+ i +"]/detldesc"));
  1048. model.makeValue("/root/hidden/sppiz00500/cond/spclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  1049. model.makeValue("/root/hidden/sppiz00500/cond/spclformat", "X(700)");
  1050. model.makeValue("/root/hidden/sppiz00500/cond/rownum", i);
  1051. model.makeValue("/root/hidden/sppiz00500/cond/cdnm", model.getValue("/root/main/list3/clsp["+ i +"]/cdnm"));
  1052. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", model.getValue("/root/main/list3/clsp["+ i +"]/unitflag"));
  1053. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/flag", "U");
  1054. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/rownum", i);
  1055. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/snglcalcscorcd", model.getValue("/root/main/list3/clsp["+ i +"]/snglcalcscorcd"));
  1056. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/clodseqno", model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno"));
  1057. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/edilnno", model.getValue("/root/main/list3/clsp["+ i +"]/edilnno"));
  1058. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclcd", spclcd);
  1059. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  1060. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclformat", model.getValue("/root/main/list3/clsp["+ i +"]/spclformat"));
  1061. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/cdnm", model.getValue("/root/main/list3/clsp["+ i +"]/cdnm"));
  1062. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/detldesc", model.getValue("/root/main/list3/clsp["+ i +"]/detldesc"));
  1063. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/oldspclcd", spclcd);
  1064. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/oldspclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  1065. // 특정내역 상세 화면에 보여줄 특정내역 선택
  1066. if (spclcd == "JX999") {
  1067. setrow = i; // 줄단위의 경우 가장 마지막 row로 설정한다.
  1068. }
  1069. rowcnt = rowcnt+1;
  1070. } else if (spclcd != "" && spclcd != "JT001" && spclcdJX999 == "" && grid_obj_clsp.rowstatus(i) != 4) {
  1071. model.makeValue("/root/hidden/sppiz00500/cond/flag", "I");
  1072. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", snglcalcscorcd);
  1073. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", edilnno);
  1074. model.makeValue("/root/hidden/sppiz00500/cond/clodseqno", seqno);
  1075. model.makeValue("/root/hidden/sppiz00500/cond/spclcd", "JX999");
  1076. model.makeValue("/root/hidden/sppiz00500/cond/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  1077. model.makeNode("/root/hidden/sppiz00500/cond/spclspec");
  1078. model.makeValue("/root/hidden/sppiz00500/cond/spclformat", "X(700)");
  1079. model.makeNode("/root/hidden/sppiz00500/cond/rownum");
  1080. model.makeValue("/root/hidden/sppiz00500/cond/cdnm", "기타내역");
  1081. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", "J");
  1082. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/flag", "I");
  1083. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/rownum", "");
  1084. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/snglcalcscorcd", snglcalcscorcd);
  1085. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/clodseqno", seqno);
  1086. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/edilnno", edilnno);
  1087. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclcd", "JX999");
  1088. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclspec", "");
  1089. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclformat", "X(700)");
  1090. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/cdnm", "기타내역");
  1091. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  1092. rowcnt = rowcnt+1;
  1093. }
  1094. }
  1095. }
  1096. }
  1097. }
  1098. modal("SPPIZ00500", "1", "10", "10", "SPPIZ00500", "/root/hidden/sppiz00500", "/root/hidden/clsp", "", ""); // SPPIZ00500_특정내역상세관리.xrw
  1099. var rsltcnt = getNodesetCount("/root/hidden/sppiz00500/rslt/list");
  1100. // 처리 건수
  1101. if (rsltcnt > 0) {
  1102. for (var i = rsltcnt; i > 0; i--) {
  1103. var flag = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/flag");
  1104. var rownum = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/rownum");
  1105. var newspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclcd");
  1106. var newcdnm = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/cdnm");
  1107. var newspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list[last()]/spclspec");
  1108. var newspclformat = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclformat ");
  1109. var newdetldesc = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/detldesc");
  1110. var newclodseqno = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/clodseqno");
  1111. var newsnglcalcscorcd = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/snglcalcscorcd");
  1112. var newedilnno = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/edilnno");
  1113. // 특정코드 추가인 경우
  1114. if (flag == "I") {
  1115. var clsprow = grid_obj_clsp.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  1116. grid_obj_clsp.insertRow(clsprow++, true);
  1117. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "J");
  1118. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clodseqno", newclodseqno);
  1119. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", newedilnno);
  1120. model.setValue("/root/main/list3/clsp["+ clsprow +"]/snglcalcscorcd", newsnglcalcscorcd);
  1121. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclcd", newspclcd);
  1122. model.setValue("/root/main/list3/clsp["+ clsprow +"]/cdnm", newcdnm);
  1123. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclspec", newspclspec);
  1124. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclformat", newspclformat);
  1125. model.setValue("/root/main/list3/clsp["+ clsprow +"]/detldesc", newdetldesc);
  1126. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldedilnno", newedilnno);
  1127. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldspclcd", "");
  1128. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clsoyn", "N"); //원외처방여부
  1129. model.setValue("/root/hidden/list3/msgspclformat", "코드: "+ newspclcd +" / 명칭: "+ newcdnm +" / 내역: "+ newspclspec +" / 형식: "+ newspclformat);
  1130. model.setValue("/root/main/list2/clod[seqno="+ newclodseqno +"]/lnunitspclspecyn", "*");
  1131. var srow = grid_obj.findRow(newclodseqno, grid_obj.fixedrows, grid_obj.colRef("seqno"), false, true);
  1132. if (newspclcd == "JX999") { // JX999인 경우
  1133. grid_obj.cellStyle("background-color", srow, grid_obj.colRef("lnunitspclspecyn")) = "#f7a08b"; // class="color_6" 다홍색
  1134. }
  1135. else if (newspclcd != "JT001") { // JX999도, 확인코드도 아닌 경우
  1136. grid_obj.cellStyle("background-color", srow, grid_obj.colRef("lnunitspclspecyn")) = "#b5a5d1"; // 연한 보라색
  1137. }
  1138. // 특정코드 변경인 경우
  1139. } else if (flag == "U") {
  1140. model.setValue("/root/main/list3/clsp["+ rownum +"]/snglcalcscorcd", newsnglcalcscorcd);
  1141. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclcd", newspclcd);
  1142. model.setValue("/root/main/list3/clsp["+ rownum +"]/cdnm", newcdnm);
  1143. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclspec", newspclspec);
  1144. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclformat", newspclformat);
  1145. model.setValue("/root/main/list3/clsp["+ rownum +"]/detldesc", newdetldesc);
  1146. //model.refresh();
  1147. grid_obj_clsp.refresh();
  1148. // 특정코드, 특정내역이 변경되었거나 삭제된 특정코드를 조회하여 "확인"을 선택한 경우
  1149. var oldspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/oldspclcd");
  1150. var oldspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/oldspclspec");
  1151. var rowstatus = grid_obj_clsp.rowstatus(rownum);
  1152. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  1153. } else {
  1154. grid_obj_clsp.rowstatus(rownum) = 2; // 2 : update 상태로 stat를 변경한다.
  1155. }
  1156. model.setValue("/root/hidden/list3/msgspclformat", "코드: "+ newspclcd +" / 명칭: "+ newcdnm +" / 내역: "+ newspclspec +" / 형식: "+ newspclformat);
  1157. // 특정코드 삭제인 경우
  1158. } else if (flag == "D" && rownum != "" ) {
  1159. // 특정내역 Grid에서 삭제
  1160. var rowstatus = grid_obj_clsp.rowstatus(rownum);
  1161. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  1162. grid_obj_clsp.deleteRow(rownum, false); // 해당 라인을 Grid에서 삭제한다.
  1163. } else { // 0 : new, 2 : update
  1164. grid_obj_clsp.rowstatus(rownum) = 4; // 4 : delete 상태로 stat를 변경한다.
  1165. }
  1166. grid_obj_clsp.valueMatrix(rownum, grid_obj_clsp.colRef("insntstat")) = "D";
  1167. grid_obj_clsp.row = rownum;
  1168. model.setValue("/root/hidden/list3/msgspclformat", "입력된 줄단위 특정내역이 없습니다.");
  1169. } // 특정 코드 상태 따른 if end
  1170. } // for end
  1171. } // 처리 건수 if end
  1172. //model.refresh();
  1173. model.refreshpart("/root/hidden/list3/msgspclformat");
  1174. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  1175. fSortSpclNo();
  1176. grid_obj_clsp.refresh();
  1177. grid_obj.refresh();
  1178. fSaveClspList();
  1179. // } else {
  1180. //
  1181. // }
  1182. }
  1183. // SPPIZ00700_심사Comment조회.xrw 호출 - 처방주석의 경우 처방항목의 항을 전달한다.
  1184. function fGetOrderComment(memoflag, memocls, ediitem1) {
  1185. model.resetInstanceNode("/root/hidden/sppiz00700/rslt");
  1186. model.resetInstanceNode("/root/hidden/sppiz00700/cond");
  1187. model.setValue("/root/hidden/sppiz00700/cond/memoflag", memoflag);
  1188. model.setValue("/root/hidden/sppiz00700/cond/memocls", memocls);
  1189. model.setValue("/root/hidden/sppiz00700/cond/ediitem1", ediitem1);
  1190. modal("SPPIZ00700", "1", "10", "10", "SPPIZ00700", "/root/hidden/sppiz00700", "/root/send/sppiz00700", "", ""); // SPPIZ00700_심사Comment조회.xrw
  1191. }
  1192. // SPPIZ00700_심사Comment조회.xrw 호출
  1193. function fGetJudgEdiComment(memoflag, memocls) {
  1194. model.resetInstanceNode("/root/hidden/sppiz00700/rslt");
  1195. model.resetInstanceNode("/root/hidden/sppiz00700/cond");
  1196. model.setValue("/root/hidden/sppiz00700/cond/memoflag", memoflag);
  1197. model.setValue("/root/hidden/sppiz00700/cond/memocls", memocls);
  1198. modal("SPPIZ00700", "1", "10", "10", "SPPIZ00700", "/root/hidden/sppiz00700", "/root/send/sppiz00700", "", ""); // SPPIZ00700_심사Comment조회.xrw
  1199. }
  1200. // 심사Comment 조회 Popup에서 선택한 줄단위메모를 설정한다.
  1201. // SPPIZ00700_심사Comment조회.xrw 에서 opener.javascript.fSetLnUnitMemoRefresh(); 형태로 호출한다.
  1202. function fSetLnUnitMemoRefresh(){
  1203. var row = grd_clodhist.row;
  1204. var seqno = model.getValue("/root/main/list2/clod["+ row +"]/seqno");
  1205. var workflag = 1;
  1206. var clspgridrow;
  1207. for (var j = 1; j < grd_clsphist.rows; j++) {
  1208. var spcClodseqno = model.getValue("/root/main/list3/clsp["+ j +"]/clodseqno");
  1209. var spcclsoyn = model.getValue("/root/main/list3/clsp["+ i +"]/clsoyn"); //원외특정여부
  1210. if (spcClodseqno == seqno && spcClsoyn == "N") {
  1211. var oldspclcd = model.getValue("/root/main/list3/clsp["+ j +"]/spclcd");
  1212. if (oldspclcd == "JX999") {
  1213. // 기존 "JX999"를 수정한다.
  1214. workflag = 2;
  1215. clspgridrow = j; // 특정내역 Grid의 해당 row를 기억한다.
  1216. j = grd_clsphist.rows;
  1217. }
  1218. }
  1219. }
  1220. var newspclspec = model.getValue("/root/hidden/sppiz00700/rslt/memo");
  1221. if (newspclspec) {
  1222. var nonjx999cnt = 0; // JX999가 아닌 특정내역코드의 수
  1223. for (var i = 1; i < grd_clsphist.rows; i++) {
  1224. if (grd_clsphist.rowstatus(i) != 4) {
  1225. var spcClodseqno = model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno");
  1226. var spcClsoyn = model.getValue("/root/main/list3/clsp["+ i +"]/clsoyn");
  1227. if (spcClodseqno == seqno && spcClsoyn == "N") {
  1228. var spclcd = model.getValue("/root/main/list3/clsp["+ i +"]/spclcd");
  1229. if (spclcd != "JX999" && spclcd != "JT001") { // JX999도, 확인코드도 아닌 경우
  1230. nonjx999cnt++;
  1231. i = grd_clsphist.rows; // JX999 외의 다른 특정내역코드가 존재하는지 여부만 체크하면 되므로
  1232. }
  1233. }
  1234. }
  1235. }
  1236. if (nonjx999cnt == 0) { // JX999만 있는 경우
  1237. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#f7a08b"; // class="color_6" 다홍색
  1238. } else { // JX999 + 다른 코드도 있는 경우
  1239. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#b5a5d1"; // 연한 보라색
  1240. }
  1241. model.setValue("/root/main/list2/clod["+ row +"]/lnunitspclspecyn", "*");
  1242. if (workflag == 1) { // 추가
  1243. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  1244. grd_clsphist.insertRow(clsprow++, true);
  1245. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "J");
  1246. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clodseqno", seqno);
  1247. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", edilnno);
  1248. model.setValue("/root/main/list3/clsp["+ clsprow +"]/snglcalcscorcd", model.getValue("/root/main/list2/clod["+ row +"]/snglcalcscorcd"));
  1249. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclcd", "JX999");
  1250. model.setValue("/root/main/list3/clsp["+ clsprow +"]/cdnm", "기타내역");
  1251. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclspec", newspclspec);
  1252. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclformat", "X(700)");
  1253. model.setValue("/root/main/list3/clsp["+ clsprow +"]/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  1254. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldedilnno", edilnno);
  1255. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clsoyn", "N"); //원외처방여부
  1256. grd_clsphist.row = clsprow;
  1257. } else { // 수정
  1258. // 기존 변경된 경우
  1259. model.setValue("/root/main/list3/clsp["+ clspgridrow +"]/snglcalcscorcd", model.getValue("/root/main/list2/clod["+ row +"]/snglcalcscorcd"));
  1260. model.setValue("/root/main/list3/clsp["+ clspgridrow +"]/spclcd", "JX999");
  1261. model.setValue("/root/main/list3/clsp["+ clspgridrow +"]/cdnm", "기타내역");
  1262. model.setValue("/root/main/list3/clsp["+ clspgridrow +"]/spclspec", newspclspec);
  1263. model.setValue("/root/main/list3/clsp["+ clspgridrow +"]/spclformat", "X(700)");
  1264. model.setValue("/root/main/list3/clsp["+ clspgridrow +"]/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  1265. var rowstatus = grd_clsphist.rowstatus(clspgridrow);
  1266. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  1267. } else {
  1268. grd_clsphist.rowstatus(clspgridrow) = 2; // 2 : update 상태로 stat를 변경한다.
  1269. }
  1270. grd_clsphist.row = clspgridrow;
  1271. }
  1272. model.setValue("/root/hidden/list3/msgspclformat", "코드: JX999 / 명칭: 기타내역 / 내역 : "+ newspclspec +" / 형식 : X(700)");
  1273. } else {
  1274. model.setValue("/root/hidden/list3/msgspclformat", "입력된 처방주석(줄단위 기타특정내역)이 없습니다.");
  1275. }
  1276. model.refreshpart("/root/hidden/list3/msgspclformat");
  1277. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  1278. fSortSpclNo();
  1279. grd_clsphist.refresh();
  1280. grd_clcohist.refresh();
  1281. }
  1282. // 처방 Grid 마우스 오른쪽 "확인코드입력" / 처방 Grid 확인코드 필드 버튼 클릭 시
  1283. function fOrderGridInsertCnfmCd() {
  1284. var row = grd_clodhist.row;
  1285. var seqno = model.getValue("/root/main/list2/clod["+ row +"]/seqno");
  1286. if (seqno != "0") {
  1287. model.removeNodeset("root/hidden/sppiz01100/rslt");
  1288. model.setValue("/root/hidden/sppiz01100/cond/code", model.getValue("/root/main/list2/clod["+ row +"]/cnfmcd"));
  1289. modal("SPPIZ01100", "1", "10", "10", "SPPIZ01100", "/root/hidden/sppiz01100", "/root/init/sppiz01100", "", ""); // SPPIZ01100_확인코드조회
  1290. if (instance1.selectSingleNode("root/hidden/sppiz01100/rslt")) {
  1291. var cnfmcd = model.getValue("root/hidden/sppiz01100/rslt/code");
  1292. model.setValue("/root/main/list2/clod["+ row +"]/cnfmcd", cnfmcd);
  1293. //////////////////
  1294. if (cnfmcd) {
  1295. var isFind = false;
  1296. for (var j = 1; j < grd_clsphist.rows; j++) {
  1297. var spcClodseqno = model.getValue("/root/main/list3/clsp["+ j +"]/clodseqno");
  1298. var spcClsoyn = model.getValue("/root/main/list3/clsp["+ j +"]/clsoyn"); //원외특정여부
  1299. if (spcClodseqno == seqno && spcClsoyn == "N") {
  1300. var spclcd = model.getValue("/root/main/list3/clsp["+ j +"]/spclcd");
  1301. if (spclcd == "JT001") {
  1302. model.setValue("/root/main/list3/clsp["+ j +"]/snglcalcscorcd", model.getValue("/root/main/list2/clod["+ row +"]/snglcalcscorcd"));
  1303. model.setValue("/root/main/list3/clsp["+ j +"]/spclcd", "JT001");
  1304. model.setValue("/root/main/list3/clsp["+ j +"]/cdnm", "확인코드");
  1305. model.setValue("/root/main/list3/clsp["+ j +"]/spclspec", cnfmcd);
  1306. model.setValue("/root/main/list3/clsp["+ j +"]/spclformat", "X(5)");
  1307. model.setValue("/root/main/list3/clsp["+ j +"]/detldesc", "진료행위에 대한 추가기술 사항을 구분하는 코드로서 확인코드가 여러개 발생할 경우 '/'로 구분하여 기재");
  1308. var rowstatus = grd_clsphist.rowstatus(j);
  1309. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  1310. } else {
  1311. grd_clsphist.rowstatus(j) = 2; // 2 : update 상태로 stat를 변경한다.
  1312. }
  1313. isFind = true;
  1314. }
  1315. }
  1316. }
  1317. if (isFind == false) { // 기존에 확인코드가 없었던 경우
  1318. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  1319. grd_clsphist.insertRow(clsprow++, true);
  1320. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "J");
  1321. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", "0");
  1322. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clodseqno", seqno);
  1323. model.setValue("/root/main/list3/clsp["+ clsprow +"]/snglcalcscorcd", model.getValue("/root/main/list2/clod["+ row +"]/snglcalcscorcd"));
  1324. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclcd", "JT001");
  1325. model.setValue("/root/main/list3/clsp["+ clsprow +"]/cdnm", "확인코드");
  1326. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclspec", cnfmcd);
  1327. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclformat", "X(5)");
  1328. model.setValue("/root/main/list3/clsp["+ clsprow +"]/detldesc", "진료행위에 대한 추가기술 사항을 구분하는 코드로서 확인코드가 여러개 발생할 경우 '/'로 구분하여 기재");
  1329. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldedilnno", "0");
  1330. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clsoyn", "N"); //원외처방여부
  1331. grd_clsphist.row = clsprow;
  1332. grd_clsphist.refresh();
  1333. }
  1334. model.setValue("/root/hidden/list3/msgspclformat", "확인코드 - JT001 / 입력코드내역 : "+ cnfmcd +" / 기재형식 : X(5)");
  1335. //////////////////
  1336. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  1337. fSortSpclNo();
  1338. grd_clsphist.refresh();
  1339. grd_clodhist.refresh();
  1340. }
  1341. }
  1342. }
  1343. }
  1344. // 결과조회
  1345. function fOrderRsltSrch() {
  1346. if (grp_dropdownmenu.visible == true) {
  1347. grp_dropdownmenu.visible = false;
  1348. }
  1349. var clamym = model.getValue("/root/main/item1/clbs/clamym");
  1350. if (clamym) { // 조회된 심사대상자가 있으면
  1351. // ast/examcureweb/xrw/SMAER00800_결과조회.xrw
  1352. model.makeValue("/root/hidden/smaer00800/cond/srchdate1", model.getValue("/root/main/item1/clbs/indd"));
  1353. model.makeValue("/root/hidden/smaer00800/cond/srchdate2", getCurrentDate()); // (dateHelper.js) 현재날짜 반환
  1354. model.makeValue("/root/hidden/smaer00800/cond/srchpid", model.getValue("/root/main/item1/clbs/pid"));
  1355. model.makeValue("/root/hidden/smaer00800/cond/wardcd", ""); //model.getValue("/root/main/item1/iteminfo/wardcd"));
  1356. model.makeValue("/root/hidden/smaer00800/cond/roomcd", ""); //model.getValue("/root/main/item1/iteminfo/roomcd"));
  1357. model.makeValue("/root/hidden/smaer00800/cond/listflag", "P");
  1358. model.makeValue("/root/hidden/smaer00800/cond/deptcd", model.getValue("/root/main/item1/clbs/orddeptcd"));
  1359. model.makeNode("/root/hidden/smaer00800/cond/drid");
  1360. model.makeNode("/root/hidden/smaer00800/cond/chkcheck");
  1361. model.makeValue("/root/hidden/smaer00800/cond/chkcheck1", "A");
  1362. model.makeValue("/root/hidden/smaer00800/cond/chkcheck2", "B");
  1363. model.makeValue("/root/hidden/smaer00800/cond/chkcheck3", "C");
  1364. model.makeValue("/root/hidden/smaer00800/cond/chkcheck4", "D");
  1365. model.makeValue("/root/hidden/smaer00800/cond/chkcheck5", "E");
  1366. model.makeValue("/root/hidden/smaer00800/cond/chkcheck6", "F");
  1367. model.makeValue("/root/hidden/smaer00800/cond/chkcheck7", "G");
  1368. model.makeNode("/root/hidden/smaer00800/cond/chkcheck8");
  1369. model.makeNode("/root/hidden/smaer00800/cond/tabflag");
  1370. model.makeNode("/root/hidden/smaer00800/cond/mdlcd");
  1371. model.makeNode("/root/hidden/smaer00800/cond/examgubun");
  1372. model.makevalue("/root/hidden/smaer00800/cond/srchflag", "B");
  1373. model.makeNode("/root/hidden/smaer00800/cond/hlaflag"); // 20100604 추가됨
  1374. model.makeNode("/root/hidden/smaer00800/cond/prntfrmflag"); // 20100723 추가됨
  1375. //modal("SMAER00800", "1", "10", "10", "SMAER00800", "/root/hidden/smaer00800/cond", "/root/send/data/singdata", "", ""); // SMAER00800_결과조회
  1376. open("SMAER00800", "1", "10", "10", "SMAER00800", "/root/hidden/smaer00800/cond", "/root/send/data/singdata", "", ""); // SMAER00800_결과조회
  1377. }
  1378. }
  1379. // 보험인정기준
  1380. function fOrderInsuRcogBase(isAll) {
  1381. var calcscorcd = grd_clodhist.valueMatrix(grd_clodhist.row, grd_clodhist.colRef("snglcalcscorcd"));
  1382. model.setValue("root/hidden/sppiz01600/cond/calcscorcd", calcscorcd);
  1383. // SPPIZ01600_보험인정기준조회 팝업 연결 (선택된 row의 처방코드를 넘겨준다.)
  1384. modal("SPPIZ01600", 1,150, 150, "SPPIZ01600", "/root/hidden/sppiz01600/cond/calcscorcd", "/root/send/item3/calcscorcd", "", "");
  1385. }
  1386. // 수가조회
  1387. function fOrderCalcScorSrch(isAll) {
  1388. // 수가조회창이 아닌 수가관리창으로 교체 (calcscorcd : 수가코드, judgflag : 수가관리에서 자보,일반,국제를 보여주도록 하기 위함)
  1389. model.removeNodeset("/root/hidden/smpic00100/cond");
  1390. model.makeValue("/root/hidden/smpic00100/cond/calcscorcd", grd_clodhist.valueMatrix(grd_clodhist.row, grd_clodhist.colRef("snglcalcscorcd")));
  1391. model.makeValue("/root/hidden/smpic00100/cond/judgflag", "Y");
  1392. modal("SMPIC00100", "1", "10", "10", "SMPIC00100", "/root/hidden/smpic00100/cond", "/root/temp/item6", "", "");
  1393. }
  1394. // 수가조회_원외 20091217 추가
  1395. function fOrderCalcScorSrch_clop(isAll) {
  1396. // 수가조회창이 아닌 수가관리창으로 교체 (calcscorcd : 수가코드, judgflag : 수가관리에서 자보,일반,국제를 보여주도록 하기 위함)
  1397. model.removeNodeset("/root/hidden/smpic00100/cond");
  1398. model.makeValue("/root/hidden/smpic00100/cond/calcscorcd", grd_oprcphist.valueMatrix(grd_oprcphist.row, grd_oprcphist.colRef("snglcalcscorcd")));
  1399. model.makeValue("/root/hidden/smpic00100/cond/judgflag", "Y");
  1400. modal("SMPIC00100", "1", "10", "10", "SMPIC00100", "/root/hidden/smpic00100/cond", "/root/temp/item6", "", "");
  1401. }
  1402. // 약품편람
  1403. function fOrderDrugHBook() {
  1404. model.removeNodeset("/root/hidden/smadb01900/cond");
  1405. model.makeValue("/root/hidden/smadb01900/cond/calcscorcd", grd_clodhist.valueMatrix(grd_clodhist.row, grd_clodhist.colRef("snglcalcscorcd")));
  1406. modal("SMADB01900", 1,150, 150, "SMADB01900", "/root/hidden/smadb01900/cond/calcscorcd", "/root/hidden/receivedata/srchdrugcd", "", "");
  1407. }
  1408. // 약품편람_원외 20091217 추가
  1409. function fOrderDrugHBook_clop() {
  1410. model.removeNodeset("/root/hidden/smadb01900/cond");
  1411. model.makeValue("/root/hidden/smadb01900/cond/calcscorcd", grd_oprcphist.valueMatrix(grd_oprcphist.row, grd_oprcphist.colRef("snglcalcscorcd")));
  1412. modal("SMADB01900", 1,150, 150, "SMADB01900", "/root/hidden/smadb01900/cond/calcscorcd", "/root/hidden/receivedata/srchdrugcd", "", "");
  1413. }
  1414. // 처방 Grid 배경색을 설정한다. - 추가/수정된 row
  1415. function fOrderBkColorNew(clodrow) {
  1416. grd_clodhist.cellStyle("background-color", clodrow, grd_clodhist.colRef("rowstat")) = "#ffff9c"; // 신규처방 노란배경 // ffff9c=연한노랑
  1417. }
  1418. // 처방 Grid 배경색을 설정한다. - 심사사유 있는 row
  1419. function fOrderBkColorResn(i) {
  1420. //grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("rowstat")) = "#cece9c"; // 심사사유 있는 경우 녹색배경 // cece9c=카키색
  1421. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("rowstat")) = "#ffff9c"; // 심사사유 있는 경우 노란배경 // ffff9c=연한노랑
  1422. }
  1423. // 처방 Grid 배경색을 설정한다. - 배경색 없는 row
  1424. function fOrderBkColorNone(i) {
  1425. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("rowstat")) = "#ffffff"; // 배경색 없음 // #ffffff = White
  1426. }
  1427. // 처방 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가"
  1428. function fOrderGridInsertRow() {
  1429. var clodrow = grd_clodhist.row;
  1430. var preediitem1 = model.getValue("/root/main/list2/clod["+ clodrow +"]/ediitem1");
  1431. var prematractflag = model.getValue("/root/main/list2/clod["+ clodrow +"]/matractflag");
  1432. var prepayflag = model.getValue("/root/main/list2/clod["+ clodrow +"]/payflag");
  1433. grd_clodhist.insertRow(clodrow++, "below", true, true); // 처방 Grid에 행 삽입
  1434. model.setValue("/root/main/list2/clod["+ clodrow +"]/ediitem1", preediitem1);
  1435. model.setValue("/root/main/list2/clod["+ clodrow +"]/matractflag", prematractflag);
  1436. model.setValue("/root/main/list2/clod["+ clodrow +"]/payflag", prepayflag);
  1437. var ordfromdd = model.getValue("/root/main/item1/clbs/ordfromdd");
  1438. model.setValue("/root/main/list2/clod["+ clodrow +"]/orddd", ordfromdd);
  1439. // model.setValue("/root/main/list2/clod["+ clodrow +"]/execdt", ordfromdd);
  1440. model.setValue("/root/main/list2/clod["+ clodrow +"]/ordfromdd", ordfromdd);
  1441. model.setValue("/root/main/list2/clod["+ clodrow +"]/ordtodd", ordfromdd);
  1442. model.setValue("/root/main/list2/clod["+ clodrow +"]/dayno", "1");
  1443. grd_clodhist.row = clodrow;
  1444. var newcd = model.getValue("/root/hidden/list2/clodstat/cmbAdjtresncd");
  1445. if (newcd) {
  1446. model.setValue("/root/main/list2/clod["+ clodrow +"]/adjtresncd", newcd);
  1447. // 처방 Grid 배경색을 설정한다. - 추가/수정된 row
  1448. fOrderBkColorNew(clodrow);
  1449. } else {
  1450. newcd = fSetAdjtResnCd();
  1451. if (newcd == "" || newcd == "-") {
  1452. grd_clodhist.deleteRow(clodrow, true); // 처방 Grid에서 해당 라인을 삭제한다.
  1453. }
  1454. }
  1455. }
  1456. // 처방 Grid 타이틀 부분에서 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가"
  1457. function fOrderGridAddRow() {
  1458. var clodrow = grd_clodhist.row;
  1459. var preediitem1 = model.getValue("/root/hidden/list2/clodsrch/selectedRdoItem");
  1460. var prematractflag = model.getValue("/root/hidden/list2/clodsrch/selectedRdoMatrAct");
  1461. var prepayflag = model.getValue("/root/hidden/list2/clodsrch/selectedRdoPay");
  1462. if (preediitem1 == "-") {
  1463. }
  1464. if (prematractflag == "-") {
  1465. }
  1466. grd_clodhist.insertRow(grd_clodhist.Row, "below",true);
  1467. clodrow = grd_clodhist.row;
  1468. model.setValue("/root/main/list2/clod["+ clodrow +"]/ediitem1", preediitem1);
  1469. model.setValue("/root/main/list2/clod["+ clodrow +"]/matractflag", prematractflag);
  1470. model.setValue("/root/main/list2/clod["+ clodrow +"]/payflag", prepayflag);
  1471. var ordfromdd = model.getValue("/root/main/item1/clbs/ordfromdd");
  1472. model.setValue("/root/main/list2/clod["+ clodrow +"]/orddd", ordfromdd);
  1473. //model.setValue("/root/main/list2/clod["+ clodrow +"]/execdt", ordfromdd);
  1474. model.setValue("/root/main/list2/clod["+ clodrow +"]/ordfromdd", ordfromdd);
  1475. model.setValue("/root/main/list2/clod["+ clodrow +"]/ordtodd", ordfromdd);
  1476. model.setValue("/root/main/list2/clod["+ clodrow +"]/dayno", "1");
  1477. grd_clodhist.row = clodrow;
  1478. var newcd = model.getValue("/root/hidden/list2/clodstat/cmbAdjtresncd");
  1479. if (newcd) {
  1480. model.setValue("/root/main/list2/clod["+ clodrow +"]/adjtresncd", newcd);
  1481. // 처방 Grid 배경색을 설정한다. - 추가/수정된 row
  1482. fOrderBkColorNew(clodrow);
  1483. } else {
  1484. newcd = fSetAdjtResnCd();
  1485. if (newcd == "" || newcd == "-") {
  1486. grd_clodhist.deleteRow(clodrow, true); // 처방 Grid에서 해당 라인을 삭제한다.
  1487. }
  1488. }
  1489. }
  1490. //---------------------------------------------------------
  1491. // 처방 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 복사"
  1492. //---------------------------------------------------------
  1493. function fOrderGridCopyRow() {
  1494. var clodrow = grd_clodhist.row;
  1495. grd_clodhist.insertRow(clodrow++, "below", true, true); // 처방 Grid에 행 삽입
  1496. model.copyNode("/root/main/list2/clod["+ clodrow +"]", "/root/main/list2/clod["+ (clodrow - 1) +"]");
  1497. model.resetInstanceNode("/root/main/list2/clod["+ clodrow +"]/rowstat");
  1498. model.resetInstanceNode("/root/main/list2/clod["+ clodrow +"]/cnfmcd");
  1499. model.resetInstanceNode("/root/main/list2/clod["+ clodrow +"]/lnunitspclspecyn");
  1500. // seqno 셋팅
  1501. model.setValue("/root/main/list2/clod["+ clodrow +"]/seqno", model.getValue("/root/main/item1/clbs/maxseqno"));
  1502. model.setValue("/root/main/item1/clbs/maxseqno", parseInt(model.getValue("/root/main/item1/clbs/maxseqno")) + 1);
  1503. model.setValue("/root/main/list2/clod["+ clodrow +"]/edilnno", "0");
  1504. grd_clodhist.refresh();
  1505. var newcd = model.getValue("/root/hidden/list2/clodstat/cmbAdjtresncd");
  1506. if (newcd) {
  1507. model.setValue("/root/main/list2/clod["+ clodrow +"]/adjtresncd", newcd);
  1508. } else {
  1509. newcd = model.getValue("/root/main/list2/clod["+ clodrow +"]/adjtresncd");
  1510. if (newcd) {
  1511. model.setValue("/root/main/list2/clod["+ clodrow +"]/adjtresncd", newcd);
  1512. } else {
  1513. newcd = fSetAdjtResnCd();
  1514. if (newcd == "" || newcd == "-") {
  1515. grd_clodhist.deleteRow(clodrow, true); // 처방 Grid에서 해당 라인을 삭제한다.
  1516. return;
  1517. }
  1518. }
  1519. }
  1520. // 처방 Grid 타이틀을 이용해서 sorting 한 경우 줄번호가 현재 정렬된 순서대로 부여되므로 다시 sort하여 처리한다.
  1521. fSetOrderLnNo();
  1522. }
  1523. //---------------------------------------------------------
  1524. // 처방 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 삭제"
  1525. //---------------------------------------------------------
  1526. function fOrderGridDeleteRow() {
  1527. if (grd_clodhist.selectedRows == 1) { // 한줄을 삭제하는 경우
  1528. // 처방 Grid의 일변번호와 수가코드
  1529. var clodrow = grd_clodhist.row;
  1530. var clodSeqno = model.getValue("/root/main/list2/clod["+ clodrow +"]/seqno");
  1531. if (clodSeqno) {
  1532. var newcd = model.getValue("/root/hidden/list2/clodstat/cmbAdjtresncd");
  1533. if (newcd) {
  1534. model.setValue("/root/main/list2/clod["+ clodrow +"]/adjtresncd", newcd);
  1535. } else {
  1536. newcd = model.getValue("/root/main/list2/clod["+ clodrow +"]/adjtresncd");
  1537. if (newcd == "") {
  1538. newcd = fSetAdjtResnCd();
  1539. if (newcd == "" || newcd == "-") {
  1540. return;
  1541. }
  1542. }
  1543. }
  1544. }
  1545. // 해당 특정내역을 삭제한다.
  1546. if (model.getValue("/root/main/list2/clod["+ clodrow +"]/cnfmcd") || model.getValue("/root/main/list2/clod["+ clodrow +"]/lnunitspclspecyn")) {
  1547. // 확인코드 'JT001'이 입력되거나 줄단위 특정내역이 입력된 경우
  1548. for (var j = 1; j < grd_clsphist.rows; j++) {
  1549. var spclClodseqno = model.getValue("/root/main/list3/clsp["+ j +"]/clodseqno");
  1550. if (spclClodseqno == clodSeqno) { // 기존에 이미 삭제된 특정내역도 함께 삭제해서, "삭제취소" 때에도 같이 복구되고, 다시 사용자가 필요없는 내역을 삭제하도록 한다.
  1551. //model.setValue("/root/main/list3/clsp["+ j +"]/seqno", "D"+spclSeqno);
  1552. var clodstatus = grd_clodhist.rowstatus(clodrow);
  1553. if (clodstatus != 1 && clodstatus != 3) {
  1554. grd_clsphist.rowstatus(j) = 4; // 4 : delete 상태로 stat를 변경한다.
  1555. } else {
  1556. grd_clsphist.deleteRow(j, false);
  1557. }
  1558. }
  1559. }
  1560. }
  1561. // 기존입력된 처방삭제시 휴지통에 담는다.
  1562. var clodstatus = grd_clodhist.rowstatus(clodrow);
  1563. if (clodstatus != 1 && clodstatus != 3) {
  1564. // 처방 Grid에서 행 삭제 / 처방휴지통 Grid에 행 삽입
  1565. var delclodrow = grd_delclod.rows - 1;
  1566. grd_delclod.insertRow(delclodrow++, true); // 처방휴지통 Grid에 행 삽입
  1567. model.copyNode("/root/main/list6/delclod["+ delclodrow +"]", "/root/main/list2/clod["+ clodrow +"]"); // desc, sorce
  1568. if (clodstatus == 0 || clodstatus == 2) { // 0 : new, 2 : update
  1569. grd_delclod.rowstatus(grd_delclod.row) = 4; // 4 : delete 상태로 stat를 변경한다.
  1570. } else {
  1571. grd_delclod.rowstatus(grd_delclod.row) = 0;
  1572. }
  1573. }
  1574. grd_delclod.refresh();
  1575. grd_clodhist.rowstatus(clodrow) = 4; // 4 : delete 상태로 stat를 변경한다.
  1576. grd_clodhist.rowHidden(clodrow) = true;
  1577. grd_clodhist.row = clodrow;
  1578. }
  1579. else if (grd_clodhist.selectedRows > 1) { // 여러줄을 삭제하는 경우
  1580. // 심사사유, 조정사유, 수정사유 입력
  1581. var clodrow = grd_clodhist.row;
  1582. var newcd = model.getValue("/root/hidden/list2/clodstat/cmbAdjtresncd");
  1583. var newdesc = "";
  1584. if (newcd == "") {
  1585. var oldcd = model.getValue("/root/main/list2/clod["+ clodrow +"]/adjtresncd");
  1586. model.resetInstanceNode("/root/hidden/sppiz01000");
  1587. model.setValue("/root/hidden/sppiz01000/cond/cdcls", "aftout");
  1588. model.setValue("/root/hidden/sppiz01000/cond/cdid", oldcd);
  1589. modal("SPPIZ01000", "1", "500", "450", "SPPIZ01000", "/root/hidden/sppiz01000/cond", "/root/hidden/sppiz01000/cond", "", ""); // SPPIZ01000_심사수정사유관리.xrw
  1590. newcd = model.getValue("/root/hidden/sppiz01000/rslt/cdid");
  1591. newdesc = model.getValue("/root/hidden/sppiz01000/rslt/adjtresndesc");
  1592. if (newcd == "" || newcd == "-") {
  1593. return;
  1594. }
  1595. }
  1596. for (var i = 0; i < grd_clodhist.selectedRows; i++) {
  1597. var clodrow = grd_clodhist.selectedrow(i);
  1598. if (clodrow > 0) { // 타이틀 부분에 setValue 하게 되어 에러 발생함
  1599. var seqno = model.getValue("/root/main/list2/clod["+ clodrow +"]/seqno");
  1600. if (newcd != model.getValue("/root/main/list2/clod["+ clodrow +"]/adjtresncd")) {
  1601. if (grd_clodhist.rowStatus(clodrow) == 0) { // 0 : new, 2 : update
  1602. grd_clodhist.rowStatus(clodrow) = 2;
  1603. }
  1604. }
  1605. model.setValue("/root/main/list2/clod["+ clodrow +"]/adjtresncd", newcd);
  1606. model.setValue("/root/main/list2/clod["+ clodrow +"]/adjtresndesc", newdesc);
  1607. // 해당 특정내역을 삭제한다.
  1608. if (model.getValue("/root/main/list2/clod["+ clodrow +"]/cnfmcd") || model.getValue("/root/main/list2/clod["+ clodrow +"]/lnunitspclspecyn")) {
  1609. // 확인코드 'JT001'이 입력되거나 줄단위 특정내역이 입력된 경우
  1610. for (var j = 1; j < grd_clsphist.rows; j++) {
  1611. var spcClodseqno = model.getValue("/root/main/list3/clsp["+ j +"]/clodseqno");
  1612. if (spcClodseqno == "") { // 입력된 줄번호가 없는 경우 제외
  1613. }
  1614. else if (spcClodseqno == "0") { // 명일련 단위는 제외
  1615. }
  1616. else if (spcClodseqno == seqno) { // 기존에 이미 삭제된 특정내역도 함께 삭제해서, "삭제취소" 때에도 같이 복구되고, 다시 사용자가 필요없는 내역을 삭제하도록 한다.
  1617. //model.setValue("/root/main/list3/clsp["+ j +"]/edilnno", "D"+spclLnNo);
  1618. grd_clsphist.rowstatus(j) = 4; // 4 : delete 상태로 stat를 변경한다.
  1619. }
  1620. }
  1621. }
  1622. // 기존입력된 처방삭제시 휴지통에 담는다.
  1623. var clodstatus = grd_clodhist.rowstatus(clodrow);
  1624. if (clodstatus != 1 && clodstatus != 3) {
  1625. var delclodrow = grd_delclod.rows - 1;
  1626. grd_delclod.insertRow(delclodrow++, true); // 처방휴지통 Grid에 행 삽입
  1627. model.copyNode("/root/main/list6/delclod["+ delclodrow +"]", "/root/main/list2/clod["+ clodrow +"]"); // desc, sorce
  1628. var clodstatus = grd_clodhist.rowstatus(clodrow);
  1629. if (clodstatus == 0 || clodstatus == 2) { // 0 : new, 2 : update
  1630. grd_delclod.rowstatus(grd_delclod.row) = 4; // 4 : delete 상태로 stat를 변경한다.
  1631. } else {
  1632. grd_delclod.rowstatus(grd_delclod.row) = 0;
  1633. }
  1634. }
  1635. grd_clodhist.rowstatus(clodrow) = 4;
  1636. grd_clodhist.rowHidden(clodrow) = true;
  1637. }
  1638. }
  1639. grd_delclod.refresh();
  1640. }
  1641. }
  1642. // 처방 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "삭제 취소"
  1643. function fOrderGridDeleteCancel() {
  1644. var delclodrow = grd_delclod.row;
  1645. var delseqno = model.getValue("/root/main/list6/delclod["+ delclodrow +"]/seqno");
  1646. var delclodCalcscorcd = model.getValue("/root/main/list6/delclod["+ delclodrow +"]/snglcalcscorcd");
  1647. var isSpclChange = false; // 특정내역 줄번호도 변경된 경우, 처방 줄번호에 맞춰 특정내역 줄번호가 모두 변경된 다음 다시 정렬한다.
  1648. if (model.getValue("/root/main/list6/delclod["+ delclodrow +"]/cnfmcd") || model.getValue("/root/main/list6/delclod["+ delclodrow +"]/lnunitspclspecyn")) {
  1649. // 확인코드 'JT001'이 입력되거나 줄단위 특정내역이 입력된 경우
  1650. /*
  1651. for (var j = 1; j < grd_clsphist.rows; j++) {
  1652. var spclClodseqno = model.getValue("/root/main/list3/clsp["+ j +"]/clodseqno");
  1653. var spclCalcscorcd = model.getValue("/root/main/list3/clsp["+ j +"]/snglcalcscorcd");
  1654. if (spclClodseqno == delseqno && spclCalcscorcd == delclodCalcscorcd) {
  1655. grd_clsphist.rowstatus(j) = 2; // 2 : update 상태로 stat를 변경한다.
  1656. }
  1657. }
  1658. */
  1659. var clsprow = grd_clsphist.findRow(delseqno, 1, grd_clsphist.colRef("clodseqno"), false, true);
  1660. grd_clsphist.rowstatus(clsprow) = 0;
  1661. isSpclChange = true;
  1662. }
  1663. // 처방휴지통 Grid에서 행 삭제 / 처방 Grid에 행 삽입
  1664. // var clodrow = grd_clodhist.rows - 1;
  1665. // grd_clodhist.insertRow(clodrow++, "below", true, true); // 처방 Grid에 행 삽입
  1666. // model.copyNode("/root/main/list2/clod["+ clodrow +"]", "/root/main/list6/delclod["+ delclodrow +"]"); // desc, sorce
  1667. //model.setValue("/root/main/list2/clod["+ clodrow +"]/initlnno", clodrow);
  1668. //model.setValue("/root/main/list2/clod["+ clodrow +"]/edilnno", clodrow);
  1669. var clodrow = grd_clodhist.findRow(delseqno, 1, grd_clodhist.colRef("seqno"), false, true);
  1670. grd_clodhist.rowstatus(clodrow) = 0;
  1671. grd_clodhist.rowHidden(clodrow) = false;
  1672. /*
  1673. var delclodstatus = grd_delclod.rowstatus(delclodrow);
  1674. if (delclodstatus == 0) {
  1675. grd_clodhist.rowstatus(clodrow) = 1; // 1 : insert 상태로 stat를 복원한다.
  1676. } else if (delclodstatus == 4) {
  1677. grd_clodhist.rowstatus(clodrow) = 2; // 2 : update 상태로 stat를 복원한다.
  1678. }
  1679. */
  1680. grd_delclod.deleteRow(delclodrow, true); // 처방휴지통 Grid에서 해당 라인을 삭제한다.
  1681. fSetOrderLnNo();
  1682. if (isSpclChange) { // 줄단위 특정내역이 입력된 경우
  1683. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  1684. fSortSpclNo();
  1685. }
  1686. // 삭제취소된 Row가 처방 Grid에 새로 삽입되었으므로 처방 필터링이 선택되어있는 경우, 해당 Row만 표시되도록 한다.
  1687. //fGetSelectedOrderData();
  1688. // 처방 항목 구분 및 선별심사 처방 색깔 구분
  1689. // 2008-09-02 주석처리
  1690. // fSetOrderData();
  1691. grd_clsphist.refresh();
  1692. grd_clodhist.refresh();
  1693. grd_delclod.refresh();
  1694. }
  1695. // 수가코드
  1696. function fSnglGridCopyCol() {
  1697. if (grd_clodhist.selectedRows == 1) { // 한줄
  1698. var row = grd_clodhist.row;
  1699. var col = grd_clodhist.colRef("snglcalcscorcd");;
  1700. var clip = grd_clodhist.labelMatrix(row, col);
  1701. window.clipBoardData = clip;
  1702. }
  1703. /*
  1704. var clodrow = grd_clodhist.row;
  1705. grd_clodhist.insertRow(clodrow++, "below", true, true); // 처방 Grid에 행 삽입
  1706. model.copyNode("/root/main/list2/clod["+ clodrow +"]", "/root/main/list2/clod["+ (clodrow - 1) +"]");
  1707. model.resetInstanceNode("/root/main/list2/clod["+ clodrow +"]/rowstat");
  1708. model.resetInstanceNode("/root/main/list2/clod["+ clodrow +"]/cnfmcd");
  1709. model.resetInstanceNode("/root/main/list2/clod["+ clodrow +"]/lnunitspclspecyn");
  1710. model.refresh();
  1711. var newcd = model.getValue("/root/hidden/list2/clodstat/cmbAdjtresncd");
  1712. if (newcd) {
  1713. model.setValue("/root/main/list2/clod["+ clodrow +"]/adjtresncd", newcd);
  1714. } else {
  1715. newcd = model.getValue("/root/main/list2/clod["+ clodrow +"]/adjtresncd");
  1716. if (newcd) {
  1717. model.setValue("/root/main/list2/clod["+ clodrow +"]/adjtresncd", newcd);
  1718. } else {
  1719. newcd = fSetAdjtResnCd();
  1720. if (newcd == "" || newcd == "-") {
  1721. grd_clodhist.deleteRow(clodrow, true); // 처방 Grid에서 해당 라인을 삭제한다.
  1722. return;
  1723. }
  1724. }
  1725. }
  1726. // 처방 Grid 타이틀을 이용해서 sorting 한 경우 줄번호가 현재 정렬된 순서대로 부여되므로 다시 sort하여 처리한다.
  1727. fSetOrderLnNo();
  1728. // 처방 항목 구분 및 선별심사 처방 색깔 구분
  1729. fSetOrderData();
  1730. model.refresh();
  1731. */
  1732. }
  1733. // EDI코드 복사
  1734. function fEdiGridCopyCol() {
  1735. if (grd_clodhist.selectedRows == 1) { // 한줄
  1736. var row = grd_clodhist.row;
  1737. var col = grd_clodhist.colRef("basecd");
  1738. var clip = grd_clodhist.labelMatrix(row, col);
  1739. window.clipBoardData = clip;
  1740. }
  1741. }
  1742. // 처방명 복사
  1743. function fHngnmGridCopyCol() {
  1744. if (grd_clodhist.selectedRows == 1) { // 한줄
  1745. var row = grd_clodhist.row;
  1746. var col = grd_clodhist.colRef("hngnm");
  1747. var clip = grd_clodhist.labelMatrix(row, col);
  1748. window.clipBoardData = clip;
  1749. }
  1750. }
  1751. ///////////////////////////////////////////////////////////////////////////
  1752. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  1753. function fCancelClodStatusChng() {
  1754. var row = grd_clodhist.row;
  1755. model.setValue("/root/main/list2/clod["+ row +"]/adjtresncd", model.getValue("/root/hidden/item5/clod/adjtresncd"));
  1756. model.setValue("/root/main/list2/clod["+ row +"]/orddd", model.getValue("/root/hidden/item5/clod/orddd"));
  1757. model.setValue("/root/main/list2/clod["+ row +"]/ordfromdd", model.getValue("/root/hidden/item5/clod/ordfromdd"));
  1758. model.setValue("/root/main/list2/clod["+ row +"]/ordtodd", model.getValue("/root/hidden/item5/clod/ordtodd"));
  1759. model.setValue("/root/main/list2/clod["+ row +"]/updtdd", model.getValue("/root/hidden/item5/clod/updtdd"));
  1760. model.setValue("/root/main/list2/clod["+ row +"]/grupcalcscorcd", model.getValue("/root/hidden/item5/clod/grupcalcscorcd"));
  1761. model.setValue("/root/main/list2/clod["+ row +"]/snglcalcscorcd", model.getValue("/root/hidden/item5/clod/snglcalcscorcd"));
  1762. model.setValue("/root/main/list2/clod["+ row +"]/basecd", model.getValue("/root/hidden/item5/clod/basecd"));
  1763. model.setValue("/root/main/list2/clod["+ row +"]/drugqty", model.getValue("/root/hidden/item5/clod/drugqty"));
  1764. model.setValue("/root/main/list2/clod["+ row +"]/tims", model.getValue("/root/hidden/item5/clod/tims"));
  1765. model.setValue("/root/main/list2/clod["+ row +"]/dayno", model.getValue("/root/hidden/item5/clod/dayno"));
  1766. model.setValue("/root/main/list2/clod["+ row +"]/edidrugqty", model.getValue("/root/hidden/item5/clod/edidrugqty"));
  1767. model.setValue("/root/main/list2/clod["+ row +"]/edidayno", model.getValue("/root/hidden/item5/clod/edidayno"));
  1768. model.setValue("/root/main/list2/clod["+ row +"]/unitcost", model.getValue("/root/hidden/item5/clod/unitcost"));
  1769. grd_clodhist.rowstatus(grd_clodhist.row) = parseInt(model.getValue("/root/hidden/item5/clod/rowstatus"));
  1770. }
  1771. // 수가코드를 조회한 후 처방으로 행 추가를 한다.
  1772. function fSetSrchCalcScorCd() {
  1773. var col = grd_clodhist.col;
  1774. var row = grd_clodhist.row;
  1775. model.resetInstanceNode("/root/hidden/smpic00200/judgsrch"); // SMPIC00200_수가조회에 전달할 조건값
  1776. model.resetInstanceNode("/root/send/item5/mech"); // submit("TRPID20303") 용
  1777. model.makeValue("/root/send/item5/mech/unitcostupdateyn", "N"); // 단가변경여부
  1778. model.makeValue("/root/send/item5/mech/ediupdateyn", "N"); // edi변경여부
  1779. var cnfmcd = model.getValue("/root/main/list2/clod["+ row +"]/cnfmcd");
  1780. var lnunitspclspecyn = model.getValue("/root/main/list2/clod["+ row +"]/lnunitspclspecyn");
  1781. if (cnfmcd || lnunitspclspecyn) {
  1782. var ans = messageBox("입력된 줄단위 특정내역을 삭제하고 코드를 변경", "S001"); ///입력된 줄단위 특정내역을 삭제하고 코드를 변경하시려면 예(Yes)\n아니면 아니오(No)
  1783. if (ans == 6) { // 6: yes
  1784. model.resetInstanceNode("/root/main/list2/clod["+ row +"]/cnfmcd");
  1785. model.resetInstanceNode("/root/main/list2/clod["+ row +"]/lnunitspclspecyn");
  1786. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff = White
  1787. var edilnno = model.getValue("/root/main/list2/clod["+ row +"]/edilnno");
  1788. var clspgridrow;
  1789. for (var j = 1; j < grd_clsphist.rows; j++) {
  1790. var spclLnNo = model.getValue("/root/main/list3/clsp["+ j +"]/edilnno");
  1791. if (spclLnNo == edilnno) {
  1792. // 특정내역 Grid에서 삭제
  1793. var rowstatus = grd_clsphist.rowstatus(j);
  1794. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  1795. model.resetInstanceNode("/root/main/list3/clsp["+ j +"]/spclcd");
  1796. model.resetInstanceNode("/root/main/list3/clsp["+ j +"]/spclspec");
  1797. } else { // 0 : new, 2 : update
  1798. grd_clsphist.rowstatus(j) = 4; // 4 : delete 상태로 stat를 변경한다.
  1799. }
  1800. }
  1801. }
  1802. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  1803. fSortSpclNo();
  1804. }
  1805. else if (ans == 7 || ans == 2) { // 6: yes, 7:no, 2:cancel
  1806. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  1807. fCancelClodStatusChng();
  1808. return; // 입력된 코드에 변경이 없거나 코드를 삭제한 경우임
  1809. }
  1810. }
  1811. if (col == grd_clodhist.colRef("grupcalcscorcd")) { // 그룹코드
  1812. var grupcalcscorcd = model.getValue("/root/main/list2/clod["+ row +"]/grupcalcscorcd");
  1813. if (grupcalcscorcd == "") {
  1814. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  1815. fCancelClodStatusChng();
  1816. return; // 입력된 코드에 변경이 없거나 코드를 삭제한 경우임
  1817. }
  1818. else if (model.getValue("/root/hidden/item5/clod/grupcalcscorcd") == grupcalcscorcd) {
  1819. if (event.keyCode != "13") {
  1820. return; // 입력된 코드에 변경이 없거나 코드를 삭제한 경우임
  1821. }
  1822. }
  1823. model.setValue("/root/hidden/smpic00200/judgsrch/con4_search2", grupcalcscorcd); // SMPIC00200_수가조회 용
  1824. model.makeValue("/root/send/item5/mech/grupcalcscorcd", grupcalcscorcd); // submit("TRPID20303") 용
  1825. model.makeValue("/root/send/item5/mech/snglcalcscorcd", "");
  1826. model.makeValue("/root/send/item5/mech/basecd", "");
  1827. }
  1828. else if (col == grd_clodhist.colRef("snglcalcscorcd")) { // 수가코드
  1829. var snglcalcscorcd = model.getValue("/root/main/list2/clod["+ row +"]/snglcalcscorcd");
  1830. if (snglcalcscorcd == "") {
  1831. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  1832. fCancelClodStatusChng();
  1833. return; // 입력된 코드에 변경이 없거나 코드를 삭제한 경우임
  1834. }
  1835. else if (model.getValue("/root/hidden/item5/clod/snglcalcscorcd") == snglcalcscorcd) {
  1836. if (event.keyCode != "13") {
  1837. return;
  1838. }
  1839. }
  1840. model.setValue("/root/hidden/smpic00200/judgsrch/con4_search2", snglcalcscorcd); // SMPIC00200_수가조회 용
  1841. model.makeValue("/root/send/item5/mech/snglcalcscorcd", snglcalcscorcd); // submit("TRPID20303") 용
  1842. model.makeValue("/root/send/item5/mech/grupcalcscorcd", "");
  1843. model.makeValue("/root/send/item5/mech/basecd", "");
  1844. }
  1845. else if (col == grd_clodhist.colRef("basecd")) { // EDI코드
  1846. var basecd = model.getValue("/root/main/list2/clod["+ row +"]/basecd");
  1847. if (basecd == "") {
  1848. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  1849. fCancelClodStatusChng();
  1850. return; // 입력된 코드에 변경이 없거나 코드를 삭제한 경우임
  1851. }
  1852. else if (model.getValue("/root/hidden/item5/clod/basecd") == basecd) {
  1853. if (event.keyCode != "13") {
  1854. return;
  1855. }
  1856. }
  1857. model.setValue("/root/hidden/smpic00200/judgsrch/con4_search2", basecd); // SMPIC00200_수가조회 용
  1858. model.makeValue("/root/send/item5/mech/basecd", basecd); // submit("TRPID20303") 용
  1859. model.makeValue("/root/send/item5/mech/grupcalcscorcd", "");
  1860. model.makeValue("/root/send/item5/mech/snglcalcscorcd", "");
  1861. }
  1862. else if (col == grd_clodhist.colRef("hngnm")) { // 한글명칭
  1863. var hngnm = model.getValue("/root/main/list2/clod["+ row +"]/hngnm");
  1864. if (hngnm == "") {
  1865. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  1866. fCancelClodStatusChng();
  1867. return; // 입력된 코드에 변경이 없거나 코드를 삭제한 경우임
  1868. }
  1869. else if (model.getValue("/root/hidden/item5/clod/hngnm") == hngnm) {
  1870. if (event.keyCode != "13") {
  1871. return;
  1872. }
  1873. }
  1874. model.setValue("/root/hidden/smpic00200/judgsrch/con4_search2", hngnm); // SMPIC00200_수가조회 용
  1875. model.makeValue("/root/send/item5/mech/basecd", ""); // submit("TRPID20303") 용
  1876. model.makeValue("/root/send/item5/mech/grupcalcscorcd", "");
  1877. model.makeValue("/root/send/item5/mech/snglcalcscorcd", "");
  1878. }
  1879. var ordfromdd = model.getValue("/root/main/list2/clod["+ row +"]/ordfromdd");
  1880. if (ordfromdd == "") {
  1881. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  1882. fCancelClodStatusChng();
  1883. messageBox("처방일시는", "I003"); ///처방일시는 필수입력입니다.
  1884. return;
  1885. }
  1886. var dayno = model.getValue("/root/main/list2/clod["+ row +"]/dayno");
  1887. if (dayno < 0) {
  1888. messageBox("처방종료일자가 처방시작일자 보다 이전 날짜", "E008"); ///처방종료일자가 처방시작일자 보다 이전 날짜입니다.
  1889. return;
  1890. }
  1891. else if (dayno > 365) {
  1892. messageBox("처방일이 잘못", "E005"); ///처방일이 잘못 선택되었습니다.
  1893. return;
  1894. }
  1895. model.makeValue("/root/send/item5/mech/indd", model.getValue("/root/main/item1/clbs/indd"));
  1896. model.makeValue("/root/send/item5/mech/ordfromdd", ordfromdd);
  1897. model.makeValue("/root/send/item5/mech/ordtodd", ordfromdd);
  1898. model.makeValue("/root/send/item5/mech/insukind", model.getValue("/root/main/item1/clbs/insukindcd"));
  1899. model.makeValue("/root/send/item5/mech/suppkind", model.getValue("/root/main/item1/clbs/suppkindcd"));
  1900. var orddeptcd = model.getValue("/root/main/list2/clod["+ row +"]/orddeptcd");
  1901. if (orddeptcd) {
  1902. model.makeValue("/root/send/item5/mech/orddeptcd", orddeptcd);
  1903. } else {
  1904. model.makeValue("/root/send/item5/mech/orddeptcd", model.getValue("/root/main/item1/clbs/orddeptcd"));
  1905. }
  1906. var orddrid = model.getValue("/root/main/list2/clod["+ row +"]/orddrid");
  1907. if (orddrid) {
  1908. model.makeValue("/root/send/item5/mech/orddrid", orddrid);
  1909. } else {
  1910. model.makeValue("/root/send/item5/mech/orddrid", model.getValue("/root/main/item1/clbs/orddrid"));
  1911. }
  1912. var drugqty = model.getValue("/root/main/list2/clod["+ row +"]/drugqty");
  1913. if (drugqty == "") {
  1914. drugqty = "1";
  1915. }
  1916. model.makeValue("/root/send/item5/mech/drugqty", drugqty);
  1917. var tims = model.getValue("/root/main/list2/clod["+ row +"]/tims");
  1918. if (tims == "") {
  1919. tims = "1";
  1920. }
  1921. model.makeValue("/root/send/item5/mech/tims", tims);
  1922. var dayno = model.getValue("/root/main/list2/clod["+ row +"]/dayno");
  1923. if (dayno == "") {
  1924. dayno = "1";
  1925. }
  1926. model.makeValue("/root/send/item5/mech/dayno", dayno);
  1927. model.makeValue("/root/send/item5/mech/adjtresncd", model.getValue("/root/main/list2/clod["+ row +"]/adjtresncd"));
  1928. model.makeValue("/root/send/item5/mech/undersixageyn", model.getValue("/root/main/item1/clbs/undersixageyn"));
  1929. model.makeValue("/root/send/item5/mech/mechage", model.getValue("/root/main/item1/clbs/mechage"));
  1930. model.makeValue("/root/send/item5/mech/hosinresncd", model.getValue("/root/main/list2/clod["+ row +"]/hosinresncd"));
  1931. model.makeValue("/root/send/item5/mech/payflag", model.getValue("/root/main/list2/clod["+ row +"]/payflag"));
  1932. model.makeValue("/root/send/item5/mech/clbsordfromdd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  1933. model.makeValue("/root/send/item5/mech/ioflag", model.getValue("/root/main/item1/clbs/ioflag"));
  1934. model.makeValue("/root/send/item5/mech/clamflagcd", model.getValue("/root/main/item1/clbs/clamflagcd"));
  1935. model.makeValue("/root/send/item5/mech/mode", "n");
  1936. model.makeValue("/root/send/item5/mech/pid", model.getValue("/root/main/item1/clbs/pid")); // 20100125 추가
  1937. model.makeValue("/root/send/item5/mech/clamdeptcd", model.getValue("/root/main/item1/clbs/clamdeptcd")); // 20100724 추가
  1938. var clodlength;
  1939. if (col == grd_clodhist.colRef("hngnm")) {
  1940. clodlength = 0;
  1941. }
  1942. else {
  1943. if (submit("TRPID20303")) {
  1944. var clodSelect = instance1.selectSingleNode("/root/main/item5"); //root/main/item5
  1945. var clod = clodSelect.childNodes; //root/main/item5/mech
  1946. clodlength = clod.length;
  1947. } else {
  1948. clodlength = 0;
  1949. }
  1950. }
  1951. // 입력한 코드에 대해 조회된 결과가 없거나, 하나의 EDI코드에 여러 수가코드가 존재할 때
  1952. if ((clodlength == 0) || (col == grd_clodhist.colRef("basecd") && clodlength > 1) ) {
  1953. // 검색된 결과가 여러 수가코드인 경우 이를 초기화하고 수가조회 Popup 창에서 새로 결과를 얻는다.
  1954. model.resetInstanceNode("/root/main/item5");
  1955. // insukindcd를 SMPIC00200_수가조회 화면에서 사용하는 조건값으로 변경한다.
  1956. var insukindcd = model.getValue("/root/main/item1/clbs/insukindcd");
  1957. if (insukindcd == "11") {
  1958. model.setValue("/root/hidden/smpic00200/judgsrch/con5_insu", "insu");
  1959. }
  1960. else if (insukindcd == "21" || insukindcd == "22") {
  1961. model.setValue("/root/hidden/smpic00200/judgsrch/con5_insu", "proc");
  1962. }
  1963. else if (insukindcd == "31") {
  1964. model.setValue("/root/hidden/smpic00200/judgsrch/con5_insu", "autm");
  1965. }
  1966. else if (insukindcd == "41") {
  1967. model.setValue("/root/hidden/smpic00200/judgsrch/con5_insu", "indus");
  1968. } else {
  1969. model.setValue("/root/hidden/smpic00200/judgsrch/con5_insu", "insu");
  1970. }
  1971. // SMPIC00200_수가조회 화면의 그룹,싱글 combo 조건값 설정
  1972. if (col == grd_clodhist.colRef("grupcalcscorcd")) {
  1973. model.setValue("/root/hidden/smpic00200/judgsrch/con2_gsflag", "G");
  1974. }
  1975. else if (col == grd_clodhist.colRef("snglcalcscorcd")) {
  1976. model.setValue("/root/hidden/smpic00200/judgsrch/con2_gsflag", "S");
  1977. }
  1978. // SMPIC00200_수가조회 화면의 검색조건 combo 조건값 설정
  1979. if (col == grd_clodhist.colRef("basecd")) {
  1980. model.setValue("/root/hidden/smpic00200/judgsrch/con3_search1", "edicd");
  1981. }
  1982. else if (col == grd_clodhist.colRef("hngnm")) {
  1983. model.setValue("/root/hidden/smpic00200/judgsrch/con3_search1", "hngnm");
  1984. }
  1985. else {
  1986. model.setValue("/root/hidden/smpic00200/judgsrch/con3_search1", "calcscorcd");
  1987. }
  1988. // 처방시작일을 수가조회 기준일자로 설정
  1989. if (ordfromdd) {
  1990. model.setValue("/root/hidden/smpic00200/judgsrch/con1_dd", ordfromdd);
  1991. }
  1992. model.setValue("/root/hidden/smpic00200/judgsrch/con_ordinptflag", "PAM"); // 20100113 처방입력구분이 입력가능으로 된 수가도 조회하기 위해서 추가
  1993. model.removeNodeset("/root/hidden/smpic00200/rslt/mech"); // SMPIC00200_수가조회 에서 선택된 결과가 copyNode되는 경로임
  1994. model.removeNodeset("/root/hidden/smpic00200/rslt/picmmech"); // SMPIC00200_수가조회 에서 선택된 결과가 copyNode되는 경로임
  1995. modal("SMPIC00200", "1", "10", "10", "SMPIC00200", "root/hidden/smpic00200", "/root/temp", "", ""); // SMPIC00200_수가조회.xrw
  1996. var mechSelect = instance1.selectSingleNode("/root/temp/mech");
  1997. if (mechSelect == null) { // 선택한 코드가 없는 경우
  1998. model.setValue("/root/main/list2/clod["+ row +"]/grupcalcscorcd", model.getValue("/root/hidden/item5/clod/grupcalcscorcd"));
  1999. model.setValue("/root/main/list2/clod["+ row +"]/snglcalcscorcd", model.getValue("/root/hidden/item5/clod/snglcalcscorcd"));
  2000. model.setValue("/root/main/list2/clod["+ row +"]/basecd", model.getValue("/root/hidden/item5/clod/basecd"));
  2001. messageBox("수가조회 화면에서 선택한 결과가", "I004"); ///수가조회 화면에서 선택한 결과가 없습니다.
  2002. return;
  2003. }
  2004. // SMPIC00200_수가조회 화면에서 보낸 결과 값에 대한 처리
  2005. model.makeNode("/root/hidden/smpic00200/rslt/mech");
  2006. model.makeNode("/root/hidden/smpic00200/rslt/picmmech");
  2007. model.copyNode("/root/hidden/smpic00200/rslt/mech", "/root/temp/mech");
  2008. model.copyNode("/root/hidden/smpic00200/rslt/picmmech", "/root/temp/picmmech");
  2009. model.removeNodeset("/root/temp"); // SMPIC00200_수가조회 에서 선택된 결과가 직접 전달되는 경로임
  2010. if ( model.getValue("/root/hidden/smpic00200/rslt/mech/ordinptflag") != "A"
  2011. && model.getValue("/root/hidden/smpic00200/rslt/mech/ordinptflag") != "I" // 20100120 김용민 입력가능한 수가 제외
  2012. ) { // 처방입력구분(코드군 P0141) A: 가능
  2013. model.setValue("/root/main/list2/clod["+ row +"]/grupcalcscorcd", model.getValue("/root/hidden/item5/clod/grupcalcscorcd"));
  2014. model.setValue("/root/main/list2/clod["+ row +"]/snglcalcscorcd", model.getValue("/root/hidden/item5/clod/snglcalcscorcd"));
  2015. model.setValue("/root/main/list2/clod["+ row +"]/basecd", model.getValue("/root/hidden/item5/clod/basecd"));
  2016. messageBox("처방이 불가한 코드", "E008"); ///처방이 불가한 코드입니다.
  2017. return;
  2018. }
  2019. if (model.getValue("/root/hidden/smpic00200/rslt/mech/grupsnglflag") != "S") { // 그룹코드인 경우의 그룹코드에 속하는 싱글코드를 조회함.
  2020. model.makeValue("/root/send/item5/mech/grupcalcscorcd", model.getValue("/root/hidden/smpic00200/rslt/mech/calcscorcd"));
  2021. model.resetInstanceNode("/root/send/item5/mech/snglcalcscorcd");
  2022. model.resetInstanceNode("/root/send/item5/mech/basecd");
  2023. model.resetInstanceNode("/root/send/item5/mech/estmmncd");
  2024. model.makeValue("/root/send/item5/mech/ioflag", model.getValue("/root/main/item1/clbs/ioflag"));
  2025. submit("TRPID20303");
  2026. } else { // 싱글코드를 선택했을 때
  2027. model.resetInstanceNode("/root/send/item5/mech/grupcalcscorcd");
  2028. model.makeValue("/root/send/item5/mech/snglcalcscorcd", model.getValue("/root/hidden/smpic00200/rslt/picmmech/picmmech_calcscorcd"));
  2029. model.resetInstanceNode("/root/send/item5/mech/basecd");
  2030. model.resetInstanceNode("/root/send/item5/mech/estmmncd");
  2031. model.makeValue("/root/send/item5/mech/ioflag", model.getValue("/root/main/item1/clbs/ioflag"));
  2032. submit("TRPID20303");
  2033. }
  2034. }
  2035. // 수가조회 이후 신규처방 추가처리
  2036. fSetNewCalcScorCd();
  2037. //////////////////
  2038. }
  2039. // 수가조회 이후 신규처방 추가처리
  2040. function fSetNewCalcScorCd() {
  2041. var row = grd_clodhist.row;
  2042. // SMPIC00200_수가조회 화면에서 선택한 그룹코드에 대해 조회한 결과 값에 대한 처리
  2043. var clodSelect = instance1.selectSingleNode("/root/main/item5"); //root/main/item5
  2044. if (clodSelect != null) {
  2045. var clod = clodSelect.childNodes; //root/main/item5/mech
  2046. if (clod.length == 0) {
  2047. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  2048. fCancelClodStatusChng();
  2049. messageBox("처방이 불가한 코드입니다. 수가조회 화면에서 선택한 그룹코드에 대해 조회한 결과가", "I004"); ///처방이 불가한 코드입니다. 수가조회 화면에서 선택한 그룹코드에 대해 조회한 결과가 없습니다.
  2050. return;
  2051. }
  2052. // 조회한 수가코드의 금액정보를 표시한다.
  2053. fSetCalcScorAmt(clod, "new");
  2054. // 수가코드가 변경되면 치식을 초기화시킨다.
  2055. model.resetInstanceNode("/root/main/list2/clod["+ row +"]/toot");
  2056. fSetOrderLnNo();
  2057. // 새로 입력된 수가코드가 처방 Grid에 삽입 또는 수정되었으므로 처방 필터링이 선택되어있는 경우, 해당 Row만 표시되도록 한다.
  2058. // 2008-09-01
  2059. // fGetSelectedOrderData();
  2060. // 처방 항목 구분 및 선별심사 처방 색깔 구분
  2061. // 2008-09-02
  2062. //fSetOrderData();
  2063. // 확인코드가 추가된 경우 특정내역 Grid에도 JT001을 추가한다.
  2064. fSetNewCnfmCd();
  2065. } else {
  2066. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  2067. fCancelClodStatusChng();
  2068. messageBox("처방이 불가한 코드입니다. 수가조회 화면에서 선택한 그룹코드에 대해 조회한 결과가", "I004"); ///처방이 불가한 코드입니다. 수가조회 화면에서 선택한 그룹코드에 대해 조회한 결과가 없습니다.
  2069. return;
  2070. }
  2071. }
  2072. // 확인코드, 검체검사위탁, 준용코드를 특정내역에 자동으로 추가한다.
  2073. function fSetNewCnfmCd() {
  2074. var isClspChange = false;
  2075. for (var i = 1; i < grd_clodhist.rows; i++) {
  2076. var rowstatus = grd_clodhist.rowstatus(i);
  2077. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  2078. // 1.확인코드 : JT001 : 확인코드 : X(5) : 여러개 발생시 '/' 로 구분
  2079. // 2.분업예외코드 : JS002 : 분업예외코드 : 9(2)
  2080. // 3.검체검사위탁 : JS005 : 수탁기관기호/검사의뢰일(ccccyymmdd) : 9(8)/cyymmdd
  2081. // 위탁계약처구분코드(-:해당없음,1:검체검사위탁,2:시설공동이용,3:개방병원진료,4:위탁진료)
  2082. // 4.준용코드 : JS009 : 준용명 : X(700)
  2083. var seqno = model.getValue("/root/main/list2/clod["+ i +"]/seqno");
  2084. var cnfmcd = model.getValue("/root/main/list2/clod["+ i +"]/cnfmcd");
  2085. var basecd = model.getValue("/root/main/list2/clod["+ i +"]/basecd");
  2086. var hosinresncd = model.getValue("/root/main/list2/clod["+ i +"]/hosinresncd");
  2087. var trustinstno = model.getValue("/root/main/item5/mech/trustinstno");
  2088. var clamspclcd = model.getValue("/root/main/item5/mech/clamspclcd");
  2089. var okmsg = ""
  2090. var spclcd = "";
  2091. var cdnm = "";
  2092. var spclspec = "";
  2093. var spclformat = "";
  2094. var detldesc = "";
  2095. if (cnfmcd) {
  2096. okmsg = "확인코드";
  2097. spclcd = "JT001";
  2098. cdnm = "확인코드";
  2099. spclspec = cnfmcd;
  2100. spclformat = "X(5)";
  2101. detldesc = "진료행위에 대한 추가기술 사항을 구분하는 코드로서 확인코드가 여러개 발생할 경우 '/'로 구분하여 기재";
  2102. }
  2103. else if (hosinresncd != "" && hosinresncd != '00' && hosinresncd != '-'){
  2104. okmsg = "분업예외코드";
  2105. spclcd = "JS002";
  2106. cdnm = "분업예외코드";
  2107. spclspec = hosinresncd;
  2108. spclformat = "9(2)";
  2109. detldesc = "의약분업 예외사항 발생으로 의료기관에서 원내 조제/투약이 이루어진 경우 해당 예외구분코드를 기재하고, 원외처방발행기에서 퇴장방지의약품 원외처방시 해당의약품의 사용장려비를 청구할 경우 구분코드 99를 기재";
  2110. }
  2111. else if (trustinstno != "" && clamspclcd == "1"){
  2112. okmsg = "검체검사위탁";
  2113. spclcd = "JS005";
  2114. cdnm = "검체검사위탁";
  2115. spclspec = trustinstno + "/" + model.getValue("/root/main/list2/clod["+ i +"]/ordfromdd");
  2116. spclformat = "9(8)/ccyymmdd";
  2117. detldesc = "수탁기관에 검체검사를 의뢰한 경우 수탁기관기호와 검사의뢰일을 기재";
  2118. }
  2119. else if (basecd == "JJJJJJ"){
  2120. okmsg = "준용명";
  2121. spclcd = "JS009";
  2122. cdnm = "준용명";
  2123. spclspec = model.getValue("/root/main/list2/clod["+ i +"]/hngnm");
  2124. spclformat = "X(700)";
  2125. detldesc = "상대가치점수표에 분류되지 않은 항목을 상대가치점수표상의 비슷한 진료행위로 준용하여 'JJJJJJ'코드로 청구시 진료행위명과 산출식을 기재하고, 한의사의 임의처방 청구시에는 임의 처방명을 기재";
  2126. }
  2127. if (okmsg) {
  2128. var isFind = false;
  2129. var edilnno = model.getValue("/root/main/list2/clod["+ i +"]/edilnno");
  2130. if (edilnno == "" || edilnno == "0") {
  2131. if (isFind == false) { // 기존에 없었던 경우
  2132. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  2133. grd_clsphist.insertRow(clsprow++, true);
  2134. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "J");
  2135. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clodseqno", seqno);
  2136. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", edilnno);
  2137. model.setValue("/root/main/list3/clsp["+ clsprow +"]/snglcalcscorcd", model.getValue("/root/main/list2/clod["+ i +"]/snglcalcscorcd"));
  2138. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclcd", spclcd);
  2139. model.setValue("/root/main/list3/clsp["+ clsprow +"]/cdnm", cdnm);
  2140. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclspec", spclspec);
  2141. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclformat", spclformat);
  2142. model.setValue("/root/main/list3/clsp["+ clsprow +"]/detldesc", detldesc);
  2143. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldedilnno", edilnno);
  2144. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clsoyn", "N"); //원외처방여부
  2145. model.setValue("/root/main/list2/clod["+ i +"]/lnunitspclspecyn", "*"); //처방그리드 특정내역표시
  2146. grd_clsphist.row = clsprow;
  2147. //grd_clsphist.refresh();
  2148. //grd_clodhist.refresh();
  2149. isClspChange = true;
  2150. }
  2151. //model.setValue("/root/hidden/list3/msgspclformat", "확인코드 - JT001 / 입력코드내역 : "+ cnfmcd +" / 기재형식 : X(5)");
  2152. model.setValue("/root/hidden/list3/msgspclformat", cdnm + " - " + spclcd + " / " + "입력코드내역 : " + spclspec + " / 기재형식 : " + spclformat) ;
  2153. model.refreshpart("/root/hidden/list3/msgspclformat");
  2154. }
  2155. }
  2156. }
  2157. }
  2158. // 추가된 처방이 싱글코드인 경우 수가마스터 / 그룹코드인 경우 그룹마스터에 입력된 확인코드를 자동발생시킨 경우
  2159. if (isClspChange == true) {
  2160. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  2161. fSortSpclNo();
  2162. grd_clsphist.refresh();
  2163. grd_clodhist.refresh();
  2164. }
  2165. }
  2166. // 조회한 수가코드의 금액정보를 표시한다.
  2167. function fSetCalcScorAmt(clod, mode) {
  2168. for (var i = 1; i <= clod.length; i++) { // 싱글 수가코드 개수 만큼
  2169. var row = grd_clodhist.row;
  2170. if (mode == "new") {
  2171. model.setValue("/root/main/list2/clod["+ row +"]/grupsnglflag", model.getValue("/root/main/item5/mech["+i+"]/grupsnglflag")); // 그룹싱글구분
  2172. model.setValue("/root/main/list2/clod["+ row +"]/grupseqno", model.getValue("/root/main/item5/mech["+i+"]/grupseqno")); // 그룹 정렬순번
  2173. model.setValue("/root/main/list2/clod["+ row +"]/grupcalcscorcd", model.getValue("/root/main/item5/mech["+i+"]/grupcalcscorcd"));
  2174. model.setValue("/root/main/list2/clod["+ row +"]/snglcalcscorcd", model.getValue("/root/main/item5/mech["+i+"]/snglcalcscorcd"));
  2175. model.setValue("/root/main/list2/clod["+ row +"]/orddeptcd", model.getValue("/root/main/item5/mech["+i+"]/orddeptcd"));
  2176. model.setValue("/root/main/list2/clod["+ row +"]/orddrid", model.getValue("/root/main/item5/mech["+i+"]/orddrid"));
  2177. model.setValue("/root/main/list2/clod["+ row +"]/matractflag", model.getValue("/root/main/item5/mech["+i+"]/matractflag"));
  2178. model.setValue("/root/main/list2/clod["+ row +"]/item", model.getValue("/root/main/item5/mech["+i+"]/item"));
  2179. model.setValue("/root/main/list2/clod["+ row +"]/payflag", model.getValue("/root/main/item5/mech["+i+"]/payflag"));
  2180. model.setValue("/root/main/list2/clod["+ row +"]/pynpy1", model.getValue("/root/main/item5/mech["+i+"]/pynpy1"));
  2181. model.setValue("/root/main/list2/clod["+ row +"]/earncls1", model.getValue("/root/main/item5/mech["+i+"]/earncls1"));
  2182. model.setValue("/root/main/list2/clod["+ row +"]/earncls2", model.getValue("/root/main/item5/mech["+i+"]/earncls2"));
  2183. model.setValue("/root/main/list2/clod["+ row +"]/earncls3", model.getValue("/root/main/item5/mech["+i+"]/earncls3"));
  2184. model.setValue("/root/main/list2/clod["+ row +"]/ediitem1", model.getValue("/root/main/item5/mech["+i+"]/ediitem1"));
  2185. model.setValue("/root/main/list2/clod["+ row +"]/ediitem2", model.getValue("/root/main/item5/mech["+i+"]/ediitem2"));
  2186. model.setValue("/root/main/list2/clod["+ row +"]/ediitem", model.getValue("/root/main/item5/mech["+i+"]/ediitem"));
  2187. model.setValue("/root/main/list2/clod["+ row +"]/cnfmcd", model.getValue("/root/main/item5/mech["+i+"]/cnfmcd"));
  2188. model.setValue("/root/main/list2/clod["+ row +"]/orddd", model.getValue("/root/main/item5/mech["+i+"]/orddd"));
  2189. model.setValue("/root/main/list2/clod["+ row +"]/calcappyn", model.getValue("/root/main/item5/mech["+i+"]/calcappyn"));
  2190. //model.resetInstanceNode("/root/main/list2/clod["+ row +"]/edilnno");
  2191. // 신규입력된 처방은 edilnno는 0, seqno는 최종번호를 셋팅하고 maxseqno에 최종값을 +1한다.
  2192. model.setValue("/root/main/list2/clod["+ row +"]/edilnno", "0");
  2193. model.setValue("/root/main/list2/clod["+ row +"]/seqno", model.getValue("/root/main/item1/clbs/maxseqno"));
  2194. model.setValue("/root/main/item1/clbs/maxseqno", parseInt(model.getValue("/root/main/item1/clbs/maxseqno")) + 1);
  2195. }
  2196. model.setValue("/root/main/list2/clod["+ row +"]/mechfromdd", model.getValue("/root/main/item5/mech["+i+"]/mechfromdd"));
  2197. model.setValue("/root/main/list2/clod["+ row +"]/mechtodd", model.getValue("/root/main/item5/mech["+i+"]/mechtodd"));
  2198. model.setValue("/root/main/list2/clod["+ row +"]/unitcost", model.getValue("/root/main/item5/mech["+i+"]/unitcost"));
  2199. model.setValue("/root/main/list2/clod["+ row +"]/drugqty", model.getValue("/root/main/item5/mech["+i+"]/drugqty"));
  2200. model.setValue("/root/main/list2/clod["+ row +"]/tims", model.getValue("/root/main/item5/mech["+i+"]/tims"));
  2201. model.setValue("/root/main/list2/clod["+ row +"]/daydrugqty", model.getValue("/root/main/item5/mech["+i+"]/daydrugqty"));
  2202. model.setValue("/root/main/list2/clod["+ row +"]/dayno", model.getValue("/root/main/item5/mech["+i+"]/dayno"));
  2203. model.setValue("/root/main/list2/clod["+ row +"]/totdrugqty", model.getValue("/root/main/item5/mech["+i+"]/totdrugqty"));
  2204. model.setValue("/root/main/list2/clod["+ row +"]/amt", model.getValue("/root/main/item5/mech["+i+"]/amt"));
  2205. model.setValue("/root/main/list2/clod["+ row +"]/basecd", model.getValue("/root/main/item5/mech["+i+"]/basecd"));
  2206. model.setValue("/root/main/list2/clod["+ row +"]/baserlapnt", model.getValue("/root/main/item5/mech["+i+"]/baserlapnt"));
  2207. model.setValue("/root/main/list2/clod["+ row +"]/baseaddrlapnt", model.getValue("/root/main/item5/mech["+i+"]/baseaddrlapnt"));
  2208. model.setValue("/root/main/list2/clod["+ row +"]/estmcls", model.getValue("/root/main/item5/mech["+i+"]/estmcls"));
  2209. model.setValue("/root/main/list2/clod["+ row +"]/estmmncd", model.getValue("/root/main/item5/mech["+i+"]/estmmncd"));
  2210. model.setValue("/root/main/list2/clod["+ row +"]/pntunitcost", model.getValue("/root/main/item5/mech["+i+"]/pntunitcost"));
  2211. //model.setValue("/root/main/list2/clod["+ row +"]/toot", model.getValue("/root/main/item5/mech["+i+"]/toot"));
  2212. model.setValue("/root/main/list2/clod["+ row +"]/hosinresncd", model.getValue("/root/main/item5/mech["+i+"]/hosinresncd"));
  2213. model.setValue("/root/main/list2/clod["+ row +"]/ordfromdd", model.getValue("/root/main/item5/mech["+i+"]/ordfromdd"));
  2214. model.setValue("/root/main/list2/clod["+ row +"]/ordtodd", model.getValue("/root/main/item5/mech["+i+"]/ordtodd"));
  2215. model.setValue("/root/main/list2/clod["+ row +"]/edicdflag", model.getValue("/root/main/item5/mech["+i+"]/edicdflag"));
  2216. model.setValue("/root/main/list2/clod["+ row +"]/edicd", model.getValue("/root/main/item5/mech["+i+"]/edicd"));
  2217. model.setValue("/root/main/list2/clod["+ row +"]/ediunitcost", model.getValue("/root/main/item5/mech["+i+"]/ediunitcost"));
  2218. model.setValue("/root/main/list2/clod["+ row +"]/edidrugqty", model.getValue("/root/main/item5/mech["+i+"]/edidrugqty"));
  2219. model.setValue("/root/main/list2/clod["+ row +"]/edidayno", model.getValue("/root/main/item5/mech["+i+"]/edidayno"));
  2220. model.setValue("/root/main/list2/clod["+ row +"]/rcptunitcost", model.getValue("/root/main/item5/mech["+i+"]/rcptunitcost"));
  2221. model.setValue("/root/main/list2/clod["+ row +"]/prcpflag", model.getValue("/root/main/item5/mech["+i+"]/prcpflag"));
  2222. model.setValue("/root/main/list2/clod["+ row +"]/ediamt", model.getValue("/root/main/item5/mech["+i+"]/ediamt"));
  2223. model.setValue("/root/main/list2/clod["+ row +"]/rcptcalcamt", model.getValue("/root/main/item5/mech["+i+"]/rcptcalcamt"));
  2224. model.setValue("/root/main/list2/clod["+ row +"]/estmcd", model.getValue("/root/main/item5/mech["+i+"]/estmcd"));
  2225. model.setValue("/root/main/list2/clod["+ row +"]/hngnm", model.getValue("/root/main/item5/mech["+i+"]/hngnm"));
  2226. model.setValue("/root/main/list2/clod["+ row +"]/edihospaddamt", model.getValue("/root/main/item5/mech["+i+"]/edihospaddamt"));
  2227. model.setValue("/root/main/list2/clod["+ row +"]/ediaddamt", model.getValue("/root/main/item5/mech["+i+"]/ediaddamt"));
  2228. model.setValue("/root/main/list2/clod["+ row +"]/paytotamt", model.getValue("/root/main/item5/mech["+i+"]/paytotamt"));
  2229. model.setValue("/root/main/list2/clod["+ row +"]/ownbamt", model.getValue("/root/main/item5/mech["+i+"]/ownbamt"));
  2230. model.setValue("/root/main/list2/clod["+ row +"]/clamamt", model.getValue("/root/main/item5/mech["+i+"]/clamamt"));
  2231. model.setValue("/root/main/list2/clod["+ row +"]/choiordamt", model.getValue("/root/main/item5/mech["+i+"]/choiordamt"));
  2232. model.setValue("/root/main/list2/clod["+ row +"]/edihospaddtotamt", model.getValue("/root/main/item5/mech["+i+"]/edihospaddtotamt"));
  2233. model.setValue("/root/main/list2/clod["+ row +"]/ediaddtotamt", model.getValue("/root/main/item5/mech["+i+"]/ediaddtotamt"));
  2234. model.setValue("/root/main/list2/clod["+ row +"]/choiordtotamt", model.getValue("/root/main/item5/mech["+i+"]/choiordtotamt"));
  2235. model.setValue("/root/main/list2/clod["+ row +"]/totordamt", model.getValue("/root/main/item5/mech["+i+"]/totordamt"));
  2236. model.setValue("/root/main/list2/clod["+ row +"]/ownbtotamt", model.getValue("/root/main/item5/mech["+i+"]/ownbtotamt"));
  2237. model.setValue("/root/main/list2/clod["+ row +"]/ordnm", model.getValue("/root/main/item5/mech["+i+"]/ordnm"));
  2238. model.setValue("/root/main/list2/clod["+ row +"]/estmcdnm", model.getValue("/root/main/item5/mech["+i+"]/estmcdnm"));
  2239. model.setValue("/root/main/list2/clod["+ row +"]/adjtresncd", model.getValue("/root/main/item5/mech["+i+"]/adjtresncd"));
  2240. model.setValue("/root/main/list2/clod["+ row +"]/druglimitamt", model.getValue("/root/main/item5/mech["+i+"]/druglimitamt"));
  2241. model.setValue("/root/main/list2/clod["+ row +"]/limitdiffamt", model.getValue("/root/main/item5/mech["+i+"]/limitdiffamt"));
  2242. model.setValue("/root/main/list2/clod["+ row +"]/edidruglimitamt", model.getValue("/root/main/item5/mech["+i+"]/edidruglimitamt"));
  2243. model.setValue("/root/main/list2/clod["+ row +"]/edilimitdiffamt", model.getValue("/root/main/item5/mech["+i+"]/edilimitdiffamt"));
  2244. // 행 추가 후 싱글코드 조회 후에 다음 줄을 자동으로 한줄 추가함.
  2245. if (i < clod.length) {
  2246. grd_clodhist.insertRow(row++, "below", false);
  2247. }
  2248. }
  2249. grd_clodhist.refresh();
  2250. }
  2251. // 입력한 산정의미코드에 해당하는 산정코드를 조회한다.
  2252. function fSrchEstmCd() {
  2253. model.removeNodeset("/root/hidden/sppiz00800/rslt");
  2254. model.makeNode("/root/hidden/sppiz00800/rslt/clcd");
  2255. model.resetInstanceNode("/root/hidden/sppiz00800/cond");
  2256. var row = grd_clodhist.row;
  2257. var estmcls = model.getValue("/root/main/list2/clod["+ row +"]/estmcls");
  2258. var insukindcd = model.getValue("/root/main/item1/clbs/insukindcd");
  2259. if (insukindcd == "") {
  2260. messageBox("심사대상자의 보험유형이", "I004"); ///심사대상자의 보험유형이 없습니다
  2261. return false;
  2262. }
  2263. model.setValue("/root/hidden/sppiz00800/cond/insukind", insukindcd);
  2264. model.setValue("/root/hidden/sppiz00800/cond/estmcls", estmcls);
  2265. model.setValue("/root/hidden/sppiz00800/cond/estmmncd", model.getValue("/root/main/list2/clod["+ row +"]/estmmncd"));
  2266. model.setValue("/root/hidden/sppiz00800/cond/todd", model.getValue("/root/main/list2/clod["+ row +"]/ordtodd"));
  2267. modal("SPPIZ00800", "1", "10", "10", "SPPIZ00800", "/root/hidden/sppiz00800/cond", "/root/hidden/cond", "", ""); // SPPIZ00800_산정코드조회.xrw
  2268. if (model.getValue("/root/hidden/sppiz00800/rslt/clcd/estmcd")) {
  2269. var estmmncd = model.getValue("/root/hidden/sppiz00800/rslt/clcd/estmmncd");
  2270. var oldestmmncd = model.getValue("/root/main/list2/clod["+ row +"]/estmmncd");
  2271. if (estmmncd == "0000" && oldestmmncd == "") {
  2272. } else {
  2273. if (estmmncd != oldestmmncd) {
  2274. var adjtresncd = model.getValue("/root/main/list2/clod["+ row +"]/adjtresncd");
  2275. var cmbAdjtresncd = "";
  2276. if (adjtresncd == "" || adjtresncd == "-") { // 심사(조정)사유가 입력되지 않은 경우
  2277. cmbAdjtresncd = model.getValue("/root/hidden/list2/clodstat/cmbAdjtresncd");
  2278. if (cmbAdjtresncd) {
  2279. model.setValue("/root/main/list2/clod["+ row +"]/adjtresncd", cmbAdjtresncd);
  2280. } else {
  2281. var newcd = fSetAdjtResnCd();
  2282. if (newcd == "" || newcd == "-") {
  2283. return;
  2284. }
  2285. }
  2286. }
  2287. fSetOrderChangeRowStat(row); // 처방의 수정된 row 상태를 표시한다.
  2288. } else {
  2289. return;
  2290. }
  2291. var oldestmcd = model.getValue("/root/main/list2/clod["+ row +"]/estmcd");
  2292. var oldestmcdnm = model.getValue("/root/main/list2/clod["+ row +"]/estmcdnm");
  2293. model.setValue("/root/main/list2/clod["+ row +"]/estmmncd", estmmncd);
  2294. model.setValue("/root/main/list2/clod["+ row +"]/estmcd", model.getValue("/root/hidden/sppiz00800/rslt/clcd/estmcd"));
  2295. model.setValue("/root/main/list2/clod["+ row +"]/estmcdnm", model.getValue("/root/hidden/sppiz00800/rslt/clcd/estmcdnm"));
  2296. var rslt = fSetEstmCd();
  2297. row = grd_clodhist.row;
  2298. if (rslt == false) {
  2299. model.setValue("/root/main/list2/clod["+ row +"]/estmmncd", oldestmmncd);
  2300. model.setValue("/root/main/list2/clod["+ row +"]/estmcd", oldestmcd);
  2301. model.setValue("/root/main/list2/clod["+ row +"]/estmcdnm", oldestmcdnm);
  2302. } else {
  2303. if (row != -1 && estmmncd == "0000") { // sort 이후에 선택된 row가 있고
  2304. estmmncd = "";
  2305. model.setValue("/root/main/list2/clod["+ row +"]/estmmncd", estmmncd);
  2306. model.setValue("/root/main/list2/clod["+ row +"]/estmcd", "");
  2307. model.setValue("/root/main/list2/clod["+ row +"]/estmcdnm", "");
  2308. }
  2309. }
  2310. }
  2311. }
  2312. if (row == -1) { // sort 이후에 선택된 row가 없음
  2313. return false;
  2314. }
  2315. var estmmncd = model.getValue("/root/main/list2/clod["+ row +"]/estmmncd");
  2316. var msg = "산정분류 ["+ estmcls +"] ";
  2317. if (estmmncd) {
  2318. msg += "산정의미코드: "+ estmmncd;
  2319. }
  2320. else {
  2321. model.setValue("/root/hidden/list3/msgspclformat", msg +" 입력된 산정의미코드가 없습니다.");
  2322. return true;
  2323. }
  2324. var estmcd = model.getValue("/root/hidden/sppiz00800/rslt/clcd/estmcd");
  2325. var estmcdnm = model.getValue("/root/hidden/sppiz00800/rslt/clcd/estmcdnm");
  2326. if (estmcd) {
  2327. msg += " / 산정코드: "+ estmcd;
  2328. }
  2329. if (estmcdnm) {
  2330. msg += " / 명칭: "+ estmcdnm;
  2331. }
  2332. var addmthd = model.getValue("/root/hidden/sppiz00800/rslt/clcd/addmthd");
  2333. if (addmthd) {
  2334. msg += " // 계산방법: ["+ addmthd +"] ";
  2335. msg += model.getValue("/root/hidden/sppiz00800/rslt/clcd/pnt");
  2336. msg += " / "+ model.getValue("/root/hidden/sppiz00800/rslt/clcd/amt");
  2337. msg += " / "+ model.getValue("/root/hidden/sppiz00800/rslt/clcd/rate");
  2338. } else {
  2339. msg += " // 조회된 산정코드가 없습니다.";
  2340. }
  2341. model.setValue("/root/hidden/list3/msgspclformat", msg);
  2342. model.refreshpart("/root/hidden/list3/msgspclformat");
  2343. return true;
  2344. }
  2345. // 수가코드의 estmcls(산정분류)에 따라 선택가능한 5자리의 estmmncd(산정의미), 이에 해당하는 3자리의 estmcd(산정코드)를 조회하고 금액을 재계산한다.
  2346. function fSetEstmCd() {
  2347. var row = grd_clodhist.row;
  2348. model.resetInstanceNode("/root/send/item5/mech"); // submit("TRPID20303") 용
  2349. var ordfromdd = model.getValue("/root/main/list2/clod["+ row +"]/ordfromdd");
  2350. if (ordfromdd == "") {
  2351. messageBox("실시일자는", "I003"); ///실시일자는 필수입력입니다.
  2352. return false;
  2353. }
  2354. var snglcalcscorcd = model.getValue("/root/main/list2/clod["+ row +"]/snglcalcscorcd");
  2355. if (snglcalcscorcd == "") {
  2356. messageBox("수가코드가 입력되지", "E007"); ///수가코드가 입력되지 않았습니다.
  2357. return false;
  2358. }
  2359. model.makeValue("/root/send/item5/mech/snglcalcscorcd", snglcalcscorcd);
  2360. model.makeValue("/root/send/item5/mech/insukind", model.getValue("/root/main/item1/clbs/insukindcd"));
  2361. model.makeValue("/root/send/item5/mech/suppkind", model.getValue("/root/main/item1/clbs/suppkindcd"));
  2362. var orddeptcd = model.getValue("/root/main/list2/clod["+ row +"]/orddeptcd");
  2363. if (orddeptcd) {
  2364. model.makeValue("/root/send/item5/mech/orddeptcd", orddeptcd);
  2365. } else {
  2366. model.makeValue("/root/send/item5/mech/orddeptcd", model.getValue("/root/main/item1/clbs/orddeptcd"));
  2367. }
  2368. var orddrid = model.getValue("/root/main/list2/clod["+ row +"]/orddrid");
  2369. if (orddrid) {
  2370. model.makeValue("/root/send/item5/mech/orddrid", orddrid);
  2371. } else {
  2372. model.makeValue("/root/send/item5/mech/orddrid", model.getValue("/root/main/item1/clbs/orddrid"));
  2373. }
  2374. model.makeValue("/root/send/item5/mech/orddd", model.getValue("/root/main/list2/clod["+ row +"]/orddd"));
  2375. model.makeValue("/root/send/item5/mech/ordfromdd", model.getValue("/root/main/list2/clod["+ row +"]/ordfromdd"));
  2376. model.makeValue("/root/send/item5/mech/ordtodd", model.getValue("/root/main/list2/clod["+ row +"]/ordtodd"));
  2377. var estmmncd = model.getValue("/root/main/list2/clod["+ row +"]/estmmncd");
  2378. //if (estmmncd != "" && estmmncd != "-") {
  2379. if (estmmncd != "-") {
  2380. model.makeValue("/root/send/item5/mech/estmmncd", estmmncd);
  2381. } else {
  2382. messageBox("산정의미코드가 입력되지", "E007"); ///산정의미코드가 입력되지 않았습니다.
  2383. return false;
  2384. }
  2385. // 20100223 1회량이 빠져있어서 추가
  2386. var drugqty = model.getValue("/root/main/list2/clod["+ row +"]/drugqty");
  2387. if (drugqty == "") {
  2388. drugqty = "1";
  2389. }
  2390. model.makeValue("/root/send/item5/mech/drugqty", drugqty);
  2391. var tims = model.getValue("/root/main/list2/clod["+ row +"]/tims");
  2392. if (tims == "") {
  2393. tims = "1";
  2394. }
  2395. model.makeValue("/root/send/item5/mech/tims", tims);
  2396. var dayno = model.getValue("/root/main/list2/clod["+ row +"]/dayno");
  2397. if (dayno == "") {
  2398. dayno = "1";
  2399. }
  2400. model.makeValue("/root/send/item5/mech/dayno", dayno);
  2401. model.makeValue("/root/send/item5/mech/adjtresncd", model.getValue("/root/main/list2/clod["+ row +"]/adjtresncd"));
  2402. model.makeValue("/root/send/item5/mech/undersixageyn", model.getValue("/root/main/item1/clbs/undersixageyn"));
  2403. model.makeValue("/root/send/item5/mech/mechage", model.getValue("/root/main/item1/clbs/mechage"));
  2404. model.makeValue("/root/send/item5/mech/hosinresncd", model.getValue("/root/main/list2/clod["+ row +"]/hosinresncd"));
  2405. model.makeValue("/root/send/item5/mech/ioflag", model.getValue("/root/main/item1/clbs/ioflag"));
  2406. model.makeValue("/root/send/item5/mech/clamflagcd", model.getValue("/root/main/item1/clbs/clamflagcd"));
  2407. model.makeValue("/root/send/item5/mech/mode", "u");
  2408. submit("TRPID20303");
  2409. var clodSelect = instance1.selectSingleNode("/root/main/item5"); //root/main/item5
  2410. var clod = clodSelect.childNodes; //root/main/item5/mech
  2411. if (clod.length == 1) {
  2412. var mechfromdd = model.getValue("/root/main/item5/mech/mechfromdd");
  2413. var mechtodd = model.getValue("/root/main/item5/mech/mechtodd");
  2414. if (mechfromdd && mechtodd) {
  2415. // 조회한 수가코드의 금액정보를 표시한다.
  2416. fSetCalcScorAmt(clod, "update");
  2417. // 처방 Grid 타이틀을 이용해서 sorting 한 경우 줄번호가 현재 정렬된 순서대로 부여되므로 다시 sort하여 처리한다.
  2418. // 2008-11-24
  2419. // fSetOrderLnNo();
  2420. // 처방 항목 구분 및 선별심사 처방 색깔 구분
  2421. // 2008-09-02
  2422. // fSetOrderData();
  2423. } else {
  2424. // 잘못된 산정코드 선택으로 해당 eidcd가 없는 경우
  2425. messageBox("산정코드가 올바르지 않거나 조회된 처방 계산 내역이", "I004"); ///산정코드가 올바르지 않거나 조회된 처방 계산 내역이 없습니다
  2426. return false;
  2427. }
  2428. } else {
  2429. // [20070618] 조회된 결과가 없을 때?
  2430. messageBox("조회된 처방 계산 내역이", "I004"); ///조회된 처방 계산 내역이 없습니다
  2431. return false;
  2432. }
  2433. return true;
  2434. }
  2435. // 삭제 or 삭제취소 후 or 처방Grid에서 그룹/수가/EDI코드를 입력한 이후에 줄번호를 다시 부여한다.
  2436. function fSetOrderLnNo() {
  2437. var row = grd_clodhist.row;
  2438. var seqno = model.getValue("/root/main/list2/clod["+ row +"]/seqno");
  2439. var ediitem1 = model.getValue("/root/main/list2/clod["+ row +"]/ediitem1");
  2440. var ediitem2 = model.getValue("/root/main/list2/clod["+ row +"]/ediitem2");
  2441. var grupcalcscorcd = model.getValue("/root/main/list2/clod["+ row +"]/grupcalcscorcd");
  2442. var snglcalcscorcd = model.getValue("/root/main/list2/clod["+ row +"]/snglcalcscorcd");
  2443. var estmmncd = model.getValue("/root/main/list2/clod["+ row +"]/estmmncd");
  2444. // sort 전 row 위치를 기억한다.
  2445. var rowNum = grd_clodhist.topRow - grd_clodhist.row;
  2446. // 수가코드가 없는 row를 삭제하고, 정렬하고, 줄번호를 다시 부여한다.
  2447. //2008-09-01
  2448. //fDelEmptyGridOrderData();
  2449. // 항,목,그룹코드,재행에 따라 정렬한다.
  2450. grd_clodhist.colsort(grd_clodhist.colRef("ediitem1")) = "asc"; // 항
  2451. grd_clodhist.colsort(grd_clodhist.colRef("ediitem2")) = "asc"; // 목
  2452. grd_clodhist.colsort(grd_clodhist.colRef("grupcalcscorcd")) = "asc"; // 그룹코드
  2453. grd_clodhist.colsort(grd_clodhist.colRef("grupseqno")) = "asc"; // 그룹 정렬순번
  2454. grd_clodhist.colsort(grd_clodhist.colRef("snglcalcscorcd")) = "asc"; // 싱글코드
  2455. grd_clodhist.colsort(grd_clodhist.colRef("edicd")) = "asc"; // EDI코드
  2456. var maxRow = parseInt(grd_clodhist.rows) ; // rows는 타이틀부분 부터 개수를 센다
  2457. var maxCol = parseInt(grd_clodhist.cols) ;
  2458. grd_clodhist.sort(grd_clodhist.fixedRows, grd_clodhist.fixedCols, maxRow, maxCol) = "usersort";
  2459. // Sort 된 Grid 상의 Data 순서와 Instance Node 상의 Data 순서를 동일하게 맞춰준다.
  2460. grd_clodhist.gridToInstance();
  2461. // 줄번호를 변경한다.
  2462. //fChangeOrderLnNo();
  2463. var row = grd_clodhist.findRow(seqno, 1, grd_clodhist.colRef("seqno"), false, true);
  2464. grd_clodhist.select(row, 1) = true;
  2465. grd_clodhist.row = row;
  2466. grd_clodhist.topRow = row + rowNum;
  2467. /*
  2468. for (var i = grd_clodhist.rows; i > 0; i--) {
  2469. if (model.getValue("/root/main/list2/clod["+ i +"]/seqno") == seqno) {
  2470. if (model.getValue("/root/main/list2/clod["+ i +"]/ediitem1") == ediitem1) {
  2471. if (model.getValue("/root/main/list2/clod["+ i +"]/ediitem2") == ediitem2) {
  2472. if (model.getValue("/root/main/list2/clod["+ i +"]/grupcalcscorcd") == grupcalcscorcd) {
  2473. if (model.getValue("/root/main/list2/clod["+ i +"]/snglcalcscorcd") == snglcalcscorcd) {
  2474. if (model.getValue("/root/main/list2/clod["+ i +"]/estmmncd") == estmmncd) {
  2475. grd_clodhist.select(i, 1) = true;
  2476. grd_clodhist.row = i;
  2477. grd_clodhist.topRow = i + rowNum;
  2478. break;
  2479. }
  2480. }
  2481. }
  2482. }
  2483. }
  2484. }
  2485. }
  2486. */
  2487. }
  2488. // 줄번호를 변경한다.
  2489. function fChangeOrderLnNo() {
  2490. /*
  2491. // 줄번호와 수가코드가 동일한 특정내역의 줄번호부터 변경한다.
  2492. for (var i = grd_clodhist.fixedRows; i < grd_clodhist.rows; i++) { // 첫 줄부터
  2493. var clodLnno = model.getValue("/root/main/list2/clod["+ i +"]/initlnno");
  2494. if (model.getValue("/root/main/list2/clod["+ i +"]/cnfmcd") || model.getValue("/root/main/list2/clod["+ i +"]/lnunitspclspecyn")) {
  2495. // 확인코드 'JT001'이 입력되거나 줄단위 특정내역이 입력된 경우
  2496. for (var j = grd_clsphist.fixedRows; j < grd_clsphist.rows; j++) {
  2497. var spclLnNo = model.getValue("/root/main/list3/clsp["+ j +"]/oldedilnno");
  2498. if (spclLnNo == "") { // 입력된 줄번호가 없는 경우 제외
  2499. }
  2500. else if (spclLnNo == "0") { // 명일련 단위는 제외
  2501. }
  2502. else if (spclLnNo == clodLnno) {
  2503. var clspstatus = grd_clsphist.rowstatus(j);
  2504. if (clspstatus == 0 || clspstatus == 2) { // 0 : new, 2 : update
  2505. if (spclLnNo != i) { // 기존 줄번호와 새 줄번호가 다른 경우
  2506. grd_clsphist.rowstatus(j) = 2; // 2 : update 상태로 stat를 변경한다.
  2507. }
  2508. }
  2509. model.setValue("/root/main/list3/clsp["+ j +"]/edilnno", i);
  2510. }
  2511. }
  2512. }
  2513. // 처방 Grid의 줄번호를 변경한다.
  2514. model.setValue("/root/main/list2/clod["+ i +"]/edilnno", i);
  2515. var initlnno = model.getValue("/root/main/list2/clod["+ i +"]/initlnno");
  2516. if (initlnno != i) {
  2517. // DB에 저장된 줄번호와 다른 줄번호로 바뀐 경우
  2518. // 처방의 수정된 row 상태를 표시한다.
  2519. //fSetOrderChangeRowStat(i);
  2520. var rowstatus = grd_clodhist.rowstatus(i);
  2521. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  2522. } else {
  2523. grd_clodhist.rowstatus(i) = 2; // 2 : update 상태로 stat를 변경한다.
  2524. }
  2525. }
  2526. }
  2527. for (var i = grd_clodhist.fixedRows; i < grd_clodhist.rows; i++) {
  2528. model.setValue("/root/main/list2/clod["+ i +"]/initlnno", model.getValue("/root/main/list2/clod["+ i +"]/edilnno"));
  2529. }
  2530. for (var j = grd_clsphist.fixedRows; j < grd_clsphist.rows; j++) {
  2531. model.setValue("/root/main/list3/clsp["+ j +"]/oldedilnno", model.getValue("/root/main/list3/clsp["+ j +"]/edilnno"));
  2532. }
  2533. */
  2534. }
  2535. // 처방 행 삭제 or 삭제취소 후에 특정내역 줄번호/특정코드에 따라 sorting 작업
  2536. function fSortSpclNo() {
  2537. if (grd_clsphist.rows > 1) {
  2538. for (var j = 1; j < grd_clsphist.rows; j++) {
  2539. grd_clsphist.rowHidden(j) = false;
  2540. var rowstatus = grd_clsphist.rowstatus(j);
  2541. var spclcd = model.getValue("/root/main/list3/clsp["+ j +"]/spclcd");
  2542. var spclspec = model.getValue("/root/main/list3/clsp["+ j +"]/spclspec");
  2543. // 특정코드과 특정내역이 입력되지 않은 경우
  2544. if (rowstatus != 4 && spclcd == "" && spclspec == "") {
  2545. // 줄을 삭제한다.
  2546. grd_clsphist.deleteRow(j, false);
  2547. j--;
  2548. } else {
  2549. // JS010(특정코드:야간가산)의 hhmm이 야간(18~09시)가 아니면 특정내역 Grid에 빨간색으로 표시
  2550. grd_clsphist.rowStyle(j, "data", "color") = "#000000"; // 000000=검은색
  2551. if (spclcd == "JS010") { // JS010 야간가산
  2552. var js010chk = false;
  2553. if (spclspec.length >= 12) { // <spclformat>ccyymmddhhmm</spclformat>
  2554. var ccyymmddhhmm = spclspec.substr(0, 12);
  2555. if (isValidDateTime(ccyymmddhhmm, "YYYYMMDDhhmm")) { // (dateHelper.js) 유효한 날짜, 시간 인지 점검
  2556. var hhmm = parseInt(spclspec.substr(8, 4), 10); // '09' 와 같은 형식으로 입력한 경우 -> 9로 처리
  2557. if (hhmm >= 1800 || hhmm < 900) {
  2558. js010chk = true;
  2559. }
  2560. }
  2561. }
  2562. if (js010chk == false) {
  2563. grd_clsphist.rowStyle(j, "data", "color") = "#ff3333"; // ff3333=붉은색
  2564. }
  2565. } // if (spclcd == "JS010")
  2566. }
  2567. }
  2568. grd_clsphist.refresh();
  2569. grd_clsphist.colsort(grd_clsphist.colRef("clsoyn")) = "asc";
  2570. grd_clsphist.colsort(grd_clsphist.colRef("unitflag")) = "desc";
  2571. grd_clsphist.colsort(grd_clsphist.colRef("spclcd")) = "asc";
  2572. grd_clsphist.colsort(grd_clsphist.colRef("edilnno")) = "asc";
  2573. var maxRow = parseInt(grd_clsphist.rows) - 1; // rows는 타이틀부분 부터 개수를 센다.
  2574. var maxCol = parseInt(grd_clsphist.cols) - 1;
  2575. grd_clsphist.sort(grd_clsphist.fixedRows, grd_clsphist.fixedCols, maxRow, maxCol) = "usersort";
  2576. // Sort 된 Grid 상의 Data 순서와 Instance Node 상의 Data 순서를 동일하게 맞춰준다.
  2577. grd_clsphist.gridToInstance();
  2578. grd_clsphist.row = 0;
  2579. //rdo_unitflag.dispatch("xforms-select"); //아래의 함수로 변경 이경민
  2580. // 특정내역 Radio button
  2581. fSelectSpclRadio();
  2582. } else { // 타이틀만 있는 경우 grd_clsphist.rows = 1
  2583. var selectedUnitFlag = model.getValue("/root/hidden/list3/selectedUnitFlag");
  2584. if (selectedUnitFlag == "-" || selectedUnitFlag == "M") {
  2585. fSpclGridInsertRow(); // 특정내역 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가"
  2586. }
  2587. }
  2588. }
  2589. // 수가코드가 없으며 DB에 저장된 내용이 아닌 경우 해당 줄을 삭제한다.
  2590. function fDelEmptyGridOrderData() {
  2591. for (var i = grd_clodhist.fixedRows; i < grd_clodhist.rows; i++) { // 첫 줄부터
  2592. var rowstatus = grd_clodhist.rowstatus(i);
  2593. var snglcalcscorcd = model.getValue("/root/main/list2/clod["+ i +"]/snglcalcscorcd");
  2594. var ediamt = model.getValue("/root/main/list2/clod["+ i +"]/ediamt");
  2595. if (rowstatus != 4 && snglcalcscorcd && ediamt) { // 4 : delete 삭제 상태가 아니면서 수가코드가 입력되고 금액이 계산된 상태임
  2596. }
  2597. else if (rowstatus == 1 || rowstatus == 3) { // 수가코드 없으며 DB에 저장된 내용이 아닌 경우
  2598. grd_clodhist.deleteRow(i, false); // 줄을 삭제한다.
  2599. i--;
  2600. }
  2601. }
  2602. model.refresh();
  2603. }
  2604. // 변경된 투여량, 횟수, 일수에 따라 총투여량, 금액을 재계산한다.
  2605. function fSetTotDrugQtyAmt() {
  2606. var i = grd_clodhist.row;
  2607. var col = grd_clodhist.col;
  2608. model.resetInstanceNode("/root/send/item5/mech"); // submit("TRPID20303") 용
  2609. model.makeValue("/root/send/item5/mech/unitcostupdateyn", "N"); // 단가변경여부
  2610. model.makeValue("/root/send/item5/mech/ediupdateyn", "N"); // edi변경여부
  2611. var drugqty = model.getValue("/root/main/list2/clod["+ i +"]/drugqty");
  2612. if (drugqty == "" || drugqty == "0") {
  2613. model.setValue("/root/main/list2/clod["+ i +"]/drugqty", "1");
  2614. }
  2615. var tims = model.getValue("/root/main/list2/clod["+ i +"]/tims");
  2616. if (tims == "" || tims == "0") {
  2617. model.setValue("/root/main/list2/clod["+ i +"]/tims", "1");
  2618. }
  2619. var dayno = model.getValue("/root/main/list2/clod["+ i +"]/dayno");
  2620. if (dayno == "" || dayno == "0") {
  2621. model.setValue("/root/main/list2/clod["+ i +"]/dayno", "1");
  2622. }
  2623. // -------------------------------------------
  2624. // 20100205 추가 (기존 조건을 EDI 조회를 기본으로 변경하여 수정시 1일량 변경안되는 오류 때문에 추가
  2625. // -------------------------------------------
  2626. var dayno = model.getValue("/root/main/list2/clod["+ i +"]/edidrugqty");
  2627. if (dayno == "" || dayno == "0") {
  2628. model.setValue("/root/main/list2/clod["+ i +"]/edidrugqty", "1");
  2629. }
  2630. var dayno = model.getValue("/root/main/list2/clod["+ i +"]/edidayno");
  2631. if (dayno == "" || dayno == "0") {
  2632. model.setValue("/root/main/list2/clod["+ i +"]/edidayno", "1");
  2633. }
  2634. if (col == grd_clodhist.colRef("edidrugqty")) { // edi1회투여량이 변경된 경우
  2635. model.setValue("/root/main/list2/clod["+ i +"]/drugqty", model.getValue("/root/main/list2/clod["+ i +"]/edidrugqty") );
  2636. col = grd_clodhist.colRef("drugqty");
  2637. }
  2638. else if (col == grd_clodhist.colRef("edidayno")) { // edi일수가 변경된 경우
  2639. model.setValue("/root/main/list2/clod["+ i +"]/dayno", model.getValue("/root/main/list2/clod["+ i +"]/edidayno") );
  2640. col = grd_clodhist.colRef("dayno");
  2641. }
  2642. // -------------------------------------------
  2643. var sDrugqty = model.getValue("/root/main/list2/clod["+ i +"]/drugqty");
  2644. var sTims = model.getValue("/root/main/list2/clod["+ i +"]/tims");
  2645. var sDayno = model.getValue("/root/main/list2/clod["+ i +"]/dayno");
  2646. var sUnitcost = model.getValue("/root/main/list2/clod["+ i +"]/unitcost");
  2647. var sEdiUnitcost = model.getValue("/root/main/list2/clod["+ i +"]/ediunitcost");
  2648. var sAmt = model.getValue("/root/main/list2/clod["+ i +"]/amt");
  2649. var sEdiAmt = model.getValue("/root/main/list2/clod["+ i +"]/ediamt");
  2650. var sDruglimitamt = model.getValue("/root/main/list2/clod["+ i +"]/druglimitamt");
  2651. var sEdiDruglimitamt = model.getValue("/root/main/list2/clod["+ i +"]/edidruglimitamt");
  2652. var sLimitdiffamt = model.getValue("/root/main/list2/clod["+ i +"]/limitdiffamt");
  2653. var sEdiLimitdiffamt = model.getValue("/root/main/list2/clod["+ i +"]/edilimitdiffamt");
  2654. var sEdiDrugqty = model.getValue("/root/main/list2/clod["+ i +"]/edidrugqty");
  2655. var sEdiDayno = model.getValue("/root/main/list2/clod["+ i +"]/edidayno");
  2656. var drugqty = parseFloat(sDrugqty);
  2657. var tims = parseInt(sTims);
  2658. var dayno = parseInt(sDayno);
  2659. var unitcost = parseInt(sUnitcost);
  2660. var ediunitcost = parseInt(sEdiUnitcost);
  2661. var amt = parseInt(sAmt);
  2662. var ediamt = parseInt(sEdiAmt);
  2663. var druglimitamt = parseInt(sDruglimitamt);
  2664. var edidruglimitamt = parseInt(sEdiDruglimitamt);
  2665. var limitdiffamt = parseInt(sLimitdiffamt);
  2666. var edilimitdiffamt = parseInt(sEdiLimitdiffamt);
  2667. var edidrugqty = parseFloat(sEdiDrugqty);
  2668. var edidayno = parseInt(sEdiDayno);
  2669. if (col == grd_clodhist.colRef("drugqty")) { // 투여량이 변경된 경우
  2670. if (sDrugqty == "" || drugqty <= 0) {
  2671. fCancelClodStatusChng(); // 처방이전상태 복구
  2672. return false;
  2673. } else {
  2674. model.makeValue("/root/send/item5/mech/dayno", sDrugqty);
  2675. }
  2676. }
  2677. else if (col == grd_clodhist.colRef("tims")) { // 횟수가 변경된 경우
  2678. if (sTims == "" || tims <= 0) {
  2679. fCancelClodStatusChng(); // 처방이전상태 복구
  2680. return false;
  2681. } else {
  2682. model.makeValue("/root/send/item5/mech/dayno", sTims);
  2683. }
  2684. }
  2685. else if (col == grd_clodhist.colRef("dayno")) { // 일수가 변경된 경우
  2686. if (sDayno == "" || dayno <= 0) {
  2687. fCancelClodStatusChng(); // 처방이전상태 복구
  2688. return false;
  2689. } else {
  2690. model.makeValue("/root/send/item5/mech/dayno", sDayno);
  2691. }
  2692. }
  2693. else if (col == grd_clodhist.colRef("unitcost")) { // 단가가 변경된 경우
  2694. if (sUnitcost == "" || unitcost <= 0) {
  2695. fCancelClodStatusChng(); // 처방이전상태 복구
  2696. return false;
  2697. } else {
  2698. model.makeValue("/root/send/item5/mech/unitcostupdateyn", "Y"); // 단가변경여부
  2699. }
  2700. }
  2701. else if (col == grd_clodhist.colRef("ediunitcost")) { // 단가가 변경된 경우
  2702. if (sEdiUnitcost == "" || ediunitcost <= 0) {
  2703. fCancelClodStatusChng(); // 처방이전상태 복구
  2704. return false;
  2705. } else {
  2706. model.makeValue("/root/send/item5/mech/unitcostupdateyn", "Y"); // 단가변경여부
  2707. }
  2708. }
  2709. else if (col == grd_clodhist.colRef("amt")) { // 금액변경된 경우
  2710. if (sAmt == "" || amt <= 0) {
  2711. fCancelClodStatusChng(); // 처방이전상태 복구
  2712. return false;
  2713. } else {
  2714. model.makeValue("/root/send/item5/mech/unitcostupdateyn", "Y"); // 금액변경여부
  2715. }
  2716. }
  2717. else if (col == grd_clodhist.colRef("ediamt")) { // 금액변경된 경우
  2718. if (sEdiAmt == "" || ediamt <= 0) {
  2719. fCancelClodStatusChng(); // 처방이전상태 복구
  2720. return false;
  2721. } else {
  2722. model.makeValue("/root/send/item5/mech/unitcostupdateyn", "Y"); // 금액변경여부
  2723. }
  2724. }
  2725. else if (col == grd_clodhist.colRef("druglimitamt")) { // 약제상한액변경된 경우
  2726. if (sDruglimitamt == "" || druglimitamt <= 0) {
  2727. fCancelClodStatusChng(); // 처방이전상태 복구
  2728. return false;
  2729. } else {
  2730. model.makeValue("/root/send/item5/mech/unitcostupdateyn", "Y"); // 약제상한액변경여부
  2731. }
  2732. }
  2733. else if (col == grd_clodhist.colRef("edidruglimitamt")) { // 약제상한액변경된 경우
  2734. if (sEdiDruglimitamt == "" || edidruglimitamt <= 0) {
  2735. fCancelClodStatusChng(); // 처방이전상태 복구
  2736. return false;
  2737. } else {
  2738. model.makeValue("/root/send/item5/mech/unitcostupdateyn", "Y"); // 약제상한액변경여부
  2739. }
  2740. }
  2741. else if (col == grd_clodhist.colRef("limitdiffamt")) { // 약제상한차액변경된 경우
  2742. if (sLimitdiffamt == "" || limitdiffamt <= 0) {
  2743. fCancelClodStatusChng(); // 처방이전상태 복구
  2744. return false;
  2745. } else {
  2746. model.makeValue("/root/send/item5/mech/unitcostupdateyn", "Y"); // 약제상한차액변경여부
  2747. }
  2748. }
  2749. else if (col == grd_clodhist.colRef("edilimitdiffamt")) { // 약제상한차액변경된 경우
  2750. if (sEdiLimitdiffamt == "" || edilimitdiffamt <= 0) {
  2751. fCancelClodStatusChng(); // 처방이전상태 복구
  2752. return false;
  2753. } else {
  2754. model.makeValue("/root/send/item5/mech/unitcostupdateyn", "Y"); // 약제상한차액변경여부
  2755. }
  2756. }
  2757. else if (col == grd_clodhist.colRef("edidrugqty")) { // edi1회투여량이 변경된 경우
  2758. if (sEdiDrugqty == "" || edidrugqty <= 0) {
  2759. fCancelClodStatusChng(); // 처방이전상태 복구
  2760. return false;
  2761. } else {
  2762. model.makeValue("/root/send/item5/mech/ediupdateyn", "Y"); // edi변경여부
  2763. }
  2764. }
  2765. else if (col == grd_clodhist.colRef("edidayno")) { // edi일수가 변경된 경우
  2766. if (sEdiDayno == "" || edidayno <= 0) {
  2767. fCancelClodStatusChng(); // 처방이전상태 복구
  2768. return false;
  2769. } else {
  2770. model.makeValue("/root/send/item5/mech/ediupdateyn", "Y"); // edi변경여부
  2771. }
  2772. }
  2773. var ordfromdd = model.getValue("/root/main/list2/clod["+ i +"]/ordfromdd");
  2774. var ordtodd = model.getValue("/root/main/list2/clod["+ i +"]/ordtodd");
  2775. var dayno = model.getValue("/root/main/list2/clod["+ i +"]/dayno");
  2776. var snglcalcscorcd = model.getValue("/root/main/list2/clod["+ i +"]/snglcalcscorcd");
  2777. if ( ordfromdd == "" || dayno == "" || snglcalcscorcd == "" ) {
  2778. return false;
  2779. }
  2780. if (parseInt(dayno) < 0) {
  2781. return false;
  2782. }
  2783. else if (parseInt(dayno) > 365) {
  2784. return false;
  2785. }
  2786. model.makeValue("/root/send/item5/mech/ordfromdd", ordfromdd);
  2787. model.makeValue("/root/send/item5/mech/ordtodd", ordtodd);
  2788. model.makeValue("/root/send/item5/mech/drugqty", sDrugqty);
  2789. model.makeValue("/root/send/item5/mech/tims", sTims);
  2790. model.makeValue("/root/send/item5/mech/dayno", sDayno);
  2791. model.makeValue("/root/send/item5/mech/unitcost", sUnitcost);
  2792. model.makeValue("/root/send/item5/mech/ediunitcost", sEdiUnitcost);
  2793. model.makeValue("/root/send/item5/mech/amt", sAmt);
  2794. model.makeValue("/root/send/item5/mech/ediamt", sEdiAmt);
  2795. model.makeValue("/root/send/item5/mech/druglimitamt", sDruglimitamt);
  2796. model.makeValue("/root/send/item5/mech/edidruglimitamt", sEdiDruglimitamt);
  2797. model.makeValue("/root/send/item5/mech/limitdiffamt", sLimitdiffamt);
  2798. model.makeValue("/root/send/item5/mech/edilimitdiffamt", sEdiLimitdiffamt);
  2799. model.makeValue("/root/send/item5/mech/edidrugqty", sEdiDrugqty);
  2800. model.makeValue("/root/send/item5/mech/edidayno", sEdiDayno);
  2801. var grupcalcscorcd = model.getValue("/root/main/list2/clod["+ i +"]/grupcalcscorcd");
  2802. if (grupcalcscorcd != "" && grupcalcscorcd != "-") {
  2803. model.makeValue("/root/send/item5/mech/grupcalcscorcd", grupcalcscorcd);
  2804. } else {
  2805. model.resetInstanceNode("/root/send/item5/mech/grupcalcscorcd");
  2806. }
  2807. model.makeValue("/root/send/item5/mech/snglcalcscorcd", snglcalcscorcd);
  2808. model.resetInstanceNode("/root/send/item5/mech/basecd");
  2809. model.makeValue("/root/send/item5/mech/insukind", model.getValue("/root/main/item1/clbs/insukindcd"));
  2810. model.makeValue("/root/send/item5/mech/suppkind", model.getValue("/root/main/item1/clbs/suppkindcd"));
  2811. var orddeptcd = model.getValue("/root/main/list2/clod["+ i +"]/orddeptcd");
  2812. if (orddeptcd) {
  2813. model.makeValue("/root/send/item5/mech/orddeptcd", orddeptcd);
  2814. } else {
  2815. model.makeValue("/root/send/item5/mech/orddeptcd", model.getValue("/root/main/item1/clbs/orddeptcd"));
  2816. }
  2817. var orddrid = model.getValue("/root/main/list2/clod["+ i +"]/orddrid");
  2818. if (orddrid) {
  2819. model.makeValue("/root/send/item5/mech/orddrid", orddrid);
  2820. } else {
  2821. model.makeValue("/root/send/item5/mech/orddrid", model.getValue("/root/main/item1/clbs/orddrid"));
  2822. }
  2823. var estmmncd = model.getValue("/root/main/list2/clod["+ i +"]/estmmncd");
  2824. if (estmmncd != "" && estmmncd != "-") {
  2825. model.makeValue("/root/send/item5/mech/estmmncd", estmmncd);
  2826. }
  2827. model.makeValue("/root/send/item5/mech/adjtresncd", model.getValue("/root/main/list2/clod["+ i +"]/adjtresncd"));
  2828. model.makeValue("/root/send/item5/mech/undersixageyn", model.getValue("/root/main/item1/clbs/undersixageyn"));
  2829. model.makeValue("/root/send/item5/mech/mechage", model.getValue("/root/main/item1/clbs/mechage"));
  2830. model.makeValue("/root/send/item5/mech/hosinresncd", model.getValue("/root/main/list2/clod["+ i +"]/hosinresncd"));
  2831. model.makeValue("/root/send/item5/mech/ioflag", model.getValue("/root/main/item1/clbs/ioflag"));
  2832. model.makeValue("/root/send/item5/mech/clamflagcd", model.getValue("/root/main/item1/clbs/clamflagcd"));
  2833. if (model.getValue("/root/main/list2/clod["+ i +"]/seqno") == "") {
  2834. // EDI환산치, 위탁진료 적용
  2835. model.makeValue("/root/send/item5/mech/mode", "n");
  2836. } else {
  2837. model.makeValue("/root/send/item5/mech/mode", "u");
  2838. }
  2839. submit("TRPID20303");
  2840. var clodSelect = instance1.selectSingleNode("/root/main/item5"); //root/main/item5
  2841. var clod = clodSelect.childNodes; //root/main/item5/mech
  2842. if (clod.length == 1) {
  2843. // 조회한 수가코드의 금액정보를 표시한다.
  2844. fSetCalcScorAmt(clod, "update");
  2845. } else {
  2846. // [20070618] 조회된 결과가 없을 때?
  2847. if (col == grd_clodhist.colRef("drugqty")) { // 투여량이 변경된 경우
  2848. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  2849. fCancelClodStatusChng();
  2850. }
  2851. else if (col == grd_clodhist.colRef("tims")) { // 횟수가 변경된 경우
  2852. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  2853. fCancelClodStatusChng();
  2854. }
  2855. else if (col == grd_clodhist.colRef("dayno")) { // 일수가 변경된 경우
  2856. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  2857. fCancelClodStatusChng();
  2858. }
  2859. messageBox("조회된 처방 계산 내역이", "I004"); ///조회된 처방 계산 내역이 없습니다.
  2860. }
  2861. return true;
  2862. }
  2863. // 원내사유코드에 따라 의약분업예외환자 요율로 재계산한다.
  2864. function fSetHosInResnCd() {
  2865. var row = grd_clodhist.row;
  2866. model.resetInstanceNode("/root/hidden/sppiz01500");
  2867. model.setValue("/root/hidden/sppiz01500/cond/cdid", model.getValue("/root/main/list2/clod["+ row +"]/hosinresncd"));
  2868. modal("SPPIZ01500", "1", "10", "10", "SPPIZ01500", "/root/hidden/sppiz01500/cond/cdid", "/root/hidden/sppiz01500/cond/cdid", "", ""); // SPPIZ01500_의약분업예외사유코드조회.xrw
  2869. var hosinresncd = model.getValue("/root/hidden/sppiz01500/rslt/cdid");
  2870. if (hosinresncd) {
  2871. if (hosinresncd == "00") {
  2872. hosinresncd = "";
  2873. }
  2874. //var newLnNo = false; // 신규 줄번호를 부여할 것인지 여부
  2875. for (var i = 0; i < grd_clodhist.selectedRows; i++) {
  2876. row = grd_clodhist.selectedrow(i);
  2877. var ordfromdd = model.getValue("/root/main/list2/clod["+ row +"]/ordfromdd");
  2878. if (ordfromdd == "") {
  2879. messageBox("처방일시는", "I003"); ///처방일시는 필수입력입니다.
  2880. } else {
  2881. var edicdflag = model.getValue("/root/main/list2/clod["+ row +"]/edicdflag");
  2882. var snglcalcscorcd = model.getValue("/root/main/list2/clod["+ row +"]/snglcalcscorcd");
  2883. var oldcd = model.getValue("/root/main/list2/clod["+ row +"]/hosinresncd");
  2884. // 3:보험등재약에 대해서만 원내사유코드를 입력할 수 있다.
  2885. if (edicdflag == "3" && snglcalcscorcd) {
  2886. model.setValue("/root/main/list2/clod["+ row +"]/hosinresncd", hosinresncd);
  2887. if (hosinresncd != oldcd && grd_clodhist.rowStatus(row) == 0) { // 0 : new, 2 : update
  2888. grd_clodhist.rowStatus(row) = 2;
  2889. // 처방 Grid 배경색을 설정한다. - 추가/수정된 row
  2890. fOrderBkColorNew(row);
  2891. }
  2892. // 퇴장방지의약품 장려비 EDI항목 변경
  2893. if (hosinresncd == "99") {
  2894. model.setValue("/root/main/list2/clod["+ row +"]/item", "0303"); // 보험항목
  2895. model.setValue("/root/main/list2/clod["+ row +"]/item1", "03");
  2896. model.setValue("/root/main/list2/clod["+ row +"]/item2", "03");
  2897. if (model.getValue("/root/main/item1/clbs/insukindcd") == "41") {
  2898. model.setValue("/root/main/list2/clod["+ row +"]/ediitem", "0CC3"); // EDI항목(보험유형별) : 산재항목
  2899. model.setValue("/root/main/list2/clod["+ row +"]/ediitem1", "0C");
  2900. model.setValue("/root/main/list2/clod["+ row +"]/ediitem2", "C3");
  2901. }
  2902. else {
  2903. model.setValue("/root/main/list2/clod["+ row +"]/ediitem", "0303"); // EDI항목(보험유형별)
  2904. model.setValue("/root/main/list2/clod["+ row +"]/ediitem1", "03");
  2905. model.setValue("/root/main/list2/clod["+ row +"]/ediitem2", "03");
  2906. }
  2907. }
  2908. // 변경된 분업예외코드 특정내역에 반영
  2909. var isFind = false;
  2910. var seqno = model.getValue("/root/main/list2/clod["+ row +"]/seqno");
  2911. var edilnno = model.getValue("/root/main/list2/clod["+ row +"]/edilnno");
  2912. var okmsg = "분업예외코드";
  2913. var spclcd = "JS002";
  2914. var cdnm = "분업예외코드";
  2915. var spclspec = hosinresncd;
  2916. var spclformat = "9(2)";
  2917. var detldesc = "의약분업 예외사항 발생으로 의료기관에서 원내 조제/투약이 이루어진 경우 해당 예외구분코드를 기재하고, 원외처방발행기에서 퇴장방지의약품 원외처방시 해당의약품의 사용장려비를 청구할 경우 구분코드 99를 기재";
  2918. for (var j = 1; j < grd_clsphist.rows; j++) {
  2919. var spclColdSeqno = model.getValue("/root/main/list3/clsp["+ j +"]/clodseqno");
  2920. var unitflag = model.getValue("/root/main/list3/clsp["+ j +"]/unitflag");
  2921. if (unitflag == "J" && seqno == spclColdSeqno && model.getValue("/root/main/list3/clsp["+ j +"]/spclcd") == "JS002" && grd_clsphist.rowstatus(j) != 4) {
  2922. model.setValue("/root/main/list3/clsp["+ j +"]/spclspec", spclspec);
  2923. var rowstatus = grd_clsphist.rowstatus(j);
  2924. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  2925. } else {
  2926. grd_clsphist.rowstatus(j) = 2; // 2 : update 상태로 stat를 변경한다.
  2927. }
  2928. isFind = true;
  2929. grd_clsphist.refresh();
  2930. }
  2931. }
  2932. if (isFind == false) { // 기존에 없었던 경우
  2933. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  2934. grd_clsphist.insertRow(clsprow++, true);
  2935. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "J");
  2936. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clodseqno", seqno);
  2937. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", edilnno);
  2938. model.setValue("/root/main/list3/clsp["+ clsprow +"]/snglcalcscorcd", model.getValue("/root/main/list2/clod["+ row +"]/snglcalcscorcd"));
  2939. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclcd", spclcd);
  2940. model.setValue("/root/main/list3/clsp["+ clsprow +"]/cdnm", cdnm);
  2941. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclspec", spclspec);
  2942. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclformat", spclformat);
  2943. model.setValue("/root/main/list3/clsp["+ clsprow +"]/detldesc", detldesc);
  2944. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldedilnno", edilnno);
  2945. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clsoyn", "N"); //원외처방여부
  2946. model.setValue("/root/main/list2/clod["+ row +"]/lnunitspclspecyn", "*"); //처방그리드 특정내역표시
  2947. grd_clsphist.row = clsprow;
  2948. grd_clsphist.refresh();
  2949. grd_clodhist.refresh();
  2950. }
  2951. } // if ((edicdflag == "3" && snglcalcscorcd) || oldcd) 끝
  2952. } // ordfromdd 가 입력된 경우
  2953. } // for (var i = 0; i < grd_clodhist.selectedRows; i++) 끝
  2954. } // if (hosinresncd) 끝
  2955. }
  2956. // 처방의 수정된 row 상태를 표시한다.
  2957. function fSetOrderChangeRowStat(clodrow) {
  2958. var clodstatus = grd_clodhist.rowstatus(clodrow);
  2959. if (clodstatus == 1 || clodstatus == 3) { // 1 : insert, 3 : insert & new
  2960. } else {
  2961. grd_clodhist.rowstatus(clodrow) = 2; // 2 : update
  2962. // 처방 Grid 배경색을 설정한다. - 추가/수정된 row
  2963. fOrderBkColorNew(clodrow);
  2964. }
  2965. }
  2966. ///////////////////////////////////////////////////////////////////////////
  2967. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "상병순서 위로"
  2968. function fDiagSeqUp() {
  2969. var rowstatus = grd_cldihist.rowstatus(grd_cldihist.row);
  2970. if (rowstatus == 4) { // 4 : delete
  2971. return;
  2972. }
  2973. var diagseq = parseInt(model.getValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagseq")); // 선택된 줄의 NO
  2974. if (diagseq > 1) { // 첫번째 줄이 아닌 경우
  2975. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagseq", --diagseq);
  2976. if (rowstatus == 0 || rowstatus == 2) {
  2977. grd_cldihist.rowstatus(grd_cldihist.row) = 2; // 2 : update
  2978. }
  2979. // 바로 위 상병순서와 중복되는 경우
  2980. var nextrow = grd_cldihist.row - 1;
  2981. var nextdiagseq = model.getValue("/root/main/list1/cldi["+ nextrow +"]/diagseq");
  2982. if (diagseq == nextdiagseq) {
  2983. model.setValue("/root/main/list1/cldi["+ nextrow +"]/diagseq", ++diagseq);
  2984. rowstatus = grd_cldihist.rowstatus(nextrow);
  2985. if (rowstatus == 0 || rowstatus == 2) {
  2986. grd_cldihist.rowstatus(nextrow) = 2; // 2 : update
  2987. }
  2988. }
  2989. // 20100329 MT002 입력체크
  2990. if ( model.getValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagseq") == "1"
  2991. && model.getValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/vcode") != ""
  2992. && model.getValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagkindcd") != "R"
  2993. ) {
  2994. fSetDiagMT002(model.getValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/vcode"));
  2995. }
  2996. fSortDiagNo(false);
  2997. }
  2998. }
  2999. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "상병순서 아래로"
  3000. function fDiagSeqDown() {
  3001. var rowstatus = grd_cldihist.rowstatus(grd_cldihist.row);
  3002. if (rowstatus == 4) { // 4 : delete
  3003. return;
  3004. }
  3005. // 삭제 상태가 아닌 마지막 줄을 찾는다.
  3006. var lastRow = grd_cldihist.rows - 1;
  3007. for (var i = 1; i < grd_cldihist.rows; i++) {
  3008. if (grd_cldihist.rowstatus(i) == 4) { // delete
  3009. lastRow = i - 1;
  3010. i = grd_cldihist.rows;
  3011. }
  3012. }
  3013. var diagseq = parseInt(model.getValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagseq")); // 선택된 줄의 NO
  3014. if (diagseq < lastRow) { // 마지막 줄이 아닌 경우
  3015. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagseq", ++diagseq);
  3016. if (rowstatus == 0 || rowstatus == 2) {
  3017. grd_cldihist.rowstatus(grd_cldihist.row) = 2; // 2 : update
  3018. }
  3019. // 바로 아래 상병순서와 중복되는 경우
  3020. var nextrow = grd_cldihist.row + 1;
  3021. var nextdiagseq = model.getValue("/root/main/list1/cldi["+ nextrow +"]/diagseq");
  3022. if (diagseq == nextdiagseq) {
  3023. model.setValue("/root/main/list1/cldi["+ nextrow +"]/diagseq", --diagseq);
  3024. rowstatus = grd_cldihist.rowstatus(nextrow);
  3025. if (rowstatus == 0 || rowstatus == 2) {
  3026. grd_cldihist.rowstatus(nextrow) = 2; // 2 : update
  3027. }
  3028. }
  3029. // 20100329 MT002 입력체크
  3030. if ( model.getValue("/root/main/list1/cldi["+ nextrow +"]/diagseq") == "1"
  3031. && model.getValue("/root/main/list1/cldi["+ nextrow +"]/vcode") != ""
  3032. && model.getValue("/root/main/list1/cldi["+ nextrow +"]/diagkindcd") != "R"
  3033. ) {
  3034. fSetDiagMT002(model.getValue("/root/main/list1/cldi["+ nextrow +"]/vcode"));
  3035. }
  3036. fSortDiagNo(false);
  3037. }
  3038. }
  3039. // "상병순서 위로/아래로" 순서 변경 후에 상병 순서 NO에 따라 sorting 작업
  3040. function fSortDiagNo(isNumbering) {
  3041. var delcnt = 0;
  3042. for (var i = 1; i < grd_cldihist.rows; i++) {
  3043. grd_cldihist.rowHidden(i) = false;
  3044. }
  3045. if (isNumbering == false) {
  3046. var maxRow = parseInt(grd_cldihist.rows) - 1; // rows는 타이틀부분 부터 개수를 센다
  3047. grd_cldihist.sort(1, grd_cldihist.colRef("diagseq"), maxRow, grd_cldihist.colRef("diagseq")) = "asc"; // 타이틀을 제외한 data 부분의 첫 줄의 row = 1 / col = 3 : no
  3048. // Sort 된 Grid 상의 Data 순서와 Instance Node 상의 Data 순서를 동일하게 맞춰준다.
  3049. grd_cldihist.gridToInstance();
  3050. }
  3051. var cldino = 1;
  3052. for (var i = 1; i < grd_cldihist.rows; i++) {
  3053. // 2.----------------------------------------------------------------------
  3054. if (grd_cldihist.rowstatus(i) != 4) { // delete
  3055. var diagseq = model.getValue("/root/main/list1/cldi["+ i +"]/diagseq");
  3056. if (grd_cldihist.rowstatus(i) == 0 && diagseq != cldino) {
  3057. grd_cldihist.rowstatus(i) = 2; // 2 : update
  3058. }
  3059. model.setValue("/root/main/list1/cldi["+ i +"]/diagseq", cldino++);
  3060. } else {
  3061. delcnt++;
  3062. }
  3063. }
  3064. var maxRow = parseInt(grd_cldihist.rows) - 1; // rows는 타이틀부분 부터 개수를 센다
  3065. grd_cldihist.sort(1, grd_cldihist.colRef("diagseq"), maxRow, grd_cldihist.colRef("diagseq")) = "asc"; // 타이틀을 제외한 data 부분의 첫 줄의 row = 1 / col = 3 : no
  3066. if (delcnt > 0) {
  3067. grd_cldihist.sort(1, grd_cldihist.colRef("diagseq"), maxRow - delcnt, grd_cldihist.colRef("diagseq")) = "asc"; // 타이틀을 제외한 data 부분의 첫 줄의 row = 1 / col = 3 : no
  3068. }
  3069. // Sort 된 Grid 상의 Data 순서와 Instance Node 상의 Data 순서를 동일하게 맞춰준다.
  3070. grd_cldihist.gridToInstance();
  3071. /*
  3072. model.setFocus("grd_cldihist");
  3073. grd_cldihist.row = 1;
  3074. */
  3075. var rowstatus;
  3076. for (var i = 1; i < grd_cldihist.rows; i++) {
  3077. rowstatus = grd_cldihist.rowstatus(i);
  3078. if (rowstatus > 3) { // 삭제상태
  3079. grd_cldihist.rowHidden(i) = true;
  3080. } else {
  3081. grd_cldihist.rowHidden(i) = false;
  3082. }
  3083. }
  3084. }
  3085. // 사용자가 입력한 숫자를 기준으로 상병순서 부여
  3086. function fChangeDiagNo() {
  3087. var row = grd_cldihist.row;
  3088. if (grd_cldihist.rowstatus(row) != 1 && grd_cldihist.rowstatus(row) != 3) { // 1 : insert, 3 : insert & new
  3089. grd_cldihist.rowstatus(row) = 2; // 2 : update
  3090. }
  3091. var newseq = model.getValue("/root/main/list1/cldi["+ row +"]/diagseq");
  3092. var oldseq = model.getValue("/root/hidden/list1/cldi/oldseq");
  3093. var vcode = model.getValue("/root/main/list1/cldi["+ row +"]/vcode");
  3094. var diagkindcd = model.getValue("/root/main/list1/cldi["+ row +"]/diagkindcd");
  3095. if (newseq) {
  3096. newseq = parseInt(model.getValue("/root/main/list1/cldi["+ row +"]/diagseq"), 10); // '09' 와 같은 형식으로 입력한 경우 -> 9로 처리
  3097. // 삭제상태가 아닌 중복된 번호가 있는지 체크한다.
  3098. var sameRow = 0;
  3099. for (var i = 1; i < grd_cldihist.rows; i++) {
  3100. var diagseq = model.getValue("/root/main/list1/cldi["+ i +"]/diagseq");
  3101. if (row != i && diagseq == newseq) {
  3102. sameRow = i;
  3103. i = grd_cldihist.rows;
  3104. }
  3105. }
  3106. if (sameRow > 0) { // 중복된 상병순서의 row가 있음
  3107. if (newseq < oldseq) { // 이전보다 앞번호를 입력한 경우
  3108. for (var j = sameRow; j < row; j++) {
  3109. var rowstatus = grd_cldihist.rowstatus(j);
  3110. if (rowstatus != 4) {
  3111. var curseq = parseInt(model.getValue("/root/main/list1/cldi["+ j +"]/diagseq"), 10);
  3112. if (rowstatus != 1 && rowstatus != 3) {
  3113. if (model.getValue("/root/main/list1/cldi["+ j +"]/diagseq") != (curseq+1)) {
  3114. grd_cldihist.rowstatus(j) = 2;
  3115. }
  3116. }
  3117. model.setValue("/root/main/list1/cldi["+ j +"]/diagseq", curseq+1);
  3118. }
  3119. }
  3120. }
  3121. else { // 이전보다 뒷번호를 입력한 경우
  3122. for (var j = row+1; j <= sameRow; j++) {
  3123. var rowstatus = grd_cldihist.rowstatus(j);
  3124. if (rowstatus != 4) {
  3125. var curseq = parseInt(model.getValue("/root/main/list1/cldi["+ j +"]/diagseq"), 10);
  3126. if (rowstatus != 1 && rowstatus != 3) {
  3127. if (model.getValue("/root/main/list1/cldi["+ j +"]/diagseq") != (curseq-1)) {
  3128. grd_cldihist.rowstatus(j) = 2;
  3129. }
  3130. }
  3131. model.setValue("/root/main/list1/cldi["+ j +"]/diagseq", curseq-1);
  3132. }
  3133. }
  3134. }
  3135. fSortDiagNo(false);
  3136. fDiagGridInsertRow("Y", "N"); // 상병마지막 그리드에 한 20090918 정승우
  3137. // 20100329 MT002 입력체크
  3138. if ( newseq == "1" && oldseq != "1" && vcode != "" && diagkindcd != "R") {
  3139. fSetDiagMT002(vcode);
  3140. }
  3141. } else { // 중복된 상병순서의 row가 없는 경우
  3142. fSortDiagNo(false); // 현재 부여된 순번으로 sort 후
  3143. fDiagGridInsertRow("Y", "N"); // 상병마지막 그리드에 한 20090918 정승우
  3144. }
  3145. } else { // 순번을 삭제한 경우
  3146. model.setValue("/root/main/list1/cldi["+ row +"]/diagseq", oldseq);
  3147. grd_cldihist.rowstatus(row) = model.getValue("/root/hidden/list1/cldi/oldrowstat");
  3148. //model.refresh();
  3149. grd_cldihist.refresh();
  3150. fDiagGridInsertRow("Y", "N"); // 상병마지막 그리드에 한
  3151. }
  3152. }
  3153. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 삽입"
  3154. function fDiagGridInsertRow(addyn, selectyn) {
  3155. var iInsertRow = 0;
  3156. if (grd_cldihist.rows == 1 || addyn == "Y") {
  3157. iInsertRow = grd_cldihist.row;
  3158. grd_cldihist.addRow(true, false);
  3159. } else {
  3160. iInsertRow = grd_cldihist.row;
  3161. grd_cldihist.insertRow(iInsertRow, "below", true);
  3162. }
  3163. var nowRow = 0;
  3164. nowRow = grd_cldihist.row;
  3165. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagkindcd", "C");
  3166. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagseq", grd_cldihist.row);
  3167. // 청구과, 진료개시일은 주상병을 기준으로 부여한다.
  3168. var clamdeptcd = model.getValue("/root/main/list1/cldi/clamdeptcd");
  3169. if (clamdeptcd == "") { // 주상병의 진료과가 입력되지 않은 경우 인적사항의 청구과를 입력한다.
  3170. clamdeptcd = model.getValue("/root/main/item1/clbs/clamdeptcd");
  3171. }
  3172. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/clamdeptcd", clamdeptcd);
  3173. var ordfromdd = model.getValue("/root/main/list1/cldi/ordfromdd");
  3174. if (ordfromdd) {
  3175. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/ordfromdd", ordfromdd);
  3176. } else {
  3177. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/ordfromdd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  3178. }
  3179. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/toot", "-");
  3180. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/vcode", ""); // 20100308 추가
  3181. // 상병이력조회에서 호출된 경우가 아니면
  3182. if (selectyn != "Y") {
  3183. fSortDiagNo(true);
  3184. }
  3185. // edit mode 설정위한것임 절대 지우지 말것.
  3186. grd_cldihist.refresh();
  3187. if (addyn != "Y") {
  3188. grd_cldihist.row = nowRow;
  3189. grd_cldihist.col = grd_cldihist.colRef("diagcd");
  3190. //grd_cldihist.dispatch("onentercell");
  3191. fGetGrdCldihistEditCell();
  3192. }
  3193. }
  3194. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가"
  3195. function fDiagGridAddRow() {
  3196. grd_cldihist.insertRow(grd_cldihist.rows - 1, "below", false);
  3197. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagkindcd", "C");
  3198. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagseq", grd_cldihist.row);
  3199. // 청구과, 진료개시일은 주상병을 기준으로 부여한다.
  3200. var clamdeptcd = model.getValue("/root/main/list1/cldi/clamdeptcd");
  3201. if (clamdeptcd == "") { // 주상병의 진료과가 입력되지 않은 경우 인적사항의 청구과를 입력한다.
  3202. clamdeptcd = model.getValue("/root/main/item1/clbs/clamdeptcd");
  3203. }
  3204. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/clamdeptcd", clamdeptcd);
  3205. var ordfromdd = model.getValue("/root/main/list1/cldi/ordfromdd");
  3206. if (ordfromdd) {
  3207. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/ordfromdd", ordfromdd);
  3208. } else {
  3209. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/ordfromdd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  3210. }
  3211. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/toot", "-");
  3212. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/vcode", ""); // 20100308 추가
  3213. grd_cldihist.refresh();
  3214. fSortDiagNo(true);
  3215. // edit mode 설정위한것임 절대 지우지 말것.
  3216. grd_cldihist.refresh();
  3217. grd_cldihist.row = grd_cldihist.rows -1;
  3218. grd_cldihist.col = grd_cldihist.colRef("diagcd");
  3219. //grd_cldihist.dispatch("onentercell");
  3220. fGetGrdCldihistEditCell();
  3221. }
  3222. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가(5줄)"
  3223. function fDiagGridInsertRowMulti() {
  3224. for (var i = 1; i <= 5; i++) {
  3225. grd_cldihist.insertRow(grd_cldihist.rows - 1, "below", false);
  3226. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagkindcd", "C");
  3227. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagseq", grd_cldihist.row);
  3228. // 청구과, 진료개시일은 주상병을 기준으로 부여한다.
  3229. var clamdeptcd = model.getValue("/root/main/list1/cldi/clamdeptcd");
  3230. if (clamdeptcd == "") { // 주상병의 진료과가 입력되지 않은 경우 인적사항의 청구과를 입력한다.
  3231. clamdeptcd = model.getValue("/root/main/item1/clbs/clamdeptcd");
  3232. }
  3233. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/clamdeptcd", clamdeptcd);
  3234. var ordfromdd = model.getValue("/root/main/list1/cldi/ordfromdd");
  3235. if (ordfromdd) {
  3236. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/ordfromdd", ordfromdd);
  3237. } else {
  3238. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/ordfromdd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  3239. }
  3240. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/toot", "-");
  3241. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/vcode", ""); // 20100308 추가
  3242. }
  3243. grd_cldihist.refresh();
  3244. fSortDiagNo(true);
  3245. // edit mode 설정위한것임 절대 지우지 말것.
  3246. grd_cldihist.refresh();
  3247. grd_cldihist.row = grd_cldihist.rows - 5;
  3248. grd_cldihist.col = grd_cldihist.colRef("diagcd");
  3249. //grd_cldihist.dispatch("onentercell");
  3250. fGetGrdCldihistEditCell();
  3251. }
  3252. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 삭제"
  3253. function fDiagGridDeleteRow() {
  3254. // 여러 row를 동시에 선택하고 삭제하는 기능을 부여한다.
  3255. for (var i = 0; i < grd_cldihist.selectedRows; i++) {
  3256. var row = grd_cldihist.selectedrow(i);
  3257. var rowstatus = grd_cldihist.rowstatus(row);
  3258. if (rowstatus == 4) { // 4 : delete
  3259. //return;
  3260. }
  3261. else if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  3262. model.resetInstanceNode("/root/main/list1/cldi["+ row +"]/diagcd");
  3263. model.resetInstanceNode("/root/main/list1/cldi["+ row +"]/diagnm");
  3264. model.resetInstanceNode("/root/main/list1/cldi["+ row +"]/diagengnm");
  3265. grd_cldihist.deleteRow(row, false); // 해당 라인을 Grid에서 삭제한다.
  3266. } else { // 0 : new, 2 : update
  3267. model.setValue("/root/main/list1/cldi["+ row +"]/diagseq", "D"+row);
  3268. grd_cldihist.rowstatus(row) = 4; // 4 : delete 상태로 stat를 변경한다.
  3269. }
  3270. }
  3271. fSortDiagNo(true);
  3272. }
  3273. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "삭제 취소"
  3274. function fDiagGridDeleteCancel() {
  3275. // 여러 row를 동시에 선택하고 삭제취소하는 기능을 부여한다.
  3276. for (var i = 0; i < grd_cldihist.selectedRows; i++) {
  3277. var row = grd_cldihist.selectedrow(i);
  3278. var rowstatus = grd_cldihist.rowstatus(row);
  3279. if (rowstatus == 4) { // 4 : delete
  3280. grd_cldihist.rowstatus(row) = 2 // 2 : update 상태로 stat를 변경한다.
  3281. }
  3282. }
  3283. fSortDiagNo(true);
  3284. }
  3285. // 상병코드를 조회하여 해당 정보를 표시하거나 상병코드 조회용 Popup을 호출한다.
  3286. function fSearchDiageCode() {
  3287. var row = grd_cldihist.row;
  3288. var diagcd = model.getValue("/root/main/list1/cldi["+ row +"]/diagcd");
  3289. if (diagcd) {
  3290. model.removeNodeset("/root/hidden/sppiz00400/rslt");
  3291. // 상병 Data가 2007년 이후로 설정되어 있으므로 임시로 현재 날짜를 넘긴다.
  3292. //model.makeValue("/root/hidden/sppiz00400/cond/basedd", model.getValue("/root/main/item1/clbs/clamym"));
  3293. model.resetInstanceNode("/root/hidden/sppiz00400/cond");
  3294. model.setValue("/root/hidden/sppiz00400/cond/basedd", getCurrentDate()); // (dateHelper.js) 현재날짜 반환
  3295. model.setValue("/root/hidden/sppiz00400/cond/diagcd", diagcd);
  3296. model.setValue("/root/hidden/sppiz00400/cond/diagnm", "");
  3297. model.setValue("/root/hidden/sppiz00400/cond/selectedrdodiagkind","1");
  3298. submit("TRPID20306",false); // 입력된 상병코드로 emr.mrtmicd10 테이블을 조회한다.
  3299. /*
  3300. var nodeList = instance1.selectNodes("/root/init/diagcd/diagcdlist[diagcd='" + diagcd + "']");
  3301. if (nodeList.length == 1) {
  3302. //model.makeNode("/root/hidden/srchdiagcd");
  3303. //model.copyNode("/root/hidden/srchdiagcd", nodeList);
  3304. var diagListCSV = getNodeListCSV(nodeList);
  3305. diagList1 = diagListCSV.split("▩");
  3306. diagList2 = diagList1[1].split("▦");
  3307. model.makeValue("/root/hidden/sppiz00400/rslt/diagcd", diagList2[0]);
  3308. model.makeValue("/root/hidden/sppiz00400/rslt/diaghngnm", diagList2[1]);
  3309. model.makeValue("/root/hidden/sppiz00400/rslt/diagengnm", diagList2[2]);
  3310. }
  3311. */
  3312. var rsltList = instance1.selectSingleNode("/root/hidden/sppiz00400/rslt");
  3313. if (rsltList != null && rsltList.length == 0) {
  3314. // 조회된 결과가 1건이면
  3315. fSetDiagCdNm();
  3316. // 다음칸에 자동 포커스 2008-11-26
  3317. row++;
  3318. grd_cldihist.row = row;
  3319. grd_cldihist.col = grd_cldihist.colRef("diagcd");
  3320. //grd_cldihist.dispatch("onentercell");
  3321. fGetGrdCldihistEditCell();
  3322. } else {
  3323. // 조회된 결과가 없거나 여러 건이면
  3324. // 상병코드 조회를 위해 SPPIZ00400_상병코드조회.xrw 를 호출한다.
  3325. fSearchSPPIZ00400();
  3326. if (model.getValue("/root/main/list1/cldi["+ row +"]/diagnm") == "" && model.getValue("/root/main/list1/cldi["+ row +"]/diagengnm") == "") {
  3327. model.setValue("/root/main/list1/cldi["+ row +"]/diagcd", model.getValue("/root/hidden/list1/cldi/olddiagcd"));
  3328. model.setValue("/root/main/list1/cldi["+ row +"]/diagnm", model.getValue("/root/hidden/list1/cldi/olddiagnm"));
  3329. model.setValue("/root/main/list1/cldi["+ row +"]/diagengnm", model.getValue("/root/hidden/list1/cldi/oldengnm"));
  3330. model.setValue("/root/main/list1/cldi["+ row +"]/kcd6chk", "N");
  3331. grd_cldihist.rowstatus(row) = model.getValue("/root/hidden/list1/cldi/oldrowstat");
  3332. grd_cldihist.refresh();
  3333. return;
  3334. } else {
  3335. // 다음칸에 자동 포커스 2008-11-26
  3336. row++;
  3337. if (row < grd_cldihist.rows) {
  3338. grd_cldihist.row = row;
  3339. grd_cldihist.col = grd_cldihist.colRef("diagcd");
  3340. //grd_cldihist.dispatch("onentercell");
  3341. fGetGrdCldihistEditCell();
  3342. }
  3343. }
  3344. }
  3345. } else {
  3346. // 상병 Grid에 상병코드를 입력하지 않고 Enter 친 경우
  3347. // 상병코드 조회를 위해 SPPIZ00400_상병코드조회.xrw 를 호출한다.
  3348. fSearchSPPIZ00400();
  3349. // 다음칸에 자동 포커스 2008-11-26
  3350. row++;
  3351. grd_cldihist.row = row;
  3352. grd_cldihist.col = grd_cldihist.colRef("diagcd");
  3353. //grd_cldihist.dispatch("onentercell");
  3354. fGetGrdCldihistEditCell();
  3355. if (model.getValue("/root/main/list1/cldi["+ row +"]/diagcd") == "") {
  3356. model.setValue("/root/main/list1/cldi["+ row +"]/diagcd", model.getValue("/root/hidden/list1/cldi/olddiagcd"));
  3357. model.setValue("/root/main/list1/cldi["+ row +"]/diagnm", model.getValue("/root/hidden/list1/cldi/olddiagnm"));
  3358. model.setValue("/root/main/list1/cldi["+ row +"]/diagengnm", model.getValue("/root/hidden/list1/cldi/oldengnm"));
  3359. model.setValue("/root/main/list1/cldi["+ row +"]/kcd6chk", "N");
  3360. grd_cldihist.rowstatus(row) = model.getValue("/root/hidden/list1/cldi/oldrowstat");
  3361. grd_cldihist.refresh();
  3362. return;
  3363. }
  3364. }
  3365. // 삭제 상태였던 상병코드를 조회하여 수정한 경우를 위해 순번을 다시 부여한다.
  3366. // 2008-11-26
  3367. // fSortDiagNo(true);
  3368. }
  3369. // 상병코드 조회를 위해 SPPIZ00400_상병코드조회.xrw 를 호출한다.
  3370. function fSearchSPPIZ00400() {
  3371. model.removeNodeset("/root/hidden/sppiz00400/rslt");
  3372. model.makeNode("/root/hidden/sppiz00400/rslt/diagcd");
  3373. model.makeNode("/root/hidden/sppiz00400/rslt/diaghngnm");
  3374. model.makeNode("/root/hidden/sppiz00400/rslt/diagengnm");
  3375. model.resetInstanceNode("/root/hidden/sppiz00400/cond");
  3376. //model.setValue("/root/hidden/sppiz00400/cond/basedd", getCurrentDate()); // (dateHelper.js) 현재날짜 반환
  3377. model.setValue("/root/hidden/sppiz00400/cond/basedd", model.getValue("/root/main/item1/clbs/ordfromdd")); // 요양개시일 적용(2016.01.26 LEJ)
  3378. model.setValue("/root/hidden/sppiz00400/cond/diagcd", model.getValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagcd"));
  3379. model.setValue("/root/hidden/sppiz00400/cond/diagnm", "");
  3380. model.setValue("/root/hidden/sppiz00400/cond/selectedrdodiagkind","3"); // 사용자가 직접검색하여 입력 할수 있도록 임의의 값(3)을 넣어줌
  3381. modal("SPPIZ00400", "1", "10", "10", "SPPIZ00400", "/root/hidden/sppiz00400/cond", "/root/init", "", ""); // SPPIZ00400_상병코드조회.xrw
  3382. model.setFocus("grd_cldihist");
  3383. }
  3384. // [SPPIZ00400_상병코드조회.xrw 에서 호출] 상병코드조회 팝업에서 선택한 상병을 상병 그리드에 반영
  3385. function fSetDiagCdNm() {
  3386. var row = grd_cldihist.row;
  3387. if (row > 0) {
  3388. var diagcd = model.getValue("/root/hidden/sppiz00400/rslt/diagcd");
  3389. var diaghngnm = model.getValue("/root/hidden/sppiz00400/rslt/diaghngnm");
  3390. var diagengnm = model.getValue("/root/hidden/sppiz00400/rslt/diagengnm");
  3391. model.setValue("/root/main/list1/cldi["+ row +"]/diagcd", diagcd);
  3392. model.setValue("/root/main/list1/cldi["+ row +"]/diagnm", diaghngnm);
  3393. model.setValue("/root/main/list1/cldi["+ row +"]/diagengnm", diagengnm);
  3394. model.setValue("/root/main/list1/cldi["+ row +"]/kcd6chk", "N");
  3395. // 해당 상병의 한글상병명과 영문상병명이 Message 용 output 컨트롤에 표시된다.
  3396. model.setValue("/root/hidden/list3/msgspclformat", "상병코드 - "+ diagcd +" / "+ diaghngnm +" / "+ diagengnm);
  3397. // 20100308 특정내역 조회 추가
  3398. model.setValue("/root/main/list1/cldi["+ row +"]/vcode", fGetDiagVcode(diagcd));
  3399. // 20100329 MT002 입력체크
  3400. if ( model.getValue("/root/main/list1/cldi["+ row +"]/diagseq") == "1"
  3401. && model.getValue("/root/main/list1/cldi["+ row +"]/vcode") != ""
  3402. && model.getValue("/root/main/list1/cldi["+ row +"]/diagkindcd") != "R"
  3403. ) {
  3404. fSetDiagMT002(model.getValue("/root/main/list1/cldi["+ row +"]/vcode"));
  3405. }
  3406. //20090918 정승우 행추가
  3407. var addval1 = model.getValue("/root/main/list1/diag["+ row +"]/rowstat");
  3408. var addval2 = grd_cldihist.rowstatus(row);
  3409. var rowstatus = grd_cldihist.rowstatus(row);
  3410. if (rowstatus != 1 && rowstatus != 3) { // 1 : insert, 3 : insert & new
  3411. grd_cldihist.rowstatus(row) = 2; // 2 : update
  3412. }
  3413. grd_cldihist.refresh();
  3414. // 4. 빈 row에 대한 입력은 행 추가를 발생시킨다. (그외에는 행추가가 일어나지 않는다.)
  3415. //20090918 정승우 행추가
  3416. if (addval1 == "" && (addval2 == 1 || addval2 == 3)) fDiagGridInsertRow("Y", "N");
  3417. }
  3418. }
  3419. // 20100329 김용민 추가 상병row 로 MT002 입력
  3420. // incode null 경우는 주상병의 특정기호 체크, null아니면 바로입력체크
  3421. function fSetDiagMT002(incode) {
  3422. var gridrowstatus = "";
  3423. var existsyn = "N";
  3424. var vcode = "";
  3425. if ( incode == "" ) {
  3426. vcode = model.getValue("/root/main/list1/cldi[diagseq='1' and vcode != '' and diagkindcd != 'R' ]/vcode");
  3427. } else {
  3428. vcode = incode;
  3429. }
  3430. if ( vcode != "" ) {
  3431. var spclcdMT002 = "";
  3432. var spclcdCT002 = "";
  3433. spclcdMT002 = model.getValue("/root/main/list3/clsp[spclcd='MT002' and spclspec='"+vcode+"' and insntstat !='D']/spclcd");
  3434. spclcdCT002 = model.getValue("/root/main/list3/clsp[spclcd='CT002' and spclspec='"+vcode+"' and insntstat !='D']/spclcd");
  3435. if (spclcdMT002.length > 0 || spclcdCT002.length > 0) {
  3436. existsyn = "Y";
  3437. }
  3438. if ( existsyn != "Y") {
  3439. var ans;
  3440. var tmpspclcd;
  3441. var snglcalcscorcdcnt = getNodesetCount("/root/main/list7/clop"); //원외청방수
  3442. if (vcode == "V252") {
  3443. tmpspclcd = "CT002";
  3444. if (snglcalcscorcdcnt > 0) {
  3445. ans = messageBox( vcode + " 상병입니다.\n\n"+ tmpspclcd + "특정내역을 \n\n"+ "입력", "S001");
  3446. }
  3447. } else {
  3448. tmpspclcd = "MT002";
  3449. ans = messageBox( vcode + " 상병입니다.\n\n"+ tmpspclcd + "특정내역을 \n\n"+ "입력", "S001");
  3450. }
  3451. if ( ans == 6 ) { // yes
  3452. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  3453. grd_clsphist.insertRow(clsprow++, true);
  3454. if (vcode == "V252") {
  3455. var clopdd = model.getValue("/root/main/list7/clop[1]/clopdd");
  3456. var clopno = model.getValue("/root/main/list7/clop[1]/clopno");
  3457. if (snglcalcscorcdcnt > 0) {
  3458. model.setValue("/root/main/list3/clsp["+ clsprow +"]/mpsno", clopdd + "" + clopno);
  3459. }
  3460. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "C");
  3461. } else {
  3462. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "M");
  3463. }
  3464. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclcd", tmpspclcd);
  3465. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", 0);
  3466. model.setValue("/root/main/list3/clsp["+ clsprow +"]/snglcalcscorcd", "-");
  3467. model.setValue("/root/main/list3/clsp["+ clsprow +"]/cdnm", "특정기호");
  3468. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclspec", vcode);
  3469. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclformat", "X(4)");
  3470. model.setValue("/root/main/list3/clsp["+ clsprow +"]/detldesc", "");
  3471. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldedilnno", "");
  3472. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clodseqno", "");
  3473. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  3474. fSortSpclNo();
  3475. grd_clsphist.refresh();
  3476. }
  3477. }
  3478. }
  3479. }
  3480. // 20100308 김용민 추가 (상병코드로 특정기호 조회)
  3481. function fGetDiagVcode(diagcd) {
  3482. var vcode = "";
  3483. var spclcd = "";
  3484. var spclspec = "";
  3485. var gridrowstatus = "";
  3486. var existsyn = "N";
  3487. model.resetInstanceNode("/root/hidden/getvcode");
  3488. model.setValue("/root/hidden/getvcode/cond/diagcd" ,diagcd);
  3489. model.setValue("/root/hidden/getvcode/cond/ioflag" ,model.getValue("/root/main/item1/clbs/ioflag"));
  3490. model.setValue("/root/hidden/getvcode/cond/insukind" ,model.getValue("/root/main/item1/clbs/insukindcd"));
  3491. model.setValue("/root/hidden/getvcode/cond/suppkind" ,model.getValue("/root/main/item1/clbs/suppkindcd"));
  3492. model.setValue("/root/hidden/getvcode/cond/ordfromdd",model.getValue("/root/main/item1/clbs/ordfromdd"));
  3493. model.setValue("/root/hidden/getvcode/rslt/vcode","");
  3494. submit("TRPID20313",false); // 상병코드로 특정기호 조회
  3495. vcode = model.getValue("/root/hidden/getvcode/rslt/vcode")
  3496. /*
  3497. //////////////////////////////////////////
  3498. // 반환전에 특정내역 입력한다.
  3499. //////////////////////////////////////////
  3500. if ( vcode != "" ) {
  3501. for (var i = 1; i < grd_clsphist.rows; i++) {
  3502. spclcd = model.getValue("/root/main/list3/clsp["+ i +"]/spclcd");
  3503. spclspec = model.getValue("/root/main/list3/clsp["+ i +"]/spclspec");
  3504. gridrowstatus = grd_clsphist.rowstatus(i);
  3505. if ( vcode == spclspec && spclcd == 'MT002' && gridrowstatus != 4 ) {
  3506. existsyn = "Y";
  3507. }
  3508. }
  3509. if ( existsyn != "Y" ) {
  3510. var ans = messageBox( vcode + " 상병입니다.\n\n"
  3511. + "MT002 특정내역을 \n\n"
  3512. + "입력"
  3513. , "S001");
  3514. if ( ans == 6 ) { // yes
  3515. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  3516. grd_clsphist.insertRow(clsprow++, true);
  3517. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "M");
  3518. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", 0);
  3519. model.setValue("/root/main/list3/clsp["+ clsprow +"]/snglcalcscorcd", "-");
  3520. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclcd", "MT002");
  3521. model.setValue("/root/main/list3/clsp["+ clsprow +"]/cdnm", "특정기호");
  3522. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclspec", vcode);
  3523. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclformat", "X(4)");
  3524. model.setValue("/root/main/list3/clsp["+ clsprow +"]/detldesc", "");
  3525. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldedilnno", "");
  3526. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clodseqno", "");
  3527. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  3528. fSortSpclNo();
  3529. grd_clsphist.refresh();
  3530. }
  3531. }
  3532. }
  3533. //////////////////////////////////////////
  3534. */
  3535. return vcode;
  3536. }
  3537. ///////////////////////////////////////////////////////////////////////////
  3538. // 팝업 화면 호출
  3539. function fLinkPopMenu(trgtWindow, cond, send) {
  3540. var trgtManWindow = getChildWindow(trgtWindow);
  3541. if (trgtManWindow == null) {
  3542. var childCnt = window.children.length;
  3543. if (childCnt < 4) {
  3544. open(trgtWindow, "2", "10", "10", trgtWindow, cond, send, "", "");
  3545. } else {
  3546. messageBox("최대 4개의 팝업 화면을 표시할 수 있으니 현재 열려있는 화면을", "I007"); ///최대 4개의 팝업 화면을 표시할 수 있으니 현재 열려있는 화면을 확인하십시오.
  3547. }
  3548. } else {
  3549. activateChild(trgtWindow);
  3550. }
  3551. }
  3552. // 이전명세서 목록에서 선택한 청구키의 명세서를 이미 열려있는 Popup 화면으로 조회시에 호출
  3553. // 처음 Popup화면을 열때는 ev:event="xforms-ready"에서 처리를 하고, 이후에 창이 열려있는 경우 이 메소드를 호출한다.
  3554. function fActivatePreDocuWindow() {
  3555. var rslt = fInitSrchData(); // 화면을 초기화한다.
  3556. if (rslt == false) { // 수정사항 저장이 완료되지 않아 초기화할 수 없는 경우
  3557. return false;
  3558. }
  3559. var openerClamym = opener.model.getValue("/root/hidden/smpid20500/cond/clamym");
  3560. var openerClamdg = opener.model.getValue("/root/hidden/smpid20500/cond/clamdg");
  3561. var openerPid = opener.model.getValue("/root/hidden/smpid20500/cond/pid");
  3562. var openerPidsn = opener.model.getValue("/root/hidden/smpid20500/cond/pidsn");
  3563. var openerWorkflag = opener.model.getValue("/root/hidden/smpid20500/cond/workflag");
  3564. if (openerClamym) {
  3565. model.makeValue("/root/send/item1/clbs/clamym", openerClamym);
  3566. model.makeValue("/root/send/item1/clbs/clamdg", openerClamdg);
  3567. model.makeValue("/root/send/item1/clbs/pid", openerPid);
  3568. model.makeValue("/root/send/item1/clbs/pidsn", openerPidsn);
  3569. model.makeValue("/root/send/item1/clbs/ioflag", "O");
  3570. model.makeValue("/root/send/item1/clbs/workflag", openerWorkflag);
  3571. fCheckAuth(); // 화면 권한을 설정한다.
  3572. submit("TRPID20301"); // 2008-08-01 김상진 : 입원으로 통합.
  3573. fSetAftJudgTrgtManSrchData();
  3574. } else {
  3575. fCheckAuth(); // 화면 권한을 설정한다.
  3576. }
  3577. }
  3578. // 기존 조회 내역 중 수정 사항이 있는 경우 저장할 것인지를 물어본다.
  3579. function fCheckChangeSave() {
  3580. var initclbs = model.getValue("/root/hidden/item1/initclbs/clbs/clamym");
  3581. var isChange = false;
  3582. var cldiupdtdata = ""; // 상병 Grid 변경
  3583. if (initclbs) {
  3584. var clbsupdatadata = false;
  3585. if (model.getValue("/root/hidden/item1/initclbs/clbs/patrrgstno") != model.getValue("/root/main/item1/clbs/patrrgstno")) {
  3586. clbsupdatadata = true;
  3587. }
  3588. if (model.getValue("/root/hidden/item1/initclbs/clbs/suppkindcd") != model.getValue("/root/main/item1/clbs/suppkindcd")) {
  3589. clbsupdatadata = true;
  3590. }
  3591. else if (model.getValue("/root/hidden/item1/initclbs/clbs/ordfildcd") != model.getValue("/root/main/item1/clbs/ordfildcd")) {
  3592. clbsupdatadata = true;
  3593. }
  3594. else if (model.getValue("/root/hidden/item1/initclbs/clbs/orddeptcd") != model.getValue("/root/main/item1/clbs/orddeptcd")) {
  3595. clbsupdatadata = true;
  3596. }
  3597. else if (model.getValue("/root/hidden/item1/initclbs/clbs/orddrid") != model.getValue("/root/main/item1/clbs/orddrid")) {
  3598. clbsupdatadata = true;
  3599. }
  3600. else if (model.getValue("/root/hidden/item1/initclbs/clbs/arvpathcd") != model.getValue("/root/main/item1/clbs/arvpathcd")) {
  3601. clbsupdatadata = true;
  3602. }
  3603. else if (model.getValue("/root/hidden/item1/initclbs/clbs/inpathcd") != model.getValue("/root/main/item1/clbs/inpathcd")) {
  3604. clbsupdatadata = true;
  3605. }
  3606. else if (model.getValue("/root/hidden/item1/initclbs/clbs/ordrsltcd") != model.getValue("/root/main/item1/clbs/ordrsltcd")) {
  3607. clbsupdatadata = true;
  3608. }
  3609. else if (model.getValue("/root/hidden/item1/initclbs/clbs/insuno") != model.getValue("/root/main/item1/clbs/insuno")) {
  3610. clbsupdatadata = true;
  3611. }
  3612. else if (model.getValue("/root/hidden/item1/initclbs/clbs/certno") != model.getValue("/root/main/item1/clbs/certno")) {
  3613. clbsupdatadata = true;
  3614. }
  3615. else if (model.getValue("/root/hidden/item1/initmemo/memo/judgmemo") != model.getValue("/root/main/item1/memo/judgmemo")) {
  3616. clbsupdatadata = true;
  3617. }
  3618. else if (model.getValue("/root/hidden/item1/initmemo/memo/edimemo") != model.getValue("/root/main/item1/memo/edimemo")) {
  3619. clbsupdatadata = true;
  3620. }
  3621. if (clbsupdatadata == false) {
  3622. var clodupdtdata = getGridUpdateData(grd_clodhist); // (tfHelper.js) 그리드 업데이트 데이터 반환, 업데이트 정보가 없을경우 "" 반환
  3623. var clopupdtdata = getGridUpdateData(grd_oprcphist);
  3624. if (clodupdtdata || clopupdtdata) { // 처방, 원외처방이 수정된 경우
  3625. isChange = true;
  3626. } else {
  3627. // 특정내역
  3628. for (var i = 1; i < grd_clsphist.rows; i++) {
  3629. var rowstatus = grd_clsphist.rowstatus(i);
  3630. var spclcd = model.getValue("/root/main/list3/clsp["+ i +"]/spclcd");
  3631. var spclspec = model.getValue("/root/main/list3/clsp["+ i +"]/spclspec");
  3632. // 특정코드과 특정내역이 입력되지 않은 경우
  3633. if (rowstatus != 4 && spclcd == "" && spclspec == "") {
  3634. // 줄을 삭제한다.
  3635. grd_clsphist.deleteRow(i, false);
  3636. i--;
  3637. }
  3638. }
  3639. var clspupdtdata = getGridUpdateData(grd_clsphist);
  3640. if (clspupdtdata) {
  3641. isChange = true;
  3642. } else {
  3643. // 상병
  3644. for (var i = 1; i < grd_cldihist.rows; i++) {
  3645. var rowstatus = grd_cldihist.rowstatus(i);
  3646. var diagcd = model.getValue("/root/main/list1/cldi["+ i +"]/diagcd");
  3647. // 상병코드와 진료개시일이 입력되지 않은 경우
  3648. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  3649. if (diagcd == "") {
  3650. // 줄을 삭제한다.
  3651. grd_cldihist.deleteRow(i, false);
  3652. i--;
  3653. }
  3654. }
  3655. }
  3656. // 상병의 경우 기본적으로 추가된 줄을 삭제한 후 체크한다.
  3657. cldiupdtdata = getGridUpdateData(grd_cldihist); // (tfHelper.js) 그리드 업데이트 데이터 반환, 업데이트 정보가 없을경우 "" 반환
  3658. if (cldiupdtdata) {
  3659. isChange = true;
  3660. }
  3661. }
  3662. }
  3663. } else {
  3664. isChange = true;
  3665. }
  3666. }
  3667. if (isChange) {
  3668. var ans = messageBox("수정사항이 있습니다. 저장", "S001"); ///수정사항이 있습니다. 저장하시려면 예(Yes)\n아니면 아니오(No)
  3669. if (ans == 6) { // 6: yes
  3670. var rslt = fSaveOutAftJudg("B"); // 저장
  3671. if (rslt != "true") {
  3672. return false;
  3673. }
  3674. }
  3675. else if (ans == 2) { // 6: yes, 7:no, 2:cancel
  3676. if (grd_clsphist.rows == 1) {
  3677. fSpclGridInsertRow(); // 특정내역 줄추가
  3678. }
  3679. if (cldiupdtdata) { // 상병 Grid가 변경된 경우
  3680. }
  3681. return false;
  3682. }
  3683. } else {
  3684. }
  3685. return true;
  3686. }
  3687. //----------------------------------------
  3688. // 1) 심사대상자 조회 Popup을 호출하기 전
  3689. // 2) 이전, 이후 대상자를 조회하기 전
  3690. //---------------------------------------
  3691. /*
  3692. 1.저장버튼 클릭 fGetInAftJudgMngt -> fInitSrchData
  3693. 2.이전,다음명세서 버튼클릭 fGetInAftJudgMngt -> fSaveInAftJudg -> fInitSrchData
  3694. 3.완료,미심,보류,삭제 버튼클릭 fGetInAftJudgMngt -> fSaveInAftJudg -> fInitSrchData
  3695. 4.이전명세서 더블클릭시 화면 떠있는 경우 fActivatePreDocuWindow -> fInitSrchData
  3696. 5.심사전명세서 클릭 fActivatePreDocuWindow -> fInitSrchData
  3697. 6.등록번호 엔터 fInitSrchData
  3698. 7.등록번호 value-changed fInitSrchData
  3699. 8.환자조회 버튼클릭 fInitSrchData
  3700. 9.종료시 fInitSrchData
  3701. 심사중해제해야하는 경우!!
  3702. 수정전체크해야하는 경우!!
  3703. /root/hidden/changecheckyn
  3704. 6.등록번호 엔터
  3705. 7.등록번호 value-changed
  3706. 8.환자조회버튼 클릭
  3707. 9.종료시
  3708. 2.이전,다음명세서버튼 클릭
  3709. */
  3710. function fInitSrchData() {
  3711. var clamym = model.getValue("/root/main/item1/clbs/clamym");
  3712. var clamdg = model.getValue("/root/main/item1/clbs/clamdg");
  3713. var pid = model.getValue("/root/main/item1/clbs/pid");
  3714. var pidsn = model.getValue("/root/main/item1/clbs/pidsn");
  3715. if (clamym) {
  3716. var judgendyn = model.getValue("/root/main/item1/clbs/judgendyn");
  3717. if (judgendyn == "B") {
  3718. var clamendyn = model.getValue("/root/main/item1/clbs/clamendyn");
  3719. var lockyn = model.getValue("/root/main/item1/clbs/lockyn");
  3720. if (lockyn == "N") { // 청구완료여부 A:샘생성전
  3721. if (btn_save.disabled == false || btn_unjudg.disabled == false) {
  3722. // 기존 조회 내역 중 수정 사항이 있는 경우 저장할 것인지를 물어본다.
  3723. var rslt = fCheckChangeSave();
  3724. if (rslt == false) { // 저장이 완료되지 않아 초기화할 수 없는 경우
  3725. return false;
  3726. }
  3727. else {
  3728. // 동일환자 저장 후 재조회가 아닌경우에만 '심사중' 상태 해제를 한다.
  3729. if (model.getValue("/root/hidden/reselect") == "N") {
  3730. // "심사중" 상태를 해제한다. 원래 심사상태로 변경한다.
  3731. var judgendyn = "";
  3732. if (model.getValue("/root/hidden/orgjudgendyn") == "") {
  3733. judgendyn = "A";
  3734. } else {
  3735. judgendyn = model.getValue("/root/hidden/orgjudgendyn");
  3736. }
  3737. model.removeNodeset("/root/send/item4");
  3738. model.makeValue("/root/send/item4/endclbs/clamym", clamym);
  3739. model.makeValue("/root/send/item4/endclbs/clamdg", clamdg);
  3740. model.makeValue("/root/send/item4/endclbs/pid", pid);
  3741. model.makeValue("/root/send/item4/endclbs/pidsn", pidsn);
  3742. model.makeValue("/root/send/item4/endclbs/judgendyn", judgendyn);
  3743. submit("TXPID20302");
  3744. // 대상자조회 심사상태 변경
  3745. fSetJudgSaveState(judgendyn);
  3746. }
  3747. }
  3748. }
  3749. }
  3750. }
  3751. }
  3752. // 상병, 특정내역, 처방 Group의 컨트롤 크기를 초기화한다.
  3753. fInitUIControlSize();
  3754. // 대상자 화면과 이전명세서 화면을 제외한 자식창을 닫는다.
  3755. var judgWindow1 = getChildWindow("SMPID20400"); // SMPID20400_외래사후심사대상자조회.xrw
  3756. var judgWindow2 = getChildWindow("SMPID20500"); // SMPID20500_외래사후심사관리.xrw
  3757. var judgWindow3 = getChildWindow("SMPID20300"); // SMPID20300_입원사후심사관리.xrw
  3758. var judgWindow4 = getChildWindow("SPPIZ00600ML"); // SPPIZ00600_상병및처방별치식.xrw
  3759. if (judgWindow1 == null && judgWindow2 == null && judgWindow3 == null && judgWindow4 == null) {
  3760. var childCnt = window.children.length;
  3761. for( var i = childCnt; i > 0; i-- ) {
  3762. var child = window.children.item(i-1);
  3763. if (window.children.item(i-1).window.type != "modal") {
  3764. window.children.item(i-1).close();
  3765. }
  3766. }
  3767. } else{
  3768. var childCnt = window.children.length;
  3769. for( var i = childCnt; i > 0; i-- ) {
  3770. var isClose = "true";
  3771. var child = window.children.item(i-1);
  3772. var curWinID = child.model.getValue("/root/properties/uid/myself");
  3773. if (judgWindow1 != null) {
  3774. var judgWinID = judgWindow1.model.getValue("/root/properties/uid/myself");
  3775. if (curWinID == judgWinID) {
  3776. isClose = "false";
  3777. }
  3778. }
  3779. if (judgWindow2 != null) {
  3780. var judgWinID = judgWindow2.model.getValue("/root/properties/uid/myself");
  3781. if (curWinID == judgWinID) {
  3782. isClose = "false";
  3783. }
  3784. }
  3785. if (judgWindow3 != null) {
  3786. var judgWinID = judgWindow3.model.getValue("/root/properties/uid/myself");
  3787. if (curWinID == judgWinID) {
  3788. isClose = "false";
  3789. }
  3790. }
  3791. if (judgWindow4 != null) {
  3792. var judgWinID = judgWindow4.model.getValue("/root/properties/uid/myself");
  3793. if (curWinID == judgWinID) {
  3794. isClose = "false";
  3795. }
  3796. }
  3797. if (isClose != "false") {
  3798. if (window.children.item(i-1).window.type != "modal") {
  3799. window.children.item(i-1).close();
  3800. }
  3801. }
  3802. }
  3803. }
  3804. delPatientInfos(); // (common.js) 상단의 환자정보 삭제
  3805. model.resetInstanceNode("/root/main/item1/clbs");
  3806. model.resetInstanceNode("/root/main/item1/memo");
  3807. model.resetInstanceNode("/root/main/item2/incd");
  3808. model.removeNodeset("/root/main/item3/supp");
  3809. model.removeNodeset("/root/main/list1/cldi");
  3810. model.removeNodeset("/root/main/list2/clod");
  3811. model.removeNodeset("/root/main/list3/clsp");
  3812. model.resetInstanceNode("/root/main/item5/mech");
  3813. model.removeNodeset("/root/main/list4/clbs");
  3814. model.removeNodeset("/root/main/list5/clod");
  3815. model.removeNodeset("/root/main/list6/delclod");
  3816. model.removeNodeset("/root/main/list7/clop");
  3817. model.removeNodeset("/root/main/ordddlist/list");
  3818. model.removeNodeset("/root/hidden/rarecancermsg"); // 중증 및 희귀번호 초기화 20091123 박창원
  3819. cmb_rarecancermsg.visible = false;
  3820. // 20100208 주석처리 ( fGetOutAftJudgMngt 내에서 2번 중복 호출됨 fInitSrchData, fSetAftJudgTrgtManSrchData )
  3821. //fSetJudgStatBtnAuth(); // 심사완료여부 상태에 따라 "저장 / 재계산 / 완료 / 미심 / 보류 / 삭제" Btn 권한을 설정한다.
  3822. /* 2008-10-05 주석처리
  3823. // 수술(유) Btn
  3824. btn_opyn.attribute("class") = "btn2_letter4"; // 표준에서 정한 기본 버튼으로 설정
  3825. btn_opyn.visible = true;
  3826. // 중증질환 Btn
  3827. btn_esscdiag.attribute("left") = "215px";
  3828. */
  3829. model.removeNodeset("/root/send/item7"); // 원외처방 특정내역
  3830. model.resetInstanceNode("/root/send");
  3831. model.resetInstanceNode("/root/hidden/item1/clbs"); // hidden을 모두 초기화하면 children의 wid 삭제됨
  3832. model.resetInstanceNode("/root/hidden/item1/initclbs/clbs");
  3833. model.resetInstanceNode("/root/hidden/item1/initmemo/memo");
  3834. model.resetInstanceNode("/root/hidden/list1");
  3835. model.resetInstanceNode("/root/hidden/list2/cloditem1");
  3836. model.resetInstanceNode("/root/hidden/list3");
  3837. model.resetInstanceNode("/root/hidden/item5/clod");
  3838. model.removeNodeset("/root/hidden/list4/clbs");
  3839. model.resetInstanceNode("/root/hidden/list7/clop");
  3840. model.resetInstanceNode("/root/hidden/smpic00200/judgsrch"); // SMPIC00200_수가조회
  3841. model.resetInstanceNode("/root/hidden/smpic00200/rslt");
  3842. model.resetInstanceNode("/root/hidden/smpid20400/cond"); // SMPID20400_외래사후심사대상자조회
  3843. model.resetInstanceNode("/root/hidden/smpid20400/rslt");
  3844. model.resetInstanceNode("/root/hidden/smpid20300/cond"); // SMPID20300_입원사후심사관리
  3845. model.resetInstanceNode("/root/hidden/smpid20500/cond"); // SMPID20500_외래사후심사관리
  3846. model.resetInstanceNode("/root/hidden/sppid21300/cond"); // SPPID21300_심사전후차액조회
  3847. model.resetInstanceNode("/root/hidden/sppid21400/cond"); // SPPID21400_외래미시행처방조회
  3848. model.resetInstanceNode("/root/hidden/smpiz00100/cond"); // SMPIZ00100_외래입원상병이력조회
  3849. model.resetInstanceNode("/root/hidden/smpiz00100/rslt");
  3850. model.resetInstanceNode("/root/hidden/sppiz00200/cond/clsp"); // SPPIZ00200_첨부물자료관리
  3851. model.resetInstanceNode("/root/hidden/sppiz00200/rslt/clsp");
  3852. model.resetInstanceNode("/root/hidden/sppiz00300/rslt"); // SPPIZ00300_메모이력조회
  3853. model.resetInstanceNode("/root/hidden/sppiz00400/cond"); // SPPIZ00400_상병코드조회
  3854. model.resetInstanceNode("/root/hidden/sppiz00400/rslt");
  3855. model.resetInstanceNode("/root/hidden/sppiz00500/cond"); // SPPIZ00500_특정내역상세관리
  3856. model.resetInstanceNode("/root/hidden/sppiz00500/rslt");
  3857. model.resetInstanceNode("/root/hidden/sppiz00600/cond"); // SPPIZ00600_상병및처방별치식
  3858. model.resetInstanceNode("/root/hidden/sppiz00600/rslt");
  3859. model.resetInstanceNode("/root/hidden/sppiz00700/cond"); // SPPIZ00700_심사Comment조회
  3860. model.resetInstanceNode("/root/hidden/sppiz00700/rslt");
  3861. model.resetInstanceNode("/root/hidden/sppiz00800/cond"); // SPPIZ00800_산정코드조회
  3862. model.resetInstanceNode("/root/hidden/sppiz00800/rslt");
  3863. model.resetInstanceNode("/root/hidden/sppiz01000/cond"); // SPPIZ01000_심사수정사유관리
  3864. model.resetInstanceNode("/root/hidden/sppiz01000/rslt");
  3865. model.resetInstanceNode("/root/hidden/sppiz01100/cond"); // SPPIZ01100_확인코드조회
  3866. model.resetInstanceNode("/root/hidden/sppiz01100/rslt");
  3867. model.resetInstanceNode("/root/hidden/sppiz01300/cond"); // SPPIZ01300_수술정보조회
  3868. model.resetInstanceNode("/root/hidden/sppiz01400/cond"); // SPPIZ01400_특정내역코드상세조회
  3869. model.resetInstanceNode("/root/hidden/sppiz01400/rslt");
  3870. model.resetInstanceNode("/root/hidden/smpmc01300/cond"); // SMPMC01300_특이환자관리
  3871. model.resetInstanceNode("/root/hidden/smpmc01300/rslt");
  3872. model.resetInstanceNode("/root/hidden/sppmc02500/cond"); // SPPMC02500_환자조회
  3873. model.resetInstanceNode("/root/hidden/sppid22800/cond"); // SPPID22800_재청구차액발생사유관리
  3874. model.resetInstanceNode("/root/hidden/sppid22800/rslt");
  3875. model.resetInstanceNode("/root/hidden/sppid23100/cond"); // SPPID23100_급비변경관리
  3876. model.resetInstanceNode("/root/hidden/sppid23100/rslt");
  3877. //---------------------------------------------------------------------------
  3878. // 조회 조건의 초기값을 설정한다.
  3879. //---------------------------------------------------------------------------
  3880. // 특정내역Grid용 필터링 Radio 초기값
  3881. model.setValue("/root/hidden/list3/selectedUnitFlag", "-");
  3882. // 처방 조회부 항목구분 Radio item의 굵은 표시를 취소한다.
  3883. /*
  3884. var itemRadioList = instance1.selectSingleNode("/root/hidden/list2/cloditem1");
  3885. var itemNode = itemRadioList.childNodes;
  3886. for (var i = 0; i < itemNode.length; i++) {
  3887. rdo_item1.item(i).attribute("font-weight") = "normal";
  3888. }
  3889. */
  3890. // 처방Grid 배경색을 초기화한다.
  3891. grd_clodhist.rebuildStyle();
  3892. grd_cldihist.rebuildStyle();
  3893. // 처방Grid 필터용 조회조건을 초기화한다.
  3894. fInitOrderFilter();
  3895. // 원외처방Grid - 항목구분 (기본값 : 급여)
  3896. model.setValue("/root/hidden/list7/clop/selectedRdoPay", "0");
  3897. rdo_cloppayflag.refresh()
  3898. cmb_orddeptcd.choices.itemset.attribute("nodeset") = "/root/init/orddeptcd2/orddeptcdlist";
  3899. cmb_orddrid.choices.itemset.attribute("nodeset") = "/root/init/orddrid2/orddridlist";
  3900. //삭제상세사유 group을 초기화시킨다. by 박영우 2011.06.07
  3901. grp_desc.visible = false;
  3902. model.makeValue("/root/main/item1/clbs/adjtresndesc", "");
  3903. return true;
  3904. }
  3905. // 상병, 특정내역, 처방 Group의 컨트롤 크기를 초기화한다.
  3906. function fInitUIControlSize() {
  3907. cap_grptemp.visible = false;
  3908. grp_predoculist.visible = false; // 이전 명세서 목록용 Group
  3909. grp_delclodlist.visible = false; // 처방 휴지통 Group
  3910. grp_delorderlist.visible = false; // 심사변경 목록 Group
  3911. case_spclspec.selected = false;
  3912. case_judgrmemo.selected = false;
  3913. case_ediclammemo.selected = false;
  3914. //fCutSwitchSize();
  3915. grd_oprcphist.mergecells = "byrestriccol"; // 원외처방 merge
  3916. }
  3917. // 처방조회부, 처방 Grid용 Group의 컨트롤 크기를 설정한다.
  3918. function fSetOrderControlSize() {
  3919. var lb_prcpmaxyn = false;
  3920. // 처방그리드
  3921. if (cap_clod.attribute("top") == "230") {
  3922. grp_cldihist.attribute("top") = "30"; // 상병창
  3923. lb_prcpmaxyn = true;
  3924. grp_clsphist.attribute("top") = "30"; // 특정내역창
  3925. cap_clod.attribute("top") = "158";
  3926. } else { // 확대된 경우임
  3927. grp_cldihist.attribute("top") = "102"; // 상병창
  3928. // grp_cldihist.attribute("height") = "1614"; // KNUH 20110519 최원돈
  3929. grp_clsphist.attribute("top") = "102"; // 특정내역창
  3930. cap_clod.attribute("top") = "230";
  3931. }
  3932. var icap_top = parseInt(cap_clod.attribute("top"));
  3933. ln_clodhist.attribute("y1") = icap_top + 16;
  3934. ln_clodhist.attribute("y2") = icap_top + 16;
  3935. grd_clodhist.attribute("top") = icap_top + 20;
  3936. grp_ordsrch.attribute("top") = icap_top - 65; // 조회부 그룹
  3937. grp_calendar.attribute("top") = icap_top + 41; // 진료일자달력 그룹
  3938. // 20091210 김용민 원외처방 그리드 사이즈 조정
  3939. //if ( gClopSize == "FULL" ) {
  3940. if ( gClopSize == "MAX" ) {
  3941. if (lb_prcpmaxyn)
  3942. {
  3943. grd_clodhist.attribute("height") = "460";
  3944. }
  3945. else
  3946. {
  3947. grd_clodhist.attribute("height") = "90"; // 처방Grid 타이틀 32 + data 2줄 23*2 + 스크롤 18 + 2 = 98
  3948. }
  3949. grp_clop.attribute("top") = parseInt(cap_clod.attribute("top"))
  3950. + parseInt(grd_clodhist.attribute("height")) + 25 ; // 123 = 처방 Grid 98 + 처방 title 부분간격 25
  3951. grp_clop.attribute("height") = parseInt(grp_clodhist.attribute("height"))
  3952. - parseInt(grd_clodhist.attribute("top"))
  3953. - parseInt(grd_clodhist.attribute("height")) - 6;
  3954. grd_oprcphist.attribute("height") = parseInt(grp_clop.attribute("height")) - 25;
  3955. } else {
  3956. if (lb_prcpmaxyn)
  3957. {
  3958. grd_clodhist.attribute("height") = "460";
  3959. }
  3960. else
  3961. {
  3962. grd_clodhist.attribute("height") = parseInt(grp_clodhist.attribute("height"))
  3963. - parseInt(cap_clod.attribute("top"))
  3964. - parseInt(grp_clop.attribute("height")) - 26;
  3965. }
  3966. }
  3967. }
  3968. // 더블클릭시 처방조회부, 처방 Grid용 Group의 컨트롤 크기를 설정한다. 20110616 박황백 추가
  3969. function fSetOrderControlSize2() {
  3970. var lb_prcpmaxyn = false;
  3971. // 처방그리드
  3972. if (cap_clod.attribute("top") == "230") {
  3973. grp_cldihist.attribute("top") = "30"; // 상병창
  3974. lb_prcpmaxyn = true;
  3975. grp_clsphist.attribute("top") = "30"; // 특정내역창
  3976. cap_clod.attribute("top") = "158";
  3977. } else { // 확대된 경우임
  3978. grp_cldihist.attribute("top") = "102"; // 상병창
  3979. // grp_cldihist.attribute("height") = "1614"; // KNUH 20110519 최원돈
  3980. grp_clsphist.attribute("top") = "102"; // 특정내역창
  3981. cap_clod.attribute("top") = "230";
  3982. }
  3983. var icap_top = parseInt(cap_clod.attribute("top"));
  3984. ln_clodhist.attribute("y1") = icap_top + 16;
  3985. ln_clodhist.attribute("y2") = icap_top + 16;
  3986. grd_clodhist.attribute("top") = icap_top + 20;
  3987. grp_ordsrch.attribute("top") = icap_top - 65; // 조회부 그룹
  3988. grp_calendar.attribute("top") = icap_top + 41; // 진료일자달력 그룹
  3989. // 20091210 김용민 원외처방 그리드 사이즈 조정
  3990. //if ( gClopSize == "FULL" ) {
  3991. if ( gClopSize == "MAX" ) {
  3992. if (lb_prcpmaxyn)
  3993. {
  3994. // grd_clodhist.attribute("height") = "460";
  3995. grd_clodhist.attribute("height") = "360";
  3996. // 20110615 박황백 원외처방 그리드 사이즈 조정 - 심사팀요청
  3997. grp_clop.attribute("top") = "541";
  3998. grp_clop.attribute("height") = "96";
  3999. grd_oprcphist.attribute("height") = parseInt(grp_clop.attribute("height")) - 25;
  4000. }
  4001. else
  4002. {
  4003. grd_clodhist.attribute("height") = "90"; // 처방Grid 타이틀 32 + data 2줄 23*2 + 스크롤 18 + 2 = 98
  4004. }
  4005. grp_clop.attribute("top") = parseInt(cap_clod.attribute("top"))
  4006. + parseInt(grd_clodhist.attribute("height")) + 25 ; // 123 = 처방 Grid 98 + 처방 title 부분간격 25
  4007. grp_clop.attribute("height") = parseInt(grp_clodhist.attribute("height"))
  4008. - parseInt(grd_clodhist.attribute("top"))
  4009. - parseInt(grd_clodhist.attribute("height")) - 6;
  4010. grd_oprcphist.attribute("height") = parseInt(grp_clop.attribute("height")) - 25;
  4011. } else {
  4012. if (lb_prcpmaxyn)
  4013. {
  4014. //grd_clodhist.attribute("height") = "460";
  4015. grd_clodhist.attribute("height") = "360";
  4016. grp_clop.attribute("top") = "541";
  4017. grp_clop.attribute("height") = "96";
  4018. grd_oprcphist.attribute("height") = parseInt(grp_clop.attribute("height")) - 25;
  4019. grd_clodhist.attribute("height") = parseInt(grp_clodhist.attribute("height"))
  4020. - parseInt(grd_clodhist.attribute("top"))
  4021. - parseInt(grp_clop.attribute("height")) - 6;
  4022. }
  4023. else
  4024. {
  4025. fClopSizeChange("AUTO");
  4026. grd_clodhist.attribute("height") = parseInt(grp_clodhist.attribute("height"))
  4027. - parseInt(cap_clod.attribute("top"))
  4028. - parseInt(grp_clop.attribute("height")) - 26;
  4029. }
  4030. }
  4031. }
  4032. // 처방조회부, 처방 Grid용 Group의 컨트롤 크기를 설정한다. // 20100408 백업
  4033. function fSetOrderControlSize_bakup() {
  4034. var otherGrp = true;
  4035. // 처방그리드
  4036. if (cap_clod.attribute("top") == "230") {
  4037. otherGrp = false;
  4038. cap_clod.attribute("top") = "60";
  4039. } else { // 확대된 경우임
  4040. otherGrp = true;
  4041. cap_clod.attribute("top") = "230";
  4042. //grd_clodhist.attribute("height") = "260";
  4043. }
  4044. //messageBox(grd_clodhist.attribute("top"),"");
  4045. // 20091210 김용민 원외처방 그리드 사이즈 조정
  4046. if ( gClopSize == "FULL" ) {
  4047. grd_clodhist.attribute("height") = "90"; // 처방Grid 타이틀 32 + data 2줄 23*2 + 스크롤 18 + 2 = 98
  4048. grp_clop.attribute("top") = parseInt(cap_clod.attribute("top")) + 125 ; // 123 = 처방 Grid 98 + 처방 title 부분간격 25
  4049. grp_clop.attribute("height") = parseInt(grp_clodhist.attribute("height"))
  4050. - parseInt(grp_clop.attribute("top"));
  4051. grd_oprcphist.attribute("height") = parseInt(grp_clop.attribute("height")) - 25;
  4052. } else {
  4053. grd_clodhist.attribute("height") = parseInt(grp_clodhist.attribute("height"))
  4054. - parseInt(cap_clod.attribute("top"))
  4055. - parseInt(grp_clop.attribute("height")) - 30;
  4056. }
  4057. /*
  4058. if (grp_clop.attribute("top") == "541" || grp_clop.attribute("top") == "541px") { // 원외처방 Grid 축소된 초기 상태임
  4059. if (cap_clod.attribute("top") == "228") { // 처방 title 초기상태
  4060. grd_clodhist.attribute("height") = "270"; // 처방 Grid를 축소한다.
  4061. } else {
  4062. grd_clodhist.attribute("height") = "425"; // 처방 Grid를 확대한다.
  4063. }
  4064. } else {
  4065. grd_clodhist.attribute("height") = "75"; // 처방Grid 타이틀 32 + data 2줄 23*2 + 스크롤 18 + 2 = 98
  4066. grp_clop.attribute("top") = parseInt(cap_clod.attribute("top")) - 5 + 123; // 123 = 처방 Grid 98 + 처방 title 부분간격 25
  4067. if (cap_clod.attribute("top") == "228") { // 처방 title 초기상태
  4068. grp_clop.attribute("height") = 290 + 50 + 71 - 123;
  4069. } else {
  4070. grp_clop.attribute("height") = 445 + 50 + 71 - 123;
  4071. }
  4072. grd_oprcphist.attribute("height") = parseInt(grp_clop.attribute("height")) - 25;
  4073. }
  4074. */
  4075. grp_cldihist.visible = otherGrp;
  4076. grp_clsphist.visible = otherGrp;
  4077. //grp_calendar.visible = otherGrp;
  4078. var icap_top = parseInt(cap_clod.attribute("top"));
  4079. ln_clodhist.attribute("y1") = icap_top + 24;
  4080. ln_clodhist.attribute("y2") = icap_top + 24;
  4081. grd_clodhist.attribute("top") = icap_top + 28;
  4082. btn_delordlist.attribute("top") = icap_top - 18; // 처방휴지통 버튼
  4083. btn_delordsrch.attribute("top") = icap_top - 18; // 심사변경 버튼
  4084. btn_bfjudgdocu.attribute("top") = icap_top - 18; // 심사전명세서 버튼
  4085. cmb_adjtresncd.attribute("top") = icap_top - 18; // 심사수정사유 콤보
  4086. cmb_docudelresncd.attribute("top") = icap_top - 18; // 명세서삭제사유 콤보
  4087. cmb_abdresncd.attribute("top") = icap_top - 39; // 반송부제기사유 콤보
  4088. grp_ordsrch.attribute("top") = icap_top - 57; // 조회부 그룹
  4089. grp_calendar.attribute("top") = icap_top + 49; // 진료일자달력 그룹
  4090. }
  4091. // 이전명세서, 처방휴지통, 삭제처방 Group의 컨트롤 크기를 설정한다.
  4092. function fSetDelOrdPreDocuSize() {
  4093. var icap_top = parseInt(cap_clod.attribute("top"));
  4094. var igrd_hei = parseInt(grd_clodhist.attribute("height"));
  4095. //cap_grptemp.attribute("top") = icap_top;
  4096. // 이전 명세서 목록
  4097. if (grp_predoculist.visible == true) {
  4098. cap_grptemp.text = "이전 명세서 목록";
  4099. cap_grptemp.visible = true;
  4100. grd_clodhist.attribute("width") = "500";
  4101. ln_clodhist.attribute("x2") = "560";
  4102. grp_predoculist.attribute("top") = icap_top + 20;
  4103. grp_predoculist.attribute("height") = igrd_hei;
  4104. //grd_predocu.attribute("height") = igrd_hei - 52;
  4105. //btn_closepredoculist.attribute("top") = parseInt(grp_predoculist.attribute("height")) - 32;
  4106. //btn_readpopup.attribute("top") = parseInt(grp_predoculist.attribute("height")) - 32;
  4107. //btn_judgmode.attribute("top") = parseInt(grp_predoculist.attribute("height")) - 32;
  4108. }
  4109. // 처방 휴지통
  4110. if (grp_delclodlist.visible == true) {
  4111. cap_grptemp.text = "처방 휴지통";
  4112. cap_grptemp.visible = true;
  4113. grd_clodhist.attribute("width") = "630";
  4114. ln_clodhist.attribute("x2") = "630";
  4115. grp_delclodlist.attribute("top") = icap_top + 15;
  4116. grp_delclodlist.attribute("height") = igrd_hei;
  4117. grd_delclod.attribute("height") = igrd_hei - 28;
  4118. btn_closedelclodlist.attribute("top") = parseInt(grp_delclodlist.attribute("height")) - 23;
  4119. }
  4120. // 심사변경 목록
  4121. if (grp_delorderlist.visible == true) {
  4122. cap_grptemp.text = "심사변경 목록";
  4123. cap_grptemp.visible = true;
  4124. grd_clodhist.attribute("width") = "630";
  4125. ln_clodhist.attribute("x2") = "630";
  4126. grp_delorderlist.attribute("top") = icap_top + 15;
  4127. grp_delorderlist.attribute("height") = igrd_hei;
  4128. grd_delorder.attribute("height") = igrd_hei - 28;
  4129. btn_closedelorderlist.attribute("top") = parseInt(grp_delorderlist.attribute("height")) - 23;
  4130. }
  4131. // 특정내역 / 심사자메모 / EDI메모 창이 확대된 경우 겹쳐져 보이므로 창을 작게 한다.
  4132. //fCutSwitchSize();
  4133. }
  4134. // 이전명세서 목록 조회
  4135. function fSrchPreDocuList() {
  4136. var clamym = model.getValue("/root/main/item1/clbs/clamym");
  4137. var clamdg = model.getValue("/root/main/item1/clbs/clamdg");
  4138. var pid = model.getValue("/root/main/item1/clbs/pid");
  4139. var pidsn = model.getValue("/root/main/item1/clbs/pidsn");
  4140. // 상병 및 주석 복사 버튼 (외래이면서 동일 청구월일경우에만 활성화 시킴 - 20091127 박창원
  4141. var refterm = model.getValue("/root/send/list4/refterm");
  4142. var ioflag = model.getValue("/root/send/list4/ioflag");
  4143. if (refterm == "7" && ioflag == "O") {
  4144. btn_copydiag.disabled = false;
  4145. btn_copyedimemo.disabled= false;
  4146. btn_copydiagedimemo.disabled = false;
  4147. } else {
  4148. btn_copydiag.disabled = true;
  4149. btn_copyedimemo.disabled= true;
  4150. btn_copydiagedimemo.disabled = true;
  4151. }
  4152. if (clamym) { // 조회된 심사대상자가 있음
  4153. //model.resetInstanceNode("/root/send/list4");
  4154. var refterm = model.getValue("/root/send/list4/refterm");
  4155. if (refterm == "0") {
  4156. var fromdd = model.getValue("/root/send/list4/fromdd");
  4157. var todd = model.getValue("/root/send/list4/todd");
  4158. if (isValidDateTime(fromdd)) { // (dateHelper.js) 유효한 날짜, 시간 인지 점검
  4159. if (isValidDateTime(todd)) {
  4160. var dateDif = getDateInterval(fromdd, todd); // (dateHelper.js) 두 일자사이의 차를 일단위로 반환
  4161. if (dateDif < 0) {
  4162. messageBox("검색 시작일자가 종료일자 보다 이후", "E008"); ///검색 시작일자가 종료일자 보다 이후 입니다.
  4163. return;
  4164. }
  4165. } else {
  4166. return;
  4167. }
  4168. } else {
  4169. return;
  4170. }
  4171. }
  4172. model.setValue("/root/send/list4/pid", model.getValue("/root/main/item1/clbs/pid"));
  4173. model.setValue("/root/send/list4/clamym", model.getValue("/root/main/item1/clbs/clamym"));
  4174. if (model.getValue("/root/send/list4/allordfild") != "Y") {
  4175. model.setValue("/root/send/list4/ordfildcd", model.getValue("/root/main/item1/clbs/ordfildcd"));
  4176. } else {
  4177. model.resetInstanceNode("/root/send/list4/ordfildcd");
  4178. }
  4179. submit("TRPID20304");
  4180. model.copyNode("/root/hidden/list4", "/root/main/list4");
  4181. grd_predocu.rebuildStyle();
  4182. for (var i = 1; i < grd_predocu.rows; i++) {
  4183. if ((clamym == model.getValue("/root/main/list4/clbs["+ i +"]/clamym")) &&
  4184. (clamdg == model.getValue("/root/main/list4/clbs["+ i +"]/clamdg")) &&
  4185. (pid == model.getValue("/root/main/list4/clbs["+ i +"]/pid")) &&
  4186. (pidsn == model.getValue("/root/main/list4/clbs["+ i +"]/pidsn"))) {
  4187. grd_predocu.rowStyle(i, "data", "background-color") = "#4d4d4d"; // common.css (input)
  4188. grd_predocu.rowStyle(i, "data", "background-image") = "../../../com/commonweb/images/grid_bg.gif";
  4189. grd_predocu.rowStyle(i, "data", "background-repeat") = "repeat-x";
  4190. i = grd_predocu.rows;
  4191. }
  4192. }
  4193. }
  4194. }
  4195. // 이전월/년, 다음월/년에 해당하는 일자를 표시한다.
  4196. function setCalendar(dateObj) {
  4197. var firstDay = dateObj.getDateFormat("YYYY") + dateObj.getDateFormat("MM") +"01";
  4198. dateObj = firstDay.toDate();
  4199. // 그리드 초기화
  4200. model.removeNodeset("/root/hidden/calendar/weeklist/list");
  4201. grd_calendar.addRow(false);
  4202. grd_calendar.rebuild();
  4203. grd_calendar.rowhidden(0) = true;
  4204. var startDay = dateObj.getDay(); // 요일
  4205. var days = dateObj.getMonthDay(); // 마지막 일
  4206. var colIndex = startDay;
  4207. for( var i = 1; i <= days; i++ ) {
  4208. grd_calendar.valueMatrix(1, colIndex) = i;
  4209. colIndex++;
  4210. }
  4211. for (var j = 0; j <42; j++) {
  4212. grd_calendar.colHidden(j) = false;
  4213. if (grd_calendar.valueMatrix(1, j) == "") {
  4214. grd_calendar.colHidden(j) = true;
  4215. }
  4216. }
  4217. }
  4218. // 조회된 심사대상자의 실제진료일과 그달의 진료일자를 진료달력에 표시한다.
  4219. function setOrdCalendar() {
  4220. // 진료달력을 표시한다.
  4221. var isDate = model.getValue("/root/main/item1/clbs/ordfromdd").toDate();
  4222. var YYYY = isDate.getDateFormat("YYYY");
  4223. var MM = isDate.getDateFormat("MM");
  4224. model.setValue("/root/hidden/calendar/year", YYYY);
  4225. model.setValue("/root/hidden/calendar/month", MM);
  4226. // 이전 명세서 팝업의 경우, 바뀐 날짜의 시작일자가 적용되지 않으므로 설정함
  4227. model.setValue("/root/hidden/calendar/ordddlist/fromdd", YYYY + MM + "01");
  4228. model.setValue("/root/hidden/calendar/ordddlist/todd", YYYY + MM + isDate.getMonthDay());
  4229. setOrdSrchCalendar();
  4230. }
  4231. // 이전월/년, 다음월/년에 해당하는 일자와 해당년월에 진료한 일자를 표시한다.
  4232. function setOrdSrchCalendar() {
  4233. // 진료달력을 표시한다.
  4234. var isDate = model.getValue("/root/main/item1/clbs/ordfromd").toDate();
  4235. var isDay = isDate.getDateFormat("DD");
  4236. // 이전명세서 팝업의 경우 fromdd 로 계산시 바뀐 날짜가 아님
  4237. var dateObj = model.getValue("/root/hidden/calendar/ordddlist/fromdd").toDate();
  4238. // 그리드 초기화
  4239. model.removeNodeset("/root/hidden/calendar/weeklist/list");
  4240. grd_calendar.addRow(false);
  4241. grd_calendar.rebuild();
  4242. grd_calendar.rowhidden(0) = true;
  4243. var startDay = dateObj.getDay(); // 요일
  4244. var days = dateObj.getMonthDay(); // 마지막 일
  4245. var colIndex = startDay;
  4246. for( var i = 1; i <= days; i++ ) {
  4247. grd_calendar.valueMatrix(1, colIndex) = i;
  4248. colIndex++;
  4249. }
  4250. grd_calendar.rebuildStyle();
  4251. var ordddList = instance1.selectSingleNode("/root/main/ordddlist/list");
  4252. if (ordddList != null) {
  4253. ordddList = instance1.selectSingleNode("/root/main/ordddlist");
  4254. var ordddNode = ordddList.childNodes;
  4255. for (var i = 1; i <= ordddNode.length; i++) {
  4256. var dd = parseInt(model.getValue("/root/main/ordddlist/list["+ i +"]/ordfromdd").substr(6, 2), 10);
  4257. colIndex = dd+startDay-1;
  4258. if (grd_calendar.cellStyle("background-color", 1, colIndex) == "white") {
  4259. grd_calendar.cellStyle("background-color", 1, colIndex) = "#fcd2c1"; // class="color_1" 연한핑크
  4260. }
  4261. else if (grd_calendar.cellStyle("background-color", 1, colIndex) == "#fcd2c1") {
  4262. grd_calendar.cellStyle("background-color", 1, colIndex) = "#ffe79d"; // class="color_2" 개나리색
  4263. }
  4264. else if (grd_calendar.cellStyle("background-color", 1, colIndex) == "#ffe79d") {
  4265. grd_calendar.cellStyle("background-color", 1, colIndex) = "#7be6b7"; // class="color_4"
  4266. }
  4267. else if (grd_calendar.cellStyle("background-color", 1, colIndex) == "#7be6b7") {
  4268. grd_calendar.cellStyle("background-color", 1, colIndex) = "#b9e5fb"; // class="color_5"
  4269. }
  4270. else if (grd_calendar.cellStyle("background-color", 1, colIndex) == "#b9e5fb") {
  4271. grd_calendar.cellStyle("background-color", 1, colIndex) = "#c8e67b"; // class="color_9"
  4272. }
  4273. else if (grd_calendar.cellStyle("background-color", 1, colIndex) == "#c8e67b") {
  4274. grd_calendar.cellStyle("background-color", 1, colIndex) = "#43c8f5"; // class="color_10"
  4275. }
  4276. grd_calendar.cellStyle("border-color", 1, colIndex) = "#b0b0b0"; // "#8ebcff"; // common.css (그리드의 border style)
  4277. }
  4278. }
  4279. var YYYY = model.getValue("/root/hidden/calendar/year");
  4280. var MM = model.getValue("/root/hidden/calendar/month");
  4281. var isCurMon = false;
  4282. if (isDate.getDateFormat("YYYYMM") == (YYYY+MM)) {
  4283. isCurMon = true; // 이전,이후 년월로 이동한 경우에는 일자에 굵은색 표시를 없애기 위해 체크함
  4284. }
  4285. for (var j = 0; j <42; j++) {
  4286. grd_calendar.colHidden(j) = false;
  4287. grd_calendar.cellStyle("font-weight", 1, j) = "normal";
  4288. if (grd_calendar.valueMatrix(1, j) == "") {
  4289. grd_calendar.colHidden(j) = true;
  4290. }
  4291. var dd = grd_calendar.valueMatrix(1, j);
  4292. if (isCurMon && dd) { // 현재 명세서와 동일한 년월인 경우에만 해당 일자에 굵은색으로 표시하도록 함
  4293. if (parseInt(dd, 10) == parseInt(isDay, 10)) { // indd (실제 진료일 표시)
  4294. grd_calendar.cellStyle("font-weight", 1, j) = "bold";
  4295. }
  4296. }
  4297. }
  4298. }
  4299. /**
  4300. * @group :
  4301. * @ver :
  4302. * @by : jumi
  4303. * @---------------------------------------------------
  4304. * @type : function
  4305. * @access : public
  4306. * @desc : 등록번호를 입력하고 Enter 키를 누르면 외래사후심사대상자 조회 Popup으로 등록번호를 전달하고 해당 환자를 조회하여 보여준다.
  4307. * @param :
  4308. * @return :
  4309. * @---------------------------------------------------
  4310. */
  4311. function fGetOutAftJudgTrgtManPidSrch() {
  4312. var trgtManWindow = getChildWindow("SMPID20400"); // SMPID20400_외래사후심사대상자조회.xrw
  4313. var patunitsrch1 = model.getValue("/root/main/item1/clbs/pid");
  4314. if (trgtManWindow == null) {
  4315. // pid가 변경되었는데 조회창을 여는 경우 기존 조회된 data 초기화를 위해 저장해둔다.
  4316. model.setValue("/root/hidden/smpid20400/cond/pid", patunitsrch1);
  4317. model.setValue("/root/hidden/smpid20400/rslt/oldPid", patunitsrch1);
  4318. open("SMPID20400", "2", "10", "10", "SMPID20400", "/root/hidden/smpid20400/cond/pid", "/root/send/item1/patunitsrch1", "", ""); // SMPID20400_외래사후심사대상자조회
  4319. } else {
  4320. var oldPid = model.getValue("/root/hidden/smpid20400/rslt/oldPid");
  4321. model.setValue("/root/hidden/smpid20400/cond/pid", patunitsrch1);
  4322. model.setValue("/root/hidden/smpid20400/rslt/oldPid", patunitsrch1);
  4323. if (oldPid == "") {
  4324. if (patunitsrch1 == "") { // 환자번호 입력 없이 대상자를 조회하는 경우
  4325. trgtManWindow.grp_judgmemo.visible = false; // 대상자 Grid의 메모 필드의 Btn 클릭시 보여지는 메모 저장용 Group을 감춘다.
  4326. activateChild("SMPID20400");
  4327. } else { // 기존 심사대상자는 없는데 pid가 입력된 경우 또는 변경된 정보를 저장 후에 조회하는 경우
  4328. trgtManWindow.javascript.fSetPatUnitSrch1pidSrch();
  4329. }
  4330. } else {
  4331. if (patunitsrch1 != oldPid) { // 조회된 pid가 변경된 상태에서 조회하는 경우
  4332. model.setValue("/root/main/item1/clbs/pid", patunitsrch1);
  4333. model.setValue("/root/hidden/smpid20400/cond/pid", patunitsrch1);
  4334. trgtManWindow.javascript.fSetPatUnitSrch1pidSrch();
  4335. } else { // 기존 심사대상자는 있는데 pid가 변경되지 않은 경우
  4336. trgtManWindow.grp_judgmemo.visible = false; // 대상자 Grid의 메모 필드의 Btn 클릭시 보여지는 메모 저장용 Group을 감춘다.
  4337. activateChild("SMPID20400");
  4338. }
  4339. }
  4340. model.refresh();
  4341. }
  4342. }
  4343. // 1) "저장" 이후에 현재 대상자 정보를 다시 조회한다.
  4344. // 2) 대상자조회 화면에서 선택한 환자의 pid를 기준으로 이전, 이후 대상자를 조회한다.
  4345. function fGetOutAftJudgMngt() {
  4346. var clamym = model.getValue("/root/hidden/smpid20400/rslt/clamym");
  4347. var clamdg = model.getValue("/root/hidden/smpid20400/rslt/clamdg");
  4348. var pid = model.getValue("/root/hidden/smpid20400/rslt/pid");
  4349. var pidsn = model.getValue("/root/hidden/smpid20400/rslt/pidsn");
  4350. var cutprcpyn = model.getValue("/root/hidden/smpid20400/rslt/cutprcpyn");
  4351. var selectedRow = model.getValue("/root/hidden/smpid20400/rslt/selectedRow");
  4352. var judgendyn = model.getValue("/root/hidden/smpid20400/rslt/judgendyn");
  4353. var tootpopupyn = model.getValue("/root/hidden/smpid20400/rslt/tootpopupyn");
  4354. //var ordfildcd = model.getValue("/root/hidden/smpid20400/rslt/ordfildcd");
  4355. var judgenddd = model.getValue("/root/hidden/smpid20400/rslt/judgenddd");
  4356. if (clamym) {
  4357. var rslt = fInitSrchData(); // 화면을 초기화한다.
  4358. if (rslt == false) { // 수정사항 저장이 완료되지 않아 초기화할 수 없는 경우
  4359. return false;
  4360. }
  4361. model.makeValue("/root/send/item1/clbs/clamym", clamym);
  4362. model.makeValue("/root/send/item1/clbs/clamdg", clamdg);
  4363. model.makeValue("/root/send/item1/clbs/pid", pid);
  4364. model.makeValue("/root/send/item1/clbs/pidsn", pidsn);
  4365. model.makeValue("/root/send/item1/clbs/ioflag", "O");
  4366. model.makeValue("/root/send/item1/clbs/workflag", "12");
  4367. // 대상자조회 화면에서 선택했던 환자의 Row를 기억해 두고, pre/next대상조회 버튼에서 이전, 이후 대상자를 조회한다.
  4368. model.setValue("/root/hidden/smpid20400/rslt/selectedRow", selectedRow);
  4369. // 20100302 삭감조회 여부
  4370. if ( cutprcpyn != "" ) {
  4371. model.makeValue("/root/send/item1/clbs/cutviewyn","Y");
  4372. } else {
  4373. model.makeValue("/root/send/item1/clbs/cutviewyn","N");
  4374. }
  4375. // 20100328 치식팝업
  4376. model.makeValue("/root/send/item1/clbs/tootpopupyn",tootpopupyn);
  4377. submit("TRPID20301"); // 2008-08-01 김상진 : 입원으로 통합.
  4378. // 원외처방 그리드 상태를 급여구분 기본값인 "급여"로 필터링한다.
  4379. for (var j = 1; j < grd_oprcphist.rows; j++) {
  4380. if (model.getValue("/root/main/list7/clop["+ j +"]/payflag") == "0") {
  4381. grd_oprcphist.rowHidden(j) = false;
  4382. } else {
  4383. grd_oprcphist.rowHidden(j) = true;
  4384. }
  4385. }
  4386. model.makevalue("/root/main/item1/clbs/orddiag","");
  4387. model.makeValue("/root/main/diaghist01/list01","");
  4388. model.makeValue("/root/send/diag/ioflag", "O");
  4389. model.makeValue("/root/send/diag/deptcd", model.getValue("/root/main/item1/clbs/orddeptcd"));
  4390. model.makeValue("/root/send/diag/orddd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  4391. model.makeValue("/root/send/diag/clamym", model.getValue("/root/send/item1/clbs/clamym"));
  4392. model.makeValue("/root/send/diag/clamdg", model.getValue("/root/send/item1/clbs/clamdg"));
  4393. model.makeValue("/root/send/diag/pid", model.getValue("/root/send/item1/clbs/pid"));
  4394. model.makeValue("/root/send/diag/pidsn", model.getValue("/root/send/item1/clbs/pidsn"));
  4395. fDiagGridInsertRow("Y", "N"); // 상병마지막 그리드에 한줄추가(); 20090918 정승우
  4396. //rdo_unitflag.dispatch("xforms-select"); //20091013 정승우 JT001 제외 기능 추가---
  4397. // 특정내역 Radio button dispatch 대신 아래함수로변경 이경민
  4398. fSelectSpclRadio();
  4399. // pid가 변경되었는데 조회창을 여는 경우 기존 조회된 data 초기화를 위해 저장해둔다.
  4400. model.setValue("/root/hidden/smpid20400/rslt/oldPid", model.getValue("/root/main/item1/clbs/pid"));
  4401. // 20100209 대상자조회창의 심사상태를 비교하기 위해 저장
  4402. model.setValue("/root/hidden/smpid20400/rslt/judgendyn",judgendyn);
  4403. model.setValue("/root/hidden/smpid20400/rslt/judgenddd",judgenddd);
  4404. if ((getNodesetCount("/root/main/diaghist01/list01/mmohdiag1") > 0
  4405. && getNodesetCount("/root/main/diaghist01/list01/mmohdiag2") == 0 )
  4406. || (getNodesetCount("/root/main/diaghist01/list01/mmohdiag1") > 0
  4407. && getNodesetCount("/root/main/diaghist01/list01/mmohdiag2") > 0) ) {
  4408. model.makeValue("/root/main/item1/clbs/orddiag", model.getValue("/root/main/diaghist01/list01/mmohdiag1[1]/diagcd"));
  4409. } else if (getNodesetCount("/root/main/diaghist01/list01/mmohdiag1") == 0
  4410. && getNodesetCount("/root/main/diaghist01/list01/mmohdiag2") > 0 ) {
  4411. model.makeValue("/root/main/item1/clbs/orddiag", model.getValue("/root/main/diaghist01/list01/mmohdiag2[1]/diagcd"));
  4412. } else {
  4413. model.makeValue("/root/main/item1/clbs/orddiag", "");
  4414. }
  4415. cbo_diag.refresh();
  4416. fSetAftJudgTrgtManSrchData();
  4417. // 수정추가 : 20090818 : JHP : 대상자조회에서 대상자 선택하여 넘어올때 메세지 여부 확인
  4418. // 20100305 김용민 삭제 (이것때문에 속도 느려짐
  4419. // 메인조회 쿼리에 포함시키는게 낳을듯.. pam.pmchipms pid 인덱스 없어, 추가 작업후 해야함
  4420. //fGetPatMsgYn();
  4421. //cmb_orddrid.refresh();
  4422. //fDiagGridInsertRowMulti(); //20090917 정승우 대상자 선택시 자동으로 상병 5줄 가져오기 추가
  4423. // 20100302 삭감팝업 추가
  4424. var cutpopwindow = getChildWindow("SMPIS00600");
  4425. if ( cutpopwindow != null ) { cutpopwindow.close(); }
  4426. if ( model.getValue("/root/main/item1/clbs/cutprcpyn") == "Y" ){
  4427. if ( cutprcpyn == "2" ) {
  4428. setParameter("openflag", 'O');
  4429. setParameter("pid", pid);
  4430. open("SMPIS00600", "", "50", "50" ,"SMPIS00600", "", "");
  4431. }
  4432. }
  4433. // 20100309 치식팝업 추가(치과일때만 해당)
  4434. var tootpopwindow = getChildWindow("SPPIZ00600ML");
  4435. if ( tootpopupyn == "Y"
  4436. && model.getValue("/root/main/item1/clbs/ordfildcd") == "6"
  4437. ){
  4438. fDiagOrderToothInputDiret("Diag");
  4439. //inputEnterKey("button4", "DOMActivate");
  4440. //opener.javascript.toothclick();
  4441. } else {
  4442. if ( tootpopwindow != null ) { tootpopwindow.close(); }
  4443. }
  4444. }
  4445. }
  4446. // 상단에 환자정보 기입하기
  4447. function fSetOutPatPamInfo() {
  4448. // emr/prcpmngtweb/xrw/SPMMO08900_환자기본정보설정.xrw
  4449. var pid = model.getValue("/root/main/item1/clbs/pid");
  4450. var orddd = model.getValue("/root/main/item1/clbs/indd");
  4451. var cretno = model.getValue("/root/main/item1/clbs/cretno");
  4452. var instcd = model.getValue("/root/main/item1/clbs/instcd");
  4453. // 20091214 김용민 응급실 6시간 미만 때문에 추가
  4454. var stsioflag = model.getValue("/root/main/item1/clbs/stsioflag");
  4455. var indd = model.getValue("/root/main/item1/clbs/indd");
  4456. var ordtodd = model.getValue("/root/main/item1/clbs/ordtodd");
  4457. var srchdd = ""
  4458. // 20100201 응급실 주과구분(C) 추가
  4459. if (stsioflag == "E" || stsioflag == "C" ) {
  4460. ioflag = "E";
  4461. srchdd = indd;
  4462. }
  4463. else {
  4464. ioflag = "O";
  4465. srchdd = ordtodd;
  4466. }
  4467. if (cretno) {
  4468. // 외래환자 parameter 구조 ioflag▦pid▦orddd▦cretno▦instcd▦acptseqno▦orgorddd
  4469. //var param = "O" + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd;
  4470. var param = ioflag + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd + "▦" + srchdd; ; // 20091214 김용민 6시간 미만건 때문에 수정
  4471. setParameter("condparam", param);
  4472. // 원무에 환자정보가 없는 경우 에러메시지 화면을 보이지 않게 처리함
  4473. setParameter("errflag", "Y");
  4474. modal("SPMMO08900", 1, 0, 0, "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  4475. var useyn = getParameter("SPMMO08900_rtn_useyn");
  4476. if (useyn == "Y") {
  4477. setParameter("SPMMO08900_rtn_useyn", "");
  4478. }else{
  4479. delPatientInfos(); // (common.js) 상단의 환자정보 삭제
  4480. }
  4481. } else {
  4482. delPatientInfos(); // (common.js) 상단의 환자정보 삭제
  4483. }
  4484. }
  4485. function fSetAftJudgTrgtManSrchData() {
  4486. // 상단에 환자정보 기입하기
  4487. if (!isPopup()) { // (common.js) 자신이 팝업인지 아닌지를 리턴한다.
  4488. fSetOutPatPamInfo();
  4489. }
  4490. // 조회된 심사대상자의 특이 인적사항, 보조/요율 등을 계산하여 보여준다.
  4491. fGetPersonalData();
  4492. // 심사완료여부 상태에 따라 "저장 / 재계산 / 완료 / 미심 / 보류 / 삭제" Btn 권한을 설정한다.
  4493. fSetJudgStatBtnAuth();
  4494. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  4495. // fSortSpclNo();
  4496. // 특정코드 줄단위 였던 row가 명세서 단위 row로 바뀌는 경우, 특정코드 값이 표시되지 않으므로 다시 확인한다.
  4497. //for (var i = 1; i < grd_clsphist.rows; i++) {
  4498. // grd_clsphist.cellComboNodeset(i, grd_clsphist.colRef("spclcd")) = "/root/init/P0117list/P0117";
  4499. //}
  4500. // 재료행위/급여/항목구분 Radio 선택
  4501. // 2008-12-02
  4502. //fGetSelectedOrderData();
  4503. if (model.getValue("/root/hidden/reselect") == "N") { // 저장후 재조회가 아닐 경우만..(속도개선)
  4504. // 처방 항목 구분 및 선별심사 처방 색깔 구분
  4505. fSetOrderData();
  4506. }
  4507. // 항목별 금액소계표시 2011.01.04 김상진보류
  4508. //fSetSubtotal();
  4509. // 처방 그리드 상태를 초기화 한다.
  4510. grd_clodhist.row = 0; // 그리드의 첫줄부터 표시되도록 포커스를 0으로 설정한다.
  4511. // 원외처방 그리드 상태를 급여구분 기본값인 "급여"로 필터링한다.
  4512. //rdo_cloppayflag.dispatch("xforms-select");
  4513. fGetCoppayFlagSelect();
  4514. // "저장" Btn 클릭시에 인적사항이 변경되었는지 여부를 알기 위해 조회한 항목을 임시로 저장해두고 추후에 비교한다.
  4515. model.copyNode("/root/hidden/item1/initclbs/clbs", "/root/main/item1/clbs");
  4516. model.copyNode("/root/hidden/item1/initmemo/memo", "/root/main/item1/memo");
  4517. // "급여구분" 조회위한 급여처방을 임시로 저장해 둔다.
  4518. model.copyNode("/root/hidden/initclodlist/list2", "/root/main/list2");
  4519. // 진료결과 nodeset (산재:P0297, 보험,보호,자보:P0110)
  4520. if (model.getValue("/root/main/item1/clbs/insukindcd") == "41") {
  4521. cmb_ordrsltcd.choices.itemset.attribute("nodeset") = "/root/init/P0297list/P0297";
  4522. } else {
  4523. cmb_ordrsltcd.choices.itemset.attribute("nodeset") = "/root/init/P0110list/P0110";
  4524. }
  4525. //cmb_ordrsltcd.refresh(); // 20091217 밑에 refresh 가 있어서 삭제..
  4526. // 조회된 심사대상자의 실제진료일과 그달의 진료일자를 진료달력에 표시한다.
  4527. //setOrdCalendar();
  4528. if (getNodesetCount("/root/main/dupidlist/dupid") > 0 ) {
  4529. var pid = model.getValue("/root/main/item1/clbs/pid");
  4530. var duppid = model.getValue("/root/main/dupidlist/dupid/newpid");
  4531. if (pid == duppid ) {
  4532. duppid = model.getValue("/root/main/dupidlist/dupid/oldpid")
  4533. }
  4534. messageBox("★★★ 합번정보 : 해당 환자는 "+duppid+" 챠트번호와 합번정보가 있으며, " +
  4535. "진료개시일이 동일한 "+duppid+"의 명세서가 존재하니 반드시 청구여부 확인하시기 바랍니다. ★★★", "I"); /// 잠금설정되어있는 상태입니다. 수정할 수 없습니다.
  4536. }
  4537. if (model.getValue("/root/main/item1/clbs/clamkey")) {
  4538. var clamendyn = model.getValue("/root/main/item1/clbs/clamendyn");
  4539. var lockyn = model.getValue("/root/main/item1/clbs/lockyn");
  4540. if (lockyn == "Y") {
  4541. messageBox("잠금설정되어있는 상태입니다. 수정", "E001"); /// 잠금설정되어있는 상태입니다. 수정할 수 없습니다.
  4542. }
  4543. } else {
  4544. // 해당 심사대상자가 없는 경우
  4545. return;
  4546. }
  4547. // 상병 Grid의 상병순서를 체크림하고, 마지막 줄에 줄추가를 한다.
  4548. //fSortDiagNo(true);
  4549. if (grd_cldihist.rows == 1) {
  4550. fDiagGridInsertRow("Y", "N"); // 상병마지막 그리드에 한줄추가
  4551. }
  4552. // 진료일표시
  4553. fViewOrddddisp();
  4554. // 환자호출시 기본적으로 특정내역 탭을 선택하여 보여준다 - 20091112 박창원 -- 병원별 차등적용으로 변경
  4555. // 환자호출시 병원별로 차별화 해서 디스플레이 해줌 - 20091117 박창원
  4556. var dispclsp = model.getValue("/root/main/item1/clbs/dispclsp");
  4557. if (dispclsp == "S") { // 특정내역우선
  4558. btn_spclspec.selected = true;
  4559. btn_judgrmemo.selected = false;
  4560. btn_ediclammemo.selected = false;
  4561. //btn_spclspec.dispatch("DOMActivate");
  4562. fGeCaseSelect("case_spclspec", true);
  4563. } else if (dispclsp == "E") {
  4564. btn_spclspec.selected = false;
  4565. btn_judgrmemo.selected = false;
  4566. btn_ediclammemo.selected = true;
  4567. //btn_ediclammemo.dispatch("DOMActivate");
  4568. fGeCaseSelect("case_ediclammemo", false);
  4569. } else if (dispclsp == "U") {
  4570. btn_spclspec.selected = false;
  4571. btn_judgrmemo.selected = true;
  4572. btn_ediclammemo.selected = false;
  4573. //btn_judgrmemo.dispatch("DOMActivate");
  4574. fGeCaseSelect("case_judgrmemo", false);
  4575. }
  4576. //model.refresh(); // 20091217 밑에 refresh 가 또 있어서 삭제..
  4577. //메모여부에 따른 색깔분류 - 박창원 20091102
  4578. var edimemo = model.getValue("/root/main/item1/memo/edimemo");
  4579. var usermemo = model.getValue("/root/main/item1/memo/judgmemo");
  4580. var edilength = edimemo.length;
  4581. var userlength = usermemo.length;
  4582. if (edilength > 0) {
  4583. btn_ediclammemo.attribute("background-image") = "../../../com/commonweb/images/tab_hide_orange.gif";
  4584. } else if (edilength == 0) {
  4585. btn_ediclammemo.attribute("class") = "btn_sw"; // 표준에서 정한 기본 버튼으로 설정
  4586. }
  4587. if (userlength > 0) {
  4588. btn_judgrmemo.attribute("background-image") = "../../../com/commonweb/images/tab_hide_orange.gif";
  4589. } else if (userlength == 0) {
  4590. btn_judgrmemo.attribute("class") = "btn_sw"; // 표준에서 정한 기본 버튼으로 설정
  4591. }
  4592. /* 20091217 다시 삭제.. 크기 고정
  4593. // 20091210 김용민 추가 - 사이즈 자동모드인경우 원외처방그리드 사이즈 조정
  4594. if ( gClopSize == "AUTO" ) {
  4595. fClopSizeChange("AUTO");
  4596. // 이전명세서, 처방휴지통, 삭제처방 Group의 컨트롤 크기를 설정한다.
  4597. //fSetDelOrdPreDocuSize();
  4598. }
  4599. */
  4600. // 20100209 대상자조회 창은 미심상태이나 실제 명세서 내역이 심사완료이면 메세지 표시
  4601. if ( model.getValue("/root/hidden/smpid20400/rslt/judgendyn") == "A" // 대상자조회창
  4602. && ( model.getValue("/root/main/item1/clbs/judgendyn") == "C" // 심사화면 심사완료
  4603. || model.getValue("/root/main/item1/clbs/judgendyn") == "Z" // 심사화면 일괄완료
  4604. )
  4605. ) {
  4606. messageBox("심사 완료되어 있는 명세서", "I005"); //심사 완료되어 있는 명세서입니다.
  4607. }
  4608. else if ( model.getValue("/root/hidden/smpid20400/rslt/judgendyn") == "A" // 대상자조회창
  4609. && model.getValue("/root/main/item1/clbs/judgendyn") == "N" // 심사화면 보류
  4610. ) {
  4611. messageBox("심사 보류되어 있는 명세서", "I005"); //심사 보류되어 있는 명세서입니다.
  4612. }
  4613. // 20100402 주민반송일 경우 온라인 주민번호 확인메세지 추가
  4614. if ( model.getValue("/root/main/item1/clbs/lockyn") != "Y"
  4615. && getStringLength(model.getValue("/root/main/item1/clbs/realrgstno")) == 13 // 자리수 체크
  4616. && model.getValue("/root/main/item1/clbs/realrgstno") != model.getValue("/root/main/item1/clbs/patrrgstno")
  4617. && model.getValue("/root/main/item1/clbs/preresncd").substr(0,2) == "91"
  4618. ) {
  4619. var ans = messageBox( "명세서상의 주민번호와 온라인 상의 주민번호가 상이합니다. " + "\n\n"
  4620. + "온라인 상의 주민번호는 ( "
  4621. + model.getValue("/root/main/item1/clbs/realrgstno").substr(0,6)
  4622. + "-"
  4623. + model.getValue("/root/main/item1/clbs/realrgstno").substr(6,7)
  4624. + " ) 입니다." + "\n\n"
  4625. + "주민번호를 변경 "
  4626. , "S001");
  4627. if (ans == 6) { // 6: yes, 7:no, 2:cancel
  4628. model.setValue("/root/main/item1/clbs/patrrgstno",model.getValue("/root/main/item1/clbs/realrgstno"));
  4629. ipt_patrrgstno.refresh();
  4630. }
  4631. }
  4632. /*
  4633. 2008-08-11
  4634. model.setFocus("grd_cldihist");
  4635. grd_cldihist.row = grd_cldihist.rows-1;
  4636. grd_cldihist.col = grd_cldihist.colRef("diagcd");
  4637. grd_cldihist.editCell();
  4638. */
  4639. }
  4640. // 심사완료여부 상태에 따라 "저장 / 재계산 / 완료 / 미심 / 보류 / 삭제" Btn 권한을 설정한다.
  4641. function fSetJudgStatBtnAuth() {
  4642. // 1. 팝업이 아닌 경우 "11100000" // RXP권한
  4643. // 2. 심사전 명세서 팝업 "00100000"
  4644. // 3. 이전 명세서 팝업 "11100000"
  4645. // 4. 그외 팝업 "10100000"
  4646. var xAuth = checkAuth("X"); // 처리권한(입력, 수정, 삭제 등) - RXP
  4647. if (xAuth == true) {
  4648. var clamendyn = model.getValue("/root/main/item1/clbs/clamendyn");
  4649. var lockyn = model.getValue("/root/main/item1/clbs/lockyn");
  4650. if (lockyn == "N") { // 청구완료여부 A:샘생성전
  4651. var userid = getUserId(); // (common.js) 현재 로그인한 사용자 번호(ID)
  4652. if (userid) {
  4653. } else {
  4654. userid = "12345678";
  4655. }
  4656. var judgendyn = model.getValue("/root/main/item1/clbs/judgendyn");
  4657. // 심사중이면
  4658. if (judgendyn == "B") {
  4659. // 계속 심사중이 아니면...
  4660. if (model.getValue("/root/hidden/reselect") != "Y") {
  4661. var lastupdtrid = model.getValue("/root/main/item1/clbs/lastupdtrid");
  4662. if (lastupdtrid == userid) {
  4663. //rowstat = "ing";
  4664. btn_save.disabled = false;
  4665. btn_end.disabled = false;
  4666. btn_unjudg.disabled = false;
  4667. btn_rete.disabled = false;
  4668. btn_del.disabled = false;
  4669. //btn_cretdel.disabled = false;
  4670. messageBox("기존에 심사중이었던", "I005"); ///기존에 심사중이었던 환자입니다.
  4671. } else {
  4672. btn_save.disabled = true;
  4673. btn_end.disabled = true;
  4674. btn_unjudg.disabled = true;
  4675. btn_rete.disabled = true;
  4676. btn_del.disabled = true;
  4677. //btn_cretdel.disabled = true;
  4678. // 심사중인 환자이므로 메시지 처리한다.
  4679. messageBox("다른 심사자가 심사중인", "I005"); ///다른 심사자가 심사중인 환자입니다.
  4680. }
  4681. // -------------------------------------------------
  4682. // 원래 심사상태를 저장해준다.(심사중해제를 위해서)
  4683. // -------------------------------------------------
  4684. //model.setValue("/root/hidden/orgjudgendyn", judgendyn)
  4685. // 계속 심사중이면...
  4686. } else {
  4687. btn_save.disabled = false;
  4688. btn_end.disabled = false;
  4689. btn_unjudg.disabled = false;
  4690. btn_rete.disabled = false;
  4691. btn_del.disabled = false;
  4692. //btn_cretdel.disabled = false;
  4693. // -------------------------------------------------
  4694. // 저장후재조회여부 초기화
  4695. // -------------------------------------------------
  4696. model.setValue("/root/hidden/reselect", "N");
  4697. }
  4698. }
  4699. // 심사중이 아니면...
  4700. else if (judgendyn != "B") {
  4701. // 심사자ID이고 미심(A)인경우만 심사중으로 변경
  4702. if (model.getValue("/root/init/item3/judgidyn") == "Y" && judgendyn == 'A') {
  4703. // "심사중" 상태로 설정한다.
  4704. var judgendyn = model.getValue("/root/main/item1/clbs/judgendyn");
  4705. model.removeNodeset("/root/send/item4");
  4706. model.makeValue("/root/send/item4/endclbs/clamym", model.getValue("/root/main/item1/clbs/clamym"));
  4707. model.makeValue("/root/send/item4/endclbs/clamdg", model.getValue("/root/main/item1/clbs/clamdg"));
  4708. model.makeValue("/root/send/item4/endclbs/pid", model.getValue("/root/main/item1/clbs/pid"));
  4709. model.makeValue("/root/send/item4/endclbs/pidsn", model.getValue("/root/main/item1/clbs/pidsn"));
  4710. model.makeValue("/root/send/item4/endclbs/judgendyn", "B");
  4711. submit("TXPID20302");
  4712. model.setValue("/root/main/item1/clbs/judgendyn", "B");
  4713. model.setValue("/root/main/item1/clbs/lastupdtrid", userid);
  4714. model.refreshpart("/root/main/item1/clbs/judgendyn");
  4715. fSetJudgSaveState("B"); // 심사완료여부 (P0151) - B: 심사중
  4716. }
  4717. // -------------------------------------------------
  4718. // 원래 심사상태를 저장해준다.(심사중해제를 위해서)
  4719. // -------------------------------------------------
  4720. model.setValue("/root/hidden/orgjudgendyn", judgendyn)
  4721. if (judgendyn == "D") { // D: 삭제
  4722. btn_save.disabled = true;
  4723. //2012.5.23 이경민 심사완료일자가 15일 이후면 완료버튼 비활성화 추가.
  4724. var judgenddd = model.getValue("/root/hidden/smpid20400/rslt/judgenddd");
  4725. judgenddd = judgenddd.toDate();
  4726. var bfday15 = getCurrentDate().toDate().getAddDate(-15,'D');
  4727. if ( judgenddd < bfday15 ) {
  4728. btn_end.disabled = true;
  4729. } else {
  4730. btn_end.disabled = false;
  4731. }
  4732. btn_unjudg.disabled = false;
  4733. btn_rete.disabled = false;
  4734. btn_del.disabled = true; // 삭제
  4735. //btn_cretdel.disabled = false; // 생성삭제 Btn
  4736. }
  4737. else if (judgendyn == "C" || judgendyn == "E" || judgendyn == "Z") { // C: 심사완료, E: 통합완료, Z: 일괄완료
  4738. btn_save.disabled = false;
  4739. btn_end.disabled = false; // 완료
  4740. btn_unjudg.disabled = false;
  4741. btn_rete.disabled = false;
  4742. btn_del.disabled = false;
  4743. //btn_cretdel.disabled = false; // 생성삭제 Btn
  4744. }
  4745. else if (judgendyn == "A") { // A: 미심사
  4746. btn_save.disabled = false;
  4747. btn_end.disabled = false;
  4748. btn_unjudg.disabled = true; // 미심사
  4749. btn_rete.disabled = false;
  4750. btn_del.disabled = false;
  4751. //btn_cretdel.disabled = false; // 생성삭제 Btn
  4752. }
  4753. else if (judgendyn == "N") { // N: 보류
  4754. btn_save.disabled = false;
  4755. btn_end.disabled = false;
  4756. btn_unjudg.disabled = false;
  4757. btn_rete.disabled = true; // 보류
  4758. btn_del.disabled = false;
  4759. //btn_cretdel.disabled = false; // 생성삭제 Btn
  4760. } else { // B: 심사중
  4761. btn_save.disabled = false;
  4762. btn_end.disabled = false;
  4763. btn_unjudg.disabled = false;
  4764. btn_rete.disabled = false;
  4765. btn_del.disabled = false;
  4766. //btn_cretdel.disabled = false; // 생성삭제 Btn
  4767. }
  4768. } // if (judgendyn == "B")
  4769. } // if (clamendyn == "A")
  4770. else {
  4771. // 청구완료여부 A:샘생성전 이 아닌 경우
  4772. btn_save.disabled = true;
  4773. btn_end.disabled = true;
  4774. btn_unjudg.disabled = true;
  4775. btn_rete.disabled = true;
  4776. btn_del.disabled = true;
  4777. //btn_cretdel.disabled = true; // 생성삭제 Btn
  4778. }
  4779. } // if (xAuth == true)
  4780. // 유형보조가 정상(00)이 아닐 경우
  4781. var suppkindcd = model.getValue("/root/main/item1/clbs/suppkindcd");
  4782. if (suppkindcd != "" && suppkindcd != "00") {
  4783. opt_suppkind.attribute("background-color") = "#f7a08b"; // class="color_6" 다홍색 //"#cece9c";
  4784. opt_payownbrate.attribute("background-color") = "#f7a08b"; // class="color_6" 다홍색 //"#cece9c";
  4785. } else {
  4786. opt_suppkind.attribute("background-color") = "#f2f2f2"; // output_fix 클래스의 background-color
  4787. opt_payownbrate.attribute("background-color") = "#f2f2f2";
  4788. }
  4789. // 특이환자 버튼 설정
  4790. if (model.getValue("/root/main/item1/clbs/patspcfyn") == "Y") {
  4791. btn_patspcfyn.attribute("background-image") = "../../../com/commonweb/images/icon_btn_s.gif"; // 주황색
  4792. } else {
  4793. btn_patspcfyn.attribute("background-image") = "../../../com/commonweb/images/icon_btn.gif"; // 파란색
  4794. }
  4795. // 수술환자의 경우 수술(유) 버튼을 설정한다.
  4796. if (model.getValue("/root/main/item1/clbs/opyn") == "Y") {
  4797. btn_opyn.visible = true;
  4798. btn_opyn.attribute("class") = "btn5_letter4";
  4799. btn_opyn.attribute("color") = "#cc3333"; // 해당 정보가 있는 경우 버튼 색 변경 // cc3333=붉은색
  4800. // 중증질환 Btn
  4801. btn_esscdiag.attribute("left") = "215px";
  4802. } else {
  4803. btn_opyn.visible = false;
  4804. btn_opyn.attribute("class") = "btn2_letter4"; // 표준에서 정한 기본 버튼으로 설정
  4805. // 중증질환 Btn
  4806. btn_esscdiag.attribute("left") = "282px";
  4807. }
  4808. // 상병이력 버튼 설정
  4809. if (model.getValue("/root/main/item1/clbs/diaghist") == "Y") {
  4810. btn_diagHist.attribute("class") = "btn5_letter4";
  4811. btn_diagHist.attribute("color") = "#cc3333"; // 해당 정보가 있는 경우 버튼 색 변경 // cc3333=붉은색
  4812. } else {
  4813. btn_diagHist.attribute("class") = "btn2_letter4"; // 표준에서 정한 기본 버튼으로 설정
  4814. }
  4815. // 메모이력 버튼 설정
  4816. if (model.getValue("/root/main/item1/clbs/memohist") == "Y") {
  4817. btn_memohist.attribute("class") = "btn5_letter4";
  4818. btn_memohist.attribute("color") = "#cc3333"; //#ff0066"; // 해당 정보가 있는 경우 버튼 색 변경 // cc3333=붉은색
  4819. } else {
  4820. btn_memohist.attribute("class") = "btn2_letter4"; // 표준에서 정한 기본 버튼으로 설정
  4821. }
  4822. // (특정내역) 반복 버튼 설정
  4823. if (model.getValue("/root/main/item1/memo/judgmemorepeat") == "R") {
  4824. btn_judgmemorepeat.attribute("class") = "btn5_letter6";
  4825. btn_judgmemorepeat.attribute("color") = "#cc3333"; // 해당 정보가 있는 경우 버튼 색 변경 // cc3333=붉은색
  4826. } else {
  4827. btn_judgmemorepeat.attribute("class") = "btn2_letter6"; // 표준에서 정한 기본 버튼으로 설정
  4828. }
  4829. if (model.getValue("/root/main/item1/memo/edimemorepeat") == "R") {
  4830. btn_edimemorepeat.attribute("class") = "btn5_letter6";
  4831. btn_edimemorepeat.attribute("color") = "#cc3333"; // 해당 정보가 있는 경우 버튼 색 변경 // cc3333=붉은색
  4832. } else {
  4833. btn_edimemorepeat.attribute("class") = "btn2_letter6"; // 표준에서 정한 기본 버튼으로 설정
  4834. }
  4835. // 이전명세서 버튼 설정
  4836. if (model.getValue("/root/main/item1/clbs/predocuyn") == "Y") {
  4837. btn_predocu.attribute("class") = "btn5_letter5";
  4838. btn_predocu.attribute("color") = "#cc3333"; // 해당 정보가 있는 경우 버튼 색 변경 // cc3333=붉은색
  4839. } else {
  4840. btn_predocu.attribute("class") = "btn2_letter5"; // 표준에서 정한 기본 버튼으로 설정
  4841. }
  4842. // 미시행처방 버튼 설정
  4843. if (model.getValue("/root/main/item1/clbs/unexecord") == "Y") {
  4844. btn_unexecord.attribute("class") = "btn5_letter5";
  4845. btn_unexecord.attribute("color") = "#cc3333"; // 해당 정보가 있는 경우 버튼 색 변경 // cc3333=붉은색
  4846. } else {
  4847. btn_unexecord.attribute("class") = "btn2_letter5"; // 표준에서 정한 기본 버튼으로 설정
  4848. }
  4849. // 특정코드 MT015, MT016, MT004 정보가 입력된 환자인지를 확인한다.
  4850. fCheckSpclSpecData();
  4851. // 동일진료일명세서 버튼 설정
  4852. // 20100225 버튼이 잘못지정되어 있어서 수정함
  4853. if (model.getValue("/root/main/item1/clbs/samedateyn") == "Y") {
  4854. btn_samedateyn.attribute("class") = "btn5_letter5";
  4855. btn_samedateyn.attribute("color") = "#cc3333"; // 해당 정보가 있는 경우 버튼 색 변경 // cc3333=붉은색
  4856. } else {
  4857. btn_samedateyn.attribute("class") = "btn2_letter5"; // 표준에서 정한 기본 버튼으로 설정
  4858. }
  4859. // 같은 청구월(일)에 동일진료과명세서가 존재하는 경우
  4860. if (model.getValue("/root/main/item1/clbs/samedocuyn") == "Y") {
  4861. // if (model.getValue("/root/main/item1/clbs/instcd") == "031") {
  4862. messageBox("동일진료일자 동일진료과 명세서가 존재합니다.", "I007"); //확인하십시오 !
  4863. // } else {
  4864. // messageBox("동일청구월 동일진료과 명세서가 존재합니다.", "I007"); //확인하십시오 !
  4865. // }
  4866. }
  4867. // 같은 청구월(일)에 입원 진료과명세서가 존재하는 경우
  4868. if (model.getValue("/root/main/item1/clbs/samedocuioyn") == "Y") {
  4869. messageBox("동일진료일자 동일진료과 입원 명세서가 존재합니다.", "I007"); //확인하십시오 !
  4870. }
  4871. //16세미만, 35세 이상 초산 산모 필수 진단 체크
  4872. var chk_R= model.getValue("/root/main/list2/clod[snglcalcscorcd='R4351' " +
  4873. "or snglcalcscorcd='R3131' " +
  4874. "or snglcalcscorcd='R3141' " +
  4875. "or snglcalcscorcd='R4361' " +
  4876. "or snglcalcscorcd='R4519' " +
  4877. "]/snglcalcscorcd"); // 초산 상병체크
  4878. var patage = parseInt(model.getValue("/root/main/item1/clbs/patage"));
  4879. //진찰료 1회 이상인 경우 메세지
  4880. //진찰료 횟수와 면허번호 갯수 불일치 시 메세지
  4881. var chk_tims = model.getValue("/root/main/list2/clod[item='0101' and tims>=2 or item='0102' and tims>=2]/tims");
  4882. var licnscnt = model.getValue("/root/main/list2/clod[item='0101' and tims>=2 or item='0102' and tims>=2]/licnsno");
  4883. var clod_snglcalcscorcd = model.getValue("/root/main/list2/clod[item='0101' or item='0102']/snglcalcscorcd");
  4884. var stsioflag = model.getValue("/root/main/item1/clbs/stsioflag");
  4885. licnscnt = licnscnt.split('/');
  4886. if (chk_R.length > 0 && (patage >= 35 || patage < 16) ) {
  4887. messageBox("어린 초임부 또는 고령초임부","I009");
  4888. }
  4889. if(chk_tims>=2){
  4890. if (stsioflag != "E") { // 응급실 외퇴 환자가 아닌 경우에만 진찰료 횟수 체크한다. (20160828 LEJ)
  4891. messageBox("진찰료 횟수가 1회 이상","I009");
  4892. }
  4893. if (chk_tims != licnscnt.length) {
  4894. messageBox("진찰료 횟수와 면허번호 갯수가","E004");
  4895. }
  4896. }
  4897. var holigbn = model.getValue("/root/main/item1/clbs/holigbn");
  4898. var holifromdd = model.getValue("/root/main/item1/clbs/holifromdd");
  4899. var holitodd = model.getValue("/root/main/item1/clbs/holitodd");
  4900. if(holigbn == "Y" && clod_snglcalcscorcd.length > 0){
  4901. messageBox("진료의가 "+holifromdd+" ~ "+holitodd+" 기간동안 해외 출장입니다. 진료의사를 변경하세요.","E");
  4902. }
  4903. // 자보한도액 버튼 설정 20090327
  4904. // 자보한도액 초과자 체크 : 자보환자일때만 자보발생금액 버튼 활성화 초과자는 자보발생금액 버튼 색깔변경 - 20080923 박창원
  4905. var insukind = model.getValue("/root/main/item1/clbs/insukindcd");
  4906. var suppkind = model.getValue("/root/main/item1/clbs/suppkindcd");
  4907. if ( insukind == "31" && suppkind == "18" && model.getValue("/root/main/item1/clbs/paylimamt") != "0") {
  4908. btn_autolimit.attribute("background-image") = "../../../com/commonweb/images/icon_btn_s.gif"; // 주황색
  4909. } else {
  4910. btn_autolimit.attribute("background-image") = "../../../com/commonweb/images/icon_btn.gif"; // 파란색
  4911. }
  4912. // 자보산재 보험유형별 caption 설정 20090327
  4913. if (insukind == "31") {
  4914. cap_insdnm.attribute("text") = "사고일자";
  4915. cap_certno.attribute("text") = "접수번호";
  4916. }
  4917. else if (insukind == "41") {
  4918. cap_insdnm.attribute("text") = "사고일자";
  4919. cap_certno.attribute("text") = "관리번호";
  4920. }
  4921. else {
  4922. cap_insdnm.attribute("text") = "가입자";
  4923. cap_certno.attribute("text") = "증번호";
  4924. }
  4925. //삭감처방여부에 따라 삭감처방버튼 색 변경
  4926. if ( model.getValue("/root/main/item1/clbs/cutprcpyn") == "Y" ){
  4927. button3.attribute("class") = "btn5_letter4";
  4928. button3.attribute("color") = "#cc3333";
  4929. } else {
  4930. button3.attribute("class") = "btn2_letter4";
  4931. }
  4932. // 20100317 환자별 메세지 버튼 추가 (별도 조회되던것을 기본정보 조회에 포함 처리)
  4933. if ( model.getValue("/root/main/item1/clbs/patmsgyn") == "Y" ) {
  4934. img_msg.visible = true;
  4935. } else{
  4936. img_msg.visible = false;
  4937. }
  4938. }
  4939. //---------------------------------------------------------------------
  4940. // 다음 대상자 찾기 : 선별심사 아닌 경우
  4941. //---------------------------------------------------------------------
  4942. function fSrchNextJudgTrgtManCLBS(trgtManWindow, selectedRow, judgendyn) { // selectedRow: 현재 선택된 row
  4943. var judgendcheck;
  4944. var nowjudgendyn;
  4945. var selectjudgendyn;
  4946. var nextclamkey = "";
  4947. var trgtmanclamkey = trgtManWindow.model.getValue("/root/main/list1/clbs["+ selectedRow +"]/clamkey");
  4948. var selectjudgendyn = trgtManWindow.model.getValue("/root/send/item1/judgendyn");
  4949. // 현재 row 이후의 대상자 중 미심사 상태
  4950. for (var i = parseInt(selectedRow, 10) + 1; i < trgtManWindow.grd_clbsmast.rows; i++) {
  4951. if (trgtmanclamkey != trgtManWindow.model.getValue("/root/main/list1/clbs["+ i +"]/clamkey")) {
  4952. // 조회조건이 심사완료, 통합완료, 일괄완료인경우는 바로 다음 대상자를 조회
  4953. if (selectjudgendyn == "C" || selectjudgendyn == "E" || selectjudgendyn == "Z") {
  4954. model.setValue("/root/hidden/smpid20400/rslt/selectedRow", i);
  4955. trgtManWindow.grd_clbsmast.row = i;
  4956. nextclamkey = trgtManWindow.model.getValue("/root/main/list1/clbs["+ i +"]/clamkey");
  4957. trgtManWindow.javascript.fSetWorkStatCnt(); // 총건수와 기타 심사상태에 따른 cnt를 표시한다.
  4958. trgtManWindow.model.refresh();
  4959. return nextclamkey;
  4960. // 나머지는 미심사, 보류, 심사중인 다음 대상자를 조회한다.
  4961. } else {
  4962. nowjudgendyn = trgtManWindow.model.getValue("/root/main/list1/clbs["+ i +"]/judgendyn");
  4963. if (nowjudgendyn == "A" || nowjudgendyn == "N" || nowjudgendyn == "B" ) {
  4964. model.setValue("/root/hidden/smpid20400/rslt/selectedRow", i);
  4965. trgtManWindow.grd_clbsmast.row = i;
  4966. nextclamkey = trgtManWindow.model.getValue("/root/main/list1/clbs["+ i +"]/clamkey");
  4967. trgtManWindow.javascript.fSetWorkStatCnt(); // 총건수와 기타 심사상태에 따른 cnt를 표시한다.
  4968. trgtManWindow.model.refresh();
  4969. return nextclamkey;
  4970. }
  4971. }
  4972. }
  4973. }
  4974. trgtManWindow.model.refresh();
  4975. return nextclamkey;
  4976. }
  4977. //-----------------------------------------------------------------------------------------
  4978. // 다음 대상자 찾기 : 선별심사 아닌 경우(이전명세서조회에서 선택명세서심사 버튼 선택한 경우
  4979. //-----------------------------------------------------------------------------------------
  4980. function fSrchNextJudgTrgtMan_DailyJudgMode_CLBS(trgtManWindow, JudgClamkey) { // selectedRow: 현재 선택된 row
  4981. var judgendcheck;
  4982. var nextclamkey = "";
  4983. // 현재 대상자중에서 조회대상자를 찾는다.
  4984. for (var i = 1; i < trgtManWindow.grd_clbsmast.rows; i++) {
  4985. if (JudgClamkey == trgtManWindow.model.getValue("/root/main/list1/clbs["+ i +"]/clamkey")) {
  4986. model.setValue("/root/hidden/smpid20400/rslt/selectedRow", i);
  4987. trgtManWindow.grd_clbsmast.row = i;
  4988. nextclamkey = trgtManWindow.model.getValue("/root/main/list1/clbs["+ i +"]/clamkey");
  4989. trgtManWindow.javascript.fSetWorkStatCnt(); // 총건수와 기타 심사상태에 따른 cnt를 표시한다.
  4990. trgtManWindow.model.refresh();
  4991. return nextclamkey;
  4992. }
  4993. }
  4994. trgtManWindow.model.refresh();
  4995. return nextclamkey;
  4996. }
  4997. //---------------------------------------------------------------------
  4998. // 다음 대상자 찾기 : 선별심사인 경우
  4999. //---------------------------------------------------------------------
  5000. function fSrchNextJudgTrgtManSPEC(trgtManWindow, selectedRow, judgendyn) { // selectedRow: 현재 선택된 row / judgendyn: 심사완료여부
  5001. var judgendcheck;
  5002. var nowjudgendyn;
  5003. var nextclamym = "";
  5004. var nextclamkey = "";
  5005. var trgtmanclamkey = trgtManWindow.model.getValue("/root/main/list1/clbs["+ selectedRow +"]/clamkey");
  5006. var selectjudgendyn = trgtManWindow.model.getValue("/root/send/item1/judgendyn");
  5007. var userid = getUserId();
  5008. for (var i = 1; i < trgtManWindow.grd_specclbs.rows; i++) {
  5009. if (trgtmanclamkey == trgtManWindow.model.getValue("/root/main/list1/clbs["+ i +"]/clamkey")) {
  5010. trgtManWindow.model.setValue("/root/main/list1/clbs["+ i +"]/judgendyn", judgendyn);
  5011. trgtManWindow.model.setValue("/root/main/list1/clbs["+ i +"]/lastupdtrid", userid);
  5012. if (btn_attData.attribute("class") == "btn5_letter4") {
  5013. trgtManWindow.model.setValue("/root/main/list1/clbs["+ i +"]/prepdata", "Y");
  5014. } else {
  5015. trgtManWindow.model.setValue("/root/main/list1/clbs["+ i +"]/prepdata", "");
  5016. }
  5017. } else if (i > selectedRow && nextclamkey == "") { // 현재 row 이후의 대상자 중 미심사 상태
  5018. // 조회조건이 심사완료, 통합완료, 일괄완료인경우는 바로 다음 대상자를 조회
  5019. if (selectjudgendyn == "C" || selectjudgendyn == "E" || selectjudgendyn == "Z") {
  5020. model.setValue("/root/hidden/smpid20400/rslt/selectedRow", i);
  5021. trgtManWindow.grd_specclbs.row = i;
  5022. nextclamkey = trgtManWindow.model.getValue("/root/main/list1/clbs["+ i +"]/clamkey");
  5023. // 나머지는 미심사, 보류, 심사중인 다음 대상자를 조회한다.
  5024. } else {
  5025. nowjudgendyn = trgtManWindow.model.getValue("/root/main/list1/clbs["+ i +"]/judgendyn");
  5026. if (nowjudgendyn == "A" || nowjudgendyn == "N" || nowjudgendyn == "B" ) {
  5027. model.setValue("/root/hidden/smpid20400/rslt/selectedRow", i);
  5028. trgtManWindow.grd_specclbs.row = i;
  5029. nextclamkey = trgtManWindow.model.getValue("/root/main/list1/clbs["+ i +"]/clamkey");
  5030. }
  5031. }
  5032. }
  5033. }
  5034. trgtManWindow.javascript.fSetWorkStatCnt(); // 총건수와 기타 심사상태에 따른 cnt를 표시한다.
  5035. trgtManWindow.model.refresh();
  5036. return nextclamkey;
  5037. }
  5038. //---------------------------------------------------------------------
  5039. // 다음 대상자 찾기 : 선별심사인 경우
  5040. //---------------------------------------------------------------------
  5041. function fSrchNextJudgTrgtMan_DailyJudgMode_SPEC(trgtManWindow, JudgClamkey) { // selectedRow: 현재 선택된 row / judgendyn: 심사완료여부
  5042. var judgendcheck;
  5043. var nextclamym = "";
  5044. var nextclamkey = "";
  5045. for (var i = 1; i < trgtManWindow.grd_specclbs.rows; i++) {
  5046. if (JudgClamkey == trgtManWindow.model.getValue("/root/main/list1/clbs["+ i +"]/clamkey")) {
  5047. model.setValue("/root/hidden/smpid20400/rslt/selectedRow", i);
  5048. trgtManWindow.grd_specclbs.row = i;
  5049. nextclamkey = trgtManWindow.model.getValue("/root/main/list1/clbs["+ i +"]/clamkey");
  5050. return nextclamkey;
  5051. }
  5052. }
  5053. trgtManWindow.javascript.fSetWorkStatCnt(); // 총건수와 기타 심사상태에 따른 cnt를 표시한다.
  5054. trgtManWindow.model.refresh();
  5055. return nextclamkey;
  5056. }
  5057. //--------------------------------------------------
  5058. // "완료"~"삭제" 처리 후 다음 심사대상자를 조회한다.
  5059. //--------------------------------------------------
  5060. function fGetNextAftJudgTrgtMan(judgendyn) {
  5061. //완료, 삭제시 심사대상자를 제외한 팝업창 제거
  5062. var judgWindow1 = getChildWindow("SMPID20400"); // SMPID20400_외래사후심사대상자조회.xrw
  5063. var judgWindow2 = getChildWindow("SMPID20500"); // SMPID20500_외래사후심사관리.xrw
  5064. var judgWindow3 = getChildWindow("SMPID20300"); // SMPID20300_입원사후심사관리.xrw
  5065. var judgWindow4 = getChildWindow("SPPIZ00600ML"); // SPPIZ00600_상병및처방별치식.xrw
  5066. if (judgWindow1 == null && judgWindow2 == null && judgWindow3 == null && judgWindow4 == null) {
  5067. var childCnt = window.children.length;
  5068. for( var i = childCnt; i > 0; i-- ) {
  5069. var child = window.children.item(i-1);
  5070. if (window.children.item(i-1).window.type != "modal") {
  5071. window.children.item(i-1).close();
  5072. }
  5073. }
  5074. } else{
  5075. var childCnt = window.children.length;
  5076. for( var i = childCnt; i > 0; i-- ) {
  5077. var isClose = "true";
  5078. var child = window.children.item(i-1);
  5079. var curWinID = child.model.getValue("/root/properties/uid/myself");
  5080. if (judgWindow1 != null) {
  5081. var judgWinID = judgWindow1.model.getValue("/root/properties/uid/myself");
  5082. if (curWinID == judgWinID) {
  5083. isClose = "false";
  5084. }
  5085. }
  5086. if (judgWindow2 != null) {
  5087. var judgWinID = judgWindow2.model.getValue("/root/properties/uid/myself");
  5088. if (curWinID == judgWinID) {
  5089. isClose = "false";
  5090. }
  5091. }
  5092. if (judgWindow3 != null) {
  5093. var judgWinID = judgWindow3.model.getValue("/root/properties/uid/myself");
  5094. if (curWinID == judgWinID) {
  5095. isClose = "false";
  5096. }
  5097. }
  5098. if (judgWindow4 != null) {
  5099. var judgWinID = judgWindow4.model.getValue("/root/properties/uid/myself");
  5100. if (curWinID == judgWinID) {
  5101. isClose = "false";
  5102. }
  5103. }
  5104. if (isClose != "false") {
  5105. if (window.children.item(i-1).window.type != "modal") {
  5106. window.children.item(i-1).close();
  5107. }
  5108. }
  5109. }
  5110. }
  5111. // 상병그리드에서 editmode인상태에서 F7 단축키 누렀을 경우 에러발생방지 위함. 절대 지우지 말것.
  5112. model.setFocus("grd_clodhist");
  5113. var clamym = model.getValue("/root/main/item1/clbs/clamym");
  5114. var clamdg = model.getValue("/root/main/item1/clbs/clamdg");
  5115. var pid = model.getValue("/root/main/item1/clbs/pid");
  5116. var pidsn = model.getValue("/root/main/item1/clbs/pidsn");
  5117. if (pid) {
  5118. var rslt = fSaveOutAftJudg(judgendyn);
  5119. if (rslt == null || rslt == "") {
  5120. return;
  5121. }
  5122. else {
  5123. if (rslt == "false") { // 변경된 데이터가 없는 경우
  5124. model.removeNodeset("/root/send/item4");
  5125. if (model.getValue("/root/send/item4/endclbs/suppkind")) {
  5126. model.makeValue("/root/send/item4/endclbs/insukind", model.getValue("/root/main/item1/clbs/insukindcd"));
  5127. model.makeValue("/root/send/item4/endclbs/ordtodd", model.getValue("/root/main/item1/clbs/ordtodd"));
  5128. }
  5129. model.makeValue("/root/send/item4/endclbs/clamym", clamym);
  5130. model.makeValue("/root/send/item4/endclbs/clamdg", clamdg);
  5131. model.makeValue("/root/send/item4/endclbs/pid", pid);
  5132. model.makeValue("/root/send/item4/endclbs/pidsn", pidsn);
  5133. model.makeValue("/root/send/item4/endclbs/judgendyn", judgendyn);
  5134. submit("TXPID20302");
  5135. fSetJudgSaveState(judgendyn); // 대상자조회 심사완료여부 (P0151)
  5136. model.setValue("/root/main/item1/clbs/judgendyn", judgendyn);
  5137. model.refreshpart("/root/main/item1/clbs/judgendyn")
  5138. }
  5139. var userid = getUserId(); // (common.js) 현재 로그인한 사용자 번호(ID)
  5140. if (userid) {
  5141. } else {
  5142. userid = "12345678";
  5143. }
  5144. model.setValue("/root/main/item1/clbs/lastupdtrid", userid);
  5145. model.setValue("/root/main/item1/clbs/judgendyn", judgendyn);
  5146. }
  5147. // 다음 심사대상자로 넘어간다.
  5148. var trgtManWindow = getChildWindow("SMPID20400"); // SMPID20400_외래사후심사대상자조회.xrw
  5149. if (trgtManWindow != null) {
  5150. var selectedRow = model.getValue("/root/hidden/smpid20400/rslt/selectedRow");
  5151. var reloadyn = trgtManWindow.instance1.getXPathString("/root/temp/reloadyn");
  5152. var patunitsrch1 = trgtManWindow.instance1.getXPathString("/root/send/item1/patunitsrch1");
  5153. if (reloadyn == "Y" && patunitsrch1.length == 0 ) {
  5154. trgtManWindow.javascript.fGetOutAftJudgTrgtManList("listSrch");
  5155. trgtManWindow.javascript.fGetResetOptList();
  5156. selectedRow = parseInt(selectedRow)-1;
  5157. }
  5158. if (selectedRow) {
  5159. var trgtmanlist = trgtManWindow.instance1.selectSingleNode("/root/main/list1/clbs");
  5160. if (trgtmanlist == null) { // 조회된 대상자 목록이 없는 경우
  5161. messageBox("조회된 심사대상자 목록이", "I004"); ///조회된 심사대상자 목록이 없습니다.
  5162. } else {
  5163. trgtmanlist = trgtManWindow.instance1.selectSingleNode("/root/main/list1");
  5164. var maxRow = trgtmanlist.childNodes.length;
  5165. var nextclamkey = "";
  5166. if (selectedRow < maxRow) {
  5167. var srchmode = trgtManWindow.model.getValue("/root/hidden/clbs/srchmode");
  5168. if (srchmode == "specclbs") { // 선별심사 모드인 경우
  5169. // 다음대상자조회
  5170. nextclamkey = fSrchNextJudgTrgtManSPEC(trgtManWindow, selectedRow, judgendyn);
  5171. } else {
  5172. trgtManWindow.model.setValue("/root/main/list1/clbs["+ selectedRow +"]/judgendyn", judgendyn);
  5173. trgtManWindow.model.setValue("/root/main/list1/clbs["+ selectedRow +"]/lastupdtrid", userid);
  5174. if (btn_attData.attribute("class") == "btn5_letter4") {
  5175. trgtManWindow.model.setValue("/root/main/list1/clbs["+ selectedRow +"]/prepdata", "Y");
  5176. } else {
  5177. trgtManWindow.model.setValue("/root/main/list1/clbs["+ selectedRow +"]/prepdata", "");
  5178. }
  5179. // 다음대상자조회
  5180. nextclamkey = fSrchNextJudgTrgtManCLBS(trgtManWindow, selectedRow, judgendyn);
  5181. }
  5182. if (nextclamkey) {
  5183. var irow = model.getValue("/root/hidden/smpid20400/rslt/selectedRow");
  5184. var clamym = trgtManWindow.model.getValue("/root/main/list1/clbs["+ irow +"]/clamym");
  5185. var clamdg = trgtManWindow.model.getValue("/root/main/list1/clbs["+ irow +"]/clamdg");
  5186. var pid = trgtManWindow.model.getValue("/root/main/list1/clbs["+ irow +"]/pid");
  5187. var pidsn = trgtManWindow.model.getValue("/root/main/list1/clbs["+ irow +"]/pidsn");
  5188. var gridjudgendyn = trgtManWindow.model.getValue("/root/main/list1/clbs["+ irow +"]/judgendyn");
  5189. //var gridcutprcpyn = trgtManWindow.model.getValue("/root/main/list1/clbs["+ irow +"]/cutprcpyn");
  5190. var gridcutprcpyn = trgtManWindow.model.getValue("/root/send/item1/cutprcpsel");
  5191. var gridtootpopyn = trgtManWindow.model.getValue("/root/temp/tootpopupyn");
  5192. model.setValue("/root/hidden/smpid20400/rslt/clamym", clamym);
  5193. model.setValue("/root/hidden/smpid20400/rslt/clamdg", clamdg);
  5194. model.setValue("/root/hidden/smpid20400/rslt/pid", pid);
  5195. model.setValue("/root/hidden/smpid20400/rslt/pidsn", pidsn);
  5196. model.setValue("/root/hidden/smpid20400/rslt/judgendyn", gridjudgendyn);
  5197. model.setValue("/root/hidden/smpid20400/rslt/cutprcpyn", gridcutprcpyn);
  5198. model.setValue("/root/hidden/smpid20400/rslt/tootpopupyn", gridtootpopyn);
  5199. fGetOutAftJudgMngt();
  5200. trgtManWindow.javascript.setPopupRefresh(pid);
  5201. return;
  5202. } else {
  5203. messageBox("다음 심사 대상자의 정보가", "I004"); ///다음 심사 대상자의 정보가 없습니다.
  5204. }
  5205. } else {
  5206. trgtManWindow.model.setValue("/root/main/list1/clbs["+ selectedRow +"]/judgendyn", judgendyn);
  5207. trgtManWindow.model.setValue("/root/main/list1/clbs["+ selectedRow +"]/lastupdtrid", userid);
  5208. if (btn_attData.attribute("class") == "btn5_letter4") {
  5209. trgtManWindow.model.setValue("/root/main/list1/clbs["+ selectedRow +"]/prepdata", "Y");
  5210. } else {
  5211. trgtManWindow.model.setValue("/root/main/list1/clbs["+ selectedRow +"]/prepdata", "");
  5212. }
  5213. trgtManWindow.javascript.fSetWorkStatCnt(); // 총건수와 기타 심사상태에 따른 cnt를 표시한다.
  5214. trgtManWindow.model.refresh();
  5215. // 마지막 줄인 경우 이후 대상자가 없다.
  5216. messageBox("조회된 마지막 심사대상자 입니다. 이후 심사 대상자가", "I004"); ///조회된 마지막 심사대상자 입니다. 이후 심사 대상자가 없습니다.
  5217. }
  5218. }
  5219. }
  5220. else {
  5221. messageBox("화면이 변경되었으므로 다음 대상자를 다시", "C002"); ///화면이 변경되었으므로 다음 대상자를 다시 선택하십시오.
  5222. }
  5223. if (model.getValue("/root/send/item4/endclbs/suppkind")) {
  5224. // 요율이 바뀌었으므로 현재 대상자 정보를 다시 조회해서 보여줘야 함
  5225. model.resetInstanceNode("/root/hidden/item1/initclbs/clbs");
  5226. model.resetInstanceNode("/root/hidden/smpid20400/rslt");
  5227. model.setValue("/root/hidden/smpid20400/rslt/clamym", clamym);
  5228. model.setValue("/root/hidden/smpid20400/rslt/clamdg", clamdg);
  5229. model.setValue("/root/hidden/smpid20400/rslt/pid", pid);
  5230. model.setValue("/root/hidden/smpid20400/rslt/pidsn", pidsn);
  5231. // 대상자조회 화면에서 선택했던 환자의 Row를 기억해 두고, pre/next대상조회 버튼에서 이전, 이후 대상자를 조회한다.
  5232. model.setValue("/root/hidden/smpid20400/rslt/selectedRow", selectedRow);
  5233. model.setValue("/root/hidden/smpid20400/rslt/cutprcpyn", trgtManWindow.model.getValue("/root/send/item1/cutprcpsel")); // 20200302 추가
  5234. fGetOutAftJudgMngt();
  5235. }
  5236. return;
  5237. }
  5238. }
  5239. }
  5240. //------------------------------------------------------
  5241. // 이전명세서조회에서 해당명세서를 심사모드로 조회할경우
  5242. //-----------------------------------------------------
  5243. function fGetPreDocuAftJudgTrgtMan(judgendyn) {
  5244. // 상병그리드에서 editmode인상태에서 F7 단축키 누렀을 경우 에러발생방지 위함. 절대 지우지 말것.
  5245. model.setFocus("grd_clodhist");
  5246. var datachange=false;
  5247. var clamym = model.getValue("/root/main/item1/clbs/clamym");
  5248. var clamdg = model.getValue("/root/main/item1/clbs/clamdg");
  5249. var pid = model.getValue("/root/main/item1/clbs/pid");
  5250. var pidsn = model.getValue("/root/main/item1/clbs/pidsn");
  5251. if (grd_predocu.row >= grd_predocu.fixedrows) {
  5252. var row = grd_predocu.row;
  5253. var selclamym = model.getValue("/root/main/list4/clbs["+ row +"]/clamym");
  5254. var selclamdg = model.getValue("/root/main/list4/clbs["+ row +"]/clamdg");
  5255. var selpid = model.getValue("/root/main/list4/clbs["+ row +"]/pid");
  5256. var selpidsn = model.getValue("/root/main/list4/clbs["+ row +"]/pidsn");
  5257. if ((selclamym == clamym)
  5258. && (selclamdg == clamdg)
  5259. && (selpid == pid)
  5260. && (selpidsn == pidsn)) {
  5261. messageBox("현재 심사중인 명세서와 동일한 명세서가", "E005"); ///현재 심사중인 명세서와 동일한 명세서가 선택되었습니다.
  5262. return;
  5263. }
  5264. }
  5265. //alert("1");
  5266. if (pid) {
  5267. //alert("2");
  5268. // 인적사항
  5269. var initclbs = instance1.selectNodesXml("/root/hidden/item1/initclbs/clbs");
  5270. var currentclbs = instance1.selectNodesXml("/root/main/item1/clbs");
  5271. if (initclbs != currentclbs) {
  5272. datachange = true;
  5273. }
  5274. // 심사메모
  5275. var initmemo = instance1.selectNodesXml("/root/hidden/item1/initmemo/memo");
  5276. var currentmemo = instance1.selectNodesXml("/root/main/item1/memo");
  5277. if (initmemo != currentmemo) {
  5278. datachange = true;
  5279. }
  5280. var initmemo = instance1.selectNodesXml("/root/hidden/item1/initmemo/memo");
  5281. var currentmemo = instance1.selectNodesXml("/root/main/item1/memo");
  5282. if (initmemo != currentmemo) {
  5283. // 심사자메모, EDI청구메모를 특정내역 형식에 맞춰 설정한다.
  5284. var judgmemo = model.getValue("/root/main/item1/memo/judgmemo").getTrim();
  5285. var edimemo = model.getValue("/root/main/item1/memo/edimemo").getTrim();
  5286. var noChange = true;
  5287. if (judgmemo != model.getValue("/root/hidden/item1/initmemo/memo/judgmemo").getTrim()) {
  5288. noChange = false; // 심사자메모가 변경된 경우임
  5289. }
  5290. if (edimemo != model.getValue("/root/hidden/item1/initmemo/memo/edimemo").getTrim()) {
  5291. noChange = false; // EDI청구메모가 변경된 경우임
  5292. }
  5293. if (noChange == false) {
  5294. datachange = true;
  5295. }
  5296. }
  5297. // 상병
  5298. var cldiupdtdata = getGridUpdateData(grd_cldihist);
  5299. if (cldiupdtdata != "" && grd_cldihist.rows > 1) {
  5300. datachange = true;
  5301. }
  5302. // 처방
  5303. var clodupdtdata = getGridUpdateData(grd_clodhist);
  5304. if (clodupdtdata != "" && (grd_clodhist.rows > 1 || grd_delclod.rows > 1)) {
  5305. datachange = true;
  5306. }
  5307. // 특정내역
  5308. var clspupdtdata = getGridUpdateData(grd_clsphist);
  5309. if (clspupdtdata != "" && grd_clsphist.rows > 1) {
  5310. datachange = true;
  5311. }
  5312. // 원외처방
  5313. var clopupdtdata = getGridUpdateData(grd_oprcphist);
  5314. if (clopupdtdata != "" && grd_oprcphist.rows > 1) {
  5315. datachange = true;
  5316. }
  5317. if (datachange == true) {
  5318. var ans = messageBox("수정사항이 있습니다. 저장", "S001"); ///수정사항이 있습니다. 저장하시려면 예(Yes)\n아니면 아니오(No)
  5319. if (ans == 6) { // 6: yes, 7:no, 2:cancel
  5320. fSaveOutAftJudg("B"); // 저장
  5321. }
  5322. }
  5323. var userid = getUserId(); // (common.js) 현재 로그인한 사용자 번호(ID)
  5324. if (userid) {
  5325. } else {
  5326. userid = "12345678";
  5327. }
  5328. //alert("3");
  5329. // 다음 심사대상자로 넘어간다.
  5330. var trgtManWindow = getChildWindow("SMPID20400"); // SMPID20400_외래사후심사대상자조회.xrw
  5331. if (trgtManWindow != null) {
  5332. //alert("4");
  5333. var selectedRow = model.getValue("/root/hidden/smpid20400/rslt/selectedRow");
  5334. if (selectedRow) {
  5335. //alert("5");
  5336. var trgtmanlist = trgtManWindow.instance1.selectSingleNode("/root/main/list1/clbs");
  5337. if (trgtmanlist == null) { // 조회된 대상자 목록이 없는 경우
  5338. messageBox("조회된 심사대상자 목록이", "I004"); ///조회된 심사대상자 목록이 없습니다.
  5339. }
  5340. else {
  5341. //alert("6");
  5342. var row = grd_predocu.row;
  5343. var clamkey = model.getValue("/root/main/list4/clbs["+ row +"]/clamkey");
  5344. trgtmanlist = trgtManWindow.instance1.selectSingleNode("/root/main/list1");
  5345. var maxRow = trgtmanlist.childNodes.length;
  5346. var nextclamkey = "";
  5347. if (selectedRow < maxRow) {
  5348. //alert("7");
  5349. // 이전명세서조회 그리드를 닫는다.
  5350. //btn_closepredoculist.dispatch("DOMActivate");
  5351. fGetClosepredocuList();
  5352. var srchmode = trgtManWindow.model.getValue("/root/hidden/clbs/srchmode");
  5353. if (srchmode == "specclbs") { // 선별심사 모드인 경우
  5354. nextclamkey = fSrchNextJudgTrgtMan_DailyJudgMode_SPEC(trgtManWindow, clamkey);
  5355. } else {
  5356. //trgtManWindow.model.setValue("/root/main/list1/clbs["+ selectedRow +"]/judgendyn", judgendyn);
  5357. //trgtManWindow.model.setValue("/root/main/list1/clbs["+ selectedRow +"]/lastupdtrid", userid);
  5358. nextclamkey = fSrchNextJudgTrgtMan_DailyJudgMode_CLBS(trgtManWindow, clamkey);
  5359. }
  5360. if (nextclamkey) {
  5361. //alert("8");
  5362. var irow = model.getValue("/root/hidden/smpid20400/rslt/selectedRow");
  5363. var clamym = trgtManWindow.model.getValue("/root/main/list1/clbs["+ irow +"]/clamym");
  5364. var clamdg = trgtManWindow.model.getValue("/root/main/list1/clbs["+ irow +"]/clamdg");
  5365. var pid = trgtManWindow.model.getValue("/root/main/list1/clbs["+ irow +"]/pid");
  5366. var pidsn = trgtManWindow.model.getValue("/root/main/list1/clbs["+ irow +"]/pidsn");
  5367. model.setValue("/root/hidden/smpid20400/rslt/clamym", clamym);
  5368. model.setValue("/root/hidden/smpid20400/rslt/clamdg", clamdg);
  5369. model.setValue("/root/hidden/smpid20400/rslt/pid", pid);
  5370. model.setValue("/root/hidden/smpid20400/rslt/pidsn", pidsn);
  5371. fGetOutAftJudgMngt();
  5372. trgtManWindow.javascript.setPopupRefresh(pid);
  5373. return;
  5374. } else {
  5375. //alert("9");
  5376. // 화면에 대상자가 존재하지 않은 경우 이전명세서에서 선택된 명세서를 바로 조회한다.
  5377. //if (grd_predocu.isCell(event.target) && grd_predocu.mouseRow >= grd_predocu.fixedrows) {
  5378. if (grd_predocu.row >= grd_predocu.fixedrows) {
  5379. var row = grd_predocu.row;
  5380. var clamym = model.getValue("/root/main/list4/clbs["+ row +"]/clamym");
  5381. var clamdg = model.getValue("/root/main/list4/clbs["+ row +"]/clamdg");
  5382. var pid = model.getValue("/root/main/list4/clbs["+ row +"]/pid");
  5383. var pidsn = model.getValue("/root/main/list4/clbs["+ row +"]/pidsn");
  5384. model.setValue("/root/hidden/smpid20400/rslt/clamym", clamym);
  5385. model.setValue("/root/hidden/smpid20400/rslt/clamdg", clamdg);
  5386. model.setValue("/root/hidden/smpid20400/rslt/pid", pid);
  5387. model.setValue("/root/hidden/smpid20400/rslt/pidsn", pidsn);
  5388. fGetOutAftJudgMngt();
  5389. trgtManWindow.javascript.setPopupRefresh(pid);
  5390. }
  5391. }
  5392. } else {
  5393. //alert("10");
  5394. trgtManWindow.model.setValue("/root/main/list1/clbs["+ selectedRow +"]/judgendyn", judgendyn);
  5395. trgtManWindow.model.setValue("/root/main/list1/clbs["+ selectedRow +"]/lastupdtrid", userid);
  5396. if (btn_attData.attribute("class") == "btn5_letter4") {
  5397. trgtManWindow.model.setValue("/root/main/list1/clbs["+ selectedRow +"]/prepdata", "Y");
  5398. } else {
  5399. trgtManWindow.model.setValue("/root/main/list1/clbs["+ selectedRow +"]/prepdata", "");
  5400. }
  5401. trgtManWindow.javascript.fSetWorkStatCnt(); // 총건수와 기타 심사상태에 따른 cnt를 표시한다.
  5402. trgtManWindow.model.refresh();
  5403. // 마지막 줄인 경우 이후 대상자가 없다.
  5404. messageBox("조회된 마지막 심사대상자 입니다. 이후 심사 대상자가", "I004"); ///조회된 마지막 심사대상자 입니다. 이후 심사 대상자가 없습니다.
  5405. }
  5406. }
  5407. }
  5408. else {
  5409. //alert("11");
  5410. //if (grd_predocu.isCell(event.target) && grd_predocu.mouseRow >= grd_predocu.fixedrows) {
  5411. if (grd_predocu.row >= grd_predocu.fixedrows) {
  5412. //alert("12");
  5413. var row = grd_predocu.row;
  5414. var clamym = model.getValue("/root/main/list4/clbs["+ row +"]/clamym");
  5415. var clamdg = model.getValue("/root/main/list4/clbs["+ row +"]/clamdg");
  5416. var pid = model.getValue("/root/main/list4/clbs["+ row +"]/pid");
  5417. var pidsn = model.getValue("/root/main/list4/clbs["+ row +"]/pidsn");
  5418. model.setValue("/root/hidden/smpid20400/rslt/clamym", clamym);
  5419. model.setValue("/root/hidden/smpid20400/rslt/clamdg", clamdg);
  5420. model.setValue("/root/hidden/smpid20400/rslt/pid", pid);
  5421. model.setValue("/root/hidden/smpid20400/rslt/pidsn", pidsn);
  5422. fGetOutAftJudgMngt();
  5423. }
  5424. }
  5425. return;
  5426. }
  5427. }
  5428. }
  5429. //-------------------------------------------------------------------------
  5430. // 처방 조회부 - 재행/급여/항목구분 Radio 선택에 따라 처방 내역을 보여준다.
  5431. //-------------------------------------------------------------------------
  5432. function fGetSelectedOrderData() {
  5433. var selectedRdoPay = model.getValue("/root/hidden/list2/clodsrch/selectedRdoPay");
  5434. var selectedRdoItem = model.getValue("/root/hidden/list2/clodsrch/selectedRdoItem");
  5435. var pre_ediitem1 = "";
  5436. var pre_backcolor = "#f4f4f4"; // datagrid backcoloralternate:#f4f4f4
  5437. var insukind = model.getValue("/root/main/Item1/clbs/insukindcd");
  5438. insukind = insukind.substr(1,1);
  5439. for (var i = grd_clodhist.fixedRows; i < grd_clodhist.rows; i ++ ) {
  5440. grd_clodhist.rowHidden(i) = false;
  5441. if (selectedRdoPay == "" || selectedRdoPay == "-") { // 전체
  5442. } else {
  5443. if (selectedRdoPay == "0") {
  5444. if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("payflag")) != "0" && grd_clodhist.valueMatrix(i, grd_clodhist.colRef("payflag")) != "9") {
  5445. grd_clodhist.rowHidden(i) = true;
  5446. }
  5447. }
  5448. else {
  5449. if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("payflag")) != selectedRdoPay) {
  5450. grd_clodhist.rowHidden(i) = true;
  5451. }
  5452. }
  5453. }
  5454. if (selectedRdoItem == "" || selectedRdoItem == "-") { // 전체
  5455. } else {
  5456. if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("item1")) != selectedRdoItem) {
  5457. grd_clodhist.rowHidden(i) = true;
  5458. }
  5459. }
  5460. }
  5461. }
  5462. //------------------------------------------
  5463. // 처방 항목 구분 및 선별심사 처방 색깔 구분
  5464. //------------------------------------------
  5465. function fSetOrderData() {
  5466. model.resetInstanceNode("/root/hidden/list2/cloditem1");
  5467. // 20100305 초기화 추가
  5468. grd_oprcphist.initStyle("color");
  5469. grd_clodhist.initStyle("color");
  5470. grd_clodhist.initStyle("background-color");
  5471. var pre_item1 = "";
  5472. var pre_backcolor = "#f4f4f4"; // datagrid backcoloralternate:#f4f4f4
  5473. for (var i = 1; i <= grd_cldihist.rows; i++) {
  5474. var col_vcode = grd_cldihist.colRef("vcode");
  5475. var col_diagcd = grd_cldihist.colRef("diagcd");
  5476. var srchnm = grd_cldihist.valueMatrix(i, col_diagcd).substr(0, 2);
  5477. var t_vcode = grd_cldihist.valueMatrix(i, col_vcode);
  5478. var rowno, rn = 0;
  5479. rowno = grd_cldihist.findRow(srchnm,grd_cldihist.fixedrows ,col_diagcd, true, false);
  5480. if (t_vcode != "V252" && t_vcode != "V193") {
  5481. while( rowno > 0){
  5482. var s_vcode = grd_cldihist.valueMatrix(rowno, col_vcode );
  5483. var t_diagcd = grd_cldihist.valueMatrix(rowno, col_diagcd).substr(0, 2);
  5484. if (rowno != i && t_diagcd != "" && t_vcode != "" && srchnm == t_diagcd && t_vcode == s_vcode ) {
  5485. grd_cldihist.cellStyle("background-color", rowno, grd_cldihist.colRef("rowstat"), rowno, grd_cldihist.colRef("workflag")) = "#ffff9c"; //#ffff9c=연한노랑
  5486. }
  5487. rowno = grd_cldihist.findRow(srchnm,rowno + 1 ,col_diagcd, true, false);
  5488. }
  5489. }
  5490. var srchnm2 = grd_cldihist.valueMatrix(i, col_diagcd).substr(0, 3);
  5491. rn = grd_cldihist.findRow(srchnm2,grd_cldihist.fixedrows ,col_diagcd, true, false);
  5492. while( rn > 0){
  5493. var t_diagcd = grd_cldihist.valueMatrix(rn, col_diagcd).substr(0, 3);
  5494. if (rn != i && srchnm2 == t_diagcd && t_diagcd != "") {
  5495. grd_cldihist.cellStyle("background-color", rn, grd_cldihist.colRef("rowstat"), rn, grd_cldihist.colRef("workflag")) = "#ffff9c"; //#ffff9c=연한노랑
  5496. }
  5497. rn = grd_cldihist.findRow(srchnm2 ,rn + 1 ,col_diagcd, true, false);
  5498. }
  5499. }
  5500. // 상병그리드 해당상병보다 큰 5단이상의 세부상병이 있는 경우 표시해준다.
  5501. var col_kcd6chk = grd_cldihist.colRef("kcd6chk");
  5502. var rn = grd_cldihist.findRow("Y",grd_cldihist.fixedrows ,col_kcd6chk, true, false);
  5503. while( rn > 0){
  5504. var t_diagcd = grd_cldihist.valueMatrix(rn, col_kcd6chk).substr(0, 3);
  5505. grd_cldihist.cellStyle("background-color", rn, grd_cldihist.colRef("rowstat"), rn, grd_cldihist.colRef("diagnm")) = "#6699ff"; // #0000ff=파랑
  5506. rn = grd_cldihist.findRow("Y" ,rn + 1 ,col_kcd6chk, true, false);
  5507. }
  5508. //종료상병을 표시한다.
  5509. var col_endyn = grd_cldihist.colRef("endyn");
  5510. rn = grd_cldihist.findRow("Y",grd_cldihist.fixedrows ,col_endyn, true, false);
  5511. while( rn > 0){
  5512. var t_diagcd = grd_cldihist.valueMatrix(rn, col_endyn).substr(0, 3);
  5513. grd_cldihist.cellStyle("background-color", rn, grd_cldihist.colRef("rowstat"), rn, grd_cldihist.colRef("diagnm")) = "#ff0000"; // #ff0000=빨강
  5514. rn = grd_cldihist.findRow("Y" ,rn + 1 ,col_endyn, true, false);
  5515. }
  5516. // 원외처방 선별심사 색깔구분 추가 - 20090814 박창원
  5517. for (var i = 1; i <= grd_oprcphist.rows; i++) {
  5518. // 선별심사 처방 색깔 구분
  5519. var spcljudgyn = model.getValue("/root/main/list7/clop["+ i +"]/spcljudgyn");
  5520. // 20100402 필수심사 처방 색깔 구분
  5521. var surecdyn = model.getValue("/root/main/list7/clop["+ i +"]/surecdyn");
  5522. // 선별심사
  5523. if (spcljudgyn == "Y") {
  5524. //grd_clodhist.rowStyle(i, "data", "color") = "#ff3333"; // ff3333=붉은색
  5525. grd_oprcphist.rowStyle(i, "data", "color") = "#ff3333"; // ff3333=붉은색 // 20100305 그리드 잘못지정되어 있어 수정
  5526. }
  5527. // 20100402 필수심사
  5528. else if ( surecdyn == "Y" ) { // 20100402 추가 필수+선별은 선별우선
  5529. grd_oprcphist.rowStyle(i, "data", "color") = "#0000ff"; // 0000ff=파란색
  5530. } else {
  5531. // //grd_clodhist.rowStyle(i, "data", "color") = "#000000"; // 000000=검은색
  5532. grd_oprcphist.rowStyle(i, "data", "color") = "#000000"; // 000000=검은색 // 20100305 그리드 잘못지정되어 있어 수정
  5533. }
  5534. }
  5535. for (var i = 1; i <= grd_clodhist.rows; i++) { // 처방 개수만큼 돌면서
  5536. // 선별심사 처방 색깔 구분
  5537. var spcljudgyn = model.getValue("/root/main/list2/clod["+ i +"]/spcljudgyn");
  5538. // 20100402 필수심사 처방 색깔 구분
  5539. var surecdyn = model.getValue("/root/main/list2/clod["+ i +"]/surecdyn");
  5540. // 선별심사
  5541. if (spcljudgyn == "Y") {
  5542. grd_clodhist.rowStyle(i, "data", "color") = "#ff3333"; // ff3333=붉은색
  5543. }
  5544. // 20100402 필수심사
  5545. else if ( surecdyn == "Y" ) { // 20100402 추가 필수+선별은 선별우선
  5546. grd_clodhist.rowStyle(i, "data", "color") = "#0000ff"; // 0000ff=파란색
  5547. }
  5548. else {
  5549. grd_clodhist.rowStyle(i, "data", "color") = "#000000"; // 000000=검은색
  5550. }
  5551. if (grd_clodhist.rowHidden(i) == false) {
  5552. // 항목의 항 별로 흰색/회색 구분표시
  5553. var item1 = model.getValue("/root/main/list2/clod["+ i +"]/ediitem1");
  5554. if (item1 != pre_item1) { // 항목의 항이 변경된 경우
  5555. pre_item1 = item1;
  5556. if (pre_backcolor == "#f4f4f4") {
  5557. pre_backcolor = "#ffffff"; // 배경색 없음 // #ffffff = White
  5558. } else {
  5559. pre_backcolor = "#f4f4f4"; // datagrid backcoloralternate:#f4f4f4
  5560. }
  5561. }
  5562. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("edilnno")) = pre_backcolor;
  5563. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("ediitem1")) = pre_backcolor;
  5564. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("ediitem2")) = pre_backcolor;
  5565. }
  5566. // 조정사유코드 입력된 처방 색깔 구분
  5567. var adjtresncd = model.getValue("/root/main/list2/clod["+ i +"]/adjtresncd");
  5568. if (adjtresncd != "" && adjtresncd != "-") {
  5569. // 처방 Grid 배경색을 설정한다. - 심사사유있는 row (카키색)
  5570. fOrderBkColorResn(i);
  5571. }
  5572. // 단가오류, 계산착오인 처방색깔 구분 : 심사자에게 알려주기 위함 2009-03-20
  5573. if (model.getValue("/root/main/list2/clod["+ i +"]/erroramtyn") == "Y") {
  5574. var error_backcolor = "#ffff9c"; // ffff9c=연한노랑
  5575. //grd_clodhist.rowStyle(i, "data", "background-color") = "#ffff9c"; // ffff9c=연한노랑
  5576. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("rowstat")) = error_backcolor;
  5577. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("edilnno")) = error_backcolor;
  5578. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("ediitem1")) = error_backcolor;
  5579. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("ediitem2")) = error_backcolor;
  5580. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("ordfromdd")) = error_backcolor;
  5581. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("grupsnglflag")) = error_backcolor;
  5582. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("grupcalcscorcd")) = error_backcolor;
  5583. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("matractflag")) = error_backcolor;
  5584. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("grupcalcscorcd")) = error_backcolor;
  5585. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("snglcalcscorcd")) = error_backcolor;
  5586. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("basecd")) = error_backcolor;
  5587. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("edicd")) = error_backcolor;
  5588. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("estmmncd")) = error_backcolor;
  5589. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("estmcd")) = error_backcolor;
  5590. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("hosinresncd")) = error_backcolor;
  5591. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("hngnm")) = error_backcolor;
  5592. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("payflag")) = error_backcolor;
  5593. }
  5594. // --------------------------------------------------------------------------
  5595. // 2008-08-25 김상진. 줄단위 특정내역 색깔구분 일단 뺀다 나중에 오픈 후 처리
  5596. // --------------------------------------------------------------------------
  5597. /*
  5598. // 줄단위 특정내역 입력된 처방 색깔 구분
  5599. var lnunitspclspecyn = model.getValue("/root/main/list2/clod["+ i +"]/lnunitspclspecyn");
  5600. if (lnunitspclspecyn) {
  5601. var jx999cnt = 0;
  5602. var nonjx999cnt = 0; // JX999가 아닌 특정내역코드의 수
  5603. for (var j = 1; j < grd_clsphist.rows; j++) {
  5604. if (grd_clsphist.rowstatus(j) != 4) {
  5605. var spclLnNo = model.getValue("/root/main/list3/clsp["+ j +"]/edilnno");
  5606. if (spclLnNo == model.getValue("/root/main/list2/clod["+ i +"]/edilnno")) {
  5607. var spclcd = model.getValue("/root/main/list3/clsp["+ j +"]/spclcd");
  5608. if (spclcd == "JX999") { // JX999인 경우
  5609. jx999cnt++;
  5610. }
  5611. else if (spclcd != "JT001") { // JX999도, 확인코드도 아닌 경우
  5612. nonjx999cnt++;
  5613. }
  5614. }
  5615. }
  5616. }
  5617. if (jx999cnt > 0) {
  5618. if (nonjx999cnt == 0) { // JX999만 있는 경우
  5619. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("lnunitspclspecyn")) = "#f7a08b"; // class="color_6" 다홍색
  5620. } else { // JX999 + 다른 코드도 있는 경우
  5621. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("lnunitspclspecyn")) = "#b5a5d1"; // 연한 보라색
  5622. }
  5623. } else {
  5624. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff = White
  5625. }
  5626. } else {
  5627. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff = White
  5628. }
  5629. */
  5630. // --------------------------------------------------------------------------
  5631. // 2008-08-25 김상진. 줄단위 특정내역 색깔구분 일단 뺀다 나중에 오픈 후 처리
  5632. // --------------------------------------------------------------------------
  5633. /*
  5634. // 항목구분 조회부 Radio에 해당하는 처방이 있는지 여부를 확인한다.
  5635. var item1 = model.getValue("/root/main/list2/clod["+ i +"]/item1");
  5636. if (item1) {
  5637. var path = "/root/hidden/list2/cloditem1/ediitem1_"+ item1;
  5638. var node = instance1.selectSingleNode(path);
  5639. if (node != null) {
  5640. model.setValue(path, item1);
  5641. }
  5642. }
  5643. */
  5644. }
  5645. // --------------------------------------------------------------------------
  5646. // 2008-08-25 김상진. 줄단위 특정내역 색깔구분 일단 뺀다 나중에 오픈 후 처리
  5647. // --------------------------------------------------------------------------
  5648. /*
  5649. if (grd_clodhist.rows > 1) { // 타이틀만 있는 경우 grd_clodhist.rows = 1
  5650. rdo_item1.item(0).attribute("font-weight") = "bold"; // "전체" 항목은 default 로 굵게 표시한다.
  5651. } else {
  5652. rdo_item1.item(0).attribute("font-weight") = "normal";
  5653. }
  5654. // 처방 조회부 항목구분 Radio에서 해당 처방이 있는 item을 굵게 표시한다.
  5655. var itemRadioList = instance1.selectSingleNode("/root/hidden/list2/cloditem1");
  5656. var itemNode = itemRadioList.childNodes;
  5657. for (var i = 1; i < itemNode.length; i++) {
  5658. var item1 = itemNode.item(i).value;
  5659. if (item1) {
  5660. rdo_item1.item(i).attribute("font-weight") = "bold";
  5661. } else {
  5662. rdo_item1.item(i).attribute("font-weight") = "normal";
  5663. }
  5664. }
  5665. */
  5666. }
  5667. //-------------------------------------------
  5668. // 항목별 금액소계(item1별로 금액sum)
  5669. //-------------------------------------------
  5670. function fSetSubtotal() {
  5671. // ****************************************************************************************************************
  5672. // 항목별소계 subtotal 김상진 20101223
  5673. // ****************************************************************************************************************
  5674. // #ffff0| 밝은노랑
  5675. // #d9e3fe 옅은파랑
  5676. // #eeddff 옅은보라
  5677. // #b9fcf8 밝은하늘
  5678. // #cefcfa 옅은하늘
  5679. grd_clodhist.subtotalposition= "below";
  5680. grd_clodhist.subtotal("sum", grd_clodhist.colRef("item1"), grd_clodhist.colRef("amt"),"format:(-)#,###; roundmode:round; roundposition:0", "background-color:#cefcfa; color:#0000ff;font-weight:bold; ", grd_clodhist.colRef("hngnm"), "", false);
  5681. grd_clodhist.subtotal("sum", grd_clodhist.colRef("item1"), grd_clodhist.colRef("ediamt"),"format:(-)#,###; roundmode:round; roundposition:0", "background-color:#cefcfa; color:#0000ff;font-weight:bold; ", grd_clodhist.colRef("hngnm"), "항목별소계", false);
  5682. var fild1 = "0";
  5683. var fild2 = "0";
  5684. for(var i = grd_clodhist.fixedRows; i <= grd_clodhist.rows; i++){
  5685. fild1 = grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm"));
  5686. if(fild1 == "항목별소계" && fild2 != ""){
  5687. if(fild2 == "01"){
  5688. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "진찰료 소계";
  5689. }else if(fild2 == "02"){
  5690. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "입원료 소계";
  5691. }else if(fild2 == "03"){
  5692. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "투약료 소계";
  5693. }else if(fild2 == "04"){
  5694. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "주사료 소계";
  5695. }else if(fild2 == "05"){
  5696. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "마취료 소계";
  5697. }else if(fild2 == "06"){
  5698. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "이학료 소계";
  5699. }else if(fild2 == "07"){
  5700. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "정신료 소계";
  5701. }else if(fild2 == "08"){
  5702. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "수술료 소계";
  5703. }else if(fild2 == "09"){
  5704. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "검사료 소계";
  5705. }else if(fild2 == "10"){
  5706. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "방사선 소계";
  5707. }else if(fild2 == "SS"){
  5708. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "특수 소계";
  5709. }
  5710. }
  5711. fild2 = grd_clodhist.valueMatrix(i, grd_clodhist.colRef("item1"));
  5712. }
  5713. }
  5714. //----------------------------------------
  5715. // 처방 Grid 필터용 조회조건을 초기화한다.
  5716. //----------------------------------------
  5717. function fInitOrderFilter() {
  5718. // 처방Grid용 조회부의 Radio 초기값을 "전체"로 설정한다.
  5719. model.setValue("/root/hidden/list2/clodsrch/selectedRdoPay", "0");
  5720. model.setValue("/root/hidden/list2/clodsrch/selectedRdoItem", "-");
  5721. rdo_payflag.refresh();
  5722. rdo_item1.refresh();
  5723. }
  5724. //---------------------------------------------------------------------
  5725. // 조회된 심사대상자의 특이 인적사항, 보조/요율 등을 계산하여 보여준다.
  5726. //---------------------------------------------------------------------
  5727. function fGetPersonalData() {
  5728. // 인적사항 타이틀 옆 output
  5729. var srchrslt = "";
  5730. // 2008-06-23 neverdie 윤영옥선생님 요청 (사망환자 메시지 막아주세요)
  5731. //if (model.getValue("/root/main/item1/clbs/dethyn") == "Y") {
  5732. // srchrslt = " [사망환자입니다.]";
  5733. //}
  5734. // 중증및 희귀정보가 모두다 존재할때에는 콤보에 등록암우선으로 보여준다. - 20091123 박창원
  5735. // 중증 등록정보를 유형에 맞게 보여준다 - 20091021 박창원
  5736. var suppkind = model.getValue("/root/main/item1/clbs/suppkindcd");
  5737. var rooamsgcnt = getNodesetCount("/root/main/rarecancermsglist/rarecancermsg[rgstkindcd!='00']/msg");
  5738. var sdoamsgcnt = getNodesetCount("/root/main/rarecancermsglist/rarecancermsg[rgstkindcd='00']/msg");
  5739. var rooamsg = model.getXPathValue("/root/main/rarecancermsglist/rarecancermsg[rgstkindcd!='00']/msg");
  5740. var sdoamsg = model.getXPathValue("/root/main/rarecancermsglist/rarecancermsg[rgstkindcd='00']/msg");
  5741. var rooamsgtooth = model.getXPathValue("/root/main/rarecancermsglist/rarecancermsg[rgstkindcd!='00' and rgstkindcd!='01']/msg");
  5742. if ((rooamsgcnt > 0) && (sdoamsgcnt > 0)) {
  5743. cmb_rarecancermsg.visible = true;
  5744. // 등록암 보조유형일경우(06.등록암, 11.가정간호등록암, 32.차상위1종, 40.차상위2종등록암
  5745. if (suppkind == "06" || suppkind == "11" || suppkind == "32" || suppkind == "40") {
  5746. model.makeValue("/root/hidden/rarecancermsg/msg", sdoamsg);
  5747. } else if (suppkind == "87" || suppkind == "88" || suppkind == "89") {
  5748. model.makeValue("/root/hidden/rarecancermsg/msg", rooamsgtooth,true);
  5749. } else {
  5750. model.makeValue("/root/hidden/rarecancermsg/msg", rooamsg,true);
  5751. }
  5752. } else if (rooamsgcnt > 0) {
  5753. if (suppkind == "87" || suppkind == "88" || suppkind == "89") {
  5754. if (rooamsgcnt == 1) {
  5755. srchrslt += rooamsgtooth; // 희귀등록번호
  5756. } else {
  5757. cmb_rarecancermsg.visible = true;
  5758. model.makeValue("/root/hidden/rarecancermsg/msg", rooamsgtooth,true);
  5759. }
  5760. } else {
  5761. if (rooamsgcnt == 1) {
  5762. srchrslt += rooamsg; // 희귀등록번호
  5763. } else {
  5764. cmb_rarecancermsg.visible = true;
  5765. model.makeValue("/root/hidden/rarecancermsg/msg", rooamsg,true);
  5766. }
  5767. }
  5768. } else if (sdoamsgcnt > 0) {
  5769. if (sdoamsgcnt == 1) {
  5770. srchrslt += sdoamsg; // 중증등록정보
  5771. } else {
  5772. cmb_rarecancermsg.visible = true;
  5773. model.makeValue("/root/hidden/rarecancermsg/msg", sdoamsg,true);
  5774. }
  5775. }
  5776. model.setValue("/root/hidden/item1/clbs/srchrslt", srchrslt);
  5777. model.refreshpart("/root/hidden/item1/clbs/srchrslt");
  5778. // 보조유형ID과 요율%로 combo 의 value
  5779. var suppkindcd = model.getValue("/root/main/item1/clbs/suppkindcd");
  5780. var payownbrate = model.getValue("/root/main/item1/clbs/payownbrate");
  5781. var supprate = suppkindcd+"/"+payownbrate; // 보조유형ID과 요율%로 combo 의 value
  5782. model.setValue("/root/hidden/item1/clbs/patsupprate", supprate);
  5783. cmb_supprate.refresh();
  5784. cmb_rarecancermsg.refresh();
  5785. }
  5786. //--------------------------------------------------------------------------------------------
  5787. // 보조유형 및 요율 combo(cmb_supprate)의 선택 값이 변경된 경우 각각을 해당 output에 설정한다.
  5788. //--------------------------------------------------------------------------------------------
  5789. function fSetPatSuppRate() {
  5790. // 보조유형ID과 요율%로 combo 의 value
  5791. // 보조유형NM과 요율%로 combo 의 label
  5792. var patsupprate = model.getValue("/root/hidden/item1/clbs/patsupprate");
  5793. var suppkindcd = patsupprate.substr(0, 2);
  5794. var insukindcd = model.getValue("/root/main/item1/clbs/insukindcd");
  5795. var payownbrate = patsupprate.substr(3, patsupprate.length);
  5796. model.setValue("/root/main/item1/clbs/suppkindcd", suppkindcd);
  5797. model.setValue("/root/main/item1/clbs/payownbrate", payownbrate);
  5798. model.setValue("/root/main/item1/clbs/recalcyn", "Y"); // 저장 시에 재계산할지 여부를 설정함
  5799. // 공상구분(offcharm) :1:공상, C:차상위본인부담경감자, 0:무
  5800. if (suppkindcd == "42") {
  5801. model.setValue("/root/main/item1/clbs/offcharm", "1");
  5802. cmb_offcharm.refresh();
  5803. }
  5804. else if (suppkindcd == "32") {
  5805. model.setValue("/root/main/item1/clbs/offcharm", "C");
  5806. cmb_offcharm.refresh();
  5807. }
  5808. //else if ((insukindcd != "11" || suppkindcd != "32") && model.getValue("/root/main/item1/clbs/offcharm") == "C") {
  5809. else {
  5810. model.setValue("/root/main/item1/clbs/offcharm", "0");
  5811. cmb_offcharm.refresh();
  5812. }
  5813. opt_payownbrate.refresh();
  5814. opt_suppkind.refresh();
  5815. if (suppkindcd != "" && suppkindcd != "00") {
  5816. opt_suppkind.attribute("background-color") = "#f7a08b"; // class="color_6" 다홍색 //"#cece9c";
  5817. opt_payownbrate.attribute("background-color") = "#f7a08b"; // class="color_6" 다홍색 //"#cece9c";
  5818. } else {
  5819. opt_suppkind.attribute("background-color") = "#f2f2f2"; // output_fix 클래스의 background-color
  5820. opt_payownbrate.attribute("background-color") = "#f2f2f2"; // output_fix 클래스의 background-color
  5821. }
  5822. /*
  5823. mechVO.set("calcappyn", "Y"); // 계산적용여부
  5824. var clodList = instance1.selectSingleNode("/root/main/list2"); //root/main/list2
  5825. if (clodList == null) {
  5826. return false;
  5827. }
  5828. if (insukindcd == "21" || insukindcd == "22") {
  5829. }
  5830. var clodNode = clodList.childNodes; //root/main/list2/clod
  5831. for (var i = 1; i <= clodNode.length; i++) {
  5832. var payflag = model.getValue("/root/main/list2/clod["+ i +"]/payflag");
  5833. if (payflag == "0" || payflag == "9") {
  5834. model.setValue("/root/main/list2/clod["+ i +"]/calcappflag", "Y");
  5835. model.setValue("/root/main/list2/clod["+ i +"]/status", "u");
  5836. }
  5837. }
  5838. nodelist = instance1. /root/main/list2/clod
  5839. if ( mechVO.getString("insukind").equals("21") || mechVO.getString("insukind").equals("22") ) {
  5840. // 인공신장투석
  5841. if ( mechVO.getString("suppkind").equals("02")
  5842. //&& mechVO.getString("orddeptcd").equals("2010700000") // 20100721 신장내과만
  5843. && mechVO.getString("clamdeptcd").equals("0105") // 20100724 신장내과만
  5844. && !mechVO.getString("basecd").equals("O9991")
  5845. ) {
  5846. mechVO.set("calcappyn", "N"); // 계산적용여부
  5847. // 20100907 약제상한액 계산적용안되는 항목은 제외
  5848. //if ( !mechVO.getString("druglimitamt").equals("0") ) {
  5849. // mechVO.set("druglimitamt" ,"0");
  5850. // mechVO.set("edidruglimitamt","0");
  5851. //}
  5852. }
  5853. // 정신과정액 2009-01-15 (ANP05-ANP09) 추가 ('ANP01','ANP02','ANP03','ANP04','ANP05','ANP06','ANP07','ANP08')
  5854. else if ( mechVO.getString("suppkind").equals("14")
  5855. && !((mechVO.getString("snglcalcscorcd") + "000").substring(0,3).equals("AR"))
  5856. && !((mechVO.getString("ediitem1")+"00").substring(0,2).equals("XX")) // 20100607 추가
  5857. ) {
  5858. mechVO.set("calcappyn", "N"); // 계산적용여부
  5859. // 20100907 약제상한액 계산적용안되는 항목은 제외
  5860. //if ( !mechVO.getString("druglimitamt").equals("0") ) {
  5861. // mechVO.set("druglimitamt" ,"0");
  5862. // mechVO.set("edidruglimitamt","0");
  5863. //}
  5864. }
  5865. }
  5866. */
  5867. }
  5868. //--------------------------------------------------------------------------------------------
  5869. // 6세미만구분 셋팅
  5870. //--------------------------------------------------------------------------------------------
  5871. function fSetUndersixageyn() {
  5872. var undersixageyn = model.getValue("/root/main/item1/clbs/undersixageyn");
  5873. model.setValue("/root/main/item1/clbs/recalcyn", "Y"); // 저장 시에 재계산할지 여부를 설정함
  5874. if (undersixageyn == "Y") {
  5875. cmb_undersixageyn.attribute("background-color") = "#f7a08b"; // class="color_6" 다홍색 //"#cece9c";
  5876. } else {
  5877. cmb_undersixageyn.attribute("background-color") = "#f2f2f2";
  5878. }
  5879. }
  5880. // 조합기호(ipt_insuno)를 입력하면 해당 조합명칭을 조회한다.
  5881. function fGetOutAftJudgTrgtManInsunm() {
  5882. model.makeValue("/root/send/item2/incd/insucd", model.getValue("/root/main/item1/clbs/insuno"));
  5883. model.makeValue("/root/send/item2/incd/ordfromdd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  5884. submit("TRPID20302");
  5885. var insucdnm = model.getValue("/root/main/item2/incd/insucdnm");
  5886. if (insucdnm) {
  5887. model.setValue("/root/main/item1/clbs/insunm", insucdnm);
  5888. model.refreshpart("/root/main/item1/clbs/insunm");
  5889. } else {
  5890. model.resetInstanceNode("/root/main/item1/clbs/insunm");
  5891. model.refreshpart("/root/main/item1/clbs/insunm");
  5892. ipt_insuno.dispatch("onbuttonclick");
  5893. }
  5894. }
  5895. // [2007.04.23] function 작성: (통합팀) 김선희 대리님
  5896. // 주민번호를 이용한 나이 계산의 경우, 유효하지 않은 주민번호에 대해서는 -1 값만을 반환하므로,
  5897. // 주민번호 앞자리를 이용해서 yyyymmdd 형태로 만든다.
  5898. function getBirthDate(pResidentNo) {
  5899. if (isNaN(pResidentNo)) return -1;
  5900. gender = pResidentNo.substr(6, 1);
  5901. if (gender == "3" || gender == "4" || gender == "7" || gender == "8") {
  5902. regYY = "20";
  5903. } else if(gender == "0" || gender == "9") {
  5904. regYY = "18";
  5905. } else {
  5906. regYY = "19";
  5907. }
  5908. var rtn = regYY + pResidentNo.substr(0 , 6);
  5909. return rtn;
  5910. }
  5911. ///////////////////////////////////////////////////////////////////////////
  5912. // 특정 환자에 대해 그동안 작성된 심사자메모, 청구메모 내역을 조회한다.
  5913. function fGetMemoHistList() {
  5914. var clamym = model.getValue("/root/main/item1/clbs/clamym");
  5915. if (clamym) { // 조회된 심사대상자가 있고
  5916. model.removeNodeset("/root/hidden/sppiz00300/rslt");
  5917. // SPPIZ00300_메모이력조회.xrw 에서 /root/hidden/sppiz00300 로 결과값을 전달하므로 cond 노드를 makeValue 해야함
  5918. model.makeValue("/root/hidden/sppiz00300/cond/pid", model.getValue("/root/main/item1/clbs/pid"));
  5919. model.makeValue("/root/hidden/sppiz00300/cond/orddeptcd", model.getValue("/root/main/item1/clbs/orddeptcd"));
  5920. model.makeValue("/root/hidden/sppiz00300/cond/ioflag", "O");
  5921. model.makeValue("/root/hidden/sppiz00300/cond/refterm", "2");
  5922. model.makeValue("/root/hidden/sppiz00300/cond/anofildinclyn", "Y");
  5923. model.makeValue("/root/hidden/sppiz00300/cond/fromdd", "");
  5924. model.makeValue("/root/hidden/sppiz00300/cond/todd", "");
  5925. model.makeValue("/root/hidden/sppiz00300/cond/clamym", clamym);
  5926. model.makeValue("/root/hidden/sppiz00300/cond/clamdg", model.getValue("/root/main/item1/clbs/clamdg"));
  5927. model.makeValue("/root/hidden/sppiz00300/cond/pidsn", model.getValue("/root/main/item1/clbs/pidsn"));
  5928. modal("SPPIZ00300", "1", "10", "10", "SPPIZ00300", "/root/hidden/sppiz00300/cond", "/root/init", "", ""); // SPPIZ00300_메모이력조회.xrw
  5929. var SelectMemo = instance1.selectSingleNode("/root/hidden/sppiz00300/rslt");
  5930. if (SelectMemo != null) {
  5931. var choimemo = model.getValue("/root/hidden/sppiz00300/rslt/choimemo").getTrim(); // (stringHelper.js) 문자열 앞뒤에 있는 공백 제거
  5932. var choiedicd = model.getValue("/root/hidden/sppiz00300/rslt/edicd");
  5933. if (choimemo) {
  5934. model.setValue("/root/hidden/sppiz00300/rslt/choimemo", choimemo);
  5935. var destRef = model.getValue("/root/hidden/sppiz00300/rslt/destRef");
  5936. if (destRef == "judgmemo") {
  5937. // 심사메모로 전달
  5938. var judgmemo = model.getValue("/root/main/item1/memo/judgmemo");
  5939. if (judgmemo) { // 기존 심사메모가 공백이 아닌 경우 선택된 메모를 심사화면 메모 뒤에 덧붙인다.
  5940. model.setValue("/root/main/item1/memo/judgmemo", judgmemo +" \n"+ choimemo);
  5941. } else {
  5942. if (choiedicd) { // 처방별 메모를 전달하는 경우임
  5943. // 동일한 EDI 코드가 있을 경우만 추가
  5944. for (var j = 1; j < grd_clodhist.rows; j++) {
  5945. var clodedicd = model.getValue("/root/main/list2/clod["+ j +"]/basecd");
  5946. if (choiedicd == clodedicd) {
  5947. model.setValue("/root/main/item1/memo/judgmemo", choimemo);
  5948. j = grd_clodhist.rows;
  5949. }
  5950. }
  5951. } else {
  5952. model.setValue("/root/main/item1/memo/judgmemo", choimemo);
  5953. }
  5954. }
  5955. tar_judgrmemo.refresh();
  5956. model.toggle("case_judgrmemo"); // 해당 tab 으로 토글시킨다.
  5957. }
  5958. else if (destRef == "edimemo") {
  5959. // 청구메모로 전달
  5960. var edimemo = model.getValue("/root/main/item1/memo/edimemo");
  5961. if (edimemo) { // 기존 청구메모가 공백이 아닌 경우 선택된 메모를 심사화면 메모 뒤에 덧붙인다.
  5962. model.setValue("/root/main/item1/memo/edimemo", edimemo +" \n"+ choimemo);
  5963. } else {
  5964. if (choiedicd) { // 처방별 메모를 전달하는 경우임
  5965. // 동일한 EDI 코드가 있을 경우 * 표시
  5966. for (var j = 1; j < grd_clodhist.rows; j++) {
  5967. var clodedicd = model.getValue("/root/main/list2/clod["+ j +"]/basecd");
  5968. if (choiedicd == clodedicd) {
  5969. model.setValue("/root/main/item1/memo/edimemo", choimemo);
  5970. j = grd_clodhist.rows;
  5971. }
  5972. }
  5973. } else {
  5974. model.setValue("/root/main/item1/memo/edimemo", choimemo);
  5975. }
  5976. }
  5977. tar_ediclammemo.refresh();
  5978. model.toggle("case_ediclammemo"); // 해당 tab 으로 토글시킨다.
  5979. }
  5980. else if (destRef == "prcpmemo") {
  5981. // 처방별 주석로 전달
  5982. // 동일한 EDI 코드가 있을 경우 * 표시
  5983. for (var i = 1; i < grd_clodhist.rows; i++) {
  5984. var snglcalcscorcd = model.getValue("/root/main/list2/clod["+ i +"]/snglcalcscorcd");
  5985. var edicd = model.getValue("/root/main/list2/clod["+ i +"]/basecd");
  5986. var seqno = model.getValue("/root/main/list2/clod["+ i +"]/seqno");
  5987. var edilnno = model.getValue("/root/main/list2/clod["+ i +"]/edilnno");
  5988. if (choiedicd == edicd) {
  5989. var lnunitspclspecyn = model.getValue("/root/main/list2/clod["+ i +"]/lnunitspclspecyn");
  5990. var rowNum = "";
  5991. if (lnunitspclspecyn) {
  5992. for (var j = 1; j < grd_clsphist.rows; j++) {
  5993. if (grd_clsphist.rowstatus(j) != 4) {
  5994. var clodseqno = model.getValue("/root/main/list3/clsp["+ j +"]/clodseqno");
  5995. if (clodseqno == seqno) {
  5996. if (model.getValue("/root/main/list3/clsp["+ j +"]/spclcd") == "JX999") {
  5997. rowNum = j;
  5998. j = grd_clsphist.rows;
  5999. }
  6000. }
  6001. }
  6002. }
  6003. if (rowNum) {
  6004. var ans = messageBox(edilnno + "번 줄에 등록된 메모가 있어 기존 내역에 덧붙이거나 삭제후 추가할 수 있습니다.\n덧붙여 추가", "S001");
  6005. ///***번 줄에 등록된 메모가 있어 기존 내역에 덧붙이거나 삭제후 추가할 수 있습니다.\n덧붙여 추가 하시려면 예(Yes
  6006. if (ans == 6) { // 6: yes
  6007. var spclspec = model.getValue("/root/main/list3/clsp["+ rowNum +"]/spclspec");
  6008. model.setValue("/root/main/list3/clsp["+ rowNum +"]/spclspec", spclspec + "\n"+ choimemo);
  6009. var rowstatus = grd_clsphist.rowstatus(rowNum);
  6010. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  6011. } else {
  6012. grd_clsphist.rowstatus(rowNum) = 2; // 2 : update 상태로 stat를 변경한다.
  6013. }
  6014. }
  6015. else if (ans == 7) { // 7:no
  6016. model.setValue("/root/main/list3/clsp["+ rowNum +"]/spclspec", choimemo);
  6017. var rowstatus = grd_clsphist.rowstatus(rowNum);
  6018. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  6019. } else {
  6020. grd_clsphist.rowstatus(rowNum) = 2; // 2 : update 상태로 stat를 변경한다.
  6021. }
  6022. }
  6023. else if (ans == 2) { // 2:cancel
  6024. }
  6025. } else { // 기존에 입력된 JX999가 없는 경우
  6026. // 'JX999' 코드를 추가한다.
  6027. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  6028. grd_clsphist.insertRow(clsprow++, true);
  6029. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "J");
  6030. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", edilnno);
  6031. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clodseqno", seqno);
  6032. model.setValue("/root/main/list3/clsp["+ clsprow +"]/snglcalcscorcd", snglcalcscorcd);
  6033. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclcd", "JX999");
  6034. model.setValue("/root/main/list3/clsp["+ clsprow +"]/cdnm", "기타내역");
  6035. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclspec", choimemo);
  6036. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclformat", "X(700)");
  6037. model.setValue("/root/main/list3/clsp["+ clsprow +"]/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  6038. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldedilnno", edilnno);
  6039. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clsoyn", "N"); //원외처방여부
  6040. // JX999 + 다른 코드도 있는 경우가 된다.
  6041. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("lnunitspclspecyn")) = "#b5a5d1"; // 연한 보라색
  6042. }
  6043. } else { // 기존에 입력된 줄단위 특정내역이 없는 경우
  6044. // 'JX999' 코드를 추가한다.
  6045. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  6046. grd_clsphist.insertRow(clsprow++, true);
  6047. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "J");
  6048. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", edilnno);
  6049. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clodseqno", seqno);
  6050. model.setValue("/root/main/list3/clsp["+ clsprow +"]/snglcalcscorcd", snglcalcscorcd);
  6051. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclcd", "JX999");
  6052. model.setValue("/root/main/list3/clsp["+ clsprow +"]/cdnm", "기타내역");
  6053. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclspec", choimemo);
  6054. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclformat", "X(700)");
  6055. model.setValue("/root/main/list3/clsp["+ clsprow +"]/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  6056. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldedilnno", edilnno);
  6057. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clsoyn", "N"); //원외처방여부
  6058. model.setValue("/root/main/list2/clod["+ i +"]/lnunitspclspecyn", "*");
  6059. // JX999만 있는 경우
  6060. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("lnunitspclspecyn")) = "#f7a08b"; // class="color_6" 다홍색
  6061. fSetOrderChangeRowStat(i); // 처방의 수정된 row 상태를 표시한다.
  6062. } // lnunitspclspecyn == ""
  6063. } // if (choiedicd == clodedicd)
  6064. }
  6065. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  6066. fSortSpclNo();
  6067. grd_clsphist.refresh();
  6068. grd_clodhist.refresh();
  6069. model.toggle("case_spclspec"); // 해당 tab 으로 토글시킨다.
  6070. } // if (destRef == "prcpmemo")
  6071. //model.refresh();
  6072. } // if (choimemo)
  6073. } // if (SelectMemo != null)
  6074. } // if (clamym)
  6075. }
  6076. // 심사자메모, EDI청구메모를 특정내역 형식에 맞춰 설정한다.
  6077. function fSetJudgEDIMemo(spclmemo, usermemoyn) {
  6078. var delclspNode = instance1.selectSingleNode("/root/send/item3/delclsp");
  6079. var max = 1;
  6080. if (delclspNode != null) {
  6081. max = delclspNode.childNodes.length + 1;
  6082. }
  6083. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delunitflag", "M");
  6084. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delspclcd", "MX999");
  6085. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delusermemoyn", usermemoyn);
  6086. model.makeNode("/root/send/item3/delclsp/delmemo["+ max +"]/delcalcscorcd");
  6087. model.makeNode("/root/send/item3/delclsp/delmemo["+ max +"]/deledilnno");
  6088. model.makeNode("/root/send/item3/delclsp/delmemo["+ max +"]/delseqno");
  6089. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delclsoyn", "N");
  6090. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delmpsno", "");
  6091. var item3Path = "";
  6092. var item3Node = "";
  6093. var repeat = ""; // 특정내역 반복 설정 rowstat = 'R'
  6094. if (usermemoyn == "Y") {
  6095. item3Path = "/root/send/item3/judgmemo[";
  6096. item3Node = "judg";
  6097. repeat = model.getValue("/root/main/item1/memo/judgmemorepeat");
  6098. } else {
  6099. item3Path = "/root/send/item3/edimemo[";
  6100. item3Node = "edi";
  6101. repeat = model.getValue("/root/main/item1/memo/edimemorepeat");
  6102. }
  6103. var iSpclCdCnt = 0; // DB에 저장될 MX999 코드 개수
  6104. var iSpclCdTotLength = getStringLength(spclmemo); // (stringHelper.js) 문자열의 길이를 구한다.
  6105. var insCharTotCnt = 0; // 특정내역으로 잘라진 총 글자 수
  6106. if (iSpclCdTotLength > 350) { // 새로 입력된 특정코드가 700byte를 넘는다.
  6107. // 영문(700자), 한글(350자) 길이로 잘라서 n개의 특정코드를 만든다.
  6108. var iLen = 0; // 특정내역 길이가 700 byte가 되었는지 계산
  6109. var iStartInx = 0; // 특정내역 시작 index
  6110. var iCharCnt = 0; // 몇글자로 구성되는지 계산
  6111. for (var i=0; i < spclmemo.length; i++) {
  6112. var sBit = spclmemo.charAt(i);
  6113. iCharCnt++;
  6114. if (escape(sBit).length > 4) {
  6115. iLen = iLen + 2;
  6116. } else {
  6117. iLen = iLen + 1;
  6118. }
  6119. if (iLen == 350 || iLen > 350) { // 영문(700자), 한글(350자)
  6120. iSpclCdCnt++;
  6121. //model.makeValue(item3Path + iSpclCdCnt +"]/"+ item3Node +"usermemoyn", usermemoyn);
  6122. if (iLen == 350) { // 700byte로 길이가 끝난 경우
  6123. model.makeValue(item3Path + iSpclCdCnt +"]/"+ item3Node +"spclspec", spclmemo.substr(iStartInx, iCharCnt));
  6124. model.makeValue(item3Path + iSpclCdCnt +"]/"+ item3Node +"rowstat", repeat);
  6125. iStartInx += iCharCnt;
  6126. insCharTotCnt += 350;
  6127. }
  6128. else if (iLen > 350) { // 영문(700자), 한글(350자)를 넘는 경우
  6129. model.makeValue(item3Path + iSpclCdCnt +"]/"+ item3Node +"spclspec", spclmemo.substr(iStartInx, iCharCnt - 1));
  6130. model.makeValue(item3Path + iSpclCdCnt +"]/"+ item3Node +"rowstat", repeat);
  6131. iStartInx += (iCharCnt - 1);
  6132. i--;
  6133. insCharTotCnt += 349;
  6134. }
  6135. iCharCnt = 0;
  6136. iLen = 0;
  6137. }
  6138. }
  6139. if (iSpclCdTotLength != insCharTotCnt) {
  6140. iSpclCdCnt++;
  6141. model.makeValue(item3Path + iSpclCdCnt +"]/"+ item3Node +"spclspec", spclmemo.substring(iStartInx, spclmemo.length));
  6142. model.makeValue(item3Path + iSpclCdCnt +"]/"+ item3Node +"rowstat", repeat);
  6143. }
  6144. }
  6145. else if (iSpclCdTotLength > 0) { // 새로 추가된 내용이 있다.
  6146. iSpclCdCnt++;
  6147. //model.makeValue(item3Path + iSpclCdCnt +"]/"+ item3Node +"usermemoyn", usermemoyn);
  6148. model.makeValue(item3Path + iSpclCdCnt +"]/"+ item3Node +"spclspec", spclmemo);
  6149. model.makeValue(item3Path + iSpclCdCnt +"]/"+ item3Node +"rowstat", repeat);
  6150. //}
  6151. }
  6152. }
  6153. // 심사Comment 조회 Popup에서 선택한 심사자메모를 설정한다.
  6154. function fSetJudgMemoRefresh(){
  6155. var memo = model.getValue("/root/hidden/sppiz00700/rslt/memo");
  6156. var judgmemo = model.getValue("/root/main/item1/memo/judgmemo");
  6157. if (memo) {
  6158. if (judgmemo) { // 기존 심사메모가 공백이 아닌 경우 선택된 메모를 심사화면 메모 뒤에 덧붙인다.
  6159. model.setValue("/root/main/item1/memo/judgmemo", judgmemo +" \n"+ memo);
  6160. } else {
  6161. model.setValue("/root/main/item1/memo/judgmemo", memo);
  6162. }
  6163. model.refreshpart("/root/main/item1/memo/judgmemo");
  6164. }
  6165. }
  6166. // 심사Comment 조회 Popup에서 선택한 EDI메모를 설정한다.
  6167. function fSetEdiMemoRefresh(){
  6168. var memo = model.getValue("/root/hidden/sppiz00700/rslt/memo");
  6169. var edimemo = model.getValue("/root/main/item1/memo/edimemo");
  6170. if (memo) {
  6171. if (edimemo) { // 기존 청구메모가 공백이 아닌 경우 선택된 메모를 심사화면 메모 뒤에 덧붙인다.
  6172. model.setValue("/root/main/item1/memo/edimemo", edimemo +" \n"+ memo);
  6173. } else {
  6174. model.setValue("/root/main/item1/memo/edimemo", memo);
  6175. }
  6176. model.refreshpart("/root/main/item1/memo/edimemo");
  6177. }
  6178. }
  6179. // 처방사유조회
  6180. function fPrcpResnRef(){
  6181. // 세션값 받기
  6182. var sUserInfosS = getUserInfos();
  6183. sUserInfosS = sUserInfosS + "|";
  6184. var UserInfosS_Array = sUserInfosS.split("|");
  6185. var userid = UserInfosS_Array[0]; //사용자번호
  6186. var usernm = UserInfosS_Array[1]; //사용자이름
  6187. var posinstcd = UserInfosS_Array[6]; //근무지기관코드
  6188. var posinstnm = UserInfosS_Array[7]; //근무지기관명
  6189. var posdeptcd = UserInfosS_Array[4]; //소속부서코드
  6190. var posdeptnm = UserInfosS_Array[5]; //소속부서명
  6191. model.makeValue("/root/tmp/prcpresnref/info/pid", model.getValue("/root/main/item1/clbs/pid")); // 등록번호
  6192. model.makeValue("/root/tmp/prcpresnref/info/fromdd", model.getValue("/root/main/item1/clbs/ordfromdd")); // 처방시작일 default indd
  6193. model.makeValue("/root/tmp/prcpresnref/info/todd", model.getValue("/root/main/item1/clbs/ordfromdd")); // 처방종료일 default dschdd
  6194. model.makeValue("/root/tmp/prcpresnref/info/orddeptcd", "-"); // 진료과 : 주진료과
  6195. model.makeValue("/root/tmp/prcpresnref/info/orddrid", "-"); // 주치의 : default "-"
  6196. model.makeValue("/root/tmp/prcpresnref/info/mainjudgid", "-"); // 심사자 : 현재심사자
  6197. //model.makeValue("/root/tmp/prcpresnref/info/prcpcd", model.getvalue("/root/main/list2/iscllist[" + grd_clodhist.row + "]/grupcalcscorcd")); // 수가코드 : 그룹코드
  6198. model.makeValue("/root/tmp/prcpresnref/info/prcpcd", grd_clodhist.valueMatrix(grd_clodhist.row, grd_clodhist.colRef("grupcalcscorcd"))); // 수가코드 : 그룹코드
  6199. model.makeValue("/root/tmp/prcpresnref/info/insukind", model.getValue("/root/main/item1/clbs/insukindcd")); // 보험유형 : 환자보험유형
  6200. model.makeValue("/root/tmp/prcpresnref/info/ioflag", "O"); // 내원유형 : default "-"
  6201. model.makeValue("/root/tmp/prcpresnref/info/resncd", "FF"); // 사유구분 : default "FF" 중복처방
  6202. model.makeValue("/root/tmp/prcpresnref/info/popup", "judg"); // 팝업사용처구분 : judg(심사)
  6203. modal("SPMMO19000_중복처방사유조회", "", "400", "300", "", "/root/tmp/prcpresnref/info", "/root/tmp/prcpresnref/info");
  6204. model.removeNode("/root/tmp/prcpresnref");
  6205. }
  6206. ///////////////////////////////////////////////////////////////////////////
  6207. // 특정 환자에 대한 상병이력을 조회한다.
  6208. function fGetDiagHistList() {
  6209. var clamym = model.getValue("/root/main/item1/clbs/clamym");
  6210. if (clamym) { // 조회된 심사대상자가 있으면
  6211. // 심사대상자의 등록번호를 조건으로 하여 전체 청구 상병이력을 조회한다.
  6212. model.removeNodeset("/root/hidden/smpiz00100/rslt");
  6213. model.setValue("/root/hidden/smpiz00100/cond/pid", model.getValue("/root/main/item1/clbs/pid"));
  6214. model.setValue("/root/hidden/smpiz00100/cond/ordfromdd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  6215. model.setValue("/root/hidden/smpiz00100/cond/ordtodd", model.getValue("/root/main/item1/clbs/dschdd"));
  6216. //model.setValue("/root/hidden/smpiz00100/cond/srchflag", "pam"); // 검색구분 Radio : 청구
  6217. modal("SMPIZ00100", "1", "10", "10", "SMPIZ00100", "/root/hidden/smpiz00100/cond", "/root/init", "", ""); // SMPIZ00100_외래입원상병이력조회.xrw
  6218. var rsltNode = instance1.selectSingleNode("/root/hidden/smpiz00100/rslt");
  6219. if (rsltNode != null) {
  6220. for (var i = 1; i <= rsltNode.childNodes.length; i++) {
  6221. var diagcd = model.getValue("/root/hidden/smpiz00100/rslt/diag["+ i +"]/diagcd");
  6222. var isSame = false;
  6223. for (var j = grd_cldihist.fixedRows; j < grd_cldihist.rows; j++) {
  6224. if ( diagcd == model.getValue("/root/main/list1/cldi["+ j +"]/diagcd")
  6225. //&& grd_cldihist.rowstatus(j) != 4 // 20100308 추가 // 저장시 문제있음
  6226. ) {
  6227. // 동일한 상병이 존재하는 경우
  6228. isSame = true;
  6229. j = grd_cldihist.rows;
  6230. }
  6231. }
  6232. if (isSame == false) {
  6233. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가"
  6234. fDiagGridInsertRow("Y","Y");
  6235. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagkindcd", model.getValue("/root/hidden/smpiz00100/rslt/diag["+ i +"]/diagkindcd"));
  6236. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagseq", grd_cldihist.row);
  6237. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagcd", model.getValue("/root/hidden/smpiz00100/rslt/diag["+ i +"]/diagcd"));
  6238. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagnm", model.getValue("/root/hidden/smpiz00100/rslt/diag["+ i +"]/diaghngnm"));
  6239. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagengnm", model.getValue("/root/hidden/smpiz00100/rslt/diag["+ i +"]/diagengnm"));
  6240. // 20100308 특정내역 조회 추가
  6241. model.setValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/vcode", fGetDiagVcode(diagcd));
  6242. // 20100329 MT002 입력체크
  6243. if ( model.getValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagseq") == "1"
  6244. && model.getValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/vcode") != ""
  6245. && model.getValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/diagkindcd") != "R"
  6246. ) {
  6247. fSetDiagMT002(model.getValue("/root/main/list1/cldi["+ grd_cldihist.row +"]/vcode"));
  6248. }
  6249. var nowRow = grd_cldihist.row;
  6250. }
  6251. }
  6252. fSortDiagNo(true);
  6253. grd_cldihist.row = nowRow;
  6254. }
  6255. }
  6256. }
  6257. ///////////////////////////////////////////////////////////////////////////
  6258. // 줄단위 특정내역 중 기타메모(JX999)를 특정내역 형식에 맞춰 설정한다.
  6259. function fSetSpclSpecJX999() {
  6260. var iTotSpclCdCnt = 0; // DB에 저장될 JX999 코드 개수
  6261. for (var i = 1; i < grd_clsphist.rows; i++) {
  6262. var rowstatus = grd_clsphist.rowstatus(i);
  6263. var spclcd = model.getValue("/root/main/list3/clsp["+ i +"]/spclcd");
  6264. var snglcalcscorcd = model.getValue("/root/main/list3/clsp["+ i +"]/snglcalcscorcd");
  6265. var edilnno = model.getValue("/root/main/list3/clsp["+ i +"]/edilnno");
  6266. var clodseqno = model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno");
  6267. var seqno = model.getValue("/root/main/list3/clsp["+ i +"]/seqno");
  6268. var clsoyn = model.getValue("/root/main/list3/clsp["+ i +"]/clsoyn");
  6269. var mpsno = model.getValue("/root/main/list3/clsp["+ i +"]/mpsno");
  6270. if (rowstatus != 0 && spclcd == "JX999") {
  6271. var delclspNode = instance1.selectSingleNode("/root/send/item3/delclsp");
  6272. var max = 1;
  6273. if (delclspNode != null) {
  6274. max = delclspNode.childNodes.length + 1;
  6275. }
  6276. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delunitflag", "J");
  6277. var oldspclcd = model.getValue("/root/main/list3/clsp["+ i +"]/oldspclcd");
  6278. if (oldspclcd) {
  6279. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delspclcd", oldspclcd);
  6280. } else {
  6281. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delspclcd", spclcd);
  6282. }
  6283. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delusermemoyn", "N");
  6284. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delcalcscorcd", snglcalcscorcd);
  6285. if (rowstatus == 2) { // JX999는 seqno로 기존 코드를 삭제하는 것이 아니라 줄번호로 삭제하므로 조회해온 초기 줄번호를 전달한다.
  6286. var initedilnno = model.getValue("/root/main/list3/clsp["+ i +"]/initedilnno");
  6287. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/deledilnno", initedilnno);
  6288. } else {
  6289. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/deledilnno", edilnno);
  6290. }
  6291. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delseqno", seqno);
  6292. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delclsoyn", clsoyn);
  6293. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delmpsno", mpsno);
  6294. }
  6295. // 해당 청구키의 JX999는 모두 삭제하고 새로 추가하므로 "삭제" 상태가 아닌 모든 경우를 전송한다.
  6296. if (rowstatus != 0 && rowstatus != 4 && spclcd == "JX999") { // 0 : new, 4: delete
  6297. var iSpclCdCnt = 0;
  6298. var spclmemo = model.getValue("/root/main/list3/clsp["+ i +"]/spclspec");
  6299. var repeat = model.getValue("/root/main/list3/clsp["+ i +"]/rowstat"); // 특정내역 반복 설정 rowstat = 'R'
  6300. var iSpclCdTotLength = getStringLength(spclmemo); // (stringHelper.js) 문자열의 길이를 구한다.
  6301. var insCharTotCnt = 0; // 특정내역으로 잘라진 총 글자 수
  6302. if (iSpclCdTotLength > 350) { // 새로 입력된 특정코드가 700byte를 넘는다.
  6303. // 영문(700자), 한글(350자) 길이로 잘라서 n개의 특정코드를 만든다.
  6304. var iLen = 0; // 특정내역 길이가 700 byte가 되었는지 계산
  6305. var iStartInx = 0; // 특정내역 시작 index
  6306. var iCharCnt = 0; // 몇글자로 구성되는지 계산
  6307. for (var j = 0; j < spclmemo.length; j++) {
  6308. var sBit = spclmemo.charAt(j);
  6309. iCharCnt++;
  6310. if (escape(sBit).length > 4) {
  6311. iLen = iLen + 2;
  6312. } else {
  6313. iLen = iLen + 1;
  6314. }
  6315. if (iLen == 350 || iLen > 350) { // 영문(700자), 한글(350자)
  6316. iTotSpclCdCnt++;
  6317. iSpclCdCnt++;
  6318. if (iLen == 350) { // 700byte로 길이가 끝난 경우
  6319. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitspclspec", spclmemo.substr(iStartInx, iCharCnt));
  6320. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitcalcscorcd", snglcalcscorcd);
  6321. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedilnno", edilnno);
  6322. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitclodseqno", clodseqno);
  6323. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitclsoyn", clsoyn);
  6324. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitmpsno", mpsno);
  6325. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitrowstat", repeat);
  6326. iStartInx += iCharCnt;
  6327. insCharTotCnt += 350;
  6328. }
  6329. else if (iLen > 350) { // 영문(700자), 한글(350자)를 넘는 경우
  6330. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitspclspec", spclmemo.substr(iStartInx, iCharCnt - 1));
  6331. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitcalcscorcd", snglcalcscorcd);
  6332. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedilnno", edilnno);
  6333. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitclodseqno", clodseqno);
  6334. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitclsoyn", clsoyn);
  6335. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitmpsno", mpsno);
  6336. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitrowstat", repeat);
  6337. iStartInx += (iCharCnt - 1);
  6338. j--;
  6339. insCharTotCnt += 349;
  6340. }
  6341. iCharCnt = 0;
  6342. iLen = 0;
  6343. }
  6344. }
  6345. if (iSpclCdTotLength != insCharTotCnt) {
  6346. iTotSpclCdCnt++;
  6347. iSpclCdCnt++;
  6348. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitspclspec", spclmemo.substring(iStartInx, spclmemo.length));
  6349. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitcalcscorcd", snglcalcscorcd);
  6350. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedilnno", edilnno);
  6351. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitclodseqno", clodseqno);
  6352. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitclsoyn", clsoyn);
  6353. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitmpsno", mpsno);
  6354. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitrowstat", repeat);
  6355. }
  6356. }
  6357. else if (iSpclCdTotLength > 0) { // 새로 추가된 내용이 있다.
  6358. iTotSpclCdCnt++;
  6359. iSpclCdCnt++;
  6360. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitspclspec", spclmemo);
  6361. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitcalcscorcd", snglcalcscorcd);
  6362. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedilnno", edilnno);
  6363. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitclodseqno", clodseqno);
  6364. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitclsoyn", clsoyn);
  6365. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitmpsno", mpsno);
  6366. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitrowstat", repeat);
  6367. }
  6368. }
  6369. }
  6370. }
  6371. // 줄단위 특정내역을 수정/입력한다.
  6372. function fSetLnUnitSpclSpec() { // 'T' 필드 더블클릭시 호출한다.
  6373. model.removeNodeset("/root/hidden/sppiz00500/rslt"); // SPPIZ00500_특정내역상세관리 에서 선택된 결과가 copyNode되는 경로임
  6374. model.removeNodeset("/root/hidden/sppiz00500/cond");
  6375. var row = grd_clodhist.row;
  6376. // 처방 Grid에서 줄번호가 부여된 경우
  6377. var seqno = model.getValue("/root/main/list2/clod["+ row +"]/seqno");
  6378. var edilnno = model.getValue("/root/main/list2/clod["+ row +"]/edilnno");
  6379. var snglcalcscorcd = model.getValue("/root/main/list2/clod["+ row +"]/snglcalcscorcd");
  6380. if (seqno != "0") {
  6381. var lnunitspclspecyn = model.getValue("/root/main/list2/clod["+ row +"]/lnunitspclspecyn");
  6382. if (lnunitspclspecyn == "") {
  6383. /*
  6384. model.makeValue("/root/hidden/sppiz00500/cond/flag", "I");
  6385. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", snglcalcscorcd);
  6386. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", "0");
  6387. model.makeValue("/root/hidden/sppiz00500/cond/clodseqno", seqno);
  6388. model.makeNode("/root/hidden/sppiz00500/cond/spclcd");
  6389. model.makeNode("/root/hidden/sppiz00500/cond/detldesc");
  6390. model.makeNode("/root/hidden/sppiz00500/cond/spclspec");
  6391. model.makeNode("/root/hidden/sppiz00500/cond/spclformat");
  6392. model.makeNode("/root/hidden/sppiz00500/cond/rownum");
  6393. model.makeNode("/root/hidden/sppiz00500/cond/cdnm");
  6394. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", "J");
  6395. */
  6396. model.makeValue("/root/hidden/sppiz00500/cond/flag", "I");
  6397. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", snglcalcscorcd);
  6398. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", edilnno);
  6399. model.makeValue("/root/hidden/sppiz00500/cond/clodseqno", seqno);
  6400. model.makeValue("/root/hidden/sppiz00500/cond/spclcd", "JX999");
  6401. model.makeValue("/root/hidden/sppiz00500/cond/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  6402. model.makeNode("/root/hidden/sppiz00500/cond/spclspec");
  6403. model.makeValue("/root/hidden/sppiz00500/cond/spclformat", "X(700)");
  6404. model.makeNode("/root/hidden/sppiz00500/cond/rownum");
  6405. model.makeValue("/root/hidden/sppiz00500/cond/cdnm", "기타내역");
  6406. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", "J");
  6407. } else { // 기존에 입력된 줄단위 특정내역이 있는 경우
  6408. var rowcnt = 1;
  6409. var setrow = 0;
  6410. for (var i = 1; i < grd_clsphist.rows; i++) {
  6411. var spcClodseqno = model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno");
  6412. var spcClsoyn = model.getValue("/root/main/list3/clsp["+ i +"]/clsoyn"); //원외특정여부
  6413. if (spcClodseqno == seqno && spcClsoyn == "N") {
  6414. var spclcd = model.getValue("/root/main/list3/clsp["+ i +"]/spclcd");
  6415. if (spclcd != "" && spclcd != "JT001" && grd_clsphist.rowstatus(i) != 4) { // 확인코드가 아닌 경우
  6416. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/flag", "");
  6417. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/rownum", i);
  6418. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/snglcalcscorcd", model.getValue("/root/main/list3/clsp["+ i +"]/snglcalcscorcd"));
  6419. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/clodseqno", model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno"));
  6420. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/edilnno", model.getValue("/root/main/list3/clsp["+ i +"]/edilnno"));
  6421. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclcd", spclcd);
  6422. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  6423. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclformat", model.getValue("/root/main/list3/clsp["+ i +"]/spclformat"));
  6424. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/cdnm", model.getValue("/root/main/list3/clsp["+ i +"]/cdnm"));
  6425. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/detldesc", model.getValue("/root/main/list3/clsp["+ i +"]/detldesc"));
  6426. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/oldspclcd", spclcd);
  6427. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/oldspclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  6428. // 특정내역 상세 화면에 보여줄 특정내역 선택
  6429. if (spclcd == "JX999") {
  6430. setrow = i; // 줄단위의 경우 가장 마지막 row로 설정한다.
  6431. }
  6432. rowcnt = rowcnt+1;
  6433. }
  6434. }
  6435. }
  6436. if (setrow > 0) {
  6437. model.makeValue("/root/hidden/sppiz00500/cond/flag", "");
  6438. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", snglcalcscorcd);
  6439. model.makeValue("/root/hidden/sppiz00500/cond/clodseqno", seqno);
  6440. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", edilnno);
  6441. model.makeValue("/root/hidden/sppiz00500/cond/spclcd", model.getValue("/root/main/list3/clsp["+ setrow +"]/spclcd"));
  6442. model.makeValue("/root/hidden/sppiz00500/cond/detldesc", model.getValue("/root/main/list3/clsp["+ setrow +"]/detldesc"));
  6443. model.makeValue("/root/hidden/sppiz00500/cond/spclspec", model.getValue("/root/main/list3/clsp["+ setrow +"]/spclspec"));
  6444. model.makeValue("/root/hidden/sppiz00500/cond/spclformat", model.getValue("/root/main/list3/clsp["+ setrow +"]/spclformat"));
  6445. model.makeValue("/root/hidden/sppiz00500/cond/rownum", setrow);
  6446. model.makeValue("/root/hidden/sppiz00500/cond/cdnm", model.getValue("/root/main/list3/clsp["+ setrow +"]/cdnm"));
  6447. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", "J");
  6448. } else { // 기존에 입력된 JX999가 없는 경우
  6449. model.makeValue("/root/hidden/sppiz00500/cond/flag", "I");
  6450. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", snglcalcscorcd);
  6451. model.makeValue("/root/hidden/sppiz00500/cond/clodseqno", seqno);
  6452. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", edilnno);
  6453. model.makeValue("/root/hidden/sppiz00500/cond/spclcd", "JX999");
  6454. model.makeValue("/root/hidden/sppiz00500/cond/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  6455. model.makeNode("/root/hidden/sppiz00500/cond/spclspec");
  6456. model.makeValue("/root/hidden/sppiz00500/cond/spclformat", "X(700)");
  6457. model.makeNode("/root/hidden/sppiz00500/cond/rownum");
  6458. model.makeValue("/root/hidden/sppiz00500/cond/cdnm", "기타내역");
  6459. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", "J");
  6460. }
  6461. }
  6462. modal("SPPIZ00500", "1", "10", "10", "SPPIZ00500", "/root/hidden/sppiz00500", "/root/hidden/clsp", "", ""); // SPPIZ00500_특정내역상세관리.xrw
  6463. var rsltcnt = getNodesetCount("/root/hidden/sppiz00500/rslt/list");
  6464. // 처리 건수
  6465. if (rsltcnt > 0) {
  6466. for (var i = rsltcnt; i > 0; i--) {
  6467. var flag = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/flag");
  6468. var rownum = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/rownum");
  6469. var newspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclcd");
  6470. var newcdnm = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/cdnm");
  6471. var newspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclspec");
  6472. var newspclformat = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclformat");
  6473. var newdetldesc = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/detldesc");
  6474. // 특정코드 추가인 경우
  6475. if (flag == "I") {
  6476. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  6477. grd_clsphist.insertRow(clsprow++, true);
  6478. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "J");
  6479. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clodseqno", seqno);
  6480. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", edilnno);
  6481. model.setValue("/root/main/list3/clsp["+ clsprow +"]/snglcalcscorcd", snglcalcscorcd);
  6482. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclcd", newspclcd);
  6483. model.setValue("/root/main/list3/clsp["+ clsprow +"]/cdnm", newcdnm);
  6484. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclspec", newspclspec);
  6485. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclformat", newspclformat);
  6486. model.setValue("/root/main/list3/clsp["+ clsprow +"]/detldesc", newdetldesc);
  6487. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldedilnno", edilnno);
  6488. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldspclcd", "");
  6489. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clsoyn", "N"); //원외처방여부
  6490. model.setValue("/root/hidden/list3/msgspclformat", "코드: "+ newspclcd +" / 명칭: "+ newcdnm +" / 내역: "+ newspclspec +" / 형식: "+ newspclformat);
  6491. // 특정코드 변경인 경우
  6492. } else if (flag == "U") {
  6493. model.setValue("/root/main/list3/clsp["+ rownum +"]/snglcalcscorcd", snglcalcscorcd);
  6494. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclcd", newspclcd);
  6495. model.setValue("/root/main/list3/clsp["+ rownum +"]/cdnm", newcdnm);
  6496. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclspec", newspclspec);
  6497. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclformat", newspclformat);
  6498. model.setValue("/root/main/list3/clsp["+ rownum +"]/detldesc", newdetldesc);
  6499. model.refresh();
  6500. // 특정코드, 특정내역이 변경되었거나 삭제된 특정코드를 조회하여 "확인"을 선택한 경우
  6501. var oldspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/oldspclcd");
  6502. var oldspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/oldspclspec");
  6503. var rowstatus = grd_clsphist.rowstatus(rownum);
  6504. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  6505. } else {
  6506. grd_clsphist.rowstatus(rownum) = 2; // 2 : update 상태로 stat를 변경한다.
  6507. }
  6508. model.setValue("/root/hidden/list3/msgspclformat", "코드: "+ newspclcd +" / 명칭: "+ newcdnm +" / 내역: "+ newspclspec +" / 형식: "+ newspclformat);
  6509. // 특정코드 삭제인 경우
  6510. } else if (flag == "D" && rownum != "" ) {
  6511. // 특정내역 Grid에서 삭제
  6512. var rowstatus = grd_clsphist.rowstatus(rownum);
  6513. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  6514. grd_clsphist.deleteRow(rownum, false); // 해당 라인을 Grid에서 삭제한다.
  6515. } else { // 0 : new, 2 : update
  6516. grd_clsphist.rowstatus(rownum) = 4; // 4 : delete 상태로 stat를 변경한다.
  6517. }
  6518. grd_clsphist.row = rownum;
  6519. model.setValue("/root/hidden/list3/msgspclformat", "입력된 줄단위 특정내역이 없습니다.");
  6520. } // 특정 코드 상태 따른 if end
  6521. } // for end
  6522. var cnt = 0;
  6523. var jx999cnt = 0;
  6524. var nonjx999cnt = 0; // JX999가 아닌 특정내역코드의 수
  6525. for (var i = 1; i < grd_clsphist.rows; i++) {
  6526. if (grd_clsphist.rowstatus(i) != 4) {
  6527. var spcClodseqno = model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno");
  6528. var spcClsoyn = model.getValue("/root/main/list3/clsp["+ i +"]/clsoyn");
  6529. if (spcClodseqno == seqno && spcClsoyn == "N") {
  6530. cnt++;
  6531. var spclcd = model.getValue("/root/main/list3/clsp["+ i +"]/spclcd");
  6532. if (spclcd == "JX999") { // JX999인 경우
  6533. jx999cnt++;
  6534. }
  6535. else if (spclcd != "JT001") { // JX999도, 확인코드도 아닌 경우
  6536. nonjx999cnt++;
  6537. }
  6538. }
  6539. }
  6540. }
  6541. if (cnt > 0) {
  6542. model.setValue("/root/main/list2/clod["+ row +"]/lnunitspclspecyn", "*");
  6543. if (jx999cnt > 0) {
  6544. if (nonjx999cnt == 0) { // JX999만 있는 경우
  6545. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#f7a08b"; // class="color_6" 다홍색
  6546. } else { // JX999 + 다른 코드도 있는 경우
  6547. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#b5a5d1"; // 연한 보라색
  6548. }
  6549. } else {
  6550. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff = White
  6551. }
  6552. } else {
  6553. model.resetInstanceNode("/root/main/list2/clod["+ row +"]/lnunitspclspecyn");
  6554. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff = White
  6555. }
  6556. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  6557. fSortSpclNo();
  6558. grd_clsphist.refresh();
  6559. grd_clodhist.refresh();
  6560. } // 처리 건수 if end
  6561. } else {
  6562. messageBox("처방번호가 부여되지 않았으며 해당 줄단위 특정내역이", "I004"); ///줄번호가 부여되지 않았으며 해당 줄단위 특정내역이 없습니다.
  6563. }
  6564. }
  6565. // 줄단위 원외처방특정내역 수정/입력(처방주석입력 팝업메뉴 클릭시)
  6566. function fCallClsoSpclSpec() {
  6567. fSetLnUnitClsoSpclSpec("grd_oprcphist");
  6568. }
  6569. // 줄단위 원외처방특정내역을 수정/입력한다3
  6570. function fSetLnUnitClsoSpclSpec(sgrid) { // 'T' 필드 더블클릭 또는 특정내역 더블클릭
  6571. model.removeNodeset("/root/hidden/sppiz01700/rslt"); // SPPIZ01700_원외처방특정내역상세관리 에서 선택된 결과가 copyNode되는 경로임
  6572. model.removeNodeset("/root/hidden/sppiz01700/cond");
  6573. // 1. 원외처방에서 "더블클릭"한 경우
  6574. if (sgrid == "grd_oprcphist" ) {
  6575. var row = grd_oprcphist.row;
  6576. var seqno = grd_oprcphist.valueMatrix(row, grd_oprcphist.colRef("seqno"));
  6577. var edilnno = grd_oprcphist.valueMatrix(row, grd_oprcphist.colRef("edilnno"));
  6578. var snglcalcscorcd = grd_oprcphist.valueMatrix(row, grd_oprcphist.colRef("snglcalcscorcd"));
  6579. var clopdd = grd_oprcphist.valueMatrix(row, grd_oprcphist.colRef("clopdd"));
  6580. var clopno = grd_oprcphist.valueMatrix(row, grd_oprcphist.colRef("clopno"));
  6581. var mpsno = grd_oprcphist.valueMatrix(row, grd_oprcphist.colRef("mpsno"));
  6582. /*
  6583. var seqno = model.getValue("/root/main/list7/clop["+ row +"]/clopseqno");
  6584. var edilnno = model.getValue("/root/main/list7/clop["+ row +"]/edilnno");
  6585. var snglcalcscorcd = model.getValue("/root/main/list7/clop["+ row +"]/snglcalcscorcd");
  6586. var clopdd = model.getValue("/root/main/list7/clop["+ row +"]/clopdd");
  6587. var clopno = model.getValue("/root/main/list7/clop["+ row +"]/clopno");
  6588. var mpsno = model.getValue("/root/main/list7/clop["+ row +"]/mpsno");
  6589. */
  6590. // 2. 특정내역에서 "더블클릭"한 경우
  6591. } else if (sgrid == "grd_clsphist") {
  6592. var row = grd_clsphist.row;
  6593. var seqno = model.getValue("/root/main/list3/clsp["+ row +"]/clodseqno");
  6594. var edilnno = model.getValue("/root/main/list3/clsp["+ row +"]/edilnno");
  6595. var snglcalcscorcd = model.getValue("/root/main/list3/clsp["+ row +"]/snglcalcscorcd");
  6596. var clopdd = model.getValue("/root/main/list3/clsp["+ row +"]/mpsno").substr(0,8);
  6597. var clopno = model.getValue("/root/main/list3/clsp["+ row +"]/mpsno").substr(8,5);
  6598. var mpsno = model.getValue("/root/main/list3/clsp["+ row +"]/mpsno");
  6599. }
  6600. if (seqno != "0") {
  6601. if (sgrid == "grd_oprcphist") {
  6602. var lnunitspclspecyn = grd_oprcphist.valueMatrix(row, grd_oprcphist.colRef("spclspecyn"));
  6603. } else if (sgrid == "grd_clsphist") {
  6604. var lnunitspclspecyn = "*";
  6605. }
  6606. if (lnunitspclspecyn == "") {
  6607. model.makeValue("/root/hidden/sppiz01700/cond/flag", "I");
  6608. model.makeValue("/root/hidden/sppiz01700/cond/snglcalcscorcd", snglcalcscorcd);
  6609. model.makeValue("/root/hidden/sppiz01700/cond/clopdd", clopdd);
  6610. model.makeValue("/root/hidden/sppiz01700/cond/clopno", clopno);
  6611. model.makeValue("/root/hidden/sppiz01700/cond/edilnno", edilnno);
  6612. model.makeValue("/root/hidden/sppiz01700/cond/clodseqno", seqno);
  6613. model.makeValue("/root/hidden/sppiz01700/cond/spclcd", "JX999");
  6614. model.makeValue("/root/hidden/sppiz01700/cond/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  6615. model.makeValue("/root/hidden/sppiz01700/cond/spclspec", "");
  6616. model.makeValue("/root/hidden/sppiz01700/cond/spclformat", "X(700)");
  6617. model.makeValue("/root/hidden/sppiz01700/cond/rownum", "");
  6618. model.makeValue("/root/hidden/sppiz01700/cond/cdnm", "기타내역");
  6619. model.makeValue("/root/hidden/sppiz01700/cond/unitflag", "J");
  6620. } else { // 기존에 입력된 줄단위 특정내역이 있는 경우
  6621. var rowcnt = 1;
  6622. var setrow = 0;
  6623. for (var i = 1; i < grd_clsphist.rows; i++) {
  6624. var spcClodseqno = model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno");
  6625. var spcClsoyn = model.getValue("/root/main/list3/clsp["+ i +"]/clsoyn"); //원외특정여부
  6626. if (spcClodseqno == seqno && spcClsoyn == "Y") {
  6627. var spclcd = model.getValue("/root/main/list3/clsp["+ i +"]/spclcd");
  6628. if (spclcd != "" && spclcd != "JT001" && grd_clsphist.rowstatus(i) != 4) { // 확인코드가 아닌 경우
  6629. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/flag", "");
  6630. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/rownum", i);
  6631. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/snglcalcscorcd", model.getValue("/root/main/list3/clsp["+ i +"]/snglcalcscorcd"));
  6632. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/clopdd", model.getValue("/root/main/list3/clsp["+ i +"]/mpsno").substr(0,8));
  6633. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/clopno", model.getValue("/root/main/list3/clsp["+ i +"]/mpsno").substr(8,5));
  6634. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/clodseqno", model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno"));
  6635. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/edilnno", model.getValue("/root/main/list3/clsp["+ i +"]/edilnno"));
  6636. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/spclcd", spclcd);
  6637. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/spclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  6638. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/spclformat", model.getValue("/root/main/list3/clsp["+ i +"]/spclformat"));
  6639. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/cdnm", model.getValue("/root/main/list3/clsp["+ i +"]/cdnm"));
  6640. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/detldesc", model.getValue("/root/main/list3/clsp["+ i +"]/detldesc"));
  6641. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/oldspclcd", spclcd);
  6642. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/oldspclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  6643. // 특정내역 상세 화면에 보여줄 특정내역 선택
  6644. if (spclcd == "JX999") {
  6645. setrow = i; // 줄단위의 경우 가장 마지막 row로 설정한다.
  6646. }
  6647. rowcnt = rowcnt+1;
  6648. }
  6649. }
  6650. }
  6651. if (setrow > 0) {
  6652. model.makeValue("/root/hidden/sppiz01700/cond/flag", "");
  6653. model.makeValue("/root/hidden/sppiz01700/cond/snglcalcscorcd", snglcalcscorcd);
  6654. model.makeValue("/root/hidden/sppiz01700/cond/clopdd", clopdd);
  6655. model.makeValue("/root/hidden/sppiz01700/cond/clopno", clopno);
  6656. model.makeValue("/root/hidden/sppiz01700/cond/clodseqno", seqno);
  6657. model.makeValue("/root/hidden/sppiz01700/cond/edilnno", edilnno);
  6658. model.makeValue("/root/hidden/sppiz01700/cond/spclcd", model.getValue("/root/main/list3/clsp["+ setrow +"]/spclcd"));
  6659. model.makeValue("/root/hidden/sppiz01700/cond/detldesc", model.getValue("/root/main/list3/clsp["+ setrow +"]/detldesc"));
  6660. model.makeValue("/root/hidden/sppiz01700/cond/spclspec", model.getValue("/root/main/list3/clsp["+ setrow +"]/spclspec"));
  6661. model.makeValue("/root/hidden/sppiz01700/cond/spclformat", model.getValue("/root/main/list3/clsp["+ setrow +"]/spclformat"));
  6662. model.makeValue("/root/hidden/sppiz01700/cond/rownum", setrow);
  6663. model.makeValue("/root/hidden/sppiz01700/cond/cdnm", model.getValue("/root/main/list3/clsp["+ setrow +"]/cdnm"));
  6664. model.makeValue("/root/hidden/sppiz01700/cond/unitflag", "J");
  6665. } else { // 기존에 입력된 JX999가 없는 경우
  6666. model.makeValue("/root/hidden/sppiz01700/cond/flag", "I");
  6667. model.makeValue("/root/hidden/sppiz01700/cond/snglcalcscorcd", snglcalcscorcd);
  6668. model.makeValue("/root/hidden/sppiz01700/cond/clopdd", clopdd);
  6669. model.makeValue("/root/hidden/sppiz01700/cond/clopno", clopno);
  6670. model.makeValue("/root/hidden/sppiz01700/cond/clodseqno", seqno);
  6671. model.makeValue("/root/hidden/sppiz01700/cond/edilnno", edilnno);
  6672. model.makeValue("/root/hidden/sppiz01700/cond/spclcd", "JX999");
  6673. model.makeValue("/root/hidden/sppiz01700/cond/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  6674. model.makeValue("/root/hidden/sppiz01700/cond/spclspec", "");
  6675. model.makeValue("/root/hidden/sppiz01700/cond/spclformat", "X(700)");
  6676. model.makeValue("/root/hidden/sppiz01700/cond/rownum", "");
  6677. model.makeValue("/root/hidden/sppiz01700/cond/cdnm", "기타내역");
  6678. model.makeValue("/root/hidden/sppiz01700/cond/unitflag", "J");
  6679. }
  6680. }
  6681. modal("SPPIZ01700", "1", "10", "10", "SPPIZ01700", "/root/hidden/sppiz01700", "/root/hidden/clsp", "", ""); // sppiz01700_원외처방특정내역상세관리.xrw
  6682. var rsltcnt = getNodesetCount("/root/hidden/sppiz01700/rslt/list");
  6683. // 처리 건수
  6684. if (rsltcnt > 0) {
  6685. for (var i = rsltcnt; i > 0; i--) {
  6686. var flag = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/flag");
  6687. var rownum = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/rownum");
  6688. var newspclcd = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/spclcd");
  6689. var newcdnm = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/cdnm");
  6690. var newspclspec = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/spclspec");
  6691. var newspclformat = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/spclformat");
  6692. var newdetldesc = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/detldesc");
  6693. // 특정코드 추가인 경우
  6694. if (flag == "I") {
  6695. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  6696. grd_clsphist.insertRow(clsprow++, true);
  6697. if( newspclcd == 'CT001' ){
  6698. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "C");
  6699. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clodseqno", 0);
  6700. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", 0);
  6701. model.setValue("/root/main/list3/clsp["+ clsprow +"]/snglcalcscorcd", '-');
  6702. }else if( newspclcd == 'CT002' ){
  6703. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "C");
  6704. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clodseqno", 0);
  6705. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", 0);
  6706. model.setValue("/root/main/list3/clsp["+ clsprow +"]/snglcalcscorcd", '-');
  6707. }else{
  6708. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "J");
  6709. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clodseqno", seqno);
  6710. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", edilnno);
  6711. model.setValue("/root/main/list3/clsp["+ clsprow +"]/snglcalcscorcd", snglcalcscorcd);
  6712. }
  6713. var snglcalcscorcdcnt = getNodesetCount("/root/main/list7/clop"); //원외청방수
  6714. var clopdd = model.getValue("/root/main/list7/clop[1]/clopdd");
  6715. var clopno = model.getValue("/root/main/list7/clop[1]/clopno");
  6716. if (snglcalcscorcdcnt > 0) {
  6717. if (mpsno == ""){
  6718. model.setValue("/root/main/list3/clsp["+ clsprow +"]/mpsno", clopdd +""+clopno);
  6719. }else{
  6720. model.setValue("/root/main/list3/clsp["+ clsprow +"]/mpsno", mpsno);
  6721. }
  6722. }
  6723. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclcd", newspclcd);
  6724. model.setValue("/root/main/list3/clsp["+ clsprow +"]/cdnm", newcdnm);
  6725. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclspec", newspclspec);
  6726. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclformat", newspclformat);
  6727. model.setValue("/root/main/list3/clsp["+ clsprow +"]/detldesc", newdetldesc);
  6728. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldedilnno", edilnno);
  6729. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldspclcd", "");
  6730. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clsoyn", "Y"); //원외처방여부
  6731. model.setValue("/root/hidden/list3/msgspclformat", "코드: "+ newspclcd +" / 명칭: "+ newcdnm +" / 내역: "+ newspclspec +" / 형식: "+ newspclformat);
  6732. // 특정코드 변경인 경우
  6733. } else if (flag == "U") {
  6734. model.setValue("/root/main/list3/clsp["+ rownum +"]/snglcalcscorcd", snglcalcscorcd);
  6735. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclcd", newspclcd);
  6736. model.setValue("/root/main/list3/clsp["+ rownum +"]/cdnm", newcdnm);
  6737. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclspec", newspclspec);
  6738. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclformat", newspclformat);
  6739. model.setValue("/root/main/list3/clsp["+ rownum +"]/detldesc", newdetldesc);
  6740. model.refresh();
  6741. // 특정코드, 특정내역이 변경되었거나 삭제된 특정코드를 조회하여 "확인"을 선택한 경우
  6742. var oldspclcd = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/oldspclcd");
  6743. var oldspclspec = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/oldspclspec");
  6744. var rowstatus = grd_clsphist.rowstatus(rownum);
  6745. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  6746. } else {
  6747. grd_clsphist.rowstatus(rownum) = 2; // 2 : update 상태로 stat를 변경한다.
  6748. }
  6749. model.setValue("/root/hidden/list3/msgspclformat", "코드: "+ newspclcd +" / 명칭: "+ newcdnm +" / 내역: "+ newspclspec +" / 형식: "+ newspclformat);
  6750. // 특정코드 삭제인 경우
  6751. } else if (flag == "D" && rownum != "" ) {
  6752. // 특정내역 Grid에서 삭제
  6753. var rowstatus = grd_clsphist.rowstatus(rownum);
  6754. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  6755. grd_clsphist.deleteRow(rownum, false); // 해당 라인을 Grid에서 삭제한다.
  6756. } else { // 0 : new, 2 : update
  6757. grd_clsphist.rowstatus(rownum) = 4; // 4 : delete 상태로 stat를 변경한다.
  6758. }
  6759. grd_clsphist.row = rownum;
  6760. model.setValue("/root/hidden/list3/msgspclformat", "입력된 줄단위 특정내역이 없습니다.");
  6761. } // 특정 코드 상태 따른 if end
  6762. } // for end
  6763. var cnt = 0;
  6764. for (var i = 1; i < grd_clsphist.rows; i++) {
  6765. if (grd_clsphist.rowstatus(i) != 4) {
  6766. var spcmpsno = model.getValue("/root/main/list3/clsp["+ i +"]/mpsno");
  6767. var spcClodseqno = model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno");
  6768. var spcClsoyn = model.getValue("/root/main/list3/clsp["+ i +"]/clsoyn");
  6769. if (spcmpsno == mpsno && spcClodseqno == seqno && spcClsoyn == "Y") {
  6770. cnt++;
  6771. break;
  6772. }
  6773. }
  6774. }
  6775. if (cnt > 0) {
  6776. var nodeList = instance1.selectNodes("/root/main/list7/clop");
  6777. for (var i = 1; i <= nodeList.length; i++) {
  6778. var mpsno = model.getValue("/root/main/list7/clop["+ i +"]/mpsno");
  6779. var seqno = model.getValue("/root/main/list7/clop["+ i +"]/seqno");
  6780. if (spcmpsno == mpsno && spcClodseqno == seqno && spcClsoyn == "Y") {
  6781. model.setValue("/root/main/list7/clop["+ i +"]/spclspecyn", "*");
  6782. break;
  6783. }
  6784. }
  6785. }
  6786. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  6787. fSortSpclNo();
  6788. grd_oprcphist.refresh();
  6789. grd_clsphist.refresh();
  6790. fSaveClspList();
  6791. } // 처리 건수 if end
  6792. } else {
  6793. messageBox("처방번호가 부여되지 않았으며 해당 줄단위 특정내역이", "I004"); ///줄번호가 부여되지 않았으며 해당 줄단위 특정내역이 없습니다.
  6794. }
  6795. }
  6796. function fCallClsoSpclAllSpec() {
  6797. fSetLnUnitClsoSpclAllSpec("grd_oprcphist");
  6798. }
  6799. function fSetLnUnitClsoSpclAllSpec(sgrid) { // 'T' 필드 더블클릭 또는 특정내역 더블클릭
  6800. model.removeNodeset("/root/hidden/sppiz01700/rslt"); // SPPIZ01700_원외처방특정내역상세관리 에서 선택된 결과가 copyNode되는 경로임
  6801. model.removeNodeset("/root/hidden/sppiz01700/cond");
  6802. var grid_obj = document.controls.item(sgrid);
  6803. // 1. 원외처방에서 "더블클릭"한 경우
  6804. var rowcnt = 1;
  6805. var setrow = 0;
  6806. for (var k=0; k < grid_obj.selectedRows; k++ ) {
  6807. var row = grid_obj.selectedRow(k);
  6808. var seqno = grid_obj.valueMatrix(row, grid_obj.colRef("seqno"));
  6809. var edilnno = grid_obj.valueMatrix(row, grid_obj.colRef("edilnno"));
  6810. var snglcalcscorcd = grid_obj.valueMatrix(row, grid_obj.colRef("snglcalcscorcd"));
  6811. var mpsno = grid_obj.valueMatrix(row, grid_obj.colRef("mpsno"));
  6812. if (sgrid == "grd_oprcphist" ) {
  6813. var clopdd = grid_obj.valueMatrix(row, grid_obj.colRef("clopdd"));
  6814. var clopno = grid_obj.valueMatrix(row, grid_obj.colRef("clopno"));
  6815. // 2. 특정내역에서 "더블클릭"한 경우
  6816. } else if (sgrid == "grd_clsphist") {
  6817. var clopdd = grid_obj.valueMatrix(row, grid_obj.colRef("mpsno")).substr(0,8);
  6818. var clopno = grid_obj.valueMatrix(row, grid_obj.colRef("mpsno")).substr(8,5);
  6819. }
  6820. if (seqno != "0") {
  6821. if (sgrid == "grd_oprcphist") {
  6822. var lnunitspclspecyn = grid_obj.valueMatrix(row, grid_obj.colRef("spclspecyn"));
  6823. } else if (sgrid == "grd_clsphist") {
  6824. var lnunitspclspecyn = "*";
  6825. }
  6826. if (lnunitspclspecyn == "") {
  6827. model.makeValue("/root/hidden/sppiz01700/cond/flag", "I");
  6828. model.makeValue("/root/hidden/sppiz01700/cond/snglcalcscorcd", snglcalcscorcd);
  6829. model.makeValue("/root/hidden/sppiz01700/cond/clopdd", clopdd);
  6830. model.makeValue("/root/hidden/sppiz01700/cond/clopno", clopno);
  6831. model.makeValue("/root/hidden/sppiz01700/cond/edilnno", edilnno);
  6832. model.makeValue("/root/hidden/sppiz01700/cond/clodseqno", seqno);
  6833. model.makeValue("/root/hidden/sppiz01700/cond/spclcd", "JX999");
  6834. model.makeValue("/root/hidden/sppiz01700/cond/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  6835. model.makeValue("/root/hidden/sppiz01700/cond/spclspec", "");
  6836. model.makeValue("/root/hidden/sppiz01700/cond/spclformat", "X(700)");
  6837. model.makeValue("/root/hidden/sppiz01700/cond/rownum", "");
  6838. model.makeValue("/root/hidden/sppiz01700/cond/cdnm", "기타내역");
  6839. model.makeValue("/root/hidden/sppiz01700/cond/unitflag", "J");
  6840. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/flag", "I");
  6841. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/rownum", "");
  6842. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/snglcalcscorcd", snglcalcscorcd);
  6843. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/clopdd", clopdd);
  6844. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/clopno", clopno);
  6845. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/clodseqno", seqno);
  6846. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/edilnno", edilnno);
  6847. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/spclcd", "JX999");
  6848. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/spclspec", "");
  6849. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/spclformat", "X(700)");
  6850. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/cdnm", "기타내역");
  6851. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  6852. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/unitflag", "J");
  6853. rowcnt = rowcnt+1;
  6854. } else { // 기존에 입력된 줄단위 특정내역이 있는 경우
  6855. for (var i = 1; i < grd_clsphist.rows; i++) {
  6856. var spcClodseqno = model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno");
  6857. var spcClsoyn = model.getValue("/root/main/list3/clsp["+ i +"]/clsoyn"); //원외특정여부
  6858. if (spcClodseqno == seqno && spcClsoyn == "Y") {
  6859. var spclcd = model.getValue("/root/main/list3/clsp["+ i +"]/spclcd");
  6860. var spclcdJX999 = model.getValue("/root/main/list3/clsp[insntstat!='D' and spclcd='JX999' and snglcalcscorcd='"+snglcalcscorcd+"' ]/spclcd");
  6861. if (spclcd != "" && spclcd != "JT001" && spclcd == "JX999" && grd_clsphist.rowstatus(i) != 4) { // 확인코드가 아닌 경우
  6862. model.makeValue("/root/hidden/sppiz01700/cond/flag", "");
  6863. model.makeValue("/root/hidden/sppiz01700/cond/snglcalcscorcd", snglcalcscorcd);
  6864. model.makeValue("/root/hidden/sppiz01700/cond/clopdd", clopdd);
  6865. model.makeValue("/root/hidden/sppiz01700/cond/clopno", clopno);
  6866. model.makeValue("/root/hidden/sppiz01700/cond/clodseqno", seqno);
  6867. model.makeValue("/root/hidden/sppiz01700/cond/edilnno", edilnno);
  6868. model.makeValue("/root/hidden/sppiz01700/cond/spclcd", model.getValue("/root/main/list3/clsp["+ i +"]/spclcd"));
  6869. model.makeValue("/root/hidden/sppiz01700/cond/detldesc", model.getValue("/root/main/list3/clsp["+ i +"]/detldesc"));
  6870. model.makeValue("/root/hidden/sppiz01700/cond/spclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  6871. model.makeValue("/root/hidden/sppiz01700/cond/spclformat", model.getValue("/root/main/list3/clsp["+ i +"]/spclformat"));
  6872. model.makeValue("/root/hidden/sppiz01700/cond/rownum", setrow);
  6873. model.makeValue("/root/hidden/sppiz01700/cond/cdnm", model.getValue("/root/main/list3/clsp["+ i +"]/cdnm"));
  6874. model.makeValue("/root/hidden/sppiz01700/cond/unitflag", "J");
  6875. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/flag", "");
  6876. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/rownum", i);
  6877. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/snglcalcscorcd", model.getValue("/root/main/list3/clsp["+ i +"]/snglcalcscorcd"));
  6878. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/clopdd", model.getValue("/root/main/list3/clsp["+ i +"]/mpsno").substr(0,8));
  6879. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/clopno", model.getValue("/root/main/list3/clsp["+ i +"]/mpsno").substr(8,5));
  6880. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/clodseqno", model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno"));
  6881. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/edilnno", model.getValue("/root/main/list3/clsp["+ i +"]/edilnno"));
  6882. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/spclcd", spclcd);
  6883. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/spclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  6884. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/spclformat", model.getValue("/root/main/list3/clsp["+ i +"]/spclformat"));
  6885. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/cdnm", model.getValue("/root/main/list3/clsp["+ i +"]/cdnm"));
  6886. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/detldesc", model.getValue("/root/main/list3/clsp["+ i +"]/detldesc"));
  6887. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/oldspclcd", spclcd);
  6888. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/oldspclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  6889. // 특정내역 상세 화면에 보여줄 특정내역 선택
  6890. if (spclcd == "JX999") {
  6891. setrow = i; // 줄단위의 경우 가장 마지막 row로 설정한다.
  6892. }
  6893. rowcnt = rowcnt+1;
  6894. } else if (spclcd != "" && spclcd != "JT001" && spclcdJX999 == "" && grd_clsphist.rowstatus(i) != 4) {
  6895. model.makeValue("/root/hidden/sppiz01700/cond/flag", "I");
  6896. model.makeValue("/root/hidden/sppiz01700/cond/snglcalcscorcd", snglcalcscorcd);
  6897. model.makeValue("/root/hidden/sppiz01700/cond/clopdd", clopdd);
  6898. model.makeValue("/root/hidden/sppiz01700/cond/clopno", clopno);
  6899. model.makeValue("/root/hidden/sppiz01700/cond/clodseqno", seqno);
  6900. model.makeValue("/root/hidden/sppiz01700/cond/edilnno", edilnno);
  6901. model.makeValue("/root/hidden/sppiz01700/cond/spclcd", "JX999");
  6902. model.makeValue("/root/hidden/sppiz01700/cond/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  6903. model.makeValue("/root/hidden/sppiz01700/cond/spclspec", "");
  6904. model.makeValue("/root/hidden/sppiz01700/cond/spclformat", "X(700)");
  6905. model.makeValue("/root/hidden/sppiz01700/cond/rownum", "");
  6906. model.makeValue("/root/hidden/sppiz01700/cond/cdnm", "기타내역");
  6907. model.makeValue("/root/hidden/sppiz01700/cond/unitflag", "J");
  6908. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/flag", "I");
  6909. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/rownum", i);
  6910. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/snglcalcscorcd", model.getValue("/root/main/list3/clsp["+ i +"]/snglcalcscorcd"));
  6911. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/clopdd", model.getValue("/root/main/list3/clsp["+ i +"]/mpsno").substr(0,8));
  6912. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/clopno", model.getValue("/root/main/list3/clsp["+ i +"]/mpsno").substr(8,5));
  6913. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/clodseqno", model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno"));
  6914. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/edilnno", model.getValue("/root/main/list3/clsp["+ i +"]/edilnno"));
  6915. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/spclcd", spclcd);
  6916. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/spclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  6917. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/spclformat", model.getValue("/root/main/list3/clsp["+ i +"]/spclformat"));
  6918. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/cdnm", model.getValue("/root/main/list3/clsp["+ i +"]/cdnm"));
  6919. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/detldesc", model.getValue("/root/main/list3/clsp["+ i +"]/detldesc"));
  6920. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/oldspclcd", spclcd);
  6921. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/oldspclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  6922. rowcnt = rowcnt+1;
  6923. }
  6924. }
  6925. }
  6926. }
  6927. } else {
  6928. messageBox("처방번호가 부여되지 않았으며 해당 줄단위 특정내역이", "I004"); ///줄번호가 부여되지 않았으며 해당 줄단위 특정내역이 없습니다.
  6929. }
  6930. }
  6931. modal("SPPIZ01700", "1", "10", "10", "SPPIZ01700", "/root/hidden/sppiz01700", "/root/hidden/clsp", "", ""); // sppiz01700_원외처방특정내역상세관리.xrw
  6932. var rsltcnt = getNodesetCount("/root/hidden/sppiz01700/rslt/list");
  6933. // 처리 건수
  6934. if (rsltcnt > 0) {
  6935. for (var i = rsltcnt; i > 0; i--) {
  6936. var flag = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/flag");
  6937. var rownum = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/rownum");
  6938. var newspclcd = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/spclcd");
  6939. var newcdnm = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/cdnm");
  6940. var newspclspec = model.getValue("/root/hidden/sppiz01700/rslt/list[last()]/spclspec");
  6941. var newspclformat = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/spclformat");
  6942. var newdetldesc = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/detldesc");
  6943. var newclodseqno = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/clodseqno");
  6944. var newsnglcalcscorcd = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/snglcalcscorcd");
  6945. var newedilnno = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/edilnno");
  6946. // 특정코드 추가인 경우
  6947. if (flag == "I") {
  6948. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  6949. grd_clsphist.insertRow(clsprow++, true);
  6950. if( newspclcd == 'CT001' ){
  6951. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "C");
  6952. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clodseqno", 0);
  6953. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", 0);
  6954. model.setValue("/root/main/list3/clsp["+ clsprow +"]/snglcalcscorcd", '-');
  6955. }else if( newspclcd == 'CT002' ){
  6956. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "C");
  6957. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clodseqno", 0);
  6958. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", 0);
  6959. model.setValue("/root/main/list3/clsp["+ clsprow +"]/snglcalcscorcd", '-');
  6960. }else{
  6961. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "J");
  6962. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clodseqno", newclodseqno);
  6963. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", newedilnno);
  6964. model.setValue("/root/main/list3/clsp["+ clsprow +"]/snglcalcscorcd", newsnglcalcscorcd);
  6965. }
  6966. var snglcalcscorcdcnt = getNodesetCount("/root/main/list7/clop"); //원외청방수
  6967. var clopdd = model.getValue("/root/main/list7/clop[1]/clopdd");
  6968. var clopno = model.getValue("/root/main/list7/clop[1]/clopno");
  6969. if (snglcalcscorcdcnt > 0) {
  6970. model.setValue("/root/main/list3/clsp["+ clsprow +"]/mpsno", clopdd +""+clopno);
  6971. }
  6972. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclcd", newspclcd);
  6973. model.setValue("/root/main/list3/clsp["+ clsprow +"]/cdnm", newcdnm);
  6974. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclspec", newspclspec);
  6975. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclformat", newspclformat);
  6976. model.setValue("/root/main/list3/clsp["+ clsprow +"]/detldesc", newdetldesc);
  6977. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldedilnno", newedilnno);
  6978. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldspclcd", "");
  6979. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clsoyn", "Y"); //원외처방여부
  6980. model.setValue("/root/hidden/list3/msgspclformat", "코드: "+ newspclcd +" / 명칭: "+ newcdnm +" / 내역: "+ newspclspec +" / 형식: "+ newspclformat);
  6981. // 특정코드 변경인 경우
  6982. } else if (flag == "U") {
  6983. model.setValue("/root/main/list3/clsp["+ rownum +"]/snglcalcscorcd", newsnglcalcscorcd);
  6984. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclcd", newspclcd);
  6985. model.setValue("/root/main/list3/clsp["+ rownum +"]/cdnm", newcdnm);
  6986. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclspec", newspclspec);
  6987. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclformat", newspclformat);
  6988. model.setValue("/root/main/list3/clsp["+ rownum +"]/detldesc", newdetldesc);
  6989. model.refresh();
  6990. // 특정코드, 특정내역이 변경되었거나 삭제된 특정코드를 조회하여 "확인"을 선택한 경우
  6991. var oldspclcd = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/oldspclcd");
  6992. var oldspclspec = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/oldspclspec");
  6993. var rowstatus = grd_clsphist.rowstatus(rownum);
  6994. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  6995. } else {
  6996. grd_clsphist.rowstatus(rownum) = 2; // 2 : update 상태로 stat를 변경한다.
  6997. }
  6998. model.setValue("/root/hidden/list3/msgspclformat", "코드: "+ newspclcd +" / 명칭: "+ newcdnm +" / 내역: "+ newspclspec +" / 형식: "+ newspclformat);
  6999. // 특정코드 삭제인 경우
  7000. } else if (flag == "D" && rownum != "" ) {
  7001. // 특정내역 Grid에서 삭제
  7002. var rowstatus = grd_clsphist.rowstatus(rownum);
  7003. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  7004. grd_clsphist.deleteRow(rownum, false); // 해당 라인을 Grid에서 삭제한다.
  7005. } else { // 0 : new, 2 : update
  7006. grd_clsphist.rowstatus(rownum) = 4; // 4 : delete 상태로 stat를 변경한다.
  7007. }
  7008. grd_clsphist.valueMatrix(rownum, grd_clsphist.colRef("insntstat")) = "D";
  7009. grd_clsphist.row = rownum;
  7010. model.setValue("/root/hidden/list3/msgspclformat", "입력된 줄단위 특정내역이 없습니다.");
  7011. } // 특정 코드 상태 따른 if end
  7012. } // for end
  7013. var cnt = 0;
  7014. for (var i = 1; i < grd_clsphist.rows; i++) {
  7015. if (grd_clsphist.rowstatus(i) != 4) {
  7016. var spcmpsno = model.getValue("/root/main/list3/clsp["+ i +"]/mpsno");
  7017. var spcClodseqno = model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno");
  7018. var spcClsoyn = model.getValue("/root/main/list3/clsp["+ i +"]/clsoyn");
  7019. if (spcmpsno == mpsno && spcClodseqno == seqno && spcClsoyn == "Y") {
  7020. cnt++;
  7021. break;
  7022. }
  7023. }
  7024. }
  7025. if (cnt > 0) {
  7026. var nodeList = instance1.selectNodes("/root/main/list7/clop");
  7027. for (var i = 1; i <= nodeList.length; i++) {
  7028. var mpsno = model.getValue("/root/main/list7/clop["+ i +"]/mpsno");
  7029. var seqno = model.getValue("/root/main/list7/clop["+ i +"]/seqno");
  7030. if (spcmpsno == mpsno && spcClodseqno == seqno && spcClsoyn == "Y") {
  7031. model.setValue("/root/main/list7/clop["+ i +"]/spclspecyn", "*");
  7032. break;
  7033. }
  7034. }
  7035. }
  7036. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  7037. fSortSpclNo();
  7038. grd_oprcphist.refresh();
  7039. grd_clsphist.refresh();
  7040. fSaveClspList();
  7041. } // 처리 건수 if end
  7042. }
  7043. // 명세서단위 특정내역을 수정/입력한다.
  7044. function fSetDocRefLnSpclSpec(){ // 특정내역 Grid의 row 더블클릭시 호출한다.
  7045. model.removeNodeset("/root/hidden/sppiz00500/rslt"); // SPPIZ00500_특정내역상세관리 에서 선택된 결과가 copyNode되는 경로임
  7046. model.removeNodeset("/root/hidden/sppiz00500/cond");
  7047. var row = grd_clsphist.row;
  7048. var clodseqno = model.getValue("/root/main/list3/clsp["+ row +"]/clodseqno");
  7049. var edilnno = model.getValue("/root/main/list3/clsp["+ row +"]/edilnno");
  7050. var snglcalcscorcd = model.getValue("/root/main/list3/clsp["+ row +"]/snglcalcscorcd");
  7051. var unitflag = model.getValue("/root/main/list3/clsp["+ row +"]/unitflag");
  7052. if (unitflag == "J") {
  7053. // 삭제상태인 경우 처방Grid에서 입력,수정은 가능하지만 특정내역Grid에서는 편집할 수 없다.
  7054. var rowstatus = grd_clsphist.rowstatus(row);
  7055. if (rowstatus == 4) { // 4 : delete
  7056. messageBox("삭제된 특정내역은 수정할 수", "I004"); ///삭제된 특정내역은 수정할 수 없습니다.
  7057. return;
  7058. }
  7059. }
  7060. var rowcnt = 1;
  7061. for (var i = 1; i < grd_clsphist.rows; i++) {
  7062. var spcClodseqno = model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno");
  7063. var spcClsoyn = model.getValue("/root/main/list3/clsp["+ i +"]/clsoyn"); //원외특정여부
  7064. if (spcClodseqno == clodseqno && spcClsoyn == "N") {
  7065. var spclcd = model.getValue("/root/main/list3/clsp["+ i +"]/spclcd");
  7066. if (spclcd != "" && spclcd != "JT001" && grd_clsphist.rowstatus(i) != 4) { // 확인코드가 아닌 경우
  7067. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/flag", "");
  7068. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/rownum", i);
  7069. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/snglcalcscorcd", model.getValue("/root/main/list3/clsp["+ i +"]/snglcalcscorcd"));
  7070. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/clodseqno", model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno"));
  7071. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/edilnno", model.getValue("/root/main/list3/clsp["+ i +"]/edilnno"));
  7072. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclcd", spclcd);
  7073. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  7074. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclformat", model.getValue("/root/main/list3/clsp["+ i +"]/spclformat"));
  7075. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/cdnm", model.getValue("/root/main/list3/clsp["+ i +"]/cdnm"));
  7076. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/detldesc", model.getValue("/root/main/list3/clsp["+ i +"]/detldesc"));
  7077. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/oldspclcd", spclcd);
  7078. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/oldspclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  7079. rowcnt = rowcnt+1;
  7080. }
  7081. }
  7082. }
  7083. model.makeValue("/root/hidden/sppiz00500/cond/flag", "");
  7084. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", snglcalcscorcd);
  7085. model.makeValue("/root/hidden/sppiz00500/cond/clodseqno", clodseqno);
  7086. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", edilnno);
  7087. model.makeValue("/root/hidden/sppiz00500/cond/spclcd", model.getValue("/root/main/list3/clsp["+ row +"]/spclcd"));
  7088. model.makeValue("/root/hidden/sppiz00500/cond/detldesc", model.getValue("/root/main/list3/clsp["+ row +"]/detldesc"));
  7089. model.makeValue("/root/hidden/sppiz00500/cond/spclspec", model.getValue("/root/main/list3/clsp["+ row +"]/spclspec"));
  7090. model.makeValue("/root/hidden/sppiz00500/cond/spclformat", model.getValue("/root/main/list3/clsp["+ row +"]/spclformat"));
  7091. model.makeValue("/root/hidden/sppiz00500/cond/rownum", row);
  7092. model.makeValue("/root/hidden/sppiz00500/cond/cdnm", model.getValue("/root/main/list3/clsp["+ row +"]/cdnm"));
  7093. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", unitflag);
  7094. modal("SPPIZ00500", "1", "10", "10", "SPPIZ00500", "/root/hidden/sppiz00500", "/root/hidden/clsp", "", ""); // SPPIZ00500_특정내역상세관리.xrw
  7095. var rsltcnt = getNodesetCount("/root/hidden/sppiz00500/rslt/list");
  7096. // 처리 건수
  7097. if (rsltcnt > 0) {
  7098. for (var i = rsltcnt; i > 0; i--) {
  7099. var flag = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/flag");
  7100. var rownum = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/rownum");
  7101. var newspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclcd");
  7102. var newcdnm = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/cdnm");
  7103. var newspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclspec");
  7104. var newspclformat = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclformat ");
  7105. var newdetldesc = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/detldesc");
  7106. if (flag == "I") {
  7107. // 특정코드 추가인 경우
  7108. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  7109. grd_clsphist.insertRow(clsprow++, true);
  7110. if( newspclcd == 'CT001' ){
  7111. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "C");
  7112. }else if( newspclcd == 'CT002' ){
  7113. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "C");
  7114. var snglcalcscorcdcnt = getNodesetCount("/root/main/list7/clop"); //원외청방수
  7115. var clopdd = model.getValue("/root/main/list7/clop[1]/clopdd");
  7116. var clopno = model.getValue("/root/main/list7/clop[1]/clopno");
  7117. if (snglcalcscorcdcnt > 0) {
  7118. model.setValue("/root/main/list3/clsp["+ clsprow +"]/mpsno", clopdd + "" + clopno);
  7119. }
  7120. } else{
  7121. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", unitflag);
  7122. }
  7123. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clodseqno", clodseqno);
  7124. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", edilnno);
  7125. model.setValue("/root/main/list3/clsp["+ clsprow +"]/snglcalcscorcd", snglcalcscorcd);
  7126. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclcd", newspclcd);
  7127. model.setValue("/root/main/list3/clsp["+ clsprow +"]/cdnm", newcdnm);
  7128. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclspec", newspclspec);
  7129. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclformat", newspclformat);
  7130. model.setValue("/root/main/list3/clsp["+ clsprow +"]/detldesc", newdetldesc);
  7131. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldedilnno", edilnno);
  7132. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldspclcd", "");
  7133. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clsoyn", "N"); //원외처방여부
  7134. model.setValue("/root/hidden/list3/msgspclformat", "코드: "+ newspclcd +" / 명칭: "+ newcdnm +" / 내역: "+ newspclspec +" / 형식: "+ newspclformat);
  7135. } else if (flag == "U") {
  7136. // 특정코드 변경인 경우
  7137. model.setValue("/root/main/list3/clsp["+ rownum +"]/snglcalcscorcd", snglcalcscorcd);
  7138. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclcd", newspclcd);
  7139. model.setValue("/root/main/list3/clsp["+ rownum +"]/cdnm", newcdnm);
  7140. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclspec", newspclspec);
  7141. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclformat", newspclformat);
  7142. model.setValue("/root/main/list3/clsp["+ rownum +"]/detldesc", newdetldesc);
  7143. grd_clsphist.refresh();
  7144. // 특정코드, 특정내역이 변경되었거나 삭제된 특정코드를 조회하여 "확인"을 선택한 경우
  7145. var oldspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/oldspclcd");
  7146. var oldspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/oldspclspec");
  7147. var rowstatus = grd_clsphist.rowstatus(rownum);
  7148. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  7149. } else {
  7150. grd_clsphist.rowstatus(rownum) = 2; // 2 : update 상태로 stat를 변경한다.
  7151. }
  7152. model.setValue("/root/hidden/list3/msgspclformat", "코드: "+ newspclcd +" / 명칭: "+ newcdnm +" / 내역: "+ newspclspec +" / 형식: "+ newspclformat);
  7153. } else if (flag == "D" && rownum != "" ) {
  7154. // 특정코드 삭제인 경우
  7155. var rowstatus = grd_clsphist.rowstatus(rownum);
  7156. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  7157. grd_clsphist.deleteRow(rownum, false); // 해당 라인을 Grid에서 삭제한다.
  7158. } else { // 0 : new, 2 : update
  7159. grd_clsphist.rowstatus(rownum) = 4; // 4 : delete 상태로 stat를 변경한다.
  7160. }
  7161. grd_clsphist.row = rownum;
  7162. model.setValue("/root/hidden/list3/msgspclformat", "입력된 줄단위 특정내역이 없습니다.");
  7163. } // 특정 코드 상태 따른 if end
  7164. } // for end
  7165. if (unitflag == "M") { // 명세서 단위
  7166. // 특정코드 MT015, MT016, MT004 정보가 입력된 환자인지를 확인한다.
  7167. fCheckSpclSpecData();
  7168. if (flag == "I" || flag == "U") {
  7169. // MT018:본인부담코드 변경시 clbs-ownbflag도 변경해줌
  7170. if (newspclcd == "MT018" && newspclspec != "") {
  7171. model.setValue("/root/main/item1/clbs/ownbflag", newspclspec);
  7172. cmb_ownbflag.refresh();
  7173. }
  7174. }
  7175. } else { // 줄단위인 경우
  7176. var cnt = 0;
  7177. var jx999cnt = 0;
  7178. var nonjx999cnt = 0; // JX999가 아닌 특정내역코드의 수
  7179. var spcClodseqno = model.getValue("/root/main/list3/clsp[clodseqno='"+clodseqno+"' and clsoyn='N' and insntstat != 'D']/clodseqno");
  7180. if (spcClodseqno.length > 0) {
  7181. cnt = spcClodseqno.length;
  7182. jx999cnt = getNodesetCount("/root/main/list3/clsp[spclcd='JX999']/spclcd");
  7183. nonjx999cnt = getNodesetCount("/root/main/list3/clsp[spclcd!='JT001']/spclcd");
  7184. }
  7185. if (cnt > 0) {
  7186. for (var j = 1; j < grd_clodhist.rows; j++) {
  7187. var seqno = model.getValue("/root/main/list2/clod["+ j +"]/seqno");
  7188. if (seqno == clodseqno) {
  7189. model.setValue("/root/main/list2/clod["+ j +"]/lnunitspclspecyn", "*");
  7190. if (jx999cnt > 0) {
  7191. if (nonjx999cnt == 0) { // JX999만 있는 경우
  7192. grd_clodhist.cellStyle("background-color", j, grd_clodhist.colRef("lnunitspclspecyn")) = "#f7a08b"; // class="color_6" 다홍색
  7193. } else { // JX999 + 다른 코드도 있는 경우
  7194. grd_clodhist.cellStyle("background-color", j, grd_clodhist.colRef("lnunitspclspecyn")) = "#b5a5d1"; // 연한 보라색
  7195. }
  7196. } else {
  7197. grd_clodhist.cellStyle("background-color", j, grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff = White
  7198. }
  7199. j = grd_clodhist.rows;
  7200. }
  7201. }
  7202. } else {
  7203. for (var j = 1; j < grd_clodhist.rows; j++) {
  7204. var seqno = model.getValue("/root/main/list2/clod["+ j +"]/seqno");
  7205. if (seqno == clodseqno) {
  7206. model.resetInstanceNode("/root/main/list2/clod["+ j +"]/lnunitspclspecyn");
  7207. grd_clodhist.cellStyle("background-color", j, grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff = White
  7208. j = grd_clodhist.rows;
  7209. }
  7210. }
  7211. }
  7212. }
  7213. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  7214. fSortSpclNo();
  7215. grd_clodhist.refresh();
  7216. grd_clsphist.refresh();
  7217. fSaveClspList();
  7218. } // 처리 건수 if end
  7219. }
  7220. /// 특정내역 Grid 에서 선택한 확인코드를 조회하고 줄단위 특정내역을 수정/입력한다.
  7221. function fSetCnfmCdSpclSpec() {
  7222. var row = grd_clsphist.row;
  7223. model.removeNodeset("root/hidden/sppiz01100/rslt");
  7224. model.setValue("/root/hidden/sppiz01100/cond/code", model.getValue("/root/main/list3/clsp["+ row +"]/spclspec"));
  7225. modal("SPPIZ01100", "1", "10", "10", "SPPIZ01100", "/root/hidden/sppiz01100", "/root/init/sppiz01100", "", ""); // SPPIZ01100_확인코드조회
  7226. if (instance1.selectSingleNode("root/hidden/sppiz01100/rslt")) {
  7227. var cnfmcd = model.getValue("root/hidden/sppiz01100/rslt/code");
  7228. var clodseqno = model.getValue("/root/main/list3/clsp["+ row +"]/clodseqno");
  7229. for (var j = 1; j < grd_clodhist.rows; j++) {
  7230. var seqno = model.getValue("/root/main/list2/clod["+ j +"]/seqno");
  7231. if (seqno == clodseqno) {
  7232. model.setValue("/root/main/list2/clod["+ j +"]/cnfmcd", cnfmcd);
  7233. j = grd_clodhist.rows;
  7234. }
  7235. }
  7236. var rowstatus = grd_clsphist.rowstatus(row);
  7237. if (cnfmcd) {
  7238. model.setValue("/root/main/list3/clsp["+ row +"]/spclspec", cnfmcd);
  7239. model.setValue("/root/hidden/list3/msgspclformat", "확인코드 - JT001 / 입력코드내역 : "+ cnfmcd +" / 기재형식 : X(5)");
  7240. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  7241. } else {
  7242. grd_clsphist.rowstatus(row) = 2; // 2 : update 상태로 stat를 변경한다.
  7243. }
  7244. } else {
  7245. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  7246. model.resetInstanceNode("/root/main/list3/clsp["+ row +"]/spclcd");
  7247. model.resetInstanceNode("/root/main/list3/clsp["+ row +"]/spclspec");
  7248. //grd_clsphist.deleteRow(row, false); // 해당 라인을 Grid에서 삭제한다.
  7249. } else {
  7250. grd_clsphist.rowstatus(row) = 4;
  7251. model.setValue("/root/main/list3/clsp["+ row +"]/insntstat","D");
  7252. }
  7253. model.setValue("/root/hidden/list3/msgspclformat", "입력된 확인코드 내역이 없습니다.");
  7254. }
  7255. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  7256. fSortSpclNo();
  7257. grd_clodhist.refresh();
  7258. grd_clsphist.refresh();
  7259. fSaveClspList();
  7260. }
  7261. }
  7262. // 특정내역 / 심사자메모 / EDI메모 창을 작게 한다.
  7263. function fCutSwitchSize() {
  7264. grp_clsphist.attribute("height") = "168";
  7265. var igrd_hei = parseInt(grp_clsphist.attribute("height"));
  7266. swt_spclmemo.attribute("height") = igrd_hei - 24;
  7267. grd_clsphist.attribute("height") = igrd_hei - 59;
  7268. tar_judgrmemo.attribute("height") = igrd_hei - 59;
  7269. tar_ediclammemo.attribute("height") = igrd_hei - 59;
  7270. if (grp_predoculist.visible == false && grp_delclodlist.visible == false && grp_delorderlist.visible == false) {
  7271. grd_clodhist.attribute("width") = "1114";
  7272. ln_clodhist.attribute("x2") = "1114";
  7273. }
  7274. }
  7275. // 특정내역 / 심사자메모 / EDI메모 창을 크게 한다.
  7276. function fExpandSwitchSize() {
  7277. grp_clsphist.attribute("height") = "632";
  7278. var igrd_hei = parseInt(grp_clsphist.attribute("height"));
  7279. swt_spclmemo.attribute("height") = igrd_hei - 24;
  7280. grd_clsphist.attribute("height") = igrd_hei - 59;
  7281. tar_judgrmemo.attribute("height") = igrd_hei - 59;
  7282. tar_ediclammemo.attribute("height") = igrd_hei - 59;
  7283. // 처방 Grid 을 축소하고, Grid Group이 겹쳐져 보이므로 visible = false 처리한다.
  7284. if (grp_predoculist.visible == true || grp_delclodlist.visible == true || grp_delorderlist.visible == true) {
  7285. grd_clodhist.attribute("width") = "630";
  7286. ln_clodhist.attribute("x2") = "630";
  7287. } else {
  7288. grd_clodhist.attribute("width") = "480";
  7289. ln_clodhist.attribute("x2") = "480";
  7290. }
  7291. }
  7292. ///////////////////////////////////////////////////////////////////////////
  7293. // 특정내역 중 MT004 내역을 설정한다.
  7294. function fSetSpclMT004() {
  7295. var clamym = model.getValue("/root/main/item1/clbs/clamym");
  7296. if (clamym) { // 조회된 심사대상자가 있고
  7297. if (btn_mt0004.attribute("class") == "btn5_letter4") { // 특정내역에 'MT004' 코드가 있는 경우
  7298. // 'MT004' 코드를 삭제한다.
  7299. for (var i = 1; i < grd_clsphist.rows; i++) {
  7300. var spclcd = model.getValue("/root/main/list3/clsp["+ i +"]/spclcd");
  7301. var gridrowstatus = grd_clsphist.rowstatus(i);
  7302. if (spclcd == "MT004" && gridrowstatus != 4) {
  7303. if (gridrowstatus == 1 || gridrowstatus == 3) { // 1 : insert, 3 : insert & new
  7304. model.resetInstanceNode("/root/main/list3/clsp["+ i +"]/spclcd");
  7305. model.resetInstanceNode("/root/main/list3/clsp["+ i +"]/spclspec");
  7306. //grd_clsphist.deleteRow(i, false); // 해당 라인을 Grid에서 삭제한다.
  7307. } else { // 0 : new, 2 : update
  7308. grd_clsphist.rowstatus(i) = 4; // 4 : delete 상태로 stat를 변경한다.
  7309. }
  7310. }
  7311. }
  7312. btn_mt0004.attribute("class") = "btn2_letter4";
  7313. } else { // 특정내역에 'MT004' 코드가 없는 경우
  7314. // 'MT004' 코드를 추가한다.
  7315. fSpclGridInsertRow(); // 특정내역 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가"
  7316. var clsprow = grd_clsphist.row;
  7317. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclcd", "MT004");
  7318. model.setValue("/root/main/list3/clsp["+ clsprow +"]/cdnm", "소명자료 구분");
  7319. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclspec", "Y");
  7320. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclformat", "X(1)");
  7321. model.setValue("/root/main/list3/clsp["+ clsprow +"]/detldesc", "소명자료를 첨부하는 경우 'Y'를 기재");
  7322. btn_mt0004.attribute("class") = "btn5_letter4";
  7323. btn_mt0004.attribute("color") = "#cc3333"; // cc3333=붉은색
  7324. }
  7325. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  7326. fSortSpclNo();
  7327. grd_clsphist.refresh();
  7328. }
  7329. }
  7330. // 특정내역 중 MT015, MT016 내역을 조회하여 "소명자료" Btn (첨부물 자료관리) Popup 화면에 표시한다.
  7331. function fGetAttachedDataList() {
  7332. var clamym = model.getValue("/root/main/item1/clbs/clamym");
  7333. if (clamym) { // 조회된 심사대상자가 있고
  7334. model.removeNodeset("/root/hidden/sppiz00200/cond");
  7335. var index = 0;
  7336. for (var i = 1; i < grd_clsphist.rows; i++) {
  7337. var spclcd = model.getValue("/root/main/list3/clsp["+ i +"]/spclcd");
  7338. var gridrowstatus = grd_clsphist.rowstatus(i);
  7339. if (spclcd == "MT015" || spclcd == "MT016") {
  7340. index++;
  7341. model.makeValue("/root/hidden/sppiz00200/cond/clsp["+ index +"]/spclcd", model.getValue("/root/main/list3/clsp["+ i +"]/spclcd"));
  7342. model.makeValue("/root/hidden/sppiz00200/cond/clsp["+ index +"]/seqno", model.getValue("/root/main/list3/clsp["+ i +"]/seqno"));
  7343. model.makeValue("/root/hidden/sppiz00200/cond/clsp["+ index +"]/spclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  7344. // 특정내역 Grid에서 "행 삭제"한 경우 MT015 / MT016 자료를 표시하지 않도록 하도록 rowstatus를 전달함
  7345. model.makeValue("/root/hidden/sppiz00200/cond/clsp["+ index +"]/rowstat", gridrowstatus);
  7346. }
  7347. }
  7348. if (instance1.selectSingleNode("/root/hidden/sppiz00200/cond") == null) {
  7349. model.makeNode("/root/hidden/sppiz00200/cond");
  7350. }
  7351. modal("SPPIZ00200", "1", "10", "10", "SPPIZ00200", "", "", "", ""); // SPPIZ00200_첨부물자료관리.xrw
  7352. fDisplayAttachedDataList();
  7353. }
  7354. }
  7355. // "소명자료" Btn (첨부물 자료관리) Popup 화면에서 특정내역 중 MT015, MT016 정보가 입력된 환자인지를 확인한다.
  7356. function fDisplayAttachedDataList() {
  7357. var isAttachedDataList = false;
  7358. var cSrcNode = instance1.selectSingleNode("/root/hidden/sppiz00200/rslt/clsp");
  7359. if (cSrcNode == null) { // 특정내역이 없는 경우임
  7360. return;
  7361. }
  7362. if (model.getValue("/root/hidden/sppiz00200/rslt/clsp/unitflag") == "") { // "취소" 선택시에 버튼 색이 변경되지 않도록
  7363. return;
  7364. }
  7365. var cSrcChildNodeList = cSrcNode.childNodes;
  7366. for (var i = 1; i <= cSrcChildNodeList.length; i++) {
  7367. var spclcd = model.getValue("/root/hidden/sppiz00200/rslt/clsp["+i+"]/spclcd");
  7368. if (spclcd == "MT015" || spclcd == "MT016") {
  7369. var rowstat = model.getValue("/root/hidden/sppiz00200/rslt/clsp["+i+"]/rowstat")
  7370. if (rowstat != "D") {
  7371. var spclspec = model.getValue("/root/hidden/sppiz00200/rslt/clsp["+i+"]/spclspec");
  7372. if (spclspec) {
  7373. isAttachedDataList = true;
  7374. }
  7375. // 특정내역 Grid 에서 해당 내용을 삽입 또는 수정한다.
  7376. if (rowstat == "I") { // 삽입
  7377. fSpclGridInsertRow();
  7378. model.setValue("/root/main/list3/clsp["+ grd_clsphist.row +"]/spclcd", spclcd);
  7379. model.setValue("/root/main/list3/clsp["+ grd_clsphist.row +"]/spclspec", spclspec);
  7380. if (spclcd == "MT015") {
  7381. model.setValue("/root/main/list3/clsp["+ grd_clsphist.row +"]/cdnm", "제출자료 목록표");
  7382. model.setValue("/root/main/list3/clsp["+ grd_clsphist.row +"]/spclformat", "X(2)");
  7383. model.setValue("/root/main/list3/clsp["+ grd_clsphist.row +"]/detldesc", "제출자료코드/제출자료코드/... 형태로 입력");
  7384. } else {
  7385. model.setValue("/root/main/list3/clsp["+ grd_clsphist.row +"]/cdnm", "제출자료 목록표(기타)");
  7386. model.setValue("/root/main/list3/clsp["+ grd_clsphist.row +"]/spclformat", "X(200)");
  7387. model.setValue("/root/main/list3/clsp["+ grd_clsphist.row +"]/detldesc", "영문(200자), 한글(100자)");
  7388. }
  7389. } else if (rowstat == "U") { // 수정
  7390. for (var j = 1; j < grd_clsphist.rows; j++) {
  7391. var gridspclcd = model.getValue("/root/main/list3/clsp["+ j +"]/spclcd");
  7392. var gridspclspec = model.getValue("/root/main/list3/clsp["+ j +"]/spclspec");
  7393. var gridrowstatus = grd_clsphist.rowstatus(j);
  7394. if (gridspclcd == spclcd) {
  7395. model.setValue("/root/main/list3/clsp["+ j +"]/spclspec", spclspec);
  7396. if (gridrowstatus == 1 || gridrowstatus == 3) { // 1 : insert, 3 : insert & new
  7397. } else {
  7398. grd_clsphist.rowstatus(j) = 2; // 2 : update 상태로 stat를 변경한다.
  7399. }
  7400. }
  7401. }
  7402. }
  7403. } else { // 삭제
  7404. // 특정내역 Grid 에서 해당 내용을 삭제한다.
  7405. for (var j = 1; j < grd_clsphist.rows; j++) {
  7406. var gridspclcd = model.getValue("/root/main/list3/clsp["+ j +"]/spclcd");
  7407. var gridspclspec = model.getValue("/root/main/list3/clsp["+ j +"]/spclspec");
  7408. var gridrowstatus = grd_clsphist.rowstatus(j);
  7409. if (gridspclcd == spclcd) {
  7410. if (gridrowstatus == 1 || gridrowstatus == 3) { // 1 : insert, 3 : insert & new
  7411. model.resetInstanceNode("/root/main/list3/clsp["+ j +"]/spclcd");
  7412. model.resetInstanceNode("/root/main/list3/clsp["+ j +"]/spclspec");
  7413. //grd_clsphist.deleteRow(j, false); // 해당 라인을 Grid에서 삭제한다.
  7414. } else { // 0 : new, 2 : update
  7415. grd_clsphist.rowstatus(j) = 4; // 4 : delete 상태로 stat를 변경한다.
  7416. }
  7417. }
  7418. }
  7419. }
  7420. }
  7421. }
  7422. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  7423. fSortSpclNo();
  7424. if (isAttachedDataList) {
  7425. btn_attData.attribute("class") = "btn5_letter4";
  7426. btn_attData.attribute("color") = "#cc3333"; // cc3333=붉은색
  7427. } else {
  7428. btn_attData.attribute("class") = "btn2_letter4";
  7429. }
  7430. }
  7431. // 특정코드 MT015, MT016, MT004 정보가 입력된 환자인지를 확인한다.
  7432. function fCheckSpclSpecData() {
  7433. // 삭제된 상태가 아닌 소명자료 내역이 있는지 파악하여 "소명자료" Btn 색을 설정한다.
  7434. // 특정코드 MT004 가 있는지를 파악하여 "MT004" Btn 색을 설정한다.
  7435. var isAttachedDataList = false;
  7436. var isMT004DataList = false;
  7437. for (var i = 1; i < grd_clsphist.rows; i++) {
  7438. var spclcd = model.getValue("/root/main/list3/clsp["+ i +"]/spclcd");
  7439. if (spclcd == "MT015" || spclcd == "MT016") {
  7440. if (grd_clsphist.rowstatus(i) != 4) {
  7441. isAttachedDataList = true;
  7442. }
  7443. }
  7444. else if (spclcd == "MT004") {
  7445. if (grd_clsphist.rowstatus(i) != 4) {
  7446. isMT004DataList = true;
  7447. }
  7448. }
  7449. }
  7450. // 소명자료 Btn
  7451. if (isAttachedDataList) {
  7452. btn_attData.attribute("class") = "btn5_letter4";
  7453. btn_attData.attribute("color") = "#cc3333"; // cc3333=붉은색
  7454. } else {
  7455. btn_attData.attribute("class") = "btn2_letter4";
  7456. }
  7457. // MT004 Btn
  7458. if (isMT004DataList) {
  7459. btn_mt0004.attribute("class") = "btn5_letter4";
  7460. btn_mt0004.attribute("color") = "#cc3333"; // cc3333=붉은색
  7461. } else {
  7462. btn_mt0004.attribute("class") = "btn2_letter4";
  7463. }
  7464. }
  7465. ///////////////////////////////////////////////////////////////////////////
  7466. // 상병 및 처방 치식 입력
  7467. function fDiagOrderToothInput(flag) {
  7468. if (flag == "Diag") {
  7469. var row = grd_cldihist.row;
  7470. var diagcd = model.getValue("/root/main/list1/cldi["+ row +"]/diagcd");
  7471. if (diagcd) {
  7472. model.setValue("/root/hidden/sppiz00600/cond/clamym", model.getValue("/root/main/item1/clbs/clamym"));
  7473. model.setValue("/root/hidden/sppiz00600/cond/clamdg", model.getValue("/root/main/item1/clbs/clamdg"));
  7474. model.setValue("/root/hidden/sppiz00600/cond/pid", model.getValue("/root/main/item1/clbs/pid"));
  7475. model.setValue("/root/hidden/sppiz00600/cond/pidsn", model.getValue("/root/main/item1/clbs/pidsn"));
  7476. model.setValue("/root/hidden/sppiz00600/cond/indd", model.getValue("/root/main/item1/clbs/indd"));
  7477. model.setValue("/root/hidden/sppiz00600/cond/cretno", model.getValue("/root/main/item1/clbs/cretno"));
  7478. model.setValue("/root/hidden/sppiz00600/cond/toot", model.getValue("/root/main/list1/cldi["+ row +"]/toot"));
  7479. fSetToothPop(row, "1");
  7480. model.removeNodeset("/root/hidden/sppiz00600/rslt"); // SPPIZ00600_상병및처방별치식 에서 선택된 결과가 copyNode되는 경로임
  7481. modal("SPPIZ00600", "1", "10", "10", "SPPIZ00600", "/root/hidden/sppiz00600/cond", "/root/hidden/cond", "", ""); // SPPIZ00600_상병및처방별치식.xrw
  7482. fGetToothPop();
  7483. }
  7484. }
  7485. else if (flag == "Order") {
  7486. var row = grd_clodhist.row;
  7487. var edilnno = model.getValue("/root/main/list2/clod["+ row +"]/edilnno");
  7488. if (edilnno) {
  7489. model.setValue("/root/hidden/sppiz00600/cond/clamym", model.getValue("/root/main/item1/clbs/clamym"));
  7490. model.setValue("/root/hidden/sppiz00600/cond/clamdg", model.getValue("/root/main/item1/clbs/clamdg"));
  7491. model.setValue("/root/hidden/sppiz00600/cond/pid", model.getValue("/root/main/item1/clbs/pid"));
  7492. model.setValue("/root/hidden/sppiz00600/cond/pidsn", model.getValue("/root/main/item1/clbs/pidsn"));
  7493. model.setValue("/root/hidden/sppiz00600/cond/indd", model.getValue("/root/main/item1/clbs/indd"));
  7494. model.setValue("/root/hidden/sppiz00600/cond/cretno", model.getValue("/root/main/item1/clbs/cretno"));
  7495. model.setValue("/root/hidden/sppiz00600/cond/toot", model.getValue("/root/main/list2/clod["+ row +"]/toot"));
  7496. fSetToothPop(row, "2");
  7497. model.removeNodeset("/root/hidden/sppiz00600/rslt"); // SPPIZ00600_상병및처방별치식 에서 선택된 결과가 copyNode되는 경로임
  7498. modal("SPPIZ00600", "1", "10", "10", "SPPIZ00600", "/root/hidden/sppiz00600/cond", "/root/hidden/cond", "", ""); // SPPIZ00600_상병및처방별치식.xrw
  7499. fGetToothPop();
  7500. }
  7501. }
  7502. }
  7503. //대상자에서 치식자동팝업체크시 타는 로직
  7504. function fDiagOrderToothInputDiret(flag) {
  7505. var trgtManWindow = getChildWindow("SPPIZ00600ML"); // SPPIZ00600_상병및처방별치식.xrw
  7506. var row = "1";
  7507. if (flag == "Diag") {
  7508. //var diagcd = model.getValue("/root/main/list1/cldi["+ row +"]/diagcd");
  7509. //if (diagcd) {
  7510. model.setValue("/root/hidden/sppiz00600/cond/clamym", model.getValue("/root/main/item1/clbs/clamym"));
  7511. model.setValue("/root/hidden/sppiz00600/cond/clamdg", model.getValue("/root/main/item1/clbs/clamdg"));
  7512. model.setValue("/root/hidden/sppiz00600/cond/pid", model.getValue("/root/main/item1/clbs/pid"));
  7513. model.setValue("/root/hidden/sppiz00600/cond/pidsn", model.getValue("/root/main/item1/clbs/pidsn"));
  7514. model.setValue("/root/hidden/sppiz00600/cond/indd", model.getValue("/root/main/item1/clbs/indd"));
  7515. model.setValue("/root/hidden/sppiz00600/cond/cretno", model.getValue("/root/main/item1/clbs/cretno"));
  7516. model.setValue("/root/hidden/sppiz00600/cond/toot", model.getValue("/root/main/list1/cldi["+ row +"]/toot"));
  7517. model.setValue("/root/hidden/sppiz00600/cond/popyn", "SMPID20500");
  7518. fSetToothPop(row, "1");
  7519. model.removeNodeset("/root/hidden/sppiz00600/rslt"); // SPPIZ00600_상병및처방별치식 에서 선택된 결과가 copyNode되는 경로임
  7520. if ( trgtManWindow == null ) {
  7521. //open("SPPIZ00600", "1", "10", "10", "SPPIZ00600", "/root/hidden/sppiz00600/cond", "/root/hidden/cond", "", ""); // SPPIZ00600_상병및처방별치식.xrw
  7522. //open("SPPIZ00600", "2", "10", "10", "SPPIZ00600", "/root/hidden/sppiz00600/cond", "/root/hidden/cond", "", ""); // SPPIZ00600_상병및처방별치식.xrw
  7523. open("SPPIZ00600", "2", "10", "10", "SPPIZ00600ML", "/root/hidden/sppiz00600/cond", "/root/hidden/cond", "", ""); // SPPIZ00600_상병및처방별치식.xrw
  7524. } else {
  7525. trgtManWindow.model.copyNode("/root/hidden/cond",root.hidden.sppiz00600.cond);
  7526. activateChild("SPPIZ00600ML");
  7527. trgtManWindow.javascript.fInitialize();
  7528. }
  7529. //fGetToothPop(); // 모달리스 타입이라..여기선 의미없음
  7530. //}
  7531. }
  7532. }
  7533. // 현재 상병, 처방 Grid 상에서 입력상태의 치식을 팝업 화면에 전달하기 위해 리스트 형태로 만든다.
  7534. function fSetToothPop(row, flag) {
  7535. model.removeNodeset("/root/hidden/sppiz00600/cond/list");
  7536. model.makeNode("/root/hidden/sppiz00600/cond/list");
  7537. // model.resetInstanceNode("/root/hidden/sppiz00600/cond/list");
  7538. // 상병
  7539. var cntcldi = getNodesetCount("/root/main/list1/cldi");
  7540. // 처방
  7541. var cntclod = getNodesetCount("/root/main/list2/clod");
  7542. // grd_clodhist.rows는 타이틀을 포함하지만 getNodesetCount는 타이틀을 제외한 data 갯수를 반환
  7543. var cd = "";
  7544. var cdnm = "";
  7545. var orddd = "";
  7546. var toot = "";
  7547. var rowcnt = 1;
  7548. // for (i=1; i<cntcldi; i++) {
  7549. for (var i = 1; i <= cntcldi; i++) {
  7550. cd = model.getValue("/root/main/list1/cldi["+ i + "]/diagcd");
  7551. cdnm = model.getValue("/root/main/list1/cldi["+ i + "]/diagnm");
  7552. orddd = model.getValue("/root/main/list1/cldi["+ i + "]/ordfromdd");
  7553. toot = model.getValue("/root/main/list1/cldi["+ i + "]/toot");
  7554. if (toot != "-" && toot != "" && toot != " ") {
  7555. var milktoothstr = "ABCDE000";
  7556. var subTootStr = "";
  7557. for (var inx = 0; inx < 32; inx++) {
  7558. var tootnum = toot.substr(inx,1);
  7559. if (tootnum == "*") { // 선택된 영구치의 경우 1~8 사이 숫자로 표시한다.
  7560. if (inx < 8) {
  7561. subTootStr += (8 - inx);
  7562. }
  7563. else if (inx > 7 && inx < 16) {
  7564. subTootStr += (inx - 7);
  7565. }
  7566. else if (inx > 15 && inx < 24) {
  7567. subTootStr += (24 - inx);
  7568. } else {
  7569. subTootStr += (inx - 23);
  7570. }
  7571. } else if (tootnum == "#") { // 선택된 유치의 경우 A~E 사이 알파벳으로 표시한다.
  7572. if (inx < 8) {
  7573. subTootStr += milktoothstr.charAt(7 - inx);
  7574. }
  7575. else if (inx > 7 && inx < 16) {
  7576. subTootStr += milktoothstr.charAt(inx - 8);
  7577. }
  7578. else if (inx > 15 && inx < 24) {
  7579. subTootStr += milktoothstr.charAt(23 - inx);
  7580. } else {
  7581. subTootStr += milktoothstr.charAt(inx - 24);
  7582. }
  7583. } else { // if (tootnum == "0") 선택되지 않은 경우 공백으로 처리한다.
  7584. subTootStr += " ";
  7585. }
  7586. }
  7587. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos");
  7588. //치식 표기를 설정한다.
  7589. if (row == i && flag == "1") {
  7590. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "true");
  7591. } else {
  7592. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "false");
  7593. }
  7594. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag", "상병");
  7595. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd", cd);
  7596. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm", cdnm);
  7597. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper", subTootStr.substr(0, 8));
  7598. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper", subTootStr.substr(8, 8));
  7599. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower", subTootStr.substr(16, 8));
  7600. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower", subTootStr.substr(24, 8));
  7601. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd", orddd);
  7602. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot", toot);
  7603. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row", i);
  7604. rowcnt = rowcnt+1;
  7605. } else {
  7606. if (row == i && flag == "1") {
  7607. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "true");
  7608. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag", "상병");
  7609. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd", cd);
  7610. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm", cdnm);
  7611. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper", "");
  7612. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper", "");
  7613. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower", "");
  7614. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower", "");
  7615. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd", orddd);
  7616. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot", "");
  7617. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row", i);
  7618. rowcnt = rowcnt+1;
  7619. }
  7620. }
  7621. }
  7622. for (var i = 1; i <= cntclod; i++) {
  7623. // for (i=1; i<cntclod; i++) {
  7624. cd = model.getValue("/root/main/list2/clod["+ i + "]/snglcalcscorcd");
  7625. cdnm = model.getValue("/root/main/list2/clod["+ i + "]/hngnm");
  7626. orddd = model.getValue("/root/main/list2/clod["+ i + "]/orddd");
  7627. toot = model.getValue("/root/main/list2/clod["+ i + "]/toot");
  7628. estmcls = model.getValue("/root/main/list2/clod["+ i + "]/estmcls");
  7629. if ((toot != "-" && toot != "") || estmcls == "U"){
  7630. var milktoothstr = "ABCDE000";
  7631. var subTootStr = "";
  7632. var tmpStr = "";
  7633. for (var inx = 0; inx < 32; inx++) {
  7634. var tootnum = toot.substr(inx,1);
  7635. if (tootnum == "*") { // 선택된 영구치의 경우 1~8 사이 숫자로 표시한다.
  7636. if (inx < 8) {
  7637. subTootStr += (8 - inx);
  7638. }
  7639. else if (inx > 7 && inx < 16) {
  7640. subTootStr += (inx - 7);
  7641. }
  7642. else if (inx > 15 && inx < 24) {
  7643. subTootStr += (24 - inx);
  7644. } else {
  7645. subTootStr += (inx - 23);
  7646. }
  7647. } else if (tootnum == "#") { // 선택된 유치의 경우 A~E 사이 알파벳으로 표시한다.
  7648. if (inx < 8) {
  7649. subTootStr += milktoothstr.charAt(7 - inx);
  7650. }
  7651. else if (inx > 7 && inx < 16) {
  7652. subTootStr += milktoothstr.charAt(inx - 8);
  7653. }
  7654. else if (inx > 15 && inx < 24) {
  7655. subTootStr += milktoothstr.charAt(23 - inx);
  7656. } else {
  7657. subTootStr += milktoothstr.charAt(inx - 24);
  7658. }
  7659. } else { // if (tootnum == "0") 선택되지 않은 경우 공백으로 처리한다.
  7660. subTootStr += " ";
  7661. }
  7662. }
  7663. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos");
  7664. //치식 표기를 설정한다.
  7665. if (row == i && flag == "2") {
  7666. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "true");
  7667. } else {
  7668. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "false");
  7669. }
  7670. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag", "처방");
  7671. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd", cd);
  7672. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm", cdnm);
  7673. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper", subTootStr.substr(0, 8));
  7674. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper", subTootStr.substr(8, 8));
  7675. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower", subTootStr.substr(16, 8));
  7676. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower", subTootStr.substr(24, 8));
  7677. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd", orddd);
  7678. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot", toot);
  7679. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row", i);
  7680. rowcnt = rowcnt+1;
  7681. } else {
  7682. if (row == i && flag == "2") {
  7683. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "true");
  7684. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag", "처방");
  7685. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd", cd);
  7686. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm", cdnm);
  7687. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper", "");
  7688. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper", "");
  7689. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower", "");
  7690. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower", "");
  7691. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd", orddd);
  7692. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot", "");
  7693. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row", i);
  7694. rowcnt = rowcnt+1;
  7695. }
  7696. }
  7697. }
  7698. }
  7699. // SPPIZ00600_상병및처방별치식 선택 결과를 반영한다.
  7700. function fGetToothPop() {
  7701. var tootSelectcnt = getNodesetCount("/root/hidden/sppiz00600/rslt/list");
  7702. var flag = "";
  7703. var row = "";
  7704. var toot = "";
  7705. tootSelectcnt = eval(tootSelectcnt) + 1;
  7706. for (var i = 1; i < tootSelectcnt; i++) {
  7707. flag = model.getValue("/root/hidden/sppiz00600/rslt/list["+ i +"]/flag");
  7708. row = model.getValue("/root/hidden/sppiz00600/rslt/list["+ i +"]/row");
  7709. var rlsttoot = model.getValue("/root/hidden/sppiz00600/rslt/list["+ i +"]/toot");
  7710. var rlsttoot1 = model.getValue("/root/hidden/sppiz00600/rslt/list["+ i +"]/toot1");
  7711. if (rlsttoot == "") {
  7712. rlsttoot = "-";
  7713. }
  7714. if (rlsttoot1 == "") {
  7715. rlsttoot1 = "-";
  7716. }
  7717. if (flag == "1") {
  7718. toot = model.getValue("/root/main/list1/cldi["+ row +"]/toot");
  7719. model.setValue("/root/main/list1/cldi["+ row +"]/toot", rlsttoot);
  7720. model.setValue("/root/main/list1/cldi["+ row +"]/toot1", rlsttoot1);
  7721. if (rlsttoot != toot) { // 치식번호가 변경된 경우
  7722. var cldistatus = grd_cldihist.rowstatus(row);
  7723. if (cldistatus == 0 || cldistatus == 2) { // 0 : new, 2 : update
  7724. grd_cldihist.rowstatus(row) = 2; // 2 : update
  7725. }
  7726. }
  7727. } else if (flag == "2") {
  7728. toot = model.getValue("/root/main/list2/clod["+ row +"]/toot");
  7729. model.setValue("/root/main/list2/clod["+ row +"]/toot", rlsttoot);
  7730. model.setValue("/root/main/list2/clod["+ row +"]/toot1", rlsttoot1);
  7731. if (rlsttoot != toot) { // 치식번호가 변경된 경우
  7732. // 처방의 수정된 row 상태를 표시한다.
  7733. fSetOrderChangeRowStat(row);
  7734. }
  7735. }
  7736. }
  7737. }
  7738. // 심사사유, 조정사유, 수정사유 입력
  7739. function fSetAdjtResnCd() {
  7740. var oldcd = model.getValue("/root/main/list2/clod["+ grd_clodhist.row +"]/adjtresncd");
  7741. model.resetInstanceNode("/root/hidden/sppiz01000");
  7742. model.setValue("/root/hidden/sppiz01000/cond/cdcls", "aftout");
  7743. model.setValue("/root/hidden/sppiz01000/cond/cdid", oldcd);
  7744. modal("SPPIZ01000", "1", "500", "450", "SPPIZ01000", "/root/hidden/sppiz01000/cond", "/root/hidden/sppiz01000/cond", "", ""); // SPPIZ01000_심사수정사유관리.xrw
  7745. var newcd = model.getValue("/root/hidden/sppiz01000/rslt/cdid");
  7746. var newdesc = model.getValue("/root/hidden/sppiz01000/rslt/adjtresndesc");
  7747. if (newcd) {
  7748. for (var i = 0; i < grd_clodhist.selectedRows; i++) {
  7749. var row = grd_clodhist.selectedrow(i);
  7750. model.setValue("/root/main/list2/clod["+ row +"]/adjtresncd", newcd);
  7751. model.setValue("/root/main/list2/clod["+ row +"]/adjtresndesc", newdesc);
  7752. if (newcd != oldcd) {
  7753. if (grd_clodhist.rowStatus(row) == 0) { // 0 : new, 2 : update
  7754. grd_clodhist.rowStatus(row) = 2;
  7755. }
  7756. // 처방 Grid 배경색을 설정한다. - 추가/수정된 row
  7757. fOrderBkColorNew(row);
  7758. }
  7759. }
  7760. }
  7761. return newcd;
  7762. }
  7763. ///////////////////////////////////////////////////////////////////////////
  7764. // 대상자 화면 "심사상태"로 갱신
  7765. function fSetJudgSaveState(judgendyn) {
  7766. var trgtManWindow = getChildWindow("SMPID20400"); // SMPID20400_외래사후심사대상자조회.xrw
  7767. if (trgtManWindow != null) {
  7768. var selectedRow = model.getValue("/root/hidden/smpid20400/rslt/selectedRow");
  7769. if (selectedRow) {
  7770. var trgtmanlist = trgtManWindow.instance1.selectSingleNode("/root/main/list1/clbs");
  7771. if (trgtmanlist == null) { // 조회된 대상자 목록이 없는 경우
  7772. } else {
  7773. var userid = getUserId(); // (common.js) 현재 로그인한 사용자 번호(ID)
  7774. if (userid) {
  7775. } else {
  7776. userid = "12345678";
  7777. }
  7778. var clamkey = model.getValue("/root/main/item1/clbs/clamkey");
  7779. var srchmode = trgtManWindow.model.getValue("/root/hidden/clbs/srchmode");
  7780. if (srchmode == "specclbs") { // 선별심사 모드인 경우
  7781. for (var i = 1; i < trgtManWindow.grd_specclbs.rows; i++) {
  7782. if (clamkey == trgtManWindow.model.getValue("/root/main/list1/clbs["+ i +"]/clamkey")) {
  7783. if (trgtManWindow.model.getValue("/root/main/list1/clbs["+ i +"]/judgendyn") != "Z")
  7784. {
  7785. trgtManWindow.model.setValue("/root/main/list1/clbs["+ i +"]/judgendyn", judgendyn);
  7786. }
  7787. trgtManWindow.model.setValue("/root/main/list1/clbs["+ i +"]/lastupdtrid", userid);
  7788. }
  7789. }
  7790. } else {
  7791. for (var i = 1; i < trgtManWindow.grd_clbsmast.rows; i++) {
  7792. if (clamkey == trgtManWindow.model.getValue("/root/main/list1/clbs["+ i +"]/clamkey")) {
  7793. if (trgtManWindow.model.getValue("/root/main/list1/clbs["+ i +"]/judgendyn") != "Z")
  7794. {
  7795. trgtManWindow.model.setValue("/root/main/list1/clbs["+ i +"]/judgendyn", judgendyn);
  7796. }
  7797. trgtManWindow.model.setValue("/root/main/list1/clbs["+ i +"]/lastupdtrid", userid);
  7798. }
  7799. }
  7800. }
  7801. trgtManWindow.javascript.fSetWorkStatCnt(); // 총건수와 기타 심사상태에 따른 cnt를 표시한다.
  7802. trgtManWindow.model.refresh();
  7803. }
  7804. }
  7805. }
  7806. }
  7807. //---------------------------------
  7808. // 저장 버튼을 누르면
  7809. //---------------------------------
  7810. function fSaveOutAftJudg(judgendyn) {
  7811. // 상병그리드에서 editmode인상태에서 F7 단축키 누렀을 경우 에러발생방지 위함. 절대 지우지 말것.
  7812. model.setFocus("grd_clodhist");
  7813. model.resetInstanceNode("/root/send/item1/clbs");
  7814. model.removeNodeset("/root/send/item2");
  7815. model.removeNodeset("/root/send/item3"); // 저장 오류가 난 경우 다시 "저장" Btn 누르면 새로 메모 내역이 생성되어야 하므로
  7816. model.removeNodeset("/root/send/item4");
  7817. model.removeNodeset("/root/send/list1"); //cldi
  7818. model.removeNodeset("/root/send/list2"); //clod
  7819. model.removeNodeset("/root/send/list3"); //clsp
  7820. model.removeNodeset("/root/send/item5");
  7821. model.removeNodeset("/root/send/list7"); //clop
  7822. model.removeNodeset("/root/send/item6");
  7823. // /root/send/list4 이전명세서 조건
  7824. var selectedRow = model.getValue("/root/hidden/smpid20400/rslt/selectedRow"); // 대상자 화면에서 선택했던 줄
  7825. var clamym = model.getValue("/root/main/item1/clbs/clamym");
  7826. var clamdg = model.getValue("/root/main/item1/clbs/clamdg");
  7827. var pid = model.getValue("/root/main/item1/clbs/pid");
  7828. var pidsn = model.getValue("/root/main/item1/clbs/pidsn");
  7829. var isValidCheck = true;
  7830. var cutprcpyn = "";
  7831. var tootpopupyn = "";
  7832. var trgtManWindow = getChildWindow("SMPID20400"); // SMPID20400_외래사후심사대상자조회.xrw
  7833. if (trgtManWindow != null) {
  7834. cutprcpyn = trgtManWindow.model.getValue("/root/send/item1/cutprcpsel"); // 20100302 추가
  7835. tootpopupyn = trgtManWindow.model.getValue("/root/temp/tootpopupyn"); // 20100402 추가
  7836. }
  7837. if (clamym) {
  7838. var saveNoMsg = "";
  7839. var saveOkMsg = "[계산]";
  7840. // CLBS 저장전 점검
  7841. if (fCheckSaveOutAftJudgCLBS()) {
  7842. //--------------------------
  7843. // KDRG 3.2 DRG분류번호 조회
  7844. //--------------------------
  7845. //pidfGetKDRGCode();
  7846. // 인적사항
  7847. var initclbs = instance1.selectNodesXml("/root/hidden/item1/initclbs/clbs");
  7848. var currentclbs = instance1.selectNodesXml("/root/main/item1/clbs");
  7849. var insukind = model.getValue("/root/main/item1/clbs/insukindcd");
  7850. if ((initclbs == currentclbs) && (insukind != "31")) {
  7851. saveNoMsg = "[인적사항] ";
  7852. // 인적사항 변경이 없는 경우에도 사용되는 진료과 / 진료의사 정보를 send data에 설정한다.
  7853. model.copyNode("/root/send/item1/clbs", "/root/main/item1/clbs");
  7854. model.makeValue("/root/send/item1/clbs/clbsupdateyn", "N"); // 인적사항 저장여부
  7855. } else {
  7856. saveOkMsg = "[인적사항] ";
  7857. model.copyNode("/root/send/item1/clbs", "/root/main/item1/clbs");
  7858. model.makeValue("/root/send/item1/clbs/clbsupdateyn", "Y"); // 인적사항 저장여부
  7859. //------------------------------------------------------------------------------
  7860. // 재계산할 항목이 변경된 경우 체크(외래)
  7861. //------------------------------------------------------------------------------
  7862. // 1. 공상구분
  7863. var init_offcharm = model.getValue("/root/hidden/item1/initclbs/clbs/offcharm");
  7864. var current_offcharm = model.getValue("/root/main/item1/clbs/offcharm");
  7865. if (init_offcharm != current_offcharm) {
  7866. model.makeValue("/root/send/item1/clbs/recalcyn", "Y"); // 저장 시에 재계산할지 여부를 설정함
  7867. }
  7868. // 2. 6세미만
  7869. var init_undersixageyn = model.getValue("/root/hidden/item1/initclbs/clbs/undersixageyn");
  7870. var current_undersixageyn = model.getValue("/root/main/item1/clbs/undersixageyn");
  7871. if (init_undersixageyn != current_undersixageyn) {
  7872. model.makeValue("/root/send/item1/clbs/recalcyn", "Y"); // 저장 시에 재계산할지 여부를 설정함
  7873. }
  7874. // 3. 진료횟수(의료급여 정액계산)
  7875. var init_ordtims = model.getValue("/root/hidden/item1/initclbs/clbs/ordtims");
  7876. var current_ordtims = model.getValue("/root/main/item1/clbs/ordtims");
  7877. // 4. 직접조제횟수(의료급여 정액계산)
  7878. var init_direcprcptims = model.getValue("/root/hidden/item1/initclbs/clbs/direcprcptims");
  7879. var current_direcprcptims = model.getValue("/root/main/item1/clbs/direcprcptims");
  7880. var instcd = model.getValue("/root/main/item1/clbs/instcd");
  7881. var insukind = model.getValue("/root/main/item1/clbs/insukindcd");
  7882. // 외래 의료급여 1종 본인부담 정액
  7883. if (insukind == "21") {
  7884. if (init_ordtims != current_ordtims) {
  7885. model.makeValue("/root/send/item1/clbs/recalcyn", "Y"); // 저장 시에 재계산할지 여부를 설정함
  7886. } else if (init_direcprcptims != current_direcprcptims) {
  7887. model.makeValue("/root/send/item1/clbs/recalcyn", "Y"); // 저장 시에 재계산할지 여부를 설정함
  7888. }
  7889. }
  7890. // 외래 의료급여 2종 본인부담 정액 [제2차의료급여기관 만성질환자] : 012.강남성모병원, 013.여의도성모병원을 제외한 병원
  7891. else if (insukind == "22" && !(instcd == "012" || instcd == "013")) {
  7892. if (init_ordtims != current_ordtims) {
  7893. model.makeValue("/root/send/item1/clbs/recalcyn", "Y"); // 저장 시에 재계산할지 여부를 설정함
  7894. } else if (init_direcprcptims != current_direcprcptims) {
  7895. model.makeValue("/root/send/item1/clbs/recalcyn", "Y"); // 저장 시에 재계산할지 여부를 설정함
  7896. }
  7897. }
  7898. // 4. 의료급여 본인부담코드
  7899. var insukind = model.getValue("/root/main/item1/clbs/insukindcd");
  7900. if (insukind.substr(0, 1) == "2") {
  7901. var init_ownbflag = model.getValue("/root/hidden/item1/initclbs/clbs/ownbflag");
  7902. var current_ownbflag = model.getValue("/root/main/item1/clbs/ownbflag");
  7903. init_ownbflag = init_ownbflag.substr(0, 1)
  7904. current_ownbflag = current_ownbflag.substr(0, 1)
  7905. if (init_ownbflag != current_ownbflag) {
  7906. model.makeValue("/root/send/item1/clbs/recalcyn", "Y"); // 저장 시에 재계산할지 여부를 설정함
  7907. }
  7908. }
  7909. // 5. 예약검사구분
  7910. var init_rsvordgubn = model.getValue("/root/hidden/item1/initclbs/clbs/rsvordgubn");
  7911. var current_rsvordgubn = model.getValue("/root/main/item1/clbs/rsvordgubn");
  7912. if (init_rsvordgubn != current_rsvordgubn) {
  7913. model.makeValue("/root/send/item1/clbs/recalcyn", "Y"); // 저장 시에 재계산할지 여부를 설정함
  7914. }
  7915. }
  7916. // 심사상태를 '저장' 또는 '심사완료' 상태로 저장한다.
  7917. model.makeValue("/root/send/item1/clbs/judgendyn", judgendyn); // 사후심사-심사완료여부 (P0151) - B: 심사중, C: 심사완료
  7918. } else {
  7919. isValidCheck = false;
  7920. }
  7921. // 심사메모
  7922. var initmemo = instance1.selectNodesXml("/root/hidden/item1/initmemo/memo");
  7923. var currentmemo = instance1.selectNodesXml("/root/main/item1/memo");
  7924. if (initmemo != currentmemo) {
  7925. // 심사자메모, EDI청구메모를 특정내역 형식에 맞춰 설정한다.
  7926. var judgmemo = model.getValue("/root/main/item1/memo/judgmemo").getTrim();
  7927. var judgmemorepeat = model.getValue("/root/main/item1/memo/judgmemorepeat");
  7928. var edimemo = model.getValue("/root/main/item1/memo/edimemo").getTrim();
  7929. var edimemorepeat = model.getValue("/root/main/item1/memo/edimemorepeat");
  7930. var noChange = true;
  7931. if (judgmemo != model.getValue("/root/hidden/item1/initmemo/memo/judgmemo").getTrim()) {
  7932. fSetJudgEDIMemo(judgmemo, "Y");
  7933. noChange = false; // 심사자메모가 변경된 경우임
  7934. }
  7935. else if (judgmemo != "" && judgmemorepeat != model.getValue("/root/hidden/item1/initmemo/memo/judgmemorepeat")) {
  7936. fSetJudgEDIMemo(judgmemo, "Y");
  7937. noChange = false; // 심사자메모 반복 설정이 변경된 경우임
  7938. }
  7939. if (edimemo != model.getValue("/root/hidden/item1/initmemo/memo/edimemo").getTrim()) {
  7940. fSetJudgEDIMemo(edimemo, "N");
  7941. noChange = false; // EDI청구메모가 변경된 경우임
  7942. }
  7943. else if (edimemo != "" && edimemorepeat != model.getValue("/root/hidden/item1/initmemo/memo/edimemorepeat")) {
  7944. fSetJudgEDIMemo(edimemo, "N");
  7945. noChange = false; // EDI청구메모 반복 설정이 변경된 경우임
  7946. }
  7947. if (noChange == false) {
  7948. saveOkMsg += "[심사메모] ";
  7949. } else {
  7950. saveNoMsg += "[심사메모] ";
  7951. }
  7952. } else {
  7953. saveNoMsg += "[심사메모] ";
  7954. }
  7955. // CLDI 저장전 점검
  7956. if (fCheckSaveOutAftJudgInfoCLDI(judgendyn)) {
  7957. // 상병
  7958. var licnsflag = "";
  7959. var licnsno = "";
  7960. var diagseq = "";
  7961. for (var j = grd_cldihist.fixedRows; j < grd_cldihist.rows; j++) {
  7962. diagseq = grd_cldihist.valueMatrix(j, grd_cldihist.colRef("diagseq"));
  7963. licnsflag = grd_cldihist.valueMatrix(j, grd_cldihist.colRef("licnsflag"));
  7964. licnsno = grd_cldihist.valueMatrix(j, grd_cldihist.colRef("licnsno"));
  7965. if (grd_cldihist.rowstatus(j) == 4 && diagseq.substr(0, 1) == "D") {
  7966. model.setValue("/root/main/list1/cldi["+ j +"]/diagseq", diagseq.substr(1, diagseq.length));
  7967. }
  7968. if ((diagseq == "1" && grd_cldihist.rowstatus(j) == 0) && (licnsflag == "" || licnsflag == "-" || licnsno == "-" || licnsno == "-")) {
  7969. grd_cldihist.rowstatus(j) = 2;
  7970. }
  7971. }
  7972. var updtdata = getGridUpdateData(grd_cldihist); // (tfHelper.js) 그리드 업데이트 데이터 반환, 업데이트 정보가 없을경우 "" 반환
  7973. if (updtdata) {
  7974. model.makeValue("/root/send/list1/cldi", updtdata);
  7975. }
  7976. if (updtdata != "" && grd_cldihist.rows > 1) { // 타이틀 부분으로 인해 data가 없어도 rows = 1 임.
  7977. // <table id="list1/cldi" count_ref="cldi" min_count="1"> 로 인해 빈줄이 제거된 경우에도 delete 처리를 하므로
  7978. // Grid 상에 데이터가 있는지를 확인한다.
  7979. saveOkMsg += "[상병] ";
  7980. } else {
  7981. saveNoMsg += "[상병] ";
  7982. }
  7983. } else {
  7984. isValidCheck = false;
  7985. }
  7986. // CLSP 저장전 점검
  7987. if (fCheckSaveOutAftJudgInfoCLSP()) {
  7988. var updtdata = getGridUpdateData(grd_clsphist); // (tfHelper.js) 그리드 업데이트 데이터 반환, 업데이트 정보가 없을경우 "" 반환
  7989. if (updtdata) {
  7990. model.makeValue("/root/send/list3/clsp", updtdata);
  7991. }
  7992. if (updtdata != "" && grd_clsphist.rows > 1) {
  7993. saveOkMsg += "[특정내역] ";
  7994. } else {
  7995. saveNoMsg += "[특정내역] ";
  7996. }
  7997. } else {
  7998. isValidCheck = false;
  7999. }
  8000. // CLOD 저장전 점검
  8001. if (fCheckSaveOutAftJudgInfoCLOD()) {
  8002. // 처방
  8003. var updtdata = getGridUpdateData(grd_clodhist); // (tfHelper.js) 그리드 업데이트 데이터 반환, 업데이트 정보가 없을경우 "" 반환
  8004. if (updtdata) {
  8005. model.makeValue("/root/send/list2/clod", updtdata);
  8006. }
  8007. if (updtdata != "" && (grd_clodhist.rows > 1 || grd_delclod.rows > 1)) {
  8008. saveOkMsg += "[처방] ";
  8009. model.makeValue("/root/send/item1/clbs/recalcyn", "Y"); // 저장 시에 재계산할지 여부를 설정함
  8010. } else {
  8011. saveNoMsg += "[처방] ";
  8012. }
  8013. } else {
  8014. isValidCheck = false;
  8015. }
  8016. // CLOP 저장전 점검
  8017. if (fCheckSaveOutAftJudgInfoCLOP()) {
  8018. // 처방
  8019. var updtdata = getGridUpdateData(grd_oprcphist); // (tfHelper.js) 그리드 업데이트 데이터 반환, 업데이트 정보가 없을경우 "" 반환
  8020. if (updtdata) {
  8021. model.makeValue("/root/send/list7/clop", updtdata);
  8022. }
  8023. if (updtdata != "" && grd_oprcphist.rows > 1) {
  8024. saveOkMsg += "[원외처방] ";
  8025. model.makeValue("/root/send/item1/clbs/reclopedilnnoyn", "Y"); // 저장 시에 줄번호생성 다시할지 여부를 설정함
  8026. } else {
  8027. saveNoMsg += "[원외처방] ";
  8028. }
  8029. } else {
  8030. isValidCheck = false;
  8031. }
  8032. // PIFHIUNC 재청구 차액발생사유 점검....
  8033. if (fCheckSaveReClamChangeAmt()) {
  8034. var resncd = fSetReClamChgAmtResncd();
  8035. if (resncd) {
  8036. saveOkMsg += "[재청구 차액발생사유] ";
  8037. } else {
  8038. saveNoMsg += "[재청구 차액발생사유] ";
  8039. }
  8040. }
  8041. //2011-03-23 저장시 무조건 재계산 한다.
  8042. model.makeValue("/root/send/item1/clbs/recalcyn", "Y"); // 저장 시에 재계산할지 여부를 설정함
  8043. if(btn_end.disabled == true && model.getValue("/root/main/item1/clbs/judgendyn") == "D") {
  8044. messageBox( "버튼이 비활성화 이거나 심사일로 부터 15일이 경과 된 경우 완료 할 수", "I004");
  8045. return false;
  8046. }
  8047. //기재점검 중증, 산정특례 여부 체크
  8048. if (fGetDiagSpclcdCheck() == false) {
  8049. return false;
  8050. } else {
  8051. //fSaveOutAftJudg("B");
  8052. }
  8053. if (isValidCheck) {
  8054. if (saveOkMsg) {
  8055. if (model.getValue("/root/send/list3/clsp")) {
  8056. // 특정내역 삭제상태 값 설정은 submit을 보내기 전에 한다.
  8057. for (var j = grd_clsphist.fixedRows; j < grd_clsphist.rows; j++) {
  8058. var spclLnNo = model.getValue("/root/main/list3/clsp["+ j +"]/seqno");
  8059. if (spclLnNo.substr(0, 1) == "D") {
  8060. model.setValue("/root/main/list3/clsp["+ j +"]/seqno", spclLnNo.substr(1, spclLnNo.length));
  8061. }
  8062. }
  8063. // 줄단위 특정내역 중 기타메모(JX999)를 특정내역 형식에 맞춰 설정한다.
  8064. fSetSpclSpecJX999();
  8065. var updtdata = getGridUpdateData(grd_clsphist); // (tfHelper.js) 그리드 업데이트 데이터 반환, 업데이트 정보가 없을경우 "" 반환
  8066. model.makeValue("/root/send/list3/clsp", updtdata);
  8067. }
  8068. if (submit("TXPID20301")) {
  8069. model.resetInstanceNode("/root/hidden/item1/initclbs/clbs");
  8070. grd_cldihist.clearStatus(); // submit() 성공하면 그리드의 i,u,d 상태 제거
  8071. grd_clsphist.clearStatus(); // submit() 성공하면 그리드의 i,u,d 상태 제거
  8072. grd_clodhist.clearStatus();
  8073. grd_delclod.clearStatus();
  8074. grd_oprcphist.clearStatus();
  8075. /*
  8076. // 중증, 산정특례 여부 체크
  8077. btn_esscdiag.dispatch("DOMActivate"); // 중증질환
  8078. if (model.getValue("/root/send/item4/endclbs/suppkind")) {
  8079. model.makeValue("/root/send/item4/endclbs/insukind", model.getValue("/root/main/item1/clbs/insukindcd"));
  8080. model.makeValue("/root/send/item4/endclbs/ordtodd", model.getValue("/root/main/item1/clbs/ordtodd"));
  8081. model.makeValue("/root/send/item4/endclbs/clamym", clamym);
  8082. model.makeValue("/root/send/item4/endclbs/judgendyn", judgendyn);
  8083. if (judgendyn != "B") { // 사후심사-심사완료여부 (P0151) - B: 심사중, C: 심사완료
  8084. model.setValue("/root/main/item1/clbs/judgendyn", judgendyn);
  8085. }
  8086. submit("TXPID20302");
  8087. }
  8088. */
  8089. if (judgendyn == "B") { // 사후심사-심사완료여부 (P0151) - B: 심사중, C: 심사완료
  8090. // 저장 후 결과를 다시 조회하기 위해
  8091. model.resetInstanceNode("/root/hidden/smpid20400/rslt");
  8092. model.setValue("/root/hidden/smpid20400/rslt/clamym", clamym);
  8093. model.setValue("/root/hidden/smpid20400/rslt/clamdg", clamdg);
  8094. model.setValue("/root/hidden/smpid20400/rslt/pid" , pid);
  8095. model.setValue("/root/hidden/smpid20400/rslt/pidsn" , pidsn);
  8096. // 대상자조회 화면에서 선택했던 환자의 Row를 기억해 두고, pre/next대상조회 버튼에서 이전, 이후 대상자를 조회한다.
  8097. model.setValue("/root/hidden/smpid20400/rslt/selectedRow", selectedRow);
  8098. model.setValue("/root/hidden/smpid20400/rslt/cutprcpyn", cutprcpyn); // 20100302 추가
  8099. model.setValue("/root/hidden/smpid20400/rslt/tootpopupyn", tootpopupyn); // 20100402 추가
  8100. // 저장후 재조회 여부
  8101. model.setValue("/root/hidden/reselect", "Y");
  8102. fGetOutAftJudgMngt();
  8103. fSetJudgSaveState("B"); // 심사완료여부 (P0151) - B: 심사중
  8104. }
  8105. // C: 심사완료의 경우, 저장 후 결과를 다시 조회하기 위해
  8106. return "true";
  8107. }
  8108. }
  8109. else if (saveNoMsg) {
  8110. // 중증, 산정특례 여부 체크
  8111. //btn_esscdiag.dispatch("DOMActivate"); // 중증질환
  8112. if (judgendyn != "B") { // 사후심사-심사완료여부 (P0151) - B: 심사중, C: 심사완료
  8113. return "false";
  8114. } else {
  8115. /*
  8116. if (model.getValue("/root/send/item4/endclbs/suppkind")) {
  8117. model.makeValue("/root/send/item4/endclbs/insukind", model.getValue("/root/main/item1/clbs/insukindcd"));
  8118. model.makeValue("/root/send/item4/endclbs/ordtodd", model.getValue("/root/main/item1/clbs/ordtodd"));
  8119. model.makeValue("/root/send/item4/endclbs/clamym", clamym);
  8120. model.makeValue("/root/send/item4/endclbs/clamdg", clamdg);
  8121. model.makeValue("/root/send/item4/endclbs/pid", pid);
  8122. model.makeValue("/root/send/item4/endclbs/pidsn", pidsn);
  8123. model.makeValue("/root/send/item4/endclbs/judgendyn", judgendyn);
  8124. submit("TXPID20302");
  8125. //model.setValue("/root/main/item1/clbs/rowstat", "");
  8126. // 요율이 바뀌었으므로 현재 대상자 정보를 다시 조회해서 보여줘야 함
  8127. model.resetInstanceNode("/root/hidden/item1/initclbs/clbs");
  8128. model.resetInstanceNode("/root/hidden/smpid20400/rslt");
  8129. model.setValue("/root/hidden/smpid20400/rslt/clamym", clamym);
  8130. model.setValue("/root/hidden/smpid20400/rslt/clamdg", clamdg);
  8131. model.setValue("/root/hidden/smpid20400/rslt/pid" , pid);
  8132. model.setValue("/root/hidden/smpid20400/rslt/pidsn" , pidsn);
  8133. // 대상자조회 화면에서 선택했던 환자의 Row를 기억해 두고, pre/next대상조회 버튼에서 이전, 이후 대상자를 조회한다.
  8134. model.setValue("/root/hidden/smpid20400/rslt/selectedRow", selectedRow);
  8135. fGetOutAftJudgMngt();
  8136. fSetJudgSaveState("B"); // 심사완료여부 (P0151) - B: 심사중
  8137. }
  8138. */
  8139. }
  8140. }
  8141. } else { // isValidCheck == false
  8142. // 상병
  8143. for (var j = grd_cldihist.fixedRows; j < grd_cldihist.rows; j++) {
  8144. if (grd_cldihist.rowstatus(j) == 4) { // && diagseq.substr(0, 1) == "D"
  8145. var diagseq = model.getValue("/root/main/list1/cldi["+ j +"]/diagseq");
  8146. model.setValue("/root/main/list1/cldi["+ j +"]/diagseq", "D" + diagseq);
  8147. }
  8148. }
  8149. if (grd_clsphist.rows == 1) {
  8150. fSpclGridInsertRow(); // 특정내역 줄추가
  8151. }
  8152. }
  8153. } else {
  8154. messageBox("변경된 정보를 저장할 사후심사 대상자가", "I004"); ///변경된 정보를 저장할 사후심사 대상자가 없습니다.
  8155. }
  8156. }
  8157. //----------------------------------
  8158. // CLBS 저장전 점검
  8159. //----------------------------------
  8160. function fCheckSaveOutAftJudgCLBS() {
  8161. if (model.getValue("/root/main/item1/clbs/clamym") == "") {
  8162. messageBox("청구년월이", "I004"); ///청구년월이 없습니다
  8163. return false;
  8164. }
  8165. if (model.getValue("/root/main/item1/clbs/clamdg") == "") {
  8166. messageBox("청구차수가", "I004"); ///청구차수가 없습니다
  8167. return false;
  8168. }
  8169. if (model.getValue("/root/main/item1/clbs/pid") == "") {
  8170. messageBox("등록번호가", "I004"); ///등록번호가 없습니다
  8171. return false;
  8172. }
  8173. if (model.getValue("/root/main/item1/clbs/patnm") == "") {
  8174. messageBox("환자이름이", "I004"); ///환자이름이 없습니다
  8175. return false;
  8176. }
  8177. if (model.getValue("/root/main/item1/clbs/patrrgstno") == "") {
  8178. messageBox("주민번호가", "I004"); ///주민번호가 없습니다
  8179. return false;
  8180. }
  8181. if (model.getValue("/root/main/item1/clbs/insukindcd") == "") {
  8182. messageBox("보험유형이", "I004"); ///보험유형이 없습니다
  8183. return false;
  8184. }
  8185. if (model.getValue("/root/main/item1/clbs/suppkindcd") == "") {
  8186. messageBox("보조유형이", "I004"); //보조유형이 없습니다
  8187. return false;
  8188. }
  8189. if (model.getValue("/root/main/item1/clbs/payownbrate") =="") {
  8190. messageBox("올바른 보조유형을", "C002"); ///올바른 보조유형을 선택하십시오.
  8191. return false;
  8192. }
  8193. if (model.getValue("/root/main/item1/clbs/ordrsltcd") == "") {
  8194. messageBox("진료결과가", "I004"); ///진료결과가 없습니다
  8195. return false;
  8196. }
  8197. if (model.getValue("/root/main/item1/clbs/insuno") == "") {
  8198. messageBox("조합기호가", "I004"); ///조합기호가 없습니다
  8199. return false;
  8200. }
  8201. if (!model.getValue("/root/main/item1/clbs/insukind") == "31") {
  8202. if (model.getValue("/root/main/item1/clbs/certno") == "") {
  8203. messageBox("증번호가", "I004"); ///증번호가 없습니다
  8204. return false;
  8205. }
  8206. }
  8207. if ( model.getValue("/root/main/item1/clbs/suppkind") != model.getValue("/root/main/item1/clbs/suppkindcd") ) {
  8208. if (model.getValue("/root/main/item1/clbs/suppkindchgresn") == "") {
  8209. messageBox("자격수정사유가", "I004"); ///증번호가 없습니다
  8210. return false;
  8211. }
  8212. }
  8213. return true;
  8214. }
  8215. //----------------------------------
  8216. // CLDI 저장전 점검
  8217. //----------------------------------
  8218. function fCheckSaveOutAftJudgInfoCLDI(judgendyn) {
  8219. // 먼저 빈 줄을 삭제한다.
  8220. var delcldiCheck = false;
  8221. for (var i = 1; i < grd_cldihist.rows; i++) {
  8222. var rowstatus = grd_cldihist.rowstatus(i);
  8223. var diagcd = model.getValue("/root/main/list1/cldi["+ i +"]/diagcd");
  8224. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  8225. if (diagcd == "") {
  8226. // 줄을 삭제한다.
  8227. grd_cldihist.deleteRow(i, false);
  8228. i--;
  8229. delcldiCheck = true;
  8230. }
  8231. }
  8232. }
  8233. // 빈줄을 삭제한 경우 상병순서를 다시 부여한다.
  8234. if (delcldiCheck) {
  8235. var seq = 1;
  8236. for (var i = 1; i < grd_cldihist.rows; i++) {
  8237. var rowstatus = grd_cldihist.rowstatus(i);
  8238. if (rowstatus != 4) {
  8239. model.setValue("/root/main/list1/cldi["+ i +"]/diagseq", seq++);
  8240. }
  8241. }
  8242. }
  8243. // 저장할 정보를 체크한다.
  8244. var cldiList = instance1.selectSingleNode("/root/main/list1"); //root/main/list1
  8245. if (cldiList == null) {
  8246. return false;
  8247. }
  8248. var cldiNode = cldiList.childNodes; //root/main/list1/cldi
  8249. if (cldiNode.length == 0 && (judgendyn == "C")) {
  8250. messageBox("상병이 입력되지", "E007"); ///상병이 입력되지 않았습니다.
  8251. return false;
  8252. } else {
  8253. for (var i = 1; i <= cldiNode.length; i++) {
  8254. var diagcd = model.getValue("/root/main/list1/cldi["+ i +"]/diagcd");
  8255. var toot = model.getValue("/root/main/list1/cldi["+ i +"]/toot");
  8256. if (diagcd == "") {
  8257. //messageBox("상병코드가 입력되지", "E007"); ///상병코드가 입력되지 않았습니다.
  8258. //return false;
  8259. model.removeNode("/root/main/list1/cldi["+ i +"]");
  8260. grd_cldihist.refresh();
  8261. }
  8262. else {
  8263. var diagseq = model.getValue("/root/main/list1/cldi["+ i +"]/diagseq");
  8264. for (var j = 1; j < i; j++) {
  8265. var prediagseq = model.getValue("/root/main/list1/cldi["+ j +"]/diagseq");
  8266. var prediagcd = model.getValue("/root/main/list1/cldi["+ j +"]/diagcd");
  8267. var pretoot = model.getValue("/root/main/list1/cldi["+ j +"]/toot");
  8268. if (grd_cldihist.rowstatus(i) != 4) {
  8269. // 중복된 상병 NO가 있는 경우
  8270. if (diagseq == prediagseq) {
  8271. messageBox("상병순서 '"+ diagseq +"'가", "E006"); ///상병순서 '***'가 중복되었습니다.
  8272. return false;
  8273. }
  8274. // 중복된 상병코드가 있는 경우(상병과 치식을 모두 체크한다.)
  8275. if (diagcd == prediagcd && toot == pretoot) {
  8276. messageBox("상병코드 '"+ diagcd +"'가", "E006"); ///상병코드 '***'가 중복되었습니다.
  8277. return false;
  8278. }
  8279. }
  8280. }
  8281. if (model.getValue("/root/main/list1/cldi["+ i +"]/toot") == "") { // 치식이 입력되지 않은 경우
  8282. model.setValue("/root/main/list1/cldi["+ i +"]/toot", "-");
  8283. }
  8284. }
  8285. }
  8286. }
  8287. return true;
  8288. }
  8289. //--------------------------------------
  8290. // CLSP 저장전 점검
  8291. //--------------------------------------
  8292. function fCheckSaveOutAftJudgInfoCLSP() {
  8293. // 먼저 빈 줄을 삭제한다.
  8294. for (var i = 1; i < grd_clsphist.rows; i++) {
  8295. var rowstatus = grd_clsphist.rowstatus(i);
  8296. var spclcd = model.getValue("/root/main/list3/clsp["+ i +"]/spclcd");
  8297. var spclspec = model.getValue("/root/main/list3/clsp["+ i +"]/spclspec");
  8298. // 특정코드과 특정내역이 입력되지 않은 경우
  8299. if (rowstatus != 4 && spclcd == "" && spclspec == "") {
  8300. // 줄을 삭제한다.
  8301. grd_clsphist.deleteRow(i, false);
  8302. i--;
  8303. }
  8304. }
  8305. // 저장할 정보를 체크한다.
  8306. var clspList = instance1.selectSingleNode("/root/main/list3"); //root/main/list3
  8307. if (clspList == null) {
  8308. return false;
  8309. }
  8310. var clspNode = clspList.childNodes; //root/main/list3/clsp
  8311. for (var i = 1; i <= clspNode.length; i++) {
  8312. var spclcd = model.getValue("/root/main/list3/clsp["+ i +"]/spclcd");
  8313. var spclspec = model.getValue("/root/main/list3/clsp["+ i +"]/spclspec");
  8314. if (spclcd == "" || spclspec == "") {
  8315. //2009-01-29
  8316. //messageBox("특정코드 또는 특정내역이 입력되지", "E007"); ///특정코드 또는 특정내역이 입력되지 않았습니다.
  8317. model.removeNode("/root/main/list3/clsp["+i+"]");
  8318. grd_clsphist.refresh();
  8319. //return false;
  8320. }
  8321. else if (spclcd == "MX999" || spclcd == "MT015" || spclcd == "MT016" || spclcd == "MT004") {
  8322. for (var j = 1; j < i; j++) {
  8323. var prespclcd = model.getValue("/root/main/list3/clsp["+ j +"]/spclcd");
  8324. // 중복된 명세서 단위 특정코드가 있는 경우
  8325. if (grd_clsphist.rowstatus(i) != 4 && spclcd == prespclcd) {
  8326. messageBox("명세서 단위 특정코드 '"+ spclcd +"'가", "E006"); ///명세서 단위 특정코드 '***'가 중복되었습니다.
  8327. return false;
  8328. }
  8329. }
  8330. }
  8331. }
  8332. return true;
  8333. }
  8334. //--------------------------------------
  8335. // CLOD 저장전 점검
  8336. //--------------------------------------
  8337. function fCheckSaveOutAftJudgInfoCLOD() {
  8338. // 먼저 빈 줄을 삭제한다.
  8339. for (var i = 1; i < grd_clodhist.rows; i++) {
  8340. var rowstatus = grd_clodhist.rowstatus(i);
  8341. var seqno = model.getValue("/root/main/list2/clod["+ i +"]/seqno");
  8342. var snglcalcscorcd = model.getValue("/root/main/list2/clod["+ i +"]/snglcalcscorcd");
  8343. var basecd = model.getValue("/root/main/list2/clod["+ i +"]/basecd");
  8344. var drugqty = model.getValue("/root/main/list2/clod["+ i +"]/drugqty");
  8345. var edidrugqty = model.getValue("/root/main/list2/clod["+ i +"]/edidrugqty");
  8346. var tims = model.getValue("/root/main/list2/clod["+ i +"]/tims");
  8347. var dayno = model.getValue("/root/main/list2/clod["+ i +"]/dayno");
  8348. var edidayno = model.getValue("/root/main/list2/clod["+ i +"]/edidayno");
  8349. var ordfromdd = model.getValue("/root/main/list2/clod["+ i +"]/ordfromdd");
  8350. // 처방일련번호가 부여되지 않고,
  8351. // 수가코드, EDI코드, 투여량, 횟수, 일수, 처방일자가 입력되지 않은 경우
  8352. if (rowstatus != 4 && seqno == "" && snglcalcscorcd == "" && basecd == "" && drugqty == "" && tims == "" && dayno == "" && edidrugqty == "" && edidayno == "" && ordfromdd == "") {
  8353. // 줄을 삭제한다.
  8354. grd_clodhist.deleteRow(i, false);
  8355. i--;
  8356. }
  8357. }
  8358. // 저장할 정보를 체크한다.
  8359. // 처방 Grid
  8360. var clodList = instance1.selectSingleNode("/root/main/list2"); //root/main/list2
  8361. if (clodList == null) {
  8362. return false;
  8363. }
  8364. var clodNode = clodList.childNodes; //root/main/list2/clod
  8365. for (var i = 1; i <= clodNode.length; i++) {
  8366. var seqno = model.getValue("/root/main/list2/clod["+ i +"]/seqno");
  8367. var snglcalcscorcd = model.getValue("/root/main/list2/clod["+ i +"]/snglcalcscorcd");
  8368. var basecd = model.getValue("/root/main/list2/clod["+ i +"]/basecd");
  8369. var drugqty = model.getValue("/root/main/list2/clod["+ i +"]/drugqty");
  8370. var edidrugqty = model.getValue("/root/main/list2/clod["+ i +"]/edidrugqty");
  8371. var tims = model.getValue("/root/main/list2/clod["+ i +"]/tims");
  8372. var dayno = model.getValue("/root/main/list2/clod["+ i +"]/dayno");
  8373. var edidayno = model.getValue("/root/main/list2/clod["+ i +"]/edidayno");
  8374. var ordfromdd = model.getValue("/root/main/list2/clod["+ i +"]/ordfromdd");
  8375. if (snglcalcscorcd != "" && basecd != "") {
  8376. if (ordfromdd == "") {
  8377. messageBox("수가코드 '"+ snglcalcscorcd +"'의 처방일자 정보가", "I004"); ///수가코드 '***'의 처방일자 정보가 없습니다.
  8378. return false;
  8379. }
  8380. else if (drugqty == "" || tims == "" || dayno == "" || edidrugqty == "" || edidayno == "") {
  8381. messageBox("수가코드 '"+ snglcalcscorcd +"'의 투여량 정보가", "I004"); ///수가코드 '***'의 투여량 정보가 없습니다.
  8382. return false;
  8383. }
  8384. }
  8385. }
  8386. return true;
  8387. }
  8388. //--------------------------------------
  8389. // CLOP 저장전 점검
  8390. //--------------------------------------
  8391. function fCheckSaveOutAftJudgInfoCLOP() {
  8392. // 저장할 정보를 체크한다.
  8393. // 원외처방 Grid
  8394. var clopList = instance1.selectSingleNode("/root/main/list7"); //root/main/list7
  8395. if (clopList == null) {
  8396. return true;
  8397. }
  8398. var clopNode = clopList.childNodes; //root/main/list7/clop
  8399. for (var i = 1; i <= clopNode.length; i++) {
  8400. //if ( !isValidDateTime(model.getValue("/root/main/list7/clop["+ i +"]/clopdd"),"YYYYMMDD") ) { // (dateHelper.js) 유효한 날짜, 시간 인지 점검
  8401. // messageBox("올바른 형식의 원외처방 교부일자를", "C001"); ///올바른 형식의 원외처방 교부일자를 입력하십시오.
  8402. // return false;
  8403. //}
  8404. if ( model.getValue("/root/main/list7/clop["+ i +"]/snglcalcscorcd") == "" ) {
  8405. messageBox("원외처방 수가코드를", "C001"); ///원외처방 수가코드를 입력하십시오.
  8406. return false;
  8407. }
  8408. // 20100512 일단제외.. 9(병원가)..
  8409. //if ( model.getValue("/root/main/list7/clop["+ i +"]/edicdflag") != "3" ) {
  8410. // messageBox("입력된 원외처방이 약제가 아닌것이", "E005"); ///입력된 원외처방이 약제가 아닌것이 선택되었습니다.
  8411. // return false;
  8412. //}
  8413. //var clopdd = model.getValue("/root/main/list7/clop["+ i +"]/clopdd");
  8414. //var clopno = model.getValue("/root/main/list7/clop["+ i +"]/clopno");
  8415. //if (isValidDateTime(clopdd)) { // (dateHelper.js) 유효한 날짜, 시간 인지 점검
  8416. // if (clopno == "") {
  8417. // messageBox("원외처방 교부일자 '"+ clopdd +"'의 교부번호가", "I004"); ///원외처방 교부일자 '***'의 교부번호가 없습니다.
  8418. // return false;
  8419. // } else {
  8420. // messageBox("올바른 형식의 원외처방 교부일자를", "C001"); ///올바른 형식의 원외처방 교부일자를 입력하십시오.
  8421. // return false;
  8422. // }
  8423. //}
  8424. }
  8425. return true;
  8426. }
  8427. //----------------------------
  8428. // 이전 명세서 목록
  8429. //----------------------------
  8430. function fPreListOnDblClick() {
  8431. //if (grd_predocu.isCell(event.target) && grd_predocu.mouseRow >= grd_predocu.fixedrows) {
  8432. if (grd_predocu.row >= grd_predocu.fixedrows) {
  8433. var row = grd_predocu.row;
  8434. var clamym = model.getValue("/root/main/list4/clbs["+ row +"]/clamym");
  8435. var clamdg = model.getValue("/root/main/list4/clbs["+ row +"]/clamdg");
  8436. var pid = model.getValue("/root/main/list4/clbs["+ row +"]/pid");
  8437. var pidsn = model.getValue("/root/main/list4/clbs["+ row +"]/pidsn");
  8438. if ((clamym == model.getValue("/root/main/item1/clbs/clamym"))
  8439. && (clamdg == model.getValue("/root/main/item1/clbs/clamdg"))
  8440. && (pid == model.getValue("/root/main/item1/clbs/pid"))
  8441. && (pidsn == model.getValue("/root/main/item1/clbs/pidsn"))) {
  8442. messageBox("현재 심사중인 명세서와 동일한 명세서가", "E005"); ///현재 심사중인 명세서와 동일한 명세서가 선택되었습니다.
  8443. return;
  8444. }
  8445. if (clamym) {
  8446. var ioflag = model.getValue("/root/main/list4/clbs["+ row +"]/ioflag");
  8447. if (ioflag == "I") {
  8448. var preDocuWindow = getChildWindow("SMPID20500");
  8449. if (preDocuWindow != null) {
  8450. var rslt = preDocuWindow.javascript.fInitSrchData(); // 화면을 초기화한다.
  8451. if (rslt == false) { // 수정사항 저장이 완료되지 않아 초기화할 수 없는 경우
  8452. activateChild("SMPID20500");
  8453. return false;
  8454. }
  8455. preDocuWindow.close();
  8456. }
  8457. preDocuWindow = getChildWindow("SMPID20300");
  8458. if (preDocuWindow == null) {
  8459. model.setValue("/root/send/item1/clbs/workflag", "12");
  8460. model.setValue("/root/send/item1/clbs/clamym", clamym);
  8461. model.setValue("/root/send/item1/clbs/clamdg", clamdg);
  8462. model.setValue("/root/send/item1/clbs/pid", pid);
  8463. model.setValue("/root/send/item1/clbs/pidsn", pidsn);
  8464. model.setValue("/root/send/item1/clbs/ioflag", "I");
  8465. open("SMPID20300", "2", "10", "10", "SMPID20300", "/root/send/item1/clbs", "/root/send/item1/clbs", "", ""); // SMPID20300_입원사후심사관리
  8466. } else { // 이전명세서 용도의 SMPID20300_입원사후심사관리 Popup 화면이 이미 열려있는 경우
  8467. model.setValue("/root/hidden/smpid20300/cond/workflag", "12");
  8468. model.setValue("/root/hidden/smpid20300/cond/clamym", clamym);
  8469. model.setValue("/root/hidden/smpid20300/cond/clamdg", clamdg);
  8470. model.setValue("/root/hidden/smpid20300/cond/pid", pid);
  8471. model.setValue("/root/hidden/smpid20300/cond/pidsn", pidsn);
  8472. model.setValue("/root/hidden/smpid20300/cond/ioflag", "I");
  8473. preDocuWindow.javascript.fActivatePreDocuWindow();
  8474. activateChild("SMPID20300");
  8475. }
  8476. } else {
  8477. var preDocuWindow = getChildWindow("SMPID20300");
  8478. if (preDocuWindow != null) {
  8479. var rslt = preDocuWindow.javascript.fInitSrchData(); // 화면을 초기화한다.
  8480. if (rslt == false) { // 수정사항 저장이 완료되지 않아 초기화할 수 없는 경우
  8481. activateChild("SMPID20300");
  8482. return false;
  8483. }
  8484. preDocuWindow.close();
  8485. }
  8486. preDocuWindow = getChildWindow("SMPID20500"); // SMPID20500_외래사후심사관리.xrw
  8487. if (preDocuWindow == null) {
  8488. model.setValue("/root/send/item1/clbs/workflag", "12");
  8489. model.setValue("/root/send/item1/clbs/clamym", clamym);
  8490. model.setValue("/root/send/item1/clbs/clamdg", clamdg);
  8491. model.setValue("/root/send/item1/clbs/pid", pid);
  8492. model.setValue("/root/send/item1/clbs/pidsn", pidsn);
  8493. model.setValue("/root/send/item1/clbs/ioflag", "O");
  8494. open("SMPID20500", "2", "10", "10", "SMPID20500", "/root/send/item1/clbs", "/root/send/item1/clbs", "", ""); // SMPID20500_외래사후심사관리
  8495. } else {
  8496. model.setValue("/root/hidden/smpid20500/cond/workflag", "12");
  8497. model.setValue("/root/hidden/smpid20500/cond/clamym", clamym);
  8498. model.setValue("/root/hidden/smpid20500/cond/clamdg", clamdg);
  8499. model.setValue("/root/hidden/smpid20500/cond/pid", pid);
  8500. model.setValue("/root/hidden/smpid20500/cond/pidsn", pidsn);
  8501. model.setValue("/root/hidden/smpid20500/cond/ioflag", "O");
  8502. preDocuWindow.javascript.fActivatePreDocuWindow();
  8503. activateChild("SMPID20500");
  8504. }
  8505. }
  8506. }
  8507. }
  8508. }
  8509. // 트리뷰 조회 ( 타메뉴조회시 )
  8510. function fTrvOnClick(trgtWindow) {
  8511. // 1.이력조회 - 환자진료정보
  8512. if (trgtWindow == "SMMMO02500") {
  8513. fOpenSMMMO02500_1(model.getValue("/root/main/item1/clbs/pid"));
  8514. // 1.이력조회 - 환자상세내역
  8515. } else if (trgtWindow == "SMPMC01900") {
  8516. fOpenSMPMC01900(model.getValue("/root/main/item1/clbs/pid"));
  8517. // 1.이력조회 - 외래등록조회
  8518. } else if (trgtWindow == "SMPMO00600") {
  8519. fOpenSMPMO00600(model.getValue("/root/main/item1/clbs/pid"));
  8520. // 1.이력조회 - 청구및자료수집이력
  8521. } else if (trgtWindow == "SMPIS00100") {
  8522. fOpenSMPIS00100("O"
  8523. , ""
  8524. , model.getValue("/root/main/item1/clbs/pid")
  8525. );
  8526. // 1.이력조회 - 환자별 삭감이력
  8527. } else if (trgtWindow == "SMPID20900") {
  8528. fOpenSMPID20900(model.getValue("/root/main/item1/clbs/pid"));
  8529. // 1.이력조회 - 처방별 환자조회(처방/시행)
  8530. } else if (trgtWindow == "SMPIS00500") {
  8531. fOpenSMPIS00500("P"
  8532. , model.getValue("/root/main/item1/clbs/ordfromdd")
  8533. , model.getValue("/root/main/item1/clbs/ordfromdd")
  8534. , "O"
  8535. , ""//model.getValue("/root/main/item1/clbs/orddeptcd")
  8536. , ""//model.getValue("/root/main/item1/clbs/orddrid")
  8537. , "calcscorcd"
  8538. , ""
  8539. , model.getValue("/root/main/item1/clbs/pid")
  8540. );
  8541. // 1.이력조회 - 처방별 환자조회(청구/삭감)
  8542. } else if (trgtWindow == "SMPIS00600") {
  8543. fOpenSMPIS00600(model.getValue("/root/main/item1/clbs/clamflagcd")
  8544. , model.getValue("/root/main/item1/clbs/clamym")
  8545. , model.getValue("/root/main/item1/clbs/clamym")
  8546. , model.getValue("/root/main/item1/clbs/clamdg")
  8547. , model.getValue("/root/main/item1/clbs/clamym")
  8548. , model.getValue("/root/main/item1/clbs/clamdg")
  8549. , ""//model.getValue("/root/main/item1/clbs/insukindcd")
  8550. , model.getValue("/root/main/item1/clbs/ioflag")
  8551. , model.getValue("/root/main/item1/clbs/clamdeptcd")
  8552. , ""//model.getValue("/root/main/item1/clbs/orddeptcd")
  8553. , ""//model.getValue("/root/main/item1/clbs/orddrid")
  8554. , "calcscorcd"
  8555. , ""
  8556. , model.getValue("/root/main/item1/clbs/pid")
  8557. );
  8558. // 2.환자정보 - 입원의뢰서
  8559. } else if (trgtWindow == "SPMMO00100") {
  8560. return;
  8561. // 2.환자정보 - 카덱스조회
  8562. } else if (trgtWindow == "SMMNB00200") {
  8563. return;
  8564. // 2.환자정보 - 병기분류조회
  8565. } else if (trgtWindow == "SPMMO08500") {
  8566. fOpenSPMMO08500();
  8567. // 2.환자정보 - 중증등록신청서
  8568. } else if (trgtWindow == "SMMRD00200") {
  8569. fOpenSMMRD00200(model.getValue("/root/main/item1/clbs/pid"), "O");
  8570. // 2.환자정보 - 중증등록사항
  8571. } else if (trgtWindow == "SPMRD00900") {
  8572. fOpenSPMRD00900(model.getValue("/root/main/item1/clbs/pid"), "O");
  8573. // 2.환자정보 - 병원감염대상자기록
  8574. } else if (trgtWindow == "SMASI00100") {
  8575. return;
  8576. // 2.환자정보 - 환자별영양관리
  8577. } else if (trgtWindow == "SMANC00300") {
  8578. return;
  8579. // 2.환자정보 - NST환자관리
  8580. } else if (trgtWindow == "SMADC02600") {
  8581. return;
  8582. // 2.환자정보 - 피부욕창기록
  8583. } else if (trgtWindow == "SMMNW04700") {
  8584. return;
  8585. // 2.환자정보 - 중증도및위험사정
  8586. } else if (trgtWindow == "SMMNW04000") {
  8587. return;
  8588. // 2.환자정보 - 투석간호정보
  8589. } else if (trgtWindow == "SMMND00300") {
  8590. fOpenSMMND00300();
  8591. // 2.환자정보 -희귀난치등록신청서
  8592. } else if (trgtWindow == "SMMRD02000") {
  8593. fOpenSMMRD02000(model.getValue("/root/main/item1/clbs/pid"));
  8594. // 2.환자정보 -휘귀난치등록사항
  8595. }else if (trgtWindow == "SPMRD02100") {
  8596. fOpenSPMRD02100(model.getValue("/root/main/item1/clbs/pid"));
  8597. // 2.환자정보 - 항암제투여현황
  8598. } else if (trgtWindow == "SMPIJ02900") {
  8599. fOpenSMPIJ02900(model.getValue("/root/main/item1/clbs/pid"));
  8600. // 3.자격정보 - 환자기본정보관리
  8601. } else if (trgtWindow == "SMPMC01400") {
  8602. fOpenSMPMC01400(model.getValue("/root/main/item1/clbs/pid"), "1");
  8603. // 3.자격정보 - 재원변경관리
  8604. } else if (trgtWindow == "SMPMI00400") {
  8605. return;
  8606. // 3.자격정보 - 자보환자관리
  8607. } else if (trgtWindow == "SMPMC02600") {
  8608. fOpenSMPMC02600(model.getValue("/root/main/item1/clbs/pid"));
  8609. // 3.자격정보 - 산재공상환자관리
  8610. } else if (trgtWindow == "SMPMC02700") {
  8611. fOpenSMPMC02700(model.getValue("/root/main/item1/clbs/pid"));
  8612. // 3.자격정보 - 장애인환자관리
  8613. } else if (trgtWindow == "SMPMC01700") {
  8614. fOpenSMPMC01700();
  8615. // 3.자격정보 - 선택진료관리
  8616. } else if (trgtWindow == "SMPMC06500") {
  8617. fOpenSMPMC06500(model.getValue("/root/main/item1/clbs/pid"));
  8618. // 4.처방조회 - 처방상태조회
  8619. } else if (trgtWindow == "SMPIJ01200") {
  8620. var todd = getCurrentDate();
  8621. fOpenSMPIJ01200_1(model.getValue("/root/main/item1/clbs/pid")
  8622. , model.getValue("/root/main/item1/clbs/patnm")
  8623. , ""
  8624. , model.getValue("/root/main/item1/clbs/indd")
  8625. , model.getValue("/root/main/item1/clbs/ordfromdd")
  8626. , todd
  8627. , "5"
  8628. );
  8629. // 4.처방조회 - 식사력조회
  8630. } else if (trgtWindow == "SMANT01000") {
  8631. return;
  8632. // 4.처방조회 - 수혈조회
  8633. } else if (trgtWindow == "SMMNR01000") {
  8634. fOpenSMMNR01000(model.getValue("/root/main/item1/iteminfo/pid"), "OPRC2");
  8635. // 4.처방조회 - 수혈현황조회
  8636. } else if (trgtWindow == "SMMNR04600") {
  8637. fOpenSMMNR04600();
  8638. // 4.처방조회 - 검사진행현황
  8639. } else if (trgtWindow == "SMAEA00500") {
  8640. var fromdd = getCurrentDate().toDate().getAddDate(-1,"M").getDateFormat("YYYYMMDD");
  8641. var todd = getCurrentDate();
  8642. fOpenSMAEA00500("prcpdd"
  8643. , fromdd
  8644. , todd
  8645. , ""
  8646. , ""
  8647. , model.getValue("/root/main/item1/clbs/orddeptcd")
  8648. , "I"
  8649. , ""
  8650. , model.getValue("/root/main/item1/clbs/pid")
  8651. , model.getValue("/root/main/item1/clbs/patnm")
  8652. );
  8653. // 4.처방조회 - 개인별예약현황
  8654. } else if (trgtWindow == "SMAEA00300") {
  8655. fOpenSMAEA00300(model.getValue("/root/main/item1/clbs/pid"));
  8656. // 4.처방조회 - CRRT내역
  8657. } else if (trgtWindow == "SMMNW09100") {
  8658. return;
  8659. // 4.처방조회 - 입원기간중외래미실행오더조회
  8660. } else if (trgtWindow == "SMMNW09100") {
  8661. return;
  8662. // 4.처방조회 - 시행부서 처방
  8663. } else if (trgtWindow == "SMMMO00200") {
  8664. return;
  8665. // 4.처방조회 - 판독신청
  8666. } else if (trgtWindow == "SMAEF00100") {
  8667. fOpenSMAEF00100(model.getValue("/root/main/item1/clbs/pid"));
  8668. // 4.처방조회 - 수혈심사
  8669. } else if (trgtWindow == "SPPIZ01800") {
  8670. fOpenSPPIZ01800(model.getValue("/root/main/item1/iteminfo/pid")
  8671. , model.getValue("/root/main/item1/iteminfo/patnm")
  8672. , model.getValue("/root/main/item1/iteminfo/age")
  8673. , model.getValue("/root/main/item1/iteminfo/gender")
  8674. , model.getValue("/root/main/item1/iteminfo/indd"));
  8675. // 4.처방조회 - 처방조회
  8676. } else if (trgtWindow == "SPPIZ01800") {
  8677. fOpenSPPIZ01800(model.getValue("/root/main/item1/iteminfo/pid")
  8678. , model.getValue("/root/main/item1/iteminfo/patnm"));
  8679. // 4.처방조회 - 특수조제실처방조회
  8680. } else if (trgtWindow == "SPPIZ01800") {
  8681. fOpenSPPIZ01800(model.getValue("/root/main/item1/iteminfo/pid"));
  8682. // 4.처방조회 - 병리조직결과조회
  8683. } else if (trgtWindow == "SPPIZ01800") {
  8684. fOpenSPPIZ01800(model.getValue("/root/main/item1/iteminfo/pid"));
  8685. // 5.투약정보 - 투약이력
  8686. } else if (trgtWindow == "SPMMO02400") {
  8687. fOpenSPMMO02400_1(model.getValue("/root/main/item1/clbs/pid")
  8688. , model.getValue("/root/main/item1/clbs/patnm")
  8689. , model.getValue("/root/main/item1/clbs/gender")
  8690. , model.getValue("/root/main/item1/clbs/patage")
  8691. , model.getValue("/root/main/item1/clbs/ioflag")
  8692. );
  8693. // 5.투약정보 - 투약기록
  8694. } else if (trgtWindow == "SMMNR04500") {
  8695. var medrfromdd = model.getValue("/root/main/item1/clbs/indd").substr(0,6) + "01";
  8696. fOpenSMMNR04500_1(model.getValue("/root/main/item1/clbs/pid")
  8697. , model.getValue("/root/main/item1/clbs/indd")
  8698. , model.getValue("/root/main/item1/clbs/cretno")
  8699. , medrfromdd
  8700. , model.getValue("/root/main/item1/clbs/indd")
  8701. );
  8702. // 5.투약정보 - 제한항생제
  8703. } else if (trgtWindow == "SMASI00800") {
  8704. var todd = getCurrentDate();
  8705. fOpenSMASI00800("P"
  8706. , model.getValue("/root/main/item1/clbs/ordfromdd")
  8707. , todd
  8708. , ""
  8709. , "-"
  8710. , model.getValue("/root/main/item1/clbs/orddeptcd")
  8711. , model.getValue("/root/main/item1/clbs/pid")
  8712. , model.getValue("/root/main/item1/clbs/patnm")
  8713. );
  8714. // 5.투약정보 - 항암프로토콜
  8715. } else if (trgtWindow == "SMADB01020") {
  8716. model.setValue("/root/send/srchdata/pid", model.getValue("/root/main/item1/clbs/pid"));
  8717. submit("TRADB01007");
  8718. model.makevalue("/root/hidden/SMADB01020_cond/pid", model.getValue("/root/main/prtlhislist/item/pid"));
  8719. model.makevalue("/root/hidden/SMADB01020_cond/cpgappno", model.getValue("/root/main/prtlhislist/item/cpgappno"));
  8720. model.refreshpart("/root/hidden/SMADB01020_cond");
  8721. fOpenSMADB01020_2();
  8722. //} else if (trgtWindow == "SMADB01000") {
  8723. // fOpenSMADB01000();
  8724. // 5.투약정보 - 주사실액팅조회
  8725. } else if (trgtWindow == "SMMNI00400") {
  8726. fOpenSMMNI00400();
  8727. // 6.진료비 - 진료비누적(사후)
  8728. } else if (trgtWindow == "SPPID21300") {
  8729. fOpenSPPID21300(model.getValue("/root/main/item1/clbs/clamym")
  8730. , model.getValue("/root/main/item1/clbs/clamdg")
  8731. , model.getValue("/root/main/item1/clbs/pid")
  8732. , model.getValue("/root/main/item1/clbs/pidsn")
  8733. , model.getValue("/root/main/item1/clbs/insukindcd")
  8734. , model.getValue("/root/main/item1/clbs/suppkindcd")
  8735. , model.getValue("/root/main/item1/clbs/ordfromdd")
  8736. );
  8737. // 6.진료비 - 입원진료비상세
  8738. } else if (trgtWindow == "SMPAI00200") {
  8739. return;
  8740. // 6.진료비 - 외래수납조회
  8741. } else if (trgtWindow == "SMPAO00300") {
  8742. fOpenSMPAO00300(model.getValue("/root/main/item1/clbs/pid"));
  8743. // 6.진료비 - 외래처방계산내역조회
  8744. } else if (trgtWindow == "SMPMOTMP00") {
  8745. fOpenSMPMOTMP00(model.getValue("/root/main/item1/clbs/pid"));
  8746. // 6.진료비 - 예상진료비조회
  8747. } else if (trgtWindow == "SMPAI00400") {
  8748. fOpenSMPAI00400();
  8749. // 6.진료비 - 급종변경전후금액조회
  8750. } else if (trgtWindow == "SMPAI03600") {
  8751. fOpenSMPAI03600(model.getValue("/root/main/item1/clbs/pid"));
  8752. // 7.각종조회 - 약품편람
  8753. } else if (trgtWindow == "SMADB01900") {
  8754. fOpenSMADB01900();
  8755. // 7.각종조회 - 의약품정보조회
  8756. } else if (trgtWindow == "SMADB00100") {
  8757. fOpenSMADB00100();
  8758. // 7.각종조회 - 수가관리
  8759. } else if (trgtWindow == "SMPIC00100") {
  8760. fOpenSMPIC00100();
  8761. // 7.각종조회 - 수가세부조회
  8762. } else if (trgtWindow == "SMPIC00700") {
  8763. fOpenSMPIC00700();
  8764. // 7.각종조회 - 보험인정기준
  8765. } else if (trgtWindow == "SPPIZ01600") {
  8766. fOpenSPPIZ01600();
  8767. // 7.각종조회 - 격리신청서
  8768. } else if (trgtWindow == "SMASB02100") {
  8769. fOpenSMASB02100(model.getValue("/root/main/item1/clbs/pid"));
  8770. // 7.각종조회 - 수술마취스케줄조회
  8771. } else if (trgtWindow == "SMMMO05100") {
  8772. var optodd = getCurrentDate();
  8773. fOpenSMMMO05100(model.getValue("/root/main/item1/clbs/ordfromdd")
  8774. , optodd
  8775. , model.getValue("/root/main/item1/clbs/patnm")
  8776. , model.getValue("/root/main/item1/clbs/pid")
  8777. , ""
  8778. , ""
  8779. , "T"
  8780. , "00"
  8781. , "-"
  8782. , "-"
  8783. , ""
  8784. , ""
  8785. , "T"
  8786. , ""
  8787. , ""
  8788. );
  8789. // 7.각종조회 - 수술마취의뢰서등록
  8790. } else if (trgtWindow == "SPMMO00200") {
  8791. var todd = getCurrentDate();
  8792. fOpenSPMMO00200("O"
  8793. , model.getValue("/root/main/item1/clbs/pid")
  8794. , model.getValue("/root/main/item1/clbs/patnm")
  8795. , model.getValue("/root/main/item1/clbs/patage")
  8796. , model.getValue("/root/main/item1/clbs/orddeptcd")
  8797. , model.getValue("/root/main/item1/clbs/ordfromdd")
  8798. , ""
  8799. , ""
  8800. , model.getValue("/root/main/item1/clbs/insukindcd")
  8801. , model.getValue("/root/main/item1/clbs/suppkindcd")
  8802. , model.getValue("/root/main/item1/clbs/ordfromdd")
  8803. , todd
  8804. );
  8805. // 7.각종조회 - 수술심사대상조회
  8806. } else if (trgtWindow == "SMMMO05101") {
  8807. return;
  8808. // 7.각종조회 - 입원/퇴원/재원조회
  8809. } else if (trgtWindow == "SMPMI00700") {
  8810. fOpenSMPMI00700("1"
  8811. , "1"
  8812. , ""
  8813. , model.getValue("/root/main/item1/clbs/ordfromdd")
  8814. , model.getValue("/root/main/item1/clbs/ordfromdd")
  8815. , model.getValue("/root/main/item1/clbs/instcd")
  8816. );
  8817. // 7.각종조회 - 임상시험약속처방
  8818. } else if (trgtWindow == "SMMMB08300") {
  8819. fOpenSMMMB08300();
  8820. // 7.각종조회 - 신규항암프로토콜조회
  8821. } else if (trgtWindow == "SMADB00900") {
  8822. fOpenSMADB00900();
  8823. // 7.각종조회 - 보험유형코드관리
  8824. } else if (trgtWindow == "SMPMB00200") {
  8825. fOpenSMPMB00200();
  8826. // 7.각종조회 - CP검색
  8827. } else if (trgtWindow == "SPMMP01200_CP") {
  8828. fOpenSPMMP01200_CP();
  8829. // 8.EMR - 입퇴원요약기록지, 경과기록지
  8830. } else if (trgtWindow == "SSMMR01100") {
  8831. return;
  8832. // 8.EMR - CONSULT
  8833. } else if (trgtWindow == "SMMMR05000") {
  8834. fOpenSMMMR05000_1(model.getValue("/root/main/item1/clbs/pid"));
  8835. // 8.EMR - 임상관찰기록지
  8836. } else if (trgtWindow == "SMMNR00900") {
  8837. fOpenSMMNR00900_1(model.getValue("/root/main/item1/clbs/pid")
  8838. , model.getValue("/root/main/item1/clbs/ordfromdd")
  8839. , model.getValue("/root/main/item1/clbs/cretno")
  8840. , model.getValue("/root/main/item1/clbs/instcd")
  8841. );
  8842. // 혈당간호기록
  8843. } else if (trgtWindow == "SMMNR02500") {
  8844. fOpenSMMNR02500();
  8845. /*
  8846. // 8.EMR - 간호일지
  8847. } else if (trgtWindow == "SMMNR00700") {
  8848. fOpenSMMNR00700();
  8849. */
  8850. // 8.EMR - 통합기록전체조회
  8851. } else if (trgtWindow == "SMMRI00400") {
  8852. fOpenSMMRI00400(model.getValue("/root/main/item1/clbs/pid"));
  8853. // 9.응급실정보 - ERcensus
  8854. } else if (trgtWindow == "SMMNE01300") {
  8855. fOpenSMMNE01300();
  8856. // 9.응급실정보 - 응급실triage
  8857. } else if (trgtWindow == "SPMNE04400") {
  8858. var sex = model.getValue("/root/main/item1/clbs/gender");
  8859. if (sex == "남") {
  8860. sex = "M";
  8861. } else if (sex == "여") {
  8862. sex = "F";
  8863. }
  8864. fOpenSPMNE04400_1(model.getValue("/root/main/item1/clbs/pid")
  8865. , model.getValue("/root/main/item1/clbs/ordfromdd")
  8866. , model.getValue("/root/main/item1/clbs/cretno")
  8867. , sex
  8868. , model.getValue("/root/main/item1/clbs/patage")
  8869. , model.getValue("/root/main/item1/clbs/patnm")
  8870. );
  8871. // 9.응급실정보 - 응급의료관리료
  8872. } else if (trgtWindow == "SMMMO06300") {
  8873. fOpenSMMMO06300(model.getValue("/root/main/item1/clbs/pid")
  8874. , model.getValue("/root/main/item1/clbs/patnm")
  8875. , model.getValue("/root/main/item1/clbs/ordfromdd")
  8876. );
  8877. // 9.응급실정보 - 응급간호기록
  8878. } else if (trgtWindow == "SMMNE04300") {
  8879. fOpenSMMNE04300();
  8880. // 10.이식정보 - HSCT원무관리
  8881. } else if (trgtWindow == "SMPMC01600") {
  8882. fOpenSMPMC01600();
  8883. // 10.이식정보 - HSCT스케줄조회
  8884. } else if (trgtWindow == "SMABO00800") {
  8885. fOpenSMABO00800();
  8886. // 10.이식정보 - HSCT환자별스케줄
  8887. } else if (trgtWindow == "SMMMR02100") {
  8888. fOpenSMMMR02100();
  8889. // 10.이식정보 - 조혈모처리현황
  8890. } else if (trgtWindow == "SMABC00900") {
  8891. fOpenSMABC00900(model.getValue("/root/main/item1/clbs/pid")
  8892. , model.getValue("/root/main/item1/clbs/patnm")
  8893. , "main"
  8894. );
  8895. // 10.이식정보 - HSCT환자관리
  8896. } else if (trgtWindow == "SMABO00100") {
  8897. fOpenSMABO00100(model.getValue("/root/main/item1/clbs/pid"));
  8898. // 10.이식정보 - 조혈모보관해동현황
  8899. } else if (trgtWindow == "SMABC00300") {
  8900. fOpenSMABC00300(model.getValue("/root/main/item1/clbs/pid")
  8901. , model.getValue("/root/main/item1/clbs/ordfromdd")
  8902. , ""
  8903. , ""
  8904. , ""
  8905. );
  8906. // 10.이식정보 - 장기이식
  8907. } else if (trgtWindow == "SMPIB02400") {
  8908. fOpenSMPIB02400();
  8909. }
  8910. }
  8911. // 특정내역 Radio button
  8912. function fSelectSpclRadio() {
  8913. var clamym = model.getValue("/root/main/item1/clbs/clamym");
  8914. if (clamym) { // 조회된 심사대상자가 있으면
  8915. var visibleRow = 0;
  8916. var rdounitflag = model.getValue("/root/hidden/list3/selectedUnitFlag");
  8917. if (rdounitflag == "-") {
  8918. for (var i = 1; i < grd_clsphist.rows; i++) {
  8919. grd_clsphist.rowHidden(i) = false;
  8920. var rowstatus = grd_clsphist.rowstatus(i);
  8921. if (rowstatus > 3) { // 삭제상태
  8922. grd_clsphist.rowHidden(i) = true;
  8923. } else if (model.getValue("/root/chkJT001") == 'Y' && (grd_clsphist.valueMatrix(i, grd_clsphist.colRef("spclcd")) == "JT001" || grd_clsphist.valueMatrix(i, grd_clsphist.colRef("spclcd")) == "JX998") ) { //20091013 정승우 JT001제외 추가
  8924. grd_clsphist.rowHidden(i) = true;
  8925. } else {
  8926. visibleRow++;
  8927. }
  8928. }
  8929. } else if (rdounitflag == "M") {
  8930. for (var i = 1; i < grd_clsphist.rows; i++) {
  8931. grd_clsphist.rowHidden(i) = false;
  8932. var rowstatus = grd_clsphist.rowstatus(i);
  8933. if (rowstatus > 3) { // 삭제상태
  8934. grd_clsphist.rowHidden(i) = true;
  8935. }
  8936. else if (grd_clsphist.valueMatrix(i, grd_clsphist.colRef("unitflag")) != "M" ) {
  8937. grd_clsphist.rowHidden(i) = true;
  8938. } else {
  8939. visibleRow++;
  8940. }
  8941. }
  8942. } else if (rdounitflag == "J") {
  8943. for (var i = 1; i < grd_clsphist.rows; i++) {
  8944. grd_clsphist.rowHidden(i) = false;
  8945. var rowstatus = grd_clsphist.rowstatus(i);
  8946. if (rowstatus > 3) { // 삭제상태
  8947. grd_clsphist.rowHidden(i) = true;
  8948. }
  8949. else if (grd_clsphist.valueMatrix(i, grd_clsphist.colRef("unitflag")) != "J" ) {
  8950. grd_clsphist.rowHidden(i) = true;
  8951. }
  8952. if (model.getValue("/root/chkJT001") == 'Y' && (grd_clsphist.valueMatrix(i, grd_clsphist.colRef("spclcd")) == "JT001" || grd_clsphist.valueMatrix(i, grd_clsphist.colRef("spclcd")) == "JX998") ) {
  8953. grd_clsphist.rowHidden(i) = true;
  8954. }
  8955. }
  8956. visibleRow = 1; // 줄단위가 선택된 상태에서는 자동으로 행추가를 하지 않는다.
  8957. } else { // rdounitflag == "JX999"
  8958. for (var i = 1; i < grd_clsphist.rows; i++) {
  8959. grd_clsphist.rowHidden(i) = false;
  8960. var rowstatus = grd_clsphist.rowstatus(i);
  8961. if (rowstatus > 3) { // 삭제상태
  8962. grd_clsphist.rowHidden(i) = true;
  8963. }
  8964. else if (grd_clsphist.valueMatrix(i, grd_clsphist.colRef("spclcd")) != "JX999" ) {
  8965. grd_clsphist.rowHidden(i) = true;
  8966. }
  8967. }
  8968. visibleRow = 1; // 줄단위가 선택된 상태에서는 자동으로 행추가를 하지 않는다.
  8969. }
  8970. if (checkAuth("X") && visibleRow == 0) { // 모든 row가 삭제 상태인 경우
  8971. fSpclGridInsertRow(); // 특정내역 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가"
  8972. } else {
  8973. grd_clsphist.row = 0;
  8974. }
  8975. }
  8976. }
  8977. function fSpclGridChanged() {
  8978. var row = grd_clsphist.row;
  8979. var newspclcd = model.getValue("/root/main/list3/clsp["+ row +"]/spclcd");
  8980. var newspclspec = model.getValue("/root/main/list3/clsp["+ row +"]/spclspec");
  8981. var newsmpsno = model.getValue("/root/main/list3/clsp["+ row +"]/mpsno");
  8982. var snglcalcscorcdcnt = getNodesetCount("/root/main/list7/clop"); //원외청방수
  8983. var clopdd = model.getValue("/root/main/list7/clop[1]/clopdd");
  8984. var clopno = model.getValue("/root/main/list7/clop[1]/clopno");
  8985. if (grd_clsphist.col == grd_clsphist.colRef("spclcd")) {
  8986. if( newspclcd == 'CT001'){
  8987. model.setValue("/root/main/list3/clsp["+ row +"]/unitflag", "C");
  8988. }
  8989. if( newspclcd == 'CT002'){
  8990. model.setValue("/root/main/list3/clsp["+ row +"]/unitflag", "C");
  8991. if (snglcalcscorcdcnt > 0 || newsmpsno.length == 0 ) {
  8992. model.setValue("/root/main/list3/clsp["+ row +"]/mpsno", clopdd + "" + clopno);
  8993. }
  8994. }
  8995. var unitflag = model.getValue("/root/main/list3/clsp["+ row +"]/unitflag");
  8996. if (unitflag == "M" && newspclcd != "") { // 명세서 단위
  8997. if (newspclcd == "MT004" || newspclcd == "MT015" || newspclcd == "MT016" || newspclcd == "MX999") {
  8998. // 중복된 특정코드가 있는지를 확인한다.
  8999. var oth_spclcd = model.getValue("/root/main/list3/clsp[position()!="+row+" and spclcd='"+newspclcd+"' and insntstat!='D']/spclcd");
  9000. if (newspclcd == oth_spclcd) {
  9001. model.resetInstanceNode("/root/main/list3/clsp["+ row +"]/spclcd");
  9002. model.resetInstanceNode("/root/main/list3/clsp["+ row +"]/spclspec");
  9003. model.resetInstanceNode("/root/main/list3/clsp["+ row +"]/spclformat");
  9004. model.resetInstanceNode("/root/main/list3/clsp["+ row +"]/cdnm");
  9005. model.resetInstanceNode("/root/main/list3/clsp["+ row +"]/detldesc");
  9006. model.setValue("/root/hidden/list3/msgspclformat", "명세서 단위 특정코드 '"+ newspclcd +"'가 중복되었습니다.");
  9007. //model.refresh();
  9008. model.refreshpart("/root/main/list3/clsp");
  9009. return;
  9010. }
  9011. }
  9012. // MT018:본인부담코드 변경시 clbs-ownbflag도 변경해줌
  9013. if (newspclcd == "MT018" && newspclspec != "") {
  9014. model.setValue("/root/main/item1/clbs/ownbflag", newspclspec);
  9015. }
  9016. // 특정코드 MT015, MT016, MT004 정보가 입력된 환자인지를 확인한다.
  9017. fCheckSpclSpecData();
  9018. } else { // 줄단위
  9019. if (newspclcd == "JX999" || newspclcd == "JT001") {
  9020. // 중복된 특정코드가 있는지를 확인한다.
  9021. var spclLnNo = model.getValue("/root/main/list3/clsp["+ row +"]/edilnno");
  9022. var oth_spclcd = model.getValue("/root/main/list3/clsp[position()!="+row+" and spclcd='"+newspclcd+"' and edilnno='"+spclLnNo+"' and insntstat!='D' ]/spclcd");
  9023. if (newspclcd == oth_spclcd) {
  9024. model.resetInstanceNode("/root/main/list3/clsp["+ row +"]/spclcd");
  9025. model.resetInstanceNode("/root/main/list3/clsp["+ row +"]/spclspec");
  9026. model.resetInstanceNode("/root/main/list3/clsp["+ row +"]/spclformat");
  9027. model.resetInstanceNode("/root/main/list3/clsp["+ row +"]/cdnm");
  9028. model.resetInstanceNode("/root/main/list3/clsp["+ row +"]/detldesc");
  9029. model.setValue("/root/hidden/list3/msgspclformat", "줄번호 "+ spclLnNo +"의 줄단위 특정코드 '"+ newspclcd +"'가 중복되었습니다.");
  9030. //model.refresh();
  9031. model.refreshpart("/root/main/list3/clsp");
  9032. return;
  9033. }
  9034. } // if (newspclcd == "JX999" || newspclcd == "JT001")
  9035. // JS010(특정코드:야간가산)의 hhmm이 야간(18~09시)가 아니면 특정내역 Grid에 빨간색으로 표시
  9036. grd_clsphist.rowStyle(row, "data", "color") = "#000000"; // 000000=검은색
  9037. if (newspclcd == "JS010") { // JS010 야간가산
  9038. var js010chk = false;
  9039. if (newspclspec.length >= 12) { // <spclformat>ccyymmddhhmm</spclformat>
  9040. var ccyymmddhhmm = newspclspec.substr(0, 12);
  9041. if (isValidDateTime(ccyymmddhhmm, "YYYYMMDDhhmm")) { // (dateHelper.js) 유효한 날짜, 시간 인지 점검
  9042. var hhmm = parseInt(newspclspec.substr(8, 4), 10); // '09' 와 같은 형식으로 입력한 경우 -> 9로 처리
  9043. if (hhmm >= 1800 || hhmm < 900) {
  9044. js010chk = true;
  9045. }
  9046. }
  9047. }
  9048. if (js010chk == false) {
  9049. grd_clsphist.rowStyle(row, "data", "color") = "#ff3333"; // ff3333=붉은색
  9050. }
  9051. } // if (newspclcd == "JS010")
  9052. } // if (unitflag == "M" && newspclcd != "") 가 아닌 경우
  9053. var cdid = model.getValue("/root/init/P0117list/P0117[cdid='"+newspclcd+"']/cdid");
  9054. var cdnm = model.getValue("/root/init/P0117list/P0117[cdid='"+newspclcd+"']/cdnm");
  9055. var cdval = model.getValue("/root/init/P0117list/P0117[cdid='"+newspclcd+"']/cdval");
  9056. var detldesc = model.getValue("/root/init/P0117list/P0117[cdid='"+newspclcd+"']/detldesc");
  9057. if (cdid == newspclcd) {
  9058. model.setValue("/root/main/list3/clsp["+ row +"]/cdnm", cdnm);
  9059. model.setValue("/root/main/list3/clsp["+ row +"]/spclformat", cdval);
  9060. model.setValue("/root/main/list3/clsp["+ row +"]/detldesc", detldesc);
  9061. }
  9062. var rowstatus = grd_clsphist.rowstatus(row);
  9063. // 특정코드, 특정내역이 변경되었거나 삭제된 특정코드를 조회하여 "확인"을 선택한 경우
  9064. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  9065. } else {
  9066. grd_clsphist.rowstatus(row) = 2; // 2 : update 상태로 stat를 변경한다.
  9067. }
  9068. var cdnm = model.getValue("/root/main/list3/clsp["+ row +"]/cdnm");
  9069. var spclformat = model.getValue("/root/main/list3/clsp["+ row +"]/spclformat");
  9070. model.setValue("/root/hidden/list3/msgspclformat", "코드: "+ newspclcd +" / 명칭: "+ cdnm +" / 내역: "+ newspclspec +" / 형식: "+ spclformat);
  9071. model.refresh();
  9072. } else { // grd_clsphist.colRef("spclcd") 가 아닌 경우
  9073. var unitflag = model.getValue("/root/main/list3/clsp["+ row +"]/unitflag");
  9074. if (unitflag == "J") {
  9075. if (newspclcd == "JT001") { // JT001 확인코드
  9076. var clsplnno = model.getValue("/root/main/list3/clsp["+ row +"]/edilnno");
  9077. var clodlnno = model.getValue("/root/main/list2/clod[edilnno='"+clsplnno+"']/edilnno");
  9078. if (clsplnno == clodlnno) {
  9079. model.setValue("/root/main/list2/clod["+ j +"]/cnfmcd", newspclspec);
  9080. }
  9081. if (newspclspec == "") { // 확인코드의 특정내역이 삭제된 경우임
  9082. for (var j = 1; j < grd_clsphist.rows; j++) {
  9083. var unitflag = model.getValue("/root/main/list3/clsp["+ j +"]/unitflag");
  9084. if (unitflag == "J") {
  9085. var spclLnno = model.getValue("/root/main/list3/clsp["+ j +"]/edilnno");
  9086. var spclSpclcd = model.getValue("/root/main/list3/clsp["+ j +"]/spclcd");
  9087. if (spclLnno == clsplnno && spclSpclcd == "JT001") {
  9088. var rowstatus = grd_clsphist.rowstatus(j);
  9089. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  9090. model.resetInstanceNode("/root/main/list3/clsp["+ j +"]/spclcd");
  9091. model.resetInstanceNode("/root/main/list3/clsp["+ j +"]/spclspec");
  9092. //grd_clsphist.deleteRow(j, false); // 해당 라인을 Grid에서 삭제한다.
  9093. } else {
  9094. grd_clsphist.rowstatus(j) = 4;
  9095. }
  9096. }
  9097. }
  9098. }
  9099. model.setValue("/root/hidden/list3/msgspclformat", "입력된 확인코드 내역이 없습니다.");
  9100. //model.refresh();
  9101. // 처방 행 삭제 or 삭제취소 후에 특정내역 sorting 작업
  9102. fSortSpclNo();
  9103. grd_clodhist.refresh();
  9104. grd_clsphist.refresh();
  9105. return;
  9106. } // if (newspclspec == "")
  9107. } // if (newspclcd == "JT001")
  9108. } // if (unitflag == "J")
  9109. else if (unitflag == "M") {
  9110. // MT018:본인부담코드 변경시 clbs-ownbflag도 변경해줌
  9111. if (newspclcd == "MT018" && newspclspec != "") {
  9112. model.setValue("/root/main/item1/clbs/ownbflag", newspclspec);
  9113. }
  9114. }
  9115. var rowstatus = grd_clsphist.rowstatus(row);
  9116. // 특정코드, 특정내역이 변경되었거나 삭제된 특정코드를 조회하여 "확인"을 선택한 경우
  9117. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  9118. } else {
  9119. grd_clsphist.rowstatus(row) = 2; // 2 : update 상태로 stat를 변경한다.
  9120. }
  9121. var cdnm = model.getValue("/root/main/list3/clsp["+ row +"]/cdnm");
  9122. var spclformat = model.getValue("/root/main/list3/clsp["+ row +"]/spclformat");
  9123. model.setValue("/root/hidden/list3/msgspclformat", "코드: "+ newspclcd +" / 명칭: "+ cdnm +" / 내역: "+ newspclspec +" / 형식: "+ spclformat);
  9124. //model.refresh();
  9125. // 처방 행 삭제 or 삭제취소 후에 특정내역 sorting 작업
  9126. fSortSpclNo();
  9127. grd_clsphist.refresh();
  9128. grd_clodhist.refresh();
  9129. } // grd_clsphist.colRef("spclcd") 가 아닌 경우
  9130. }
  9131. // 2008.03.12. / smartselly / 빈줄 삭제
  9132. function fDeleteBlankRow(grdName) {
  9133. if ( grdName == "" ) {
  9134. return;
  9135. } else {
  9136. var obj = document.controls(grdName);
  9137. for (var i = 1; i < obj.rows; i++) {
  9138. var rowstatus = obj.rowstatus(i);
  9139. if ( grdName == "grd_cldihist" ) {
  9140. var diagcd = model.getValue("/root/main/list1/cldi["+ i +"]/diagcd");
  9141. var diagnm = model.getValue("/root/main/list1/cldi["+ i +"]/diagnm");
  9142. var diagengnm = model.getValue("/root/main/list1/cldi["+ i +"]/diagengnm");
  9143. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  9144. if (diagcd == "" && diagnm == "" && diagengnm == "") {
  9145. obj.deleteRow(i, false);
  9146. i--;
  9147. }
  9148. }
  9149. } else if ( grdName == "grd_clsphist" ) {
  9150. var spclcd = model.getValue("/root/main/list3/clsp["+ i +"]/spclcd");
  9151. var spclspec = model.getValue("/root/main/list3/clsp["+ i +"]/spclspec");
  9152. // 특정코드과 특정내역이 입력되지 않은 경우
  9153. if (rowstatus != 4 && spclcd == "" && spclspec == "") {
  9154. obj.deleteRow(i, false);
  9155. i--;
  9156. }
  9157. } else if ( grdName == "grd_clodhist" ) {
  9158. var edilnno = model.getValue("/root/main/list2/clod["+ i +"]/edilnno");
  9159. var snglcalcscorcd = model.getValue("/root/main/list2/clod["+ i +"]/snglcalcscorcd");
  9160. var basecd = model.getValue("/root/main/list2/clod["+ i +"]/basecd");
  9161. var drugqty = model.getValue("/root/main/list2/clod["+ i +"]/drugqty");
  9162. var tims = model.getValue("/root/main/list2/clod["+ i +"]/tims");
  9163. var dayno = model.getValue("/root/main/list2/clod["+ i +"]/dayno");
  9164. var ordfromdd = model.getValue("/root/main/list2/clod["+ i +"]/ordfromdd");
  9165. // 줄번호없고, 수가코드, EDI코드, 투여량, 횟수, 일수, 처방일자가 입력되지 않은 경우
  9166. if (rowstatus != 4 && edilnno == "" && snglcalcscorcd == "" && basecd == "" && drugqty == "" && tims == "" && dayno == "" && ordfromdd == "") {
  9167. obj.deleteRow(i, false);
  9168. i--;
  9169. }
  9170. }
  9171. }
  9172. obj.refresh();
  9173. }
  9174. }
  9175. /**
  9176. * @group :
  9177. * @ver : 2008.05.20
  9178. * @by : smartselly
  9179. * @---------------------------------------------------
  9180. * @type : function
  9181. * @access : public
  9182. * @desc : 심사화면에서 주민번호 변경시 체크
  9183. * @param :
  9184. * @return :
  9185. * @---------------------------------------------------
  9186. */
  9187. function fCheckPidRegNo() {
  9188. var patrrgstno = model.getValue("/root/main/item1/clbs/patrrgstno");
  9189. if (isResidentNo(patrrgstno) == false)
  9190. {
  9191. var message = messageBox("유효하지 않은 주민번호입니다! 그래도 저장하시겠습니까?","Q999","");
  9192. if( message == 6 ){
  9193. return true;
  9194. } else {
  9195. model.setFocus("ipt_patrrgstno");
  9196. model.refresh();
  9197. return false;
  9198. }
  9199. }
  9200. }
  9201. /**
  9202. * @group :
  9203. * @ver : 2008.06.03
  9204. * @by : smartselly
  9205. * @---------------------------------------------------
  9206. * @type : function
  9207. * @access : public
  9208. * @desc : 심사화면에서 [<<]:이전 [>>]:이후 버튼클릭 ( 다음 심사대상자 조회 )
  9209. * @param : flag : "P" : previous, "N" : next
  9210. * @return :
  9211. * @---------------------------------------------------
  9212. */
  9213. function fClickPrevNext(flag){
  9214. var iCompVal = 0;
  9215. var trgtManWindow = getChildWindow("SMPID20400"); // SMPID20400_외래사후심사대상자조회.xrw
  9216. if (trgtManWindow != null) {
  9217. var srchmode = trgtManWindow.model.getValue("/root/hidden/clbs/srchmode");
  9218. var selectedRow = "";
  9219. if (srchmode == "specclbs") { // 선별심사 모드인 경우
  9220. selectedRow = trgtManWindow.grd_specclbs.selectedRow(0); // row 선택 후 타이틀 부분 조정시 row = 0으로 바뀌므로 selectedRow로 체크함
  9221. } else {
  9222. selectedRow = trgtManWindow.grd_clbsmast.selectedRow(0); // row 선택 후 타이틀 부분 조정시 row = 0으로 바뀌므로 selectedRow로 체크함
  9223. }
  9224. if (selectedRow && selectedRow != -1) {
  9225. if ( flag == "N" ) { // 이후선택
  9226. var trgtmanlist = trgtManWindow.instance1.selectSingleNode("/root/main/list1");
  9227. var maxRow = trgtmanlist.childNodes.length;
  9228. iCompVal = maxRow;
  9229. } else { // 이전선택
  9230. iCompVal = 1;
  9231. }
  9232. if (( flag == "P" && selectedRow > iCompVal ) || ( flag == "N" && selectedRow < iCompVal )) {
  9233. if (btn_save.disabled == false || btn_unjudg.disabled == false) {
  9234. // "심사중" 상태를 해제한다. "심사저장" 상태로 대상자 화면 갱신
  9235. var judgendyn = model.getValue("/root/main/item1/clbs/judgendyn");
  9236. fSetJudgSaveState(judgendyn);
  9237. }
  9238. if ( flag == "N" ) {
  9239. selectedRow = parseInt(selectedRow) + 1;
  9240. } else {
  9241. selectedRow = parseInt(selectedRow) - 1;
  9242. }
  9243. model.setValue("/root/hidden/smpid20400/rslt/selectedRow", selectedRow);
  9244. var trgtmanclamym = trgtManWindow.model.getValue("/root/main/list1/clbs["+ selectedRow +"]/clamym");
  9245. var trgtmanclamdg = trgtManWindow.model.getValue("/root/main/list1/clbs["+ selectedRow +"]/clamdg");
  9246. var trgtmanpid = trgtManWindow.model.getValue("/root/main/list1/clbs["+ selectedRow +"]/pid");
  9247. var trgtmanpidsn = trgtManWindow.model.getValue("/root/main/list1/clbs["+ selectedRow +"]/pidsn");
  9248. //var trgtmancutprcpyn = trgtManWindow.model.getValue("/root/main/list1/clbs["+ selectedRow +"]/cutprcpyn");
  9249. var trgtmancutprcpyn = trgtManWindow.model.getValue("/root/send/item1/cutprcpsel");
  9250. var trgtmanjudgendyn = trgtManWindow.model.getValue("/root/main/list1/clbs["+ selectedRow +"]/judgendyn");
  9251. var trgtmantootpopyn = trgtManWindow.model.getValue("/root/temp/tootpopupyn");
  9252. var judgenddd = trgtManWindow.model.getValue("/root/main/list1/clbs["+ selectedRow +"]/judgenddd");
  9253. if (trgtmanclamym) {
  9254. model.setValue("/root/hidden/smpid20400/rslt/clamym", trgtmanclamym);
  9255. model.setValue("/root/hidden/smpid20400/rslt/clamdg", trgtmanclamdg);
  9256. model.setValue("/root/hidden/smpid20400/rslt/pid", trgtmanpid);
  9257. model.setValue("/root/hidden/smpid20400/rslt/pidsn", trgtmanpidsn);
  9258. model.setValue("/root/hidden/smpid20400/rslt/cutprcpyn", trgtmancutprcpyn);
  9259. model.setValue("/root/hidden/smpid20400/rslt/judgendyn", trgtmanjudgendyn);
  9260. model.setValue("/root/hidden/smpid20400/rslt/tootpopupyn", trgtmantootpopyn);
  9261. model.setValue("/root/hidden/smpid20400/rslt/judgenddd", judgenddd);
  9262. var srchmode = trgtManWindow.model.getValue("/root/hidden/clbs/srchmode");
  9263. if (srchmode == "specclbs") { // 선별심사 모드인 경우
  9264. trgtManWindow.grd_specclbs.row = selectedRow;
  9265. } else {
  9266. trgtManWindow.grd_clbsmast.row = selectedRow;
  9267. }
  9268. //trgtManWindow.model.refresh();
  9269. fGetOutAftJudgMngt();
  9270. trgtManWindow.javascript.setPopupRefresh(trgtmanpid);
  9271. }
  9272. return;
  9273. } else { // 마지막 줄인 경우 이후 대상자가 없다.
  9274. messageBox("조회된 마지막 심사대상자 입니다. 이후 심사 대상자가", "I004"); ///조회된 마지막 심사대상자 입니다. 이후 심사 대상자가 없습니다.
  9275. return;
  9276. }
  9277. }
  9278. }
  9279. messageBox("외래사후심사대상자 조회에서 선택된 심사 대상자가", "I004"); ///외래사후심사대상자 조회에서 선택된 심사 대상자가 없습니다.
  9280. }
  9281. //-------------------
  9282. // edi 관련 컬럼 표시
  9283. //---------------------
  9284. function fEdiCheck(){
  9285. var sEdiCheck = "";
  9286. sEdiCheck = model.getValue("/root/hidden/edicheck");
  9287. /*
  9288. if ( sEdiCheck == "Y" ) {
  9289. grd_clodhist.colHidden(grd_clodhist.colRef("ediunitcost")) = false;
  9290. grd_clodhist.colHidden(grd_clodhist.colRef("edidrugqty")) = false;
  9291. grd_clodhist.colHidden(grd_clodhist.colRef("edidayno")) = false;
  9292. grd_clodhist.colHidden(grd_clodhist.colRef("ediamt")) = false;
  9293. grd_clodhist.colHidden(grd_clodhist.colRef("edicd")) = false;
  9294. grd_oprcphist.colHidden(grd_oprcphist.colRef("edidrugqty")) = false;
  9295. grd_oprcphist.colHidden(grd_oprcphist.colRef("edidrugdayno")) = false;
  9296. } else {
  9297. grd_clodhist.colHidden(grd_clodhist.colRef("ediunitcost")) = true;
  9298. grd_clodhist.colHidden(grd_clodhist.colRef("edidrugqty")) = true;
  9299. grd_clodhist.colHidden(grd_clodhist.colRef("edidayno")) = true;
  9300. grd_clodhist.colHidden(grd_clodhist.colRef("ediamt")) = true;
  9301. grd_clodhist.colHidden(grd_clodhist.colRef("edicd")) = true;
  9302. grd_oprcphist.colHidden(grd_oprcphist.colRef("edidrugqty")) = true;
  9303. grd_oprcphist.colHidden(grd_oprcphist.colRef("edidrugdayno")) = true;
  9304. }
  9305. */
  9306. // 20100128 edi 관련 컬럼 조회기준으로 변경 (재원비교로 변경)
  9307. if ( sEdiCheck == "Y" ) {
  9308. grd_clodhist.colHidden(grd_clodhist.colRef("edicd")) = false; // EDI코드
  9309. grd_clodhist.colHidden(grd_clodhist.colRef("unitcost")) = false; // 단가
  9310. grd_clodhist.colHidden(grd_clodhist.colRef("drugqty")) = false; // 1회량
  9311. grd_clodhist.colHidden(grd_clodhist.colRef("dayno")) = false; // 일수
  9312. grd_clodhist.colHidden(grd_clodhist.colRef("amt")) = false; // 금액
  9313. grd_clodhist.colHidden(grd_clodhist.colRef("druglimitamt")) = false; // 약제상한가
  9314. grd_clodhist.colHidden(grd_clodhist.colRef("limitdiffamt")) = false; // 약제상한차액
  9315. grd_oprcphist.colHidden(grd_oprcphist.colRef("drugqty")) = false; // 원외 1회량
  9316. grd_oprcphist.colHidden(grd_oprcphist.colRef("drugdayno")) = false; // 원외 일수
  9317. } else {
  9318. grd_clodhist.colHidden(grd_clodhist.colRef("edicd")) = true; // EDI코드
  9319. grd_clodhist.colHidden(grd_clodhist.colRef("unitcost")) = true; // 단가
  9320. grd_clodhist.colHidden(grd_clodhist.colRef("drugqty")) = true; // 1회량
  9321. grd_clodhist.colHidden(grd_clodhist.colRef("dayno")) = true; // 일수
  9322. grd_clodhist.colHidden(grd_clodhist.colRef("amt")) = true; // 금액
  9323. grd_clodhist.colHidden(grd_clodhist.colRef("druglimitamt")) = true; // 약제상한가
  9324. grd_clodhist.colHidden(grd_clodhist.colRef("limitdiffamt")) = true; // 약제상한차액
  9325. grd_oprcphist.colHidden(grd_oprcphist.colRef("drugqty")) = true; // 원외 1회량
  9326. grd_oprcphist.colHidden(grd_oprcphist.colRef("drugdayno")) = true; // 원외 일수
  9327. }
  9328. grd_clodhist.refresh();
  9329. grd_oprcphist.refresh();
  9330. }
  9331. /**
  9332. * @group :
  9333. * @ver : 2008.08.22
  9334. * @by : 김상진
  9335. * @---------------------------------------------------
  9336. * @type : function
  9337. * @access : public
  9338. * @desc : 상세계산내역조회
  9339. * @param :
  9340. * @return :
  9341. * @---------------------------------------------------
  9342. */
  9343. function fGetOsclClamData(chkAll, grid){
  9344. if (model.getValue("/root/main/item1/clbs/mig") != "") {
  9345. messageBox("전환데이터는 상세계산내역을 조회할 수", "I004"); //없습니다 !
  9346. }
  9347. else {
  9348. var clamkey = model.getValue("/root/main/item1/clbs/clamkey");
  9349. var ctrlObj;
  9350. var row;
  9351. var col;
  9352. var seqno;
  9353. var hngnm;
  9354. var grupcd;
  9355. var calcscorcd;
  9356. var edicd;
  9357. var clopyn;
  9358. if (chkAll != "ALL" && chkAll != "N") {
  9359. chkAll = "N";
  9360. }
  9361. if (grid != "grd_clodhist" && grid != "grd_oprcphist") {
  9362. grid = "grd_clodhist";
  9363. }
  9364. if (clamkey) {
  9365. // 상세계산내역화면 call
  9366. model.setValue("/root/hidden/sppid22100/cond/instcd", model.getValue("/root/main/item1/clbs/instcd"));
  9367. model.setValue("/root/hidden/sppid22100/cond/clamkey", model.getValue("/root/main/item1/clbs/clamkey"));
  9368. model.setValue("/root/hidden/sppid22100/cond/pid", model.getValue("/root/main/item1/clbs/pid"));
  9369. model.setValue("/root/hidden/sppid22100/cond/patnm", model.getValue("/root/main/item1/clbs/patnm"));
  9370. model.setValue("/root/hidden/sppid22100/cond/gender", model.getValue("/root/main/item1/clbs/gender"));
  9371. model.setValue("/root/hidden/sppid22100/cond/ioflag", model.getValue("/root/main/item1/clbs/ioflag"));
  9372. model.setValue("/root/hidden/sppid22100/cond/stsioflag", model.getValue("/root/main/item1/clbs/stsioflag"));
  9373. model.setValue("/root/hidden/sppid22100/cond/insukind", model.getValue("/root/main/item1/clbs/insukindcd"));
  9374. model.setValue("/root/hidden/sppid22100/cond/suppkind", model.getValue("/root/main/item1/clbs/suppkindcd"));
  9375. model.setValue("/root/hidden/sppid22100/cond/scrhdate", "execdd");
  9376. model.setValue("/root/hidden/sppid22100/cond/fromdd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  9377. model.setValue("/root/hidden/sppid22100/cond/todd", model.getValue("/root/main/item1/clbs/ordtodd"));
  9378. // 원내처방그리드이면....
  9379. if (grid == "grd_clodhist"){
  9380. ctrlObj = document.controls.item(grid);
  9381. row = ctrlObj.row;
  9382. col = ctrlObj.col;
  9383. seqno = model.getValue("/root/main/list2/clod["+ row +"]/seqno");
  9384. hngnm = model.getValue("/root/main/list2/clod["+ row +"]/hngnm");
  9385. grupcd = model.getValue("/root/main/list2/clod["+ row +"]/grupcalcscorcd");
  9386. calcscorcd = model.getValue("/root/main/list2/clod["+ row +"]/snglcalcscorcd")
  9387. edicd = model.getValue("/root/main/list2/clod["+ row +"]/edicd")
  9388. clopyn = "N"; //원외처방여부
  9389. }
  9390. // 원외처방그리드이면...
  9391. else if (grid == "grd_oprcphist") {
  9392. ctrlObj = document.controls.item(grid);
  9393. row = ctrlObj.row;
  9394. col = ctrlObj.col;
  9395. seqno = model.getValue("/root/main/list7/clop["+ row +"]/clopseqno");
  9396. hngnm = model.getValue("/root/main/list7/clop["+ row +"]/hngnm");
  9397. grupcd = "";
  9398. calcscorcd = model.getValue("/root/main/list7/clop["+ row +"]/snglcalcscorcd");
  9399. edicd = model.getValue("/root/main/list7/clop["+ row +"]/edicd");
  9400. clopyn = "Y"; //원외처방여부
  9401. }
  9402. model.setValue("/root/hidden/sppid22100/cond/clopyn", clopyn); //원외처방여부
  9403. // 전체 상세내역이면...
  9404. if (chkAll == "ALL") {
  9405. model.setValue("/root/hidden/sppid22100/cond/clamcretdd", "0");
  9406. model.setValue("/root/hidden/sppid22100/cond/hngnm", "");
  9407. model.setValue("/root/hidden/sppid22100/cond/choicdsrch", "calcscorcd");
  9408. model.setValue("/root/hidden/sppid22100/cond/calcscorcd", "");
  9409. }
  9410. // 각처방코드별 상세내역이면...
  9411. else {
  9412. model.setValue("/root/hidden/sppid22100/cond/clamcretdd", seqno);
  9413. model.setValue("/root/hidden/sppid22100/cond/hngnm", hngnm);
  9414. if (col == ctrlObj.colRef("grupcalcscorcd")) {
  9415. model.setValue("/root/hidden/sppid22100/cond/choicdsrch", "grupcd");
  9416. model.setValue("/root/hidden/sppid22100/cond/calcscorcd", grupcd);
  9417. } else if (col == ctrlObj.colRef("snglcalcscorcd")) {
  9418. model.setValue("/root/hidden/sppid22100/cond/choicdsrch", "calcscorcd");
  9419. model.setValue("/root/hidden/sppid22100/cond/calcscorcd", calcscorcd);
  9420. } else if (col == ctrlObj.colRef("basecd") || col == ctrlObj.colRef("edicd")) {
  9421. model.setValue("/root/hidden/sppid22100/cond/choicdsrch", "edicd");
  9422. model.setValue("/root/hidden/sppid22100/cond/calcscorcd", edicd);
  9423. } else {
  9424. model.setValue("/root/hidden/sppid22100/cond/choicdsrch", "calcscorcd");
  9425. model.setValue("/root/hidden/sppid22100/cond/calcscorcd", calcscorcd);
  9426. }
  9427. }
  9428. modal("SPPID22100", "1", "10", "10", "SPPID22100", "/root/hidden/sppid22100/cond", "/root/send/data1", "", ""); // SPPID22100_상세계산내역조회.xrw
  9429. }
  9430. }
  9431. }
  9432. //--------------------------
  9433. // 진료달력 진료일표시
  9434. //--------------------------
  9435. function fViewOrddddisp() {
  9436. // 그리드 초기화
  9437. model.resetInstanceNode("/root/hidden/orddddisp");
  9438. for (var i=1; i<=41;i++) {
  9439. model.makeValue("/root/hidden/orddddisp[1]/col"+i, "");
  9440. model.makeValue("/root/hidden/orddddisp[2]/col"+i, "");
  9441. }
  9442. var firstDay = model.getValue("/root/main/item1/clbs/ordfromdd").substr(0,6)+"01";
  9443. dateObj = firstDay.toDate();
  9444. var startDay = dateObj.getDay(); // 요일
  9445. var days = dateObj.getMonthDay(); // 마지막 일
  9446. var colIndex = startDay;
  9447. colIndex++;
  9448. // 날짜 표시
  9449. for( var i = 1; i <= days + startDay ; i++ ) {
  9450. if ( i <= days ) {
  9451. model.setValue("/root/hidden/orddddisp[1]/col"+colIndex, i);
  9452. } else {
  9453. //
  9454. }
  9455. colIndex++;
  9456. }
  9457. grd_ordddcalc.refresh();
  9458. grd_ordddcalc.rowhidden(0) = true;
  9459. var sOrddddisp = model.getValue("/root/main/item1/clbs/orddddisp");
  9460. var j = 0;
  9461. // 실시일자 표시
  9462. for ( var i = 0; i < 42; i++ ) {
  9463. j = i + startDay +1;
  9464. grd_ordddcalc.valueMatrix(2, j) = ""
  9465. if ( sOrddddisp.substr(i,1) != "0" && sOrddddisp.substr(i,1) != "" ) {
  9466. model.setValue("/root/hidden/orddddisp[2]/col"+j, sOrddddisp.substr(i,1));
  9467. grd_ordddcalc.cellStyle("font-weight", 1, j-1) = "bold";
  9468. } else {
  9469. grd_ordddcalc.cellStyle("font-weight", 1, j-1) = "normal";
  9470. }
  9471. if (grd_ordddcalc.valueMatrix(1, i) == "") {
  9472. grd_ordddcalc.colHidden(i) = true;
  9473. } else {
  9474. grd_ordddcalc.colHidden(i) = false;
  9475. }
  9476. }
  9477. grd_ordddcalc.cellStyle("font-weight", 2, 1, 2, 41) = "bold";
  9478. grd_ordddcalc.refresh();
  9479. grd_ordddcalc.row = 1;
  9480. }
  9481. //-----------------------------------------------------------------------------------
  9482. // 진료달력 진료일 체크 (진료일표시, 진료일수(내원일수), 진료개시일, 진료종료일 계산)
  9483. //-----------------------------------------------------------------------------------
  9484. function fClickOrdYN(iRow, iCol) {
  9485. var EditDay = 0;
  9486. var ordfromdd = "";
  9487. var ordtodd = "";
  9488. var mindd = 32;
  9489. var maxdd = -1;
  9490. var sOrdCnt = 0;
  9491. var sMedCnt = 0;
  9492. var iCnt = 0;
  9493. var jCnt = 0;
  9494. var sOrddddisp = "";
  9495. var ordym = model.getValue("/root/main/item1/clbs/ordfromdd").substr(0,6);
  9496. if ( iRow != "2" ) {
  9497. return;
  9498. }
  9499. if ( iRow < 0 || iCol < 0 ) {
  9500. return;
  9501. }
  9502. sOrdCnt = model.getValue("/root/main/item1/clbs/chosindayno");
  9503. sMedCnt = model.getValue("/root/main/item1/clbs/medcaredayno");
  9504. // 진료일수 계산
  9505. if ( grd_ordddcalc.textmatrix(iRow,iCol) == "1" ) {
  9506. grd_ordddcalc.valueMatrix(iRow, iCol) = "";
  9507. sOrdCnt--;
  9508. sMedCnt--;
  9509. grd_ordddcalc.cellStyle("font-weight", 1, iCol) = "normal";
  9510. } else if ( grd_ordddcalc.textmatrix(iRow,iCol) == "" ) {
  9511. grd_ordddcalc.valueMatrix(iRow, iCol) = "1";
  9512. sOrdCnt++;
  9513. sMedCnt++
  9514. grd_ordddcalc.cellStyle("font-weight", 1, iCol) = "bold";
  9515. }
  9516. sEditDay = grd_ordddcalc.textmatrix(1, iCol);
  9517. if ( sOrdCnt < 0 ) {
  9518. sOrdCnt = 0;
  9519. }
  9520. if ( sMedCnt < 0 ) {
  9521. sMedCnt = 0;
  9522. }
  9523. //"/root/main/item1/clbs/medcaredayno"
  9524. // 진료일수 셋팅
  9525. model.setValue("/root/main/item1/clbs/chosindayno", sOrdCnt);
  9526. // 요양일수 셋팅
  9527. model.setValue("/root/main/item1/clbs/medcaredayno", sMedCnt);
  9528. // 진료일표시 계산
  9529. for ( var iCnt = 0; iCnt < 42; iCnt++ ) {
  9530. if ( grd_ordddcalc.colHidden(iCnt) == false ) {
  9531. if ( grd_ordddcalc.textmatrix(2, iCnt) == "1" ) {
  9532. sOrddddisp = sOrddddisp + "1";
  9533. // 진료시작일, 종료일 계산
  9534. EditDay = parseInt(grd_ordddcalc.textmatrix(1, iCnt));
  9535. if ( EditDay < mindd ) mindd = EditDay;
  9536. if ( EditDay > maxdd ) maxdd = EditDay;
  9537. }
  9538. else {
  9539. sOrddddisp = sOrddddisp + "0";
  9540. }
  9541. jCnt++;
  9542. }
  9543. }
  9544. if ( jCnt != 31 ) {
  9545. for ( var iCnt = 0; iCnt < 31 - jCnt; iCnt++ ) {
  9546. sOrddddisp = sOrddddisp + "0";
  9547. }
  9548. }
  9549. // 진료일표시 셋팅
  9550. model.setValue("/root/main/item1/clbs/orddddisp", sOrddddisp);
  9551. // 진료시작일, 종료일 계산
  9552. if (mindd > 0 && mindd < 10) {
  9553. ordfromdd = ordym + "0" + mindd;
  9554. }
  9555. else if (mindd > 9) {
  9556. ordfromdd = ordym + mindd;
  9557. }
  9558. if (maxdd > 0 && maxdd < 10) {
  9559. ordtodd = ordym + "0" + maxdd;
  9560. }
  9561. else if (maxdd > 9) {
  9562. ordtodd = ordym + maxdd;
  9563. }
  9564. // 진료시작일, 종료일 셋팅
  9565. model.setValue("/root/main/item1/clbs/ordfromdd", ordfromdd);
  9566. model.setValue("/root/main/item1/clbs/ordtodd", ordtodd);
  9567. //model.refresh();
  9568. grd_ordddcalc.refresh();
  9569. model.refreshpart("/root/main/item1/clbs/chosindayno");
  9570. model.refreshpart("/root/main/item1/clbs/medcaredayno");
  9571. }
  9572. //----------------------------------------------
  9573. // PIFHIUNC 재청구 저장시 차액이 발생했는지 체크
  9574. //----------------------------------------------
  9575. function fCheckSaveReClamChangeAmt() {
  9576. //if (model.getValue("/root/send/item1/clbs/recalcyn") == "Y") {
  9577. if (model.getValue("/root/main/item1/clbs/clamflagcd") == "1" && model.getValue("/root/send/item1/clbs/recalcyn") == "Y") {
  9578. return true;
  9579. } else {
  9580. return false;
  9581. }
  9582. }
  9583. //---------------------------------
  9584. // 재청구 차액발생 사유입력
  9585. //---------------------------------
  9586. function fSetReClamChgAmtResncd() {
  9587. model.resetInstanceNode("/root/hidden/sppid22800");
  9588. //model.setValue("/root/hidden/sppiz01000/cond/cdid", "");
  9589. modal("SPPID22800", "1", "500", "450", "SPPID22800", "/root/hidden/sppid22800/cond", "/root/hidden/sppid22800/cond", "", ""); // SPPID22800_재청구차액발생사유관리.xrw
  9590. var resncd = model.getValue("/root/hidden/sppid22800/rslt/cdid");
  9591. if (resncd) {
  9592. model.setValue("/root/send/item8/pifhiunc/chgamtresncd", resncd);
  9593. }
  9594. return resncd;
  9595. }
  9596. //------------------------------------------------------------
  9597. // 동일진료일명세서 조회(SMPID22900_동일진료일명세서조회.xrw)
  9598. //------------------------------------------------------------
  9599. function fGetSamedate(chkAll, grid){
  9600. var clamym = model.getValue("/root/main/item1/clbs/clamym");
  9601. var clamdg = model.getValue("/root/main/item1/clbs/clamdg");
  9602. var pid = model.getValue("/root/main/item1/clbs/pid");
  9603. var pidsn = model.getValue("/root/main/item1/clbs/pidsn");
  9604. var ordym = model.getValue("/root/main/item1/clbs/ordym");
  9605. if (clamym && clamdg && pid && pidsn) {
  9606. // 동일진료일명세서조회화면 call
  9607. model.setValue("/root/hidden/smpid22900/cond/clamym", clamym);
  9608. model.setValue("/root/hidden/smpid22900/cond/clamdg", clamdg);
  9609. model.setValue("/root/hidden/smpid22900/cond/pid", pid);
  9610. model.setValue("/root/hidden/smpid22900/cond/pidsn", pidsn);
  9611. model.setValue("/root/hidden/smpid22900/cond/ordym", ordym);
  9612. modal("SMPID22900", "1", "10", "10", "SMPID22900", "/root/hidden/smpid22900/cond", "/root/hidden/item1", "", ""); // SMPID22900_동일진료일명세서조회.xrw
  9613. }
  9614. }
  9615. //------------------------------------------------------------
  9616. // 진료정보조회 : SMMMO02500_환자진료정보.xrw
  9617. //------------------------------------------------------------
  9618. function fGetEmrInformation() {
  9619. var pid = model.getValue("/root/main/item1/clbs/pid");
  9620. if (pid) {
  9621. fOpenSMMMO02500_1(pid); // SMMMO02500_환자진료정보
  9622. }
  9623. }
  9624. //---------------------------------
  9625. // 급여구분 변경
  9626. //---------------------------------
  9627. function fSetPayflag() {
  9628. var oldpayflag = model.getValue("/root/main/list2/clod["+ grd_clodhist.row +"]/payflag");
  9629. model.resetInstanceNode("/root/hidden/sppid23100");
  9630. model.setValue("/root/hidden/sppid23100/cond/cdid", oldpayflag);
  9631. modal("SPPID23100", "1", "500", "500", "SPPID23100", "/root/hidden/sppid23100/cond", "/root/hidden/sppid23100/cond", "", ""); // SPPID23100_급비변경관리.xrw
  9632. var newpayflag = model.getValue("/root/hidden/sppid23100/rslt/cdid");
  9633. if (newpayflag) {
  9634. if (newpayflag != oldpayflag) {
  9635. var adjtresncd = model.getValue("/root/main/list2/clod["+ grd_clodhist.row +"]/adjtresncd");
  9636. if (adjtresncd == "" || adjtresncd == "-") { // 심사(조정)사유가 입력되지 않은 경우
  9637. var newcd = fSetAdjtResnCd();
  9638. if (newcd == "" || newcd == "-") {
  9639. return;
  9640. }
  9641. }
  9642. model.setValue("/root/main/list2/clod["+ grd_clodhist.row +"]/payflag", newpayflag);
  9643. if (newpayflag == "0" || newpayflag == "9") {
  9644. model.setValue("/root/main/list2/clod["+ grd_clodhist.row +"]/calcappyn", "Y"); // 계산적용구분
  9645. } else {
  9646. model.setValue("/root/main/list2/clod["+ grd_clodhist.row +"]/calcappyn", "N"); // 계산적용구분
  9647. }
  9648. var matractflag = model.getValue("/root/main/list2/clod["+ grd_clodhist.row +"]/matractflag");
  9649. // 청구가능선택진료 + 가산행위(2)는 가산안함으로 변경
  9650. if (newpayflag == "9" && matractflag == "2") {
  9651. model.setValue("/root/main/list2/clod["+ grd_clodhist.row +"]/matractflag", "3"); // 재료행위(3:가산없는 행위)
  9652. }
  9653. if (grd_clodhist.rowStatus(grd_clodhist.row) == 0) { // 0 : new, 2 : update
  9654. grd_clodhist.rowStatus(grd_clodhist.row) = 2;
  9655. }
  9656. // 처방 Grid 배경색을 설정한다. - 추가/수정된 row
  9657. fOrderBkColorNew(grd_clodhist.row);
  9658. grd_clodhist.refresh();
  9659. fSetTotDrugQtyAmt();
  9660. grd_clodhist.refresh();
  9661. }
  9662. }
  9663. }
  9664. //------------------------------------------------------------
  9665. // 원외처방 "교부번호 전체삭제"
  9666. //------------------------------------------------------------
  9667. function fClopGridAllDeleteRow() {
  9668. var cloprow = grd_oprcphist.row;
  9669. if (cloprow < 1) {
  9670. return;
  9671. }
  9672. // 삭제할 원외처방 교부번호
  9673. if ( model.getValue("/root/main/list7/clop["+ cloprow +"]/newmpsno") == "" ) {
  9674. var mpsno = model.getValue("/root/main/list7/clop["+ cloprow +"]/mpsno");
  9675. } else {
  9676. var mpsno = model.getValue("/root/main/list7/clop["+ cloprow +"]/newmpsno");
  9677. }
  9678. var oldclopdd = model.getValue("/root/main/list7/clop["+ cloprow +"]/oldclopdd");
  9679. var oldclopno = model.getValue("/root/main/list7/clop["+ cloprow +"]/oldclopno");
  9680. var clspdelcnt = 0;
  9681. var ans = messageBox("[ 교부일자 : " + oldclopdd + ", 교부번호 : " + oldclopno + " ] 전체삭제하시려면", "S001"); /// 예(Yes)\n아니면 아니오(No)
  9682. if (ans == 6) { // 6: yes
  9683. // 삭제사유 입력
  9684. var adjtresncd = model.getValue("/root/main/list7/clop["+ cloprow +"]/adjtresncd");
  9685. if (adjtresncd == "" || adjtresncd == "-") { // 심사(조정)사유가 입력되지 않은 경우
  9686. var cmbAdjtresncd = model.getValue("/root/hidden/list2/clodstat/cmbAdjtresncd");
  9687. if (cmbAdjtresncd == "" || cmbAdjtresncd == "-" ) {
  9688. model.resetInstanceNode("/root/hidden/sppiz01000");
  9689. model.setValue("/root/hidden/sppiz01000/cond/cdcls", "aftout");
  9690. model.setValue("/root/hidden/sppiz01000/cond/cdid", adjtresncd);
  9691. modal("SPPIZ01000", "1", "500", "450", "SPPIZ01000", "/root/hidden/sppiz01000/cond", "/root/hidden/sppiz01000/cond", "", ""); // SPPIZ01000_심사수정사유관리.xrw
  9692. adjtresncd = model.getValue("/root/hidden/sppiz01000/rslt/cdid");
  9693. } else {
  9694. adjtresncd = cmbAdjtresncd;
  9695. }
  9696. }
  9697. if (adjtresncd == "" || adjtresncd == "-") {
  9698. return;
  9699. }
  9700. var nodeList = instance1.selectNodes("/root/main/list7/clop");
  9701. for (var row = 1; row <= nodeList.length; row++) {
  9702. var clopseqno = model.getValue("/root/main/list7/clop["+ row +"]/clopseqno");
  9703. if ( model.getValue("/root/main/list7/clop["+ row +"]/newmpsno") == "" ) {
  9704. var nowmpsno = model.getValue("/root/main/list7/clop["+ row +"]/mpsno");
  9705. } else {
  9706. var nowmpsno = model.getValue("/root/main/list7/clop["+ row +"]/newmpsno");
  9707. }
  9708. if (mpsno == nowmpsno) {
  9709. // 1. 줄단위 원외처방 특정내역을 삭제한다.
  9710. if (model.getValue("/root/main/list7/clop["+ row +"]/spclspecyn")) {
  9711. // 줄단위 특정내역이 입력된 경우
  9712. for (var j = 1; j < grd_clsphist.rows; j++) {
  9713. var spclmpsno = model.getValue("/root/main/list3/clsp["+ j +"]/mpsno"); // mpsno
  9714. var spclClodseqno = model.getValue("/root/main/list3/clsp["+ j +"]/clodseqno"); // seqno
  9715. var clsoyn = model.getValue("/root/main/list3/clsp["+ j +"]/clsoyn"); // 원외처방 특정내역 여부
  9716. if (spclmpsno == mpsno && spclClodseqno == clopseqno && clsoyn == "Y") {
  9717. var clspstatus = grd_clsphist.rowstatus(j);
  9718. if (clspstatus != 1 && clspstatus != 3) {
  9719. grd_clsphist.rowstatus(j) = 4; // 4 : delete 상태로 stat를 변경한다.
  9720. clspdelcnt++;
  9721. } else {
  9722. grd_clsphist.deleteRow(j, false);
  9723. }
  9724. }
  9725. }
  9726. }
  9727. // 2. 해당 원외처방을 삭제한다.
  9728. var clopstatus = grd_oprcphist.rowstatus(row);
  9729. if (clopstatus != 1 && clopstatus != 3) {
  9730. model.setValue("/root/main/list7/clop["+ row +"]/adjtresncd", adjtresncd); // 삭제사유
  9731. grd_oprcphist.rowstatus(row) = 4;
  9732. grd_oprcphist.rowHidden(row) = true;
  9733. } else {
  9734. grd_oprcphist.deleteRow(row, false);
  9735. }
  9736. }
  9737. }
  9738. if (clspdelcnt > 0) {
  9739. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  9740. fSortSpclNo();
  9741. grd_clsphist.refresh();
  9742. }
  9743. grd_oprcphist.refresh();
  9744. }
  9745. }
  9746. //------------------------------------------------------------
  9747. // 원외처방 "행 삭제"
  9748. //------------------------------------------------------------
  9749. function fClopGridDeleteRow() {
  9750. var cloprow = grd_oprcphist.row;
  9751. if (cloprow < 1) {
  9752. return;
  9753. }
  9754. // 삭제할 원외처방 교부번호, 교부일자, 줄번호, 수가코드
  9755. if ( grd_oprcphist.valueMatrix(cloprow, grd_oprcphist.colRef("newmpsno")) == "" ) {
  9756. var mpsno = grd_oprcphist.valueMatrix(cloprow, grd_oprcphist.colRef("mpsno"));
  9757. } else {
  9758. var mpsno = grd_oprcphist.valueMatrix(cloprow, grd_oprcphist.colRef("newmpsno"));
  9759. }
  9760. var clopdd = grd_oprcphist.valueMatrix(cloprow, grd_oprcphist.colRef("clopdd"));
  9761. var clopno = grd_oprcphist.valueMatrix(cloprow, grd_oprcphist.colRef("clopno"));
  9762. var edilnno = grd_oprcphist.valueMatrix(cloprow, grd_oprcphist.colRef("edilnno"));
  9763. var snglcalcscorcd = grd_oprcphist.valueMatrix(cloprow, grd_oprcphist.colRef("snglcalcscorcd"));
  9764. var seqno = grd_oprcphist.valueMatrix(cloprow, grd_oprcphist.colRef("seqno"));
  9765. var spclspecyn = grd_oprcphist.valueMatrix(cloprow, grd_oprcphist.colRef("spclspecyn"));
  9766. var clspdelcnt = 0;
  9767. var ans = messageBox("[ 교부일자 : " + clopdd + ", 교부번호 : " + clopno + ", 줄번호 : " + edilnno + ", 수가코드 : " + snglcalcscorcd + " ] 삭제하시려면", "S001"); /// 예(Yes)\n아니면 아니오(No)
  9768. if (ans == 6) { // 6: yes
  9769. // 삭제사유 입력
  9770. var adjtresncd = model.getValue("/root/main/list7/clop["+ cloprow +"]/adjtresncd");
  9771. if (adjtresncd == "" || adjtresncd == "-") { // 심사(조정)사유가 입력되지 않은 경우
  9772. var cmbAdjtresncd = model.getValue("/root/hidden/list2/clodstat/cmbAdjtresncd");
  9773. if (cmbAdjtresncd == "" || cmbAdjtresncd == "-" ) {
  9774. model.resetInstanceNode("/root/hidden/sppiz01000");
  9775. model.setValue("/root/hidden/sppiz01000/cond/cdcls", "aftout");
  9776. model.setValue("/root/hidden/sppiz01000/cond/cdid", adjtresncd);
  9777. modal("SPPIZ01000", "1", "500", "450", "SPPIZ01000", "/root/hidden/sppiz01000/cond", "/root/hidden/sppiz01000/cond", "", ""); // SPPIZ01000_심사수정사유관리.xrw
  9778. adjtresncd = model.getValue("/root/hidden/sppiz01000/rslt/cdid");
  9779. } else {
  9780. adjtresncd = cmbAdjtresncd;
  9781. }
  9782. }
  9783. if (adjtresncd == "" || adjtresncd == "-") {
  9784. return;
  9785. } else {
  9786. model.setValue("/root/main/list7/clop["+ cloprow +"]/adjtresncd", adjtresncd);
  9787. }
  9788. // 1. 줄단위 원외처방 특정내역을 삭제한다.
  9789. if (spclspecyn) {
  9790. // 줄단위 특정내역이 입력된 경우
  9791. var nodeList = instance1.selectNodes("/root/main/list3/clsp");
  9792. for (var j = 1; j <= nodeList.length; j++) {
  9793. var spclmpsno = model.getValue("/root/main/list3/clsp["+ j +"]/mpsno"); // mpsno
  9794. var spclClodseqno = model.getValue("/root/main/list3/clsp["+ j +"]/clodseqno"); // seqno
  9795. var clsoyn = model.getValue("/root/main/list3/clsp["+ j +"]/clsoyn"); // 원외처방 특정내역 여부
  9796. if (spclmpsno == mpsno && spclClodseqno == seqno && clsoyn == "Y") {
  9797. var clspstatus = grd_clsphist.rowstatus(j);
  9798. if (clspstatus != 1 && clspstatus != 3) {
  9799. grd_clsphist.rowstatus(j) = 4; // 4 : delete 상태로 stat를 변경한다.
  9800. clspdelcnt++;
  9801. } else {
  9802. grd_clsphist.deleteRow(j, false);
  9803. }
  9804. }
  9805. }
  9806. }
  9807. // 2. 해당 원외처방을 삭제한다.
  9808. var clopstatus = grd_oprcphist.rowstatus(cloprow);
  9809. if (clopstatus != 1 && clopstatus != 3) {
  9810. grd_oprcphist.rowstatus(cloprow) = 4;
  9811. grd_oprcphist.rowHidden(cloprow) = true;
  9812. } else {
  9813. grd_oprcphist.deleteRow(cloprow, false);
  9814. }
  9815. if (clspdelcnt > 0) {
  9816. // 3. 특정내역 줄번호/특정코드에 따라 sorting 작업
  9817. fSortSpclNo();
  9818. grd_clsphist.refresh();
  9819. }
  9820. grd_oprcphist.refresh();
  9821. }
  9822. }
  9823. //------------------------------------------------------------
  9824. // 급여구분별 처방조회
  9825. //------------------------------------------------------------
  9826. function fClodSelectByPayflag() {
  9827. //fGetSelectedOrderData(); // 처방 조회부 - 재행/급여/항목구분 Radio 선택에 따라 처방 내역을 보여준다.
  9828. var payflag = model.getValue("/root/hidden/list2/clodsrch/selectedRdoPay");
  9829. // 처방Grid 배경색을 초기화한다.
  9830. grd_clodhist.rebuildStyle();
  9831. if (payflag == '0') {
  9832. model.copyNode("/root/main/list2", "/root/hidden/initclodlist/list2");
  9833. // 처방 항목 구분 및 선별심사 처방 색깔 구분
  9834. fSetOrderData();
  9835. grd_clodhist.refresh();
  9836. grd_clodhist.row = 1;
  9837. } else {
  9838. var datasave=false;
  9839. var clodupdtdata = getGridUpdateData(grd_clodhist);
  9840. if (clodupdtdata) {
  9841. var ans = messageBox("급여처방에 수정사항이 있습니다. 저장", "S001"); ///수정사항이 있습니다. 저장하시려면 예(Yes)\n아니면 아니오(No)
  9842. if (ans == 6) { // 6: yes, 7:no, 2:cancel
  9843. fSaveOutAftJudg("B"); // 저장
  9844. datasave = true;
  9845. }
  9846. else {
  9847. datasave = false;
  9848. }
  9849. }
  9850. // 수정사항을 저장하지 않은 경우 OR 수정사항이 없는 경우
  9851. if (datasave == false) {
  9852. var nodeList;
  9853. model.removeNodeset("/root/main/list2/clod");
  9854. // 급여구분에 따라 해당되는 처방만 보여준다.
  9855. if (payflag == '-') { // 전체
  9856. model.copyNode("/root/main/list2", "/root/main/list8");
  9857. } else { // 전액본인부담, 일반, 선택
  9858. nodeList = instance1.selectNodes("/root/main/list8/clod[payflag = " + payflag + "]");
  9859. for (var i=0; i < nodeList.length; i++ ) {
  9860. model.duplicate("/root/main/list2", nodeList.item(i));
  9861. }
  9862. }
  9863. // 처방 항목 구분 및 선별심사 처방 색깔 구분
  9864. fSetOrderData();
  9865. grd_clodhist.refresh();
  9866. grd_clodhist.row = 1;
  9867. }
  9868. }
  9869. }
  9870. // 처방별환자조회(계산)_수가코드
  9871. function fOpenSMPIS00500DetailSnglCD() {
  9872. pidfOpenSMPIS00500("O", "D", "SnglCD");
  9873. }
  9874. // 처방별환자조회(계산)_EDI코드
  9875. function fOpenSMPIS00500DetailEdicd() {
  9876. pidfOpenSMPIS00500("O", "D", "Edicd");
  9877. }
  9878. // 처방별환자조회(청구/삭감)
  9879. function fOpenSMPIS00600Detail() {
  9880. pidfOpenSMPIS00600("O", "D");
  9881. }
  9882. // -----------------------------
  9883. // 1회량 일괄수정
  9884. // -----------------------------
  9885. function fAllSetDrugqtyCol() {
  9886. if (grd_clodhist.selectedRows > 1) {
  9887. // 수정할 Row
  9888. var setrow = grd_clodhist.row;
  9889. // 수정할 1회량 저장
  9890. var drugqty = model.getValue("/root/main/list2/clod["+ setrow +"]/drugqty");
  9891. if (drugqty == "" || drugqty == "0") {
  9892. return;
  9893. }
  9894. var rowArray = new Array();
  9895. var rCnt = 0;
  9896. for (var i = 0; i < grd_clodhist.selectedRows; i++) {
  9897. var clodrow = grd_clodhist.selectedrow(i);
  9898. if (clodrow > 0) {
  9899. if (clodrow != setrow) {
  9900. rowArray[rCnt] = clodrow;
  9901. rCnt++;
  9902. model.setValue("/root/main/list2/clod["+ clodrow +"]/drugqty", drugqty);
  9903. model.setValue("/root/main/list2/clod["+ clodrow +"]/adjtresncd", "A") //조장사유 A:일투조정
  9904. grd_clodhist.rowStatus(clodrow) = 2; // update
  9905. }
  9906. }
  9907. }
  9908. for (var i = 0; i <= rCnt-1; i++) {
  9909. grd_clodhist.row = rowArray[i];
  9910. grd_clodhist.col = grd_clodhist.colRef("drugqty");
  9911. fSetTotDrugQtyAmt(); //1회량수정 후 계산
  9912. }
  9913. grd_clodhist.refresh();
  9914. }
  9915. }
  9916. // -----------------------------
  9917. // 횟수 일괄수정
  9918. // -----------------------------
  9919. function fAllSetTimsCol() {
  9920. if (grd_clodhist.selectedRows > 1) {
  9921. // 수정할 Row
  9922. var setrow = grd_clodhist.row;
  9923. // 현재 Row 횟수 저장
  9924. var tims = model.getValue("/root/main/list2/clod["+ setrow +"]/tims");
  9925. if (tims == "" || tims == "0") {
  9926. return;
  9927. }
  9928. var rowArray = new Array();
  9929. var rCnt = 0;
  9930. for (var i = 0; i < grd_clodhist.selectedRows; i++) {
  9931. var clodrow = grd_clodhist.selectedrow(i);
  9932. if (clodrow > 0) {
  9933. if (clodrow != setrow) {
  9934. rowArray[rCnt] = clodrow;
  9935. rCnt++;
  9936. model.setValue("/root/main/list2/clod["+ clodrow +"]/tims", tims);
  9937. model.setValue("/root/main/list2/clod["+ clodrow +"]/adjtresncd", "A") //조장사유 A:일투조정
  9938. grd_clodhist.rowStatus(clodrow) = 2; // update
  9939. }
  9940. }
  9941. }
  9942. for (var i = 0; i <= rCnt-1; i++) {
  9943. grd_clodhist.row = rowArray[i];
  9944. grd_clodhist.col = grd_clodhist.colRef("tims");
  9945. fSetTotDrugQtyAmt(); //횟수수정 후 계산
  9946. }
  9947. grd_clodhist.refresh();
  9948. }
  9949. }
  9950. // -----------------------------
  9951. // 일수 일괄수정
  9952. // -----------------------------
  9953. function fAllSetDaynoCol() {
  9954. if (grd_clodhist.selectedRows > 1) {
  9955. // 수정할 Row
  9956. var setrow = grd_clodhist.row;
  9957. // 현재 Row 횟수 저장
  9958. var dayno = model.getValue("/root/main/list2/clod["+ setrow +"]/dayno");
  9959. if (dayno == "" || dayno == "0") {
  9960. return;
  9961. }
  9962. var rowArray = new Array();
  9963. var rCnt = 0;
  9964. for (var i = 0; i < grd_clodhist.selectedRows; i++) {
  9965. var clodrow = grd_clodhist.selectedrow(i);
  9966. if (clodrow > 0) {
  9967. if (clodrow != setrow) {
  9968. rowArray[rCnt] = clodrow;
  9969. rCnt++;
  9970. model.setValue("/root/main/list2/clod["+ clodrow +"]/dayno", dayno);
  9971. model.setValue("/root/main/list2/clod["+ clodrow +"]/adjtresncd", "A") //조장사유 A:일투조정
  9972. grd_clodhist.rowStatus(clodrow) = 2; // update
  9973. var Sdayno = model.getValue("/root/main/list2/clod["+ clodrow +"]/dayno");
  9974. var dayno = parseInt(Sdayno);
  9975. var ordfromdd = model.getValue("/root/main/list2/clod["+ clodrow +"]/ordfromdd");
  9976. var ordtodd = model.getValue("/root/main/list2/clod["+ clodrow +"]/ordtodd");
  9977. var item1 = model.getValue("/root/main/list2/clod["+ clodrow +"]/item1");
  9978. // 진료개시일과 종료일 사이의 일자인지 체크
  9979. var clbsordfromdd = model.getValue("/root/main/item1/clbs/ordfromdd");
  9980. var clbsordtodd = model.getValue("/root/main/item1/clbs/ordtodd");
  9981. var insukind = model.getValue("/root/main/item1/clbs/insukindcd");
  9982. if (Sdayno == "" || dayno <= 0) {
  9983. }
  9984. else if (ordfromdd) {
  9985. var fromDate = ordfromdd.toDate();
  9986. var toDate = fromDate.getAddDate(dayno - 1, "D"); // (dateHelper.js) 특정일자의 상대일자(+/-)를 계산
  9987. ordtodd = toDate.getDateFormat("YYYY") + toDate.getDateFormat("MM") + toDate.getDateFormat("DD");
  9988. if (insukind == "41" && clbsordfromdd && clbsordtodd) {
  9989. if (ordtodd > clbsordtodd) {
  9990. model.setValue("/root/main/item1/clbs/ordtodd", ordtodd);
  9991. }
  9992. model.setValue("/root/main/list2/clod["+ row +"]/ordtodd", ordtodd);
  9993. }
  9994. }
  9995. }
  9996. }
  9997. }
  9998. ipt_ordtodd.refresh();
  9999. for (var i = 0; i <= rCnt-1; i++) {
  10000. grd_clodhist.row = rowArray[i];
  10001. grd_clodhist.col = grd_clodhist.colRef("dayno");
  10002. fSetTotDrugQtyAmt(); //일수수정 후 계산
  10003. }
  10004. grd_clodhist.refresh();
  10005. }
  10006. }
  10007. /* 대상자조회에서 대상자 선택하여 넘어올때 메세지 여부 확인, JHP. 2009.08.17 */
  10008. function fGetPatMsgYn(){
  10009. var pid = model.getValue("/root/main/item1/clbs/pid");
  10010. var orddd = model.getValue("/root/main/item1/clbs/indd");
  10011. var cretno = model.getValue("/root/main/item1/clbs/cretno");
  10012. // 1. 환자의 작성된 메세지를 조회한다.
  10013. if (pid && orddd && cretno) {
  10014. model.removeNodeset("/root/send/msg01");
  10015. model.makeValue("/root/send/msg01/pid" , pid);
  10016. model.makeValue("/root/send/msg01/orddd" , orddd);
  10017. model.makeValue("/root/send/msg01/cretno" , cretno);
  10018. model.makeValue("/root/send/msg01/mskind" , "M");
  10019. model.makeValue("/root/send/msg01/ordtype" , "O");
  10020. model.makeNode("/root/main/msglist/list");
  10021. if(submit("TRPIZ01903")){
  10022. var cnt = getNodesetCount("/root/main/msglist/list");
  10023. if(cnt > 0){
  10024. img_msg.visible = true;
  10025. }else{
  10026. img_msg.visible = false;
  10027. }
  10028. }else{
  10029. messageBox("환자 메세지 조회건수가 ","I011");
  10030. }
  10031. }
  10032. }
  10033. /* 환자기준 전송메세지작성, JHP. 2009.08.17 */
  10034. function fPatJudgPatMsgTrsm() {
  10035. if (!isNull(model.getvalue("/root/main/item1/clbs/pid"))) {
  10036. // 인스턴스생성
  10037. model.makeNode("/root/tmp/msgtrsm/info/instcd");
  10038. model.makeNode("/root/tmp/msgtrsm/info/msgwrtedd");
  10039. model.makeNode("/root/tmp/msgtrsm/info/msgwrteno");
  10040. model.makeNode("/root/tmp/msgtrsm/info/msgwrtehistno");
  10041. model.makeNode("/root/tmp/msgtrsm/info/histstat");
  10042. model.makeNode("/root/tmp/msgtrsm/info/pid");
  10043. model.makeNode("/root/tmp/msgtrsm/info/orddd");
  10044. model.makeNode("/root/tmp/msgtrsm/info/cretno");
  10045. model.makeNode("/root/tmp/msgtrsm/info/mskind");
  10046. model.makeNode("/root/tmp/msgtrsm/info/orddeptcd");
  10047. model.makeNode("/root/tmp/msgtrsm/info/orddrid");
  10048. model.makeNode("/root/tmp/msgtrsm/info/orddrnm");
  10049. model.makeNode("/root/tmp/msgtrsm/info/ordtype");
  10050. model.makeNode("/root/tmp/msgtrsm/info/kindflag");
  10051. model.makeNode("/root/tmp/msgtrsm/info/grupcalcscorcd");
  10052. model.makeNode("/root/tmp/msgtrsm/info/snglcalcscorcd");
  10053. model.makeNode("/root/tmp/msgtrsm/info/ordqty");
  10054. model.makeNode("/root/tmp/msgtrsm/info/ordtims");
  10055. model.makeNode("/root/tmp/msgtrsm/info/orddays");
  10056. model.makeNode("/root/tmp/msgtrsm/info/prcpdd");
  10057. model.makeNode("/root/tmp/msgtrsm/info/prcpno");
  10058. model.makeNode("/root/tmp/msgtrsm/info/prcppayflag");
  10059. model.makeNode("/root/tmp/msgtrsm/info/rgstrid");
  10060. model.makeNode("/root/tmp/msgtrsm/info/rgstdd");
  10061. model.makeNode("/root/tmp/msgtrsm/info/rgsttm");
  10062. model.makeNode("/root/tmp/msgtrsm/info/sendphone");
  10063. model.makeNode("/root/tmp/msgtrsm/info/anybodyyn");
  10064. model.makeNode("/root/tmp/msgtrsm/info/sendflag");
  10065. model.makeNode("/root/tmp/msgtrsm/info/senddate");
  10066. model.makeNode("/root/tmp/msgtrsm/info/sendid");
  10067. model.makeNode("/root/tmp/msgtrsm/info/deliveid");
  10068. model.makeNode("/root/tmp/msgtrsm/info/recvdate");
  10069. model.makeNode("/root/tmp/msgtrsm/info/recvid");
  10070. model.makeNode("/root/tmp/msgtrsm/info/recvcnfmyn");
  10071. model.makeNode("/root/tmp/msgtrsm/info/recvcnfmid");
  10072. model.makeNode("/root/tmp/msgtrsm/info/sendmsg");
  10073. model.makeNode("/root/tmp/msgtrsm/info/recvmsg");
  10074. model.makeNode("/root/tmp/msgtrsm/info/fstrgstrid");
  10075. model.makeNode("/root/tmp/msgtrsm/info/fstrgstdt");
  10076. model.makeNode("/root/tmp/msgtrsm/info/lastupdtrid");
  10077. model.makeNode("/root/tmp/msgtrsm/info/lastupdtdt");
  10078. // 값셋팅
  10079. // 세션값 받기
  10080. var sUserInfosS = getUserInfos();
  10081. sUserInfosS = sUserInfosS + "|";
  10082. var UserInfosS_Array = sUserInfosS.split("|");
  10083. var userid = UserInfosS_Array[0]; //사용자번호
  10084. var usernm = UserInfosS_Array[1]; //사용자이름
  10085. var posinstcd = UserInfosS_Array[6]; //근무지기관코드 2009.04.15
  10086. var posinstnm = UserInfosS_Array[7]; //근무지기관명 2009.04.15
  10087. var posdeptcd = UserInfosS_Array[4]; //소속부서코드
  10088. var posdeptnm = UserInfosS_Array[5]; //소속부서명
  10089. if (userid == null || userid == "" || userid == " " || userid == "-") userid = "pam";
  10090. model.setValue("/root/tmp/msgtrsm/info/instcd", ""); // chk
  10091. model.setValue("/root/tmp/msgtrsm/info/msgwrtedd", getCurrentDate()); // chk
  10092. model.setValue("/root/tmp/msgtrsm/info/msgwrteno", ""); // chk
  10093. model.setValue("/root/tmp/msgtrsm/info/msgwrtehistno", ""); // chk
  10094. model.setValue("/root/tmp/msgtrsm/info/histstat", "Y"); // chk
  10095. model.setValue("/root/tmp/msgtrsm/info/pid", model.getValue("/root/main/item1/clbs/pid")); // chk
  10096. model.setValue("/root/tmp/msgtrsm/info/orddd", model.getValue("/root/main/item1/clbs/indd")); // chk
  10097. model.setValue("/root/tmp/msgtrsm/info/cretno", model.getValue("/root/main/item1/clbs//cretno")); // chk
  10098. model.setValue("/root/tmp/msgtrsm/info/mskind", "M"); // 외래기본 주유형, chk
  10099. model.setValue("/root/tmp/msgtrsm/info/orddeptcd", model.getValue("/root/main/item1/clbs/orddeptcd")); // chk
  10100. var drid = model.getValue("/root/main/item1/clbs/orddrid")
  10101. var drnm = model.getValue("/root/init/orddrid2/orddridlist[cd = '" + drid + "']/nm");
  10102. model.setValue("/root/tmp/msgtrsm/info/orddrid", model.getValue("/root/main/item1/clbs/orddrid")); // chk, TABLE에 적용안함.(값만확인)
  10103. model.setValue("/root/tmp/msgtrsm/info/orddrnm", drnm); // chk, TABLE에 적용안함.(값만확인)
  10104. model.setValue("/root/tmp/msgtrsm/info/ordtype", "O"); // 외래기본 'O', chk
  10105. model.setValue("/root/tmp/msgtrsm/info/kindflag", "P"); // 환자기준 'P', chk
  10106. model.setValue("/root/tmp/msgtrsm/info/grupcalcscorcd", "-"); //model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/grupcalcscorcd")); chk
  10107. model.setValue("/root/tmp/msgtrsm/info/snglcalcscorcd", "-"); //model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/snglcalcscorcd")); chk
  10108. model.setValue("/root/tmp/msgtrsm/info/ordqty", 0); //model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/ordqty")); chk
  10109. model.setValue("/root/tmp/msgtrsm/info/ordtims", 0); //model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/ordtims")); chk
  10110. model.setValue("/root/tmp/msgtrsm/info/orddays", 0); //model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/orddays")); chk
  10111. model.setValue("/root/tmp/msgtrsm/info/prcpdd", "-"); //model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/prcpdd")); chk
  10112. model.setValue("/root/tmp/msgtrsm/info/prcpno", 0); //model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/prcpno")); chk
  10113. model.setValue("/root/tmp/msgtrsm/info/prcppayflag", "-"); //model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/prcppayflag")); chk
  10114. model.setValue("/root/tmp/msgtrsm/info/rgstrid", "-"); // 서버단에서 조회하여 가져와야함. chk
  10115. model.setValue("/root/tmp/msgtrsm/info/rgstdd", "-"); // 서버단에서 조회하여 가져와야함. chk
  10116. model.setValue("/root/tmp/msgtrsm/info/rgsttm", "-"); // 서버단에서 조회하여 가져와야함. chk
  10117. model.setValue("/root/tmp/msgtrsm/info/sendphone", ""); // 서버단에서 조회하여 가져와야함. chk
  10118. model.setValue("/root/tmp/msgtrsm/info/anybodyyn", "N"); // 누구나 기본 'N', chk
  10119. model.setValue("/root/tmp/msgtrsm/info/sendflag", "O"); // 진료기본 'O', chk
  10120. model.setValue("/root/tmp/msgtrsm/info/senddate", ""); //쿼리에서 timestamp chk
  10121. model.setValue("/root/tmp/msgtrsm/info/sendid", userid); //chk
  10122. model.setValue("/root/tmp/msgtrsm/info/deliveid", "-"); // 화면에서선택. chk
  10123. model.setValue("/root/tmp/msgtrsm/info/recvdate", ""); // chk
  10124. model.setValue("/root/tmp/msgtrsm/info/recvid", ""); // chk
  10125. model.setValue("/root/tmp/msgtrsm/info/recvcnfmyn", "N"); // 기본 비연속 'N', chk
  10126. model.setValue("/root/tmp/msgtrsm/info/recvcnfmid", userid); //chk
  10127. //var sendmsgvalue1 = model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/snglcalcscorcd");
  10128. //var sendmsgvalue2 = model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/hngnm");
  10129. //var sendmsgvalue = sendmsgvalue1 + ', ' + sendmsgvalue2;
  10130. model.setValue("/root/tmp/msgtrsm/info/sendmsg", ""); //sendmsgvalue); // 기본 처방코드, 처방명값가지고 시작. chk
  10131. model.setValue("/root/tmp/msgtrsm/info/recvmsg", ""); // chk
  10132. model.setValue("/root/tmp/msgtrsm/info/fstrgstrid", ""); // chk
  10133. model.setValue("/root/tmp/msgtrsm/info/fstrgstdt", ""); // chk
  10134. model.setValue("/root/tmp/msgtrsm/info/lastupdtrid", ""); // chk
  10135. model.setValue("/root/tmp/msgtrsm/info/lastupdtdt", ""); // chk
  10136. } else {
  10137. messageBox("기본정보가 ", "I004");
  10138. }
  10139. model.refresh();
  10140. modal("SPPIZ01900_심사환자메세지작성", "", "400", "300", "", "/root/tmp/msgtrsm/info", "/root/main/patinfo");
  10141. model.removenode("/root/tmp/msgtrsm");
  10142. }
  10143. /* 처방기준 전송메세지작성, JHP. 2009.08.17 */
  10144. function fOrderJudgPatMsgTrsm() {
  10145. if (!isNull(model.getvalue("/root/main/item1/clbs/pid"))) {
  10146. // 인스턴스생성
  10147. model.makeNode("/root/tmp/msgtrsm/info/instcd");
  10148. model.makeNode("/root/tmp/msgtrsm/info/msgwrtedd");
  10149. model.makeNode("/root/tmp/msgtrsm/info/msgwrteno");
  10150. model.makeNode("/root/tmp/msgtrsm/info/msgwrtehistno");
  10151. model.makeNode("/root/tmp/msgtrsm/info/histstat");
  10152. model.makeNode("/root/tmp/msgtrsm/info/pid");
  10153. model.makeNode("/root/tmp/msgtrsm/info/orddd");
  10154. model.makeNode("/root/tmp/msgtrsm/info/cretno");
  10155. model.makeNode("/root/tmp/msgtrsm/info/mskind");
  10156. model.makeNode("/root/tmp/msgtrsm/info/orddeptcd");
  10157. model.makeNode("/root/tmp/msgtrsm/info/orddrid");
  10158. model.makeNode("/root/tmp/msgtrsm/info/orddrnm");
  10159. model.makeNode("/root/tmp/msgtrsm/info/ordtype");
  10160. model.makeNode("/root/tmp/msgtrsm/info/kindflag");
  10161. model.makeNode("/root/tmp/msgtrsm/info/grupcalcscorcd");
  10162. model.makeNode("/root/tmp/msgtrsm/info/snglcalcscorcd");
  10163. model.makeNode("/root/tmp/msgtrsm/info/ordqty");
  10164. model.makeNode("/root/tmp/msgtrsm/info/ordtims");
  10165. model.makeNode("/root/tmp/msgtrsm/info/orddays");
  10166. model.makeNode("/root/tmp/msgtrsm/info/prcpdd");
  10167. model.makeNode("/root/tmp/msgtrsm/info/prcpno");
  10168. model.makeNode("/root/tmp/msgtrsm/info/prcppayflag");
  10169. model.makeNode("/root/tmp/msgtrsm/info/rgstrid");
  10170. model.makeNode("/root/tmp/msgtrsm/info/rgstdd");
  10171. model.makeNode("/root/tmp/msgtrsm/info/rgsttm");
  10172. model.makeNode("/root/tmp/msgtrsm/info/sendphone");
  10173. model.makeNode("/root/tmp/msgtrsm/info/anybodyyn");
  10174. model.makeNode("/root/tmp/msgtrsm/info/sendflag");
  10175. model.makeNode("/root/tmp/msgtrsm/info/senddate");
  10176. model.makeNode("/root/tmp/msgtrsm/info/sendid");
  10177. model.makeNode("/root/tmp/msgtrsm/info/deliveid");
  10178. model.makeNode("/root/tmp/msgtrsm/info/recvdate");
  10179. model.makeNode("/root/tmp/msgtrsm/info/recvid");
  10180. model.makeNode("/root/tmp/msgtrsm/info/recvcnfmyn");
  10181. model.makeNode("/root/tmp/msgtrsm/info/recvcnfmid");
  10182. model.makeNode("/root/tmp/msgtrsm/info/sendmsg");
  10183. model.makeNode("/root/tmp/msgtrsm/info/recvmsg");
  10184. model.makeNode("/root/tmp/msgtrsm/info/fstrgstrid");
  10185. model.makeNode("/root/tmp/msgtrsm/info/fstrgstdt");
  10186. model.makeNode("/root/tmp/msgtrsm/info/lastupdtrid");
  10187. model.makeNode("/root/tmp/msgtrsm/info/lastupdtdt");
  10188. // 값셋팅
  10189. // 처방이므로 처방row선택여부 확인
  10190. if(grd_clodhist.row <= 0){
  10191. return;
  10192. }
  10193. // 세션값 받기
  10194. var sUserInfosS = getUserInfos();
  10195. sUserInfosS = sUserInfosS + "|";
  10196. var UserInfosS_Array = sUserInfosS.split("|");
  10197. var userid = UserInfosS_Array[0]; //사용자번호
  10198. var usernm = UserInfosS_Array[1]; //사용자이름
  10199. var posinstcd = UserInfosS_Array[6]; //근무지기관코드 2009.04.15
  10200. var posinstnm = UserInfosS_Array[7]; //근무지기관명 2009.04.15
  10201. var posdeptcd = UserInfosS_Array[4]; //소속부서코드
  10202. var posdeptnm = UserInfosS_Array[5]; //소속부서명
  10203. if (userid == null || userid == "" || userid == " " || userid == "-") userid = "pam";
  10204. model.setValue("/root/tmp/msgtrsm/info/instcd", ""); // chk
  10205. model.setValue("/root/tmp/msgtrsm/info/msgwrtedd", getCurrentDate()); // chk
  10206. model.setValue("/root/tmp/msgtrsm/info/msgwrteno", ""); // chk
  10207. model.setValue("/root/tmp/msgtrsm/info/msgwrtehistno", ""); // chk
  10208. model.setValue("/root/tmp/msgtrsm/info/histstat", "Y"); // chk
  10209. model.setValue("/root/tmp/msgtrsm/info/pid", model.getValue("/root/main/item1/clbs/pid")); // chk
  10210. model.setValue("/root/tmp/msgtrsm/info/orddd", model.getValue("/root/main/item1/clbs/indd")); // chk
  10211. model.setValue("/root/tmp/msgtrsm/info/cretno", model.getValue("/root/main/item1/clbs/cretno")); // chk
  10212. model.setValue("/root/tmp/msgtrsm/info/mskind", "M"); // 외래기본 주유형, chk
  10213. model.setValue("/root/tmp/msgtrsm/info/orddeptcd", model.getValue("/root/main/item1/clbs/orddeptcd")); // chk
  10214. var drid = model.getValue("/root/main/item1/clbs/orddrid")
  10215. var drnm = model.getValue("/root/init/orddrid2/orddridlist[cd = '" + drid + "']/nm");
  10216. model.setValue("/root/tmp/msgtrsm/info/orddrid", model.getValue("/root/main/item1/clbs/orddrid")); // chk, TABLE에 적용안함.(값만확인)
  10217. model.setValue("/root/tmp/msgtrsm/info/orddrnm", drnm); // chk, TABLE에 적용안함.(값만확인)
  10218. model.setValue("/root/tmp/msgtrsm/info/ordtype", "O"); // 외래기본 'O', chk
  10219. model.setValue("/root/tmp/msgtrsm/info/kindflag", "O"); // 처방기준 'O', chk
  10220. model.setValue("/root/tmp/msgtrsm/info/grupcalcscorcd", model.getvalue("/root/main/list2/clod[" + grd_clodhist.row + "]/grupcalcscorcd")); //chk
  10221. model.setValue("/root/tmp/msgtrsm/info/snglcalcscorcd", model.getvalue("/root/main/list2/clod[" + grd_clodhist.row + "]/snglcalcscorcd")); //chk
  10222. model.setValue("/root/tmp/msgtrsm/info/ordqty", model.getvalue("/root/main/list2/clod[" + grd_clodhist.row + "]/drugqty")); //chk
  10223. model.setValue("/root/tmp/msgtrsm/info/ordtims", model.getvalue("/root/main/list2/clod[" + grd_clodhist.row + "]/tims")); //chk
  10224. model.setValue("/root/tmp/msgtrsm/info/orddays", model.getvalue("/root/main/list2/clod[" + grd_clodhist.row + "]/dayno")); //chk
  10225. model.setValue("/root/tmp/msgtrsm/info/prcpdd", ""); //chk, 화면에 미존재 서버단에서 조회하여 가져와야함.
  10226. model.setValue("/root/tmp/msgtrsm/info/prcpno", ""); //chk, 화면에 미존재 서버단에서 조회하여 가져와야함.
  10227. model.setValue("/root/tmp/msgtrsm/info/prcppayflag", model.getvalue("/root/main/list2/clod[" + grd_clodhist.row + "]/payflag")); //chk
  10228. model.setValue("/root/tmp/msgtrsm/info/rgstrid", "-"); // 서버단에서 조회하여 가져와야함. chk
  10229. model.setValue("/root/tmp/msgtrsm/info/rgstdd", "-"); // 서버단에서 조회하여 가져와야함. chk
  10230. model.setValue("/root/tmp/msgtrsm/info/rgsttm", "-"); // 서버단에서 조회하여 가져와야함. chk
  10231. model.setValue("/root/tmp/msgtrsm/info/sendphone", ""); // 서버단에서 조회하여 가져와야함. chk
  10232. model.setValue("/root/tmp/msgtrsm/info/anybodyyn", "N"); // 누구나 기본 'N', chk
  10233. model.setValue("/root/tmp/msgtrsm/info/sendflag", "O"); // 진료기본 'O', chk
  10234. model.setValue("/root/tmp/msgtrsm/info/senddate", ""); //쿼리에서 timestamp chk
  10235. model.setValue("/root/tmp/msgtrsm/info/sendid", userid); //chk
  10236. model.setValue("/root/tmp/msgtrsm/info/deliveid", "-"); // 화면에서선택. chk
  10237. model.setValue("/root/tmp/msgtrsm/info/recvdate", ""); // chk
  10238. model.setValue("/root/tmp/msgtrsm/info/recvid", ""); // chk
  10239. model.setValue("/root/tmp/msgtrsm/info/recvcnfmyn", "N"); // 기본 비연속 'N', chk
  10240. model.setValue("/root/tmp/msgtrsm/info/recvcnfmid", userid); //chk
  10241. //var sendmsgvalue1 = model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/snglcalcscorcd");
  10242. //var sendmsgvalue2 = model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/hngnm");
  10243. //var sendmsgvalue = sendmsgvalue1 + ', ' + sendmsgvalue2;
  10244. model.setValue("/root/tmp/msgtrsm/info/sendmsg", ""); // 기본 처방코드, 처방명값가지고 시작. chk -> 변경 화면에서 그룹코드 명 조회하여 넣어줌. chk
  10245. model.setValue("/root/tmp/msgtrsm/info/recvmsg", ""); // chk
  10246. model.setValue("/root/tmp/msgtrsm/info/fstrgstrid", ""); // chk
  10247. model.setValue("/root/tmp/msgtrsm/info/fstrgstdt", ""); // chk
  10248. model.setValue("/root/tmp/msgtrsm/info/lastupdtrid", ""); // chk
  10249. model.setValue("/root/tmp/msgtrsm/info/lastupdtdt", ""); // chk
  10250. } else {
  10251. messageBox("기본정보가 ", "I004");
  10252. }
  10253. model.refresh();
  10254. modal("SPPIZ01900_심사환자메세지작성", "", "400", "300", "", "/root/tmp/msgtrsm/info", "/root/main/patinfo");
  10255. model.removenode("/root/tmp/msgtrsm");
  10256. }
  10257. // 환자 전체 메세지 내용 조회하여 하나씩 보기.JHP. 2009.08.17
  10258. function fJudgPatMsgTrsmRef(){
  10259. model.makeNode("/root/tmp/msgtrsm/info/refyn");
  10260. model.makeNode("/root/tmp/msgtrsm/info/pid");
  10261. model.makeNode("/root/tmp/msgtrsm/info/orddd");
  10262. model.makeNode("/root/tmp/msgtrsm/info/cretno");
  10263. model.makeNode("/root/tmp/msgtrsm/info/mskind");
  10264. model.makeNode("/root/tmp/msgtrsm/info/orddeptcd");
  10265. model.makeNode("/root/tmp/msgtrsm/info/orddrid");
  10266. model.makeNode("/root/tmp/msgtrsm/info/ordtype");
  10267. model.setValue("/root/tmp/msgtrsm/info/refyn","Y");
  10268. model.setValue("/root/tmp/msgtrsm/info/pid", model.getValue("/root/main/item1/clbs/pid")); // chk
  10269. model.setValue("/root/tmp/msgtrsm/info/orddd", model.getValue("/root/main/item1/clbs/indd")); // chk
  10270. model.setValue("/root/tmp/msgtrsm/info/cretno", model.getValue("/root/main/item1/clbs/cretno")); // chk
  10271. model.setValue("/root/tmp/msgtrsm/info/mskind", "M"); // 외래기본 주유형, chk
  10272. model.setValue("/root/tmp/msgtrsm/info/orddeptcd", model.getValue("/root/main/item1/clbs/orddeptcd")); // chk
  10273. model.setValue("/root/tmp/msgtrsm/info/orddrid", model.getValue("/root/main/item1/clbs/orddrid")); // chk, TABLE에 적용안함.(값만확인)
  10274. model.setValue("/root/tmp/msgtrsm/info/ordtype", "O"); // 외래기본 'O', chk
  10275. modal("SMPIJ02600_메세지현황", "", "100", "100", "", "/root/tmp/msgtrsm/info", "/root/init/openchk");
  10276. model.removeNode("/root/tmp/msgtrsm");
  10277. }
  10278. // 20091210 원외처방 그리드 사이즈 조정
  10279. function fClopSizeChange(tSize) {
  10280. var clop_rows = 0;
  10281. var selectedRdoPay = "";
  10282. var totclopcnt = "";
  10283. if ( tSize == "CHANGE" ) {
  10284. if ( gClopSize == "MAX" ) {
  10285. tSize = "MIN";
  10286. } else if ( gClopSize == "AUTO" ) {
  10287. tSize = "MAX";
  10288. } else {
  10289. tSize = "AUTO";
  10290. }
  10291. }
  10292. // 20091217 그냥 사이즈 고정시켜달라고 하여 삭제
  10293. clop_rows = 6;
  10294. /*
  10295. if ( tSize == "AUTO" ) {
  10296. selectedRdoPay = model.getValue("/root/hidden/list7/clop/selectedRdoPay");
  10297. totclopcnt = getNodesetCount("/root/main/list7/clop");
  10298. if ( selectedRdoPay == "0" ) {
  10299. for (var j = 1; j <= totclopcnt ; j++) {
  10300. if (model.getValue("/root/main/list7/clop["+ j +"]/payflag") == "0") {
  10301. clop_rows = clop_rows + 1;
  10302. }
  10303. }
  10304. } else if ( selectedRdoPay == "1" ) {
  10305. for (var j = 1; j <= totclopcnt ; j++) {
  10306. if (model.getValue("/root/main/list7/clop["+ j +"]/payflag") == "0") {
  10307. clop_rows = clop_rows + 1;
  10308. }
  10309. }
  10310. } else {
  10311. clop_rows = totclopcnt;
  10312. }
  10313. //clop_rows = grd_oprcphist.rows - 1;
  10314. if ( clop_rows < 3 ) {
  10315. clop_rows = 2;
  10316. } else if ( clop_rows > 6 ) {
  10317. clop_rows = 6;
  10318. }
  10319. }
  10320. */
  10321. if ( tSize == "MAX" ) {
  10322. grd_clodhist.attribute("height") = "90"; // 처방Grid 타이틀 32 + data 2줄 23*2 + 스크롤 18 + 2 = 98
  10323. grp_clop.attribute("top") = parseInt(cap_clod.attribute("top"))
  10324. + parseInt(grd_clodhist.attribute("height")) + 25;
  10325. grp_clop.attribute("height") = parseInt(grp_clodhist.attribute("height"))
  10326. - parseInt(grd_clodhist.attribute("top"))
  10327. - parseInt(grd_clodhist.attribute("height")) - 6;
  10328. grd_oprcphist.attribute("height") = parseInt(grp_clop.attribute("height")) - 25;
  10329. } else if (tSize == "MIN") {
  10330. grp_clop.attribute("top") = "541";
  10331. grp_clop.attribute("height") = "96";
  10332. grd_oprcphist.attribute("height") = parseInt(grp_clop.attribute("height")) - 25;
  10333. grd_clodhist.attribute("height") = parseInt(grp_clodhist.attribute("height"))
  10334. - parseInt(grd_clodhist.attribute("top"))
  10335. - parseInt(grp_clop.attribute("height")) - 6;
  10336. } else if (tSize == "AUTO") {
  10337. grp_clop.attribute("top") = 541 - ((clop_rows-2)*25);
  10338. grp_clop.attribute("height") = 96 + ((clop_rows-2)*25);
  10339. grd_oprcphist.attribute("height") = parseInt(grp_clop.attribute("height")) - 25;
  10340. grd_clodhist.attribute("height") = parseInt(grp_clodhist.attribute("height"))
  10341. - parseInt(grd_clodhist.attribute("top"))
  10342. - parseInt(grp_clop.attribute("height")) - 6;
  10343. }
  10344. gClopSize = tSize;
  10345. }
  10346. // 상병 및 심사메모복사
  10347. function fCopyDiagMemo(imode) {
  10348. /*
  10349. <col checkvalue="Y,N" ref="chk" type="checkbox"/>
  10350. */
  10351. var selcnt = 0;
  10352. var ans = "";
  10353. var smsg = "";
  10354. model.resetInstanceNode("/root/send/item9/copylist");
  10355. for (var i=1; i < grd_predocu.rows; i++) {
  10356. if (model.getValue("/root/main/list4/clbs[ " + i + "]/chk") == "Y") {
  10357. selcnt++;
  10358. model.makeValue("/root/send/item9/copylist[" + selcnt + "]/orgclamym" ,model.getValue("/root/main/item1/clbs/clamym"));
  10359. model.makeValue("/root/send/item9/copylist[" + selcnt + "]/orgclamdg" ,model.getValue("/root/main/item1/clbs/clamdg"));
  10360. model.makeValue("/root/send/item9/copylist[" + selcnt + "]/orgpid" ,model.getValue("/root/main/item1/clbs/pid"));
  10361. model.makeValue("/root/send/item9/copylist[" + selcnt + "]/orgpidsn" ,model.getValue("/root/main/item1/clbs/pidsn"));
  10362. model.makeValue("/root/send/item9/copylist[" + selcnt + "]/mode" ,imode);
  10363. model.makeValue("/root/send/item9/copylist[" + selcnt + "]/targetclamym",model.getValue("/root/main/list4/clbs[" + i + "]/clamym"));
  10364. model.makeValue("/root/send/item9/copylist[" + selcnt + "]/targetclamdg",model.getValue("/root/main/list4/clbs[" + i + "]/clamdg"));
  10365. model.makeValue("/root/send/item9/copylist[" + selcnt + "]/targetpid" ,model.getValue("/root/main/item1/clbs/pid"));
  10366. model.makeValue("/root/send/item9/copylist[" + selcnt + "]/targetpidsn" ,model.getValue("/root/main/list4/clbs[" + i + "]/pidsn"));
  10367. }
  10368. }
  10369. if ( selcnt == 0 ) {
  10370. messageBox("선택된 복사대상 명세서가 ", "I004"); ///선택된 복사대상 명세서가 없습니다.
  10371. return false;
  10372. }
  10373. // 사용자 최종확인
  10374. smsg = "선택된 " + selcnt + "개의 명세서에 ";
  10375. if ( imode == "1" ) {
  10376. smsg = smsg + "상병을 복사합니다.";
  10377. } else if ( imode == "2" ) {
  10378. smsg = smsg + "청구메모를 복사합니다.";
  10379. } else if ( imode == "3" ) {
  10380. smsg = smsg + "상병과 청구메모를 복사합니다.";
  10381. } else {
  10382. messageBox("error","");
  10383. return false;
  10384. }
  10385. smsg = smsg + " \n\n 계속 진행"
  10386. ans = messageBox(smsg, "S001");
  10387. if (ans != 6) { // 6: yes
  10388. return false;
  10389. }
  10390. if ( !submit("TXPID20305") ) { return false; }
  10391. return true;
  10392. }
  10393. // 20100405 원외처방 수정 이벤트 추가
  10394. // xrw 에 있는것 옮긴후 작업
  10395. function fClopOnEndEdit() {
  10396. var row = grd_oprcphist.row;
  10397. var col = grd_oprcphist.col;
  10398. // 수정된내역 없으면 종료
  10399. if ( model.getValue("/root/hidden/list7/clop/oldclopdd") == model.getValue("/root/main/list7/clop["+ row +"]/clopdd")
  10400. && model.getValue("/root/hidden/list7/clop/oldclopno") == model.getValue("/root/main/list7/clop["+ row +"]/clopno")
  10401. && model.getValue("/root/hidden/list7/clop/oldsnglcalcscorcd") == model.getValue("/root/main/list7/clop["+ row +"]/snglcalcscorcd")
  10402. && model.getValue("/root/hidden/list7/clop/oldedicd") == model.getValue("/root/main/list7/clop["+ row +"]/edicd")
  10403. && model.getValue("/root/hidden/list7/clop/oldedidrugqty") == model.getValue("/root/main/list7/clop["+ row +"]/edidrugqty")
  10404. && model.getValue("/root/hidden/list7/clop/olddrugtims") == model.getValue("/root/main/list7/clop["+ row +"]/drugtims")
  10405. && model.getValue("/root/hidden/list7/clop/oldedidrugdayno") == model.getValue("/root/main/list7/clop["+ row +"]/edidrugdayno")
  10406. ) {
  10407. grd_oprcphist.rowstatus(row) = model.getValue("/root/hidden/list7/clop/oldrowstatus"); // 수정상태
  10408. return;
  10409. }
  10410. var adjtresncd = model.getValue("/root/main/list7/clop["+ row +"]/adjtresncd");
  10411. if (adjtresncd == "" || adjtresncd == "-") { // 심사(조정)사유가 입력되지 않은 경우
  10412. var cmbAdjtresncd = model.getValue("/root/hidden/list2/clodstat/cmbAdjtresncd");
  10413. if (cmbAdjtresncd == "" || cmbAdjtresncd == "-" ) {
  10414. model.resetInstanceNode("/root/hidden/sppiz01000");
  10415. model.setValue("/root/hidden/sppiz01000/cond/cdcls", "aftout");
  10416. model.setValue("/root/hidden/sppiz01000/cond/cdid", adjtresncd);
  10417. modal("SPPIZ01000", "1", "500", "450", "SPPIZ01000", "/root/hidden/sppiz01000/cond", "/root/hidden/sppiz01000/cond", "", ""); // SPPIZ01000_심사수정사유관리.xrw
  10418. adjtresncd = model.getValue("/root/hidden/sppiz01000/rslt/cdid");
  10419. } else {
  10420. adjtresncd = cmbAdjtresncd;
  10421. }
  10422. }
  10423. if (adjtresncd == "" || adjtresncd == "-") {
  10424. // 사유 없으면 원상복귀
  10425. model.setValue("/root/main/list7/clop["+ row +"]/clopdd", model.getValue("/root/hidden/list7/clop/oldclopdd")); // 교부일자
  10426. model.setValue("/root/main/list7/clop["+ row +"]/clopno", model.getValue("/root/hidden/list7/clop/oldclopno")); // 교부번호
  10427. model.setValue("/root/main/list7/clop["+ row +"]/oldsnglcalcscorcd", model.getValue("/root/hidden/list7/clop/snglcalcscorcd")); // 수가코드
  10428. model.setValue("/root/main/list7/clop["+ row +"]/oldedicd", model.getValue("/root/hidden/list7/clop/edicd")); // EDI코드
  10429. model.setValue("/root/main/list7/clop["+ row +"]/edidrugqty", model.getValue("/root/hidden/list7/clop/oldedidrugqty")); // edi수량
  10430. model.setValue("/root/main/list7/clop["+ row +"]/drugtims", model.getValue("/root/hidden/list7/clop/olddrugtims")); // 횟수
  10431. model.setValue("/root/main/list7/clop["+ row +"]/edidrugdayno", model.getValue("/root/hidden/list7/clop/oldedidrugdayno")); // edi일수
  10432. grd_oprcphist.rowstatus(row) = model.getValue("/root/hidden/list7/clop/oldrowstatus"); // 수정상태
  10433. return;
  10434. }
  10435. var newclopdd = model.getValue("/root/main/list7/clop["+ row +"]/clopdd");
  10436. var newclopno = model.getValue("/root/main/list7/clop["+ row +"]/clopno");
  10437. var curmpsno = model.getValue("/root/main/list7/clop["+ row +"]/mpsno");
  10438. var newmpsno = newclopdd+newclopno;
  10439. // 교부일자
  10440. if (col == grd_oprcphist.colRef("clopdd")) {
  10441. if ( !isValidDateTime(newclopdd) || curmpsno == newmpsno ) { // (dateHelper.) 유효한 날짜, 시간 인지 점검
  10442. model.setValue("/root/main/list7/clop["+ row +"]/clopdd", model.getValue("/root/hidden/list7/clop/oldclopdd"));
  10443. grd_oprcphist.rowstatus(row) = model.getValue("/root/hidden/list7/clop/oldrowstatus");
  10444. } else {
  10445. for (var i = 1; i < grd_oprcphist.rows; i++) {
  10446. var mpsno = model.getValue("/root/main/list7/clop["+ i +"]/mpsno");
  10447. if (curmpsno == mpsno) { // 수정된 row와 처방전 교부번호가 같은 경우
  10448. model.setValue("/root/main/list7/clop["+ i +"]/clopdd", newclopdd);
  10449. model.setValue("/root/main/list7/clop["+ i +"]/newmpsno", newmpsno);
  10450. model.setValue("/root/main/list7/clop["+ i +"]/adjtresncd", adjtresncd); // 조정사유
  10451. //if ( model.getValue("/root/hidden/list7/clop/oldrowstatus") == 0 ) {
  10452. if ( grd_oprcphist.rowstatus(i) == 0 ) {
  10453. grd_oprcphist.rowstatus(i) = 2;
  10454. }
  10455. }
  10456. }
  10457. // 원외처방 특정내역이 있는 경우
  10458. var clsoList = instance1.selectNodes("/root/main/list3/clsp");
  10459. for (var j = 1; j <= clsoList.length; j++) {
  10460. var spclmpsno = model.getValue("/root/main/list3/clsp["+ j +"]/mpsno"); // mpsno
  10461. var clsoyn = model.getValue("/root/main/list3/clsp["+ j +"]/clsoyn"); // 원외처방 특정내역 여부
  10462. if (curmpsno == mpsno && clsoyn == "Y") {
  10463. model.setValue("/root/main/list3/clsp["+ j +"]/mpsno",newmpsno);
  10464. if ( grd_clsphist.rowstatus(j) == 0 ) {
  10465. grd_clsphist.rowstatus(j) = 2;
  10466. }
  10467. }
  10468. }
  10469. }
  10470. }
  10471. // 교부번호
  10472. else if (col == grd_oprcphist.colRef("clopno")) {
  10473. if ( newclopno == "" || curmpsno == newmpsno ) {
  10474. model.setValue("/root/main/list7/clop["+ row +"]/clopno", model.getValue("/root/hidden/list7/clop/oldclopno"));
  10475. grd_oprcphist.rowstatus(row) = model.getValue("/root/hidden/list7/clop/oldrowstatus");
  10476. } else {
  10477. for (var i = 1; i < grd_oprcphist.rows; i++) {
  10478. var mpsno = model.getValue("/root/main/list7/clop["+ i +"]/mpsno");
  10479. if (curmpsno == mpsno) { // 수정된 row와 처방전 교부번호가 같은 경우
  10480. model.setValue("/root/main/list7/clop["+ i +"]/clopno", newclopno);
  10481. model.setValue("/root/main/list7/clop["+ i +"]/newmpsno", newmpsno);
  10482. model.setValue("/root/main/list7/clop["+ i +"]/adjtresncd", adjtresncd); // 조정사유
  10483. //if ( model.getValue("/root/hidden/list7/clop/oldrowstatus") == 0 ) {
  10484. if ( grd_oprcphist.rowstatus(i) == 0 ) {
  10485. grd_oprcphist.rowstatus(i) = 2;
  10486. }
  10487. }
  10488. }
  10489. // 원외처방 특정내역이 있는 경우
  10490. var clsoList = instance1.selectNodes("/root/main/list3/clsp");
  10491. for (var j = 1; j <= clsoList.length; j++) {
  10492. var spclmpsno = model.getValue("/root/main/list3/clsp["+ j +"]/mpsno"); // mpsno
  10493. var clsoyn = model.getValue("/root/main/list3/clsp["+ j +"]/clsoyn"); // 원외처방 특정내역 여부
  10494. if (curmpsno == mpsno && clsoyn == "Y") {
  10495. model.setValue("/root/main/list3/clsp["+ j +"]/mpsno",newmpsno);
  10496. if ( grd_clsphist.rowstatus(j) == 0 ) {
  10497. grd_clsphist.rowstatus(j) = 2;
  10498. }
  10499. }
  10500. }
  10501. }
  10502. }
  10503. // 수가코드, EDI코드
  10504. else if (col == grd_oprcphist.colRef("snglcalcscorcd") || col == grd_oprcphist.colRef("edicd") ) {
  10505. fSetSrchOutCalcScorCd(adjtresncd);
  10506. }
  10507. // edi수량
  10508. else if (col == grd_oprcphist.colRef("edidrugqty")) {
  10509. var oldedidrugqty = model.getValue("/root/hidden/list7/clop/oldedidrugqty");
  10510. var edidrugqty = model.getValue("/root/main/list7/clop["+ row +"]/edidrugqty");
  10511. if ( edidrugqty == "" || edidrugqty == "0" ) {
  10512. model.setValue("/root/main/list7/clop["+ row +"]/edidrugqty", oldedidrugqty);
  10513. grd_oprcphist.rowstatus(row) = model.getValue("/root/hidden/list7/clop/oldrowstatus");
  10514. } else {
  10515. model.setValue("/root/main/list7/clop["+ row +"]/drugqty", edidrugqty); // 수량 같이 변경
  10516. model.setValue("/root/main/list7/clop["+ row +"]/adjtresncd", adjtresncd); // 조정사유
  10517. if ( model.getValue("/root/hidden/list7/clop/oldrowstatus") == 0 ) {
  10518. grd_oprcphist.rowstatus(i) = 2;
  10519. }
  10520. }
  10521. }
  10522. // 횟수
  10523. else if (col == grd_oprcphist.colRef("drugtims")) {
  10524. var olddrugtims = model.getValue("/root/hidden/list7/clop/olddrugtims");
  10525. var drugtims = model.getValue("/root/main/list7/clop["+ row +"]/drugtims");
  10526. if ( drugtims == "" || drugtims == "0" ) {
  10527. model.setValue("/root/main/list7/clop["+ row +"]/drugtims", olddrugtims);
  10528. grd_oprcphist.rowstatus(row) = model.getValue("/root/hidden/list7/clop/oldrowstatus");
  10529. } else {
  10530. model.setValue("/root/main/list7/clop["+ row +"]/adjtresncd", adjtresncd); // 조정사유
  10531. if ( model.getValue("/root/hidden/list7/clop/oldrowstatus") == 0 ) {
  10532. grd_oprcphist.rowstatus(i) = 2;
  10533. }
  10534. }
  10535. }
  10536. // edi일수
  10537. else if (col == grd_oprcphist.colRef("edidrugdayno")) {
  10538. var oldedidrugdayno = model.getValue("/root/hidden/list7/clop/oldedidrugdayno");
  10539. var edidrugdayno = model.getValue("/root/main/list7/clop["+ row +"]/edidrugdayno");
  10540. if ( edidrugdayno == "" || edidrugdayno == "0" ) {
  10541. model.setValue("/root/main/list7/clop["+ row +"]/edidrugdayno", oldedidrugdayno);
  10542. grd_oprcphist.rowstatus(row) = model.getValue("/root/hidden/list7/clop/oldrowstatus");
  10543. } else {
  10544. model.setValue("/root/main/list7/clop["+ row +"]/drugdayno", edidrugdayno); // 일수 같이 변경
  10545. model.setValue("/root/main/list7/clop["+ row +"]/adjtresncd", adjtresncd); // 조정사유
  10546. if ( model.getValue("/root/hidden/list7/clop/oldrowstatus") == 0 ) {
  10547. grd_oprcphist.rowstatus(i) = 2;
  10548. }
  10549. }
  10550. }
  10551. grd_oprcphist.refresh();
  10552. }
  10553. // 심사사유, 조정사유, 수정사유 입력
  10554. function fSetAdjtResnCdClop() {
  10555. var oldcd = model.getValue("/root/main/list7/clop["+ grd_oprcphist.row +"]/adjtresncd");
  10556. model.resetInstanceNode("/root/hidden/sppiz01000");
  10557. model.setValue("/root/hidden/sppiz01000/cond/cdcls", "aftout");
  10558. model.setValue("/root/hidden/sppiz01000/cond/cdid", oldcd);
  10559. modal("SPPIZ01000", "1", "500", "450", "SPPIZ01000", "/root/hidden/sppiz01000/cond", "/root/hidden/sppiz01000/cond", "", ""); // SPPIZ01000_심사수정사유관리.xrw
  10560. var newcd = model.getValue("/root/hidden/sppiz01000/rslt/cdid");
  10561. if (newcd) {
  10562. for (var i = 0; i < grd_oprcphist.selectedRows; i++) {
  10563. var row = grd_oprcphist.selectedrow(i);
  10564. model.setValue("/root/main/list7/clop["+ row +"]/adjtresncd", newcd);
  10565. if (newcd != oldcd) {
  10566. if (grd_oprcphist.rowStatus(row) == 0) { // 0 : new, 2 : update
  10567. grd_oprcphist.rowStatus(row) = 2;
  10568. }
  10569. }
  10570. }
  10571. }
  10572. return newcd;
  10573. }
  10574. // 수가코드, EDI코드를 조회한 후 원외처방으로 행 추가를 한다.
  10575. function fSetSrchOutCalcScorCd(adjtresncd) {
  10576. var col = grd_oprcphist.col;
  10577. var row = grd_oprcphist.row;
  10578. //grd_oprcphist.mergerow(row) = false;
  10579. model.resetInstanceNode("/root/hidden/smpic00200/judgsrch"); // SMPIC00200_수가조회에 전달할 조건값
  10580. model.resetInstanceNode("/root/send/item5/mech"); // submit("TRPID20303") 용
  10581. model.makeValue("/root/send/item5/mech/unitcostupdateyn", "N"); // 단가변경여부
  10582. model.makeValue("/root/send/item5/mech/ediupdateyn", "N"); // edi변경여부
  10583. if (col == grd_oprcphist.colRef("snglcalcscorcd")) { // 수가코드
  10584. var oldsnglcalcscorcd = model.getValue("/root/hidden/list7/clop/oldsnglcalcscorcd");
  10585. var snglcalcscorcd = model.getValue("/root/main/list7/clop["+ row +"]/snglcalcscorcd");
  10586. if (snglcalcscorcd == "") {
  10587. model.setValue("/root/main/list7/clop["+ row +"]/snglcalcscorcd", oldsnglcalcscorcd);
  10588. grd_oprcphist.rowstatus(row) = model.getValue("/root/hidden/list7/clop/oldrowstatus");
  10589. return;
  10590. }
  10591. model.setValue("/root/hidden/smpic00200/judgsrch/con4_search2", snglcalcscorcd); // SMPIC00200_수가조회 용
  10592. model.makeValue("/root/send/item5/mech/snglcalcscorcd", snglcalcscorcd); // submit("TRPID20303") 용
  10593. model.makeValue("/root/send/item5/mech/grupcalcscorcd", "");
  10594. model.makeValue("/root/send/item5/mech/basecd", "");
  10595. }
  10596. else if (col == grd_oprcphist.colRef("edicd")) { // EDI코드
  10597. var oldedicd = model.getValue("/root/hidden/list7/clop/oldedicd");
  10598. var edicd = model.getValue("/root/main/list7/clop["+ row +"]/edicd");
  10599. if (edicd == "") {
  10600. model.setValue("/root/main/list7/clop["+ row +"]/edicd", oldedicd);
  10601. grd_oprcphist.rowstatus(row) = model.getValue("/root/hidden/list7/clop/oldrowstatus");
  10602. return;
  10603. }
  10604. model.setValue("/root/hidden/smpic00200/judgsrch/con4_search2", edicd); // SMPIC00200_수가조회 용
  10605. model.makeValue("/root/send/item5/mech/basecd", edicd); // submit("TRPID20303") 용
  10606. model.makeValue("/root/send/item5/mech/grupcalcscorcd", "");
  10607. model.makeValue("/root/send/item5/mech/snglcalcscorcd", "");
  10608. }
  10609. var ordfromdd = model.getValue("/root/main/list7/clop["+ row +"]/clopdd");
  10610. model.makeValue("/root/send/item5/mech/indd", model.getValue("/root/main/item1/clbs/indd"));
  10611. model.makeValue("/root/send/item5/mech/ordfromdd", ordfromdd);
  10612. model.makeValue("/root/send/item5/mech/ordtodd", ordfromdd);
  10613. model.makeValue("/root/send/item5/mech/insukind", model.getValue("/root/main/item1/clbs/insukindcd"));
  10614. model.makeValue("/root/send/item5/mech/suppkind", model.getValue("/root/main/item1/clbs/suppkindcd"));
  10615. model.makeValue("/root/send/item5/mech/orddeptcd", model.getValue("/root/main/item1/clbs/orddeptcd"));
  10616. model.makeValue("/root/send/item5/mech/orddrid", model.getValue("/root/main/item1/clbs/orddrid"));
  10617. var edidrugqty = model.getValue("/root/main/list7/clop["+ row +"]/edidrugqty");
  10618. var drugtims = model.getValue("/root/main/list7/clop["+ row +"]/drugtims");
  10619. var edidrugdayno = model.getValue("/root/main/list7/clop["+ row +"]/edidrugdayno");
  10620. model.makeValue("/root/send/item5/mech/drugqty", edidrugqty);
  10621. model.makeValue("/root/send/item5/mech/tims", drugtims);
  10622. model.makeValue("/root/send/item5/mech/dayno", edidrugdayno);
  10623. model.makeValue("/root/send/item5/mech/adjtresncd", adjtresncd);
  10624. model.makeValue("/root/send/item5/mech/undersixageyn", model.getValue("/root/main/item1/clbs/undersixageyn"));
  10625. model.makeValue("/root/send/item5/mech/mechage", model.getValue("/root/main/item1/clbs/mechage"));
  10626. model.makeValue("/root/send/item5/mech/hosinresncd", "-");
  10627. model.makeValue("/root/send/item5/mech/payflag", model.getValue("/root/main/list2/clop["+ row +"]/payflag"));
  10628. model.makeValue("/root/send/item5/mech/clbsordfromdd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  10629. model.makeValue("/root/send/item5/mech/ioflag", model.getValue("/root/main/item1/clbs/ioflag"));
  10630. model.makeValue("/root/send/item5/mech/clamflagcd", model.getValue("/root/main/item1/clbs/clamflagcd"));
  10631. model.makeValue("/root/send/item5/mech/mode", "n");
  10632. model.makeValue("/root/send/item5/mech/pid", model.getValue("/root/main/item1/clbs/pid"));
  10633. var cloplength = 0;
  10634. var clopSelect = "";
  10635. var clop = "";
  10636. if (submit("TRPID20303")) {
  10637. clopSelect = instance1.selectSingleNode("/root/main/item5"); //root/main/item5
  10638. clop = clopSelect.childNodes; //root/main/item5/mech
  10639. cloplength = clop.length;
  10640. }
  10641. // 입력한 코드에 대해 조회된 결과가 없거나, 하나의 EDI코드에 여러 수가코드가 존재할 때
  10642. if (cloplength == 0) {
  10643. // 검색된 결과가 여러 수가코드인 경우 이를 초기화하고 수가조회 Popup 창에서 새로 결과를 얻는다.
  10644. model.resetInstanceNode("/root/main/item5");
  10645. // insukindcd를 SMPIC00200_수가조회 화면에서 사용하는 조건값으로 변경한다.
  10646. var insukindcd = model.getValue("/root/main/item1/clbs/insukindcd");
  10647. if (insukindcd == "11") {
  10648. model.setValue("/root/hidden/smpic00200/judgsrch/con5_insu", "insu");
  10649. }
  10650. else if (insukindcd == "21" || insukindcd == "22") {
  10651. model.setValue("/root/hidden/smpic00200/judgsrch/con5_insu", "proc");
  10652. }
  10653. else if (insukindcd == "31") {
  10654. model.setValue("/root/hidden/smpic00200/judgsrch/con5_insu", "autm");
  10655. }
  10656. else if (insukindcd == "41") {
  10657. model.setValue("/root/hidden/smpic00200/judgsrch/con5_insu", "indus");
  10658. } else {
  10659. model.setValue("/root/hidden/smpic00200/judgsrch/con5_insu", "insu");
  10660. }
  10661. // SMPIC00200_수가조회 화면의 그룹,싱글 combo 조건값 설정
  10662. if (col == grd_oprcphist.colRef("snglcalcscorcd")) {
  10663. model.setValue("/root/hidden/smpic00200/judgsrch/con2_gsflag", "S");
  10664. }
  10665. // SMPIC00200_수가조회 화면의 검색조건 combo 조건값 설정
  10666. if (col == grd_oprcphist.colRef("edicd")) {
  10667. model.setValue("/root/hidden/smpic00200/judgsrch/con3_search1", "edicd");
  10668. }
  10669. else {
  10670. model.setValue("/root/hidden/smpic00200/judgsrch/con3_search1", "calcscorcd");
  10671. }
  10672. // 처방시작일을 수가조회 기준일자로 설정
  10673. if (ordfromdd) {
  10674. model.setValue("/root/hidden/smpic00200/judgsrch/con1_dd", ordfromdd);
  10675. }
  10676. model.setValue("/root/hidden/smpic00200/judgsrch/con_ordinptflag", "PAM"); // 20100113 처방입력구분이 입력가능으로 된 수가도 조회하기 위해서 추가
  10677. model.removeNodeset("/root/hidden/smpic00200/rslt/mech"); // SMPIC00200_수가조회 에서 선택된 결과가 copyNode되는 경로임
  10678. model.removeNodeset("/root/hidden/smpic00200/rslt/picmmech"); // SMPIC00200_수가조회 에서 선택된 결과가 copyNode되는 경로임
  10679. modal("SMPIC00200", "1", "10", "10", "SMPIC00200", "root/hidden/smpic00200", "/root/temp", "", ""); // SMPIC00200_수가조회.xrw
  10680. // SMPIC00200_수가조회 화면에서 보낸 결과 값에 대한 처리
  10681. model.makeNode("/root/hidden/smpic00200/rslt/mech");
  10682. model.makeNode("/root/hidden/smpic00200/rslt/picmmech");
  10683. model.copyNode("/root/hidden/smpic00200/rslt/mech", "/root/temp/mech");
  10684. model.copyNode("/root/hidden/smpic00200/rslt/picmmech", "/root/temp/picmmech");
  10685. model.removeNodeset("/root/temp"); // SMPIC00200_수가조회 에서 선택된 결과가 직접 전달되는 경로임
  10686. if ( model.getValue("/root/hidden/smpic00200/rslt/mech/ordinptflag") != "A"
  10687. && model.getValue("/root/hidden/smpic00200/rslt/mech/ordinptflag") != "I" // 20100120 김용민 입력가능한 수가 제외
  10688. ) { // 처방입력구분(코드군 P0141) A: 가능
  10689. model.setValue("/root/main/list7/clop["+ row +"]/edicd", "");
  10690. model.setValue("/root/main/list7/clop["+ row +"]/snglcalcscorcd", "");
  10691. grd_oprcphist.rowstatus(row) = model.getValue("/root/hidden/list7/clop/oldrowstatus");
  10692. messageBox("처방이 불가한 코드", "E008"); ///처방이 불가한 코드입니다.
  10693. return;
  10694. }
  10695. if (model.getValue("/root/hidden/smpic00200/rslt/mech/grupsnglflag") != "S") { // 그룹코드인 경우의 그룹코드에 속하는 싱글코드를 조회함.
  10696. model.makeValue("/root/send/item5/mech/grupcalcscorcd", model.getValue("/root/hidden/smpic00200/rslt/mech/calcscorcd"));
  10697. model.resetInstanceNode("/root/send/item5/mech/snglcalcscorcd");
  10698. model.resetInstanceNode("/root/send/item5/mech/basecd");
  10699. model.resetInstanceNode("/root/send/item5/mech/estmmncd");
  10700. model.makeValue("/root/send/item5/mech/ioflag", model.getValue("/root/main/item1/clbs/ioflag"));
  10701. submit("TRPID20303");
  10702. } else { // 싱글코드를 선택했을 때
  10703. model.resetInstanceNode("/root/send/item5/mech/grupcalcscorcd");
  10704. model.makeValue("/root/send/item5/mech/snglcalcscorcd", model.getValue("/root/hidden/smpic00200/rslt/picmmech/picmmech_calcscorcd"));
  10705. model.resetInstanceNode("/root/send/item5/mech/basecd");
  10706. model.resetInstanceNode("/root/send/item5/mech/estmmncd");
  10707. model.makeValue("/root/send/item5/mech/ioflag", model.getValue("/root/main/item1/clbs/ioflag"));
  10708. submit("TRPID20303");
  10709. }
  10710. }
  10711. clopSelect = instance1.selectSingleNode("/root/main/item5"); //root/main/item5
  10712. if (clopSelect != null) {
  10713. var clop = clopSelect.childNodes; //root/main/item5/mech
  10714. if (clop.length == 0) {
  10715. model.setValue("/root/main/list7/clop["+ row +"]/edicd", "");
  10716. model.setValue("/root/main/list7/clop["+ row +"]/snglcalcscorcd", "");
  10717. grd_oprcphist.rowstatus(row) = model.getValue("/root/hidden/list7/clop/oldrowstatus");
  10718. messageBox("처방이 불가한 코드입니다. 수가조회 화면에서 선택한 그룹코드에 대해 조회한 결과가", "I004"); ///처방이 불가한 코드입니다. 수가조회 화면에서 선택한 그룹코드에 대해 조회한 결과가 없습니다.
  10719. return;
  10720. }
  10721. for (var i = 1; i <= clop.length; i++) { // 싱글 수가코드 개수 만큼
  10722. model.setValue("/root/main/list7/clop["+ row +"]/snglcalcscorcd", model.getValue("/root/main/item5/mech["+i+"]/snglcalcscorcd") );
  10723. model.setValue("/root/main/list7/clop["+ row +"]/edicd", model.getValue("/root/main/item5/mech["+i+"]/edicd") );
  10724. model.setValue("/root/main/list7/clop["+ row +"]/hngnm", model.getValue("/root/main/item5/mech["+i+"]/hngnm") );
  10725. model.setValue("/root/main/list7/clop["+ row +"]/ordnm", model.getValue("/root/main/item5/mech["+i+"]/ordnm") );
  10726. model.setValue("/root/main/list7/clop["+ row +"]/payflag", model.getValue("/root/main/item5/mech["+i+"]/payflag") );
  10727. model.setValue("/root/main/list7/clop["+ row +"]/edicdflag", model.getValue("/root/main/item5/mech["+i+"]/edicdflag") );
  10728. model.setValue("/root/main/list7/clop["+ row +"]/efcyclscd", model.getValue("/root/main/item5/mech["+i+"]/efcyclscd") );
  10729. model.setValue("/root/main/list7/clop["+ row +"]/efcyclsnm", model.getValue("/root/main/item5/mech["+i+"]/efcyclsnm") );
  10730. model.setValue("/root/main/list7/clop["+ row +"]/efcynm2", model.getValue("/root/main/item5/mech["+i+"]/efcynm2") );
  10731. model.setValue("/root/main/list7/clop["+ row +"]/efcynm3", model.getValue("/root/main/item5/mech["+i+"]/efcynm3") );
  10732. model.setValue("/root/main/list7/clop["+ row +"]/adjtresncd", adjtresncd );
  10733. // 신규입력된 처방은 seqno는 최종번호를 셋팅하고 maxseqno에 최종값을 +1한다.
  10734. if ( model.getValue("/root/main/list7/clop["+ row +"]/seqno") == "0"
  10735. || model.getValue("/root/main/list7/clop["+ row +"]/seqno") == ""
  10736. ) {
  10737. model.setValue("/root/main/list7/clop["+ row +"]/seqno", model.getValue("/root/main/item1/clbs/maxclopseqno"));
  10738. model.setValue("/root/main/item1/clbs/maxclopseqno", parseInt(model.getValue("/root/main/item1/clbs/maxclopseqno")) + 1);
  10739. }
  10740. // 행 추가 후 싱글코드 조회 후에 다음 줄을 자동으로 한줄 추가함.
  10741. if (i < clop.length) {
  10742. grd_oprcphist.insertRow(row++, "below", false);
  10743. var beforerow = row - 1 ;
  10744. //grd_oprcphist.mergerow(row) = false;
  10745. model.setValue("/root/main/list7/clop["+ row +"]/clopdd", model.getValue("/root/main/list7/clop["+ beforerow +"]/clopdd"));
  10746. model.setValue("/root/main/list7/clop["+ row +"]/clopno", model.getValue("/root/main/list7/clop["+ beforerow +"]/clopno"));
  10747. model.setValue("/root/main/list7/clop["+ row +"]/oldclopdd", model.getValue("/root/main/list7/clop["+ beforerow +"]/oldclopdd"));
  10748. model.setValue("/root/main/list7/clop["+ row +"]/oldclopno", model.getValue("/root/main/list7/clop["+ beforerow +"]/oldclopno"));
  10749. model.setValue("/root/main/list7/clop["+ row +"]/mpsno", model.getValue("/root/main/list7/clop["+ beforerow +"]/mpsno"));
  10750. model.setValue("/root/main/list7/clop["+ row +"]/edilnno", model.getValue("/root/main/list7/clop["+ beforerow +"]/edilnno"));
  10751. model.setValue("/root/main/list7/clop["+ row +"]/payflag", model.getValue("/root/main/list7/clop["+ beforerow +"]/payflag"));
  10752. model.setValue("/root/main/list7/clop["+ row +"]/drugqty", model.getValue("/root/main/list7/clop["+ beforerow +"]/drugqty"));
  10753. model.setValue("/root/main/list7/clop["+ row +"]/edidrugqty", model.getValue("/root/main/list7/clop["+ beforerow +"]/edidrugqty"));
  10754. model.setValue("/root/main/list7/clop["+ row +"]/drugtims", model.getValue("/root/main/list7/clop["+ beforerow +"]/drugtims"));
  10755. model.setValue("/root/main/list7/clop["+ row +"]/drugdayno", model.getValue("/root/main/list7/clop["+ beforerow +"]/drugdayno"));
  10756. model.setValue("/root/main/list7/clop["+ row +"]/edidrugdayno", model.getValue("/root/main/list7/clop["+ beforerow +"]/edidrugdayno"));
  10757. model.setValue("/root/main/list7/clop["+ row +"]/workflag", "12");
  10758. model.setValue("/root/main/list7/clop["+ row +"]/spclspecyn", "");
  10759. }
  10760. }
  10761. } else {
  10762. model.setValue("/root/main/list7/clop["+ row +"]/edicd", "");
  10763. model.setValue("/root/main/list7/clop["+ row +"]/snglcalcscorcd", "");
  10764. grd_oprcphist.rowstatus(row) = model.getValue("/root/hidden/list7/clop/oldrowstatus");
  10765. messageBox("처방이 불가한 코드입니다. 수가조회 화면에서 선택한 그룹코드에 대해 조회한 결과가", "I004"); ///처방이 불가한 코드입니다. 수가조회 화면에서 선택한 그룹코드에 대해 조회한 결과가 없습니다.
  10766. return;
  10767. }
  10768. }
  10769. // 원외처방 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가"
  10770. function fOutOrderGridInsertRow() {
  10771. var cloprow = grd_oprcphist.row;
  10772. grd_oprcphist.insertRow(cloprow++, "below", true, true); // 처방 Grid에 행 삽입
  10773. grd_oprcphist.row = cloprow;
  10774. //grd_oprcphist.mergerow(cloprow) = false;
  10775. grd_oprcphist.mergecells = "never";
  10776. // 기본값 입력
  10777. model.setValue("/root/main/list7/clop["+ cloprow +"]/clopdd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  10778. model.setValue("/root/main/list7/clop["+ cloprow +"]/clopno", "99999");
  10779. model.setValue("/root/main/list7/clop["+ cloprow +"]/oldclopdd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  10780. model.setValue("/root/main/list7/clop["+ cloprow +"]/oldclopno", "99999");
  10781. model.setValue("/root/main/list7/clop["+ cloprow +"]/mpsno", model.getValue("/root/main/item1/clbs/ordfromdd")+"99999");
  10782. model.setValue("/root/main/list7/clop["+ cloprow +"]/edilnno", "0");
  10783. model.setValue("/root/main/list7/clop["+ cloprow +"]/payflag", "0");
  10784. model.setValue("/root/main/list7/clop["+ cloprow +"]/drugqty", "1");
  10785. model.setValue("/root/main/list7/clop["+ cloprow +"]/edidrugqty", "1");
  10786. model.setValue("/root/main/list7/clop["+ cloprow +"]/drugtims", "1");
  10787. model.setValue("/root/main/list7/clop["+ cloprow +"]/drugdayno", "1");
  10788. model.setValue("/root/main/list7/clop["+ cloprow +"]/edidrugdayno", "1");
  10789. model.setValue("/root/main/list7/clop["+ cloprow +"]/workflag", "12");
  10790. model.setValue("/root/main/list7/clop["+ cloprow +"]/spclspecyn", "");
  10791. var adjtresncd = model.getValue("/root/main/list7/clop["+ cloprow +"]/adjtresncd");
  10792. if (adjtresncd == "" || adjtresncd == "-") { // 심사(조정)사유가 입력되지 않은 경우
  10793. var cmbAdjtresncd = model.getValue("/root/hidden/list2/clodstat/cmbAdjtresncd");
  10794. if (cmbAdjtresncd == "" || cmbAdjtresncd == "-" ) {
  10795. model.resetInstanceNode("/root/hidden/sppiz01000");
  10796. model.setValue("/root/hidden/sppiz01000/cond/cdcls", "aftout");
  10797. model.setValue("/root/hidden/sppiz01000/cond/cdid", adjtresncd);
  10798. modal("SPPIZ01000", "1", "500", "450", "SPPIZ01000", "/root/hidden/sppiz01000/cond", "/root/hidden/sppiz01000/cond", "", ""); // SPPIZ01000_심사수정사유관리.xrw
  10799. adjtresncd = model.getValue("/root/hidden/sppiz01000/rslt/cdid");
  10800. } else {
  10801. adjtresncd = cmbAdjtresncd;
  10802. }
  10803. }
  10804. if (adjtresncd == "" || adjtresncd == "-") {
  10805. grd_oprcphist.deleteRow(cloprow, true); // 처방 Grid에서 해당 라인을 삭제한다.
  10806. } else {
  10807. model.setValue("/root/main/list7/clop["+ cloprow +"]/adjtresncd", adjtresncd);
  10808. }
  10809. }
  10810. // 원외처방 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행복사"
  10811. function fOutOrderGridCopyRow() {
  10812. var cloprow = grd_oprcphist.row;
  10813. var adjtresncd = model.getValue("/root/main/list7/clop["+ cloprow +"]/adjtresncd");
  10814. if (adjtresncd == "" || adjtresncd == "-") { // 심사(조정)사유가 입력되지 않은 경우
  10815. var cmbAdjtresncd = model.getValue("/root/hidden/list2/clodstat/cmbAdjtresncd");
  10816. if (cmbAdjtresncd == "" || cmbAdjtresncd == "-" ) {
  10817. model.resetInstanceNode("/root/hidden/sppiz01000");
  10818. model.setValue("/root/hidden/sppiz01000/cond/cdcls", "aftout");
  10819. model.setValue("/root/hidden/sppiz01000/cond/cdid", adjtresncd);
  10820. modal("SPPIZ01000", "1", "500", "450", "SPPIZ01000", "/root/hidden/sppiz01000/cond", "/root/hidden/sppiz01000/cond", "", ""); // SPPIZ01000_심사수정사유관리.xrw
  10821. adjtresncd = model.getValue("/root/hidden/sppiz01000/rslt/cdid");
  10822. } else {
  10823. adjtresncd = cmbAdjtresncd;
  10824. }
  10825. }
  10826. if (adjtresncd == "" || adjtresncd == "-") {
  10827. return;
  10828. }
  10829. grd_oprcphist.insertRow(cloprow++, "below", true, true); // 처방 Grid에 행 삽입
  10830. model.copyNode("/root/main/list7/clop["+ cloprow +"]", "/root/main/list7/clop["+ (cloprow - 1) +"]");
  10831. model.resetInstanceNode("/root/main/list7/clop["+ cloprow +"]/spclspecyn");
  10832. model.resetInstanceNode("/root/main/list7/clop["+ cloprow +"]/clopseqno");
  10833. model.setValue("/root/main/list7/clop["+ cloprow +"]/adjtresncd",adjtresncd);
  10834. // seqno 셋팅
  10835. model.setValue("/root/main/list7/clop["+ cloprow +"]/seqno", model.getValue("/root/main/item1/clbs/maxclopseqno"));
  10836. model.setValue("/root/main/item1/clbs/maxseqno", parseInt(model.getValue("/root/main/item1/clbs/maxclopseqno")) + 1);
  10837. model.setValue("/root/main/list7/clop["+ cloprow +"]/edilnno", "0");
  10838. grd_oprcphist.refresh();
  10839. }
  10840. function fGetClamDiagHistList(){
  10841. var clamym = model.getValue("/root/main/item1/clbs/clamym");
  10842. if (clamym) { // 조회된 심사대상자가 있으면
  10843. // 심사대상자의 등록번호를 조건으로 하여 전체 청구 상병이력을 조회한다.
  10844. model.removeNodeset("/root/hidden/smpiz00200/rslt");
  10845. model.makeNode("/root/hidden/smpiz00200/cond/pid");
  10846. model.makeNode("/root/hidden/smpiz00200/cond/ordfromdd");
  10847. model.makeNode("/root/hidden/smpiz00200/cond/ordtodd");
  10848. model.makeNode("/root/hidden/smpiz00200/cond/clamym");
  10849. model.setValue("/root/hidden/smpiz00200/cond/pid", model.getValue("/root/main/item1/clbs/pid"));
  10850. model.setValue("/root/hidden/smpiz00200/cond/ordfromdd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  10851. model.setValue("/root/hidden/smpiz00200/cond/ordtodd", model.getValue("/root/main/item1/clbs/dschdd"));
  10852. model.setValue("/root/hidden/smpiz00200/cond/clamym", ipt_clamym.value);
  10853. //model.setValue("/root/hidden/smpiz00100/cond/srchflag", "pam"); // 검색구분 Radio : 청구
  10854. modal("SMPIZ00200", "1", "10", "10", "SMPIZ00200", "/root/hidden/smpiz00200/cond", "/root/init", "", ""); // SMPIZ00100_외래입원상병이력조회.xrw
  10855. }
  10856. }
  10857. function fGetCoppayFlagSelect() {
  10858. var selectedRdoPay = model.getValue("/root/hidden/list7/clop/selectedRdoPay");
  10859. if (selectedRdoPay == "0") {
  10860. //grd_oprcphist.nodeset = "/root/main/list7/clop[payflag='"+ selectedRdoPay +"']"; // 급여구분1(P0104 -:해당사항없음, 0:급여, 1:전액본인부담, 2:일반)
  10861. for (var j = 1; j < grd_oprcphist.rows; j++) {
  10862. if (model.getValue("/root/main/list7/clop["+ j +"]/payflag") == "0") {
  10863. grd_oprcphist.rowHidden(j) = false;
  10864. } else {
  10865. grd_oprcphist.rowHidden(j) = true;
  10866. }
  10867. }
  10868. }
  10869. else if (selectedRdoPay == "1") {
  10870. for (var j = 1; j < grd_oprcphist.rows; j++) {
  10871. if (model.getValue("/root/main/list7/clop["+ j +"]/payflag") != "0") {
  10872. grd_oprcphist.rowHidden(j) = false;
  10873. } else {
  10874. grd_oprcphist.rowHidden(j) = true;
  10875. }
  10876. }
  10877. } else {
  10878. grd_oprcphist.nodeset = "/root/main/list7/clop";
  10879. }
  10880. grd_oprcphist.refresh();
  10881. }
  10882. function fGeCaseSelect(caseId, visible_val) {
  10883. var caseObj = document.all.item(caseId);
  10884. if (caseObj.selected) { // 기존에 이미 선택되어 있는 tab인데 해당 tab을 다시 선택한 경우
  10885. //if (swt_spclmemo.attribute("height") == "608") { // 세로로 확대된 창을 원래대로 한다.
  10886. if ( grp_clsphist.attribute("height") == "632" ) {
  10887. fCutSwitchSize();
  10888. } else { // textarea를 세로로 확대시킨다.
  10889. fExpandSwitchSize();
  10890. }
  10891. } else { // 기존에 선택되지 않은 tab인 경우
  10892. fCutSwitchSize();
  10893. // fExpandSwitchSize();
  10894. // model.refresh();
  10895. }
  10896. // JT001 체크박스는 특정내역 선택했을때만 보임 - 20091112 박창원
  10897. chk_JT001.visible = visible_val;
  10898. model.toggle(caseId); // 해당 tab 으로 토글시킨다.
  10899. }
  10900. function fGetClosepredocuList() {
  10901. grd_clodhist.attribute("width") = "1114";
  10902. ln_clodhist.attribute("x2") = "1114";
  10903. cap_grptemp.visible = false;
  10904. grp_predoculist.visible = false;
  10905. }
  10906. function fGetGrdCldihistEditCell() {
  10907. // col@type = "input" 일 경우 onentercell시점에 EditMode 상태 만들기
  10908. if (grd_cldihist.colType(grd_cldihist.col) == "input") {
  10909. grd_cldihist.editCell();
  10910. }
  10911. }
  10912. /*
  10913. 심사완료전상병특정내역체크 2012.07.11 plet2
  10914. 1. 중증/산정특례 상병 체크- 상병 화면 주상병(no=1)의 MT002에 V Code 있으면 중증/산정특례 V252, V027은 제외
  10915. 2. 특정내역에 MT002 체크 - 중증/산정특례 특정기호 관련 특정내역
  10916. 3. 특정내역에 MT014 체크 - 중증/산정특례 자격 번호 관련 특정내역
  10917. //주상병이 v252이고 특정내역에 ct002코드가 없을때 발생 2012.07.05 plet2
  10918. //특정내역이 ct002이고 주상병에 v252코드가 없을때 발생 2012.07.05 plet2
  10919. //불완전상병체크
  10920. */
  10921. function fGetDiagSpclcdCheck(){
  10922. var chk_vcode = model.getValue("/root/main/list1/cldi[diagseq='1']/vcode");
  10923. var chk_vcodeR = model.getValue("/root/main/list1/cldi[diagseq='1' and diagkindcd != 'R']/vcode"); //룰아웃제외
  10924. var chk_CT002 = model.getValue("/root/main/list3/clsp[spclcd='CT002' and insntstat !='D']/spclcd");
  10925. var chk_MT002 = model.getValue("/root/main/list3/clsp[spclcd='MT002' and insntstat !='D']/spclcd");
  10926. var chk_F001 = model.getValue("/root/main/list3/clsp[spclcd='MT002' and spclspec='F001' and insntstat !='D']/spclcd");
  10927. var chk_F003 = model.getValue("/root/main/list3/clsp[spclcd='MT002' and spclspec='F003' and insntstat !='D']/spclcd");
  10928. var chk_F004 = model.getValue("/root/main/list3/clsp[spclcd='MT002' and spclspec='F004' and insntstat !='D']/spclcd");
  10929. var chk_F005 = model.getValue("/root/main/list3/clsp[spclcd='MT002' and spclspec='F005' and insntstat !='D']/spclcd");
  10930. var chk_V001 = model.getValue("/root/main/list3/clsp[spclcd='MT002' and spclspec='V001' and insntstat !='D']/spclspec");
  10931. var chk_V008 = model.getValue("/root/main/list3/clsp[spclcd='MT002' and spclspec='V008' and insntstat !='D']/spclcd");
  10932. var chk_MT014 = model.getValue("/root/main/list3/clsp[spclcd='MT014' and insntstat !='D']/spclcd");
  10933. var kcd6chk = model.getValue("/root/main/list1/cldi[kcd6chk ='Y' and rowstat !='U']/kcd6chk"); // 불완전상병체크
  10934. var snglcalcscorcdcnt = getNodesetCount("/root/main/list7/clop"); //원외처방수
  10935. var chk_396 = model.getValue("/root/main/list7/clop[efcyclscd='396']/efcyclscd");
  10936. var chk_insukindcd = model.getValue("/root/main/item1/clbs/insukindcd"); //보험유형
  10937. var chk_suppkindcd = model.getValue("/root/main/item1/clbs/suppkindcd"); //보조유형
  10938. var chk_diagcd = model.getValue("/root/main/list1/cldi[diagseq='1']/diagcd"); //주상병코드
  10939. var chk_diagcdR = model.getValue("/root/main/list1/cldi[diagseq='1' and diagkindcd != 'R']/diagcd"); //주상병코드룰아웃
  10940. var chk_pid = model.getValue("/root/main/item1/clbs/pid"); //환자번호
  10941. var chk_ioflag = model.getValue("/root/main/item1/clbs/ioflag"); //입원외래구분
  10942. var chk_ordfromdd = model.getValue("/root/main/item1/clbs/ordfromdd");
  10943. var chk_clamym = model.getValue("/root/main/item1/clbs/clamym"); //청군년월
  10944. var chk_clamdg = model.getValue("/root/main/item1/clbs/clamdg"); //차수
  10945. var chk_pidsn = model.getValue("/root/main/item1/clbs/pidsn"); //순번
  10946. var chk_O3420 = model.getValue("/root/main/list1/cldi[diagcd='O3420']/diagcd");
  10947. var chk_JT005 = model.getValue("/root/main/list3/clsp[spclcd='JT005' and insntstat !='D']/spclspec"); //임신주수
  10948. var chk_MS004 = model.getValue("/root/main/list3/clsp[spclcd='MS004' and insntstat !='D']/spclspec"); //신생아체중
  10949. var chk_O365 =model.getValue("/root/main/list1/cldi[diagcd='O365' or diagcd='O366' ]/diagcd"); //임신주수상병코드
  10950. var chk_rareobstflag = model.getValue("/root/main/item1/clbs[suppamt>0 and rareobstflag='L']/rareobstflag"); //결핵이면서 지원금 있는
  10951. var cnt_MT002 = getNodesetCount("/root/main/list3/clsp[spclcd='MT002' and insntstat !='D' and spclspec!='V206' and spclspec!='V246' and spclspec!='V231' and spclspec!='F008']/spclcd");
  10952. var chk_orddeptcd = model.getValue("/root/main/item1/clbs/orddeptcd"); //진료과
  10953. var result = true;
  10954. //V252,V027,V191,V192제외
  10955. //F004,F005제외
  10956. //주상병 불일치
  10957. //주상병이 N180~N189 이면서 Vcode가 V001아닌 경우 체크
  10958. if ( chk_vcodeR != "V252" && chk_vcodeR != "V027" && chk_vcodeR != "V191" && chk_vcodeR != "V192" ) {
  10959. if ((chk_MT002 == "" || chk_MT014 == "") && chk_vcodeR != "") {
  10960. if ((chk_diagcdR >= "N180" && chk_diagcdR <= "N189") && chk_V001 == "V001" && chk_MT014 == "" ) {
  10961. if(messageBox("주상병과 특정내역이 일치 하지 않습니다.!! (중증/산정특례)", "Q003") == 6){
  10962. result = true;
  10963. } else {
  10964. result = false;
  10965. }
  10966. } else {
  10967. //의료보호, 보조유형 1종 차상위는 제외
  10968. //에이즈상병 제외 (V103)
  10969. if ((chk_vcodeR == "V103")
  10970. || (chk_insukindcd == "21" || chk_insukindcd == "22" )
  10971. || (chk_insukindcd == "11" && (chk_suppkindcd == "32" || chk_suppkindcd == "60" || chk_suppkindcd == "88"))
  10972. || chk_suppkindcd == "00")
  10973. {
  10974. result = true;
  10975. } else {
  10976. if(messageBox("주상병과 특정내역이 일치 하지 않습니다.!! (중증/산정특례).", "Q003") == 6){
  10977. result = true;
  10978. } else {
  10979. result = false;
  10980. }
  10981. }
  10982. }
  10983. } else if ((chk_MT002 != "" || chk_MT014 != "") && chk_vcodeR == "") {
  10984. if (chk_F003 != "" || chk_F004 != "" || chk_F005 != "" || chk_V008 || chk_F001 !="") {
  10985. result = true;
  10986. } else {
  10987. if (((chk_MT002 != "" || chk_MT014 != "") && chk_vcodeR == "" && !((chk_insukindcd == "21" || chk_insukindcd == "22" ) && chk_suppkindcd == "00" )
  10988. ) || ((chk_MT002 == "" || chk_MT014 == "") && chk_vcodeR != "") ) {
  10989. if(messageBox("주상병과 특정내역이 일치 하지 않습니다.!! (중증/산정특례),", "Q003") == 6){
  10990. result = true;
  10991. } else {
  10992. result = false;
  10993. }
  10994. }
  10995. }
  10996. } else if (chk_vcodeR == "V103" && chk_MT002 == "" ) {
  10997. if(messageBox("주상병과 특정내역이 일치 하지 않습니다.!! (중증/산정특례)...", "Q003") == 6){
  10998. result = true;
  10999. } else {
  11000. result = false;
  11001. }
  11002. } else if (chk_vcodeR != "" && chk_rareobstflag == "L" && cnt_MT002 > "0" ) {
  11003. if(messageBox("결핵환자는 결핵관련 특정기호(MT002) 이외에는 기재 할 수 없습니다.", "Q003") == 6){
  11004. result = true;
  11005. } else {
  11006. result = false;
  11007. }
  11008. }
  11009. }
  11010. //경증상병
  11011. //CT002불일치
  11012. //주상병이 경증 + 건강보험이 정상이면서 원외 처방이 있고, CT002없는 경우/반대의경우 체크
  11013. if ((chk_vcodeR == "V252" && chk_CT002 == "" && snglcalcscorcdcnt > 0 && (chk_insukindcd == "11" && chk_suppkindcd == "00") )
  11014. || (chk_vcodeR != "V252" && chk_CT002 != "" && snglcalcscorcdcnt > 0 && (chk_insukindcd == "11" && chk_suppkindcd == "00") ) ){
  11015. if ((chk_diagcdR >= "E10" && chk_diagcdR <= "E149") && chk_396 != '396') {
  11016. if(messageBox("주상병과 특정내역이 일치 하지 않습니다.!! (경증)", "Q003") == 6) {
  11017. result = true;
  11018. } else {
  11019. result = false;
  11020. }
  11021. }
  11022. }
  11023. if (kcd6chk == "Y") {
  11024. if(messageBox("불완전상병이 존재 합니다.", "Q003") == 6) {
  11025. result = true;
  11026. } else {
  11027. result = false;
  11028. }
  11029. }
  11030. if (chk_vcodeR.length > 0) {
  11031. model.setValue("/root/send/chksuppkindflag/cond/diagcd",chk_diagcdR);
  11032. model.setValue("/root/send/chksuppkindflag/cond/spclcd",chk_vcodeR);
  11033. model.setValue("/root/send/chksuppkindflag/cond/ioflag",chk_ioflag);
  11034. model.setValue("/root/send/chksuppkindflag/cond/ordfromdd", chk_ordfromdd);
  11035. model.setValue("/root/send/chksuppkindflag/cond/clamym",chk_clamym);
  11036. model.setValue("/root/send/chksuppkindflag/cond/clamdg",chk_clamdg);
  11037. model.setValue("/root/send/chksuppkindflag/cond/pidsn",chk_clamdg);
  11038. model.setValue("/root/send/chksuppkindflag/cond/pid",chk_pid);
  11039. model.setValue("/root/send/chksuppkindflag/cond/insukindcd",chk_insukindcd);
  11040. //상병 + 번호 + 처방
  11041. //상병 + 번호
  11042. //보조유형 불일치 체크
  11043. submit("TRPID20314");
  11044. var chksuppkindflag = model.getValue("/root/hidden/chksuppkindflag/rslt/chksuppkindflag");
  11045. if (chksuppkindflag != "" && chksuppkindflag != chk_suppkindcd && chk_diagcdR != "" && chk_suppkindcd != "00" ) {
  11046. if(messageBox("주상병과 보조유형이 일치 하지 않습니다.", "Q003") == 6) {
  11047. result = true;
  11048. } else {
  11049. result = false;
  11050. }
  11051. }
  11052. }
  11053. //특정 분만진단에 필수 부진단 유무 체크
  11054. //O820이 주상병인 환자가 O3420 상병이 없을 경우 체크
  11055. if (chk_diagcd == 'O820' && chk_O3420.length == 0 ) {
  11056. if(messageBox("반복제왕절개 환자입니다.", "Q003") == 6) {
  11057. result = true;
  11058. } else {
  11059. var ans = messageBox("O3420 상병을 입력" , "S001");
  11060. if (ans==6){
  11061. model.setFocus("grd_cldihist");
  11062. fDiagGridInsertRow("Y", "N");
  11063. grd_cldihist.bottomRow = grd_cldihist.rows;
  11064. model.refresh();
  11065. var maxseq = model.getXPathValue("max(/root/main/list1/cldi[*]/diagseq)");
  11066. model.setValue("/root/main/list1/cldi[diagseq='"+maxseq+"']/diagcd","O3420");
  11067. model.setValue("/root/main/list1/cldi[diagseq='"+maxseq+"']/diagnm","이전의 제왕절개로 인한 흉터의 산모 관리");
  11068. }
  11069. result = false;
  11070. }
  11071. }
  11072. //임신주수별 체중과 진단 체크
  11073. //신생아 체중관련 상병누락입니다 (O365 or O366)
  11074. if (chk_JT005.length > 0 && chk_MS004.length > 0) {
  11075. var nwbabyweight = parseInt(chk_MS004);
  11076. var minweight = parseInt(model.getValue("/root/main/nbwt/nbwtlist[prgntweek='"+chk_JT005+"']/minweight"));
  11077. var maxweight = parseInt(model.getValue("/root/main/nbwt/nbwtlist[prgntweek='"+chk_JT005+"']/maxweight"));
  11078. if (chk_O365.length == 0 && (nwbabyweight <= minweight || nwbabyweight >= maxweight ) ) {
  11079. if(messageBox("신생아 체중관련 상병누락 환자입니다.", "Q003") == 6) {
  11080. result = true;
  11081. } else {
  11082. result = false;
  11083. }
  11084. }
  11085. }
  11086. /* 1924863 보조유형 00일때 제외
  11087. * // I20 ~I25 을 입력 하면 순환기,흉부외과는 주상병명이면 통과 하고타과 면 주상병명 으로 입력 하면 입력이 안되도록
  11088. if ((chk_diagcd >= "I200" && chk_diagcd <= "I2599") && (chk_orddeptcd!="2070000000" || chk_orddeptcd!="2010400000") ) {
  11089. if(messageBox("순환기내과, 흉부외과 외 주상병 할 수 없는 상병 입니다.", "Q003") == 6) {
  11090. result = true;
  11091. } else {
  11092. result = false;
  11093. }
  11094. }*/
  11095. var clbs_licnsno = model.getValue("/root/main/item1/clbs/licnsno");
  11096. var cldi_licnsno = model.getValue("/root/main/list1/cldi[diagseq='1']/licnsno");
  11097. var clod_licnsno = model.getValue("/root/main/list2/clod[item='0101' or item='0102']/licnsno");
  11098. var clod_snglcalcscorcd = model.getValue("/root/main/list2/clod[item='0101' or item='0102']/snglcalcscorcd");
  11099. if((clbs_licnsno != cldi_licnsno) || (clbs_licnsno != clod_licnsno) ){
  11100. if (grd_cldihist.rowstatus(1) != 1 && grd_cldihist.rowstatus(1) != 3) {
  11101. grd_cldihist.rowstatus(1) = 2;
  11102. }
  11103. if (grd_cldihist.rowstatus(1) != 1 && grd_cldihist.rowstatus(1) != 3) {
  11104. grd_clodhist.rowstatus(grd_clodhist.findRow(clod_snglcalcscorcd,grd_clodhist.fixedRows,grd_clodhist.colRef("snglcalcscorcd"), false, true)) = 2;
  11105. }
  11106. }
  11107. var holigbn = model.getValue("/root/main/item1/clbs/holigbn");
  11108. var holifromdd = model.getValue("/root/main/item1/clbs/holifromdd");
  11109. var holitodd = model.getValue("/root/main/item1/clbs/holitodd");
  11110. if(holigbn == "Y" && clod_snglcalcscorcd.length > 0){
  11111. if(messageBox("진료의가 "+holifromdd+" ~ "+holitodd+" 기간동안 해외 출장입니다. 진료의사를 변경하세요.", "Q003") == 6) {
  11112. result = true;
  11113. } else {
  11114. result = false;
  11115. }
  11116. }
  11117. return result;
  11118. }
  11119. function fSaveClspList() {
  11120. if (btn_save.disabled == false && "M"=="S") {
  11121. // 인적사항
  11122. var initclbs = instance1.selectNodesXml("/root/hidden/item1/initclbs/clbs");
  11123. var currentclbs = instance1.selectNodesXml("/root/main/item1/clbs");
  11124. model.copyNode("/root/send/item1/clbs", "/root/main/item1/clbs");
  11125. model.makeValue("/root/send/item1/clbs/clbsupdateyn", "N"); // 인적사항 저장여부
  11126. // 심사상태를 '저장' 또는 '심사완료' 상태로 저장한다.
  11127. model.makeValue("/root/send/item1/clbs/judgendyn", "B"); // 사후심사-심사완료여부 (P0151) - B: 심사중, C: 심사완료
  11128. for (var j = grd_clsphist.fixedRows; j < grd_clsphist.rows; j++) {
  11129. var spclLnNo = model.getValue("/root/main/list3/clsp["+ j +"]/seqno");
  11130. if (spclLnNo.substr(0, 1) == "D") {
  11131. model.setValue("/root/main/list3/clsp["+ j +"]/seqno", spclLnNo.substr(1, spclLnNo.length));
  11132. }
  11133. }
  11134. // 기타메모(JX999)를 특정내역 형식에 맞춰 설정
  11135. fSetSpclSpecJX999();
  11136. var updtdata = getGridUpdateData(grd_clsphist); // (tfHelper.js) 그리드 업데이트 데이터 반환, 업데이트 정보가 없을경우 "" 반환
  11137. if (updtdata) {
  11138. model.makeValue("/root/send/list3/clsp", updtdata);
  11139. }
  11140. submit("TXPID20315");
  11141. //grd_clsphist.refresh();
  11142. model.refreshpart("/root/main/list3");
  11143. fSelectSpclRadio();
  11144. }
  11145. }