SMPID20300.js 402 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599
  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. - fOrderGridInsertCnfmCd : 확인코드 : SPPIZ01100_확인코드조회
  20. - fOrderRsltSrch : 결과조회 : SMAER00800_결과조회
  21. - fSrchEstmCd : 산정의미코드 : SPPIZ00800_산정코드조회.xrw
  22. - fGetEmrInformation : 진료정보조회 : SMMMO02500_환자진료정보.xrw
  23. - fGetMemoHistList : 메모이력조회 : SPPIZ00300_메모이력조회.xrw
  24. - fGetDiagHistList : 상병이력조회 : SMPIZ00100_외래입원상병이력조회.xrw
  25. - fPrcpResnRef :처방사유조회 : SPMMO19000_중복처방사유조회
  26. --------------------------------
  27. - 상병관련 Function
  28. --------------------------------
  29. - fDiagSeqUp : 상병순서 위로
  30. - fDiagSeqDown : 상병순서 아래로
  31. - fSortDiagNo : 상병SORT
  32. - fDiagGridInsertRow : 행삽입
  33. - fDiagGridInsertRowMulti : 행추가(5줄)
  34. - fDiagGridDeleteRow : 행삭제
  35. - fDiagGridDeleteCancel : 삭제취소
  36. - fSearchDiageCode : 상병코드 PopUp 조회
  37. - fSearchSPPIZ00400 : 상병코드 PopUp 조회호출
  38. - fSetDiagCdNm : 상병코드 PopUp 반영
  39. --------------------------------
  40. - 특정내역관련 Function
  41. --------------------------------
  42. - fRepeatSpclSpec : 특정내역반복
  43. - fSpclGridInsertRow : 특정내역 "행 추가"
  44. - fSpclGridDeleteRow : 특정내역 "행 삭제"
  45. - fSetLnUnitSpclSpec : 줄단위 특정내역 수정/입력 ==> SPPIZ00500_특정내역상세관리.xrw
  46. - fSetDocRefLnSpclSpec : 명세서단위 특정내역 수정/입력 ==> SPPIZ00500_특정내역상세관리.xrw
  47. - fOrderGridInsertCmt : 처방 Grid 마우스 오른쪽 "처방주석입력" ==> SPPIZ00500_특정내역상세관리.xrw
  48. - fSetLnUnitMemoRefresh : 심사Comment 조회 Popup : 줄단위메모 설정 ==> SPPIZ00700_심사Comment조회.xrw
  49. - fSetJudgMemoRefresh : 심사Comment 조회 Popup : 심사메모 설정 ==> SPPIZ00700_심사Comment조회.xrw
  50. - fSetEdiMemoRefresh : 심사Comment 조회 Popup : EDI메모 설정 ==> SPPIZ00700_심사Comment조회.xrw
  51. - fSetCnfmCdSpclSpec : 특정내역 더블클릭 : 확인코드 줄단위 특정내역 수정/입력 ==> SPPIZ01100_확인코드조회
  52. - fOrderGridInsertCnfmCd : 처방내역 버튼클릭 : 확인코드 줄단위 특정내역 수정/입력 ==> SPPIZ01100_확인코드조회
  53. - fGetMemoHistList : 메모이력 버튼클릭 : 심사자메모, edi메모, JX999조회 입력 ==> SPPIZ00300_메모이력조회.xrw
  54. - fSetSpclSpecJX999 : 저장할때 : 기타메모(JX999)를 특정내역 형식에 맞춰 설정
  55. - fSetJudgEDIMemo : 저장할때 : 심사자메모, EDI청구메모를 특정내역 형식에 맞춰 설정한다.
  56. --------------------------------
  57. - 처방입력(수가입력)
  58. --------------------------------
  59. - fOrderGridInsertRow : 행추가
  60. - fOrderGridCopyRow : 행복사
  61. - fOrderGridDeleteRow : 행삭제
  62. - fOrderGridDeleteCancel : 삭제취소
  63. - fOrderGridAddRow : 처방추가
  64. - fSetSrchCalcScorCd : 신규코드 추가
  65. - fSetNewCalcScorCd : 신규코드 추가후
  66. - fSetCalcScorAmt : 수가코드의 금액정보를 표시
  67. - fSetOrderLnNo
  68. _
  69. - fSetTotDrugQtyAmt : 기존코드 수정 1회량/횟수/일수 수정시
  70. - fSetCalcScorAmt : 조회수가 금액표시
  71. - fSetOrderLnNo : 처방그리드 sort
  72. - fChangeOrderLnNo : 처방, 특정 줄번호 셋팅
  73. - fSortSpclNo : 특정그리드 sort
  74. - fSetNewCnfmCd : 확인코드, 검체검사위탁, 준용코드를 특정내역에 자동으로 추가
  75. - fSetPayflag : 처방 급여구분 변경
  76. -----------------------------------------
  77. - 저장 및 완료 후 프로세스(저장 및 조회)
  78. -----------------------------------------
  79. - fSaveInAftJudg : 저장(B)
  80. - fGetNextAftJudgTrgtMan : 완료(C), 미심(A), 보류(N), 삭제(D)
  81. - pidfGetKDRGCode : KDRG 3.2 DRG분류번호 조회
  82. - fSrchNextJudgTrgtManCLBS : 다음 대상자 찾기
  83. - fSrchNextJudgTrgtManSPEC : 다음 대상자 찾기(선별심사인 경우)
  84. - fGetInAftJudgMngt : 다음 대상자 조회(대상자에서 더블클릭했을 경우...)
  85. - fInitSrchData : 화면초기화 (기존환자 심사중 해제)
  86. - fSetAftJudgTrgtManSrchData : 다음 대상자 조회이후
  87. - fSetJudgStatBtnAuth : 심사완료여부 상태따라 버튼권한 설정(현재환자 심사중 설정)
  88. - fGetSelectedOrderData : 재료행위/급여/항목구분 Radio 선택
  89. - fGetSelectedPayflag : 급여Radio 선택
  90. - fSetOrderData : 처방 항목 구분 및 선별심사 처방 색깔 구분
  91. - fSetSubtotal : 항목별 소계(item1별로 금액sum해서 보여준다)
  92. - fInitOrderFilter : 처방 Grid 필터용 조회조건을 초기화한다.
  93. --------------------------------
  94. - 기타조회
  95. --------------------------------
  96. - fClodSelectByPayflag : 급여구분별 처방조회
  97. - fOpenSMPIS00500DetailSnglCD : 처방별환자조회(계산)_수가코드
  98. - fOpenSMPIS00500DetailEdicd : 처방별환자조회(계산)_EDI코드
  99. - fOpenSMPIS00600Detail : 처방별환자조회(청구/삭감)
  100. -------------------------------------------------------------------------------------------------- */
  101. // 20100615 환경초기화를 위한 로딩상태 저장
  102. var gCldihist_refdata = "";
  103. var gCldihist_sizedata = "";
  104. var gClodhist_refdata = "";
  105. var gClodhist_sizedata = "";
  106. var df_tp_size_grp_cldihist = grp_cldihist.attribute("top");
  107. var df_tp_size_grp_clsphist = grp_clsphist.attribute("top");
  108. var df_tp_size_cap_clod = cap_clod.attribute("top");
  109. // ----------------------------------------------------------------
  110. // 화면 open시(와 초기화 버튼 클릭시) 화면 초기화 기능을 수행한다.
  111. // ---------------------------------------------------------------
  112. function fInitialize() {
  113. // 처방 Grid "EDI코드"까지 틀 고정
  114. grd_clodhist.frozenCols = grd_clodhist.colRef("basecd");
  115. grd_clsphist.frozenCols = grd_clsphist.colRef("snglcalcscorcd");
  116. // 상병, 특정내역, 처방 Group의 컨트롤 크기를 초기화한다.
  117. cap_message.attribute("left") = "5";
  118. opt_msgspclformat.attribute("left") = "95";
  119. opt_msgspclformat.attribute("width") = "1099";
  120. // 상병 Grid 크기를 초기화한다.
  121. grp_cldihist.attribute("height") = "170";
  122. grd_cldihist.attribute("height") = "142"; // 상병 Grid의 세로 폭을 축소한다.
  123. // 처방
  124. cap_clod.attribute("top") = df_tp_size_cap_clod; // "90";
  125. grd_clodhist.attribute("height") = "351"; // "527";
  126. cap_grptemp.visible = false;
  127. grp_predoculist.visible = false; // 이전 명세서 목록용 Group
  128. grp_delclodlist.visible = false; // 처방 휴지통 Group
  129. grp_delorderlist.visible = false; // 심사변경 목록 Group
  130. // grp_clsphist.attribute("height") = "632";
  131. // swt_spclmemo.attribute("height") = "608";
  132. // fSetOrderControlSize(); // 처방조회부, 처방 Grid용 Group의 컨트롤 크기를 설정한다.
  133. // fSetDelOrdPreDocuSize(); // 이전명세서, 처방휴지통, 삭제처방 Group의 컨트롤 크기를 설정한다.
  134. case_spclspec.selected = false; // true;
  135. case_judgrmemo.selected = false;
  136. case_ediclammemo.selected = false;
  137. // fInitUIControlSize();
  138. // grid를 인스턴스에 mapping후 인스턴스에 해당하는 빈줄 1줄이 생기므로 grid 초기화
  139. model.removeNodeset("/root/main/list1/cldi");
  140. model.removeNodeset("/root/main/list2/clod");
  141. model.removeNodeset("/root/main/list3/clsp");
  142. model.removeNodeset("/root/main/list4/clbs");
  143. model.removeNodeset("/root/main/list5/clod");
  144. model.removeNodeset("/root/main/list6/delclod");
  145. // 처방Grid용 조회부의 Radio 초기값을 "전체"로 설정한다.
  146. model.setValue("/root/hidden/list2/clodsrch/selectedRdoMatrAct", "-");
  147. model.setValue("/root/hidden/list2/clodsrch/selectedRdoPay", "0");
  148. model.setValue("/root/hidden/list2/clodsrch/selectedRdoItem", "-");
  149. // 특정내역Grid용 필터링 Radio 초기값
  150. model.setValue("/root/hidden/list3/selectedUnitFlag", "-");
  151. // -----------------------
  152. // 공통코드를 조회한다.
  153. // -----------------------
  154. // (ZBC001.js) com.ZBCMCODE에서 기초코드 값을 가져와서 Combo 컨트롤 item으로 설정하기 위해 사용한다.
  155. zbcfGetCodeList(new Array("P0110" // 진료결과(보험)
  156. , "P0297" // 진료결과(산재)
  157. , "P0111" // 입원경로
  158. , "P0112" // 도착경로
  159. , "P0117" // 특정코드
  160. , "P0127" // 조정사유코드
  161. , "P0131" // 표준코드구분
  162. , "P0151" // 심사완료여부
  163. , "P0291" // 진료분야
  164. , "P0287" // 청구과(의과)
  165. , "P0288" // 청구과(치과)
  166. , "P0322" // 청구세부과
  167. , "P0236" // 공상구분
  168. , "P0465" // 명세서삭제사유
  169. , "P0466" // 반송부제기사유
  170. , "P0155" // 청구구분
  171. , "P0261" // 급여종별
  172. ), new Array("/root/init/P0110list", "/root/init/P0297list",
  173. "/root/init/P0111list", "/root/init/P0112list",
  174. "/root/init/P0117list", "/root/init/P0127list",
  175. "/root/init/P0131list", "/root/init/P0151list",
  176. "/root/init/P0291list", "/root/init/P0287list",
  177. "/root/init/P0288list", "/root/init/P0322list",
  178. "/root/init/P0236list", "/root/init/P0465list",
  179. "/root/init/P0466list", "/root/init/P0155list",
  180. "/root/init/P0261list"), false); // minimum을 'false'로 설정한 경우에는
  181. // 코드의 모든속성을 가져온다.
  182. pamfGetCodeList(new Array("PK043"), new Array("/root/init/PK043list"));
  183. pamfGetCodeList(new Array("PK221"), new Array("/root/init/PK221list"));
  184. // -------------------------------------------------
  185. // 진료과, 주치의 조회
  186. // -------------------------------------------------
  187. model.setValue("/root/main/item1/clbs/ioflag", "I");
  188. submit("TRPID20309");
  189. model.makeNode("root/hidden/tmp/orddeptcd");
  190. model.makeNode("root/hidden/tmp/orddeptcd2");
  191. model.makeNode("root/hidden/tmp/orddrid");
  192. model.makeNode("root/hidden/tmp/orddrid2");
  193. model.removeNodeset("root/init/orddeptcd");
  194. model.removeNodeset("root/init/orddeptcd2");
  195. model.removeNodeset("root/init/orddrid");
  196. model.removeNodeset("root/init/orddrid2");
  197. model.makeNode("root/init/orddeptcd");
  198. model.makeNode("root/init/orddeptcd2");
  199. model.makeNode("root/init/orddrid");
  200. model.makeNode("root/init/orddrid2");
  201. model.copyNode("root/init/orddeptcd", "root/hidden/tmp/orddeptcd");
  202. model.copyNode("root/init/orddeptcd2", "root/hidden/tmp/orddeptcd2");
  203. model.copyNode("root/init/orddrid", "root/hidden/tmp/orddrid");
  204. model.copyNode("root/init/orddrid2", "root/hidden/tmp/orddrid2");
  205. model.removeNodeset("root/hidden/tmp/orddeptcd");
  206. model.removeNodeset("root/hidden/tmp/orddeptcd2");
  207. model.removeNodeset("root/hidden/tmp/orddrid");
  208. model.removeNodeset("root/hidden/tmp/orddrid2");
  209. // ----------------------------------------
  210. // EDI관련 컬럼 표시
  211. // ----------------------------------------
  212. fEdiCheck();
  213. // ----------------------------------------
  214. // 사용자에게 보여줄 필요없는 컬럼을 숨긴다.
  215. // ----------------------------------------
  216. fColHidden();
  217. // -----------------------------------------------------------------------
  218. // 20100615 환경저장 조회부분 처리전 로딩상태 저장 (환경초기화에서 사용)
  219. // -----------------------------------------------------------------------
  220. // 1. 상병리스트
  221. var cldihist_obj = document.controls.item("grd_cldihist");
  222. for ( var i = 0; i < cldihist_obj.cols; i++) {
  223. var refval = cldihist_obj.colAttribute(i, "ref");
  224. gCldihist_refdata += refval + "^";
  225. var sizeval = cldihist_obj.colWidth(i);
  226. gCldihist_sizedata += sizeval + "^";
  227. }
  228. gCldihist_refdata = gCldihist_refdata.substring(0, gCldihist_refdata.length - 1);
  229. gCldihist_sizedata = gCldihist_sizedata.substring(0, gCldihist_sizedata.length - 1);
  230. // 2. 처방리스트
  231. var clodhist_obj = document.controls.item("grd_clodhist");
  232. for ( var i = 0; i < clodhist_obj.cols; i++) {
  233. var refval = clodhist_obj.colAttribute(i, "ref");
  234. gClodhist_refdata += refval + "^";
  235. var sizeval = clodhist_obj.colWidth(i);
  236. gClodhist_sizedata += sizeval + "^";
  237. }
  238. gClodhist_refdata = gClodhist_refdata.substring(0, gClodhist_refdata.length - 1);
  239. gClodhist_sizedata = gClodhist_sizedata.substring(0, gClodhist_sizedata.length - 1);
  240. // -----------------------------------------------------------------------
  241. // ---------------------------------------------------------------------------------------------
  242. // 환경저장 조회부분(환경저장된 컬럼 ref순서대로 colMove시킨다.
  243. // ---------------------------------------------------------------------------------------------
  244. model.resetInstanceNode("/root/send/listval/uuee");
  245. model.setValue("/root/send/listval/uuee/scrnid", "SMPID20300"); // SMPID20300_입원사후심사관리.
  246. if (submit("TRPID21602")) {
  247. var selrow = "";
  248. var compsnm = "";
  249. var refdata = "";
  250. var sizedata = "";
  251. var grdobj = "";
  252. var refarr = "";
  253. var sizearr = "";
  254. for ( var x = 1; x <= model.getXPathValue("count(/root/hidden/listval/uuee)"); x++) {
  255. compsnm = model.getValue("/root/hidden/listval/uuee[" + x + "]/compsnm");
  256. if (compsnm) { // Grid ID 정보
  257. refdata = model.getValue("/root/hidden/listval/uuee[" + x + "]/compscnts"); // Grid의
  258. // 칼럼명
  259. sizedata = model.getValue("/root/hidden/listval/uuee[" + x + "]/compssizecnts"); // Grid의
  260. // 칼럼Size
  261. grdobj = document.controls.item(compsnm);
  262. selrow = grd_cldihist.selectedRow(0); // row 선택 후 타이틀 부분 조정시 row = 0으로 바뀌므로 selectedRow로 체크함
  263. refarr = refdata.split("^");
  264. sizearr = sizedata.split("^");
  265. for ( var i = 0; i < refarr.length; i++) {
  266. var colcnt = grdobj.colref("" + refarr[i] + "");
  267. if (i != colcnt) {
  268. grdobj.colMove(i, colcnt, "before", false);
  269. }
  270. var size = sizearr[i];
  271. grdobj.colWidth(i) = eval(size);
  272. }
  273. grdobj.rebuild();
  274. model.setFocus(compsnm);
  275. grdobj.select(selrow, 1) = true;
  276. grdobj.row = selrow; // 환경초기화 이후 row = -1로 설정되므로
  277. }
  278. }
  279. }
  280. // 처방 조회부의 수가코드와 EDI코드 검색용 Input 컨트롤
  281. ipt_calcscorcd.attribute("_chartype") = "upper"; // (tfHelper.js) 대문자로
  282. // 입력을 제한한다.
  283. ipt_edicd.attribute("_chartype") = "upper";
  284. model.refresh();
  285. // 완료 ~ 삭제 Btn 색을 변경한다.
  286. btn_end.attribute("color") = "#cc3333"; // cc3333=붉은색
  287. btn_unjudg.attribute("color") = "#cc3333";
  288. btn_rete.attribute("color") = "#cc3333";
  289. btn_del.attribute("color") = "#cc3333";
  290. btn_save.attribute("font-weight") = "bold";
  291. btn_end.attribute("font-weight") = "bold";
  292. btn_unjudg.attribute("font-weight") = "bold";
  293. btn_rete.attribute("font-weight") = "bold";
  294. btn_del.attribute("font-weight") = "bold";
  295. btn_maininit.attribute("font-weight") = "bold";
  296. // -----------------------
  297. // 화면 권한을 설정한다.
  298. // -----------------------
  299. fCheckAuth();
  300. // ----------------------
  301. // Popup 여부체크
  302. // ----------------------
  303. if (isPopup()) { // (common.js) 자신이 팝업인지 아닌지를 리턴한다.
  304. btn_closepredocupopup.visible = true; // Popup용 닫기 버튼
  305. btn_predocu.visible = false; // 이전명세서 버튼
  306. var clamym = model.getValue("/root/send/item1/clbs/clamym");
  307. var clamdg = model.getValue("/root/send/item1/clbs/clamdg");
  308. var pid = model.getValue("/root/send/item1/clbs/pid");
  309. var pidsn = model.getValue("/root/send/item1/clbs/pidsn");
  310. if (clamym && clamdg && pid && pidsn) {
  311. // --------------------------------------
  312. // 사후 심사 대상자를 조회한 이후의 처리
  313. // --------------------------------------
  314. submit("TRPID20301");
  315. fSetAftJudgTrgtManSrchData();
  316. }
  317. } else {
  318. btn_closepredocupopup.visible = false; // Popup용 닫기 버튼
  319. btn_predocu.visible = true; // 이전명세서 버튼
  320. // ---------------------------------------------
  321. // Popup이 아닌 경우 대상자 조회를 바로 띄운다.
  322. // ---------------------------------------------
  323. fGetInAftJudgTrgtManPidSrch();
  324. }
  325. model.setValue("/root/hidden/reselect", "N"); // 재조회여부(저장버튼을 눌러서 재조회 할 경우)
  326. model.setValue("/root/hidden/orgjudgendyn", ""); // 오리지날 심사상태(심사중이었다가
  327. // 해제되는 경우 원래값 돌려주기 위해
  328. // 사용)
  329. }
  330. // 20100615 환경초기화
  331. function fClearSetInfo() {
  332. var selrow = "";
  333. var compsnm = "";
  334. var refdata = "";
  335. var sizedata = "";
  336. var grdobj = "";
  337. var refarr = "";
  338. var sizearr = "";
  339. // 1. 상병그리드 초기화
  340. selrow = grd_cldihist.selectedRow(0); // row 선택 후 타이틀 부분 조정시 row = 0으로
  341. // 바뀌므로 selectedRow로 체크함
  342. compsnm = "grd_cldihist";
  343. refdata = gCldihist_refdata; // 초기설정 담아둔 글로벌 변수에서 가져온다. Grid의 칼럼명
  344. sizedata = gCldihist_sizedata; // 초기설정 담아둔 글로벌 변수에서 가져온다. Grid의 칼럼Size
  345. grdobj = document.controls.item(compsnm);
  346. refarr = refdata.split("^");
  347. sizearr = sizedata.split("^");
  348. for ( var i = 0; i < refarr.length; i++) {
  349. var colcnt = grdobj.colref("" + refarr[i] + "");
  350. if (i != colcnt) {
  351. grdobj.colMove(i, colcnt, "before", false);
  352. }
  353. var size = sizearr[i];
  354. grdobj.colWidth(i) = eval(size);
  355. }
  356. grdobj.rebuild();
  357. model.setFocus(compsnm);
  358. grdobj.select(selrow, 1) = true;
  359. grdobj.row = selrow; // 환경초기화 이후 row = -1로 설정되므로
  360. // 2. 처방그리드 초기화
  361. selrow = grd_clodhist.selectedRow(0); // row 선택 후 타이틀 부분 조정시 row = 0으로
  362. // 바뀌므로 selectedRow로 체크함
  363. compsnm = "grd_clodhist";
  364. refdata = gClodhist_refdata; // 초기설정 담아둔 글로벌 변수에서 가져온다. Grid의 칼럼명
  365. sizedata = gClodhist_sizedata; // 초기설정 담아둔 글로벌 변수에서 가져온다. Grid의 칼럼Size
  366. grdobj = document.controls.item(compsnm);
  367. refarr = refdata.split("^");
  368. sizearr = sizedata.split("^");
  369. for ( var i = 0; i < refarr.length; i++) {
  370. var colcnt = grdobj.colref("" + refarr[i] + "");
  371. if (i != colcnt) {
  372. grdobj.colMove(i, colcnt, "before", false);
  373. }
  374. var size = sizearr[i];
  375. grdobj.colWidth(i) = eval(size);
  376. }
  377. grdobj.rebuild();
  378. model.setFocus(compsnm);
  379. grdobj.select(selrow, 1) = true;
  380. grdobj.row = selrow; // 환경초기화 이후 row = -1로 설정되므로
  381. }
  382. // 20100615 환경저장
  383. function fSaveSetInfo() {
  384. var uueemax = 0;
  385. var uueemod = "";
  386. var compsnm = "";
  387. var refdata = "";
  388. var sizedata = "";
  389. var grdobj = "";
  390. model.resetInstanceNode("/root/send/listval/uuee");
  391. // 1. 상병그리드 저장
  392. compsnm = "grd_cldihist";
  393. uueemax++;
  394. uueemod = "I";
  395. refdata = "";
  396. sizedata = "";
  397. for ( var x = 1; x <= model
  398. .getXPathValue("count(/root/hidden/listval/uuee)"); x++) {
  399. if (model.getValue("/root/hidden/listval/uuee[" + x + "]/compsnm") == compsnm) {
  400. uueemod = "U";
  401. break;
  402. }
  403. }
  404. grdobj = document.controls.item(compsnm);
  405. for ( var i = 0; i < grdobj.cols; i++) {
  406. var refval = grdobj.colAttribute(i, "ref");
  407. refdata += refval + "^";
  408. var sizeval = grdobj.colWidth(i);
  409. sizedata += sizeval + "^";
  410. }
  411. refdata = refdata.substring(0, refdata.length - 1);
  412. sizedata = sizedata.substring(0, sizedata.length - 1);
  413. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/flag", uueemod);
  414. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/scrnid", "SMPID20300");
  415. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compsnm", compsnm);
  416. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compscnts", refdata);
  417. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compsrefcnts", "");
  418. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compssizecnts", sizedata);
  419. // 2. 처방그리드 저장
  420. compsnm = "grd_clodhist";
  421. uueemax++;
  422. uueemod = "I";
  423. refdata = "";
  424. sizedata = "";
  425. for ( var x = 1; x <= model
  426. .getXPathValue("count(/root/hidden/listval/uuee)"); x++) {
  427. if (model.getValue("/root/hidden/listval/uuee[" + x + "]/compsnm") == compsnm) {
  428. uueemod = "U";
  429. break;
  430. }
  431. }
  432. grdobj = document.controls.item(compsnm);
  433. for ( var i = 0; i < grdobj.cols; i++) {
  434. var refval = grdobj.colAttribute(i, "ref");
  435. refdata += refval + "^";
  436. var sizeval = grdobj.colWidth(i);
  437. sizedata += sizeval + "^";
  438. }
  439. refdata = refdata.substring(0, refdata.length - 1);
  440. sizedata = sizedata.substring(0, sizedata.length - 1);
  441. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/flag", uueemod);
  442. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/scrnid", "SMPID20300");
  443. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compsnm", compsnm);
  444. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compscnts", refdata);
  445. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compsrefcnts", "");
  446. model.makeValue("/root/send/listval/uuee[" + uueemax + "]/compssizecnts", sizedata);
  447. if (submit("TXPID21601")) {
  448. messageBox("사용자 환경 저장이", "I002"); // /사용자 환경 저장이 완료되었습니다.
  449. }
  450. }
  451. // -----------------------------------------
  452. // 사용자에게 보여줄 필요없는 컬럼은 숨긴다.
  453. // -----------------------------------------
  454. function fColHidden() {
  455. grd_clodhist.colHidden(grd_clodhist.colRef("toot")) = true;
  456. grd_clodhist.colHidden(grd_clodhist.colRef("choiordamt")) = true; // 선택단가
  457. grd_clodhist.colHidden(grd_clodhist.colRef("choiordtotamt")) = true; // 선택진료sum
  458. grd_clodhist.colHidden(grd_clodhist.colRef("item1")) = true;
  459. grd_clodhist.colHidden(grd_clodhist.colRef("item2")) = true;
  460. grd_clodhist.colHidden(grd_clodhist.colRef("ediitem")) = true;
  461. grd_clodhist.colHidden(grd_clodhist.colRef("totdrugqty")) = true;
  462. grd_clodhist.colHidden(grd_clodhist.colRef("baserlapnt")) = true;
  463. grd_clodhist.colHidden(grd_clodhist.colRef("baseaddrlapnt")) = true;
  464. grd_clodhist.colHidden(grd_clodhist.colRef("pntunitcost")) = true;
  465. grd_clodhist.colHidden(grd_clodhist.colRef("hosinresncd")) = true;
  466. grd_clodhist.colHidden(grd_clodhist.colRef("rcptunitcost")) = true;
  467. grd_clodhist.colHidden(grd_clodhist.colRef("prcpflag")) = true;
  468. grd_clodhist.colHidden(grd_clodhist.colRef("rcptcalcamt")) = true;
  469. grd_clodhist.colHidden(grd_clodhist.colRef("estmcdnm")) = true;
  470. grd_clodhist.colHidden(grd_clodhist.colRef("pynpy1")) = true;
  471. grd_clodhist.colHidden(grd_clodhist.colRef("earncls1")) = true;
  472. grd_clodhist.colHidden(grd_clodhist.colRef("earncls2")) = true;
  473. grd_clodhist.colHidden(grd_clodhist.colRef("earncls3")) = true;
  474. grd_clodhist.colHidden(grd_clodhist.colRef("mechfromdd")) = true;
  475. grd_clodhist.colHidden(grd_clodhist.colRef("mechtodd")) = true;
  476. grd_clodhist.colHidden(grd_clodhist.colRef("workflag")) = true;
  477. }
  478. // -----------------------------------------------------------------
  479. // submit("TRPID20301") 사후심사대상자를 조회한 이후의 처리를 한다.
  480. // -----------------------------------------------------------------
  481. function fSetAftJudgTrgtManSrchData() {
  482. // 상단에 환자정보 기입하기
  483. if (!isPopup()) { // (common.js) 자신이 팝업인지 아닌지를 리턴한다.
  484. fSetInPatPamInfo();
  485. }
  486. // 심사완료여부 상태에 따라 "저장 / 재계산 / 완료 / 미심 / 보류 / 삭제" Btn 권한을 설정한다.
  487. fSetJudgStatBtnAuth();
  488. if (getNodesetCount("/root/main/dupidlist/dupid") > 0) {
  489. var pid = model.getValue("/root/main/item1/clbs/pid");
  490. var duppid = model.getValue("/root/main/dupidlist/dupid/newpid");
  491. if (pid == duppid) {
  492. duppid = model.getValue("/root/main/dupidlist/dupid/oldpid")
  493. }
  494. messageBox("★★★ 합번정보 : 해당 환자는 " + duppid + " 챠트번호와 합번정보가 있으며, " + "진료개시일이 동일한 " + duppid + "의 명세서가 존재하니 반드시 청구여부 확인하시기 바랍니다. ★★★", "I"); // /
  495. // 잠금설정되어있는 상태입니다.수정할 수 없습니다.
  496. }
  497. if (model.getValue("/root/main/item1/clbs/clamkey")) {
  498. var clamendyn = model.getValue("/root/main/item1/clbs/clamendyn");
  499. var lockyn = model.getValue("/root/main/item1/clbs/lockyn");
  500. if (lockyn == "Y") {
  501. messageBox("잠금설정되어있는 상태입니다. 수정", "E001"); // / 잠금설정되어있는 상태입니다. 수정할 수 없습니다.
  502. }
  503. } else {
  504. // 해당 심사대상자가 없는 경우
  505. return;
  506. }
  507. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  508. // fSortSpclNo();
  509. // 특정코드 줄단위 였던 row가 명세서 단위 row로 바뀌는 경우, 특정코드 값이 표시되지 않으므로 다시 확인한다.
  510. // for (var i = 1; i < grd_clsphist.rows; i++) {
  511. // grd_clsphist.cellComboNodeset(i, grd_clsphist.colRef("spclcd")) =
  512. // "/root/init/P0117list/P0117";
  513. // }
  514. // 처방 조회부 - 재행/급여/항목구분 Radio 선택에 따라 처방 내역을 보여준다.
  515. // fGetSelectedOrderData();
  516. // if (model.getValue("/root/hidden/reselect") == "N") { // 저장후 재조회가 아닐
  517. // 경우만..(속도개선)
  518. // 처방 항목 구분 및 선별심사 처방 색깔 구분
  519. fSetOrderData();
  520. // }
  521. // 항목별 금액소계표시 2011.01.04 김상진보류
  522. // fSetSubtotal();
  523. // "저장" Btn 클릭시에 인적사항이 변경되었는지 여부를 알기 위해 조회한 항목을 임시로 저장해두고 추후에 비교한다.
  524. model.copyNode("/root/hidden/item1/initclbs/clbs", "/root/main/item1/clbs");
  525. model.copyNode("/root/hidden/item1/initmemo/memo", "/root/main/item1/memo");
  526. // "급여구분" 조회위한 급여처방을 임시로 저장해 둔다.
  527. model.copyNode("/root/hidden/initclodlist/list2", "/root/main/list2");
  528. // 진료결과 nodeset (산재:P0297, 보험,보호,자보:P0110)
  529. if (model.getValue("/root/main/item1/clbs/insukindcd") == "41") {
  530. cmb_ordrsltcd.choices.itemset.attribute("nodeset") = "/root/init/P0297list/P0297";
  531. } else {
  532. cmb_ordrsltcd.choices.itemset.attribute("nodeset") = "/root/init/P0110list/P0110";
  533. }
  534. cmb_ordrsltcd.refresh();
  535. // 진료과 의사 값에 따라 선택가능한 주치의 nodeset을 설정한다.
  536. // cmb_orddrid.choices.itemset.attribute("nodeset") =
  537. // "/root/init/orddrid/orddridlist[dp = '"+
  538. // model.getValue("/root/main/item1/clbs/orddeptcd") +"']";
  539. // if (model.getValue("/root/main/item1/clbs/dethyn") == "Y") {
  540. // messageBox("사망", "I005"); ///사망 환자입니다.
  541. // }
  542. // ---------------------------------------------------------------------------------------------------------
  543. // 조회된 심사대상자의 특이 인적사항, 보조/요율 등을 계산하여 보여준다.
  544. fGetPersonalData();
  545. // ---------------------------------------------------------------------------------------------------------
  546. // 상병 Grid의 상병순서를 체크하고, 마지막 줄에 줄추가를 한다.
  547. // fSortDiagNo(true);
  548. // 환자호출시 기본적으로 특정내역 탭을 선택하여 보여준다 - 20091112 박창원 -- 병원별 차등적용으로 변경
  549. // 환자호출시 병원별로 차별화 해서 디스플레이 해줌 - 20091117 박창원
  550. var dispclsp = model.getValue("/root/main/item1/clbs/dispclsp");
  551. if (dispclsp == "S") { // 특정내역우선
  552. btn_spclspec.selected = true;
  553. btn_judgrmemo.selected = false;
  554. btn_ediclammemo.selected = false;
  555. // btn_spclspec.dispatch("DOMActivate");
  556. fGeCaseSelect("case_spclspec", true);
  557. } else if (dispclsp == "E") {
  558. btn_spclspec.selected = false;
  559. btn_judgrmemo.selected = false;
  560. btn_ediclammemo.selected = true;
  561. // btn_ediclammemo.dispatch("DOMActivate");
  562. fGeCaseSelect("case_ediclammemo", false);
  563. } else if (dispclsp == "U") {
  564. btn_spclspec.selected = false;
  565. btn_judgrmemo.selected = true;
  566. btn_ediclammemo.selected = false;
  567. // btn_judgrmemo.dispatch("DOMActivate");
  568. fGeCaseSelect("case_judgrmemo", false);
  569. }
  570. // model.refresh(); // 밑에 refresh 있어서 삭제
  571. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가"
  572. if (grd_cldihist.rows == 1) {
  573. fDiagGridInsertRow("Y", "N");
  574. }
  575. model.setFocus("grd_cldihist");
  576. grd_cldihist.row = 1;
  577. grd_clodhist.row = 1; // 그리드의 첫줄부터 표시되도록 포커스를 0으로 설정한다..
  578. // 공여자일경우 처리 - 20091021 박창원
  579. var rsvcnt = model.getValue("/root/main/list9/trnpt/trnptcnt");
  580. var rsvname = model.getValue("/root/main/list9/trnpt/rsvname");
  581. var rsvrrgstno = model.getValue("/root/main/list9/trnpt/rsvrrgstno");
  582. if (rsvcnt > "1") { // 건수가 2건이상 있는겅우 메세지 처리
  583. messageBox("이식건수가 2건 이상인 공여자입니다 이식 정보를 확인하세요 ", "I009");
  584. }
  585. if (rsvcnt == "1") { // 건수가 1건인경우 적용할것인지 질문
  586. var msg = messageBox("공여자입니다 정보를 수혜자로 변경(변경후 저장해야 적용) ", "S001");
  587. if (msg == "6") {
  588. model.setValue("/root/main/item1/clbs/patnm", rsvname);
  589. model.setValue("/root/main/item1/clbs/patrrgstno", rsvrrgstno);
  590. model.refresh();
  591. }
  592. }
  593. // 메모여부에 따른 색깔분류 - 박창원 20091102
  594. var edimemo = model.getValue("/root/main/item1/memo/edimemo");
  595. var usermemo = model.getValue("/root/main/item1/memo/judgmemo");
  596. var edilength = edimemo.length;
  597. var userlength = usermemo.length;
  598. if (edilength > 0) {
  599. btn_ediclammemo.attribute("background-image") = "../../../com/commonweb/images/tab_hide_orange.gif";
  600. } else if (edilength == 0) {
  601. btn_ediclammemo.attribute("class") = "btn_sw"; // 표준에서 정한 기본 버튼으로 설정
  602. }
  603. if (userlength > 0) {
  604. btn_judgrmemo.attribute("background-image") = "../../../com/commonweb/images/tab_hide_orange.gif";
  605. } else if (userlength == 0) {
  606. btn_judgrmemo.attribute("class") = "btn_sw"; // 표준에서 정한 기본 버튼으로 설정
  607. }
  608. // 20091230 완화의료 표시 추가
  609. var fixrateyn = model.getValue("/root/main/item1/clbs/fixrateyn");
  610. if (fixrateyn == "7" || fixrateyn == "8") {
  611. pm_flag.visible = true;
  612. }
  613. // 20100402 주민반송일 경우 온라인 주민번호 확인메세지 추가
  614. if (model.getValue("/root/main/item1/clbs/lockyn") != "Y"
  615. && getStringLength(model.getValue("/root/main/item1/clbs/realrgstno")) == 13 // 자리수체크
  616. && model.getValue("/root/main/item1/clbs/realrgstno") != model.getValue("/root/main/item1/clbs/patrrgstno")
  617. && model.getValue("/root/main/item1/clbs/preresncd").substr(0, 2) == "91") {
  618. var ans = messageBox("명세서상의 주민번호와 온라인 상의 주민번호가 상이합니다. "
  619. + "\n\n"
  620. + "온라인 상의 주민번호는 ( "
  621. + model.getValue("/root/main/item1/clbs/realrgstno").substr(0,6)
  622. + "-"
  623. + model.getValue("/root/main/item1/clbs/realrgstno").substr(6, 7) + " ) 입니다." + "\n\n" + "주민번호를 변경 ", "S001");
  624. if (ans == 6) { // 6: yes, 7:no, 2:cancel
  625. model.setValue("/root/main/item1/clbs/patrrgstno", model.getValue("/root/main/item1/clbs/realrgstno"));
  626. ipt_patrrgstno.refresh();
  627. }
  628. }
  629. var judgdifamt = model.getValue("/root/main/item1/clbs/judgdifamt");
  630. if (Math.abs(judgdifamt) >= 10000 ) {
  631. messageBox("심사수정차액("+opt_judgdifamt.label+")이 10,000원 이상입니다.", "I007");
  632. }
  633. var bfafamtdiff = getNodesetCount("/root/main/bfafamtdiff/amtlist");
  634. var payamt = model.getValue("/root/main/bfafamtdiff/amtlist/payamt");
  635. var tot12 = model.getValue("/root/main/bfafamtdiff/amtlist/tot12");
  636. var ownbamt = model.getValue("/root/main/bfafamtdiff/amtlist/ownbamt");
  637. var ownb12 = model.getValue("/root/main/bfafamtdiff/amtlist/ownb12");
  638. var insubamt = model.getValue("/root/main/bfafamtdiff/amtlist/insubamt");
  639. var clam12 = model.getValue("/root/main/bfafamtdiff/amtlist/clam12");
  640. var handcapfund = model.getValue("/root/main/bfafamtdiff/amtlist/handcapfund");
  641. var handcap12 = model.getValue("/root/main/bfafamtdiff/amtlist/handcap12");
  642. var procsubtamt = model.getValue("/root/main/bfafamtdiff/amtlist/procsubtamt");
  643. var subt12 = model.getValue("/root/main/bfafamtdiff/amtlist/subt12");
  644. var suppamt = model.getValue("/root/main/bfafamtdiff/amtlist/suppamt");
  645. var supp12 = model.getValue("/root/main/bfafamtdiff/amtlist/supp12");
  646. var max12 = model.getValue("/root/main/bfafamtdiff/amtlist/max12");
  647. var payownblimamt = model.getValue("/root/main/bfafamtdiff/amtlist/payownblimamt");
  648. if (bfafamtdiff > 0 ) {
  649. messageBox("원무사후차액이 10,000원 이상입니다." + "\n" +
  650. "원무급여총액:[" + payamt + "] 사후급여총액:[" + tot12 + "]\n" +
  651. "원무본인부담액:[" + ownbamt + "] 사후본인부담액:[" + ownb12 + "]\n" +
  652. "원무청구액:[" + insubamt + "] 사후청구액:[" + clam12 + "]\n" +
  653. "원무장애인금액:[" + handcapfund + "] 사후장애인금액:[" + handcap12 + "]\n" +
  654. "원무대불금:[" + procsubtamt + "] 사후대불금:[" + subt12 + "]\n" +
  655. "원무지원금:[" + suppamt + "] 사후지원금:[" + supp12 + "]\n" +
  656. "원무본인부담상한액:[" + max12 + "] 사후본인부담상한액:[" + payownblimamt + "]\n"
  657. , "I007");
  658. }
  659. model.refresh();
  660. /*
  661. * model.setFocus("grd_cldihist"); grd_cldihist.row = grd_cldihist.rows-1;
  662. * grd_cldihist.col = grd_cldihist.colRef("diagcd");
  663. * grd_cldihist.editCell();
  664. */
  665. }
  666. // ---------------------------
  667. // 상단에 환자정보 기입하기
  668. // ---------------------------
  669. function fSetInPatPamInfo() {
  670. // emr/prcpmngtweb/xrw/SPMMO08900_환자기본정보설정.xrw
  671. var ioflag = model.getValue("/root/main/item1/clbs/ioflag");
  672. var stsioflag = model.getValue("/root/main/item1/clbs/stsioflag");
  673. var pid = model.getValue("/root/main/item1/clbs/pid");
  674. var indd = model.getValue("/root/main/item1/clbs/indd");
  675. var cretno = model.getValue("/root/main/item1/clbs/cretno");
  676. var instcd = model.getValue("/root/main/item1/clbs/instcd");
  677. var ordtodd = model.getValue("/root/main/item1/clbs/ordtodd");
  678. var srchdd = ""
  679. // 20100201 응급실 주과구분(C) 추가
  680. if (stsioflag == "E" || stsioflag == "C") {
  681. ioflag = "E";
  682. srchdd = indd;
  683. } else {
  684. ioflag = "I";
  685. srchdd = ordtodd;
  686. }
  687. if (pid) {
  688. // 입원환자 parameter 구조 ioflag▦pid▦indd▦cretno▦instcd▦srchdd
  689. var param = ioflag + "▦" + pid + "▦" + indd + "▦" + cretno + "▦" + instcd + "▦" + srchdd;
  690. setParameter("condparam", param);
  691. // 원무에 환자정보가 없는 경우 에러메시지 화면을 보이지 않게 처리함
  692. setParameter("errflag", "Y");
  693. modal(
  694. "SPMMO08900",
  695. 1,
  696. 0,
  697. 0,
  698. "",
  699. "",
  700. "",
  701. "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  702. var useyn = getParameter("SPMMO08900_rtn_useyn");
  703. if (useyn == "Y") {
  704. setParameter("SPMMO08900_rtn_useyn", "");
  705. } else {
  706. delPatientInfos(); // (common.js) 상단의 환자정보 삭제
  707. }
  708. } else {
  709. delPatientInfos(); // (common.js) 상단의 환자정보 삭제
  710. }
  711. }
  712. // -----------------------------------------------------------------------------------------
  713. // 심사완료여부 상태에 따라 "저장 / 재계산 / 완료 / 미심 / 보류 / 삭제" Btn 권한을 설정한다.
  714. // -----------------------------------------------------------------------------------------
  715. function fSetJudgStatBtnAuth() {
  716. // 1. 팝업이 아닌 경우 "11100000" // RXP권한
  717. // 2. 심사전 명세서 팝업 "00100000"
  718. // 3. 이전 명세서 팝업 "11100000"
  719. // 4. 그외 팝업 "10100000"
  720. var xAuth = checkAuth("X"); // 처리권한(입력, 수정, 삭제 등) - RXP
  721. if (xAuth == true) {
  722. var clamendyn = model.getValue("/root/main/item1/clbs/clamendyn");
  723. var lockyn = model.getValue("/root/main/item1/clbs/lockyn");
  724. if (lockyn == "N") { // 청구완료여부 A:샘생성전
  725. var userid = getUserId(); // (common.js) 현재 로그인한 사용자 번호(ID)
  726. if (userid) {
  727. } else {
  728. userid = "12345678";
  729. }
  730. var judgendyn = model.getValue("/root/main/item1/clbs/judgendyn");
  731. // 심사중이면...
  732. if (judgendyn == "B") {
  733. if (model.getValue("/root/hidden/reselect") == "N") {
  734. var lastupdtrid = model
  735. .getValue("/root/main/item1/clbs/lastupdtrid");
  736. if (lastupdtrid == userid) {
  737. // rowstat = "ing";
  738. btn_save.disabled = false;
  739. btn_end.disabled = false;
  740. btn_unjudg.disabled = false;
  741. btn_rete.disabled = false;
  742. btn_del.disabled = false;
  743. // btn_cretdel.disabled = false;
  744. messageBox("기존에 심사중이었던", "I005"); // /기존에 심사중이었던
  745. // 환자입니다.
  746. } else {
  747. btn_save.disabled = true;
  748. btn_end.disabled = true;
  749. btn_unjudg.disabled = true;
  750. btn_rete.disabled = true;
  751. btn_del.disabled = true;
  752. // btn_cretdel.disabled = true; // 생성삭제 Btn
  753. // 심사중인 환자 메시지
  754. messageBox("다른 심사자가 심사중인", "I005"); // /다른 심사자가 심사중인
  755. // 환자입니다.
  756. }
  757. // -------------------------------------------------
  758. // 원래 심사상태를 저장해둔다.(심사중해제를 위해서)
  759. // -------------------------------------------------
  760. // model.setValue("/root/hidden/orgjudgendyn", judgendyn);
  761. } else {
  762. btn_save.disabled = false;
  763. btn_end.disabled = false;
  764. btn_unjudg.disabled = false;
  765. btn_rete.disabled = false;
  766. btn_del.disabled = false;
  767. // btn_cretdel.disabled = false;
  768. // -------------------------------------------------
  769. // 저장후재조회여부 초기화
  770. // -------------------------------------------------
  771. model.setValue("/root/hidden/reselect", "N");
  772. }
  773. }
  774. // 심사중이 아니라면
  775. else if (judgendyn != "B") {
  776. // 심사자ID이고 미심(A)일 경우만 심사중으로 변경
  777. if (model.getValue("/root/init/item3/judgidyn") == "Y"
  778. && judgendyn == 'A') {
  779. // "심사중" 상태로 설정한다.
  780. var judgendyn = model.getValue("/root/main/item1/clbs/judgendyn");
  781. model.removeNodeset("/root/send/item4");
  782. model.makeValue("/root/send/item4/endclbs/clamym", model.getValue("/root/main/item1/clbs/clamym"));
  783. model.makeValue("/root/send/item4/endclbs/clamdg", model.getValue("/root/main/item1/clbs/clamdg"));
  784. model.makeValue("/root/send/item4/endclbs/pid", model.getValue("/root/main/item1/clbs/pid"));
  785. model.makeValue("/root/send/item4/endclbs/pidsn", model.getValue("/root/main/item1/clbs/pidsn"));
  786. model.makeValue("/root/send/item4/endclbs/judgendyn", "B");
  787. submit("TXPID20302");
  788. model.setValue("/root/main/item1/clbs/judgendyn", "B");
  789. model.setValue("/root/main/item1/clbs/lastupdtrid", userid);
  790. model.refreshpart("/root/main/item1/clbs/judgendyn");
  791. // 대상자화면 상태도 update
  792. fSetJudgSaveState("B"); // 심사완료여부 (P0151) - B: 심사중
  793. }
  794. // -------------------------------------------------
  795. // 원래 심사상태를 저장해준다.(심사중해제를 위해서)
  796. // -------------------------------------------------
  797. model.setValue("/root/hidden/orgjudgendyn", judgendyn);
  798. if (judgendyn == "D") { // D: 삭제
  799. btn_save.disabled = true; // 저장
  800. // 2012.5.23 이경민 심사완료일자가 15일 이후면 완료버튼 비활성화 추가.
  801. var judgenddd = model.getValue("/root/hidden/smpid20200/rslt/judgenddd");
  802. judgenddd = judgenddd.toDate();
  803. var bfday15 = getCurrentDate().toDate().getAddDate(-15, 'D');
  804. if (judgenddd < bfday15) {
  805. btn_end.disabled = true; // 완료
  806. } else {
  807. btn_end.disabled = false; // 완료
  808. }
  809. btn_unjudg.disabled = false; // 미심사
  810. btn_rete.disabled = false; // 보류
  811. btn_del.disabled = true; // 삭제
  812. // btn_cretdel.disabled = false; // 생성삭제 Btn
  813. } else if (judgendyn == "C" || judgendyn == "E"
  814. || judgendyn == "Z") { // C: 심사완료, E: 통합완료, Z: 일괄완료
  815. btn_save.disabled = false;
  816. btn_end.disabled = false;
  817. btn_unjudg.disabled = false;
  818. btn_rete.disabled = false;
  819. btn_del.disabled = false;
  820. // btn_cretdel.disabled = false;
  821. } else if (judgendyn == "A") { // A: 미심사
  822. btn_save.disabled = false;
  823. btn_end.disabled = false;
  824. btn_unjudg.disabled = true;
  825. btn_rete.disabled = false;
  826. btn_del.disabled = false;
  827. // btn_cretdel.disabled = false;
  828. } else if (judgendyn == "N") { // N: 보류
  829. btn_save.disabled = false;
  830. btn_end.disabled = false;
  831. btn_unjudg.disabled = false;
  832. btn_rete.disabled = true;
  833. btn_del.disabled = false;
  834. // btn_cretdel.disabled = false;
  835. } else { // B: 심사중
  836. btn_save.disabled = false;
  837. btn_end.disabled = false;
  838. btn_unjudg.disabled = false;
  839. btn_rete.disabled = false;
  840. btn_del.disabled = false;
  841. // btn_cretdel.disabled = false; // 생성삭제 Btn
  842. }
  843. } // if (rowstat != "Y")
  844. } // if (clamendyn == "A")
  845. else {
  846. // 청구완료여부 A:샘생성전 이 아닌 경우
  847. btn_save.disabled = true;
  848. btn_end.disabled = true;
  849. btn_unjudg.disabled = true;
  850. btn_rete.disabled = true;
  851. btn_del.disabled = true;
  852. // btn_cretdel.disabled = true; // 생성삭제 Btn
  853. }
  854. } // if (xAuth == true)
  855. // 유형보조가 정상(00)이 아닐 경우
  856. var suppkindcd = model.getValue("/root/main/item1/clbs/suppkindcd");
  857. if (suppkindcd != "" && suppkindcd != "00") {
  858. opt_suppkind.attribute("background-color") = "#f7a08b"; // class="color_6" 다홍색"#cece9c";
  859. opt_payownbrate.attribute("background-color") = "#f7a08b"; // class="color_6" 다홍색"#cece9c";
  860. } else {
  861. opt_suppkind.attribute("background-color") = "#f2f2f2"; // output_fix 클래스의 background-color
  862. opt_payownbrate.attribute("background-color") = "#f2f2f2"; // output_fix 클래스의 background-color
  863. }
  864. // 특이환자 버튼 설정
  865. if (model.getValue("/root/main/item1/clbs/patspcfyn") == "Y") {
  866. btn_patspcfyn.attribute("background-image") = "../../../com/commonweb/images/icon_btn_s.gif"; // 주황색
  867. } else {
  868. btn_patspcfyn.attribute("background-image") = "../../../com/commonweb/images/icon_btn.gif"; // 파란색
  869. }
  870. // 수술환자의 경우 수술(유) 버튼의 색상을 설정한다.
  871. if (model.getValue("/root/main/item1/clbs/opyn") == "Y") {
  872. btn_opyn.visible = true;
  873. btn_opyn.attribute("class") = "btn5_letter4";
  874. btn_opyn.attribute("color") = "#cc3333"; // #ff0066"; // 해당 정보가 있는 경우
  875. // 버튼 색 변경 // cc3333=붉은색
  876. // 분만간호기록 Btn
  877. btn_babymom.attribute("left") = "193px";
  878. } else {
  879. btn_opyn.visible = false;
  880. btn_opyn.attribute("class") = "btn2_letter4"; // 표준에서 정한 기본 버튼으로 설정
  881. // 분만간호기록 Btn
  882. btn_babymom.attribute("left") = "260px";
  883. }
  884. // 분만간호기록 버튼 설정
  885. if (model.getValue("/root/main/item1/clbs/bornbaby") == "Y") {
  886. btn_babymom.visible = true;
  887. btn_babymom.attribute("class") = "btn5_letter6";
  888. btn_babymom.attribute("color") = "#cc3333"; // "#ff0066"; // 해당 정보가 있는
  889. // 경우 버튼 색 변경 // cc3333=붉은색
  890. } else {
  891. btn_babymom.visible = false;
  892. btn_babymom.attribute("class") = "btn2_letter6"; // 표준에서 정한 기본 버튼으로
  893. // 설정
  894. }
  895. // 상병이력 버튼 설정
  896. if (model.getValue("/root/main/item1/clbs/diaghist") == "Y") {
  897. btn_diagHist.attribute("class") = "btn5_letter4";
  898. btn_diagHist.attribute("color") = "#cc3333"; // #ff0066"; // 해당 정보가
  899. // 있는 경우 버튼 색 변경 //
  900. // cc3333=붉은색
  901. } else {
  902. btn_diagHist.attribute("class") = "btn2_letter4"; // 표준에서 정한 기본 버튼으로
  903. // 설정
  904. }
  905. // 원외처방 버튼 설정
  906. var btntop = btn_oprcp.attribute("top");
  907. if (model.getValue("/root/main/item1/clbs/oprcp") == "Y") {
  908. btn_oprcp.attribute("class") = "btn5_letter4";
  909. btn_oprcp.attribute("color") = "#cc3333"; // #ff0066"; // 해당 정보가 있는 경우
  910. // 버튼 색 변경 // cc3333=붉은색
  911. btn_oprcp.attribute("top") = btntop;
  912. } else {
  913. btn_oprcp.attribute("class") = "btn2_letter4"; // 표준에서 정한 기본 버튼으로 설정
  914. btn_oprcp.attribute("top") = btntop;
  915. }
  916. // 메모이력 버튼 설정
  917. if (model.getValue("/root/main/item1/clbs/memohist") == "Y") {
  918. btn_memohist.attribute("class") = "btn5_letter4";
  919. btn_memohist.attribute("color") = "#cc3333"; // #ff0066"; // 해당 정보가
  920. // 있는 경우 버튼 색 변경 //
  921. // cc3333=붉은색
  922. } else {
  923. btn_memohist.attribute("class") = "btn2_letter4"; // 표준에서 정한 기본 버튼으로
  924. // 설정
  925. }
  926. // (특정내역) 반복 버튼 설정
  927. if (model.getValue("/root/main/item1/memo/judgmemorepeat") == "R") {
  928. btn_judgmemorepeat.attribute("class") = "btn5_letter6";
  929. btn_judgmemorepeat.attribute("color") = "#cc3333"; // #ff0066"; // 해당
  930. // 정보가 있는 경우 버튼 색 변경
  931. // // cc3333=붉은색
  932. } else {
  933. btn_judgmemorepeat.attribute("class") = "btn2_letter6"; // 표준에서 정한 기본
  934. // 버튼으로 설정
  935. }
  936. if (model.getValue("/root/main/item1/memo/edimemorepeat") == "R") {
  937. btn_edimemorepeat.attribute("class") = "btn5_letter6";
  938. btn_edimemorepeat.attribute("color") = "#cc3333"; // #ff0066"; // 해당
  939. // 정보가 있는 경우 버튼 색 변경
  940. // // cc3333=붉은색
  941. } else {
  942. btn_edimemorepeat.attribute("class") = "btn2_letter6"; // 표준에서 정한 기본
  943. // 버튼으로 설정
  944. }
  945. // 이전명세서 버튼 설정 20100224 입원쪽 누락되어 있어 추가
  946. if (model.getValue("/root/main/item1/clbs/predocuyn") == "Y") {
  947. btn_predocu.attribute("class") = "btn5_letter5";
  948. btn_predocu.attribute("color") = "#cc3333"; // 해당 정보가 있는 경우 버튼 색 변경 //
  949. // cc3333=붉은색
  950. } else {
  951. btn_predocu.attribute("class") = "btn2_letter5"; // 표준에서 정한 기본 버튼으로
  952. // 설정
  953. }
  954. /*
  955. * // 메모가 저장된 경우 메모이력 버튼의 색상을 설정한다. var judgmemo =
  956. * model.getValue("/root/main/item1/memo/judgmemo"); var edimemo =
  957. * model.getValue("/root/main/item1/memo/edimemo"); if (judgmemo || edimemo) {
  958. * btn_memohist.attribute("class") = "btn5_letter4";
  959. * btn_memohist.attribute("color") = "#ff0066"; // 해당 정보가 있는 경우 버튼 색 변경 }
  960. * else { btn_memohist.attribute("class") = "btn2_letter4"; // 표준에서 정한 기본
  961. * 버튼으로 설정 }
  962. */
  963. // 같은 청구월에 동일진료과명세서가 존재하는 경우
  964. if (model.getValue("/root/main/item1/clbs/samedocuyn") == "Y") {
  965. messageBox("동일청구월 동일진료과 명세서가 존재합니다.", "I007"); // 확인하십시오 !
  966. }
  967. // 특정코드 MT015, MT016, MT004 정보가 입력된 환자인지를 확인한다.
  968. fCheckSpclSpecData();
  969. // 16세미만, 35세 이상 초산 산모 필수 진단 체크
  970. var chk_R = model.getValue("/root/main/list8/clod[snglcalcscorcd='R4351' "
  971. + "or snglcalcscorcd='R3131' " + "or snglcalcscorcd='R3141' "
  972. + "or snglcalcscorcd='R4361' " + "or snglcalcscorcd='R4519' "
  973. + "]/snglcalcscorcd"); // 초산 상병체크
  974. var patage = parseInt(model.getValue("/root/main/item1/clbs/patage"));
  975. if (chk_R.length > 0 && (patage >= 35 || patage < 16)) {
  976. messageBox("어린 초임부 또는 고령초임부", "I009");
  977. }
  978. var clbs_licnsno = model.getValue("/root/main/item1/clbs/licnsno");
  979. var cldi_licnsno = model.getValue("/root/main/list1/cldi[diagseq='1']/licnsno");
  980. var clod_snglcalcscorcd = model.getValue("/root/main/list8/clod[item='0101' or item='0102']/snglcalcscorcd");
  981. var holigbn = model.getValue("/root/main/item1/clbs/holigbn");
  982. var holifromdd = model.getValue("/root/main/item1/clbs/holifromdd");
  983. var holitodd = model.getValue("/root/main/item1/clbs/holitodd");
  984. if (holigbn == "Y" && clod_snglcalcscorcd.length > 0) {
  985. messageBox("진료의가 " + holifromdd + " ~ " + holitodd
  986. + " 기간동안 해외 출장입니다. 진료의사를 변경하세요.", "E");
  987. }
  988. // 자보한도액 버튼 설정 20090327
  989. // 자보한도액 초과자 체크 : 자보환자일때만 자보발생금액 버튼 활성화 초과자는 자보발생금액 버튼 색깔변경 - 20080923 박창원
  990. var insukind = model.getValue("/root/main/item1/clbs/insukindcd");
  991. var suppkind = model.getValue("/root/main/item1/clbs/suppkindcd");
  992. if (insukind == "31" && suppkind == "18" && model.getValue("/root/main/item1/clbs/paylimamt") != "0") {
  993. btn_autolimit.attribute("background-image") = "../../../com/commonweb/images/icon_btn_s.gif"; // 주황색
  994. } else {
  995. btn_autolimit.attribute("background-image") = "../../../com/commonweb/images/icon_btn.gif"; // 파란색
  996. }
  997. // 자보산재 보험유형별 caption 설정 20090327
  998. if (insukind == "31") {
  999. cap_insdnm.attribute("text") = "사고일자";
  1000. cap_certno.attribute("text") = "접수번호";
  1001. } else if (insukind == "41") {
  1002. cap_insdnm.attribute("text") = "사고일자";
  1003. cap_certno.attribute("text") = "관리번호";
  1004. } else {
  1005. cap_insdnm.attribute("text") = "가입자";
  1006. cap_certno.attribute("text") = "증번호";
  1007. }
  1008. // 삭감처방여부에 따라 삭감처방버튼 색 변경
  1009. if (model.getValue("/root/main/item1/clbs/cutprcpyn") == "Y") {
  1010. btn_redu.attribute("class") = "btn5_letter4";
  1011. btn_redu.attribute("color") = "#cc3333";
  1012. } else {
  1013. btn_redu.attribute("class") = "btn2_letter4";
  1014. }
  1015. // 20100317 환자별 메세지 버튼 추가 (별도 조회되던것을 기본정보 조회에 포함 처리)
  1016. if (model.getValue("/root/main/item1/clbs/patmsgyn") == "Y") {
  1017. img_msg.visible = true;
  1018. } else {
  1019. img_msg.visible = false;
  1020. }
  1021. }
  1022. // ---------------------------------------------------------------------------
  1023. // 처방 행 삭제 or 삭제취소 후에 특정내역 줄번호/특정코드에 따라 sorting 작업
  1024. // ---------------------------------------------------------------------------
  1025. function fSortSpclNo() {
  1026. if (grd_clsphist.rows > 1) {
  1027. for ( var j = 1; j < grd_clsphist.rows; j++) {
  1028. grd_clsphist.rowHidden(j) = false;
  1029. var rowstatus = grd_clsphist.rowstatus(j);
  1030. var spclcd = model.getValue("/root/main/list3/clsp[" + j + "]/spclcd");
  1031. var spclspec = model.getValue("/root/main/list3/clsp[" + j + "]/spclspec");
  1032. // 특정코드과 특정내역이 입력되지 않은 경우
  1033. if (rowstatus != 4 && spclcd == "" && spclspec == "") {
  1034. // 줄을 삭제한다.
  1035. grd_clsphist.deleteRow(j, false);
  1036. j--;
  1037. } else {
  1038. // JS010(특정코드:야간가산)의 hhmm이 야간(18~09시)가 아니면 특정내역 Grid에 빨간색으로 표시
  1039. grd_clsphist.rowStyle(j, "data", "color") = "#000000"; // 000000=검은색
  1040. if (spclcd == "JS010") { // JS010 야간가산
  1041. var js010chk = false;
  1042. if (spclspec.length >= 12) { // <spclformat>ccyymmddhhmm</spclformat>
  1043. var ccyymmddhhmm = spclspec.substr(0, 12);
  1044. if (isValidDateTime(ccyymmddhhmm, "YYYYMMDDhhmm")) { // (dateHelper.js) 유효한 날짜, 시간 인지 점검
  1045. var hhmm = parseInt(spclspec.substr(8, 4), 10); // '09' 와 같은 형식으로 입력한 경우 -> 9로 처리
  1046. if (hhmm >= 1800 || hhmm < 900) {
  1047. js010chk = true;
  1048. }
  1049. }
  1050. }
  1051. if (js010chk == false) {
  1052. grd_clsphist.rowStyle(j, "data", "color") = "#ff3333"; // ff3333=붉은색
  1053. }
  1054. } // if (spclcd == "JS010")
  1055. }
  1056. }
  1057. grd_clsphist.refresh();
  1058. grd_clsphist.colsort(grd_clsphist.colRef("unitflag")) = "desc";
  1059. grd_clsphist.colsort(grd_clsphist.colRef("spclcd")) = "asc";
  1060. grd_clsphist.colsort(grd_clsphist.colRef("edilnno")) = "asc";// "edilnno";
  1061. var maxRow = parseInt(grd_clsphist.rows) - 1; // rows는 타이틀부분 부터 개수를
  1062. // 센다.
  1063. var maxCol = parseInt(grd_clsphist.cols) - 1;
  1064. grd_clsphist.sort(grd_clsphist.fixedRows, grd_clsphist.fixedCols, maxRow, maxCol) = "usersort";
  1065. // Sort 된 Grid 상의 Data 순서와 Instance Node 상의 Data 순서를 동일하게 맞춰준다.
  1066. grd_clsphist.gridToInstance();
  1067. grd_clsphist.row = 0;
  1068. // rdo_unitflag.dispatch("xforms-select");
  1069. fGetSelectedUnitFlag();
  1070. } else { // 타이틀만 있는 경우 grd_clsphist.rows = 1
  1071. var selectedUnitFlag = model
  1072. .getValue("/root/hidden/list3/selectedUnitFlag");
  1073. if (selectedUnitFlag == "-" || selectedUnitFlag == "M") {
  1074. fSpclGridInsertRow(); // 특정내역 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가"
  1075. }
  1076. }
  1077. }
  1078. // -------------------------------------------------------------------------
  1079. // 처방 조회부 - 재행/급여/항목구분 Radio 선택에 따라 처방 내역을 보여준다.
  1080. // -------------------------------------------------------------------------
  1081. function fGetSelectedOrderData() {
  1082. var inpCalcScorCd = model.getValue("/root/hidden/list2/clodsrch/inpCalcScorCd");
  1083. var inpEDICd = model.getValue("/root/hidden/list2/clodsrch/inpEDICd");
  1084. var selectedRdoMatrAct = model.getValue("/root/hidden/list2/clodsrch/selectedRdoMatrAct");
  1085. var selectedRdoPay = model.getValue("/root/hidden/list2/clodsrch/selectedRdoPay");
  1086. var selectedRdoItem = model.getValue("/root/hidden/list2/clodsrch/selectedRdoItem");
  1087. var pre_ediitem1 = "";
  1088. var pre_backcolor = "#f4f4f4"; // datagrid backcoloralternate:#f4f4f4
  1089. var insukind = model.getValue("/root/main/Item1/clbs/insukindcd");
  1090. insukind = insukind.substr(1, 1);
  1091. for ( var i = grd_clodhist.fixedRows; i < grd_clodhist.rows; i++) {
  1092. grd_clodhist.rowHidden(i) = false;
  1093. if (inpCalcScorCd == "") {
  1094. } else if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("snglcalcscorcd")).indexOf(inpCalcScorCd) == -1) { // indexOf: 문자열이 없으면 -1
  1095. grd_clodhist.rowHidden(i) = true;
  1096. }
  1097. if (inpEDICd == "") {
  1098. } else if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("basecd")).indexOf(inpEDICd) == -1) { // indexOf: 문자열이 없으면 -1
  1099. grd_clodhist.rowHidden(i) = true;
  1100. }
  1101. if (selectedRdoMatrAct == "" || selectedRdoMatrAct == "-") { // 전체
  1102. } else if (selectedRdoMatrAct == "1") { // 재료인 경우
  1103. if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("matractflag")) == "2" || grd_clodhist.valueMatrix(i, grd_clodhist.colRef("matractflag")) == "3") {
  1104. grd_clodhist.rowHidden(i) = true;
  1105. }
  1106. } else { // 행위인 경우 (2 : 가산있는 행위 / 3 : 가산없는 행위)
  1107. if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("matractflag")) != "2" && grd_clodhist.valueMatrix(i, grd_clodhist.colRef("matractflag")) != "3") {
  1108. grd_clodhist.rowHidden(i) = true;
  1109. }
  1110. }
  1111. if (selectedRdoPay == "" || selectedRdoPay == "-") { // 전체
  1112. } else { // 급여구분1(P0104 -:해당사항없음, 0:급여, 1:전액본인부담, 2:비급여)
  1113. if (selectedRdoPay == "0") {
  1114. if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("payflag")) != "0" && grd_clodhist.valueMatrix(i, grd_clodhist.colRef("payflag")) != "9") {
  1115. grd_clodhist.rowHidden(i) = true;
  1116. }
  1117. } else {
  1118. if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("payflag")) != selectedRdoPay) {
  1119. grd_clodhist.rowHidden(i) = true;
  1120. }
  1121. }
  1122. }
  1123. if (selectedRdoItem == "" || selectedRdoItem == "-") { // 전체
  1124. } else {
  1125. // if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("ediitem1"))
  1126. // != model.getValue("/root/hidden/list2/clodsrch/selectedRdoItem"))
  1127. // {
  1128. // 20091222 산재유형 필터링 안되는 오류 수정
  1129. if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("item1")) != selectedRdoItem) {
  1130. grd_clodhist.rowHidden(i) = true;
  1131. }
  1132. }
  1133. if (grd_clodhist.rowHidden(i) == false) {
  1134. // 항목의 항 별로 흰색/회색 구분표시
  1135. var ediitem1 = model.getValue("/root/main/list2/clod[" + i + "]/ediitem1");
  1136. if (ediitem1 != pre_ediitem1) { // 항목의 항이 변경된 경우
  1137. pre_ediitem1 = ediitem1;
  1138. if (pre_backcolor == "#f4f4f4") {
  1139. pre_backcolor = "#ffffff"; // 배경색 없음 // #ffffff = White
  1140. } else {
  1141. pre_backcolor = "#f4f4f4"; // datagrid
  1142. // backcoloralternate:#f4f4f4
  1143. }
  1144. }
  1145. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("edilnno")) = pre_backcolor;
  1146. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("ediitem1")) = pre_backcolor;
  1147. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("ediitem2")) = pre_backcolor;
  1148. }
  1149. }
  1150. }
  1151. // -------------------------------------------------------------------------
  1152. // 처방 조회부 - 급여구분 Radio 선택에 따라 처방 내역을 보여준다.
  1153. // -------------------------------------------------------------------------
  1154. function fGetSelectedPayflag() {
  1155. var selectedRdoPay = model.getValue("/root/hidden/list2/clodsrch/selectedRdoPay");
  1156. var selectedRdoItem = model.getValue("/root/hidden/list2/clodsrch/selectedRdoItem");
  1157. var pre_ediitem1 = "";
  1158. var pre_backcolor = "#f4f4f4"; // datagrid backcoloralternate:#f4f4f4
  1159. var insukind = model.getValue("/root/main/Item1/clbs/insukindcd");
  1160. insukind = insukind.substr(1, 1);
  1161. for ( var i = grd_clodhist.fixedRows; i < grd_clodhist.rows; i++) {
  1162. grd_clodhist.rowHidden(i) = false;
  1163. if (inpCalcScorCd == "") {
  1164. } else if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("snglcalcscorcd")).indexOf(inpCalcScorCd) == -1) { // indexOf: 문자열이 없으면 -1
  1165. grd_clodhist.rowHidden(i) = true;
  1166. }
  1167. if (inpEDICd == "") {
  1168. } else if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("basecd")).indexOf(inpEDICd) == -1) { // indexOf: 문자열이 없으면 -1
  1169. grd_clodhist.rowHidden(i) = true;
  1170. }
  1171. if (selectedRdoMatrAct == "" || selectedRdoMatrAct == "-") { // 전체
  1172. } else if (selectedRdoMatrAct == "1") { // 재료인 경우
  1173. if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("matractflag")) == "2" || grd_clodhist.valueMatrix(i, grd_clodhist.colRef("matractflag")) == "3") {
  1174. grd_clodhist.rowHidden(i) = true;
  1175. }
  1176. } else { // 행위인 경우 (2 : 가산있는 행위 / 3 : 가산없는 행위)
  1177. if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("matractflag")) != "2" && grd_clodhist.valueMatrix(i, grd_clodhist.colRef("matractflag")) != "3") {
  1178. grd_clodhist.rowHidden(i) = true;
  1179. }
  1180. }
  1181. if (selectedRdoPay == "" || selectedRdoPay == "-") { // 전체
  1182. } else { // 급여구분1(P0104 -:해당사항없음, 0:급여, 1:전액본인부담, 2:비급여)
  1183. if (selectedRdoPay == "9") {
  1184. if (insukind == "3" || insukind == "4") {
  1185. if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("payflag")) != "9") {
  1186. grd_clodhist.rowHidden(i) = true;
  1187. }
  1188. } else {
  1189. if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("payflag")) != "8") {
  1190. grd_clodhist.rowHidden(i) = true;
  1191. }
  1192. }
  1193. } else {
  1194. if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("payflag")) != selectedRdoPay) {
  1195. grd_clodhist.rowHidden(i) = true;
  1196. }
  1197. }
  1198. }
  1199. if (selectedRdoItem == "" || selectedRdoItem == "-") { // 전체
  1200. } else {
  1201. if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("item1")) != selectedRdoItem) {
  1202. grd_clodhist.rowHidden(i) = true;
  1203. }
  1204. }
  1205. }
  1206. }
  1207. // -------------------------------------------
  1208. // 처방 항목 구분 및 선별심사 처방 색깔 구분
  1209. // -------------------------------------------
  1210. function fSetOrderData() {
  1211. model.resetInstanceNode("/root/hidden/list2/cloditem1");
  1212. // 20100305 초기화 추가
  1213. grd_clodhist.initStyle("color");
  1214. grd_clodhist.initStyle("background-color");
  1215. for ( var i = 1; i <= grd_cldihist.rows; i++) {
  1216. var col_vcode = grd_cldihist.colRef("vcode");
  1217. var col_diagcd = grd_cldihist.colRef("diagcd");
  1218. var srchnm = grd_cldihist.valueMatrix(i, col_diagcd).substr(0, 2);
  1219. var t_vcode = grd_cldihist.valueMatrix(i, col_vcode);
  1220. var rowno, rn = 0;
  1221. rowno = grd_cldihist.findRow(srchnm,grd_cldihist.fixedrows ,col_diagcd, true, false);
  1222. if (t_vcode != "V252" && t_vcode != "V193") {
  1223. while( rowno > 0){
  1224. var s_vcode = grd_cldihist.valueMatrix(rowno, col_vcode );
  1225. var t_diagcd = grd_cldihist.valueMatrix(rowno, col_diagcd).substr(0, 2);
  1226. if (rowno != i && t_diagcd != "" && t_vcode != "" && srchnm == t_diagcd && t_vcode == s_vcode ) {
  1227. grd_cldihist.cellStyle("background-color", rowno, grd_cldihist.colRef("rowstat"), rowno, grd_cldihist.colRef("workflag")) = "#ffff9c"; //#ffff9c=연한노랑
  1228. }
  1229. rowno = grd_cldihist.findRow(srchnm,rowno + 1 ,col_diagcd, true, false);
  1230. }
  1231. }
  1232. var srchnm2 = grd_cldihist.valueMatrix(i, col_diagcd).substr(0, 3);
  1233. rn = grd_cldihist.findRow(srchnm2,grd_cldihist.fixedrows ,col_diagcd, true, false);
  1234. while( rn > 0){
  1235. var t_diagcd = grd_cldihist.valueMatrix(rn, col_diagcd).substr(0, 3);
  1236. if (rn != i && srchnm2 == t_diagcd && t_diagcd != "") {
  1237. grd_cldihist.cellStyle("background-color", rn, grd_cldihist.colRef("rowstat"), rn, grd_cldihist.colRef("workflag")) = "#ffff9c"; //#ffff9c=연한노랑
  1238. }
  1239. rn = grd_cldihist.findRow(srchnm2 ,rn + 1 ,col_diagcd, true, false);
  1240. }
  1241. // 상병그리드 해당상병보다 큰 5단이상의 세부상병이 있는 경우 표시해준다.
  1242. if (model.getValue("/root/main/list1/cldi[" + i + "]/kcd6chk") == "Y") {
  1243. grd_cldihist.cellStyle("background-color", i, grd_cldihist.colRef("rowstat"), i, grd_cldihist.colRef("workflag")) = "#0000ff"; // #0000ff=파랑
  1244. // 종료상병을 표시한다.
  1245. } else if (model.getValue("/root/main/list1/cldi[" + i + "]/endyn") == "Y") {
  1246. grd_cldihist.cellStyle("background-color", i, grd_cldihist.colRef("rowstat"), i, grd_cldihist.colRef("workflag")) = "#ff0000"; // #ff0000=빨강
  1247. }
  1248. }
  1249. var pre_item1 = "";
  1250. var pre_backcolor = "#f4f4f4"; // datagrid backcoloralternate:#f4f4f4
  1251. for ( var i = 1; i <= grd_clodhist.rows; i++) { // 처방 개수만큼 돌면서
  1252. // 선별심사 처방 색깔 구분
  1253. var spcljudgyn = model.getValue("/root/main/list2/clod[" + i + "]/spcljudgyn");
  1254. if (spcljudgyn == "Y") {
  1255. grd_clodhist.rowStyle(i, "data", "color") = "#ff3333"; // ff3333=붉은색
  1256. } else {
  1257. grd_clodhist.rowStyle(i, "data", "color") = "#000000"; // 000000=검은색
  1258. }
  1259. if (grd_clodhist.rowHidden(i) == false) {
  1260. // 항목의 항 별로 흰색/회색 구분표시
  1261. var item1 = model.getValue("/root/main/list2/clod[" + i + "]/ediitem1");
  1262. if (item1 != pre_item1) { // 항목의 항이 변경된 경우
  1263. pre_item1 = item1;
  1264. if (pre_backcolor == "#f4f4f4") {
  1265. pre_backcolor = "#ffffff"; // 배경색 없음 // #ffffff = White
  1266. } else {
  1267. pre_backcolor = "#f4f4f4"; // datagrid
  1268. // backcoloralternate:#f4f4f4
  1269. }
  1270. }
  1271. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("edilnno")) = pre_backcolor;
  1272. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("ediitem1")) = pre_backcolor;
  1273. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("ediitem2")) = pre_backcolor;
  1274. }
  1275. // 조정사유코드 입력된 처방 색깔 구분
  1276. var adjtresncd = model.getValue("/root/main/list2/clod[" + i + "]/adjtresncd");
  1277. if (adjtresncd != "" && adjtresncd != "-") {
  1278. // 처방 Grid 배경색을 설정한다. - 심사사유있는 row (카키색)
  1279. fOrderBkColorResn(i);
  1280. }
  1281. // 단가오류, 계산착오인 처방색깔 구분 : 심사자에게 알려주기 위함 2009-03-20
  1282. if (model.getValue("/root/main/list2/clod[" + i + "]/erroramtyn") == "Y") {
  1283. grd_clodhist.rowStyle(i, "data", "background-color") = "#ffff9c"; // ffff9c=연한노랑
  1284. }
  1285. // --------------------------------------------------------------------------
  1286. // 2008-08-25 김상진. 줄단위 특정내역 색깔구분 일단 뺀다 나중에 오픈 후 처리
  1287. // --------------------------------------------------------------------------
  1288. /*
  1289. * // 줄단위 특정내역 입력된 처방 색깔 구분 var lnunitspclspecyn =
  1290. * model.getValue("/root/main/list2/clod["+ i +"]/lnunitspclspecyn"); if
  1291. * (lnunitspclspecyn) { var jx999cnt = 0; var nonjx999cnt = 0; // JX999가
  1292. * 아닌 특정내역코드의 수 for (var j = 1; j < grd_clsphist.rows; j++) { if
  1293. * (grd_clsphist.rowstatus(j) != 4) { var spclLnNo =
  1294. * model.getValue("/root/main/list3/clsp["+ j +"]/edilnno"); if
  1295. * (spclLnNo == model.getValue("/root/main/list2/clod["+ i
  1296. * +"]/edilnno")) { var spclcd =
  1297. * model.getValue("/root/main/list3/clsp["+ j +"]/spclcd"); if (spclcd ==
  1298. * "JX999") { // JX999인 경우 jx999cnt++; } else if (spclcd != "JT001") { //
  1299. * JX999도, 확인코드도 아닌 경우 nonjx999cnt++; } } } }
  1300. *
  1301. * if (jx999cnt > 0) { if (nonjx999cnt == 0) { // JX999만 있는 경우
  1302. * grd_clodhist.cellStyle("background-color", i,
  1303. * grd_clodhist.colRef("lnunitspclspecyn")) = "#f7a08b"; //
  1304. * class="color_6" 다홍색 } else { // JX999 + 다른 코드도 있는 경우
  1305. * grd_clodhist.cellStyle("background-color", i,
  1306. * grd_clodhist.colRef("lnunitspclspecyn")) = "#b5a5d1"; // 연한 보라색 } }
  1307. * else { // JX999가 없는 경우 grd_clodhist.cellStyle("background-color", i,
  1308. * grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff =
  1309. * White } } else { grd_clodhist.cellStyle("background-color", i,
  1310. * grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff =
  1311. * White }
  1312. */
  1313. // --------------------------------------------------------------------------
  1314. // 2008-10-29 김상진. 항목구분 item 굵게표시 주석처리함. 속도문제
  1315. // --------------------------------------------------------------------------
  1316. /*
  1317. * // 항목구분 조회부 Radio에 해당하는 처방이 있는지 여부를 확인한다. var item1 =
  1318. * model.getValue("/root/main/list2/clod["+ i +"]/item1"); if (item1) {
  1319. * var path = "/root/hidden/list2/cloditem1/ediitem1_"+ item1; var node =
  1320. * instance1.selectSingleNode(path); if (node != null) {
  1321. * model.setValue(path, item1); } }
  1322. */
  1323. }
  1324. // --------------------------------------------------------------------------
  1325. // 2008-10-29 김상진. 항목구분 item 굵게표시 주석처리함. 속도문제
  1326. // --------------------------------------------------------------------------
  1327. /*
  1328. * if (grd_clodhist.rows > 1) { // 타이틀만 있는 경우 grd_clodhist.rows = 1
  1329. * rdo_item1.item(0).attribute("font-weight") = "bold"; // "전체" 항목은 default
  1330. * 로 굵게 표시한다. } else { rdo_item1.item(0).attribute("font-weight") =
  1331. * "normal"; } // 처방 조회부 항목구분 Radio에서 해당 처방이 있는 item을 굵게 표시한다. var
  1332. * itemRadioList =
  1333. * instance1.selectSingleNode("/root/hidden/list2/cloditem1"); var itemNode =
  1334. * itemRadioList.childNodes; for (var i = 1; i < itemNode.length; i++) { var
  1335. * item1 = itemNode.item(i).value; if (item1) {
  1336. * rdo_item1.item(i).attribute("font-weight") = "bold"; } else {
  1337. * rdo_item1.item(i).attribute("font-weight") = "normal"; } }
  1338. */
  1339. }
  1340. // -------------------------------------------
  1341. // 항목별 금액소계(item1별로 금액sum)
  1342. // -------------------------------------------
  1343. function fSetSubtotal() {
  1344. // ****************************************************************************************************************
  1345. // 항목별소계 subtotal 김상진 20101223
  1346. // ****************************************************************************************************************
  1347. // #ffff0| 밝은노랑
  1348. // #d9e3fe 옅은파랑
  1349. // #eeddff 옅은보라
  1350. // #b9fcf8 밝은하늘
  1351. // #cefcfa 옅은하늘
  1352. grd_clodhist.subtotalposition = "below";
  1353. 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);
  1354. 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);
  1355. var fild1 = "0";
  1356. var fild2 = "0";
  1357. for ( var i = grd_clodhist.fixedRows; i <= grd_clodhist.rows; i++) {
  1358. fild1 = grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm"));
  1359. if (fild1 == "항목별소계" && fild2 != "") {
  1360. if (fild2 == "01") {
  1361. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "진찰료 소계";
  1362. } else if (fild2 == "02") {
  1363. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "입원료 소계";
  1364. } else if (fild2 == "03") {
  1365. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "투약료 소계";
  1366. } else if (fild2 == "04") {
  1367. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "주사료 소계";
  1368. } else if (fild2 == "05") {
  1369. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "마취료 소계";
  1370. } else if (fild2 == "06") {
  1371. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "이학료 소계";
  1372. } else if (fild2 == "07") {
  1373. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "정신료 소계";
  1374. } else if (fild2 == "08") {
  1375. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "수술료 소계";
  1376. } else if (fild2 == "09") {
  1377. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "검사료 소계";
  1378. } else if (fild2 == "10") {
  1379. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "방사선 소계";
  1380. } else if (fild2 == "SS") {
  1381. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "특수 소계";
  1382. }
  1383. }
  1384. fild2 = grd_clodhist.valueMatrix(i, grd_clodhist.colRef("item1"));
  1385. }
  1386. }
  1387. // 조회된 심사대상자의 특이 인적사항, 보조/요율 등을 계산하여 보여준다.
  1388. function fGetPersonalData() {
  1389. // 인적사항 타이틀 옆 output
  1390. var srchrslt = "";
  1391. // 2008-06-23 neverdie 윤영옥선생님 요청 (사망환자 메시지 막아주세요)
  1392. // if (model.getValue("/root/main/item1/clbs/dethyn") == "Y") {
  1393. // srchrslt = " [사망환자입니다.]";
  1394. // }
  1395. // 중증및 희귀정보가 모두다 존재할때에는 콤보에 등록암우선으로 보여준다. - 20091123 박창원
  1396. // 중증 등록정보를 유형에 맞게 보여준다 - 20091021 박창원
  1397. var suppkind = model.getValue("/root/main/item1/clbs/suppkindcd");
  1398. var rooamsgcnt = getNodesetCount("/root/main/rarecancermsglist/rarecancermsg[rgstkindcd!='00']/msg");
  1399. var sdoamsgcnt = getNodesetCount("/root/main/rarecancermsglist/rarecancermsg[rgstkindcd='00']/msg");
  1400. var rooamsg = model.getXPathValue("/root/main/rarecancermsglist/rarecancermsg[rgstkindcd!='00']/msg");
  1401. var sdoamsg = model.getXPathValue("/root/main/rarecancermsglist/rarecancermsg[rgstkindcd='00']/msg");
  1402. var rooamsgtooth = model.getXPathValue("/root/main/rarecancermsglist/rarecancermsg[rgstkindcd!='00' and rgstkindcd!='01']/msg");
  1403. if ((rooamsgcnt > 0) && (sdoamsgcnt > 0)) {
  1404. cmb_rarecancermsg.visible = true;
  1405. // 등록암 보조유형일경우(06.등록암, 11.가정간호등록암, 32.차상위1종, 40.차상위2종등록암
  1406. if (suppkind == "06" || suppkind == "11" || suppkind == "32" || suppkind == "40") {
  1407. model.makeValue("/root/hidden/rarecancermsg/msg", sdoamsg);
  1408. } else if (suppkind == "87" || suppkind == "88" || suppkind == "89") {
  1409. model.makeValue("/root/hidden/rarecancermsg/msg", rooamsgtooth, true);
  1410. } else {
  1411. model.makeValue("/root/hidden/rarecancermsg/msg", rooamsg, true);
  1412. }
  1413. } else if (rooamsgcnt > 0) {
  1414. if (suppkind == "87" || suppkind == "88" || suppkind == "89") {
  1415. if (rooamsgcnt == 1) {
  1416. srchrslt += rooamsgtooth; // 희귀등록번호
  1417. } else {
  1418. cmb_rarecancermsg.visible = true;
  1419. model.makeValue("/root/hidden/rarecancermsg/msg", rooamsgtooth, true);
  1420. }
  1421. } else {
  1422. if (rooamsgcnt == 1) {
  1423. srchrslt += rooamsg; // 희귀등록번호
  1424. } else {
  1425. cmb_rarecancermsg.visible = true;
  1426. model.makeValue("/root/hidden/rarecancermsg/msg", rooamsg, true);
  1427. }
  1428. }
  1429. } else if (sdoamsgcnt > 0) {
  1430. if (sdoamsgcnt == 1) {
  1431. srchrslt += sdoamsg; // 중증등록정보
  1432. } else {
  1433. cmb_rarecancermsg.visible = true;
  1434. model.makeValue("/root/hidden/rarecancermsg/msg", sdoamsg, true);
  1435. }
  1436. }
  1437. model.setValue("/root/hidden/item1/clbs/srchrslt", srchrslt);
  1438. model.refreshpart("/root/hidden/item1/clbs/srchrslt");
  1439. // 보조유형ID과 요율%로 combo 의 value
  1440. var suppkindcd = model.getValue("/root/main/item1/clbs/suppkindcd");
  1441. var payownbrate = model.getValue("/root/main/item1/clbs/payownbrate");
  1442. var supprate = suppkindcd + "/" + payownbrate; // 보조유형ID과 요율%로 combo 의
  1443. // value
  1444. model.setValue("/root/hidden/item1/clbs/patsupprate", supprate);
  1445. cmb_supprate.refresh();
  1446. cmb_rarecancermsg.refresh();
  1447. cmb_prockindflag.refresh();
  1448. }
  1449. // "심사저장" 상태로 대상자 화면 갱신
  1450. function fSetJudgSaveState(judgendyn) {
  1451. var trgtManWindow = getChildWindow("SMPID20200"); // SMPID20200_입원사후심사대상자조회.xrw
  1452. if (trgtManWindow != null) {
  1453. var selectedRow = model.getValue("/root/hidden/smpid20200/rslt/selectedRow");
  1454. if (selectedRow) {
  1455. var trgtmanlist = trgtManWindow.instance1.selectSingleNode("/root/main/list1/clbs");
  1456. if (trgtmanlist == null) { // 조회된 대상자 목록이 없는 경우
  1457. // messageBox("조회된 심사대상자 목록이", "I004"); ///조회된 심사대상자 목록이 없습니다.
  1458. // return;
  1459. } else {
  1460. var userid = getUserId(); // (common.js) 현재 로그인한 사용자 번호(ID)
  1461. if (userid) {
  1462. } else {
  1463. userid = "12345678";
  1464. }
  1465. var clamkey = model.getValue("/root/main/item1/clbs/clamkey");
  1466. for ( var i = 1; i < trgtManWindow.grd_clbsmast.rows; i++) {
  1467. if (clamkey == trgtManWindow.model.getValue("/root/main/list1/clbs[" + i + "]/clamkey")) {
  1468. trgtManWindow.model.setValue("/root/main/list1/clbs[" + i + "]/judgendyn", judgendyn);
  1469. trgtManWindow.model.setValue("/root/main/list1/clbs[" + i + "]/lastupdtrid", userid);
  1470. }
  1471. }
  1472. trgtManWindow.javascript.fSetWorkStatCnt(); // 총건수와 기타 심사상태에 따른
  1473. // cnt를 표시한다.
  1474. trgtManWindow.grd_clbsmast.refresh();
  1475. }
  1476. }
  1477. }
  1478. }
  1479. // ---------------------------------
  1480. // 저장 버튼을 누르면
  1481. // ---------------------------------
  1482. function fSaveInAftJudg(judgendyn) {
  1483. // 상병그리드에서 editmode인상태에서 F7 단축키 누렀을 경우 에러발생방지 위함. 절대 지우지 말것.
  1484. model.setFocus("grd_clodhist");
  1485. model.removeNodeset("/root/send/item2");
  1486. model.removeNodeset("/root/send/item3"); // 저장 오류가 난 경우 다시 "저장" Btn 누르면
  1487. // 새로 메모 내역이 생성되어야 하므로
  1488. model.removeNodeset("/root/send/item4");
  1489. model.removeNodeset("/root/send/list1");
  1490. model.removeNodeset("/root/send/list2");
  1491. model.removeNodeset("/root/send/list3");
  1492. model.removeNodeset("/root/send/item5");
  1493. var selectedRow = model.getValue("/root/hidden/smpid20200/rslt/selectedRow"); // 대상자 화면에서
  1494. // 선택했던 줄
  1495. var clamym = model.getValue("/root/main/item1/clbs/clamym");
  1496. var clamdg = model.getValue("/root/main/item1/clbs/clamdg");
  1497. var pid = model.getValue("/root/main/item1/clbs/pid");
  1498. var pidsn = model.getValue("/root/main/item1/clbs/pidsn");
  1499. var workflag = model.getValue("/root/main/item1/clbs/workflag");
  1500. var isValidCheck = true;
  1501. var cutprcpyn = "";
  1502. var trgtManWindow = getChildWindow("SMPID20200"); // SMPID20200_입원사후심사대상자조회.xrw
  1503. if (trgtManWindow != null) {
  1504. cutprcpyn = trgtManWindow.model.getValue("/root/send/item1/cutprcpsel"); // 20100302
  1505. // 추가
  1506. }
  1507. if (clamym) {
  1508. var saveNoMsg = "";
  1509. var saveOkMsg = "[계산]";
  1510. // CLBS 저장전 점검
  1511. if (fCheckSaveInAftJudgCLBS()) {
  1512. // --------------------------
  1513. // KDRG 3.2 DRG분류번호 조회
  1514. // --------------------------
  1515. // pidfGetKDRGCode();
  1516. // 인적사항
  1517. var initclbs = instance1.selectNodesXml("/root/hidden/item1/initclbs/clbs");
  1518. var currentclbs = instance1.selectNodesXml("/root/main/item1/clbs");
  1519. var insukind = model.getValue("/root/main/item1/clbs/insukindcd");
  1520. if ((initclbs == currentclbs) && (insukind != "31")) {
  1521. saveNoMsg = "[인적사항] ";
  1522. // 인적사항 변경이 없는 경우에도 send data에 설정한다.
  1523. model.copyNode("/root/send/item1/clbs", "/root/main/item1/clbs");
  1524. model.makeValue("/root/send/item1/clbs/clbsupdateyn", "N"); // 인적사항
  1525. // 저장여부
  1526. } else {
  1527. saveOkMsg = "[인적사항] ";
  1528. model.copyNode("/root/send/item1/clbs", "/root/main/item1/clbs");
  1529. model.makeValue("/root/send/item1/clbs/clbsupdateyn", "Y"); // 인적사항
  1530. // 저장여부
  1531. // ------------------------------------------------------------------------------
  1532. // 재계산할 항목이 변경된 경우 체크(입원)
  1533. // ------------------------------------------------------------------------------
  1534. // 1. 공상구분
  1535. var init_offcharm = model.getValue("/root/hidden/item1/initclbs/clbs/offcharm");
  1536. var current_offcharm = model.getValue("/root/main/item1/clbs/offcharm");
  1537. if (init_offcharm != current_offcharm) {
  1538. model.makeValue("/root/send/item1/clbs/recalcyn", "Y"); // 저장 시에 재계산할지 여부를 설정함
  1539. }
  1540. }
  1541. // 심사상태를 '저장' 또는 '심사완료' 상태로 저장한다.
  1542. model.makeValue("/root/send/item1/clbs/judgendyn", judgendyn); // 사후심사-심사완료여부 (P0151) - B:심사중,C: 심사완료
  1543. } else {
  1544. isValidCheck = false;
  1545. }
  1546. // 심사메모
  1547. var initmemo = instance1.selectNodesXml("/root/hidden/item1/initmemo/memo");
  1548. var currentmemo = instance1.selectNodesXml("/root/main/item1/memo");
  1549. if (initmemo != currentmemo) {
  1550. // 심사자메모, EDI청구메모를 특정내역 형식에 맞춰 설정한다.
  1551. var judgmemo = model.getValue("/root/main/item1/memo/judgmemo").getTrim();
  1552. var judgmemorepeat = model.getValue("/root/main/item1/memo/judgmemorepeat");
  1553. var edimemo = model.getValue("/root/main/item1/memo/edimemo").getTrim();
  1554. var edimemorepeat = model.getValue("/root/main/item1/memo/edimemorepeat");
  1555. var noChange = true;
  1556. if (judgmemo != model.getValue("/root/hidden/item1/initmemo/memo/judgmemo").getTrim()) {
  1557. fSetJudgEDIMemo(judgmemo, "Y");
  1558. noChange = false; // 심사자메모가 변경된 경우임
  1559. } else if (judgmemo != "" && judgmemorepeat != model.getValue("/root/hidden/item1/initmemo/memo/judgmemorepeat")) {
  1560. fSetJudgEDIMemo(judgmemo, "Y");
  1561. noChange = false; // 심사자메모 반복 설정이 변경된 경우임
  1562. }
  1563. if (edimemo != model.getValue("/root/hidden/item1/initmemo/memo/edimemo").getTrim()) {
  1564. fSetJudgEDIMemo(edimemo, "N");
  1565. noChange = false; // EDI청구메모가 변경된 경우임
  1566. } else if (edimemo != "" && edimemorepeat != model.getValue("/root/hidden/item1/initmemo/memo/edimemorepeat")) {
  1567. fSetJudgEDIMemo(edimemo, "N");
  1568. noChange = false; // EDI청구메모 반복 설정이 변경된 경우임
  1569. }
  1570. if (noChange == false) {
  1571. saveOkMsg += "[심사메모] ";
  1572. } else {
  1573. saveNoMsg += "[심사메모] ";
  1574. }
  1575. } else {
  1576. saveNoMsg += "[심사메모] ";
  1577. }
  1578. // CLDI 저장전 점검
  1579. if (fCheckSaveInAftJudgInfoCLDI()) {
  1580. // 상병
  1581. var licnsflag = "";
  1582. var licnsno = "";
  1583. var diagseq = "";
  1584. for ( var j = grd_cldihist.fixedRows; j < grd_cldihist.rows; j++) {
  1585. diagseq = grd_cldihist.valueMatrix(j, grd_cldihist.colRef("diagseq"));
  1586. licnsflag = grd_cldihist.valueMatrix(j, grd_cldihist.colRef("licnsflag"));
  1587. licnsno = grd_cldihist.valueMatrix(j, grd_cldihist.colRef("licnsno"));
  1588. if (grd_cldihist.rowstatus(j) == 4 && diagseq.substr(0, 1) == "D") {
  1589. model.setValue("/root/main/list1/cldi[" + j + "]/diagseq", diagseq.substr(1, diagseq.length));
  1590. }
  1591. if ((diagseq == "1" && grd_cldihist.rowstatus(j) == 0) && (licnsflag == "" || licnsflag == "-" || licnsno == "-" || licnsno == "-")) {
  1592. grd_cldihist.rowstatus(j) = 2;
  1593. }
  1594. }
  1595. var updtdata = getGridUpdateData(grd_cldihist); // (tfHelper.js) 그리드
  1596. // 업데이트 데이터 반환, 업데이트
  1597. // 정보가 없을경우 "" 반환
  1598. if (updtdata) {
  1599. model.makeValue("/root/send/list1/cldi", updtdata);
  1600. }
  1601. if (updtdata != "" && grd_cldihist.rows > 1) { // 타이틀 부분으로 인해 data가
  1602. // 없어도 rows = 1 임.
  1603. // <table id="list1/cldi" count_ref="cldi" min_count="1"> 로 인해
  1604. // 빈줄이 제거된 경우에도 delete 처리를 하므로
  1605. // Grid 상에 데이터가 있는지를 확인한다.
  1606. saveOkMsg += "[상병] ";
  1607. } else {
  1608. saveNoMsg += "[상병] ";
  1609. }
  1610. } else {
  1611. isValidCheck = false;
  1612. }
  1613. // CLSP 저장전 점검
  1614. if (fCheckSaveInAftJudgInfoCLSP()) {
  1615. var updtdata = getGridUpdateData(grd_clsphist); // (tfHelper.js) 그리드
  1616. // 업데이트 데이터 반환, 업데이트
  1617. // 정보가 없을경우 "" 반환
  1618. if (updtdata) {
  1619. model.makeValue("/root/send/list3/clsp", updtdata);
  1620. }
  1621. if (updtdata != "" && grd_clsphist.rows > 1) {
  1622. saveOkMsg += "[특정내역] ";
  1623. } else {
  1624. saveNoMsg += "[특정내역] ";
  1625. }
  1626. } else {
  1627. isValidCheck = false;
  1628. }
  1629. // CLOD 저장전 점검
  1630. if (fCheckSaveInAftJudgInfoCLOD()) {
  1631. // 처방
  1632. var updtdata = getGridUpdateData(grd_clodhist); // (tfHelper.js) 그리드
  1633. // 업데이트 데이터 반환, 업데이트
  1634. // 정보가 없을경우 "" 반환
  1635. if (updtdata) {
  1636. model.makeValue("/root/send/list2/clod", updtdata);
  1637. }
  1638. if (updtdata != "" && (grd_clodhist.rows > 1 || grd_delclod.rows > 1)) {
  1639. saveOkMsg += "[처방] ";
  1640. model.makeValue("/root/send/item1/clbs/recalcyn", "Y"); // 저장 시에 재계산할지 여부를 설정함
  1641. } else {
  1642. saveNoMsg += "[처방] ";
  1643. }
  1644. } else {
  1645. isValidCheck = false;
  1646. }
  1647. // PIFHIUNC 재청구 차액발생사유 점검....
  1648. if (fCheckSaveReClamChangeAmt()) {
  1649. var resncd = fSetReClamChgAmtResncd();
  1650. if (resncd) {
  1651. saveOkMsg += "[재청구 차액발생사유] ";
  1652. } else {
  1653. saveNoMsg += "[재청구 차액발생사유] ";
  1654. }
  1655. }
  1656. // 2011-03-23 저장시 무조건 재계산 한다.
  1657. // 2014-11-10 DRG 환자는 재계산 대상에서 제외한다. (LEJ)
  1658. var drgyn = model.getValue("/root/main/item1/clbs/drgyn");
  1659. if (drgyn == 'Y') {
  1660. model.makeValue("/root/send/item1/clbs/recalcyn", "N"); // 저장 시에 재계산할지 여부를 설정함
  1661. } else {
  1662. model.makeValue("/root/send/item1/clbs/recalcyn", "Y"); // 저장 시에 재계산할지 여부를 설정함
  1663. }
  1664. if (btn_end.disabled == true
  1665. && model.getValue("/root/main/item1/clbs/judgendyn") == "D") {
  1666. messageBox("버튼이 비활성화 이거나 심사일로 부터 15일이 경과 된 경우 완료 할 수", "I004");
  1667. return false;
  1668. }
  1669. // 중증, 산정특례 여부 체크
  1670. if (fGetDiagSpclcdCheck() == false) {
  1671. return false;
  1672. } else {
  1673. }
  1674. if (isValidCheck) {
  1675. if (saveOkMsg) {
  1676. if (model.getValue("/root/send/list3/clsp")) {
  1677. // 특정내역 삭제상태 값 설정은 submit을 보내기 전에 한다.
  1678. for ( var j = grd_clsphist.fixedRows; j < grd_clsphist.rows; j++) {
  1679. var spclLnNo = model.getValue("/root/main/list3/clsp[" + j + "]/seqno");
  1680. if (spclLnNo.substr(0, 1) == "D") {
  1681. model.setValue("/root/main/list3/clsp[" + j + "]/seqno", spclLnNo.substr(1, spclLnNo.length));
  1682. }
  1683. }
  1684. // 기타메모(JX999)를 특정내역 형식에 맞춰 설정
  1685. fSetSpclSpecJX999();
  1686. var updtdata = getGridUpdateData(grd_clsphist);
  1687. model.makeValue("/root/send/list3/clsp", updtdata);
  1688. }
  1689. if (submit("TXPID20301")) {
  1690. model.resetInstanceNode("/root/hidden/item1/initclbs/clbs");
  1691. grd_cldihist.clearStatus(); // submit() 성공하면 그리드의 i,u,d 상태
  1692. // 제거
  1693. grd_clsphist.clearStatus(); // submit() 성공하면 그리드의 i,u,d 상태
  1694. // 제거
  1695. grd_clodhist.clearStatus();
  1696. grd_delclod.clearStatus();
  1697. if (judgendyn == "B") { // 사후심사-심사완료여부 (P0151) - B: 심사중, C:
  1698. // 심사완료
  1699. // 저장 후 결과를 다시 조회하기 위해
  1700. model.resetInstanceNode("/root/hidden/smpid20200/rslt");
  1701. model.setValue("/root/hidden/smpid20200/rslt/clamym", clamym);
  1702. model.setValue("/root/hidden/smpid20200/rslt/clamdg", clamdg);
  1703. model.setValue("/root/hidden/smpid20200/rslt/pid", pid);
  1704. model.setValue("/root/hidden/smpid20200/rslt/pidsn", pidsn);
  1705. model.setValue("/root/hidden/smpid20200/rslt/popupcallyn", "Y");
  1706. // 대상자조회 화면에서 선택했던 환자의 Row를 기억해 두고, pre/next대상조회 버튼에서
  1707. // 이전, 이후 대상자를 조회한다.
  1708. model.setValue("/root/hidden/smpid20200/rslt/selectedRow", selectedRow);
  1709. // 저장후 재조회 여부
  1710. model.setValue("/root/hidden/reselect", "Y");
  1711. model.setValue("/root/hidden/smpid20200/rslt/cutprcpyn", cutprcpyn); // 20100302 추가
  1712. // 1) "저장" 이후에 현재 대상자 정보를 다시 조회한다.
  1713. fGetInAftJudgMngt();
  1714. fSetJudgSaveState("B"); // 심사완료여부 (P0151) - B: 심사중
  1715. }
  1716. // C: 심사완료의 경우, 저장 후 결과를 다시 조회하기 위해
  1717. return "true";
  1718. }
  1719. } else if (saveNoMsg) {
  1720. // if (judgendyn == "C") { // 사후심사-심사완료여부 (P0151) - B: 심사중, C:
  1721. // 심사완료
  1722. if (judgendyn != "B") { // 사후심사-심사완료여부 (P0151) - B: 심사중, C: 심사완료
  1723. return "false";
  1724. }
  1725. }
  1726. } else { // isValidCheck == false
  1727. // 상병
  1728. for ( var j = grd_cldihist.fixedRows; j < grd_cldihist.rows; j++) {
  1729. if (grd_cldihist.rowstatus(j) == 4) {
  1730. var diagseq = model.getValue("/root/main/list1/cldi[" + j + "]/diagseq");
  1731. model.setValue("/root/main/list1/cldi[" + j + "]/diagseq", "D" + diagseq);
  1732. }
  1733. }
  1734. if (grd_clsphist.rows == 1) {
  1735. fSpclGridInsertRow(); // 특정내역 줄추가
  1736. }
  1737. }
  1738. } else {
  1739. messageBox("변경된 정보를 저장할 사후심사 대상자가", "I004"); // /변경된 정보를 저장할 사후심사
  1740. // 대상자가 없습니다.
  1741. }
  1742. }
  1743. // CLBS 테이블에 저장할 정보가 올바른지 확인한다.
  1744. function fCheckSaveInAftJudgCLBS() {
  1745. if (model.getValue("/root/main/item1/clbs/clamym") == "") {
  1746. messageBox("청구년월이", "I004"); // /청구일자가 없습니다
  1747. return false;
  1748. }
  1749. if (model.getValue("/root/main/item1/clbs/clamdg") == "") {
  1750. messageBox("청구차수가", "I004"); // /청구차수가 없습니다
  1751. return false;
  1752. }
  1753. if (model.getValue("/root/main/item1/clbs/pid") == "") {
  1754. messageBox("등록번호가", "I004"); // /등록번호가 없습니다
  1755. return false;
  1756. }
  1757. if (model.getValue("/root/main/item1/clbs/patnm") == "") {
  1758. messageBox("환자이름이", "I004"); // /환자이름이 없습니다
  1759. return false;
  1760. }
  1761. var patrrgstno = model.getValue("/root/main/item1/clbs/patrrgstno");
  1762. if (patrrgstno.length != 13) {
  1763. messageBox("주민번호가", "E016"); // /주민번호가 유효하지 않습니다.
  1764. return false;
  1765. }
  1766. /*
  1767. * if (isResidentNo(model.getValue("/root/main/item1/clbs/patrrgstno")) ==
  1768. * false) { // (utilHelper.js) 유효한 주민번호인지 점검한다. messageBox("주민번호가", "E016");
  1769. * ///주민번호가 유효하지 않습니다. return false; }
  1770. */
  1771. if (model.getValue("/root/main/item1/clbs/patrrgstno") == "") {
  1772. messageBox("주민번호가", "I004"); // /주민번호가 없습니다
  1773. return false;
  1774. }
  1775. if (model.getValue("/root/main/item1/clbs/insukindcd") == "") {
  1776. messageBox("보험유형이", "I004"); // /보험유형이 없습니다
  1777. return false;
  1778. }
  1779. if (model.getValue("/root/main/item1/clbs/suppkindcd") == "") {
  1780. messageBox("보조유형이", "I004"); // 보조유형이 없습니다
  1781. return false;
  1782. }
  1783. if (model.getValue("/root/main/item1/clbs/payownbrate") == "") {
  1784. messageBox("올바른 보조유형을", "C002"); // /올바른 보조유형을 선택하십시오.
  1785. return false;
  1786. }
  1787. if (model.getValue("/root/main/item1/clbs/ordfildcd") == "") {
  1788. messageBox("진료분야가", "I004"); // /진료분야가 없습니다
  1789. return false;
  1790. }
  1791. if (model.getValue("/root/main/item1/clbs/orddeptcd") == "") {
  1792. messageBox("진료과가", "I004"); // /진료과가 없습니다
  1793. return false;
  1794. }
  1795. if (model.getValue("/root/main/item1/clbs/orddrid") == "") {
  1796. messageBox("주치의가", "I004"); // /주치의가 없습니다
  1797. return false;
  1798. }
  1799. if (model.getValue("/root/main/item1/clbs/arvpathcd") == "") {
  1800. messageBox("도착경로가", "I004"); // /도착경로가 없습니다
  1801. return false;
  1802. }
  1803. if (model.getValue("/root/main/item1/clbs/inpathcd") == "") {
  1804. messageBox("입원경로가", "I004"); // /입원경로가 없습니다
  1805. return false;
  1806. }
  1807. if (model.getValue("/root/main/item1/clbs/ordrsltcd") == "") {
  1808. messageBox("진료결과가", "I004"); // /진료결과가 없습니다
  1809. return false;
  1810. }
  1811. if (model.getValue("/root/main/item1/clbs/insdnm") == "") {
  1812. // messageBox("가입자가", "I004"); ///가입자가 없습니다
  1813. // return false;
  1814. }
  1815. if (model.getValue("/root/main/item1/clbs/insuno") == "") {
  1816. messageBox("조합기호가", "I004"); // /조합기호가 없습니다
  1817. return false;
  1818. }
  1819. if (model.getValue("/root/main/item1/clbs/insunm") == "") {
  1820. // messageBox("조합명칭이", "I004"); ///조합명칭이 없습니다
  1821. // return false;
  1822. }
  1823. if (!model.getValue("/root/main/item1/clbs/insukindcd") == "31") {
  1824. if (model.getValue("/root/main/item1/clbs/certno") == "") {
  1825. // messageBox("증번호가", "I004"); ///증번호가 없습니다
  1826. // return false;
  1827. }
  1828. }
  1829. return true;
  1830. }
  1831. // CLDI 테이블에 저장할 정보가 올바른지 확인한다.
  1832. function fCheckSaveInAftJudgInfoCLDI() {
  1833. // 먼저 빈 줄을 삭제한다.
  1834. var delcldiCheck = false;
  1835. for ( var i = 1; i < grd_cldihist.rows; i++) {
  1836. var rowstatus = grd_cldihist.rowstatus(i);
  1837. var diagcd = model.getValue("/root/main/list1/cldi[" + i + "]/diagcd");
  1838. // var ordfromdd = model.getValue("/root/main/list1/cldi["+ i
  1839. // +"]/ordfromdd");
  1840. // 상병코드와 진료개시일이 입력되지 않은 경우
  1841. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  1842. // if (diagcd == "" && ordfromdd == "") {
  1843. if (diagcd == "") {
  1844. // 줄을 삭제한다.
  1845. grd_cldihist.deleteRow(i, false);
  1846. i--;
  1847. delcldiCheck = true;
  1848. }
  1849. }
  1850. }
  1851. // 2008-07-30 김상진
  1852. // 이미 상병을 수정할때 SORT를 다 했기때문에 다시 해줄 필요가 없다.
  1853. // 빈줄을 삭제한 경우 상병순서를 다시 부여한다.
  1854. /*
  1855. * if (delcldiCheck) { var seq = 1; for (var i = 1; i < grd_cldihist.rows;
  1856. * i++) { var rowstatus = grd_cldihist.rowstatus(i); if (rowstatus != 4) {
  1857. * model.setValue("/root/main/list1/cldi["+ i +"]/diagseq", seq++); } } }
  1858. */
  1859. // 저장할 정보를 체크한다.
  1860. var cldiList = instance1.selectSingleNode("/root/main/list1"); // root/main/list1
  1861. if (cldiList == null) {
  1862. return false;
  1863. }
  1864. var cldiNode = cldiList.childNodes; // root/main/list1/cldi
  1865. if (cldiNode.length == 0) {
  1866. messageBox("상병이 입력되지", "E007"); // /상병이 입력되지 않았습니다.
  1867. return false;
  1868. } else {
  1869. for ( var i = 1; i <= cldiNode.length; i++) {
  1870. var diagcd = model.getValue("/root/main/list1/cldi[" + i + "]/diagcd");
  1871. var toot = model.getValue("/root/main/list1/cldi[" + i + "]/toot");
  1872. if (diagcd == "") {
  1873. // messageBox("상병코드 또는 진료개시일이 입력되지", "E007"); ///상병코드가 입력되지
  1874. // 않았습니다.
  1875. // return false;
  1876. model.removeNode("/root/main/list1/cldi[" + i + "]");
  1877. grd_cldihist.refresh();
  1878. } else {
  1879. var diagseq = model.getValue("/root/main/list1/cldi[" + i + "]/diagseq");
  1880. for ( var j = 1; j < i; j++) {
  1881. var prediagseq = model.getValue("/root/main/list1/cldi[" + j + "]/diagseq");
  1882. var prediagcd = model.getValue("/root/main/list1/cldi[" + j + "]/diagcd");
  1883. var pretoot = model.getValue("/root/main/list1/cldi[" + j + "]/toot");
  1884. if (grd_cldihist.rowstatus(i) != 4) {
  1885. // 중복된 상병 NO가 있는 경우
  1886. if (diagseq == prediagseq) {
  1887. messageBox("상병순서 '" + diagseq + "'가", "E006"); // /상병순서 '***'가 중복되었습니다.
  1888. return false;
  1889. }
  1890. // 중복된 상병코드가 있는 경우
  1891. if (diagcd == prediagcd && toot == pretoot) {
  1892. messageBox("상병코드 '" + diagcd + "'가", "E006"); // /상병코드 '***'가 중복되었습니다.
  1893. return false;
  1894. }
  1895. }
  1896. }
  1897. if (model.getValue("/root/main/list1/cldi[" + i + "]/toot") == "") { // 치식이 입력되지 않은 경우
  1898. model.setValue("/root/main/list1/cldi[" + i + "]/toot", "-");
  1899. }
  1900. }
  1901. }
  1902. }
  1903. return true;
  1904. }
  1905. // CLSP 테이블에 저장할 정보가 올바른지 확인한다.
  1906. function fCheckSaveInAftJudgInfoCLSP() {
  1907. // 먼저 빈 줄을 삭제한다.
  1908. for ( var i = 1; i < grd_clsphist.rows; i++) {
  1909. var rowstatus = grd_clsphist.rowstatus(i);
  1910. var spclcd = model.getValue("/root/main/list3/clsp[" + i + "]/spclcd");
  1911. var spclspec = model.getValue("/root/main/list3/clsp[" + i + "]/spclspec");
  1912. // 특정코드과 특정내역이 입력되지 않은 경우
  1913. if (rowstatus != 4 && spclcd == "" && spclspec == "") {
  1914. // 줄을 삭제한다.
  1915. grd_clsphist.deleteRow(i, false);
  1916. i--;
  1917. }
  1918. }
  1919. // 저장할 정보를 체크한다.
  1920. var clspList = instance1.selectSingleNode("/root/main/list3"); // root/main/list3
  1921. if (clspList == null) {
  1922. return false;
  1923. }
  1924. var clspNode = clspList.childNodes; // root/main/list3/clsp
  1925. for ( var i = 1; i <= clspNode.length; i++) {
  1926. var spclcd = model.getValue("/root/main/list3/clsp[" + i + "]/spclcd");
  1927. var spclspec = model.getValue("/root/main/list3/clsp[" + i + "]/spclspec");
  1928. if (spclcd == "" || spclspec == "") {
  1929. // 2009-01-29
  1930. // messageBox("특정코드 또는 특정내역이 입력되지", "E007"); ///특정코드 또는 특정내역이 입력되지
  1931. // 않았습니다.
  1932. model.removeNode("/root/main/list3/clsp[" + i + "]");
  1933. grd_clsphist.refresh();
  1934. // return false;
  1935. } else if (spclcd == "MX999" || spclcd == "MT015" || spclcd == "MT016" || spclcd == "MT004") {
  1936. for ( var j = 1; j < i; j++) {
  1937. var prespclcd = model.getValue("/root/main/list3/clsp[" + j
  1938. + "]/spclcd");
  1939. // 중복된 명세서 단위 특정코드가 있는 경우
  1940. if (grd_clsphist.rowstatus(i) != 4 && spclcd == prespclcd) {
  1941. messageBox("명세서 단위 특정코드 '" + spclcd + "'가", "E006"); // /명세서 단위 특정코드 '***'가 중복되었습니다.
  1942. return false;
  1943. }
  1944. }
  1945. }
  1946. }
  1947. return true;
  1948. }
  1949. // CLOD 테이블에 저장할 정보가 올바른지 확인한다.
  1950. function fCheckSaveInAftJudgInfoCLOD() {
  1951. // 먼저 빈 줄을 삭제한다.
  1952. for ( var i = 1; i < grd_clodhist.rows; i++) {
  1953. var rowstatus = grd_clodhist.rowstatus(i);
  1954. var seqno = model.getValue("/root/main/list2/clod[" + i + "]/seqno");
  1955. var snglcalcscorcd = model.getValue("/root/main/list2/clod[" + i + "]/snglcalcscorcd");
  1956. var basecd = model.getValue("/root/main/list2/clod[" + i + "]/basecd");
  1957. var drugqty = model.getValue("/root/main/list2/clod[" + i + "]/drugqty");
  1958. var edidrugqty = model.getValue("/root/main/list2/clod[" + i + "]/edidrugqty");
  1959. var tims = model.getValue("/root/main/list2/clod[" + i + "]/tims");
  1960. var dayno = model.getValue("/root/main/list2/clod[" + i + "]/dayno");
  1961. var edidayno = model.getValue("/root/main/list2/clod[" + i + "]/edidayno");
  1962. var ordfromdd = model.getValue("/root/main/list2/clod[" + i + "]/ordfromdd");
  1963. var ordtodd = model.getValue("/root/main/list2/clod[" + i + "]/ordtodd");
  1964. // 처방일련번호가 부여되지 않고,
  1965. // 수가코드, EDI코드, 투여량, 횟수, 일수, 진료종료일자가 입력되지 않은 경우
  1966. if (rowstatus != 4 && seqno == "" && snglcalcscorcd == "" && basecd == "" && drugqty == "" && tims == "" && dayno == "" && edidrugqty == "" && edidayno == "" && ordtodd == "") {
  1967. // 줄을 삭제한다.
  1968. grd_clodhist.deleteRow(i, false);
  1969. i--;
  1970. }
  1971. }
  1972. // 저장할 정보를 체크한다.
  1973. // 처방 Grid
  1974. var clodList = instance1.selectSingleNode("/root/main/list2"); // root/main/list2
  1975. if (clodList == null) {
  1976. return false;
  1977. }
  1978. var clodNode = clodList.childNodes; // root/main/list2/clod
  1979. for ( var i = 1; i <= clodNode.length; i++) {
  1980. var seqno = model.getValue("/root/main/list2/clod[" + i + "]/seqno");
  1981. var snglcalcscorcd = model.getValue("/root/main/list2/clod[" + i + "]/snglcalcscorcd");
  1982. var basecd = model.getValue("/root/main/list2/clod[" + i + "]/basecd");
  1983. var drugqty = model.getValue("/root/main/list2/clod[" + i + "]/drugqty");
  1984. var edidrugqty = model.getValue("/root/main/list2/clod[" + i + "]/edidrugqty");
  1985. var tims = model.getValue("/root/main/list2/clod[" + i + "]/tims");
  1986. var dayno = model.getValue("/root/main/list2/clod[" + i + "]/dayno");
  1987. var edidayno = model.getValue("/root/main/list2/clod[" + i + "]/edidayno");
  1988. var ordfromdd = model.getValue("/root/main/list2/clod[" + i + "]/ordfromdd");
  1989. var ordtodd = model.getValue("/root/main/list2/clod[" + i + "]/ordtodd");
  1990. if (snglcalcscorcd != "" && basecd != "") {
  1991. if (ordfromdd == "" || ordtodd == "") {
  1992. messageBox("수가코드 '" + snglcalcscorcd + "'의 처방일자 정보가", "I004"); // /수가코드 '***'의 처방일자 정보가 없습니다.
  1993. return false;
  1994. } else if (drugqty == "" || tims == "" || dayno == ""
  1995. || edidrugqty == "" || edidayno == "") {
  1996. messageBox("수가코드 '" + snglcalcscorcd + "'의 투여량 정보가", "I004"); // /수가코드 '***'의 투여량 정보가 없습니다.
  1997. return false;
  1998. }
  1999. }
  2000. }
  2001. return true;
  2002. }
  2003. // PIFHIUNC 재청구 저장시 차액이 발생했는지 체크
  2004. function fCheckSaveReClamChangeAmt() {
  2005. // if (model.getValue("/root/send/item1/clbs/recalcyn") == "Y") {
  2006. if (model.getValue("/root/main/item1/clbs/clamflagcd") == "1" && model.getValue("/root/send/item1/clbs/recalcyn") == "Y") {
  2007. return true;
  2008. } else {
  2009. return false;
  2010. }
  2011. }
  2012. // 1) "저장" 이후에 현재 대상자 정보를 다시 조회한다.
  2013. // 2) 대상자조회 화면에서 선택한 환자의 pid를 기준으로 이전, 이후 대상자를 조회한다.
  2014. function fGetInAftJudgMngt() {
  2015. var popupcallyn = model.getValue("/root/hidden/smpid20200/rslt/popupcallyn");
  2016. var clamym = model.getValue("/root/hidden/smpid20200/rslt/clamym");
  2017. var clamdg = model.getValue("/root/hidden/smpid20200/rslt/clamdg");
  2018. var pid = model.getValue("/root/hidden/smpid20200/rslt/pid");
  2019. var pidsn = model.getValue("/root/hidden/smpid20200/rslt/pidsn");
  2020. var workflag = model.getValue("/root/hidden/smpid20200/rslt/workflag");
  2021. var selectedRow = model.getValue("/root/hidden/smpid20200/rslt/selectedRow");
  2022. var cutprcpyn = model.getValue("/root/hidden/smpid20200/rslt/cutprcpyn");
  2023. var judgenddd = model.getValue("/root/hidden/smpid20200/rslt/judgenddd");
  2024. var cretno = model.getValue("/root/hidden/smpid20200/rslt/cretno");
  2025. if (clamym && clamdg && pid && pidsn) {
  2026. var rslt = fInitSrchData(); // 화면을 초기화한다.
  2027. if (rslt == false) { // 수정사항 저장이 완료되지 않아 초기화할 수 없는 경우
  2028. return false;
  2029. }
  2030. model.makeValue("/root/send/item1/clbs/clamym", clamym);
  2031. model.makeValue("/root/send/item1/clbs/clamdg", clamdg);
  2032. model.makeValue("/root/send/item1/clbs/pid", pid);
  2033. model.makeValue("/root/send/item1/clbs/pidsn", pidsn);
  2034. model.makeValue("/root/send/item1/clbs/workflag", workflag);
  2035. model.makeValue("/root/send/item1/clbs/popupcallyn", popupcallyn);
  2036. model.makeValue("/root/send/item1/clbs/ioflag", "I");
  2037. model.makeValue("/root/send/item1/clbs/cretno", cretno);
  2038. // 대상자조회 화면에서 선택했던 환자의 Row를 기억해 두고, pre/next대상조회 버튼에서 이전, 이후 대상자를 조회한다.
  2039. model.setValue("/root/hidden/smpid20200/rslt/selectedRow", selectedRow);
  2040. // 20100302 삭감조회 여부
  2041. if (cutprcpyn != "") {
  2042. model.makeValue("/root/send/item1/clbs/cutviewyn", "Y");
  2043. } else {
  2044. model.makeValue("/root/send/item1/clbs/cutviewyn", "N");
  2045. }
  2046. // var s;
  2047. // var d = new Date();
  2048. // s += " 서버시작 : " + d.getMinutes() + "분 " + d.getSeconds() + "초 " +
  2049. // d.getMilliseconds();
  2050. submit("TRPID20301");
  2051. fDiagGridInsertRow("Y", "N"); // 상병마지막 그리드에 한줄추가(); 20090918 정승우
  2052. // var d = new Date();
  2053. // s += " 서버종료 : " + d.getMinutes() + "분 " + d.getSeconds() + "초 " +
  2054. // d.getMilliseconds();
  2055. // pid가 변경되었는데 조회창을 여는 경우 기존 조회된 data 초기화를 위해 저장해둔다.
  2056. model.setValue("/root/hidden/smpid20200/rslt/oldPid", model.getValue("/root/main/item1/clbs/pid"));
  2057. model.setValue("/root/hidden/smpid20200/rslt/judgenddd", judgenddd);
  2058. // submit("TRPID20301") 사후 심사 대상자를 조회한 이후의 처리를 한다.
  2059. fSetAftJudgTrgtManSrchData();
  2060. cmb_orddrid.refresh();
  2061. // alert(s);
  2062. // rdo_unitflag.dispatch("xforms-select"); //20090915 정승우 JT001 제외 기능 추가
  2063. fGetSelectedUnitFlag();
  2064. // fDiagGridInsertRowMulti(); //20090917 정승우 대상자 선택시 자동으로 상병 5줄 가져오기 추가
  2065. // model.refresh(); // cmb_orddrid.choices.itemset.attribute("nodeset")
  2066. // 변경 사항을 적용하기 위해
  2067. // 20100302 삭감팝업 추가
  2068. var cutpopwindow = getChildWindow("SMPIS00600");
  2069. if (cutpopwindow != null) {
  2070. cutpopwindow.close();
  2071. }
  2072. if (model.getValue("/root/main/item1/clbs/cutprcpyn") == "Y") {
  2073. if (cutprcpyn == "2") {
  2074. setParameter("openflag", 'O');
  2075. setParameter("pid", pid);
  2076. open("SMPIS00600", "", "50", "50", "SMPIS00600", "", "");
  2077. }
  2078. }
  2079. }
  2080. }
  2081. // 1) 심사대상자 조회 Popup을 호출하기 전
  2082. // 2) 이전, 이후 대상자를 조회하기 전
  2083. /*
  2084. * 1.저장버튼 클릭 fGetInAftJudgMngt -> fInitSrchData 2.이전,다음명세서 버튼클릭
  2085. * fGetInAftJudgMngt -> fSaveInAftJudg -> fInitSrchData 3.완료,미심,보류,삭제 버튼클릭
  2086. * fGetInAftJudgMngt -> fSaveInAftJudg -> fInitSrchData 4.이전명세서 더블클릭시 화면 떠있는 경우
  2087. * fActivatePreDocuWindow -> fInitSrchData 5.심사전명세서 클릭 fActivatePreDocuWindow ->
  2088. * fInitSrchData 6.등록번호 엔터 fInitSrchData 7.등록번호 value-changed fInitSrchData
  2089. * 8.환자조회 버튼클릭 fInitSrchData 9.종료시 fInitSrchData
  2090. *
  2091. * 심사중해제해야하는 경우!! 수정전체크해야하는 경우!! /root/hidden/changecheckyn
  2092. *
  2093. * 6.등록번호 엔터 7.등록번호 value-changed 8.환자조회버튼 클릭 9.종료시 2.이전,다음명세서버튼 클릭
  2094. */
  2095. function fInitSrchData() {
  2096. // 기존 조회 내역 중 수정 사항이 있는 경우 저장할 것인지를 물어본다.
  2097. var clamym = model.getValue("/root/main/item1/clbs/clamym");
  2098. var clamdg = model.getValue("/root/main/item1/clbs/clamdg");
  2099. var pid = model.getValue("/root/main/item1/clbs/pid");
  2100. var pidsn = model.getValue("/root/main/item1/clbs/pidsn");
  2101. if (clamym) {
  2102. var judgendyn = model.getValue("/root/main/item1/clbs/judgendyn");
  2103. if (judgendyn == "B") {
  2104. var clamendyn = model.getValue("/root/main/item1/clbs/clamendyn");
  2105. var lockyn = model.getValue("/root/main/item1/clbs/lockyn");
  2106. if (lockyn == "N") { // 청구완료여부 A:샘생성전
  2107. if (btn_save.disabled == false || btn_unjudg.disabled == false) {
  2108. var rslt = fCheckChangeSave();
  2109. if (rslt == false) { // 저장이 완료되지 않아 초기화할 수 없는 경우
  2110. return false;
  2111. } else {
  2112. // 동일환자 저장 후 재조회가 아닌경우에만 '심사중' 상태 해제를 한다.
  2113. if (model.getValue("/root/hidden/reselect") == "N") {
  2114. // "심사중" 상태를 해제한다. 원래 심사상태로 변경한다.
  2115. var judgendyn = "";
  2116. if (model.getValue("/root/hidden/orgjudgendyn") == "") {
  2117. judgendyn = "A";
  2118. } else {
  2119. judgendyn = model.getValue("/root/hidden/orgjudgendyn");
  2120. }
  2121. model.removeNodeset("/root/send/item4");
  2122. model.makeValue("/root/send/item4/endclbs/clamym", clamym);
  2123. model.makeValue("/root/send/item4/endclbs/clamdg", clamdg);
  2124. model.makeValue("/root/send/item4/endclbs/pid", pid);
  2125. model.makeValue("/root/send/item4/endclbs/pidsn", pidsn);
  2126. model.makeValue("/root/send/item4/endclbs/judgendyn", judgendyn);
  2127. submit("TXPID20302");
  2128. // 대상자조회 심사상태 변경
  2129. fSetJudgSaveState(judgendyn);
  2130. }
  2131. }
  2132. }
  2133. }
  2134. }
  2135. }
  2136. // 상병, 특정내역, 처방 Group의 컨트롤 크기를 초기화한다.
  2137. fInitUIControlSize();
  2138. // 대상자 화면과 이전명세서 화면을 제외한 자식창을 닫는다.
  2139. var judgWindow1 = getChildWindow("SMPID20200"); // SMPID20200_입원사후심사대상자조회.xrw
  2140. var judgWindow2 = getChildWindow("SMPID20300"); // SMPID20300_입원사후심사관리.xrw
  2141. var judgWindow3 = getChildWindow("SMPID20500"); // SMPID20500_외래사후심사관리.xrw
  2142. if (judgWindow1 == null && judgWindow2 == null && judgWindow3 == null) {
  2143. var childCnt = window.children.length;
  2144. for ( var i = childCnt; i > 0; i--) {
  2145. var child = window.children.item(i - 1);
  2146. if (window.children.item(i - 1).window.type != "modal") {
  2147. window.children.item(i - 1).close();
  2148. }
  2149. }
  2150. } else {
  2151. var childCnt = window.children.length;
  2152. for ( var i = childCnt; i > 0; i--) {
  2153. var isClose = "true";
  2154. var child = window.children.item(i - 1);
  2155. var curWinID = child.model.getValue("/root/properties/uid/myself");
  2156. if (judgWindow1 != null) {
  2157. var judgWinID = judgWindow1.model.getValue("/root/properties/uid/myself");
  2158. if (curWinID == judgWinID) {
  2159. isClose = "false";
  2160. }
  2161. }
  2162. if (judgWindow2 != null) {
  2163. var judgWinID = judgWindow2.model.getValue("/root/properties/uid/myself");
  2164. if (curWinID == judgWinID) {
  2165. isClose = "false";
  2166. }
  2167. }
  2168. if (judgWindow3 != null) {
  2169. var judgWinID = judgWindow3.model.getValue("/root/properties/uid/myself");
  2170. if (curWinID == judgWinID) {
  2171. isClose = "false";
  2172. }
  2173. }
  2174. if (isClose != "false") {
  2175. if (window.children.item(i - 1).window.type != "modal") {
  2176. window.children.item(i - 1).close();
  2177. }
  2178. }
  2179. }
  2180. }
  2181. delPatientInfos(); // (common.js) 상단의 환자정보 삭제
  2182. model.resetInstanceNode("/root/main/item1/clbs");
  2183. model.resetInstanceNode("/root/main/item1/memo");
  2184. model.resetInstanceNode("/root/main/item2/incd");
  2185. model.removeNodeset("/root/main/item3/supp");
  2186. model.removeNodeset("/root/main/list1/cldi");
  2187. model.removeNodeset("/root/main/list2/clod");
  2188. model.removeNodeset("/root/main/list3/clsp");
  2189. model.resetInstanceNode("/root/main/item5/mech");
  2190. model.removeNodeset("/root/main/list4/clbs");
  2191. model.removeNodeset("/root/main/list5/clod");
  2192. model.removeNodeset("/root/main/list6/delclod");
  2193. model.removeNodeset("/root/hidden/rarecancermsg"); // 중증 및 희귀번호 초기화
  2194. // 20091123 박창원
  2195. cmb_rarecancermsg.visible = false;
  2196. fSetJudgStatBtnAuth(); // 심사완료여부 상태에 따라 "저장 / 재계산 / 완료 / 미심 / 보류 / 삭제" Btn
  2197. // 권한을 설정한다.
  2198. /*
  2199. * // 분만간호기록 Btn btn_babymom.attribute("class") = "btn2_letter6"; // 표준에서 정한
  2200. * 기본 버튼으로 설정 btn_babymom.attribute("left") = "193px"; btn_babymom.visible =
  2201. * true; // 수술(유) Btn btn_opyn.attribute("class") = "btn2_letter4"; // 표준에서
  2202. * 정한 기본 버튼으로 설정 btn_opyn.visible = true;
  2203. */
  2204. model.resetInstanceNode("/root/send");
  2205. model.resetInstanceNode("/root/hidden/item1/clbs"); // hidden을 모두 초기화하면
  2206. // children의 wid 삭제됨
  2207. model.resetInstanceNode("/root/hidden/item1/initclbs/clbs");
  2208. model.resetInstanceNode("/root/hidden/item1/initmemo/memo");
  2209. model.resetInstanceNode("/root/hidden/list1");
  2210. // /// model.resetInstanceNode("/root/hidden/list2/clodsrch");
  2211. model.resetInstanceNode("/root/hidden/list2/cloditem1");
  2212. model.resetInstanceNode("/root/hidden/list3");
  2213. model.resetInstanceNode("/root/hidden/item5/clod");
  2214. model.resetInstanceNode("/root/hidden/smpic00200/judgsrch"); // SMPIC00200_수가조회
  2215. model.resetInstanceNode("/root/hidden/smpic00200/rslt");
  2216. model.resetInstanceNode("/root/hidden/smpid20200/cond"); // SMPID20200_입원사후심사대상자조회
  2217. model.resetInstanceNode("/root/hidden/smpid20200/rslt");
  2218. model.resetInstanceNode("/root/hidden/smpid20300/cond"); // SMPID20300_입원사후심사관리
  2219. model.resetInstanceNode("/root/hidden/smpid20500/cond"); // SMPID20500_외래사후심사관리
  2220. model.resetInstanceNode("/root/hidden/sppid21300/cond"); // SPPID21300_심사전후차액조회
  2221. model.resetInstanceNode("/root/hidden/sppid21600/cond"); // SPPID21600_세부계산내역조회
  2222. model.resetInstanceNode("/root/hidden/sppid21700/cond"); // SPPID21700_원외처방조회
  2223. model.resetInstanceNode("/root/hidden/smpiz00100/cond"); // SMPIZ00100_외래입원상병이력조회
  2224. model.resetInstanceNode("/root/hidden/smpiz00100/rslt");
  2225. model.resetInstanceNode("/root/hidden/sppiz00200/cond/clsp"); // SPPIZ00200_첨부물자료관리
  2226. model.resetInstanceNode("/root/hidden/sppiz00200/rslt/clsp");
  2227. model.resetInstanceNode("/root/hidden/sppiz00300/rslt"); // SPPIZ00300_메모이력조회
  2228. model.resetInstanceNode("/root/hidden/sppiz00400/cond"); // SPPIZ00400_상병코드조회
  2229. model.resetInstanceNode("/root/hidden/sppiz00400/rslt");
  2230. model.resetInstanceNode("/root/hidden/sppiz00500/cond"); // SPPIZ00500_특정내역상세관리
  2231. model.resetInstanceNode("/root/hidden/sppiz00500/rslt");
  2232. model.resetInstanceNode("/root/hidden/sppiz00600/cond"); // SPPIZ00600_상병및처방별치식
  2233. model.resetInstanceNode("/root/hidden/sppiz00600/rslt");
  2234. model.resetInstanceNode("/root/hidden/sppiz00700/cond"); // SPPIZ00700_심사Comment조회
  2235. model.resetInstanceNode("/root/hidden/sppiz00700/rslt");
  2236. model.resetInstanceNode("/root/hidden/sppiz00800/cond"); // SPPIZ00800_산정코드조회
  2237. model.resetInstanceNode("/root/hidden/sppiz00800/rslt");
  2238. model.resetInstanceNode("/root/hidden/sppiz01000/cond"); // SPPIZ01000_심사수정사유관리
  2239. model.resetInstanceNode("/root/hidden/sppiz01000/rslt");
  2240. model.resetInstanceNode("/root/hidden/sppiz01100/cond"); // SPPIZ01100_확인코드조회
  2241. model.resetInstanceNode("/root/hidden/sppiz01100/rslt");
  2242. model.resetInstanceNode("/root/hidden/sppiz01300/cond"); // SPPIZ01300_수술정보조회
  2243. model.resetInstanceNode("/root/hidden/sppiz01400/cond"); // SPPIZ01400_특정내역코드상세조회
  2244. model.resetInstanceNode("/root/hidden/sppiz01400/rslt");
  2245. model.resetInstanceNode("/root/hidden/smpmc01300/cond"); // SMPMC01300_특이환자관리
  2246. model.resetInstanceNode("/root/hidden/smpmc01300/rslt");
  2247. // model.resetInstanceNode("/root/hidden/sppmb01500/cond"); //
  2248. // SPPMB01500_보험자기호조회
  2249. model.resetInstanceNode("/root/hidden/sppmc02500/cond"); // SPPMC02500_환자조회
  2250. model.resetInstanceNode("/root/hidden/smmnn00700/cond"); // SPPIZ01200_분만신생아정보관리
  2251. model.resetInstanceNode("/root/hidden/sppid22800/cond"); // SPPID22800_재청구차액발생사유관리
  2252. model.resetInstanceNode("/root/hidden/sppid22800/rslt");
  2253. model.resetInstanceNode("/root/hidden/sppid23100/cond"); // SPPID23100_급비변경관리
  2254. model.resetInstanceNode("/root/hidden/sppid23100/rslt");
  2255. // 특정내역Grid용 필터링 Radio 초기값
  2256. model.setValue("/root/hidden/list3/selectedUnitFlag", "-");
  2257. // 처방 조회부 항목구분 Radio item의 굵은 표시를 취소한다.
  2258. var itemRadioList = instance1
  2259. .selectSingleNode("/root/hidden/list2/cloditem1");
  2260. var itemNode = itemRadioList.childNodes;
  2261. for ( var i = 0; i < itemNode.length; i++) {
  2262. rdo_item1.item(i).attribute("font-weight") = "normal";
  2263. }
  2264. // 처방Grid 배경색을 초기화한다.
  2265. grd_clodhist.rebuildStyle();
  2266. grd_cldihist.rebuildStyle();
  2267. // 처방 Grid 필터용 조회조건을 초기화한다.
  2268. fInitOrderFilter();
  2269. cmb_orddeptcd.choices.itemset.attribute("nodeset") = "/root/init/orddeptcd2/orddeptcdlist";
  2270. cmb_orddrid.choices.itemset.attribute("nodeset") = "/root/init/orddrid2/orddridlist";
  2271. // 20091230 완화의료 표시 삭제
  2272. pm_flag.visible = false;
  2273. return true;
  2274. }
  2275. // 삭제 or 삭제취소 후 or 처방Grid에서 그룹/수가/EDI코드를 입력한 이후에 줄번호를 다시 부여한다.
  2276. function fSetOrderLnNo() {
  2277. var row = grd_clodhist.row;
  2278. var seqno = model.getValue("/root/main/list2/clod[" + row + "]/seqno");
  2279. var ediitem1 = model.getValue("/root/main/list2/clod[" + row + "]/ediitem1");
  2280. var ediitem2 = model.getValue("/root/main/list2/clod[" + row + "]/ediitem2");
  2281. var grupcalcscorcd = model.getValue("/root/main/list2/clod[" + row + "]/grupcalcscorcd");
  2282. var snglcalcscorcd = model.getValue("/root/main/list2/clod[" + row + "]/snglcalcscorcd");
  2283. var estmmncd = model.getValue("/root/main/list2/clod[" + row + "]/estmmncd");
  2284. // sort 전 row 위치를 기억한다.
  2285. var rowNum = grd_clodhist.topRow - grd_clodhist.row;
  2286. // 수가코드가 없는 row를 삭제하고, 정렬하고, 줄번호를 다시 부여한다.
  2287. // 2008-09-01
  2288. // fDelEmptyGridOrderData();
  2289. // 항,목,그룹코드,재행에 따라 정렬한다.
  2290. grd_clodhist.colsort(grd_clodhist.colRef("ediitem1")) = "asc"; // 항
  2291. grd_clodhist.colsort(grd_clodhist.colRef("ediitem2")) = "asc"; // 목
  2292. grd_clodhist.colsort(grd_clodhist.colRef("grupcalcscorcd")) = "asc"; // 그룹코드
  2293. grd_clodhist.colsort(grd_clodhist.colRef("grupseqno")) = "asc"; // 그룹 정렬순번
  2294. grd_clodhist.colsort(grd_clodhist.colRef("snglcalcscorcd")) = "asc"; // 싱글코드
  2295. grd_clodhist.colsort(grd_clodhist.colRef("edicd")) = "asc"; // EDI코드
  2296. var maxRow = parseInt(grd_clodhist.rows); // rows는 타이틀부분 부터 개수를 센다
  2297. var maxCol = parseInt(grd_clodhist.cols);
  2298. grd_clodhist.sort(grd_clodhist.fixedRows, grd_clodhist.fixedCols, maxRow, maxCol) = "usersort";
  2299. // Sort 된 Grid 상의 Data 순서와 Instance Node 상의 Data 순서를 동일하게 맞춰준다.
  2300. grd_clodhist.gridToInstance();
  2301. // 줄번호를 변경한다.
  2302. // fChangeOrderLnNo();
  2303. var row = grd_clodhist.findRow(seqno, 0, grd_clodhist.colRef("seqno"), false, true);
  2304. grd_clodhist.select(row, 1) = true;
  2305. grd_clodhist.row = row;
  2306. grd_clodhist.topRow = row + rowNum;
  2307. /*
  2308. * for (var i = grd_clodhist.rows; i > 0; i--) { if
  2309. * (model.getValue("/root/main/list2/clod["+ i +"]/seqno") == seqno) { if
  2310. * (model.getValue("/root/main/list2/clod["+ i +"]/ediitem1") == ediitem1) {
  2311. * if (model.getValue("/root/main/list2/clod["+ i +"]/ediitem2") ==
  2312. * ediitem2) { if (model.getValue("/root/main/list2/clod["+ i
  2313. * +"]/grupcalcscorcd") == grupcalcscorcd) { if
  2314. * (model.getValue("/root/main/list2/clod["+ i +"]/snglcalcscorcd") ==
  2315. * snglcalcscorcd) { if (model.getValue("/root/main/list2/clod["+ i
  2316. * +"]/estmmncd") == estmmncd) { grd_clodhist.select(i, 1) = true;
  2317. * grd_clodhist.row = i;
  2318. *
  2319. * grd_clodhist.topRow = i + rowNum; break; } } } } } } }
  2320. */
  2321. }
  2322. // 줄번호를 변경한다.
  2323. function fChangeOrderLnNo() {
  2324. /*
  2325. * // 줄번호와 수가코드가 동일한 특정내역의 줄번호부터 변경한다. for (var i = grd_clodhist.fixedRows;
  2326. * i < grd_clodhist.rows; i++) { // 첫 줄부터 var clodLnno =
  2327. * model.getValue("/root/main/list2/clod["+ i +"]/initlnno"); if
  2328. * (model.getValue("/root/main/list2/clod["+ i +"]/cnfmcd") ||
  2329. * model.getValue("/root/main/list2/clod["+ i +"]/lnunitspclspecyn")) { //
  2330. * 확인코드 'JT001'이 입력되거나 줄단위 특정내역이 입력된 경우 for (var j = grd_clsphist.fixedRows;
  2331. * j < grd_clsphist.rows; j++) { var spclLnNo =
  2332. * model.getValue("/root/main/list3/clsp["+ j +"]/oldedilnno"); if (spclLnNo ==
  2333. * "") { // 입력된 줄번호가 없는 경우 제외 } else if (spclLnNo == "0") { // 명일련 단위는 제외 }
  2334. * else if (spclLnNo == clodLnno) { var clspstatus =
  2335. * grd_clsphist.rowstatus(j); if (clspstatus == 0 || clspstatus == 2) { // 0 :
  2336. * new, 2 : update if (spclLnNo != i) { // 기존 줄번호와 새 줄번호가 다른 경우
  2337. * grd_clsphist.rowstatus(j) = 2; // 2 : update 상태로 stat를 변경한다. } }
  2338. * model.setValue("/root/main/list3/clsp["+ j +"]/edilnno", i); } } } // 처방
  2339. * Grid의 줄번호를 변경한다. model.setValue("/root/main/list2/clod["+ i +"]/edilnno",
  2340. * i);
  2341. *
  2342. * var initlnno = model.getValue("/root/main/list2/clod["+ i +"]/initlnno");
  2343. * if (initlnno != i) { // DB에 저장된 줄번호와 다른 줄번호로 바뀐 경우 // 처방의 수정된 row 상태를
  2344. * 표시한다. // fSetOrderChangeRowStat(i); var rowstatus =
  2345. * grd_clodhist.rowstatus(i); if (rowstatus == 1 || rowstatus == 3) { // 1 :
  2346. * insert, 3 : insert & new } else { grd_clodhist.rowstatus(i) = 2; // 2 :
  2347. * update 상태로 stat를 변경한다. } } }
  2348. *
  2349. * for (var i = grd_clodhist.fixedRows; i < grd_clodhist.rows; i++) {
  2350. * model.setValue("/root/main/list2/clod["+ i +"]/initlnno",
  2351. * model.getValue("/root/main/list2/clod["+ i +"]/edilnno")); } for (var j =
  2352. * grd_clsphist.fixedRows; j < grd_clsphist.rows; j++) {
  2353. * model.setValue("/root/main/list3/clsp["+ j +"]/oldedilnno",
  2354. * model.getValue("/root/main/list3/clsp["+ j +"]/edilnno")); }
  2355. */
  2356. }
  2357. // 1. grd_clodhist : xforms_Value_changed : 그룹코드, 싱글코드, edi코드,한글 수정시
  2358. // 2. grd_clodhist : xfomrs_value_changed : fromdd수정시 일수없는 경우기존 줄번호 없는 경우
  2359. // 3. grd_clodhist : xfomrs_value_changed : todd수정시 일수변경되어 기존 줄번호 없는 경우
  2360. // 4. grd_clodhist : xfomrs_value_changed : todd수정시 fromdd없어서 fromdd변경되어 기존 줄번호
  2361. // 없는 경우
  2362. // 4. grd_clodhist : xfomrs_value_changed : dayno수정시 기존 줄번호 없는 경우
  2363. // 수가코드를 조회한 후 처방으로 행 추가를 한다.
  2364. function fSetSrchCalcScorCd() {
  2365. var col = grd_clodhist.col;
  2366. var row = grd_clodhist.row;
  2367. var calcscorcd = "";
  2368. model.resetInstanceNode("/root/hidden/smpic00200/judgsrch"); // SMPIC00200_수가조회에 전달할 조건값
  2369. model.resetInstanceNode("/root/send/item5/mech"); // submit("TRPID20303")용
  2370. model.makeValue("/root/send/item5/mech/unitcostupdateyn", "N"); // 단가변경여부
  2371. model.makeValue("/root/send/item5/mech/ediupdateyn", "N"); // edi변경여부
  2372. var cnfmcd = model.getValue("/root/main/list2/clod[" + row + "]/cnfmcd");
  2373. var lnunitspclspecyn = model.getValue("/root/main/list2/clod[" + row + "]/lnunitspclspecyn");
  2374. if (cnfmcd || lnunitspclspecyn) {
  2375. var ans = messageBox("입력된 줄단위 특정내역을 삭제하고 코드를 변경", "S001"); // /입력된 줄단위 특정내역을 삭제하고 코드를 변경하시려면 예(Yes)\n아니면 아니오(No)
  2376. if (ans == 6) { // 6: yes, 7:no, 2:cancel
  2377. model.resetInstanceNode("/root/main/list2/clod[" + row + "]/cnfmcd");
  2378. model.resetInstanceNode("/root/main/list2/clod[" + row + "]/lnunitspclspecyn");
  2379. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff = White
  2380. var edilnno = model.getValue("/root/main/list2/clod[" + row + "]/edilnno");
  2381. var clspgridrow;
  2382. for ( var j = 1; j < grd_clsphist.rows; j++) {
  2383. var spclLnNo = model.getValue("/root/main/list3/clsp[" + j + "]/edilnno");
  2384. if (spclLnNo == edilnno) {
  2385. // 특정내역 Grid에서 삭제
  2386. var rowstatus = grd_clsphist.rowstatus(j);
  2387. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 :
  2388. // insert & new
  2389. model.resetInstanceNode("/root/main/list3/clsp[" + j + "]/spclcd");
  2390. model.resetInstanceNode("/root/main/list3/clsp[" + j + "]/spclspec");
  2391. // grd_clsphist.deleteRow(j, false); // 해당 라인을 Grid에서
  2392. // 삭제한다.
  2393. // j--;
  2394. } else { // 0 : new, 2 : update
  2395. grd_clsphist.rowstatus(j) = 4; // 4 : delete 상태로 stat를
  2396. // 변경한다.
  2397. }
  2398. }
  2399. }
  2400. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  2401. fSortSpclNo();
  2402. } else if (ans == 7 || ans == 2) { // 6: yes, 7:no, 2:cancel
  2403. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  2404. fCancelClodStatusChng();
  2405. return; // 입력된 코드에 변경이 없거나 코드를 삭제한 경우임
  2406. }
  2407. }
  2408. if (col == grd_clodhist.colRef("grupcalcscorcd")) { // 그룹코드
  2409. var grupcalcscorcd = model.getValue("/root/main/list2/clod[" + row
  2410. + "]/grupcalcscorcd");
  2411. if (grupcalcscorcd == "") {
  2412. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  2413. fCancelClodStatusChng();
  2414. return; // 입력된 코드에 변경이 없거나 코드를 삭제한 경우임
  2415. }
  2416. model.setValue("/root/hidden/smpic00200/judgsrch/con4_search2",grupcalcscorcd); // SMPIC00200_수가조회 용
  2417. model.makeValue("/root/send/item5/mech/grupcalcscorcd", grupcalcscorcd); // submit("TRPID20303")
  2418. // 용
  2419. model.makeValue("/root/send/item5/mech/snglcalcscorcd", "");
  2420. model.makeValue("/root/send/item5/mech/basecd", "");
  2421. calcscorcd = grupcalcscorcd;
  2422. } else if (col == grd_clodhist.colRef("snglcalcscorcd")) { // 수가코드
  2423. var snglcalcscorcd = model.getValue("/root/main/list2/clod[" + row + "]/snglcalcscorcd");
  2424. if (snglcalcscorcd == "") {
  2425. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  2426. fCancelClodStatusChng();
  2427. return; // 입력된 코드에 변경이 없거나 코드를 삭제한 경우임
  2428. }
  2429. model.setValue("/root/hidden/smpic00200/judgsrch/con4_search2", snglcalcscorcd); // SMPIC00200_수가조회 용
  2430. model.makeValue("/root/send/item5/mech/snglcalcscorcd", snglcalcscorcd); // submit("TRPID20303")
  2431. // 용
  2432. model.makeValue("/root/send/item5/mech/grupcalcscorcd", "");
  2433. model.makeValue("/root/send/item5/mech/basecd", "");
  2434. calcscorcd = snglcalcscorcd;
  2435. } else if (col == grd_clodhist.colRef("basecd")) { // EDI코드
  2436. var basecd = model.getValue("/root/main/list2/clod[" + row + "]/basecd");
  2437. if (basecd == "") {
  2438. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  2439. fCancelClodStatusChng();
  2440. return; // 입력된 코드에 변경이 없거나 코드를 삭제한 경우임
  2441. }
  2442. model.setValue("/root/hidden/smpic00200/judgsrch/con4_search2", basecd); // SMPIC00200_수가조회
  2443. // 용
  2444. model.makeValue("/root/send/item5/mech/basecd", basecd); // submit("TRPID20303")
  2445. // 용
  2446. model.makeValue("/root/send/item5/mech/grupcalcscorcd", "");
  2447. model.makeValue("/root/send/item5/mech/snglcalcscorcd", "");
  2448. calcscorcd = basecd;
  2449. }
  2450. else if (col == grd_clodhist.colRef("hngnm")) { // 한글명
  2451. var hngnm = model.getValue("/root/main/list2/clod[" + row + "]/hngnm");
  2452. if (hngnm == "") {
  2453. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  2454. fCancelClodStatusChng();
  2455. return; // 입력된 코드에 변경이 없거나 코드를 삭제한 경우임
  2456. }
  2457. model.setValue("/root/hidden/smpic00200/judgsrch/con4_search2", hngnm); // SMPIC00200_수가조회
  2458. // 용
  2459. model.makeValue("/root/send/item5/mech/basecd", ""); // submit("TRPID20303")
  2460. // 용
  2461. model.makeValue("/root/send/item5/mech/grupcalcscorcd", "");
  2462. model.makeValue("/root/send/item5/mech/snglcalcscorcd", "");
  2463. }
  2464. var ordfromdd = model.getValue("/root/main/list2/clod[" + row + "]/ordfromdd");
  2465. var ordtodd = model.getValue("/root/main/list2/clod[" + row + "]/ordtodd");
  2466. /*
  2467. * // 2009-01-12 입원환자 의약품관리료는 입원일자로 조회한다. var ioflag =
  2468. * model.getValue("/root/main/item1/clbs/ioflag"); if (ioflag == "I" &&
  2469. * calcscorcd.substr(0, 2) == "AL") { var indd =
  2470. * model.getValue("/root/main/item1/clbs/indd"); ordfromdd = indd; ordtodd =
  2471. * indd; model.setValue("/root/main/list2/clod["+ row +"]/ordfromdd", indd);
  2472. * model.setValue("/root/main/list2/clod["+ row +"]/ordtodd", indd); } else { }
  2473. */
  2474. if (isValidDateTime(ordfromdd)) { // (dateHelper.js) 유효한 날짜, 시간 인지 점검
  2475. if (!isValidDateTime(ordtodd)) {
  2476. model.setValue("/root/main/list2/clod[" + row + "]/ordtodd", ordfromdd);
  2477. model.setValue("/root/main/list2/clod[" + row + "]/orddd", ordfromdd);
  2478. ordtodd = ordfromdd;
  2479. }
  2480. } else {
  2481. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  2482. fCancelClodStatusChng();
  2483. messageBox("처방시작일 & 종료일은", "I003"); // /처방시작일 & 종료일은 필수입력입니다.
  2484. return;
  2485. }
  2486. var dayno = getDateInterval(ordfromdd, ordtodd); // (dateHelper.js) 두
  2487. // 일자사이의 차를 일단위로 반환
  2488. if (dayno < 0) {
  2489. messageBox("처방종료일자가 처방시작일자 보다 이전 날짜", "E008"); // /처방종료일자가 처방시작일자 보다 이전
  2490. // 날짜입니다.
  2491. return;
  2492. } else if (dayno > 365) {
  2493. messageBox("처방일이 잘못", "E005"); // /처방일이 잘못 선택되었습니다.
  2494. return;
  2495. }
  2496. model.makeValue("/root/send/item5/mech/indd", model.getValue("/root/main/item1/clbs/indd"));
  2497. model.makeValue("/root/send/item5/mech/ordfromdd", ordfromdd);
  2498. model.makeValue("/root/send/item5/mech/ordtodd", ordtodd);
  2499. model.makeValue("/root/send/item5/mech/insukind", model.getValue("/root/main/item1/clbs/insukindcd"));
  2500. model.makeValue("/root/send/item5/mech/suppkind", model.getValue("/root/main/item1/clbs/suppkindcd"));
  2501. var orddeptcd = model.getValue("/root/main/list2/clod[" + row + "]/orddeptcd");
  2502. if (orddeptcd) {
  2503. model.makeValue("/root/send/item5/mech/orddeptcd", orddeptcd);
  2504. } else {
  2505. model.makeValue("/root/send/item5/mech/orddeptcd", model.getValue("/root/main/item1/clbs/orddeptcd"));
  2506. }
  2507. var orddrid = model.getValue("/root/main/list2/clod[" + row + "]/orddrid");
  2508. if (orddrid) {
  2509. model.makeValue("/root/send/item5/mech/orddrid", orddrid);
  2510. } else {
  2511. model.makeValue("/root/send/item5/mech/orddrid", model.getValue("/root/main/item1/clbs/orddrid"));
  2512. }
  2513. var drugqty = model.getValue("/root/main/list2/clod[" + row + "]/drugqty");
  2514. if (drugqty == "") {
  2515. drugqty = "1";
  2516. }
  2517. model.makeValue("/root/send/item5/mech/drugqty", drugqty);
  2518. var tims = model.getValue("/root/main/list2/clod[" + row + "]/tims");
  2519. if (tims == "") {
  2520. tims = "1";
  2521. }
  2522. model.makeValue("/root/send/item5/mech/tims", tims);
  2523. var dayno = model.getValue("/root/main/list2/clod[" + row + "]/dayno");
  2524. if (dayno == "") {
  2525. dayno = "1";
  2526. }
  2527. model.makeValue("/root/send/item5/mech/dayno", dayno);
  2528. model.makeValue("/root/send/item5/mech/adjtresncd", model.getValue("/root/main/list2/clod[" + row + "]/adjtresncd"));
  2529. model.makeValue("/root/send/item5/mech/undersixageyn", model.getValue("/root/main/item1/clbs/undersixageyn"));
  2530. model.makeValue("/root/send/item5/mech/mechage", model.getValue("/root/main/item1/clbs/mechage"));
  2531. model.makeValue("/root/send/item5/mech/hosinresncd", model.getValue("/root/main/list2/clod[" + row + "]/hosinresncd"));
  2532. model.makeValue("/root/send/item5/mech/payflag", model.getValue("/root/main/list2/clod[" + row + "]/payflag"));
  2533. model.makeValue("/root/send/item5/mech/clbsordfromdd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  2534. model.makeValue("/root/send/item5/mech/ioflag", model.getValue("/root/main/item1/clbs/ioflag"));
  2535. model.makeValue("/root/send/item5/mech/clamflagcd", model.getValue("/root/main/item1/clbs/clamflagcd"));
  2536. model.makeValue("/root/send/item5/mech/mode", "n");
  2537. model.makeValue("/root/send/item5/mech/pid", model.getValue("/root/main/item1/clbs/pid")); // 20100125 추가
  2538. model.makeValue("/root/send/item5/mech/clamdeptcd", model.getValue("/root/main/item1/clbs/clamdeptcd")); // 20100724 추가
  2539. var clodlength;
  2540. // if (!col == grd_clodhist.colRef("hngnm")) { // 한글명인 경우는 수가를 바로 조회하지 않고
  2541. // 수가조회 popup창을 띄운다.
  2542. if (col == grd_clodhist.colRef("hngnm")) { // 20100112 not 조건이 왜 걸리있을까요?
  2543. clodlength = 0;
  2544. } else {
  2545. if (submit("TRPID20303")) {
  2546. var clodSelect = instance1.selectSingleNode("/root/main/item5"); // root/main/item5
  2547. var clod = clodSelect.childNodes; // root/main/item5/mech
  2548. clodlength = clod.length;
  2549. } else {
  2550. clodlength = 0;
  2551. }
  2552. }
  2553. // 입력한 코드에 대해 조회된 결과가 없거나, 하나의 EDI코드에 여러 수가코드가 존재할 때
  2554. if ((clodlength == 0)
  2555. || (col == grd_clodhist.colRef("basecd") && clodlength > 1)) {
  2556. // 검색된 결과가 여러 수가코드인 경우 이를 초기화하고 수가조회 Popup 창에서 새로 결과를 얻는다.
  2557. model.resetInstanceNode("/root/main/item5");
  2558. // insukindcd를 SMPIC00200_수가조회 화면에서 사용하는 조건값으로 변경한다.
  2559. var insukindcd = model.getValue("/root/main/item1/clbs/insukindcd");
  2560. if (insukindcd == "11") {
  2561. model.setValue("/root/hidden/smpic00200/judgsrch/con5_insu", "insu");
  2562. } else if (insukindcd == "21" || insukindcd == "22") {
  2563. model.setValue("/root/hidden/smpic00200/judgsrch/con5_insu", "proc");
  2564. } else if (insukindcd == "31") {
  2565. model.setValue("/root/hidden/smpic00200/judgsrch/con5_insu", "autm");
  2566. } else if (insukindcd == "41") {
  2567. model.setValue("/root/hidden/smpic00200/judgsrch/con5_insu", "indus");
  2568. } else {
  2569. model.setValue("/root/hidden/smpic00200/judgsrch/con5_insu", "insu");
  2570. }
  2571. // SMPIC00200_수가조회 화면의 그룹,싱글 combo 조건값 설정
  2572. if (col == grd_clodhist.colRef("grupcalcscorcd")) {
  2573. model.setValue("/root/hidden/smpic00200/judgsrch/con2_gsflag", "G");
  2574. } else if (col == grd_clodhist.colRef("snglcalcscorcd")) {
  2575. model.setValue("/root/hidden/smpic00200/judgsrch/con2_gsflag", "S");
  2576. }
  2577. // SMPIC00200_수가조회 화면의 검색조건 combo 조건값 설정
  2578. if (col == grd_clodhist.colRef("basecd")) {
  2579. model.setValue("/root/hidden/smpic00200/judgsrch/con3_search1", "edicd");
  2580. } else if (col == grd_clodhist.colRef("hngnm")) {
  2581. model.setValue("/root/hidden/smpic00200/judgsrch/con3_search1", "hngnm");
  2582. } else {
  2583. model.setValue("/root/hidden/smpic00200/judgsrch/con3_search1", "calcscorcd");
  2584. }
  2585. // 처방시작일을 수가조회 기준일자로 설정
  2586. if (ordfromdd) {
  2587. model.setValue("/root/hidden/smpic00200/judgsrch/con1_dd", ordfromdd);
  2588. }
  2589. model.setValue("/root/hidden/smpic00200/judgsrch/con_ordinptflag",
  2590. "PAM"); // 20100113 처방입력구분이 입력가능으로 된 수가도 조회하기 위해서 추가
  2591. model.removeNodeset("/root/hidden/smpic00200/rslt/mech"); // SMPIC00200_수가조회 에서 선택된 결과가 copyNode되는 경로임
  2592. model.removeNodeset("/root/hidden/smpic00200/rslt/picmmech"); // SMPIC00200_수가조회 에서 선택된 결과가copyNode되는 경로임
  2593. modal("SMPIC00200", "1", "10", "10", "SMPIC00200","root/hidden/smpic00200", "/root/temp", "", ""); // SMPIC00200_수가조회.xrw
  2594. var mechSelect = instance1.selectSingleNode("/root/temp/mech");
  2595. if (mechSelect == null) { // 선택한 코드가 없는 경우
  2596. model.setValue("/root/main/list2/clod[" + row + "]/grupcalcscorcd", model.getValue("/root/hidden/item5/clod/grupcalcscorcd"));
  2597. model.setValue("/root/main/list2/clod[" + row + "]/snglcalcscorcd", model.getValue("/root/hidden/item5/clod/snglcalcscorcd"));
  2598. model.setValue("/root/main/list2/clod[" + row + "]/basecd", model.getValue("/root/hidden/item5/clod/basecd"));
  2599. messageBox("수가조회 화면에서 선택한 결과가", "I004"); // /수가조회 화면에서 선택한 결과가
  2600. // 없습니다.
  2601. return;
  2602. }
  2603. // SMPIC00200_수가조회 화면에서 보낸 결과 값에 대한 처리
  2604. model.makeNode("/root/hidden/smpic00200/rslt/mech");
  2605. model.makeNode("/root/hidden/smpic00200/rslt/picmmech");
  2606. model.copyNode("/root/hidden/smpic00200/rslt/mech", "/root/temp/mech");
  2607. model.copyNode("/root/hidden/smpic00200/rslt/picmmech", "/root/temp/picmmech");
  2608. model.removeNodeset("/root/temp"); // SMPIC00200_수가조회 에서 선택된 결과가 직접
  2609. // 전달되는 경로임
  2610. if (model.getValue("/root/hidden/smpic00200/rslt/mech/ordinptflag") != "A" && model.getValue("/root/hidden/smpic00200/rslt/mech/ordinptflag") != "I" // 20100120
  2611. // 김용민
  2612. // 입력가능한
  2613. // 수가
  2614. // 제외
  2615. ) { // 처방입력구분(코드군 P0141) A: 가능
  2616. model.setValue("/root/main/list2/clod[" + row + "]/grupcalcscorcd", model.getValue("/root/hidden/item5/clod/grupcalcscorcd"));
  2617. model.setValue("/root/main/list2/clod[" + row + "]/snglcalcscorcd", model.getValue("/root/hidden/item5/clod/snglcalcscorcd"));
  2618. model.setValue("/root/main/list2/clod[" + row + "]/basecd", model.getValue("/root/hidden/item5/clod/basecd"));
  2619. messageBox("처방이 불가한 코드", "E008"); // /처방이 불가한 코드입니다.
  2620. return;
  2621. }
  2622. if (model.getValue("/root/hidden/smpic00200/rslt/mech/grupsnglflag") != "S") { // 그룹코드인
  2623. // 경우의
  2624. // 그룹코드에
  2625. // 속하는
  2626. // 싱글코드를
  2627. // 조회함.
  2628. model.makeValue("/root/send/item5/mech/grupcalcscorcd", model.getValue("/root/hidden/smpic00200/rslt/mech/calcscorcd"));
  2629. model.resetInstanceNode("/root/send/item5/mech/snglcalcscorcd");
  2630. model.resetInstanceNode("/root/send/item5/mech/basecd");
  2631. model.resetInstanceNode("/root/send/item5/mech/estmmncd");
  2632. // model.resetInstanceNode("/root/send/item5/mech/toot");
  2633. submit("TRPID20303");
  2634. } else { // 싱글코드를 선택했을 때
  2635. model.resetInstanceNode("/root/send/item5/mech/grupcalcscorcd");
  2636. model.makeValue("/root/send/item5/mech/snglcalcscorcd", model.getValue("/root/hidden/smpic00200/rslt/picmmech/picmmech_calcscorcd"));
  2637. model.resetInstanceNode("/root/send/item5/mech/basecd");
  2638. model.resetInstanceNode("/root/send/item5/mech/estmmncd");
  2639. // model.resetInstanceNode("/root/send/item5/mech/toot");
  2640. submit("TRPID20303");
  2641. }
  2642. }
  2643. // 수가조회 이후 신규처방 추가처리
  2644. fSetNewCalcScorCd();
  2645. // ////////////////
  2646. }
  2647. // 수가조회 이후 신규처방 추가처리
  2648. function fSetNewCalcScorCd() {
  2649. var row = grd_clodhist.row;
  2650. // SMPIC00200_수가조회 화면에서 선택한 그룹코드에 대해 조회한 결과 값에 대한 처리
  2651. var clodSelect = instance1.selectSingleNode("/root/main/item5"); // root/main/item5
  2652. if (clodSelect != null) {
  2653. var clod = clodSelect.childNodes; // root/main/item5/mech
  2654. if (clod.length == 0) {
  2655. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  2656. fCancelClodStatusChng();
  2657. messageBox("처방이 불가한 코드입니다. 수가조회 화면에서 선택한 그룹코드에 대해 조회한 결과가", "I004"); // /처방이
  2658. // 불가한
  2659. // 코드입니다.
  2660. // 수가조회
  2661. // 화면에서
  2662. // 선택한
  2663. // 그룹코드에
  2664. // 대해
  2665. // 조회한
  2666. // 결과가
  2667. // 없습니다.
  2668. return;
  2669. }
  2670. // 조회한 수가코드의 금액정보를 표시한다.
  2671. fSetCalcScorAmt(clod, "new");
  2672. // 수가코드가 변경되면 치식을 초기화시킨다.
  2673. model.resetInstanceNode("/root/main/list2/clod[" + row + "]/toot");
  2674. // fSetOrderLnNo();
  2675. // 새로 입력된 수가코드가 처방 Grid에 삽입 또는 수정되었으므로 처방 필터링이 선택되어있는 경우, 해당 Row만 표시되도록
  2676. // 한다.
  2677. // 2008-10-28
  2678. // fGetSelectedOrderData();
  2679. // 처방 항목 구분 및 선별심사 처방 색깔 구분
  2680. // fSetOrderData();
  2681. // 변경일자를 갱신한다.
  2682. // fChkUpdtdd(); // 20100120 왜 전체내역을 다시 변경하는지.. 일단삭제 (속도도 오래걸리고 로직확인 필요)
  2683. // 확인코드가 추가된 경우 특정내역 Grid에도 JT001을 추가한다.
  2684. fSetNewCnfmCd();
  2685. } else {
  2686. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  2687. fCancelClodStatusChng();
  2688. messageBox("처방이 불가한 코드입니다. 수가조회 화면에서 선택한 그룹코드에 대해 조회한 결과가", "I004"); // /처방이
  2689. // 불가한
  2690. // 코드입니다.
  2691. // 수가조회
  2692. // 화면에서
  2693. // 선택한
  2694. // 그룹코드에
  2695. // 대해
  2696. // 조회한
  2697. // 결과가
  2698. // 없습니다.
  2699. return;
  2700. }
  2701. }
  2702. // 변경된 투여량, 횟수, 일수에 따라 총투여량, 금액을 재계산한다.
  2703. function fSetTotDrugQtyAmt() {
  2704. var i = grd_clodhist.row;
  2705. var col = grd_clodhist.col;
  2706. model.resetInstanceNode("/root/send/item5/mech"); // submit("TRPID20303")
  2707. // 용
  2708. model.makeValue("/root/send/item5/mech/unitcostupdateyn", "N"); // 단가변경여부
  2709. model.makeValue("/root/send/item5/mech/ediupdateyn", "N"); // edi변경여부
  2710. var drugqty = model.getValue("/root/main/list2/clod[" + i + "]/drugqty");
  2711. if (drugqty == "" || drugqty == "0") {
  2712. model.setValue("/root/main/list2/clod[" + i + "]/drugqty", "1");
  2713. }
  2714. var tims = model.getValue("/root/main/list2/clod[" + i + "]/tims");
  2715. if (tims == "" || tims == "0") {
  2716. model.setValue("/root/main/list2/clod[" + i + "]/tims", "1");
  2717. }
  2718. var dayno = model.getValue("/root/main/list2/clod[" + i + "]/dayno");
  2719. if (dayno == "" || dayno == "0") {
  2720. model.setValue("/root/main/list2/clod[" + i + "]/dayno", "1");
  2721. }
  2722. // -------------------------------------------
  2723. // 20100205 추가 (기존 조건을 EDI 조회를 기본으로 변경하여 수정시 1일량 변경안되는 오류 때문에 추가
  2724. // -------------------------------------------
  2725. var dayno = model.getValue("/root/main/list2/clod[" + i + "]/edidrugqty");
  2726. if (dayno == "" || dayno == "0") {
  2727. model.setValue("/root/main/list2/clod[" + i + "]/edidrugqty", "1");
  2728. }
  2729. var dayno = model.getValue("/root/main/list2/clod[" + i + "]/edidayno");
  2730. if (dayno == "" || dayno == "0") {
  2731. model.setValue("/root/main/list2/clod[" + i + "]/edidayno", "1");
  2732. }
  2733. if (col == grd_clodhist.colRef("edidrugqty")) { // edi1회투여량이 변경된 경우
  2734. model.setValue("/root/main/list2/clod[" + i + "]/drugqty", model.getValue("/root/main/list2/clod[" + i + "]/edidrugqty"));
  2735. col = grd_clodhist.colRef("drugqty");
  2736. } else if (col == grd_clodhist.colRef("edidayno")) { // edi일수가 변경된 경우
  2737. model.setValue("/root/main/list2/clod[" + i + "]/dayno", model.getValue("/root/main/list2/clod[" + i + "]/edidayno"));
  2738. col = grd_clodhist.colRef("dayno");
  2739. }
  2740. // -------------------------------------------
  2741. var sDrugqty = model.getValue("/root/main/list2/clod[" + i + "]/drugqty");
  2742. var sTims = model.getValue("/root/main/list2/clod[" + i + "]/tims");
  2743. var sDayno = model.getValue("/root/main/list2/clod[" + i + "]/dayno");
  2744. var sUnitcost = model.getValue("/root/main/list2/clod[" + i + "]/unitcost");
  2745. var sEdiDrugqty = model.getValue("/root/main/list2/clod[" + i
  2746. + "]/edidrugqty");
  2747. var sEdiDayno = model.getValue("/root/main/list2/clod[" + i + "]/edidayno");
  2748. var drugqty = parseFloat(sDrugqty);
  2749. var tims = parseInt(sTims);
  2750. var dayno = parseInt(sDayno);
  2751. var unitcost = parseFloat(sUnitcost);
  2752. var edidrugqty = parseFloat(sEdiDrugqty);
  2753. var edidayno = parseInt(sEdiDayno);
  2754. if (col == grd_clodhist.colRef("drugqty")) { // 1회투여량이 변경된 경우
  2755. if (sDrugqty == "" || drugqty <= 0) {
  2756. fCancelClodStatusChng(); // 처방이전상태 복구
  2757. return false;
  2758. }
  2759. } else if (col == grd_clodhist.colRef("tims")) { // 횟수가 변경된 경우
  2760. if (sTims == "" || tims <= 0) {
  2761. fCancelClodStatusChng(); // 처방이전상태 복구
  2762. return false;
  2763. }
  2764. } else if (col == grd_clodhist.colRef("dayno")) { // 일수가 변경된 경우
  2765. if (sDayno == "" || dayno <= 0) {
  2766. fCancelClodStatusChng(); // 처방이전상태 복구
  2767. return false;
  2768. }
  2769. } else if (col == grd_clodhist.colRef("unitcost")) { // 단가 변경된 경우(추가청구인
  2770. // 경우만 해당)
  2771. if (sUnitcost == "" || unitcost <= 0) {
  2772. fCancelClodStatusChng(); // 처방이전상태 복구
  2773. return false;
  2774. } else {
  2775. model.makeValue("/root/send/item5/mech/unitcostupdateyn", "Y"); // 단가변경여부
  2776. }
  2777. } else if (col == grd_clodhist.colRef("edidrugqty")) { // edi1회투여량이 변경된 경우
  2778. if (sEdiDrugqty == "" || edidrugqty <= 0) {
  2779. fCancelClodStatusChng(); // 처방이전상태 복구
  2780. return false;
  2781. } else {
  2782. model.makeValue("/root/send/item5/mech/ediupdateyn", "Y"); // edi변경여부
  2783. }
  2784. } else if (col == grd_clodhist.colRef("edidayno")) { // edi일수가 변경된 경우
  2785. if (sEdiDayno == "" || edidayno <= 0) {
  2786. fCancelClodStatusChng(); // 처방이전상태 복구
  2787. return false;
  2788. } else {
  2789. model.makeValue("/root/send/item5/mech/ediupdateyn", "Y"); // edi변경여부
  2790. }
  2791. }
  2792. var ordfromdd = model
  2793. .getValue("/root/main/list2/clod[" + i + "]/ordfromdd");
  2794. var ordtodd = model.getValue("/root/main/list2/clod[" + i + "]/ordtodd");
  2795. var snglcalcscorcd = model.getValue("/root/main/list2/clod[" + i
  2796. + "]/snglcalcscorcd");
  2797. if (ordfromdd == "" || ordtodd == "" || snglcalcscorcd == "") {
  2798. return false;
  2799. }
  2800. var dayno = getDateInterval(ordfromdd, ordtodd); // (dateHelper.js) 두
  2801. // 일자사이의 차를 일단위로 반환
  2802. if (dayno < 0) {
  2803. return false;
  2804. } else if (dayno > 365) {
  2805. return false;
  2806. }
  2807. model.makeValue("/root/send/item5/mech/indd", model.getValue("/root/main/item1/clbs/indd"));
  2808. model.makeValue("/root/send/item5/mech/ordfromdd", ordfromdd);
  2809. model.makeValue("/root/send/item5/mech/ordtodd", ordtodd);
  2810. model.makeValue("/root/send/item5/mech/drugqty", sDrugqty);
  2811. model.makeValue("/root/send/item5/mech/tims", sTims);
  2812. model.makeValue("/root/send/item5/mech/dayno", sDayno);
  2813. model.makeValue("/root/send/item5/mech/unitcost", sUnitcost);
  2814. model.makeValue("/root/send/item5/mech/edidrugqty", sEdiDrugqty);
  2815. model.makeValue("/root/send/item5/mech/edidayno", sEdiDayno);
  2816. var grupcalcscorcd = model.getValue("/root/main/list2/clod[" + i
  2817. + "]/grupcalcscorcd");
  2818. if (grupcalcscorcd != "" && grupcalcscorcd != "-") {
  2819. model.makeValue("/root/send/item5/mech/grupcalcscorcd", grupcalcscorcd);
  2820. } else {
  2821. model.resetInstanceNode("/root/send/item5/mech/grupcalcscorcd");
  2822. }
  2823. model.makeValue("/root/send/item5/mech/snglcalcscorcd", snglcalcscorcd);
  2824. model.resetInstanceNode("/root/send/item5/mech/basecd");
  2825. model.makeValue("/root/send/item5/mech/insukind", model.getValue("/root/main/item1/clbs/insukindcd"));
  2826. model.makeValue("/root/send/item5/mech/suppkind", model.getValue("/root/main/item1/clbs/suppkindcd"));
  2827. var orddeptcd = model.getValue("/root/main/list2/clod[" + i + "]/orddeptcd");
  2828. if (orddeptcd) {
  2829. model.makeValue("/root/send/item5/mech/orddeptcd", orddeptcd);
  2830. } else {
  2831. model.makeValue("/root/send/item5/mech/orddeptcd", model.getValue("/root/main/item1/clbs/orddeptcd"));
  2832. }
  2833. var orddrid = model.getValue("/root/main/list2/clod[" + i + "]/orddrid");
  2834. if (orddrid) {
  2835. model.makeValue("/root/send/item5/mech/orddrid", orddrid);
  2836. } else {
  2837. model.makeValue("/root/send/item5/mech/orddrid", model.getValue("/root/main/item1/clbs/orddrid"));
  2838. }
  2839. var estmmncd = model.getValue("/root/main/list2/clod[" + i + "]/estmmncd");
  2840. if (estmmncd != "" && estmmncd != "-") {
  2841. model.makeValue("/root/send/item5/mech/estmmncd", estmmncd);
  2842. }
  2843. model.makeValue("/root/send/item5/mech/adjtresncd", model.getValue("/root/main/list2/clod[" + i + "]/adjtresncd"));
  2844. model.makeValue("/root/send/item5/mech/undersixageyn", model.getValue("/root/main/item1/clbs/undersixageyn"));
  2845. model.makeValue("/root/send/item5/mech/mechage", model.getValue("/root/main/item1/clbs/mechage"));
  2846. model.makeValue("/root/send/item5/mech/hosinresncd", model.getValue("/root/main/list2/clod[" + i + "]/hosinresncd"));
  2847. model.makeValue("/root/send/item5/mech/payflag", model.getValue("/root/main/list2/clod[" + i + "]/payflag"));
  2848. model.makeValue("/root/send/item5/mech/clbsordfromdd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  2849. model.makeValue("/root/send/item5/mech/ioflag", model.getValue("/root/main/item1/clbs/ioflag"));
  2850. model.makeValue("/root/send/item5/mech/clamflagcd", model.getValue("/root/main/item1/clbs/clamflagcd"));
  2851. // if (col == grd_clodhist.colRef("drugqty")) { // 투여량이 변경된 경우
  2852. /*
  2853. * if (model.getValue("/root/main/list2/clod["+ i +"]/seqno") == "") { //
  2854. * EDI환산치, 위탁진료 적용 model.makeValue("/root/send/item5/mech/mode", "n"); }
  2855. * else { model.makeValue("/root/send/item5/mech/mode", "u"); }
  2856. */
  2857. model.makeValue("/root/send/item5/mech/mode", "u");
  2858. submit("TRPID20303");
  2859. var clodSelect = instance1.selectSingleNode("/root/main/item5"); // root/main/item5
  2860. var clod = clodSelect.childNodes; // root/main/item5/mech
  2861. if (clod.length == 1) {
  2862. // 조회한 수가코드의 금액정보를 표시한다.
  2863. fSetCalcScorAmt(clod, "update");
  2864. // 기존에 줄번호가 부여안된 경우
  2865. } else {
  2866. // [20070618] 조회된 결과가 없을 때?
  2867. if (col == grd_clodhist.colRef("drugqty")) { // 투여량이 변경된 경우
  2868. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  2869. fCancelClodStatusChng();
  2870. } else if (col == grd_clodhist.colRef("tims")) { // 횟수가 변경된 경우 처방 data 및 row status를 변경 이전 상태로 복구한다.
  2871. fCancelClodStatusChng();
  2872. }
  2873. // 일수가 바뀐 경우 fromdd / todd 날짜 역시 원위치가 되지 않으므로 복구하지 않는다.
  2874. else if (col == grd_clodhist.colRef("dayno")) { // 일수가 변경된 경우 처방 data 및 row status를 변경 이전 상태로 복구한다.
  2875. fCancelClodStatusChng();
  2876. ;
  2877. }
  2878. messageBox("조회된 처방 계산 내역이", "I004"); // /조회된 처방 계산 내역이 없습니다
  2879. }
  2880. return true;
  2881. }
  2882. // -----------------------------
  2883. // EDI관련 컬럼 표시
  2884. // -----------------------------
  2885. function fEdiCheck() {
  2886. // 20100128 edi 관련 컬럼 조회기준으로 변경 (재원비교로 변경)
  2887. if (model.getValue("/root/hidden/edicheck") == "Y") {
  2888. grd_clodhist.colHidden(grd_clodhist.colRef("edicd")) = false; // EDI코드
  2889. grd_clodhist.colHidden(grd_clodhist.colRef("unitcost")) = false; // 단가
  2890. grd_clodhist.colHidden(grd_clodhist.colRef("drugqty")) = false; // 1회량
  2891. grd_clodhist.colHidden(grd_clodhist.colRef("dayno")) = false; // 일수
  2892. grd_clodhist.colHidden(grd_clodhist.colRef("amt")) = false; // 금액
  2893. grd_clodhist.colHidden(grd_clodhist.colRef("druglimitamt")) = false; // 약제상한가
  2894. grd_clodhist.colHidden(grd_clodhist.colRef("limitdiffamt")) = false; // 약제상한차액
  2895. } else {
  2896. grd_clodhist.colHidden(grd_clodhist.colRef("edicd")) = true; // EDI코드
  2897. grd_clodhist.colHidden(grd_clodhist.colRef("unitcost")) = true; // 단가
  2898. grd_clodhist.colHidden(grd_clodhist.colRef("drugqty")) = true; // 1회량
  2899. grd_clodhist.colHidden(grd_clodhist.colRef("dayno")) = true; // 일수
  2900. grd_clodhist.colHidden(grd_clodhist.colRef("amt")) = true; // 금액
  2901. grd_clodhist.colHidden(grd_clodhist.colRef("druglimitamt")) = true; // 약제상한가
  2902. grd_clodhist.colHidden(grd_clodhist.colRef("limitdiffamt")) = true; // 약제상한차액
  2903. }
  2904. }
  2905. // -----------------------------
  2906. // 처방 "행 추가"
  2907. // -----------------------------
  2908. function fOrderGridInsertRow() {
  2909. var clodrow = grd_clodhist.row;
  2910. var preediitem1 = model.getValue("/root/main/list2/clod[" + clodrow + "]/ediitem1");
  2911. var prematractflag = model.getValue("/root/main/list2/clod[" + clodrow + "]/matractflag");
  2912. var prepayflag = model.getValue("/root/main/list2/clod[" + clodrow + "]/payflag");
  2913. grd_clodhist.insertRow(clodrow++, "below", true, true); // 처방 Grid에 행 삽입
  2914. model.setValue("/root/main/list2/clod[" + clodrow + "]/ediitem1", preediitem1);
  2915. model.setValue("/root/main/list2/clod[" + clodrow + "]/matractflag", prematractflag);
  2916. model.setValue("/root/main/list2/clod[" + clodrow + "]/payflag", prepayflag);
  2917. model.setValue("/root/main/list2/clod[" + clodrow + "]/snglcalcscorcd", model.getValue("/root/hidden/list2/clodsrch/inpCalcScorCd"));
  2918. model.setValue("/root/main/list2/clod[" + clodrow + "]/basecd", model.getValue("/root/hidden/list2/clodsrch/inpEDICd"));
  2919. var ordfromdd = model.getValue("/root/main/item1/clbs/ordfromdd");
  2920. model.setValue("/root/main/list2/clod[" + clodrow + "]/ordfromdd", ordfromdd);
  2921. model.setValue("/root/main/list2/clod[" + clodrow + "]/ordtodd", ordfromdd);
  2922. grd_clodhist.row = clodrow;
  2923. var newcd = model.getValue("/root/hidden/list2/clodstat/cmbAdjtresncd");
  2924. if (newcd) {
  2925. model.setValue("/root/main/list2/clod[" + clodrow + "]/adjtresncd", newcd);
  2926. // 처방 Grid 배경색을 설정한다. - 추가/수정된 row
  2927. fOrderBkColorNew(clodrow);
  2928. } else {
  2929. newcd = fSetAdjtResnCd();
  2930. if (newcd == "" || newcd == "-") {
  2931. grd_clodhist.deleteRow(clodrow, true); // 처방 Grid에서 해당 라인을 삭제한다.
  2932. }
  2933. }
  2934. }
  2935. // --------------------------
  2936. // 처방 "처방추가"
  2937. // --------------------------
  2938. function fOrderGridAddRow() {
  2939. var clodrow = grd_clodhist.row;
  2940. var preediitem1 = model.getValue("/root/hidden/list2/clodsrch/selectedRdoItem");
  2941. var prematractflag = model.getValue("/root/hidden/list2/clodsrch/selectedRdoMatrAct");
  2942. var prepayflag = model.getValue("/root/hidden/list2/clodsrch/selectedRdoPay");
  2943. if (preediitem1 == "-") {
  2944. }
  2945. if (prematractflag == "-") {
  2946. }
  2947. grd_clodhist.addRow(true, true); // 처방 Grid에 행 추가
  2948. clodrow = grd_clodhist.row;
  2949. model.setValue("/root/main/list2/clod[" + clodrow + "]/ediitem1", preediitem1);
  2950. model.setValue("/root/main/list2/clod[" + clodrow + "]/matractflag", prematractflag);
  2951. model.setValue("/root/main/list2/clod[" + clodrow + "]/payflag", prepayflag);
  2952. model.setValue("/root/main/list2/clod[" + clodrow + "]/snglcalcscorcd", model.getValue("/root/hidden/list2/clodsrch/inpCalcScorCd"));
  2953. model.setValue("/root/main/list2/clod[" + clodrow + "]/basecd", model.getValue("/root/hidden/list2/clodsrch/inpEDICd"));
  2954. var indd = model.getValue("/root/main/item1/clbs/indd");
  2955. model.setValue("/root/main/list2/clod[" + clodrow + "]/ordfromdd", indd);
  2956. grd_clodhist.row = clodrow;
  2957. var newcd = model.getValue("/root/hidden/list2/clodstat/cmbAdjtresncd");
  2958. if (newcd) {
  2959. model.setValue("/root/main/list2/clod[" + clodrow + "]/adjtresncd", newcd);
  2960. // 처방 Grid 배경색을 설정한다. - 추가/수정된 row
  2961. fOrderBkColorNew(clodrow);
  2962. } else {
  2963. newcd = fSetAdjtResnCd();
  2964. if (newcd == "" || newcd == "-") {
  2965. grd_clodhist.deleteRow(clodrow, true); // 처방 Grid에서 해당 라인을 삭제한다.
  2966. }
  2967. }
  2968. }
  2969. // ---------------------------
  2970. // 처방 "행 복사"
  2971. // ---------------------------
  2972. function fOrderGridCopyRow() {
  2973. var clodrow = grd_clodhist.row;
  2974. grd_clodhist.insertRow(clodrow++, "below", true, true); // 처방 Grid에 행 삽입
  2975. model.copyNode("/root/main/list2/clod[" + clodrow + "]", "/root/main/list2/clod[" + (clodrow - 1) + "]");
  2976. model.resetInstanceNode("/root/main/list2/clod[" + clodrow + "]/rowstat");
  2977. model.resetInstanceNode("/root/main/list2/clod[" + clodrow + "]/cnfmcd");
  2978. model.resetInstanceNode("/root/main/list2/clod[" + clodrow + "]/lnunitspclspecyn");
  2979. // seqno 셋팅
  2980. model.setValue("/root/main/list2/clod[" + clodrow + "]/seqno", model.getValue("/root/main/item1/clbs/maxseqno"));
  2981. model.setValue("/root/main/item1/clbs/maxseqno", parseInt(model.getValue("/root/main/item1/clbs/maxseqno")) + 1);
  2982. model.setValue("/root/main/list2/clod[" + clodrow + "]/edilnno", "0");
  2983. grd_clodhist.refresh();
  2984. var newcd = model.getValue("/root/hidden/list2/clodstat/cmbAdjtresncd");
  2985. if (newcd) {
  2986. model.setValue("/root/main/list2/clod[" + clodrow + "]/adjtresncd", newcd);
  2987. } else {
  2988. newcd = model.getValue("/root/main/list2/clod[" + clodrow + "]/adjtresncd");
  2989. if (newcd) {
  2990. model.setValue("/root/main/list2/clod[" + clodrow + "]/adjtresncd", newcd);
  2991. } else {
  2992. newcd = fSetAdjtResnCd();
  2993. if (newcd == "" || newcd == "-") {
  2994. grd_clodhist.deleteRow(clodrow, true); // 처방 Grid에서 해당 라인을 삭제한다.
  2995. return;
  2996. }
  2997. }
  2998. }
  2999. // 처방 Grid 타이틀을 이용해서 sorting 한 경우 줄번호가 현재 정렬된 순서대로 부여되므로 다시 sort하여 처리한다.
  3000. fSetOrderLnNo();
  3001. // 처방 항목 구분 및 선별심사 처방 색깔 구분
  3002. // fSetOrderData();
  3003. // 처방 조회부 - 재행/급여/항목구분 Radio 선택에 따라 처방 내역을 보여준다.
  3004. // / fGetSelectedOrderData();
  3005. }
  3006. // -----------------------------
  3007. // 처방 "행 삭제"
  3008. // -----------------------------
  3009. function fOrderGridDeleteRow() {
  3010. if (grd_clodhist.selectedRows == 1) { // 한줄을 삭제하는 경우
  3011. // 처방 Grid의 일변번호와 수가코드
  3012. var clodrow = grd_clodhist.row;
  3013. var clodSeqno = model.getValue("/root/main/list2/clod[" + clodrow + "]/seqno");
  3014. if (clodSeqno) {
  3015. var newcd = model.getValue("/root/hidden/list2/clodstat/cmbAdjtresncd");
  3016. if (newcd) {
  3017. model.setValue("/root/main/list2/clod[" + clodrow + "]/adjtresncd", newcd);
  3018. } else {
  3019. newcd = model.getValue("/root/main/list2/clod[" + clodrow + "]/adjtresncd");
  3020. if (newcd == "") {
  3021. newcd = fSetAdjtResnCd();
  3022. if (newcd == "" || newcd == "-") {
  3023. return;
  3024. }
  3025. }
  3026. }
  3027. }
  3028. // 해당 특정내역을 삭제한다.
  3029. if (model.getValue("/root/main/list2/clod[" + clodrow + "]/cnfmcd") || model.getValue("/root/main/list2/clod[" + clodrow + "]/lnunitspclspecyn")) {
  3030. // 확인코드 'JT001'이 입력되거나 줄단위 특정내역이 입력된 경우
  3031. for ( var j = 1; j < grd_clsphist.rows; j++) {
  3032. var spclClodseqno = model.getValue("/root/main/list3/clsp[" + j + "]/clodseqno");
  3033. if (spclClodseqno == clodSeqno) { // 기존에 이미 삭제된 특정내역도 함께 삭제해서, "삭제취소" 때에도 같이 복구되고, 다시 사용자가 필요없는 내역을 삭제하도록 한다.
  3034. var clodstatus = grd_clodhist.rowstatus(clodrow);
  3035. if (clodstatus != 1 && clodstatus != 3) {
  3036. grd_clsphist.rowstatus(j) = 4; // 4 : delete 상태로 stat를 변경한다.
  3037. } else {
  3038. grd_clsphist.deleteRow(j, false);
  3039. }
  3040. }
  3041. }
  3042. }
  3043. // 기존입력된 처방삭제시 휴지통에 담는다.
  3044. var clodstatus = grd_clodhist.rowstatus(clodrow);
  3045. if (clodstatus != 1 && clodstatus != 3) {
  3046. // 처방 Grid에서 행 삭제 / 처방휴지통 Grid에 행 삽입
  3047. var delclodrow = grd_delclod.rows - 1;
  3048. grd_delclod.insertRow(delclodrow++, true); // 처방휴지통 Grid에 행 삽입
  3049. model.copyNode("/root/main/list6/delclod[" + delclodrow + "]", "/root/main/list2/clod[" + clodrow + "]"); // desc, sorce
  3050. if (clodstatus == 0 || clodstatus == 2) { // 0 : new, 2 : update
  3051. grd_delclod.rowstatus(grd_delclod.row) = 4; // 4 : delete 상태로 stat를 변경한다.
  3052. } else {
  3053. grd_delclod.rowstatus(grd_delclod.row) = 0;
  3054. }
  3055. }
  3056. grd_delclod.refresh();
  3057. grd_clodhist.rowstatus(clodrow) = 4; // 4 : delete 상태로 stat를 변경한다.
  3058. grd_clodhist.rowHidden(clodrow) = true; // delete된것은 rowHidden 시킨다.
  3059. grd_clodhist.row = clodrow;
  3060. } // if (grd_clodhist.selectedRows == 1) // 한줄 삭제
  3061. else if (grd_clodhist.selectedRows > 1) { // 여러줄을 삭제하는 경우
  3062. // 심사사유, 조정사유, 수정사유 입력
  3063. var clodrow = grd_clodhist.row;
  3064. var newcd = model.getValue("/root/hidden/list2/clodstat/cmbAdjtresncd");
  3065. if (newcd == "") {
  3066. var oldcd = model.getValue("/root/main/list2/clod[" + clodrow + "]/adjtresncd");
  3067. model.resetInstanceNode("/root/hidden/sppiz01000");
  3068. model.setValue("/root/hidden/sppiz01000/cond/cdcls", "aftin");
  3069. model.setValue("/root/hidden/sppiz01000/cond/cdid", oldcd);
  3070. modal("SPPIZ01000", "1", "550", "450", "SPPIZ01000", "/root/hidden/sppiz01000/cond", "/root/hidden/sppiz01000/cond", "", ""); // SPPIZ01000_심사수정사유관리.xrw
  3071. newcd = model.getValue("/root/hidden/sppiz01000/rslt/cdid");
  3072. newdesc = model.getValue("/root/hidden/sppiz01000/rslt/adjtresndesc");
  3073. if (newcd == "" || newcd == "-") {
  3074. return;
  3075. }
  3076. }
  3077. for ( var i = 0; i < grd_clodhist.selectedRows; i++) {
  3078. var clodrow = grd_clodhist.selectedrow(i);
  3079. if (clodrow > 0) { // 타이틀 부분에 setValue 하게 되어 에러 발생함
  3080. var seqno = model.getValue("/root/main/list2/clod[" + clodrow + "]/seqno");
  3081. if (newcd != model.getValue("/root/main/list2/clod[" + clodrow + "]/adjtresncd")) {
  3082. if (grd_clodhist.rowStatus(clodrow) == 0) { // 0 : new, 2 : update
  3083. grd_clodhist.rowStatus(clodrow) = 2;
  3084. }
  3085. }
  3086. model.setValue("/root/main/list2/clod[" + clodrow + "]/adjtresncd", newcd);
  3087. model.setValue("/root/main/list2/clod[" + clodrow + "]/adjtresndesc", newdesc);
  3088. // 해당 특정내역을 삭제한다.
  3089. if (model.getValue("/root/main/list2/clod[" + clodrow + "]/cnfmcd") || model.getValue("/root/main/list2/clod[" + clodrow + "]/lnunitspclspecyn")) {
  3090. // 확인코드 'JT001'이 입력되거나 줄단위 특정내역이 입력된 경우
  3091. for ( var j = 1; j < grd_clsphist.rows; j++) {
  3092. var spcClodseqno = model.getValue("/root/main/list3/clsp[" + j + "]/clodseqno");
  3093. if (spcClodseqno == "") { // 입력된 줄번호가 없는 경우 제외
  3094. } else if (spcClodseqno == "0") { // 명일련 단위는 제외
  3095. } else if (spcClodseqno == seqno) { // 기존에 이미 삭제된 특정내역도 함께 삭제해서, "삭제취소" 때에도 같이 복구되고, 다시 사용자가 필요없는 내역을 삭제하도록 한다.
  3096. grd_clsphist.rowstatus(j) = 4; // 4 : delete 상태로 stat를 변경한다.
  3097. }
  3098. }
  3099. }
  3100. // 기존입력된 처방삭제시 휴지통에 담는다.
  3101. var clodstatus = grd_clodhist.rowstatus(clodrow);
  3102. if (clodstatus != 1 && clodstatus != 3) {
  3103. var delclodrow = grd_delclod.rows - 1;
  3104. grd_delclod.insertRow(delclodrow++, true); // 처방휴지통 Grid에 행 삽입
  3105. model.copyNode("/root/main/list6/delclod[" + delclodrow + "]", "/root/main/list2/clod[" + clodrow + "]"); // desc, sorce
  3106. var clodstatus = grd_clodhist.rowstatus(clodrow);
  3107. if (clodstatus == 0 || clodstatus == 2) { // 0 : new, 2 : update
  3108. grd_delclod.rowstatus(grd_delclod.row) = 4; // 4 : delete 상태로 stat를 변경한다.
  3109. } else {
  3110. grd_delclod.rowstatus(grd_delclod.row) = 0;
  3111. }
  3112. }
  3113. if (model.getValue("/root/main/list2/clod[" + clodrow + "]/updtdd")) {
  3114. updtdd = model.getValue("/root/main/list2/clod[" + clodrow + "]/updtdd");
  3115. }
  3116. grd_clodhist.rowstatus(clodrow) = 4; // 4 : delete 상태로 stat를 변경한다.
  3117. grd_clodhist.rowHidden(clodrow) = true; // delete된것은 rowHidden 시킨다.
  3118. }
  3119. }
  3120. grd_delclod.refresh();
  3121. } // if (grd_clodhist.selectedRows > 1) // 여러줄 삭제
  3122. }
  3123. // -------------------------------
  3124. // 처방 "삭제 취소"
  3125. // -------------------------------
  3126. function fOrderGridDeleteCancel() {
  3127. var delclodrow = grd_delclod.row;
  3128. var delseqno = model.getValue("/root/main/list6/delclod[" + delclodrow + "]/seqno");
  3129. var delclodCalcscorcd = model.getValue("/root/main/list6/delclod[" + delclodrow + "]/snglcalcscorcd");
  3130. var isSpclChange = false; // 특정내역 줄번호도 변경된 경우, 처방 줄번호에 맞춰 특정내역 줄번호가 모두 변경된
  3131. // 다음 다시 정렬한다.
  3132. if (model.getValue("/root/main/list6/delclod[" + delclodrow + "]/cnfmcd") || model.getValue("/root/main/list6/delclod[" + delclodrow + "]/lnunitspclspecyn")) {
  3133. var clsprow = grd_clsphist.findRow(delseqno, 1, grd_clsphist.colRef("clodseqno"), false, true);
  3134. grd_clsphist.rowstatus(clsprow) = 0;
  3135. isSpclChange = true;
  3136. }
  3137. var clodrow = grd_clodhist.findRow(delseqno, 1, grd_clodhist.colRef("seqno"), false, true);
  3138. grd_clodhist.rowstatus(clodrow) = 0;
  3139. grd_clodhist.rowHidden(clodrow) = false;
  3140. grd_delclod.deleteRow(delclodrow, true); // 처방휴지통 Grid에서 해당 라인을 삭제한다.
  3141. fSetOrderLnNo();
  3142. if (isSpclChange) { // 줄단위 특정내역이 입력된 경우 특정내역 줄번호/특정코드에 따라 sorting 작업
  3143. fSortSpclNo();
  3144. }
  3145. grd_clsphist.refresh();
  3146. grd_clodhist.refresh();
  3147. grd_delclod.refresh();
  3148. }
  3149. // 확인코드, 분업예외코드 검체검사위탁, 준용코드를 특정내역에 자동으로 추가한다.
  3150. function fSetNewCnfmCd() {
  3151. var isClspChange = false;
  3152. for ( var i = 1; i < grd_clodhist.rows; i++) {
  3153. var rowstatus = grd_clodhist.rowstatus(i);
  3154. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  3155. // 1.확인코드 : JT001 : 확인코드 : X(5) : 여러개 발생시 '/' 로 구분
  3156. // 2.분업예외코드 : JS002 : 분업예외코드 : 9(2)
  3157. // 3.검체검사위탁 : JS005 : 수탁기관기호/검사의뢰일(ccccyymmdd) : 9(8)/cyymmdd
  3158. // 위탁계약처구분코드(-:해당없음,1:검체검사위탁,2:시설공동이용,3:개방병원진료,4:위탁진료)
  3159. // 4.준용코드 : JS009 : 준용명 : X(700)
  3160. var seqno = model.getValue("/root/main/list2/clod[" + i + "]/seqno");
  3161. var cnfmcd = model.getValue("/root/main/list2/clod[" + i + "]/cnfmcd");
  3162. var basecd = model.getValue("/root/main/list2/clod[" + i + "]/basecd");
  3163. var hosinresncd = model.getValue("/root/main/list2/clod[" + i + "]/hosinresncd");
  3164. var trustinstno = model.getValue("/root/main/item5/mech/trustinstno");
  3165. var clamspclcd = model.getValue("/root/main/item5/mech/clamspclcd");
  3166. var okmsg = ""
  3167. var spclcd = "";
  3168. var cdnm = "";
  3169. var spclspec = "";
  3170. var spclformat = "";
  3171. var detldesc = "";
  3172. if (cnfmcd) {
  3173. okmsg = "확인코드";
  3174. spclcd = "JT001";
  3175. cdnm = "확인코드";
  3176. spclspec = cnfmcd;
  3177. spclformat = "X(5)";
  3178. detldesc = "진료행위에 대한 추가기술 사항을 구분하는 코드로서 확인코드가 여러개 발생할 경우 '/'로 구분하여 기재";
  3179. }
  3180. /*
  3181. * else if (hosinresncd != "" && hosinresncd != '00' && hosinresncd !=
  3182. * '-'){ okmsg = "분업예외코드"; spclcd = "JS002"; cdnm = "분업예외코드";
  3183. * spclspec = hosinresncd; spclformat = "9(2)"; detldesc = "의약분업
  3184. * 예외사항 발생으로 의료기관에서 원내 조제/투약이 이루어진 경우 해당 예외구분코드를 기재하고, 원외처방발행기에서
  3185. * 퇴장방지의약품 원외처방시 해당의약품의 사용장려비를 청구할 경우 구분코드 99를 기재"; }
  3186. */
  3187. else if (trustinstno != "" && clamspclcd == "1") {
  3188. okmsg = "검체검사위탁";
  3189. spclcd = "JS005";
  3190. cdnm = "검체검사위탁";
  3191. spclspec = trustinstno + "/" + model.getValue("/root/main/list2/clod[" + i + "]/ordfromdd");
  3192. spclformat = "9(8)/ccyymmdd";
  3193. detldesc = "수탁기관에 검체검사를 의뢰한 경우 수탁기관기호와 검사의뢰일을 기재";
  3194. } else if (basecd == "JJJJJJ") {
  3195. okmsg = "준용명";
  3196. spclcd = "JS009";
  3197. cdnm = "준용명";
  3198. spclspec = model.getValue("/root/main/list2/clod[" + i + "]/hngnm");
  3199. spclformat = "X(700)";
  3200. detldesc = "상대가치점수표에 분류되지 않은 항목을 상대가치점수표상의 비슷한 진료행위로 준용하여 'JJJJJJ'코드로 청구시 진료행위명과 산출식을 기재하고, 한의사의 임의처방 청구시에는 임의 처방명을 기재";
  3201. }
  3202. if (okmsg) {
  3203. var isFind = false;
  3204. var edilnno = model.getValue("/root/main/list2/clod[" + i + "]/edilnno");
  3205. if (edilnno == "" || edilnno == "0") {
  3206. if (isFind == false) { // 기존에 없었던 경우
  3207. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장
  3208. // 마지막 줄에 추가한다.
  3209. grd_clsphist.insertRow(clsprow++, true);
  3210. model.setValue("/root/main/list3/clsp[" + clsprow + "]/unitflag", "J");
  3211. model.setValue("/root/main/list3/clsp[" + clsprow + "]/edilnno", edilnno);
  3212. // CLSP 테이블의 calcscorcd 컬럼에 CLOD 테이블의 basecd 컬럼 값 넣어주기로
  3213. // 변경함
  3214. model.setValue("/root/main/list3/clsp[" + clsprow + "]/snglcalcscorcd", model.getValue("/root/main/list2/clod[" + i + "]/snglcalcscorcd"));
  3215. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclcd", spclcd);
  3216. model.setValue("/root/main/list3/clsp[" + clsprow + "]/cdnm", cdnm);
  3217. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclspec", spclspec);
  3218. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclformat", spclformat);
  3219. model.setValue("/root/main/list3/clsp[" + clsprow + "]/detldesc", detldesc);
  3220. model.setValue("/root/main/list3/clsp[" + clsprow + "]/oldedilnno", edilnno);
  3221. model.setValue("/root/main/list3/clsp[" + clsprow + "]/clodseqno", seqno);
  3222. model.setValue("/root/main/list2/clod[" + i + "]/lnunitspclspecyn", "*");
  3223. grd_clsphist.row = clsprow;
  3224. isClspChange = true;
  3225. }
  3226. model.setValue("/root/hidden/list3/msgspclformat", cdnm + " - " + spclcd + " / " + "입력코드내역 : " + spclspec + " / 기재형식 : " + spclformat);
  3227. model.refreshpart("/root/hidden/list3/msgspclformat");
  3228. }
  3229. }
  3230. }
  3231. }
  3232. // 추가된 처방이 싱글코드인 경우 수가마스터 / 그룹코드인 경우 그룹마스터에 입력된 확인코드를 자동발생시킨 경우
  3233. if (isClspChange == true) {
  3234. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  3235. fSortSpclNo();
  3236. grd_clsphist.refresh();
  3237. grd_clodhist.refresh();
  3238. }
  3239. }
  3240. // 특정내역 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가"
  3241. function fSpclGridInsertRow() {
  3242. // 특정내역 Grid 상에서 직접 행을 추가하는 경우 : 명세서단위 특정내역만을 추가할 수 있다.
  3243. // 줄단위 특정내역의 경우, 처방 Grid에서 'T' 컬럼을 더블클릭하여 특정내역 상세관리 Popup을 통해 입력한다.
  3244. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  3245. grd_clsphist.insertRow(clsprow++, true);
  3246. model.setValue("/root/main/list3/clsp[" + clsprow + "]/unitflag", "M");
  3247. model.setValue("/root/main/list3/clsp[" + clsprow + "]/edilnno", "0"); // 구분, 줄번호, 수정상태, 특정내역코드 순으로 sort 처리 하므로
  3248. grd_clsphist.row = clsprow;
  3249. }
  3250. // 특정내역 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 삭제"
  3251. function fSpclGridDeleteRow() {
  3252. // 여러 row를 동시에 선택하고 삭제하는 기능을 부여한다.
  3253. for ( var i = 0; i < grd_clsphist.selectedRows; i++) {
  3254. var row = grd_clsphist.selectedrow(i);
  3255. // var row = grd_clsphist.row;
  3256. // 줄번호가 부여된 줄단위 특정내역이 삭제된 경우, 처방Grid의 'T' 컬럼의 "*" 를 삭제한다.
  3257. var clodseqno = model.getValue("/root/main/list3/clsp[" + row + "]/clodseqno");
  3258. if (clodseqno != "" && clodseqno != "0") { // 줄단위 특정내역의 경우
  3259. var spclcd = model.getValue("/root/main/list3/clsp[" + row + "]/spclcd");
  3260. if (spclcd == "JT001") { // 확인코드를 삭제한 경우
  3261. for ( var j = 1; j < grd_clodhist.rows; j++) {
  3262. var seqno = model.getValue("/root/main/list2/clod[" + j + "]/seqno");
  3263. if (clodseqno == seqno) {
  3264. model.resetInstanceNode("/root/main/list2/clod[" + j + "]/cnfmcd");
  3265. j = grd_clodhist.rows;
  3266. }
  3267. }
  3268. } else {
  3269. var isSameLn = false;
  3270. for ( var j = 1; j < grd_clsphist.rows; j++) {
  3271. var clspclodseqno = model.getValue("/root/main/list3/clsp[" + j + "]/clodseqno");
  3272. var spclcd = model.getValue("/root/main/list3/clsp[" + j + "]/spclcd");
  3273. if (clspclodseqno == "") { // 입력된 줄번호가 없는 경우 제외
  3274. } else if (clspclodseqno == "0") { // 명일련 단위는 제외
  3275. } else if (clspclodseqno == clodseqno && j != row
  3276. && grd_clsphist.rowstatus(j) != 4
  3277. && spclcd != "JT001") {
  3278. isSameLn = true; // 같은 줄번호에 여러개의 특정내역이 있는 경우임
  3279. j = grd_clsphist.rows;
  3280. }
  3281. }
  3282. if (isSameLn == false) { // 동일한 줄번호의 특정내역이 없는 경우
  3283. for ( var j = 1; j < grd_clodhist.rows; j++) {
  3284. var seqno = model.getValue("/root/main/list2/clod[" + j + "]/seqno");
  3285. if (seqno == clodseqno) {
  3286. model.resetInstanceNode("/root/main/list2/clod[" + j + "]/lnunitspclspecyn");
  3287. grd_clodhist.cellStyle("background-color", j, grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff = White
  3288. j = grd_clodhist.rows;
  3289. }
  3290. }
  3291. }
  3292. }
  3293. }
  3294. var unitflag = model.getValue("/root/main/list3/clsp[" + row + "]/unitflag");
  3295. var rowstatus = grd_clsphist.rowstatus(row);
  3296. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  3297. model.resetInstanceNode("/root/main/list3/clsp[" + row + "]/spclcd");
  3298. model.resetInstanceNode("/root/main/list3/clsp[" + row + "]/spclspec");
  3299. // grd_clsphist.deleteRow(row, false); // 해당 라인을 Grid에서 삭제한다.
  3300. } else { // 0 : new, 2 : update
  3301. grd_clsphist.rowstatus(row) = 4; // 4 : delete 상태로 stat를 변경한다.
  3302. model.setValue("/root/main/list3/clsp[" + row + "]/insntstat", "D");
  3303. }
  3304. if (unitflag == "M") { // 명세서 단위 특정내역의 경우
  3305. // 특정코드 MT015, MT016, MT004 정보가 입력된 환자인지를 확인한다.
  3306. fCheckSpclSpecData();
  3307. }
  3308. }
  3309. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  3310. fSortSpclNo();
  3311. model.resetInstanceNode("/root/hidden/list3/msgspclformat");
  3312. model.refreshpart("/root/hidden/list3/msgspclformat");
  3313. grd_clodhist.refresh();
  3314. grd_clsphist.refresh();
  3315. }
  3316. //줄단위 특정내역을 수정/입력한다.
  3317. function fSetLnUnitSpclSpec() { // 'T' 필드 더블클릭시 호출한다.
  3318. model.removeNodeset("/root/hidden/sppiz00500/rslt"); // SPPIZ00500_특정내역상세관리 에서 선택된 결과가 copyNode되는 경로임
  3319. model.removeNodeset("/root/hidden/sppiz00500/cond");
  3320. var row = grd_clodhist.row;
  3321. // 처방 Grid에서 줄번호가 부여된 경우
  3322. var seqno = model.getValue("/root/main/list2/clod[" + row + "]/seqno");
  3323. var edilnno = model.getValue("/root/main/list2/clod[" + row + "]/edilnno");
  3324. // CLSP 테이블의 calcscorcd 컬럼에 CLOD 테이블의 basecd 컬럼 값 넣어주기로 변경함
  3325. var snglcalcscorcd = model.getValue("/root/main/list2/clod[" + row + "]/snglcalcscorcd");
  3326. if (seqno != "0") {
  3327. var lnunitspclspecyn = model.getValue("/root/main/list2/clod[" + row + "]/lnunitspclspecyn");
  3328. if (lnunitspclspecyn == "") {
  3329. model.makeValue("/root/hidden/sppiz00500/cond/flag", "I");
  3330. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", snglcalcscorcd);
  3331. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", "0");
  3332. model.makeValue("/root/hidden/sppiz00500/cond/clodseqno", seqno);
  3333. model.makeNode("/root/hidden/sppiz00500/cond/spclcd");
  3334. model.makeNode("/root/hidden/sppiz00500/cond/detldesc");
  3335. model.makeNode("/root/hidden/sppiz00500/cond/spclspec");
  3336. model.makeNode("/root/hidden/sppiz00500/cond/spclformat");
  3337. model.makeNode("/root/hidden/sppiz00500/cond/rownum");
  3338. model.makeNode("/root/hidden/sppiz00500/cond/cdnm");
  3339. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", "J");
  3340. } else { // 기존에 입력된 줄단위 특정내역이 있는 경우
  3341. var rowcnt = 1;
  3342. var setrow = 0;
  3343. for (var i = 1; i < grd_clsphist.rows; i++) {
  3344. var spcClodseqno = model.getValue("/root/main/list3/clsp[" + i + "]/clodseqno");
  3345. if (spcClodseqno == seqno) {
  3346. var spclcd = model.getValue("/root/main/list3/clsp[" + i + "]/spclcd");
  3347. if (spclcd != "" && spclcd != "JT001" && grd_clsphist.rowstatus(i) != 4) { // 확인코드가 아닌 경우
  3348. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/flag", "");
  3349. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/rownum", i);
  3350. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/snglcalcscorcd", model.getValue("/root/main/list3/clsp[" + i + "]/snglcalcscorcd"));
  3351. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/clodseqno", model.getValue("/root/main/list3/clsp[" + i + "]/clodseqno"));
  3352. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/edilnno", model.getValue("/root/main/list3/clsp[" + i + "]/edilnno"));
  3353. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/spclcd", spclcd);
  3354. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/spclspec", model.getValue("/root/main/list3/clsp[" + i + "]/spclspec"));
  3355. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/spclformat", model.getValue("/root/main/list3/clsp[" + i + "]/spclformat"));
  3356. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/cdnm", model.getValue("/root/main/list3/clsp[" + i + "]/cdnm"));
  3357. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/detldesc", model.getValue("/root/main/list3/clsp[" + i + "]/detldesc"));
  3358. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/oldspclcd", spclcd);
  3359. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/oldspclspec", model.getValue("/root/main/list3/clsp[" + i + "]/spclspec"));
  3360. // 특정내역 상세 화면에 보여줄 특정내역 선택
  3361. setrow = i; // 줄단위의 경우 가장 마지막 row로 설정한다.
  3362. rowcnt = rowcnt + 1;
  3363. }
  3364. }
  3365. }
  3366. model.makeValue("/root/hidden/sppiz00500/cond/flag", "");
  3367. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", snglcalcscorcd);
  3368. model.makeValue("/root/hidden/sppiz00500/cond/clodseqno", seqno);
  3369. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", edilnno);
  3370. model.makeValue("/root/hidden/sppiz00500/cond/spclcd", model.getValue("/root/main/list3/clsp[" + setrow + "]/spclcd"));
  3371. model.makeValue("/root/hidden/sppiz00500/cond/detldesc", model.getValue("/root/main/list3/clsp[" + setrow + "]/detldesc"));
  3372. model.makeValue("/root/hidden/sppiz00500/cond/spclspec", model.getValue("/root/main/list3/clsp[" + setrow + "]/spclspec"));
  3373. model.makeValue("/root/hidden/sppiz00500/cond/spclformat", model.getValue("/root/main/list3/clsp[" + setrow + "]/spclformat"));
  3374. model.makeValue("/root/hidden/sppiz00500/cond/rownum", setrow);
  3375. model.makeValue("/root/hidden/sppiz00500/cond/cdnm", model.getValue("/root/main/list3/clsp[" + setrow + "]/cdnm"));
  3376. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", "J");
  3377. }
  3378. modal("SPPIZ00500", "1", "10", "10", "SPPIZ00500", "/root/hidden/sppiz00500", "/root/hidden/clsp", "", ""); // SPPIZ00500_특정내역상세관리.xrw
  3379. var rsltcnt = getNodesetCount("/root/hidden/sppiz00500/rslt/list");
  3380. // 처리 건수
  3381. if (rsltcnt > 0) {
  3382. for (var i = rsltcnt; i > 0; i--) {
  3383. var flag = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/flag");
  3384. var rownum = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/rownum");
  3385. var newspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/spclcd");
  3386. var newcdnm = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/cdnm");
  3387. var newspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/spclspec");
  3388. var newspclformat = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/spclformat ");
  3389. var newdetldesc = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/detldesc");
  3390. // 특정코드 추가인 경우
  3391. if (flag == "I") {
  3392. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막
  3393. // 줄에 추가한다.
  3394. grd_clsphist.insertRow(clsprow++, true);
  3395. model.setValue("/root/main/list3/clsp[" + clsprow + "]/unitflag", "J");
  3396. model.setValue("/root/main/list3/clsp[" + clsprow + "]/clodseqno", seqno);
  3397. model.setValue("/root/main/list3/clsp[" + clsprow + "]/edilnno", edilnno);
  3398. model.setValue("/root/main/list3/clsp[" + clsprow + "]/snglcalcscorcd", snglcalcscorcd);
  3399. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclcd", newspclcd);
  3400. model.setValue("/root/main/list3/clsp[" + clsprow + "]/cdnm", newcdnm);
  3401. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclspec", newspclspec);
  3402. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclformat", newspclformat);
  3403. model.setValue("/root/main/list3/clsp[" + clsprow + "]/detldesc", newdetldesc);
  3404. model.setValue("/root/main/list3/clsp[" + clsprow + "]/oldedilnno", edilnno);
  3405. model.setValue("/root/main/list3/clsp[" + clsprow + "]/oldspclcd", "");
  3406. model.setValue("/root/hidden/list3/msgspclformat", "특정내역코드: " + newspclcd + " / 특정내역명칭: " + newcdnm + " / 기재내역: " + newspclspec + " / 기재형식: " + newspclformat);
  3407. // 특정코드 변경인 경우
  3408. } else if (flag == "U") {
  3409. model.setValue("/root/main/list3/clsp[" + rownum + "]/snglcalcscorcd", snglcalcscorcd);
  3410. model.setValue("/root/main/list3/clsp[" + rownum + "]/spclcd", newspclcd);
  3411. model.setValue("/root/main/list3/clsp[" + rownum + "]/cdnm", newcdnm);
  3412. model.setValue("/root/main/list3/clsp[" + rownum + "]/spclspec", newspclspec);
  3413. model.setValue("/root/main/list3/clsp[" + rownum + "]/spclformat", newspclformat);
  3414. model.setValue("/root/main/list3/clsp[" + rownum + "]/detldesc", newdetldesc);
  3415. grd_clsphist.refresh();
  3416. // 특정코드, 특정내역이 변경되었거나 삭제된 특정코드를 조회하여 "확인"을 선택한 경우
  3417. var oldspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/oldspclcd");
  3418. var oldspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/oldspclspec");
  3419. var rowstatus = grd_clsphist.rowstatus(rownum);
  3420. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  3421. } else {
  3422. grd_clsphist.rowstatus(rownum) = 2; // 2 : update 상태로 stat를 변경한다.
  3423. }
  3424. // }
  3425. model.setValue("/root/hidden/list3/msgspclformat", "특정내역코드: " + newspclcd + " / 특정내역명칭: " + newcdnm + " / 기재내역: " + newspclspec + " / 기재형식: " + newspclformat);
  3426. // 특정코드 삭제인 경우
  3427. } else if (flag == "D" && rownum != "") {
  3428. // 특정내역 Grid에서 삭제
  3429. var rowstatus = grd_clsphist.rowstatus(rownum);
  3430. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  3431. grd_clsphist.deleteRow(rownum, false); // 해당 라인을 Grid에서 삭제한다.
  3432. } else { // 0 : new, 2 : update
  3433. grd_clsphist.rowstatus(rownum) = 4; // 4 : delete 상태로 stat를 변경한다.
  3434. }
  3435. grd_clsphist.row = rownum;
  3436. model.setValue("/root/hidden/list3/msgspclformat", "입력된 줄단위 특정내역이 없습니다.");
  3437. } // 특정 코드 상태 따른 if end
  3438. } // for end
  3439. var cnt = 0;
  3440. var jx999cnt = 0;
  3441. var nonjx999cnt = 0; // JX999가 아닌 특정내역코드의 수
  3442. for (var i = 1; i < grd_clsphist.rows; i++) {
  3443. if (grd_clsphist.rowstatus(i) != 4) {
  3444. var spclClodseqno = model.getValue("/root/main/list3/clsp[" + i + "]/clodseqno");
  3445. if (spclClodseqno == seqno) {
  3446. cnt++;
  3447. var spclcd = model.getValue("/root/main/list3/clsp[" + i + "]/spclcd");
  3448. if (spclcd == "JX999") { // JX999인 경우
  3449. jx999cnt++;
  3450. } else if (spclcd != "JT001") { // JX999도, 확인코드도 아닌 경우
  3451. nonjx999cnt++;
  3452. }
  3453. }
  3454. }
  3455. }
  3456. if (cnt > 0) {
  3457. model.setValue("/root/main/list2/clod[" + row + "]/lnunitspclspecyn", "*");
  3458. if (jx999cnt > 0) {
  3459. if (nonjx999cnt == 0) { // JX999만 있는 경우
  3460. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#f7a08b"; // class="color_6" 다홍색
  3461. } else { // JX999 + 다른 코드도 있는 경우
  3462. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#b5a5d1"; // 연한 보라색
  3463. }
  3464. } else {
  3465. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff = White
  3466. }
  3467. } else {
  3468. model.resetInstanceNode("/root/main/list2/clod[" + row + "]/lnunitspclspecyn");
  3469. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff= White
  3470. }
  3471. } // 처리 건수 if end
  3472. // model.refresh();
  3473. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  3474. fSortSpclNo();
  3475. grd_clodhist.refresh();
  3476. grd_clsphist.refresh();
  3477. fSaveClspList();
  3478. } else {
  3479. messageBox("줄번호가 부여되지 않았으며 해당 줄단위 특정내역이", "I004"); // /줄번호가 부여되지 않았으며
  3480. // 해당 줄단위 특정내역이
  3481. // 없습니다.
  3482. }
  3483. }
  3484. // 명세서단위 특정내역을 수정/입력
  3485. function fSetDocRefLnSpclSpec() { // 특정내역 Grid의 row 더블클릭시 호출한다.
  3486. model.removeNodeset("/root/hidden/sppiz00500/rslt"); // SPPIZ00500_특정내역상세관리
  3487. // 에서 선택된 결과가
  3488. // copyNode되는 경로임
  3489. model.removeNodeset("/root/hidden/sppiz00500/cond");
  3490. var row = grd_clsphist.row;
  3491. var clodseqno = model.getValue("/root/main/list3/clsp[" + row + "]/clodseqno");
  3492. var edilnno = model.getValue("/root/main/list3/clsp[" + row + "]/edilnno");
  3493. var snglcalcscorcd = model.getValue("/root/main/list3/clsp[" + row + "]/snglcalcscorcd");
  3494. var unitflag = model.getValue("/root/main/list3/clsp[" + row + "]/unitflag");
  3495. if (unitflag == "J") {
  3496. // 삭제상태인 경우 처방Grid에서 입력,수정은 가능하지만 특정내역Grid에서는 편집할 수 없다.
  3497. var rowstatus = grd_clsphist.rowstatus(row);
  3498. if (rowstatus == 4) { // 4 : delete
  3499. messageBox("삭제된 특정내역은 수정할 수", "I004"); // /삭제된 특정내역은 수정할 수 없습니다.
  3500. return;
  3501. }
  3502. }
  3503. var rowcnt = 1;
  3504. for (var i = 1; i < grd_clsphist.rows; i++) {
  3505. var spclclodseqno = model.getValue("/root/main/list3/clsp[" + i + "]/clodseqno");
  3506. if (spclclodseqno == clodseqno) {
  3507. var spclcd = model.getValue("/root/main/list3/clsp[" + i + "]/spclcd");
  3508. if (spclcd != "" && spclcd != "JT001" && grd_clsphist.rowstatus(i) != 4) { // 확인코드가 아닌 경우
  3509. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/flag", "");
  3510. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/rownum", i);
  3511. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/snglcalcscorcd", model.getValue("/root/main/list3/clsp[" + i + "]/snglcalcscorcd"));
  3512. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/clodseqno", model.getValue("/root/main/list3/clsp[" + i + "]/clodseqno"));
  3513. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/edilnno", model.getValue("/root/main/list3/clsp[" + i + "]/edilnno"));
  3514. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/spclcd", spclcd);
  3515. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/spclspec", model.getValue("/root/main/list3/clsp[" + i + "]/spclspec"));
  3516. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/spclformat", model.getValue("/root/main/list3/clsp[" + i + "]/spclformat"));
  3517. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/cdnm", model.getValue("/root/main/list3/clsp[" + i + "]/cdnm"));
  3518. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/detldesc", model.getValue("/root/main/list3/clsp[" + i + "]/detldesc"));
  3519. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/oldspclcd", spclcd);
  3520. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/oldspclspec", model.getValue("/root/main/list3/clsp[" + i + "]/spclspec"));
  3521. rowcnt = rowcnt + 1;
  3522. }
  3523. }
  3524. }
  3525. model.makeValue("/root/hidden/sppiz00500/cond/flag", "");
  3526. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", snglcalcscorcd);
  3527. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", clodseqno);
  3528. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", edilnno);
  3529. model.makeValue("/root/hidden/sppiz00500/cond/spclcd", model.getValue("/root/main/list3/clsp[" + row + "]/spclcd"));
  3530. model.makeValue("/root/hidden/sppiz00500/cond/detldesc", model.getValue("/root/main/list3/clsp[" + row + "]/detldesc"));
  3531. model.makeValue("/root/hidden/sppiz00500/cond/spclspec", model.getValue("/root/main/list3/clsp[" + row + "]/spclspec"));
  3532. model.makeValue("/root/hidden/sppiz00500/cond/spclformat", model.getValue("/root/main/list3/clsp[" + row + "]/spclformat"));
  3533. model.makeValue("/root/hidden/sppiz00500/cond/rownum", row);
  3534. model.makeValue("/root/hidden/sppiz00500/cond/cdnm", model.getValue("/root/main/list3/clsp[" + row + "]/cdnm"));
  3535. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", unitflag);
  3536. modal("SPPIZ00500", "1", "10", "10", "SPPIZ00500", "/root/hidden/sppiz00500", "/root/hidden/clsp", "", ""); // SPPIZ00500_특정내역상세관리.xrw
  3537. var rsltcnt = getNodesetCount("/root/hidden/sppiz00500/rslt/list");
  3538. // 처리 건수
  3539. if (rsltcnt > 0) {
  3540. for (var i = rsltcnt; i > 0; i--) {
  3541. var flag = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/flag");
  3542. var rownum = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/rownum");
  3543. var newspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/spclcd");
  3544. var newcdnm = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/cdnm");
  3545. var newspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/spclspec");
  3546. var newspclformat = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/spclformat ");
  3547. var newdetldesc = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/detldesc");
  3548. if (flag == "I") {
  3549. // 특정코드 추가인 경우
  3550. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  3551. grd_clsphist.insertRow(clsprow++, true);
  3552. model.setValue("/root/main/list3/clsp[" + clsprow + "]/unitflag", unitflag);
  3553. model.setValue("/root/main/list3/clsp[" + clsprow + "]/clodseqno", clodseqno);
  3554. model.setValue("/root/main/list3/clsp[" + clsprow + "]/edilnno", edilnno);
  3555. model.setValue("/root/main/list3/clsp[" + clsprow + "]/snglcalcscorcd", snglcalcscorcd);
  3556. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclcd", newspclcd);
  3557. model.setValue("/root/main/list3/clsp[" + clsprow + "]/cdnm", newcdnm);
  3558. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclspec", newspclspec);
  3559. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclformat", newspclformat);
  3560. model.setValue("/root/main/list3/clsp[" + clsprow + "]/detldesc", newdetldesc);
  3561. model.setValue("/root/main/list3/clsp[" + clsprow + "]/oldedilnno", edilnno);
  3562. model.setValue("/root/main/list3/clsp[" + clsprow + "]/oldspclcd", "");
  3563. model.setValue("/root/hidden/list3/msgspclformat", "특정내역코드: " + newspclcd + " / 특정내역명칭: " + newcdnm + " / 기재내역: " + newspclspec + " / 기재형식: " + newspclformat);
  3564. } else if (flag == "U") {
  3565. // 특정코드 변경인 경우
  3566. model.setValue("/root/main/list3/clsp[" + rownum + "]/snglcalcscorcd", snglcalcscorcd);
  3567. model.setValue("/root/main/list3/clsp[" + rownum + "]/spclcd", newspclcd);
  3568. model.setValue("/root/main/list3/clsp[" + rownum + "]/cdnm", newcdnm);
  3569. model.setValue("/root/main/list3/clsp[" + rownum + "]/spclspec", newspclspec);
  3570. model.setValue("/root/main/list3/clsp[" + rownum + "]/spclformat", newspclformat);
  3571. model.setValue("/root/main/list3/clsp[" + rownum + "]/detldesc", newdetldesc);
  3572. grd_clsphist.refresh();
  3573. // 특정코드, 특정내역이 변경되었거나 삭제된 특정코드를 조회하여 "확인"을 선택한 경우
  3574. var oldspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/oldspclcd");
  3575. var oldspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/oldspclspec");
  3576. // if (oldspclcd != newspclcd || oldspclspec != newspclspec ||
  3577. // grd_clsphist.rowstatus(row) == 4) {
  3578. var rowstatus = grd_clsphist.rowstatus(rownum);
  3579. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  3580. } else {
  3581. grd_clsphist.rowstatus(rownum) = 2; // 2 : update 상태로 stat를 변경한다.
  3582. }
  3583. // }
  3584. model.setValue("/root/hidden/list3/msgspclformat", "특정내역코드: " + newspclcd + " / 특정내역명칭: " + newcdnm + " / 기재내역: " + newspclspec + " / 기재형식: " + newspclformat);
  3585. } else if (flag == "D" && rownum != "") {
  3586. // 특정코드 삭제인 경우
  3587. var rowstatus = grd_clsphist.rowstatus(rownum);
  3588. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  3589. grd_clsphist.deleteRow(rownum, false); // 해당 라인을 Grid에서 삭제한다.
  3590. } else { // 0 : new, 2 : update
  3591. grd_clsphist.rowstatus(rownum) = 4; // 4 : delete 상태로 stat를 변경한다.
  3592. }
  3593. grd_clsphist.row = rownum;
  3594. model.setValue("/root/hidden/list3/msgspclformat", "입력된 줄단위 특정내역이 없습니다.");
  3595. } // 특정 코드 상태 따른 if end
  3596. } // for end
  3597. if (unitflag == "M") { // 명세서 단위
  3598. // 특정코드 MT015, MT016, MT004 정보가 입력된 환자인지를 확인한다.
  3599. fCheckSpclSpecData();
  3600. } else { // 줄단위인 경우
  3601. var cnt = 0;
  3602. var jx999cnt = 0;
  3603. var nonjx999cnt = 0; // JX999가 아닌 특정내역코드의 수
  3604. for (var i = 1; i < grd_clsphist.rows; i++) {
  3605. if (grd_clsphist.rowstatus(i) != 4) {
  3606. var spclClodseqno = model.getValue("/root/main/list3/clsp[" + i + "]/clodseqno");
  3607. if (spclClodseqno == clodseqno) {
  3608. cnt++;
  3609. var spclcd = model.getValue("/root/main/list3/clsp[" + i + "]/spclcd");
  3610. if (spclcd == "JX999") { // JX999인 경우
  3611. jx999cnt++;
  3612. } else if (spclcd != "JT001") { // JX999도, 확인코드도 아닌 경우
  3613. nonjx999cnt++;
  3614. }
  3615. }
  3616. }
  3617. }
  3618. if (cnt > 0) {
  3619. for (var j = 1; j < grd_clodhist.rows; j++) {
  3620. var seqno = model.getValue("/root/main/list2/clod[" + j + "]/seqno");
  3621. if (seqno == clodseqno) {
  3622. model.setValue("/root/main/list2/clod[" + j + "]/lnunitspclspecyn", "*");
  3623. if (jx999cnt > 0) {
  3624. if (nonjx999cnt == 0) { // JX999만 있는 경우
  3625. grd_clodhist.cellStyle("background-color", j, grd_clodhist.colRef("lnunitspclspecyn")) = "#f7a08b"; // class="color_6" 다홍색
  3626. } else { // JX999 + 다른 코드도 있는 경우
  3627. grd_clodhist.cellStyle("background-color", j, grd_clodhist.colRef("lnunitspclspecyn")) = "#b5a5d1"; // 연한 보라색
  3628. }
  3629. } else {
  3630. grd_clodhist.cellStyle("background-color", j, grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff = White
  3631. }
  3632. j = grd_clodhist.rows;
  3633. }
  3634. }
  3635. } else {
  3636. for (var j = 1; j < grd_clodhist.rows; j++) {
  3637. var seqno = model.getValue("/root/main/list2/clod[" + j + "]/seqno");
  3638. if (seqno == clodseqno) {
  3639. model.resetInstanceNode("/root/main/list2/clod[" + j + "]/lnunitspclspecyn");
  3640. grd_clodhist.cellStyle("background-color", j, grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff = White
  3641. j = grd_clodhist.rows;
  3642. }
  3643. }
  3644. }
  3645. }
  3646. // model.refresh();
  3647. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  3648. fSortSpclNo();
  3649. grd_clsphist.refresh();
  3650. grd_clodhist.refresh();
  3651. fSaveClspList();
  3652. } // 처리 건수 if end
  3653. }
  3654. // 확인코드 줄단위 특정내역을 수정/입력
  3655. function fSetCnfmCdSpclSpec() {
  3656. var row = grd_clsphist.row;
  3657. model.removeNodeset("root/hidden/sppiz01100/rslt");
  3658. model.setValue("/root/hidden/sppiz01100/cond/code", model.getValue("/root/main/list3/clsp[" + row + "]/spclspec"));
  3659. modal("SPPIZ01100", "1", "10", "10", "SPPIZ01100", "/root/hidden/sppiz01100", "/root/init/sppiz01100", "", ""); // SPPIZ01100_확인코드조회
  3660. if (instance1.selectSingleNode("root/hidden/sppiz01100/rslt")) {
  3661. var cnfmcd = model.getValue("root/hidden/sppiz01100/rslt/code");
  3662. var clodseqno = model.getValue("/root/main/list3/clsp[" + row + "]/clodseqno");
  3663. for ( var j = 1; j < grd_clodhist.rows; j++) {
  3664. var seqno = model.getValue("/root/main/list2/clod[" + j + "]/seqno");
  3665. if (seqno == clodseqno) {
  3666. model.setValue("/root/main/list2/clod[" + j + "]/cnfmcd", cnfmcd);
  3667. j = grd_clodhist.rows;
  3668. }
  3669. }
  3670. var rowstatus = grd_clsphist.rowstatus(row);
  3671. if (cnfmcd) {
  3672. model.setValue("/root/main/list3/clsp[" + row + "]/spclspec", cnfmcd);
  3673. model.setValue("/root/hidden/list3/msgspclformat", "확인코드 - JT001 / 입력코드내역 : " + cnfmcd + " / 기재형식 : X(5)");
  3674. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  3675. } else {
  3676. grd_clsphist.rowstatus(row) = 2; // 2 : update 상태로 stat를
  3677. // 변경한다.
  3678. }
  3679. } else {
  3680. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  3681. model.resetInstanceNode("/root/main/list3/clsp[" + row + "]/spclcd");
  3682. model.resetInstanceNode("/root/main/list3/clsp[" + row + "]/spclspec");
  3683. // grd_clsphist.deleteRow(row, false); // 해당 라인을 Grid에서 삭제한다.
  3684. } else {
  3685. grd_clsphist.rowstatus(row) = 4;
  3686. model.setValue("/root/main/list3/clsp[" + row + "]/insntstat", "D");
  3687. }
  3688. model.setValue("/root/hidden/list3/msgspclformat",
  3689. "입력된 확인코드 내역이 없습니다.");
  3690. }
  3691. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  3692. fSortSpclNo();
  3693. grd_clodhist.refresh();
  3694. grd_clsphist.refresh();
  3695. fSaveClspList();
  3696. }
  3697. }
  3698. // 처방 Grid 마우스 오른쪽 "확인코드입력" / 처방 Grid 확인코드 필드 버튼 클릭 시
  3699. function fOrderGridInsertCnfmCd() {
  3700. var row = grd_clodhist.row;
  3701. var seqno = model.getValue("/root/main/list2/clod[" + row + "]/seqno");
  3702. if (seqno != "0") {
  3703. model.removeNodeset("root/hidden/sppiz01100/rslt");
  3704. model.setValue("/root/hidden/sppiz01100/cond/code", model.getValue("/root/main/list2/clod[" + row + "]/cnfmcd"));
  3705. modal("SPPIZ01100", "1", "10", "10", "SPPIZ01100", "/root/hidden/sppiz01100", "/root/init/sppiz01100", "", ""); // SPPIZ01100_확인코드조회
  3706. if (instance1.selectSingleNode("root/hidden/sppiz01100/rslt")) {
  3707. var cnfmcd = model.getValue("root/hidden/sppiz01100/rslt/code");
  3708. model.setValue("/root/main/list2/clod[" + row + "]/cnfmcd", cnfmcd);
  3709. if (cnfmcd) {
  3710. var isFind = false;
  3711. for (var j = 1; j < grd_clsphist.rows; j++) {
  3712. var spcClodseqno = model.getValue("/root/main/list3/clsp[" + j + "]/clodseqno");
  3713. if (spcClodseqno == seqno) {
  3714. var spclcd = model.getValue("/root/main/list3/clsp[" + j + "]/spclcd");
  3715. if (spclcd == "JT001") {
  3716. model.setValue("/root/main/list3/clsp[" + j + "]/snglcalcscorcd", model.getValue("/root/main/list2/clod[" + row + "]/snglcalcscorcd"));
  3717. model.setValue("/root/main/list3/clsp[" + j + "]/spclcd", "JT001");
  3718. model.setValue("/root/main/list3/clsp[" + j + "]/cdnm", "확인코드");
  3719. model.setValue("/root/main/list3/clsp[" + j + "]/spclspec", cnfmcd);
  3720. model.setValue("/root/main/list3/clsp[" + j + "]/spclformat", "X(5)");
  3721. model.setValue("/root/main/list3/clsp[" + j + "]/detldesc", "진료행위에 대한 추가기술 사항을 구분하는 코드로서 확인코드가 여러개 발생할 경우 '/'로 구분하여 기재");
  3722. var rowstatus = grd_clsphist.rowstatus(j);
  3723. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  3724. } else {
  3725. grd_clsphist.rowstatus(j) = 2; // 2 : update 상태로 stat를 변경한다.
  3726. }
  3727. isFind = true;
  3728. }
  3729. }
  3730. }
  3731. if (isFind == false) { // 기존에 확인코드가 없었던 경우
  3732. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  3733. grd_clsphist.insertRow(clsprow++, true);
  3734. model.setValue("/root/main/list3/clsp[" + clsprow + "]/unitflag", "J");
  3735. model.setValue("/root/main/list3/clsp[" + clsprow + "]/edilnno", "0");
  3736. model.setValue("/root/main/list3/clsp[" + clsprow + "]/clodseqno", seqno);
  3737. model.setValue("/root/main/list3/clsp[" + clsprow + "]/snglcalcscorcd", model.getValue("/root/main/list2/clod[" + row + "]/snglcalcscorcd"));
  3738. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclcd", "JT001");
  3739. model.setValue("/root/main/list3/clsp[" + clsprow + "]/cdnm", "확인코드");
  3740. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclspec", cnfmcd);
  3741. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclformat", "X(5)");
  3742. model.setValue("/root/main/list3/clsp[" + clsprow + "]/detldesc", "진료행위에 대한 추가기술 사항을 구분하는 코드로서 확인코드가 여러개 발생할 경우 '/'로 구분하여 기재");
  3743. model.setValue("/root/main/list3/clsp[" + clsprow + "]/oldedilnno", "0");
  3744. grd_clsphist.row = clsprow;
  3745. grd_clsphist.refresh();
  3746. }
  3747. model.setValue("/root/hidden/list3/msgspclformat", "확인코드 - JT001 / 입력코드내역 : " + cnfmcd + " / 기재형식 : X(5)");
  3748. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  3749. fSortSpclNo();
  3750. grd_clsphist.refresh();
  3751. grd_clodhist.refresh();
  3752. }
  3753. }
  3754. }
  3755. }
  3756. // 특정내역 반복
  3757. function fRepeatSpclSpec() {
  3758. for ( var i = 0; i < grd_clsphist.selectedRows; i++) {
  3759. var row = grd_clsphist.selectedrow(i);
  3760. if (row > 0) { // 특정내역 Grid 필터링 적용시 row = 0 으로 설정하여 타이틀 부분에 setValue 하게 되어 에러 발생함
  3761. var repeat = model.getValue("/root/main/list3/clsp[" + row + "]/rowstat"); // 특정내역 반복 설정 rowstat ='R'
  3762. var seqno = model.getValue("/root/main/list3/clsp[" + row + "]/seqno");
  3763. // JX999 저장 보낼때는 기존처럼 seqno 없이 보내야 삭제가 정상적으로 됨
  3764. if (repeat == "R") {
  3765. if (seqno) { // seqno 값이 있으면 DB에 저장된 상태임
  3766. repeat = "U";
  3767. } else {
  3768. repeat = "";
  3769. }
  3770. } else {
  3771. repeat = "R";
  3772. }
  3773. model.setValue("/root/main/list3/clsp[" + row + "]/rowstat", repeat);
  3774. var rowstatus = grd_clsphist.rowstatus(row);
  3775. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  3776. } else {
  3777. grd_clsphist.rowstatus(row) = 2; // 2 : update 상태로 stat를 변경한다.
  3778. }
  3779. }
  3780. }
  3781. // model.refresh();
  3782. model.refreshpart("/root/main/list3/clsp");
  3783. }
  3784. // 수가코드 복사
  3785. function fSnglGridCopyCol() {
  3786. if (grd_clodhist.selectedRows == 1) { // 한줄
  3787. var row = grd_clodhist.row;
  3788. var col = grd_clodhist.colRef("snglcalcscorcd");
  3789. var clip = grd_clodhist.labelMatrix(row, col);
  3790. window.clipBoardData = clip;
  3791. }
  3792. }
  3793. // EDI코드 복사
  3794. function fEdiGridCopyCol() {
  3795. if (grd_clodhist.selectedRows == 1) { // 한줄
  3796. var row = grd_clodhist.row;
  3797. var col = grd_clodhist.colRef("basecd");
  3798. var clip = grd_clodhist.labelMatrix(row, col);
  3799. window.clipBoardData = clip;
  3800. }
  3801. }
  3802. // 처방명 복사
  3803. function fHngnmGridCopyCol() {
  3804. if (grd_clodhist.selectedRows == 1) { // 한줄
  3805. var row = grd_clodhist.row;
  3806. var col = grd_clodhist.colRef("hngnm");
  3807. var clip = grd_clodhist.labelMatrix(row, col);
  3808. window.clipBoardData = clip;
  3809. }
  3810. }
  3811. //----------------------------------------
  3812. //처방 Grid 마우스 오른쪽 "처방주석입력"
  3813. //----------------------------------------
  3814. function fOrderGridInsertCmt() {
  3815. // 변경: 특정내역 상세 관리를 JX999로 설정하여 보여준다.
  3816. model.removeNodeset("/root/hidden/sppiz00500/rslt"); // SPPIZ00500_특정내역상세관리
  3817. // 에서 선택된 결과가
  3818. // copyNode되는 경로임
  3819. model.removeNodeset("/root/hidden/sppiz00500/cond");
  3820. var row = grd_clodhist.row;
  3821. // 처방 Grid에서 줄번호가 부여된 경우
  3822. var seqno = model.getValue("/root/main/list2/clod[" + row + "]/seqno");
  3823. var edilnno = model.getValue("/root/main/list2/clod[" + row + "]/edilnno");
  3824. var snglcalcscorcd = model.getValue("/root/main/list2/clod[" + row + "]/snglcalcscorcd");
  3825. if (seqno != "" && seqno != "0") {
  3826. var lnunitspclspecyn = model.getValue("/root/main/list2/clod[" + row + "]/lnunitspclspecyn");
  3827. if (lnunitspclspecyn == "") {
  3828. model.makeValue("/root/hidden/sppiz00500/cond/flag", "I");
  3829. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", snglcalcscorcd);
  3830. model.makeValue("/root/hidden/sppiz00500/cond/clodseqno", seqno);
  3831. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", edilnno);
  3832. model.makeValue("/root/hidden/sppiz00500/cond/spclcd", "JX999");
  3833. model.makeValue("/root/hidden/sppiz00500/cond/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  3834. model.makeNode("/root/hidden/sppiz00500/cond/spclspec");
  3835. model.makeValue("/root/hidden/sppiz00500/cond/spclformat", "X(700)");
  3836. model.makeNode("/root/hidden/sppiz00500/cond/rownum");
  3837. model.makeValue("/root/hidden/sppiz00500/cond/cdnm", "기타내역");
  3838. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", "J");
  3839. } else { // 기존에 입력된 줄단위 특정내역이 있는 경우
  3840. var rowcnt = 1;
  3841. var setrow = 0;
  3842. for (var i = 1; i < grd_clsphist.rows; i++) {
  3843. var spclClodseqno = model.getValue("/root/main/list3/clsp[" + i + "]/clodseqno");
  3844. if (spclClodseqno == seqno) {
  3845. var spclcd = model.getValue("/root/main/list3/clsp[" + i + "]/spclcd");
  3846. if (spclcd != "" && spclcd != "JT001" && grd_clsphist.rowstatus(i) != 4) { // 확인코드가 아닌 경우
  3847. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/flag", "");
  3848. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/rownum", i);
  3849. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/snglcalcscorcd", model.getValue("/root/main/list3/clsp[" + i + "]/snglcalcscorcd"));
  3850. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/clodseqno", model.getValue("/root/main/list3/clsp[" + i + "]/clodseqno"));
  3851. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/edilnno", model.getValue("/root/main/list3/clsp[" + i + "]/edilnno"));
  3852. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/spclcd", spclcd);
  3853. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/spclspec", model.getValue("/root/main/list3/clsp[" + i + "]/spclspec"));
  3854. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/spclformat", model.getValue("/root/main/list3/clsp[" + i + "]/spclformat"));
  3855. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/cdnm", model.getValue("/root/main/list3/clsp[" + i + "]/cdnm"));
  3856. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/detldesc", model.getValue("/root/main/list3/clsp[" + i + "]/detldesc"));
  3857. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/oldspclcd", spclcd);
  3858. model.makeValue("/root/hidden/sppiz00500/cond/list[" + rowcnt + "]/oldspclspec", model.getValue("/root/main/list3/clsp[" + i + "]/spclspec"));
  3859. // 특정내역 상세 화면에 보여줄 특정내역 선택
  3860. if (spclcd == "JX999") {
  3861. setrow = i; // 줄단위의 경우 가장 마지막 row로 설정한다.
  3862. }
  3863. rowcnt = rowcnt + 1;
  3864. }
  3865. }
  3866. }
  3867. if (setrow > 0) {
  3868. model.makeValue("/root/hidden/sppiz00500/cond/flag", "");
  3869. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", snglcalcscorcd);
  3870. model.makeValue("/root/hidden/sppiz00500/cond/clodseqno", seqno);
  3871. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", edilnno);
  3872. model.makeValue("/root/hidden/sppiz00500/cond/spclcd", model.getValue("/root/main/list3/clsp[" + setrow + "]/spclcd"));
  3873. model.makeValue("/root/hidden/sppiz00500/cond/detldesc", model.getValue("/root/main/list3/clsp[" + setrow + "]/detldesc"));
  3874. model.makeValue("/root/hidden/sppiz00500/cond/spclspec", model.getValue("/root/main/list3/clsp[" + setrow + "]/spclspec"));
  3875. model.makeValue("/root/hidden/sppiz00500/cond/spclformat", model.getValue("/root/main/list3/clsp[" + setrow + "]/spclformat"));
  3876. model.makeValue("/root/hidden/sppiz00500/cond/rownum", setrow);
  3877. model.makeValue("/root/hidden/sppiz00500/cond/cdnm", model.getValue("/root/main/list3/clsp[" + setrow + "]/cdnm"));
  3878. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", "J");
  3879. } else { // 기존에 입력된 JX999가 없는 경우
  3880. model.makeValue("/root/hidden/sppiz00500/cond/flag", "I");
  3881. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", snglcalcscorcd);
  3882. model.makeValue("/root/hidden/sppiz00500/cond/clodseqno", seqno);
  3883. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", edilnno);
  3884. model.makeValue("/root/hidden/sppiz00500/cond/spclcd", "JX999");
  3885. model.makeValue("/root/hidden/sppiz00500/cond/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  3886. model.makeNode("/root/hidden/sppiz00500/cond/spclspec");
  3887. model.makeValue("/root/hidden/sppiz00500/cond/spclformat", "X(700)");
  3888. model.makeNode("/root/hidden/sppiz00500/cond/rownum");
  3889. model.makeValue("/root/hidden/sppiz00500/cond/cdnm", "기타내역");
  3890. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", "J");
  3891. }
  3892. }
  3893. modal("SPPIZ00500", "1", "10", "10", "SPPIZ00500", "/root/hidden/sppiz00500", "/root/hidden/clsp", "", ""); // SPPIZ00500_특정내역상세관리.xrw
  3894. var rsltcnt = getNodesetCount("/root/hidden/sppiz00500/rslt/list");
  3895. // 처리 건수
  3896. if (rsltcnt > 0) {
  3897. for (var i = rsltcnt; i > 0; i--) {
  3898. var flag = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/flag");
  3899. var rownum = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/rownum");
  3900. var newspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/spclcd");
  3901. var newcdnm = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/cdnm");
  3902. var newspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/spclspec");
  3903. var newspclformat = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/spclformat ");
  3904. var newdetldesc = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/detldesc");
  3905. // 특정코드 추가인 경우
  3906. if (flag == "I") {
  3907. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막
  3908. // 줄에 추가한다.
  3909. grd_clsphist.insertRow(clsprow++, true);
  3910. model.setValue("/root/main/list3/clsp[" + clsprow + "]/unitflag", "J");
  3911. model.setValue("/root/main/list3/clsp[" + clsprow + "]/clodseqno", seqno);
  3912. model.setValue("/root/main/list3/clsp[" + clsprow + "]/edilnno", edilnno);
  3913. model.setValue("/root/main/list3/clsp[" + clsprow + "]/snglcalcscorcd", snglcalcscorcd);
  3914. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclcd", newspclcd);
  3915. model.setValue("/root/main/list3/clsp[" + clsprow + "]/cdnm", newcdnm);
  3916. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclspec", newspclspec);
  3917. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclformat", newspclformat);
  3918. model.setValue("/root/main/list3/clsp[" + clsprow + "]/detldesc", newdetldesc);
  3919. model.setValue("/root/main/list3/clsp[" + clsprow + "]/oldedilnno", edilnno);
  3920. model.setValue("/root/main/list3/clsp[" + clsprow + "]/oldspclcd", "");
  3921. model.setValue("/root/hidden/list3/msgspclformat", "특정내역코드: " + newspclcd + " / 특정내역명칭: " + newcdnm + " / 기재내역: " + newspclspec + " / 기재형식: " + newspclformat);
  3922. // 특정코드 변경인 경우
  3923. } else if (flag == "U") {
  3924. model.setValue("/root/main/list3/clsp[" + rownum + "]/snglcalcscorcd", snglcalcscorcd);
  3925. model.setValue("/root/main/list3/clsp[" + rownum + "]/spclcd", newspclcd);
  3926. model.setValue("/root/main/list3/clsp[" + rownum + "]/cdnm", newcdnm);
  3927. model.setValue("/root/main/list3/clsp[" + rownum + "]/spclspec", newspclspec);
  3928. model.setValue("/root/main/list3/clsp[" + rownum + "]/spclformat", newspclformat);
  3929. model.setValue("/root/main/list3/clsp[" + rownum + "]/detldesc", newdetldesc);
  3930. // model.refresh();
  3931. grd_clsphist.refresh();
  3932. // 특정코드, 특정내역이 변경되었거나 삭제된 특정코드를 조회하여 "확인"을 선택한 경우
  3933. var oldspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/oldspclcd");
  3934. var oldspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list[" + i + "]/oldspclspec");
  3935. var rowstatus = grd_clsphist.rowstatus(rownum);
  3936. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  3937. } else {
  3938. grd_clsphist.rowstatus(rownum) = 2; // 2 : update 상태로 stat를 변경한다.
  3939. }
  3940. model.setValue("/root/hidden/list3/msgspclformat", "특정내역코드: " + newspclcd + " / 특정내역명칭: " + newcdnm + " / 기재내역: " + newspclspec + " / 기재형식: " + newspclformat);
  3941. // 특정코드 삭제인 경우
  3942. } else if (flag == "D" && rownum != "") {
  3943. // 특정내역 Grid에서 삭제
  3944. var rowstatus = grd_clsphist.rowstatus(rownum);
  3945. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 :
  3946. // insert & new
  3947. grd_clsphist.deleteRow(rownum, false); // 해당 라인을 Grid에서
  3948. // 삭제한다.
  3949. } else { // 0 : new, 2 : update
  3950. grd_clsphist.rowstatus(rownum) = 4; // 4 : delete 상태로
  3951. // stat를 변경한다.
  3952. }
  3953. grd_clsphist.row = rownum;
  3954. model.setValue("/root/hidden/list3/msgspclformat", "입력된 줄단위 특정내역이 없습니다.");
  3955. } // 특정 코드 상태 따른 if end
  3956. } // for end
  3957. var cnt = 0;
  3958. var jx999cnt = 0;
  3959. var nonjx999cnt = 0; // JX999가 아닌 특정내역코드의 수
  3960. for ( var i = 1; i < grd_clsphist.rows; i++) {
  3961. if (grd_clsphist.rowstatus(i) != 4) {
  3962. var spclLnNo = model.getValue("/root/main/list3/clsp[" + i + "]/edilnno");
  3963. if (spclLnNo == edilnno) {
  3964. cnt++;
  3965. var spclcd = model.getValue("/root/main/list3/clsp[" + i + "]/spclcd");
  3966. if (spclcd == "JX999") { // JX999인 경우
  3967. jx999cnt++;
  3968. } else if (spclcd != "JT001") { // JX999도, 확인코드도 아닌 경우
  3969. nonjx999cnt++;
  3970. }
  3971. }
  3972. }
  3973. }
  3974. if (cnt > 0) {
  3975. model.setValue("/root/main/list2/clod[" + row + "]/lnunitspclspecyn", "*");
  3976. if (jx999cnt > 0) {
  3977. if (nonjx999cnt == 0) { // JX999만 있는 경우
  3978. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#f7a08b"; // class="color_6" 다홍색
  3979. } else { // JX999 + 다른 코드도 있는 경우
  3980. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#b5a5d1"; // 연한 보라색
  3981. }
  3982. } else {
  3983. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff = White
  3984. }
  3985. } else {
  3986. model.resetInstanceNode("/root/main/list2/clod[" + row + "]/lnunitspclspecyn");
  3987. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#ffffff"; // #ffffff = White
  3988. }
  3989. } // 처리 건수 if end
  3990. // model.refresh();
  3991. model.refreshpart("/root/hidden/list3/msgspclformat");
  3992. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  3993. fSortSpclNo();
  3994. grd_clsphist.refresh();
  3995. grd_clodhist.refresh();
  3996. fSaveClspList();
  3997. } else {
  3998. messageBox("줄번호가 부여되지 않았으며 해당 줄단위 특정내역이", "I004"); // /줄번호가 부여되지 않았으며
  3999. // 해당 줄단위 특정내역이
  4000. // 없습니다.
  4001. }
  4002. }
  4003. function fOrderGridInsertAllCmt() {
  4004. // 기존: 처방 항에 따라 심사Comment 조회 연결
  4005. // 변경: 특정내역 상세 관리를 JX999로 설정하여 보여준다.
  4006. model.removeNodeset("/root/hidden/sppiz00500/rslt"); // SPPIZ00500_특정내역상세관리 에서 선택된 결과가 copyNode되는 경로임
  4007. model.removeNodeset("/root/hidden/sppiz00500/cond");
  4008. var grid_obj = document.controls.item("grd_clodhist");
  4009. var grid_obj_clsp = document.controls.item("grd_clsphist");
  4010. for (var k=0; k < grid_obj.selectedRows; k++ ) {
  4011. var row = grid_obj.selectedRow(k);
  4012. var seqno = grid_obj.valueMatrix(row, grid_obj.colref("seqno"));
  4013. var edilnno = grid_obj.valueMatrix(row, grid_obj.colref("edilnno"));
  4014. if (seqno != "" && seqno != "0") {
  4015. } else {
  4016. messageBox("줄번호가 부여되지 않았으며 해당 줄단위 특정내역이", "I004"); ///줄번호가 부여되지 않았으며 해당 줄단위 특정내역이 없습니다.
  4017. return;
  4018. }
  4019. }
  4020. var rowcnt = 1;
  4021. var setrow = 0;
  4022. for (var k=0; k < grid_obj.selectedRows; k++ ) {
  4023. var row = grid_obj.selectedRow(k);
  4024. // 처방 Grid에서 줄번호가 부여된 경우
  4025. var seqno = model.getValue("/root/main/list2/clod["+ row +"]/seqno");
  4026. var edilnno = model.getValue("/root/main/list2/clod["+ row +"]/edilnno");
  4027. var snglcalcscorcd = model.getValue("/root/main/list2/clod["+ row +"]/snglcalcscorcd");
  4028. //if (seqno != "" && seqno != "0") {
  4029. var lnunitspclspecyn = model.getValue("/root/main/list2/clod["+ row +"]/lnunitspclspecyn");
  4030. if (lnunitspclspecyn == "") {
  4031. model.makeValue("/root/hidden/sppiz00500/cond/flag", "I");
  4032. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", snglcalcscorcd);
  4033. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", edilnno);
  4034. model.makeValue("/root/hidden/sppiz00500/cond/clodseqno", seqno);
  4035. model.makeValue("/root/hidden/sppiz00500/cond/spclcd", "JX999");
  4036. model.makeValue("/root/hidden/sppiz00500/cond/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  4037. model.makeNode("/root/hidden/sppiz00500/cond/spclspec");
  4038. model.makeValue("/root/hidden/sppiz00500/cond/spclformat", "X(700)");
  4039. model.makeNode("/root/hidden/sppiz00500/cond/rownum");
  4040. model.makeValue("/root/hidden/sppiz00500/cond/cdnm", "기타내역");
  4041. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", "J");
  4042. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/flag", "I");
  4043. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/rownum", "");
  4044. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/snglcalcscorcd", snglcalcscorcd);
  4045. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/clodseqno", seqno);
  4046. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/edilnno", edilnno);
  4047. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclcd", "JX999");
  4048. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclspec", "");
  4049. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclformat", "X(700)");
  4050. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/cdnm", "기타내역");
  4051. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  4052. rowcnt = rowcnt+1;
  4053. } else { // 기존에 입력된 줄단위 특정내역이 있는 경우
  4054. for (var i = 1; i < grid_obj_clsp.rows; i++) {
  4055. var spcClodseqno = model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno");
  4056. var spcClsoyn = model.getValue("/root/main/list3/clsp["+ i +"]/clsoyn"); //원외특정여부
  4057. if (spcClodseqno == seqno && spcClsoyn == "N") {
  4058. var spclcd = model.getValue("/root/main/list3/clsp["+ i +"]/spclcd");
  4059. if (spclcd != "" && spclcd != "JT001" && grid_obj_clsp.rowstatus(i) != 4) { // 확인코드가 아닌 경우
  4060. model.makeValue("/root/hidden/sppiz00500/cond/flag", "U");
  4061. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", model.getValue("/root/main/list3/clsp["+ i +"]/snglcalcscorcd"));
  4062. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", model.getValue("/root/main/list3/clsp["+ i +"]/edilnno"));
  4063. model.makeValue("/root/hidden/sppiz00500/cond/clodseqno", model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno"));
  4064. model.makeValue("/root/hidden/sppiz00500/cond/spclcd", spclcd);
  4065. model.makeValue("/root/hidden/sppiz00500/cond/detldesc", model.getValue("/root/main/list3/clsp["+ i +"]/detldesc"));
  4066. model.makeValue("/root/hidden/sppiz00500/cond/spclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  4067. model.makeValue("/root/hidden/sppiz00500/cond/spclformat", "X(700)");
  4068. model.makeValue("/root/hidden/sppiz00500/cond/rownum", i);
  4069. model.makeValue("/root/hidden/sppiz00500/cond/cdnm", model.getValue("/root/main/list3/clsp["+ i +"]/cdnm"));
  4070. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", model.getValue("/root/main/list3/clsp["+ i +"]/unitflag"));
  4071. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/flag", "U");
  4072. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/rownum", i);
  4073. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/snglcalcscorcd", model.getValue("/root/main/list3/clsp["+ i +"]/snglcalcscorcd"));
  4074. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/clodseqno", model.getValue("/root/main/list3/clsp["+ i +"]/clodseqno"));
  4075. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/edilnno", model.getValue("/root/main/list3/clsp["+ i +"]/edilnno"));
  4076. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclcd", spclcd);
  4077. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  4078. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclformat", model.getValue("/root/main/list3/clsp["+ i +"]/spclformat"));
  4079. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/cdnm", model.getValue("/root/main/list3/clsp["+ i +"]/cdnm"));
  4080. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/detldesc", model.getValue("/root/main/list3/clsp["+ i +"]/detldesc"));
  4081. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/oldspclcd", spclcd);
  4082. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/oldspclspec", model.getValue("/root/main/list3/clsp["+ i +"]/spclspec"));
  4083. // 특정내역 상세 화면에 보여줄 특정내역 선택
  4084. if (spclcd == "JX999") {
  4085. setrow = i; // 줄단위의 경우 가장 마지막 row로 설정한다.
  4086. }
  4087. rowcnt = rowcnt+1;
  4088. }
  4089. }
  4090. }
  4091. }
  4092. }
  4093. modal("SPPIZ00500", "1", "10", "10", "SPPIZ00500", "/root/hidden/sppiz00500", "/root/hidden/clsp", "", ""); // SPPIZ00500_특정내역상세관리.xrw
  4094. var rsltcnt = getNodesetCount("/root/hidden/sppiz00500/rslt/list");
  4095. // 처리 건수
  4096. if (rsltcnt > 0) {
  4097. for (var i = rsltcnt; i > 0; i--) {
  4098. var flag = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/flag");
  4099. var rownum = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/rownum");
  4100. var newspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclcd");
  4101. var newcdnm = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/cdnm");
  4102. var newspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list[last()]/spclspec");
  4103. var newspclformat = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclformat ");
  4104. var newdetldesc = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/detldesc");
  4105. var newclodseqno = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/clodseqno");
  4106. var newsnglcalcscorcd = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/snglcalcscorcd");
  4107. var newedilnno = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/edilnno");
  4108. // 특정코드 추가인 경우
  4109. if (flag == "I") {
  4110. var clsprow = grid_obj_clsp.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  4111. grid_obj_clsp.insertRow(clsprow++, true);
  4112. model.setValue("/root/main/list3/clsp["+ clsprow +"]/unitflag", "J");
  4113. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clodseqno", newclodseqno);
  4114. model.setValue("/root/main/list3/clsp["+ clsprow +"]/edilnno", newedilnno);
  4115. model.setValue("/root/main/list3/clsp["+ clsprow +"]/snglcalcscorcd", newsnglcalcscorcd);
  4116. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclcd", newspclcd);
  4117. model.setValue("/root/main/list3/clsp["+ clsprow +"]/cdnm", newcdnm);
  4118. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclspec", newspclspec);
  4119. model.setValue("/root/main/list3/clsp["+ clsprow +"]/spclformat", newspclformat);
  4120. model.setValue("/root/main/list3/clsp["+ clsprow +"]/detldesc", newdetldesc);
  4121. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldedilnno", newedilnno);
  4122. model.setValue("/root/main/list3/clsp["+ clsprow +"]/oldspclcd", "");
  4123. model.setValue("/root/main/list3/clsp["+ clsprow +"]/clsoyn", "N"); //원외처방여부
  4124. model.setValue("/root/hidden/list3/msgspclformat", "코드: "+ newspclcd +" / 명칭: "+ newcdnm +" / 내역: "+ newspclspec +" / 형식: "+ newspclformat);
  4125. model.setValue("/root/main/list2/clod[seqno="+ newclodseqno +"]/lnunitspclspecyn", "*");
  4126. var srow = grid_obj.findRow(newclodseqno, grid_obj.fixedrows, grid_obj.colRef("seqno"), false, true);
  4127. if (newspclcd == "JX999") { // JX999인 경우
  4128. grid_obj.cellStyle("background-color", srow, grid_obj.colRef("lnunitspclspecyn")) = "#f7a08b"; // class="color_6" 다홍색
  4129. }
  4130. else if (newspclcd != "JT001") { // JX999도, 확인코드도 아닌 경우
  4131. grid_obj.cellStyle("background-color", srow, grid_obj.colRef("lnunitspclspecyn")) = "#b5a5d1"; // 연한 보라색
  4132. }
  4133. // 특정코드 변경인 경우
  4134. } else if (flag == "U") {
  4135. model.setValue("/root/main/list3/clsp["+ rownum +"]/snglcalcscorcd", newsnglcalcscorcd);
  4136. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclcd", newspclcd);
  4137. model.setValue("/root/main/list3/clsp["+ rownum +"]/cdnm", newcdnm);
  4138. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclspec", newspclspec);
  4139. model.setValue("/root/main/list3/clsp["+ rownum +"]/spclformat", newspclformat);
  4140. model.setValue("/root/main/list3/clsp["+ rownum +"]/detldesc", newdetldesc);
  4141. //model.refresh();
  4142. grid_obj_clsp.refresh();
  4143. // 특정코드, 특정내역이 변경되었거나 삭제된 특정코드를 조회하여 "확인"을 선택한 경우
  4144. var oldspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/oldspclcd");
  4145. var oldspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/oldspclspec");
  4146. var rowstatus = grid_obj_clsp.rowstatus(rownum);
  4147. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  4148. } else {
  4149. grid_obj_clsp.rowstatus(rownum) = 2; // 2 : update 상태로 stat를 변경한다.
  4150. }
  4151. model.setValue("/root/hidden/list3/msgspclformat", "코드: "+ newspclcd +" / 명칭: "+ newcdnm +" / 내역: "+ newspclspec +" / 형식: "+ newspclformat);
  4152. // 특정코드 삭제인 경우
  4153. } else if (flag == "D" && rownum != "" ) {
  4154. // 특정내역 Grid에서 삭제
  4155. var rowstatus = grid_obj_clsp.rowstatus(rownum);
  4156. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  4157. grid_obj_clsp.deleteRow(rownum, false); // 해당 라인을 Grid에서 삭제한다.
  4158. } else { // 0 : new, 2 : update
  4159. grid_obj_clsp.rowstatus(rownum) = 4; // 4 : delete 상태로 stat를 변경한다.
  4160. }
  4161. grid_obj_clsp.row = rownum;
  4162. model.setValue("/root/hidden/list3/msgspclformat", "입력된 줄단위 특정내역이 없습니다.");
  4163. } // 특정 코드 상태 따른 if end
  4164. } // for end
  4165. } // 처리 건수 if end
  4166. //model.refresh();
  4167. model.refreshpart("/root/hidden/list3/msgspclformat");
  4168. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  4169. fSortSpclNo();
  4170. grid_obj_clsp.refresh();
  4171. grid_obj.refresh();
  4172. fSaveClspList();
  4173. // } else {
  4174. //
  4175. // }
  4176. }
  4177. function fSetClodCellStyle(objnm,srchnm,colno,caseSense,fullMatch) {
  4178. var obj = document.controls.item(objnm);
  4179. if (caseSense == null || caseSense == "") {caseSense = false;}
  4180. if (fullMatch == null || fullMatch == "") {caseSense = false;}
  4181. var rowno = obj.findRow(srchnm, obj.fixedrows, colno, caseSense, fullMatch);
  4182. while( rowno > 0){
  4183. alert(rowno);
  4184. rowno = obj.findRow(srchnm, rowno + 1, colno, caseSense, fullMatch) ;
  4185. }
  4186. }
  4187. // SPPIZ00700_심사Comment조회.xrw 호출 - 처방주석의 경우 처방항목의 항을 전달한다.
  4188. function fGetOrderComment(memoflag, memocls, ediitem1) {
  4189. model.resetInstanceNode("/root/hidden/sppiz00700/rslt");
  4190. model.resetInstanceNode("/root/hidden/sppiz00700/cond");
  4191. model.setValue("/root/hidden/sppiz00700/cond/memoflag", memoflag);
  4192. model.setValue("/root/hidden/sppiz00700/cond/memocls", memocls);
  4193. model.setValue("/root/hidden/sppiz00700/cond/ediitem1", ediitem1);
  4194. modal("SPPIZ00700", "1", "10", "10", "SPPIZ00700", "/root/hidden/sppiz00700", "/root/send/sppiz00700", "", ""); // SPPIZ00700_심사Comment조회.xrw
  4195. }
  4196. // SPPIZ00700_심사Comment조회.xrw 호출
  4197. function fGetJudgEdiComment(memoflag, memocls) {
  4198. model.resetInstanceNode("/root/hidden/sppiz00700/rslt");
  4199. model.resetInstanceNode("/root/hidden/sppiz00700/cond");
  4200. model.setValue("/root/hidden/sppiz00700/cond/memoflag", memoflag);
  4201. model.setValue("/root/hidden/sppiz00700/cond/memocls", memocls);
  4202. modal("SPPIZ00700", "1", "10", "10", "SPPIZ00700", "/root/hidden/sppiz00700", "/root/send/sppiz00700", "", ""); // SPPIZ00700_심사Comment조회.xrw
  4203. }
  4204. // 심사Comment 조회 Popup에서 선택한 줄단위메모를 설정한다.
  4205. // SPPIZ00700_심사Comment조회.xrw 에서 opener.javascript.fSetLnUnitMemoRefresh(); 형태로
  4206. // 호출한다.
  4207. function fSetLnUnitMemoRefresh() {
  4208. var row = grd_clodhist.row;
  4209. var seqno = model.getValue("/root/main/list2/clod[" + row + "]/seqno");
  4210. var edilnno = model.getValue("/root/main/list2/clod[" + row + "]/edilnno");
  4211. var workflag = 1;
  4212. var clspgridrow;
  4213. for ( var j = 1; j < grd_clsphist.rows; j++) {
  4214. var spclClodseqno = model.getValue("/root/main/list3/clsp[" + j
  4215. + "]/clodseqno");
  4216. if (spclClodseqno == seqno) {
  4217. var oldspclcd = model.getValue("/root/main/list3/clsp[" + j
  4218. + "]/spclcd");
  4219. if (oldspclcd == "JX999") {
  4220. // 기존 "JX999"를 수정한다.
  4221. workflag = 2;
  4222. clspgridrow = j; // 특정내역 Grid의 해당 row를 기억한다.
  4223. j = grd_clsphist.rows;
  4224. }
  4225. }
  4226. }
  4227. var newspclspec = model.getValue("/root/hidden/sppiz00700/rslt/memo");
  4228. if (newspclspec) {
  4229. var nonjx999cnt = 0; // JX999가 아닌 특정내역코드의 수
  4230. for ( var i = 1; i < grd_clsphist.rows; i++) {
  4231. if (grd_clsphist.rowstatus(i) != 4) {
  4232. var spclClodseqno = model.getValue("/root/main/list3/clsp[" + i + "]/clodseqno");
  4233. if (spclClodseqno == seqno) {
  4234. var spclcd = model.getValue("/root/main/list3/clsp[" + i + "]/spclcd");
  4235. if (spclcd != "JX999" && spclcd != "JT001") { // JX999도,확인코드도 아닌 경우
  4236. nonjx999cnt++;
  4237. i = grd_clsphist.rows; // JX999 외의 다른 특정내역코드가 존재하는지 여부만 체크하면 되므로
  4238. }
  4239. }
  4240. }
  4241. }
  4242. if (nonjx999cnt == 0) { // JX999만 있는 경우
  4243. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#f7a08b"; // class="color_6" 다홍색
  4244. } else { // JX999 + 다른 코드도 있는 경우
  4245. grd_clodhist.cellStyle("background-color", row, grd_clodhist.colRef("lnunitspclspecyn")) = "#b5a5d1"; // 연한 보라색
  4246. }
  4247. model.setValue("/root/main/list2/clod[" + row + "]/lnunitspclspecyn",
  4248. "*");
  4249. if (workflag == 1) { // 추가
  4250. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  4251. grd_clsphist.insertRow(clsprow++, true);
  4252. model.setValue("/root/main/list3/clsp[" + clsprow + "]/unitflag", "J");
  4253. model.setValue("/root/main/list3/clsp[" + clsprow + "]/clodseqno", seqno);
  4254. model.setValue("/root/main/list3/clsp[" + clsprow + "]/edilnno", edilnno);
  4255. model.setValue("/root/main/list3/clsp[" + clsprow + "]/snglcalcscorcd", model.getValue("/root/main/list2/clod[" + row + "]/snglcalcscorcd"));
  4256. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclcd", "JX999");
  4257. model.setValue("/root/main/list3/clsp[" + clsprow + "]/cdnm", "기타내역");
  4258. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclspec", newspclspec);
  4259. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclformat", "X(700)");
  4260. model.setValue("/root/main/list3/clsp[" + clsprow + "]/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  4261. model.setValue("/root/main/list3/clsp[" + clsprow + "]/oldedilnno", edilnno);
  4262. grd_clsphist.row = clsprow;
  4263. } else { // 수정
  4264. // 기존 변경된 경우
  4265. model.setValue("/root/main/list3/clsp[" + clspgridrow + "]/snglcalcscorcd", model.getValue("/root/main/list2/clod[" + row + "]/snglcalcscorcd"));
  4266. model.setValue("/root/main/list3/clsp[" + clspgridrow + "]/spclcd", "JX999");
  4267. model.setValue("/root/main/list3/clsp[" + clspgridrow + "]/cdnm", "기타내역");
  4268. model.setValue("/root/main/list3/clsp[" + clspgridrow + "]/spclspec", newspclspec);
  4269. model.setValue("/root/main/list3/clsp[" + clspgridrow + "]/spclformat", "X(700)");
  4270. model.setValue("/root/main/list3/clsp[" + clspgridrow + "]/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  4271. var rowstatus = grd_clsphist.rowstatus(clspgridrow);
  4272. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert &
  4273. // new
  4274. } else {
  4275. grd_clsphist.rowstatus(clspgridrow) = 2; // 2 : update 상태로
  4276. // stat를 변경한다.
  4277. }
  4278. grd_clsphist.row = clspgridrow;
  4279. }
  4280. model.setValue("/root/hidden/list3/msgspclformat", "특정내역코드: JX999 / 특정내역명칭: 기타내역 / 기재내역 : " + newspclspec + " / 기재형식 : X(700)");
  4281. } else {
  4282. model.setValue("/root/hidden/list3/msgspclformat", "입력된 처방주석(줄단위 기타특정내역)이 없습니다.");
  4283. }
  4284. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  4285. fSortSpclNo();
  4286. // model.refresh();
  4287. model.refreshpart("/root/hidden/list3/msgspclformat");
  4288. grd_clsphist.refresh();
  4289. grd_clcohist.refresh();
  4290. }
  4291. // 결과조회
  4292. function fOrderRsltSrch() {
  4293. if (grp_dropdownmenu.visible == true) {
  4294. grp_dropdownmenu.visible = false;
  4295. }
  4296. var clamkey = model.getValue("/root/main/item1/clbs/clamkey");
  4297. if (clamkey) { // 조회된 심사대상자가 있으면
  4298. var trgtManWindow = getChildWindow("SMAER00800"); // SMAER00800_결과조회
  4299. if (trgtManWindow != null) {
  4300. trgtManWindow.close();
  4301. }
  4302. // ast/examcureweb/xrw/SMAER00800_결과조회.xrw
  4303. model.makeValue("/root/hidden/smaer00800/cond/srchdate1", model.getValue("/root/main/item1/clbs/indd"));
  4304. model.makeValue("/root/hidden/smaer00800/cond/srchdate2", getCurrentDate()); // (dateHelper.js)현재날짜 반환
  4305. model.makeValue("/root/hidden/smaer00800/cond/srchpid", model.getValue("/root/main/item1/clbs/pid"));
  4306. model.makeValue("/root/hidden/smaer00800/cond/wardcd", ""); // model.getValue("/root/main/item1/iteminfo/wardcd"));
  4307. model.makeValue("/root/hidden/smaer00800/cond/roomcd", ""); // model.getValue("/root/main/item1/iteminfo/roomcd"));
  4308. model.makeValue("/root/hidden/smaer00800/cond/listflag", "P");
  4309. model.makeValue("/root/hidden/smaer00800/cond/deptcd", model.getValue("/root/main/item1/clbs/orddeptcd"));
  4310. model.makeNode("/root/hidden/smaer00800/cond/drid");
  4311. model.makeNode("/root/hidden/smaer00800/cond/chkcheck");
  4312. model.makeValue("/root/hidden/smaer00800/cond/chkcheck1", "A");
  4313. model.makeValue("/root/hidden/smaer00800/cond/chkcheck2", "B");
  4314. model.makeValue("/root/hidden/smaer00800/cond/chkcheck3", "C");
  4315. model.makeValue("/root/hidden/smaer00800/cond/chkcheck4", "D");
  4316. model.makeValue("/root/hidden/smaer00800/cond/chkcheck5", "E");
  4317. model.makeValue("/root/hidden/smaer00800/cond/chkcheck6", "F");
  4318. model.makeValue("/root/hidden/smaer00800/cond/chkcheck7", "G");
  4319. model.makeNode("/root/hidden/smaer00800/cond/chkcheck8");
  4320. model.makeNode("/root/hidden/smaer00800/cond/tabflag");
  4321. model.makeNode("/root/hidden/smaer00800/cond/mdlcd");
  4322. model.makeNode("/root/hidden/smaer00800/cond/examgubun");
  4323. model.makevalue("/root/hidden/smaer00800/cond/srchflag", "B");
  4324. model.makeNode("/root/hidden/smaer00800/cond/hlaflag"); // 20100604 추가됨
  4325. model.makeNode("/root/hidden/smaer00800/cond/prntfrmflag"); // 20100723 추가됨
  4326. // modal("SMAER00800", "1", "10", "10", "SMAER00800",
  4327. // "/root/hidden/smaer00800/cond", "/root/send/data/singdata", "", "");
  4328. // // SMAER00800_결과조회
  4329. open("SMAER00800", "1", "10", "10", "SMAER00800", "/root/hidden/smaer00800/cond", "/root/send/data/singdata", "", ""); // SMAER00800_결과조회
  4330. }
  4331. }
  4332. // 보험인정기준
  4333. function fOrderInsuRcogBase(isAll) {
  4334. var calcscorcd = grd_clodhist.valueMatrix(grd_clodhist.row, grd_clodhist.colRef("snglcalcscorcd"));
  4335. model.setValue("root/hidden/sppiz01600/cond/calcscorcd", calcscorcd);
  4336. // SPPIZ01600_보험인정기준조회 팝업 연결 (선택된 row의 처방코드를 넘겨준다.)
  4337. modal("SPPIZ01600", 1,150, 150, "SPPIZ01600", "/root/hidden/sppiz01600/cond/calcscorcd", "/root/send/item3/calcscorcd", "", "");
  4338. }
  4339. // 수가조회
  4340. function fOrderCalcScorSrch(isAll) {
  4341. // 수가조회창이 아닌 수가관리창으로 교체 (calcscorcd : 수가코드, judgflag : 수가관리에서 자보,일반,국제를
  4342. // 보여주도록 하기 위함)
  4343. model.removeNodeset("/root/hidden/smpic00100/cond");
  4344. model.makeValue("/root/hidden/smpic00100/cond/calcscorcd", grd_clodhist.valueMatrix(grd_clodhist.row, grd_clodhist.colRef("snglcalcscorcd")));
  4345. model.makeValue("/root/hidden/smpic00100/cond/judgflag", "Y");
  4346. modal("SMPIC00100", "1", "10", "10", "SMPIC00100", "/root/hidden/smpic00100/cond", "/root/temp/item6", "", "");
  4347. }
  4348. // 약품편람
  4349. function fOrderDrugHBook() {
  4350. model.removeNodeset("/root/hidden/smadb01900/cond");
  4351. model.makeValue("/root/hidden/smadb01900/cond/calcscorcd", grd_clodhist.valueMatrix(grd_clodhist.row, grd_clodhist.colRef("snglcalcscorcd")));
  4352. modal("SMADB01900", 1, 150, 150, "SMADB01900", "/root/hidden/smadb01900/cond/calcscorcd", "/root/hidden/receivedata/srchdrugcd", "", "");
  4353. }
  4354. // 상세계산내역 Popup 호출
  4355. function fOrderCalcDetail(isAll) {
  4356. model.resetInstanceNode("/root/hidden/sppid21600/cond");
  4357. model.setValue("/root/hidden/sppij00400/cond/pid", model.getValue("/root/main/item1/clbs/pid"));
  4358. model.setValue("/root/hidden/sppij00400/cond/indd", model.getValue("/root/main/item1/clbs/indd"));
  4359. model.setValue("/root/hidden/sppij00400/cond/cretno", model.getValue("/root/main/item1/clbs/cretno"));
  4360. model.setValue("/root/hidden/sppij00400/cond/mskind", model.getValue("/root/main/item1/clbs/mskind"));
  4361. model.setValue("/root/hidden/sppij00400/cond/insukind", model.getValue("/root/main/item1/clbs/insukindcd"));
  4362. model.setValue("/root/hidden/sppij00400/cond/insukindnm", model.getValue("/root/main/item1/clbs/insukindnm"));
  4363. model.setValue("/root/hidden/sppij00400/cond/suppkind", model.getValue("/root/main/item1/clbs/suppkindcd"));
  4364. model.setValue("/root/hidden/sppij00400/cond/suppkindnm", model.getValue("/root/main/item1/clbs/suppkindnm"));
  4365. model.setValue("/root/hidden/sppij00400/cond/ownbrate", model.getValue("/root/main/item1/clbs/payownbrate"));
  4366. model.setValue("/root/hidden/sppij00400/cond/ordfromdd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  4367. model.setValue("/root/hidden/sppij00400/cond/ordtodd", model.getValue("/root/main/item1/clbs/ordtodd"));
  4368. model.setValue("/root/hidden/sppij00400/cond/ordtype", model.getValue("/root/main/item1/clbs/stsioflag"));
  4369. model.setValue("/root/hidden/sppij00400/cond/brateflag", model.getValue("/root/main/item1/clbs/ioflag"));
  4370. model.setValue("/root/hidden/sppij00400/cond/insufromdd", model.getValue("/root/main/item1/clbs/iphsfromdd"));
  4371. model.setValue("/root/hidden/sppij00400/cond/insutodd", model.getValue("/root/main/item1/clbs/iphstodd"));
  4372. model.setValue("/root/hidden/sppij00400/cond/selectedRdoItem", "");
  4373. model.setValue("/root/hidden/sppij00400/cond/srchflag", "ALL"); // 전체기준검색일때는 "ALL"
  4374. model.setValue("/root/hidden/sppij00400/cond/selyn", "Y"); // 조회만할경우 "Y"
  4375. model.setValue("/root/hidden/sppij00400/cond/cpyn", model
  4376. .getValue("/root/main/item1/clbs/cpyn")); // CP여부
  4377. model.setValue("/root/hidden/sppij00400/cond/ediflag", "N"); // EDI조회여부 - 20090810 박창원
  4378. model.setValue("/root/hidden/sppij00400/cond/edicd", "-"); // EDI코드 - 20090810 박창원
  4379. if (isAll == "" || isAll != true) { // 처방Grid 더블클릭 시 해당코드를 호출한다.
  4380. if (model.getValue("/root/main/list2/clod[" + grd_clodhist.row + "]/grupcalcscorcd")) {
  4381. model.setValue("/root/hidden/sppij00400/cond/grupsnglflag", "G");
  4382. model.setValue("/root/hidden/sppij00400/cond/calcscorcd", model.getValue("/root/main/list2/clod[" + grd_clodhist.row + "]/grupcalcscorcd"));
  4383. } else {
  4384. model.setValue("/root/hidden/sppij00400/cond/grupsnglflag", "S");
  4385. model.setValue("/root/hidden/sppij00400/cond/calcscorcd", model.getValue("/root/main/list2/clod[" + grd_clodhist.row + "]/snglcalcscorcd"));
  4386. }
  4387. model.setValue("/root/hidden/sppij00400/cond/ordfromdd", model.getValue("/root/main/list2/clod[" + grd_clodhist.row + "]/ordfromdd"));
  4388. model.setValue("/root/hidden/sppij00400/cond/ordtodd", model.getValue("/root/main/list2/clod[" + grd_clodhist.row + "]/ordtodd"));
  4389. model.setValue("/root/hidden/sppij00400/cond/srchflag", "");
  4390. }
  4391. // modal("SPPIJ00400", "1", "10", "10", "SPPIJ00400",
  4392. // "/root/hidden/sppij00400/cond", "", "", ""); // SPPIJ00400_입원세부계산내역.xrw
  4393. modal("SPPIJ00400", "", "10", "10", "SPPIJ00400", "/root/hidden/sppij00400/cond");
  4394. // }
  4395. }
  4396. // 상세계산내역 Popup 호출
  4397. function fOrderCalcDetailEDI(isAll) {
  4398. model.resetInstanceNode("/root/hidden/sppid21600/cond");
  4399. model.setValue("/root/hidden/sppij00400/cond/pid", model.getValue("/root/main/item1/clbs/pid"));
  4400. model.setValue("/root/hidden/sppij00400/cond/indd", model.getValue("/root/main/item1/clbs/indd"));
  4401. model.setValue("/root/hidden/sppij00400/cond/cretno", model.getValue("/root/main/item1/clbs/cretno"));
  4402. model.setValue("/root/hidden/sppij00400/cond/mskind", model.getValue("/root/main/item1/clbs/mskind"));
  4403. model.setValue("/root/hidden/sppij00400/cond/insukind", model.getValue("/root/main/item1/clbs/insukindcd"));
  4404. model.setValue("/root/hidden/sppij00400/cond/insukindnm", model.getValue("/root/main/item1/clbs/insukindnm"));
  4405. model.setValue("/root/hidden/sppij00400/cond/suppkind", model.getValue("/root/main/item1/clbs/suppkindcd"));
  4406. model.setValue("/root/hidden/sppij00400/cond/suppkindnm", model.getValue("/root/main/item1/clbs/suppkindnm"));
  4407. model.setValue("/root/hidden/sppij00400/cond/ownbrate", model.getValue("/root/main/item1/clbs/payownbrate"));
  4408. model.setValue("/root/hidden/sppij00400/cond/ordfromdd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  4409. model.setValue("/root/hidden/sppij00400/cond/ordtodd", model.getValue("/root/main/item1/clbs/ordtodd"));
  4410. model.setValue("/root/hidden/sppij00400/cond/ordtype", model.getValue("/root/main/item1/clbs/stsioflag"));
  4411. model.setValue("/root/hidden/sppij00400/cond/brateflag", model.getValue("/root/main/item1/clbs/ioflag"));
  4412. model.setValue("/root/hidden/sppij00400/cond/insufromdd", model.getValue("/root/main/item1/clbs/iphsfromdd"));
  4413. model.setValue("/root/hidden/sppij00400/cond/insutodd", model.getValue("/root/main/item1/clbs/iphstodd"));
  4414. model.setValue("/root/hidden/sppij00400/cond/selectedRdoItem", "");
  4415. model.setValue("/root/hidden/sppij00400/cond/srchflag", "G"); // 전체기준검색일때는// "ALL"
  4416. model.setValue("/root/hidden/sppij00400/cond/selyn", "Y"); // 조회만할경우 "Y"
  4417. model.setValue("/root/hidden/sppij00400/cond/cpyn", model.getValue("/root/main/item1/clbs/cpyn")); // CP여부
  4418. model.setValue("/root/hidden/sppij00400/cond/ediflag", "Y"); // EDI조회여부 - 20090810 박창원
  4419. model.setValue("/root/hidden/sppij00400/cond/edicd", model.getValue("/root/main/list2/clod[" + grd_clodhist.row + "]/basecd")); // EDI코드 - 20090810 박창원
  4420. if (isAll == "" || isAll != true) { // 처방Grid 더블클릭 시 해당코드를 호출한다.
  4421. if (model.getValue("/root/main/list2/clod[" + grd_clodhist.row + "]/grupcalcscorcd")) {
  4422. model.setValue("/root/hidden/sppij00400/cond/grupsnglflag", "G");
  4423. model.setValue("/root/hidden/sppij00400/cond/calcscorcd", model.getValue("/root/main/list2/clod[" + grd_clodhist.row + "]/grupcalcscorcd"));
  4424. } else {
  4425. model.setValue("/root/hidden/sppij00400/cond/grupsnglflag", "S");
  4426. model.setValue("/root/hidden/sppij00400/cond/calcscorcd", model.getValue("/root/main/list2/clod[" + grd_clodhist.row + "]/snglcalcscorcd"));
  4427. }
  4428. model.setValue("/root/hidden/sppij00400/cond/ordfromdd", model.getValue("/root/main/list2/clod[" + grd_clodhist.row + "]/ordfromdd"));
  4429. model.setValue("/root/hidden/sppij00400/cond/ordtodd", model.getValue("/root/main/list2/clod[" + grd_clodhist.row + "]/ordtodd"));
  4430. model.setValue("/root/hidden/sppij00400/cond/srchflag", "");
  4431. }
  4432. modal("SPPIJ00400", "1", "10", "10", "SPPIJ00400","/root/hidden/sppij00400/cond", "", "", ""); // SPPIJ00400_입원세부계산내역.xrw
  4433. // }
  4434. }
  4435. // 처방 Grid 배경색을 설정한다. - 추가/수정된 row
  4436. function fOrderBkColorNew(clodrow) {
  4437. grd_clodhist.cellStyle("background-color", clodrow, grd_clodhist.colRef("rowstat")) = "#ffff9c"; // 신규처방 노란배경 // ffff9c=연한노랑
  4438. }
  4439. // 처방 Grid 배경색을 설정한다. - 심사사유 있는 row
  4440. function fOrderBkColorResn(i) {
  4441. // grd_clodhist.cellStyle("background-color", i,
  4442. // grd_clodhist.colRef("rowstat")) = "#cece9c"; // 심사사유 있는 경우 녹색배경 cece9c=카키색
  4443. grd_clodhist.cellStyle("background-color", i, grd_clodhist
  4444. .colRef("rowstat")) = "#ffff9c"; // 심사사유 있는 경우 노란배경 //
  4445. // ffff9c=연한노랑
  4446. }
  4447. // 처방 Grid 배경색을 설정한다. - 배경색 없는 row
  4448. function fOrderBkColorNone(i) {
  4449. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("rowstat")) = "#ffffff"; // 배경색 없음 // #ffffff = White
  4450. }
  4451. // /////////////////////////////////////////////////////////////////////////
  4452. // 처방 data 및 row status를 변경 이전 상태로 복구한다.
  4453. function fCancelClodStatusChng() {
  4454. var row = grd_clodhist.row;
  4455. model.setValue("/root/main/list2/clod[" + row + "]/adjtresncd", model.getValue("/root/hidden/item5/clod/adjtresncd"));
  4456. model.setValue("/root/main/list2/clod[" + row + "]/ordfromdd", model.getValue("/root/hidden/item5/clod/ordfromdd"));
  4457. model.setValue("/root/main/list2/clod[" + row + "]/ordtodd", model.getValue("/root/hidden/item5/clod/ordtodd"));
  4458. model.setValue("/root/main/list2/clod[" + row + "]/orddd", model.getValue("/root/hidden/item5/clod/orddd"));
  4459. model.setValue("/root/main/list2/clod[" + row + "]/updtdd", model.getValue("/root/hidden/item5/clod/updtdd"));
  4460. model.setValue("/root/main/list2/clod[" + row + "]/grupcalcscorcd", model.getValue("/root/hidden/item5/clod/grupcalcscorcd"));
  4461. model.setValue("/root/main/list2/clod[" + row + "]/snglcalcscorcd", model.getValue("/root/hidden/item5/clod/snglcalcscorcd"));
  4462. model.setValue("/root/main/list2/clod[" + row + "]/basecd", model.getValue("/root/hidden/item5/clod/basecd"));
  4463. model.setValue("/root/main/list2/clod[" + row + "]/hngnm", model.getValue("/root/hidden/item5/clod/hngnm"));
  4464. model.setValue("/root/main/list2/clod[" + row + "]/drugqty", model.getValue("/root/hidden/item5/clod/drugqty"));
  4465. model.setValue("/root/main/list2/clod[" + row + "]/tims", model.getValue("/root/hidden/item5/clod/tims"));
  4466. model.setValue("/root/main/list2/clod[" + row + "]/dayno", model.getValue("/root/hidden/item5/clod/dayno"));
  4467. model.setValue("/root/main/list2/clod[" + row + "]/edidrugqty", model.getValue("/root/hidden/item5/clod/edidrugqty"));
  4468. model.setValue("/root/main/list2/clod[" + row + "]/edidayno", model.getValue("/root/hidden/item5/clod/edidayno"));
  4469. model.setValue("/root/main/list2/clod[" + row + "]/unitcost", model.getValue("/root/hidden/item5/clod/unitcost"));
  4470. grd_clodhist.rowstatus(grd_clodhist.row) = parseInt(model.getValue("/root/hidden/item5/clod/rowstatus"));
  4471. }
  4472. // 변경일자를 갱신한다.
  4473. function fChkUpdtdd() {
  4474. var clbsfromdd = model.getValue("/root/main/item1/clbs/ordfromdd");
  4475. var clbstodd = model.getValue("/root/main/item1/clbs/ordtodd");
  4476. if (isValidDateTime(clbsfromdd) && isValidDateTime(clbstodd)) { // (dateHelper.js)
  4477. // 유효한 날짜,
  4478. // 시간 인지 점검
  4479. for ( var i = 1; i < grd_clodhist.rows; i++) {
  4480. var mechfromdd = model.getValue("/root/main/list2/clod[" + i
  4481. + "]/mechfromdd");
  4482. if (isValidDateTime(mechfromdd)) { // (dateHelper.js) 유효한 날짜, 시간 인지
  4483. // 점검
  4484. // 수가시작일자가 CLBS 진료시작일자~진료종료일자 사이인 경우 (수가가 변경된 경우)
  4485. if (mechfromdd >= clbsfromdd && mechfromdd <= clbstodd) {
  4486. // 수가코드, 수가시작일자가 같은 경우 최초진료일자를 비교한다.
  4487. var snglcalcscorcd = model.getValue("/root/main/list2/clod[" + i + "]/snglcalcscorcd");
  4488. var ordfromdd = model.getValue("/root/main/list2/clod[" + i + "]/ordfromdd");
  4489. for ( var j = 1; j < grd_clodhist.rows; j++) {
  4490. var m_fromdd = model.getValue("/root/main/list2/clod[" + j + "]/mechfromdd");
  4491. var calcscorcd = model.getValue("/root/main/list2/clod[" + j + "]/snglcalcscorcd");
  4492. if (snglcalcscorcd == calcscorcd && mechfromdd == m_fromdd) {
  4493. var o_fromdd = model.getValue("/root/main/list2/clod[" + j + "]/ordfromdd");
  4494. if (ordfromdd > o_fromdd) {
  4495. ordfromdd = o_fromdd;
  4496. }
  4497. }
  4498. }
  4499. // 최초진료일자를 변경일자로 설정한다.
  4500. for ( var j = 1; j < grd_clodhist.rows; j++) {
  4501. var m_fromdd = model.getValue("/root/main/list2/clod[" + j + "]/mechfromdd");
  4502. var calcscorcd = model.getValue("/root/main/list2/clod[" + j + "]/snglcalcscorcd");
  4503. var clodordfromdd = model.getValue("/root/main/list2/clod[" + j + "]/ordfromdd");
  4504. if (snglcalcscorcd == calcscorcd && mechfromdd == m_fromdd) {
  4505. var updtdd = model.getValue("/root/main/list2/clod[" + j + "]/updtdd");
  4506. if (updtdd != ordfromdd) {
  4507. model.setValue("/root/main/list2/clod[" + j + "]/updtdd", clodordfromdd);
  4508. grd_clodhist.cellStyle("background-color", j, grd_clodhist.colRef("updtdd")) = "#c8e67b"; // class="color_9" 형광녹색
  4509. // 처방의 수정된 row 상태를 표시한다.
  4510. // fSetOrderChangeRowStat(i);
  4511. var rowstatus = grd_clodhist.rowstatus(j);
  4512. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  4513. } else {
  4514. grd_clodhist.rowstatus(j) = 2; // 2 : update 상태로 stat를 변경한다.
  4515. }
  4516. }
  4517. }
  4518. }
  4519. } // if (mechfromdd >= clbsfromdd && mechfromdd <= clbstodd)
  4520. } // if (isValidDateTime(mechfromdd))
  4521. } // for (var i = 1; i < grd_clodhist.rows; i++)
  4522. } // if (isValidDateTime(clbsfromdd) && isValidDateTime(clbstodd))
  4523. }
  4524. // 조회한 수가코드의 금액정보를 표시한다.
  4525. function fSetCalcScorAmt(clod, mode) {
  4526. for ( var i = 1; i <= clod.length; i++) { // 싱글 수가코드 개수 만큼
  4527. var row = grd_clodhist.row;
  4528. if (mode == "new") {
  4529. model.setValue("/root/main/list2/clod[" + row + "]/grupsnglflag", model.getValue("/root/main/item5/mech[" + i + "]/grupsnglflag")); // 그룹싱글구분
  4530. model.setValue("/root/main/list2/clod[" + row + "]/grupseqno", model.getValue("/root/main/item5/mech[" + i + "]/grupseqno")); // 그룹 정렬순번
  4531. model.setValue("/root/main/list2/clod[" + row + "]/grupcalcscorcd", model.getValue("/root/main/item5/mech[" + i + "]/grupcalcscorcd"));
  4532. model.setValue("/root/main/list2/clod[" + row + "]/snglcalcscorcd", model.getValue("/root/main/item5/mech[" + i + "]/snglcalcscorcd"));
  4533. model.setValue("/root/main/list2/clod[" + row + "]/orddeptcd", model.getValue("/root/main/item5/mech[" + i + "]/orddeptcd"));
  4534. model.setValue("/root/main/list2/clod[" + row + "]/orddrid", model.getValue("/root/main/item5/mech[" + i + "]/orddrid"));
  4535. model.setValue("/root/main/list2/clod[" + row + "]/matractflag", model.getValue("/root/main/item5/mech[" + i + "]/matractflag"));
  4536. model.setValue("/root/main/list2/clod[" + row + "]/item", model.getValue("/root/main/item5/mech[" + i + "]/item"));
  4537. model.setValue("/root/main/list2/clod[" + row + "]/payflag", model.getValue("/root/main/item5/mech[" + i + "]/payflag"));
  4538. model.setValue("/root/main/list2/clod[" + row + "]/pynpy1", model.getValue("/root/main/item5/mech[" + i + "]/pynpy1"));
  4539. model.setValue("/root/main/list2/clod[" + row + "]/earncls1", model.getValue("/root/main/item5/mech[" + i + "]/earncls1"));
  4540. model.setValue("/root/main/list2/clod[" + row + "]/earncls2", model.getValue("/root/main/item5/mech[" + i + "]/earncls2"));
  4541. model.setValue("/root/main/list2/clod[" + row + "]/earncls3", model.getValue("/root/main/item5/mech[" + i + "]/earncls3"));
  4542. model.setValue("/root/main/list2/clod[" + row + "]/ediitem1", model.getValue("/root/main/item5/mech[" + i + "]/ediitem1"));
  4543. model.setValue("/root/main/list2/clod[" + row + "]/ediitem2", model.getValue("/root/main/item5/mech[" + i + "]/ediitem2"));
  4544. model.setValue("/root/main/list2/clod[" + row + "]/ediitem", model.getValue("/root/main/item5/mech[" + i + "]/ediitem"));
  4545. model.setValue("/root/main/list2/clod[" + row + "]/cnfmcd", model.getValue("/root/main/item5/mech[" + i + "]/cnfmcd"));
  4546. model.setValue("/root/main/list2/clod[" + row + "]/orddd", model.getValue("/root/main/item5/mech[" + i + "]/orddd"));
  4547. model.setValue("/root/main/list2/clod[" + row + "]/calcappyn", model.getValue("/root/main/item5/mech[" + i + "]/calcappyn"));
  4548. // 신규입력된 처방은 edilnno는 0, seqno는 최종번호를 셋팅하고 maxseqno에 최종값을 +1한다.
  4549. model.setValue("/root/main/list2/clod[" + row + "]/edilnno", "0");
  4550. model.setValue("/root/main/list2/clod[" + row + "]/seqno", model.getValue("/root/main/item1/clbs/maxseqno"));
  4551. model.setValue("/root/main/item1/clbs/maxseqno", parseInt(model.getValue("/root/main/item1/clbs/maxseqno")) + 1);
  4552. }
  4553. model.setValue("/root/main/list2/clod[" + row + "]/mechfromdd", model.getValue("/root/main/item5/mech[" + i + "]/mechfromdd"));
  4554. model.setValue("/root/main/list2/clod[" + row + "]/mechtodd", model.getValue("/root/main/item5/mech[" + i + "]/mechtodd"));
  4555. model.setValue("/root/main/list2/clod[" + row + "]/unitcost", model.getValue("/root/main/item5/mech[" + i + "]/unitcost"));
  4556. model.setValue("/root/main/list2/clod[" + row + "]/drugqty", model.getValue("/root/main/item5/mech[" + i + "]/drugqty"));
  4557. model.setValue("/root/main/list2/clod[" + row + "]/tims", model.getValue("/root/main/item5/mech[" + i + "]/tims"));
  4558. model.setValue("/root/main/list2/clod[" + row + "]/daydrugqty", model.getValue("/root/main/item5/mech[" + i + "]/daydrugqty"));
  4559. model.setValue("/root/main/list2/clod[" + row + "]/dayno", model.getValue("/root/main/item5/mech[" + i + "]/dayno"));
  4560. model.setValue("/root/main/list2/clod[" + row + "]/totdrugqty", model.getValue("/root/main/item5/mech[" + i + "]/totdrugqty"));
  4561. model.setValue("/root/main/list2/clod[" + row + "]/amt", model.getValue("/root/main/item5/mech[" + i + "]/amt"));
  4562. model.setValue("/root/main/list2/clod[" + row + "]/basecd", model.getValue("/root/main/item5/mech[" + i + "]/basecd"));
  4563. model.setValue("/root/main/list2/clod[" + row + "]/baserlapnt", model.getValue("/root/main/item5/mech[" + i + "]/baserlapnt"));
  4564. model.setValue("/root/main/list2/clod[" + row + "]/baseaddrlapnt", model.getValue("/root/main/item5/mech[" + i + "]/baseaddrlapnt"));
  4565. model.setValue("/root/main/list2/clod[" + row + "]/estmcls", model.getValue("/root/main/item5/mech[" + i + "]/estmcls"));
  4566. model.setValue("/root/main/list2/clod[" + row + "]/estmmncd", model.getValue("/root/main/item5/mech[" + i + "]/estmmncd"));
  4567. model.setValue("/root/main/list2/clod[" + row + "]/pntunitcost", model.getValue("/root/main/item5/mech[" + i + "]/pntunitcost"));
  4568. model.setValue("/root/main/list2/clod[" + row + "]/hosinresncd", model.getValue("/root/main/item5/mech[" + i + "]/hosinresncd"));
  4569. model.setValue("/root/main/list2/clod[" + row + "]/ordfromdd", model.getValue("/root/main/item5/mech[" + i + "]/ordfromdd"));
  4570. model.setValue("/root/main/list2/clod[" + row + "]/ordtodd", model.getValue("/root/main/item5/mech[" + i + "]/ordtodd"));
  4571. model.setValue("/root/main/list2/clod[" + row + "]/edicdflag", model.getValue("/root/main/item5/mech[" + i + "]/edicdflag"));
  4572. model.setValue("/root/main/list2/clod[" + row + "]/edicd", model.getValue("/root/main/item5/mech[" + i + "]/edicd"));
  4573. model.setValue("/root/main/list2/clod[" + row + "]/ediunitcost", model.getValue("/root/main/item5/mech[" + i + "]/ediunitcost"));
  4574. model.setValue("/root/main/list2/clod[" + row + "]/edidrugqty", model.getValue("/root/main/item5/mech[" + i + "]/edidrugqty"));
  4575. model.setValue("/root/main/list2/clod[" + row + "]/edidayno", model.getValue("/root/main/item5/mech[" + i + "]/edidayno"));
  4576. model.setValue("/root/main/list2/clod[" + row + "]/rcptunitcost", model.getValue("/root/main/item5/mech[" + i + "]/rcptunitcost"));
  4577. model.setValue("/root/main/list2/clod[" + row + "]/prcpflag", model.getValue("/root/main/item5/mech[" + i + "]/prcpflag"));
  4578. model.setValue("/root/main/list2/clod[" + row + "]/ediamt", model.getValue("/root/main/item5/mech[" + i + "]/ediamt"));
  4579. model.setValue("/root/main/list2/clod[" + row + "]/rcptcalcamt", model.getValue("/root/main/item5/mech[" + i + "]/rcptcalcamt"));
  4580. model.setValue("/root/main/list2/clod[" + row + "]/estmcd", model.getValue("/root/main/item5/mech[" + i + "]/estmcd"));
  4581. model.setValue("/root/main/list2/clod[" + row + "]/hngnm", model.getValue("/root/main/item5/mech[" + i + "]/hngnm"));
  4582. model.setValue("/root/main/list2/clod[" + row + "]/edihospaddamt", model.getValue("/root/main/item5/mech[" + i + "]/edihospaddamt"));
  4583. model.setValue("/root/main/list2/clod[" + row + "]/ediaddamt", model.getValue("/root/main/item5/mech[" + i + "]/ediaddamt"));
  4584. model.setValue("/root/main/list2/clod[" + row + "]/paytotamt", model.getValue("/root/main/item5/mech[" + i + "]/paytotamt"));
  4585. model.setValue("/root/main/list2/clod[" + row + "]/ownbamt", model.getValue("/root/main/item5/mech[" + i + "]/ownbamt"));
  4586. model.setValue("/root/main/list2/clod[" + row + "]/clamamt", model.getValue("/root/main/item5/mech[" + i + "]/clamamt"));
  4587. model.setValue("/root/main/list2/clod[" + row + "]/choiordamt", model.getValue("/root/main/item5/mech[" + i + "]/choiordamt"));
  4588. model.setValue("/root/main/list2/clod[" + row + "]/edihospaddtotamt", model.getValue("/root/main/item5/mech[" + i + "]/edihospaddtotamt"));
  4589. model.setValue("/root/main/list2/clod[" + row + "]/ediaddtotamt", model.getValue("/root/main/item5/mech[" + i + "]/ediaddtotamt"));
  4590. model.setValue("/root/main/list2/clod[" + row + "]/choiordtotamt", model.getValue("/root/main/item5/mech[" + i + "]/choiordtotamt"));
  4591. model.setValue("/root/main/list2/clod[" + row + "]/totordamt", model.getValue("/root/main/item5/mech[" + i + "]/totordamt"));
  4592. model.setValue("/root/main/list2/clod[" + row + "]/ownbtotamt", model.getValue("/root/main/item5/mech[" + i + "]/ownbtotamt"));
  4593. model.setValue("/root/main/list2/clod[" + row + "]/ordnm", model.getValue("/root/main/item5/mech[" + i + "]/ordnm"));
  4594. model.setValue("/root/main/list2/clod[" + row + "]/estmcdnm", model.getValue("/root/main/item5/mech[" + i + "]/estmcdnm"));
  4595. model.setValue("/root/main/list2/clod[" + row + "]/adjtresncd", model.getValue("/root/main/item5/mech[" + i + "]/adjtresncd"));
  4596. if (model.getValue("/root/main/item5/mech[" + i + "]/updtdd") != "" && model.getValue("/root/main/item5/mech[" + i + "]/updtdd") != "-")
  4597. model.setValue("/root/main/list2/clod[" + row + "]/updtdd", model.getValue("/root/main/item5/mech[" + i + "]/updtdd"));
  4598. model.setValue("/root/main/list2/clod[" + row + "]/druglimitamt", model.getValue("/root/main/item5/mech[" + i + "]/druglimitamt"));
  4599. model.setValue("/root/main/list2/clod[" + row + "]/limitdiffamt", model.getValue("/root/main/item5/mech[" + i + "]/limitdiffamt"));
  4600. model.setValue("/root/main/list2/clod[" + row + "]/edidruglimitamt", model.getValue("/root/main/item5/mech[" + i + "]/edidruglimitamt"));
  4601. model.setValue("/root/main/list2/clod[" + row + "]/edilimitdiffamt", model.getValue("/root/main/item5/mech[" + i + "]/edilimitdiffamt"));
  4602. // 행 추가 후 싱글코드 조회 후에 다음 줄을 자동으로 한줄 추가함.
  4603. if (i < clod.length) {
  4604. grd_clodhist.insertRow(row++, "below", false);
  4605. }
  4606. }
  4607. grd_clodhist.refresh();
  4608. }
  4609. // 입력한 산정의미코드에 해당하는 산정코드를 조회한다.
  4610. function fSrchEstmCd() {
  4611. model.removeNodeset("/root/hidden/sppiz00800/rslt");
  4612. model.makeNode("/root/hidden/sppiz00800/rslt/clcd");
  4613. model.resetInstanceNode("/root/hidden/sppiz00800/cond");
  4614. var row = grd_clodhist.row;
  4615. var estmcls = model.getValue("/root/main/list2/clod[" + row + "]/estmcls");
  4616. var insukindcd = model.getValue("/root/main/item1/clbs/insukindcd");
  4617. if (insukindcd == "") {
  4618. messageBox("심사대상자의 보험유형이", "I004"); // /심사대상자의 보험유형이 없습니다
  4619. return false;
  4620. }
  4621. model.setValue("/root/hidden/sppiz00800/cond/insukind", insukindcd);
  4622. model.setValue("/root/hidden/sppiz00800/cond/estmcls", estmcls);
  4623. model.setValue("/root/hidden/sppiz00800/cond/estmmncd", model.getValue("/root/main/list2/clod[" + row + "]/estmmncd"));
  4624. model.setValue("/root/hidden/sppiz00800/cond/todd", model.getValue("/root/main/list2/clod[" + row + "]/ordtodd"));
  4625. modal("SPPIZ00800", "", "10", "10", "SPPIZ00800", "/root/hidden/sppiz00800/cond", "/root/hidden/cond"); // SPPIZ00800_산정코드조회.xrw
  4626. if (model.getValue("/root/hidden/sppiz00800/rslt/clcd/estmcd")) {
  4627. var estmmncd = model.getValue("/root/hidden/sppiz00800/rslt/clcd/estmmncd");
  4628. var oldestmmncd = model.getValue("/root/main/list2/clod[" + row + "]/estmmncd");
  4629. if (estmmncd == "0000" && oldestmmncd == "") {
  4630. } else {
  4631. if (estmmncd != oldestmmncd) {
  4632. var adjtresncd = model.getValue("/root/main/list2/clod[" + row + "]/adjtresncd");
  4633. var cmbAdjtresncd = "";
  4634. if (adjtresncd == "" || adjtresncd == "-") { // 심사(조정)사유가
  4635. // 입력되지 않은 경우
  4636. cmbAdjtresncd = model.getValue("/root/hidden/list2/clodstat/cmbAdjtresncd");
  4637. if (cmbAdjtresncd) {
  4638. model.setValue("/root/main/list2/clod[" + row + "]/adjtresncd", cmbAdjtresncd);
  4639. } else {
  4640. var newcd = fSetAdjtResnCd();
  4641. if (newcd == "" || newcd == "-") {
  4642. return;
  4643. }
  4644. }
  4645. }
  4646. fSetOrderChangeRowStat(row); // 처방의 수정된 row 상태를 표시한다.
  4647. } else {
  4648. return;
  4649. }
  4650. var oldestmcd = model.getValue("/root/main/list2/clod[" + row + "]/estmcd");
  4651. var oldestmcdnm = model.getValue("/root/main/list2/clod[" + row + "]/estmcdnm");
  4652. model.setValue("/root/main/list2/clod[" + row + "]/estmmncd", estmmncd);
  4653. model.setValue("/root/main/list2/clod[" + row + "]/estmcd", model.getValue("/root/hidden/sppiz00800/rslt/clcd/estmcd"));
  4654. model.setValue("/root/main/list2/clod[" + row + "]/estmcdnm", model.getValue("/root/hidden/sppiz00800/rslt/clcd/estmcdnm"));
  4655. var rslt = fSetEstmCd();
  4656. row = grd_clodhist.row;
  4657. if (rslt == false) {
  4658. model.setValue("/root/main/list2/clod[" + row + "]/estmmncd", oldestmmncd);
  4659. model.setValue("/root/main/list2/clod[" + row + "]/estmcd", oldestmcd);
  4660. model.setValue("/root/main/list2/clod[" + row + "]/estmcdnm", oldestmcdnm);
  4661. } else {
  4662. if (row != -1 && estmmncd == "0000") { // sort 이후에 선택된 row가 있고
  4663. estmmncd = "";
  4664. model.setValue("/root/main/list2/clod[" + row + "]/estmmncd", estmmncd);
  4665. model.setValue("/root/main/list2/clod[" + row + "]/estmcd", "");
  4666. model.setValue("/root/main/list2/clod[" + row + "]/estmcdnm", "");
  4667. }
  4668. }
  4669. }
  4670. }
  4671. if (row == -1) { // sort 이후에 선택된 row가 없음
  4672. return false;
  4673. }
  4674. var estmmncd = model.getValue("/root/main/list2/clod[" + row + "]/estmmncd");
  4675. var msg = "산정분류 [" + estmcls + "] ";
  4676. if (estmmncd) {
  4677. msg += "산정의미코드: " + estmmncd;
  4678. } else {
  4679. model.setValue("/root/hidden/list3/msgspclformat", msg + " 입력된 산정의미코드가 없습니다.");
  4680. return true;
  4681. }
  4682. var estmcd = model.getValue("/root/hidden/sppiz00800/rslt/clcd/estmcd");
  4683. var estmcdnm = model.getValue("/root/hidden/sppiz00800/rslt/clcd/estmcdnm");
  4684. if (estmcd) {
  4685. msg += " / 산정코드: " + estmcd;
  4686. }
  4687. if (estmcdnm) {
  4688. msg += " / 명칭: " + estmcdnm;
  4689. }
  4690. var addmthd = model.getValue("/root/hidden/sppiz00800/rslt/clcd/addmthd");
  4691. if (addmthd) {
  4692. msg += " // 계산방법: [" + addmthd + "] ";
  4693. msg += model.getValue("/root/hidden/sppiz00800/rslt/clcd/pnt");
  4694. msg += " / " + model.getValue("/root/hidden/sppiz00800/rslt/clcd/amt");
  4695. msg += " / " + model.getValue("/root/hidden/sppiz00800/rslt/clcd/rate");
  4696. } else {
  4697. msg += " // 조회된 산정코드가 없습니다.";
  4698. }
  4699. model.setValue("/root/hidden/list3/msgspclformat", msg);
  4700. model.refreshpart("/root/hidden/list3/msgspclformat");
  4701. return true;
  4702. }
  4703. // 수가코드의 estmcls(산정분류)에 따라 선택가능한 5자리의 estmmncd(산정의미), 이에 해당하는 3자리의 estmcd(산정코드)를
  4704. // 조회하고 금액을 재계산한다.
  4705. function fSetEstmCd() {
  4706. var row = grd_clodhist.row;
  4707. model.resetInstanceNode("/root/send/item5/mech"); // submit("TRPID20303")
  4708. // 용
  4709. var ordfromdd = model.getValue("/root/main/list2/clod[" + row + "]/ordfromdd");
  4710. var ordtodd = model.getValue("/root/main/list2/clod[" + row + "]/ordtodd");
  4711. if (ordfromdd == "" || ordtodd == "") {
  4712. messageBox("처방시작일 & 종료일은", "I003"); // /처방시작일 & 종료일은 필수입력입니다.
  4713. return false;
  4714. }
  4715. var snglcalcscorcd = model.getValue("/root/main/list2/clod[" + row + "]/snglcalcscorcd");
  4716. if (snglcalcscorcd == "") {
  4717. messageBox("수가코드가 입력되지", "E007"); // /수가코드가 입력되지 않았습니다.
  4718. return false;
  4719. }
  4720. model.makeValue("/root/send/item5/mech/snglcalcscorcd", snglcalcscorcd);
  4721. model.makeValue("/root/send/item5/mech/insukind", model.getValue("/root/main/item1/clbs/insukindcd"));
  4722. model.makeValue("/root/send/item5/mech/suppkind", model.getValue("/root/main/item1/clbs/suppkindcd"));
  4723. var orddeptcd = model.getValue("/root/main/list2/clod[" + row + "]/orddeptcd");
  4724. if (orddeptcd) {
  4725. model.makeValue("/root/send/item5/mech/orddeptcd", orddeptcd);
  4726. } else {
  4727. model.makeValue("/root/send/item5/mech/orddeptcd", model.getValue("/root/main/item1/clbs/orddeptcd"));
  4728. }
  4729. var orddrid = model.getValue("/root/main/list2/clod[" + row + "]/orddrid");
  4730. if (orddrid) {
  4731. model.makeValue("/root/send/item5/mech/orddrid", orddrid);
  4732. } else {
  4733. model.makeValue("/root/send/item5/mech/orddrid", model.getValue("/root/main/item1/clbs/orddrid"));
  4734. }
  4735. model.makeValue("/root/send/item5/mech/ordfromdd", ordfromdd);
  4736. model.makeValue("/root/send/item5/mech/ordtodd", ordtodd);
  4737. var estmmncd = model.getValue("/root/main/list2/clod[" + row + "]/estmmncd");
  4738. if (estmmncd != "-") {
  4739. model.makeValue("/root/send/item5/mech/estmmncd", estmmncd);
  4740. } else {
  4741. messageBox("산정의미코드가 입력되지", "E007"); // /산정의미코드가 입력되지 않았습니다.
  4742. return false;
  4743. }
  4744. var drugqty = model.getValue("/root/main/list2/clod[" + row + "]/drugqty");
  4745. if (drugqty == "") {
  4746. drugqty = "1";
  4747. }
  4748. model.makeValue("/root/send/item5/mech/drugqty", drugqty);
  4749. var tims = model.getValue("/root/main/list2/clod[" + row + "]/tims");
  4750. if (tims == "") {
  4751. tims = "1";
  4752. }
  4753. model.makeValue("/root/send/item5/mech/tims", tims);
  4754. var dayno = model.getValue("/root/main/list2/clod[" + row + "]/dayno");
  4755. if (dayno == "") {
  4756. dayno = "1";
  4757. }
  4758. model.makeValue("/root/send/item5/mech/dayno", dayno);
  4759. model.makeValue("/root/send/item5/mech/adjtresncd", model.getValue("/root/main/list2/clod[" + row + "]/adjtresncd"));
  4760. model.makeValue("/root/send/item5/mech/undersixageyn", model.getValue("/root/main/item1/clbs/undersixageyn"));
  4761. model.makeValue("/root/send/item5/mech/mechage", model.getValue("/root/main/item1/clbs/mechage"));
  4762. model.makeValue("/root/send/item5/mech/ioflag", model.getValue("/root/main/item1/clbs/ioflag"));
  4763. model.makeValue("/root/send/item5/mech/clamflagcd", model.getValue("/root/main/item1/clbs/clamflagcd"));
  4764. model.makeValue("/root/send/item5/mech/mode", "u");
  4765. submit("TRPID20303");
  4766. var clodSelect = instance1.selectSingleNode("/root/main/item5"); // root/main/item5
  4767. var clod = clodSelect.childNodes; // root/main/item5/mech
  4768. if (clod.length == 1) {
  4769. var mechfromdd = model.getValue("/root/main/item5/mech/mechfromdd");
  4770. var mechtodd = model.getValue("/root/main/item5/mech/mechtodd");
  4771. if (mechfromdd && mechtodd) {
  4772. // 조회한 수가코드의 금액정보를 표시한다.
  4773. fSetCalcScorAmt(clod, "update");
  4774. // 기존에 줄번호가 부여안된 경우
  4775. // 처방 Grid 타이틀을 이용해서 sorting 한 경우 줄번호가 현재 정렬된 순서대로 부여되므로 다시 sort하여
  4776. // 처리한다.
  4777. // 2008-11-24
  4778. // fSetOrderLnNo();
  4779. // 처방 항목 구분 및 선별심사 처방 색깔 구분
  4780. // fSetOrderData();
  4781. } else {
  4782. // 잘못된 산정코드 선택으로 해당 eidcd가 없는 경우
  4783. messageBox("산정코드가 올바르지 않거나 조회된 처방 계산 내역이", "I004"); // /산정코드가 올바르지 않거나 조회된 처방 계산 내역이 없습니다
  4784. return false;
  4785. }
  4786. } else {
  4787. // [20070618] 조회된 결과가 없을 때?
  4788. messageBox("조회된 처방 계산 내역이", "I004"); // /조회된 처방 계산 내역이 없습니다
  4789. return false;
  4790. }
  4791. return true;
  4792. }
  4793. // 수가코드가 없으며 DB에 저장된 내용이 아닌 경우 해당 줄을 삭제한다.
  4794. function fDelEmptyGridOrderData() {
  4795. for ( var i = grd_clodhist.fixedRows; i < grd_clodhist.rows; i++) { // 첫 줄부터
  4796. var rowstatus = grd_clodhist.rowstatus(i);
  4797. var snglcalcscorcd = model.getValue("/root/main/list2/clod[" + i + "]/snglcalcscorcd");
  4798. var ediamt = model.getValue("/root/main/list2/clod[" + i + "]/ediamt");
  4799. if (rowstatus != 4 && snglcalcscorcd && ediamt) { // 4 : delete 삭제 상태가 아니면서 수가코드가 입력되고 금액이 계산된 상태임
  4800. } else if (rowstatus == 1 || rowstatus == 3) { // 수가코드 없으며 DB에 저장된 내용이 아닌 경우
  4801. grd_clodhist.deleteRow(i, false); // 줄을 삭제한다.
  4802. i--;
  4803. }
  4804. }
  4805. grd_clodhist.refresh();
  4806. }
  4807. // 처방의 수정된 row 상태를 표시한다.
  4808. function fSetOrderChangeRowStat(clodrow) {
  4809. var clodstatus = grd_clodhist.rowstatus(clodrow);
  4810. if (clodstatus == 1 || clodstatus == 3) { // 1 : insert, 3 : insert & new
  4811. } else {
  4812. grd_clodhist.rowstatus(clodrow) = 2; // 2 : update
  4813. // 처방 Grid 배경색을 설정한다. - 추가/수정된 row
  4814. fOrderBkColorNew(clodrow);
  4815. }
  4816. }
  4817. // /////////////////////////////////////////////////////////////////////////
  4818. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "상병순서 위로"
  4819. function fDiagSeqUp() {
  4820. var rowstatus = grd_cldihist.rowstatus(grd_cldihist.row);
  4821. if (rowstatus == 4) { // 4 : delete
  4822. return;
  4823. }
  4824. var diagseq = parseInt(model.getValue("/root/main/list1/cldi["+ grd_cldihist.row + "]/diagseq")); // 선택된 줄의 NO
  4825. if (diagseq > 1) { // 첫번째 줄이 아닌 경우
  4826. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/diagseq", --diagseq);
  4827. if (rowstatus == 0 || rowstatus == 2) {
  4828. grd_cldihist.rowstatus(grd_cldihist.row) = 2; // 2 : update
  4829. }
  4830. // 바로 위 상병순서와 중복되는 경우
  4831. var nextrow = grd_cldihist.row - 1;
  4832. var nextdiagseq = model.getValue("/root/main/list1/cldi[" + nextrow + "]/diagseq");
  4833. if (diagseq == nextdiagseq) {
  4834. model.setValue("/root/main/list1/cldi[" + nextrow + "]/diagseq", ++diagseq);
  4835. rowstatus = grd_cldihist.rowstatus(nextrow);
  4836. if (rowstatus == 0 || rowstatus == 2) {
  4837. grd_cldihist.rowstatus(nextrow) = 2; // 2 : update
  4838. }
  4839. }
  4840. // 20100329 MT002 입력체크
  4841. if (model.getValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/diagseq") == "1"
  4842. && model.getValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/vcode") != ""
  4843. && model.getValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/diagkindcd") != "R") {
  4844. fSetDiagMT002(model.getValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/vcode"));
  4845. }
  4846. fSortDiagNo(false);
  4847. }
  4848. }
  4849. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "상병순서 아래로"
  4850. function fDiagSeqDown() {
  4851. var rowstatus = grd_cldihist.rowstatus(grd_cldihist.row);
  4852. if (rowstatus == 4) { // 4 : delete
  4853. return;
  4854. }
  4855. // 삭제 상태가 아닌 마지막 줄을 찾는다.
  4856. var lastRow = grd_cldihist.rows - 1;
  4857. for ( var i = 1; i < grd_cldihist.rows; i++) {
  4858. if (grd_cldihist.rowstatus(i) == 4) { // delete
  4859. lastRow = i - 1;
  4860. i = grd_cldihist.rows;
  4861. }
  4862. }
  4863. var diagseq = parseInt(model.getValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/diagseq")); // 선택된 줄의 NO
  4864. if (diagseq < lastRow) { // 마지막 줄이 아닌 경우
  4865. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/diagseq", ++diagseq);
  4866. if (rowstatus == 0 || rowstatus == 2) {
  4867. grd_cldihist.rowstatus(grd_cldihist.row) = 2; // 2 : update
  4868. }
  4869. // 바로 아래 상병순서와 중복되는 경우
  4870. var nextrow = grd_cldihist.row + 1;
  4871. var nextdiagseq = model.getValue("/root/main/list1/cldi[" + nextrow + "]/diagseq");
  4872. if (diagseq == nextdiagseq) {
  4873. model.setValue("/root/main/list1/cldi[" + nextrow + "]/diagseq", --diagseq);
  4874. rowstatus = grd_cldihist.rowstatus(nextrow);
  4875. if (rowstatus == 0 || rowstatus == 2) {
  4876. grd_cldihist.rowstatus(nextrow) = 2; // 2 : update
  4877. }
  4878. }
  4879. // 20100329 MT002 입력체크
  4880. if (model.getValue("/root/main/list1/cldi[" + nextrow + "]/diagseq") == "1"
  4881. && model.getValue("/root/main/list1/cldi[" + nextrow + "]/vcode") != ""
  4882. && model.getValue("/root/main/list1/cldi[" + nextrow + "]/diagkindcd") != "R") {
  4883. fSetDiagMT002(model.getValue("/root/main/list1/cldi[" + nextrow + "]/vcode"));
  4884. }
  4885. fSortDiagNo(false);
  4886. }
  4887. }
  4888. // "상병순서 위로/아래로" 순서 변경 후에 상병 순서 NO에 따라 sorting 작업
  4889. function fSortDiagNo(isNumbering) {
  4890. var delcnt = 0;
  4891. for ( var i = 1; i < grd_cldihist.rows; i++) {
  4892. grd_cldihist.rowHidden(i) = false;
  4893. }
  4894. if (isNumbering == false) {
  4895. var maxRow = parseInt(grd_cldihist.rows) - 1; // rows는 타이틀부분 부터 개수를 센다
  4896. grd_cldihist.sort(1, grd_cldihist.colRef("diagseq"), maxRow, grd_cldihist.colRef("diagseq")) = "asc"; // 타이틀을 제외한 data 부분의 첫 줄의 row = 1 / col = 3 : no
  4897. // Sort 된 Grid 상의 Data 순서와 Instance Node 상의 Data 순서를 동일하게 맞춰준다.
  4898. grd_cldihist.gridToInstance();
  4899. }
  4900. var cldino = 1;
  4901. for ( var i = 1; i < grd_cldihist.rows; i++) {
  4902. if (grd_cldihist.rowstatus(i) != 4) { // delete
  4903. var diagseq = model.getValue("/root/main/list1/cldi[" + i + "]/diagseq");
  4904. if (grd_cldihist.rowstatus(i) == 0 && diagseq != cldino) {
  4905. grd_cldihist.rowstatus(i) = 2; // 2 : update
  4906. }
  4907. model.setValue("/root/main/list1/cldi[" + i + "]/diagseq", cldino++);
  4908. } else {
  4909. delcnt++;
  4910. }
  4911. }
  4912. var maxRow = parseInt(grd_cldihist.rows) - 1; // rows는 타이틀부분 부터 개수를 센다
  4913. grd_cldihist.sort(1, grd_cldihist.colRef("diagseq"), maxRow, grd_cldihist .colRef("diagseq")) = "asc"; // 타이틀을 제외한 data 부분의 첫 줄의 row = 1 / col = 3 : no
  4914. if (delcnt > 0) {
  4915. grd_cldihist.sort(1, grd_cldihist.colRef("diagseq"), maxRow - delcnt, grd_cldihist.colRef("diagseq")) = "asc"; // 타이틀을 제외한 data 부분의 첫 줄의 row = 1 / col = 3 : no
  4916. }
  4917. // Sort 된 Grid 상의 Data 순서와 Instance Node 상의 Data 순서를 동일하게 맞춰준다.
  4918. grd_cldihist.gridToInstance();
  4919. var rowstatus;
  4920. for ( var i = 1; i < grd_cldihist.rows; i++) {
  4921. rowstatus = grd_cldihist.rowstatus(i);
  4922. if (rowstatus > 3) { // 삭제상태
  4923. grd_cldihist.rowHidden(i) = true;
  4924. } else {
  4925. grd_cldihist.rowHidden(i) = false;
  4926. }
  4927. }
  4928. }
  4929. // 사용자가 입력한 숫자를 기준으로 상병순서 부여
  4930. function fChangeDiagNo() {
  4931. var row = grd_cldihist.row;
  4932. if (grd_cldihist.rowstatus(row) != 1 && grd_cldihist.rowstatus(row) != 3) { // 1 : insert, 3 : insert & new
  4933. grd_cldihist.rowstatus(row) = 2; // 2 : update
  4934. }
  4935. var newseq = model.getValue("/root/main/list1/cldi[" + row + "]/diagseq");
  4936. var oldseq = model.getValue("/root/hidden/list1/cldi/oldseq");
  4937. var vcode = model.getValue("/root/main/list1/cldi[" + row + "]/vcode");
  4938. var diagkindcd = model.getValue("/root/main/list1/cldi[" + row + "]/diagkindcd");
  4939. if (newseq) {
  4940. newseq = parseInt(model.getValue("/root/main/list1/cldi[" + row + "]/diagseq"), 10); // '09' 와 같은 형식으로 입력한 경우 -> 9로 처리
  4941. // 삭제상태가 아닌 중복된 번호가 있는지 체크한다.
  4942. var sameRow = 0;
  4943. for ( var i = 1; i < grd_cldihist.rows; i++) {
  4944. var diagseq = model.getValue("/root/main/list1/cldi[" + i + "]/diagseq");
  4945. if (row != i && diagseq == newseq) {
  4946. sameRow = i;
  4947. i = grd_cldihist.rows;
  4948. }
  4949. }
  4950. if (sameRow > 0) { // 중복된 상병순서의 row가 있음
  4951. if (newseq < oldseq) { // 이전보다 앞번호를 입력한 경우
  4952. for ( var j = sameRow; j < row; j++) {
  4953. var rowstatus = grd_cldihist.rowstatus(j);
  4954. if (rowstatus != 4) {
  4955. var curseq = parseInt(model.getValue("/root/main/list1/cldi[" + j + "]/diagseq"), 10);
  4956. if (rowstatus != 1 && rowstatus != 3) {
  4957. if (model.getValue("/root/main/list1/cldi[" + j + "]/diagseq") != (curseq + 1)) {
  4958. grd_cldihist.rowstatus(j) = 2;
  4959. }
  4960. }
  4961. model.setValue("/root/main/list1/cldi[" + j + "]/diagseq", curseq + 1);
  4962. }
  4963. }
  4964. } else { // 이전보다 뒷번호를 입력한 경우
  4965. for ( var j = row + 1; j <= sameRow; j++) {
  4966. var rowstatus = grd_cldihist.rowstatus(j);
  4967. if (rowstatus != 4) {
  4968. var curseq = parseInt(model.getValue("/root/main/list1/cldi[" + j + "]/diagseq"), 10);
  4969. if (rowstatus != 1 && rowstatus != 3) {
  4970. if (model.getValue("/root/main/list1/cldi[" + j + "]/diagseq") != (curseq - 1)) {
  4971. grd_cldihist.rowstatus(j) = 2;
  4972. }
  4973. }
  4974. model.setValue("/root/main/list1/cldi[" + j + "]/diagseq", curseq - 1);
  4975. }
  4976. }
  4977. }
  4978. fSortDiagNo(false);
  4979. fDiagGridInsertRow("Y", "N"); // 상병마지막 그리드에 한 row 추가 20090918 정승우
  4980. // 20100329 MT002 입력체크
  4981. if (newseq == "1" && oldseq != "1" && vcode != "" && diagkindcd != "R") {
  4982. fSetDiagMT002(vcode);
  4983. }
  4984. } else { // 중복된 상병순서의 row가 없는 경우
  4985. fSortDiagNo(false); // 현재 부여된 순번으로 sort 후
  4986. fDiagGridInsertRow("Y", "N"); // 상병마지막 그리드에 한 20090918 정승우
  4987. }
  4988. } else { // 순번을 삭제한 경우
  4989. model.setValue("/root/main/list1/cldi[" + row + "]/diagseq", oldseq);
  4990. grd_cldihist.rowstatus(row) = model
  4991. .getValue("/root/hidden/list1/cldi/oldrowstat");
  4992. // model.refresh();
  4993. fDiagGridInsertRow("Y", "N"); // 상병마지막 그리드에 한 20090918 정승우
  4994. grd_cldihist.refresh();
  4995. }
  4996. }
  4997. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 삽입"
  4998. function fDiagGridInsertRow(addyn, selectyn) {
  4999. var iInsertRow = 0;
  5000. if (grd_cldihist.rows == 1 || addyn == "Y") {
  5001. iInsertRow = grd_cldihist.row;
  5002. grd_cldihist.addRow(true, false);
  5003. } else {
  5004. iInsertRow = grd_cldihist.row;
  5005. grd_cldihist.insertRow(iInsertRow, "below", true);
  5006. }
  5007. var nowRow = 0;
  5008. nowRow = grd_cldihist.row;
  5009. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/diagkindcd", "C");
  5010. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/diagseq",grd_cldihist.row);
  5011. // 청구과, 진료개시일은 주상병을 기준으로 부여한다.
  5012. var clamdeptcd = model.getValue("/root/main/list1/cldi/clamdeptcd");
  5013. if (clamdeptcd == "") { // 주상병의 진료과가 입력되지 않은 경우 인적사항의 청구과를 입력한다.
  5014. clamdeptcd = model.getValue("/root/main/item1/clbs/clamdeptcd");
  5015. }
  5016. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/clamdeptcd", clamdeptcd);
  5017. var ordfromdd = model.getValue("/root/main/list1/cldi/ordfromdd");
  5018. if (ordfromdd) {
  5019. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/ordfromdd", ordfromdd);
  5020. } else {
  5021. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/ordfromdd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  5022. }
  5023. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/toot", "-");
  5024. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/vcode", ""); // 20100308 추가
  5025. // 상병이력조회에서 호출된 경우가 아니면
  5026. if (selectyn != "Y") {
  5027. fSortDiagNo(true);
  5028. }
  5029. // edit mode 설정위한것임 절대 지우지 말것.
  5030. grd_cldihist.refresh();
  5031. if (addyn != "Y") {
  5032. grd_cldihist.row = nowRow;
  5033. grd_cldihist.col = grd_cldihist.colRef("diagcd");
  5034. // grd_cldihist.dispatch("onentercell");
  5035. fGetGrdCldihistEditCell();
  5036. }
  5037. }
  5038. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가(5줄)"
  5039. function fDiagGridInsertRowMulti() {
  5040. for ( var i = 1; i <= 5; i++) {
  5041. grd_cldihist.insertRow(grd_cldihist.rows - 1, "below", false);
  5042. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/diagkindcd", "C");
  5043. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/diagseq", grd_cldihist.row);
  5044. // 청구과, 진료개시일은 주상병을 기준으로 부여한다.
  5045. var clamdeptcd = model.getValue("/root/main/list1/cldi/clamdeptcd");
  5046. if (clamdeptcd == "") { // 주상병의 진료과가 입력되지 않은 경우 인적사항의 청구과를 입력한다.
  5047. clamdeptcd = model.getValue("/root/main/item1/clbs/clamdeptcd");
  5048. }
  5049. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/clamdeptcd", clamdeptcd);
  5050. var ordfromdd = model.getValue("/root/main/list1/cldi/ordfromdd");
  5051. if (ordfromdd) {
  5052. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/ordfromdd", ordfromdd);
  5053. } else {
  5054. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/ordfromdd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  5055. }
  5056. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/toot", "-");
  5057. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/vcode", ""); // 20100308 추가
  5058. }
  5059. grd_cldihist.refresh();
  5060. fSortDiagNo(true);
  5061. // edit mode 설정위한것임 절대 지우지 말것.
  5062. grd_cldihist.refresh();
  5063. grd_cldihist.row = grd_cldihist.rows - 5;
  5064. grd_cldihist.col = grd_cldihist.colRef("diagcd");
  5065. // grd_cldihist.dispatch("onentercell");
  5066. fGetGrdCldihistEditCell()
  5067. }
  5068. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 삭제"
  5069. function fDiagGridDeleteRow() {
  5070. // 여러 row를 동시에 선택하고 삭제하는 기능을 부여한다.
  5071. for ( var i = 0; i < grd_cldihist.selectedRows; i++) {
  5072. var row = grd_cldihist.selectedrow(i);
  5073. var rowstatus = grd_cldihist.rowstatus(row);
  5074. if (rowstatus == 4) { // 4 : delete
  5075. // return;
  5076. } else if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 :
  5077. // insert & new
  5078. model.resetInstanceNode("/root/main/list1/cldi[" + row + "]/diagcd");
  5079. model.resetInstanceNode("/root/main/list1/cldi[" + row + "]/diagnm");
  5080. model.resetInstanceNode("/root/main/list1/cldi[" + row + "]/diagengnm");
  5081. grd_cldihist.deleteRow(row, false); // 해당 라인을 Grid에서 삭제한다.
  5082. } else { // 0 : new, 2 : update
  5083. model.setValue("/root/main/list1/cldi[" + row + "]/diagseq", "D" + row);
  5084. grd_cldihist.rowstatus(row) = 4; // 4 : delete 상태로 stat를 변경한다.
  5085. }
  5086. }
  5087. fSortDiagNo(true);
  5088. }
  5089. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "삭제 취소"
  5090. function fDiagGridDeleteCancel() {
  5091. // 여러 row를 동시에 선택하고 삭제취소하는 기능을 부여한다.
  5092. for ( var i = 0; i < grd_cldihist.selectedRows; i++) {
  5093. var row = grd_cldihist.selectedrow(i);
  5094. var rowstatus = grd_cldihist.rowstatus(row);
  5095. if (rowstatus == 4) { // 4 : delete
  5096. grd_cldihist.rowstatus(row) = 0 // 2 : update 상태로 stat를 변경한다.
  5097. }
  5098. }
  5099. fSortDiagNo(true);
  5100. }
  5101. // 상병코드를 조회하여 해당 정보를 표시하거나 상병코드 조회용 Popup을 호출한다.
  5102. function fSearchDiageCode() {
  5103. var row = grd_cldihist.row;
  5104. var diagcd = model.getValue("/root/main/list1/cldi[" + row + "]/diagcd");
  5105. if (diagcd) {
  5106. model.removeNodeset("/root/hidden/sppiz00400/rslt");
  5107. model.resetInstanceNode("/root/hidden/sppiz00400/cond");
  5108. model.setValue("/root/hidden/sppiz00400/cond/basedd", getCurrentDate()); // (dateHelper.js) 현재날짜 반환
  5109. model.setValue("/root/hidden/sppiz00400/cond/diagcd", diagcd);
  5110. model.setValue("/root/hidden/sppiz00400/cond/diagnm", "");
  5111. model.setValue("/root/hidden/sppiz00400/cond/selectedrdodiagkind", "1");
  5112. submit("TRPID20306",false); // 입력된 상병코드로 emr.mrtmicd10 테이블을 조회한다.
  5113. var rsltList = instance1
  5114. .selectSingleNode("/root/hidden/sppiz00400/rslt");
  5115. if (rsltList != null && rsltList.length == 0) {
  5116. // 조회된 결과가 1건이면
  5117. fSetDiagCdNm();
  5118. // 다음칸에 자동 포커스 2008-11-26
  5119. row++;
  5120. grd_cldihist.row = row;
  5121. grd_cldihist.col = grd_cldihist.colRef("diagcd");
  5122. // grd_cldihist.dispatch("onentercell");
  5123. fGetGrdCldihistEditCell();
  5124. } else {
  5125. // 조회된 결과가 없거나 여러 건이면
  5126. // 상병코드 조회를 위해 SPPIZ00400_상병코드조회.xrw 를 호출한다.
  5127. fSearchSPPIZ00400();
  5128. if (model.getValue("/root/main/list1/cldi[" + row + "]/diagnm") == "" && model.getValue("/root/main/list1/cldi[" + row + "]/diagengnm") == "") {
  5129. model.setValue("/root/main/list1/cldi[" + row + "]/diagcd", model.getValue("/root/hidden/list1/cldi/olddiagcd"));
  5130. model.setValue("/root/main/list1/cldi[" + row + "]/diagnm", model.getValue("/root/hidden/list1/cldi/olddiagnm"));
  5131. model.setValue("/root/main/list1/cldi[" + row + "]/diagengnm", model.getValue("/root/hidden/list1/cldi/oldengnm"));
  5132. grd_cldihist.rowstatus(row) = model.getValue("/root/hidden/list1/cldi/oldrowstat");
  5133. grd_cldihist.refresh();
  5134. return;
  5135. } else {
  5136. // 다음칸에 자동 포커스 2008-11-26
  5137. row++;
  5138. if (row < grd_cldihist.rows) {
  5139. grd_cldihist.row = row;
  5140. grd_cldihist.col = grd_cldihist.colRef("diagcd");
  5141. // grd_cldihist.dispatch("onentercell");
  5142. fGetGrdCldihistEditCell();
  5143. }
  5144. }
  5145. }
  5146. } else {
  5147. // 상병 Grid에 상병코드를 입력하지 않고 Enter 친 경우
  5148. // 상병코드 조회를 위해 SPPIZ00400_상병코드조회.xrw 를 호출한다.
  5149. fSearchSPPIZ00400();
  5150. // 다음칸에 자동 포커스 2008-11-26
  5151. row++;
  5152. grd_cldihist.row = row;
  5153. grd_cldihist.col = grd_cldihist.colRef("diagcd");
  5154. // grd_cldihist.dispatch("onentercell");
  5155. fGetGrdCldihistEditCell();
  5156. if (model.getValue("/root/main/list1/cldi[" + row + "]/diagcd") == "") {
  5157. model.setValue("/root/main/list1/cldi[" + row + "]/diagcd", model.getValue("/root/hidden/list1/cldi/olddiagcd"));
  5158. model.setValue("/root/main/list1/cldi[" + row + "]/diagnm", model.getValue("/root/hidden/list1/cldi/olddiagnm"));
  5159. model.setValue("/root/main/list1/cldi[" + row + "]/diagengnm", model.getValue("/root/hidden/list1/cldi/oldengnm"));
  5160. grd_cldihist.rowstatus(row) = model.getValue("/root/hidden/list1/cldi/oldrowstat");
  5161. grd_cldihist.refresh();
  5162. return;
  5163. }
  5164. }
  5165. // 삭제 상태였던 상병코드를 조회하여 수정한 경우를 위해 순번을 다시 부여한다.
  5166. // 2008-11-26
  5167. // fSortDiagNo(true);
  5168. }
  5169. // 상병코드 조회를 위해 SPPIZ00400_상병코드조회.xrw 를 호출한다.
  5170. function fSearchSPPIZ00400() {
  5171. model.removeNodeset("/root/hidden/sppiz00400/rslt");
  5172. model.makeNode("/root/hidden/sppiz00400/rslt/diagcd");
  5173. model.makeNode("/root/hidden/sppiz00400/rslt/diaghngnm");
  5174. model.makeNode("/root/hidden/sppiz00400/rslt/diagengnm");
  5175. model.resetInstanceNode("/root/hidden/sppiz00400/cond");
  5176. //model.setValue("/root/hidden/sppiz00400/cond/basedd", getCurrentDate()); // (dateHelper.js) 현재날짜 반환
  5177. model.setValue("/root/hidden/sppiz00400/cond/basedd", model.getValue("/root/main/item1/clbs/ordfromdd")); // 요양개시일 적용(2016.01.26 LEJ)
  5178. model.setValue("/root/hidden/sppiz00400/cond/diagcd", model.getValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/diagcd"));
  5179. model.setValue("/root/hidden/sppiz00400/cond/diagnm", "");
  5180. model.setValue("/root/hidden/sppiz00400/cond/selectedrdodiagkind", "3"); // 사용자가 직접검색하여 입력 할수 있도록 임의의값(3)을넣어줌
  5181. modal("SPPIZ00400", "1", "10", "10", "SPPIZ00400", "/root/hidden/sppiz00400/cond", "/root/init", "", ""); // SPPIZ00400_상병코드조회.xrw
  5182. model.setFocus("grd_clidhist")
  5183. }
  5184. // [SPPIZ00400_상병코드조회.xrw 에서 호출] 상병코드조회 팝업에서 선택한 상병을 상병 그리드에 반영
  5185. function fSetDiagCdNm() {
  5186. var row = grd_cldihist.row;
  5187. if (row > 0) {
  5188. var diagcd = model.getValue("/root/hidden/sppiz00400/rslt/diagcd");
  5189. var diaghngnm = model.getValue("/root/hidden/sppiz00400/rslt/diaghngnm");
  5190. var diagengnm = model.getValue("/root/hidden/sppiz00400/rslt/diagengnm");
  5191. model.setValue("/root/main/list1/cldi[" + row + "]/diagcd", diagcd);
  5192. model.setValue("/root/main/list1/cldi[" + row + "]/diagnm", diaghngnm);
  5193. model.setValue("/root/main/list1/cldi[" + row + "]/diagengnm", diagengnm);
  5194. // 해당 상병의 한글상병명과 영문상병명이 Message 용 output 컨트롤에 표시된다.
  5195. model.setValue("/root/hidden/list3/msgspclformat", "상병코드 - " + diagcd + " / " + diaghngnm + " / " + diagengnm);
  5196. // 20100308 특정내역 조회 추가
  5197. model.setValue("/root/main/list1/cldi[" + row + "]/vcode", fGetDiagVcode(diagcd));
  5198. // 20100329 MT002 입력체크
  5199. if (model.getValue("/root/main/list1/cldi[" + row + "]/diagseq") == "1"
  5200. && model.getValue("/root/main/list1/cldi[" + row + "]/vcode") != ""
  5201. && model.getValue("/root/main/list1/cldi[" + row + "]/diagkindcd") != "R")
  5202. {
  5203. fSetDiagMT002(model.getValue("/root/main/list1/cldi[" + row + "]/vcode"));
  5204. }
  5205. // 20090918 정승우 행추가
  5206. var addval1 = model.getValue("/root/main/list1/diag[" + row + "]/rowstat");
  5207. var addval2 = grd_cldihist.rowstatus(row);
  5208. var rowstatus = grd_cldihist.rowstatus(row);
  5209. if (rowstatus != 1 && rowstatus != 3) { // 1 : insert, 3 : insert & new
  5210. grd_cldihist.rowstatus(row) = 2; // 2 : update
  5211. }
  5212. grd_cldihist.refresh();
  5213. // 4. 빈 row에 대한 입력은 행 추가를 발생시킨다. (그외에는 행추가가 일어나지 않는다.)
  5214. // 20090918 정승우 행추가
  5215. if (addval1 == "" && (addval2 == 1 || addval2 == 3))
  5216. fDiagGridInsertRow("Y", "N");
  5217. }
  5218. }
  5219. // 20100329 김용민 추가 상병row 로 MT002 입력
  5220. // incode null 경우는 주상병의 특정기호 체크, null아니면 바로입력체크
  5221. function fSetDiagMT002(incode) {
  5222. var gridrowstatus = "";
  5223. var existsyn = "N";
  5224. var vcode = "";
  5225. if (incode == "") {
  5226. for ( var i = 1; i < grd_cldihist.rows; i++) {
  5227. if (grd_cldihist.rowHidden(i) == false
  5228. && model.getValue("/root/main/list1/cldi[" + i + "]/diagseq") == "1"
  5229. && model.getValue("/root/main/list1/cldi[" + i + "]/vcode") != ""
  5230. && model.getValue("/root/main/list1/cldi[" + i + "]/diagkindcd") != "R"
  5231. ) {
  5232. vcode = model.getValue("/root/main/list1/cldi[" + i + "]/vcode")
  5233. break;
  5234. }
  5235. }
  5236. } else {
  5237. vcode = incode;
  5238. }
  5239. if (vcode != "") {
  5240. for ( var i = 1; i < grd_clsphist.rows; i++) {
  5241. spclcd = model.getValue("/root/main/list3/clsp[" + i + "]/spclcd");
  5242. spclspec = model.getValue("/root/main/list3/clsp[" + i + "]/spclspec");
  5243. gridrowstatus = grd_clsphist.rowstatus(i);
  5244. if (vcode == spclspec && spclcd == "MT002" && gridrowstatus != 4) {
  5245. existsyn = "Y";
  5246. }
  5247. }
  5248. var suppkindcd = model.getValue("/root/main/item1/clbs/suppkindcd");
  5249. if ( existsyn != "Y" && suppkindcd != "00") {
  5250. var ans = messageBox(vcode + " 상병입니다.\n\n" + "MT002 특정내역을 \n\n" + "입력", "S001");
  5251. if (ans == 6) { // yes
  5252. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에
  5253. // 추가한다.
  5254. grd_clsphist.insertRow(clsprow++, true);
  5255. model.setValue("/root/main/list3/clsp[" + clsprow + "]/unitflag", "M");
  5256. model.setValue("/root/main/list3/clsp[" + clsprow + "]/edilnno", 0);
  5257. model.setValue("/root/main/list3/clsp[" + clsprow + "]/snglcalcscorcd", "-");
  5258. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclcd", "MT002");
  5259. model.setValue("/root/main/list3/clsp[" + clsprow + "]/cdnm", "특정기호");
  5260. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclspec", vcode);
  5261. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclformat", "X(4)");
  5262. model.setValue("/root/main/list3/clsp[" + clsprow + "]/detldesc", "");
  5263. model.setValue("/root/main/list3/clsp[" + clsprow + "]/oldedilnno", "");
  5264. model.setValue("/root/main/list3/clsp[" + clsprow + "]/clodseqno", "");
  5265. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  5266. fSortSpclNo();
  5267. grd_clsphist.refresh();
  5268. }
  5269. }
  5270. }
  5271. }
  5272. // 20100308 김용민 추가 (상병코드로 특정기호 조회)
  5273. function fGetDiagVcode(diagcd) {
  5274. var vcode = "";
  5275. var spclcd = "";
  5276. var spclspec = "";
  5277. var gridrowstatus = "";
  5278. var existsyn = "N";
  5279. model.resetInstanceNode("/root/hidden/getvcode");
  5280. model.setValue("/root/hidden/getvcode/cond/diagcd", diagcd);
  5281. model.setValue("/root/hidden/getvcode/cond/ioflag", model.getValue("/root/main/item1/clbs/ioflag"));
  5282. model.setValue("/root/hidden/getvcode/cond/insukind", model.getValue("/root/main/item1/clbs/insukindcd"));
  5283. model.setValue("/root/hidden/getvcode/cond/suppkind", model.getValue("/root/main/item1/clbs/suppkindcd"));
  5284. model.setValue("/root/hidden/getvcode/cond/ordfromdd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  5285. model.setValue("/root/hidden/getvcode/rslt/vcode", "");
  5286. submit("TRPID20313",false); // 상병코드로 특정기호 조회
  5287. vcode = model.getValue("/root/hidden/getvcode/rslt/vcode")
  5288. return vcode;
  5289. }
  5290. // /////////////////////////////////////////////////////////////////////////
  5291. // 팝업 화면 호출
  5292. function fLinkPopMenu(trgtWindow, cond, send) {
  5293. var trgtManWindow = getChildWindow(trgtWindow);
  5294. if (trgtManWindow == null) {
  5295. var childCnt = window.children.length;
  5296. if (childCnt < 4) {
  5297. open(trgtWindow, "2", "10", "10", trgtWindow, cond, send, "", "");
  5298. } else {
  5299. messageBox("최대 4개의 팝업 화면을 표시할 수 있으니 현재 열려있는 화면을", "I007"); // /최대 4개의 팝업 화면을 표시할 수 있으니 현재 열려있는 화면을 확인하십시오.
  5300. }
  5301. } else {
  5302. activateChild(trgtWindow);
  5303. }
  5304. }
  5305. // 이전명세서 목록에서 선택한 청구키의 명세서를 이미 열려있는 Popup 화면으로 조회시에 호출
  5306. // 처음 Popup화면을 열때는 ev:event="xforms-ready"에서 처리를 하고, 이후에 창이 열려있는 경우 이 메소드를 호출한다.
  5307. function fActivatePreDocuWindow() {
  5308. var rslt = fInitSrchData(); // 화면을 초기화한다.
  5309. if (rslt == false) { // 수정사항 저장이 완료되지 않아 초기화할 수 없는 경우
  5310. return false;
  5311. }
  5312. var openerClamym = opener.model.getValue("/root/hidden/smpid20300/cond/clamym");
  5313. var openerClamdg = opener.model.getValue("/root/hidden/smpid20300/cond/clamdg");
  5314. var openerPid = opener.model.getValue("/root/hidden/smpid20300/cond/pid");
  5315. var openerPidsn = opener.model.getValue("/root/hidden/smpid20300/cond/pidsn");
  5316. if (openerClamym) {
  5317. model.makeValue("/root/send/item1/clbs/clamym", openerClamym);
  5318. model.makeValue("/root/send/item1/clbs/clamdg", openerClamdg);
  5319. model.makeValue("/root/send/item1/clbs/pid", openerPid);
  5320. model.makeValue("/root/send/item1/clbs/pidsn", openerPidsn);
  5321. model.makeValue("/root/send/item1/clbs/ioflag", "I");
  5322. model.makeValue("/root/send/item1/clbs/workflag", opener.model.getValue("/root/hidden/smpid20300/cond/workflag"));
  5323. fCheckAuth(); // 화면 권한을 설정한다.
  5324. submit("TRPID20301");
  5325. // submit("TRPID20301") 사후 심사 대상자를 조회한 이후의 처리를 한다.
  5326. fSetAftJudgTrgtManSrchData();
  5327. // 상병과 처방에서 오른쪽 마우스 Popup 으로 가능한 처리를 하지 못하도록 한다.
  5328. // window.showPopupMenu(false);
  5329. // btn_closepredocupopup.visible = true; // Popup용 닫기 버튼
  5330. } else {
  5331. fCheckAuth(); // 화면 권한을 설정한다.
  5332. }
  5333. }
  5334. // 화면 권한을 설정한다.
  5335. function fCheckAuth() {
  5336. if (isPopup()) { // (common.js) 자신이 팝업인지 아닌지를 리턴한다.
  5337. var sendworkflag = model.getValue("/root/send/item1/clbs/workflag");
  5338. if (sendworkflag != "11" && sendworkflag != "12") {
  5339. document.title = "입원사후심사조회";
  5340. var smpid20300_auth = opener.javascript.getParameter("smpid20300_auth");
  5341. if (smpid20300_auth) {
  5342. model.setValue("properties/auth", smpid20300_auth); // RXP권한
  5343. } else {
  5344. model.setValue("properties/auth", "10100000"); // RXP권한
  5345. }
  5346. btn_srchpid.visible = true;
  5347. btn_pretrgtman.visible = true;
  5348. btn_nexttrgtman.visible = true;
  5349. cmb_adjtresncd.visible = true;
  5350. cmb_docudelresncd.visible = true;
  5351. cmb_abdresncd.visible = true;
  5352. } else {
  5353. if (sendworkflag == "11") {
  5354. document.title = "심사전 명세서 조회";
  5355. model.setValue("properties/auth", "00100000"); // RXP권한
  5356. btn_srchpid.visible = false;
  5357. btn_pretrgtman.visible = false;
  5358. btn_nexttrgtman.visible = false;
  5359. cmb_adjtresncd.visible = false;
  5360. cmb_docudelresncd.visible = false;
  5361. cmb_abdresncd.visible = false;
  5362. } else {
  5363. document.title = "이전 명세서 상병/처방 조회";
  5364. model.setValue("properties/auth", "11100000"); // RXP권한
  5365. btn_srchpid.visible = true;
  5366. btn_pretrgtman.visible = true;
  5367. btn_nexttrgtman.visible = true;
  5368. cmb_adjtresncd.visible = true;
  5369. cmb_docudelresncd.visible = true;
  5370. cmb_abdresncd.visible = true;
  5371. }
  5372. }
  5373. } else {
  5374. model.setValue("properties/auth", "11100000"); // RXP권한
  5375. btn_srchpid.visible = true;
  5376. btn_pretrgtman.visible = true;
  5377. btn_nexttrgtman.visible = true;
  5378. cmb_adjtresncd.visible = true;
  5379. cmb_docudelresncd.visible = true;
  5380. cmb_abdresncd.visible = true;
  5381. }
  5382. var rAuth = !checkAuth("R");
  5383. ipt_pid.disabled = rAuth;
  5384. ipt_chosindayno.disabled = rAuth;
  5385. ipt_medcaredayno.disabled = rAuth;
  5386. cmb_arvpathcd.disabled = rAuth; // 도착경로
  5387. cmb_inpathcd.disabled = rAuth; // 입원경과
  5388. cmb_ordrsltcd.disabled = rAuth; // 진료결과
  5389. ipt_insuno.disabled = rAuth; // 조합기호
  5390. ipt_certno.disabled = rAuth; // 증번호
  5391. setScreenBtnDisabled(); // (common.js) 버튼 권한 속성(_auth)에 따라 화면권한(RXP)을 처리한다.
  5392. }
  5393. // 기존 조회 내역 중 수정 사항이 있는 경우 저장할 것인지를 물어본다.
  5394. function fCheckChangeSave() {
  5395. var initclbs = model.getValue("/root/hidden/item1/initclbs/clbs/clamkey");
  5396. var isChange = false;
  5397. var cldiupdtdata = ""; // 상병 Grid 변경
  5398. if (initclbs) {
  5399. var clbsupdatadata = false;
  5400. if (model.getValue("/root/hidden/item1/initclbs/clbs/suppkindcd") != model.getValue("/root/main/item1/clbs/suppkindcd")) {
  5401. clbsupdatadata = true;
  5402. } else if (model.getValue("/root/hidden/item1/initclbs/clbs/ordfildcd") != model.getValue("/root/main/item1/clbs/ordfildcd")) {
  5403. clbsupdatadata = true;
  5404. } else if (model.getValue("/root/hidden/item1/initclbs/clbs/orddeptcd") != model.getValue("/root/main/item1/clbs/orddeptcd")) {
  5405. clbsupdatadata = true;
  5406. } else if (model.getValue("/root/hidden/item1/initclbs/clbs/orddrid") != model.getValue("/root/main/item1/clbs/orddrid")) {
  5407. clbsupdatadata = true;
  5408. } else if (model.getValue("/root/hidden/item1/initclbs/clbs/patrrgstno") != model.getValue("/root/main/item1/clbs/patrrgstno")) {
  5409. clbsupdatadata = true;
  5410. } else if (model.getValue("/root/hidden/item1/initclbs/clbs/chosindayno") != model.getValue("/root/main/item1/clbs/chosindayno")) {
  5411. clbsupdatadata = true;
  5412. } else if (model.getValue("/root/hidden/item1/initclbs/clbs/medcaredayno") != model.getValue("/root/main/item1/clbs/medcaredayno")) {
  5413. clbsupdatadata = true;
  5414. } else if (model.getValue("/root/hidden/item1/initclbs/clbs/arvpathcd") != model.getValue("/root/main/item1/clbs/arvpathcd")) {
  5415. clbsupdatadata = true;
  5416. } else if (model.getValue("/root/hidden/item1/initclbs/clbs/inpathcd") != model.getValue("/root/main/item1/clbs/inpathcd")) {
  5417. clbsupdatadata = true;
  5418. } else if (model.getValue("/root/hidden/item1/initclbs/clbs/ordrsltcd") != model.getValue("/root/main/item1/clbs/ordrsltcd")) {
  5419. clbsupdatadata = true;
  5420. } else if (model.getValue("/root/hidden/item1/initclbs/clbs/insuno") != model.getValue("/root/main/item1/clbs/insuno")) {
  5421. clbsupdatadata = true;
  5422. } else if (model.getValue("/root/hidden/item1/initclbs/clbs/certno") != model.getValue("/root/main/item1/clbs/certno")) {
  5423. clbsupdatadata = true;
  5424. } else if (model.getValue("/root/hidden/item1/initmemo/memo/judgmemo") != model.getValue("/root/main/item1/memo/judgmemo")) {
  5425. clbsupdatadata = true;
  5426. } else if (model.getValue("/root/hidden/item1/initmemo/memo/edimemo") != model.getValue("/root/main/item1/memo/edimemo")) {
  5427. clbsupdatadata = true;
  5428. }
  5429. if (clbsupdatadata == false) {
  5430. var clodupdtdata = getGridUpdateData(grd_clodhist); // (tfHelper.js) 그리드 업데이트 데이터 반환, 업데이트 정보가 없을경우 "" 반환
  5431. if (clodupdtdata) { // 처방이 수정된 경우
  5432. isChange = true;
  5433. } else {
  5434. // 특정내역
  5435. for ( var i = 1; i < grd_clsphist.rows; i++) {
  5436. var rowstatus = grd_clsphist.rowstatus(i);
  5437. var spclcd = model.getValue("/root/main/list3/clsp[" + i + "]/spclcd");
  5438. var spclspec = model.getValue("/root/main/list3/clsp[" + i + "]/spclspec");
  5439. // 특정코드과 특정내역이 입력되지 않은 경우
  5440. if (rowstatus != 4 && spclcd == "" && spclspec == "") {
  5441. // 줄을 삭제한다.
  5442. grd_clsphist.deleteRow(i, false);
  5443. i--;
  5444. }
  5445. }
  5446. var clspupdtdata = getGridUpdateData(grd_clsphist);
  5447. if (clspupdtdata) {
  5448. isChange = true;
  5449. } else {
  5450. // 상병
  5451. for ( var i = 1; i < grd_cldihist.rows; i++) {
  5452. var rowstatus = grd_cldihist.rowstatus(i);
  5453. var diagcd = model.getValue("/root/main/list1/cldi[" + i + "]/diagcd");
  5454. // 상병코드와 진료개시일이 입력되지 않은 경우
  5455. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  5456. if (diagcd == "") {
  5457. // 줄을 삭제한다.
  5458. grd_cldihist.deleteRow(i, false);
  5459. i--;
  5460. }
  5461. }
  5462. }
  5463. // 상병의 경우 기본적으로 추가된 줄을 삭제한 후 체크한다.
  5464. cldiupdtdata = getGridUpdateData(grd_cldihist); // (tfHelper.js) 그리드 업데이트 데이터 반환, 업데이트 정보가 없을경우 "" 반환
  5465. if (cldiupdtdata) {
  5466. isChange = true;
  5467. }
  5468. }
  5469. }
  5470. } else {
  5471. isChange = true;
  5472. }
  5473. }
  5474. if (isChange) {
  5475. var ans = messageBox("수정사항이 있습니다. 저장", "S001"); // /수정사항이 있습니다. 저장하시려면 예(Yes)\n아니면 아니오(No)
  5476. if (ans == 6) { // 6: yes, 7:no, 2:cancel
  5477. var rslt = fSaveInAftJudg("B"); // 저장
  5478. if (rslt != "true") {
  5479. return false;
  5480. }
  5481. } else if (ans == 2) { // 6: yes, 7:no, 2:cancel
  5482. if (grd_clsphist.rows == 1) {
  5483. fSpclGridInsertRow(); // 특정내역 줄추가
  5484. }
  5485. if (cldiupdtdata) { // 상병 Grid가 변경된 경우
  5486. }
  5487. return false;
  5488. }
  5489. } else {
  5490. }
  5491. return true;
  5492. }
  5493. // 상병, 특정내역, 처방 Group의 컨트롤 크기를 초기화한다.
  5494. function fInitUIControlSize() {
  5495. cap_grptemp.visible = false;
  5496. grp_predoculist.visible = false; // 이전 명세서 목록용 Group
  5497. grp_delclodlist.visible = false; // 처방 휴지통 Group
  5498. grp_delorderlist.visible = false; // 심사변경 목록 Group
  5499. fCutSwitchSize(); // 특정내역 / 심사자메모 / EDI메모 창을 작게 한다.
  5500. case_spclspec.selected = false;
  5501. case_judgrmemo.selected = false;
  5502. case_ediclammemo.selected = false;
  5503. }
  5504. // 처방조회부, 처방 Grid용 Group의 컨트롤 크기를 설정한다.
  5505. function fSetOrderControlSize() {
  5506. if (cap_clod.attribute("top") == df_tp_size_cap_clod) { // 기본상태
  5507. grp_cldihist.attribute("top") = "30"; // 상병창
  5508. grp_clsphist.attribute("top") = "30"; // 특정내역창
  5509. cap_clod.attribute("top") = "188";
  5510. grd_clodhist.attribute("height") = "429";
  5511. } else {
  5512. grp_cldihist.attribute("top") = df_tp_size_grp_cldihist; // 상병창
  5513. grp_clsphist.attribute("top") = df_tp_size_grp_clsphist; // 특정내역창
  5514. cap_clod.attribute("top") = df_tp_size_cap_clod;
  5515. grd_clodhist.attribute("height") = "351";
  5516. }
  5517. var icap_top = parseInt(cap_clod.attribute("top"));
  5518. grp_ordsrch.attribute("top") = icap_top - 55; // 조회부 그룹
  5519. cap_message.attribute("top") = icap_top + 50; // 메세지cap
  5520. opt_msgspclformat.attribute("top") = icap_top + 48; // 메세지
  5521. ln_clodhist.attribute("y1") = icap_top + 15;
  5522. ln_clodhist.attribute("y2") = icap_top + 15;
  5523. grd_clodhist.attribute("top") = icap_top + 20;
  5524. btn_delordlist.attribute("top") = icap_top - 5;
  5525. btn_delordsrch.attribute("top") = icap_top - 5;
  5526. btn_bfjudgdocu.attribute("top") = icap_top - 5;
  5527. btn_oprcp.attribute("top") = icap_top - 5; // 원외처방
  5528. // btn_redu.attribute("top") = icap_top - 5; // 삭감처방 // 20100312
  5529. cmb_adjtresncd.attribute("top") = icap_top - 5; // 심사수정사유 콤보
  5530. cmb_docudelresncd.attribute("top") = icap_top - 5; // 명세서삭제사유 콤보
  5531. cmb_abdresncd.attribute("top") = icap_top - 5; // 반송부제기사유 콤보
  5532. opt_drgcd.attribute("top") = icap_top - 5; // KDRG분류번호
  5533. opt_kstage.attribute("top") = icap_top - 5; // KDRG분류번호
  5534. opt_kdrgnm.attribute("top") = icap_top - 5; // KDRG분류번호
  5535. btn_clodinsert.attribute("top") = icap_top - 5; // 20100209 행추가
  5536. btn_clodcopy.attribute("top") = icap_top - 5; // 20100209 행복사
  5537. btn_cloddelete.attribute("top") = icap_top - 5; // 20100209 행삭제
  5538. }
  5539. // 처방조회부, 처방 Grid용 Group의 컨트롤 크기를 설정한다. (20100408 백업)
  5540. function fSetOrderControlSize_bakup() {
  5541. var otherGrp = true;
  5542. if (cap_clod.attribute("top") == "251") {
  5543. otherGrp = false;
  5544. cap_clod.attribute("top") = "90";
  5545. grd_clodhist.attribute("height") = "527";
  5546. // Message용 Output 크기를 초기화한다.
  5547. cap_message.attribute("left") = "5";
  5548. opt_msgspclformat.attribute("left") = "95";
  5549. opt_msgspclformat.attribute("width") = "1099";
  5550. } else {
  5551. otherGrp = true;
  5552. cap_clod.attribute("top") = "251";
  5553. grd_clodhist.attribute("height") = "351";
  5554. // 상병 Grid 크기를 초기화한다.
  5555. grp_cldihist.attribute("height") = "170";
  5556. grd_cldihist.attribute("height") = "142";
  5557. }
  5558. grp_cldihist.visible = otherGrp;
  5559. grp_clsphist.visible = otherGrp;
  5560. var icap_top = parseInt(cap_clod.attribute("top"));
  5561. ln_clodhist.attribute("y1") = icap_top + 15;
  5562. ln_clodhist.attribute("y2") = icap_top + 15;
  5563. grd_clodhist.attribute("top") = icap_top + 20;
  5564. btn_delordlist.attribute("top") = icap_top - 5;
  5565. btn_delordsrch.attribute("top") = icap_top - 5;
  5566. btn_bfjudgdocu.attribute("top") = icap_top - 5;
  5567. btn_oprcp.attribute("top") = icap_top - 5; // 원외처방
  5568. // btn_redu.attribute("top") = icap_top - 5; // 삭감처방 // 20100312
  5569. cmb_adjtresncd.attribute("top") = icap_top - 5; // 심사수정사유 콤보
  5570. cmb_docudelresncd.attribute("top") = icap_top - 5; // 명세서삭제사유 콤보
  5571. cmb_abdresncd.attribute("top") = icap_top - 5; // 반송부제기사유 콤보
  5572. opt_drgcd.attribute("top") = icap_top - 5; // KDRG분류번호
  5573. opt_kstage.attribute("top") = icap_top - 5; // KDRG분류번호
  5574. opt_kdrgnm.attribute("top") = icap_top - 5; // KDRG분류번호
  5575. grp_ordsrch.attribute("top") = icap_top - 55; // 조회부 그룹
  5576. cap_message.attribute("top") = icap_top + 50;
  5577. opt_msgspclformat.attribute("top") = icap_top + 48;
  5578. btn_clodinsert.attribute("top") = icap_top - 5; // 20100209 행추가
  5579. btn_clodcopy.attribute("top") = icap_top - 5; // 20100209 행복사
  5580. btn_cloddelete.attribute("top") = icap_top - 5; // 20100209 행삭제
  5581. }
  5582. // 이전명세서, 처방휴지통, 삭제처방 Group의 컨트롤 크기를 설정한다.
  5583. function fSetDelOrdPreDocuSize() {
  5584. var icap_top = parseInt(cap_clod.attribute("top"));
  5585. var igrd_hei = parseInt(grd_clodhist.attribute("height"));
  5586. // cap_grptemp.attribute("top") = icap_top;
  5587. // 이전 명세서 목록
  5588. if (grp_predoculist.visible == true) {
  5589. cap_grptemp.text = "이전 명세서 목록";
  5590. cap_grptemp.visible = true;
  5591. grd_clodhist.attribute("width") = "630";
  5592. ln_clodhist.attribute("x2") = "630";
  5593. grp_predoculist.attribute("top") = icap_top + 15;
  5594. grp_predoculist.attribute("height") = igrd_hei + 5;
  5595. grd_predocu.attribute("height") = igrd_hei - 78;
  5596. btn_closepredoculist.attribute("top") = parseInt(grp_predoculist
  5597. .attribute("height")) - 30;
  5598. }
  5599. // 처방 휴지통
  5600. if (grp_delclodlist.visible == true) {
  5601. cap_grptemp.text = "처방 휴지통";
  5602. cap_grptemp.visible = true;
  5603. grd_clodhist.attribute("width") = "630";
  5604. ln_clodhist.attribute("x2") = "630";
  5605. grp_delclodlist.attribute("top") = icap_top + 15;
  5606. grp_delclodlist.attribute("height") = igrd_hei + 5;
  5607. grd_delclod.attribute("height") = igrd_hei - 23;
  5608. btn_closedelclodlist.attribute("top") = parseInt(grp_delclodlist
  5609. .attribute("height")) - 22;
  5610. }
  5611. // 심사변경 목록
  5612. if (grp_delorderlist.visible == true) {
  5613. cap_grptemp.text = "심사변경 목록";
  5614. cap_grptemp.visible = true;
  5615. grd_clodhist.attribute("width") = "630";
  5616. ln_clodhist.attribute("x2") = "630";
  5617. grp_delorderlist.attribute("top") = icap_top + 15;
  5618. grp_delorderlist.attribute("height") = igrd_hei + 5;
  5619. grd_delorder.attribute("height") = igrd_hei - 23;
  5620. btn_closedelorderlist.attribute("top") = parseInt(grp_delorderlist
  5621. .attribute("height")) - 22;
  5622. }
  5623. // 특정내역 / 심사자메모 / EDI메모 창이 확대된 경우 겹쳐져 보이므로 창을 작게 한다.
  5624. fCutSwitchSize();
  5625. }
  5626. // 이전명세서 목록 조회
  5627. function fSrchPreDocuList() {
  5628. var clamym = model.getValue("/root/main/item1/clbs/clamym");
  5629. if (clamym) { // 조회된 심사대상자가 있음
  5630. // model.resetInstanceNode("/root/send/list4");
  5631. var refterm = model.getValue("/root/send/list4/refterm");
  5632. if (refterm == "0") {
  5633. var fromdd = model.getValue("/root/send/list4/fromdd");
  5634. var todd = model.getValue("/root/send/list4/todd");
  5635. if (isValidDateTime(fromdd)) { // (dateHelper.js) 유효한 날짜, 시간 인지 점검
  5636. if (isValidDateTime(todd)) {
  5637. var dateDif = getDateInterval(fromdd, todd); // (dateHelper.js) 두 일자사이의 차를 일단위로 반환
  5638. if (dateDif < 0) {
  5639. messageBox("검색 시작일자가 종료일자 보다 이후", "E008"); // /검색 시작일자가 종료일자 보다 이후 입니다.
  5640. return;
  5641. }
  5642. } else {
  5643. return;
  5644. }
  5645. } else {
  5646. return;
  5647. }
  5648. }
  5649. model.setValue("/root/send/list4/pid", model.getValue("/root/main/item1/clbs/pid"));
  5650. model.setValue("/root/send/list4/clamym", model.getValue("/root/main/item1/clbs/clamym"));
  5651. if (model.getValue("/root/send/list4/allordfild") != "Y") {
  5652. model.setValue("/root/send/list4/ordfildcd", model.getValue("/root/main/item1/clbs/ordfildcd"));
  5653. } else {
  5654. model.resetInstanceNode("/root/send/list4/ordfildcd");
  5655. }
  5656. submit("TRPID20304");
  5657. grd_predocu.rebuildStyle();
  5658. for ( var i = 1; i < grd_predocu.rows; i++) {
  5659. if (clamym == model.getValue("/root/main/list4/clbs[" + i + "]/clamym")) {
  5660. grd_predocu.rowStyle(i, "data", "background-color") = "#4d4d4d"; // common.css (input)
  5661. grd_predocu.rowStyle(i, "data", "background-image") = "../../../com/commonweb/images/grid_bg.gif";
  5662. grd_predocu.rowStyle(i, "data", "background-repeat") = "repeat-x";
  5663. i = grd_predocu.rows;
  5664. }
  5665. }
  5666. }
  5667. }
  5668. // /////////////////////////////////////////////////////////////////////////
  5669. // 등록번호를 입력하고 Enter 키를 누르면
  5670. // 입원사후심사대상자 조회 Popup으로 등록번호를 전달하고 해당 환자를 조회하여 보여준다.
  5671. function fGetInAftJudgTrgtManPidSrch() {
  5672. var trgtManWindow = getChildWindow("SMPID20200"); // SMPID20200_입원사후심사대상자조회.xrw
  5673. var patunitsrch1 = model.getValue("/root/main/item1/clbs/pid");
  5674. if (trgtManWindow == null) {
  5675. // pid가 변경되었는데 조회창을 여는 경우 기존 조회된 data 초기화를 위해 저장해둔다.
  5676. model.setValue("/root/hidden/smpid20200/cond/pid", patunitsrch1);
  5677. model.setValue("/root/hidden/smpid20200/rslt/oldPid", patunitsrch1);
  5678. open("SMPID20200", "2", "10", "10", "SMPID20200", "/root/hidden/smpid20200/cond/pid", "/root/send/item1/patunitsrch1", "", ""); // SMPID20200_입원사후심사대상자조회.xrw
  5679. } else {
  5680. var oldPid = model.getValue("/root/hidden/smpid20200/rslt/oldPid");
  5681. model.setValue("/root/hidden/smpid20200/cond/pid", patunitsrch1);
  5682. model.setValue("/root/hidden/smpid20200/rslt/oldPid", patunitsrch1);
  5683. /*
  5684. * // [2007.03.28. 작성 2] if (oldPid == patunitsrch1) {
  5685. * activateChild("SMPID20200"); } else { // 저장 후 oldPid가 ""로 설정되고 조회 시에
  5686. * 처리되지 않는 문제있음 fInitSrchData();
  5687. * model.setValue("/root/main/item1/clbs/pid", patunitsrch1);
  5688. * trgtManWindow.javascript.fSetPatUnitSrch1pidSrch(); }
  5689. */
  5690. // [2007.03.28. 작성 1]
  5691. if (oldPid == "") {
  5692. if (patunitsrch1 == "") { // 환자번호 입력 없이 대상자를 조회하는 경우
  5693. trgtManWindow.grp_judgmemo.visible = false; // 대상자 Grid의 메모 필드의 Btn 클릭시 보여지는 메모 저장용 Group을 감춘다.
  5694. activateChild("SMPID20200");
  5695. } else { // 기존 심사대상자는 없는데 pid가 입력된 경우 또는 변경된 정보를 저장 후에 조회하는 경우
  5696. trgtManWindow.javascript.fSetPatUnitSrch1pidSrch();
  5697. }
  5698. } else {
  5699. if (patunitsrch1 != oldPid) { // 조회된 pid가 변경된 상태에서 조회하는 경우
  5700. model.setValue("/root/main/item1/clbs/pid", patunitsrch1);
  5701. model.setValue("/root/hidden/smpid20200/cond/pid", patunitsrch1);
  5702. trgtManWindow.javascript.fSetPatUnitSrch1pidSrch();
  5703. } else { // 기존 심사대상자는 있는데 pid가 변경되지 않은 경우
  5704. trgtManWindow.grp_judgmemo.visible = false; // 대상자 Grid의 메모 필드의 Btn 클릭시 보여지는 메모 저장용 Group을 감춘다.
  5705. activateChild("SMPID20200");
  5706. }
  5707. }
  5708. // model.refresh();
  5709. }
  5710. }
  5711. // 선별심사가 아닌 경우 심사대상자 조회 화면에서 다음 대상자를 찾는다.
  5712. function fSrchNextJudgTrgtManCLBS(trgtManWindow, selectedRow, judgendyn) { // selectedRow: 현재 선택된 row
  5713. var judgendcheck;
  5714. var nextclamkey = "";
  5715. var trgtmanclamkey = trgtManWindow.model.getValue("/root/main/list1/clbs[" + selectedRow + "]/clamkey");
  5716. // 현재 row 이후의 대상자 중 미심사 상태
  5717. for ( var i = parseInt(selectedRow, 10) + 1; i < trgtManWindow.grd_clbsmast.rows; i++) {
  5718. if (trgtmanclamkey != trgtManWindow.model
  5719. .getValue("/root/main/list1/clbs[" + i + "]/clamkey")) {
  5720. // 완료,보류일경우는 바로 다음 대상자를 조회하고 나머지는 미심사인 다음 대상자를 조회한다.
  5721. if (judgendyn == "C" || judgendyn == "N") {
  5722. judgendcheck = trgtManWindow.model.getValue("/root/main/list1/clbs[" + i + "]/judgendyn");
  5723. } else {
  5724. judgendcheck = "A";
  5725. }
  5726. if (trgtManWindow.model.getValue("/root/main/list1/clbs[" + i + "]/judgendyn") == judgendcheck) { // 심사완료여부(P0151) A:미심사
  5727. model.setValue("/root/hidden/smpid20200/rslt/selectedRow", i);
  5728. trgtManWindow.grd_clbsmast.row = i;
  5729. nextclamkey = trgtManWindow.model.getValue("/root/main/list1/clbs[" + i + "]/clamkey");
  5730. trgtManWindow.javascript.fSetWorkStatCnt(); // 총건수와 기타 심사상태에 따른 cnt를 표시한다.
  5731. trgtManWindow.model.refresh();
  5732. return nextclamkey;
  5733. }
  5734. }
  5735. }
  5736. trgtManWindow.model.refresh();
  5737. return nextclamkey;
  5738. }
  5739. function fSrchNextJudgTrgtManSPEC(trgtManWindow, selectedRow, judgendyn) { // selectedRow: 현재 선택된 row / judgendyn: 심사완료여부
  5740. var judgendcheck;
  5741. var nextclamkey = "";
  5742. var trgtmanclamkey = trgtManWindow.model.getValue("/root/main/list1/clbs[" + selectedRow + "]/clamkey");
  5743. var userid = getUserId(); // (common.js) 현재 로그인한 사용자 번호(ID)
  5744. if (userid) {
  5745. } else {
  5746. userid = "12345678";
  5747. }
  5748. for ( var i = 1; i < trgtManWindow.grd_clbsmast.rows; i++) {
  5749. if (trgtmanclamkey == trgtManWindow.model.getValue("/root/main/list1/clbs[" + i + "]/clamkey")) {
  5750. trgtManWindow.model.setValue("/root/main/list1/clbs[" + i + "]/judgendyn", judgendyn);
  5751. trgtManWindow.model.setValue("/root/main/list1/clbs[" + i + "]/lastupdtrid", userid);
  5752. } else if (i > selectedRow && nextclamkey == "") { // 현재 row 이후의 대상자 중 미심사 상태
  5753. // 완료,보류일경우는 바로 다음 대상자를 조회하고 나머지는 미심사인 다음 대상자를 조회한다.
  5754. if (judgendyn == "C" || judgendyn == "N") {
  5755. judgendcheck = trgtManWindow.model.getValue("/root/main/list1/clbs[" + i + "]/judgendyn");
  5756. } else {
  5757. judgendcheck = "A";
  5758. }
  5759. if (trgtManWindow.model.getValue("/root/main/list1/clbs[" + i + "]/judgendyn") == judgendcheck) { // 심사완료여부(P0151) A:미심사
  5760. model.setValue("/root/hidden/smpid20200/rslt/selectedRow", i);
  5761. trgtManWindow.grd_clbsmast.row = i;
  5762. nextclamkey = trgtManWindow.model.getValue("/root/main/list1/clbs[" + i + "]/clamkey");
  5763. }
  5764. }
  5765. }
  5766. trgtManWindow.javascript.fSetWorkStatCnt(); // 총건수와 기타 심사상태에 따른 cnt를 표시한다.
  5767. trgtManWindow.model.refresh();
  5768. return nextclamkey;
  5769. }
  5770. // "완료"~"삭제" 처리 후 다음 심사대상자를 조회한다.
  5771. function fGetNextAftJudgTrgtMan(judgendyn) {
  5772. // 상병그리드에서 editmode인상태에서 F7 단축키 누렀을 경우 에러발생방지 위함. 절대 지우지 말것.
  5773. model.setFocus("grd_clodhist");
  5774. var clamym = model.getValue("/root/main/item1/clbs/clamym");
  5775. var clamdg = model.getValue("/root/main/item1/clbs/clamdg");
  5776. var pid = model.getValue("/root/main/item1/clbs/pid");
  5777. var pidsn = model.getValue("/root/main/item1/clbs/pidsn");
  5778. if (pid) {
  5779. var rslt = fSaveInAftJudg(judgendyn);
  5780. if (rslt == null || rslt == "") { // 저장이 완료되지 않은 경우
  5781. return;
  5782. } else {
  5783. if (rslt == "false") { // 변경된 데이터가 없는 경우
  5784. // "심사상태" 설정한다.
  5785. model.removeNodeset("/root/send/item4");
  5786. model.makeValue("/root/send/item4/endclbs/clamym", clamym);
  5787. model.makeValue("/root/send/item4/endclbs/clamdg", clamdg);
  5788. model.makeValue("/root/send/item4/endclbs/pid", pid);
  5789. model.makeValue("/root/send/item4/endclbs/pidsn", pidsn);
  5790. model.makeValue("/root/send/item4/endclbs/judgendyn", judgendyn);
  5791. // 기존에 심사중이었던 경우
  5792. submit("TXPID20302");
  5793. fSetJudgSaveState(judgendyn); // 대상자조회 심사완료여부 (P0151)
  5794. model.setValue("/root/main/item1/clbs/judgendyn", judgendyn);
  5795. model.refreshpart("/root/main/item1/clbs/judgendyn")
  5796. }
  5797. var userid = getUserId(); // (common.js) 현재 로그인한 사용자 번호(ID)
  5798. if (userid) {
  5799. } else {
  5800. userid = "12345678";
  5801. }
  5802. model.setValue("/root/main/item1/clbs/lastupdtrid", userid);
  5803. model.setValue("/root/main/item1/clbs/judgendyn", judgendyn);
  5804. }
  5805. // 다음 심사대상자로 넘어간다.
  5806. var trgtManWindow = getChildWindow("SMPID20200"); // SMPID20200_입원사후심사대상자조회.xrw
  5807. if (trgtManWindow != null) {
  5808. var selectedRow = model.getValue("/root/hidden/smpid20200/rslt/selectedRow");
  5809. var reloadyn = trgtManWindow.instance1.getXPathString("/root/temp/reloadyn");
  5810. var patunitsrch1 = trgtManWindow.instance1.getXPathString("/root/send/item1/patunitsrch1");
  5811. if (reloadyn == "Y" && patunitsrch1.length == 0) {
  5812. trgtManWindow.javascript.fGetInAftJudgTrgtManList();
  5813. selectedRow = parseInt(selectedRow) - 1;
  5814. }
  5815. if (selectedRow) {
  5816. var trgtmanlist = trgtManWindow.instance1.selectSingleNode("/root/main/list1/clbs");
  5817. if (trgtmanlist == null) { // 조회된 대상자 목록이 없는 경우
  5818. messageBox("조회된 심사대상자 목록이", "I004"); // /조회된 심사대상자 목록이 없습니다.
  5819. } else {
  5820. trgtmanlist = trgtManWindow.instance1.selectSingleNode("/root/main/list1");
  5821. var maxRow = trgtmanlist.childNodes.length;
  5822. var nextclamkey = "";
  5823. if (selectedRow < maxRow) {
  5824. var srchmode = trgtManWindow.model.getValue("/root/hidden/clbs/srchmode");
  5825. if (srchmode == "specclbs") { // 선별심사 모드인 경우
  5826. nextclamkey = fSrchNextJudgTrgtManSPEC(trgtManWindow, selectedRow, judgendyn);
  5827. } else {
  5828. trgtManWindow.model.setValue("/root/main/list1/clbs[" + selectedRow + "]/judgendyn", judgendyn);
  5829. trgtManWindow.model.setValue("/root/main/list1/clbs[" + selectedRow + "]/lastupdtrid", userid);
  5830. nextclamkey = fSrchNextJudgTrgtManCLBS(trgtManWindow, selectedRow);
  5831. }
  5832. if (nextclamkey) {
  5833. var irow = model.getValue("/root/hidden/smpid20200/rslt/selectedRow");
  5834. var clamym = trgtManWindow.model.getValue("/root/main/list1/clbs[" + irow + "]/clamym");
  5835. var clamdg = trgtManWindow.model.getValue("/root/main/list1/clbs[" + irow + "]/clamdg");
  5836. var pid = trgtManWindow.model.getValue("/root/main/list1/clbs[" + irow + "]/pid");
  5837. var pidsn = trgtManWindow.model.getValue("/root/main/list1/clbs[" + irow + "]/pidsn");
  5838. var gridcutprcpyn = trgtManWindow.model.getValue("/root/send/item1/cutprcpsel");
  5839. model.setValue("/root/hidden/smpid20200/rslt/clamym", clamym);
  5840. model.setValue("/root/hidden/smpid20200/rslt/clamdg", clamdg);
  5841. model.setValue("/root/hidden/smpid20200/rslt/pid", pid);
  5842. model.setValue("/root/hidden/smpid20200/rslt/pidsn", pidsn);
  5843. model.setValue("/root/hidden/smpid20200/rslt/cutprcpyn", gridcutprcpyn);
  5844. fGetInAftJudgMngt();
  5845. trgtManWindow.javascript.setPopupRefresh(pid);
  5846. return;
  5847. } else {
  5848. messageBox("다음 심사 대상자의 정보가", "I004"); // /다음 심사 대상자의 정보가 없습니다.
  5849. }
  5850. } else {
  5851. trgtManWindow.model.setValue("/root/main/list1/clbs[" + selectedRow + "]/judgendyn", judgendyn);
  5852. trgtManWindow.model.setValue("/root/main/list1/clbs[" + selectedRow + "]/lastupdtrid", userid);
  5853. trgtManWindow.javascript.fSetWorkStatCnt(); // 총건수와 기타 심사상태에 따른 cnt를 표시한다.
  5854. trgtManWindow.model.refresh();
  5855. // 마지막 줄인 경우 이후 대상자가 없다.
  5856. messageBox("조회된 마지막 심사대상자 입니다. 이후 심사 대상자가", "I004"); // /조회된 마지막 심사대상자 입니다. 이후 심사 대상자가 없습니다.
  5857. }
  5858. }
  5859. } else {
  5860. messageBox("화면이 변경되었으므로 다음 대상자를 다시", "C002"); // /화면이 변경되었으므로 다음 대상자를 다시 선택하십시오.
  5861. }
  5862. return;
  5863. }
  5864. }
  5865. }
  5866. // 처방 Grid 필터용 조회조건을 초기화한다.
  5867. function fInitOrderFilter() {
  5868. // 처방Grid용 조회부의 Radio 초기값을 "전체"로 설정한다.
  5869. model.setValue("/root/hidden/list2/clodsrch/selectedRdoMatrAct", "-");
  5870. model.setValue("/root/hidden/list2/clodsrch/selectedRdoPay", "0");
  5871. model.setValue("/root/hidden/list2/clodsrch/selectedRdoItem", "-");
  5872. model.resetInstanceNode("/root/hidden/list2/clodsrch/inpCalcScorCd");
  5873. model.resetInstanceNode("/root/hidden/list2/clodsrch/inpEDICd");
  5874. // model.refresh();
  5875. rdo_matractflag.refresh();
  5876. rdo_payflag.refresh();
  5877. ipt_calcscorcd.refresh();
  5878. rdo_item1.refresh();
  5879. ipt_edicd.refresh();
  5880. }
  5881. // /////////////////////////////////////////////////////////////////////////
  5882. // 보조유형 및 요율 combo(cmb_supprate)의 선택 값이 변경된 경우 각각을 해당 output에 설정한다.
  5883. function fSetPatSuppRate() {
  5884. // 보조유형ID과 요율%로 combo 의 value
  5885. // 보조유형NM과 요율%로 combo 의 label
  5886. var patsupprate = model.getValue("/root/hidden/item1/clbs/patsupprate");
  5887. var suppkindcd = patsupprate.substr(0, 2);
  5888. var payownbrate = patsupprate.substr(3, patsupprate.length);
  5889. model.setValue("/root/main/item1/clbs/suppkindcd", suppkindcd);
  5890. model.setValue("/root/main/item1/clbs/payownbrate", payownbrate);
  5891. model.setValue("/root/main/item1/clbs/recalcyn", "Y"); // 저장 시에 재계산할지 여부를
  5892. // 설정함
  5893. opt_payownbrate.refresh();
  5894. opt_suppkind.refresh();
  5895. if (suppkindcd != "00") {
  5896. opt_suppkind.attribute("background-color") = "#f7a08b"; // class="color_6" 다홍색"#cece9c";
  5897. opt_payownbrate.attribute("background-color") = "#f7a08b"; // class="color_6" 다홍색"#cece9c";
  5898. } else {
  5899. opt_suppkind.attribute("background-color") = "#f2f2f2"; // output_fix 클래스의 background-color
  5900. opt_payownbrate.attribute("background-color") = "#f2f2f2"; // output_fix 클래스의 background-color
  5901. }
  5902. }
  5903. // 조합기호(ipt_insuno)를 입력하면 해당 조합명칭과 보험회사코드를 조회한다.
  5904. function fGetInAftJudgTrgtManInsunm() {
  5905. model.makeValue("/root/send/item2/incd/insucd", model.getValue("/root/main/item1/clbs/insuno"));
  5906. model.makeValue("/root/send/item2/incd/ordfromdd", model.getValue("/root/main/item1/clbs/ordfromdd"));
  5907. submit("TRPID20302");
  5908. var insucdnm = model.getValue("/root/main/item2/incd/insucdnm");
  5909. var insucmno = model.getValue("/root/main/item2/incd/insucmno");
  5910. if (insucdnm) {
  5911. model.setValue("/root/main/item1/clbs/insunm", insucdnm);
  5912. model.setValue("/root/main/item1/clbs/insucmno", insucmno);
  5913. model.refreshpart("/root/main/item1/clbs/insunm");
  5914. model.refreshpart("/root/main/item1/clbs/insucmno");
  5915. } else {
  5916. model.resetInstanceNode("/root/main/item1/clbs/insunm");
  5917. model.resetInstanceNode("/root/main/item1/clbs/insucmno");
  5918. model.refreshpart("/root/main/item1/clbs/insunm");
  5919. model.refreshpart("/root/main/item1/clbs/insucmno");
  5920. ipt_insuno.dispatch("onbuttonclick");
  5921. }
  5922. }
  5923. // [2007.04.23] function 작성: (통합팀) 김선희 대리님
  5924. // 주민번호를 이용한 나이 계산의 경우, 유효하지 않은 주민번호에 대해서는 -1 값만을 반환하므로,
  5925. // 주민번호 앞자리를 이용해서 yyyymmdd 형태로 만든다.
  5926. function getBirthDate(pResidentNo) {
  5927. if (isNaN(pResidentNo))
  5928. return -1;
  5929. gender = pResidentNo.substr(6, 1);
  5930. if (gender == "3" || gender == "4" || gender == "7" || gender == "8") {
  5931. regYY = "20";
  5932. } else if (gender == "0" || gender == "9") {
  5933. regYY = "18";
  5934. } else {
  5935. regYY = "19";
  5936. }
  5937. var rtn = regYY + pResidentNo.substr(0, 6);
  5938. return rtn;
  5939. }
  5940. // /////////////////////////////////////////////////////////////////////////
  5941. // 특정 환자에 대해 그동안 작성된 심사자메모, 청구메모 내역을 조회한다.
  5942. function fGetMemoHistList() {
  5943. var clamkey = model.getValue("/root/main/item1/clbs/clamkey");
  5944. if (clamkey) { // 조회된 심사대상자가 있고
  5945. model.removeNodeset("/root/hidden/sppiz00300/rslt");
  5946. // SPPIZ00300_메모이력조회.xrw 에서 /root/hidden/sppiz00300 로 결과값을 전달하므로 cond
  5947. // 노드를 makeValue 해야함
  5948. model.makeValue("/root/hidden/sppiz00300/cond/pid", model.getValue("/root/main/item1/clbs/pid"));
  5949. model.makeValue("/root/hidden/sppiz00300/cond/orddeptcd", model.getValue("/root/main/item1/clbs/orddeptcd"));
  5950. model.makeValue("/root/hidden/sppiz00300/cond/ioflag", "I");
  5951. model.makeValue("/root/hidden/sppiz00300/cond/refterm", "2");
  5952. model.makeValue("/root/hidden/sppiz00300/cond/anofildinclyn", "Y");
  5953. model.makeValue("/root/hidden/sppiz00300/cond/fromdd", "");
  5954. model.makeValue("/root/hidden/sppiz00300/cond/todd", "");
  5955. model.makeValue("/root/hidden/sppiz00300/cond/clamkey", clamkey);
  5956. modal("SPPIZ00300", "1", "10", "10", "SPPIZ00300","/root/hidden/sppiz00300/cond", "/root/init", "", ""); // SPPIZ00300_메모이력조회.xrw
  5957. var SelectMemo = instance1.selectSingleNode("/root/hidden/sppiz00300/rslt");
  5958. if (SelectMemo != null) {
  5959. var choimemo = model.getValue("/root/hidden/sppiz00300/rslt/choimemo").getTrim(); // (stringHelper.js) 문자열 앞뒤에 있는 공백 제거
  5960. var choiedicd = model.getValue("/root/hidden/sppiz00300/rslt/edicd");
  5961. if (choimemo) {
  5962. model.setValue("/root/hidden/sppiz00300/rslt/choimemo", choimemo);
  5963. var destRef = model.getValue("/root/hidden/sppiz00300/rslt/destRef");
  5964. if (destRef == "judgmemo") {
  5965. // 심사메모로 전달
  5966. var judgmemo = model.getValue("/root/main/item1/memo/judgmemo");
  5967. if (judgmemo) { // 기존 심사메모가 공백이 아닌 경우 선택된 메모를 심사화면 메모 뒤에 덧붙인다.
  5968. model.setValue("/root/main/item1/memo/judgmemo", judgmemo + " \n" + choimemo);
  5969. } else {
  5970. if (choiedicd) { // 처방별 메모를 전달하는 경우임
  5971. // 동일한 EDI 코드가 있을 경우만 추가
  5972. for ( var j = 1; j < grd_clodhist.rows; j++) {
  5973. var clodedicd = model.getValue("/root/main/list2/clod[" + j + "]/basecd");
  5974. if (choiedicd == clodedicd) {
  5975. model.setValue("/root/main/item1/memo/judgmemo", choimemo);
  5976. j = grd_clodhist.rows;
  5977. }
  5978. }
  5979. } else {
  5980. model.setValue("/root/main/item1/memo/judgmemo", choimemo);
  5981. }
  5982. }
  5983. tar_judgrmemo.refresh();
  5984. model.toggle("case_judgrmemo"); // 해당 tab 으로 토글시킨다.
  5985. } else if (destRef == "edimemo") {
  5986. // 청구메모로 전달
  5987. var edimemo = model
  5988. .getValue("/root/main/item1/memo/edimemo");
  5989. if (edimemo) { // 기존 청구메모가 공백이 아닌 경우 선택된 메모를 심사화면 메모 뒤에 덧붙인다.
  5990. model.setValue("/root/main/item1/memo/edimemo", edimemo + " \n" + choimemo);
  5991. } else {
  5992. if (choiedicd) { // 처방별 메모를 전달하는 경우임
  5993. // 동일한 EDI 코드가 있을 경우 * 표시
  5994. for ( var j = 1; j < grd_clodhist.rows; j++) {
  5995. var clodedicd = model.getValue("/root/main/list2/clod[" + j + "]/basecd");
  5996. if (choiedicd == clodedicd) {
  5997. model.setValue("/root/main/item1/memo/edimemo", choimemo);
  5998. j = grd_clodhist.rows;
  5999. }
  6000. }
  6001. } else {
  6002. model.setValue("/root/main/item1/memo/edimemo",
  6003. choimemo);
  6004. }
  6005. }
  6006. tar_ediclammemo.refresh();
  6007. model.toggle("case_ediclammemo"); // 해당 tab 으로 토글시킨다.
  6008. } else if (destRef == "prcpmemo") {
  6009. // 처방별 주석로 전달
  6010. // 동일한 EDI 코드가 있을 경우 * 표시
  6011. for ( var i = 1; i < grd_clodhist.rows; i++) {
  6012. var snglcalcscorcd = model.getValue("/root/main/list2/clod[" + i + "]/snglcalcscorcd");
  6013. var edicd = model.getValue("/root/main/list2/clod[" + i + "]/basecd");
  6014. var seqno = model.getValue("/root/main/list2/clod[" + i + "]/seqno");
  6015. var edilnno = model.getValue("/root/main/list2/clod[" + i + "]/edilnno");
  6016. if (choiedicd == edicd) {
  6017. var lnunitspclspecyn = model.getValue("/root/main/list2/clod[" + i + "]/lnunitspclspecyn");
  6018. var rowNum = "";
  6019. if (lnunitspclspecyn) {
  6020. for ( var j = 1; j < grd_clsphist.rows; j++) {
  6021. if (grd_clsphist.rowstatus(j) != 4) {
  6022. var clodseqno = model.getValue("/root/main/list3/clsp[" + j + "]/clodseqno");
  6023. if (clodseqno == seqno) {
  6024. if (model.getValue("/root/main/list3/clsp[" + j + "]/spclcd") == "JX999") {
  6025. rowNum = j;
  6026. j = grd_clsphist.rows;
  6027. }
  6028. }
  6029. }
  6030. }
  6031. if (rowNum) {
  6032. var ans = messageBox(edilnno + "번 줄에 등록된 메모가 있어 기존 내역에 덧붙이거나 삭제후 추가할 수 있습니다.\n덧붙여 추가", "S001");
  6033. // /***번 줄에 등록된 메모가 있어 기존 내역에 덧붙이거나 삭제후 추가할
  6034. // 수 있습니다.\n덧붙여 추가 하시려면 예(Yes)\n아니면 아니오(No)
  6035. if (ans == 6) { // 6: yes
  6036. var spclspec = model.getValue("/root/main/list3/clsp[" + rowNum + "]/spclspec");
  6037. model.setValue("/root/main/list3/clsp[" + rowNum + "]/spclspec", spclspec + "\n" + choimemo);
  6038. var rowstatus = grd_clsphist.rowstatus(rowNum);
  6039. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  6040. } else {
  6041. grd_clsphist.rowstatus(rowNum) = 2; // 2 : update 상태로 stat를 변경한다.
  6042. }
  6043. } else if (ans == 7) { // 7:no
  6044. model.setValue("/root/main/list3/clsp[" + rowNum + "]/spclspec", choimemo);
  6045. var rowstatus = grd_clsphist.rowstatus(rowNum);
  6046. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  6047. } else {
  6048. grd_clsphist.rowstatus(rowNum) = 2; // 2 : update 상태로 stat를 변경한다.
  6049. }
  6050. } else if (ans == 2) { // 2:cancel
  6051. }
  6052. } else { // 기존에 입력된 JX999가 없는 경우
  6053. // 'JX999' 코드를 추가한다.
  6054. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  6055. grd_clsphist.insertRow(clsprow++, true);
  6056. model.setValue("/root/main/list3/clsp[" + clsprow + "]/unitflag", "J");
  6057. model.setValue("/root/main/list3/clsp[" + clsprow + "]/edilnno", edilnno);
  6058. model.setValue("/root/main/list3/clsp[" + clsprow + "]/clodseqno", seqno);
  6059. model.setValue("/root/main/list3/clsp[" + clsprow + "]/snglcalcscorcd", snglcalcscorcd);
  6060. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclcd", "JX999");
  6061. model.setValue("/root/main/list3/clsp[" + clsprow + "]/cdnm", "기타내역");
  6062. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclspec", choimemo);
  6063. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclformat", "X(700)");
  6064. model.setValue("/root/main/list3/clsp[" + clsprow + "]/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  6065. model.setValue("/root/main/list3/clsp[" + clsprow + "]/oldedilnno", edilnno);
  6066. model.setValue("/root/main/list3/clsp[" + clsprow + "]/clsoyn", "N"); // 원외처방여부 JX999 + 다른 코드도 있는 경우가 된다.
  6067. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("lnunitspclspecyn")) = "#b5a5d1"; // 연한 보라색
  6068. }
  6069. } else { // 기존에 입력된 줄단위 특정내역이 없는 경우
  6070. // 'JX999' 코드를 추가한다.
  6071. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid가장 마지막 줄에 추가한다.
  6072. grd_clsphist.insertRow(clsprow++, true);
  6073. model.setValue("/root/main/list3/clsp[" + clsprow + "]/unitflag", "J");
  6074. model.setValue("/root/main/list3/clsp[" + clsprow + "]/edilnno", edilnno);
  6075. model.setValue("/root/main/list3/clsp[" + clsprow + "]/clodseqno", seqno);
  6076. model.setValue("/root/main/list3/clsp[" + clsprow + "]/snglcalcscorcd", snglcalcscorcd);
  6077. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclcd", "JX999");
  6078. model.setValue("/root/main/list3/clsp[" + clsprow + "]/cdnm", "기타내역");
  6079. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclspec", choimemo);
  6080. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclformat", "X(700)");
  6081. model.setValue("/root/main/list3/clsp[" + clsprow + "]/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  6082. model.setValue("/root/main/list3/clsp[" + clsprow + "]/oldedilnno", edilnno);
  6083. model.setValue("/root/main/list3/clsp[" + clsprow + "]/clsoyn", "N"); // 원외처방여부
  6084. model.setValue("/root/main/list2/clod[" + i + "]/lnunitspclspecyn", "*");
  6085. // JX999만 있는 경우
  6086. grd_clodhist.cellStyle("background-color", i, grd_clodhist.colRef("lnunitspclspecyn")) = "#f7a08b"; // class="color_6" 다홍색
  6087. fSetOrderChangeRowStat(i); // 처방의 수정된 row 상태를 표시한다.
  6088. } // lnunitspclspecyn == ""
  6089. } // if (choiedicd == clodedicd)
  6090. }
  6091. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  6092. fSortSpclNo();
  6093. grd_clsphist.refresh();
  6094. grd_clodhist.refresh();
  6095. model.toggle("case_spclspec"); // 해당 tab 으로 토글시킨다.
  6096. } // if (destRef == "prcpmemo")
  6097. // model.refresh();
  6098. } // if (choimemo)
  6099. } // if (SelectMemo != null)
  6100. } // if (clamkey)
  6101. }
  6102. // 심사자메모, EDI청구메모를 특정내역 형식에 맞춰 설정한다.
  6103. function fSetJudgEDIMemo(spclmemo, usermemoyn) {
  6104. var delclspNode = instance1.selectSingleNode("/root/send/item3/delclsp");
  6105. var max = 1;
  6106. if (delclspNode != null) {
  6107. max = delclspNode.childNodes.length + 1;
  6108. }
  6109. model.makeValue("/root/send/item3/delclsp/delmemo[" + max + "]/delunitflag", "M");
  6110. model.makeValue("/root/send/item3/delclsp/delmemo[" + max + "]/delspclcd", "MX999");
  6111. model.makeValue("/root/send/item3/delclsp/delmemo[" + max + "]/delusermemoyn", usermemoyn);
  6112. model.makeNode("/root/send/item3/delclsp/delmemo[" + max + "]/delcalcscorcd");
  6113. model.makeNode("/root/send/item3/delclsp/delmemo[" + max + "]/deledilnno");
  6114. var item3Path = "";
  6115. var item3Node = "";
  6116. var repeat = ""; // 특정내역 반복 설정 rowstat = 'R'
  6117. if (usermemoyn == "Y") {
  6118. item3Path = "/root/send/item3/judgmemo[";
  6119. item3Node = "judg";
  6120. repeat = model.getValue("/root/main/item1/memo/judgmemorepeat");
  6121. } else {
  6122. item3Path = "/root/send/item3/edimemo[";
  6123. item3Node = "edi";
  6124. repeat = model.getValue("/root/main/item1/memo/edimemorepeat");
  6125. }
  6126. var iSpclCdCnt = 0; // DB에 저장될 MX999 코드 개수
  6127. var iSpclCdTotLength = getStringLength(spclmemo); // (stringHelper.js) 문자열의 길이를 구한다.
  6128. var insCharTotCnt = 0; // 특정내역으로 잘라진 총 글자 수
  6129. if (iSpclCdTotLength > 350) { // 새로 입력된 특정코드가 700byte를 넘는다.
  6130. // 영문(700자), 한글(350자) 길이로 잘라서 n개의 특정코드를 만든다.
  6131. var iLen = 0; // 특정내역 길이가 700 byte가 되었는지 계산
  6132. var iStartInx = 0; // 특정내역 시작 index
  6133. var iCharCnt = 0; // 몇글자로 구성되는지 계산
  6134. for ( var i = 0; i < spclmemo.length; i++) {
  6135. var sBit = spclmemo.charAt(i);
  6136. iCharCnt++;
  6137. if (escape(sBit).length > 4) {
  6138. iLen = iLen + 2;
  6139. } else {
  6140. iLen = iLen + 1;
  6141. }
  6142. if (iLen == 350 || iLen > 350) { // 영문(700자), 한글(350자)
  6143. iSpclCdCnt++;
  6144. if (iLen == 350) { // 700byte로 길이가 끝난 경우
  6145. model.makeValue(item3Path + iSpclCdCnt + "]/" + item3Node + "spclspec", spclmemo.substr(iStartInx, iCharCnt));
  6146. model.makeValue(item3Path + iSpclCdCnt + "]/" + item3Node + "rowstat", repeat);
  6147. iStartInx += iCharCnt;
  6148. insCharTotCnt += 350;
  6149. } else if (iLen > 350) { // 영문(700자), 한글(350자)를 넘는 경우
  6150. model.makeValue(item3Path + iSpclCdCnt + "]/" + item3Node + "spclspec", spclmemo.substr(iStartInx, iCharCnt - 1));
  6151. model.makeValue(item3Path + iSpclCdCnt + "]/" + item3Node + "rowstat", repeat);
  6152. iStartInx += (iCharCnt - 1);
  6153. i--;
  6154. insCharTotCnt += 349;
  6155. }
  6156. iCharCnt = 0;
  6157. iLen = 0;
  6158. }
  6159. }
  6160. if (iSpclCdTotLength != insCharTotCnt) {
  6161. iSpclCdCnt++;
  6162. model.makeValue(item3Path + iSpclCdCnt + "]/" + item3Node + "spclspec", spclmemo.substring(iStartInx, spclmemo.length));
  6163. model.makeValue(item3Path + iSpclCdCnt + "]/" + item3Node + "rowstat", repeat);
  6164. }
  6165. } else if (iSpclCdTotLength > 0) { // 새로 추가된 내용이 있다.
  6166. iSpclCdCnt++;
  6167. // model.makeValue(item3Path + iSpclCdCnt +"]/"+ item3Node
  6168. // +"usermemoyn", usermemoyn);
  6169. model.makeValue(item3Path + iSpclCdCnt + "]/" + item3Node + "spclspec", spclmemo);
  6170. model.makeValue(item3Path + iSpclCdCnt + "]/" + item3Node + "rowstat", repeat);
  6171. // }
  6172. }
  6173. }
  6174. // 심사Comment 조회 Popup에서 선택한 심사자메모를 설정한다.
  6175. function fSetJudgMemoRefresh() {
  6176. var memo = model.getValue("/root/hidden/sppiz00700/rslt/memo");
  6177. var judgmemo = model.getValue("/root/main/item1/memo/judgmemo");
  6178. if (memo) {
  6179. if (judgmemo) { // 기존 심사메모가 공백이 아닌 경우 선택된 메모를 심사화면 메모 뒤에 덧붙인다.
  6180. model.setValue("/root/main/item1/memo/judgmemo", judgmemo + " \n" + memo);
  6181. } else {
  6182. model.setValue("/root/main/item1/memo/judgmemo", memo);
  6183. }
  6184. model.refreshpart("/root/main/item1/memo/judgmemo");
  6185. }
  6186. }
  6187. // 심사Comment 조회 Popup에서 선택한 EDI메모를 설정한다.
  6188. function fSetEdiMemoRefresh() {
  6189. var memo = model.getValue("/root/hidden/sppiz00700/rslt/memo");
  6190. var edimemo = model.getValue("/root/main/item1/memo/edimemo");
  6191. if (memo) {
  6192. if (edimemo) { // 기존 청구메모가 공백이 아닌 경우 선택된 메모를 심사화면 메모 뒤에 덧붙인다.
  6193. model.setValue("/root/main/item1/memo/edimemo", edimemo + " \n" + memo);
  6194. } else {
  6195. model.setValue("/root/main/item1/memo/edimemo", memo);
  6196. }
  6197. model.refreshpart("/root/main/item1/memo/edimemo");
  6198. }
  6199. }
  6200. // -------------------------------------
  6201. // 특정 환자에 대한 상병이력을 조회한다.
  6202. // -------------------------------------
  6203. function fGetDiagHistList() {
  6204. var clamkey = model.getValue("/root/main/item1/clbs/clamkey");
  6205. if (clamkey) { // 조회된 심사대상자가 있으면
  6206. // 심사대상자의 등록번호를 조건으로 하여 전체 청구 상병이력을 조회한다.
  6207. model.removeNodeset("/root/hidden/smpiz00100/rslt");
  6208. model.setValue("/root/hidden/smpiz00100/cond/pid", model.getValue("/root/main/item1/clbs/pid"));
  6209. model.setValue("/root/hidden/smpiz00100/cond/ordfromdd", model.getValue("/root/main/item1/clbs/indd"));
  6210. model.setValue("/root/hidden/smpiz00100/cond/ordtodd", model.getValue("/root/main/item1/clbs/dschdd"));
  6211. // model.setValue("/root/hidden/smpiz00100/cond/srchflag", "pam"); //
  6212. // 검색구분 Radio : 청구
  6213. modal("SMPIZ00100", "1", "10", "10", "SMPIZ00100", "/root/hidden/smpiz00100/cond", "/root/init", "", ""); // SMPIZ00100_외래입원상병이력조회.xrw
  6214. var rsltNode = instance1
  6215. .selectSingleNode("/root/hidden/smpiz00100/rslt");
  6216. if (rsltNode != null) {
  6217. for ( var i = 1; i <= rsltNode.childNodes.length; i++) {
  6218. var diagcd = model.getValue("/root/hidden/smpiz00100/rslt/diag[" + i + "]/diagcd");
  6219. var isSame = false;
  6220. for ( var j = grd_cldihist.fixedRows; j < grd_cldihist.rows; j++) {
  6221. if (diagcd == model.getValue("/root/main/list1/cldi[" + j + "]/diagcd")
  6222. // && grd_cldihist.rowstatus(j) != 4 20100308 추가 저장시문제있음
  6223. ) {
  6224. // 동일한 상병이 존재하는 경우
  6225. isSame = true;
  6226. j = grd_cldihist.rows;
  6227. }
  6228. }
  6229. if (isSame == false) {
  6230. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가"
  6231. fDiagGridInsertRow("Y", "Y");
  6232. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/diagkindcd", model.getValue("/root/hidden/smpiz00100/rslt/diag[" + i + "]/diagkindcd"));
  6233. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/diagseq", grd_cldihist.row);
  6234. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/diagcd", model.getValue("/root/hidden/smpiz00100/rslt/diag[" + i + "]/diagcd"));
  6235. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/diagnm", model.getValue("/root/hidden/smpiz00100/rslt/diag[" + i + "]/diaghngnm"));
  6236. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/diagengnm", model.getValue("/root/hidden/smpiz00100/rslt/diag[" + i + "]/diagengnm"));
  6237. // 20100308 특정내역 조회 추가
  6238. model.setValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/vcode", fGetDiagVcode(diagcd));
  6239. // 20100329 MT002 입력체크
  6240. if (model.getValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/diagseq") == "1"
  6241. && model.getValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/vcode") != ""
  6242. && model.getValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/diagkindcd") != "R"
  6243. )
  6244. {
  6245. fSetDiagMT002(model.getValue("/root/main/list1/cldi[" + grd_cldihist.row + "]/vcode"));
  6246. }
  6247. var nowRow = grd_cldihist.row;
  6248. }
  6249. }
  6250. fSortDiagNo(true);
  6251. grd_cldihist.row = nowRow;
  6252. }
  6253. }
  6254. }
  6255. // 처방사유조회
  6256. // history.. 진료에 있는화면 기본조건으로 팝업사용..YS(윤샘)요청
  6257. function fPrcpResnRef() {
  6258. // 세션값 받기
  6259. var sUserInfosS = getUserInfos();
  6260. sUserInfosS = sUserInfosS + "|";
  6261. var UserInfosS_Array = sUserInfosS.split("|");
  6262. var userid = UserInfosS_Array[0]; // 사용자번호
  6263. var usernm = UserInfosS_Array[1]; // 사용자이름
  6264. var posinstcd = UserInfosS_Array[6]; // 근무지기관코드
  6265. var posinstnm = UserInfosS_Array[7]; // 근무지기관명
  6266. var posdeptcd = UserInfosS_Array[4]; // 소속부서코드
  6267. var posdeptnm = UserInfosS_Array[5]; // 소속부서명
  6268. model.makeValue("/root/tmp/prcpresnref/info/pid", model.getValue("/root/main/item1/clbs/pid")); // 등록번호
  6269. model.makeValue("/root/tmp/prcpresnref/info/fromdd", model.getValue("/root/main/item1/clbs/indd")); // 처방시작일 default indd
  6270. model.makeValue("/root/tmp/prcpresnref/info/todd", model.getValue("/root/main/item1/clbs/dschdd")); // 처방종료일 default dschdd
  6271. model.makeValue("/root/tmp/prcpresnref/info/orddeptcd", "-"); // 진료과 주진료과
  6272. model.makeValue("/root/tmp/prcpresnref/info/orddrid", "-"); // 주치의 : default "-"
  6273. model.makeValue("/root/tmp/prcpresnref/info/mainjudgid", "-"); // 심사자 : 현재심사자
  6274. // 20091111 JHP 필터시에는 getValue가 먹지를 않기 때문에 valuMatrix로 처리변경함.
  6275. model.makeValue("/root/tmp/prcpresnref/info/prcpcd", grd_clodhist.valueMatrix(grd_clodhist.row, grd_clodhist.colRef("grupcalcscorcd"))); // 수가코드 : 그룹코드
  6276. model.makeValue("/root/tmp/prcpresnref/info/insukind", model.getValue("/root/main/item1/clbs/insukindcd")); // 보험유형 : 환자보험유형
  6277. model.makeValue("/root/tmp/prcpresnref/info/ioflag", "I"); // 내원유형 : default "-"
  6278. model.makeValue("/root/tmp/prcpresnref/info/resncd", "FF"); // 사유구분 : default "FF" 중복처방
  6279. model.makeValue("/root/tmp/prcpresnref/info/popup", "judg"); // 팝업사용처구분 : judg(심사)
  6280. modal("SPMMO19000_중복처방사유조회", "", "400", "300", "", "/root/tmp/prcpresnref/info", "/root/tmp/prcpresnref/info");
  6281. model.removeNode("/root/tmp/prcpresnref");
  6282. }
  6283. // -------------------------------------------------------------------
  6284. // 줄단위 특정내역 중 기타메모(JX999)를 특정내역 형식에 맞춰 설정한다.
  6285. // -------------------------------------------------------------------
  6286. function fSetSpclSpecJX999() {
  6287. var iTotSpclCdCnt = 0; // DB에 저장될 JX999 코드 개수
  6288. for ( var i = 1; i < grd_clsphist.rows; i++) {
  6289. var rowstatus = grd_clsphist.rowstatus(i);
  6290. var spclcd = model.getValue("/root/main/list3/clsp[" + i + "]/spclcd");
  6291. var snglcalcscorcd = model.getValue("/root/main/list3/clsp[" + i + "]/snglcalcscorcd");
  6292. var edilnno = model.getValue("/root/main/list3/clsp[" + i + "]/edilnno");
  6293. var seqno = model.getValue("/root/main/list3/clsp[" + i + "]/seqno");
  6294. var clodseqno = model.getValue("/root/main/list3/clsp[" + i + "]/clodseqno");
  6295. var clsoyn = model.getValue("/root/main/list3/clsp[" + i + "]/clsoyn");
  6296. var mpsno = model.getValue("/root/main/list3/clsp[" + i + "]/mpsno");
  6297. if (rowstatus != 0 && spclcd == "JX999") {
  6298. var delclspNode = instance1.selectSingleNode("/root/send/item3/delclsp");
  6299. var max = 1;
  6300. if (delclspNode != null) {
  6301. max = delclspNode.childNodes.length + 1;
  6302. }
  6303. model.makeValue("/root/send/item3/delclsp/delmemo[" + max + "]/delunitflag", "J");
  6304. var oldspclcd = model.getValue("/root/main/list3/clsp[" + i + "]/oldspclcd");
  6305. if (oldspclcd) {
  6306. model.makeValue("/root/send/item3/delclsp/delmemo[" + max + "]/delspclcd", oldspclcd);
  6307. } else {
  6308. model.makeValue("/root/send/item3/delclsp/delmemo[" + max + "]/delspclcd", spclcd);
  6309. }
  6310. model.makeValue("/root/send/item3/delclsp/delmemo[" + max + "]/delusermemoyn", "N");
  6311. model.makeValue("/root/send/item3/delclsp/delmemo[" + max + "]/delcalcscorcd", snglcalcscorcd);
  6312. if (rowstatus == 2) { // JX999는 seqno로 기존 코드를 삭제하는 것이 아니라 줄번호로
  6313. // 삭제하므로 조회해온 초기 줄번호를 전달한다.
  6314. var initedilnno = model.getValue("/root/main/list3/clsp[" + i + "]/initedilnno");
  6315. model.makeValue("/root/send/item3/delclsp/delmemo[" + max + "]/deledilnno", initedilnno);
  6316. } else {
  6317. model.makeValue("/root/send/item3/delclsp/delmemo[" + max + "]/deledilnno", edilnno);
  6318. }
  6319. model.makeValue("/root/send/item3/delclsp/delmemo[" + max + "]/delseqno", seqno);
  6320. model.makeValue("/root/send/item3/delclsp/delmemo[" + max + "]/delclsoyn", clsoyn);
  6321. model.makeValue("/root/send/item3/delclsp/delmemo[" + max + "]/delmpsno", mpsno);
  6322. }
  6323. // 해당 청구키의 JX999는 모두 삭제하고 새로 추가하므로 "삭제" 상태가 아닌 모든 경우를 전송한다.
  6324. if (rowstatus != 0 && rowstatus != 4 && spclcd == "JX999") { // 0 : new, 4: delete
  6325. var iSpclCdCnt = 0;
  6326. var spclmemo = model.getValue("/root/main/list3/clsp[" + i + "]/spclspec");
  6327. var repeat = model.getValue("/root/main/list3/clsp[" + i + "]/rowstat"); // 특정내역 반복 설정 rowstat = 'R'
  6328. var iSpclCdTotLength = getStringLength(spclmemo); // (stringHelper.js) 문자열의 길이를 구한다.
  6329. var insCharTotCnt = 0; // 특정내역으로 잘라진 총 글자 수
  6330. if (iSpclCdTotLength > 350) { // 새로 입력된 특정코드가 700byte를 넘는다.
  6331. // 영문(700자), 한글(350자) 길이로 잘라서 n개의 특정코드를 만든다.
  6332. var iLen = 0; // 특정내역 길이가 700 byte가 되었는지 계산
  6333. var iStartInx = 0; // 특정내역 시작 index
  6334. var iCharCnt = 0; // 몇글자로 구성되는지 계산
  6335. for ( var j = 0; j < spclmemo.length; j++) {
  6336. var sBit = spclmemo.charAt(j);
  6337. iCharCnt++;
  6338. if (escape(sBit).length > 4) {
  6339. iLen = iLen + 2;
  6340. } else {
  6341. iLen = iLen + 1;
  6342. }
  6343. if (iLen == 350 || iLen > 350) { // 영문(700자), 한글(350자)
  6344. iTotSpclCdCnt++;
  6345. iSpclCdCnt++;
  6346. if (iLen == 350) { // 700byte로 길이가 끝난 경우
  6347. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitspclspec", spclmemo.substr(iStartInx, iCharCnt));
  6348. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitcalcscorcd", snglcalcscorcd);
  6349. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitedilnno", edilnno);
  6350. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitclodseqno", clodseqno);
  6351. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitclsoyn", clsoyn);
  6352. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitmpsno", mpsno);
  6353. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitrowstat", repeat);
  6354. iStartInx += iCharCnt;
  6355. insCharTotCnt += 350;
  6356. } else if (iLen > 350) { // 영문(700자), 한글(350자)를 넘는 경우
  6357. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitspclspec", spclmemo.substr(iStartInx, iCharCnt - 1));
  6358. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitcalcscorcd", snglcalcscorcd);
  6359. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitedilnno", edilnno);
  6360. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitdclodseqno", clodseqno);
  6361. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitclsoyn", clsoyn);
  6362. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitmpsno", mpsno);
  6363. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitrowstat", repeat);
  6364. iStartInx += (iCharCnt - 1);
  6365. j--;
  6366. insCharTotCnt += 349;
  6367. }
  6368. iCharCnt = 0;
  6369. iLen = 0;
  6370. }
  6371. }
  6372. if (iSpclCdTotLength != insCharTotCnt) {
  6373. iTotSpclCdCnt++;
  6374. iSpclCdCnt++;
  6375. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitspclspec", spclmemo.substring(iStartInx, spclmemo.length));
  6376. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitcalcscorcd", snglcalcscorcd);
  6377. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitedilnno", edilnno);
  6378. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitclodseqno", clodseqno);
  6379. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitclsoyn", clsoyn);
  6380. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitmpsno", mpsno);
  6381. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitrowstat", repeat);
  6382. }
  6383. } else if (iSpclCdTotLength > 0) { // 새로 추가된 내용이 있다.
  6384. iTotSpclCdCnt++;
  6385. iSpclCdCnt++;
  6386. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitspclspec", spclmemo);
  6387. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitcalcscorcd", snglcalcscorcd);
  6388. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitedilnno", edilnno);
  6389. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitclodseqno", clodseqno);
  6390. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitclsoyn", clsoyn);
  6391. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitmpsno", mpsno);
  6392. model.makeValue("/root/send/item3/lnunitmemo[" + iTotSpclCdCnt + "]/lnunitrowstat", repeat);
  6393. }
  6394. }
  6395. }
  6396. }
  6397. // 특정내역 / 심사자메모 / EDI메모 창을 작게 한다.
  6398. function fCutSwitchSize() {
  6399. grp_clsphist.attribute("height") = "170";
  6400. var igrd_hei = parseInt(grp_clsphist.attribute("height"));
  6401. swt_spclmemo.attribute("height") = igrd_hei - 24;
  6402. grd_clsphist.attribute("height") = igrd_hei - 61;
  6403. tar_judgrmemo.attribute("height") = igrd_hei - 61;
  6404. tar_ediclammemo.attribute("height") = igrd_hei - 61;
  6405. if (grp_predoculist.visible == false && grp_delclodlist.visible == false
  6406. && grp_delorderlist.visible == false) {
  6407. grd_clodhist.attribute("width") = "1114";
  6408. ln_clodhist.attribute("x2") = "1114";
  6409. }
  6410. }
  6411. // 특정내역 / 심사자메모 / EDI메모 창을 크게 한다.
  6412. function fExpandSwitchSize() {
  6413. grp_clsphist.attribute("height") = "632";
  6414. var igrd_hei = parseInt(grp_clsphist.attribute("height"));
  6415. swt_spclmemo.attribute("height") = igrd_hei - 24;
  6416. grd_clsphist.attribute("height") = igrd_hei - 61;
  6417. tar_judgrmemo.attribute("height") = igrd_hei - 61;
  6418. tar_ediclammemo.attribute("height") = igrd_hei - 61;
  6419. // 처방 Grid 을 축소하고, Grid Group이 겹쳐져 보이므로 visible = false 처리한다.
  6420. if (grp_predoculist.visible == true || grp_delclodlist.visible == true
  6421. || grp_delorderlist.visible == true) {
  6422. grd_clodhist.attribute("width") = "630";
  6423. ln_clodhist.attribute("x2") = "630";
  6424. } else {
  6425. grd_clodhist.attribute("width") = "480";
  6426. ln_clodhist.attribute("x2") = "480";
  6427. }
  6428. }
  6429. // /////////////////////////////////////////////////////////////////////////
  6430. // 특정내역 중 MT004 내역을 설정한다.
  6431. function fSetSpclMT004() {
  6432. var clamkey = model.getValue("/root/main/item1/clbs/clamkey");
  6433. if (clamkey) { // 조회된 심사대상자가 있고
  6434. if (btn_mt0004.attribute("class") == "btn5_letter4") { // 특정내역에 'MT004'
  6435. // 코드가 있는 경우
  6436. // 'MT004' 코드를 삭제한다.
  6437. for ( var i = 1; i < grd_clsphist.rows; i++) {
  6438. var spclcd = model.getValue("/root/main/list3/clsp[" + i + "]/spclcd");
  6439. var gridrowstatus = grd_clsphist.rowstatus(i);
  6440. if (spclcd == "MT004" && gridrowstatus != 4) {
  6441. if (gridrowstatus == 1 || gridrowstatus == 3) { // 1 : insert, 3 : insert & new
  6442. model.resetInstanceNode("/root/main/list3/clsp[" + i + "]/spclcd");
  6443. model.resetInstanceNode("/root/main/list3/clsp[" + i + "]/spclspec");
  6444. // grd_clsphist.deleteRow(i, false); // 해당 라인을 Grid에서 삭제한다.
  6445. } else { // 0 : new, 2 : update
  6446. grd_clsphist.rowstatus(i) = 4; // 4 : delete 상태로 stat를 변경한다.
  6447. }
  6448. }
  6449. }
  6450. btn_mt0004.attribute("class") = "btn2_letter4";
  6451. } else { // 특정내역에 'MT004' 코드가 없는 경우
  6452. // 'MT004' 코드를 추가한다.
  6453. fSpclGridInsertRow(); // 특정내역 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가"
  6454. var clsprow = grd_clsphist.row;
  6455. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclcd", "MT004");
  6456. model.setValue("/root/main/list3/clsp[" + clsprow + "]/cdnm", "소명자료 구분");
  6457. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclspec", "Y");
  6458. model.setValue("/root/main/list3/clsp[" + clsprow + "]/spclformat", "X(1)");
  6459. model.setValue("/root/main/list3/clsp[" + clsprow + "]/detldesc", "소명자료를 첨부하는 경우 'Y'를 기재");
  6460. btn_mt0004.attribute("class") = "btn5_letter4";
  6461. btn_mt0004.attribute("color") = "#cc3333"; // cc3333=붉은색
  6462. }
  6463. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  6464. fSortSpclNo();
  6465. grd_clsphist.refresh();
  6466. }
  6467. }
  6468. // 특정내역 중 MT015, MT016 내역을 조회하여 "소명자료" Btn (첨부물 자료관리) Popup 화면에 표시한다.
  6469. function fGetAttachedDataList() {
  6470. var clamkey = model.getValue("/root/main/item1/clbs/clamkey");
  6471. if (clamkey) { // 조회된 심사대상자가 있고
  6472. model.removeNodeset("/root/hidden/sppiz00200/cond");
  6473. var index = 0;
  6474. for ( var i = 1; i < grd_clsphist.rows; i++) {
  6475. var spclcd = model.getValue("/root/main/list3/clsp[" + i + "]/spclcd");
  6476. var gridrowstatus = grd_clsphist.rowstatus(i);
  6477. if (spclcd == "MT015" || spclcd == "MT016") {
  6478. index++;
  6479. model.makeValue("/root/hidden/sppiz00200/cond/clsp[" + index + "]/spclcd", model.getValue("/root/main/list3/clsp[" + i + "]/spclcd"));
  6480. model.makeValue("/root/hidden/sppiz00200/cond/clsp[" + index + "]/seqno", model.getValue("/root/main/list3/clsp[" + i + "]/seqno"));
  6481. model.makeValue("/root/hidden/sppiz00200/cond/clsp[" + index + "]/spclspec", model.getValue("/root/main/list3/clsp[" + i + "]/spclspec"));
  6482. // 특정내역 Grid에서 "행 삭제"한 경우 MT015 / MT016 자료를 표시하지 않도록 하도록
  6483. // rowstatus를 전달함
  6484. model.makeValue("/root/hidden/sppiz00200/cond/clsp[" + index + "]/rowstat", gridrowstatus);
  6485. }
  6486. }
  6487. if (instance1.selectSingleNode("/root/hidden/sppiz00200/cond") == null) {
  6488. model.makeNode("/root/hidden/sppiz00200/cond");
  6489. }
  6490. modal("SPPIZ00200", "1", "10", "10", "SPPIZ00200", "", "", "", ""); // SPPIZ00200_첨부물자료관리.xrw
  6491. fDisplayAttachedDataList();
  6492. }
  6493. }
  6494. // "소명자료" Btn (첨부물 자료관리) Popup 화면에서 특정내역 중 MT015, MT016 정보가 입력된 환자인지를 확인한다.
  6495. function fDisplayAttachedDataList() {
  6496. var isAttachedDataList = false;
  6497. var cSrcNode = instance1.selectSingleNode("/root/hidden/sppiz00200/rslt/clsp");
  6498. if (cSrcNode == null) { // 특정내역이 없는 경우임
  6499. return;
  6500. }
  6501. if (model.getValue("/root/hidden/sppiz00200/rslt/clsp/unitflag") == "") { // "취소" 선택시에 버튼 색이 변경되지 않도록
  6502. return;
  6503. }
  6504. var cSrcChildNodeList = cSrcNode.childNodes;
  6505. for ( var i = 1; i <= cSrcChildNodeList.length; i++) {
  6506. var spclcd = model.getValue("/root/hidden/sppiz00200/rslt/clsp[" + i + "]/spclcd");
  6507. if (spclcd == "MT015" || spclcd == "MT016") {
  6508. var rowstat = model.getValue("/root/hidden/sppiz00200/rslt/clsp[" + i + "]/rowstat")
  6509. if (rowstat != "D") {
  6510. var spclspec = model.getValue("/root/hidden/sppiz00200/rslt/clsp[" + i + "]/spclspec");
  6511. if (spclspec) {
  6512. isAttachedDataList = true;
  6513. }
  6514. // 특정내역 Grid 에서 해당 내용을 삽입 또는 수정한다.
  6515. if (rowstat == "I") { // 삽입
  6516. fSpclGridInsertRow();
  6517. model.setValue("/root/main/list3/clsp[" + grd_clsphist.row + "]/spclcd", spclcd);
  6518. model.setValue("/root/main/list3/clsp[" + grd_clsphist.row + "]/spclspec", spclspec);
  6519. if (spclcd == "MT015") {
  6520. model.setValue("/root/main/list3/clsp[" + grd_clsphist.row + "]/cdnm", "제출자료 목록표");
  6521. model.setValue("/root/main/list3/clsp[" + grd_clsphist.row + "]/spclformat", "X(2)");
  6522. model.setValue("/root/main/list3/clsp[" + grd_clsphist.row + "]/detldesc", "제출자료코드/제출자료코드/... 형태로 입력");
  6523. } else {
  6524. model.setValue("/root/main/list3/clsp[" + grd_clsphist.row + "]/cdnm", "제출자료 목록표(기타)");
  6525. model.setValue("/root/main/list3/clsp[" + grd_clsphist.row + "]/spclformat", "X(200)");
  6526. model.setValue("/root/main/list3/clsp[" + grd_clsphist.row + "]/detldesc", "영문(200자), 한글(100자)");
  6527. }
  6528. } else if (rowstat == "U") { // 수정
  6529. for (var j = 1; j < grd_clsphist.rows; j++) {
  6530. var gridspclcd = model.getValue("/root/main/list3/clsp[" + j + "]/spclcd");
  6531. var gridspclspec = model.getValue("/root/main/list3/clsp[" + j + "]/spclspec");
  6532. var gridrowstatus = grd_clsphist.rowstatus(j);
  6533. if (gridspclcd == spclcd) {
  6534. model.setValue("/root/main/list3/clsp[" + j + "]/spclspec", spclspec);
  6535. if (gridrowstatus == 1 || gridrowstatus == 3) { // 1 : insert, 3 : insert & new
  6536. } else {
  6537. grd_clsphist.rowstatus(j) = 2; // 2 : update 상태로 stat를 변경한다.
  6538. }
  6539. }
  6540. }
  6541. }
  6542. } else { // 삭제
  6543. // 특정내역 Grid 에서 해당 내용을 삭제한다.
  6544. for ( var j = 1; j < grd_clsphist.rows; j++) {
  6545. var gridspclcd = model.getValue("/root/main/list3/clsp[" + j + "]/spclcd");
  6546. var gridspclspec = model.getValue("/root/main/list3/clsp[" + j + "]/spclspec");
  6547. var gridrowstatus = grd_clsphist.rowstatus(j);
  6548. if (gridspclcd == spclcd) {
  6549. if (gridrowstatus == 1 || gridrowstatus == 3) { // 1 : insert, 3 : insert & new
  6550. model.resetInstanceNode("/root/main/list3/clsp[" + j + "]/spclcd");
  6551. model.resetInstanceNode("/root/main/list3/clsp[" + j + "]/spclspec");
  6552. // grd_clsphist.deleteRow(j, false); // 해당 라인을 Grid에서 삭제한다.
  6553. } else { // 0 : new, 2 : update
  6554. grd_clsphist.rowstatus(j) = 4; // 4 : delete 상태로 stat를 변경한다.
  6555. }
  6556. }
  6557. }
  6558. }
  6559. }
  6560. }
  6561. // 특정내역 줄번호/특정코드에 따라 sorting 작업
  6562. fSortSpclNo();
  6563. if (isAttachedDataList) {
  6564. btn_attData.attribute("class") = "btn5_letter4";
  6565. btn_attData.attribute("color") = "#cc3333"; // cc3333=붉은색
  6566. } else {
  6567. btn_attData.attribute("class") = "btn2_letter4";
  6568. }
  6569. }
  6570. // --------------------------------------------------------------
  6571. // 특정코드 MT015, MT016, MT004 정보가 입력된 환자인지를 확인한다.
  6572. // --------------------------------------------------------------
  6573. function fCheckSpclSpecData() {
  6574. // 삭제된 상태가 아닌 소명자료 내역이 있는지 파악하여 "소명자료" Btn 색을 설정한다.
  6575. // 특정코드 MT004 가 있는지를 파악하여 "MT004" Btn 색을 설정한다.
  6576. var isAttachedDataList = false;
  6577. var isMT004DataList = false;
  6578. for ( var i = 1; i < grd_clsphist.rows; i++) {
  6579. var spclcd = model.getValue("/root/main/list3/clsp[" + i + "]/spclcd");
  6580. if (spclcd == "MT015" || spclcd == "MT016") {
  6581. if (grd_clsphist.rowstatus(i) != 4) {
  6582. isAttachedDataList = true;
  6583. }
  6584. } else if (spclcd == "MT004") {
  6585. if (grd_clsphist.rowstatus(i) != 4) {
  6586. isMT004DataList = true;
  6587. }
  6588. }
  6589. }
  6590. // 소명자료 Btn
  6591. if (isAttachedDataList) {
  6592. btn_attData.attribute("class") = "btn5_letter4";
  6593. btn_attData.attribute("color") = "#cc3333"; // cc3333=붉은색
  6594. } else {
  6595. btn_attData.attribute("class") = "btn2_letter4";
  6596. }
  6597. // MT004 Btn
  6598. if (isMT004DataList) {
  6599. btn_mt0004.attribute("class") = "btn5_letter4";
  6600. btn_mt0004.attribute("color") = "#cc3333"; // cc3333=붉은색
  6601. } else {
  6602. btn_mt0004.attribute("class") = "btn2_letter4";
  6603. }
  6604. }
  6605. // /////////////////////////////////////////////////////////////////////////
  6606. // 상병 및 처방 치식 입력
  6607. function fDiagOrderToothInput(flag) {
  6608. if (flag == "Diag") {
  6609. var row = grd_cldihist.row;
  6610. var diagcd = model.getValue("/root/main/list1/cldi[" + row + "]/diagcd");
  6611. if (diagcd) {
  6612. model.setValue("/root/hidden/sppiz00600/cond/clamym", model.getValue("/root/main/item1/clbs/clamym"));
  6613. model.setValue("/root/hidden/sppiz00600/cond/clamdg", model.getValue("/root/main/item1/clbs/clamdg"));
  6614. model.setValue("/root/hidden/sppiz00600/cond/pid", model.getValue("/root/main/item1/clbs/pid"));
  6615. model.setValue("/root/hidden/sppiz00600/cond/pidsn", model.getValue("/root/main/item1/clbs/pidsn"));
  6616. model.setValue("/root/hidden/sppiz00600/cond/indd", model.getValue("/root/main/item1/clbs/indd"));
  6617. model.setValue("/root/hidden/sppiz00600/cond/cretno", model.getValue("/root/main/item1/clbs/cretno"));
  6618. model.setValue("/root/hidden/sppiz00600/cond/toot", model.getValue("/root/main/list1/cldi[" + row + "]/toot"));
  6619. fSetToothPop(row, "1");
  6620. model.removeNodeset("/root/hidden/sppiz00600/rslt"); // SPPIZ00600_상병및처방별치식 에서 선택된 결과가 copyNode되는 경로임
  6621. modal("SPPIZ00600", "1", "10", "10", "SPPIZ00600", "/root/hidden/sppiz00600/cond", "/root/hidden/cond", "", ""); // SPPIZ00600_상병및처방별치식.xrw
  6622. fGetToothPop();
  6623. }
  6624. } else if (flag == "Order") {
  6625. var row = grd_clodhist.row;
  6626. var edilnno = model.getValue("/root/main/list2/clod[" + row + "]/edilnno");
  6627. if (edilnno) {
  6628. model.setValue("/root/hidden/sppiz00600/cond/clamym", model.getValue("/root/main/item1/clbs/clamym"));
  6629. model.setValue("/root/hidden/sppiz00600/cond/clamdg", model.getValue("/root/main/item1/clbs/clamdg"));
  6630. model.setValue("/root/hidden/sppiz00600/cond/pid", model.getValue("/root/main/item1/clbs/pid"));
  6631. model.setValue("/root/hidden/sppiz00600/cond/pidsn", model.getValue("/root/main/item1/clbs/pidsn"));
  6632. model.setValue("/root/hidden/sppiz00600/cond/indd", model.getValue("/root/main/item1/clbs/indd"));
  6633. model.setValue("/root/hidden/sppiz00600/cond/cretno", model.getValue("/root/main/item1/clbs/cretno"));
  6634. model.setValue("/root/hidden/sppiz00600/cond/toot", model.getValue("/root/main/list1/cldi[" + row + "]/toot"));
  6635. fSetToothPop(row, "2");
  6636. model.removeNodeset("/root/hidden/sppiz00600/rslt"); // SPPIZ00600_상병및처방별치식 에서 선택된 결과가 copyNode되는 경로임
  6637. modal("SPPIZ00600", "1", "10", "10", "SPPIZ00600", "/root/hidden/sppiz00600/cond", "/root/hidden/cond", "", ""); // SPPIZ00600_상병및처방별치식.xrw
  6638. fGetToothPop();
  6639. }
  6640. }
  6641. }
  6642. // 현재 상병, 처방 Grid 상에서 입력상태의 치식을 팝업 화면에 전달하기 위해 리스트 형태로 만든다.
  6643. function fSetToothPop(row, flag) {
  6644. model.removeNodeset("/root/hidden/sppiz00600/cond/list");
  6645. model.makeNode("/root/hidden/sppiz00600/cond/list");
  6646. // 상병
  6647. var cntcldi = getNodesetCount("/root/main/list1/cldi"); // (tfHelper.js) 노드셋의 갯수 반환
  6648. // 처방
  6649. var cntclod = getNodesetCount("/root/main/list2/clod"); // (tfHelper.js) 노드셋의 갯수 반환 grd_clodhist.rows는 타이틀을 포함하지만 getNodesetCount는 타이틀을 제외한 data 갯수를 반환
  6650. var cd = "";
  6651. var cdnm = "";
  6652. var orddd = "";
  6653. var toot = "";
  6654. var rowcnt = 1;
  6655. for ( var i = 1; i <= cntcldi; i++) {
  6656. cd = model.getValue("/root/main/list1/cldi[" + i + "]/diagcd");
  6657. cdnm = model.getValue("/root/main/list1/cldi[" + i + "]/diagnm");
  6658. orddd = model.getValue("/root/main/list1/cldi[" + i + "]/ordfromdd");
  6659. toot = model.getValue("/root/main/list1/cldi[" + i + "]/toot");
  6660. if (toot != "-" && toot != "") {
  6661. var milktoothstr = "ABCDE000";
  6662. var subTootStr = "";
  6663. for ( var inx = 0; inx < 32; inx++) {
  6664. var tootnum = toot.substr(inx, 1);
  6665. if (tootnum == "*") { // 선택된 영구치의 경우 1~8 사이 숫자로 표시한다.
  6666. if (inx < 8) {
  6667. subTootStr += (8 - inx);
  6668. } else if (inx > 7 && inx < 16) {
  6669. subTootStr += (inx - 7);
  6670. } else if (inx > 15 && inx < 24) {
  6671. subTootStr += (24 - inx);
  6672. } else {
  6673. subTootStr += (inx - 23);
  6674. }
  6675. } else if (tootnum == "#") { // 선택된 유치의 경우 A~E 사이 알파벳으로 표시한다.
  6676. if (inx < 8) {
  6677. subTootStr += milktoothstr.charAt(7 - inx);
  6678. } else if (inx > 7 && inx < 16) {
  6679. subTootStr += milktoothstr.charAt(inx - 8);
  6680. } else if (inx > 15 && inx < 24) {
  6681. subTootStr += milktoothstr.charAt(23 - inx);
  6682. } else {
  6683. subTootStr += milktoothstr.charAt(inx - 24);
  6684. }
  6685. } else { // if (tootnum == "0") 선택되지 않은 경우 공백으로 처리한다.
  6686. subTootStr += " ";
  6687. }
  6688. }
  6689. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos");
  6690. // 치식 표기를 설정한다.
  6691. if (row == i && flag == "1") {
  6692. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "true");
  6693. } else {
  6694. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "false");
  6695. }
  6696. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag", "상병");
  6697. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd", cd);
  6698. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm", cdnm);
  6699. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper", subTootStr.substr(0, 8));
  6700. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper", subTootStr.substr(8, 8));
  6701. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower", subTootStr.substr(16, 8));
  6702. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower", subTootStr.substr(24, 8));
  6703. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd", orddd);
  6704. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot", toot);
  6705. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row", i);
  6706. rowcnt = rowcnt + 1;
  6707. } else {
  6708. if (row == i && flag == "1") {
  6709. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "true");
  6710. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag", "상병");
  6711. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd", cd);
  6712. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm", cdnm);
  6713. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper", "");
  6714. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper", "");
  6715. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower", "");
  6716. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower", "");
  6717. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd", orddd);
  6718. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot", "");
  6719. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row", i);
  6720. rowcnt = rowcnt + 1;
  6721. }
  6722. }
  6723. }
  6724. for ( var i = 1; i <= cntclod; i++) {
  6725. cd = model.getValue("/root/main/list2/clod[" + i + "]/snglcalcscorcd");
  6726. cdnm = model.getValue("/root/main/list2/clod[" + i + "]/hngnm");
  6727. orddd = model.getValue("/root/main/list2/clod[" + i + "]/orddd");
  6728. toot = model.getValue("/root/main/list2/clod[" + i + "]/toot");
  6729. estmcls = model.getValue("/root/main/list2/clod[" + i + "]/estmcls");
  6730. // 치식 입력되지 않은 처방이더라도 수가 처방대분류가 치과 분류로 된 처방들이 전부 조회되도록 변경 --20100309 윤영옥
  6731. // 선생님 요청건
  6732. if ((toot != "-" && toot != "") || estmcls == "U") {
  6733. var milktoothstr = "ABCDE000";
  6734. var subTootStr = "";
  6735. var tmpStr = "";
  6736. for ( var inx = 0; inx < 32; inx++) {
  6737. var tootnum = toot.substr(inx, 1);
  6738. if (tootnum == "*") { // 선택된 영구치의 경우 1~8 사이 숫자로 표시한다.
  6739. if (inx < 8) {
  6740. subTootStr += (8 - inx);
  6741. } else if (inx > 7 && inx < 16) {
  6742. subTootStr += (inx - 7);
  6743. } else if (inx > 15 && inx < 24) {
  6744. subTootStr += (24 - inx);
  6745. } else {
  6746. subTootStr += (inx - 23);
  6747. }
  6748. } else if (tootnum == "#") { // 선택된 유치의 경우 A~E 사이 알파벳으로 표시한다.
  6749. if (inx < 8) {
  6750. subTootStr += milktoothstr.charAt(7 - inx);
  6751. } else if (inx > 7 && inx < 16) {
  6752. subTootStr += milktoothstr.charAt(inx - 8);
  6753. } else if (inx > 15 && inx < 24) {
  6754. subTootStr += milktoothstr.charAt(23 - inx);
  6755. } else {
  6756. subTootStr += milktoothstr.charAt(inx - 24);
  6757. }
  6758. } else { // if (tootnum == "0") 선택되지 않은 경우 공백으로 처리한다.
  6759. subTootStr += " ";
  6760. }
  6761. }
  6762. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos");
  6763. // 치식 표기를 설정한다.
  6764. if (row == i && flag == "2") {
  6765. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "true");
  6766. } else {
  6767. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "false");
  6768. }
  6769. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag", "처방");
  6770. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd", cd);
  6771. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm", cdnm);
  6772. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper", subTootStr.substr(0, 8));
  6773. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper", subTootStr.substr(8, 8));
  6774. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower", subTootStr.substr(16, 8));
  6775. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower", subTootStr.substr(24, 8));
  6776. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd", orddd);
  6777. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot", toot);
  6778. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row", i);
  6779. rowcnt = rowcnt + 1;
  6780. } else {
  6781. if (row == i && flag == "2") {
  6782. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "true");
  6783. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag", "처방");
  6784. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd", cd);
  6785. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm", cdnm);
  6786. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper", "");
  6787. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper", "");
  6788. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower", "");
  6789. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower", "");
  6790. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd", orddd);
  6791. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot", "");
  6792. model.makeValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row", i);
  6793. rowcnt = rowcnt + 1;
  6794. }
  6795. }
  6796. }
  6797. }
  6798. // SPPIZ00600_상병및처방별치식 선택 결과를 반영한다.
  6799. function fGetToothPop() {
  6800. var tootSelectcnt = getNodesetCount("/root/hidden/sppiz00600/rslt/list");
  6801. var flag = "";
  6802. var row = "";
  6803. var toot = "";
  6804. tootSelectcnt = eval(tootSelectcnt) + 1;
  6805. for ( var i = 1; i < tootSelectcnt; i++) {
  6806. flag = model.getValue("/root/hidden/sppiz00600/rslt/list[" + i + "]/flag");
  6807. row = model.getValue("/root/hidden/sppiz00600/rslt/list[" + i + "]/row");
  6808. var rlsttoot = model.getValue("/root/hidden/sppiz00600/rslt/list[" + i + "]/toot");
  6809. var rlsttoot1 = model.getValue("/root/hidden/sppiz00600/rslt/list[" + i + "]/toot1");
  6810. if (rlsttoot == "") {
  6811. rlsttoot = "-";
  6812. }
  6813. if (rlsttoot1 == "") {
  6814. rlsttoot1 = "-";
  6815. }
  6816. if (flag == "1") {
  6817. toot = model.getValue("/root/main/list1/cldi[" + row + "]/toot");
  6818. model.setValue("/root/main/list1/cldi[" + row + "]/toot", rlsttoot);
  6819. model.setValue("/root/main/list1/cldi[" + row + "]/toot1",
  6820. rlsttoot1);
  6821. if (rlsttoot != toot) { // 치식번호가 변경된 경우
  6822. var cldistatus = grd_cldihist.rowstatus(row);
  6823. if (cldistatus == 0 || cldistatus == 2) { // 0 : new, 2 :update
  6824. grd_cldihist.rowstatus(row) = 2; // 2 : update
  6825. }
  6826. }
  6827. } else if (flag == "2") {
  6828. toot = model.getValue("/root/main/list2/clod[" + row + "]/toot");
  6829. model.setValue("/root/main/list2/clod[" + row + "]/toot", rlsttoot);
  6830. model.setValue("/root/main/list2/clod[" + row + "]/toot1",
  6831. rlsttoot1);
  6832. if (rlsttoot != toot) { // 치식번호가 변경된 경우
  6833. // 처방의 수정된 row 상태를 표시한다.
  6834. fSetOrderChangeRowStat(row);
  6835. }
  6836. }
  6837. }
  6838. }
  6839. // 심사사유, 조정사유, 수정사유 입력
  6840. function fSetAdjtResnCd() {
  6841. var oldcd = model.getValue("/root/main/list2/clod[" + grd_clodhist.row + "]/adjtresncd");
  6842. model.resetInstanceNode("/root/hidden/sppiz01000");
  6843. model.setValue("/root/hidden/sppiz01000/cond/cdcls", "aftin");
  6844. model.setValue("/root/hidden/sppiz01000/cond/cdid", oldcd);
  6845. modal("SPPIZ01000", "1", "550", "450", "SPPIZ01000", "/root/hidden/sppiz01000/cond", "/root/hidden/sppiz01000/cond", "", ""); // SPPIZ01000_심사수정사유관리.xrw
  6846. var newcd = model.getValue("/root/hidden/sppiz01000/rslt/cdid");
  6847. var newdesc = model.getValue("/root/hidden/sppiz01000/rslt/adjtresndesc");
  6848. if (newcd) {
  6849. for ( var i = 0; i < grd_clodhist.selectedRows; i++) {
  6850. var row = grd_clodhist.selectedrow(i);
  6851. model.setValue("/root/main/list2/clod[" + row + "]/adjtresncd", newcd);
  6852. model.setValue("/root/main/list2/clod[" + row + "]/adjtresndesc", newdesc);
  6853. if (newcd != oldcd) {
  6854. if (grd_clodhist.rowStatus(row) == 0) { // 0 : new, 2 : update
  6855. grd_clodhist.rowStatus(row) = 2;
  6856. }
  6857. // 처방 Grid 배경색을 설정한다. - 추가/수정된 row
  6858. fOrderBkColorNew(row);
  6859. grd_clodhist.col = grd_clodhist.colRef("snglcalcscorcd");
  6860. grd_clodhist.dispatch("ondblclick");
  6861. }
  6862. }
  6863. }
  6864. return newcd;
  6865. }
  6866. // 재청구 차액발생 사유입력
  6867. function fSetReClamChgAmtResncd() {
  6868. model.resetInstanceNode("/root/hidden/sppid22800");
  6869. // model.setValue("/root/hidden/sppiz01000/cond/cdid", "");
  6870. modal("SPPID22800", "1", "500", "450", "SPPID22800", "/root/hidden/sppid22800/cond", "/root/hidden/sppid22800/cond", "", ""); // SPPID22800_재청구차액발생사유관리.xrw
  6871. var resncd = model.getValue("/root/hidden/sppid22800/rslt/cdid");
  6872. if (resncd) {
  6873. model.setValue("/root/send/item8/pifhiunc/chgamtresncd", resncd);
  6874. }
  6875. return resncd;
  6876. }
  6877. // ------------------------------------------------------------
  6878. // 진료정보조회 : SMMMO02500_환자진료정보.xrw
  6879. // ------------------------------------------------------------
  6880. function fGetEmrInformation() {
  6881. var clamym = model.getValue("/root/main/item1/clbs/clamym");
  6882. if (clamym) {
  6883. var pid = model.getValue("/root/main/item1/clbs/pid"); // getArrayData (cond, 0, 0,"^", "▩" );
  6884. var ioflag = "O"; // getArrayData (cond, 0, 1, "^", "▩" );
  6885. var indd = model.getValue("/root/main/item1/clbs/indd"); // getArrayData (cond, 0, 2, "^", "▩" );
  6886. var prcpdd = ""; // getArrayData (cond, 0, 3, "^", "▩" );
  6887. setParameter("SMMMO02500_cond", pid + "^" + ioflag + "^" + indd + "^" + prcpdd + "▩");
  6888. open("SMMMO02500", "1", "10", "10", "SMMMO02500", "", "", "", ""); // SMMMO02500_환자진료정보
  6889. }
  6890. }
  6891. // ---------------------------------
  6892. // 처방 급여구분 변경
  6893. // ---------------------------------
  6894. function fSetPayflag() {
  6895. var oldpayflag = model.getValue("/root/main/list2/clod[" + grd_clodhist.row + "]/payflag");
  6896. model.resetInstanceNode("/root/hidden/sppid23100");
  6897. model.setValue("/root/hidden/sppid23100/cond/cdid", oldpayflag);
  6898. modal("SPPID23100", "1", "500", "500", "SPPID23100", "/root/hidden/sppid23100/cond", "/root/hidden/sppid23100/cond", "", ""); // SPPID23100_급비변경관리.xrw
  6899. var newpayflag = model.getValue("/root/hidden/sppid23100/rslt/cdid");
  6900. if (newpayflag) {
  6901. if (newpayflag != oldpayflag) {
  6902. var adjtresncd = model.getValue("/root/main/list2/clod[" + grd_clodhist.row + "]/adjtresncd");
  6903. if (adjtresncd == "" || adjtresncd == "-") { // 심사(조정)사유가 입력되지 않은 경우
  6904. var newcd = fSetAdjtResnCd();
  6905. if (newcd == "" || newcd == "-") {
  6906. return;
  6907. }
  6908. }
  6909. model.setValue("/root/main/list2/clod[" + grd_clodhist.row + "]/payflag", newpayflag);
  6910. if (newpayflag == "0" || newpayflag == "9") {
  6911. model.setValue("/root/main/list2/clod[" + grd_clodhist.row + "]/calcappyn", "Y"); // 계산적용구분
  6912. } else {
  6913. model.setValue("/root/main/list2/clod[" + grd_clodhist.row + "]/calcappyn", "N"); // 계산적용구분
  6914. }
  6915. var matractflag = model.getValue("/root/main/list2/clod[" + grd_clodhist.row + "]/matractflag");
  6916. // 청구가능선택진료 + 가산행위(2)는 가산안함으로 변경
  6917. if (newpayflag == "9" && matractflag == "2") {
  6918. model.setValue("/root/main/list2/clod[" + grd_clodhist.row + "]/matractflag", "3"); // 재료행위(3:가산없는 행위)
  6919. }
  6920. if (grd_clodhist.rowStatus(grd_clodhist.row) == 0) { // 0 : new, 2 : update
  6921. grd_clodhist.rowStatus(grd_clodhist.row) = 2;
  6922. }
  6923. // 처방 Grid 배경색을 설정한다. - 추가/수정된 row
  6924. fOrderBkColorNew(grd_clodhist.row);
  6925. grd_clodhist.refresh();
  6926. fSetTotDrugQtyAmt();
  6927. grd_clodhist.refresh();
  6928. }
  6929. }
  6930. }
  6931. // ------------------------------------------------------------
  6932. // 급여구분별 처방조회
  6933. // ------------------------------------------------------------
  6934. function fClodSelectByPayflag() {
  6935. // 수가코드, EDI코드 input 컨트롤을 초기화한다.
  6936. model.resetInstanceNode("/root/hidden/list2/clodsrch/inpCalcScorCd");
  6937. model.resetInstanceNode("/root/hidden/list2/clodsrch/inpEDICd");
  6938. model.refreshpart("/root/hidden/list2/clodsrch/inpCalcScorCd");
  6939. model.refreshpart("/root/hidden/list2/clodsrch/inpEDICd");
  6940. // fGetSelectedOrderData(); // 처방 조회부 - 재행/급여/항목구분 Radio 선택에 따라 처방 내역을 보여준다.
  6941. var payflag = model.getValue("/root/hidden/list2/clodsrch/selectedRdoPay");
  6942. // 처방Grid 배경색을 초기화한다.
  6943. grd_clodhist.rebuildStyle();
  6944. if (payflag == '0') {
  6945. model.copyNode("/root/main/list2", "/root/hidden/initclodlist/list2");
  6946. // 처방 항목 구분 및 선별심사 처방 색깔 구분
  6947. fSetOrderData();
  6948. grd_clodhist.refresh();
  6949. grd_clodhist.row = 1;
  6950. } else {
  6951. var datasave = false;
  6952. var clodupdtdata = getGridUpdateData(grd_clodhist);
  6953. if (clodupdtdata) {
  6954. var ans = messageBox("급여처방에 수정사항이 있습니다. 저장", "S001"); // /수정사항이 있습니다. 저장하시려면 예(Yes)\n아니면아니오(No)
  6955. if (ans == 6) { // 6: yes, 7:no, 2:cancel
  6956. fSaveInAftJudg("B"); // 저장
  6957. datasave = true;
  6958. } else {
  6959. datasave = false;
  6960. }
  6961. }
  6962. // 수정사항을 저장하지 않은 경우 OR 수정사항이 없는 경우
  6963. if (datasave == false) {
  6964. var nodeList;
  6965. model.removeNodeset("/root/main/list2/clod");
  6966. // 급여구분에 따라 해당되는 처방만 보여준다.
  6967. if (payflag == '-') {
  6968. model.copyNode("/root/main/list2", "/root/main/list8");
  6969. } else { // 전액본인부담, 일반, 선택
  6970. nodeList = instance1.selectNodes("/root/main/list8/clod[payflag = " + payflag + "]");
  6971. for (var i = 0; i < nodeList.length; i++) {
  6972. model.duplicate("/root/main/list2", nodeList.item(i));
  6973. }
  6974. }
  6975. // 처방 항목 구분 및 선별심사 처방 색깔 구분
  6976. fSetOrderData();
  6977. grd_clodhist.refresh();
  6978. grd_clodhist.row = 1;
  6979. }
  6980. }
  6981. }
  6982. // 처방별환자조회(계산)_수가코드
  6983. function fOpenSMPIS00500DetailSnglCD() {
  6984. pidfOpenSMPIS00500("I", "D", "SnglCD");
  6985. }
  6986. // 처방별환자조회(계산)_EDI코드
  6987. function fOpenSMPIS00500DetailEdicd() {
  6988. pidfOpenSMPIS00500("I", "D", "Edicd");
  6989. }
  6990. // 처방별환자조회(청구/삭감)
  6991. function fOpenSMPIS00600Detail() {
  6992. pidfOpenSMPIS00600("I", "D");
  6993. }
  6994. // -----------------------------
  6995. // 1회량 일괄수정
  6996. // -----------------------------
  6997. function fAllSetDrugqtyCol() {
  6998. if (grd_clodhist.selectedRows > 1) {
  6999. // 수정할 Row
  7000. var setrow = grd_clodhist.row;
  7001. // 수정할 1회량 저장
  7002. var drugqty = model.getValue("/root/main/list2/clod[" + setrow + "]/drugqty");
  7003. if (drugqty == "" || drugqty == "0") {
  7004. return;
  7005. }
  7006. var rowArray = new Array();
  7007. var rCnt = 0;
  7008. for ( var i = 0; i < grd_clodhist.selectedRows; i++) {
  7009. var clodrow = grd_clodhist.selectedrow(i);
  7010. if (clodrow > 0) {
  7011. if (clodrow != setrow) {
  7012. rowArray[rCnt] = clodrow;
  7013. rCnt++;
  7014. model.setValue("/root/main/list2/clod[" + clodrow + "]/drugqty", drugqty);
  7015. model.setValue("/root/main/list2/clod[" + clodrow + "]/adjtresncd", "A") // 조장사유 A:일투조정
  7016. grd_clodhist.rowStatus(clodrow) = 2; // update
  7017. }
  7018. }
  7019. }
  7020. for ( var i = 0; i <= rCnt - 1; i++) {
  7021. grd_clodhist.row = rowArray[i];
  7022. grd_clodhist.col = grd_clodhist.colRef("drugqty");
  7023. fSetTotDrugQtyAmt(); // 1회량수정 후 계산
  7024. }
  7025. grd_clodhist.refresh();
  7026. }
  7027. }
  7028. // -----------------------------
  7029. // 횟수 일괄수정
  7030. // -----------------------------
  7031. function fAllSetTimsCol() {
  7032. if (grd_clodhist.selectedRows > 1) {
  7033. // 처음선택한 Row(수정할 Row)
  7034. var setrow = grd_clodhist.row;
  7035. // 현재 Row 횟수 저장
  7036. var tims = model.getValue("/root/main/list2/clod[" + setrow + "]/tims");
  7037. if (tims == "" || tims == "0") {
  7038. return;
  7039. }
  7040. var rowArray = new Array();
  7041. var rCnt = 0;
  7042. for ( var i = 0; i < grd_clodhist.selectedRows; i++) {
  7043. var clodrow = grd_clodhist.selectedrow(i);
  7044. if (clodrow > 0) {
  7045. if (clodrow != setrow) {
  7046. rowArray[rCnt] = clodrow;
  7047. rCnt++;
  7048. model.setValue("/root/main/list2/clod[" + clodrow + "]/tims", tims);
  7049. model.setValue("/root/main/list2/clod[" + clodrow + "]/adjtresncd", "A") // 조장사유 A:일투조정
  7050. grd_clodhist.rowStatus(clodrow) = 2; // update
  7051. }
  7052. }
  7053. }
  7054. for ( var i = 0; i <= rCnt - 1; i++) {
  7055. grd_clodhist.row = rowArray[i];
  7056. grd_clodhist.col = grd_clodhist.colRef("tims");
  7057. fSetTotDrugQtyAmt(); // 횟수수정 후 계산
  7058. }
  7059. grd_clodhist.refresh();
  7060. }
  7061. }
  7062. // -----------------------------
  7063. // 일수 일괄수정
  7064. // -----------------------------
  7065. function fAllSetDaynoCol() {
  7066. if (grd_clodhist.selectedRows > 1) {
  7067. // 처음선택한 Row(수정할 Row)
  7068. var setrow = grd_clodhist.row;
  7069. // 현재 Row 횟수 저장
  7070. var dayno = model.getValue("/root/main/list2/clod[" + setrow + "]/dayno");
  7071. if (dayno == "" || dayno == "0") {
  7072. return;
  7073. }
  7074. var rowArray = new Array();
  7075. var rCnt = 0;
  7076. var olddayno = 0;
  7077. for ( var i = 0; i < grd_clodhist.selectedRows; i++) {
  7078. var clodrow = grd_clodhist.selectedrow(i);
  7079. if (clodrow > 0) {
  7080. if (clodrow != setrow) {
  7081. rowArray[rCnt] = clodrow;
  7082. rCnt++;
  7083. olddayno = model.getValue("/root/main/list2/clod[" + clodrow + "]/dayno");
  7084. model.setValue("/root/main/list2/clod[" + clodrow + "]/dayno", dayno);
  7085. model.setValue("/root/main/list2/clod[" + clodrow + "]/adjtresncd", "A") // 조장사유 A:일투조정
  7086. grd_clodhist.rowStatus(clodrow) = 2; // update
  7087. var Sdayno = model.getValue("/root/main/list2/clod[" + clodrow + "]/dayno");
  7088. var dayno = parseInt(Sdayno);
  7089. var ordfromdd = model.getValue("/root/main/list2/clod[" + clodrow + "]/ordfromdd");
  7090. var ordtodd = model.getValue("/root/main/list2/clod[" + clodrow + "]/ordtodd");
  7091. var item1 = model.getValue("/root/main/list2/clod[" + clodrow + "]/item1");
  7092. // 진료개시일과 종료일 사이의 일자인지 체크
  7093. var clbsordfromdd = model.getValue("/root/main/item1/clbs/ordfromdd");
  7094. var clbsordtodd = model.getValue("/root/main/item1/clbs/ordtodd");
  7095. // 수가코드의 적용일자~종료일자 사이의 일자인지 체크
  7096. var mechfromdd = model.getValue("/root/main/list2/clod[" + clodrow + "]/mechfromdd");
  7097. var mechtodd = model.getValue("/root/main/list2/clod[" + clodrow + "]/mechtodd");
  7098. var insukind = model.getValue("/root/main/item1/clbs/insukindcd");
  7099. if (Sdayno == "" || dayno <= 0) {
  7100. } else if (ordfromdd) {
  7101. var fromDate = ordfromdd.toDate();
  7102. var toDate = fromDate.getAddDate(dayno - 1, "D"); // (dateHelper.js) 특정일자의 상대일자(+/-)를 계산
  7103. ordtodd = toDate.getDateFormat("YYYY") + toDate.getDateFormat("MM") + toDate.getDateFormat("DD");
  7104. if (item1 != "03" && clbsordfromdd && clbsordtodd) {
  7105. if (ordtodd < clbsordfromdd || ordtodd > clbsordtodd) {
  7106. messageBox("일수를 기준으로 계산된 처방종료일자가 [진료 개시일자~종료일자]를 벗어나", "E016"); // /일수(총투)를 기준으로 계산된처방 종료일자가 입원 개시일자~종료일자를 벗어나 유효하지 않습니다. 처방 data 및 row status를 변경 이전 상태로 복구한다.
  7107. model.setValue("/root/main/list2/clod[" + clodrow + "]/dayno", olddayno);
  7108. return;
  7109. }
  7110. }
  7111. model.setValue("/root/main/list2/clod[" + clodrow + "]/ordtodd", ordtodd);
  7112. } else if (ordtodd) {
  7113. var toDate = ordtodd.toDate();
  7114. var fromDate = toDate.getAddDate((dayno - 1) * -1, "D"); // (dateHelper.js)
  7115. // 특정일자의
  7116. // 상대일자(+/-)를
  7117. // 계산
  7118. ordfromdd = fromDate.getDateFormat("YYYY") + fromDate.getDateFormat("MM") + fromDate.getDateFormat("DD");
  7119. if (item1 != "03" && clbsordfromdd && clbsordtodd) {
  7120. if (ordfromdd < clbsordfromdd || ordfromdd > clbsordtodd) {
  7121. messageBox("일수를 기준으로 계산된 처방시작일자가 [진료 개시일자~종료일자]를 벗어나", "E016"); // /일수(총투)를 기준으로 계산된 처방
  7122. // 시작일자가 입원 개시일자~종료일자를 벗어나 유효하지 않습니다. 처방 data 및 row status를 변경 이전 상태로 복구한다.
  7123. model.setValue("/root/main/list2/clod[" + clodrow + "]/dayno", olddayno);
  7124. return;
  7125. }
  7126. }
  7127. // 일수를 기준으로 구한 날짜가 올바른 경우
  7128. model.setValue("/root/main/list2/clod[" + clodrow + "]/ordfromdd", ordfromdd);
  7129. }
  7130. }
  7131. }
  7132. }
  7133. for (var i = 0; i <= rCnt - 1; i++) {
  7134. grd_clodhist.row = rowArray[i];
  7135. grd_clodhist.col = grd_clodhist.colRef("dayno");
  7136. fSetTotDrugQtyAmt(); // 일수수정 후 계산
  7137. }
  7138. grd_clodhist.refresh();
  7139. }
  7140. }
  7141. // CD복사의뢰 : ast/examcureweb/xrw/SMAEF00100_필름판독대출신청.xrw
  7142. function fOrderCDCopy() {
  7143. var pid = model.getValue("/root/main/item1/clbs/pid");
  7144. if (pid) {
  7145. model.makeValue("/root/hidden/smaef00100/cond/gb", "A"); // 신청구분(전체:1, 판독:2)
  7146. model.makeValue("/root/hidden/smaef00100/cond/srchdate1", ""); // 진료일자
  7147. model.makeValue("/root/hidden/smaef00100/cond/lendapptm", ""); // 판독신청일
  7148. model.makeValue("/root/hidden/smaef00100/cond/pid", model.getValue("/root/main/item1/clbs/pid")); // 환자번호
  7149. model.makeValue("/root/hidden/smaef00100/cond/deptcd", model.getValue("/root/main/item1/clbs/orddeptcd")); // 진료과
  7150. model.makeValue("/root/hidden/smaef00100/cond/drid", model.getValue("/root/main/item1/clbs/orddrid")); // 주치의
  7151. model.makeValue("/root/hidden/smaef00100/cond/lendgoal", "05");// 목적 : 복사용 05
  7152. model.makeValue("/root/hidden/smaef00100/cond/modality", ""); // 영상구분
  7153. model.makeValue("/root/hidden/smaef00100/cond/deptengabbr", ""); // 판독신청과영문
  7154. model.makeValue("/root/hidden/smaef00100/cond/lenddeptcd", ""); // 판독신청과
  7155. model.makeValue("/root/hidden/smaef00100/cond/lendrid", ""); // 판독신청자
  7156. }
  7157. modal("SMAEF00100", "1", "10", "10", "SMAEF00100", "/root/hidden/smaef00100/cond", "/root/send/data", "", ""); // SMAEF00100_필름판독대출신청.xrw
  7158. }
  7159. // 환자 전체 메세지 내용 조회하여 하나씩 보기
  7160. // 20100317 외래에만 있고 입원에 없어서 추가 (김용민)
  7161. // 인자값은 실제 환자번호만 쓰고 있음
  7162. function fJudgPatMsgTrsmRef() {
  7163. model.makeNode("/root/tmp/msgtrsm/info/refyn");
  7164. model.makeNode("/root/tmp/msgtrsm/info/pid");
  7165. model.makeNode("/root/tmp/msgtrsm/info/orddd");
  7166. model.makeNode("/root/tmp/msgtrsm/info/cretno");
  7167. model.makeNode("/root/tmp/msgtrsm/info/mskind");
  7168. model.makeNode("/root/tmp/msgtrsm/info/orddeptcd");
  7169. model.makeNode("/root/tmp/msgtrsm/info/orddrid");
  7170. model.makeNode("/root/tmp/msgtrsm/info/ordtype");
  7171. model.setValue("/root/tmp/msgtrsm/info/refyn", "Y");
  7172. model.setValue("/root/tmp/msgtrsm/info/pid", model.getValue("/root/main/item1/clbs/pid")); // chk
  7173. model.setValue("/root/tmp/msgtrsm/info/orddd", model.getValue("/root/main/item1/clbs/indd")); // chk
  7174. model.setValue("/root/tmp/msgtrsm/info/cretno", model.getValue("/root/main/item1/clbs/cretno")); // chk
  7175. model.setValue("/root/tmp/msgtrsm/info/mskind", "M"); // 외래기본 주유형, chk
  7176. model.setValue("/root/tmp/msgtrsm/info/orddeptcd", model.getValue("/root/main/item1/clbs/orddeptcd")); // chk
  7177. model.setValue("/root/tmp/msgtrsm/info/orddrid", model.getValue("/root/main/item1/clbs/orddrid")); // chk, TABLE에 적용안함.(값만확인)
  7178. model.setValue("/root/tmp/msgtrsm/info/ordtype", "O"); // 외래기본 'O', chk
  7179. modal("SMPIJ02600_메세지현황", "", "100", "100", "", "/root/tmp/msgtrsm/info", "/root/init/openchk");
  7180. model.removeNode("/root/tmp/msgtrsm");
  7181. }
  7182. // 처방그리드 엑셀저장
  7183. function fExportExcel() {
  7184. if (grd_clodhist.rows > 1) {
  7185. var isSave = false;
  7186. for ( var i = grd_clodhist.fixedRows; i < grd_clodhist.rows; i++) {
  7187. if (grd_clodhist.rowHidden(i) == false) {
  7188. isSave = true;
  7189. i = grd_clodhist.rows;
  7190. }
  7191. }
  7192. if (isSave == false) {
  7193. messageBox("처방 필터를 변경하세요. 엑셀저장할 처방이", "I004"); // /처방 필터를 변경하세요. 엑셀저장할 처방이 없습니다.
  7194. return;
  7195. }
  7196. var fileName = window.fileDialog("save", "", false, "excel", "xls",
  7197. "Excel Files(*.xls)|*.xls|All Files (*.*)|*.*");
  7198. if (fileName != "") {
  7199. grd_clodhist.saveExcel(fileName, "sheetname:;colhiddenextend:false;rowhiddenextend:false;", true, true, "", "", true);
  7200. }
  7201. } else {
  7202. messageBox("엑셀저장할 처방이", "I004"); // /엑셀저장할 처방이 없습니다.
  7203. }
  7204. }
  7205. // 처방그리드 출력
  7206. function fExportPrint() {
  7207. // // 미수쪽에서 popup으로 호출하는 경우를 위한 테스트
  7208. // modal("SMPID20300" ,"1", "10", "10", "SMPID20300", "", "", "", "");
  7209. if (grd_clodhist.rows > 1) {
  7210. // 선택 : 부분출력(예6), 전체출력(아니오7), 취소(취소7)
  7211. // 보고서에 들어갈 내용 담기
  7212. var pid = model.getValue("/root/main/item1/clbs/pid");
  7213. var patnm = model.getValue("/root/main/item1/clbs/patnm");
  7214. var indd = model.getValue("/root/main/item1/clbs/indd");
  7215. var insukind = model.getValue("/root/main/item1/clbs/insukindcd");
  7216. var insukindnm = model.getValue("/root/main/item1/clbs/insukindnm");
  7217. var suppkind = model.getValue("/root/main/item1/clbs/suppkindcd");
  7218. var suppkindnm = cmb_supprate.label;
  7219. var iphsfromdd = model.getValue("/root/main/item1/clbs/iphsfromdd"); // 유형시작일
  7220. var diagcd = model.getValue("/root/main/list1/cldi/diagcd") + " (" + model.getValue("/root/main/list1/cldi/diagnm") + ")";
  7221. var ret = messageBox("데이터를 부분출력", "S001"); // /데이터를 부분출력 하시려면 예(Yes)\n아니면 아니오(No)
  7222. if (ret == 6) {
  7223. // 1. 부분출력 (그리드에 선택된 행만 보고서로 전달한다.)
  7224. model.removeNodeset("/root/send/prntlist");
  7225. model.makeNode("/root/send/prntlist");
  7226. var idx = 1;
  7227. for ( var i = 0; i < grd_clodhist.selectedRows; i++) {
  7228. var row = grd_clodhist.selectedRow(i);
  7229. // 상단 정보
  7230. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/pid", pid); // 환자번호
  7231. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/patnm", patnm); // 성명
  7232. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/indd", indd); // 입원일
  7233. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/insukindcd", insukind); // 환자유형
  7234. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/insukindnm", insukindnm);
  7235. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/suppkindcd", suppkind); // 보조유형
  7236. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/suppkindnm", suppkindnm);
  7237. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/iphsfromdd", iphsfromdd); // 유형시작일
  7238. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/diagcd", diagcd);
  7239. // 리스트
  7240. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/edilnno", model.getValue("/root/main/list2/clod[" + row + "]/edilnno")); // 줄
  7241. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/item1", model.getValue("/root/main/list2/clod[" + row + "]/ediitem1")); // 항
  7242. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/item2", model.getValue("/root/main/list2/clod[" + row + "]/ediitem2")); // 목
  7243. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/ordfromdd", model.getValue("/root/main/list2/clod[" + row + "]/ordfromdd")); // 처방시작일자
  7244. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/grupsnglflag", model.getValue("/root/main/list2/clod[" + row + "]/grupsnglflag")); // G
  7245. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/grupcalcscorcd", model.getValue("/root/main/list2/clod[" + row + "]/grupcalcscorcd")); // 그룹코드
  7246. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/matractflag", grd_clodhist.labelMatrix(row, grd_clodhist.colRef("matractflag"))); // 행위재료
  7247. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/snglcalcscorcd", model.getValue("/root/main/list2/clod[" + row + "]/snglcalcscorcd")); // 수가코드
  7248. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/basecd", model.getValue("/root/main/list2/clod[" + row + "]/basecd")); // EDI코드
  7249. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/estmcd", model.getValue("/root/main/list2/clod[" + row + "]/estmcd")); // 산정코드
  7250. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/hngnm", model.getValue("/root/main/list2/clod[" + row + "]/hngnm")); // 한글명
  7251. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/payflag", grd_clodhist.labelMatrix(row, grd_clodhist.colRef("payflag"))); // 급비
  7252. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/ediunitcost", model.getValue("/root/main/list2/clod[" + row + "]/ediunitcost")); // 단가
  7253. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/edidrugqty", model.getValue("/root/main/list2/clod[" + row + "]/edidrugqty")); // 1회량
  7254. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/tims", model.getValue("/root/main/list2/clod[" + row + "]/tims")); // 횟수
  7255. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/daydrugqty", model.getValue("/root/main/list2/clod[" + row + "]/daydrugqty")); // 1일량(일투)
  7256. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/dayno", model.getValue("/root/main/list2/clod[" + row + "]/dayno")); // 일수(총투)
  7257. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/ediamt", model.getValue("/root/main/list2/clod[" + row + "]/ediamt")); // 금액
  7258. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/cnfmcd", model.getValue("/root/main/list2/clod[" + row + "]/cnfmcd")); // 확인코드
  7259. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/ordtodd", model.getValue("/root/main/list2/clod[" + row + "]/ordtodd")); // 처방종료일자
  7260. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/updtdd", model.getValue("/root/main/list2/clod[" + row + "]/updtdd")); // 변경일자
  7261. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/edihospaddamt", model.getValue("/root/main/list2/clod[" + row + "]/edihospaddamt")); // 병원가산단가
  7262. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/ediaddamt", model.getValue("/root/main/list2/clod[" + row + "]/ediaddamt")); // 가산단가
  7263. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/totordamt", model.getValue("/root/main/list2/clod[" + row + "]/totordamt")); // 진료비총액
  7264. idx++;
  7265. }
  7266. // model.refresh();
  7267. exeReportPreview("RPPID20300", "XMLSTR", "", "", "false", "", "",
  7268. "", "", "false");
  7269. } else if (ret == 7) {
  7270. // 2. 전체출력 (그리드에 보여지는 내용 전체를 보고서로 전달한다.)
  7271. var isPrint = false;
  7272. model.removeNodeset("/root/send/prntlist");
  7273. model.makeNode("/root/send/prntlist");
  7274. var idx = 1;
  7275. for ( var i = grd_clodhist.fixedRows; i < grd_clodhist.rows; i++) {
  7276. if (grd_clodhist.rowHidden(i) == false) {
  7277. isPrint = true;
  7278. var row = i;
  7279. // 상단 정보
  7280. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/pid", pid); // 환자번호
  7281. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/patnm", patnm); // 성명
  7282. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/indd", indd); // 입원일
  7283. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/insukindcd", insukind); // 환자유형
  7284. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/insukindnm", insukindnm);
  7285. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/suppkindcd", suppkind); // 보조유형
  7286. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/suppkindnm", suppkindnm);
  7287. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/iphsfromdd", iphsfromdd); // 유형시작일
  7288. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/diagcd", diagcd);
  7289. // 리스트
  7290. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/edilnno", model.getValue("/root/main/list2/clod[" + row + "]/edilnno")); // 줄
  7291. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/item1", model.getValue("/root/main/list2/clod[" + row + "]/ediitem1")); // 항
  7292. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/item2", model.getValue("/root/main/list2/clod[" + row + "]/ediitem2")); // 목
  7293. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/ordfromdd", model.getValue("/root/main/list2/clod[" + row + "]/ordfromdd")); // 처방시작일자
  7294. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/grupsnglflag", model.getValue("/root/main/list2/clod[" + row + "]/grupsnglflag")); // G
  7295. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/grupcalcscorcd", model.getValue("/root/main/list2/clod[" + row + "]/grupcalcscorcd")); // 그룹코드
  7296. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/matractflag", model.getValue("/root/main/list2/clod[" + row + "]/matractflag")); // 행위재료
  7297. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/snglcalcscorcd", model.getValue("/root/main/list2/clod[" + row + "]/snglcalcscorcd")); // 수가코드
  7298. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/basecd", model.getValue("/root/main/list2/clod[" + row + "]/basecd")); // EDI코드
  7299. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/estmcd", model.getValue("/root/main/list2/clod[" + row + "]/estmcd")); // 산정코드
  7300. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/hngnm", model.getValue("/root/main/list2/clod[" + row + "]/hngnm")); // 한글명
  7301. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/payflag", model.getValue("/root/main/list2/clod[" + row + "]/payflag")); // 급비
  7302. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/ediunitcost", model.getValue("/root/main/list2/clod[" + row + "]/ediunitcost")); // 단가
  7303. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/edidrugqty", model.getValue("/root/main/list2/clod[" + row + "]/edidrugqty")); // 1회량
  7304. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/tims", model.getValue("/root/main/list2/clod[" + row + "]/tims")); // 횟수
  7305. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/daydrugqty", model.getValue("/root/main/list2/clod[" + row + "]/daydrugqty")); // 1일량(일투)
  7306. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/dayno", model.getValue("/root/main/list2/clod[" + row + "]/dayno")); // 일수(총투)
  7307. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/ediamt", model.getValue("/root/main/list2/clod[" + row + "]/ediamt")); // 금액
  7308. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/cnfmcd", model.getValue("/root/main/list2/clod[" + row + "]/cnfmcd")); // 확인코드
  7309. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/ordtodd", model.getValue("/root/main/list2/clod[" + row + "]/ordtodd")); // 처방종료일자
  7310. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/updtdd", model.getValue("/root/main/list2/clod[" + row + "]/updtdd")); // 변경일자
  7311. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/edihospaddamt", model.getValue("/root/main/list2/clod[" + row + "]/edihospaddamt")); // 병원가산단가
  7312. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/ediaddamt", model.getValue("/root/main/list2/clod[" + row + "]/ediaddamt")); // 가산단가
  7313. model.makeValue("/root/send/prntlist/prntinfo[" + idx + "]/totordamt", model.getValue("/root/main/list2/clod[" + row + "]/totordamt")); // 진료비총액
  7314. idx++;
  7315. }
  7316. }
  7317. if (isPrint == false) {
  7318. messageBox("처방 필터를 변경하세요. 출력할 처방이", "I004"); // /처방 필터를 변경하세요. 출력할 처방이 없습니다.
  7319. return;
  7320. }
  7321. model.refresh();
  7322. exeReportPreview("RPPID20300", "XMLSTR", "", "", "false", "", "", "", "", "false");
  7323. } else {
  7324. // 3. 취소
  7325. return;
  7326. }
  7327. } else {
  7328. messageBox("출력할 처방이", "I004"); // /출력할 처방이 없습니다.
  7329. }
  7330. }
  7331. // 정산의뢰등록 화면호출
  7332. function fCallReCharge() {
  7333. model.resetInstanceNode("/root/hidden/smpir31000/cond");
  7334. if (model.getValue("/root/main/item1/clbs/acptno") != '-') {
  7335. model.setValue("/root/hidden/smpir31000/cond/srchflag", "1"); // 접수번호로 조회
  7336. } else {
  7337. model.setValue("/root/hidden/smpir31000/cond/srchflag", "1"); // 청구번호로 조회
  7338. }
  7339. model.setValue("/root/hidden/smpir31000/cond/acptno", model.getValue("/root/main/item1/clbs/acptno"));
  7340. model.setValue("/root/hidden/smpir31000/cond/judgdg", model.getValue("/root/main/item1/clbs/judgdg"));
  7341. model.setValue("/root/hidden/smpir31000/cond/docuseqno", model.getValue("/root/main/item1/clbs/docuseqno"));
  7342. model.setValue("/root/hidden/smpir31000/cond/clamno", model.getValue("/root/main/item1/clbs/clamno"));
  7343. modal("SMPIR31000", "1", "10", "10", "SMPIR31000", "/root/hidden/smpir31000/cond", "/root/init/item1", "", ""); // SMPIR31000_정산의뢰생성.xrw
  7344. }
  7345. function fGetSelectedUnitFlag() {
  7346. var clamkey = model.getValue("/root/main/item1/clbs/clamkey");
  7347. if (clamkey) { // 조회된 심사대상자가 있으면
  7348. var visibleRow = 0;
  7349. var rdounitflag = model.getValue("/root/hidden/list3/selectedUnitFlag");
  7350. if (rdounitflag == "-") {
  7351. for ( var i = 1; i < grd_clsphist.rows; i++) {
  7352. grd_clsphist.rowHidden(i) = false;
  7353. var rowstatus = grd_clsphist.rowstatus(i);
  7354. if (rowstatus > 3) { // 삭제상태
  7355. grd_clsphist.rowHidden(i) = true;
  7356. } else if (model.getValue("/root/chkJT001") == 'Y' && grd_clsphist.valueMatrix(i, grd_clsphist.colRef("spclcd")) == "JT001") {
  7357. grd_clsphist.rowHidden(i) = true;
  7358. } else {
  7359. visibleRow++;
  7360. }
  7361. }
  7362. } else if (rdounitflag == "M") {
  7363. for ( var i = 1; i < grd_clsphist.rows; i++) {
  7364. grd_clsphist.rowHidden(i) = false;
  7365. var rowstatus = grd_clsphist.rowstatus(i);
  7366. if (rowstatus > 3) { // 삭제상태
  7367. grd_clsphist.rowHidden(i) = true;
  7368. } else if (grd_clsphist.valueMatrix(i, grd_clsphist.colRef("unitflag")) != "M") {
  7369. grd_clsphist.rowHidden(i) = true;
  7370. } else {
  7371. visibleRow++;
  7372. }
  7373. }
  7374. } else if (rdounitflag == "J") {
  7375. for ( var i = 1; i < grd_clsphist.rows; i++) {
  7376. grd_clsphist.rowHidden(i) = false;
  7377. var rowstatus = grd_clsphist.rowstatus(i);
  7378. if (rowstatus > 3) { // 삭제상태
  7379. grd_clsphist.rowHidden(i) = true;
  7380. } else if (grd_clsphist.valueMatrix(i, grd_clsphist.colRef("unitflag")) != "J") {
  7381. grd_clsphist.rowHidden(i) = true;
  7382. }
  7383. if (model.getValue("/root/chkJT001") == 'Y' && grd_clsphist.valueMatrix(i, grd_clsphist.colRef("spclcd")) == "JT001") {
  7384. grd_clsphist.rowHidden(i) = true;
  7385. }
  7386. }
  7387. visibleRow = 1; // 줄단위가 선택된 상태에서는 자동으로 행추가를 하지 않는다.
  7388. } else { // rdounitflag == "JX999"
  7389. for ( var i = 1; i < grd_clsphist.rows; i++) {
  7390. grd_clsphist.rowHidden(i) = false;
  7391. var rowstatus = grd_clsphist.rowstatus(i);
  7392. if (rowstatus > 3) { // 삭제상태
  7393. grd_clsphist.rowHidden(i) = true;
  7394. } else if (grd_clsphist.valueMatrix(i, grd_clsphist.colRef("spclcd")) != "JX999") {
  7395. grd_clsphist.rowHidden(i) = true;
  7396. }
  7397. }
  7398. visibleRow = 1; // 줄단위가 선택된 상태에서는 자동으로 행추가를 하지 않는다.
  7399. }
  7400. if (checkAuth("X") && visibleRow == 0) { // 모든 row가 삭제 상태인 경우
  7401. fSpclGridInsertRow(); // 특정내역 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가"
  7402. } else {
  7403. grd_clsphist.row = 0;
  7404. }
  7405. }
  7406. }
  7407. function fGeCaseSelect(caseId, visible_val) {
  7408. var caseObj = document.all.item(caseId);
  7409. if (caseObj.selected) { // 기존에 이미 선택되어 있는 tab인데 해당 tab을 다시 선택한 경우
  7410. if (swt_spclmemo.attribute("height") == "608") { // 세로로 확대된 창을 원래대로 한다.
  7411. fCutSwitchSize();
  7412. } else { // textarea를 세로로 확대시킨다.
  7413. fExpandSwitchSize();
  7414. }
  7415. } else { // 기존에 선택되지 않은 tab인 경우
  7416. fCutSwitchSize();
  7417. }
  7418. model.toggle(caseId); // 해당 tab 으로 토글시킨다.
  7419. }
  7420. function fGetGrdCldihistEditCell() {
  7421. // col@type = "input" 일 경우 onentercell시점에 EditMode 상태 만들기
  7422. if (grd_cldihist.colType(grd_cldihist.col) == "input") {
  7423. grd_cldihist.editCell();
  7424. }
  7425. }
  7426. /* 환자기준 전송메세지작성, JHP. 2009.08.17 */
  7427. function fPatJudgPatMsgTrsm() {
  7428. if (!isNull(model.getvalue("/root/main/item1/clbs/pid"))) {
  7429. // 인스턴스생성
  7430. model.makeNode("/root/tmp/msgtrsm/info/instcd");
  7431. model.makeNode("/root/tmp/msgtrsm/info/msgwrtedd");
  7432. model.makeNode("/root/tmp/msgtrsm/info/msgwrteno");
  7433. model.makeNode("/root/tmp/msgtrsm/info/msgwrtehistno");
  7434. model.makeNode("/root/tmp/msgtrsm/info/histstat");
  7435. model.makeNode("/root/tmp/msgtrsm/info/pid");
  7436. model.makeNode("/root/tmp/msgtrsm/info/orddd");
  7437. model.makeNode("/root/tmp/msgtrsm/info/cretno");
  7438. model.makeNode("/root/tmp/msgtrsm/info/mskind");
  7439. model.makeNode("/root/tmp/msgtrsm/info/orddeptcd");
  7440. model.makeNode("/root/tmp/msgtrsm/info/orddrid");
  7441. model.makeNode("/root/tmp/msgtrsm/info/orddrnm");
  7442. model.makeNode("/root/tmp/msgtrsm/info/ordtype");
  7443. model.makeNode("/root/tmp/msgtrsm/info/kindflag");
  7444. model.makeNode("/root/tmp/msgtrsm/info/grupcalcscorcd");
  7445. model.makeNode("/root/tmp/msgtrsm/info/snglcalcscorcd");
  7446. model.makeNode("/root/tmp/msgtrsm/info/ordqty");
  7447. model.makeNode("/root/tmp/msgtrsm/info/ordtims");
  7448. model.makeNode("/root/tmp/msgtrsm/info/orddays");
  7449. model.makeNode("/root/tmp/msgtrsm/info/prcpdd");
  7450. model.makeNode("/root/tmp/msgtrsm/info/prcpno");
  7451. model.makeNode("/root/tmp/msgtrsm/info/prcppayflag");
  7452. model.makeNode("/root/tmp/msgtrsm/info/rgstrid");
  7453. model.makeNode("/root/tmp/msgtrsm/info/rgstdd");
  7454. model.makeNode("/root/tmp/msgtrsm/info/rgsttm");
  7455. model.makeNode("/root/tmp/msgtrsm/info/sendphone");
  7456. model.makeNode("/root/tmp/msgtrsm/info/anybodyyn");
  7457. model.makeNode("/root/tmp/msgtrsm/info/sendflag");
  7458. model.makeNode("/root/tmp/msgtrsm/info/senddate");
  7459. model.makeNode("/root/tmp/msgtrsm/info/sendid");
  7460. model.makeNode("/root/tmp/msgtrsm/info/deliveid");
  7461. model.makeNode("/root/tmp/msgtrsm/info/recvdate");
  7462. model.makeNode("/root/tmp/msgtrsm/info/recvid");
  7463. model.makeNode("/root/tmp/msgtrsm/info/recvcnfmyn");
  7464. model.makeNode("/root/tmp/msgtrsm/info/recvcnfmid");
  7465. model.makeNode("/root/tmp/msgtrsm/info/sendmsg");
  7466. model.makeNode("/root/tmp/msgtrsm/info/recvmsg");
  7467. model.makeNode("/root/tmp/msgtrsm/info/fstrgstrid");
  7468. model.makeNode("/root/tmp/msgtrsm/info/fstrgstdt");
  7469. model.makeNode("/root/tmp/msgtrsm/info/lastupdtrid");
  7470. model.makeNode("/root/tmp/msgtrsm/info/lastupdtdt");
  7471. // 값셋팅
  7472. // 세션값 받기
  7473. var sUserInfosS = getUserInfos();
  7474. sUserInfosS = sUserInfosS + "|";
  7475. var UserInfosS_Array = sUserInfosS.split("|");
  7476. var userid = UserInfosS_Array[0]; // 사용자번호
  7477. var usernm = UserInfosS_Array[1]; // 사용자이름
  7478. var posinstcd = UserInfosS_Array[6]; // 근무지기관코드 2009.04.15
  7479. var posinstnm = UserInfosS_Array[7]; // 근무지기관명 2009.04.15
  7480. var posdeptcd = UserInfosS_Array[4]; // 소속부서코드
  7481. var posdeptnm = UserInfosS_Array[5]; // 소속부서명
  7482. if (userid == null || userid == "" || userid == " " || userid == "-")
  7483. userid = "pam";
  7484. model.setValue("/root/tmp/msgtrsm/info/instcd", ""); // chk
  7485. model.setValue("/root/tmp/msgtrsm/info/msgwrtedd", getCurrentDate()); // chk
  7486. model.setValue("/root/tmp/msgtrsm/info/msgwrteno", ""); // chk
  7487. model.setValue("/root/tmp/msgtrsm/info/msgwrtehistno", ""); // chk
  7488. model.setValue("/root/tmp/msgtrsm/info/histstat", "Y"); // chk
  7489. model.setValue("/root/tmp/msgtrsm/info/pid", model.getValue("/root/main/item1/clbs/pid")); // chk
  7490. model.setValue("/root/tmp/msgtrsm/info/orddd", model.getValue("/root/main/item1/clbs/indd")); // chk
  7491. model.setValue("/root/tmp/msgtrsm/info/cretno", model.getValue("/root/main/item1/clbs//cretno")); // chk
  7492. model.setValue("/root/tmp/msgtrsm/info/mskind", "M"); // 외래기본 주유형, chk
  7493. model.setValue("/root/tmp/msgtrsm/info/orddeptcd", model.getValue("/root/main/item1/clbs/orddeptcd")); // chk
  7494. var drid = model.getValue("/root/main/item1/clbs/orddrid")
  7495. var drnm = model.getValue("/root/init/orddrid2/orddridlist[cd = '" + drid + "']/nm");
  7496. model.setValue("/root/tmp/msgtrsm/info/orddrid", model.getValue("/root/main/item1/clbs/orddrid")); // chk, TABLE에 적용안함.(값만확인)
  7497. model.setValue("/root/tmp/msgtrsm/info/orddrnm", drnm); // chk, TABLE에 적용안함.(값만확인)
  7498. model.setValue("/root/tmp/msgtrsm/info/ordtype", "O"); // 외래기본 'O', chk
  7499. model.setValue("/root/tmp/msgtrsm/info/kindflag", "P"); // 환자기준 'P', chk
  7500. model.setValue("/root/tmp/msgtrsm/info/grupcalcscorcd", "-");
  7501. model.setValue("/root/tmp/msgtrsm/info/snglcalcscorcd", "-");
  7502. model.setValue("/root/tmp/msgtrsm/info/ordqty", 0);
  7503. model.setValue("/root/tmp/msgtrsm/info/ordtims", 0);
  7504. model.setValue("/root/tmp/msgtrsm/info/orddays", 0);
  7505. model.setValue("/root/tmp/msgtrsm/info/prcpdd", "-");
  7506. model.setValue("/root/tmp/msgtrsm/info/prcpno", 0);
  7507. model.setValue("/root/tmp/msgtrsm/info/prcppayflag", "-");
  7508. model.setValue("/root/tmp/msgtrsm/info/rgstrid", "-"); // 서버단에서 조회하여 가져와야함. chk
  7509. model.setValue("/root/tmp/msgtrsm/info/rgstdd", "-"); // 서버단에서 조회하여 가져와야함. chk
  7510. model.setValue("/root/tmp/msgtrsm/info/rgsttm", "-"); // 서버단에서 조회하여 가져와야함. chk
  7511. model.setValue("/root/tmp/msgtrsm/info/sendphone", ""); // 서버단에서 조회하여 가져와야함. chk
  7512. model.setValue("/root/tmp/msgtrsm/info/anybodyyn", "N"); // 누구나 기본 'N', chk
  7513. model.setValue("/root/tmp/msgtrsm/info/sendflag", "I"); // 진료기본 'O', chk
  7514. model.setValue("/root/tmp/msgtrsm/info/senddate", ""); // 쿼리에서 timestamp chk
  7515. model.setValue("/root/tmp/msgtrsm/info/sendid", userid); // chk
  7516. model.setValue("/root/tmp/msgtrsm/info/deliveid", "-"); // 화면에서선택. chk
  7517. model.setValue("/root/tmp/msgtrsm/info/recvdate", ""); // chk
  7518. model.setValue("/root/tmp/msgtrsm/info/recvid", ""); // chk
  7519. model.setValue("/root/tmp/msgtrsm/info/recvcnfmyn", "N"); // 기본 비연속 'N', chk
  7520. model.setValue("/root/tmp/msgtrsm/info/recvcnfmid", userid); // chk
  7521. model.setValue("/root/tmp/msgtrsm/info/sendmsg", ""); // sendmsgvalue); 기본 처방코드, 처방명값가지고 시작. chk
  7522. model.setValue("/root/tmp/msgtrsm/info/recvmsg", ""); // chk
  7523. model.setValue("/root/tmp/msgtrsm/info/fstrgstrid", ""); // chk
  7524. model.setValue("/root/tmp/msgtrsm/info/fstrgstdt", ""); // chk
  7525. model.setValue("/root/tmp/msgtrsm/info/lastupdtrid", ""); // chk
  7526. model.setValue("/root/tmp/msgtrsm/info/lastupdtdt", ""); // chk
  7527. } else {
  7528. messageBox("기본정보가 ", "I004");
  7529. }
  7530. model.refresh();
  7531. modal("SPPIZ01900_심사환자메세지작성", "", "400", "300", "", "/root/tmp/msgtrsm/info", "/root/main/patinfo");
  7532. model.removenode("/root/tmp/msgtrsm");
  7533. }
  7534. /* 처방기준 전송메세지작성, JHP. 2009.08.17 */
  7535. function fOrderJudgPatMsgTrsm() {
  7536. if (!isNull(model.getvalue("/root/main/item1/clbs/pid"))) {
  7537. // 인스턴스생성
  7538. model.makeNode("/root/tmp/msgtrsm/info/instcd");
  7539. model.makeNode("/root/tmp/msgtrsm/info/msgwrtedd");
  7540. model.makeNode("/root/tmp/msgtrsm/info/msgwrteno");
  7541. model.makeNode("/root/tmp/msgtrsm/info/msgwrtehistno");
  7542. model.makeNode("/root/tmp/msgtrsm/info/histstat");
  7543. model.makeNode("/root/tmp/msgtrsm/info/pid");
  7544. model.makeNode("/root/tmp/msgtrsm/info/orddd");
  7545. model.makeNode("/root/tmp/msgtrsm/info/cretno");
  7546. model.makeNode("/root/tmp/msgtrsm/info/mskind");
  7547. model.makeNode("/root/tmp/msgtrsm/info/orddeptcd");
  7548. model.makeNode("/root/tmp/msgtrsm/info/orddrid");
  7549. model.makeNode("/root/tmp/msgtrsm/info/orddrnm");
  7550. model.makeNode("/root/tmp/msgtrsm/info/ordtype");
  7551. model.makeNode("/root/tmp/msgtrsm/info/kindflag");
  7552. model.makeNode("/root/tmp/msgtrsm/info/grupcalcscorcd");
  7553. model.makeNode("/root/tmp/msgtrsm/info/snglcalcscorcd");
  7554. model.makeNode("/root/tmp/msgtrsm/info/ordqty");
  7555. model.makeNode("/root/tmp/msgtrsm/info/ordtims");
  7556. model.makeNode("/root/tmp/msgtrsm/info/orddays");
  7557. model.makeNode("/root/tmp/msgtrsm/info/prcpdd");
  7558. model.makeNode("/root/tmp/msgtrsm/info/prcpno");
  7559. model.makeNode("/root/tmp/msgtrsm/info/prcppayflag");
  7560. model.makeNode("/root/tmp/msgtrsm/info/rgstrid");
  7561. model.makeNode("/root/tmp/msgtrsm/info/rgstdd");
  7562. model.makeNode("/root/tmp/msgtrsm/info/rgsttm");
  7563. model.makeNode("/root/tmp/msgtrsm/info/sendphone");
  7564. model.makeNode("/root/tmp/msgtrsm/info/anybodyyn");
  7565. model.makeNode("/root/tmp/msgtrsm/info/sendflag");
  7566. model.makeNode("/root/tmp/msgtrsm/info/senddate");
  7567. model.makeNode("/root/tmp/msgtrsm/info/sendid");
  7568. model.makeNode("/root/tmp/msgtrsm/info/deliveid");
  7569. model.makeNode("/root/tmp/msgtrsm/info/recvdate");
  7570. model.makeNode("/root/tmp/msgtrsm/info/recvid");
  7571. model.makeNode("/root/tmp/msgtrsm/info/recvcnfmyn");
  7572. model.makeNode("/root/tmp/msgtrsm/info/recvcnfmid");
  7573. model.makeNode("/root/tmp/msgtrsm/info/sendmsg");
  7574. model.makeNode("/root/tmp/msgtrsm/info/recvmsg");
  7575. model.makeNode("/root/tmp/msgtrsm/info/fstrgstrid");
  7576. model.makeNode("/root/tmp/msgtrsm/info/fstrgstdt");
  7577. model.makeNode("/root/tmp/msgtrsm/info/lastupdtrid");
  7578. model.makeNode("/root/tmp/msgtrsm/info/lastupdtdt");
  7579. // 값셋팅
  7580. // 처방이므로 처방row선택여부 확인
  7581. if (grd_clodhist.row <= 0) {
  7582. return;
  7583. }
  7584. // 세션값 받기
  7585. var sUserInfosS = getUserInfos();
  7586. sUserInfosS = sUserInfosS + "|";
  7587. var UserInfosS_Array = sUserInfosS.split("|");
  7588. var userid = UserInfosS_Array[0]; // 사용자번호
  7589. var usernm = UserInfosS_Array[1]; // 사용자이름
  7590. var posinstcd = UserInfosS_Array[6]; // 근무지기관코드 2009.04.15
  7591. var posinstnm = UserInfosS_Array[7]; // 근무지기관명 2009.04.15
  7592. var posdeptcd = UserInfosS_Array[4]; // 소속부서코드
  7593. var posdeptnm = UserInfosS_Array[5]; // 소속부서명
  7594. if (userid == null || userid == "" || userid == " " || userid == "-")
  7595. userid = "pam";
  7596. model.setValue("/root/tmp/msgtrsm/info/instcd", ""); // chk
  7597. model.setValue("/root/tmp/msgtrsm/info/msgwrtedd", getCurrentDate()); // chk
  7598. model.setValue("/root/tmp/msgtrsm/info/msgwrteno", ""); // chk
  7599. model.setValue("/root/tmp/msgtrsm/info/msgwrtehistno", ""); // chk
  7600. model.setValue("/root/tmp/msgtrsm/info/histstat", "Y"); // chk
  7601. model.setValue("/root/tmp/msgtrsm/info/pid", model.getValue("/root/main/item1/clbs/pid")); // chk
  7602. model.setValue("/root/tmp/msgtrsm/info/orddd", model.getValue("/root/main/item1/clbs/indd")); // chk
  7603. model.setValue("/root/tmp/msgtrsm/info/cretno", model.getValue("/root/main/item1/clbs/cretno")); // chk
  7604. model.setValue("/root/tmp/msgtrsm/info/mskind", "M"); // 외래기본 주유형, chk
  7605. model.setValue("/root/tmp/msgtrsm/info/orddeptcd", model.getValue("/root/main/item1/clbs/orddeptcd")); // chk
  7606. var drid = model.getValue("/root/main/item1/clbs/orddrid")
  7607. var drnm = model.getValue("/root/init/orddrid2/orddridlist[cd = '" + drid + "']/nm");
  7608. model.setValue("/root/tmp/msgtrsm/info/orddrid", model.getValue("/root/main/item1/clbs/orddrid")); // chk, TABLE에 적용안함.(값만확인)
  7609. model.setValue("/root/tmp/msgtrsm/info/orddrnm", drnm); // chk, TABLE에 적용안함.(값만확인)
  7610. model.setValue("/root/tmp/msgtrsm/info/ordtype", "I"); // 외래기본 'O', chk
  7611. model.setValue("/root/tmp/msgtrsm/info/kindflag", "O"); // 처방기준 'O', chk
  7612. model.setValue("/root/tmp/msgtrsm/info/grupcalcscorcd", model.getvalue("/root/main/list2/clod[" + grd_clodhist.row + "]/grupcalcscorcd")); // chk
  7613. model.setValue("/root/tmp/msgtrsm/info/snglcalcscorcd", model.getvalue("/root/main/list2/clod[" + grd_clodhist.row + "]/snglcalcscorcd")); // chk
  7614. model.setValue("/root/tmp/msgtrsm/info/ordqty", model.getvalue("/root/main/list2/clod[" + grd_clodhist.row + "]/drugqty")); // chk
  7615. model.setValue("/root/tmp/msgtrsm/info/ordtims", model.getvalue("/root/main/list2/clod[" + grd_clodhist.row + "]/tims")); // chk
  7616. model.setValue("/root/tmp/msgtrsm/info/orddays", model.getvalue("/root/main/list2/clod[" + grd_clodhist.row + "]/dayno")); // chk
  7617. model.setValue("/root/tmp/msgtrsm/info/prcpdd", ""); // chk, 화면에 미존재 서버단에서 조회하여 가져와야함.
  7618. model.setValue("/root/tmp/msgtrsm/info/prcpno", ""); // chk, 화면에 미존재 서버단에서 조회하여 가져와야함.
  7619. model.setValue("/root/tmp/msgtrsm/info/prcppayflag", model.getvalue("/root/main/list2/clod[" + grd_clodhist.row + "]/payflag")); // chk
  7620. model.setValue("/root/tmp/msgtrsm/info/rgstrid", "-"); // 서버단에서 조회하여 가져와야함. chk
  7621. model.setValue("/root/tmp/msgtrsm/info/rgstdd", "-"); // 서버단에서 조회하여 가져와야함. chk
  7622. model.setValue("/root/tmp/msgtrsm/info/rgsttm", "-"); // 서버단에서 조회하여 가져와야함. chk
  7623. model.setValue("/root/tmp/msgtrsm/info/sendphone", ""); // 서버단에서 조회하여 가져와야함. chk
  7624. model.setValue("/root/tmp/msgtrsm/info/anybodyyn", "N"); // 누구나 기본 'N', chk
  7625. model.setValue("/root/tmp/msgtrsm/info/sendflag", "O"); // 진료기본 'O', chk
  7626. model.setValue("/root/tmp/msgtrsm/info/senddate", ""); // 쿼리에서 timestamp chk
  7627. model.setValue("/root/tmp/msgtrsm/info/sendid", userid); // chk
  7628. model.setValue("/root/tmp/msgtrsm/info/deliveid", "-"); // 화면에서선택. chk
  7629. model.setValue("/root/tmp/msgtrsm/info/recvdate", ""); // chk
  7630. model.setValue("/root/tmp/msgtrsm/info/recvid", ""); // chk
  7631. model.setValue("/root/tmp/msgtrsm/info/recvcnfmyn", "N"); // 기본 비연속 'N', chk
  7632. model.setValue("/root/tmp/msgtrsm/info/recvcnfmid", userid); // chk
  7633. model.setValue("/root/tmp/msgtrsm/info/sendmsg", ""); // 기본 처방코드,처방명값가지고 시작. chk -> 변경 화면에서 그룹코드 명 조회하여 넣어줌. chk
  7634. model.setValue("/root/tmp/msgtrsm/info/recvmsg", ""); // chk
  7635. model.setValue("/root/tmp/msgtrsm/info/fstrgstrid", ""); // chk
  7636. model.setValue("/root/tmp/msgtrsm/info/fstrgstdt", ""); // chk
  7637. model.setValue("/root/tmp/msgtrsm/info/lastupdtrid", ""); // chk
  7638. model.setValue("/root/tmp/msgtrsm/info/lastupdtdt", ""); // chk
  7639. } else {
  7640. messageBox("기본정보가 ", "I004");
  7641. }
  7642. model.refresh();
  7643. modal("SPPIZ01900_심사환자메세지작성", "", "400", "300", "", "/root/tmp/msgtrsm/info", "/root/main/patinfo");
  7644. model.removenode("/root/tmp/msgtrsm");
  7645. }
  7646. /*
  7647. * 심사완료전상병특정내역체크 2012.07.11 plet2 1. 중증/산정특례 상병 체크- 상병 화면 주상병(no=1)의 MT002에 V
  7648. * Code 있으면 중증/산정특례 V252, V027은 제외 2. 특정내역에 MT002 체크 - 중증/산정특례 특정기호 관련 특정내역 3.
  7649. * 특정내역에 MT014 체크 - 중증/산정특례 자격 번호 관련 특정내역 //주상병이 v252이고 특정내역에 ct002코드가 없을때 발생
  7650. * 2012.07.05 plet2 //특정내역이 ct002이고 주상병에 v252코드가 없을때 발생 2012.07.05 plet2
  7651. * //불완전상병체크
  7652. */
  7653. function fGetDiagSpclcdCheck() {
  7654. var chk_vcode = model.getValue("/root/main/list1/cldi[diagseq='1']/vcode");
  7655. var chk_vcodeR = model.getValue("/root/main/list1/cldi[diagseq='1' and diagkindcd != 'R']/vcode"); //룰아웃제외
  7656. var chk_CT002 = model.getValue("/root/main/list3/clsp[spclcd='CT002' and insntstat !='D']/spclcd");
  7657. var chk_MT002 = model.getValue("/root/main/list3/clsp[spclcd='MT002' and insntstat !='D']/spclcd");
  7658. var chk_F001 = model.getValue("/root/main/list3/clsp[spclcd='MT002' and spclspec='F001' and insntstat !='D']/spclcd");
  7659. var chk_F003 = model.getValue("/root/main/list3/clsp[spclcd='MT002' and spclspec='F003' and insntstat !='D']/spclcd");
  7660. var chk_F004 = model.getValue("/root/main/list3/clsp[spclcd='MT002' and spclspec='F004' and insntstat !='D']/spclcd");
  7661. var chk_F005 = model.getValue("/root/main/list3/clsp[spclcd='MT002' and spclspec='F005' and insntstat !='D']/spclcd");
  7662. var chk_V001 = model.getValue("/root/main/list3/clsp[spclcd='MT002' and spclspec='V001' and insntstat !='D']/spclspec");
  7663. var chk_V008 = model.getValue("/root/main/list3/clsp[spclcd='MT002' and spclspec='V008' and insntstat !='D']/spclcd");
  7664. var chk_MT014 = model.getValue("/root/main/list3/clsp[spclcd='MT014' and insntstat !='D']/spclcd");
  7665. var kcd6chk = model.getValue("/root/main/list1/cldi[kcd6chk='Y' and rowstat !='U']/kcd6chk");
  7666. var clamkey = model.getValue("/root/main/item1/clbs/clamkey");
  7667. var chk_insukindcd = model.getValue("/root/main/item1/clbs/insukindcd"); // 보험유형
  7668. var chk_suppkindcd = model.getValue("/root/main/item1/clbs/suppkindcd"); // 보조유형
  7669. var chk_diagcd = model.getValue("/root/main/list1/cldi[diagseq='1']/diagcd"); // 주상병코드
  7670. var chk_diagcdR = model.getValue("/root/main/list1/cldi[diagseq='1' and diagkindcd != 'R']/diagcd"); //주상병코드룰아웃
  7671. var chk_pid = model.getValue("/root/main/item1/clbs/pid"); // 환자번호
  7672. var chk_ioflag = model.getValue("/root/main/item1/clbs/ioflag"); // 입원외래구분
  7673. var chk_ordfromdd = model.getValue("/root/main/item1/clbs/ordfromdd");
  7674. var chk_clamym = model.getValue("/root/main/item1/clbs/clamym"); // 청군년월
  7675. var chk_clamdg = model.getValue("/root/main/item1/clbs/clamdg"); // 차수
  7676. var chk_pidsn = model.getValue("/root/main/item1/clbs/pidsn"); // 순번
  7677. var chk_O3420 = model.getValue("/root/main/list1/cldi[diagcd='O3420']/diagcd");
  7678. var chk_JT005 = model.getValue("/root/main/list3/clsp[spclcd='JT005' and insntstat !='D']/spclspec"); // 임신주수
  7679. var chk_MS004 = model.getValue("/root/main/list3/clsp[spclcd='MS004' and insntstat !='D']/spclspec"); // 신생아체중
  7680. var chk_O365 = model.getValue("/root/main/list1/cldi[diagcd='O365' or diagcd='O366' ]/diagcd"); // 임신주수상병코드
  7681. var chk_rareobstflag = model.getValue("/root/main/item1/clbs[suppamt>0 and rareobstflag='L']/rareobstflag"); // 결핵이면서 지원금 있는
  7682. 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");
  7683. var chk_orddeptcd = model.getValue("/root/main/item1/clbs/orddeptcd"); // 진료과
  7684. var result = true;
  7685. if (clamkey) { // 조회된 심사대상자가 있으면
  7686. model.resetInstanceNode("/root/hidden/sppid21700/cond");
  7687. model.setValue("/root/hidden/sppid21700/cond/clamym", model.getValue("/root/main/item1/clbs/clamym"));
  7688. model.setValue("/root/hidden/sppid21700/cond/clamdg", model.getValue("/root/main/item1/clbs/clamdg"));
  7689. model.setValue("/root/hidden/sppid21700/cond/pid", model.getValue("/root/main/item1/clbs/pid"));
  7690. model.setValue("/root/hidden/sppid21700/cond/pidsn", model.getValue("/root/main/item1/clbs/pidsn"));
  7691. model.setValue("/root/hidden/sppid21700/cond/clamkey", model.getValue("/root/main/item1/clbs/clamkey"));
  7692. model.setValue("/root/hidden/sppid21700/cond/workflag", model.getValue("/root/main/item1/clbs/workflag"));
  7693. model.setValue("/root/hidden/sppid21700/cond/ioflag", "I");
  7694. submit("TRPID21701");
  7695. }
  7696. var snglcalcscorcdcnt = getNodesetCount("/root/main/list7/list1/clop");
  7697. var chk_396 = model.getValue("/root/main/list7/clop[efcyclscd='396']/efcyclscd");
  7698. // V252,V027,V191,V192제외
  7699. // F004,F005제외
  7700. // 주상병 불일치
  7701. // 주상병이 N180~N189 이면서 Vcode가 V001아닌 경우 체크
  7702. if (chk_vcodeR != "V252" && chk_vcodeR != "V027" && chk_vcodeR != "V191" && chk_vcodeR != "V192") {
  7703. if ((chk_MT002 == "" || chk_MT014 == "") && chk_vcodeR != "") {
  7704. if ((chk_diagcdR >= "N180" && chk_diagcdR <= "N189") && chk_V001 == "V001" && chk_MT014 == "") {
  7705. if (messageBox("주상병과 특정내역이 일치 하지 않습니다.!! (중증/산정특례),", "Q003") == 6) {
  7706. result = true;
  7707. } else {
  7708. result = false;
  7709. }
  7710. } else {
  7711. // 의료보호, 보조유형 1종 차상위는 제외 에이즈상병 제외 (V103)
  7712. if ((chk_vcodeR == "V103")
  7713. || (chk_insukindcd == "21" || chk_insukindcd == "22")
  7714. || (chk_insukindcd == "11" && (chk_suppkindcd == "32" || chk_suppkindcd == "60" || chk_suppkindcd == "88"))
  7715. || chk_suppkindcd == "00")
  7716. {
  7717. result = true;
  7718. } else {
  7719. if (messageBox("주상병과 특정내역이 일치 하지 않습니다.!! (중증/산정특례)", "Q003") == 6) {
  7720. result = true;
  7721. } else {
  7722. result = false;
  7723. }
  7724. }
  7725. }
  7726. } else if ((chk_MT002 != "" || chk_MT014 != "") && chk_vcodeR == "") {
  7727. if (chk_F003 != "" || chk_F004 != "" || chk_F005 != "" || chk_V008 || chk_F001 != "") {
  7728. result = true;
  7729. } else {
  7730. if (((chk_MT002 != "" || chk_MT014 != "") && chk_vcodeR == "" && !((chk_insukindcd == "21" || chk_insukindcd == "22") && chk_suppkindcd == "00")) || ((chk_MT002 == "" || chk_MT014 == "") && chk_vcodeR != "")) {
  7731. if (messageBox("주상병과 특정내역이 일치 하지 않습니다.!! (중증/산정특례),",
  7732. "Q003") == 6) {
  7733. result = true;
  7734. } else {
  7735. result = false;
  7736. }
  7737. }
  7738. }
  7739. } else if (chk_vcodeR == "V103" && chk_MT002 == "") {
  7740. if (messageBox("주상병과 특정내역이 일치 하지 않습니다.!! (중증/산정특례).", "Q003") == 6) {
  7741. result = true;
  7742. } else {
  7743. result = false;
  7744. }
  7745. } else if (chk_vcodeR != "" && chk_rareobstflag == "L" && cnt_MT002 > "0") {
  7746. if (messageBox("결핵환자는 결핵관련 특정기호(MT002) 이외에는 기재 할 수 없습니다.", "Q003") == 6) {
  7747. result = true;
  7748. } else {
  7749. result = false;
  7750. }
  7751. }
  7752. }
  7753. // 경증상병
  7754. // CT002불일치
  7755. // 주상병이 경증 + 건강보험이 정상이면서 원외 처방이 있고, CT002없는 경우/반대의경우 체크
  7756. if ((chk_vcodeR == "V252" && chk_CT002 == "" && snglcalcscorcdcnt > 0 && (chk_insukindcd == "11" && chk_suppkindcd == "00")) || (chk_vcodeR != "V252" && chk_CT002 != "" && snglcalcscorcdcnt > 0 && (chk_insukindcd == "11" && chk_suppkindcd == "00"))) {
  7757. if ((chk_diagcdR >= "E10" && chk_diagcdR <= "E149") && chk_396 != '396') {
  7758. if (messageBox("주상병과 특정내역이 일치 하지 않습니다.!! (경증)", "Q003") == 6) {
  7759. result = true;
  7760. } else {
  7761. result = false;
  7762. }
  7763. }
  7764. }
  7765. if (kcd6chk == "Y") {
  7766. if (messageBox("불완전상병이 존재 합니다.", "Q003") == 6) {
  7767. result = true;
  7768. } else {
  7769. result = false;
  7770. }
  7771. }
  7772. if (chk_vcodeR.length > 0) {
  7773. model.setValue("/root/send/chksuppkindflag/cond/diagcd", chk_diagcdR);
  7774. model.setValue("/root/send/chksuppkindflag/cond/spclcd", chk_vcodeR);
  7775. model.setValue("/root/send/chksuppkindflag/cond/ioflag", chk_ioflag);
  7776. model.setValue("/root/send/chksuppkindflag/cond/ordfromdd", chk_ordfromdd);
  7777. model.setValue("/root/send/chksuppkindflag/cond/clamym", chk_clamym);
  7778. model.setValue("/root/send/chksuppkindflag/cond/clamdg", chk_clamdg);
  7779. model.setValue("/root/send/chksuppkindflag/cond/pidsn", chk_clamdg);
  7780. model.setValue("/root/send/chksuppkindflag/cond/pid", chk_pid);
  7781. model.setValue("/root/send/chksuppkindflag/cond/insukindcd", chk_insukindcd);
  7782. // 상병 + 번호 + 처방
  7783. // 상병 + 번호
  7784. // 보조유형 불일치 체크
  7785. submit("TRPID20314");
  7786. var chksuppkindflag = model.getValue("/root/hidden/chksuppkindflag/rslt/chksuppkindflag");
  7787. if (chksuppkindflag != "" && chksuppkindflag != chk_suppkindcd && chk_diagcdR != "" && chk_suppkindcd != "00") {
  7788. if (messageBox("주상병과 보조유형이 일치 하지 않습니다.", "Q003") == 6) {
  7789. result = true;
  7790. } else {
  7791. result = false;
  7792. }
  7793. }
  7794. }
  7795. // 특정 분만진단에 필수 부진단 유무 체크
  7796. // O820이 주상병인 환자가 O3420 상병이 없을 경우 체크
  7797. if (chk_diagcd == 'O820' && chk_O3420.length == 0) {
  7798. if (messageBox("반복제왕절개 환자입니다.", "Q003") == 6) {
  7799. result = true;
  7800. } else {
  7801. var ans = messageBox("O3420 상병을 입력", "S001");
  7802. if (ans == 6) {
  7803. model.setFocus("grd_cldihist");
  7804. fDiagGridInsertRow("Y", "N");
  7805. grd_cldihist.bottomRow = grd_cldihist.rows;
  7806. model.refresh();
  7807. var maxseq = model.getXPathValue("max(/root/main/list1/cldi[*]/diagseq)");
  7808. model.setValue("/root/main/list1/cldi[diagseq='" + maxseq + "']/diagcd", "O3420");
  7809. model.setValue("/root/main/list1/cldi[diagseq='" + maxseq + "']/diagnm", "이전의 제왕절개로 인한 흉터의 산모 관리");
  7810. }
  7811. result = false;
  7812. }
  7813. }
  7814. // 임신주수별 체중과 진단 체크
  7815. // 신생아 체중관련 상병누락입니다 (O365 or O366)
  7816. if (chk_JT005.length > 0 && chk_MS004.length > 0) {
  7817. var nwbabyweight = parseInt(chk_MS004);
  7818. var minweight = parseInt(model.getValue("/root/main/nbwt/nbwtlist[prgntweek='" + chk_JT005 + "']/minweight"));
  7819. var maxweight = parseInt(model.getValue("/root/main/nbwt/nbwtlist[prgntweek='" + chk_JT005 + "']/maxweight"));
  7820. if (chk_O365.length == 0 && (nwbabyweight <= minweight || nwbabyweight >= maxweight)) {
  7821. if (messageBox("신생아 체중관련 상병누락 환자입니다.", "Q003") == 6) {
  7822. result = true;
  7823. } else {
  7824. result = false;
  7825. }
  7826. }
  7827. }
  7828. // I20 ~I25 을 입력 하면 순환기,흉부외과는 주상병명이면 통과 하고타과 면 주상병명 으로 입력 하면 입력이 안되도록
  7829. if ((chk_diagcd >= "I200" && chk_diagcd <= "I2599") && !(chk_orddeptcd == "2070000000" || chk_orddeptcd == "2010400000")) {
  7830. if (messageBox("순환기내과, 흉부외과 외 주상병 할 수 없는 상병 입니다.", "Q003") == 6) {
  7831. result = true;
  7832. } else {
  7833. result = false;
  7834. }
  7835. }
  7836. var clbs_licnsno = model.getValue("/root/main/item1/clbs/licnsno");
  7837. var cldi_licnsno = model.getValue("/root/main/list1/cldi[diagseq='1']/licnsno");
  7838. var clod_snglcalcscorcd = model.getValue("/root/main/list8/clod[item='0101' or item='0102']/snglcalcscorcd");
  7839. if (clbs_licnsno != cldi_licnsno) {
  7840. if (grd_cldihist.rowstatus(1) != 1 && grd_cldihist.rowstatus(1) != 3) {
  7841. grd_cldihist.rowstatus(1) = 2;
  7842. }
  7843. if (grd_cldihist.rowstatus(1) != 1 && grd_cldihist.rowstatus(1) != 3) {
  7844. grd_clodhist.rowstatus(grd_clodhist.findRow(clod_snglcalcscorcd,grd_clodhist.fixedRows, grd_clodhist.colRef("snglcalcscorcd"), false, true)) = 2;
  7845. }
  7846. }
  7847. var holigbn = model.getValue("/root/main/item1/clbs/holigbn");
  7848. var holifromdd = model.getValue("/root/main/item1/clbs/holifromdd");
  7849. var holitodd = model.getValue("/root/main/item1/clbs/holitodd");
  7850. if (holigbn == "Y" && clod_snglcalcscorcd.length > 0) {
  7851. if (messageBox("진료의가 " + holifromdd + " ~ " + holitodd + " 기간동안 해외 출장입니다. 진료의사를 변경하세요.", "Q003") == 6) {
  7852. result = true;
  7853. } else {
  7854. result = false;
  7855. }
  7856. }
  7857. return result;
  7858. }
  7859. function fSaveClspList() {
  7860. if (btn_save.disabled == false && "M" == "S") {
  7861. // 인적사항
  7862. var initclbs = instance1.selectNodesXml("/root/hidden/item1/initclbs/clbs");
  7863. var currentclbs = instance1.selectNodesXml("/root/main/item1/clbs");
  7864. model.copyNode("/root/send/item1/clbs", "/root/main/item1/clbs");
  7865. model.makeValue("/root/send/item1/clbs/clbsupdateyn", "N"); // 인적사항 저장여부
  7866. // 심사상태를 '저장' 또는 '심사완료' 상태로 저장한다.
  7867. model.makeValue("/root/send/item1/clbs/judgendyn", "B"); // 사후심사-심사완료여부 (P0151) - B: 심사중, C: 심사완료
  7868. for ( var j = grd_clsphist.fixedRows; j < grd_clsphist.rows; j++) {
  7869. var spclLnNo = model.getValue("/root/main/list3/clsp[" + j + "]/seqno");
  7870. if (spclLnNo.substr(0, 1) == "D") {
  7871. model.setValue("/root/main/list3/clsp[" + j + "]/seqno", spclLnNo.substr(1, spclLnNo.length));
  7872. }
  7873. }
  7874. // 기타메모(JX999)를 특정내역 형식에 맞춰 설정
  7875. fSetSpclSpecJX999();
  7876. var updtdata = getGridUpdateData(grd_clsphist); // (tfHelper.js) 그리드 업데이트 데이터 반환, 업데이트 정보가 없을경우 "" 반환
  7877. if (updtdata) {
  7878. model.makeValue("/root/send/list3/clsp", updtdata);
  7879. }
  7880. submit("TXPID20315");
  7881. model.refreshpart("/root/main/list3");
  7882. fGetSelectedUnitFlag();
  7883. }
  7884. }
  7885. function fGetKDrgOpenPopup(){
  7886. var pid = model.getValue("/root/main/item1/clbs/pid");
  7887. var pidsn = model.getValue("/root/main/item1/clbs/pidsn");
  7888. var clamdg = model.getValue("/root/main/item1/clbs/clamdg");
  7889. var clamym = model.getValue("/root/main/item1/clbs/clamym");
  7890. var ordrsltcd = model.getValue("/root/main/item1/clbs/ordrsltcd");
  7891. setParameter("pid", pid);
  7892. setParameter("pidsn", pidsn);
  7893. setParameter("clamdg", clamdg);
  7894. setParameter("clamym", clamym);
  7895. setParameter("ordrsltcd", ordrsltcd);
  7896. open("SPPID31000" ,"", "10", "10", "SPPID31000", "/root/hidden/SPPID31000/cond", "/root/send/data/drginfo", "", "");
  7897. }