MMO001.js 324 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363
  1. /*function list
  2. copyNodeSet: NodeSet (child node를 포함하여 전체 nodeset을 복사한다.)Copy
  3. getNodeSetCnt: NodeSet의 최종길이를 구한다.
  4. addCopyNode: Source Node의 child node를 Destination의 node로 append한다.
  5. addCopyNodeset: Source Node의 child nodelist를 Destination의 nodelist로 append한다.
  6. rgstScrnEnvEstb: 진료대상자 리스트의 그리드 정보를 등록한다.
  7. setScrnEnvEstb: 화면 환경설정 적용
  8. isNumber: 숫자여부를 확인하여 return함
  9. addPrcp: 선택된 처방을 목적지에 보낸다. ( addPrcpDetl 이용 )
  10. addPrcpDetl: 선택된 처방을 목적지에 보낸다. ( 그룹처방일 경우 묶인 내용도 전송한다. )
  11. addPrcpSetValue: 처방main에 넘기기 전에 기본값을 setting한다.
  12. focusMain: 포커스를 메인으로 한다.
  13. appendChildPrcp: appendChild 공통함수로
  14. addDiagSetValue: 선택된 진단명을 진단 instance에처 맵핑한다.
  15. prcpGroupSrch: 그룹코드 M의 싱글코드 검색
  16. prcpDirecSrch: 지시처방 J의 싱글코드 검색
  17. makePrcpNm: 처방내역만들기
  18. fContPrcpDd: 지정일자처리(연속처방)
  19. fContPrcpDdInit: 지정일자초기화(연속처방)
  20. fPrcpHopeDd: 희망일자처리
  21. fDateFormat: 날짜모양바꾸기
  22. getArrayData: split을 이용한 배열값 가져오기
  23. reqGetDrList: 부서에 소속된 의사 조회
  24. reqGetDeptList: 부서코드, 부서명 조회
  25. reqGetWardList: 병동코드, 병동명 조회
  26. getArrayData: split을 이용한 배열값 가져오기
  27. fIsHangul: 데이터 한글인지 영문인지 구분해주는 함수
  28. fIvwDetlVwCom: 공통 상세보기
  29. compareNodeVal: 두 NodeList와 NodeValue값을 비교 결과에 따라 true, false를 return한다.
  30. reqGetRoomList: 병실코드, 병실명 조회
  31. reqPatInfo: 환자정보 조회
  32. fAltDrug: 대체약이 있을경우 팝업처리
  33. initScrnCol: 화면컬럼 조회 및 설정
  34. fPrcpSrchArg: 처방검색
  35. fPrcpModal: 팝업위치가 저장되지 않는 modaliss 팝업 띄우기
  36. fPrcpOpen: 팝업위치가 저장되지 않는 modal 팝업 띄우기
  37. getPrcpNodeListCSV: 노드리스트를 CSV로 반환한다.
  38. fSaveGridToExcel : 그리드 데이터 엑셀저장
  39. fSaveSign: Sing 데이터 저장 함수
  40. fGetPrcpCodeInfo: 처방 코드 정보를 조회 하는 함수 addPrcpSetValue()에서 값을 셋팅 할때 처방 코드별 참조자료를 셋팅 한다.
  41. mmofReqGetCnstTypeComboList : 협진분류콤보리스트 조회
  42. reqSetMonitoringLog: 속도체크를 위한 모니터링 로그 데이터 생성. 2013.06.27 엄영만
  43. */
  44. //변수선언
  45. var prcpnmCol = 5; //처방명 컬럼 index
  46. var prcpcdCol = 4; //처방명 컬럼 index
  47. var diagnmCol = 4; //처방명 컬럼 index
  48. var icd10cdCol = 3; //처방명 컬럼 index
  49. //2012.02.09 교육서버의 htmlwindow.DEVSystem 값을 true로 변경 함에 따라 같이 수정.
  50. //if (htmlwindow.DEVSystem != "true") {
  51. var signyn = "Y"; //전자서명 사용하는 check 서버 에러시 N으로 수정
  52. //} else {
  53. // var signyn = "N"; //전자서명 사용하는 check 서버 에러시 N으로 수정
  54. //}
  55. var volflag = "time"; //1일 총용량 구분
  56. var ocrcalcscorcd = ""; //OCR print
  57. var restantimicyn = ""; //제한항생제 저장
  58. var dietcnt = 0; //식이처방 조,중,식 추가row cnt
  59. var gridprcpsrchflag = "N"; //그리드 처방검색에서 앤터로 처방 넘겨줄때 검색이 다시 타는 것을 막음
  60. /**
  61. * @desc : NodeSet (child node를 포함하여 전체 nodeset을 복사한다.)Copy
  62. * @param : strDest : 목적지 주소값
  63. * : strSrc : 출발지 주소값
  64. * : ex) copyNodeSet("/root/hidden/diaginfo", "/root/main/diaginfo");
  65. * @return : void
  66. * @authur : 이상현 200?. ?. ??
  67. 수정자 - 오지훈 2007. 3. 12
  68. * @---------------------------------------------------
  69. */
  70. function copyNodeset(strDest, strSrc, mode, destModel, srcModel)
  71. {
  72. if(mode == null)
  73. mode = "replace";
  74. if(destModel == null)
  75. destModel = model;
  76. if(srcModel == null)
  77. srcModel = model;
  78. if(mode == "replace")
  79. destModel.removeNodeset(strDest);// 대상 노드를 삭제한다.
  80. //var destListLen = 0;
  81. var destNodeList = destModel.instances(0).selectNodes(strDest);
  82. //if(destNodeList != null)
  83. var destListLen = destNodeList.length;
  84. var srcNodeList = srcModel.instances(0).selectNodes(strSrc);
  85. for(var i = 0; i < srcNodeList.length; i++)
  86. {
  87. var strDest1 = strDest + "[" + (i + 1 + destListLen) + "]";
  88. destModel.makeNode(strDest1);
  89. var destNode = destModel.instances(0).selectSingleNode(strDest1);
  90. var srcNode = srcNodeList.item(i);
  91. var srcChildList = srcNode.childNodes;
  92. for(var j = 0; j < srcChildList.length; j++)
  93. destNode.appendChild(srcChildList.item(j).cloneNode(true));
  94. }
  95. }
  96. /**
  97. * @desc : NodeSet의 최종길이를 구한다.
  98. * @param : path : xpath
  99. * : ex) getNodeSetCnt("/root/hidden/diaginfo");
  100. * @return : NodeSet 최종 길이값
  101. * @authur : 이상현 200?. ?. ??
  102. 수정자 - 오지훈 2007. 3. 12
  103. * @---------------------------------------------------
  104. */
  105. function getNodeSetCnt(path)
  106. {
  107. var insXml = model.instances(0);
  108. var nodeList = insXml.selectNodes(path);
  109. return nodeList.length;
  110. }
  111. /**
  112. * @desc : Source Node의 child node를 Destination의 node로 append한다.
  113. * @param : strDest - 도착node path
  114. * : strSrc - 출발node path
  115. * @return : void
  116. * @authur : 오지훈 2007. 3. 21
  117. * @---------------------------------------------------
  118. */
  119. function addCopyNode(strDest, strSrc){
  120. var srcNodeList = model.instances(0).selectNodes(strSrc);
  121. var pDestNode = model.instances.item(0).selectSingleNode(strDest).parentNode;
  122. for( var i = 1; i < srcNodeList.length + 1 ; i++ ) {
  123. var iRow = i - 1;
  124. pDestNode.appendChild(srcNodeList.item(iRow).cloneNode(true));
  125. }
  126. }
  127. /**
  128. * @desc : Source Node의 child nodelist를 Destination의 nodelist로 append한다.
  129. * @param : strDest - 도착node path
  130. * : strSrc - 출발node path
  131. * @return : void
  132. * @authur : 이상현 2007. 3. 27
  133. * @---------------------------------------------------
  134. */
  135. function addCopyNodeset(strDest, strSrc, mode, destModel, srcModel) {
  136. if( destModel == null || destModel =="" )
  137. destModel = document.models.item(0);
  138. if( srcModel == null || srcModel =="" )
  139. srcModel = document.models.item(0);
  140. var srcNodeList = srcModel.instances(0).selectNodes(strSrc);
  141. var srcNode;
  142. var pDestNode = destModel.instances.item(0).selectSingleNode(strDest).parentNode;
  143. if( mode == "replace" || mode == null ) {
  144. destModel.removeNodeset(strDest);
  145. while( srcNode = srcNodeList.nextNode() ) {
  146. pDestNode.appendChild(srcNode.cloneNode(true));
  147. }
  148. }
  149. else if( mode == "after" ) {
  150. while( srcNode = srcNodeList.nextNode() ) {
  151. pDestNode.appendChild(srcNode.cloneNode(true));
  152. }
  153. }
  154. else if( mode == "before" ) {
  155. var destNode;
  156. for( var i = srcNodeList.length - 1; i >= 0; i-- ) {
  157. destNode = destModel.instances.item(0).selectSingleNode(strDest + "[1]");
  158. pDestNode.insertBefore(srcNodeList.item(i).cloneNode(true), destNode);
  159. }
  160. }
  161. }
  162. /**
  163. * @desc : 화면 환경설정 등록
  164. * @param : grdObj : 그리드 Object ID
  165. * @return : void
  166. * @authur : 오지훈 2007. 3. 27
  167. * @---------------------------------------------------
  168. */
  169. function rgstScrnEnvEstb(grdObj){
  170. var compscnts = "";
  171. var compsrefcnts = "";
  172. var compssizecnts = "";
  173. var totCol = grdObj.cols;
  174. for(var i = 0 ; i < totCol ; i++){
  175. var tmp_caption = grdObj.textmatrix(0, i);
  176. var compscnts = compscnts + tmp_caption + "^";
  177. var tmp_ref = grdObj.colAttribute(i, "ref");
  178. var compsrefcnts = compsrefcnts + tmp_ref + "^";
  179. var tmp_size = grdObj.colWidth(i);
  180. var compssizecnts = compssizecnts + tmp_size + "^";
  181. }
  182. var len = compscnts.length;
  183. var compscnts = compscnts.substring(0, len-1);
  184. var len = compsrefcnts.length;
  185. var compsrefcnts = compsrefcnts.substring(0, len-1);
  186. var len = compssizecnts.length;
  187. var compssizecnts = compssizecnts.substring(0, len-1);
  188. model.makeValue("/root/send/savedata/compscnts" ,compscnts);
  189. model.makeValue("/root/send/savedata/compsrefcnts" ,compsrefcnts);
  190. model.makeValue("/root/send/savedata/compssizecnts" ,compssizecnts);
  191. model.makeValue("/root/send/savedata/scrnid" ,model.getValue("/root/main/cond/scrnid"));
  192. model.makeValue("/root/send/savedata/compscd" ,model.getValue("/root/hidden/userscrnenvinfo/gridseq/compscd"));
  193. submit("TXMMB01102");
  194. }
  195. /**
  196. * @desc : 화면 환경설정 적용
  197. * @param : grdObj - 그리드 Object ID
  198. * @return : void
  199. * @authur : 오지훈 2007. 3. 27
  200. * @---------------------------------------------------
  201. */
  202. function setScrnEnvEstb(grdObj, compscnts, compsrefcnts, compssizecnts){
  203. var refArray = compsrefcnts.split("^");
  204. var sizeArray = compssizecnts.split("^");
  205. //var captArray = compscnts.split("^");
  206. for(var i=0;i<refArray.length;i++){
  207. grdObj.colAttribute(i, "ref") = refArray[i];
  208. //alert(sizeArray[i]+ " , " + captArray[i]);
  209. grdObj.colWidth(i) = sizeArray[i];
  210. if(sizeArray[i] == 0){ //size가 0인 경우 colhidden
  211. grdObj.colhidden(i) = false;
  212. }
  213. }
  214. grdObj.caption = compscnts;
  215. model.recalculate();
  216. grdObj.rebuild();
  217. }
  218. /**
  219. * @desc : 숫자여부 판단
  220. * @param : String 객체
  221. * @return : 숫자일 경우 : true , 그 외의 경우 : false
  222. * @authur : 오지훈 2007. 3. 27
  223. */
  224. function isNumber(str) {
  225. str += ''; // 문자열로 변환
  226. str = str.replace(/^\s*|\s*$/g, ''); // 좌우 공백 제거
  227. if (str == '' || isNaN(str)) return false;
  228. return true;
  229. }
  230. /**
  231. * @desc : check 된 Source Node의 값을 목적지에 Append Node 한다.(처방검색)
  232. * @param : objFlag - child or else
  233. : strSrc - 출발지 Node
  234. : strDest - 목적지 Node
  235. : multiFlag - 복수 add 여부
  236. : checkNM - check로 사용할 instance명
  237. : checkFlag - check시 Value
  238. : grdObj - 더블클릭시 값을 넘기는 그리드 명
  239. : prcpNmClearFlag - 검색 row에 검색명 클리어암㈉?
  240. : sCopyInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술, 05 CP, 06 항암 M0034
  241. : ex) addPrcp ( "child", "/root/prcpsrch/prcplist", "/root/main/prcp", "N", "status", "I", grd_prcpsrchlist, "N");
  242. * @return : void
  243. * @authur : 마정민 2007. 3. 12
  244. * @---------------------------------------------------
  245. */
  246. function addPrcp ( objFlag, strSrc, strDest, multiFlag, checkNM, checkFlag, grdObj, prcpNmClearFlag, sCopyInptFlag ) {
  247. var sRTC = "/root/temp/rtc"; // 처방복사 실시간 체크(RealTimeCheck)변수 노드 경로
  248. try {
  249. if (document.all("TRMMO00151") == null ) {
  250. addPrcp_Web(objFlag, strSrc, strDest, multiFlag, checkNM, checkFlag, grdObj, prcpNmClearFlag, sCopyInptFlag);
  251. } else {
  252. model.setValue ( "/root/send/cond1", getUserInfo("dutplceinstcd"));
  253. model.setValue ( "/root/send/cond2", "435"); // 복사시 실시간 체크를 위한 하드코드 그룹
  254. model.setValue ( "/root/send/cond3", getCurrentDate()); // 적용일자
  255. submit ( "TRMMO00151", false ); // 처방복사 실시간 체크(RealTimeCheck)변수 설정
  256. var sNewLogic = model.getValue(sRTC + "/codeinfo[hardcdno='436']/trgtcd"); // 신규로직 적용여부
  257. var sScreenID = getScreenID();
  258. var sUserID = getUserInfo("userid");
  259. if(sNewLogic == "Y") { // Y 이면 아래에 코드는 제외 조건으로 처리 한다. CP 제외 (CP 적용버튼 클릭시 수정해야함.)
  260. if ( isNull(model.getValue(sRTC + "/codeinfo[hardcdno='437' and trgtcd='"+sCopyInptFlag+"']/trgtcd"))
  261. && isNull(model.getValue(sRTC + "/codeinfo[hardcdno='438' and trgtcd='"+sScreenID+"']/trgtcd")) ) {
  262. addPrcp_App(objFlag, strSrc, strDest, multiFlag, checkNM, checkFlag, grdObj, prcpNmClearFlag, sCopyInptFlag);
  263. } else {
  264. addPrcp_Web(objFlag, strSrc, strDest, multiFlag, checkNM, checkFlag, grdObj, prcpNmClearFlag, sCopyInptFlag);
  265. }
  266. } else if (sNewLogic == "S"
  267. && !isNull(model.getValue(sRTC + "/codeinfo[hardcdno='437' and trgtcd='"+sCopyInptFlag+"']/trgtcd"))
  268. && !isNull(model.getValue(sRTC + "/codeinfo[hardcdno='438' and trgtcd='"+sScreenID+"']/trgtcd"))
  269. && !isNull(model.getValue(sRTC + "/codeinfo[hardcdno='439' and trgtcd='"+sUserID+"']/trgtcd")) ) {
  270. addPrcp_App(objFlag, strSrc, strDest, multiFlag, checkNM, checkFlag, grdObj, prcpNmClearFlag, sCopyInptFlag);
  271. } else {
  272. addPrcp_Web(objFlag, strSrc, strDest, multiFlag, checkNM, checkFlag, grdObj, prcpNmClearFlag, sCopyInptFlag);
  273. }
  274. }
  275. } catch(err) {
  276. messageBox ( "addPrcp() 실행 중 오류가 발생 하였습니다. 전산실(6598)로 연락 부탁드립니다.", "E" );
  277. } finally {
  278. model.removeNodeset(sRTC);
  279. }
  280. }
  281. /**
  282. * @desc : check 된 Source Node의 값을 목적지에 Append Node 한다.(처방검색)
  283. * @param : objFlag - child or else
  284. : strSrc - 출발지 Node
  285. : strDest - 목적지 Node
  286. : multiFlag - 복수 add 여부
  287. : checkNM - check로 사용할 instance명
  288. : checkFlag - check시 Value
  289. : grdObj - 더블클릭시 값을 넘기는 그리드 명
  290. : prcpNmClearFlag - 검색 row에 검색명 클리어암㈉?
  291. : sCopyInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술, 05 CP, 06 항암 M0034
  292. : ex) addPrcp ( "child", "/root/prcpsrch/prcplist", "/root/main/prcp", "N", "status", "I", grd_prcpsrchlist, "N");
  293. * @return : void
  294. * @authur : 마정민 2007. 3. 12
  295. * @---------------------------------------------------
  296. */
  297. function addPrcp_App(objFlag, strSrc, strDest, multiFlag, checkNM, checkFlag, grdObj, prcpNmClearFlag, sCopyInptFlag) {
  298. var startStepDate = new Date(); // 각 업부 시작 시간
  299. var endStepDate = null; // 각 업부 종료후 시간
  300. var step1Elapsed = null; // 코드별 체크 전 소요시간
  301. var step2Elapsed = null; // 코드별 체크 소요시간
  302. var step3Elapsed = null; // 코드별 체크 후 소요시간
  303. var nSrchRow = 0; // 검색행 Row번호
  304. var nCopyCnt = 0; // 복사 갯수
  305. var sScreenID = getScreenID(); // 호출 화면 아이디
  306. var sRowKey = ""; // sRowKey
  307. var sCopykeys = "";
  308. var sCopyIoFlag = "";
  309. var sBfGenrFlag = "";
  310. var sNowGenrFlag = "";
  311. // 소스노드의 Key값을 생성한다. 2013.07.05 엄영만
  312. var srcNodeList = model.instances(0).selectNodes(strSrc); //or instance1.selectNodes(strSrc)
  313. if ( multiFlag == "Y" ){
  314. var sb = new StringBuffer();
  315. for( var i = 1; i <= srcNodeList.length; i++ ) {
  316. if ( model.getValue( strSrc + "[" + i + "]/" + checkNM) == checkFlag ) {
  317. sRowKey = model.getValue( strSrc + "[" + i + "]/rowkey");
  318. if(isNull(sRowKey)) {
  319. continue;
  320. } else {
  321. if(sCopyInptFlag == "01") { // 전처방 조회 일때 외래/입원구분
  322. sNowGenrFlag = model.getValue( strSrc + "[" + i + "]/prcpgenrflag");
  323. if (nCopyCnt == 0) {
  324. sBfGenrFlag = sNowGenrFlag;
  325. if (sNowGenrFlag == "O" || sNowGenrFlag == "S") { // 입원 외래 처방 구분
  326. sCopyIoFlag = "O";
  327. } else {
  328. sCopyIoFlag = "I";
  329. }
  330. } else { // 퇴원 후 외래 처방과 동시 복사 블러킹
  331. if (sBfGenrFlag != sNowGenrFlag) {
  332. messageBox ( "퇴원후 외래 처방과 입원 처방을 동시에 복사 하실 수 없습니다.", "I999" );
  333. return;
  334. }
  335. }
  336. }
  337. sb.append("'" + sRowKey + "'");
  338. nCopyCnt++;
  339. }
  340. }
  341. }
  342. sCopykeys = sb.toString(",");
  343. } else {
  344. sRowKey = model.getValue( strSrc + "[" + grdObj.row + "]/rowkey");
  345. if(isNull(sRowKey)) {
  346. return 0;
  347. } else {
  348. sCopykeys = "'" + sRowKey + "'";
  349. if (sCopyInptFlag == "01") { // 전처방 조회 일때 외래/입원구분
  350. sCopyIoFlag = model.getValue( strSrc + "[" + grdObj.row + "]/prcpgenrflag");
  351. if (sCopyIoFlag == "O" || sCopyIoFlag == "S") { // 입원 외래 처방 구분
  352. sCopyIoFlag = "O";
  353. } else {
  354. sCopyIoFlag = "I";
  355. }
  356. }
  357. nCopyCnt = 1;
  358. }
  359. }
  360. endStepDate = new Date(); // 각 업부 종료후 시간
  361. step1Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 소요시간
  362. startStepDate = new Date(); // 각 업부 시작 시간
  363. if(isNull(sCopykeys)){ // 조회할 코드가 있을경우에만 실행하도록 수정함.
  364. return 0;
  365. }
  366. if ( objFlag == "child") {
  367. opener.javascript.addPrcpDetl_App(strDest, sCopyInptFlag, sScreenID, sCopykeys, sCopyIoFlag);
  368. var destNodeList = opener.model.instances(0).selectNodes( strDest + "/prcplist" );
  369. } else {
  370. addPrcpDetl_App(strDest, sCopyInptFlag, sScreenID, sCopykeys, sCopyIoFlag);
  371. var destNodeList = model.instances(0).selectNodes( strDest + "/prcplist" );
  372. }
  373. endStepDate = new Date(); // 각 업부 종료후 시간
  374. step2Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 소요시간
  375. startStepDate = new Date(); // 각 업부 시작 시간
  376. if(destNodeList.length == 0) {
  377. nSrchRow = 1;
  378. } else {
  379. nSrchRow = destNodeList.length;
  380. }
  381. fHosinPrcpResnChk (objFlag, strDest );
  382. focusMain( nSrchRow, objFlag, prcpNmClearFlag);
  383. //KNUH, 약속처방 복사 시 치식 팝업이 한번만 뜨고 다른 치과처방에 동일하게 적용되도록 함. 처방복사가 완료되면 임시 instance는 제거함. (2011.03.28 JJE)
  384. if ( objFlag == "child" ) {
  385. opener.model.removeNodeset("/root/main/toot_prcp");
  386. }else{
  387. model.removeNodeset("/root/main/toot_prcp");
  388. }
  389. // 20080925 항생제 추가 시는 그리드 editting을 위해 색 변경 로직 생략 by MoonSH
  390. var cdssFlag = getParameter( "SPMMD01600_flag");
  391. clearParameter( "SPMMD01600_flag", "");
  392. if (cdssFlag != "Y") {
  393. fPrcpColor(objFlag);
  394. }
  395. if ( objFlag != "child") {
  396. if( model.getValue ( "/root/cp" ) == "Y" ){
  397. if (prtlprcpstatus_SMMMO00110 != "U" ) {
  398. import1.visible = false;
  399. }
  400. }else{
  401. import1.visible = false;
  402. }
  403. }
  404. endStepDate = new Date(); // 각 업부 종료후 시간
  405. step3Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 소요시간
  406. // 속도체크 모니터링 로그 추가 2013.06.27 엄영만
  407. if ( objFlag == "child") {
  408. opener.javascript.reqSetMonitoringLog("PrcpCopy", "APP", sScreenID, objFlag, sCopyInptFlag, multiFlag, prcpNmClearFlag, nCopyCnt, step1Elapsed+step2Elapsed+step3Elapsed, step1Elapsed, step2Elapsed, step3Elapsed);
  409. } else {
  410. reqSetMonitoringLog("PrcpCopy", "APP", sScreenID, objFlag, sCopyInptFlag, multiFlag, prcpNmClearFlag, nCopyCnt, step1Elapsed+step2Elapsed+step3Elapsed, step1Elapsed, step2Elapsed, step3Elapsed);
  411. }
  412. }
  413. function addPrcpDetl_App(strDest, sCopyInptFlag, sScreenID, sCopykeys, sCopyIoFlag) {
  414. var nSrchRow = 0; // 검색Row
  415. var sTimeStr = getNewDate().valueOf( ).toString() ; // 반복호출을 처리 하기 위한 노드 변수값으로 사용 (품절약, 대체약, 수혈 추가처방(AST, ABO) 등 화면에서 재귀호출을 처리 하기 위해) 2013.09.16 엄영만
  416. var sCopyPrcpSrc = "/root/copyprcp" +sTimeStr+ "/prcplist"; // Copy Prcp Node 주소
  417. var sCopyFlagSrc = "/root/copyprcp" +sTimeStr+ "/flaginfo"; // Copy Flag Node 주소
  418. var sErrFlag = ""; // 서버체크시 오류구분
  419. var sErrMsg = ""; // 서버체크시 오류메세지
  420. var sErrCode = ""; // 서버체크시 오류코드
  421. var sUsge = model.getValue("/root/usge");
  422. var srcNodeList = model.instances(0).selectNodes( "/root/paminfo" );
  423. if ( srcNodeList.length == 0 ){
  424. messageBox ( "환자정보가", "E014" );
  425. return;
  426. }
  427. //복사 화면정보(copyFlagInfo)
  428. model.removeNodeSet ( "/root/copyflag" );
  429. model.makeValue("/root/copyflag/subprcp", "N"); // 사용자 설정으로 재조회 여부(품절약 등등)
  430. model.makeValue("/root/copyflag/instcd", getUserInfo("dutplceinstcd"));
  431. model.makeValue("/root/copyflag/copyinptflag", sCopyInptFlag);
  432. model.makeValue("/root/copyflag/pageinptflag", model.getValue("/root/init/prcpinptflag"));
  433. model.makeValue("/root/copyflag/copykeys", sCopykeys);
  434. model.makeValue("/root/copyflag/copyioflag", sCopyIoFlag);
  435. model.makeValue("/root/copyflag/screenid", sScreenID);
  436. model.makeValue("/root/copyflag/usge", sUsge);
  437. model.makeValue("/root/copyflag/prcpgenrflag", model.getValue("/root/patflag/list/prcpgenrflag"));
  438. model.makeValue("/root/copyflag/prcpdd", model.getValue("/root/init/prcpdd")); // 처방적용일자
  439. model.makeValue("/root/copyflag/prcpmixno", model.getValue("/root/init/prcpmixno")); // mix번호
  440. model.makeValue("/root/copyflag/addprcp", model.getValue("/root/addprcp"));
  441. model.makeValue("/root/copyflag/admininfo", model.getValue("/root/admininfo"));
  442. model.makeValue("/root/copyflag/cp", model.getValue("/root/cp"));
  443. if(model.getValue("/root/cp") == "Y") {
  444. model.makeValue("/root/copyflag/cpgappno", model.getValue("/root/temp1/getdata/cpgappno")); // cp적용번호
  445. model.makeValue("/root/copyflag/cpgstartstepno", model.getValue("/root/main/steppath/info[startendflag = 'S']/stepno")); // cp시작 스텝번호 2017.12.20 엄영만 추가
  446. } else {
  447. model.makeValue("/root/copyflag/cpgappno", "0");
  448. model.makeValue("/root/copyflag/cpgstartstepno", "1");
  449. }
  450. if(model.getValue("/root/addprcp") == "Y") {
  451. model.makeValue("/root/copyflag/issdept", model.getValue("/root/init/issdept"));
  452. } else {
  453. model.makeValue("/root/copyflag/issdept", model.getValue("/root/issdept"));
  454. }
  455. model.makeValue("/root/copyflag/anstrecno", model.getValue("/root/anst/anstrecno"));
  456. model.makeValue("/root/copyflag/anstfromdt", model.getValue("/root/anst/anstfromdt"));
  457. model.makeValue("/root/copyflag/ansttm", model.getValue("/root/anst/ansttm"));
  458. model.makeValue("/root/copyflag/ansttodt", model.getValue("/root/anst/ansttodt"));
  459. model.makeValue("/root/copyflag/opansflagcd", model.getValue("/root/anst/opansflagcd"));
  460. model.makeValue("/root/copyflag/paramyn", model.getValue("/root/anst/paramyn"));
  461. model.makeValue("/root/copyflag/anst_drid", model.getValue("/root/anst/anst_drid"));
  462. model.makeValue("/root/copyflag/anst_specordflag", model.getValue("/root/anst/anst_specordflag"));
  463. //20131107 이정택(마취의 이름 추가)
  464. model.makeValue("/root/copyflag/anst_anstdrnm", model.getValue("/root/anst/anst_anstdrnm"));
  465. //20131107 이정택
  466. model.makeValue("/root/copyflag/erresn", model.getValue("/root/init/erresn"));
  467. model.makeValue("/root/copyflag/hosinprcpresncd", model.getValue("/root/init/hosinprcpresncd"));
  468. model.makeValue("/root/copyflag/hsctlnkno", model.getValue("/root/init/hsctlnkno"));
  469. model.makeValue("/root/copyflag/inclprcpno", model.getValue("/root/init/inclprcpno"));
  470. model.makeValue("/root/copyflag/prcpauthflag", model.getValue("/root/init/prcpauthflag"));
  471. model.makeValue("/root/copyflag/prcpfromdd", model.getValue("/root/init/prcpfromdd"));
  472. model.makeValue("/root/copyflag/prcpkindcd", model.getValue("/root/init/prcpkindcd"));
  473. model.makeValue("/root/copyflag/prcptodd", model.getValue("/root/init/prcptodd"));
  474. model.makeValue("/root/copyflag/bfprcpviewflag", model.getValue("/root/initsrch/envinfo[qestcd='018']/answcnt")); // 전처방 정렬 개인별 설정
  475. model.makeValue("/root/copyflag/bfinoutsetflag", model.getValue("/root/initsrch/envinfo[qestcd='075']/answcnt")); // 전처방 복사시 약품 원내/원외 개인설정 2016.06.28 엄영만
  476. model.makeValue("/root/copyflag/subjsubcretno", model.getValue("/root/init/subjsubcretno"));
  477. model.makeValue("/root/copyflag/opcnfmdd", model.getValue("/root/operation/list/opcnfmdd"));
  478. model.makeValue("/root/copyflag/opflagcd", model.getValue("/root/operation/list/opflagcd"));
  479. model.makeValue("/root/copyflag/opfromtmcd", model.getValue("/root/operation/list/opfromtmcd"));
  480. model.makeValue("/root/copyflag/oprsrvno", model.getValue("/root/operation/list/oprsrvno"));
  481. model.makeValue("/root/copyflag/prcpdd_prcpresn", model.getValue("/root/prcpresn/prcpdd"));
  482. model.makeValue("/root/copyflag/prcptime_prcpresn", model.getValue("/root/prcpresn/prcptime"));
  483. model.makeValue("/root/copyflag/resncnt_prcpresn", model.getValue("/root/prcpresn/resncnt"));
  484. model.removeNodeSet ( "/root/send/cond1" );
  485. model.makeNode ( "/root/send/cond1");
  486. var copyFlagInfo = model.instances(0).selectNodes( "/root/copyflag");
  487. model.setValue ( "/root/send/cond1", getNodeListCSV(copyFlagInfo));
  488. //복사 등록정보(copyRgstInfo)
  489. model.removeNodeSet ( "/root/send/cond2" );
  490. model.makeNode ( "/root/send/cond2");
  491. var copyRgstInfo = model.instances(0).selectNodes( "/root/paminfo/list" );
  492. model.setValue ( "/root/send/cond2", getNodeListCSV(copyRgstInfo));
  493. submit ( "TRMMO00150", false ); // 처방저장 실시간 체크(RealTimeCheck)변수 설정
  494. model.makeNode(sCopyPrcpSrc); // 처방정보 복사 노드생성
  495. model.makeNode(sCopyFlagSrc); // 화면정보 복사 노드생성
  496. copyNodesetType ( sCopyPrcpSrc, "/root/prcpcopy/prcplist", "replace", model, model); // 품절약등 내부적으로 다시 TRMMO00150를 Call 하는 경우 처리
  497. copyNodesetType ( sCopyFlagSrc, "/root/prcpcopy/flaginfo", "replace", model, model); // 품절약등 내부적으로 다시 TRMMO00150를 Call 하는 경우 처리
  498. model.resetInstanceNode("/root/prcpcopy/prcplist"); // submit() 리턴 인스턴스 초기화
  499. model.resetInstanceNode("/root/prcpcopy/flaginfo"); // submit() 리턴 인스턴스 초기화
  500. var copyPrcpNode = model.instances(0).selectNodes(sCopyPrcpSrc);
  501. if (copyPrcpNode.length > 0) {
  502. // 리턴 된 화면 설정값 셋팅
  503. model.makeValue("/root/init/prcpmixno", model.getValue(sCopyFlagSrc + "/prcpmixno"));
  504. model.makeValue("/root/init/inclprcpno", model.getValue(sCopyFlagSrc + "/inclprcpno"));
  505. model.makeValue("/root/init/hsctlnkno", model.getValue(sCopyFlagSrc + "/hsctlnkno"));
  506. if (sCopyInptFlag == "06") { // 항암프로토콜일 경우 추가되는 saveflaginfo 값 셋팅
  507. model.makeValue ( "/root/save/saveflaginfo/cpgappno", appNo_SMMMO00110 ); //CP처방 or 프로토콜처방 no
  508. model.makeValue ( "/root/save/saveflaginfo/prtlprcpstatus", prtlprcpstatus_SMMMO00110 ); //CP처방 or 프로토콜처방 저장 status
  509. model.makeValue ( "/root/save/saveflaginfo/prtlflag", "10" ); //프로토콜구분
  510. }
  511. var destNodeList;
  512. for (var i=1; i<=copyPrcpNode.length; i++) { // Start of 복사 처방 건별 화면 복사
  513. if ( isNull(model.getValue ( sCopyPrcpSrc + "[" + i + "]/prcpcd" ))) { continue; }
  514. destNodeList = model.instances(0).selectNodes( strDest + "/prcplist" );
  515. if(destNodeList.length == 0) { nSrchRow = 1; } else { nSrchRow = destNodeList.length; }
  516. if (sCopyInptFlag == "06") { // 항암프로토콜일 경우 etclnkspec 컬럼 값 셋팅
  517. model.setValue( sCopyPrcpSrc + "[" + i + "]/etclnkspec", etclnkspecValue_SMMMO00110);
  518. }
  519. // 전환처방 복용 방법 설정
  520. if ( model.getValue ( sCopyPrcpSrc + "[" + i + "]/tempcol18" ) == "Y" ) {
  521. var len = 1;
  522. if ( !isNull(model.instance1.selectNodes("/root/migdrugmthd/migdrugmthdlist").length)){
  523. len = model.instance1.selectNodes("/root/migdrugmthd/migdrugmthdlist").length + 1;
  524. }
  525. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/prcpcd", model.getValue( sCopyPrcpSrc + "[" + i + "]/prcpcd" ));
  526. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/prcpnm", model.getValue( sCopyPrcpSrc + "[" + i + "]/prcpnm" ));
  527. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/drugmthdspccd", model.getValue( sCopyPrcpSrc + "[" + i + "]/drugmthdspccd" ) );
  528. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/drugmthdspccdnm", model.getValue( sCopyPrcpSrc + "[" + i + "]/drugmthdspccdnm" ) );
  529. if ( model.getValue ( sCopyPrcpSrc + "[" + i + "]/rateprcpflag" ) == "Y" ) {
  530. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/migdrugmthdspccdnm", "[비율처방불가] 투약량이 다른 처방을 분리해서 처방하셔야 합니다.\n\n" + model.getValue( sCopyPrcpSrc + "[" + i + "]/exptmthdfact" ) + ".");
  531. model.setValue ( sCopyPrcpSrc + "[" + i + "]/rateprcpflag", "N" )
  532. model.setValue ( sCopyPrcpSrc + "[" + i + "]/drugrateqty", "-" )
  533. } else {
  534. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/migdrugmthdspccdnm", model.getValue( sCopyPrcpSrc + "[" + i + "]/exptmthdfact" ));
  535. }
  536. model.setValue ( sCopyPrcpSrc + "[" + i + "]/exptmthdfact", "-" );
  537. }
  538. //20090122 마정민수정: 변경요청번호 670. 단순 방사선 예약 자동 팝업요청
  539. //20090709 CHC, 단순방사선예약자동팝업 병원별 적용
  540. var raypopwndcheckyn = model.getValue ( "/root/initsrch/raypopwndcheckyn/trgtcd" );
  541. if ( model.getValue("/root/patflag/list/prcpgenrflag") == "O" && model.getValue( sCopyPrcpSrc + "[" + i + "]/tempcol2" ).length > 2 && model.getValue( sCopyPrcpSrc + "[" + i + "]/tempcol2" ).substring( 0, 2 ) == "18" && sUsge == "prcp" ) {
  542. var msgTitle = "[영상]" + "[" + model.getValue( sCopyPrcpSrc + "[" + i + "]/prcpcd" ) + ":" + model.getValue( sCopyPrcpSrc + "[" + i + "]/prcpnm" ) + "]";
  543. if (raypopwndcheckyn != "Y") {
  544. if (window.alert( "단순 방사선 검사를 당일 시행 하시겠습니까? [예:당일,아니요:예약]", msgTitle, "36" ) == "7" ){
  545. model.setValue( sCopyPrcpSrc + "[" + i + "]/prcphopedd","99991231" );
  546. }
  547. }
  548. }
  549. sErrFlag = model.getValue(sCopyPrcpSrc +"[" + i + "]/errflag");
  550. sErrMsg = model.getValue(sCopyPrcpSrc +"[" + i + "]/errmsg");
  551. sErrCode = model.getValue(sCopyPrcpSrc +"[" + i + "]/errcode");
  552. if(sErrFlag == "E") { // 서버체크시 오류가 있으면 메세지 처리
  553. if(!isNull(sErrMsg)) messageBox(sErrMsg, sErrCode);
  554. continue;
  555. } else if(sErrFlag == "D") { // 사용자 결정
  556. if(sErrCode == "D001") { // 품절약
  557. fAltDrug ( i, "1", sCopyPrcpSrc, sCopyInptFlag );
  558. if("01" == sCopyInptFlag || "02" == sCopyInptFlag) { // 전처방 또는 약속처방일 경우
  559. var sOpt079 = model.getValue("/root/initsrch/envinfo[qestcd='079']/answcnt"); // 품절약 복사 개인 설정 옵션 (001:대체약품의 기본 횟수(용법), 수량으로 설정, 002:기존약품의 횟수(용법), 수량, 일수로 설정)
  560. if(sOpt079 == "002" && !isNull(model.getValue(strDest+"/prcplist["+nSrchRow+"]/prcpcd"))) { // 기존약품의 횟수(용법), 수량, 일수로 설정 이고 품절약을 선택한경우
  561. model.setValue(strDest+"/prcplist["+nSrchRow+"]/drugmthdspccdnm", model.getValue(sCopyPrcpSrc +"[" + i + "]/drugmthdspccdnm"))
  562. model.setValue(strDest+"/prcplist["+nSrchRow+"]/drugmthdspccd", model.getValue(sCopyPrcpSrc +"[" + i + "]/drugmthdspccd"))
  563. model.setValue(strDest+"/prcplist["+nSrchRow+"]/prcpdayno", model.getValue(sCopyPrcpSrc +"[" + i + "]/prcpdayno"))
  564. bfDrugCalc("prcptims" , parseInt(nSrchRow));
  565. model.setValue(strDest+"/prcplist["+nSrchRow+"]/prcptims", model.getValue(sCopyPrcpSrc +"[" + i + "]/prcptims"))
  566. DrugCalc("prcptims" , parseInt(nSrchRow));
  567. bfDrugCalc("drprcpetc8" , parseInt(nSrchRow));
  568. model.setValue(strDest+"/prcplist["+nSrchRow+"]/drprcpetc8", model.getValue(sCopyPrcpSrc +"[" + i + "]/drprcpetc8"))
  569. DrugCalc("drprcpetc8" , parseInt(nSrchRow));
  570. } // End of 기존약품의 횟수(용법), 수량, 일수로 설정 이고 품절약을 선택한경우
  571. } // End of 전처방 또는 약속처방일 경우
  572. } else if(sErrCode == "D002") { // 산제불가
  573. fAltDrug ( i, "4", sCopyPrcpSrc, sCopyInptFlag );
  574. if ( getParameter ( "SPMMB10100_chkyn" ) == "Y" ) { //대체약을 선택했다면 복사시키지 않는다.
  575. clearParameter ( "SPMMB10100_chkyn" );
  576. } else {
  577. model.duplicate( strDest, sCopyPrcpSrc+"[" + i + "]", "*[" + nSrchRow + "]");
  578. addPrcpPop_App(nSrchRow, sUsge);
  579. }
  580. } else if(sErrCode == "D003") { // 산제주의
  581. fAltDrug ( i, "5", sCopyPrcpSrc, sCopyInptFlag );
  582. if ( getParameter ( "SPMMB10100_chkyn" ) == "Y" ) { //대체약을 선택했다면 복사시키지 않는다.
  583. clearParameter ( "SPMMB10100_chkyn" );
  584. } else {
  585. model.duplicate( strDest, sCopyPrcpSrc+"[" + i + "]", "*[" + nSrchRow + "]");
  586. addPrcpPop_App(nSrchRow, sUsge);
  587. }
  588. } else if(sErrCode == "D004") { // 투석원내처방사유처리
  589. if("19" != model.getValue( "/root/init/hosinprcpresncd")) {
  590. var message = "원내지정이 가능한 처방입니다. 전체 약제를 원내로 하시려면 [예], 해당약제만 원내처방하시려면 [아니오]를 선택해주십시오.";
  591. if (messageBox ( message, "Q" ) == "6" ) {
  592. model.setValue( "/root/init/hosinprcpresncd", "19" );
  593. cmb_hosinprcpresn.refresh();
  594. }
  595. }
  596. model.duplicate( strDest, sCopyPrcpSrc+"[" + i + "]", "*[" + nSrchRow + "]");
  597. addPrcpPop_App(nSrchRow, sUsge);
  598. } else if (sErrCode == "D006"){ // 대채처방체크 altcdinfo = X
  599. fAltPrcpCd ( i, "1", sCopyPrcpSrc, sCopyInptFlag );
  600. } else if(sErrCode == "D007"){ // 수술예방적 항생제 CHECK SON0926 START 사유입력 대상자일 경우
  601. if (messageBox ( sErrMsg, "Q999" ) == "7") {
  602. setParameter ("SPMMO016000_resnflag" , "O" );
  603. var xpt = window.screenleft + eval(500);
  604. var ypt = window.screenTop + eval(400);
  605. var coord = getRelativeCoordinate ( xpt, ypt );
  606. var mon = coord[0];
  607. xpt = coord[1];
  608. ypt = coord[2];
  609. modal ("SPMMO16000", mon, xpt, ypt, "SPMMO16000", "", "", "sysmenu:hidden; min:visible; max:visible; icon:visible", false); //사유입력창
  610. var resncnts = getParameter ("SPMMO016000_resncnts" );
  611. model.setValue ( sCopyPrcpSrc + "[" + i + "]/tempcol19" ,resncnts );
  612. model.duplicate( strDest, sCopyPrcpSrc+"[" + i + "]", "*[" + nSrchRow + "]");
  613. addPrcpPop_App(nSrchRow, sUsge);
  614. } else {
  615. continue;
  616. }
  617. }
  618. } else { // 오류가 없으면 화면으로 복사 처리
  619. if(sErrFlag == "I" && !isNull(sErrMsg)) { // 서버체크시 정보가 있으면 메세지 처리
  620. messageBox(sErrMsg, sErrCode);
  621. }
  622. model.duplicate( strDest, sCopyPrcpSrc+"[" + i + "]", "*[" + nSrchRow + "]");
  623. addPrcpPop_App(nSrchRow, sUsge); // 화면에서 체크해야 할 항목 체크
  624. }
  625. } // End of 복사 처방 건별 화면 복사
  626. // 투석원내처방사유처리
  627. if ( model.getValue( "/root/init/hosinprcpresncd") != model.getValue(sCopyFlagSrc + "/hosinprcpresncd") ) {
  628. grd_prcplist.refresh();
  629. fChngHosinPrcpResn();
  630. }
  631. //JJE CP,항암프로토콜일 경우 root/init/prcpdd 를 해당 미래일자로 변경... (2008.09.11)
  632. if (sCopyInptFlag == "05" || sCopyInptFlag == "06") {
  633. if ( model.getValue( "/root/init/prcpdd") != model.getValue(sCopyFlagSrc + "/prcpdd") ) {
  634. cmb_prcpdd.refresh();
  635. }
  636. }
  637. }
  638. model.removeNodeSet ("/root/copyprcp" +sTimeStr); // 처방정보, 화면정보 복사 노드삭제
  639. }
  640. /**
  641. * @desc : check 된 Source Node의 값을 목적지에 Append Node 한다.(처방검색)
  642. * @param : objFlag - child or else
  643. : strSrc - 출발지 Node
  644. : strDest - 목적지 Node
  645. : multiFlag - 복수 add 여부
  646. : checkNM - check로 사용할 instance명
  647. : checkFlag - check시 Value
  648. : grdObj - 더블클릭시 값을 넘기는 그리드 명
  649. : prcpNmClearFlag - 검색 row에 검색명 클리어암㈉?
  650. : prcpInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술, 05 CP, 06 항암 M0034
  651. : ex) addPrcp ( "child", "/root/prcpsrch/prcplist", "/root/main/prcp", "N", "status", "I", grd_prcpsrchlist, "N");
  652. * @return : void
  653. * @authur : 마정민 2007. 3. 12
  654. * @---------------------------------------------------
  655. */
  656. function addPrcp_Web ( objFlag, strSrc, strDest, multiFlag, checkNM, checkFlag, grdObj, prcpNmClearFlag, prcpInptFlag ) {
  657. var startStepDate = new Date(); // 각 업부 시작 시간
  658. var endStepDate = null; // 각 업부 종료후 시간
  659. var step1Elapsed = null; // 코드별 체크 전 소요시간
  660. var step2Elapsed = null; // 코드별 체크 소요시간
  661. var step3Elapsed = null; // 코드별 체크 후 소요시간
  662. var nCopyCnt = 0; // 복사 갯수
  663. //model.addLog("***************** Start Of addPrcp()");
  664. if ( objFlag == "child") {
  665. opener.model.makeValue("/root/drugcalc/prcpvol", "");
  666. opener.model.makeValue("/root/drugcalc/prcpqty", "");
  667. opener.model.makeValue("/root/drugcalc/prcptims", "");
  668. opener.model.makeValue("/root/drugcalc/drprcpetc7", "");
  669. opener.model.makeValue("/root/drugcalc/drprcpetc8", "");
  670. } else {
  671. model.makeValue("/root/drugcalc/prcpvol", "");
  672. model.makeValue("/root/drugcalc/prcpqty", "");
  673. model.makeValue("/root/drugcalc/prcptims", "");
  674. model.makeValue("/root/drugcalc/drprcpetc7", "");
  675. model.makeValue("/root/drugcalc/drprcpetc8", "");
  676. }
  677. //목적지를 변수로 받고 싶었으나 iviewer에서 문제가 있어 목적지는 프레그를 구분자로 박아 넣음.
  678. var srchRow = 0;
  679. var srcNodeList = model.instances(0).selectNodes(strSrc); //or instance1.selectNodes(strSrc)
  680. //검색Row 찾기
  681. if ( objFlag == "child") {
  682. var destNodeList = opener.model.instances(0).selectNodes( strDest + "/prcplist" ); //dest Node에서 prcplist는 약속으로 하자.
  683. for ( i = destNodeList.length; i>0; i-- ){
  684. opener.model.getValue ( strDest + "/prcplist[" + i + "]" ) == "S";
  685. srchRow = i;
  686. break;
  687. }
  688. } else {
  689. var destNodeList = model.instances(0).selectNodes( strDest + "/prcplist" );
  690. for ( i = destNodeList.length; i >0; i-- ){
  691. model.getValue ( strDest + "prcplist[" + i + "]" ) == "S";
  692. srchRow = i;
  693. break;
  694. }
  695. if(!(srchRow > 0)){
  696. if(destNodeList.length == 0) srchRow = 1;
  697. else srchRow = destNodeList.length+1;
  698. }
  699. }
  700. // 처방 코드정보를 가져온다. (선택진료 자동체크 및 선택진료의사 등의 데이터를 가져오기 위해) 2011.10.13 엄영만
  701. var sPrcpCodes = ""; // 처방코드 정보를 가져오기 위한 처방 코드 셋팅
  702. if ( multiFlag == "Y" ){
  703. for( var i = 1; i <= srcNodeList.length; i++ ) {
  704. if ( model.getValue( strSrc + "[" + i + "]/" + checkNM) == checkFlag ) {
  705. if(sPrcpCodes == ""){
  706. sPrcpCodes = "'" + model.getValue( strSrc + "[" + i + "]/prcpcd") + "'";
  707. } else {
  708. sPrcpCodes = sPrcpCodes + ",'" + model.getValue( strSrc + "[" + i + "]/prcpcd") + "'";
  709. }
  710. nCopyCnt = nCopyCnt + 1;
  711. }
  712. }
  713. } else {
  714. sPrcpCodes = "'" + model.getValue( strSrc + "[" + grdObj.row + "]/prcpcd") + "'" ;
  715. nCopyCnt = 1;
  716. }
  717. if(!isNull(sPrcpCodes)){ // 조회할 코드가 있을경우에만 실행하도록 수정함.
  718. if ( objFlag == "child") {
  719. opener.javascript.fGetPrcpCodeInfo(sPrcpCodes);
  720. } else {
  721. fGetPrcpCodeInfo(sPrcpCodes);
  722. }
  723. }
  724. endStepDate = new Date(); // 각 업부 종료후 시간
  725. step1Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 전 소요시간
  726. startStepDate = new Date(); // 각 업부 시작 시간
  727. var cnt = 0;
  728. if ( multiFlag == "Y" ){
  729. //약속처방일 경우 MIX 가 있으면 번호를 새로 만들어줌
  730. if ( prcpInptFlag == "02") { //약속처방이고
  731. for( var i = 1; i <= srcNodeList.length; i++ ) {
  732. if ( model.getValue( strSrc + "[" + i + "]/" + checkNM) == checkFlag ) {
  733. var prcpmixno = model.getValue( strSrc + "[" + i + "]/prcpmixno" );
  734. if ( prcpmixno != "-" && prcpmixno != "0" ) { //믹스번호가 있다면
  735. if ( model.getValue( strSrc + "[" + i + "]/tempcol8" ) == "-" ) { //새로 번호 딴것은 체크 하지 않는다.
  736. model.setValue( strSrc + "[" + i + "]/tempcol8", "" );
  737. } else {
  738. var mixcnt = 0;
  739. //믹스번호를 하나 증가시켜서 같은 믹스번호가 있는것은 적용한다.
  740. var newprcpmixno = eval(opener.model.getValue ( "/root/init/prcpmixno" )) + 1;
  741. for( var j = 1; j <= srcNodeList.length; j++ ) {
  742. if ( model.getValue( strSrc + "[" + j + "]/" + checkNM) == checkFlag ) {
  743. if ( i != j ) {
  744. if ( prcpmixno == model.getValue( strSrc + "[" + j + "]/prcpmixno" )) {
  745. model.setValue( strSrc + "[" + j + "]/prcpmixno", newprcpmixno );
  746. model.setValue( strSrc + "[" + j + "]/tempcol8", "-" );
  747. mixcnt++;
  748. }
  749. }
  750. }
  751. }
  752. if ( mixcnt == 0 ) { // 같이 적용된것이 하나도 없다면 믹스번호 초기화
  753. model.setValue( strSrc + "[" + i + "]/prcpmixno", "-" );
  754. } else { // 값이 있으면 본인것도 증가시켜주고, 믹스번호 init 값도 증가시켜준다.
  755. model.setValue( strSrc + "[" + i + "]/prcpmixno", newprcpmixno );
  756. opener.model.setValue ( "/root/init/prcpmixno", newprcpmixno );
  757. }
  758. }
  759. }
  760. }
  761. }
  762. } //약속처방 mix no 체크끝
  763. for( var i = 1; i <= srcNodeList.length; i++ ) {
  764. //전처방, 약속처방에서 처방복사 버튼 클릭시...구코드이고 유효하지 않은 코드 일경우 불가처리 조과장님 지시. BY SONJY 2008-09-04
  765. //전처방, 약속처방에서 처방복사 버튼 클릭시 식사처방 복사 불가처리 by sonjy 2008-09-06
  766. //20090409 마정민 수정. 성가병원 구코드 복사 기능 요청
  767. /*if( model.getValue( strSrc + "[" + i + "]/prcpcd").substring( 0, 1 ) == "*" ||
  768. model.getValue( strSrc + "[" + i + "]/prcpcd").substring( 0, 1 ) == "_" ||
  769. model.getValue( strSrc + "[" + i + "]/prcpclscd") == "03" ) {
  770. if ( objFlag == "child" ) {
  771. addprcpchk = opener.model.getValue ( "/root/addprcp" );
  772. } else {
  773. addprcpchk = model.getValue ( "/root/addprcp" );
  774. }
  775. if ( addprcpchk != "Y" ){
  776. continue ;
  777. }
  778. }*/
  779. if ( model.getValue( strSrc + "[" + i + "]/prcpclscd") == "03" ) {
  780. if ( objFlag == "child" ) {
  781. addprcpchk = opener.model.getValue ( "/root/addprcp" );
  782. } else {
  783. addprcpchk = model.getValue ( "/root/addprcp" );
  784. }
  785. if ( addprcpchk != "Y" ){
  786. continue ;
  787. }
  788. }
  789. if ( model.getValue( strSrc + "[" + i + "]/" + checkNM) == checkFlag ) {
  790. srchRow = addPrcpDetl ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag );
  791. if ( srchRow == 0) {
  792. cnt++;
  793. //검색줄 다시검색
  794. if ( objFlag == "child") {
  795. var destNodeList = opener.model.instances(0).selectNodes( strDest + "/prcplist" ); //dest Node에서 prcplist는 약속으로 하자.
  796. for ( j = destNodeList.length; j>0; j-- ){
  797. opener.model.getValue ( strDest + "/prcplist[" + j + "]" ) == "S";
  798. srchRow = j;
  799. break;
  800. }
  801. } else {
  802. var destNodeList = model.instances(0).selectNodes( strDest + "/prcplist" );
  803. for ( j = destNodeList.length; j >0; j-- ){
  804. model.getValue ( strDest + "prcplist[" + j + "]" ) == "S";
  805. srchRow = j;
  806. break;
  807. }
  808. //JJE-
  809. if(!(srchRow > 0)){
  810. srchRow = destNodeList.length;
  811. }
  812. //-JJE
  813. }
  814. } else {
  815. //처방복사에 문제가 없다면 하드코드 set 처방 Chk
  816. //srchRow = fAddSetPrcpChk ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag );
  817. srchrownum = fAddSetPrcpChkKNUH ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag );
  818. if (srchrownum != srchRow) {
  819. srchRow = srchrownum;
  820. if ( objFlag == "child" ) {
  821. opener.javascript.DrugCalc ( "drprcpetc8" , parseInt(srchRow) -1 );
  822. } else {
  823. DrugCalc ( "drprcpetc8" , parseInt(srchRow) -1 );
  824. }
  825. }
  826. }
  827. //if ( objFlag == "child" ) {
  828. // opener.grd_prcplist.refresh();
  829. //} else {
  830. // grd_prcplist.refresh();
  831. //}
  832. }
  833. }
  834. } else { //더블클릭으로 넘길때
  835. //전처방, 약속처방에서 더블 클릭시...구코드이고 유효하지 않은 코드 일경우 불가처리 조과장님 지시. BY SONJY 2008-09-04
  836. //전처방, 약속처방에서 처방복사 버튼 클릭시 식사처방 복사 불가처리 by sonjy 2008-09-06
  837. //20090409 마정민 수정. 성가병원 구코드 복사 기능 요청
  838. /*if( model.getValue( strSrc + "[" + grdObj.row + "]/prcpcd").substring( 0, 1 ) == "*" ||
  839. model.getValue( strSrc + "[" + grdObj.row + "]/prcpcd").substring( 0, 1 ) == "_" ||
  840. model.getValue( strSrc + "[" + grdObj.row + "]/prcpclscd") == "03" ) {
  841. if ( objFlag == "child" ) {
  842. addprcpchk = opener.model.getValue ( "/root/addprcp" );
  843. } else {
  844. addprcpchk = model.getValue ( "/root/addprcp" );
  845. }
  846. if ( addprcpchk != "Y" ){
  847. //20090407 마정민 수정. 성가병원 기능 요청
  848. //return ;
  849. }
  850. }*/
  851. if( model.getValue( strSrc + "[" + grdObj.row + "]/prcpclscd") == "03" ) {
  852. if ( objFlag == "child" ) {
  853. addprcpchk = opener.model.getValue ( "/root/addprcp" );
  854. } else {
  855. addprcpchk = model.getValue ( "/root/addprcp" );
  856. }
  857. if ( addprcpchk != "Y" ){
  858. return ;
  859. }
  860. }
  861. //mix no 초기화
  862. model.setValue( strSrc + "[" + grdObj.row + "]/prcpmixno", "-" );
  863. srchRow = addPrcpDetl ( objFlag , strSrc , strDest , grdObj.row , srchRow, prcpInptFlag );
  864. if ( srchRow == 0) {
  865. cnt++;
  866. } else {
  867. //처방복사에 문제가 없다면 하드코드 set 처방 Chk
  868. //srchRow = fAddSetPrcpChk( objFlag , strSrc , strDest , grdObj.row , srchRow, prcpInptFlag );
  869. var srchrownum = fAddSetPrcpChkKNUH( objFlag , strSrc , strDest , grdObj.row , srchRow, prcpInptFlag );
  870. if (srchrownum != srchRow) {
  871. srchRow = srchrownum;
  872. if ( objFlag == "child" ) {
  873. opener.javascript.DrugCalc ( "drprcpetc8" , parseInt(srchRow) -1 );
  874. } else {
  875. DrugCalc ( "drprcpetc8" , parseInt(srchRow) -1 );
  876. }
  877. }
  878. }
  879. }
  880. endStepDate = new Date(); // 각 업부 종료후 시간
  881. step2Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 소요시간
  882. startStepDate = new Date(); // 각 업부 시작 시간
  883. fHosinPrcpResnChk (objFlag, strDest );
  884. if ( cnt == 0 ) { // 한번도 에러가 없을 때만 메인으로 포커스가 간다.
  885. focusMain ( srchRow, objFlag, prcpNmClearFlag );
  886. } else {
  887. var modiflag = model.getValue("/root/init/rowmodify/modiflag");
  888. if ( objFlag == "child" ) {
  889. if ( modiflag != "Y" ){ // 처방 코드에서 수정 모드가 아닐때만 refresh - 20090630 by Moonsh
  890. opener.grd_prcplist.rebuild();
  891. opener.model.recalculate();
  892. opener.grd_prcplist.refresh();
  893. }
  894. // opener.model.setfocus( "grd_prcplist" );
  895. // if ( srchRow != 0 ) {
  896. // opener.grd_prcplist.row = srchRow;
  897. // }
  898. } else {
  899. if ( modiflag != "Y" ){ // 처방 코드에서 수정 모드가 아닐때만 refresh - 20090630 by Moonsh
  900. grd_prcplist.rebuild();
  901. model.recalculate();
  902. grd_prcplist.refresh();
  903. }
  904. // model.setfocus( "grd_prcplist" );
  905. // if ( srchRow != 0 ) {
  906. // grd_prcplist.row = srchRow;
  907. // }
  908. }
  909. }
  910. //KNUH, 약속처방 복사 시 치식 팝업이 한번만 뜨고 다른 치과처방에 동일하게 적용되도록 함. 처방복사가 완료되면 임시 instance는 제거함. (2011.03.28 JJE)
  911. if ( objFlag == "child" ) {
  912. opener.model.removeNodeset("/root/main/toot_prcp");
  913. }else{
  914. model.removeNodeset("/root/main/toot_prcp");
  915. }
  916. // 20080925 항생제 추가 시는 그리드 editting을 위해 색 변경 로직 생략 by MoonSH
  917. var cdssFlag = getParameter( "SPMMD01600_flag");
  918. clearParameter( "SPMMD01600_flag", "");
  919. if (cdssFlag != "Y") {
  920. fPrcpColor(objFlag);
  921. }
  922. if ( objFlag != "child") {
  923. //JJE-
  924. if( model.getValue ( "/root/cp" ) == "Y" ){
  925. if (prtlprcpstatus_SMMMO00110 != "U" ) {
  926. import1.visible = false;
  927. }
  928. }else{
  929. import1.visible = false;
  930. }
  931. //-JJE
  932. }
  933. //model.addLog("***************** End Of addPrcp()");
  934. endStepDate = new Date(); // 각 업부 종료후 시간
  935. step3Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 소요시간
  936. // 속도체크 모니터링 로그 추가 2013.06.27 엄영만
  937. if ( objFlag == "child") {
  938. opener.javascript.reqSetMonitoringLog("PrcpCopy", "WEB", getScreenID(), objFlag, prcpInptFlag, multiFlag, prcpNmClearFlag, nCopyCnt, step1Elapsed+step2Elapsed+step3Elapsed, step1Elapsed, step2Elapsed, step3Elapsed);
  939. } else {
  940. reqSetMonitoringLog("PrcpCopy", "WEB", getScreenID(), objFlag, prcpInptFlag, multiFlag, prcpNmClearFlag, nCopyCnt, step1Elapsed+step2Elapsed+step3Elapsed, step1Elapsed, step2Elapsed, step3Elapsed);
  941. }
  942. }
  943. /**
  944. * @desc : 검색된 내용중 내릴 처방을 선택하여 전송한다.( double click )
  945. * @param : objFlag - child or else
  946. : strSrc - source node
  947. : strDest - 목적지 node; child일때는 opener.root.main.prcp, 아니면 "/root/main/prcp" 이다
  948. : sendRow - 검색된 내용중 메인으로 보내고자 하는 row
  949. : srchRow - 메인에 들어간 자리. 검색로우(srchRow) 바로 전이다.
  950. : prcpInptFlag - - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  951. : groupSrc - 옵션: group처방 검색할 경우 node
  952. : direcSrc - 옵션: group 지시처방 검색할 경우 node
  953. : prcpInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  954. * @return : srchRow 에러시 0
  955. * @authur : 마정민 2007. 4. 12
  956. * @---------------------------------------------------
  957. */
  958. function addPrcpDetl ( objFlag, strSrc, strDest, sendRow, srchRow, prcpInptFlag, grupSrc, direcSrc ) {
  959. if ( objFlag == "child") {
  960. opener.javascript.reqSetMonitoringLog("addPrcpDetl", "WEB", getScreenID(), objFlag, prcpInptFlag); // 2017.12.20 사용여부를 체크 하기 위해 추가 엄영만
  961. } else {
  962. reqSetMonitoringLog("addPrcpDetl", "WEB", getScreenID(), objFlag, prcpInptFlag); // 2017.12.20 사용여부를 체크 하기 위해 추가 엄영만
  963. }
  964. //model.addLog(" *************** Start Of addPrcpDetl() PRCPCLSCD " + model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" ) + " || PRCPCD : " + model.getValue( strSrc + "[" + sendRow + "]/prcpcd" ));
  965. //model.addLog(" PRCPCLSCD : " + model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" ));
  966. //model.addLog(" PRCPCD : " + model.getValue( strSrc + "[" + sendRow + "]/prcpcd" ));
  967. //20091013 by sonjy 성빈센트병원 요청 => mig data 전처방 copy시 신코드일 경우 reset여부
  968. var bfprcpsrchyn = "";
  969. if( objFlag == "child") bfprcpsrchyn = opener.model.getValue("/root/initsrch/bfprcpsrchyn/trgtcd");
  970. else bfprcpsrchyn = model.getValue("/root/initsrch/bfprcpsrchyn/trgtcd");
  971. //20091104 by sonjy 성빈센트 전환 데이터 관련 => mig data 전처방 copy시 약/주사 용량 오류 보정
  972. var migyn = "";
  973. var colHidnValue = grdBaseColHidn("D");
  974. /***************************** 전처방 구수가코드 검색시 신코드로 변환검색 ****************************************/
  975. var oldprcpflag = "";
  976. if ( prcpInptFlag == "01" ) { //전처방이고
  977. var tempcol9 = model.getValue( strSrc + "[" + sendRow + "]/tempcol9" );
  978. var tempcol18 = model.getValue( strSrc + "[" + sendRow + "]/tempcol18" );
  979. if ( tempcol9 == "N" ) {
  980. return 0;
  981. } else {
  982. var bfprcpcd = model.getValue( strSrc + "[" + sendRow + "]/prcpcd" );
  983. //20091104 by sonjy 성빈센트 전환 데이터 관련 => mig data 전처방 copy시 약/주사 용량 오류 보정
  984. migyn = model.getValue( strSrc + "[" + sendRow + "]/tempcol20" );
  985. /**
  986. * 20091013 by sonjy 성빈센트병원 요청 => mig data 전처방 copy시 신코드일 경우 reset
  987. * 단, 지시처방일 경우는 검색 불필요하므로 제외
  988. */
  989. if ( bfprcpcd.substring( 0, 1 ) == "_" || bfprcpcd.substring( 0, 1 ) == "=" ||
  990. ( bfprcpsrchyn == "Y" && migyn == "Y" && model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" ) != "09") ) { //구수가코드이면 신코드로 다시 검색한다. by sonjy20091013
  991. //20090407 마정민수정. tempcol9로 구분되기 때문에 색깔비교 주석처리.
  992. //if ( model.getValue ( strSrc + "[" + sendRow + "]/tempcol10" ) != "#ccffcc" ) { //매핑값이 있으면(색깔은 mgr단에서 박는다)
  993. var bfprcpvol = model.getValue( strSrc + "[" + sendRow + "]/prcpvol" );
  994. var bfprcpqty = model.getValue( strSrc + "[" + sendRow + "]/prcpqty" );
  995. var bfprcptims = model.getValue( strSrc + "[" + sendRow + "]/prcptims" );
  996. var bfprcpdayno = model.getValue( strSrc + "[" + sendRow + "]/prcpdayno" );
  997. var bfprcpdelivefact = model.getValue( strSrc + "[" + sendRow + "]/prcpdelivefact" );
  998. var bfpowdflag = model.getValue( strSrc + "[" + sendRow + "]/powdflag" );
  999. var bfprnprcpflag = model.getValue( strSrc + "[" + sendRow + "]/prnprcpflag" );
  1000. var bfprepprcpflag = model.getValue( strSrc + "[" + sendRow + "]/prepprcpflag" );
  1001. var bfselfprcpflag = model.getValue( strSrc + "[" + sendRow + "]/selfprcpflag" );
  1002. var bfselfdrugflag = model.getValue( strSrc + "[" + sendRow + "]/selfdrugflag" );
  1003. var bfdrugpackflag = model.getValue( strSrc + "[" + sendRow + "]/drugpackflag" );
  1004. var bferprcpflag = model.getValue( strSrc + "[" + sendRow + "]/erprcpflag" );
  1005. var bfprecureprcpflag = model.getValue( strSrc + "[" + sendRow + "]/precureprcpflag" );
  1006. var bfnigtprcpflag = model.getValue( strSrc + "[" + sendRow + "]/nigtprcpflag" );
  1007. var bfportprcpflag = model.getValue( strSrc + "[" + sendRow + "]/portprcpflag" );
  1008. var bffixprcpflag = model.getValue( strSrc + "[" + sendRow + "]/fixprcpflag" );
  1009. var bfanamneflag = model.getValue( strSrc + "[" + sendRow + "]/anamneflag" );
  1010. var bferreadflag = model.getValue( strSrc + "[" + sendRow + "]/erreadflag" );
  1011. var bfstemcellflag = model.getValue( strSrc + "[" + sendRow + "]/stemcellflag" );
  1012. var bfprcpexecdeptcd = model.getValue( strSrc + "[" + sendRow + "]/prcpexecdeptcd" );
  1013. var bfDrprcpetc7 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc7"); //1회용량
  1014. var bfDrprcpetc8 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc8"); //1회수량
  1015. var bfDrugmastspec = model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec");
  1016. var bfpayflagcd = model.getValue ( strSrc + "[" + sendRow + "]/payflagcd"); // 2011.03.03 마이그된 처방 전처방 복사시 급여도 복사하도록 수정
  1017. //20091013 by sonjy 성빈센트병원 요청 => mig data 전처방 copy시 신코드일 경우 reset여부
  1018. if(bfprcpcd.substring( 0, 1 ) == "_" || bfprcpcd.substring( 0, 1 ) == "=" ) {
  1019. fPrcpSrchCom ( bfprcpcd.substring( 1, bfprcpcd.length ), opener.model.getValue ( "/root/init/prcpdd" ), opener.model.getValue ( "/root/paminfo/list/insukind"), "TRMMO02101", "", false, "getOldPrcpCdChngInfo", "E" );
  1020. } else {
  1021. fPrcpSrchCom ( bfprcpcd, opener.model.getValue ( "/root/init/prcpdd" ), opener.model.getValue ( "/root/paminfo/list/insukind"), "TRMMO02101", "", false, "getPrcpCdSrchInfo", "E" , false);
  1022. }
  1023. strSrc = "/root/oldprcpchngsrch/prcplist";
  1024. sendRow = 1;
  1025. if ( isNull(model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" ))){
  1026. return 0;
  1027. } else {
  1028. oldprcpflag = "Y";
  1029. var prcpclscd = model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" );
  1030. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ){
  1031. if ( prcpclscd == "A2" ) {
  1032. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcptims") != bfprcptims ) {
  1033. model.setValue ( strSrc + "[" + sendRow + "]/prcptims", bfprcptims );
  1034. fBaseMthd("oldprcp");
  1035. }
  1036. } else {
  1037. model.setValue ( strSrc + "[" + sendRow + "]/prcptims", bfprcptims );
  1038. }
  1039. var chkPrcpVol = model.getValue ( strSrc + "[" + sendRow + "]/prcpvol");
  1040. if( bfprcpsrchyn == "Y" && migyn == "Y" && parseInt(chkPrcpVol) < 1 ){
  1041. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", 0 );
  1042. model.setValue ( strSrc + "[" + sendRow + "]/prcpqty", 0 );
  1043. model.setValue ( strSrc + "[" + sendRow + "]/prcpdayno", 0 );
  1044. } else {
  1045. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", bfprcpvol );
  1046. model.setValue ( strSrc + "[" + sendRow + "]/prcpqty", bfprcpqty );
  1047. model.setValue ( strSrc + "[" + sendRow + "]/prcpdayno", bfprcpdayno );
  1048. }
  1049. //model.setValue ( strSrc + "[" + sendRow + "]/drugmthdspccdnm", "-" );
  1050. //model.setValue ( strSrc + "[" + sendRow + "]/drugmthdspccd", "-" );
  1051. //20091104 by sonjy 성빈센트 전환 데이터 관련 => mig data 전처방 copy시 약/주사 용량 오류 보정
  1052. if( bfprcpsrchyn == "Y" && migyn == "Y" ){
  1053. var sdrugmastspec = model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec");
  1054. var orgprcpvol = getArrayData ( sdrugmastspec + "^", 0, 1 , "^", "|" ); //drugcntsvol 함량기준용량 -> 경북대는 일기준 용량으로 비교
  1055. var orgDrprcpetc7 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc7"); //1회용량
  1056. var orgDrprcpetc8 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc8"); //1회수량
  1057. var orgCalcRate = 0;
  1058. //회기준에서는 수가계산구분이 1이면 횟수도 곱 (2011.01.02 전지은)
  1059. if(!isNull(bfDrprcpetc7) && !isNull(bfDrprcpetc8) && (colHidnValue == "C" || colHidnValue == "G" || colHidnValue == "H") ){
  1060. orgCalcRate = (orgDrprcpetc8 * bfDrprcpetc8) * 1000;
  1061. orgCalcRate = Math.round(orgCalcRate);
  1062. orgCalcRate = orgCalcRate / 1000;
  1063. var calcmthdcd = getArrayData ( bfDrugmastspec + "^", 0, 26, "^", "|" );
  1064. if( calcmthdcd == "1" ){
  1065. var volRate = orgDrprcpetc7 / bfDrprcpetc7 * 1000;
  1066. var qtyRate = orgDrprcpetc8 / bfDrprcpetc8 * 1000;
  1067. volRate = Math.round(volRate);
  1068. qtyRate = Math.round(qtyRate);
  1069. volRate = volRate / 1000;
  1070. qtyRate = qtyRate / 1000;
  1071. if ( volRate != qtyRate //회 기준 용량 이상 시
  1072. || Math.round ( orgDrprcpetc7 * Math.round ( orgDrprcpetc8 / bfDrprcpetc8 ) * bfprcptims * 1000 ) != bfprcpvol * 1000 ){ //1회 용량이 잘못 들어왔을 수 있음(mig) 일 기준 용량 이상 시
  1073. if( eval(bfDrprcpetc7) < 1 ){
  1074. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", "0") ; //1회용량*횟수
  1075. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc7", "0") ; //1회용량*횟수
  1076. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc8", "0") ;
  1077. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", "0") ;
  1078. } else {
  1079. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", orgDrprcpetc7 * bfprcptims) ; //1회용량*횟수
  1080. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc7", orgDrprcpetc7 * orgCalcRate ) ; //1회용량*횟수
  1081. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc8", bfDrprcpetc8 ) ;
  1082. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", bfprcpvol) ;
  1083. }
  1084. }
  1085. }else{
  1086. if( eval(bfDrprcpetc7) < 1 ){
  1087. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", "0" ) ; //1회용량
  1088. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc7", "0") ; //1회용량*횟수
  1089. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc8", "0") ;
  1090. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", "0") ;
  1091. } else {
  1092. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", bfDrprcpetc7 ) ; //1회용량
  1093. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc7", bfDrprcpetc7 ) ; //1회용량*횟수
  1094. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc8", bfDrprcpetc8 ) ;
  1095. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", bfprcpvol) ;
  1096. }
  1097. }
  1098. } else{//회기준 보정 끝 원래
  1099. if ( !isNull(orgprcpvol) && Math.round ( orgprcpvol * bfprcpqty * 1000 ) != bfprcpvol * 1000 ){
  1100. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", bfprcpqty * orgprcpvol) ;
  1101. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", bfprcpvol) ;
  1102. }
  1103. }
  1104. }
  1105. }
  1106. model.setValue ( strSrc + "[" + sendRow + "]/prcpdelivefact", bfprcpdelivefact );
  1107. model.setValue ( strSrc + "[" + sendRow + "]/powdflag", bfpowdflag );
  1108. model.setValue ( strSrc + "[" + sendRow + "]/prnprcpflag", bfprnprcpflag );
  1109. model.setValue ( strSrc + "[" + sendRow + "]/prepprcpflag", bfprepprcpflag );
  1110. model.setValue ( strSrc + "[" + sendRow + "]/selfprcpflag", bfselfprcpflag );
  1111. model.setValue ( strSrc + "[" + sendRow + "]/selfdrugflag", bfselfdrugflag );
  1112. model.setValue ( strSrc + "[" + sendRow + "]/drugpackflag", bfdrugpackflag );
  1113. model.setValue ( strSrc + "[" + sendRow + "]/erprcpflag", bferprcpflag );
  1114. model.setValue ( strSrc + "[" + sendRow + "]/precureprcpflag", bfprecureprcpflag );
  1115. model.setValue ( strSrc + "[" + sendRow + "]/nigtprcpflag", bfnigtprcpflag );
  1116. model.setValue ( strSrc + "[" + sendRow + "]/portprcpflag", bfportprcpflag );
  1117. model.setValue ( strSrc + "[" + sendRow + "]/fixprcpflag", bffixprcpflag );
  1118. model.setValue ( strSrc + "[" + sendRow + "]/anamneflag", bfanamneflag );
  1119. model.setValue ( strSrc + "[" + sendRow + "]/erreadflag", bferreadflag );
  1120. model.setValue ( strSrc + "[" + sendRow + "]/payflagcd", bfpayflagcd ); // 2011.03.03 마이그된 처방 전처방 복사시 급여도 복사하도록 수정
  1121. }
  1122. }
  1123. }
  1124. //20080917 마정민수정: PRN실처방은 전처방에서 복사되면 안된다.
  1125. if ( model.getValue( strSrc + "[" + sendRow + "]/prcpinptflag" ) == "19" ) {
  1126. messageBox ( "[" + model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ) + "]: PRN 실처방은 처방등록 하실수", "I004" );
  1127. return 0;
  1128. }
  1129. // 전처방에서 복사 시 소아 TPN은 전처방에서 복사 안되도록 요청. - 20090720 by MoonSH
  1130. if( model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "A6" &&
  1131. getArrayData ( model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^", 0, 23 , "^", "|" ) == "B") {
  1132. messageBox ( "[" + model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ) + "]: 소아 TPN 처방은 전처방에서 복사하실수", "I004" );
  1133. return 0;
  1134. }
  1135. // 전처방에서 복사 시 stemcellflag 초기화 요청. - 20081118 by MoonSH
  1136. if ( !isNull(bfstemcellflag) ){
  1137. model.setValue ( strSrc + "[" + sendRow + "]/stemcellflag", "00NNN" );
  1138. }
  1139. // 전처방에서 복사 시 마이그레이션 잘못 들어와서 _0으로 존재 하는 실행부서 -으로 수정. - 20081202 by MoonSH
  1140. if ( bfprcpexecdeptcd == "_0" ) {
  1141. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd", "-" );
  1142. }
  1143. //20091203 by sonjy 전처방 copy시 처방종류가 지시인경우 전처방에 저장된 시행부서를 copy하지 않고 초기화.[요청번호 8711 ]
  1144. //(전실 환자의 경우 이전병동으로 보이는 문제 ) -- V/S(지시), 활동(지시), I/O(지시), 지시 : 식이,BMT제외
  1145. var cur_prcpclscd = model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" );
  1146. if(cur_prcpclscd == "00" || cur_prcpclscd == "01"|| cur_prcpclscd == "02" || cur_prcpclscd == "09") {
  1147. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd", model.getValue( strSrc + "[" + sendRow + "]/tempcol23") );
  1148. }
  1149. }
  1150. //전처방이나 약속처방에서 임상처방체크된 처방을 발행할 경우 임상시험 부유형 자동세팅(subcretno), CHC, 2009-07-22
  1151. if ( prcpInptFlag == "01" || prcpInptFlag == "02" ) {
  1152. if ( model.getValue( strSrc + "[" + sendRow + "]/clincstdyflag" ) == "Y" ) {
  1153. fSubcretnoSet("2", "Y", strSrc, sendRow);
  1154. }
  1155. //전처방이나 약속처방일때 용량/수량 보정 20100209 LYJ
  1156. var prcpclscd = model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" );
  1157. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ){
  1158. if( bfprcpsrchyn == "Y" && model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" ) != "09" && model.getValue( strSrc + "[" + sendRow + "]/prcpinptflag" ) != "35"){ // 자가보유처방은 보정 제외한다. 20100504 LYJ
  1159. var bfprcpvol = model.getValue( strSrc + "[" + sendRow + "]/prcpvol" );
  1160. var bfprcpqty = model.getValue( strSrc + "[" + sendRow + "]/prcpqty" );
  1161. var sdrugmastspec = model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec");
  1162. var orgprcpvol = getArrayData ( sdrugmastspec + "^", 0, 1 , "^", "|" ); //drugcntsvol 함량기준용량
  1163. if ( !isNull(orgprcpvol) && Math.round ( orgprcpvol * bfprcpqty * 1000 ) != bfprcpvol * 1000 ){
  1164. var bfDrprcpetc7 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc7"); //1회용량
  1165. var bfDrprcpetc8 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc8"); //1회수량
  1166. var bfprcptims = model.getValue( strSrc + "[" + sendRow + "]/prcptims" );
  1167. if(!isNull(bfDrprcpetc7) && !isNull(bfDrprcpetc8) && (colHidnValue == "C" || colHidnValue == "G" || colHidnValue == "H") ){
  1168. var orgDrprcpetc7 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc7"); //1회용량
  1169. var orgDrprcpetc8 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc8"); //1회수량
  1170. var orgCalcRate = 0;
  1171. var calcmthdcd = getArrayData ( sdrugmastspec + "^", 0, 26, "^", "|" );
  1172. if( calcmthdcd == "1" ){
  1173. orgCalcRate = (orgDrprcpetc8 * bfDrprcpetc8) * 1000;
  1174. orgCalcRate = Math.round(orgCalcRate);
  1175. orgCalcRate = orgCalcRate / 1000;
  1176. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", orgDrprcpetc7 * bfprcptims) ; //1회용량*횟수
  1177. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc7", orgDrprcpetc7 ) ; //1회용량*횟수
  1178. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc8", bfDrprcpetc8 ) ;
  1179. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", orgDrprcpetc7) ;
  1180. } else {
  1181. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", bfDrprcpetc7 ) ; //1회용량
  1182. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc7", bfDrprcpetc7 ) ; //1회용량*횟수
  1183. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc8", bfDrprcpetc8 ) ;
  1184. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", bfprcpvol) ;
  1185. }
  1186. } else {
  1187. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", bfprcpqty * orgprcpvol) ;
  1188. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", bfprcpvol) ;
  1189. }
  1190. }
  1191. }
  1192. }
  1193. }
  1194. //자가보유 처방일때 처방명 재설정 한다. 20100427 LYJ
  1195. if (model.getValue( strSrc + "[" + sendRow + "]/prcpinptflag") == "35"){
  1196. var selfprcpnm = model.getValue( strSrc + "[" + sendRow + "]/prcpnm" );
  1197. var selflen = selfprcpnm.length;
  1198. if (prcpInptFlag != "35"){
  1199. selfprcpnm1 = selfprcpnm.substring(7, selflen);
  1200. model.setValue ( strSrc + "[" + sendRow + "]/orgprcpnm", selfprcpnm1) ;
  1201. }
  1202. }
  1203. if ( prcpInptFlag == "35" ) { //자가보유
  1204. model.setValue ( strSrc + "[" + sendRow + "]/orgprcpnm", model.getValue( strSrc + "[" + sendRow + "]/prcpnm" )) ;
  1205. }
  1206. var prcpClsCd = model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" );
  1207. var prcpKindCd = model.getValue( strSrc + "[" + sendRow + "]/prcpkindcd" );
  1208. var drugmthdspccd = model.getValue( strSrc + "[" + sendRow + "]/drugmthdspccd" );
  1209. var prcpnm = model.getValue( strSrc + "[" + sendRow + "]/prcpnm" );
  1210. var drugmastspec = model.getValue( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^";
  1211. var hsctflag = "N";
  1212. var cpchk = "";
  1213. var usge = "";
  1214. var prcpgenrflag = "";
  1215. if ( objFlag == "child" ) {
  1216. usge = opener.model.getValue ( "/root/usge" );
  1217. cpchk = opener.model.getValue ( "/root/cp" );
  1218. prcpgenrflag = opener.model.getValue ( "/root/patflag/list/prcpgenrflag" );
  1219. } else {
  1220. usge = model.getValue ( "/root/usge" );
  1221. cpchk = model.getValue ( "/root/cp" );
  1222. prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  1223. }
  1224. if ( usge == "prms" || usge == "direc" || usge == "home" ) {
  1225. prcpInptFlag = "02";
  1226. }
  1227. if ( prcpClsCd == "-" ) {
  1228. messageBox ( prcpnm + " 처방은 처방분류가 없어 처방등록을 하실 수 없습니다.", "E" );
  1229. return 0;
  1230. }
  1231. var iprcpqty = eval(model.getValue( strSrc + "[" + sendRow + "]/prcpqty" ));
  1232. var iprcptims = eval(model.getValue( strSrc + "[" + sendRow + "]/prcptims" ));
  1233. if ( model.getValue( strSrc + "[" + sendRow + "]/tempcol18" ) == "MC" && (iprcpqty != 1 || iprcptims != 1 )) {
  1234. messageBox ( "[" + prcpnm + "] 전환데이터 연속검사처방은 처방복사 하실 수 없습니다. ( 수량:" + iprcpqty + ", 횟수:" + iprcptims + " )" , "E" );
  1235. return 0;
  1236. }
  1237. var addprcpchk = ""
  1238. if ( objFlag == "child" ) {
  1239. addprcpchk = opener.model.getValue ( "/root/addprcp" );
  1240. } else {
  1241. addprcpchk = model.getValue ( "/root/addprcp" );
  1242. }
  1243. if ( addprcpchk == "Y" ){ //시행부서체크
  1244. //시행부서 처방은 마약불가
  1245. var spcldrug = getArrayData ( drugmastspec, 0, 23, "^", "|" );
  1246. //20080721 마정민수정 김민선 선생님의 요청. 의사권한이 있는사람은 처방 가능.
  1247. if ( spcldrug == "M" ) {
  1248. var prcpauthflag = "";
  1249. if ( objFlag == "child" ) {
  1250. prcpauthflag = opener.model.getValue ( "/root/init/prcpauthflag" )
  1251. } else {
  1252. prcpauthflag = model.getValue ( "/root/init/prcpauthflag" )
  1253. }
  1254. if (prcpauthflag != "3" ){
  1255. messageBox ( prcpnm + " 마약처방은 시행부서에서 의사만 등록이 가능한 처방입니다.", "E" );
  1256. return 0;
  1257. }
  1258. }
  1259. }
  1260. //20090302 마정민수정: Irradiation(LBT70010) 단독처방 불가
  1261. if ( objFlag == "child" ) {
  1262. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" ) == opener.model.getValue ( "/root/initsrch/irrprcpcd/trgtcd" )) {
  1263. messageBox ( prcpnm + "는 단독처방이 불가합니다. 수혈상세팝업의 Irr 체크기능을 통해 등록해 주십시오", "E" );
  1264. return 0;
  1265. }
  1266. } else {
  1267. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" ) == model.getValue ( "/root/initsrch/irrprcpcd/trgtcd" )) {
  1268. messageBox ( prcpnm + "는 단독처방이 불가합니다. 수혈상세팝업의 Irr 체크기능을 통해 등록해 주십시오", "E" );
  1269. return 0;
  1270. }
  1271. }
  1272. if ( prcpClsCd == "A2" || prcpClsCd == "A4" || prcpClsCd == "A6" ) {
  1273. if (isNull(model.getValue ( strSrc + "[" + sendRow + "]/prcpvolunitnm"))) {
  1274. messageBox ( model.getValue ( strSrc + "[" + sendRow + "]/prcpnm") + " 처방의 용량단위가", "E014" );
  1275. return 0;
  1276. }
  1277. if ( isNull(model.getValue ( strSrc + "[" + sendRow + "]/prcpqtyunitnm"))) {
  1278. messageBox ( model.getValue ( strSrc + "[" + sendRow + "]/prcpnm") + " 처방의 수량단위가", "E014" );
  1279. return 0;
  1280. }
  1281. }
  1282. //20090903 이윤정 추가: 응급 탭에서 선택된 환자의 경우 심야가산적용 자동 체크
  1283. if ( objFlag == "child" ) {
  1284. var prcpgenrflag = opener.model.getValue ( "/root/patflag/list/prcpgenrflag" );
  1285. if (prcpgenrflag == "E"){
  1286. if ( prcpClsCd == "H2" || prcpClsCd == "H4" ) {
  1287. model.setValue( strSrc + "[" + sendRow + "]/nigtprcpflag","N" );
  1288. var nigtprcptm = opener.model.getValue("/root/initsrch/nigtprcptm/trgtcd");
  1289. var nigtprcpsplit = nigtprcptm.split("|");
  1290. var nigtprcpstart = nigtprcpsplit[0];
  1291. var nigtprcpend = nigtprcpsplit[1];
  1292. var MyTime = getCurrentTime();
  1293. var realtime = MyTime.substr(0,4);
  1294. if ( nigtprcpstart < realtime || realtime < nigtprcpend){
  1295. model.setValue( strSrc + "[" + sendRow + "]/nigtprcpflag","Y" );
  1296. }
  1297. }
  1298. }
  1299. }else{
  1300. var prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  1301. if (prcpgenrflag == "E"){
  1302. if ( prcpClsCd == "H2" || prcpClsCd == "H4" ) {
  1303. model.setValue( strSrc + "[" + sendRow + "]/nigtprcpflag","N" );
  1304. var nigtprcptm = model.getValue("/root/initsrch/nigtprcptm/trgtcd");
  1305. var nigtprcpsplit = nigtprcptm.split("|");
  1306. var nigtprcpstart = nigtprcpsplit[0];
  1307. var nigtprcpend = nigtprcpsplit[1];
  1308. var MyTime = getCurrentTime();
  1309. var realtime = MyTime.substr(0,4);
  1310. if ( nigtprcpstart < realtime || realtime < nigtprcpend){
  1311. model.setValue( strSrc + "[" + sendRow + "]/nigtprcpflag","Y" );
  1312. }
  1313. }
  1314. }
  1315. }
  1316. //-- CP, 항암프로토콜일 경우는 클라이언트에서 품절약체크를 하지 않는다 --//
  1317. if( prcpInptFlag != "05" && prcpInptFlag != "06" && prcpInptFlag != "17" ){
  1318. if ( prcpClsCd == "A2" || prcpClsCd == "A4" || prcpClsCd == "A6" ) {
  1319. //항생제체크
  1320. var returnVal = fGetHardCDList("Y", 233, 3); // 2010. 10. 26. 경북대는 CDSS 추천항생제를 사용하지 않음. 따라서 사용여부를 처방 하드코드 테이블로 설정할 수 있도록 함.
  1321. if (returnVal =="Y") {
  1322. if ( usge == "prcp" && prcpgenrflag != "O" && prcpClsCd == "A6") {
  1323. if ( getArrayData ( drugmastspec + "^", 0, 23, "^", "|" ) == "P" && getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "N" ) {
  1324. if ( objFlag == "child" ) {
  1325. if (opener.javascript.fAntiMicChk ( sendRow, "child", strSrc, prcpInptFlag ) == 0){
  1326. return 0;
  1327. }
  1328. } else {
  1329. if (fAntiMicChk ( sendRow, "1", strSrc, prcpInptFlag ) == 0 ){
  1330. return 0;
  1331. }
  1332. }
  1333. }
  1334. }
  1335. //제한항생제체크
  1336. if ( usge == "prcp" && prcpgenrflag != "O" ) {
  1337. if ( getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "Y" ) {
  1338. if ( objFlag == "child" ) {
  1339. if (opener.javascript.fAntiMicChk ( sendRow, "child", strSrc, prcpInptFlag ) == 0){
  1340. return 0;
  1341. }
  1342. } else {
  1343. if (fAntiMicChk ( sendRow, "1", strSrc, prcpInptFlag ) == 0 ){
  1344. return 0;
  1345. }
  1346. }
  1347. }
  1348. }
  1349. }
  1350. //BY 문세희 20080930 END
  1351. //품절약 체크
  1352. if ( getArrayData (drugmastspec, 0, 10, "^", "|" ) == "Y" ) {
  1353. if ( objFlag == "child" ) {
  1354. opener.javascript.fAltDrug ( sendRow, "child", strSrc, prcpInptFlag );
  1355. } else {
  1356. fAltDrug ( sendRow, "1", strSrc, prcpInptFlag );
  1357. }
  1358. return 0;
  1359. }
  1360. //20090528 마정민 추가. 6세미만 경구약 자동 powdflag전환 때문에 처방복사시 powdflag체크로직 추가. 단 전처방복사는제외.
  1361. var vAge = 99;
  1362. if ( objFlag == "child" ) {
  1363. vAge = parseInt ( opener.model.getValue ( "/root/paminfo/list/age" ));
  1364. } else {
  1365. vAge = parseInt ( model.getValue ( "/root/paminfo/list/age" ));
  1366. }
  1367. if ( vAge < 6 && prcpClsCd == "A2" && prcpInptFlag != "01" ) {
  1368. if ( getArrayData ( drugmastspec + "^", 0, 19, "^", "|" ) == "2" ) { //산제불가
  1369. if ( objFlag == "child" ) {
  1370. opener.javascript.fAltDrug ( sendRow, "child", strSrc, prcpInptFlag, "4" );
  1371. if ( opener.javascript.getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  1372. opener.javascript.clearParameter ( "SPMMB10100_chkyn" );
  1373. return 0; //대체약을 선택했다면 복사시키지 않는다.
  1374. }
  1375. } else {
  1376. fAltDrug ( sendRow, "4", strSrc, prcpInptFlag );
  1377. if ( getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  1378. clearParameter ( "SPMMB10100_chkyn" );
  1379. return 0; //대체약을 선택했다면 복사시키지 않는다.
  1380. }
  1381. }
  1382. //20090602 배성미선생님 요청으로 산제불가 취소해도 복사되게 수정
  1383. } else if ( getArrayData ( drugmastspec + "^", 0, 19, "^", "|" ) == "1" ) { //산제주의
  1384. if ( objFlag == "child" ) {
  1385. opener.javascript.fAltDrug ( sendRow, "child", strSrc, prcpInptFlag, "5" );
  1386. if ( opener.javascript.getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  1387. opener.javascript.clearParameter ( "SPMMB10100_chkyn" );
  1388. return 0; //대체약을 선택했다면 복사시키지 않는다.
  1389. }
  1390. } else {
  1391. fAltDrug ( sendRow, "5", strSrc, prcpInptFlag );
  1392. if ( getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  1393. clearParameter ( "SPMMB10100_chkyn" );
  1394. return 0; //대체약을 선택했다면 복사시키지 않는다.
  1395. }
  1396. }
  1397. }
  1398. }
  1399. }
  1400. //대체처방체크
  1401. var altcdinfo = model.getValue( strSrc + "[" + sendRow + "]/tempcol16" );
  1402. var prcpinptflag = model.getValue( strSrc + "[" + sendRow + "]/prcpinptflag" );
  1403. if ( altcdinfo.substring( 0, 1 ) != "X" && altcdinfo.substring( 0, 1 ) != "A" ) {
  1404. if(altcdinfo.substring( 0, 1 ) == "D") { // 수가 종료 처방 복사 불가 처리 2013.04.18 엄영만
  1405. if(prcpInptFlag == "02") {
  1406. messageBox ( "[" + prcpnm + "]: 수가 또는 검사실 사용종료 되어 처방을 복사 할 수 없습니다.\n\n상단메뉴 기본정보관리->약속Set 메뉴에서 약속처방을 재구성 하시기 바랍니다.", "E999" );
  1407. } else {
  1408. messageBox ( "[" + prcpnm + "]: 수가 또는 검사실 사용종료 되어 처방을 복사", "E001" );
  1409. }
  1410. return 0;
  1411. }
  1412. if (prcpinptflag !="35") { // 자가보유처방은 복사 가능 20100504 by LYJ
  1413. messageBox ( "[" + prcpnm + "]: 수가 또는 검사실 사용종료 되어 처방을 복사", "E001" );
  1414. return 0;
  1415. }
  1416. }
  1417. if (altcdinfo.substring( 0, 1 ) == "X" ) {
  1418. if ( objFlag == "child" ) {
  1419. opener.javascript.fAltPrcpCd ( sendRow, "child", strSrc, prcpInptFlag );
  1420. } else {
  1421. fAltPrcpCd ( sendRow, "1", strSrc, prcpInptFlag );
  1422. }
  1423. return 0;
  1424. }
  1425. }
  1426. //-- CP, 항암프로토콜 처방의 품절약 체크 제외 끝 --//
  1427. if (!fPrmsSaveCheck ( usge, prcpKindCd, prcpnm )) {
  1428. return 0;
  1429. }
  1430. if ( prcpInptFlag == "01" ) { //전회처방
  1431. //반환요청된 처방, D/C된 처방 모두 처방 복사 불가, CHC, 2009-08-03
  1432. //if ( model.getValue ( strSrc + "[" + sendRow + "]/prcphistcd" ) == "E" ) {
  1433. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcphistcd" ) == "E" || model.getValue ( strSrc + "[" + sendRow + "]/prcphistcd" ) == "C") {
  1434. messageBox ( "반납처방은 처방복사", "E001" );
  1435. return 0;
  1436. }
  1437. //종속처방 자처방 복사 불가
  1438. var inclprcpno = model.getValue ( strSrc + "[" + sendRow + "]/inclprcpno" );
  1439. if ( !isNull(inclprcpno) && inclprcpno != "-" ) {
  1440. if ( eval(inclprcpno) > 0 ) {
  1441. if ( model.getValue ( strSrc + "[" + sendRow + "]/grupsnglflag" ) != "M" ) {
  1442. return 0;
  1443. }
  1444. }
  1445. }
  1446. //20080731: 마정민 수정 hsct 자처방 복사 불가
  1447. var hsctlnkno = model.getValue ( strSrc + "[" + sendRow + "]/hsctlnkno" );
  1448. if ( !isNull(hsctlnkno) && hsctlnkno != "-" ) {
  1449. if ( eval(hsctlnkno) > 0 ) {
  1450. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcpsetcd" ) != "-" ) {
  1451. return 0;
  1452. }
  1453. }
  1454. }
  1455. }
  1456. if ( model.getValue( strSrc + "[" + sendRow + "]/grupsnglflag" ) == "M" ) { //그룹코드 M을 찾아낸다. 처방검색일때만 풀린다.
  1457. var grupCond1 = model.getValue( strSrc + "[" + sendRow + "]/prcpcd" );
  1458. var grupCond3 = "";
  1459. var grupCond4 = "";
  1460. var inclprcpno = "";
  1461. if ( objFlag == "child" ) {
  1462. grupCond3 = opener.model.getValue ( "/root/init/prcpdd" );
  1463. grupCond4 = opener.model.getValue ( "/root/paminfo/list/insukind");
  1464. if ( usge == "prcp" ) { //처방화면에만 종속처방이 적용된다.
  1465. inclprcpno = eval(opener.model.getValue ( "/root/init/inclprcpno")) + 1; //종속처방번호를 받아온다.
  1466. }
  1467. } else {
  1468. grupCond3 = model.getValue ( "/root/init/prcpdd" );
  1469. grupCond4 = model.getValue ( "/root/paminfo/list/insukind");
  1470. if ( usge == "prcp" ) {//처방화면에만 종속처방이 적용된다.
  1471. inclprcpno = eval(model.getValue ( "/root/init/inclprcpno")) + 1; //종속처방번호를 받아온다.
  1472. }
  1473. }
  1474. prcpGroupSrch ( grupCond1, grupCond3, grupCond4 );
  1475. if ( grupSrc == null ) grupSrc = "/root/prcpgroup/prcplist";
  1476. var srcNodeList = model.instances(0).selectNodes( grupSrc );
  1477. if ( srcNodeList.length > 0 ) {
  1478. if ( objFlag == "child" ) {
  1479. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1480. model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1481. if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "N", inclprcpno )) {
  1482. return 0;
  1483. }
  1484. } else {
  1485. var destNode = strDest;
  1486. model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1487. if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "N", inclprcpno )) {
  1488. return 0;
  1489. }
  1490. }
  1491. srchRow ++;
  1492. if ( usge == "prcp" ) {
  1493. for (var i=1; i<=srcNodeList.length; i++) {
  1494. if ( objFlag == "child" ) {
  1495. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1496. model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
  1497. if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "N", inclprcpno )) {
  1498. return 0;
  1499. }
  1500. } else {
  1501. var destNode = strDest;
  1502. model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
  1503. if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "N", inclprcpno )) {
  1504. return 0;
  1505. }
  1506. }
  1507. if ( objFlag == "child" ) {
  1508. srchRow = opener.javascript.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1509. } else {
  1510. srchRow = addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1511. }
  1512. srchRow ++;
  1513. }
  1514. }
  1515. }
  1516. } else if ( model.getValue( strSrc + "[" + sendRow + "]/grupsnglflag" ) == "J" ) { //그룹지시처방 J을 찾아낸다.
  1517. //조회조건
  1518. var direcCond1 = model.getValue( strSrc + "[" + sendRow + "]/srchcondcnts" );
  1519. var direcCond5 = model.getValue( strSrc + "[" + sendRow + "]/prcpcd" );
  1520. var direcCond3 = "";
  1521. var direcCond4 = "";
  1522. if ( prcpClsCd == "04" ) {
  1523. hsctflag = "Y";
  1524. }
  1525. if ( objFlag == "child" ) {
  1526. direcCond3 = opener.model.getValue ( "/root/init/prcpdd" );
  1527. direcCond4 = opener.model.getValue ( "/root/paminfo/list/insukind");
  1528. } else {
  1529. direcCond3 = model.getValue ( "/root/init/prcpdd" );
  1530. direcCond4 = model.getValue ( "/root/paminfo/list/insukind");
  1531. }
  1532. prcpDirecSrch ( direcCond1, direcCond3, direcCond4, direcCond5 );
  1533. if ( direcSrc == null ) direcSrc = "/root/prcpdirec/prcplist";
  1534. var srcNodeList = model.instances(0).selectNodes( direcSrc );
  1535. if ( srcNodeList.length > 0 ){ //그룹지시처방 J는 종속하는 수가 코드가 있을 때만 추가.
  1536. //HSCT 모코드는 HSCTTEMPFLAG 가 N이다.
  1537. if ( objFlag == "child" ) {
  1538. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1539. model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1540. //종속처방번호 Setting ( hsctlnkno )
  1541. var hsctlnkno = eval ( opener.model.getValue ( "/root/init/hsctlnkno" )) + 1;
  1542. opener.model.setValue ( "/root/init/hsctlnkno", hsctlnkno );
  1543. if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "M" )) {
  1544. return 0;
  1545. }
  1546. } else {
  1547. var destNode = strDest;
  1548. var hsctlnkno = eval ( model.getValue ( "/root/init/hsctlnkno" )) + 1;
  1549. model.setValue ( "/root/init/hsctlnkno", hsctlnkno );
  1550. model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1551. if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "M" )) {
  1552. return 0;
  1553. }
  1554. }
  1555. //CP 약속셋 생성 시에는 자코드가 풀리면 안된다. CP배치를 통해 실처방 저장시 풀린다! (2008.01.22)
  1556. if( opener.model.getValue("/root/cp") == "S" || model.getValue("/root/cp") == "S" ){
  1557. return;
  1558. }
  1559. if ( objFlag == "child" ) {
  1560. srchRow = opener.javascript.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1561. } else {
  1562. srchRow = addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1563. }
  1564. srchRow ++;
  1565. for (var k=1; k <= srcNodeList.length; k++) {
  1566. if ( objFlag == "child" ) {
  1567. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1568. model.duplicate( destNode, direcSrc + "[" + k + "]", "*[" + srchRow + "]");
  1569. if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, hsctflag )) {
  1570. return 0;
  1571. }
  1572. } else {
  1573. var destNode = strDest;
  1574. model.duplicate( destNode, direcSrc + "[" + k + "]", "*[" + srchRow + "]");
  1575. if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, hsctflag )) {
  1576. return 0;
  1577. }
  1578. }
  1579. if ( objFlag == "child" ) {
  1580. srchRow = opener.javascript.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1581. } else {
  1582. srchRow = addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1583. }
  1584. srchRow ++;
  1585. }
  1586. }
  1587. } else if ( (prcpClsCd == "B2" || prcpClsCd == "B4" || prcpClsCd == "B6") && (getArrayData (drugmastspec, 0, 2, "^", "|" ) == "0" || getArrayData (drugmastspec, 0, 2, "^", "|" ) == "-")){
  1588. //검사대분류유형(testlrgkind) 그룹: 0, 1
  1589. //-일 때는 검체와 상관없는 그룹코드
  1590. var grupCond1 = model.getValue( strSrc + "[" + sendRow + "]/prcpcd" );
  1591. var grupCond3 = "";
  1592. var grupCond4 = "";
  1593. var popflag = "group"
  1594. if ( objFlag == "child" ) {
  1595. popflag = "child";
  1596. grupCond3 = opener.model.getValue ( "/root/init/prcpdd" );
  1597. grupCond4 = opener.model.getValue ( "/root/paminfo/list/insukind");
  1598. } else {
  1599. grupCond3 = model.getValue ( "/root/init/prcpdd" );
  1600. grupCond4 = model.getValue ( "/root/paminfo/list/insukind");
  1601. }
  1602. //구수가코드일 경우
  1603. if ( oldprcpflag == "Y" ) {
  1604. popflag = "oldprcp";
  1605. }
  1606. var drugmthdspccd = model.getValue ( strSrc + "[" + sendRow + "]/drugmthdspccd" );
  1607. var spccd = "";
  1608. var spcnm = "";
  1609. fGetSpc ( sendRow, popflag, objFlag )
  1610. if ( drugmthdspccd == "998" ) {
  1611. if ( getParameter ("SPMMO03500_rtn_useyn") == "Y" ) {
  1612. spccd = getParameter ( "SPMMO03500_rtn_spccd" );
  1613. spcnm = getParameter ( "SPMMO03500_rtn_spcscrnnm" );
  1614. }
  1615. clearParameter ( "SPMMO03500_rtn_useyn" );
  1616. clearParameter ( "SPMMO03500_rtn_spccd" );
  1617. clearParameter ( "SPMMO03500_rtn_spcscrnnm" );
  1618. } else if ( drugmthdspccd == "999" ) {
  1619. if ( getParameter ("SPMMO03400_rtn_useyn") == "Y" ) {
  1620. spccd = getParameter ( "SPMMO03400_rtn_spccd" );
  1621. spcnm = getParameter ("SPMMO03400_rtn_spcscrnnm" );
  1622. }
  1623. clearParameter ( "SPMMO03400_rtn_useyn" );
  1624. clearParameter ( "SPMMO03400_rtn_spccd" );
  1625. clearParameter ( "SPMMO03400_rtn_spcscrnnm" );
  1626. } else { //팝업이 뜨지 않을 때는 본체의 검체코드로 검색한다.
  1627. spccd = drugmthdspccd;
  1628. spcnm = model.getValue ( strSrc + "[" + sendRow + "]/drugmthdspccdnm" );
  1629. }
  1630. prcpGroupSrch ( grupCond1, grupCond3, grupCond4, spccd, getArrayData (drugmastspec, 0, 2, "^", "|" ), "getLisPrcpGroupInfo" );
  1631. if ( objFlag == "child" ) {
  1632. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1633. } else {
  1634. var destNode = strDest;
  1635. }
  1636. if ( grupSrc == null ) grupSrc = "/root/prcpgroup/prcplist";
  1637. var srcNodeList = model.instances(0).selectNodes( grupSrc );
  1638. for (var i=1; i<=srcNodeList.length; i++) {
  1639. if ( objFlag == "child" ) {
  1640. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1641. model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
  1642. if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag )) {
  1643. return 0;
  1644. }
  1645. if (!isNull(spccd)) {
  1646. if ( getArrayData (drugmastspec, 0, 2, "^", "|" ) != "-" ) {
  1647. opener.model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccd", spccd );
  1648. opener.model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccdnm", spcnm );
  1649. }
  1650. }
  1651. } else {
  1652. var destNode = strDest;
  1653. model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
  1654. if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag )) {
  1655. return 0;
  1656. }
  1657. if (!isNull(spccd)) {
  1658. if ( getArrayData (drugmastspec, 0, 2, "^", "|" ) != "-" ) {
  1659. model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccd", spccd );
  1660. model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccdnm", spcnm );
  1661. }
  1662. }
  1663. }
  1664. srchRow ++;
  1665. }
  1666. } else { //그룹코드 M, J 가 아닐 경우
  1667. if ( objFlag == "child" ) {
  1668. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1669. model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1670. //전처방 때문에 duplicate => addPrcpSetValue 하는 것으로 수정
  1671. //먼저 set 하면 전처방 화면 내용이 수정되고 그로인해 처방키 초기화로 인해 D/C 시 에러
  1672. if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag )) {
  1673. return 0;
  1674. }
  1675. } else {
  1676. var destNode = strDest;
  1677. model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1678. //전처방 때문에 duplicate => addPrcpSetValue 하는 것으로 수정 (main에서는 필요없지만 구조를 맞추려 같이 고침)
  1679. //먼저 set 하면 전처방 화면 내용이 수정되고 그로인해 처방키 초기화로 인해 D/C 시 에러
  1680. if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag )) {
  1681. return 0;
  1682. }
  1683. }
  1684. if ( objFlag == "child" ) {
  1685. srchRow = opener.javascript.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1686. } else {
  1687. srchRow = addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1688. }
  1689. srchRow ++;
  1690. }
  1691. //model.addLog(" ***************** End Of addPrcpDetl()");
  1692. return srchRow; //검색 row 값을 넘겨준다.
  1693. }
  1694. /**
  1695. * @desc : 처방main에 넘긴 후에 기본값을 setting한다.
  1696. * @param : objFlag => child or ...
  1697. : strSrc => setting할 source node
  1698. : sendRow => setting할 row
  1699. : prcpInptFlag => 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  1700. : hsctflag => hsct 인지 표시
  1701. : inclprcpcd => 종속처방코드
  1702. * @return : true, false
  1703. * @authur : 마정민 2007. 4. 12
  1704. * @---------------------------------------------------
  1705. */
  1706. function addPrcpSetValue ( objFlag, strSrc , sendRow, prcpInptFlag, hsctflag, inclprcpno ) {
  1707. if ( objFlag == "child") {
  1708. opener.javascript.reqSetMonitoringLog("addPrcpSetValue", "WEB", getScreenID(), objFlag, prcpInptFlag); // 2017.12.20 사용여부를 체크 하기 위해 추가 엄영만
  1709. } else {
  1710. reqSetMonitoringLog("addPrcpSetValue", "WEB", getScreenID(), objFlag, prcpInptFlag); // 2017.12.20 사용여부를 체크 하기 위해 추가 엄영만
  1711. }
  1712. //model.addLog(" ************* Start Of addPrcpSetValue()");
  1713. var prcpdd = ""; //처방일
  1714. var prcpkindcd = ""; //처방종류변수
  1715. var pamInfoNode = "/root/paminfo/list";
  1716. var pid = ""; //환자번호
  1717. var indd = ""; //진료일자
  1718. var cretno = ""; //생성번호
  1719. var orddeptcd = ""; //담당부서
  1720. var orddrid = ""; //담당교수
  1721. var prcpgenrflag = ""; //외래입원구분
  1722. var prcpclscd = model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" );
  1723. var orddeptcd = "";
  1724. var org_prcpInptFlag = prcpInptFlag;
  1725. if ( isNull(prcpInptFlag)){
  1726. prcpInptFlag = model.getValue ( strSrc + "[" + sendRow + "]/prcpinptflag" );
  1727. }
  1728. if( (org_prcpInptFlag != "05" || (org_prcpInptFlag == "05" && model.getValue(strSrc + "[" + sendRow + "]/prcpinptflag") == "00")) && model.getValue (strSrc + "[" + sendRow + "]/prcpinptflag") != "35"){ //20100426 자가보유약일 때 prcpinptflag 35 로 지정한다 LYJ
  1729. model.setValue ( strSrc + "[" + sendRow + "]/prcpinptflag", prcpInptFlag ); //처방입력구분
  1730. prcpInptFlag = org_prcpInptFlag;
  1731. }
  1732. model.setValue ( strSrc + "[" + sendRow + "]/prcphistcd", "O" ); //처방이력코드:O
  1733. model.setValue ( strSrc + "[" + sendRow + "]/prcpsignflag", "2" ); //처방이력구분:2
  1734. model.setValue ( strSrc + "[" + sendRow + "]/prcprefseq", "0" ); //처방순서(전처방에 넘어올때도 있기때문에 0으로 클리어)
  1735. model.setValue ( strSrc + "[" + sendRow + "]/etcprcpflag", "-" ); //디폴트세팅.
  1736. //-- CP, 항암프로토콜일 경우 추가되는 saveflaginfo 값 셋팅 --//
  1737. if( prcpInptFlag == "05" || prcpInptFlag == "06" ){
  1738. if( model.getValue(strSrc + "[" + sendRow + "]/prcpcd") != "000000000033" ){
  1739. //처방명의 구분이 2개가 중복되어 저장되는 문제 -> 원처방명을 저장, 공통 지시처방의 원처방명은 "전달사항" 이므로, 공통 지시처방만 제외
  1740. model.setValue ( strSrc + "[" + sendRow + "]/prcpnm", model.getValue(strSrc + "[" + sendRow + "]/orgprcpnm") ); //makePrcpNm() 때문에 prcpnm->orgprcpnm
  1741. }
  1742. if( prcpInptFlag == "06" ){
  1743. model.makeValue ( "/root/save/saveflaginfo/cpgappno", appNo_SMMMO00110 ); //CP처방 or 프로토콜처방 no
  1744. model.makeValue ( "/root/save/saveflaginfo/prtlprcpstatus", prtlprcpstatus_SMMMO00110 ); //CP처방 or 프로토콜처방 저장 status
  1745. model.makeValue ( "/root/save/saveflaginfo/prtlflag", "10" ); //프로토콜구분
  1746. }
  1747. }else{
  1748. model.setValue ( strSrc + "[" + sendRow + "]/status", "I" );
  1749. }
  1750. //-- 셋팅 끝 --//
  1751. var drugmastspec = model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec") + "^";
  1752. var usge = model.getValue ( "/root/usge" );
  1753. var spcldrug = getArrayData ( drugmastspec + "^", 0, 23, "^", "|" );
  1754. //가정간호일때 시작일,종료일 바꿔준다.
  1755. if (usge == "home") {
  1756. model.setValue ( strSrc + "[" + sendRow + "]/tempcol6",model.getValue ( "/root/init/prcpfromdd" )); //시작일자
  1757. model.setValue ( strSrc + "[" + sendRow + "]/tempcol7",model.getValue ( "/root/init/prcptodd" )); //종료일자
  1758. //20080825 마정민 수정 가정간호처방 주사일 경우 자동으로 home 체크. 단 마약이 아닐경우. TPN일 경우 추가 20081013 by Moonsh
  1759. if ( prcpclscd == "A6" && spcldrug != "M" && getArrayData (drugmastspec , 0, 14, "^", "|" ) == "Y" ) {
  1760. model.setValue ( strSrc + "[" + sendRow + "]/selfprcpflag","Y"); //종료일자
  1761. }
  1762. }
  1763. model.setValue ( strSrc + "[" + sendRow + "]/prcpauthflag", model.getValue ( "/root/init/prcpauthflag" )); //처방권한구분
  1764. //수술예약번호 setting
  1765. if( !isNull (model.getValue ( "/root/operation/list/oprsrvno"))){
  1766. model.setValue ( strSrc + "[" + sendRow + "]/oprsrvno", model.getValue ( "/root/operation/list/oprsrvno"));
  1767. //by sonjy 20091120 심야가산 check 마취료처방 추가
  1768. if ( prcpclscd == "H2" || model.getValue ( strSrc + "[" + sendRow + "]/tempcol2" ) == "13|01|00" ) { //수술처방인경우
  1769. //응급으로 수술예약정보가 있다면 erprcpflag를 Y로 setting 한다.
  1770. var opflagcd = model.getValue("/root/operation/list/opflagcd"); // opflagcd 1:정규, 2:응급, 3:추가
  1771. if(opflagcd == "2"){
  1772. //model.setValue("/root/main/prcp/prcplist/erprcpflag", "Y");
  1773. model.setValue ( strSrc + "[" + sendRow + "]/erprcpflag", "Y");
  1774. }
  1775. //수술시작시간이 오후 5시 이후에는 야간으로 체크한다.
  1776. var opfromtmcd = model.getValue("/root/operation/list/opfromtmcd"); //opfromtmcd 수술시작시간
  1777. //if(eval(opfromtmcd) > 170000 ) { //야간 시간 기준을 물어볼 것
  1778. //수술및 마취료처방시 심야기준 08시이전, 18시 이후 by sonjy 20081211
  1779. if(eval(opfromtmcd) >= 180000 || eval(opfromtmcd) < 80000 ) {
  1780. model.setValue ( strSrc + "[" + sendRow + "]/nigtprcpflag", "Y");
  1781. }
  1782. //수술액팅일자 = 확정수술일자
  1783. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", model.getValue ( "/root/operation/list/opcnfmdd") );
  1784. }
  1785. } else {
  1786. // CP 에서는 수동으로 수술예약번호를 mapping 한다.
  1787. if( model.getValue ( "/root/cp" ) != "Y" ){
  1788. model.setValue ( strSrc + "[" + sendRow + "]/oprsrvno", "0" );
  1789. }else{
  1790. if( isNull (model.getValue (strSrc + "[" + sendRow + "]/oprsrvno" )))
  1791. model.setValue ( strSrc + "[" + sendRow + "]/oprsrvno", "0" );
  1792. }
  1793. }
  1794. var srcNodeList = model.instances(0).selectNodes( "/root/paminfo" );
  1795. if ( srcNodeList.length == 0 ){
  1796. messageBox ( "환자정보가", "E014" );
  1797. return false;
  1798. }
  1799. prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  1800. pid = model.getValue ( pamInfoNode + "/pid" );
  1801. orddeptcd = model.getValue ( pamInfoNode + "orddeptcd" );
  1802. //by sonjy 2008-08-25 건진일 경우 check추가.
  1803. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ) {
  1804. indd = model.getValue ( pamInfoNode + "/orddd" );
  1805. orddrid = model.getValue ( pamInfoNode + "/orddrid" );
  1806. } else {
  1807. indd = model.getValue ( pamInfoNode + "/indd" );
  1808. orddrid = model.getValue ( pamInfoNode + "/medispclid" );
  1809. }
  1810. cretno = model.getValue ( pamInfoNode + "/cretno" );
  1811. orddeptcd = model.getValue ( pamInfoNode + "/orddeptcd" );
  1812. //2011.11.07 엄영만 선택진료여부 및 선택진료의사 셋팅
  1813. if (prcpclscd != "D2" || usge != "prcp") { // 처방시에 병리처방은 의뢰지 팝업후 검체코드설정되면 선택의사 설정 함.(의뢰지 작성후 팝업 되도록) 2011.11.25 엄영만.
  1814. fSetPrcpSpecValue(strSrc, sendRow, prcpInptFlag);
  1815. }
  1816. //-- CP,항암프로토콜일 경우, 처방일과 처방종류가 일률적으로 입력되지 않는다 --//
  1817. if( prcpInptFlag != "05" && prcpInptFlag != "06" ){
  1818. prcpdd = model.getValue ( "/root/init/prcpdd" ); //처방일
  1819. prcpkindcd = model.getValue ("/root/init/prcpkindcd"); //처방종류(정규,추가...)
  1820. //외래이고 약속 set/전처방 copy시 입원전 검사일 경우 prcpkindcd를 20으로 초기화하지 않는다.
  1821. //by sonjy 김민선 선생님 요청사항 20080925
  1822. if( prcpgenrflag == "O" &&
  1823. (model.getValue ( strSrc + "[" + sendRow + "]/prcpkindcd" ) == "90" ||
  1824. model.getValue ( strSrc + "[" + sendRow + "]/prcpkindcd") == "95" ) ){
  1825. prcpkindcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpkindcd" ) ;
  1826. }
  1827. }else{
  1828. //JJE-
  1829. prcpdd = model.getValue ( strSrc + "[" + sendRow + "]/prcpdd" );
  1830. prcpkindcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpkindcd" );
  1831. if(isNull(prcpdd)){
  1832. prcpdd = model.getValue ( "/root/init/prcpdd" );
  1833. }
  1834. //JJE root/init/prcpdd 를 해당 미래일자로 변경... (2008.09.11)
  1835. if( prcpdd != model.getValue("/root/init/prcpdd") && prcpdd > model.getValue("/root/init/prcpdd") ){
  1836. model.setValue("/root/init/prcpdd", prcpdd);
  1837. cmb_prcpdd.refresh();
  1838. }
  1839. var prcpsetcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpsetcd" );
  1840. if(prcpsetcd != "-"){
  1841. //풀린 자코드에 처방종류 및 처방입력구분을 모코드와 동일하게 넣어줌
  1842. var prcpddNode = instance1.selectSingleNode("/root/main/prcp/prcplist[prcpcd='" + prcpsetcd + "']/prcpdd");
  1843. var prcpkindcdNode = instance1.selectSingleNode("/root/main/prcp/prcplist[prcpcd='" + prcpsetcd + "']/prcpkindcd");
  1844. var etclnkspecNode = instance1.selectSingleNode("/root/main/prcp/prcplist[prcpcd='" + prcpsetcd + "']/etclnkspec");
  1845. var prcpinptflagNode = instance1.selectSingleNode("/root/main/prcp/prcplist[prcpcd='" + prcpsetcd + "']/prcpinptflag");
  1846. if( prcpddNode != null ){
  1847. prcpdd = prcpddNode.text;
  1848. }
  1849. if( prcpkindcdNode != null ) prcpkindcd = prcpkindcdNode.text;
  1850. if( etclnkspecNode != null ){
  1851. model.makeValue ( strSrc + "[" + sendRow + "]/etclnkspec", etclnkspecNode.text );
  1852. }
  1853. if( prcpinptflagNode != null ){
  1854. model.makeValue ( strSrc + "[" + sendRow + "]/prcpinptflag", prcpinptflagNode.text );
  1855. }
  1856. }
  1857. model.makeValue ( strSrc + "[" + sendRow + "]/prcphopedd", prcpdd );
  1858. //-JJE
  1859. }
  1860. //마취기록화면에서 처방화면을 띄우면
  1861. //마취처방일 경우 필수입력구분이 1이면 수술시간과, 수술구분을 넣어준다. 넣어지는 기준은 마취처방상세팝업과 동일하다.
  1862. if ( model.getValue ( "/root/anst/paramyn" ) == "Y" ) {
  1863. model.setValue ( strSrc + "[" + sendRow + "]/prcpinptflag", "27" );
  1864. if ( prcpclscd == "I2" || prcpclscd == "I4" ){ //마취
  1865. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcpessninptflag" ) == "1" ) { // 필수입력구분이 1
  1866. var earncls = model.getValue ( strSrc + "[" + sendRow + "]/tempcol2" );
  1867. if ( earncls != "04|01|00" && earncls != "05|01|00" ) { //마취구분
  1868. model.setValue ( strSrc + "[" + sendRow + "]/opansflagcd", model.getValue ( "/root/anst/opansflagcd" ));
  1869. }
  1870. model.setValue ( strSrc + "[" + sendRow + "]/ansttm", model.getValue ( "/root/anst/ansttm" ));//마취시간
  1871. model.setValue ( strSrc + "[" + sendRow + "]/clinccmtcnts", model.getValue ( "/root/anst/anstfromdt" ) + "|" + model.getValue ( "/root/anst/ansttodt" ));
  1872. }
  1873. }
  1874. } else {
  1875. if ( prcpclscd == "I2" || prcpclscd == "I4" ){ //마취
  1876. model.setValue ( strSrc + "[" + sendRow + "]/clinccmtcnts", "-" );
  1877. }
  1878. }
  1879. model.setValue ( strSrc + "[" + sendRow + "]/prcphopedd",prcpdd); //처방희망일자
  1880. //전처방이나 약속처방에서 시행부서가 현재 존재 하는 부서인지 체크 2012.10.29 엄영만
  1881. if ( prcpInptFlag == "01" || prcpInptFlag == "02" ) {
  1882. var bfprcpexecdeptcd = model.getValue( strSrc + "[" + sendRow + "]/prcpexecdeptcd" );
  1883. var CheckExecdeptcdNode;
  1884. if ( objFlag == "child" ) {
  1885. CheckExecdeptcdNode = opener.model.instance1.selectNodes( "/root/orddept/dept[deptcd='" + bfprcpexecdeptcd + "']" );
  1886. } else {
  1887. CheckExecdeptcdNode = model.instance1.selectNodes( "/root/orddept/dept[deptcd='" + bfprcpexecdeptcd + "']" );
  1888. }
  1889. if(CheckExecdeptcdNode == null || CheckExecdeptcdNode.length == 0) {
  1890. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd", "-" );
  1891. }
  1892. }
  1893. //전처방 clear
  1894. if ( prcpInptFlag == "01" ) {
  1895. // 전처방 복사시 초기화해야 할 것 ( PAMPKSpec, PrcpKindCd 등은 처방 복사시 다시 setting 해줌 )
  1896. if ( prcpclscd == "B2" ) { // 진검 전처방에서 응급 체크되어 있는 것은 복사 시에도 응급 체크되어지도록 요청 - 20081127 by MoonSH
  1897. var erprcpflag = model.getValue ( strSrc + "[" + sendRow + "]/erprcpflag" );
  1898. if ( erprcpflag == "Y") {
  1899. model.setValue ( strSrc + "[" + sendRow + "]/erprcpflag", "Y" );
  1900. } else {
  1901. model.setValue ( strSrc + "[" + sendRow + "]/erprcpflag", "N" );
  1902. }
  1903. } else {
  1904. model.setValue ( strSrc + "[" + sendRow + "]/erprcpflag", "N" ); //2008-01-28 약국요청 응급은 복사되면 안됨
  1905. }
  1906. model.setValue ( strSrc + "[" + sendRow + "]/rgstdt", "" ); //rgstdt: 등록일시
  1907. model.setValue ( strSrc + "[" + sendRow + "]/rgstridnm", "" ); //rgstridnm: 등록자명
  1908. model.setValue ( strSrc + "[" + sendRow + "]/tempprcpflag", "N" ); //tempprcpflag: 임시처방구분
  1909. model.setValue ( strSrc + "[" + sendRow + "]/etcprcpresncd", "-" ); //etcprcpresncd: 응급의학관리료 사유 (코드정의서 M0012 참조), 수혈반납 및 폐기사유코드 (코드정의서 M0037, M0038 참조), 재활처방 마감일자
  1910. model.setValue ( strSrc + "[" + sendRow + "]/ordreqlnkno", "0" ); //ordreqlnkno: 진료의뢰연결번호
  1911. model.setValue ( strSrc + "[" + sendRow + "]/testreqlnkno", "0" ); //testreqlnkno: 검사의뢰연결번호
  1912. model.setValue ( strSrc + "[" + sendRow + "]/prcplnkdd", "00000000" ); //prcplnkdd: 임시처방에 대한 연계 일자
  1913. model.setValue ( strSrc + "[" + sendRow + "]/prcplnkno", "0" ); //prcplnkno: 임시처방에 대한 연계 번호
  1914. model.setValue ( strSrc + "[" + sendRow + "]/prtlno", "0" ); //prtlno: 프로토콜SET에 대한 코드로 일련번호 형태로 관리
  1915. model.setValue ( strSrc + "[" + sendRow + "]/contprcpspec", "-" ); //contprcpspec: 연속처방내역
  1916. model.setValue ( strSrc + "[" + sendRow + "]/etclnkspec", "-" ); //etclnkspec: 항암프로토콜번호|CP번호
  1917. model.setValue ( strSrc + "[" + sendRow + "]/tempcol6", "" ); //전처방 화면 display clear
  1918. model.setValue ( strSrc + "[" + sendRow + "]/tempcol7", "" ); //전처방 화면 display clear
  1919. var antibiotics = getArrayData ( model.getValue ( strSrc + "[" + sendRow + "]/tempcol8" ) + "^", 0, 0, "^", "|" );
  1920. if ( antibiotics != "antibiotics" ){ //20081020: 마정민수정. 전처방에 항생제 값이 setting 되어 있다면 클리어 시키지 않는다.
  1921. model.setValue ( strSrc + "[" + sendRow + "]/tempcol8", "" ); //전처방 화면 display clear
  1922. }
  1923. model.setValue ( strSrc + "[" + sendRow + "]/tempcol9", "" ); //전처방 화면 display clear
  1924. model.setValue ( strSrc + "[" + sendRow + "]/tempcol12", "" ); //전처방 화면 display clear
  1925. model.setValue ( strSrc + "[" + sendRow + "]/tempcol13", "" ); //전처방 화면 display clear
  1926. model.setValue ( strSrc + "[" + sendRow + "]/tempcol14", "" ); //전처방 화면 display clear
  1927. model.setValue ( strSrc + "[" + sendRow + "]/tempcol15", "" ); //전처방 화면 display clear
  1928. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc1", "" ); //건진 SET처방
  1929. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc3", "" ); //OCR출력정보
  1930. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc4", "" ); //귀가유치용물품여부
  1931. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc5", "" ); //multi-day no
  1932. model.setValue ( strSrc + "[" + sendRow + "]/druglnkno", "0" );
  1933. model.setValue ( strSrc + "[" + sendRow + "]/drgacptflag", "-" ); // DRG인정 전처방 복사시 clear
  1934. if ( prcpclscd == "B2" || prcpclscd == "B6") {
  1935. var contyn = getArrayData ( drugmastspec, 0, 5, "^", "|" );
  1936. if ( contyn == "Y" ) {
  1937. var conttestintvlflag = model.getValue ( strSrc + "[" + sendRow + "]/diagtestconttestintvlflag" );
  1938. if ( conttestintvlflag == "N" ) {
  1939. model.setValue ( strSrc + "[" + sendRow + "]/diagtestconttestcdspec", "-" );
  1940. model.setValue ( strSrc + "[" + sendRow + "]/drugrateqty", "-" );
  1941. model.setValue ( strSrc + "[" + sendRow + "]/diagtestconttestorgtims", "1" );
  1942. } else {
  1943. var cdnm = model.getValue ( "/root/init/conttestintvlflag/M0545[cdid=" + conttestintvlflag + "]/cdnm" );
  1944. var diagtestconttestbasetm = model.getValue ( strSrc + "[" + sendRow + "]/diagtestconttestbasetm" );
  1945. model.setValue ( strSrc + "[" + sendRow + "]/diagtestconttestcdspec", diagtestconttestbasetm + cdnm );
  1946. model.setValue ( strSrc + "[" + sendRow + "]/drugrateqty", diagtestconttestbasetm );
  1947. model.setValue ( strSrc + "[" + sendRow + "]/diagtestconttestorgtims", "1" );
  1948. }
  1949. }
  1950. }
  1951. }
  1952. //-- CP,항암프로토콜일 경우 etclnkspec 컬럼 값 셋팅 --//
  1953. else if( prcpInptFlag == "05" ){
  1954. //Hsct 처방일 경우, 조회해 온 자코드들에 값을 setting
  1955. model.setValue(strSrc + "[" + sendRow + "]/status", "I");
  1956. //model.setValue(strSrc + "[" + sendRow + "]/prcphopedd", model.getValue ( "/root/init/prcpdd" )); //JJE(-)
  1957. //cp는 이미 인스턴스에 값이 들어있음
  1958. if( isNull(model.getValue(strSrc + "[" + sendRow + "]/etclnkspec")) ){
  1959. model.makeValue ( strSrc + "[" + sendRow + "]/etclnkspec", "-" ); //CP처방 or 프로토콜처방 no
  1960. }
  1961. }
  1962. else if( prcpInptFlag == "06" ){
  1963. //항암은 이미 인스턴스에 값이 들어있음
  1964. model.makeValue ( strSrc + "[" + sendRow + "]/etclnkspec", etclnkspecValue_SMMMO00110 ); //CP처방 or 프로토콜처방 no
  1965. //model.makeValue ( strSrc + "[" + sendRow + "]/cpno", model.getValue ( strSrc + "[" + sendRow + "]/prtldg") ); //CpNo 에 프로토콜 차수 저장
  1966. }
  1967. else if( prcpInptFlag == "07" ){ //임상시험 프로토콜에서 불러올때.
  1968. if(prcpgenrflag == "I" || prcpgenrflag == "D"){
  1969. model.makeValue ( strSrc + "[" + sendRow + "]/subcretno", model.getValue("/root/init/subjsubcretno") ); // 임상프로토콜에서 처방시 임상유형의 cretno를 subcretno로 세팅
  1970. }
  1971. }
  1972. //-- CP,항암프로토콜일 경우 etclnkspec 컬럼 값 셋팅 끝 --//
  1973. model.setValue ( strSrc + "[" + sendRow + "]/inclprcpcd", "-" ); //종속처방
  1974. model.setValue ( strSrc + "[" + sendRow + "]/inclprcpno", "0" );//종속처방번호
  1975. //20090518 마정민수정. 입원일 경우 전처방, 약속처방 복사처방의 선처치를 제외한다.
  1976. if( prcpgenrflag != "O" && prcpgenrflag != "S" ) {
  1977. if ( prcpInptFlag == "01" || prcpInptFlag == "02" ) {
  1978. if ( model.getValue ( strSrc + "[" + sendRow + "]/precureprcpflag" ) == "Y" ) {
  1979. if( prcpclscd.substring(0,1) == "A" || prcpclscd == "M2" ) model.setValue ( strSrc + "[" + sendRow + "]/precureprcpflag", "N" );
  1980. }
  1981. }
  1982. }
  1983. if ( prcpclscd == "F2" && prcpgenrflag == "O") {
  1984. model.setValue ( strSrc + "[" + sendRow + "]/rehbprcpenddd", prcpdd ); //재활마감일
  1985. } else if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) { //약처방
  1986. // 원내처방사유 SETTING
  1987. fHosinPrcpResncdSed ( objFlag, strSrc, sendRow );
  1988. //2010. 12. 29 김영학 약처방 원외일 경우 시행부서가 셋팅되어 있지 않으면 기본 외래약국으로 셋팅해준다.
  1989. if( prcpgenrflag != "O" && prcpgenrflag != "S" ) {
  1990. if ( model.getValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag" ) == "O"
  1991. && (model.getValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd" ) == "-" || model.getValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd" ) == "D")) {
  1992. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd" , fGetHardCDList("Y", 260, 3))
  1993. }
  1994. }
  1995. //AST 검사 체크
  1996. var astyn = getArrayData ( drugmastspec, 0, 22, "^", "|" );
  1997. if ( astyn == "Y" ) {
  1998. model.setValue ( strSrc + "[" + sendRow + "]/asttestflag", "Y" );
  1999. }
  2000. //응급 flag 가 Y인 경우는 1회만 가능
  2001. if ( model.getValue ( strSrc + "[" + sendRow + "]/erprcpflag" ) == "Y" ||
  2002. model.getValue ( strSrc + "[" + sendRow + "]/prnprcpflag" ) == "Y"
  2003. ) {
  2004. var prcptims = model.getValue ( strSrc + "[" + sendRow + "]/prcptims" );
  2005. if ( prcptims != "1" ) {
  2006. //1이 아닌 경우는 1로 바꿔주고 경구약인 경우는 용법도 바꿔준다.
  2007. model.setValue ( strSrc + "[" + sendRow + "]/prcptims", "1" );
  2008. var prcpqty = model.getValue ( strSrc + "[" + sendRow + "]/prcpqty" );
  2009. var prcpvol = model.getValue ( strSrc + "[" + sendRow + "]/prcpvol" );
  2010. if ( prcpclscd == "A2" ) {
  2011. fBaseMthd(sendRow);
  2012. }
  2013. if ( prcpclscd == "A2" || prcpclscd == "A4" ) {
  2014. if ( prcptims != "0" ) {
  2015. prcpqty = (eval(prcpqty)*1000/eval(prcptims));
  2016. prcpvol = (eval(prcpvol)*1000/eval(prcptims));
  2017. model.setValue ( strSrc + "[" + sendRow + "]/prcpqty", Math.round ( prcpqty ) / 1000);
  2018. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", Math.round ( prcpvol ) / 1000);
  2019. }
  2020. }
  2021. }
  2022. }
  2023. //by sonjy 20081216 외래일경우 전처방/약속처방에서 copy시 약/주사에 한해 수행부서를 마스터의 부서로 초기화
  2024. //영수증의 환자 가야할곳이 병동약국으로 찍혀 나오는 오류 때문.
  2025. //20081230 마정민수정 변환조건을 병동약국으로 축소함
  2026. if( model.getValue( strSrc + "[" + sendRow + "]/prcpexecdeptcd" ) == "3240300000" && prcpgenrflag == "O" && ( prcpInptFlag == "01" || prcpInptFlag == "02" )) {
  2027. var sTmp23 = model.getValue( strSrc + "[" + sendRow + "]/tempcol23" );
  2028. if( !isNull(sTmp23) && sTmp23 != "-" ){
  2029. model.setValue( strSrc + "[" + sendRow + "]/prcpexecdeptcd", sTmp23 );
  2030. }
  2031. }
  2032. } else if ( prcpclscd == "03" ) { //보호자식일 때는 procerdietflag 을 Y로 바꿈
  2033. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" ) == "Q4131004" ) {
  2034. model.setValue ( strSrc + "[" + sendRow + "]/procerdietflag", "Y" );
  2035. }
  2036. } else if ( prcpclscd == "B4" ){
  2037. if ( prcpgenrflag == "O" ) {
  2038. model.setValue ( strSrc + "[" + sendRow + "]/prepprcpflag", "N" );
  2039. } else {
  2040. model.setValue ( strSrc + "[" + sendRow + "]/prepprcpflag", "Y" );
  2041. }
  2042. }
  2043. // hsct 체크
  2044. if ( hsctflag == "Y" ) {
  2045. model.setValue ( strSrc + "[" + sendRow + "]/hsctlnkno", model.getValue ( "/root/init/hsctlnkno" )); //HSCT
  2046. model.setValue ( strSrc + "[" + sendRow + "]/hscttempprcpflag", "Y" ); //HSCT
  2047. } else if ( hsctflag == "M" ){
  2048. model.setValue ( strSrc + "[" + sendRow + "]/hsctlnkno", model.getValue ( "/root/init/hsctlnkno" )); //HSCT
  2049. model.setValue ( strSrc + "[" + sendRow + "]/hscttempprcpflag", "N" ); //HSCT
  2050. }
  2051. if ( !isNull(inclprcpno) && inclprcpno != "0" ) { //종속처방 처리
  2052. var prcpcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" );
  2053. //initsrch에서 가져온 종속처방 instance에 값이 있으면 종속처방 코드와 번호를 박아준다.
  2054. var prcpsetcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpsetcd" );
  2055. var inclprcpcd = model.getValue ( "/root/initsrch/inclprcpcnts[snglcd='" + prcpcd + "' and calcscorcdgrup='" + prcpsetcd + "']/inclprcpcd" );
  2056. var calcscorcdgrup = "";
  2057. if ( isNull(inclprcpcd)) {
  2058. //본체에도 코드를 박아준다.
  2059. calcscorcdgrup = model.getValue ( "/root/initsrch/inclprcpcnts[calcscorcdgrup='" + prcpcd + "']/inclprcpcd" ); // GROUP 처방
  2060. } else {
  2061. if ( prcpgenrflag == "O" ) {
  2062. //외래일경우 약, 주사 에 원내처방사유 검사 수술처리에 사용
  2063. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ){
  2064. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );//원내
  2065. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "55" );//원내처방사유(원내처방사유 검사 수술처리에 사용)
  2066. }
  2067. }
  2068. }
  2069. if ( !isNull(inclprcpcd) || !isNull(calcscorcdgrup)) {
  2070. model.setValue ( strSrc + "[" + sendRow + "]/inclprcpno", inclprcpno ); //종속처방번호
  2071. if ( isNull(inclprcpcd)){
  2072. model.setValue ( strSrc + "[" + sendRow + "]/inclprcpcd", calcscorcdgrup ); //종속처방
  2073. } else {
  2074. model.setValue ( strSrc + "[" + sendRow + "]/inclprcpcd", inclprcpcd ); //종속처방
  2075. }
  2076. model.setValue ( "/root/init/inclprcpno", inclprcpno );
  2077. var remainder = inclprcpno%2;
  2078. if ( objFlag == "child" ){
  2079. if ( remainder == 1 ) {
  2080. model.setValue ( strSrc + "[" + sendRow + "]/tempcol10", "#eaeaea" );
  2081. } else {
  2082. model.setValue ( strSrc + "[" + sendRow + "]/tempcol10", "#ffffcc" );
  2083. }
  2084. } else {
  2085. if ( remainder == 1 ) {
  2086. model.setValue ( strSrc + "[" + sendRow + "]/tempcol10", "#eaeaea" );
  2087. } else {
  2088. model.setValue ( strSrc + "[" + sendRow + "]/tempcol10", "#ffffcc" );
  2089. }
  2090. }
  2091. }
  2092. }
  2093. /* by sonjy 20091019 요청번호:3667
  2094. * 전처방(01)과 약속처방(02)을 복사하여 처방시 처방일수가 1일로 수정이 되도록
  2095. * => 무조건 1로 SETTING처리
  2096. */
  2097. var calcmthdcd = getArrayData ( drugmastspec , 0, 26, "^", "|" );
  2098. if ( //model.getValue(strSrc + "[" + sendRow + "]/prcpinptflag") == "01" && model.getValue(strSrc + "[" + sendRow + "]/prcpinptflag") == "02" &&
  2099. prcpclscd.substring(0,1) == "A" && calcmthdcd == "4" && model.getValue ( strSrc + "[" + sendRow + "]/prcpdayno" ) > 1 ) {
  2100. model.setValue ( strSrc + "[" + sendRow + "]/prcpdayno", "1" );
  2101. }
  2102. /*by sonjy 20091019
  2103. * 외래처방과 퇴원,퇴원호외래,외출외박처방(응급실,DSC 퇴원 포함)에만 해당으로, 4번에 해당하지 않는 약품 (계산법이 1,2,3,5번)을 처방할 때 처방일수가 0 으로 되도록
  2104. * (0 으로 저장시 처방일수를 넣으라는 메시지가 뜨도록 : 현재 되고 있는 기능임)
  2105. * 전처방과 약속처방, 프로토콜처방을 복사하여 처방시에는 제외 => 즉, 처방검색시에만 적용하되 MSET제외
  2106. */
  2107. if ( prcpclscd.substring(0,1) == "A" && calcmthdcd != "4" && prcpInptFlag == "00" &&
  2108. ( model.getValue ( "/root/patflag/list/prcpgenrflag" ) == "O" || model.getValue ( "/root/init/prcpkindcd" ) == "50" ||
  2109. model.getValue ( "/root/init/prcpkindcd" ) == "60" || model.getValue ( "/root/init/prcpkindcd" ) == "70" ) ) {
  2110. if( model.getValue ( strSrc + "[" + sendRow + "]/inclprcpno") == "0" || model.getValue ( strSrc + "[" + sendRow + "]/inclprcpno") == "-" ) {
  2111. model.setValue ( strSrc + "[" + sendRow + "]/prcpdayno", "0" );
  2112. }
  2113. }
  2114. model.setValue ( strSrc + "[" + sendRow + "]/prcpgenrflag", prcpgenrflag ); //처방발생구분
  2115. model.setValue ( strSrc + "[" + sendRow + "]/prcpkindcd", prcpkindcd ); //처방종류
  2116. //20131105 Start 이정택(마취에서 처방이동시에 수익부서와 수익의를 자동으로 세팅하도록 수정)
  2117. if(model.getValue ( strSrc + "[" + sendRow + "]/prcpinptflag")=="27"){
  2118. var orddeptcd = "2090000000";
  2119. var orddrid = model.getValue("/root/anst/anst_drid");
  2120. var anstdrnm = model.getValue("/root/anst/anst_anstdrnm");
  2121. model.setValue ( strSrc + "[" + sendRow + "]/pampkspec", pid + "|" + indd + "|" + cretno + "|" + orddeptcd + "|" + orddrid); //pampkspec : 등록번호|진료일자|생성번호|진료과|담당의 // 원무PK내역
  2122. model.setValue ( strSrc + "[" + sendRow + "]/tempcol20", "[마취통증의학과]["+anstdrnm+"]" ); //처방창의 주진료과/진료의를 세팅
  2123. }else{
  2124. var sOldPamPkSpec = model.getValue ( strSrc + "[" + sendRow + "]/pampkspec");
  2125. if(isNull(sOldPamPkSpec) || sOldPamPkSpec.length < 30) { // 2017.10.16 엄영만 CP에서 처방의 변경 기능 안되는 오류 수정(기존 설정된 값이 있으면 그대로 적용)
  2126. model.setValue ( strSrc + "[" + sendRow + "]/pampkspec", pid + "|" + indd + "|" + cretno + "|" + orddeptcd + "|" + orddrid ); //pampkspec : 등록번호|진료일자|생성번호|진료과|담당의 // 원무PK내역
  2127. }
  2128. }
  2129. // 20131105 End
  2130. //model.setValue ( strSrc + "[" + sendRow + "]/pampkspec", pid + "|" + indd + "|" + cretno + "|" + orddeptcd + "|" + orddrid ); //pampkspec : 등록번호|진료일자|생성번호|진료과|담당의 // 원무PK내역
  2131. model.setValue ( strSrc + "[" + sendRow + "]/prcppkspec", prcpdd + "|0|0|" + getUserInfo("dutplceinstcd")); //처방키: 처방일자|처방번호|처방이력번호|기관코드
  2132. //20081007 마정민 수정
  2133. //원래 회처방 불가
  2134. //수혈, 영상, Angio, 핵의학영상, 병리, 기능, RT, 수술, 마취, 마취약제, 재료, 기타 이고 마이그레이션 데이터는 1로 setting
  2135. //추가 처치 H4
  2136. //20090514 마정민추가 K2 치과
  2137. if ( model.getValue ( strSrc + "[" + sendRow + "]/tempcol20" ) == "Y" && (
  2138. prcpclscd == "B4" || prcpclscd == "C2" || prcpclscd == "C4" || prcpclscd == "C6" ||
  2139. prcpclscd == "D2" || prcpclscd == "E2" || prcpclscd == "G2" || prcpclscd == "H2" ||
  2140. prcpclscd == "I2" || prcpclscd == "I4" || prcpclscd == "M2" || prcpclscd == "Z0" ||
  2141. prcpclscd == "H4" || prcpclscd == "K2")) {
  2142. model.setValue ( strSrc + "[" + sendRow + "]/prcptims", "1" ); //처방발생구분
  2143. }
  2144. //20090122 마정민수정: 변경요청번호 670. 단순 방사선 예약 자동 팝업요청
  2145. //20090709 CHC, 단순방사선예약자동팝업 병원별 적용
  2146. var raypopwndcheckyn = model.getValue ( "/root/initsrch/raypopwndcheckyn/trgtcd" );
  2147. if ( prcpgenrflag == "O" && model.getValue( strSrc + "[" + sendRow + "]/tempcol2" ).length > 2 && model.getValue( strSrc + "[" + sendRow + "]/tempcol2" ).substring( 0, 2 ) == "18" && usge == "prcp" ) {
  2148. var msgTitle = "[영상]" + "[" + model.getValue( strSrc + "[" + sendRow + "]/prcpcd" ) + ":" + model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ) + "]";
  2149. if (raypopwndcheckyn != "Y") {
  2150. if (window.alert( "단순 방사선 검사를 당일 시행 하시겠습니까? [예:당일,아니요:예약]", msgTitle, "36" ) == "7" ){
  2151. model.setValue( strSrc + "[" + sendRow + "]/prcphopedd","99991231" );
  2152. }
  2153. }
  2154. }
  2155. //20090827 차현철, 치료내시경예약 지시처방일 경우 처방명 선택 팝업창 호출
  2156. var escopedirecprcpcd = model.getValue ( "/root/initsrch/escopedirecprcpcd/trgtcd" );
  2157. if ( escopedirecprcpcd == model.getValue( strSrc + "[" + sendRow + "]/prcpcd" )) {
  2158. setParameter ( "SPMMB02200_cond2", "5" );
  2159. fPrcpModal ( "SPMMB02200", 50, 50 );
  2160. model.setValue (strSrc + "[" + sendRow + "]/prcpnm", getParameter ( "SPMMB02200_clinccmt" ));
  2161. clearParameter("SPMMB02200_clinccmt");
  2162. }
  2163. //SON0919 G3아닌 응급일경우 원내사유 PRCPKINDCD에 의해 움직이므로 PRCPKINDCD가 설정된 후 다시 호출 start
  2164. //퇴원처방 전처방에서 추가처방모드에서 복사시 퇴원처방 원내사유가 적용되는것을 막기 위함임.
  2165. var g3flag = "";
  2166. if( objFlag == "child") g3flag = opener.model.getValue ( "/root/init/erresn" );
  2167. else g3flag = model.getValue ( "/root/init/erresn" );
  2168. if( (prcpgenrflag == "E" && g3flag!= "G3") || prcpgenrflag == "D" ){
  2169. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) { //약처방
  2170. // 원내처방사유 SETTING
  2171. fHosinPrcpResncdSed ( objFlag, strSrc, sendRow );
  2172. }
  2173. }
  2174. //SON0919 end
  2175. if ( (prcpkindcd == "50" || prcpkindcd == "60" ) && getArrayData (drugmastspec, 0, 20, "^", "|" ) == "Y" ) {
  2176. //2008-01-18 김은희 약사 모든처방 자가주사가 가능하게 수정
  2177. if ( prcpclscd == "A6") {
  2178. model.setValue ( strSrc + "[" + sendRow + "]/selfprcpflag", "Y" );
  2179. }
  2180. }
  2181. //20080721 마정민 임상처방에서 넘어오는 것은 clincstdyflag를 Y로 처리
  2182. if ( prcpInptFlag == "07" ) {
  2183. model.setValue ( strSrc + "[" + sendRow + "]/clincstdyflag", "Y" ); //
  2184. }
  2185. var chkprcpcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpcd")
  2186. /******************** 선처치, 과내검사 시행부서처리 *******************/
  2187. var iFind = -1;
  2188. var precureexecdeptchk = model.getValue ( "/root/initsrchprcp/prcpetccnts/precureprcpcd" );
  2189. // 기존 search함수에서 무결성이 어긋나 개별 체크 변경 - 20081008 by MoonSH
  2190. var precureprcpflag = "";
  2191. var prcpexecdeptcd = "";
  2192. if( chkprcpcd.charAt(0) != "*" ){
  2193. var firStage = precureexecdeptchk.split("^");
  2194. for( i=0; i<firStage.length; i++ ){
  2195. var secStage = firStage[i].split("|");
  2196. if( chkprcpcd == secStage[0]) {
  2197. iFind = 1 ;
  2198. precureprcpflag = secStage[1] ;
  2199. prcpexecdeptcd = secStage[2] ;
  2200. break ;
  2201. }
  2202. }
  2203. }
  2204. if ( parseInt(iFind) >= 0) {
  2205. var charchk = "";
  2206. var arraychk = "";
  2207. if ( precureprcpflag == "Y" ) {
  2208. if( prcpgenrflag == "I" || prcpgenrflag == "E" || prcpgenrflag == "D" ) {
  2209. //입원일 경우 선처치 적용시 약/재료코드는 제외한다. 정보관리팀 요구변경 요청서 2008-11-08 미액팅 분석 후 액팅시점 변경건
  2210. //by sonjy 20081115
  2211. if( prcpclscd.substring(0,1) != "A" && prcpclscd != "M2" ) model.setValue ( strSrc + "[" + sendRow + "]/precureprcpflag", "Y" );
  2212. } else {
  2213. model.setValue ( strSrc + "[" + sendRow + "]/precureprcpflag", "Y" );
  2214. }
  2215. }
  2216. if ( prcpexecdeptcd != "X" && !isNull ( prcpexecdeptcd ) ) {
  2217. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd", prcpexecdeptcd );
  2218. }
  2219. }
  2220. if ( model.getValue ( "/root/addprcp" ) == "Y" && model.getValue ( strSrc + "[" + sendRow + "]/inclprcpno") == "0" ) {
  2221. //시행부서 수혈, 식이, 재활, 마취, 치과, 방사선치료, 기타를 제외한 처방은 자동 선처치. 단 m-set은 예외
  2222. if ((model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "A2" ||
  2223. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "A4" ||
  2224. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "A6" ||
  2225. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "B2" ||
  2226. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "B6" ||
  2227. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "C2" ||
  2228. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "C4" ||
  2229. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "C6" ||
  2230. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "D2" ||
  2231. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "E2" ||
  2232. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "H2" ||
  2233. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "H4" ||
  2234. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "M2" ) &&
  2235. model.getValue ( "/root/admininfo" ).substring (0,1) != "Y" ) {
  2236. model.setValue ( strSrc + "[" + sendRow + "]/precureprcpflag", "Y" );
  2237. }
  2238. }
  2239. // 시행부서 처방 가퇴원 누락처방 사유 및 일시 셋팅 - 20081221 by MoonSH
  2240. if ( model.getValue ( "/root/addprcp" ) == "Y" && model.getValue ("/root/prcpresn/prcpdd") != "" ) {
  2241. model.setValue ( strSrc + "[" + sendRow + "]/tempcol19", model.getValue ("/root/prcpresn/resncnt") );
  2242. model.setValue ( strSrc + "[" + sendRow + "]/tempcol12", model.getValue ("/root/prcpresn/prcptime") ); // tempcol24를 사용하던것을 tempcol12로 변경 처리 2013.11.28 엄영만
  2243. }
  2244. /******************** 선처치, 과내검사 시행부서 처리 끝 ********************/
  2245. //시행부서, 발행부서 SETTING
  2246. fPrcpExecIssDeptCdSet( strSrc, sendRow )
  2247. if (!isNull(model.getValue ( "/root/init/prcpinptflag" ))){ //27: 마취기록, 28: 시행부서처방
  2248. model.setValue ( strSrc + "[" + sendRow + "]/prcpinptflag", model.getValue ( "/root/init/prcpinptflag" ));
  2249. }
  2250. //추가컬럼 test
  2251. model.setValue ( strSrc + "[" + sendRow + "]/aftcertflag", "-");
  2252. model.setValue ( strSrc + "[" + sendRow + "]/aftcertdrid", "-");
  2253. model.setValue ( strSrc + "[" + sendRow + "]/prcpvalidd", "00000000");
  2254. if ( isNull(model.getValue ( strSrc + "[" + sendRow + "]/anticncrdayno"))) {
  2255. model.setValue ( strSrc + "[" + sendRow + "]/anticncrdayno", "0");
  2256. }
  2257. if ( isNull(model.getValue ( strSrc + "[" + sendRow + "]/druglnkno"))) {
  2258. model.setValue ( strSrc + "[" + sendRow + "]/druglnkno", "0");
  2259. }
  2260. if (model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" ) == "FE6541" ) {
  2261. var prcpdelivefact = model.getValue( strSrc + "[" + sendRow + "]/prcpdelivefact" );
  2262. var iFind1 = prcpdelivefact.search( "Long Stream" );
  2263. var iFind2 = prcpdelivefact.search( "Routine" );
  2264. //전달사항에 값이 있으면 "-" 로처리
  2265. if ( eval( iFind1) <= 0 && eval(iFind2) <= 0 ) {
  2266. if ( prcpdelivefact == "-" ) {
  2267. model.setValue( strSrc + "[" + sendRow + "]/prcpdelivefact", "[Routine]" );
  2268. } else {
  2269. model.setValue( strSrc + "[" + sendRow + "]/prcpdelivefact", "[Routine] " + prcpdelivefact );
  2270. }
  2271. }
  2272. }
  2273. if ( model.getValue ( strSrc + "[" + sendRow + "]/tempcol18" ) == "Y" ) {
  2274. var len = 1;
  2275. if ( !isNull(model.instance1.selectNodes("/root/migdrugmthd/migdrugmthdlist").length)){
  2276. len = model.instance1.selectNodes("/root/migdrugmthd/migdrugmthdlist").length + 1;
  2277. }
  2278. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/prcpcd", model.getValue( strSrc + "[" + sendRow + "]/prcpcd" ));
  2279. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/prcpnm", model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ));
  2280. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/prcpnm", model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ));
  2281. if ( model.getValue ( strSrc + "[" + sendRow + "]/rateprcpflag" ) == "Y" ) {
  2282. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/migdrugmthdspccdnm", "[비율처방불가] 투약량이 다른 처방을 분리해서 처방하셔야 합니다.\n\n" + model.getValue( strSrc + "[" + sendRow + "]/exptmthdfact" ) + ".");
  2283. model.setValue ( strSrc + "[" + sendRow + "]/rateprcpflag", "N" )
  2284. model.setValue ( strSrc + "[" + sendRow + "]/drugrateqty", "-" )
  2285. } else {
  2286. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/migdrugmthdspccdnm", model.getValue( strSrc + "[" + sendRow + "]/exptmthdfact" ));
  2287. }
  2288. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/drugmthdspccd", model.getValue( strSrc + "[" + sendRow + "]/drugmthdspccd" ) );
  2289. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/drugmthdspccdnm", model.getValue( strSrc + "[" + sendRow + "]/drugmthdspccdnm" ) );
  2290. model.setValue ( strSrc + "[" + sendRow + "]/exptmthdfact", "-" );
  2291. }
  2292. //수술예방적 항생제 CHECK SON0926 START 사유입력 대상자일 경우
  2293. //경구약은 cdss항생제 에서 제외. 따라서 외용/주사일 경우 cdss항생제 화면이 뜬 후에 check로직이 뜨도록..
  2294. if ( prcpgenrflag == "I" && usge == "prcp" && ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" )) { //약처방
  2295. if( !fChkOpDrug(objFlag , strSrc , sendRow ) ) return 0;
  2296. }
  2297. //수술예방적 항생제 CHECK SON0926 END
  2298. //20090520 마정민수정
  2299. //저장시 체크하던 ocrprnt 여부를 search 함수의 문제로 처방복사시 tempcol13에 값을 넣어놨다가 저장시 tempcol13을 읽는 방법으로 수정
  2300. var ocrprnt = model.getValue ( "/root/initsrchprcp/prcpetccnts/ocrprnt" );
  2301. if (isNull(ocrprnt)) {
  2302. ocrprnt = model.getValue ( "/root/initsrch/prcpetccnts/ocrprnt" );
  2303. }
  2304. var ocrprntArray = ocrprnt.split("|");
  2305. var ocrprcpcd = "OCR" + model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" );
  2306. for( m=0; m < ocrprntArray.length; m++ ){
  2307. if( ocrprcpcd == ocrprntArray[m]) {
  2308. model.setValue ( strSrc + "[" + sendRow + "]/tempcol13", "Y" );
  2309. break;
  2310. }
  2311. }
  2312. // 20100108 한재상 - 유전자검사 동의서 출력방식 변경 (OCR -> REX)
  2313. var ocrprogprnt = model.getValue ( "/root/initsrchprcp/prcpetccnts/ocrprogprnt" );
  2314. var ocrprogprntArray = ocrprogprnt.split("|");
  2315. var ocrprogprcpcd = "OCRPROG" + model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" );
  2316. for( m=0; m < ocrprogprntArray.length; m++ ){
  2317. if( ocrprogprcpcd == ocrprogprntArray[m]) {
  2318. model.setValue ( strSrc + "[" + sendRow + "]/tempcol13", "A" );
  2319. break;
  2320. }
  2321. }
  2322. //20090521 마정민추가 외래수술프로세스의 추가로 외래수술탭에서 처방을 낼 경우 자동선처치로 수정
  2323. if (!isNull(model.getValue ( "/root/operation/list/oprsrvno")) && prcpgenrflag == "O"
  2324. && model.getValue ( strSrc + "[" + sendRow + "]/prnprcpflag" ) != "Y"
  2325. && model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) != "B4"
  2326. ) {
  2327. model.setValue ( strSrc + "[" + sendRow + "]/precureprcpflag", "Y" ); //
  2328. }
  2329. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcpflag") != "2" ) { //지시처방이 아니면 이름을 다시 만들어 준다.
  2330. makePrcpNm( "/root/main/prcp/prcplist", sendRow );
  2331. }
  2332. // 2010. 10. 19 약속처방이나 전처방에서 처방 복사시 1회 용량에 값이 없을 경우 용량 계산하는 로직 수행
  2333. if ( model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc7") == "-" ) {
  2334. if (fContainsHardCD("420", "Y") && model.getValue ( strSrc + "[" + sendRow + "]/prcpinptflag") == "02") { // 2013.02.21 엄영만 약속처방 1회 용량 없을 시 메세지 팝업.
  2335. var sPrcpcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpcd");
  2336. var sPrcpnm = model.getValue ( strSrc + "[" + sendRow + "]/prcpnm");
  2337. messageBox ( sPrcpnm +"["+ sPrcpcd + "] 처방의 1회용량값이 존재하지 않습니다.\n약속처방 구성을 확인 하시기 바랍니다.", "E999" );
  2338. } else {
  2339. DrugCalc2( "prcpqty" , sendRow);
  2340. }
  2341. }
  2342. // 2011.07.05 엄영만 수익분류 의료영상복사-CD 복사-CD copy 처방, 산재/자보 환자 디폴트 비급여 셋팅 원무 최인영(5069) 요청
  2343. if (model.getValue ( strSrc + "[" + sendRow + "]/tempcol2" ) == "24|01|01" && (model.getValue ( "/root/paminfo/list/insukind" ) == "31" || model.getValue ( "/root/paminfo/list/insukind" ) == "41")) {
  2344. model.setValue ( strSrc + "[" + sendRow + "]/payflagcd", "1" );
  2345. }
  2346. // 2013.09.26 엄영만 수익분류 초음파 처방이고 수가정보의 급비가 급여(0), 급여불가 보조유형일 경우 디폴트 비급여 설정
  2347. /*if (model.getValue( strSrc + "[" + sendRow + "]/tempcol2" ).length > 2 && model.getValue( strSrc + "[" + sendRow + "]/tempcol2" ).substring( 0, 2 ) == "21" && model.getValue( strSrc + "[" + sendRow + "]/spynpy1" ) == "0" ) {
  2348. if ( (model.getValue("/root/paminfo/list/insukind") != "11" && model.getValue("/root/paminfo/list/insukind") != "21" && model.getValue("/root/paminfo/list/insukind") != "22") // 보험 유형이 건강보험 또는 의료급여 1,2종이 아니면 비급여 처리
  2349. || (!fContainsHardCD("442", model.getValue("/root/paminfo/list/suppkind"))) ) { // 급여가능 보조유형이 아닐경우
  2350. model.setValue ( strSrc + "[" + sendRow + "]/payflagcd", "2" ); // 디폴트 비급여 처리
  2351. }
  2352. }
  2353. */
  2354. //model.addLog(" ************* End Of addPrcpSetValue()");
  2355. return true;
  2356. }
  2357. /**
  2358. * @desc : 처방이 발행될때 set로 같이 나가야할 처방 처리
  2359. * @param : objFlag - child or else
  2360. : strSrc - source node
  2361. : strDest - 목적지 node; child일때는 opener.root.main.prcp, 아니면 "/root/main/prcp" 이다
  2362. : sendRow - 검색된 내용중 메인으로 보내고자 하는 row
  2363. : srchRow - 메인에 들어간 자리. 검색로우(srchRow) 바로 전이다.
  2364. : prcpInptFlag - - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  2365. : groupSrc - 옵션: group처방 검색할 경우 node
  2366. : direcSrc - 옵션: group 지시처방 검색할 경우 node
  2367. : prcpInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  2368. * @return : srchRow 에러시 0
  2369. * @authur : 마정민 2008. 6. 25
  2370. * @---------------------------------------------------
  2371. */
  2372. function fAddSetPrcpChk ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag ) {
  2373. var prcpcd = model.getValue( strSrc + "[" + i + "]/prcpcd" );
  2374. var addprcpcd = "";
  2375. var addprcpcnt = 0;
  2376. // if (prcpcd == "LCT101") addprcpcd = "DDIS50";
  2377. // else if (prcpcd == "LCT001") addprcpcd = "DDIS75";
  2378. // else if (prcpcd == "LCT002") addprcpcd = "DDIS100";
  2379. // else if (prcpcd == "NHC297EG") addprcpcd = "FE654303G"; //by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청
  2380. var iFind = -1;
  2381. var setprcpchk = "";
  2382. if ( objFlag == "child" ) {
  2383. setprcpchk = opener.model.getValue ( "/root/initsrch/setprcplist/setprcp" );
  2384. } else {
  2385. setprcpchk = model.getValue ( "/root/initsrch/setprcplist/setprcp" );
  2386. }
  2387. // 기존 search함수에서 무결성이 어긋나 개별 체크 변경 - 20081008 by MoonSH
  2388. var precureprcpflag = "";
  2389. var calcflag = "";
  2390. var prcpdelivefact = "";
  2391. var firStage = setprcpchk.split("^");
  2392. for( i=0; i<firStage.length; i++ ){
  2393. var secStage = firStage[i].split("|");
  2394. if( prcpcd == secStage[0]) {
  2395. iFind = 1 ;
  2396. calcflag = secStage[1];
  2397. addprcpcd = secStage[2];
  2398. prcpdelivefact = secStage[3];
  2399. break ;
  2400. }
  2401. if ( iFind == 1) break;
  2402. }
  2403. if ( parseInt(iFind) >= 0) {
  2404. var prcpdd = "";
  2405. var insukind = "";
  2406. if ( objFlag == "child" ) {
  2407. prcpdd = opener.model.getValue ( "/root/init/prcpdd" );
  2408. insukind = opener.model.getValue ( "/root/paminfo/list/insukind");
  2409. } else {
  2410. prcpdd = model.getValue ( "/root/init/prcpdd" );
  2411. insukind = model.getValue ( "/root/paminfo/list/insukind");
  2412. }
  2413. //멀티 search 가능함
  2414. model.makeValue("/root/send/addsetprcp[1]/prcpcd",addprcpcd);
  2415. model.makeValue("/root/send/addsetprcp[1]/prcpdd",prcpdd);
  2416. model.makeValue("/root/send/addsetprcp[1]/insukind",insukind);
  2417. model.makeValue("/root/send/addsetprcp[1]/srchkind","B2");
  2418. if ( submit("TRMMO00207",false)) {
  2419. /*
  2420. **by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청 수정 시작.
  2421. ** 처방코드 : NHC297EMG, 자동발생코드 : FE654303G
  2422. ** 자동발생코드는 돈계산에서 제외되어야 함.
  2423. ** 자동발생코드 처방전달사항 자동 생성=>[HEART-SPECT 핵의학검사용]
  2424. */
  2425. //20090420 마정민 수정 HARDCODE 테이블로 분리
  2426. //if( addprcpcd == "FE654303G"){
  2427. var nd = model.instance1.selectNodes("/root/addsetprcp/prcplist");
  2428. if( nd != null && nd.length > 0) {
  2429. model.setValue("/root/addsetprcp/prcplist[1]/prcpdelivefact", prcpdelivefact );
  2430. model.setValue("/root/addsetprcp/prcplist[1]/tempcol17" , calcflag ); //자동발생코드는 돈계산이 되어선 안됨.
  2431. }
  2432. //}
  2433. //by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청 수정 끝
  2434. //serPrcpSrchRow = addPrcpDetl ( objFlag , "root/addsetprcp/prcplist" , strDest , 1 , srchRow, prcpInptFlag );
  2435. //by sonjy 20091031 자동발생 처방 입력 구분 추가
  2436. //SET 처방일 때 약품의 기본 일수는 수가계산법이 어떤 것이든 기본을 1일로 되도록 요청번호:8875
  2437. serPrcpSrchRow = addPrcpDetl ( objFlag , "root/addsetprcp/prcplist" , strDest , 1 , srchRow, "34" );
  2438. if (serPrcpSrchRow != 0 ) srchRow++;
  2439. }
  2440. model.removeNodeset("/root/send/addsetprcp");
  2441. }
  2442. return srchRow;
  2443. }
  2444. /**
  2445. * @desc : 포커스를 메인으로 한다.
  2446. * @param : curRow => 메인의 검색 row
  2447. : flag => child
  2448. : prcpNmClearFlag => 검색명을 클리어 시킬건지 여부
  2449. * @return : void
  2450. * @authur : 마정민 2007. 4. 12
  2451. * @---------------------------------------------------
  2452. */
  2453. function focusMain( curRow, flag, prcpNmClearFlag ) {
  2454. if ( flag == "child" ) {
  2455. if ( prcpNmClearFlag != "N" ) {
  2456. opener.model.setValue( "/root/main/prcp/prcplist[" + curRow + "]/prcpnm", "");
  2457. opener.model.setValue( "/root/main/prcp/prcplist[" + curRow + "]/prcpcd", "");
  2458. }
  2459. opener.model.recalculate();
  2460. var modiflag = model.getValue("/root/init/rowmodify/modiflag");
  2461. if ( modiflag != "Y" ){ // 처방 코드에서 수정 모드가 아닐때만 refresh - 20090630 by Moonsh
  2462. opener.grd_prcplist.refresh();
  2463. }
  2464. var bfRow = curRow - 1 ;
  2465. var sPrcpClsCd = opener.model.getValue( "/root/main/prcp/prcplist[" + bfRow + "]/prcpclscd" );
  2466. if ( sPrcpClsCd == "A2" || sPrcpClsCd == "A4" || sPrcpClsCd == "A6" ){
  2467. opener.grd_prcplist.row = bfRow;
  2468. opener.grd_prcplist.col = opener.grd_prcplist.colref("drprcpetc7");
  2469. } else {
  2470. opener.grd_prcplist.row = curRow;
  2471. if ( model.getValue ( "/root/send/cond99" ) == "getPrcpCdOldSrchInfo" ) {
  2472. opener.grd_prcplist.col = prcpcdCol;
  2473. opener.model.setValue ( "/root/send/cond99", "" );
  2474. } else {
  2475. opener.grd_prcplist.col = prcpnmCol;
  2476. }
  2477. }
  2478. if( opener.model.getValue("/root/cp") == "Y" ){ //CP에서 저장 시 AddPrcp()를 수행 시, 마지막 라인에 포커스가 남아있는 상태에서 저장 수행 과정에 "onendedit" 이번트 동시 수행하면서 윈도우 에러 발생 -> 이 경우 막음처리 (2008.10.02 JJE)
  2479. if( (typeof(curSavePrcpFlag_SMMMO00110) != "undefined") && (curSavePrcpFlag_SMMMO00110 != null) && (curSavePrcpFlag_SMMMO00110 == "N" || curSavePrcpFlag_SMMMO00110 == "T" )){
  2480. return;
  2481. }
  2482. }
  2483. // 항생제에서 데이타 추가 후 dispatch 시엔 Focus가 안 가서 setFocus 사용 20080925 by Moonsh
  2484. var cdssFlag = opener.javascript.getParameter( "SPMMD01600_flag");
  2485. var sAltDrugFlag = opener.javascript.getParameter( "SPMMB10100_flag"); // 대체약 선택으로 호출시
  2486. if ( cdssFlag == "Y" ) {
  2487. opener.model.setFocus(opener.grd_prcplist.attribute("id"), true);
  2488. } else if (sAltDrugFlag == "Y") {
  2489. } else {
  2490. //by sonjy 20090923 성공적으로 copy햇을 경우 ...
  2491. //iviewer에서 addprcp호출시 grid edit 안되는 bug 수정
  2492. opener.model.setFocus("grd_prcplist");
  2493. opener.btn_editcell.dispatch("DOMActivate");
  2494. }
  2495. opener.grd_prcplist.allstyle( "all", "font-weight" ) = ""; //기존 focus cell bold체 해제 (2010.01.27 JJE)
  2496. } else {
  2497. model.removeNodeset( "/root/prcpsrch/prcplist");
  2498. model.removeNodeset( "/root/prcpgroup/prcplist");
  2499. model.removeNodeset( "/root/prcpdirec/prcplist");
  2500. if ( prcpNmClearFlag != "N" ) {
  2501. model.setValue( "/root/main/prcp/prcplist[" + curRow + "]/prcpnm", ""); //검색그리드를 클리어 시킨다.
  2502. model.setValue( "/root/main/prcp/prcplist[" + curRow + "]/prcpcd", ""); //검색그리드를 클리어 시킨다.
  2503. }
  2504. model.recalculate();
  2505. var modiflag = model.getValue("/root/init/rowmodify/modiflag");
  2506. if ( modiflag != "Y" ){ // 처방 코드에서 수정 모드가 아닐때만 refresh - 20090630 by Moonsh
  2507. grd_prcplist.refresh();
  2508. }
  2509. var bfRow = curRow - 1 ;
  2510. var sPrcpClsCd = model.getValue( "/root/main/prcp/prcplist[" + bfRow + "]/prcpclscd" );
  2511. if ( sPrcpClsCd == "A2" || sPrcpClsCd == "A4" || sPrcpClsCd == "A6" ){
  2512. grd_prcplist.row = bfRow;
  2513. grd_prcplist.col = grd_prcplist.colref("drprcpetc7");
  2514. } else {
  2515. grd_prcplist.row = curRow;
  2516. if ( model.getValue ( "/root/send/cond99" ) == "getPrcpCdOldSrchInfo" ) {
  2517. grd_prcplist.col = prcpcdCol;
  2518. model.setValue ( "/root/send/cond99", "" );
  2519. } else {
  2520. grd_prcplist.col = prcpnmCol;
  2521. }
  2522. }
  2523. if( model.getValue("/root/cp") == "Y" ){ //CP에서 저장 시 AddPrcp()를 수행 시, 마지막 라인에 포커스가 남아있는 상태에서 저장 수행 과정에 "onendedit" 이번트 동시 수행하면서 윈도우 에러 발생 -> 이 경우 막음처리 (2008.10.02 JJE)
  2524. if( (curSavePrcpFlag_SMMMO00110 !=null ) && (curSavePrcpFlag_SMMMO00110 == "N" || curSavePrcpFlag_SMMMO00110 == "T") ){
  2525. return;
  2526. }
  2527. }
  2528. if( model.getValue ( "/root/cp" ) == "Y" ){
  2529. if (prtlprcpstatus_SMMMO00110 != "U" ) {
  2530. btn_editcell.dispatch("DOMActivate");
  2531. }
  2532. }else{
  2533. btn_editcell.dispatch("DOMActivate");
  2534. }
  2535. grd_prcplist.allstyle( "all", "font-weight" ) = ""; //기존 focus cell bold체 해제 (2010.01.27 JJE)
  2536. }
  2537. }
  2538. /**
  2539. * @desc : appendChild 공통함수로
  2540. * @param : strSrc => 소스 노드
  2541. : strDest => 목적지 노드
  2542. : flag => 같은화면에서 사용하는지 child에서 사용하는지
  2543. : autocheck => 자동체크하려면 체크벨류를 넣는다.
  2544. * @return : void
  2545. * @authur : 마정민 2007. 4. 21
  2546. * @---------------------------------------------------
  2547. */
  2548. function appendChildPrcp ( strSrc, strDest, flag, autocheck ) {
  2549. //* ---2007.11.12 (CP에서 미래처방을 수정하는 경우, 처방상세팝업에서 리턴 받은 값의 상태를 바꾼다) --- *//
  2550. if( opener.model.getValue("/root/cp") == "D" ){
  2551. if(strSrc == "/root/reset/prcplist"){
  2552. return;
  2553. }else{
  2554. if( instance1.selectSingleNode(strSrc + "/status") != null ){
  2555. model.setValue( strSrc + "/status", opener.model.getValue("/root/temp/mstatus") );
  2556. }
  2557. }
  2558. }
  2559. //* --- End --- *//
  2560. var srcNodeList = model.instances(0).selectNodes(strSrc);
  2561. if ( flag == null || flag == "child" )
  2562. var destNode = opener.model.instances(0).selectSingleNode(strDest);
  2563. else {
  2564. var destNode = model.instances(0).selectSingleNode(strDest);
  2565. }
  2566. var currow = 0;
  2567. for ( i=0; i < srcNodeList.length; i++ ){
  2568. if ( !isNull(autocheck)) {
  2569. currow = i + 1;
  2570. model.setValue ( strSrc + "[" + currow + "]/status", autocheck );
  2571. }
  2572. destNode.appendChild(srcNodeList.item(i).cloneNode(true));
  2573. }
  2574. }
  2575. /**
  2576. * @desc : 선택된 진단명을 진단 instance에 맵핑한다.
  2577. * @param : diagInfo: setValue할 진단정보
  2578. * @return : void
  2579. * @authur : 마정민 2007. 4. 21
  2580. * @---------------------------------------------------
  2581. */
  2582. function addDiagSetValue ( diagInfo ) {
  2583. var strSrc = "/root/main/diaginfo/diagcdlist";
  2584. var pamInfoNode = "/root/paminfo/list";
  2585. var prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  2586. var orddd = "";
  2587. if ( prcpgenrflag == "O" || prcpgenrflag == "S") {
  2588. orddd = model.getValue ( pamInfoNode + "/orddd" );
  2589. orddrid = model.getValue ( pamInfoNode + "/orddrid" );
  2590. } else {
  2591. orddd = model.getValue ( pamInfoNode + "/indd" );
  2592. orddrid = model.getValue ( pamInfoNode + "/medispclid" );
  2593. }
  2594. cretno = model.getValue ( pamInfoNode + "/cretno" );
  2595. orddeptcd = model.getValue ( pamInfoNode + "/orddeptcd" );
  2596. var diagRow = diagInfo.split ( "▩" ).length;
  2597. var srchRow = grd_diaglist.rows-1;
  2598. var mdiagcd = model.getValue ( strSrc + "[diagkindcdflag='M']/diagcd" );
  2599. var diagkindcdflag = ""; //주부유형
  2600. for ( var i = 1; i < diagRow-1 ; i++ ) {
  2601. var destNode = model.instances(0).selectSingleNode( "/root/main/diaginfo" );
  2602. model.duplicate( destNode, "/root/reset/diagcdlist", "*[" + srchRow + "]");
  2603. var icd10cd = getArrayData ( diagInfo, i, 8, "▩", "▦" );
  2604. var diagcd = getArrayData ( diagInfo, i, 9, "▩", "▦" );
  2605. var diagengnm = getArrayData ( diagInfo, i, 2, "▩", "▦" );
  2606. var diaghngnm = getArrayData ( diagInfo, i, 3, "▩", "▦" );
  2607. var spclinfo = getArrayData ( diagInfo, i, 5, "▩", "▦" );
  2608. model.setValue ( strSrc + "[" + srchRow + "]/diagkindcdflag", "S" );
  2609. if ( isNull(mdiagcd) && i == 1) {
  2610. model.setValue ( strSrc + "[" + srchRow + "]/diagkindcdflag", "M");
  2611. } else {
  2612. if ( spclinfo == "Y" ) { //산전특례
  2613. //산정특례 처방이면 산전특례이면서 주상병이 있는지 찾는다.
  2614. var spcmdiagcd = model.getValue ( strSrc + "[diagkindcdflag='M' and spclinfo='Y']/diagcd" );
  2615. if (isNull(spcmdiagcd)) { //값이 없으면 주상병으로 할 건지 물어본다.
  2616. if ( messageBox ( "[" + icd10cd + "] 상병은 특례상병입니다. 주상병으로 하시겠습니까?","Q") == "6" ) {
  2617. //하겠다고 하면 주상병으로 고침
  2618. var srcNodeList = model.instances(0).selectNodes ( "/root/main/diaginfo/diagcdlist" );
  2619. for ( var j=1; j <= srcNodeList.length; j++ ) {
  2620. if (srchRow == j) {
  2621. model.setValue ( "/root/main/diaginfo/diagcdlist[" + j + "]/diagkindcdflag", "M" );
  2622. } else {
  2623. if (model.getValue ( "/root/main/diaginfo/diagcdlist[" + j + "]/diagkindcdflag" )=="M") {
  2624. model.setValue ( "/root/main/diaginfo/diagcdlist[" + j + "]/diagkindcdflag", "S" );
  2625. if (model.getValue ( "/root/main/diaginfo/diagcdlist[" + j + "]/status" ) == "-" ) {
  2626. //진단상태가 - 이면 U로 수정함
  2627. model.setValue ( "/root/main/diaginfo/diagcdlist[" + j + "]/status", "U" );
  2628. }
  2629. }
  2630. }
  2631. }
  2632. }
  2633. }
  2634. }
  2635. }
  2636. /*
  2637. var dispdiagcd = getArrayData ( getParameter("diagInfo"), i, 6, "▩", "▦" );
  2638. var orgdiagnm = getArrayData ( getParameter("diagInfo"), i, 7, "▩", "▦" );
  2639. var orgdiagcd = getArrayData ( getParameter("diagInfo"), i, 8, "▩", "▦" );
  2640. var tootfact = getArrayData ( getParameter("diagInfo"), i, 9, "▩", "▦" );
  2641. */
  2642. model.setValue ( strSrc + "[" + srchRow + "]/icd10cd", icd10cd );
  2643. model.setValue ( strSrc + "[" + srchRow + "]/diagcd", diagcd );
  2644. model.setValue ( strSrc + "[" + srchRow + "]/diagengnm", diagengnm );
  2645. model.setValue ( strSrc + "[" + srchRow + "]/diaghngnm", diaghngnm );
  2646. model.setValue ( strSrc + "[" + srchRow + "]/spclinfo", spclinfo );
  2647. model.setValue ( strSrc + "[" + srchRow + "]/status", "I" );
  2648. model.setValue ( strSrc + "[" + srchRow + "]/instcd", getUserInfo("dutplceinstcd"));
  2649. model.setValue ( strSrc + "[" + srchRow + "]/pid", model.getValue ( pamInfoNode + "/pid" ));
  2650. model.setValue ( strSrc + "[" + srchRow + "]/orddd", orddd);
  2651. model.setValue ( strSrc + "[" + srchRow + "]/cretno", cretno);
  2652. model.setValue ( strSrc + "[" + srchRow + "]/orddeptcd", orddeptcd);
  2653. model.setValue ( strSrc + "[" + srchRow + "]/orddrid", orddrid);
  2654. model.setValue ( strSrc + "[" + srchRow + "]/genrflagcd", prcpgenrflag);
  2655. model.setValue ( strSrc + "[" + srchRow + "]/diaghistcd", "O" );
  2656. model.setValue ( strSrc + "[" + srchRow + "]/diagtypecd", "D" );
  2657. model.setValue ( strSrc + "[" + srchRow + "]/diagkindcd", "C" );
  2658. model.setValue ( strSrc + "[" + srchRow + "]/anamneflag", "N" );
  2659. model.setValue ( strSrc + "[" + srchRow + "]/diagsignflag", "2" );
  2660. model.setValue ( strSrc + "[" + srchRow + "]/tootflagcd", "-" );
  2661. model.setValue ( strSrc + "[" + srchRow + "]/tootfact", "-" );
  2662. diagkindcdflag = model.getValue ( "/root/main/diaginfo/diagcdlist[" + srchRow + "]/diagkindcdflag" );
  2663. fCheckDiagHosinpPcp( icd10cd, prcpgenrflag, diagkindcdflag );
  2664. srchRow++;
  2665. /**************************************** 진단추가시 원외처방예외사유 진단인지 check ******************************/
  2666. //치식 상병 입력 시 치식팝업 자동 호출 (2009.10.28 by JJE)
  2667. var tootDiagFromToCd = model.getValue("/root/initsrch/tootdiagcd/trgtcd"); //ex: K01|K10
  2668. if( !isNull(tootDiagFromToCd) ){
  2669. var tootDiagFrCd = tootDiagFromToCd.split("|")[0];
  2670. var tootDiagToCd = tootDiagFromToCd.split("|")[1];
  2671. var tootDiagFrLngth = getStringLength(tootDiagFrCd);
  2672. var tootDiagToLngth = getStringLength(tootDiagToCd);
  2673. if(icd10cd.substring(0, tootDiagFrLngth) >= tootDiagFrCd && icd10cd.substring(0, tootDiagToLngth) <= tootDiagToCd){
  2674. fDentifmla();
  2675. }
  2676. }
  2677. //end 치식팝업 자동 호출
  2678. }
  2679. //검색라인 초기화
  2680. model.setValue ( "/root/main/diaginfo/diagcdlist[" + srchRow + "]/icd10cd", "" );
  2681. model.setValue ( "/root/main/diaginfo/diagcdlist[" + srchRow + "]/diagengnm", "" );
  2682. model.refresh();
  2683. model.setfocus( "grd_diaglist" );
  2684. grd_diaglist.row = grd_diaglist.rows - 1;
  2685. grd_diaglist.col = 4;
  2686. }
  2687. /**
  2688. * @desc : 진단추가시 원내처방예외사유가 있는 진단코드인지 검색후(처방화면초기값) 결과에 따라 처방화면의 원내처방사유를 setting한다.
  2689. * @ :
  2690. * @param : icd10cd, prcpgenrflag
  2691. * @return : void
  2692. * @authur : 마정민 2007. 9. 6
  2693. * @---------------------------------------------------
  2694. */
  2695. function fCheckDiagHosinpPcp( icd10cd, prcpgenrflag, diagkindcdflag ) {
  2696. var inhospappdeptcd = model.getValue ( "/root/initsrch/inhospappdeptcd/trgtcd" ); //F상병원내사유적용 부서:정신과 (2009.06.29 JJE)
  2697. var inhospautoappyn = model.getValue ( "/root/initsrch/inhospautoappyn/trgtcd" ); //F상병원내사유자동적용 여부 (2009.06.29 JJE)
  2698. var insukind = opener.model.getValue ( "/root/paminfo/list/insukind"); //보험유형 (2009.06.29 JJE)
  2699. if (isNull(insukind)) insukind = model.getValue ( "/root/paminfo/list/insukind"); //보험유형 (2009.06.29 JJE)
  2700. if ( prcpgenrflag == "O" || prcpgenrflag == "D" ) { //SON1123 DSC 퇴원처방 처리 by sonjy 20081123
  2701. if ( !isNull(model.getValue ( "/root/initsrch/diagautocnts/trgtcd" ))) {
  2702. if (model.getValue ( "/root/init/hosinprcpresncd" ) == "00" ) { //원내처방 사유가 없을 경우
  2703. var srcNodeList = model.instances(0).selectNodes( "/root/initsrch/diagautocnts" );
  2704. for ( var i=1; i <=srcNodeList.length; i++ ) {
  2705. var trgtcdnmArray = model.getValue ( "/root/initsrch/diagautocnts[" + i + "]/trgtcdnm" );
  2706. var fromTrgtcdnm = getArrayData ( trgtcdnmArray + "^", 0, 0, "^", "|" );
  2707. var toTrgtcdnm = getArrayData ( trgtcdnmArray + "^", 0, 1, "^", "|" );
  2708. var cdlength = fromTrgtcdnm.length;
  2709. var icd10Chck = icd10cd.substring( 0, cdlength );
  2710. if ( icd10Chck >= fromTrgtcdnm && icd10Chck <= toTrgtcdnm ) { //해당 진단검색안에 값이 있다면
  2711. var hosinprcpresncd = model.getValue ( "/root/initsrch/diagautocnts[" + i + "]/trgtcd" );
  2712. //원내처방사유 적용 주상병만 가능 단 23은 부상병도 적용
  2713. if ( diagkindcdflag == "M" || hosinprcpresncd == "23" ) {
  2714. //by sonjy 20081031 F상병일 경우 진료과가 정신과인 경우에 한해서만 원내처방사유 SETTING되도록. 윤영옥ITC 요청. start
  2715. if( icd10Chck.substring( 0,1) == "F" ){
  2716. //if( model.getValue ( "/root/paminfo/list/orddeptcd" ) != "2030000000") break;
  2717. if( model.getValue ( "/root/paminfo/list/orddeptcd" ) != inhospappdeptcd) break; //F상병이면서 진료과가 정신과인지 check (2009.06.29 JJE)
  2718. if( inhospautoappyn != "Y" && (insukind != "21" && insukind != "22") ) break; //원내사유자동적용 N이면 보험유형까지 check - ujb요청 (2009.06.29 JJE)
  2719. }
  2720. //by sonjy end
  2721. model.setValue ( "/root/init/hosinprcpresncd", hosinprcpresncd);
  2722. fChngHosinPrcpResn();
  2723. model.refresh();
  2724. break; //값을 setting 하면 빠져나온다.
  2725. }
  2726. } //icd10cd == trgtcdnm end
  2727. } //진단검색 end
  2728. // model.refresh();
  2729. } //원내처방 사유가 없을 경우 여부
  2730. }//진단초기값 여부 end
  2731. } //외래end
  2732. }
  2733. /**
  2734. * @desc : 그룹코드 M의 싱글코드 검색
  2735. * @ : 검색후 수가코드의 그룹싱글구분이 M 일경우는 그 그룹코드로 다시 SINGLE 코드를 찾아온다.
  2736. * @param : cond1= 처방명, 코드명, 성분명, old수가코드
  2737. * @return : void
  2738. * @authur : 마정민 2007. 4. 12
  2739. * @---------------------------------------------------
  2740. */
  2741. function prcpGroupSrch ( cond1, cond3, cond4, cond5, cond6, cond99 ) {
  2742. if (isNull(cond3)) {
  2743. cond3 = getCurrentDate();
  2744. }
  2745. if (isNull(cond4)) {
  2746. cond4 = "11";
  2747. }
  2748. if (isNull(cond99)) {
  2749. cond99 = "getPrcpGroupInfo";
  2750. }
  2751. var prcpgenrflag = opener.model.getValue ( "/root/patflag/list/prcpgenrflag" );
  2752. if ( isNull(prcpgenrflag) ) {
  2753. prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  2754. if ( isNull(prcpgenrflag) ) {
  2755. prcpgenrflag = "-"
  2756. }
  2757. }
  2758. model.setValue ( "/root/send/cond1", cond1 ); //처방명, 수가코드
  2759. model.setValue ( "/root/send/cond2", prcpgenrflag ); //외래, 입원, 응급 구분
  2760. model.setValue ( "/root/send/cond3", cond3 ); //처방일
  2761. model.setValue ( "/root/send/cond4", cond4 ); //환자보험유형
  2762. model.setValue ( "/root/send/cond5", cond5 ); //진단검사 그룹처방일 때 검체코드정보
  2763. model.setValue ( "/root/send/cond6", cond6 ); //진단검사 검사분류유형
  2764. model.setValue ( "/root/send/cond99", cond99 );
  2765. submit( "TRMMO00101", false );
  2766. // 20090721 한재상 수정. m-set중 특정 signle코드의 default 급비변경.
  2767. var grupSrc = "/root/prcpgroup/prcplist";
  2768. var srcNodeList = model.instances(0).selectNodes( grupSrc );
  2769. var msetpfcspec = model.getValue("/root/initsrch/msetpayflagcd/trgtcd");
  2770. if ( msetpfcspec == "" ) {
  2771. msetpfcspec = opener.model.getValue("/root/initsrch/msetpayflagcd/trgtcd");
  2772. }
  2773. var msetpfcsplit = msetpfcspec.split("^");
  2774. for (var i=1; i<=srcNodeList.length; i++) {
  2775. for (var j=0; j < msetpfcsplit.length-1; j++) {
  2776. var msetpfcitem = msetpfcsplit[j].split("|");
  2777. if ( msetpfcitem[j] == model.getValue(grupSrc+"["+i+"]/prcpcd") ) {
  2778. model.setValue(grupSrc+"["+i+"]/payflagcd", msetpfcitem[1]);
  2779. }
  2780. }
  2781. }
  2782. }
  2783. /**
  2784. * @desc : 지시처방 J의 싱글코드 검색
  2785. * @ : 검색후 수가코드의 그룹싱글구분이 M 일경우는 그 그룹코드로 다시 SINGLE 코드를 찾아온다.
  2786. * @param : cond1= 처방명, 코드명, 성분명, old수가코드
  2787. * @return : void
  2788. * @authur : 마정민 2007. 4. 12
  2789. * @---------------------------------------------------
  2790. */
  2791. function prcpDirecSrch( cond1, cond3, cond4, cond5 ) {
  2792. if (isNull(cond3)) {
  2793. cond3 = getCurrentDate();
  2794. }
  2795. if (isNull(cond4)) {
  2796. cond4 = "11";
  2797. }
  2798. model.setValue ( "/root/send/cond1", cond1 ); //처방명, 수가코드
  2799. model.setValue ( "/root/send/cond2", "-" ); //외래, 입원, 응급 구분
  2800. model.setValue ( "/root/send/cond3", cond3 ); //처방일
  2801. model.setValue ( "/root/send/cond4", cond4 ); //환자보험유형
  2802. model.setValue ( "/root/send/cond5", cond5 );
  2803. model.setValue ( "/root/send/cond99", "getDirecGroupInfo" ); //환자보험유형
  2804. submit( "TRMMO00102" , false );
  2805. }
  2806. /**
  2807. * @desc : 처방내역만들기
  2808. * @param : strSrc: source Node
  2809. : from: 시작 row
  2810. : to: 끝 row
  2811. * @return : void
  2812. * @authur : 마정민 2007. 4. 16
  2813. */
  2814. function makePrcpNm ( strSrc, from, to ) {
  2815. var i = from;
  2816. if ( model.getValue ( strSrc + "[" + i + "]/status" ) == "S" ) return;
  2817. if ( model.getValue ( strSrc + "[" + i + "]/prcpflag" ) == "2" ) return;
  2818. var prcpnmbf = "";
  2819. var prcpnmaft = "";
  2820. var opansflagcd = "";
  2821. var prcpclscd = model.getValue ( strSrc + "[" + i + "]/prcpclscd" ); //처방종류
  2822. var prcpcd = model.getValue ( strSrc + "[" + i + "]/prcpcd" ); //처방코드
  2823. var prcpnm = model.getValue ( strSrc + "[" + i + "]/orgprcpnm" ); //처방명
  2824. var clincstdyflag = model.getValue ( strSrc + "[" + i + "]/clincstdyflag" ); //임상연구
  2825. var erprcpflag = model.getValue ( strSrc + "[" + i + "]/erprcpflag" ); //응급구분
  2826. var prnprcpflag = model.getValue ( strSrc + "[" + i + "]/prnprcpflag" ); //prn
  2827. var prepprcpflag = model.getValue ( strSrc + "[" + i + "]/prepprcpflag" ); //prep
  2828. var selfdrugflag = model.getValue ( strSrc + "[" + i + "]/selfdrugflag" ); //self
  2829. var powdflag = model.getValue ( strSrc + "[" + i + "]/powdflag" ); //powder
  2830. var drugspd = model.getValue ( strSrc + "[" + i + "]/drugspd" ); //gtt
  2831. var tnsfiltflag = model.getValue ( strSrc + "[" + i + "]/tnsfiltflag" ); //filter
  2832. var portprcpflag = model.getValue ( strSrc + "[" + i + "]/portprcpflag" ); //portprcpflag
  2833. //수술유형, 재활치료부위
  2834. if ( prcpclscd == "F2" ) {
  2835. var rehbprcpcurepartcd = model.getValue ( strSrc + "[" + i + "]/rehbprcpcurepartcd" );
  2836. if ( rehbprcpcurepartcd != "-" && !isNull(rehbprcpcurepartcd)) {
  2837. opansflagcd = model.getValue ( "/root/init/rehbprcpcurepartcd/M0046[cdid=" + rehbprcpcurepartcd + "]/cdnm" );
  2838. }
  2839. } else if ( prcpclscd == "H2" || prcpclscd == "K2" ) {
  2840. opansflagcd = model.getValue ( strSrc + "[" + i + "]/opansflagcd" );
  2841. if ( opansflagcd != "-" && !isNull(opansflagcd)) {
  2842. opansflagcd = model.getValue ( "/root/init/opansflagcd/M0007[cdid=" + opansflagcd + "]/cdnm" );
  2843. }
  2844. }
  2845. var dietprcpgenrflag = model.getValue ( strSrc + "[" + i + "]/dietprcpgenrflag" ); //조/중/석
  2846. var mealcalrcnts = model.getValue ( strSrc + "[" + i + "]/mealcalrcnts" ); //열량
  2847. var mealprotcnts = model.getValue ( strSrc + "[" + i + "]/mealprotcnts" ); //단백질
  2848. var prcpdelivefact = model.getValue ( strSrc + "[" + i + "]/prcpdelivefact" ); //전달사항
  2849. var ansttm = model.getValue ( strSrc + "[" + i + "]/prcprefseq" ); //검사간격
  2850. var drugspd = model.getValue ( strSrc + "[" + i + "]/drugspd" ); //기본시간
  2851. var trnptbftestflag = model.getValue ( strSrc + "[" + i + "]/trnptbftestflag" );
  2852. var prcptims = model.getValue ( strSrc + "[" + i + "]/prcptims" ); //치료횟수
  2853. var prcpdayno = model.getValue ( strSrc + "[" + i + "]/prcpdayno" ); //치료일수
  2854. var etcprcpresncd = model.getValue ( strSrc + "[" + i + "]/etcprcpresncd" ); //마감일
  2855. var irflag = model.getValue ( strSrc + "[" + i + "]/irflag" ); //필터
  2856. var precureprcpflag = model.getValue ( strSrc + "[" + i + "]/precureprcpflag" ); //선처치
  2857. var selfprcpflag = model.getValue ( strSrc + "[" + i + "]/selfprcpflag" ); //자가
  2858. var prcpkindcd = model.getValue ( strSrc + "[" + i + "]/prcpkindcd" ); //처방종류
  2859. var hsctdelivepos = model.getValue ( strSrc + "[" + i + "]/hsctdelivepos" ); //hsct전달부서
  2860. var rehbprcpenddd = model.getValue ( strSrc + "[" + i + "]/rehbprcpenddd" ); //재활치료 마감일
  2861. var fasttrackflag = model.getValue ( strSrc + "[" + i + "]/fasttrackflag" ); //FastTrackFlag
  2862. var drprcpetc11 = model.getValue ( strSrc + "[" + i + "]/drprcpetc11" ); //제2시술
  2863. var drprcpetc12 = model.getValue ( strSrc + "[" + i + "]/drprcpetc12" ); //F/U
  2864. var prcpmixno = model.getValue ( strSrc + "[" + i + "]/prcpmixno" ); //처방 Mix번호
  2865. var cnt = 0;
  2866. if ( erprcpflag == "Y") prcpnmbf = prcpnmbf + "[응급] ";
  2867. if ( fasttrackflag == "Y") prcpnmbf = prcpnmbf + "[FT] ";
  2868. if ( clincstdyflag == "Y") prcpnmbf = prcpnmbf + "[임상] ";
  2869. if ( precureprcpflag == "Y") prcpnmbf = prcpnmbf + "[선] ";
  2870. if ( drprcpetc11 == "Y") prcpnmbf = prcpnmbf + "[제2시술] ";
  2871. if ( drprcpetc12 == "Y") prcpnmbf = prcpnmbf + "[F/U] ";
  2872. if ( prcpclscd == "A2" || prcpclscd == "A4" ) {//약
  2873. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  2874. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  2875. if ( selfprcpflag == "Y") prcpnmbf = prcpnmbf + "[home] ";
  2876. if ( selfdrugflag == "Y") prcpnmbf = prcpnmbf + "[self] ";
  2877. prcpnm = prcpnmbf + prcpnm;
  2878. if ( powdflag == "Y") prcpnm = prcpnm + "[powder] ";
  2879. } else if ( prcpclscd == "A6" ) { //주사
  2880. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  2881. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  2882. if ( selfprcpflag == "Y") prcpnmbf = prcpnmbf + "[home] ";
  2883. if ( selfdrugflag == "Y") prcpnmbf = prcpnmbf + "[self] "; // 주사일때도 셀프 표시 2013.07.10 엄영만
  2884. //if ( !isNull(prcpmixno) && prcpmixno != "-" && prcpmixno != "0") prcpnmbf = prcpnmbf + "(" + prcpmixno + ") "; // Mix 번호 표시 2018.04.17 엄영만
  2885. prcpnm = prcpnmbf + prcpnm;
  2886. if ( drugspd != "0" && drugspd != "" ) {
  2887. var drugspdunitflag = model.getValue ( strSrc + "[" + i + "]/drugspdunitflag" ); //투여속도
  2888. if ( drugspdunitflag != "-" && !isNull(drugspdunitflag)) {
  2889. drugspdunitflag = model.getValue ( "/root/init/M0040/M0040[cdid=" + drugspdunitflag + "]/cdnm" );
  2890. } else {
  2891. drugspdunitflag = "";
  2892. }
  2893. prcpnm = prcpnm + " [" + drugspd + drugspdunitflag + "] ";
  2894. }
  2895. } else if ( prcpclscd == "D2" ) { //병리
  2896. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  2897. prcpnm = prcpnmbf + prcpnm;
  2898. } else if ( prcpclscd == "B4" ) { //수혈 (혈액수혈)
  2899. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  2900. prcpnm = prcpnmbf + prcpnm;
  2901. if ( tnsfiltflag == "Y") prcpnm = prcpnm + "[Filter] ";
  2902. if ( irflag == "Y") prcpnm = prcpnm + "[Irr] ";
  2903. } else if ( prcpclscd == "C2" || prcpclscd == "C6" || prcpclscd == "E2" || prcpclscd == "G2") { //방사선 검사(기능검사, 내시경,천자,생검, 방사선, 핵의학영상, 방사선치료)
  2904. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  2905. if ( portprcpflag == "Y") prcpnmbf = prcpnmbf + "[por] ";
  2906. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  2907. prcpnm = prcpnmbf + prcpnm;
  2908. } else if ( prcpclscd == "H2" || prcpclscd == "H4" || prcpclscd == "K2" || prcpclscd == "C4" ) { //수술, 처치, 치과
  2909. prcpnm = prcpnmbf + prcpnm;
  2910. if ( opansflagcd != "" && opansflagcd != "-") prcpnm = prcpnm + " [" + opansflagcd + "] "; //수술마취구분-수술유형
  2911. } else if ( prcpclscd == "B2" || prcpclscd == "B6" ) { //진단검사 (검체검사), 핵의학 체외
  2912. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  2913. prcpnm = prcpnmbf + prcpnm;
  2914. } else if ( prcpclscd == "03" ) {//식이
  2915. if ( dietprcpgenrflag == "1") prcpnmbf = prcpnmbf + "[조식] ";
  2916. if ( dietprcpgenrflag == "2") prcpnmbf = prcpnmbf + "[중식] ";
  2917. if ( dietprcpgenrflag == "3") prcpnmbf = prcpnmbf + "[석식] ";
  2918. prcpnm = prcpnmbf + prcpnm;
  2919. if ( mealcalrcnts != "" && mealcalrcnts != "0" ) prcpnm = prcpnm + "[" + opansflagcd + ":" + mealcalrcnts + "] ";
  2920. var drugmastspec = model.getValue ( strSrc + "[" + i + "]/drugmastspec" ) + "▩";
  2921. var mealprotcntscond = getArrayData (drugmastspec, 0, 3, " ▩", "|" );
  2922. if ( mealprotcnts != "" && mealprotcntscond == "Y" ) prcpnm = prcpnm + "[횟수:" + mealprotcnts + "] ";
  2923. } else if ( prcpclscd == "F2" ) { //재활
  2924. prcpnm = prcpnmbf + prcpnm;
  2925. if("HZ272" != prcpcd ) { // 요청번호 20140422010 온열암 치료는 재활표기 따르지 않음. 스크립트 함수도 같이 수정. 2014.04.23 엄영만
  2926. if ( opansflagcd != "" && opansflagcd != "-") {
  2927. prcpnmaft = prcpnmaft + " " + opansflagcd + " ";
  2928. cnt++;
  2929. }
  2930. if ( prcptims != "" && prcptims != 0 ) {
  2931. prcpnmaft = prcpnmaft + " " + prcptims + "/1일 ";
  2932. cnt++;
  2933. }
  2934. if ( cnt > 0 ) {
  2935. prcpnm = prcpnm + " [" + prcpnmaft + "]";
  2936. }
  2937. }
  2938. } else {
  2939. prcpnm = prcpnmbf + prcpnm;
  2940. }
  2941. if ( trnptbftestflag == "Y") {
  2942. prcpnm = prcpnm + " [pre-workup]";
  2943. } else if ( trnptbftestflag == "D") {
  2944. prcpnm = prcpnm + " [donor w/u]";
  2945. }
  2946. if ( prcpkindcd == "90") prcpnm = prcpnm + " [입원전검사(당일)] ";
  2947. if ( prcpkindcd == "95") prcpnm = prcpnm + " [입원전검사(전일)] ";
  2948. if ( prcpkindcd == "80") prcpnm = prcpnm + " [예약처방] ";
  2949. if ( hsctdelivepos == "1") prcpnm = prcpnm + " [병동]";
  2950. else if ( hsctdelivepos == "2") prcpnm = prcpnm + " [성분헌혈]";
  2951. else if ( hsctdelivepos == "3") prcpnm = prcpnm + " [세포처리실]";
  2952. if ( model.getValue ( strSrc + "[" + i + "]/drprcpetc2" ) == "Y" ) { // 특수주사실 체크 추가 요청 20081027 by Moonsh
  2953. prcpnm = prcpnm + " [암센터주사실] ";
  2954. } else if ( model.getValue ( strSrc + "[" + i + "]/drprcpetc2" ) == "B" ) {
  2955. prcpnm = prcpnm + " [BMT주사실] ";
  2956. }
  2957. model.setValue ( strSrc + "[" + i + "]/prcpnm", prcpnm );
  2958. model.setValue ( strSrc + "[" + i + "]/prcprefseq","0" );
  2959. }
  2960. /**
  2961. * @desc : 지정일자(연속처방)처리
  2962. * @param : grdObj: DataGrid
  2963. : prcpNode: 값을 세팅할 node
  2964. : flag: main 인지 child 인지
  2965. : endFlag: 마감일 지정을 할지여부
  2966. * @return : void
  2967. * @authur : 마정민 2007. 4. 30
  2968. * @---------------------------------------------------
  2969. */
  2970. function fContPrcpDd( grdObj, prcpNode, flag, endFlag ) {
  2971. //1. 과거일자 불가(달력에서 막음)
  2972. //2. 오늘날짜 처방이 아닐때 해더생성
  2973. //3. 2개이상생성시 해더생성
  2974. //4. 외래에서만 사용
  2975. //5. 상태|Acting진료일자|실시처방상태코드|처방일자|실시처방번호^
  2976. var status = "";
  2977. var actordd = "";
  2978. var prcpdd = "";
  2979. var execprcpstatcd = "";
  2980. var execprcpno = "";
  2981. var curRow = "";
  2982. var contPrcpSpec = "";
  2983. var contPrcpSpecArray1;
  2984. var contPrcpSpecArray2;
  2985. var prcpPKSpecArray;
  2986. var reqparm = "";
  2987. if ( grdObj == null ) grdObj = grd_prcplist; //값이 없으면 메인의 오른쪽 마우스 클릭
  2988. if ( isNull(prcpNode)) prcpNode = "/root/main/prcp/prcplist"; //값이 없으면 메인의 오른쪽 마우스 클릭
  2989. //외래진료일자
  2990. if ( flag == "child" ) {
  2991. if ( opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" ) {
  2992. messageBox ( "지정일은 외래에서만 사용하실 수 있습니다.", "E" );
  2993. return;
  2994. }
  2995. prcpdd = opener.model.getValue ( "/root/paminfo/list/orddd" ); //값이 없으면 메인의 오른쪽 마우스 클릭
  2996. } else {
  2997. if ( model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" ) {
  2998. messageBox ( "지정일은 외래에서만 사용하실 수 있습니다.", "E" );
  2999. return;
  3000. }
  3001. prcpdd = model.getValue ( "/root/paminfo/list/orddd" );
  3002. }
  3003. if ( model.getValue ( prcpNode + "[" + grdObj.row + "]/prcpclscd" ) != "A6" && model.getValue ( prcpNode + "[" + grdObj.row + "]/prcpclscd" ) != "F2" ) {
  3004. messageBox ( "지정일 사용하실 수 없는 처방입니다.", "E" );
  3005. return;
  3006. }
  3007. setParameter ("paramcalflag", "multi");
  3008. setParameter ("defaultday", prcpdd);
  3009. var selectedRows = 0;
  3010. if ( grdObj.selectionMode != "list" ) {
  3011. selectedRows = grdObj.row;
  3012. } else {
  3013. selectedRows = grdObj.selectedRows;
  3014. }
  3015. for (var i=0; i<selectedRows; i++) {
  3016. if ( grdObj.selectionMode != "list" ) {
  3017. curRow = grdObj.row;
  3018. } else {
  3019. curRow = grdObj.selectedrow(i);
  3020. }
  3021. contPrcpSpec = model.getValue ( prcpNode + "[" + curRow + "]/contprcpspec" );
  3022. if ( contPrcpSpec == "-" ) { //처방 당일이었던 지정일 또는 처음검색
  3023. prcpPKSpecArray = model.getValue ( prcpNode + "[" + curRow + "]/prcppkspec" ).split("|");
  3024. if ( !isNull(prcpPKSpecArray[0])) reqparm = prcpPKSpecArray[0]; //처방일자가 있으면
  3025. else reqparm = prcpdd;
  3026. } else {
  3027. contPrcpSpecArray1 = contPrcpSpec.split("^");
  3028. for ( var j=1; j < contPrcpSpecArray1.length; j++ ){
  3029. contPrcpSpecArray2 = contPrcpSpecArray1[j].split("|");
  3030. if ( j == (contPrcpSpecArray1.length-1))
  3031. reqparm = reqparm + contPrcpSpecArray2[1];
  3032. else
  3033. reqparm = reqparm + contPrcpSpecArray2[1] + "▩";//과거에 선택됐던 지정일을 넘긴다.
  3034. }
  3035. }
  3036. setParameter ("reqparam", reqparm);
  3037. fPrcpModal ( "SPMMO10600", 20, 50 );
  3038. if ( isNull(getParameter ( "rtn"))) return; //값이 없으면 return
  3039. var actorddArray = getParameter ( "rtn").split("▩");
  3040. model.setValue ( prcpNode + "[" + curRow + "]/prcpdayno", actorddArray.length );
  3041. status = model.getValue ( prcpNode + "[" + curRow + "]/status" ); //선택된 셀 상태값 가져오기
  3042. contPrcpSpec = "status|actorddd|execprcpstatcd|prcpdd|execprcpno";
  3043. var enddd = "00000000";
  3044. for( k = 0; k < actorddArray.length; k++) { //내용 붙히기
  3045. actordd = actorddArray[k];
  3046. contPrcpSpec = contPrcpSpec + "^" + status + "|" + actordd + "|" + execprcpstatcd + "|" + prcpdd + "|" + execprcpno;
  3047. if ( eval(enddd) < eval(actordd) ) {
  3048. enddd = actordd;
  3049. }
  3050. }
  3051. if ( actorddArray.length == 1 && actordd == prcpdd ) { // 날짜가 1 이고 처방일과 같을 경우는 - 처리
  3052. model.setValue ( prcpNode + "[" + curRow + "]/contprcpspec", "-" );
  3053. } else {
  3054. model.setValue ( prcpNode + "[" + curRow + "]/contprcpspec", contPrcpSpec );
  3055. }
  3056. //재활일 경우 마감일 setting
  3057. var prcpclscd = model.getValue ( prcpNode + "[" + curRow + "]/prcpclscd" );
  3058. if ( prcpclscd == "F2" ) model.setValue ( prcpNode + "[" + curRow + "]/etcprcpresncd", enddd );
  3059. //일수변환
  3060. model.setValue ( prcpNode + "[" + curRow + "]/prcpdayno", actorddArray.length );
  3061. }
  3062. }
  3063. /**
  3064. * @desc : 지정일자초기화
  3065. * @param : contPrcpDdCol: main에서 setting 된 값이 있었다면 화면에 , 구분자로 표시해 준다.
  3066. : grdObj: DataGrid
  3067. * @return : void
  3068. * @authur : 마정민 2007. 4. 30
  3069. * @---------------------------------------------------
  3070. */
  3071. function fContPrcpDdInit( grdObj, contPrcpDdCol ) {
  3072. var prcpNode = "/root/main/prcp/prcplist"
  3073. var prcpdd = opener.model.getValue ( "/root/paminfo/orddd" );
  3074. var contPrcpSpec = model.getValue ( prcpNode + "/contprcpspec" );
  3075. var contPrcpSpecArray1;
  3076. var contPrcpSpecArray2;
  3077. var contPrcpDd = "";
  3078. if ( opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" ) {
  3079. grdObj.valueMatrix ( 1, contPrcpDdCol ) = "-";
  3080. return;
  3081. }
  3082. grdObj.valueMatrix ( 1, contPrcpDdCol ) = "";
  3083. if ( contPrcpSpec == "-" ) { //처방 당일이었던 지정일 또는 처음검색
  3084. prcpPKSpecArray = model.getValue ( prcpNode + "/prcppkspec" ).split("|");
  3085. if ( !isNull(prcpPKSpecArray[0])) contPrcpDd = prcpPKSpecArray[0]; //처방일자가 있으면
  3086. else contPrcpDd = prcpdd;
  3087. contPrcpDd = fDateFormat ( contPrcpDd );
  3088. } else {
  3089. contPrcpSpecArray1 = contPrcpSpec.split("^");
  3090. for ( var j=1; j < contPrcpSpecArray1.length; j++ ){
  3091. contPrcpSpecArray2 = contPrcpSpecArray1[j].split("|");
  3092. if ( j == (contPrcpSpecArray1.length-1))
  3093. contPrcpDd = contPrcpDd + fDateFormat ( contPrcpSpecArray2[1]);//과거에 선택던 지정일을 넘긴다.
  3094. else
  3095. contPrcpDd = contPrcpDd + fDateFormat ( contPrcpSpecArray2[1]) + ",";
  3096. }
  3097. }
  3098. grdObj.valueMatrix ( 1, contPrcpDdCol ) = contPrcpDd;
  3099. }
  3100. /**
  3101. * @desc : 희망일자처리
  3102. * @param : grdObj: Data Grid
  3103. : prcpNode: source Node
  3104. : flag: child
  3105. : inst: 초기값을 가져올 instance
  3106. * @return : void
  3107. * @authur : 마정민 2007. 4. 30
  3108. * @---------------------------------------------------
  3109. */
  3110. function fPrcpHopeDd( grdObj, prcpNode, flag, inst ) {
  3111. //외래진료일자
  3112. if ( flag == "child" ) {
  3113. if ( opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" ) return;
  3114. prcpdd = opener.model.getValue ( "/root/paminfo/list/orddd" );
  3115. } else {
  3116. if ( model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" ) return;
  3117. prcpdd = model.getValue ( "/root/paminfo/list/orddd" );
  3118. }
  3119. if ( grdObj == null ) grdObj = grd_prcplist;
  3120. if ( isNull(prcpNode)) prcpNode = "/root/main/prcp/prcplist";
  3121. if ( isNull(inst)) inst = "prcphopedd";
  3122. setParameter ("defaultday", prcpdd );
  3123. setParameter ("paramcalflag", "sngl");
  3124. setParameter ("reqparam", model.getValue ( prcpNode + "[" + grdObj.row + "]/" + inst ))
  3125. modal ( "SPMMO10600" );
  3126. if ( isNull(getParameter ( "rtn"))) return; //값이 없으면 return
  3127. var selectedRows = grdObj.selectedRows;
  3128. for (var i=0; i<selectedRows; i++) {
  3129. model.setValue ( prcpNode + "[" + grdObj.selectedrow(i) + "]/" + inst, getParameter ( "rtn"));
  3130. }
  3131. }
  3132. /**
  3133. * @desc : 날짜에 - 구분자 두기
  3134. * @param : dd: 모양을 바꿀날짜.
  3135. * @return : yyyy-mm-dd
  3136. * @authur : 마정민 2007. 4. 30
  3137. * @---------------------------------------------------
  3138. */
  3139. function fDateFormat( dd ) {
  3140. var yyyy = dd.substring ( 0, 4 );
  3141. var mm = dd.substring ( 4, 6 );
  3142. var dd = dd.substring ( 6, 8 );
  3143. return yyyy + "-" + mm + "-" + dd;
  3144. }
  3145. /**
  3146. * @desc : split을 이용한 배열값 가져오기
  3147. * @param : pData: split이 포함된 원본데이터
  3148. : pRow: row값
  3149. : pCol: col값
  3150. : pRowSep: row구분자
  3151. : pColSep: col구분자
  3152. * @return : arrCol[pCol]
  3153. * @authur : 마정민 2007. 5. 9
  3154. */
  3155. function getArrayData (pData, pRow, pCol, pRowSep, pColSep ) {
  3156. var pRowSep = (pRowSep == null || pRowSep =="" ? "▩" :pRowSep ); // row 구분자
  3157. var pColSep = (pColSep == null || pColSep =="" ? "▦" :pColSep ); // column 구분자
  3158. var arrRow = pData.split(pRowSep);
  3159. if(arrRow.length <= pRow) return "";
  3160. var arrCol = arrRow[pRow].split(pColSep);
  3161. if(arrCol.length <= pCol) return "";
  3162. return arrCol[pCol];
  3163. }
  3164. /**
  3165. * @desc : 부서에 소속된 의사리스트 조회
  3166. * @param : Ref - 조회조건 instance xPath
  3167. : RsltRef - 데이터결과 instance xPath
  3168. : orddeptcd - 부서코드
  3169. : 추후에 마스터 데이터 작업 이후에 수정될 예정임
  3170. * @return : void
  3171. * @authur : 오지훈 2007. 5. 15
  3172. * @---------------------------------------------------
  3173. */
  3174. function reqGetDrList(ref, rsltRef, orddeptcd, queryflag){
  3175. model.makeValue(ref + "/orddeptcd" , orddeptcd);
  3176. model.makeValue(ref + "/queryflag" , queryflag);
  3177. submit("TRMMO04104", true, ref, rsltRef);
  3178. }
  3179. /**
  3180. * @desc : 부서리스트 조회
  3181. * @param : Ref - request instance xPath
  3182. * : RsltRef - return instance xPath
  3183. * : queryflag - instance에 전체, '-' 추가
  3184. * : dutplceinstcd - 근무지기관코드
  3185. * : dutplceuseyn - 근무지사용여부
  3186. * @return : void
  3187. * @authur : 오지훈 2007. 5. 15
  3188. * @---------------------------------------------------
  3189. */
  3190. function reqGetDeptList(ref, rsltRef, queryflag, dutplceinstcd, dutplceuseyn){
  3191. model.makeValue(ref + "/queryflag", queryflag);
  3192. model.makeValue(ref + "/dutplceinstcd", dutplceinstcd);
  3193. model.makeValue(ref + "/dutplceuseyn", dutplceuseyn);
  3194. submit("TRMMO04103", true, ref, rsltRef);
  3195. }
  3196. /**
  3197. * @desc : 병동리스트 조회
  3198. * @param : Ref - 조회조건 instance xPath
  3199. : RsltRef - 데이터결과 instance xPath
  3200. * @return : void
  3201. * @authur : 오지훈 2007. 5. 15
  3202. * @---------------------------------------------------
  3203. */
  3204. function reqGetWardList(queryflag){
  3205. model.makeValue("root/send/reqdata/queryflag", queryflag);
  3206. submit("TRMMO04106");
  3207. }
  3208. /**
  3209. * @desc : 데이터 한글인지 영문인지 구분해주는 함수
  3210. * @param : pData: 한글여부를 비교할 데이터
  3211. * @return : E: 영문, H: 한글
  3212. * @authur : 마정민 2007. 5. 30
  3213. * @---------------------------------------------------
  3214. */
  3215. function fIsHangul(pData) {
  3216. var sBit = pData.charAt(0);
  3217. if (escape(sBit).length <= 4) return "E";
  3218. return "H";
  3219. }
  3220. /**
  3221. * @desc : 공통 상세보기
  3222. * @param : flag: 상세보기를 호출하는 화면 구분
  3223. * @return : void
  3224. * @authur : 마정민 2007. 6. 12
  3225. * @---------------------------------------------------
  3226. */
  3227. function fIvwDetlVwCom ( grdObj ) {
  3228. var grdLeft = 383;
  3229. var grdWidht = 811;
  3230. var minGrdLeft = 900;
  3231. var minGrdWidht = 290;
  3232. var ivwLeft = 0;
  3233. var ivwWidth = 381;
  3234. var extnIvwLeft = ivwLeft;
  3235. var extnIvwWidth = 900;
  3236. var lineX1 = grdLeft;
  3237. var lineX2 = 1191;
  3238. var minLineX1 = minGrdLeft;
  3239. var minnLineX2 = lineX2;
  3240. var ivwGridWidth = eval ( model.getValue ( "/root/init/grdwd" ));
  3241. var extnIvwGridWidth = eval ( model.getValue ( "/root/init/extngrdwd" ));
  3242. var ivwLineX2 = 380;
  3243. var ivwMinLineX2 = 898;
  3244. var grdnm = model.getValue ( "/root/init/grdnm" );
  3245. var colsize = 100;
  3246. if ( model.getValue( "/root/init/detlvw" ) == "p") {
  3247. if (opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" && !isNull(opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ))){
  3248. opener.grd_prcplist.colHidden(3) = true;
  3249. }
  3250. if (typeof(opener.grd_prcplist) != "unknown" ) {
  3251. opener.grd_prcplist.colHidden(4) = true;
  3252. opener.grd_prcplist.attribute ( "left" ) = minGrdLeft;
  3253. opener.grd_prcplist.attribute ( "width" ) = minGrdWidht;
  3254. }
  3255. if (grdObj == "bf"){
  3256. opener.ivw_prcp3.attribute ( "left" ) = extnIvwLeft;
  3257. opener.ivw_prcp3.attribute ( "width" ) = extnIvwWidth;
  3258. } else {
  3259. opener.ivw_prcp.attribute ( "left" ) = extnIvwLeft;
  3260. opener.ivw_prcp.attribute ( "width" ) = extnIvwWidth;
  3261. }
  3262. if (typeof(opener.line5) != "unknown" ) {
  3263. opener.line5.attribute ( "x1" ) = minLineX1;
  3264. opener.line5.attribute ( "x2" ) = minnLineX2;
  3265. }
  3266. if ( opener.model.getValue ( "/root/cp" ) == "Y" ) {
  3267. opener.ivw_prcp.visible = false;
  3268. if (grdObj == "bf"){
  3269. opener.ivw_prcp3.attribute ( "left" ) = extnIvwLeft;
  3270. opener.ivw_prcp3.attribute ( "width" ) = extnIvwWidth;
  3271. } else {
  3272. opener.ivw_prcp2.attribute ( "left" ) = extnIvwLeft;
  3273. opener.ivw_prcp2.attribute ( "width" ) = extnIvwWidth;
  3274. }
  3275. if (typeof(opener.grd_prcplist) != "unknown" ) {
  3276. opener.grd_prcplist.attribute ( "left" ) = parseInt(minGrdLeft) + 5;
  3277. opener.grd_prcplist.attribute ( "width" ) = parseInt(minGrdWidht) + 10;
  3278. }
  3279. if (typeof(opener.line5) != "unknown" ) {
  3280. opener.line5.attribute ( "x1" ) = parseInt(minLineX1)+5;
  3281. opener.line5.attribute ( "x2" ) = parseInt(minnLineX2)+15;
  3282. }
  3283. }
  3284. model.setValue( "/root/init/detlvw", "m" );
  3285. opener.model.setValue( "/root/init/detlivw", "m" );
  3286. if( document.controls( grdnm ) != null) {
  3287. if (typeof(line8) != "unknown" ) {
  3288. line8.attribute ( "x2" ) = ivwMinLineX2;
  3289. }
  3290. document.controls( grdnm ).attribute ( "width" ) = extnIvwGridWidth;
  3291. if ( grdObj == "bf" ) {
  3292. //20081031 마정민 수정 전처방에 지정일을 추가하면서 상세보기시 word 추가
  3293. for ( var i =1; i <= document.controls( grdnm ).rows ; i++ ){
  3294. document.controls( grdnm ).rowstyle(1, "data", "word-warp") = "word";
  3295. }
  3296. document.controls( grdnm ).colWidth(document.controls( grdnm ).colRef ( "tempcol6" )) = model.getValue ( "/root/init/tempcol6exwd" );
  3297. document.controls( grdnm ).colWidth(document.controls( grdnm ).colRef ( "tempcol7" )) = model.getValue ( "/root/init/tempcol7exwd" );
  3298. //20081031 마정민 수정 전처방에 지정일을 추가하면서 상세보기시 word 추가. word일때는 autoResize = true
  3299. document.controls( grdnm ).autoResize = true ;
  3300. document.controls( grdnm ).rebuild();
  3301. }
  3302. }
  3303. } else {
  3304. if (opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" && !isNull(opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ))){
  3305. opener.grd_prcplist.colHidden(3) = false;
  3306. }
  3307. if (typeof(opener.grd_prcplist) != "unknown" ) {
  3308. opener.grd_prcplist.colHidden(4) = false;
  3309. opener.grd_prcplist.attribute ( "left" ) = grdLeft;
  3310. opener.grd_prcplist.attribute ( "width" ) = grdWidht;
  3311. }
  3312. if (grdObj == "bf"){
  3313. opener.ivw_prcp3.attribute ( "left" ) = ivwLeft;
  3314. opener.ivw_prcp3.attribute ( "width" ) = ivwWidth;
  3315. } else {
  3316. opener.ivw_prcp.attribute ( "left" ) = ivwLeft;
  3317. opener.ivw_prcp.attribute ( "width" ) = ivwWidth;
  3318. }
  3319. if (typeof(opener.line5) != "unknown" ) {
  3320. opener.line5.attribute ( "x1" ) = lineX1;
  3321. opener.line5.attribute ( "x2" ) = lineX2;
  3322. }
  3323. if ( opener.model.getValue ( "/root/cp" ) == "Y" ) {
  3324. opener.ivw_prcp.visible = false;
  3325. if (grdObj == "bf"){
  3326. opener.ivw_prcp3.attribute ( "left" ) = ivwLeft;
  3327. opener.ivw_prcp3.attribute ( "width" ) = ivwWidth;
  3328. } else {
  3329. opener.ivw_prcp2.attribute ( "left" ) = ivwLeft;
  3330. opener.ivw_prcp2.attribute ( "width" ) = ivwWidth;
  3331. }
  3332. if (typeof(opener.grd_prcplist) != "unknown" ) {
  3333. opener.grd_prcplist.attribute ( "left" ) = parseInt(grdLeft) + 2;
  3334. opener.grd_prcplist.attribute ( "width" ) = parseInt(grdWidht) + 7;
  3335. }
  3336. if (typeof(opener.line5) != "unknown" ) {
  3337. opener.line5.attribute ( "x1" ) = parseInt(lineX1)+2;
  3338. opener.line5.attribute ( "x2" ) = parseInt(lineX2)+15;
  3339. }
  3340. }
  3341. model.setValue( "/root/init/detlvw", "p" );
  3342. opener.model.setValue( "/root/init/detlivw", "p" );
  3343. if( document.controls( grdnm ) != null) {
  3344. if (typeof(line8) != "unknown" ) {
  3345. line8.attribute ( "x2" ) = ivwLineX2;
  3346. }
  3347. document.controls( grdnm ).attribute ( "width" ) = ivwGridWidth;
  3348. if ( grdObj == "bf" ) {
  3349. //20081031 마정민 수정 전처방에 지정일을 추가하면서 상세보기시 word 추가. 단 상세보기 취소시 noe으로 바꿈.
  3350. for ( var i =1; i <= document.controls( grdnm ).rows ; i++ ){
  3351. document.controls( grdnm ).rowstyle(1, "data", "word-warp") = "none";
  3352. document.controls( grdnm ).rowHeight(i) ="22" ;
  3353. }
  3354. document.controls( grdnm ).colWidth(document.controls( grdnm ).colRef ( "tempcol6" )) = model.getValue ( "/root/init/tempcol6wd" );
  3355. document.controls( grdnm ).colWidth(document.controls( grdnm ).colRef ( "tempcol7" )) = model.getValue ( "/root/init/tempcol7wd" );
  3356. //20081031 마정민 수정 전처방에 지정일을 추가하면서 상세보기시 word 추가. none일때는 autoResize = false;
  3357. document.controls( grdnm ).autoResize = false ;
  3358. document.controls( grdnm ).rebuild();
  3359. }
  3360. }
  3361. }
  3362. //CP일 경우, viewer안의 컨트롤 height 사이즈를 모두 조정해야 함 (2008.08.28 JJE)
  3363. //전처방 상세보기 모드일 경우 타 버튼 클릭시 전처방 축소시 오류 발생으로 조건 추가(2008.10.21 JJE)
  3364. if ( opener.model.getValue ( "/root/cp" ) == "Y" && grdObj != "bf" ) {
  3365. opener.window.javascript.fResizeControls();
  3366. }
  3367. }
  3368. /**
  3369. * @desc : 두 NodeList와 NodeValue값을 비교 결과에 따라 true, false를 return한다.
  3370. * @param : desNode - 목적노드
  3371. : srcNode - 원본노드
  3372. * @return : true, false
  3373. * @authur : 오지훈 2007. 6. 14
  3374. * @---------------------------------------------------
  3375. */
  3376. function compareNodeVal(desNode, srcNode){
  3377. var node = instance1.selectSingleNode(desNode);
  3378. var node2 = instance1.selectSingleNode(srcNode);
  3379. var nodeList = node.childNodes;
  3380. var nodeList2 = node2.childNodes;
  3381. while(childNode = nodeList.nextNode()){
  3382. childNode2 = nodeList2.nextNode();
  3383. //alert(childNode.NodeValue + "," + childNode2.NodeValue);
  3384. if(childNode.NodeValue != childNode2.NodeValue){
  3385. return true; //값이 다른 경우 true
  3386. }
  3387. }
  3388. return false; //값이 같은 경우 false
  3389. }
  3390. /**
  3391. * @desc : 병실리스트 - 병동에 해당하는 병실코드 조회
  3392. * @param : wardcd - 병동코드
  3393. * @return : void
  3394. * @authur : 오지훈 2007. 6. 14
  3395. */
  3396. function reqGetRoomList(wardcd){
  3397. model.removeNodeset("/root/send/reqdata");
  3398. model.makeValue("/root/send/reqdata/wardcd", wardcd);
  3399. submit("TRMMO04107");
  3400. }
  3401. /**
  3402. * @desc : 환자정보 조회
  3403. * @param : paramFlag - 등록번호/환자명 구분(pid/hngnm)
  3404. * : param - 등록번호/환자명
  3405. : param2 - 외래/입원일자
  3406. * : tblFlag - 테이블구분(환자기본/외래/입원, ptbs/otpt/inpt)
  3407. * @return : void
  3408. * @authur : 오지훈 2007. 6. 14
  3409. */
  3410. function reqPatInfo(paramFlag, tblFlag, param, param2){
  3411. model.removeNodeset("/root/send/reqdata");
  3412. if(paramFlag == "pid"){ //등록번호 검색
  3413. model.makeValue("/root/send/reqdata/pid" , param);
  3414. model.makeValue("/root/send/reqdata/hngnm", "");
  3415. }else if(paramFlag == "hngnm"){ //환자명 검색
  3416. model.makeValue("/root/send/reqdata/pid" , "");
  3417. model.makeValue("/root/send/reqdata/hngnm", param);
  3418. }
  3419. model.makeValue("/root/send/reqdata/orddd" , param2);
  3420. model.makeValue("/root/send/reqdata/queryflag", tblFlag);
  3421. model.makeValue("/root/send/reqdata/srchflag" , paramFlag);
  3422. submit("TRMMO04105");
  3423. var Node = instance1.selectSingleNode("/root/init/patnm/patnm/hngnm");
  3424. if(Node == null && paramFlag == "pid"){
  3425. messageBox("등록번호 [" + param + "] 환자를 찾을 수 ", "I004");
  3426. return false;
  3427. }else if(Node == null && paramFlag == "hngnm"){
  3428. messageBox("환자명 [" + param + "] 환자를 찾을 수 ", "I004");
  3429. return false;
  3430. }
  3431. return true;
  3432. }
  3433. /**
  3434. * @desc : 대체약이 있을경우 팝업처리
  3435. * @param : currow: 대체약을 띄울 팝업
  3436. : flag: 대체약 팝업 flag ( 1:처방복사, 2:대체약일괄변경, 3:대체약폴더내변경 )
  3437. : strSrc: source Node
  3438. * @return : void
  3439. * @authur : 마정민 2007. 6. 21
  3440. */
  3441. function fAltDrug ( currow, flag, strSrc, prcpInptFlag, powdflag ) {
  3442. if (isNull(strSrc)) strSrc = "/root/main/prcp/prcplist";
  3443. var setno = model.getValue ( "/root/hidden/prmsprcpsetinfo/prmsprcpsetlist/setno" );
  3444. var settypecd = model.getValue ( "/root/hidden/prmsprcpsetinfo/prmsprcpsetlist/settypecd" );
  3445. var setkindcd = model.getValue ( "/root/hidden/prmsprcpsetinfo/prmsprcpsetlist/setkindcd" );
  3446. var setclscd = model.getValue ( "/root/hidden/prmsprcpsetinfo/prmsprcpsetlist/setclscd" );
  3447. var settrgtcd = model.getValue ( "/root/hidden/prmsprcpsetinfo/prmsprcpsetlist/settrgtcd" );
  3448. var prcpcd = "";
  3449. var prcpnm = "";
  3450. if ( flag == "child" ) {
  3451. flag = 1;
  3452. //20090528: 6세미만 경구약 자동 powdflag전환 때문에 처방복사시 powdflag 체크로직 추가.
  3453. if ( !isNull(powdflag)) {
  3454. flag = powdflag;
  3455. }
  3456. if ( prcpInptFlag == "01" ) {
  3457. if (typeof(ivw_prcp3) == "object"){
  3458. prcpcd = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  3459. prcpnm = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  3460. }
  3461. } else {
  3462. if (typeof(ivw_prcp) == "object"){
  3463. prcpcd = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  3464. prcpnm = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  3465. }
  3466. }
  3467. }
  3468. if (isNull(prcpcd)) {
  3469. prcpcd = model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  3470. prcpnm = model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  3471. }
  3472. var prcpclscd = model.getValue ( strSrc + "[" + currow + "]/prcpclscd" );
  3473. var erprcpflag = model.getValue ( strSrc + "[" + currow + "]/erprcpflag" );
  3474. var prnprcpflag = model.getValue ( strSrc + "[" + currow + "]/prnprcpflag" );
  3475. var prepprcpflag = model.getValue ( strSrc + "[" + currow + "]/prepprcpflag" );
  3476. var selfdrugflag = model.getValue ( strSrc + "[" + currow + "]/selfdrugflag" );
  3477. var powdflag = model.getValue ( strSrc + "[" + currow + "]/powdflag" );
  3478. var drugspd = model.getValue ( strSrc + "[" + currow + "]/drugspd" );
  3479. var prcpvolunitflag = model.getValue ( strSrc + "[" + currow + "]/prcpvolunitflag" );
  3480. cond1 = prcpcd + "▦" + setno + "▦" + settypecd + "▦" + setkindcd + "▦" + setclscd + "▦" + settrgtcd + "▩";
  3481. cond2 = prcpclscd + "▦" + erprcpflag + "▦" + prnprcpflag + "▦" + prepprcpflag + "▦" + selfdrugflag + "▦" + powdflag + "▦" + drugspd + "▦" + prcpvolunitflag + "▩";
  3482. setParameter ( "SMMMO02300_cond1", cond1 );
  3483. setParameter ( "SMMMO02300_cond2", cond2 );
  3484. setParameter ( "SMMMO02300_cond3", flag );
  3485. setParameter ( "SMMMO02300_cond4", prcpnm );
  3486. fPrcpModal ( "SPMMB10100", "220", "150" );
  3487. clearParameter ( "SMMMO02300_cond1" );
  3488. clearParameter ( "SMMMO02300_cond2" );
  3489. clearParameter ( "SMMMO02300_cond3" );
  3490. clearParameter ( "SMMMO02300_cond4" );
  3491. }
  3492. /**
  3493. * @desc : 화면컬럼 조회 및 설정
  3494. * @param :
  3495. * @return : void
  3496. * @authur : 오지훈 2007. 6. 18
  3497. */
  3498. function initScrnCol(grdObj, scrnID){
  3499. model.removeNodeset("/root/send/reqdata");
  3500. model.makeValue("/root/send/reqdata/scrnid", scrnID);
  3501. submit("TRMMB01103");
  3502. var node = instance1.selectSingleNode("/root/hidden/userscrnenvinfo/gridseq");
  3503. if(node){
  3504. var compscnts = model.getValue("/root/hidden/userscrnenvinfo/gridseq/compscnts");
  3505. var compsrefcnts = model.getValue("/root/hidden/userscrnenvinfo/gridseq/compsrefcnts");
  3506. var compssizecnts = model.getValue("/root/hidden/userscrnenvinfo/gridseq/compssizecnts");
  3507. setScrnEnvEstb(grdObj, compscnts, compsrefcnts, compssizecnts);
  3508. }
  3509. }
  3510. /**
  3511. * @desc : 처방검색
  3512. * @param : prcpnm: 검색할 처방명
  3513. : prcpdd: 처방일자
  3514. : insukind: 보험유형
  3515. : trnm: 트랜젝션 네임
  3516. : ioflag: 외래, 입원, 응급 구분
  3517. : refreshFlag: refresh 여부
  3518. : mthdnm 명
  3519. : containflag : contains사용구분
  3520. * @return : void
  3521. * @authur : 마정민 2007. 6. 21
  3522. */
  3523. function fPrcpSrchCom ( prcpnm, prcpdd, insukind, trnm, ioflag, refreshFlag, mthdnm, isHangul, containflag ) {
  3524. if ( isNull(trnm)) {
  3525. trnm = "TRMMO00100";
  3526. }
  3527. if ( isNull(prcpdd)) {
  3528. prcpdd = getCurrentDate();
  3529. }
  3530. if ( isNull(ioflag)) {
  3531. ioflag = "-";
  3532. }
  3533. if ( isNull(refreshFlag)) {
  3534. refreshFlag = false;
  3535. }
  3536. if ( isNull(mthdnm)) {
  3537. mthdnm = "getPrcpSrchInfo";
  3538. } //getPrcpCdSrchInfo
  3539. //contains사용일 경우, 검색어의 특수기호에 /를 붙인다.
  3540. //ex) high-voltage@avm -> high/-voltage/@avm
  3541. //2008.06.28 오지훈
  3542. model.resetInstanceNode ( "/root/send" );
  3543. if(containflag == true){
  3544. var regular = /[^ A-Za-z0-9]/g;
  3545. var arr = prcpnm.match(regular);
  3546. if(arr != null ){
  3547. for(var i = 0; i <= arr.length-1; i++){
  3548. if (arr[i] != "-" && arr[i] != " " && arr[i] != ".") {
  3549. prcpnm = prcpnm.setReplaceWord( arr[i], "\\".concat(arr[i]) );
  3550. }
  3551. }
  3552. }
  3553. model.setValue("/root/send/cond6", "1");
  3554. }else{
  3555. model.setValue("/root/send/cond6", "2");
  3556. }
  3557. if (ioflag == "" || ioflag == null || ioflag == "undefined" || ioflag == "-") ioflag = getPatientInfoDetail("ioflag");
  3558. model.setValue ( "/root/send/cond1", prcpnm.toUpperCase()); //처방명, 수가코드
  3559. model.setValue ( "/root/send/cond2", ioflag ); //외래, 입원, 응급 구분
  3560. model.setValue ( "/root/send/cond3", prcpdd ); //처방일
  3561. model.setValue ( "/root/send/cond4", insukind ); //환자보험유형
  3562. if ( !isNull( isHangul)) {
  3563. model.setValue ( "/root/send/cond5", isHangul ); //한영구분
  3564. }
  3565. //그리드처방검색일때: 1일때는 첫단어검색, 2일때는 단어검색
  3566. //var srchcond1 = model.getValue ( "/root/prcpsrchcond1" );
  3567. //model.setValue ( "/root/send/cond6", srchcond1 ); //검색조건
  3568. /*20080930 시행부서 건진처방 때문에 추가했으나 시행부서처방에서도 건진처방 건색은 안되야 한다고 해서 주석으로 처리.
  3569. if ( model.getValue ( "/root/addprcp" ) == "Y" || opener.model.getValue ( "/root/addprcp" ) == "Y") {
  3570. model.makeValue ( "/root/send/cond7", "addprcp"); //처방명, 수가코드
  3571. }*/
  3572. model.setValue ( "/root/send/cond99", mthdnm ); //검색구분
  3573. if ( refreshFlag == false ) {
  3574. submit (trnm, false );
  3575. } else {
  3576. submit( trnm );
  3577. }
  3578. }
  3579. /**
  3580. * @desc : 전처방검색
  3581. * @param : pid: 환자ID
  3582. : orddd: 외래:진료일, 입원:입원일
  3583. : prcpdd: 처방일
  3584. : bfflag: 전처방 where 조건 구분자
  3585. : initflag: 최초구분
  3586. : orddrid: 의사ID,외래에서만 필요하다.
  3587. : todd
  3588. : prcpgenrflag: 외래입원구분
  3589. : orddeptcd: 부서코드
  3590. : cretno: 원무생성번호
  3591. : ioflag: 외래, 입원, 응급 구분
  3592. : refreshFlag: refresh 여부
  3593. : followup: 퇴원후 외래처방일과 동일한 처방일이거나 initsrch 와 동일한 날짜가 있을 경우 followdd를 입력한다.
  3594. : bfprcpviewflag : 전처방 조회 조건 개인별 설정기능 추가 by sonjy 20091120
  3595. * @return : void
  3596. * @authur : 마정민 2007. 6. 21
  3597. */
  3598. function fBfPrcpSrchCom ( pid, orddd, prcpdd, bfflag, initflag, orddrid, todd, prcpgenrflag, orddeptcd, cretno, trnm, refreshFlag, prcpauthflag, followup , bfprcpviewflag) {
  3599. if ( isNull(trnm)) {
  3600. trnm = "TRMMO00100";
  3601. }
  3602. if ( isNull(refreshFlag)) {
  3603. refreshFlag = false;
  3604. }
  3605. if ( isNull(prcpauthflag)) {
  3606. prcpauthflag = "0";
  3607. }
  3608. var curprcpdd = opener.model.getValue ( "/root/init/prcpdd" );
  3609. if (isNull(curprcpdd)) {
  3610. curprcpdd = model.getValue ( "/root/init/prcpdd" );
  3611. if (isNull(curprcpdd)){
  3612. curprcpdd = getCurrentDate();
  3613. }
  3614. }
  3615. var oprsrvno = "";
  3616. if (!isNull(opener.model.getValue ( "/root/operation/list/oprsrvno"))) {
  3617. orddd = opener.model.getValue ( "/root/operation/list/oprsrvno");
  3618. if (opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) == "O"){
  3619. prcpgenrflag = "OUTOP";
  3620. } else {
  3621. prcpgenrflag = "OP";
  3622. }
  3623. } else if (!isNull(model.getValue ( "/root/operation/list/oprsrvno"))) {
  3624. orddd = model.getValue ( "/root/operation/list/oprsrvno");
  3625. if (model.getValue ( "/root/patflag/list/prcpgenrflag" ) == "O"){
  3626. prcpgenrflag = "OUTOP";
  3627. } else {
  3628. prcpgenrflag = "OP";
  3629. }
  3630. }
  3631. model.setValue ( "/root/send/cond1", pid); //환자ID
  3632. model.setValue ( "/root/send/cond2", orddd ); //외래:진료일, 입원:입원일
  3633. model.setValue ( "/root/send/cond3", prcpauthflag ); //처방권한 구분
  3634. model.setValue ( "/root/send/cond4", prcpdd ); //처방일자
  3635. model.setValue ( "/root/send/cond5", bfflag ); //전처방 where 조건 구분자
  3636. model.setValue ( "/root/send/cond6", initflag ); //최초구분
  3637. model.setValue ( "/root/send/cond7", orddrid); //의사ID,외래에서만 필요하다.
  3638. model.setValue ( "/root/send/cond8", todd); //todd
  3639. model.setValue ( "/root/send/cond9", prcpgenrflag ); //외래입원구분
  3640. model.setValue ( "/root/send/cond10", orddeptcd ); //부서코드
  3641. model.setValue ( "/root/send/cond11", cretno ); //생성번호
  3642. model.makeValue( "/root/send/cond14", curprcpdd );
  3643. if (!isNull(followup)){
  3644. model.makeValue( "/root/send/cond12", "followup" ); //외래follow up
  3645. }
  3646. var insukind = opener.model.getValue ( "/root/paminfo/list/insukind");
  3647. if (isNull(insukind)) insukind = model.getValue ( "/root/paminfo/list/insukind");
  3648. if (!isNull(insukind)){
  3649. model.makeValue( "/root/send/cond13", insukind ); //외래follow up
  3650. }
  3651. model.setValue ( "/root/send/cond99", "getBfPrcpSrchInfo" );//검색구분
  3652. //by sonjy 전처방 조회모드 설정 20091120
  3653. if( bfflag == "bfprcp" || bfflag == "addprcp" ){
  3654. if(!isNull(bfprcpviewflag) ) model.makeValue( "/root/send/bfprcpviewflag",bfprcpviewflag);
  3655. }
  3656. if ( refreshFlag == false ) {
  3657. if(!submit (trnm, false )) {
  3658. return false;
  3659. } else {
  3660. return true;
  3661. }
  3662. } else {
  3663. if (!submit( trnm )) {
  3664. return false;
  3665. } else {
  3666. return true;
  3667. }
  3668. }
  3669. //CP일 경우, viewer안의 컨트롤 height 사이즈를 모두 조정해야 함 (2008.08.28 JJE)
  3670. if ( opener.model.getValue ( "/root/cp" ) == "Y" ) {
  3671. opener.window.javascript.fResizeControls();
  3672. }
  3673. }
  3674. /**
  3675. * @desc : 약속처방에 등록 가능한지 check
  3676. * @param : usge: 저장화면
  3677. : prcpkindcd: 처방분류
  3678. : prcpnm: 처방명
  3679. * @return : true, false
  3680. * @authur : 마정민 2007. 6. 22
  3681. */
  3682. function fPrmsSaveCheck ( usge, prcpkindcd, prcpnm ) {
  3683. //약속처방, 지시처방에서는 HSCT 처방을 등록할 수 없다.
  3684. if ( prcpkindcd == "04" && usge == "prms" ) {
  3685. messageBox ( "약속처방에는 [" + prcpnm +"] HSCT 처방을 등록", "E001" );
  3686. return false;
  3687. } else if ( prcpkindcd == "04" && usge == "direc" ) {
  3688. messageBox ( "지시처방에는 [" + prcpnm +"] HSCT 처방을 등록", "E001" );
  3689. return false;
  3690. }
  3691. return true;
  3692. }
  3693. /**
  3694. * @desc : 팝업위치가 저장되지 않는 팝업 띄우기
  3695. * @param : screenId: 화면 ID
  3696. : argxpt : x좌표
  3697. : argypt : y좌표
  3698. * @return : void
  3699. * @authur : 마정민 2007. 6. 29
  3700. */
  3701. function fPrcpModal ( screenId, argxpt, argypt ) {
  3702. var xpt = window.screenleft + eval(argxpt);
  3703. var ypt = window.screenTop + eval(argypt);
  3704. var coord = getRelativeCoordinate ( xpt, ypt );
  3705. var mon = coord[0];
  3706. xpt = coord[1];
  3707. ypt = coord[2];
  3708. modal (screenId, mon, xpt, ypt, screenId, "", "", "", false);
  3709. }
  3710. /**
  3711. * @desc : 팝업위치가 저장되지 않는 팝업 모달 띄우기
  3712. * @param : screenId: 화면 ID
  3713. : argxpt : x좌표
  3714. : argypt : y좌표
  3715. * @return : void
  3716. * @authur : 문세희 2008. 9. 25
  3717. */
  3718. function fPrcpOpen ( screenId, argxpt, argypt ) {
  3719. var xpt = window.screenleft + eval(argxpt);
  3720. var ypt = window.screenTop + eval(argypt);
  3721. var coord = getRelativeCoordinate ( xpt, ypt );
  3722. var mon = coord[0];
  3723. xpt = coord[1];
  3724. ypt = coord[2];
  3725. open (screenId, mon, xpt, ypt, screenId, "", "", "", false);
  3726. }
  3727. /**
  3728. * @desc : 노드리스트를 CSV로 반환한다.
  3729. * @param : nodeList
  3730. : headerFlag : header 정보 필요유무
  3731. * @return : void
  3732. * @authur : 마정민 2007. 6. 30
  3733. */
  3734. function getPrcpNodeListCSV(nodeList, headerFlag ) {
  3735. if( nodeList.length == 0 )
  3736. return "";
  3737. var sColSep = "▦";
  3738. var sRowSep = "▩";
  3739. var rCSV = "";
  3740. var childNodeList = nodeList.item(0).childNodes;
  3741. var childNodeCnt = childNodeList.length;
  3742. if( childNodeCnt == 0 )
  3743. return "";
  3744. var i, j;
  3745. if ( headerFlag != "N" ) {
  3746. for( i = 0; i < childNodeCnt - 1; i++) {
  3747. rCSV += childNodeList.item(i).nodeName + sColSep;
  3748. }
  3749. rCSV += childNodeList.item(i).nodeName + sRowSep;
  3750. }
  3751. var node;
  3752. while( node = nodeList.nextNode() ) {
  3753. childNodeList = node.childNodes;
  3754. for( i = 0; i < childNodeCnt - 1; i++) {
  3755. rCSV += childNodeList.item(i).text + sColSep;
  3756. }
  3757. rCSV += childNodeList.item(i).text + sRowSep;
  3758. }
  3759. return rCSV;
  3760. }
  3761. /**
  3762. * @desc : 수술방 조회(combo 설정)
  3763. * @param : opschedd - 수술예약일자
  3764. * : queryflag - Query구분자(day : 일자, total : 전체, detl :부서, 의사, 일자 )
  3765. * @return :
  3766. * @authur : 오지훈 2007. 6. 30
  3767. */
  3768. function reqOpRoomList(opschedd, desRef, queryflag, perfdeptcd, perfdrid){
  3769. var resultRef = "/root/hidden/mmo/oproomlist";
  3770. model.makeNode(resultRef);
  3771. model.removeNodeset("/root/send/reqdata");
  3772. model.makeValue("/root/send/reqdata/opschedd" , opschedd);
  3773. model.makeValue("/root/send/reqdata/queryflag", queryflag);
  3774. if(queryflag == "detl"){
  3775. model.makeValue("/root/send/reqdata/perfdeptcd", perfdeptcd);
  3776. model.makeValue("/root/send/reqdata/perfdrid" , perfdrid);
  3777. }
  3778. var rtnval = submit("TRMMO05704", false, "/root/send/reqdata", resultRef);
  3779. if(rtnval == true){
  3780. copyNodeType(desRef, resultRef, "replace");
  3781. }
  3782. }
  3783. /**
  3784. * @desc : 그리드 data 엑셀화일로 저장
  3785. * @
  3786. * @param :
  3787. * @event :
  3788. * @return :
  3789. * @---------------------------------------------------
  3790. */
  3791. function saveGridToExcel(grdObj){
  3792. var fileName = window.fileDialog("save", ",", false, "excel", "xls", "Excel Files(*.xls)|*.xls|All Files (*.*)|*.*");
  3793. if (fileName != ""){
  3794. grdObj.saveExcel(fileName, "SheetName", true, true, "", "", true);
  3795. }
  3796. }
  3797. /**
  3798. * @desc : 콤보박스에 원하는 instance node와 value를 설정
  3799. * @
  3800. * @param :
  3801. * @event :
  3802. * @return :
  3803. * @---------------------------------------------------
  3804. */
  3805. function addComboInstance(combopath, nodename, nodeval, parentnode){
  3806. var xmlNode = model.instances(0).selectSingleNode(combopath + "/" + parentnode);
  3807. if(xmlNode == null){
  3808. return;
  3809. }
  3810. nodename = nodename.split("^");
  3811. nodeval = nodeval.split("^");
  3812. if(nodename.length != nodeval.length){
  3813. return;
  3814. }
  3815. var label = model.instances(0).createElement(nodename[0]);
  3816. var val = model.instances(0).createElement(nodename[1]);
  3817. var combo = model.instances(0).createElement(parentnode);
  3818. label.value = "" + nodeval[0] + "";
  3819. val.value = "" + nodeval[1] + "";
  3820. combo.appendChild(label);
  3821. combo.appendChild(val);
  3822. chkNode = model.instances(0).selectSingleNode(combopath);
  3823. if(chkNode == null){
  3824. model.makeNode(combopath);
  3825. srcNode = model.instances(0).selectSingleNode(combopath);
  3826. }else{
  3827. srcNode = model.instances(0).selectSingleNode(combopath);
  3828. }
  3829. desNode = model.instances(0).selectSingleNode(combopath + "/" + parentnode);
  3830. srcNode.insertBefore(combo, desNode);
  3831. model.refresh();
  3832. }
  3833. /**
  3834. * @desc : 콤보박스에 원하는 instance node와 value를 설정
  3835. * @
  3836. * @param : signbfcnts: sign할 데이터
  3837. : signid: sign 할 유저의 id
  3838. : signopt: false 로그인후 한번만 띄움, true: 매번띄움
  3839. : setnode: sign 데이터를 setValue 할 인스턴스 값이 있을 때만 함
  3840. * @event :
  3841. * @return :
  3842. * @---------------------------------------------------
  3843. */
  3844. function fSaveSign ( signbfcnts, signid, signopt, setnode ) {
  3845. var v_stext = "";
  3846. if ( !isNull( signbfcnts )) {
  3847. if (signopt) {
  3848. v_stext = zesfSignData( signbfcnts, signid, signopt );
  3849. } else {
  3850. v_stext = zesfSignData( signbfcnts, signid );
  3851. }
  3852. if ( isNull(v_stext)) {
  3853. return ""; //값이 없을 때는 return 함
  3854. }
  3855. } else {
  3856. return "N"; //인증할 데이터가 없을 때는 N 으로 return
  3857. }
  3858. if ( !isNull (setnode)) { //setnode가 있을경우 setvalue
  3859. model.setValue ( setnode, v_stext );
  3860. }
  3861. return v_stext;
  3862. }
  3863. function fPrcpExecDeptSrch(flag) {
  3864. var prcpcd = model.getValue ( "/root/main/prcp/prcplist/prcpcd" );
  3865. var prcpdd = opener.model.getValue ( "/root/init/prcpdd" );
  3866. if ( isNull(prcpdd)) {
  3867. prcpdd = model.getValue ( "/root/init/prcpdd" );
  3868. if (isNull(prcpdd)) {
  3869. prcpdd = getCurrentDate();
  3870. }
  3871. }
  3872. model.makeValue("/root/send/cond1" , prcpcd);
  3873. model.makeValue("/root/send/cond2" , prcpdd);
  3874. model.makeValue("/root/send/cond3" , flag);
  3875. //KNUH_20110208, 주희경, 진료 속도 개선을 위해 로그인 시 미리 데이터를 조회해 놓고 copy해서 쓰는 방식으로 변경
  3876. //flag가 all이면 이미 조회 해 놓은 데이터 카피
  3877. if ( flag == "all" )
  3878. {
  3879. model.makeNode("/root/orddept");
  3880. var viewerObj = getViewer("sysMessage");
  3881. var srcNodes = viewerObj.window.instance1.selectNodes(gvOrderBasicInfoPath + "/dept");
  3882. var targetNodes = instance1.selectSingleNode("/root/orddept");
  3883. if ( srcNodes.length > 0 )
  3884. {
  3885. for(i=0; i<srcNodes.length; i++)
  3886. {
  3887. targetNodes.appendChild(srcNodes.item(i));
  3888. }
  3889. }
  3890. else //KNUH_20110208, 주희경 복사할 데이터가 없을 시 (비정상 로딩) 강제 로그아웃
  3891. {
  3892. messageBox("현재 프로그램 배포로 인해 진료에 필요한 데이터를 재조회 해야합니다. 죄송하지만 반드시 다시 로그인 해주시기 바랍니다.", "");
  3893. if(submit("TRMMO00116")){
  3894. return true;
  3895. }else{
  3896. return false;
  3897. }
  3898. }
  3899. }
  3900. //all이 아니면 해당 데이터 조회
  3901. else
  3902. {
  3903. if(submit("TRMMO00116")){
  3904. return true;
  3905. }else{
  3906. return false;
  3907. }
  3908. }
  3909. /*
  3910. if(submit("TRMMO00116")){
  3911. return true;
  3912. }else{
  3913. return false;
  3914. }*/
  3915. }
  3916. function fPrcpColor(flag) {
  3917. var rowcolor = "";
  3918. var errcolor = "";
  3919. //처방화면에 색을 칠한다.
  3920. if ( flag == "child"){
  3921. for ( var i=1; i<= opener.grd_prcplist.rows; i++ ) {
  3922. errcolor = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol9" );
  3923. if (!isNull(errcolor)) {
  3924. rowcolor = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol9" );
  3925. } else {
  3926. rowcolor = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol10" );
  3927. if (isNull(rowcolor)) {
  3928. rowcolor = "transparent";
  3929. }
  3930. }
  3931. opener.grd_prcplist.rowstyle(i, "data", "background-color") = rowcolor;
  3932. }
  3933. } else {
  3934. for ( var i=1; i<= grd_prcplist.rows; i++ ) {
  3935. errcolor = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol9" );
  3936. if (!isNull(errcolor)) {
  3937. rowcolor = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol9" );
  3938. } else {
  3939. rowcolor = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol10" );
  3940. if (isNull(rowcolor)) {
  3941. rowcolor = "transparent";
  3942. }
  3943. }
  3944. grd_prcplist.rowstyle(i, "data", "background-color") = rowcolor;
  3945. }
  3946. }
  3947. }
  3948. /**
  3949. * @desc : 감염관리 환자 여부를 확인, 직원감염노출사고 보고서 open
  3950. * @
  3951. * @param :
  3952. * @return :
  3953. * @author : 오지훈
  3954. * @---------------------------------------------------
  3955. */
  3956. function fReqInFecPatList(rgstno, rgstno2){
  3957. model.removeNodeset("/root/send/reqdata");
  3958. model.makeValue("/root/send/reqdata/rgstno" , rgstno);
  3959. model.makeValue("/root/send/reqdata/rgstno2", rgstno2);
  3960. if(submit("TRMMO04108")==true){
  3961. var pflag = model.getValue("/root/main/infecpatlist/infecpatlist/pflag");
  3962. if(pflag == "Y"){
  3963. var infecojb = getOpenWindow("SMASI01000");
  3964. if(infecojb != null){infecojb.javascript.fClose();} //현재 직원감염노출사고 보고서가 있는 경우, close후, 다시 open
  3965. setParameter("sFlag", "P");
  3966. open("SMASI01000");
  3967. }
  3968. }
  3969. }
  3970. /**
  3971. * @desc : EMR부서콤보 조회
  3972. * @
  3973. * @param : ref - reference path
  3974. * rsltref - result reference path
  3975. * orddeptflag- 진료과구분
  3976. * @return :
  3977. * @author : 오지훈
  3978. * @---------------------------------------------------
  3979. */
  3980. function mmbfGetDeptCodeComboList(ref, rsltref, orddeptflag, stnddd){
  3981. var mmb_rsltref = "/root/hidden/mmb/orddept";
  3982. model.removeNode(mmb_rsltref);
  3983. model.makeNode(mmb_rsltref);
  3984. if(stnddd != null && stnddd != "" && stnddd != "undefined" && stnddd.length == 8) { // 기준일자를 입력하는경우 DB에서 신규로 조회 하도록 수정. 2014.04.03 엄영만
  3985. model.removeNode(ref);
  3986. model.makeValue(ref + "/orddeptflag", orddeptflag);
  3987. model.makeValue(ref + "/stnddd", stnddd);
  3988. submit("TRMMB04101", "false", ref, mmb_rsltref);
  3989. } else { // 기준일자가 없는경우 KNUH_20110208, 진료속도개선 수정, TRMMB04101 submit을 안하고 로그인시 가져온 데이터를 copy하는것으로 변경, 주희경
  3990. var srcref = "";
  3991. if ( orddeptflag == "A" || orddeptflag == "" || orddeptflag == null){
  3992. srcref = gvOrderBasicInfoPath + "/alldeptinfo";
  3993. } else if ( orddeptflag == "C"){
  3994. srcref = gvOrderBasicInfoPath + "/centdeptinfo";
  3995. } else if ( orddeptflag == "D"){
  3996. srcref = gvOrderBasicInfoPath + "/dscdeptinfo";
  3997. } else if ( orddeptflag == "W"){
  3998. srcref = gvOrderBasicInfoPath + "/warddeptinfo";
  3999. } else if ( orddeptflag == "O"){
  4000. srcref = gvOrderBasicInfoPath + "/otptdeptinfo";
  4001. } else if ( orddeptflag == "I"){
  4002. srcref = gvOrderBasicInfoPath + "/inptdeptinfo";
  4003. } else if ( orddeptflag == "T" ){
  4004. srcref= gvOrderBasicInfoPath + "/deptinfoinall";
  4005. }
  4006. var viewerObj = getViewer("sysMessage");
  4007. var targetNodes = instance1.selectSingleNode(mmb_rsltref);
  4008. var srcNodes = viewerObj.window.instance1.selectNodes(srcref);
  4009. if ( srcNodes.length > 0 ) { // 복사할 원본 데이터가 존재하면 복사
  4010. for(i=0; i<srcNodes.length; i++){
  4011. var newNode = srcNodes.item(i).cloneNode(true);
  4012. newNode.nodeName = "dept";
  4013. targetNodes.appendChild(newNode);
  4014. }
  4015. } else { //KNUH_20110208, 주희경 복사할 데이터가 없을 시 (비정상 로딩) 강제 로그아웃
  4016. messageBox("현재 프로그램 배포로 인해 진료에 필요한 데이터를 재조회 해야합니다. 죄송하지만 반드시 다시 로그인 해주시기 바랍니다.", "");
  4017. model.removeNode(ref);
  4018. model.makeValue(ref + "/orddeptflag", orddeptflag);
  4019. submit("TRMMB04101", "false", ref, mmb_rsltref);
  4020. }
  4021. }
  4022. model.copyNode(rsltref, mmb_rsltref);
  4023. model.removeNode(mmb_rsltref);
  4024. model.refresh();
  4025. }
  4026. /**
  4027. * @desc : EMR사용자콤보 조회
  4028. * @
  4029. * @param : ref - reference path
  4030. * rsltref - result reference path
  4031. * deptcd - 부서코드
  4032. * jobkindcd - 직종코드
  4033. * jobposcd - 직책코드
  4034. * specordyn - 선택진료여부
  4035. * drflag - 의사구분, 가상사용자 제외
  4036. * nmdispflag - 이름뒤에 특진(Y)표시 할것인지 구분
  4037. * jobflag - 주치의 담당의 조회기준 (JobKindCD, JobPoscd)
  4038. * specdrlist - 선택진료 의사 모두 조회한다.
  4039. * @return :
  4040. * @author : 오지훈
  4041. * @---------------------------------------------------
  4042. */
  4043. function mmbfGetUserComboList(ref, rsltref, deptcd, jobkindcd, specordyn, drflag, standd, nmdispflag, jobflag, specdrchk){
  4044. var mmb_rsltref = "/root/hidden/mmb/userlist";
  4045. model.removeNode(mmb_rsltref);
  4046. model.makeNode(mmb_rsltref);
  4047. model.removeNode(ref);
  4048. model.makeValue(ref + "/deptcd" , deptcd); //부서코드
  4049. model.makeValue(ref + "/jobkindcd", jobkindcd); //직종코드(의사:0330)
  4050. model.makeValue(ref + "/specordyn", specordyn); //선택진료여부
  4051. model.makeValue(ref + "/drflag" , drflag); //주치의, 담당의 구분(M : 주치의 , A:담당의, T:전체 )
  4052. model.makeValue(ref + "/standd" , standd); //조회기준일자
  4053. model.makeValue(ref + "/jobflag" , jobflag); //JobKindcd
  4054. model.makeValue(ref + "/specdrchk" , specdrchk); //진료과조건 제외
  4055. if(nmdispflag == "")
  4056. model.makeValue(ref + "/nmdispflag" , "N"); //조회기준일자
  4057. else
  4058. model.makeValue(ref + "/nmdispflag" , nmdispflag); //조회기준일자
  4059. if(submit("TRMMB04102", "false", ref, mmb_rsltref)==true){
  4060. model.copyNode(rsltref, mmb_rsltref);
  4061. model.removeNode(mmb_rsltref);
  4062. }
  4063. model.refresh();
  4064. }
  4065. /**
  4066. * @desc : 하드코드 조회
  4067. * @
  4068. * @param : ref - reference path
  4069. * rsltref - result reference path
  4070. * hardcd - 하드코드
  4071. * @return :
  4072. * @author : 오지훈
  4073. * @---------------------------------------------------
  4074. */
  4075. function reqHardCodeInfo(ref, rsltref, hardcd){
  4076. //KNUH_20110208, 진료속도개선 위해 로그인 시 미리 조회 해 놓은 데이터 복사, 주희경
  4077. fGetHardCDList("N", hardcd, 0, rsltref);
  4078. /*
  4079. var mmb_rsltref = "/root/hidden/mmb/hardcd";
  4080. model.removeNode(mmb_rsltref);
  4081. model.makeNode(mmb_rsltref);
  4082. model.removeNode(ref);
  4083. model.makeValue(ref + "/hardcd", hardcd);
  4084. if(submit("TRMMB04103", "false", ref, mmb_rsltref)==true){
  4085. model.copyNode(rsltref, mmb_rsltref);
  4086. model.removeNode(mmb_rsltref);
  4087. }
  4088. */
  4089. model.refresh();
  4090. }
  4091. /**
  4092. * @desc : 약주사 원내처방 사유 체크
  4093. * @
  4094. * @param : objFlag
  4095. * strDest - 검색노드
  4096. * @return :
  4097. * @author : 마정민
  4098. * @---------------------------------------------------
  4099. */
  4100. function fHosinPrcpResnChk ( objFlag, strDest ) {
  4101. //약주사 원내처방사유 체크
  4102. var prcpclscdchkA2 = "";
  4103. var prcpclscdchkA4 = "";
  4104. var prcpclscdchkA6 = "";
  4105. var prcpclscd = "";
  4106. //SON0919 G3아닌 응급퇴원약 원내외 처리 부분 BY SONJY 20080917 start
  4107. var prcpgenrflag = "";
  4108. var prcpkindcd = "";
  4109. var erflag = "";
  4110. //SON0919 end
  4111. //SON0930 약제원/내외구분 O/I Setting값이 있는 경우 모든 사유처리에서 제외하도록.
  4112. var hosinflag = "";
  4113. var drugmastspec = "";
  4114. if ( objFlag == "child") {
  4115. prcpgenrflag = opener.model.getValue ("/root/patflag/list/prcpgenrflag");
  4116. if( (prcpgenrflag == "E" && opener.model.getValue ( "/root/init/erresn" ) != "G3") || prcpgenrflag == "D" ){ //SON0919 G3아닌 응급퇴원약 원내외 처리 부분 BY SONJY 20080917 start
  4117. erflag = "Y";
  4118. }
  4119. if ( opener.model.getValue ("/root/usge") == "prcp" && (prcpgenrflag =="O" || erflag == "Y" ) ) { //SON0919 G3아닌 응급퇴원약 원내외 처리 부분 BY SONJY
  4120. var srcNodeList;
  4121. if( erflag == "Y") { //원내처방사유가 45 SON0919 start
  4122. srcNodeList = opener.model.instances(0).selectNodes ( strDest + "/prcplist[prcpkindcd='60' and hosinprcpresncd='45']" );
  4123. } else {
  4124. srcNodeList = opener.model.instances(0).selectNodes ( strDest + "/prcplist[hosinprcpresncd='45']" );
  4125. }//SON0919 end
  4126. var prcpclscdNodeValue = "";
  4127. for(var i = 0; i < srcNodeList.length; i++) {
  4128. drugmastspec = srcNodeList.item(i).drugmastspec.value;
  4129. hosinflag = getArrayData ( drugmastspec + "^", 0, 11 , "^", "|" );
  4130. if( hosinflag == "O" ) continue ; //SON0930 start 원외전용약은 예외
  4131. prcpclscdNodeValue = srcNodeList.item(i).prcpclscd.value;
  4132. if ( prcpclscdNodeValue == "A2" ) {
  4133. prcpclscdchkA2 = "A2"
  4134. } else if ( prcpclscdNodeValue == "A4" ){
  4135. prcpclscdchkA4 = "A4"
  4136. } else if ( prcpclscdNodeValue == "A6" ){
  4137. prcpclscdchkA6 = "A6"
  4138. }
  4139. }
  4140. if ( !isNull(prcpclscdchkA2) || !isNull(prcpclscdchkA4) || !isNull(prcpclscdchkA6) ) { //값이 있으면
  4141. var destNodeList = opener.model.instances(0).selectNodes( strDest + "/prcplist" ); //처방화면에 넘어온 것을 모두 찾아서
  4142. for ( var i=1; i <= destNodeList.length; i++ ) { // 처방건별처리
  4143. prcpclscd = opener.model.getValue ( strDest + "/prcplist[" + i + "]/prcpclscd");
  4144. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ; //sonjy 20081012 약/주사일때만 check
  4145. prcpkindcd = opener.model.getValue ( strDest + "/prcplist[" + i + "]/prcpkindcd");
  4146. if( erflag == "Y" && prcpkindcd != "60" ){ //응급 G3가 아니고 퇴원처방이 아닌경우 응급원내사유로 원복
  4147. opener.model.setValue ( strDest + "/prcplist[" + i + "]/hosinhosoutflag", "I" );
  4148. opener.model.setValue ( strDest + "/prcplist[" + i + "]/hosinprcpresncd", model.getValue ( "/root/init/hosinprcpresncd") );
  4149. continue ;
  4150. }
  4151. drugmastspec = opener.model.getValue ( strDest + "/prcplist[" + i + "]/drugmastspec");
  4152. hosinflag = getArrayData ( drugmastspec + "^", 0, 11, "^", "|" );
  4153. if ( prcpclscd != "A6" && hosinflag != "O" ) { //주사제는 예외 , 기본 원외인것도 예외 SON0930
  4154. if ( prcpclscdchkA2 == prcpclscd || prcpclscdchkA4 == prcpclscd || prcpclscdchkA6 == prcpclscd ) {
  4155. var hosinprcpresncd = opener.model.getValue ( strDest + "/prcplist[" + i + "]/hosinprcpresncd");
  4156. if ( hosinprcpresncd != "45" && hosinprcpresncd != "47" && hosinprcpresncd != "57" && hosinprcpresncd != "55" ) { //45, 47이 아니면, 55는 MSET
  4157. opener.model.setValue ( strDest + "/prcplist[" + i + "]/hosinhosoutflag", "I" );
  4158. opener.model.setValue ( strDest + "/prcplist[" + i + "]/hosinprcpresncd", "57" );
  4159. }
  4160. }
  4161. }
  4162. } // End of 처방건별처리
  4163. }// End of 값이 있으면
  4164. } // End of 처방화면에서 외래이고
  4165. } else {
  4166. prcpgenrflag = model.getValue ("/root/patflag/list/prcpgenrflag"); //SON1123 DSC 퇴원처방 처리 by sonjy 20081123
  4167. if( (prcpgenrflag == "E" && model.getValue ( "/root/init/erresn" ) != "G3" ) || prcpgenrflag == "D" ){
  4168. erflag = "Y";
  4169. }
  4170. if ( model.getValue ("/root/usge") == "prcp" && ( prcpgenrflag =="O" || erflag == "Y" ) ) { //처방화면에서 외래이고
  4171. var srcNodeList;
  4172. if( erflag == "Y") { //원내처방사유가 45 SON0919 start
  4173. srcNodeList = model.instances(0).selectNodes ( strDest + "/prcplist[prcpkindcd='60' and hosinprcpresncd='45']" );
  4174. } else {
  4175. srcNodeList = model.instances(0).selectNodes ( strDest + "/prcplist[hosinprcpresncd='45']" );
  4176. }//SON0919 end
  4177. var prcpclscdNodeValue = "";
  4178. for(var i = 0; i < srcNodeList.length; i++) {
  4179. drugmastspec = srcNodeList.item(i).drugmastspec.value;
  4180. hosinflag = getArrayData ( drugmastspec + "^", 0, 11, "^", "|" );
  4181. if( hosinflag == "O" ) continue ; //SON0930 start 원외전용약은 예외
  4182. prcpclscdNodeValue = srcNodeList.item(i).prcpclscd.value;
  4183. if ( prcpclscdNodeValue == "A2" ) {
  4184. prcpclscdchkA2 = "A2"
  4185. } else if ( prcpclscdNodeValue == "A4" ){
  4186. prcpclscdchkA4 = "A4"
  4187. } else if ( prcpclscdNodeValue == "A6" ){
  4188. prcpclscdchkA6 = "A6"
  4189. }
  4190. }
  4191. if ( !isNull(prcpclscdchkA2) || !isNull(prcpclscdchkA4) || !isNull(prcpclscdchkA6) ) { //값이 있으면
  4192. var destNodeList = opener.model.instances(0).selectNodes( strDest + "/prcplist" ); //처방화면에 넘어온 것을 모두 찾아서
  4193. for ( var i=1; i <= destNodeList.length; i++ ) { // 처방건별처리
  4194. prcpclscd = model.getValue ( strDest + "/prcplist[" + i + "]/prcpclscd");
  4195. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ; //sonjy 20081012 약/주사일때만 check
  4196. prcpkindcd = model.getValue ( strDest + "/prcplist[" + i + "]/prcpkindcd"); //SON0919 start
  4197. if( erflag == "Y" && prcpkindcd != "60" ) {
  4198. model.setValue ( strDest + "/prcplist[" + i + "]/hosinhosoutflag", "I" );
  4199. model.setValue ( strDest + "/prcplist[" + i + "]/hosinprcpresncd", model.getValue ( "/root/init/hosinprcpresncd") );
  4200. continue ;
  4201. } //SON0919 end
  4202. drugmastspec = model.getValue ( strDest + "/prcplist[" + i + "]/drugmastspec");
  4203. hosinflag = getArrayData ( drugmastspec + "^", 0, 11, "^", "|" );
  4204. if ( prcpclscd != "A6" && hosinflag != "O" ) { //주사제는 예외 20080930원외전용약은 예외
  4205. if ( prcpclscdchkA2 == prcpclscd || prcpclscdchkA4 == prcpclscd || prcpclscdchkA6 == prcpclscd ) {
  4206. var hosinprcpresncd = model.getValue ( strDest + "/prcplist[" + i + "]/hosinprcpresncd");
  4207. if ( hosinprcpresncd != "45" && hosinprcpresncd != "47" && hosinprcpresncd != "57" && hosinprcpresncd != "55" ) { //45, 47이 아니면, 55는 MSET
  4208. model.setValue ( strDest + "/prcplist[" + i + "]/hosinhosoutflag", "I" );
  4209. model.setValue ( strDest + "/prcplist[" + i + "]/hosinprcpresncd", "57" ); //같은 분류 코드가 있으면 57로 박아준다.
  4210. }
  4211. }
  4212. }
  4213. } // End of 처방건별처리
  4214. } // End of 값이 있으면
  4215. } // End of 처방화면에서 외래이고
  4216. }
  4217. }
  4218. function fHosinPrcpResncdSed ( objFlag, strSrc, sendRow, strSelResn ) {
  4219. //2007-12-13 윤영옥 선생님과 대화
  4220. //종속이 최우선 => 원내처방사유 => 약, 주사
  4221. var prcpgenrflag = "";
  4222. var hosinprcpresncd = "";
  4223. var prcpkindcd = "";
  4224. //SON0919 응급퇴원처방 원내사유 관련 추가 by sonjy start
  4225. var erflag = "";
  4226. var erprcpkindcd = "";
  4227. //SON0919 end
  4228. //SON0930
  4229. var hosinflag = "";
  4230. var drugmastspec = "";
  4231. var iFind = -1;
  4232. var prcpclscd = "";
  4233. var wardcd = "";
  4234. if ( objFlag == "child" ) {
  4235. prcpgenrflag = opener.model.getValue ( "/root/patflag/list/prcpgenrflag" );
  4236. prcpclscd = opener.model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) ;
  4237. prcpkindcd = opener.model.getValue ("/root/init/prcpkindcd");
  4238. erprcpkindcd = opener.model.getValue ( strSrc + "[" + sendRow + "]/prcpkindcd" );
  4239. if( isNull(erprcpkindcd) || erprcpkindcd == "" ) erprcpkindcd = prcpkindcd ;
  4240. if (isNull(strSelResn) || strSelResn == ""){
  4241. if( prcpgenrflag == "E" && erprcpkindcd == "60" && opener.model.getValue ( "/root/init/erresn" ) != "G3") {
  4242. hosinprcpresncd = "00"; // 응급실 G3가 아닌 환자의 퇴원 처방을 원외로 설정 되게 하기 위해 2013.03.27 엄영만
  4243. } else {
  4244. hosinprcpresncd = opener.model.getValue("/root/init/hosinprcpresncd"); //원무의 원내사유 체크
  4245. }
  4246. } else {
  4247. hosinprcpresncd = strSelResn;
  4248. }
  4249. if(prcpgenrflag == "O" || prcpgenrflag == "S"){
  4250. wardcd = "";
  4251. } else {
  4252. wardcd = opener.model.getValue("/root/paminfo/list/wardcd");
  4253. }
  4254. // DSC(일일수술실 2360800000 원외로 되도록 2012.06.11 엄영만)
  4255. if( erprcpkindcd == "60" &&
  4256. ( (prcpgenrflag == "E" && opener.model.getValue ( "/root/init/erresn" ) != "G3")
  4257. || (prcpgenrflag == "D" && wardcd == "2360800000") )) {
  4258. erflag = "Y" ;
  4259. }
  4260. } else {
  4261. prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  4262. prcpclscd = model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) ;
  4263. prcpkindcd = model.getValue ("/root/init/prcpkindcd");
  4264. erprcpkindcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpkindcd" );
  4265. if( isNull(erprcpkindcd) || erprcpkindcd == "" ) erprcpkindcd = prcpkindcd ;
  4266. if (isNull(strSelResn) || strSelResn == ""){
  4267. if( prcpgenrflag == "E" && erprcpkindcd == "60" && model.getValue ( "/root/init/erresn" ) != "G3") {
  4268. hosinprcpresncd = "00"; // 응급실 G3가 아닌 환자의 퇴원 처방을 원외로 설정 되게 하기 위해 2013.03.27 엄영만
  4269. } else {
  4270. hosinprcpresncd = model.getValue("/root/init/hosinprcpresncd"); //원무의 원내사유 체크
  4271. }
  4272. } else {
  4273. hosinprcpresncd = strSelResn;
  4274. }
  4275. if(prcpgenrflag == "O" || prcpgenrflag == "S"){
  4276. wardcd = "";
  4277. } else {
  4278. wardcd = model.getValue("/root/paminfo/list/wardcd");
  4279. }
  4280. // DSC(일일수술실 2360800000 원외로 되도록 2012.06.11 엄영만) 퇴원처방 처리
  4281. if( erprcpkindcd == "60" &&
  4282. ( (prcpgenrflag == "E" && model.getValue ( "/root/init/erresn" ) != "G3")
  4283. || (prcpgenrflag == "D" && wardcd == "2360800000") )) {
  4284. erflag = "Y" ;//SON0919
  4285. }
  4286. }
  4287. /* 종속 원내처방사유 55: 검사, 수술, 처치에 사용하는 의약품
  4288. 마약 45: 조제실제제,임상시험의약품,마약,방사성의약품,투석액,희귀의약품
  4289. 항암 47: 6세이하의 소아에게 투약하는 항암제(경구) */
  4290. /****************************** 원내처방 사유코드 처리 *******************************/
  4291. if ( prcpgenrflag == "O" || erflag == "Y" ) { //SON0919 외래이거나 g3아닌 응급퇴원처방, DSC(일일수술실 2360800000) 퇴원처방 인 경우
  4292. if( objFlag == "child" ) {
  4293. drugmastspec = opener.model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^";
  4294. hosinflag = getArrayData ( drugmastspec , 0, 11 , "^", "|" ); //SON0930 start 원외전용약은 예외
  4295. //********************* 투석원내처방사유처리 **************************//
  4296. var prcpcd = opener.model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" );
  4297. if( hosinflag != "O" ){
  4298. iFind = opener.model.getValue ( "/root/initsrch/prcpetccnts/dialhospinoutcd" ).search( prcpcd );
  4299. }
  4300. if ( iFind >= 0 && erflag != "Y") { //SON0919
  4301. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4302. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "19" );
  4303. var message = "원내지정이 가능한 처방입니다. 전체 약제를 원내로 하시려면 [예], 해당약제만 원내처방하시려면 [아니오]를 선택해주십시오.";
  4304. if (messageBox ( message, "Q" ) == "6" ) {
  4305. opener.model.setValue( "/root/init/hosinprcpresncd", "19" );
  4306. opener.cmb_hosinprcpresn.refresh();
  4307. opener.cmb_hosinprcpresn.dispatch ( "xforms-value-changed" );
  4308. }
  4309. model.setValue ( "/root/initsrch/prcpetccnts/dialhospinoutcd", "" );
  4310. //********************* 투석원내처방사유처리끝 ************************//
  4311. } else {
  4312. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) return ; //약/주사가 아니면 return 20081012
  4313. drugmastspec = opener.model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^";
  4314. var drugmastHosinprcpresncd = getArrayData ( drugmastspec, 0, 12, "^", "|" ); //약품마스터에 있는 원내처방 사유코드 처리
  4315. if( opener.model.getValue ( strSrc + "[" + sendRow + "]/inclprcpno") != "0" ){ //종속처방 처리 추가 by sonjy 2008-09-16
  4316. drugmastHosinprcpresncd = "55";
  4317. drugmastHosinhosoutflag = "I" ;
  4318. }
  4319. if ( drugmastHosinprcpresncd != "00" ) { //SON0826 주사제와 선처치, mset은 환자원내사유에 우선한다.
  4320. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4321. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", drugmastHosinprcpresncd );
  4322. } else {
  4323. if ( hosinprcpresncd != "00" ) { // 환자원내처방사유
  4324. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4325. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", hosinprcpresncd );
  4326. } else {
  4327. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "O" );
  4328. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "00" );
  4329. }
  4330. }
  4331. }
  4332. } else {
  4333. drugmastspec = model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^";
  4334. hosinflag = getArrayData ( drugmastspec , 0, 11 , "^", "|" ); //SON0930 start 원외전용약은 예외
  4335. //********************* 투석원내처방사유처리 **************************//
  4336. var prcpcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" );
  4337. if( hosinflag != "O" ){
  4338. iFind = model.getValue ( "/root/initsrch/prcpetccnts/dialhospinoutcd" ).search( prcpcd );
  4339. }
  4340. if ( iFind >= 0 && erflag != "Y") { //SON0919
  4341. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4342. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "19" );
  4343. var message = "원내지정이 가능한 처방입니다. 전체 약제를 원내로 하시려면 [예], 해당약제만 원내처방하시려면 [아니오]를 선택해주십시오.";
  4344. if (messageBox ( message, "Q" ) == "6" ) {
  4345. model.setValue( "/root/init/hosinprcpresncd", "19" );
  4346. cmb_hosinprcpresn.refresh();
  4347. cmb_hosinprcpresn.dispatch ( "xforms-value-changed" );
  4348. }
  4349. model.setValue ( "/root/initsrch/prcpetccnts/dialhospinoutcd", "" );
  4350. //********************* 투석원내처방사유처리끝 ************************//
  4351. } else {
  4352. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) return ; //약/주사가 아니면 return 20081012
  4353. drugmastspec = model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^"; //약품마스터에 있는 원내외 처리
  4354. var drugmastHosinprcpresncd = getArrayData ( drugmastspec, 0, 12, "^", "|" ); //약품마스터에 있는 원내처방 사유코드 처리
  4355. if( model.getValue ( strSrc + "[" + sendRow + "]/inclprcpno") != "0" ){ //종속처방 처리 추가 by sonjy 2008-09-16
  4356. drugmastHosinprcpresncd = "55";
  4357. drugmastHosinhosoutflag = "I" ;
  4358. }
  4359. if ( drugmastHosinprcpresncd != "00" ) { //SON0826 주사제와 선처치, mset은 환자원내사유에 우선한다.
  4360. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4361. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", drugmastHosinprcpresncd );
  4362. } else {
  4363. if ( hosinprcpresncd != "00") { // 환자원내처방사유 적용
  4364. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4365. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", hosinprcpresncd );
  4366. } else {
  4367. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "O" );
  4368. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "00" );
  4369. }
  4370. }
  4371. }
  4372. }
  4373. } else if ( prcpgenrflag == "E" ) {
  4374. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) return;
  4375. if( objFlag == "child") {
  4376. if ( erprcpkindcd == "60" && hosinprcpresncd == "00") { // 퇴원약 환자원내처방사유 적용
  4377. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "O" );
  4378. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "00" );
  4379. } else {
  4380. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4381. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", hosinprcpresncd );
  4382. }
  4383. } else {
  4384. if ( erprcpkindcd == "60" && hosinprcpresncd == "00") { // 퇴원약 환자원내처방사유 적용
  4385. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "O" );
  4386. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "00" );
  4387. } else {
  4388. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4389. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", hosinprcpresncd );
  4390. }
  4391. }
  4392. } else { //입원, DSC
  4393. if( objFlag == "child") {
  4394. // 3120400000 화학요법실, 3120900000 항암주사실 퇴원약 처방시 원내 예외 사유 설정. "주사제와 같이 투여 하는 경우" 2012.06.11 엄영만
  4395. if ( prcpgenrflag == "D" && erprcpkindcd == "60" && (wardcd == "3120900000" || wardcd == "3120400000")) {
  4396. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4397. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "52" );
  4398. } else {
  4399. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4400. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "00" );
  4401. }
  4402. } else {
  4403. // 3120400000 화학요법실, 3120900000 항암주사실 퇴원약 처방시 원내 예외 사유 설정. "주사제와 같이 투여 하는 경우" 2012.06.11 엄영만
  4404. if (prcpgenrflag == "D" && erprcpkindcd == "60" && (wardcd == "3120900000" || wardcd == "3120400000")) {
  4405. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4406. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "52" );
  4407. } else {
  4408. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4409. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "00" );
  4410. }
  4411. }
  4412. }
  4413. }
  4414. /**
  4415. * @desc : 환자에 해당되는 원내처방사유인지 체크
  4416. * @
  4417. * @param :
  4418. *
  4419. * @return : void
  4420. * @author : 마정민
  4421. * @---------------------------------------------------
  4422. */
  4423. function fPamHosinPrcpResnCdChk ( hosinprcpresncd, objFlag ) {
  4424. var cdnm = "";
  4425. if ( objFlag == "child" ) {
  4426. cdnm = opener.model.getValue ( "/root/init/hosinprcpresncd/P0034[cdid='" + hosinprcpresncd + "']/cdnm" );
  4427. } else {
  4428. cdnm = model.getValue ( "/root/init/hosinprcpresncd/P0034[cdid='" + hosinprcpresncd + "']/cdnm" );
  4429. }
  4430. if (!isNull(cdnm)){
  4431. return true;
  4432. } else {
  4433. //return false;
  4434. if( hosinprcpresncd == "52" || hosinprcpresncd == "55" ) return false ; //SON0826 선처치/주사제는 환자사유에 우선한다.
  4435. else return true ;
  4436. }
  4437. }
  4438. function fPrcpExecIssDeptCdSet ( strSrc, sendRow ) {
  4439. //발행처
  4440. if ( model.getValue ( "/root/addprcp" ) == "Y" ){
  4441. var issdept = model.getValue ( "/root/init/issdept" );
  4442. if ( isNull(issdept)) {
  4443. issdept = getUserInfo( "dutplcecd" );
  4444. }
  4445. model.setValue ( strSrc + "[" + sendRow + "]/issdeptcd", issdept );
  4446. } else {
  4447. var issdept = model.getValue ("/root/issdept");
  4448. if ( isNull(issdept)) {
  4449. issdept = getUserInfo( "dutplcecd" );
  4450. }
  4451. model.setValue ( strSrc + "[" + sendRow + "]/issdeptcd", issdept );
  4452. }
  4453. // 응급실 발행부서 관련 셋팅. 응급실 환자의 경우 센서스에 등록되어 있는 부서코드로 발행부서를 셋팅해준다.2012.04.24 엄영만
  4454. var prcpgenrflag = model.getValue( strSrc + "[" + sendRow + "]/prcpgenrflag");
  4455. var erissdeptcd = model.getValue("/root/paminfo/list/erissdeptcd");
  4456. if (prcpgenrflag == "E" && issdept == "2280200000" && !isNull(erissdeptcd) && erissdeptcd != "-") {
  4457. model.setValue ( strSrc + "[" + sendRow + "]/issdeptcd", erissdeptcd );
  4458. }
  4459. //과내검사 수가코드인 경우는 orddeptcd를 넣어준다. 구현중...
  4460. /*iFind = -1;
  4461. iFind = model.getValue ( "/root/initsrch/prcpetccnts/precureprcpcd" ).search( chkprcpcd + "D" );
  4462. if ( iFind >= 0) {
  4463. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd", orddeptcd );
  4464. }*/
  4465. }
  4466. /**
  4467. * @desc : 원내처방사유변경
  4468. * @
  4469. * @param :
  4470. * @return :
  4471. * @author : 마정민
  4472. * @---------------------------------------------------
  4473. * @ objFlag 추가 by sonjy
  4474. */
  4475. function fChngHosinPrcpResn(objFlag , strSelResn) {
  4476. var hosinprcpresncd = "";
  4477. var prcpclscd = "";
  4478. //SON0919 응급 퇴원약 원내사유 처리 by sonjy start
  4479. //SON1123 DSC 퇴원처방 처리 by sonjy 20081123
  4480. var prcpkindcd = "";
  4481. var erflag = "";
  4482. var erresn = ""; // G3
  4483. var prcpgenrflag = "";
  4484. //SON0930 약제원내외구분 우선 적용
  4485. var hosinflag = "";
  4486. var drugmastspec = "";
  4487. if( objFlag == "child" ) {
  4488. hosinprcpresncd = opener.model.getValue ( "/root/init/hosinprcpresncd" );
  4489. erresn = opener.model.getValue ( "/root/init/erresn" );
  4490. prcpgenrflag = opener.model.getValue ( "/root/patflag/list/prcpgenrflag" );
  4491. } else {
  4492. hosinprcpresncd = model.getValue ( "/root/init/hosinprcpresncd" );
  4493. erresn = model.getValue ( "/root/init/erresn" );
  4494. prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  4495. }
  4496. if( prcpgenrflag == "I" ){ return; }
  4497. if ( (prcpgenrflag == "E" && erresn != "G3") || prcpgenrflag == "D" ) {
  4498. erflag = "Y" ;//SON0919
  4499. }
  4500. if ( hosinprcpresncd != "00") { // 환자별 처방 사유가 존재 할 경우
  4501. if( objFlag == "child" ) {
  4502. for ( var i = 1; i < opener.grd_prcplist.rows; i++ ) { // 처방 건별 처리
  4503. prcpclscd = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpclscd" );
  4504. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ;
  4505. prcpkindcd = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpkindcd" );
  4506. drugmastspec = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/drugmastspec" ) + "^";
  4507. hosinflag = getArrayData ( drugmastspec , 0, 11, "^", "|" );
  4508. if( erflag == "Y" && prcpkindcd == "60" ) { // 응급 DSC 퇴원약 원내사유 처리
  4509. fHosinPrcpResncdSed ( objFlag , "/root/main/prcp/prcplist", i, strSelResn );
  4510. } else if ( prcpgenrflag == "E" || prcpgenrflag == "D" ){ // 응급, DSC
  4511. if( prcpgenrflag == "D" ) {
  4512. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4513. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd","00");
  4514. } else {
  4515. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4516. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd",hosinprcpresncd);
  4517. }
  4518. } else { // 그외 외래
  4519. prcphosinprcpresncd = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd" );
  4520. if (hosinflag != "O" && fPamHosinPrcpResnCdChk (prcphosinprcpresncd, objFlag)) { //환자원내처방사유만 적용
  4521. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4522. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd",hosinprcpresncd);
  4523. }
  4524. }
  4525. } // End of 처방 건별 처리
  4526. } else {
  4527. for ( var i = 1; i < grd_prcplist.rows; i++ ) { // 처방 건별 처리
  4528. prcpclscd = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpclscd" );
  4529. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ;
  4530. prcpkindcd = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpkindcd" );
  4531. drugmastspec = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/drugmastspec" ) + "^";
  4532. hosinflag = getArrayData ( drugmastspec , 0, 11, "^", "|" );
  4533. if( erflag == "Y" && prcpkindcd == "60" ) { // 응급 DSC 퇴원약 원내사유 처리
  4534. fHosinPrcpResncdSed ( objFlag, "/root/main/prcp/prcplist", i, strSelResn ); //SON0826 원복시 기존 약제사유로 원복.
  4535. } else if ( prcpgenrflag == "E" || prcpgenrflag == "D" ){ // 응급, DSC
  4536. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4537. if( prcpgenrflag == "D" ) {
  4538. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4539. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd","00");
  4540. } else {
  4541. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4542. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd",hosinprcpresncd);
  4543. }
  4544. } else { // 그외 외래
  4545. prcphosinprcpresncd = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd" );
  4546. if (hosinflag != "O" && fPamHosinPrcpResnCdChk (prcphosinprcpresncd, objFlag)) { //환자원내처방사유만 적용
  4547. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4548. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd",hosinprcpresncd);
  4549. }
  4550. }
  4551. } // End of 처방 건별 처리
  4552. }
  4553. if( erflag == "Y" ) fHosinPrcpResnChk ( objFlag, "/root/main/prcp" ); //SON0919 원복시 기존 약제사유로 원복 후 동시투여 약제처리....
  4554. } else { // 환자별 처방 사유가 없을 경우
  4555. if( objFlag == "child" ) {
  4556. for ( var i = 1; i < opener.grd_prcplist.rows; i++ ) {
  4557. prcpclscd = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpclscd" );
  4558. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ;
  4559. //SON0919 응급 퇴원약 원내사유 처리 by sonjy start
  4560. prcpkindcd = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpkindcd" );
  4561. if( erflag == "Y" && prcpkindcd == "60" ) {
  4562. fHosinPrcpResncdSed ( objFlag , "/root/main/prcp/prcplist", i, strSelResn );
  4563. } else if ( prcpgenrflag == "E" || prcpgenrflag == "D" ){ //SON1123 DSC퇴원처방 처리
  4564. if( prcpgenrflag == "D" ) {
  4565. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4566. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd","00");
  4567. } else {
  4568. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4569. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd",hosinprcpresncd);
  4570. }
  4571. } else { // 그외 외래
  4572. if(opener.model.getValue("/root/main/prcp/prcplist[" + i + "]/prcphistcd" ) == "T" && opener.model.getValue("/root/main/prcp/prcplist[" + i + "]/drprcpetc9" ) != "-") { // 사전심사 임시저장인경우 제외 2015.09.08 엄영만
  4573. continue;
  4574. }
  4575. prcphosinprcpresncd = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd" );
  4576. if (fPamHosinPrcpResnCdChk (prcphosinprcpresncd , objFlag)) { //환자원내처방사유만 적용
  4577. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","O");
  4578. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd","00");
  4579. fHosinPrcpResncdSed (objFlag , "/root/main/prcp/prcplist", i ); //SON0826 원복시 기존 약제사유로 원복.
  4580. }
  4581. }
  4582. } // End of 처방 건별 처리
  4583. } else {
  4584. for ( var i = 1; i < grd_prcplist.rows; i++ ) {
  4585. prcpclscd = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpclscd" );
  4586. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ;
  4587. //SON0919 응급 퇴원약 원내사유 처리 by sonjy start
  4588. prcpkindcd = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpkindcd" );
  4589. if( erflag == "Y" && prcpkindcd == "60" ) {
  4590. fHosinPrcpResncdSed ( objFlag, "/root/main/prcp/prcplist", i, strSelResn );
  4591. } else if ( prcpgenrflag == "E" || prcpgenrflag == "D" ){ //SON1123 DSC퇴원처방 처리
  4592. if( prcpgenrflag == "D" ) {
  4593. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4594. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd","00");
  4595. } else {
  4596. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4597. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd",hosinprcpresncd);
  4598. }
  4599. } else { // 그외 외래
  4600. if(model.getValue("/root/main/prcp/prcplist[" + i + "]/prcphistcd" ) == "T" && model.getValue("/root/main/prcp/prcplist[" + i + "]/drprcpetc9" ) != "-") { // 사전심사 임시저장인경우 제외 2015.09.08 엄영만
  4601. continue;
  4602. }
  4603. prcphosinprcpresncd = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd" );
  4604. if (fPamHosinPrcpResnCdChk (prcphosinprcpresncd, objFlag)) { //환자원내처방사유만 적용
  4605. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","O");
  4606. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd","00");
  4607. fHosinPrcpResncdSed ( objFlag, "/root/main/prcp/prcplist", i ); //SON0826 원복시 기존 약제사유로 원복.
  4608. }
  4609. }
  4610. }// End of 처방 건별 처리
  4611. }
  4612. fHosinPrcpResnChk ( objFlag, "/root/main/prcp" ); //SON0826 원복시 기존 약제사유로 원복 후 동시투여 약제처리....
  4613. }
  4614. if( objFlag == "child"){
  4615. opener.model.setValue ( "/root/paminfo/list/hosoutexptresncd" , hosinprcpresncd );
  4616. } else {
  4617. model.setValue ( "/root/paminfo/list/hosoutexptresncd" , hosinprcpresncd );
  4618. }
  4619. }
  4620. function fBundlePrcpDD(status){
  4621. var prcpgenrflag = opener.model.getValue("/root/patflag/list/prcpgenrflag");
  4622. if(prcpgenrflag != "O"){
  4623. messageBox("지정일은 외래가 아니면 사용", "E001");
  4624. return;
  4625. }
  4626. var prcpdd = opener.model.getValue("/root/paminfo/list/orddd");
  4627. var reqparam = getCurrentDate() + "▩";
  4628. setParameter("paramcalflag", "multi");
  4629. setParameter("defaultday" , prcpdd);
  4630. setParameter("reqparam" , reqparam);
  4631. fPrcpModal("SPMMO10600", 20, 50);
  4632. var actordddArray = getParameter("rtn").split("▩");
  4633. var contprcpspec = "status|actorddd|execprcpstatcd|prcpdd|execprcpno";
  4634. for(var i = 0; i < actordddArray.length; i++){
  4635. var actorddd = actordddArray[i];
  4636. contprcpspec = contprcpspec + "^" + status + "|" + actorddd + "|" + "" + "|" + prcpdd + "|" + "";
  4637. }
  4638. var rtnval = "";
  4639. var contprcpspecArray = contprcpspec.split("^");
  4640. for(var i = 1; i < contprcpspecArray.length; i++){
  4641. var tmp = contprcpspecArray[i].split("|");
  4642. rtnval = rtnval + tmp[1] + ",";
  4643. }
  4644. rtnval = rtnval.substring(0, rtnval.length-1);
  4645. if(actordddArray.length == 1 && actorddd == prcpdd){
  4646. model.setValue("/root/main/prcp/prcplist/contprcpspec", "-");
  4647. }else{
  4648. model.setValue("/root/main/prcp/prcplist/contprcpspec", contprcpspec);
  4649. }
  4650. model.setValue("/root/main/prcp/prcplist/prcpdayno", actordddArray.length);
  4651. model.setValue("/root/init/contprcpspec", rtnval);
  4652. model.refresh();
  4653. }
  4654. /**
  4655. * @desc : NodeList sorting
  4656. * : node 구조를 변경하며 정렬을 수행
  4657. * @
  4658. * @param :
  4659. * @return :
  4660. * @author : 오지훈
  4661. * @---------------------------------------------------
  4662. */
  4663. function nodeListSort( nodeset, trgRef, mode ){
  4664. var nodesetCnt = model.getXPathValue("count(" + nodeset + ")");
  4665. if(nodesetCnt == 0) return;
  4666. var tmpVal1, tmpVal2;
  4667. var tmpIndx;
  4668. for(var i = 1; i <= nodesetCnt; i++){
  4669. for(var j = i + 1 ; j <= nodesetCnt; j++){
  4670. tmpVal1 = model.getValue(nodeset + "[" + i + "]/" + trgRef);
  4671. tmpVal2 = model.getValue(nodeset + "[" + j + "]/" + trgRef);
  4672. if(isNumber(tmpVal1)==true){tmpVal1 = Number(tmpVal1);}
  4673. if(isNumber(tmpVal2)==true){tmpVal2 = Number(tmpVal2);}
  4674. if(mode == "desc"){
  4675. if(tmpVal1 < tmpVal2){
  4676. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + j + "]", "*[" + i + "]");
  4677. model.removenode(nodeset + "[" + (j + 1) + "]");
  4678. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + (i + 1) + "]", "*[" + j + "]");
  4679. model.removenode(nodeset + "[" + (i + 1) + "]");
  4680. }
  4681. }else if(mode == "asc"){
  4682. if(tmpVal1 > tmpVal2){
  4683. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + j + "]", "*[" + i + "]");
  4684. model.removenode(nodeset + "[" + (j + 1) + "]");
  4685. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + (i + 1) + "]", "*[" + j + "]");
  4686. model.removenode(nodeset + "[" + (i + 1) + "]");
  4687. }
  4688. }
  4689. }
  4690. }
  4691. }
  4692. /**
  4693. * @desc : 협진분류콤보조회 조회
  4694. * @
  4695. * @param :
  4696. * @return :
  4697. * @author : 오지훈
  4698. * @---------------------------------------------------
  4699. */
  4700. function mmofReqGetCnstTypeComboList(ref, rsltref, orddeptcd){
  4701. var mmo_rsltref = "/root/hidden/mmo/cnsttypecombo";
  4702. model.removeNodeset(mmo_rsltref);
  4703. model.makeNode(mmo_rsltref);
  4704. model.removeNode(ref);
  4705. model.makeValue(ref + "/orddeptcd", orddeptcd);
  4706. if(submit("TRMMO03602", "false", ref, mmo_rsltref)==true){
  4707. model.copyNode(rsltref, mmo_rsltref);
  4708. model.removeNodeset(mmo_rsltref);
  4709. }
  4710. model.refresh();
  4711. }
  4712. /*
  4713. function mmbfPrcpGrdSort( nodeset, mode ){
  4714. var nodesetCnt = model.getXPathValue("count(" + nodeset + ")");
  4715. if(nodesetCnt == 0) return;
  4716. var tmpVal1, tmpVal2;
  4717. var tmpIndx;
  4718. for(var i = 1; i <= nodesetCnt; i++){
  4719. for(var j = i + 1 ; j <= nodesetCnt; j++){
  4720. tmpVal1 = model.getValue(nodeset + "[" + i + "]/prcpclscd") || model.getValue(nodeset + "[" + i + "]/prcpcd");
  4721. tmpVal2 = model.getValue(nodeset + "[" + j + "]/prcpclscd") || model.getValue(nodeset + "[" + j + "]/prcpcd");
  4722. if(mode == "desc"){
  4723. if(tmpVal1 < tmpVal2){
  4724. if(model.getValue(nodeset + "[" + i + "]/status") == 'I') {
  4725. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + j + "]", "*[" + i + "]");
  4726. model.removenode(nodeset + "[" + (j + 1) + "]");
  4727. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + (i + 1) + "]", "*[" + j + "]");
  4728. model.removenode(nodeset + "[" + (i + 1) + "]");
  4729. }
  4730. }
  4731. } else if(mode == "asc"){
  4732. if(tmpVal1 > tmpVal2){
  4733. if(model.getValue(nodeset + "[" + i + "]/status") == 'I') {
  4734. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + j + "]", "*[" + i + "]");
  4735. model.removenode(nodeset + "[" + (j + 1) + "]");
  4736. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + (i + 1) + "]", "*[" + j + "]");
  4737. model.removenode(nodeset + "[" + (i + 1) + "]");
  4738. }
  4739. }
  4740. }
  4741. }
  4742. }
  4743. }*/
  4744. function fAltPrcpCd( currow, flag, strSrc, prcpInptFlag ) {
  4745. var prcpcd = "";
  4746. var prcpnm = "";
  4747. var altcdinfo = "";
  4748. if ( flag == "child" ) {
  4749. if ( prcpInptFlag == "01" ) {
  4750. prcpcd = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  4751. prcpnm = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  4752. altcdinfo = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/tempcol16" );
  4753. } else {
  4754. prcpcd = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  4755. prcpnm = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  4756. altcdinfo = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/tempcol16" );
  4757. }
  4758. } else {
  4759. prcpcd = model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  4760. prcpnm = model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  4761. altcdinfo = model.getValue ( strSrc + "[" + currow + "]/tempcol16" );
  4762. }
  4763. setParameter ( "SPMMO15400_cond1", prcpcd ); //원래처방코드
  4764. setParameter ( "SPMMO15400_cond2", prcpnm ); //처방명
  4765. setParameter ( "SPMMO15400_cond3", altcdinfo ); //대체처방코드
  4766. modal ( "SPMMO15400" );
  4767. clearParameter ( "SPMMO15400_cond1" ); //원래처방코드
  4768. clearParameter ( "SPMMO15400_cond2" ); //처방명
  4769. clearParameter ( "SPMMO15400_cond3" ); //대체처방코드
  4770. return 0;
  4771. }
  4772. /**
  4773. * @desc : 항생제이면서 제한항생자가 아니면 항생제처리
  4774. *
  4775. * @
  4776. * @param :
  4777. * @return :
  4778. * @author : 마정민
  4779. * @---------------------------------------------------
  4780. */
  4781. function fAntiMicChk( currow, flag, strSrc, prcpInptFlag ) {
  4782. //20080725 마정민추가. 항생제이면서 제한항생자가 아니면 항생제처리
  4783. var prcpcd = "";
  4784. var drugmastspec = "";
  4785. var pid = "";
  4786. var prcpdd = "";
  4787. //CP는 CDSS항생제 체크 skip임. (2008.09.29 JJE)
  4788. if( model.getValue("/root/cp") == "Y" ){
  4789. return 1;
  4790. }
  4791. if ( flag == "child" ) {
  4792. if ( prcpInptFlag == "01" ) {
  4793. prcpcd = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  4794. } else {
  4795. prcpcd = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  4796. }
  4797. } else {
  4798. prcpcd = model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  4799. }
  4800. prcpdd = model.getValue ( "/root/init/prcpdd" );
  4801. pid = model.getvalue ( "/root/paminfo/list/pid" );
  4802. model.setValue ( "/root/send/cond1", pid );
  4803. model.setValue ( "/root/send/cond2", prcpcd );
  4804. model.setValue ( "/root/send/cond3", prcpdd );
  4805. if (submit ( "TRMMO01609" )){
  4806. /*var chkAntibio = "20"; // 항생제 antibiotics(20), 제한항생제 restantimic(10) 따로 구분 후 저장 - by Moonsh 20081013
  4807. var getAntibio = model.getValue ( "/root/result/antibiotics/antibioticsinfo" );
  4808. var srchAntibio = getAntibio.split("|");
  4809. if (srchAntibio[1] == "20"){
  4810. chkAntibio = "20";
  4811. } else {
  4812. chkAntibio = "10";
  4813. setParameter ( "SPMMMD00700_chkday", srchAntibio[9] ); //체크일 추가 요청 - by Moonsh 20081021
  4814. }*/
  4815. if (model.getValue ( "/root/result/antibiotics/popyn" )=="Y") {
  4816. // 항생제 검색어 초기화
  4817. var prcplistcnt = grd_prcplist.rows - 1;
  4818. var prcpcd = model.getValue ( "/root/main/prcp/prcplist[" + prcplistcnt + "]/prcpcd" );
  4819. var prcpnm = model.getValue ( "/root/main/prcp/prcplist[" + prcplistcnt + "]/prcpnm" );
  4820. if (prcpcd != "" && prcpnm == "") {
  4821. model.setValue ( "/root/main/prcp/prcplist[" + prcplistcnt + "]/prcpcd", "" );
  4822. }
  4823. fPrcpModal("SPMMD01600", 20, 50);
  4824. return 0;
  4825. } else {
  4826. if ( flag == "child" ) {
  4827. if ( prcpInptFlag == "01" ) {
  4828. ivw_prcp3.model.setValue ( strSrc + "[" + currow + "]/tempcol8", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4829. /*if ( chkAntibio == "20") {
  4830. ivw_prcp3.model.setValue ( strSrc + "[" + currow + "]/tempcol8", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4831. } else {
  4832. ivw_prcp3.model.setValue ( strSrc + "[" + currow + "]/tempcol7", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4833. }*/
  4834. } else {
  4835. ivw_prcp.model.setValue ( strSrc + "[" + currow + "]/tempcol8", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4836. /*if ( chkAntibio == "20") {
  4837. ivw_prcp.model.setValue ( strSrc + "[" + currow + "]/tempcol8", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4838. } else {
  4839. ivw_prcp.model.setValue ( strSrc + "[" + currow + "]/tempcol7", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4840. }*/
  4841. }
  4842. } else {
  4843. model.setValue ( strSrc + "[" + currow + "]/tempcol8", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4844. /*if ( chkAntibio == "20") {
  4845. model.setValue ( strSrc + "[" + currow + "]/tempcol8", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4846. } else{
  4847. model.setValue ( strSrc + "[" + currow + "]/tempcol7", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4848. }*/
  4849. }
  4850. return 1;
  4851. }
  4852. }
  4853. }
  4854. /**
  4855. * @desc : EMR진료 기록지 조정
  4856. * modal로 화면에 숨겨진 팝업을 띄운다. 여러화면 동시에 open되어, submit간의 충돌을 방지한다.
  4857. * @
  4858. * @param : scrnid : 화면ID
  4859. * @return :
  4860. * @author : 오지훈
  4861. * @---------------------------------------------------
  4862. */
  4863. function mmbfOpenEmrWnd(scrnid){
  4864. setParameter("SPMMB08400_scrnid", scrnid);
  4865. modal("SPMMB08400", 1, 0, 0, "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  4866. return true;
  4867. }
  4868. /**
  4869. * @desc : 하드코드 조회
  4870. * @
  4871. * @param : ref - reference path
  4872. * rsltref - result reference path
  4873. * hardcd - 하드코드
  4874. * @return :
  4875. * @author : 오지훈
  4876. * @---------------------------------------------------
  4877. */
  4878. function mmbfGetHardCodeInfo(ref, rsltref, hardcd){
  4879. //KNUH_20110208, 진료속도개선 위해 로그인 시 미리 조회 해 놓은 데이터 복사, 주희경
  4880. fGetHardCDList("N", hardcd, 0, rsltref);
  4881. /*
  4882. var mmb_rsltref = "/root/hidden/mmb/hardcd";
  4883. model.removeNode(mmb_rsltref);
  4884. model.makeNode(mmb_rsltref);
  4885. model.removeNode(ref);
  4886. model.makeValue(ref + "/hardcd", hardcd);
  4887. if(submit("TRMMB04103", "false", ref, mmb_rsltref)==true){
  4888. model.copyNode(rsltref, mmb_rsltref);
  4889. model.removeNode(mmb_rsltref);
  4890. }
  4891. */
  4892. model.refresh();
  4893. }
  4894. /**
  4895. * @desc : 하드코드 조회 (하드코드, 하드코드명)
  4896. * @
  4897. * @param : ref - reference path
  4898. * rsltref - result reference path
  4899. * hardcd - 하드코드
  4900. * @return :
  4901. * @author : 오지훈
  4902. * @---------------------------------------------------
  4903. */
  4904. function mmbfGetHardCodeInfoNm(ref, rsltref, hardcd){
  4905. var mmb_rsltref = "/root/hidden/mmb/hardcd";
  4906. model.removeNode(mmb_rsltref);
  4907. model.makeNode(mmb_rsltref);
  4908. model.removeNode(ref);
  4909. model.makeValue(ref + "/hardcd", hardcd);
  4910. if(submit("TRMMB04105", "false", ref, mmb_rsltref)==true){
  4911. model.copyNode(rsltref, mmb_rsltref);
  4912. model.removeNode(mmb_rsltref);
  4913. }
  4914. model.refresh();
  4915. }
  4916. /**
  4917. * @desc : 선택진료의 변경 시 호출 .
  4918. 선택진료환자이나 선택한 의사가 특진의가 아닐경우 방사선혈관조영/마취, 수술 처방에 한해 해당 처방의 선택진료여부 = 'N'으로 SETTING
  4919. * @
  4920. * @param : objFlag - child or null
  4921. DrID - 진료의id
  4922. specDrYN- 특진의여부(A-특진/B..)
  4923. * @return :
  4924. * @author : 손주연
  4925. * @---------------------------------------------------
  4926. */
  4927. function fChngSpecDr(objFlag, DrID, specDrYN ){
  4928. //선택진료관련 추가 by sonjy 2008-08-27 start
  4929. if( objFlag == "child"){
  4930. if( opener.model.getValue("/root/main/prcp/prcplist/choiordflag") == "Y" ){
  4931. var tempcol2 = opener.model.getValue("/root/main/prcp/prcplist/tempcol2");
  4932. if( !isNull(tempcol2) ){
  4933. var temparray = tempcol2.split("|");
  4934. //선택진료환자이나 선택한 의사가 특진의가 아닐경우 방사선혈관조영/마취, 수술 처방에 한해 해당 처방의 선택진료여부 = 'N'으로 SETTING
  4935. if( specDrYN!= "A" ){
  4936. /* 2010. 12. 29 선택진료의사면 무조건 선택진료 아니면
  4937. if( (temparray[0] == "15" && temparray[1] == "02") || // 수술
  4938. (temparray[0] == "13") || //마취
  4939. (temparray[0] == "20") //방사선혈관조영술
  4940. ){
  4941. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "N");
  4942. }
  4943. */
  4944. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "N");
  4945. } else {
  4946. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "Y");
  4947. }
  4948. }
  4949. }
  4950. //선택진료환자이나 비특진의 선택으로 인해 선택진료여부가 'N'으로 변경되었으나 다시 선택진료의를 선택한 경우
  4951. else if( opener.model.getValue("/root/paminfo/list/specordyn") == "Y" && opener.model.getValue("/root/main/prcp/prcplist/choiordflag") == "N" ){
  4952. if( specDrYN == "A" ) {
  4953. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "Y");
  4954. }
  4955. } else { // 의사가 찍은대로 선택진료의를 변경한다.
  4956. if( specDrYN == "A" ) {
  4957. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "Y");
  4958. } else {
  4959. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "N");
  4960. }
  4961. }
  4962. }
  4963. else {
  4964. if(model.getValue("/root/main/prcp/prcplist/choiordflag") == "Y" ){
  4965. var tempcol2 = model.getValue("/root/main/prcp/prcplist/tempcol2");
  4966. if( !isNull(tempcol2) ){
  4967. var temparray = tempcol2.split("|");
  4968. //선택진료환자이나 선택한 의사가 특진의가 아닐경우 방사선혈관조영/마취, 수술 처방에 한해 해당 처방의 선택진료여부 = 'N'으로 SETTING
  4969. if( specDrYN != "A" ){
  4970. /*
  4971. if( (temparray[0] == "15" && temparray[1] == "02") || // 수술
  4972. (temparray[0] == "13") || //마취
  4973. (temparray[0] == "20") //방사선혈관조영술
  4974. ){
  4975. model.setValue("/root/main/prcp/prcplist/choiordflag", "N");
  4976. }
  4977. */
  4978. model.setValue("/root/main/prcp/prcplist/choiordflag", "N");
  4979. }else {
  4980. model.setValue("/root/main/prcp/prcplist/choiordflag", "Y");
  4981. }
  4982. }
  4983. }
  4984. //선택진료환자이나 비특진의 선택으로 인해 선택진료여부가 'N'으로 변경되었으나 다시 선택진료의를 선택한 경우
  4985. else if( model.getValue("/root/paminfo/list/specordyn") == "Y" && model.getValue("/root/main/prcp/prcplist/choiordflag") == "N" ){
  4986. if( specDrYN == "A" ) {
  4987. model.setValue("/root/main/prcp/prcplist/choiordflag", "Y");
  4988. }
  4989. } else { // 의사가 찍은대로 선택진료의를 변경한다.
  4990. if( specDrYN == "A" ) {
  4991. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "Y");
  4992. } else {
  4993. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "N");
  4994. }
  4995. }
  4996. }
  4997. //선택진료관련 추가 by sonjy 2008-08-27 end
  4998. }
  4999. /**
  5000. * @desc : 수술 예방적 항생제 투여 관련 체크
  5001. * @
  5002. * @param :
  5003. * @return :
  5004. * @author : 손주연 2008-09-26
  5005. * @---------------------------------------------------
  5006. */
  5007. function fChkOpDrug( objFlag, strSrc , sendRow ){
  5008. //A, 예정수술명 => P, 수술코드 처방 => S, 대상이 아닐 경우 => N
  5009. var resnyn = getPatientInfoDetail("resnyn");
  5010. if( resnyn == "N" || isNull( resnyn ) ) return true ;
  5011. var ndOpDrugList = null;
  5012. var ret = null ;
  5013. var drugmastspec = model.getValue( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^";
  5014. var prcpcd = model.getValue( strSrc + "[" + sendRow + "]/prcpcd" ) ;
  5015. var prcpnm = model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ) ;
  5016. var msg = "[" + prcpcd + ":" + prcpnm + "]";
  5017. if( model.getValue( strSrc + "[" + sendRow + "]/prcpkindcd") == "60" && ( resnyn == "S" || resnyn == "A") ) {
  5018. if ( getArrayData ( drugmastspec, 0, 23, "^", "|" ) == "P" && getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "N") {
  5019. ret = messageBox( "수술시 예방적 항생제 투여 시는 퇴원약을 권장하고 있지 않습니다. " + msg + "처방을 ", "Q001") ;
  5020. }
  5021. } else {
  5022. //3세대 수술 예방적 항생제 여부 check
  5023. if( objFlag == "child") {
  5024. ndOpDrugList = opener.model.instances(0).selectNodes ( "/root/initsrch/opdrugcdlist[opdrugcd='" + opener.model.getValue ( strSrc + "[" + sendRow + "]/prcpcd") + "']" );
  5025. } else {
  5026. ndOpDrugList = model.instances(0).selectNodes ( "/root/initsrch/opdrugcdlist[opdrugcd='" + model.getValue ( strSrc + "[" + sendRow + "]/prcpcd") + "']" );
  5027. }
  5028. if( ndOpDrugList != null && ndOpDrugList.length > 0 && ( resnyn == "P" || resnyn == "A")) {
  5029. ret = messageBox( "수술시 예방적 항생제로 3세대 cephalosporin 또는 aminoglycoside를 권장하고 있지 않습니다." + msg + " 처방을 변경 ", "S004") ;
  5030. } else if ( getArrayData ( drugmastspec, 0, 23, "^", "|" ) == "P" && getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "N" && ( resnyn == "S" || resnyn == "A")) {
  5031. ret = messageBox( "수술시 예방적 항생제 투여 시는 장기투여를 권장하고 있지 않습니다." + msg + " 처방을 ", "Q001") ;
  5032. }
  5033. }
  5034. if( ret == 6 ){ //yes=> 항생제 clear
  5035. if( objFlag == "child") {
  5036. opener.model.removeNode ( strSrc + "[" + sendRow + "]" );
  5037. //opener.model.setValue ( strSrc + "[" + sendRow + "]/tempcol6", "D" );
  5038. //opener.javascript.fDeleteRow ( "noselect" );
  5039. } else {
  5040. model.removeNode ( strSrc + "[" + sendRow + "]" );
  5041. //model.setValue ( strSrc + "[" + sendRow + "]/tempcol6", "D" );
  5042. //fDeleteRow ( "noselect" );
  5043. }
  5044. return false ;
  5045. } else if( ret == 7 ) { //no => 항생제 사유 입력
  5046. if( objFlag == "child") {
  5047. opener.javascript.setParameter ("SPMMO016000_resnflag" , "O" );
  5048. } else {
  5049. setParameter ("SPMMO016000_resnflag" , "O" );
  5050. }
  5051. var xpt = window.screenleft + eval(500);
  5052. var ypt = window.screenTop + eval(400);
  5053. var coord = getRelativeCoordinate ( xpt, ypt );
  5054. var mon = coord[0];
  5055. xpt = coord[1];
  5056. ypt = coord[2];
  5057. modal ("SPMMO16000", mon, xpt, ypt, "SPMMO16000", "", "", "sysmenu:hidden; min:visible; max:visible; icon:visible", false); //사유입력창
  5058. //fPrcpModal ( "SPMMO16000", 400, 100 ); //사유입력창
  5059. var resncnts = "";
  5060. if( objFlag == "child") {
  5061. resncnts = opener.javascript.getParameter ("SPMMO016000_resncnts" );
  5062. opener.model.setValue ( strSrc + "[" + sendRow + "]/tempcol19" ,resncnts );
  5063. } else {
  5064. resncnts = getParameter ("SPMMO016000_resncnts" );
  5065. model.setValue ( strSrc + "[" + sendRow + "]/tempcol19" ,resncnts );
  5066. }
  5067. }
  5068. return true ;
  5069. }
  5070. /**
  5071. * @desc : 화면타이틀을 설정한다
  5072. * @ : 형식 : 기관명 + 화면명 + 로그인과 + 로그인한 사용자 + 로그인일시
  5073. * @param :
  5074. * @return :
  5075. * @author : 김영학 2008-11-19
  5076. * @---------------------------------------------------
  5077. */
  5078. function initWndTitle() {
  5079. if (getGlobalVariable("userinfos") != "") {
  5080. var scrnTitle = getUserInfo("systeminstnm") + " " ;
  5081. scrnTitle += document.title + " " ;
  5082. scrnTitle += getUserInfo("dutplcenm") + " ";
  5083. scrnTitle += getUserName() + " ";
  5084. scrnTitle += getTitleLoginDate() + " ";
  5085. document.title = scrnTitle;
  5086. }
  5087. }
  5088. /**
  5089. * @desc : (입원/응급/DSC)임상연구처방을 위한 subcretno를 세팅한다.
  5090. * @ :
  5091. * @param :
  5092. * @return :
  5093. * @author : 한재상 20090227
  5094. * @---------------------------------------------------
  5095. */
  5096. // 전처방 및 약속처방에서 처방을 넘기는 경우에도 임상연구처방을 위한 subcretno를 세팅하기 위해 strSrc, sendRow 추가, CHC, 2009-07-22
  5097. function fSubcretnoSet(prcpinptflag, ctrlnm, strSrc, sendRow) {
  5098. var sSubcretno = "0";
  5099. if (prcpinptflag == "0" ) { // 상세팝업에서...
  5100. var prcpgenrflag = opener.model.getValue("/root/patflag/list/prcpgenrflag");
  5101. var clincstdyflag = ctrlnm.valueMatrix(1, ctrlnm.colRef("clincstdyflag"));
  5102. if(prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E"){
  5103. if(clincstdyflag == "Y"){ //임상연구가 Y로 처리된 경우에만 보조유형세팅
  5104. var pid = opener.model.getValue("/root/paminfo/list/pid");
  5105. var indd = opener.model.getValue("/root/paminfo/list/indd");
  5106. sSubcretno = fGetSubcretno(pid, indd, "clincstdyflag");
  5107. if ( sSubcretno == "0" ) {
  5108. model.setValue("/root/main/prcp/prcplist/subcretno", "0");
  5109. ctrlnm.valueMatrix(1, ctrlnm.colRef("clincstdyflag")) = 'N';
  5110. messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  5111. } else {
  5112. model.setValue("/root/main/prcp/prcplist/subcretno", sSubcretno);
  5113. }
  5114. }else{ //임상연구가 N로 처리된 경우에는 subcretno 0로 처리
  5115. model.setValue("/root/main/prcp/prcplist/subcretno", "0");
  5116. }
  5117. } else { //외래, 건진의 경우는 subcretno 0로 처리
  5118. model.setValue("/root/main/prcp/prcplist/subcretno", "0");
  5119. if ( clincstdyflag == "Y" && opener.model.getValue("/root/paminfo/list/insukind") != "71") {
  5120. ctrlnm.valueMatrix(1, ctrlnm.colRef("clincstdyflag")) = 'N';
  5121. messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  5122. }
  5123. }
  5124. } else if (prcpinptflag == "1") { // 일괄입력에서...
  5125. var prcpgenrflag = opener.model.getValue("/root/patflag/list/prcpgenrflag");
  5126. var clincstdyflag = model.getValue("/root/chkflag/clincstdyflag");
  5127. if (prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E"){
  5128. if(model.getValue("/root/chkflag/clincstdyflag") == "Y"){
  5129. var pid = opener.model.getValue("/root/paminfo/list/pid");
  5130. var indd = opener.model.getValue("/root/paminfo/list/indd");
  5131. sSubcretno = fGetSubcretno(pid, indd, "clincstdyflag");
  5132. if ( sSubcretno == "0" ) {
  5133. model.setValue("/root/main/prcp/prcplist/subcretno", "0");
  5134. messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  5135. return -1
  5136. } else {
  5137. model.setValue("/root/main/prcp/prcplist/subcretno", sSubcretno);
  5138. }
  5139. }else{ //임상연구가 N로 처리된 경우에는 subcretno 0로 처리
  5140. model.setValue("/root/main/prcp/prcplist/subcretno", "0");
  5141. }
  5142. } else { //외래, 건진의 경우는 subcretno 0로 처리
  5143. model.setValue("/root/main/prcp/prcplist/subcretno", "0");
  5144. if ( clincstdyflag == "Y" && opener.model.getValue("/root/paminfo/list/insukind") != "71") {
  5145. messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  5146. return -1;
  5147. }
  5148. }
  5149. } else if (prcpinptflag == "2") { // 전처방, 약속처방에서, 임상시험 부유형 자동세팅, cHc, 2009-07-21
  5150. var prcpgenrflag = opener.model.getValue("/root/patflag/list/prcpgenrflag");
  5151. var clincstdyflag = ctrlnm;
  5152. if(prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E") {
  5153. if(clincstdyflag == "Y"){ //임상연구가 Y로 처리된 경우에만 보조유형세팅
  5154. var pid = opener.model.getValue("/root/paminfo/list/pid");
  5155. var indd = opener.model.getValue("/root/paminfo/list/indd");
  5156. sSubcretno = fGetSubcretno(pid, indd, "clincstdyflag");
  5157. if ( sSubcretno == "0" ) {
  5158. model.setValue(strSrc + "[" + sendRow + "]/subcretno", "0");
  5159. model.setValue(strSrc + "[" + sendRow + "]/clincstdyflag", "N");
  5160. messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  5161. } else {
  5162. model.setValue(strSrc + "[" + sendRow + "]/subcretno", sSubcretno);
  5163. }
  5164. model.removeNodeset("/root/temp");
  5165. } else{ //임상연구가 N로 처리된 경우에는 subcretno 0로 처리
  5166. opener.model.setValue(strSrc + "[" + sendRow + "]/subcretno", "0");
  5167. }
  5168. } else { //외래, 건진의 경우는 subcretno 0로 처리
  5169. model.setValue(strSrc + "[" + sendRow + "]/subcretno", "0");
  5170. if ( clincstdyflag == "Y" && opener.model.getValue("/root/paminfo/list/insukind") != "71") {
  5171. messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  5172. }
  5173. }
  5174. } else if (prcpinptflag == "3") { // kimsj 임상 일괄입력 팝업 체크
  5175. var prcpgenrflag = model.getValue("/root/patflag/list/prcpgenrflag");
  5176. if (prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E"){
  5177. var pid = model.getValue("/root/paminfo/list/pid");
  5178. var indd = model.getValue("/root/paminfo/list/indd");
  5179. sSubcretno = fGetSubcretno(pid, indd, "clincstdyflag");
  5180. if ( sSubcretno == "0" ) {
  5181. messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  5182. return -1;
  5183. }
  5184. } else { //외래, 건진의 경우는 subcretno 0로 처리
  5185. if (model.getValue("/root/paminfo/list/insukind") != "71") {
  5186. messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  5187. return -1;
  5188. }
  5189. }
  5190. return 0;
  5191. }
  5192. }
  5193. /**
  5194. * @desc : 환자의 부유형 원무접수번호(subcretno)를 조회 한다.
  5195. * @ :
  5196. * @param :
  5197. * @return :
  5198. * @author : 엄영만 2012.05.09
  5199. * @---------------------------------------------------
  5200. */
  5201. function fGetSubcretno(sPid, sIndd, sSrchcls) {
  5202. var sSubcretno = "0";
  5203. if(isNull(sPid)) { messageBox ( "환자번호가 없습니다. 보조유형 조회에 실패 하였습니다. 전산실(6598)로 연락 바랍니다.", "E999" ); return sSubcretno;}
  5204. if(isNull(sIndd)) { messageBox ( "입원일자가 없습니다. 보조유형 조회에 실패 하였습니다. 전산실(6598)로 연락 바랍니다.", "E999" ); return sSubcretno;}
  5205. if(isNull(sSrchcls)) { sSrchcls = ""; }
  5206. model.makeValue("/root/temp/send/pid", sPid);
  5207. model.makeValue("/root/temp/send/indd", sIndd);
  5208. model.makeValue("/root/temp/send/srchcls", sSrchcls);
  5209. if(submit("TRMMO15701")){
  5210. var nodelist = model.instances(0).selectNodes("/root/temp/patsupkind/patsupkind");
  5211. if(nodelist != null) {
  5212. if(sSrchcls == "clincstdyflag") { // 임상시험 유형
  5213. sSubcretno = model.getValue("/root/temp/patsupkind/patsupkind/cretno");
  5214. if(isNull(sSubcretno)) {
  5215. sSubcretno = "0";
  5216. }
  5217. } else { // 기왕증 등 임상시험 이외의 경우
  5218. if(nodelist.length > 1){
  5219. modal("SPMMO15700", "", "", "", "SPMMO15700", "/root/temp/patsupkind", "/root/main/patsupkind");
  5220. sSubcretno = getParameter("SPMMO15700_subcretno");
  5221. }
  5222. }
  5223. }
  5224. } else {
  5225. messageBox ( "보조유형 조회에 실패 하였습니다. 전산실(6598)로 연락 바랍니다.", "E999" );
  5226. }
  5227. model.resetInstanceNode( "/root/temp/send" );
  5228. return sSubcretno;
  5229. }
  5230. /**
  5231. * @desc : 문자열 입력하는 곳에 공백이 있으면 공백을 제거한다.
  5232. * @ :
  5233. * @param :
  5234. * @return :
  5235. * @author : 김영학 2009. 03.03
  5236. * @---------------------------------------------------
  5237. */
  5238. function trim(s) {
  5239. s += ''; // 숫자라도 문자열로 변환
  5240. return s.replace(/^\s*|\s*$/g, '');
  5241. }
  5242. /**
  5243. * @desc : 문자열 입력하는 곳에 공백이 있으면 공백을 제거한다.
  5244. * @ :
  5245. * @param :
  5246. * @return :
  5247. * @author : 김영학 2009. 03.03
  5248. * @---------------------------------------------------
  5249. */
  5250. function fPidTrim(pid_path) {
  5251. var pid = model.getValue(pid_path);
  5252. //pid = trim(pid);
  5253. pid += ''; // 숫자라도 문자열로 변환
  5254. pid = pid.replace(/^\s*|\s*$/g, '');
  5255. model.setValue(pid_path, pid);
  5256. }
  5257. /**
  5258. * @desc : 세부과리스트 조회
  5259. * @
  5260. * @param : ref - reference path
  5261. * rsltref - result reference path
  5262. * orddeptcd - 진료과코드
  5263. * @return :
  5264. * @author : 오지훈
  5265. * @---------------------------------------------------
  5266. */
  5267. function mmbfGetSubDeptComboList(ref, rsltref, orddeptcd){
  5268. var mmb_rsltref = "/root/hidden/mmb/subdeptinfo";
  5269. model.removeNode(mmb_rsltref);
  5270. model.makeNode(mmb_rsltref);
  5271. model.removeNode(ref);
  5272. model.makeValue(ref + "/orddeptcd", orddeptcd);
  5273. if(submit("TRMMB04106", "false", ref, mmb_rsltref)==true){
  5274. model.copyNode(rsltref, mmb_rsltref);
  5275. model.removeNode(mmb_rsltref);
  5276. }
  5277. model.refresh();
  5278. }
  5279. /**
  5280. * @desc : 변경요청(8106), 응급간호에서 삭제처리한 환자 선택 시 blocking 메세지 처리 추가
  5281. * 응급진료대상자 및 처방창에서 호출함
  5282. * @param : pid, orddd, cretno, mode(C:false리턴 시 창을닫음, B:처방저장을 blocking)
  5283. * @return : true, false
  5284. * @author : 전지은
  5285. * @---------------------------------------------------
  5286. */
  5287. function fChkInCnclYN(pid, orddd, cretno, pMode){
  5288. var rstlRef = "/root/hidden/erincnclinfo/info/incnclyn";
  5289. if(isNull(pMode)) pMode = "C";
  5290. model.makeValue("/root/send/reqdata/erincncl_pid" , pid);
  5291. model.makeValue("/root/send/reqdata/erincncl_orddd" , orddd);
  5292. model.makeValue("/root/send/reqdata/erincncl_cretno" , cretno);
  5293. model.makeNode("/root/hidden/erincnclinfo");
  5294. if (submit("TRMMO04404")==true) {
  5295. model.removenode("/root/send/reqdata/erincncl_pid");
  5296. model.removenode("/root/send/reqdata/erincncl_orddd");
  5297. model.removenode("/root/send/reqdata/erincncl_cretno");
  5298. //조회 결과, 삭제처리여부 N이면 처방창 호출 가능, 그 외(삭제처리 했을 경우)에는 blocking
  5299. if( model.getValue(rstlRef) == "N" ){
  5300. return true;
  5301. }else{
  5302. messageBox("삭제 처리 환자입니다.\n처방입력은 불가 합니다.\n\n응급 간호에", "I007");
  5303. if( pMode == "C" ){
  5304. var orgPid = getPatientInfo("pid");
  5305. var orgOrddd = getPatientInfoDetail("indd");
  5306. var orgCretno = getPatientInfoDetail("cretno");
  5307. if( pid == orgPid && orddd == orgOrddd && cretno == orgCretno ){
  5308. var mainObj = getMainViewer();
  5309. var curPrcpObj = mainObj.javascript.getOpenWindow("SMMMO00100"); //활성화된 처방Main 화면 object loading
  5310. var curCpObj = mainObj.javascript.getOpenWindow("SMMMP00800"); //활성화된 CP Main 화면 object loading
  5311. // 처방창이 열려있다면 입력된 처방을 삭제하고 처방창 close
  5312. if(curPrcpObj != null){
  5313. curPrcpObj.model.removeNodeSet ("/root/main/prcp/prcplist");
  5314. curPrcpObj.window.javascript.appendChildPrcp ( "/root/reset/prcplist", "/root/main/prcp", "main" );
  5315. }
  5316. if(curCpObj != null){
  5317. curCpObj.model.removeNodeSet ("/root/main/prcp/prcplist");
  5318. curCpObj.window.javascript.appendChildPrcp ( "/root/reset/prcplist", "/root/main/prcp", "main" );
  5319. }
  5320. }
  5321. } else if ( pMode == "B" ){
  5322. // 저장 blocking, 처방저장 버튼의 상태를 disabled 시킴
  5323. btn_tempsave.disabled = true;
  5324. btn_prcpsave.disabled = true;
  5325. btn_tempsave.hint = "삭제 처리 환자입니다. 처방입력은 불가 합니다. 응급 간호에 확인하십시오.";
  5326. btn_prcpsave.hint = "삭제 처리 환자입니다. 처방입력은 불가 합니다. 응급 간호에 확인하십시오.";
  5327. // 입력된 처방을 삭제시킴 (처방이 남아있으면 창 닫을 때 저장여부를 또 물어봄)
  5328. model.removeNodeSet ("/root/main/prcp/prcplist");
  5329. appendChildPrcp ( "/root/reset/prcplist", "/root/main/prcp", "main" );
  5330. model.refresh();
  5331. model.recalculate();
  5332. }
  5333. if(instance1.selectSingleNode(rstlRef) == null) model.makeValue(rstlRef, "Y");
  5334. return false; //삭제처리 환자인 경우 false
  5335. }
  5336. } else{
  5337. model.removenode("/root/send/reqdata/erincncl_pid");
  5338. model.removenode("/root/send/reqdata/erincncl_orddd");
  5339. model.removenode("/root/send/reqdata/erincncl_cretno");
  5340. if( instance1.selectSingleNode(rstlRef) == null ) model.makeValue(rstlRef, "");
  5341. return false; //submit 실패 시 false
  5342. }
  5343. }
  5344. /**
  5345. * @desc : 선택진료신청관리 팝업 open 여부 체크
  5346. * @param : pid(등록번호), cretno(cretno), stnddd(입원일/진료일), orddeptcd(진료과), orddrid(진료의), ordtype(O:외래진료대상자/I:입원결정서)
  5347. * @return :
  5348. * @author : 전지은 (조영상 제공 2009.10.23)
  5349. * @---------------------------------------------------
  5350. */
  5351. function fSpecOrdPopUpYN(pid, cretno, stnddd, orddeptcd, orddrid, ordtype) {
  5352. //20091007 JJE 추가 : 주진료과 의사가 진료지원과의 선택진료의사 선택 여부(hardcdno:134) 및 원무 팝업 호출
  5353. var selspecordyn = "";
  5354. if( isNull(ordtype) ) ordtype = "O"; //입원장에서 호출 시에는 I로 보냄.. (2009.11.03 추가)
  5355. if(ordtype != "O") selspecordyn = opener.model.getValue("/root/initsrch/selspecordyn[trgtcd = 'Y']/trgtcd");
  5356. else selspecordyn = model.getValue("/root/init/selspecordyn/hardcd[hardcd = 'Y']/hardcd");
  5357. if (!isNull(selspecordyn)){
  5358. model.removenode("/root/smpmc06800");
  5359. model.makeValue("/root/smpmc06800/send/pid" , pid);
  5360. model.makeValue("/root/smpmc06800/send/orddd" , stnddd);
  5361. model.makeValue("/root/smpmc06800/send/orddeptcd" , orddeptcd);
  5362. model.makeValue("/root/smpmc06800/send/orddrid" , orddrid);
  5363. model.makeValue("/root/smpmc06800/send/cretno" , cretno);
  5364. model.makeValue("/root/smpmc06800/send/ordtype" , ordtype);
  5365. if( submit("TRPMC06801") ){
  5366. var saim_pid = getNodesetCount("/root/smpmc06800/hsaim/saim/pid");
  5367. if(saim_pid == 0){
  5368. //Parameter: 진료형태▦환자번호▦입원/진료일▦생성번호▦진료과▦주치의▦등록위치구분 : rgstposflag (I:입원,O:외래,M:진료,N:간호)
  5369. setParameter("SMPMC06800_PARM", ordtype + "▦" + pid + "▦" + stnddd + "▦" + cretno + "▦" + orddeptcd + "▦" + orddrid + "▦" + "M");
  5370. modal("SMPMC06800");
  5371. }
  5372. }
  5373. }
  5374. }
  5375. var hardcdResultRef = "/root/hidden/hardcd/resultref";
  5376. function makeHardCdResultRef(){ model.makeNode(hardcdResultRef); }
  5377. function removeHardCdResultRef(){ model.removeNode(hardcdResultRef); }
  5378. /**
  5379. * @desc : 하드코드 조회 배열을 이용하여 한번의 Submit 이용하기
  5380. * @param : 첫번째 파리미터 : 위치할 최하위 인스턴스명 |(구분자) 하드코드 번호
  5381. 두번째 파라미터 : 하드코드 내용이 위치 할 곳
  5382. Ex) fGethardcdArrayList(new Array(
  5383. "dayaftrcptyn|75",
  5384. "patprotector|95",
  5385. "menu|191",
  5386. "selspecordyn|134",
  5387. "ordordershow|135",
  5388. "reqphardcdno|138"
  5389. ),
  5390. new Array(
  5391. "/root/init",
  5392. "/root/init",
  5393. "/root/popupmenu",
  5394. "/root/init",
  5395. "/root/init",
  5396. "/root/init"
  5397. )
  5398. );
  5399. * @return :
  5400. * @author : 김영학
  5401. * @---------------------------------------------------
  5402. */
  5403. /*
  5404. // 하드코드 리스트가 많을 경우 속도가 느려지는 문제 발생하여 submit을 한번 날려서 가지고 오는 방식으로 변경
  5405. function fGethardcdArrayList(hardcdlist, rslt_ref_list){
  5406. makeHardCdResultRef();
  5407. var bCopy = true;
  5408. for (key in hardcdlist){
  5409. addParameter("hardcdno", hardcdlist[key]);
  5410. //////////////
  5411. //KNUH_20110211, 주희경, 진료속도개선위해 미리 조회해 놓은 hardcd 데이터를 복사
  5412. var target_path = rslt_ref_list[key];
  5413. if(target_path==null){
  5414. target_path = rslt_ref_list[key-1];
  5415. }
  5416. target_path = target_path + "/" + hardcdlist[key].split("|")[0];
  5417. var hardcd = hardcdlist[key].split("|")[1];
  5418. fGetHardCDList("N", hardcd, 0, target_path);
  5419. var destNode = model.instances(0).selectSingleNode(rslt_ref_list);
  5420. if ( destNode.childNodes.length == 0 )
  5421. {
  5422. bCopy = false;
  5423. }
  5424. //////////////
  5425. }
  5426. //KNUH_20110211, 주희경, 복사된 데이터가 없으면 submit
  5427. if (!bCopy)
  5428. {
  5429. var success = submit("TRMMB04107", "false", getParameterPath(), hardcdResultRef);
  5430. for(key in hardcdlist){
  5431. var target_path = rslt_ref_list[key];
  5432. if(target_path==null){
  5433. target_path = rslt_ref_list[key-1];
  5434. }
  5435. var refArray = hardcdlist[key].split("|");
  5436. var nodeitem = refArray[0]
  5437. var sourceNode = instance1.selectNodes(hardcdResultRef + "/" + nodeitem);
  5438. for(i=0; i<sourceNode.length; i++){
  5439. model.duplicate(target_path, sourceNode.item(i));
  5440. }
  5441. }
  5442. }
  5443. removeHardCdResultRef();
  5444. clearParameter("hardcdno");
  5445. }
  5446. */
  5447. function fGethardcdArrayList(hardcdlist, rslt_ref_list){
  5448. makeHardCdResultRef();
  5449. for (key in hardcdlist){
  5450. addParameter("hardcdno", hardcdlist[key]);
  5451. }
  5452. var success = submit("TRMMB04107", "false", getParameterPath(), hardcdResultRef);
  5453. for(key in hardcdlist){
  5454. var target_path = rslt_ref_list[key];
  5455. if(target_path==null){
  5456. target_path = rslt_ref_list[key-1];
  5457. }
  5458. var refArray = hardcdlist[key].split("|");
  5459. var nodeitem = refArray[0]
  5460. var sourceNode = instance1.selectNodes(hardcdResultRef + "/" + nodeitem);
  5461. for(i=0; i<sourceNode.length; i++){
  5462. model.duplicate(target_path, sourceNode.item(i));
  5463. }
  5464. }
  5465. removeHardCdResultRef();
  5466. clearParameter("hardcdno");
  5467. }
  5468. /**
  5469. * @desc : 조회된 하드코드 리스트를 조회한다.
  5470. * @param : 첫번째 파리미터 : option : Y : 값을 리턴한다. , N : 리스트를 반환한다.
  5471. * 두번째 파라미터 : 하드코드 번호
  5472. * 세번째 파라미터 : 반환할 instance 주소를 준다.
  5473. * var returnVal = fGetHardCDList("Y", 1, 0);
  5474. * model.makeValue("/root/hidden/returnValue", returnVal) ;
  5475. *
  5476. * fGetHardCDList("N", 6, 0 , "/root/hidden/destnode");
  5477. * @return : option = "Y" 일 경우
  5478. * return hardcd+ "|" + hardcdnm + "|" + cdseqno;
  5479. = "N" 일 경우 노드 복사
  5480. hardcdno = 하드코드 번호
  5481. rtnValue 0 - 리턴값 반환하지 않음 (하드코드 값이 여러개일 때 선택
  5482. 1 - hardcdno를 리턴
  5483. 2 - hardcodenm 을 리턴
  5484. 3 - hardcd 를 리턴
  5485. 4 - hardcdnm를 리턴
  5486. 5 - cdseqno를 리턴
  5487. 9 - hardcd+ "|" + hardcdnm + "|" + cdseqno 형태로 리턴
  5488. rslt_ref_list 목적노드
  5489. * @author : 김영학
  5490. * @---------------------------------------------------
  5491. */
  5492. function fGetHardCDList(option, hardcdno, rtnValue , rslt_ref_list) {
  5493. model.makeNode(rslt_ref_list);
  5494. var destNode = model.instances(0).selectSingleNode(rslt_ref_list);
  5495. var sysMessageobj = getViewer("sysMessage");
  5496. if (sysMessageobj != null) {
  5497. if (option == "Y") {
  5498. try {
  5499. var hardcdno = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='" + hardcdno + "']/hardcdno").text;
  5500. var hardcodenm = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='" + hardcdno + "']/hardcodenm").text;
  5501. var hardcd = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='" + hardcdno + "']/hardcd").text;
  5502. var hardcdnm = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='" + hardcdno + "']/hardcdnm").text;
  5503. var cdseqno = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='" + hardcdno + "']/cdseqno").text;
  5504. } catch(err) {
  5505. model.makeValue("/root/temp/hardcd", hardcdno);
  5506. mmbfGetHardCodeInfo("/root/send/reqdata", "/root/temp/hardcd", hardcdno); //
  5507. var hardcd = model.getValue("/root/temp/hardcd/hardcd");
  5508. var hardcdnm = model.getValue("/root/temp/hardcd/hardcdnm");
  5509. var cdseqno = model.getValue("/root/temp/hardcd/cdseqno");
  5510. }
  5511. if (rtnValue == 1) {
  5512. return hardcdno;
  5513. } else if (rtnValue == 1) {
  5514. return hardcodenm;
  5515. } else if (rtnValue == 2) {
  5516. return hardcdno;
  5517. } else if (rtnValue == 3) {
  5518. return hardcd;
  5519. } else if (rtnValue == 4) {
  5520. return hardcdnm;
  5521. } else if (rtnValue == 5) {
  5522. return cdseqno;
  5523. } else if (rtnValue == 9) {
  5524. return hardcd+ "|" + hardcdnm + "|" + cdseqno;
  5525. }
  5526. } else {
  5527. /*
  5528. //속도 문제로 인덱스를 뒤져서 해당 인덱스에서부터 시작하도록 수정 : 20110428 김영학
  5529. var hardcdPath = sysMessageobj.window.instance1.selectNodes("/root/properties/orderbasicinfo/hardcdlist/hardcd");
  5530. var destListLen = destNode.childNodes.length;
  5531. var hardcdIdxPath = sysMessageobj.window.instance1.selectNodes("/root/properties/orderbasicinfo/hardcdidxlist");
  5532. for (idxno = 1; idxno <= hardcdIdxPath.length; idxno++ ) {
  5533. if (sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdidxlist[" + idxno + "]/hardcdno").text == hardcdno) {
  5534. strtrow = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdidxlist[" + idxno + "]/strtrow").text
  5535. break;
  5536. }
  5537. }
  5538. */
  5539. /*
  5540. if (destListLen < 1 ) { // 한번이라도 복사된 내용이 있으면 다시 안하도록 수정 2011. 01.20 김영학
  5541. model.copyNode( rslt_ref_list+ "/hardcd", "/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='"+hardcdno+"']");
  5542. for (i=strtrow; i<= hardcdPath.length; i++){
  5543. if (sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[" + i + "]/hardcdno").text == hardcdno) {
  5544. destNode.appendChild(hardcdPath.item(i-1).cloneNode(true));
  5545. } else if (parseInt(sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[" + i + "]/hardcdno").text) > parseInt(hardcdno)) {
  5546. break;
  5547. }
  5548. }
  5549. }
  5550. */
  5551. var destListLen = destNode.childNodes.length;
  5552. if (destListLen < 1 ) { // 한번이라도 복사된 내용이 있으면 다시 안하도록 수정 2011. 01.20 김영학
  5553. var destNode = instance1.selectSingleNode(rslt_ref_list);
  5554. var nodes = sysMessageobj.window.instance1.selectNodes("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='"+hardcdno+"']");
  5555. for(i=1; i<= nodes.length; i++) {
  5556. destNode.appendChild(nodes.item(i-1).cloneNode(true));
  5557. }
  5558. }
  5559. }
  5560. }
  5561. }
  5562. /**
  5563. * @desc : 하드코드 리스트에 해당 파라미터의 코드 값이 존재 하는지 여부를 체크 한다.
  5564. * @param : sHardCdNo : 하드코드 번호
  5565. * sCheckCode : 체크 할 하드코드
  5566. * fContainsHardCD("339", "LIR112");
  5567. * @return : true : 값이 존재 함.
  5568. false : 값이 존재하지 않음.
  5569. * @author : 엄영만 2012.11.26
  5570. * @---------------------------------------------------
  5571. */
  5572. function fContainsHardCD(sHardCdNo, sCheckCode) {
  5573. var bRtn = false; // 반환값
  5574. var sChekPath = "/root/temp/mmo001/fcontainshardcd"; // 체크할 임시 노드 경로
  5575. try {
  5576. model.removeNodeset(sChekPath);
  5577. fGetHardCDList("N", sHardCdNo, 0, sChekPath);
  5578. if(!isNull(model.getValue(sChekPath + "/hardcd[hardcd='"+sCheckCode+"']/hardcd"))) {
  5579. bRtn = true;
  5580. } else {
  5581. bRtn = false;
  5582. }
  5583. } catch(err) {
  5584. messageBox ( "fContainsHardCD() 실행 중 오류가 발생 하였습니다. sHardCdNo:" + sHardCdNo + " sCheckCode:"+ sCheckCode, "E" );
  5585. } finally {
  5586. model.removeNodeset(sChekPath);
  5587. }
  5588. return bRtn;
  5589. }
  5590. /**
  5591. * @desc : 의사 직종직위 옵션을 받아서 true, false 값을 리턴한다.
  5592. * @param : 첫번째 파리미터 : option 1: 의사 여부, 2: 주치의 여부 3: 담당의 여부 를 체크한다.
  5593. * 두번째 파라미터 : chkOption : A : 직종으로 체크한다. , B : 직위로 체크한다.
  5594. * 값이 없으면 하드코드번호 255번의 기본값으로 셋팅한다., 하드코드도 없으면 기본값 "B"로 셋팅
  5595. * 세번째 파라미터 : userinfo : 비교할 직종 또는 직위코드(getUserInfo(jobkindcd), getUserInfo("jobposcd") ;
  5596. 값이 없으면 A일 경우는 getUserInfo("jobkindcd") , B일 경우는 getUserInfo("jobposcd")로 셋팅함.
  5597. * model.makeValue("/root/hidden/returnValue", returnVal) ;
  5598. * fGetHardCDList("1");
  5599. * fGetHardCDList("2", "A", getUserInfo("jobkindcd"));
  5600. * @return : true/false;
  5601. * @author : 김영학
  5602. * @---------------------------------------------------
  5603. */
  5604. function mmbfChkDrKindPosYN(option, chkOption, userinfo) {
  5605. if (chkOption == null || chkOption == "" || chkOption == "undefined") {
  5606. chkOption = fGetHardCDList("Y", "255", "3")
  5607. if (chkOption == "" ) chkOption = "B"
  5608. }
  5609. if (option == "1") { // 의사여부를 리턴한다.
  5610. fGetHardCDList("N", 69, 0, "/root/chktmpdrlist");
  5611. if (userinfo == null || userinfo == "" || userinfo == "undefined") userinfo = getUserInfo("jobkindcd") ;
  5612. var jobkindcd = model.getValue("/root/chktmpdrlist/hardcd[hardcd='" + userinfo + "']/hardcd");
  5613. if ( jobkindcd != "") return true;
  5614. else return false;
  5615. } else if (option =="2") { // 주치의 여부를 리턴한다.
  5616. if (chkOption == "A") { // 직종에서 비교한다. (jobkindcd)
  5617. fGetHardCDList("N", 65, 0, "/root/chktmpdrlist") ;
  5618. if (userinfo == null || userinfo == "" || userinfo == "undefined") userinfo = getUserInfo("jobkindcd") ;
  5619. var jobkindcd = model.getValue("/root/chktmpdrlist/hardcd[hardcd='" + userinfo + "']/hardcd");
  5620. if ( jobkindcd != "") return true;
  5621. else return false;
  5622. } else if (chkOption == "B") { // 직위를 비교한다. (jobposcd)
  5623. fGetHardCDList("N", 67, 0, "/root/chktmpdrlist") ;
  5624. if (userinfo == null || userinfo == "" || userinfo == "undefined") userinfo = getUserInfo("jobposcd") ;
  5625. var jobkindcd = model.getValue("/root/chktmpdrlist/hardcd[hardcd='" + userinfo + "']/hardcd");
  5626. if ( jobkindcd != "") return true;
  5627. else return false;
  5628. }
  5629. } else if (option == "3") {
  5630. if (chkOption == "A") { // 직종에서 비교한다. (jobkindcd)
  5631. fGetHardCDList("N", 65, 0, "/root/chktmpdrlist") ;
  5632. if (userinfo == null || userinfo == "" || userinfo == "undefined") userinfo = getUserInfo("jobkindcd") ;
  5633. var jobkindcd = model.getValue("/root/chktmpdrlist/hardcd[hardcd='" + userinfo + "']/hardcd");
  5634. if ( jobkindcd != "") return true;
  5635. else return false;
  5636. } else if (chkOption == "B") { // 직위를 비교한다. (jobposcd)
  5637. fGetHardCDList("N", 67, 0, "/root/chktmpdrlist") ;
  5638. if (userinfo == null || userinfo == "" || userinfo == "undefined") userinfo = getUserInfo("jobposcd") ;
  5639. var jobkindcd = model.getValue("/root/chktmpdrlist/hardcd[hardcd='" + userinfo + "']/hardcd");
  5640. if ( jobkindcd != "") return "Y";
  5641. else return "N";
  5642. }
  5643. }
  5644. }
  5645. /**
  5646. * @desc : 사용자 환경설정의 값을 조회한다.
  5647. * @param : qestcd : 질문값
  5648. * @return : Answcnt ( 답안값)
  5649. */
  5650. function mmbfGetUserEnvQuestValue(qestcd) {
  5651. var sysMessageobj = getViewer("sysMessage");
  5652. if (sysMessageobj != null) {
  5653. var anstcnt = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/envinfo[qestcd='" + qestcd + "']/answcnt").text;
  5654. return anstcnt;
  5655. } else {
  5656. var mmb_rsltref = "/root/userenv/answlist";
  5657. var ref = "/root/userenv/cond"
  5658. var answcnt = "";
  5659. model.removeNode(mmb_rsltref);
  5660. model.makeNode(mmb_rsltref);
  5661. model.makeValue(ref + "/interqestcd", qestcd);
  5662. if(submit("TRMMB01104", "false", ref, mmb_rsltref)==true){
  5663. answcnt = model.getValue("/root/userenv/interface/answcnt")
  5664. model.removeNode(mmb_rsltref);
  5665. return answcnt;
  5666. }
  5667. }
  5668. }
  5669. function fChoiOrdChk() {
  5670. if ( model.getValue ( "/root/main/prcp/prcplist/tempcol24" ) != "Y" ) {
  5671. messageBox ( "선택진료가 불가한 처방입니다.", "E" );
  5672. return false;
  5673. } else {
  5674. return true;
  5675. }
  5676. }
  5677. function fChgChoiDr( mode, currow, sXpt, sYpt ) {
  5678. var xpt = window.screenLeft + 400;
  5679. var ypt = window.screenTop + 60;
  5680. var coord = getRelativeCoordinate(xpt, ypt);
  5681. var mon = coord[0];
  5682. if(!isNull(sXpt) && !isNull(sYpt)) {
  5683. xpt = sXpt;
  5684. ypt = sYpt;
  5685. } else {
  5686. xpt = coord[1];
  5687. ypt = coord[2];
  5688. }
  5689. var ordtype = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  5690. var prcpcd = "";
  5691. var prcpdd = "";
  5692. var prcpnm = "";
  5693. var prcpexecdeptcd = "";
  5694. var prcpclscd = "";
  5695. var drugmthdspccd = "";
  5696. var useyn = "";
  5697. var userid = "";
  5698. //default 선택진료과 설정
  5699. if ( mode == "pop" ) {
  5700. ordtype = model.getValue ( "/root/main/prcp/prcplist/prcpgenrflag" );
  5701. prcpcd = model.getValue ( "/root/main/prcp/prcplist/prcpcd" );
  5702. prcpnm = model.getValue ( "/root/main/prcp/prcplist/prcpnm" );
  5703. prcpexecdeptcd = model.getValue ( "/root/main/prcp/prcplist/prcpexecdeptcd" );
  5704. prcpclscd = model.getValue ( "/root/main/prcp/prcplist/prcpclscd" );
  5705. drugmthdspccd = model.getValue ( "/root/main/prcp/prcplist/drugmthdspccd" );
  5706. } else if ( mode == "auto" ) {
  5707. //ordtype = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/prcpgenrflag" );
  5708. ordtype = model.getValue ( "/root/patflag/list/prcpgenrflag" ); //입력구분
  5709. prcpcd = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/prcpcd" );
  5710. prcpnm = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/prcpnm" );
  5711. prcpexecdeptcd = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/prcpexecdeptcd" );
  5712. prcpclscd = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/prcpclscd" );
  5713. drugmthdspccd = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/drugmthdspccd" );
  5714. } else {
  5715. ordtype = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row + "]/prcpgenrflag" );
  5716. prcpcd = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row + "]/prcpcd" );
  5717. prcpnm = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row + "]/prcpnm" );
  5718. prcpexecdeptcd = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row + "]/prcpexecdeptcd" );
  5719. prcpclscd = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row + "]/prcpclscd" );
  5720. drugmthdspccd = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row + "]/drugmthdspccd" );
  5721. }
  5722. //defalut 선택진료과 설정. 예외
  5723. if ( prcpexecdeptcd == "2010500000" || prcpexecdeptcd == "2010302030" ) { //내시경검사실, 내분비대사내과 일경우 소화기내과
  5724. prcpexecdeptcd = "2010300000";
  5725. } else if ( prcpexecdeptcd == "2220204000" ) { //물리치료실일 경우 재활의학과
  5726. prcpexecdeptcd = "2220000000";
  5727. } else if ( prcpexecdeptcd == "2010402030" || prcpexecdeptcd == "2010402090" ) { //심장혈관촬영실, 심전도검사실 경우 순환기내과
  5728. prcpexecdeptcd = "2010400000";
  5729. } else if ( prcpexecdeptcd == "2200238000" ) { //채혈실일 경우 진단검사의학과
  5730. prcpexecdeptcd = "2200000000";
  5731. }
  5732. // 신규로직 테스트 적용 여부 추후 삭제 필요.
  5733. var sChkNewLogicYn = fGetHardCDList("Y", 400, 3); // 400 처방 관련 신규로직 적용여부
  5734. var orddeptcd = "";
  5735. var orddrid = "";
  5736. if ( mode == "pop" ) {
  5737. orddeptcd = opener.model.getValue ( "/root/paminfo/list/orddeptcd" );
  5738. if ( ordtype == "O" ) {
  5739. orddrid = opener.model.getValue ( "/root/paminfo/list/orddrid" );
  5740. } else {
  5741. orddrid = opener.model.getValue ( "/root/paminfo/list/medispclid" );
  5742. }
  5743. } else {
  5744. orddeptcd = model.getValue ( "/root/paminfo/list/orddeptcd" );
  5745. if ( ordtype == "O" ) {
  5746. orddrid = model.getValue ( "/root/paminfo/list/orddrid" );
  5747. } else {
  5748. orddrid = model.getValue ( "/root/paminfo/list/medispclid" );
  5749. }
  5750. }
  5751. fGetHardCDList("N", 402, 0 , "/root/hidden/testcheckspcdrlist"); // 402 신규로직 적용대상 2011.11.19 엄영만 (추후 관련 로직 삭제해야함.)
  5752. // End of 신규로직 테스트 적용 여부 추후 삭제 필요. orddrid 가져 오는 부분도 필요 없음.
  5753. if ( sChkNewLogicYn == "Y"
  5754. || (sChkNewLogicYn == "N" && !isNull(model.getValue("/root/hidden/testcheckspcdrlist/hardcd[hardcd='"+orddrid+"']/hardcd" ))) ) { // 신규로직 적용여부
  5755. if ( mode == "pop" ) {
  5756. prcpdd = opener.model.getValue ( "/root/init/prcpdd" );
  5757. } else {
  5758. prcpdd = model.getValue ( "/root/init/prcpdd" );
  5759. }
  5760. clearParameter ( "SPMMB08600_useyn" );
  5761. clearParameter ( "SPMMB08600_userid" );
  5762. clearParameter ( "SPMMB08600_prcpdd" );
  5763. clearParameter ( "SPMMB08600_prcpcd" );
  5764. clearParameter ( "SPMMB08600_prcpnm" );
  5765. clearParameter ( "SPMMB08600_prcpexecdeptcd" );
  5766. clearParameter ( "SPMMB08600_orddeptcd" );
  5767. clearParameter ( "SPMMB08600_orddrid" );
  5768. clearParameter ( "SPMMB08600_prcpclscd" );
  5769. clearParameter ( "SPMMB08600_drugmthdspccd" );
  5770. clearParameter ( "SPMMB08600_userinfo" );
  5771. setParameter("SPMMB08600_prcpdd", prcpdd);
  5772. setParameter("SPMMB08600_prcpcd", prcpcd);
  5773. setParameter("SPMMB08600_prcpnm", prcpnm);
  5774. setParameter("SPMMB08600_prcpexecdeptcd", prcpexecdeptcd);
  5775. setParameter("SPMMB08600_prcpclscd", prcpclscd);
  5776. setParameter("SPMMB08600_orddeptcd", orddeptcd);
  5777. setParameter("SPMMB08600_orddrid", orddrid);
  5778. setParameter("SPMMB08600_drugmthdspccd", drugmthdspccd);
  5779. setParameter("SPMMB0800_ioflag", ordtype);
  5780. // "sysmenu:hidden;" 닫기버튼 삭제
  5781. modal("SPMMB08600", mon, xpt, ypt, null, null, null, "sysmenu:hidden;", false);
  5782. useyn = getParameter("SPMMB08600_useyn");
  5783. userid = getParameter("SPMMB08600_userid");
  5784. } else {
  5785. clearParameter ( "SPMMB08300_flag");
  5786. clearParameter ( "SPMMB08300_useyn" );
  5787. clearParameter ( "SPMMB08300_userid" );
  5788. clearParameter ( "SPMMB08300_orddeptcd" );
  5789. clearParameter ( "SPMMB08300_userinfo" );
  5790. setParameter("SPMMB08300_orddeptcd", prcpexecdeptcd);
  5791. setParameter("SPMMB08300_ioflag", ordtype);
  5792. modal("SPMMB08300", mon, xpt, ypt, null, null, null, "sysmenu:hidden;", false);
  5793. useyn = getParameter("SPMMB08300_useyn");
  5794. userid = getParameter("SPMMB08300_userid");
  5795. }
  5796. if(useyn == "Y"){
  5797. if ( mode == "pop" ) {
  5798. if ( model.getValue ( "/root/main/prcp/prcplist/tempcol24" ) == "Y" ) {
  5799. model.setValue ( "/root/main/prcp/prcplist/choiordflag", "Y" );
  5800. model.setValue ( "/root/main/prcp/prcplist/specdrid", userid );
  5801. } else {
  5802. model.setValue ( "/root/main/prcp/prcplist/choiordflag", "N" );
  5803. model.setValue ( "/root/main/prcp/prcplist/specdrid", "-");
  5804. }
  5805. } else if ( mode == "auto" ) {
  5806. if ( model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/tempcol24" ) == "Y" ) {
  5807. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/choiordflag", "Y" );
  5808. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/specdrid", userid );
  5809. } else {
  5810. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/choiordflag", "N" );
  5811. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/specdrid", "-");
  5812. }
  5813. } else {
  5814. var selectedRows = grd_prcplist.selectedRows;
  5815. for (var i=0; i< selectedRows; i++) {
  5816. if ( model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/tempcol24" ) == "Y" ) {
  5817. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/choiordflag", "Y" );
  5818. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/specdrid", userid );
  5819. } else {
  5820. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/choiordflag", "N" );
  5821. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/specdrid", "-");
  5822. }
  5823. }
  5824. }
  5825. } else {
  5826. if ( mode == "pop" ) {
  5827. model.setValue ( "/root/main/prcp/prcplist/choiordflag", "N" );
  5828. model.setValue ( "/root/main/prcp/prcplist/specdrid", "-");
  5829. } else if ( mode == "auto" ) {
  5830. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/choiordflag", "N" );
  5831. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/specdrid", "-");
  5832. } else {
  5833. var selectedRows = grd_prcplist.selectedRows;
  5834. for (var i=0; i< selectedRows; i++) {
  5835. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/choiordflag", "N" );
  5836. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/specdrid", "-");
  5837. }
  5838. }
  5839. }
  5840. var sysMessageobj = getViewer("sysMessage");
  5841. // 선택진료의사가 아닐 경우 는 기본값으로 셋팅한다.
  5842. if (mode =="pop") {
  5843. var chkChoiSpcldrid = model.getValue ( "/root/main/prcp/prcplist/specdrid" );
  5844. var choiSpclDrid = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/usercombo[refseq = 'A' and userid ='" + chkChoiSpcldrid + "']/userid");
  5845. if ( choiSpclDrid == null) {
  5846. model.setValue ( "/root/main/prcp/prcplist/choiordflag", "N" );
  5847. if (chkChoiSpcldrid == getUserInfo("userid")) {
  5848. model.setValue ( "/root/main/prcp/prcplist/specdrid", chkChoiSpcldrid);
  5849. } else {
  5850. model.setValue ( "/root/main/prcp/prcplist/specdrid", "-");
  5851. }
  5852. }
  5853. } else if (mode == "auto") {
  5854. var chkChoiSpcldrid = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/specdrid" );
  5855. var choiSpclDrid = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/usercombo[refseq = 'A' and userid ='" + chkChoiSpcldrid + "']/userid");
  5856. if ( choiSpclDrid == null) {
  5857. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/choiordflag", "N" );
  5858. if(chkChoiSpcldrid == getUserInfo("userid")) {
  5859. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/specdrid", chkChoiSpcldrid);
  5860. } else {
  5861. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/specdrid", "-");
  5862. }
  5863. }
  5864. } else {
  5865. var selectedRows = grd_prcplist.selectedRows;
  5866. for (var i=0; i< selectedRows; i++) {
  5867. var chkChoiSpcldrid = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/specdrid");
  5868. var choiSpclDrid = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/usercombo[refseq = 'A' and userid ='" + chkChoiSpcldrid + "']/userid");
  5869. if ( choiSpclDrid == null) {
  5870. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/choiordflag", "N" );
  5871. if(chkChoiSpcldrid == getUserInfo("userid")) {
  5872. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/specdrid", chkChoiSpcldrid);
  5873. } else {
  5874. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/specdrid", "-");
  5875. }
  5876. }
  5877. }
  5878. }
  5879. model.refresh();
  5880. }
  5881. /**
  5882. * @desc : 처방이 발행될때 set로 같이 나가야할 처방 처리
  5883. * @param : objFlag - child or else
  5884. : strSrc - source node
  5885. : strDest - 목적지 node; child일때는 opener.root.main.prcp, 아니면 "/root/main/prcp" 이다
  5886. : sendRow - 검색된 내용중 메인으로 보내고자 하는 row
  5887. : srchRow - 메인에 들어간 자리. 검색로우(srchRow) 바로 전이다.
  5888. : prcpInptFlag - - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  5889. : groupSrc - 옵션: group처방 검색할 경우 node
  5890. : direcSrc - 옵션: group 지시처방 검색할 경우 node
  5891. : prcpInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  5892. * @return : srchRow 에러시 0
  5893. * @authur : 마정민 2008. 6. 25
  5894. * @---------------------------------------------------
  5895. */
  5896. function fAddSetPrcpChkKNUH ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag ) {
  5897. var prcpcd = model.getValue( strSrc + "[" + i + "]/prcpcd" );
  5898. var addprcpcd = "";
  5899. var addprcpcnt = 0;
  5900. // if (prcpcd == "LCT101") addprcpcd = "DDIS50";
  5901. // else if (prcpcd == "LCT001") addprcpcd = "DDIS75";
  5902. // else if (prcpcd == "LCT002") addprcpcd = "DDIS100";
  5903. // else if (prcpcd == "NHC297EG") addprcpcd = "FE654303G"; //by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청
  5904. var iFind = -1;
  5905. var setprcpchk = "";
  5906. var cnts = getNodesetCount("/root/init/autosetprcplist/hardcd");
  5907. if ( objFlag == "child" ) {
  5908. srchPrcpcd = opener.model.getValue ( "/root/init/autosetprcplist/hardcd[hardcd = '" + prcpcd + "']/hardcd" );
  5909. setprcpchk = opener.model.getValue ( "/root/init/autosetprcplist/hardcd[hardcd = '" + prcpcd + "']/hardcdnm" );
  5910. } else {
  5911. srchPrcpcd = model.getValue ( "/root/init/autosetprcplist/hardcd[hardcd = '" + prcpcd + "']/hardcd" );
  5912. setprcpchk = model.getValue ( "/root/init/autosetprcplist/hardcd[hardcd = '" + prcpcd + "']/hardcdnm" );
  5913. }
  5914. // 기존 search함수에서 무결성이 어긋나 개별 체크 변경 - 20081008 by MoonSH
  5915. var precureprcpflag = "";
  5916. var calcflag = "";
  5917. var drprcpetc8 = "";
  5918. if( !isNull(srchPrcpcd)) {
  5919. var secStage = setprcpchk.split("|");
  5920. iFind = 1 ;
  5921. calcflag = secStage[0];
  5922. addprcpcd = secStage[1];
  5923. drprcpetc8 = secStage[2];
  5924. }
  5925. if ( parseInt(iFind) >= 0) {
  5926. var prcpdd = "";
  5927. var insukind = "";
  5928. if ( objFlag == "child" ) {
  5929. prcpdd = opener.model.getValue ( "/root/init/prcpdd" );
  5930. insukind = opener.model.getValue ( "/root/paminfo/list/insukind");
  5931. } else {
  5932. prcpdd = model.getValue ( "/root/init/prcpdd" );
  5933. insukind = model.getValue ( "/root/paminfo/list/insukind");
  5934. }
  5935. //멀티 search 가능함
  5936. model.makeValue("/root/send/addsetprcp[1]/prcpcd",addprcpcd);
  5937. model.makeValue("/root/send/addsetprcp[1]/prcpdd",prcpdd);
  5938. model.makeValue("/root/send/addsetprcp[1]/insukind",insukind);
  5939. model.makeValue("/root/send/addsetprcp[1]/srchkind","B2");
  5940. if ( submit("TRMMO00207",false)) {
  5941. /*
  5942. **by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청 수정 시작.
  5943. ** 처방코드 : NHC297EMG, 자동발생코드 : FE654303G
  5944. ** 자동발생코드는 돈계산에서 제외되어야 함.
  5945. ** 자동발생코드 처방전달사항 자동 생성=>[HEART-SPECT 핵의학검사용]
  5946. */
  5947. //20090420 마정민 수정 HARDCODE 테이블로 분리
  5948. var nd = model.instance1.selectNodes("/root/addsetprcp/prcplist");
  5949. if( nd != null && nd.length > 0) {
  5950. //model.setValue("/root/addsetprcp/prcplist[1]/prcpdelivefact", prcpdelivefact );
  5951. model.setValue("/root/addsetprcp/prcplist[1]/drprcpetc8", drprcpetc8);
  5952. //by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청 수정 끝
  5953. //serPrcpSrchRow = addPrcpDetl ( objFlag , "root/addsetprcp/prcplist" , strDest , 1 , srchRow, prcpInptFlag );
  5954. //by sonjy 20091031 자동발생 처방 입력 구분 추가
  5955. //SET 처방일 때 약품의 기본 일수는 수가계산법이 어떤 것이든 기본을 1일로 되도록 요청번호:8875
  5956. serPrcpSrchRow = addPrcpDetl ( objFlag , "root/addsetprcp/prcplist" , strDest , 1 , srchRow, "34" );
  5957. if (serPrcpSrchRow != 0 ) srchRow++;
  5958. }
  5959. }
  5960. model.removeNodeset("/root/send/addsetprcp");
  5961. }
  5962. return srchRow;
  5963. }
  5964. /**
  5965. * @desc : 처방 코드 정보를 조회 하는 함수 addPrcpSetValue()에서 값을 셋팅 할때 처방 코드별 참조자료를 셋팅 한다.
  5966. * @param : sPrcpCodes - 처방 편집 화면으로 복사되는 처방 코드
  5967. * @return : 처방화면(SMMO00100) /root/prcpcodeinfo 셋팅
  5968. * @authur : 엄영만 2011. 10. 13
  5969. * @---------------------------------------------------
  5970. */
  5971. function fGetPrcpCodeInfo(sPrcpCodes) {
  5972. var pamInfoNode = "/root/paminfo/list";
  5973. var prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" ); //입력구분
  5974. var prcpdd = model.getValue ( "/root/init/prcpdd" ); //처방일
  5975. var pid = model.getValue ( pamInfoNode + "/pid" );
  5976. var ioflag = model.getValue ( pamInfoNode + "/ioflag" );
  5977. var cretno = model.getValue ( pamInfoNode + "/cretno" );
  5978. var orddeptcd = model.getValue ( pamInfoNode + "/orddeptcd" );
  5979. var orddd = "";
  5980. var orddrid = "";
  5981. //건진일 경우 check추가.
  5982. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ) {
  5983. orddd = model.getValue ( pamInfoNode + "/orddd" );
  5984. orddrid = model.getValue ( pamInfoNode + "/orddrid" );
  5985. } else {
  5986. orddd = model.getValue ( pamInfoNode + "/indd" );
  5987. orddrid = model.getValue ( pamInfoNode + "/medispclid" );
  5988. }
  5989. model.resetInstanceNode ( "/root/send" );
  5990. model.resetInstanceNode ( "/root/prcpcodeinfo" );
  5991. if(!isNull(sPrcpCodes)){
  5992. model.setValue( "/root/send/cond1", sPrcpCodes ); //처방코드
  5993. model.setValue( "/root/send/cond2", prcpdd ); //처방일
  5994. model.setValue( "/root/send/cond3", ioflag ); //외래입원구분
  5995. model.setValue( "/root/send/cond4", pid ); //등록번호
  5996. model.setValue( "/root/send/cond5", orddd ); //진료일자
  5997. model.setValue( "/root/send/cond6", cretno ); //생성번호
  5998. model.setValue( "/root/send/cond7", orddeptcd ); //진료과
  5999. model.setValue( "/root/send/cond8", orddrid ); //진료의
  6000. if(!submit("TRMMO00143",false)){
  6001. // 테스트 메세지 팝업 여부 추후 삭제 해야 함. 엄영만 2011.11.19
  6002. var sChkMsgPopYn = fGetHardCDList("Y", 403, 3); // 403 테스트메세지 사용여부
  6003. if (sChkMsgPopYn == "Y"){
  6004. alert("처방정보 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  6005. }
  6006. }
  6007. }
  6008. }
  6009. /**
  6010. * @desc : 선택진료 여부 선택진료의사를
  6011. * addPrcpSetValue()에서 값을 셋팅 선택진료처방 및 선택진료의사를 셋팅 한다..
  6012. * @param : strSrc => setting할 source node
  6013. : sendRow => setting할 row
  6014. : prcpInptFlag => 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  6015. * @return : 선택진료처방여부, 선택진료의사 셋팅
  6016. * @authur : 엄영만 2011. 11. 08
  6017. * @---------------------------------------------------
  6018. */
  6019. function fSetPrcpSpecValue( strSrc, sendRow, prcpInptFlag ) {
  6020. //2011.01.12 MJM수정. 선택진료 가능처방은 일괄위임일 경우 무조건 선택진료처리.
  6021. //2011.10.01 고시관련 수정 일괄위임의 경우 선택진료 처리.
  6022. //선택진료여부처리는 결정(검사,영상진단) 무조건 선택진료가능항목으로 처리
  6023. var pamInfoNode = "/root/paminfo/list";
  6024. var prcpCodeNode = "/root/prcpcodeinfo/prcpcodelist";
  6025. var sChoiordFlag = "N";
  6026. var sOrdDrId = "";
  6027. var sPrcpClsCd = model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ); // 처방종류
  6028. var sPrcpCd = model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" ); // 처방코드
  6029. var sDrugMthdSpcCd = model.getValue ( strSrc + "[" + sendRow + "]/drugmthdspccd" ); // 처방 검체코드(병리 처방은 검체코드가 있을때만 선택진료 설정함.)
  6030. var sPrcpGenrFlag = model.getValue ( "/root/patflag/list/prcpgenrflag" ); // 처방입력구분(외래, 입원, 응급..)
  6031. var sSpecOrdType = model.getValue ( pamInfoNode + "/specordtype" ); // 선택진료 타입 (B:일괄 위임)
  6032. var sSpcspifYn = ""; // 부분 선택진료 위임 여부
  6033. var sSpecCls = ""; // 선택진료처방 분류
  6034. var sTodaySpcDrId = ""; // 오늘 선택진료의
  6035. var sAllSpcDrId = ""; // 가능 선택진료의
  6036. var sPreSpecDrId = ""; // 기존 선택진료의
  6037. var sPrcpSpecDrId = "";
  6038. var sChkSpecDrId = "";
  6039. var sUserID = getUserInfo("userid");
  6040. sSpcspifYn = model.getValue ( prcpCodeNode + "[prcpcd='" + sPrcpCd + "']/spcspifyn" );
  6041. if(isNull(sSpcspifYn)) { // 처방 코드 정보가 없으면 -- App 처방 복사 로직
  6042. sSpcspifYn = model.getValue ( strSrc + "[" + sendRow + "]/spcspifyn" ); // 부분 선택진료 위임 여부
  6043. sSpecCls = model.getValue ( strSrc + "[" + sendRow + "]/speccls" ); // 선택진료처방 분류
  6044. sTodaySpcDrId = model.getValue ( strSrc + "[" + sendRow + "]/todayspcdrid" ); // 오늘 선택진료의
  6045. sAllSpcDrId = model.getValue ( strSrc + "[" + sendRow + "]/allspcdrid" ); // 가능 선택진료의
  6046. } else { // 처방 코드 정보가 있으면 -- Web 처방 복사 로직
  6047. sSpcspifYn = model.getValue ( prcpCodeNode + "[prcpcd='" + sPrcpCd + "']/spcspifyn" ); // 부분 선택진료 위임 여부
  6048. sSpecCls = model.getValue ( prcpCodeNode + "[prcpcd='" + sPrcpCd + "']/speccls" ); // 선택진료처방 분류
  6049. sTodaySpcDrId = model.getValue ( prcpCodeNode + "[prcpcd='" + sPrcpCd + "']/todayspcdrid" ); // 오늘 선택진료의
  6050. sAllSpcDrId = model.getValue ( prcpCodeNode + "[prcpcd='" + sPrcpCd + "']/allspcdrid" ); // 가능 선택진료의
  6051. }
  6052. if (model.getValue ( strSrc + "[" + sendRow + "]/tempcol24" ) == "Y" ) { //선택진료가능처방
  6053. if (sPrcpGenrFlag == "E") { // 응급실에서 발행 하는 처방일경우 선택진료 자동 셋팅 하지 않도록 수정. 심사실 윤순길팀장님 요청. 엄영만 2011.11.23
  6054. if ( sSpecOrdType == "B" || sSpcspifYn == "Y" ) {// 일괄선택진료 위임 일 경우 또는 부분선택진료 위임 일 경우(처방 항목에 위임)
  6055. sChoiordFlag = "Y";
  6056. model.setValue ( strSrc + "[" + sendRow + "]/choiordflag", "Y" );
  6057. }
  6058. } else { // 응급실에서 발행 하는 처방이 아닐 경우
  6059. if ( model.getValue ( pamInfoNode + "/specordyn" ) == "Y" // 선택진료의사(교수님 진료)
  6060. || sSpecOrdType == "B" // 일괄선택진료 위임 일 경우
  6061. || sSpcspifYn == "Y" // 부분선택진료 위임 일 경우(처방 항목에 위임)
  6062. || sSpecCls == "02" // 선택진료 분류가 검사인것
  6063. || sSpecCls == "03" // 선택진료 분류가 영상진단인것
  6064. || (sPrcpClsCd == "C6" && model.getValue ( pamInfoNode + "/insukind" ) == "11" ) // 건강보험이면서 처방분류가 핵의학체내 일 경우는 무조건 선택진료가 발생하도록 수정 (의사가 체크 해제 할 수 있음): 2011. 02.07 김영학
  6065. || (sPrcpClsCd == "D2" && model.getValue ( pamInfoNode + "/insukind" ) == "11" ) // 건강보험이면서 처방분류가 병리 처방은 선택진료 가능 처방은 무조건 선택진료로 한다. 김영학
  6066. || (prcpInptFlag == '02' && model.getValue ( strSrc + "[" + sendRow + "]/choiordflag") == "Y" ) ) { //약속처방이고 선택진료 체크 되어 있는경우
  6067. sChoiordFlag = "Y";
  6068. model.setValue ( strSrc + "[" + sendRow + "]/choiordflag", "Y" );
  6069. }
  6070. }
  6071. }
  6072. if ( sChoiordFlag == "Y" ) {
  6073. if ( sPrcpGenrFlag == "O" ) {
  6074. sOrdDrId = model.getValue ( "/root/paminfo/list/orddrid" );
  6075. } else {
  6076. sOrdDrId = model.getValue ( "/root/paminfo/list/medispclid" );
  6077. }
  6078. sPreSpecDrId = model.getValue ( strSrc + "[" + sendRow + "]/specdrid"); // 기존 선택진료의
  6079. if (sPreSpecDrId == "-") {
  6080. sPreSpecDrId = "";
  6081. }
  6082. if (sPrcpClsCd == "D2" && (!isNull(sDrugMthdSpcCd) || sDrugMthdSpcCd != "-")) { // 병리처방은 검체 코드로 조회 한다.
  6083. var sPrcpDd = model.getValue ( "/root/init/prcpdd" );
  6084. //model.resetInstanceNode ( "/root/send" );
  6085. model.resetInstanceNode ( "/root/spcdrinfo" );
  6086. model.setValue( "/root/send/cond1", "G" ); //코드구분(S 수가코드, G 검체)
  6087. model.setValue( "/root/send/cond2", sPrcpDd ); //처방일
  6088. model.setValue( "/root/send/cond3", sDrugMthdSpcCd ); //검체코드
  6089. if(!submit("TRMMO00144",false)){
  6090. alert("병리검체 선택진료의사 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  6091. }
  6092. sTodaySpcDrId = model.getValue ( "/root/spcdrinfo/info/todayspcdrid" ); // 오늘 선택진료의
  6093. sAllSpcDrId = model.getValue ( "/root/spcdrinfo/info/allspcdrid" ); // 가능 선택진료의
  6094. }
  6095. if (isSearchString(sAllSpcDrId, sOrdDrId) ){ // 가능선택의에 진료의가 포함 될 경우
  6096. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", sOrdDrId);
  6097. } else if( (prcpInptFlag == '02' || prcpInptFlag == '05') && !isNull(sPreSpecDrId) && isSearchString(sAllSpcDrId, sPreSpecDrId)) { // 약속처방 선택의가 가능선택의일 경우 약속처방 선택의 설정
  6098. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", sPreSpecDrId);
  6099. } else {
  6100. switch(sTodaySpcDrId) {
  6101. case "NO_DATA_FOUND": // 오늘 선택진료의사가 없는경우
  6102. if ( sAllSpcDrId == "NO_DATA_FOUND" ) { // 가능한 선택의가 없을경우
  6103. if ( (prcpInptFlag == '02' || prcpInptFlag == '05') && !isNull(sPreSpecDrId) ) { // 약속처방의사가 있으면
  6104. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", sPreSpecDrId);
  6105. } else if ( model.getValue ( pamInfoNode + "/specordyn" ) == "Y" ) { // 교수진료이고, 시행부서가 없거나 진료과랑 같으면 진료의로 설정
  6106. if ( model.getValue ( pamInfoNode + "/orddeptcd") == model.getValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd")
  6107. || model.getValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd") == ""
  6108. || model.getValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd") == "-") {
  6109. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", sOrdDrId ); // 진료의를 선택의로 설정
  6110. } else {
  6111. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6112. }
  6113. } else {
  6114. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6115. }
  6116. } else if (isSearchString(sAllSpcDrId, ",")) { // 가능의사가 2명 이상일경우
  6117. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6118. } else if (sAllSpcDrId == "ERROR") { // 가능의사 정보 조회시 에러
  6119. alert("선택진료 가능의사 정보 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  6120. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6121. } else { // 가능의사가 1명일 경우
  6122. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", sAllSpcDrId); // 가능의사 셋팅
  6123. }
  6124. break;
  6125. case "TOO_MANY_ROWS": // 오늘 선택진료의사가 2명이상인경우
  6126. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6127. break;
  6128. case "ERROR": // 오늘 선택진료의사정보를 가져오는중 에러
  6129. alert("오늘 선택진료 의사정보 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  6130. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6131. break;
  6132. default: // 오늘 선택진료의사가 1명인경우
  6133. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", sTodaySpcDrId); // 오늘 선택진료의 설정
  6134. break;
  6135. }
  6136. }
  6137. sPrcpSpecDrId = model.getValue ( strSrc + "[" + sendRow + "]/specdrid")
  6138. sChkSpecDrId = model.getValue("/root/init/specdrinfo/usercombo[userid = '" + sPrcpSpecDrId + "']/userid");
  6139. if (isNull(sChkSpecDrId) && (sPrcpSpecDrId != sUserID) ) { // 진료의가 선택진료의와 같은경우 선택진료 가능여부 체크 하지 않도록 수정 2015.09.21 엄영만
  6140. model.setValue ( strSrc + "[" + sendRow + "]/choiordflag", "" );
  6141. fChgChoiDr ( "auto", sendRow );
  6142. }
  6143. } else {
  6144. model.setValue ( strSrc + "[" + sendRow + "]/choiordflag", "N" );
  6145. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", "-" );
  6146. }
  6147. //이은영 과장 요청 마취의 setting by sonjy 20081010 start
  6148. if ( model.getValue ( "/root/anst/paramyn" ) == "Y" ) {
  6149. if ( sPrcpClsCd == "I2" || sPrcpClsCd == "I4" ) {
  6150. //마취의 ID가 있을 경우 만 setting
  6151. if( !isNull( model.getValue ( "/root/anst/anst_drid") ) ){
  6152. //특진처방 이나 의사가 특진의사가 아닌경우 일반진료처방으로 설정
  6153. if( sChoiordFlag == "Y" ) {
  6154. if( model.getValue ( "/root/anst/anst_specordflag") != "A" ){
  6155. model.setValue ( strSrc + "[" + sendRow + "]/choiordflag", "N" );
  6156. }
  6157. }
  6158. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", model.getValue ( "/root/anst/anst_drid") ) ;
  6159. }
  6160. }
  6161. }
  6162. //마취의 setting by sonjy 20081010 end
  6163. //20110517_김영학 /선택진료 처방이지만 선택진료의가 비선택진료의 일 경우에는 선택진료여부를 기본값으로 변경한다.
  6164. // 선택진료 체크가 되어 있으면서 의사가 비선택의사 일 경우에는 선택진료 여부를 -으로 처리한다.
  6165. var sysMessageobj = getViewer("sysMessage");
  6166. if (sChoiordFlag == "Y" ) {
  6167. var chkChoiSpcldrid = model.getValue ( strSrc + "[" + sendRow + "]/specdrid" );
  6168. var choiSpclDrid = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/usercombo[refseq = 'A' and userid ='" + chkChoiSpcldrid + "']/userid");
  6169. if ( choiSpclDrid == null) {
  6170. if(chkChoiSpcldrid == sUserID) {
  6171. model.setValue ( strSrc + "[" + sendRow + "]/choiordflag", "N" );
  6172. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", chkChoiSpcldrid );
  6173. } else {
  6174. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", "-" );
  6175. }
  6176. }
  6177. }
  6178. //20110517 선택진료 처방이지만 선택진료의가 비선택진료의 일 경우에는 선택진료여부를 기본값으로 변경한다. END
  6179. }
  6180. /**
  6181. * @desc : 서브밋 중인지 체크 함수
  6182. * @param :
  6183. * @return : 서브밋 중이면 true, 아니면 false
  6184. * @authur : 엄영만 2011. 11. 16
  6185. * @---------------------------------------------------
  6186. */
  6187. function fIsOnSubmit(){
  6188. if(!isNull(gvOnSubmit)){
  6189. return gvOnSubmit;
  6190. } else {
  6191. return false;
  6192. }
  6193. }
  6194. /**
  6195. * @desc : 처방화면 검색 Row 리턴 함수
  6196. * @param :
  6197. * @return : 처방화면의 검색 Row를 리턴 한다.
  6198. * @authur : 엄영만 2012. 03. 26
  6199. * @---------------------------------------------------
  6200. */
  6201. function fGetPrcpSrchRow(objFlag, strPrcpPath){
  6202. var srchRow = 0;
  6203. var prcpNodeList;
  6204. if ( objFlag == "child") {
  6205. prcpNodeList = opener.model.instances(0).selectNodes( strPrcpPath + "/prcplist" ); //dest Node에서 prcplist는 약속으로 하자.
  6206. for ( i = destNodeList.length; i>0; i-- ){
  6207. if(opener.model.getValue ( strPrcpPath + "/prcplist[" + i + "]" ) == "S") {
  6208. srchRow = i;
  6209. break;
  6210. }
  6211. }
  6212. } else {
  6213. prcpNodeList = model.instances(0).selectNodes( strPrcpPath + "/prcplist" );
  6214. for ( i = destNodeList.length; i>0; i-- ){
  6215. if(model.getValue ( strPrcpPath + "/prcplist[" + i + "]" ) == "S") {
  6216. srchRow = i;
  6217. break;
  6218. }
  6219. }
  6220. }
  6221. if(srchRow < 1) {
  6222. if(prcpNodeList.length == 0)
  6223. srchRow = 1;
  6224. else
  6225. srchRow = prcpNodeList.length+1;
  6226. }
  6227. return srchRow;
  6228. }
  6229. /**
  6230. * @desc : 전처방검색
  6231. * @param : pid: 환자ID
  6232. : orddd: 외래:진료일, 입원:입원일
  6233. : prcpdd: 처방일
  6234. : bfflag: 전처방 where 조건 구분자
  6235. : initflag: 최초구분
  6236. : orddrid: 의사ID,외래에서만 필요하다.
  6237. : todd
  6238. : prcpgenrflag: 외래입원구분
  6239. : orddeptcd: 부서코드
  6240. : cretno: 원무생성번호
  6241. : ioflag: 외래, 입원, 응급 구분
  6242. : refreshFlag: refresh 여부
  6243. : followup: 퇴원후 외래처방일과 동일한 처방일이거나 initsrch 와 동일한 날짜가 있을 경우 followdd를 입력한다.
  6244. : bfprcpviewflag : 전처방 조회 조건 개인별 설정기능 추가 by sonjy 20091120
  6245. * @return : void
  6246. * @authur : 마정민 2007. 6. 21
  6247. */
  6248. function fBfPrcpSrchCom_New ( pid, orddd, prcpdd, bfflag, initflag, orddrid, todd, prcpgenrflag, orddeptcd, cretno, trnm, refreshFlag, prcpauthflag, followup , bfprcpviewflag) {
  6249. if ( isNull(trnm)) {
  6250. trnm = "TRMMO00100";
  6251. }
  6252. if ( isNull(refreshFlag)) {
  6253. refreshFlag = false;
  6254. }
  6255. if ( isNull(prcpauthflag)) {
  6256. prcpauthflag = "0";
  6257. }
  6258. var curprcpdd = opener.model.getValue ( "/root/init/prcpdd" );
  6259. if (isNull(curprcpdd)) {
  6260. curprcpdd = model.getValue ( "/root/init/prcpdd" );
  6261. if (isNull(curprcpdd)){
  6262. curprcpdd = getCurrentDate();
  6263. }
  6264. }
  6265. var oprsrvno = "";
  6266. if (!isNull(opener.model.getValue ( "/root/operation/list/oprsrvno"))) {
  6267. orddd = opener.model.getValue ( "/root/operation/list/oprsrvno");
  6268. if (opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) == "O"){
  6269. prcpgenrflag = "OUTOP";
  6270. } else {
  6271. prcpgenrflag = "OP";
  6272. }
  6273. } else if (!isNull(model.getValue ( "/root/operation/list/oprsrvno"))) {
  6274. orddd = model.getValue ( "/root/operation/list/oprsrvno");
  6275. if (model.getValue ( "/root/patflag/list/prcpgenrflag" ) == "O"){
  6276. prcpgenrflag = "OUTOP";
  6277. } else {
  6278. prcpgenrflag = "OP";
  6279. }
  6280. }
  6281. model.setValue ( "/root/send/cond1", pid); //환자ID
  6282. model.setValue ( "/root/send/cond2", orddd ); //외래:진료일, 입원:입원일
  6283. model.setValue ( "/root/send/cond3", prcpauthflag ); //처방권한 구분
  6284. model.setValue ( "/root/send/cond4", prcpdd ); //처방일자
  6285. model.setValue ( "/root/send/cond5", bfflag ); //전처방 where 조건 구분자
  6286. model.setValue ( "/root/send/cond6", initflag ); //최초구분
  6287. model.setValue ( "/root/send/cond7", orddrid); //의사ID,외래에서만 필요하다.
  6288. model.setValue ( "/root/send/cond8", todd); //todd
  6289. model.setValue ( "/root/send/cond9", prcpgenrflag ); //외래입원구분
  6290. model.setValue ( "/root/send/cond10", orddeptcd ); //부서코드
  6291. model.setValue ( "/root/send/cond11", cretno ); //생성번호
  6292. model.makeValue( "/root/send/cond14", curprcpdd );
  6293. if (!isNull(followup)){
  6294. model.makeValue( "/root/send/cond12", "followup" ); //외래follow up
  6295. }
  6296. var insukind = opener.model.getValue ( "/root/paminfo/list/insukind");
  6297. if (isNull(insukind)) insukind = model.getValue ( "/root/paminfo/list/insukind");
  6298. if (!isNull(insukind)){
  6299. model.makeValue( "/root/send/cond13", insukind ); //외래follow up
  6300. }
  6301. model.setValue ( "/root/send/cond99", "getBfPrcpSrchInfo" );//검색구분
  6302. opener.ivw_prcp3.src = "SMMMO02100_전회처방.xrw";
  6303. //by sonjy 전처방 조회모드 설정 20091120
  6304. if( bfflag == "bfprcp" || bfflag == "addprcp" ){
  6305. if(!isNull(bfprcpviewflag) ) model.makeValue( "/root/send/bfprcpviewflag",bfprcpviewflag);
  6306. }
  6307. if ( refreshFlag == false ) {
  6308. copyNodeset("root/prcpsrch/prcplist", "root/savertninfo/prcplist", "replace", opener.ivw_prcp3.model, model)
  6309. } else {
  6310. copyNodeset("root/prcpsrch/prcplist", "root/savertninfo/prcplist", "replace", opener.ivw_prcp3.model, model)
  6311. }
  6312. //CP일 경우, viewer안의 컨트롤 height 사이즈를 모두 조정해야 함 (2008.08.28 JJE)
  6313. if ( opener.model.getValue ( "/root/cp" ) == "Y" ) {
  6314. opener.window.javascript.fResizeControls();
  6315. }
  6316. }
  6317. /**
  6318. * @desc : 인증 암호화 전 데이터 생성
  6319. * @param : sFlag: 인증정보 구분 ("1":처방정보, "2":진단정보)
  6320. : sRegpath : 접수정보 인스턴스노드 패스
  6321. : sSrcPath : 정보 인스턴스노드 패스
  6322. * @return : void
  6323. * @authur : 엄영만 2013. 05. 29
  6324. */
  6325. function getSignBfConts (sFlag, sRegpath, sSrcPath) {
  6326. var sRtn = "";
  6327. var sRegConts = ""; // 환자 등록정보
  6328. var sSrcConts = ""; // 처방및 진단 암호화전 데이터
  6329. var regNodeList = model.instances(0).selectNodes(sRegpath);
  6330. var srcNodeList = model.instances(0).selectNodes(sSrcPath);
  6331. if ( !regNodeList.length > 0 || !srcNodeList.length > 0) { return sRtn; }
  6332. var sOrdType = model.getValue( sRegpath + "/ioflag");
  6333. sRegConts = "$환자진료정보";
  6334. sRegConts = sRegConts + "@등록번호:" + model.getValue( sRegpath + "/pid");
  6335. sRegConts = sRegConts + "@이름:" + model.getValue( sRegpath + "/hngnm");
  6336. sRegConts = sRegConts + "@성별/나이:" + model.getValue( sRegpath + "/sex") + "/" + model.getValue( sRegpath + "/age");
  6337. sRegConts = sRegConts + "@진료과:" + model.getValue( sRegpath + "/orddeptnm") + "(" + model.getValue( sRegpath + "/orddeptcd") + ")";
  6338. if ("O" == sOrdType || "S" == sOrdType) { // 외래
  6339. sRegConts = sRegConts + "@진료의:" + model.getValue( sRegpath + "/orddrnm") + "(" + model.getValue( sRegpath + "/orddrid") + ")";
  6340. sRegConts = sRegConts + "@진료일자:" + model.getValue( sRegpath + "/orddd").toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일");
  6341. } else { // 입원
  6342. sRegConts = sRegConts + "@진료의:" + model.getValue( sRegpath + "/orddrnm") + "(" + model.getValue( sRegpath + "/medispclid") + ")";
  6343. sRegConts = sRegConts + "@입원일자:" + model.getValue( sRegpath + "/indd").toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일");
  6344. }
  6345. switch (sFlag) {
  6346. case "1": // 처방정보
  6347. var sStatus = "";
  6348. var sPrcpflag = "";
  6349. var sPrcpclscd = "";
  6350. var sPrcpdd = "";
  6351. sSrcConts = "$환자처방정보";
  6352. for(var i = 1; i <= srcNodeList.length; i++) {
  6353. sStatus = model.getValue( sSrcPath + "[" + i + "]/status");
  6354. sPrcpflag = model.getValue( sSrcPath + "[" + i + "]/prcpflag");
  6355. sPrcpclscd = model.getValue( sSrcPath + "[" + i + "]/prcpclscd");
  6356. sPrcpdd = model.getValue( sSrcPath + "[" + i + "]/prcppkspec").substring(0,8);
  6357. // 20100210 한재상 수정 - 사망환자 사망등록이후 처방시 처방일자를 사망일자로 변경
  6358. if ("I" == sOrdType || "E" == sOrdType || "D" == sOrdType) {
  6359. if ("I" == sStatus || "-" == sStatus || "U" == sStatus) {
  6360. var sDethdd = model.getValue( sRegpath + "/dethdt"); // 사망일자 설정
  6361. if(sDethdd.length >= 8 && sPrcpdd > sDethdd ) {
  6362. sPrcpdd = sDethdd;
  6363. }
  6364. }
  6365. }
  6366. if ("I" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; }
  6367. else if ("-" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; } // 임시저장후 인증저장
  6368. else if ("U" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; } // 임시저장후 수정 인증저장
  6369. else if ("D" == sStatus) { sSrcConts = sSrcConts + "@처리구분:DC(임시저장)"; } // 임시저장후 DC
  6370. else if ("C" == sStatus) { sSrcConts = sSrcConts + "@처리구분:DC"; }
  6371. else if ("S" == sStatus) {
  6372. if ("O" == model.getValue( sSrcPath + "[" + i + "]/prcphistcd")) { sSrcConts = sSrcConts + "@처리구분:후인증"; }
  6373. else if ("D" == model.getValue( sSrcPath + "[" + i + "]/prcphistcd")) { sSrcConts = sSrcConts + "@처리구분:DC 후인증"; }
  6374. } else { continue; }
  6375. if ("1" == sPrcpflag) { sSrcConts = sSrcConts + "@처방구분:수가"; }
  6376. else if ("2" == sPrcpflag) { sSrcConts = sSrcConts + "@처방구분:지시"; }
  6377. else if ("3" == sPrcpflag) { sSrcConts = sSrcConts + "@처방구분:식사"; }
  6378. else { continue; }
  6379. sSrcConts = sSrcConts + "@처방일자:" + sPrcpdd.toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일");
  6380. sSrcConts = sSrcConts + "@처방코드:" + model.getValue( sSrcPath + "[" + i + "]/prcpcd");
  6381. sSrcConts = sSrcConts + "@처방명:" + model.getValue( sSrcPath + "[" + i + "]/prcpnm");
  6382. sSrcConts = sSrcConts + "@처방내역:" + model.getValue( sSrcPath + "[" + i + "]/prcpqty") + " * #" + model.getValue( sSrcPath + "[" + i + "]/prcptims") + " * " + model.getValue( sSrcPath + "[" + i + "]/prcpdayno");
  6383. if ("1" == sPrcpflag && "A" == sPrcpclscd.substring(0,1)) { // 복용방법, 비율처방
  6384. sSrcConts = sSrcConts + "@복용방법:" + model.getValue( sSrcPath + "[" + i + "]/drugmthdspccdnm") + "(" + model.getValue( sSrcPath + "[" + i + "]/drugmthdspccd") + ")";
  6385. if ( "-" != model.getValue( sSrcPath + "[" + i + "]/drugrateqty")) {
  6386. sSrcConts = sSrcConts + "@투여비율적용:" + model.getValue( sSrcPath + "[" + i + "]/drugrateqty").replaceAll("\\|", ",");
  6387. }
  6388. }
  6389. if ("1" == sPrcpflag && ( "B" == sPrcpclscd.substring(0,1) || "D2" == sPrcpclscd)) { // 진단검사, 병리 검체명
  6390. sSrcConts = sSrcConts + "@검체:" + model.getValue( sSrcPath + "[" + i + "]/drugmthdspccdnm") + "(" + model.getValue( sSrcPath + "[" + i + "]/drugmthdspccd") + ")";
  6391. }
  6392. sSrcConts = sSrcConts + "@전달사항:" + model.getValue( sSrcPath + "[" + i + "]/prcpdelivefact");
  6393. if ("1" == sPrcpflag && "C2" == sPrcpclscd) { // 임상소견
  6394. sSrcConts = sSrcConts + "@임상소견:" + model.getValue( sSrcPath + "[" + i + "]/clinccmtcnts")
  6395. }
  6396. if ("I" == sStatus || "-" == sStatus || "U" == sStatus) {
  6397. sSrcConts = sSrcConts + "@등록일시:" + new Date().getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  6398. sSrcConts = sSrcConts + "@등록자:" + getUserInfo("usernm") + "(" + getUserInfo("userid") + ")";
  6399. } else {
  6400. sSrcConts = sSrcConts + "@수정일시:" + new Date().getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  6401. sSrcConts = sSrcConts + "@수정자:" + getUserInfo("usernm") + "(" + getUserInfo("userid") + ")";
  6402. }
  6403. }
  6404. break;
  6405. case "2": // 진단정보
  6406. var sStatus = "";
  6407. var sDiagKindcd = "";
  6408. var sDiagKindcdFlag = "";
  6409. var sDiagHistCd = "";
  6410. sSrcConts = "$환자진단정보";
  6411. for(var i = 1; i <= srcNodeList.length; i++) {
  6412. sStatus = model.getValue( sSrcPath + "[" + i + "]/status");
  6413. sDiagKindcd = model.getValue( sSrcPath + "[" + i + "]/diagkindcd");
  6414. sDiagKindcdFlag = model.getValue( sSrcPath + "[" + i + "]/diagkindcdflag");
  6415. sDiagHistCd = model.getValue( sSrcPath + "[" + i + "]/diaghistcd");
  6416. if ("I" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; }
  6417. else if ("T" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; } // 임시저장후 인증저장
  6418. else if ("U" == sStatus) {
  6419. if ("T" == sDiagHistCd) { sSrcConts = sSrcConts + "@처리구분:신규"; // 임시저장후 수정 인증저장
  6420. } else { sSrcConts = sSrcConts + "@처리구분:수정"; }
  6421. }
  6422. else if ("D" == sStatus) { sSrcConts = sSrcConts + "@처리구분:삭제"; }
  6423. else if ("S" == sStatus) { continue } // 검색
  6424. else { continue; }
  6425. if ("C" == sDiagKindcd) { sSrcConts = sSrcConts + "@종류:확정"; }
  6426. else if ("R" == sDiagKindcd) { sSrcConts = sSrcConts + "@종류:R/O"; }
  6427. else { continue; }
  6428. if ("M" == sDiagKindcdFlag) { sSrcConts = sSrcConts + "@주부구분:주"; }
  6429. else if("S" == sDiagKindcdFlag) { sSrcConts = sSrcConts + "@주부구분:부"; }
  6430. else { continue; }
  6431. sSrcConts = sSrcConts + "@진단코드:" + model.getValue( sSrcPath + "[" + i + "]/diagcd");
  6432. sSrcConts = sSrcConts + "@진단영문명:" + model.getValue( sSrcPath + "[" + i + "]/diagengnm");
  6433. sSrcConts = sSrcConts + "@진단한글명:" + model.getValue( sSrcPath + "[" + i + "]/diaghngnm");
  6434. if ("I" == sStatus || "T" == sStatus || ("U" == sStatus && "T" == sDiagHistCd)) {
  6435. sSrcConts = sSrcConts + "@등록일시:" + new Date().getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  6436. sSrcConts = sSrcConts + "@등록자:" + getUserInfo("usernm") + "(" + getUserInfo("userid") + ")";
  6437. } else {
  6438. sSrcConts = sSrcConts + "@수정일시:" + new Date().getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  6439. sSrcConts = sSrcConts + "@수정자:" + getUserInfo("usernm") + "(" + getUserInfo("userid") + ")";
  6440. }
  6441. }
  6442. break;
  6443. default:
  6444. break;
  6445. }
  6446. if( sSrcConts != "$환자처방정보" && sSrcConts != "$환자진단정보" ) { // 저장할 처방 또는 진단정보가 있을경우만 리턴
  6447. sRtn = sRegConts + sSrcConts;
  6448. }
  6449. return sRtn;
  6450. }
  6451. /**
  6452. * @desc : 속도체크를 위한 모니터링 로그 데이터 생성.
  6453. * @param : sType: 모니터링 타입값
  6454. : sItem01 ~ sItem20 : 모니터링 필드값
  6455. * @return : void
  6456. * @authur : 엄영만 2013. 06. 27
  6457. */
  6458. function reqSetMonitoringLog (sType, sItem01, sItem02, sItem03, sItem04, sItem05, sItem06, sItem07, sItem08, sItem09, sItem10, sItem11, sItem12, sItem13, sItem14, sItem15, sItem16, sItem17, sItem18, sItem19, sItem20) {
  6459. try {
  6460. if(isNull(sType)) { if (0 == sType ) sType = sType.toString(); else sType = "-"; }
  6461. if(isNull(sItem01)) { if (0 == sItem01) sItem01 = sItem01.toString(); else sItem01 = "-"; }
  6462. if(isNull(sItem02)) { if (0 == sItem02) sItem02 = sItem02.toString(); else sItem02 = "-"; }
  6463. if(isNull(sItem03)) { if (0 == sItem03) sItem03 = sItem03.toString(); else sItem03 = "-"; }
  6464. if(isNull(sItem04)) { if (0 == sItem04) sItem04 = sItem04.toString(); else sItem04 = "-"; }
  6465. if(isNull(sItem05)) { if (0 == sItem05) sItem05 = sItem05.toString(); else sItem05 = "-"; }
  6466. if(isNull(sItem06)) { if (0 == sItem06) sItem06 = sItem06.toString(); else sItem06 = "-"; }
  6467. if(isNull(sItem07)) { if (0 == sItem07) sItem07 = sItem07.toString(); else sItem07 = "-"; }
  6468. if(isNull(sItem08)) { if (0 == sItem08) sItem08 = sItem08.toString(); else sItem08 = "-"; }
  6469. if(isNull(sItem09)) { if (0 == sItem09) sItem09 = sItem09.toString(); else sItem09 = "-"; }
  6470. if(isNull(sItem10)) { if (0 == sItem10) sItem10 = sItem10.toString(); else sItem10 = "-"; }
  6471. if(isNull(sItem11)) { if (0 == sItem11) sItem11 = sItem11.toString(); else sItem11 = "-"; }
  6472. if(isNull(sItem12)) { if (0 == sItem12) sItem12 = sItem12.toString(); else sItem12 = "-"; }
  6473. if(isNull(sItem13)) { if (0 == sItem13) sItem13 = sItem13.toString(); else sItem13 = "-"; }
  6474. if(isNull(sItem14)) { if (0 == sItem14) sItem14 = sItem14.toString(); else sItem14 = "-"; }
  6475. if(isNull(sItem15)) { if (0 == sItem15) sItem15 = sItem15.toString(); else sItem15 = "-"; }
  6476. if(isNull(sItem16)) { if (0 == sItem16) sItem16 = sItem16.toString(); else sItem16 = "-"; }
  6477. if(isNull(sItem17)) { if (0 == sItem17) sItem17 = sItem17.toString(); else sItem17 = "-"; }
  6478. if(isNull(sItem18)) { if (0 == sItem18) sItem18 = sItem18.toString(); else sItem18 = "-"; }
  6479. if(isNull(sItem19)) { if (0 == sItem19) sItem19 = sItem19.toString(); else sItem19 = "-"; }
  6480. if(isNull(sItem20)) { if (0 == sItem20) sItem20 = sItem20.toString(); else sItem20 = "-"; }
  6481. model.removeNodeSet("/root/monitoringlog/reqdata");
  6482. model.makeValue("/root/monitoringlog/reqdata/type", sType);
  6483. model.makeValue("/root/monitoringlog/reqdata/item01", sItem01);
  6484. model.makeValue("/root/monitoringlog/reqdata/item02", sItem02);
  6485. model.makeValue("/root/monitoringlog/reqdata/item03", sItem03);
  6486. model.makeValue("/root/monitoringlog/reqdata/item04", sItem04);
  6487. model.makeValue("/root/monitoringlog/reqdata/item05", sItem05);
  6488. model.makeValue("/root/monitoringlog/reqdata/item06", sItem06);
  6489. model.makeValue("/root/monitoringlog/reqdata/item07", sItem07);
  6490. model.makeValue("/root/monitoringlog/reqdata/item08", sItem08);
  6491. model.makeValue("/root/monitoringlog/reqdata/item09", sItem09);
  6492. model.makeValue("/root/monitoringlog/reqdata/item10", sItem10);
  6493. model.makeValue("/root/monitoringlog/reqdata/item11", sItem11);
  6494. model.makeValue("/root/monitoringlog/reqdata/item12", sItem12);
  6495. model.makeValue("/root/monitoringlog/reqdata/item13", sItem13);
  6496. model.makeValue("/root/monitoringlog/reqdata/item14", sItem14);
  6497. model.makeValue("/root/monitoringlog/reqdata/item15", sItem15);
  6498. model.makeValue("/root/monitoringlog/reqdata/item16", sItem16);
  6499. model.makeValue("/root/monitoringlog/reqdata/item17", sItem17);
  6500. model.makeValue("/root/monitoringlog/reqdata/item18", sItem18);
  6501. model.makeValue("/root/monitoringlog/reqdata/item19", sItem19);
  6502. model.makeValue("/root/monitoringlog/reqdata/item20", sItem20);
  6503. if (document.all("TXMMO00120") != null) {
  6504. submit("TXMMO00120",false);
  6505. }
  6506. } catch(err) {
  6507. messageBox ( "reqSetMonitoringLog() 실행 중 오류가 발생 하였습니다.", "E999" );
  6508. }
  6509. }
  6510. /**
  6511. * @---------------------------------------------------
  6512. * @desc : StringBuffer 관련 추가 2013.07.16 엄영만
  6513. * @use it : var sb = new StringBuffer();
  6514. sb.append("Hello ");
  6515. sb.append("Java");
  6516. sb.append("script!");
  6517. document.write(sb.toString());
  6518. * @---------------------------------------------------
  6519. */
  6520. function StringBuffer() { this.buffer = []; }
  6521. StringBuffer.prototype.append = function(str) {
  6522. if (isNull(str)) { str = ""; }
  6523. this.buffer.push(str);
  6524. return this;
  6525. }
  6526. StringBuffer.prototype.toString = function(str) {
  6527. if (isNull(str)) { str = ""; }
  6528. return this.buffer.join(str);
  6529. }
  6530. /**
  6531. * 프로그레스바 생성
  6532. * @param msg
  6533. * @return
  6534. */
  6535. function createLoadingWindow(sMsg, nLeft, nTop){
  6536. body.createChild("xforms:iviewer", "id:ivr_progress; src:../../../com/commonweb/xrw/SPZZZ00400_로딩중화면.xrw; left:"+nLeft+"px; top:"+nTop+"px; width:330px; height:120px;");
  6537. var ivrObjt = document.all("ivr_progress");
  6538. ivrObjt.model.setValue("/root/main/msg", sMsg);
  6539. ivrObjt.model.refresh();
  6540. }
  6541. /**
  6542. * 프로그레스바 삭제
  6543. * @return
  6544. */
  6545. function removeLoadingWindow(){
  6546. body.removeChild("ivr_progress");
  6547. }