SMMNS00801.js 319 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309
  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. } else {
  446. model.makeValue("/root/copyflag/cpgappno", "0");
  447. }
  448. if(model.getValue("/root/addprcp") == "Y") {
  449. model.makeValue("/root/copyflag/issdept", model.getValue("/root/init/issdept"));
  450. } else {
  451. model.makeValue("/root/copyflag/issdept", model.getValue("/root/issdept"));
  452. }
  453. model.makeValue("/root/copyflag/anstrecno", model.getValue("/root/anst/anstrecno"));
  454. model.makeValue("/root/copyflag/anstfromdt", model.getValue("/root/anst/anstfromdt"));
  455. model.makeValue("/root/copyflag/ansttm", model.getValue("/root/anst/ansttm"));
  456. model.makeValue("/root/copyflag/ansttodt", model.getValue("/root/anst/ansttodt"));
  457. model.makeValue("/root/copyflag/opansflagcd", model.getValue("/root/anst/opansflagcd"));
  458. model.makeValue("/root/copyflag/paramyn", model.getValue("/root/anst/paramyn"));
  459. model.makeValue("/root/copyflag/anst_drid", model.getValue("/root/anst/anst_drid"));
  460. model.makeValue("/root/copyflag/anst_specordflag", model.getValue("/root/anst/anst_specordflag"));
  461. //20131107 이정택(마취의 이름 추가)
  462. model.makeValue("/root/copyflag/anst_anstdrnm", model.getValue("/root/anst/anst_anstdrnm"));
  463. //20131107 이정택
  464. model.makeValue("/root/copyflag/erresn", model.getValue("/root/init/erresn"));
  465. model.makeValue("/root/copyflag/hosinprcpresncd", model.getValue("/root/init/hosinprcpresncd"));
  466. model.makeValue("/root/copyflag/hsctlnkno", model.getValue("/root/init/hsctlnkno"));
  467. model.makeValue("/root/copyflag/inclprcpno", model.getValue("/root/init/inclprcpno"));
  468. model.makeValue("/root/copyflag/prcpauthflag", model.getValue("/root/init/prcpauthflag"));
  469. model.makeValue("/root/copyflag/prcpfromdd", model.getValue("/root/init/prcpfromdd"));
  470. model.makeValue("/root/copyflag/prcpkindcd", model.getValue("/root/init/prcpkindcd"));
  471. model.makeValue("/root/copyflag/prcptodd", model.getValue("/root/init/prcptodd"));
  472. model.makeValue("/root/copyflag/bfprcpviewflag", model.getValue("/root/initsrch/envinfo[qestcd='018']/answcnt")); // 전처방 정렬 개인별 설정
  473. model.makeValue("/root/copyflag/subjsubcretno", model.getValue("/root/init/subjsubcretno"));
  474. model.makeValue("/root/copyflag/opcnfmdd", model.getValue("/root/operation/list/opcnfmdd"));
  475. model.makeValue("/root/copyflag/opflagcd", model.getValue("/root/operation/list/opflagcd"));
  476. model.makeValue("/root/copyflag/opfromtmcd", model.getValue("/root/operation/list/opfromtmcd"));
  477. model.makeValue("/root/copyflag/oprsrvno", model.getValue("/root/operation/list/oprsrvno"));
  478. model.makeValue("/root/copyflag/prcpdd_prcpresn", model.getValue("/root/prcpresn/prcpdd"));
  479. model.makeValue("/root/copyflag/prcptime_prcpresn", model.getValue("/root/prcpresn/prcptime"));
  480. model.makeValue("/root/copyflag/resncnt_prcpresn", model.getValue("/root/prcpresn/resncnt"));
  481. model.removeNodeSet ( "/root/send/cond1" );
  482. model.makeNode ( "/root/send/cond1");
  483. var copyFlagInfo = model.instances(0).selectNodes( "/root/copyflag");
  484. model.setValue ( "/root/send/cond1", getNodeListCSV(copyFlagInfo));
  485. //복사 등록정보(copyRgstInfo)
  486. model.removeNodeSet ( "/root/send/cond2" );
  487. model.makeNode ( "/root/send/cond2");
  488. var copyRgstInfo = model.instances(0).selectNodes( "/root/paminfo/list" );
  489. model.setValue ( "/root/send/cond2", getNodeListCSV(copyRgstInfo));
  490. submit ( "TRMMO00150", false ); // 처방저장 실시간 체크(RealTimeCheck)변수 설정
  491. model.makeNode(sCopyPrcpSrc); // 처방정보 복사 노드생성
  492. model.makeNode(sCopyFlagSrc); // 화면정보 복사 노드생성
  493. copyNodesetType ( sCopyPrcpSrc, "/root/prcpcopy/prcplist", "replace", model, model); // 품절약등 내부적으로 다시 TRMMO00150를 Call 하는 경우 처리
  494. copyNodesetType ( sCopyFlagSrc, "/root/prcpcopy/flaginfo", "replace", model, model); // 품절약등 내부적으로 다시 TRMMO00150를 Call 하는 경우 처리
  495. model.resetInstanceNode("/root/prcpcopy/prcplist"); // submit() 리턴 인스턴스 초기화
  496. model.resetInstanceNode("/root/prcpcopy/flaginfo"); // submit() 리턴 인스턴스 초기화
  497. var copyPrcpNode = model.instances(0).selectNodes(sCopyPrcpSrc);
  498. if (copyPrcpNode.length > 0) {
  499. // 리턴 된 화면 설정값 셋팅
  500. model.makeValue("/root/init/prcpmixno", model.getValue(sCopyFlagSrc + "/prcpmixno"));
  501. model.makeValue("/root/init/inclprcpno", model.getValue(sCopyFlagSrc + "/inclprcpno"));
  502. model.makeValue("/root/init/hsctlnkno", model.getValue(sCopyFlagSrc + "/hsctlnkno"));
  503. if (sCopyInptFlag == "06") { // 항암프로토콜일 경우 추가되는 saveflaginfo 값 셋팅
  504. model.makeValue ( "/root/save/saveflaginfo/cpgappno", appNo_SMMMO00110 ); //CP처방 or 프로토콜처방 no
  505. model.makeValue ( "/root/save/saveflaginfo/prtlprcpstatus", prtlprcpstatus_SMMMO00110 ); //CP처방 or 프로토콜처방 저장 status
  506. model.makeValue ( "/root/save/saveflaginfo/prtlflag", "10" ); //프로토콜구분
  507. }
  508. var destNodeList;
  509. for (var i=1; i<=copyPrcpNode.length; i++) { // Start of 복사 처방 건별 화면 복사
  510. if ( isNull(model.getValue ( sCopyPrcpSrc + "[" + i + "]/prcpcd" ))) { continue; }
  511. destNodeList = model.instances(0).selectNodes( strDest + "/prcplist" );
  512. if(destNodeList.length == 0) { nSrchRow = 1; } else { nSrchRow = destNodeList.length; }
  513. if (sCopyInptFlag == "06") { // 항암프로토콜일 경우 etclnkspec 컬럼 값 셋팅
  514. model.setValue( sCopyPrcpSrc + "[" + i + "]/etclnkspec", etclnkspecValue_SMMMO00110);
  515. }
  516. // 전환처방 복용 방법 설정
  517. if ( model.getValue ( sCopyPrcpSrc + "[" + i + "]/tempcol18" ) == "Y" ) {
  518. var len = 1;
  519. if ( !isNull(model.instance1.selectNodes("/root/migdrugmthd/migdrugmthdlist").length)){
  520. len = model.instance1.selectNodes("/root/migdrugmthd/migdrugmthdlist").length + 1;
  521. }
  522. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/prcpcd", model.getValue( sCopyPrcpSrc + "[" + i + "]/prcpcd" ));
  523. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/prcpnm", model.getValue( sCopyPrcpSrc + "[" + i + "]/prcpnm" ));
  524. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/drugmthdspccd", model.getValue( sCopyPrcpSrc + "[" + i + "]/drugmthdspccd" ) );
  525. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/drugmthdspccdnm", model.getValue( sCopyPrcpSrc + "[" + i + "]/drugmthdspccdnm" ) );
  526. if ( model.getValue ( sCopyPrcpSrc + "[" + i + "]/rateprcpflag" ) == "Y" ) {
  527. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/migdrugmthdspccdnm", "[비율처방불가] 투약량이 다른 처방을 분리해서 처방하셔야 합니다.\n\n" + model.getValue( sCopyPrcpSrc + "[" + i + "]/exptmthdfact" ) + ".");
  528. model.setValue ( sCopyPrcpSrc + "[" + i + "]/rateprcpflag", "N" )
  529. model.setValue ( sCopyPrcpSrc + "[" + i + "]/drugrateqty", "-" )
  530. } else {
  531. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/migdrugmthdspccdnm", model.getValue( sCopyPrcpSrc + "[" + i + "]/exptmthdfact" ));
  532. }
  533. model.setValue ( sCopyPrcpSrc + "[" + i + "]/exptmthdfact", "-" );
  534. }
  535. //20090122 마정민수정: 변경요청번호 670. 단순 방사선 예약 자동 팝업요청
  536. //20090709 CHC, 단순방사선예약자동팝업 병원별 적용
  537. var raypopwndcheckyn = model.getValue ( "/root/initsrch/raypopwndcheckyn/trgtcd" );
  538. 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" ) {
  539. var msgTitle = "[영상]" + "[" + model.getValue( sCopyPrcpSrc + "[" + i + "]/prcpcd" ) + ":" + model.getValue( sCopyPrcpSrc + "[" + i + "]/prcpnm" ) + "]";
  540. if (raypopwndcheckyn != "Y") {
  541. if (window.alert( "단순 방사선 검사를 당일 시행 하시겠습니까? [예:당일,아니요:예약]", msgTitle, "36" ) == "7" ){
  542. model.setValue( sCopyPrcpSrc + "[" + i + "]/prcphopedd","99991231" );
  543. }
  544. }
  545. }
  546. sErrFlag = model.getValue(sCopyPrcpSrc +"[" + i + "]/errflag");
  547. sErrMsg = model.getValue(sCopyPrcpSrc +"[" + i + "]/errmsg");
  548. sErrCode = model.getValue(sCopyPrcpSrc +"[" + i + "]/errcode");
  549. if(sErrFlag == "E") { // 서버체크시 오류가 있으면 메세지 처리
  550. if(!isNull(sErrMsg)) messageBox(sErrMsg, sErrCode);
  551. continue;
  552. } else if(sErrFlag == "D") { // 사용자 결정
  553. if(sErrCode == "D001") { // 품절약
  554. fAltDrug ( i, "1", sCopyPrcpSrc, sCopyInptFlag );
  555. } else if(sErrCode == "D002") { // 산제불가
  556. fAltDrug ( i, "4", sCopyPrcpSrc, sCopyInptFlag );
  557. if ( getParameter ( "SPMMB10100_chkyn" ) == "Y" ) { //대체약을 선택했다면 복사시키지 않는다.
  558. clearParameter ( "SPMMB10100_chkyn" );
  559. } else {
  560. model.duplicate( strDest, sCopyPrcpSrc+"[" + i + "]", "*[" + nSrchRow + "]");
  561. addPrcpPop_App(nSrchRow, sUsge);
  562. }
  563. } else if(sErrCode == "D003") { // 산제주의
  564. fAltDrug ( i, "5", sCopyPrcpSrc, sCopyInptFlag );
  565. if ( getParameter ( "SPMMB10100_chkyn" ) == "Y" ) { //대체약을 선택했다면 복사시키지 않는다.
  566. clearParameter ( "SPMMB10100_chkyn" );
  567. } else {
  568. model.duplicate( strDest, sCopyPrcpSrc+"[" + i + "]", "*[" + nSrchRow + "]");
  569. addPrcpPop_App(nSrchRow, sUsge);
  570. }
  571. } else if(sErrCode == "D004") { // 투석원내처방사유처리
  572. if("19" != model.getValue( "/root/init/hosinprcpresncd")) {
  573. var message = "원내지정이 가능한 처방입니다. 전체 약제를 원내로 하시려면 [예], 해당약제만 원내처방하시려면 [아니오]를 선택해주십시오.";
  574. if (messageBox ( message, "Q" ) == "6" ) {
  575. model.setValue( "/root/init/hosinprcpresncd", "19" );
  576. cmb_hosinprcpresn.refresh();
  577. }
  578. }
  579. model.duplicate( strDest, sCopyPrcpSrc+"[" + i + "]", "*[" + nSrchRow + "]");
  580. addPrcpPop_App(nSrchRow, sUsge);
  581. } else if (sErrCode == "D006"){ // 대채처방체크 altcdinfo = X
  582. fAltPrcpCd ( i, "1", sCopyPrcpSrc, sCopyInptFlag );
  583. } else if(sErrCode == "D007"){ // 수술예방적 항생제 CHECK SON0926 START 사유입력 대상자일 경우
  584. if (messageBox ( sErrMsg, "Q999" ) == "7") {
  585. setParameter ("SPMMO016000_resnflag" , "O" );
  586. var xpt = window.screenleft + eval(500);
  587. var ypt = window.screenTop + eval(400);
  588. var coord = getRelativeCoordinate ( xpt, ypt );
  589. var mon = coord[0];
  590. xpt = coord[1];
  591. ypt = coord[2];
  592. modal ("SPMMO16000", mon, xpt, ypt, "SPMMO16000", "", "", "sysmenu:hidden; min:visible; max:visible; icon:visible", false); //사유입력창
  593. var resncnts = getParameter ("SPMMO016000_resncnts" );
  594. model.setValue ( sCopyPrcpSrc + "[" + i + "]/tempcol19" ,resncnts );
  595. model.duplicate( strDest, sCopyPrcpSrc+"[" + i + "]", "*[" + nSrchRow + "]");
  596. addPrcpPop_App(nSrchRow, sUsge);
  597. } else {
  598. continue;
  599. }
  600. }
  601. } else { // 오류가 없으면 화면으로 복사 처리
  602. if(sErrFlag == "I" && !isNull(sErrMsg)) { // 서버체크시 정보가 있으면 메세지 처리
  603. messageBox(sErrMsg, sErrCode);
  604. }
  605. model.duplicate( strDest, sCopyPrcpSrc+"[" + i + "]", "*[" + nSrchRow + "]");
  606. addPrcpPop_App(nSrchRow, sUsge); // 화면에서 체크해야 할 항목 체크
  607. }
  608. } // End of 복사 처방 건별 화면 복사
  609. // 투석원내처방사유처리
  610. if ( model.getValue( "/root/init/hosinprcpresncd") != model.getValue(sCopyFlagSrc + "/hosinprcpresncd") ) {
  611. grd_prcplist.refresh();
  612. fChngHosinPrcpResn();
  613. }
  614. //JJE CP,항암프로토콜일 경우 root/init/prcpdd 를 해당 미래일자로 변경... (2008.09.11)
  615. if (sCopyInptFlag == "05" || sCopyInptFlag == "06") {
  616. if ( model.getValue( "/root/init/prcpdd") != model.getValue(sCopyFlagSrc + "/prcpdd") ) {
  617. cmb_prcpdd.refresh();
  618. }
  619. }
  620. }
  621. model.removeNodeSet ("/root/copyprcp" +sTimeStr); // 처방정보, 화면정보 복사 노드삭제
  622. }
  623. /**
  624. * @desc : check 된 Source Node의 값을 목적지에 Append Node 한다.(처방검색)
  625. * @param : objFlag - child or else
  626. : strSrc - 출발지 Node
  627. : strDest - 목적지 Node
  628. : multiFlag - 복수 add 여부
  629. : checkNM - check로 사용할 instance명
  630. : checkFlag - check시 Value
  631. : grdObj - 더블클릭시 값을 넘기는 그리드 명
  632. : prcpNmClearFlag - 검색 row에 검색명 클리어암㈉?
  633. : prcpInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술, 05 CP, 06 항암 M0034
  634. : ex) addPrcp ( "child", "/root/prcpsrch/prcplist", "/root/main/prcp", "N", "status", "I", grd_prcpsrchlist, "N");
  635. * @return : void
  636. * @authur : 마정민 2007. 3. 12
  637. * @---------------------------------------------------
  638. */
  639. function addPrcp_Web ( objFlag, strSrc, strDest, multiFlag, checkNM, checkFlag, grdObj, prcpNmClearFlag, prcpInptFlag ) {
  640. var startStepDate = new Date(); // 각 업부 시작 시간
  641. var endStepDate = null; // 각 업부 종료후 시간
  642. var step1Elapsed = null; // 코드별 체크 전 소요시간
  643. var step2Elapsed = null; // 코드별 체크 소요시간
  644. var step3Elapsed = null; // 코드별 체크 후 소요시간
  645. var nCopyCnt = 0; // 복사 갯수
  646. //model.addLog("***************** Start Of addPrcp()");
  647. if ( objFlag == "child") {
  648. opener.model.makeValue("/root/drugcalc/prcpvol", "");
  649. opener.model.makeValue("/root/drugcalc/prcpqty", "");
  650. opener.model.makeValue("/root/drugcalc/prcptims", "");
  651. opener.model.makeValue("/root/drugcalc/drprcpetc7", "");
  652. opener.model.makeValue("/root/drugcalc/drprcpetc8", "");
  653. } else {
  654. model.makeValue("/root/drugcalc/prcpvol", "");
  655. model.makeValue("/root/drugcalc/prcpqty", "");
  656. model.makeValue("/root/drugcalc/prcptims", "");
  657. model.makeValue("/root/drugcalc/drprcpetc7", "");
  658. model.makeValue("/root/drugcalc/drprcpetc8", "");
  659. }
  660. //목적지를 변수로 받고 싶었으나 iviewer에서 문제가 있어 목적지는 프레그를 구분자로 박아 넣음.
  661. var srchRow = 0;
  662. var srcNodeList = model.instances(0).selectNodes(strSrc); //or instance1.selectNodes(strSrc)
  663. //검색Row 찾기
  664. if ( objFlag == "child") {
  665. var destNodeList = opener.model.instances(0).selectNodes( strDest + "/prcplist" ); //dest Node에서 prcplist는 약속으로 하자.
  666. for ( i = destNodeList.length; i>0; i-- ){
  667. opener.model.getValue ( strDest + "/prcplist[" + i + "]" ) == "S";
  668. srchRow = i;
  669. break;
  670. }
  671. } else {
  672. var destNodeList = model.instances(0).selectNodes( strDest + "/prcplist" );
  673. for ( i = destNodeList.length; i >0; i-- ){
  674. model.getValue ( strDest + "prcplist[" + i + "]" ) == "S";
  675. srchRow = i;
  676. break;
  677. }
  678. if(!(srchRow > 0)){
  679. if(destNodeList.length == 0) srchRow = 1;
  680. else srchRow = destNodeList.length+1;
  681. }
  682. }
  683. // 처방 코드정보를 가져온다. (선택진료 자동체크 및 선택진료의사 등의 데이터를 가져오기 위해) 2011.10.13 엄영만
  684. var sPrcpCodes = ""; // 처방코드 정보를 가져오기 위한 처방 코드 셋팅
  685. if ( multiFlag == "Y" ){
  686. for( var i = 1; i <= srcNodeList.length; i++ ) {
  687. if ( model.getValue( strSrc + "[" + i + "]/" + checkNM) == checkFlag ) {
  688. if(sPrcpCodes == ""){
  689. sPrcpCodes = "'" + model.getValue( strSrc + "[" + i + "]/prcpcd") + "'";
  690. } else {
  691. sPrcpCodes = sPrcpCodes + ",'" + model.getValue( strSrc + "[" + i + "]/prcpcd") + "'";
  692. }
  693. nCopyCnt = nCopyCnt + 1;
  694. }
  695. }
  696. } else {
  697. sPrcpCodes = "'" + model.getValue( strSrc + "[" + grdObj.row + "]/prcpcd") + "'" ;
  698. nCopyCnt = 1;
  699. }
  700. if(!isNull(sPrcpCodes)){ // 조회할 코드가 있을경우에만 실행하도록 수정함.
  701. if ( objFlag == "child") {
  702. opener.javascript.fGetPrcpCodeInfo(sPrcpCodes);
  703. } else {
  704. fGetPrcpCodeInfo(sPrcpCodes);
  705. }
  706. }
  707. endStepDate = new Date(); // 각 업부 종료후 시간
  708. step1Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 전 소요시간
  709. startStepDate = new Date(); // 각 업부 시작 시간
  710. var cnt = 0;
  711. if ( multiFlag == "Y" ){
  712. //약속처방일 경우 MIX 가 있으면 번호를 새로 만들어줌
  713. if ( prcpInptFlag == "02") { //약속처방이고
  714. for( var i = 1; i <= srcNodeList.length; i++ ) {
  715. if ( model.getValue( strSrc + "[" + i + "]/" + checkNM) == checkFlag ) {
  716. var prcpmixno = model.getValue( strSrc + "[" + i + "]/prcpmixno" );
  717. if ( prcpmixno != "-" && prcpmixno != "0" ) { //믹스번호가 있다면
  718. if ( model.getValue( strSrc + "[" + i + "]/tempcol8" ) == "-" ) { //새로 번호 딴것은 체크 하지 않는다.
  719. model.setValue( strSrc + "[" + i + "]/tempcol8", "" );
  720. } else {
  721. var mixcnt = 0;
  722. //믹스번호를 하나 증가시켜서 같은 믹스번호가 있는것은 적용한다.
  723. var newprcpmixno = eval(opener.model.getValue ( "/root/init/prcpmixno" )) + 1;
  724. for( var j = 1; j <= srcNodeList.length; j++ ) {
  725. if ( model.getValue( strSrc + "[" + j + "]/" + checkNM) == checkFlag ) {
  726. if ( i != j ) {
  727. if ( prcpmixno == model.getValue( strSrc + "[" + j + "]/prcpmixno" )) {
  728. model.setValue( strSrc + "[" + j + "]/prcpmixno", newprcpmixno );
  729. model.setValue( strSrc + "[" + j + "]/tempcol8", "-" );
  730. mixcnt++;
  731. }
  732. }
  733. }
  734. }
  735. if ( mixcnt == 0 ) { // 같이 적용된것이 하나도 없다면 믹스번호 초기화
  736. model.setValue( strSrc + "[" + i + "]/prcpmixno", "-" );
  737. } else { // 값이 있으면 본인것도 증가시켜주고, 믹스번호 init 값도 증가시켜준다.
  738. model.setValue( strSrc + "[" + i + "]/prcpmixno", newprcpmixno );
  739. opener.model.setValue ( "/root/init/prcpmixno", newprcpmixno );
  740. }
  741. }
  742. }
  743. }
  744. }
  745. } //약속처방 mix no 체크끝
  746. for( var i = 1; i <= srcNodeList.length; i++ ) {
  747. //전처방, 약속처방에서 처방복사 버튼 클릭시...구코드이고 유효하지 않은 코드 일경우 불가처리 조과장님 지시. BY SONJY 2008-09-04
  748. //전처방, 약속처방에서 처방복사 버튼 클릭시 식사처방 복사 불가처리 by sonjy 2008-09-06
  749. //20090409 마정민 수정. 성가병원 구코드 복사 기능 요청
  750. /*if( model.getValue( strSrc + "[" + i + "]/prcpcd").substring( 0, 1 ) == "*" ||
  751. model.getValue( strSrc + "[" + i + "]/prcpcd").substring( 0, 1 ) == "_" ||
  752. model.getValue( strSrc + "[" + i + "]/prcpclscd") == "03" ) {
  753. if ( objFlag == "child" ) {
  754. addprcpchk = opener.model.getValue ( "/root/addprcp" );
  755. } else {
  756. addprcpchk = model.getValue ( "/root/addprcp" );
  757. }
  758. if ( addprcpchk != "Y" ){
  759. continue ;
  760. }
  761. }*/
  762. if ( model.getValue( strSrc + "[" + i + "]/prcpclscd") == "03" ) {
  763. if ( objFlag == "child" ) {
  764. addprcpchk = opener.model.getValue ( "/root/addprcp" );
  765. } else {
  766. addprcpchk = model.getValue ( "/root/addprcp" );
  767. }
  768. if ( addprcpchk != "Y" ){
  769. continue ;
  770. }
  771. }
  772. if ( model.getValue( strSrc + "[" + i + "]/" + checkNM) == checkFlag ) {
  773. srchRow = addPrcpDetl ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag );
  774. if ( srchRow == 0) {
  775. cnt++;
  776. //검색줄 다시검색
  777. if ( objFlag == "child") {
  778. var destNodeList = opener.model.instances(0).selectNodes( strDest + "/prcplist" ); //dest Node에서 prcplist는 약속으로 하자.
  779. for ( j = destNodeList.length; j>0; j-- ){
  780. opener.model.getValue ( strDest + "/prcplist[" + j + "]" ) == "S";
  781. srchRow = j;
  782. break;
  783. }
  784. } else {
  785. var destNodeList = model.instances(0).selectNodes( strDest + "/prcplist" );
  786. for ( j = destNodeList.length; j >0; j-- ){
  787. model.getValue ( strDest + "prcplist[" + j + "]" ) == "S";
  788. srchRow = j;
  789. break;
  790. }
  791. //JJE-
  792. if(!(srchRow > 0)){
  793. srchRow = destNodeList.length;
  794. }
  795. //-JJE
  796. }
  797. } else {
  798. //처방복사에 문제가 없다면 하드코드 set 처방 Chk
  799. //srchRow = fAddSetPrcpChk ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag );
  800. srchrownum = fAddSetPrcpChkKNUH ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag );
  801. if (srchrownum != srchRow) {
  802. srchRow = srchrownum;
  803. if ( objFlag == "child" ) {
  804. opener.javascript.DrugCalc ( "drprcpetc8" , parseInt(srchRow) -1 );
  805. } else {
  806. DrugCalc ( "drprcpetc8" , parseInt(srchRow) -1 );
  807. }
  808. }
  809. }
  810. //if ( objFlag == "child" ) {
  811. // opener.grd_prcplist.refresh();
  812. //} else {
  813. // grd_prcplist.refresh();
  814. //}
  815. }
  816. }
  817. } else { //더블클릭으로 넘길때
  818. //전처방, 약속처방에서 더블 클릭시...구코드이고 유효하지 않은 코드 일경우 불가처리 조과장님 지시. BY SONJY 2008-09-04
  819. //전처방, 약속처방에서 처방복사 버튼 클릭시 식사처방 복사 불가처리 by sonjy 2008-09-06
  820. //20090409 마정민 수정. 성가병원 구코드 복사 기능 요청
  821. /*if( model.getValue( strSrc + "[" + grdObj.row + "]/prcpcd").substring( 0, 1 ) == "*" ||
  822. model.getValue( strSrc + "[" + grdObj.row + "]/prcpcd").substring( 0, 1 ) == "_" ||
  823. model.getValue( strSrc + "[" + grdObj.row + "]/prcpclscd") == "03" ) {
  824. if ( objFlag == "child" ) {
  825. addprcpchk = opener.model.getValue ( "/root/addprcp" );
  826. } else {
  827. addprcpchk = model.getValue ( "/root/addprcp" );
  828. }
  829. if ( addprcpchk != "Y" ){
  830. //20090407 마정민 수정. 성가병원 기능 요청
  831. //return ;
  832. }
  833. }*/
  834. if( model.getValue( strSrc + "[" + grdObj.row + "]/prcpclscd") == "03" ) {
  835. if ( objFlag == "child" ) {
  836. addprcpchk = opener.model.getValue ( "/root/addprcp" );
  837. } else {
  838. addprcpchk = model.getValue ( "/root/addprcp" );
  839. }
  840. if ( addprcpchk != "Y" ){
  841. return ;
  842. }
  843. }
  844. //mix no 초기화
  845. model.setValue( strSrc + "[" + grdObj.row + "]/prcpmixno", "-" );
  846. srchRow = addPrcpDetl ( objFlag , strSrc , strDest , grdObj.row , srchRow, prcpInptFlag );
  847. if ( srchRow == 0) {
  848. cnt++;
  849. } else {
  850. //처방복사에 문제가 없다면 하드코드 set 처방 Chk
  851. //srchRow = fAddSetPrcpChk( objFlag , strSrc , strDest , grdObj.row , srchRow, prcpInptFlag );
  852. var srchrownum = fAddSetPrcpChkKNUH( objFlag , strSrc , strDest , grdObj.row , srchRow, prcpInptFlag );
  853. if (srchrownum != srchRow) {
  854. srchRow = srchrownum;
  855. if ( objFlag == "child" ) {
  856. opener.javascript.DrugCalc ( "drprcpetc8" , parseInt(srchRow) -1 );
  857. } else {
  858. DrugCalc ( "drprcpetc8" , parseInt(srchRow) -1 );
  859. }
  860. }
  861. }
  862. }
  863. endStepDate = new Date(); // 각 업부 종료후 시간
  864. step2Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 소요시간
  865. startStepDate = new Date(); // 각 업부 시작 시간
  866. fHosinPrcpResnChk (objFlag, strDest );
  867. if ( cnt == 0 ) { // 한번도 에러가 없을 때만 메인으로 포커스가 간다.
  868. focusMain ( srchRow, objFlag, prcpNmClearFlag );
  869. } else {
  870. var modiflag = model.getValue("/root/init/rowmodify/modiflag");
  871. if ( objFlag == "child" ) {
  872. if ( modiflag != "Y" ){ // 처방 코드에서 수정 모드가 아닐때만 refresh - 20090630 by Moonsh
  873. opener.grd_prcplist.rebuild();
  874. opener.model.recalculate();
  875. opener.grd_prcplist.refresh();
  876. }
  877. // opener.model.setfocus( "grd_prcplist" );
  878. // if ( srchRow != 0 ) {
  879. // opener.grd_prcplist.row = srchRow;
  880. // }
  881. } else {
  882. if ( modiflag != "Y" ){ // 처방 코드에서 수정 모드가 아닐때만 refresh - 20090630 by Moonsh
  883. grd_prcplist.rebuild();
  884. model.recalculate();
  885. grd_prcplist.refresh();
  886. }
  887. // model.setfocus( "grd_prcplist" );
  888. // if ( srchRow != 0 ) {
  889. // grd_prcplist.row = srchRow;
  890. // }
  891. }
  892. }
  893. //KNUH, 약속처방 복사 시 치식 팝업이 한번만 뜨고 다른 치과처방에 동일하게 적용되도록 함. 처방복사가 완료되면 임시 instance는 제거함. (2011.03.28 JJE)
  894. if ( objFlag == "child" ) {
  895. opener.model.removeNodeset("/root/main/toot_prcp");
  896. }else{
  897. model.removeNodeset("/root/main/toot_prcp");
  898. }
  899. // 20080925 항생제 추가 시는 그리드 editting을 위해 색 변경 로직 생략 by MoonSH
  900. var cdssFlag = getParameter( "SPMMD01600_flag");
  901. clearParameter( "SPMMD01600_flag", "");
  902. if (cdssFlag != "Y") {
  903. fPrcpColor(objFlag);
  904. }
  905. if ( objFlag != "child") {
  906. //JJE-
  907. if( model.getValue ( "/root/cp" ) == "Y" ){
  908. if (prtlprcpstatus_SMMMO00110 != "U" ) {
  909. import1.visible = false;
  910. }
  911. }else{
  912. import1.visible = false;
  913. }
  914. //-JJE
  915. }
  916. //model.addLog("***************** End Of addPrcp()");
  917. endStepDate = new Date(); // 각 업부 종료후 시간
  918. step3Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 소요시간
  919. // 속도체크 모니터링 로그 추가 2013.06.27 엄영만
  920. if ( objFlag == "child") {
  921. opener.javascript.reqSetMonitoringLog("PrcpCopy", "WEB", getScreenID(), objFlag, prcpInptFlag, multiFlag, prcpNmClearFlag, nCopyCnt, step1Elapsed+step2Elapsed+step3Elapsed, step1Elapsed, step2Elapsed, step3Elapsed);
  922. } else {
  923. reqSetMonitoringLog("PrcpCopy", "WEB", getScreenID(), objFlag, prcpInptFlag, multiFlag, prcpNmClearFlag, nCopyCnt, step1Elapsed+step2Elapsed+step3Elapsed, step1Elapsed, step2Elapsed, step3Elapsed);
  924. }
  925. }
  926. /**
  927. * @desc : 검색된 내용중 내릴 처방을 선택하여 전송한다.( double click )
  928. * @param : objFlag - child or else
  929. : strSrc - source node
  930. : strDest - 목적지 node; child일때는 opener.root.main.prcp, 아니면 "/root/main/prcp" 이다
  931. : sendRow - 검색된 내용중 메인으로 보내고자 하는 row
  932. : srchRow - 메인에 들어간 자리. 검색로우(srchRow) 바로 전이다.
  933. : prcpInptFlag - - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  934. : groupSrc - 옵션: group처방 검색할 경우 node
  935. : direcSrc - 옵션: group 지시처방 검색할 경우 node
  936. : prcpInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  937. * @return : srchRow 에러시 0
  938. * @authur : 마정민 2007. 4. 12
  939. * @---------------------------------------------------
  940. */
  941. function addPrcpDetl ( objFlag, strSrc, strDest, sendRow, srchRow, prcpInptFlag, grupSrc, direcSrc ) {
  942. //model.addLog(" *************** Start Of addPrcpDetl() PRCPCLSCD " + model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" ) + " || PRCPCD : " + model.getValue( strSrc + "[" + sendRow + "]/prcpcd" ));
  943. //model.addLog(" PRCPCLSCD : " + model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" ));
  944. //model.addLog(" PRCPCD : " + model.getValue( strSrc + "[" + sendRow + "]/prcpcd" ));
  945. //20091013 by sonjy 성빈센트병원 요청 => mig data 전처방 copy시 신코드일 경우 reset여부
  946. var bfprcpsrchyn = "";
  947. if( objFlag == "child") bfprcpsrchyn = opener.model.getValue("/root/initsrch/bfprcpsrchyn/trgtcd");
  948. else bfprcpsrchyn = model.getValue("/root/initsrch/bfprcpsrchyn/trgtcd");
  949. //20091104 by sonjy 성빈센트 전환 데이터 관련 => mig data 전처방 copy시 약/주사 용량 오류 보정
  950. var migyn = "";
  951. var colHidnValue = grdBaseColHidn("D");
  952. /***************************** 전처방 구수가코드 검색시 신코드로 변환검색 ****************************************/
  953. var oldprcpflag = "";
  954. if ( prcpInptFlag == "01" ) { //전처방이고
  955. var tempcol9 = model.getValue( strSrc + "[" + sendRow + "]/tempcol9" );
  956. var tempcol18 = model.getValue( strSrc + "[" + sendRow + "]/tempcol18" );
  957. if ( tempcol9 == "N" ) {
  958. return 0;
  959. } else {
  960. var bfprcpcd = model.getValue( strSrc + "[" + sendRow + "]/prcpcd" );
  961. //20091104 by sonjy 성빈센트 전환 데이터 관련 => mig data 전처방 copy시 약/주사 용량 오류 보정
  962. migyn = model.getValue( strSrc + "[" + sendRow + "]/tempcol20" );
  963. /**
  964. * 20091013 by sonjy 성빈센트병원 요청 => mig data 전처방 copy시 신코드일 경우 reset
  965. * 단, 지시처방일 경우는 검색 불필요하므로 제외
  966. */
  967. if ( bfprcpcd.substring( 0, 1 ) == "_" || bfprcpcd.substring( 0, 1 ) == "=" ||
  968. ( bfprcpsrchyn == "Y" && migyn == "Y" && model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" ) != "09") ) { //구수가코드이면 신코드로 다시 검색한다. by sonjy20091013
  969. //20090407 마정민수정. tempcol9로 구분되기 때문에 색깔비교 주석처리.
  970. //if ( model.getValue ( strSrc + "[" + sendRow + "]/tempcol10" ) != "#ccffcc" ) { //매핑값이 있으면(색깔은 mgr단에서 박는다)
  971. var bfprcpvol = model.getValue( strSrc + "[" + sendRow + "]/prcpvol" );
  972. var bfprcpqty = model.getValue( strSrc + "[" + sendRow + "]/prcpqty" );
  973. var bfprcptims = model.getValue( strSrc + "[" + sendRow + "]/prcptims" );
  974. var bfprcpdayno = model.getValue( strSrc + "[" + sendRow + "]/prcpdayno" );
  975. var bfprcpdelivefact = model.getValue( strSrc + "[" + sendRow + "]/prcpdelivefact" );
  976. var bfpowdflag = model.getValue( strSrc + "[" + sendRow + "]/powdflag" );
  977. var bfprnprcpflag = model.getValue( strSrc + "[" + sendRow + "]/prnprcpflag" );
  978. var bfprepprcpflag = model.getValue( strSrc + "[" + sendRow + "]/prepprcpflag" );
  979. var bfselfprcpflag = model.getValue( strSrc + "[" + sendRow + "]/selfprcpflag" );
  980. var bfselfdrugflag = model.getValue( strSrc + "[" + sendRow + "]/selfdrugflag" );
  981. var bfdrugpackflag = model.getValue( strSrc + "[" + sendRow + "]/drugpackflag" );
  982. var bferprcpflag = model.getValue( strSrc + "[" + sendRow + "]/erprcpflag" );
  983. var bfprecureprcpflag = model.getValue( strSrc + "[" + sendRow + "]/precureprcpflag" );
  984. var bfnigtprcpflag = model.getValue( strSrc + "[" + sendRow + "]/nigtprcpflag" );
  985. var bfportprcpflag = model.getValue( strSrc + "[" + sendRow + "]/portprcpflag" );
  986. var bffixprcpflag = model.getValue( strSrc + "[" + sendRow + "]/fixprcpflag" );
  987. var bfanamneflag = model.getValue( strSrc + "[" + sendRow + "]/anamneflag" );
  988. var bferreadflag = model.getValue( strSrc + "[" + sendRow + "]/erreadflag" );
  989. var bfstemcellflag = model.getValue( strSrc + "[" + sendRow + "]/stemcellflag" );
  990. var bfprcpexecdeptcd = model.getValue( strSrc + "[" + sendRow + "]/prcpexecdeptcd" );
  991. var bfDrprcpetc7 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc7"); //1회용량
  992. var bfDrprcpetc8 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc8"); //1회수량
  993. var bfDrugmastspec = model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec");
  994. var bfpayflagcd = model.getValue ( strSrc + "[" + sendRow + "]/payflagcd"); // 2011.03.03 마이그된 처방 전처방 복사시 급여도 복사하도록 수정
  995. //20091013 by sonjy 성빈센트병원 요청 => mig data 전처방 copy시 신코드일 경우 reset여부
  996. if(bfprcpcd.substring( 0, 1 ) == "_" || bfprcpcd.substring( 0, 1 ) == "=" ) {
  997. fPrcpSrchCom ( bfprcpcd.substring( 1, bfprcpcd.length ), opener.model.getValue ( "/root/init/prcpdd" ), opener.model.getValue ( "/root/paminfo/list/insukind"), "TRMMO02101", "", false, "getOldPrcpCdChngInfo", "E" );
  998. } else {
  999. fPrcpSrchCom ( bfprcpcd, opener.model.getValue ( "/root/init/prcpdd" ), opener.model.getValue ( "/root/paminfo/list/insukind"), "TRMMO02101", "", false, "getPrcpCdSrchInfo", "E" , false);
  1000. }
  1001. strSrc = "/root/oldprcpchngsrch/prcplist";
  1002. sendRow = 1;
  1003. if ( isNull(model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" ))){
  1004. return 0;
  1005. } else {
  1006. oldprcpflag = "Y";
  1007. var prcpclscd = model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" );
  1008. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ){
  1009. if ( prcpclscd == "A2" ) {
  1010. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcptims") != bfprcptims ) {
  1011. model.setValue ( strSrc + "[" + sendRow + "]/prcptims", bfprcptims );
  1012. fBaseMthd("oldprcp");
  1013. }
  1014. } else {
  1015. model.setValue ( strSrc + "[" + sendRow + "]/prcptims", bfprcptims );
  1016. }
  1017. var chkPrcpVol = model.getValue ( strSrc + "[" + sendRow + "]/prcpvol");
  1018. if( bfprcpsrchyn == "Y" && migyn == "Y" && parseInt(chkPrcpVol) < 1 ){
  1019. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", 0 );
  1020. model.setValue ( strSrc + "[" + sendRow + "]/prcpqty", 0 );
  1021. model.setValue ( strSrc + "[" + sendRow + "]/prcpdayno", 0 );
  1022. } else {
  1023. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", bfprcpvol );
  1024. model.setValue ( strSrc + "[" + sendRow + "]/prcpqty", bfprcpqty );
  1025. model.setValue ( strSrc + "[" + sendRow + "]/prcpdayno", bfprcpdayno );
  1026. }
  1027. //model.setValue ( strSrc + "[" + sendRow + "]/drugmthdspccdnm", "-" );
  1028. //model.setValue ( strSrc + "[" + sendRow + "]/drugmthdspccd", "-" );
  1029. //20091104 by sonjy 성빈센트 전환 데이터 관련 => mig data 전처방 copy시 약/주사 용량 오류 보정
  1030. if( bfprcpsrchyn == "Y" && migyn == "Y" ){
  1031. var sdrugmastspec = model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec");
  1032. var orgprcpvol = getArrayData ( sdrugmastspec + "^", 0, 1 , "^", "|" ); //drugcntsvol 함량기준용량 -> 경북대는 일기준 용량으로 비교
  1033. var orgDrprcpetc7 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc7"); //1회용량
  1034. var orgDrprcpetc8 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc8"); //1회수량
  1035. var orgCalcRate = 0;
  1036. //회기준에서는 수가계산구분이 1이면 횟수도 곱 (2011.01.02 전지은)
  1037. if(!isNull(bfDrprcpetc7) && !isNull(bfDrprcpetc8) && (colHidnValue == "C" || colHidnValue == "G" || colHidnValue == "H") ){
  1038. orgCalcRate = (orgDrprcpetc8 * bfDrprcpetc8) * 1000;
  1039. orgCalcRate = Math.round(orgCalcRate);
  1040. orgCalcRate = orgCalcRate / 1000;
  1041. var calcmthdcd = getArrayData ( bfDrugmastspec + "^", 0, 26, "^", "|" );
  1042. if( calcmthdcd == "1" ){
  1043. var volRate = orgDrprcpetc7 / bfDrprcpetc7 * 1000;
  1044. var qtyRate = orgDrprcpetc8 / bfDrprcpetc8 * 1000;
  1045. volRate = Math.round(volRate);
  1046. qtyRate = Math.round(qtyRate);
  1047. volRate = volRate / 1000;
  1048. qtyRate = qtyRate / 1000;
  1049. if ( volRate != qtyRate //회 기준 용량 이상 시
  1050. || Math.round ( orgDrprcpetc7 * Math.round ( orgDrprcpetc8 / bfDrprcpetc8 ) * bfprcptims * 1000 ) != bfprcpvol * 1000 ){ //1회 용량이 잘못 들어왔을 수 있음(mig) 일 기준 용량 이상 시
  1051. if( eval(bfDrprcpetc7) < 1 ){
  1052. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", "0") ; //1회용량*횟수
  1053. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc7", "0") ; //1회용량*횟수
  1054. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc8", "0") ;
  1055. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", "0") ;
  1056. } else {
  1057. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", orgDrprcpetc7 * bfprcptims) ; //1회용량*횟수
  1058. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc7", orgDrprcpetc7 * orgCalcRate ) ; //1회용량*횟수
  1059. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc8", bfDrprcpetc8 ) ;
  1060. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", bfprcpvol) ;
  1061. }
  1062. }
  1063. }else{
  1064. if( eval(bfDrprcpetc7) < 1 ){
  1065. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", "0" ) ; //1회용량
  1066. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc7", "0") ; //1회용량*횟수
  1067. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc8", "0") ;
  1068. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", "0") ;
  1069. } else {
  1070. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", bfDrprcpetc7 ) ; //1회용량
  1071. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc7", bfDrprcpetc7 ) ; //1회용량*횟수
  1072. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc8", bfDrprcpetc8 ) ;
  1073. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", bfprcpvol) ;
  1074. }
  1075. }
  1076. } else{//회기준 보정 끝 원래
  1077. if ( !isNull(orgprcpvol) && Math.round ( orgprcpvol * bfprcpqty * 1000 ) != bfprcpvol * 1000 ){
  1078. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", bfprcpqty * orgprcpvol) ;
  1079. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", bfprcpvol) ;
  1080. }
  1081. }
  1082. }
  1083. }
  1084. model.setValue ( strSrc + "[" + sendRow + "]/prcpdelivefact", bfprcpdelivefact );
  1085. model.setValue ( strSrc + "[" + sendRow + "]/powdflag", bfpowdflag );
  1086. model.setValue ( strSrc + "[" + sendRow + "]/prnprcpflag", bfprnprcpflag );
  1087. model.setValue ( strSrc + "[" + sendRow + "]/prepprcpflag", bfprepprcpflag );
  1088. model.setValue ( strSrc + "[" + sendRow + "]/selfprcpflag", bfselfprcpflag );
  1089. model.setValue ( strSrc + "[" + sendRow + "]/selfdrugflag", bfselfdrugflag );
  1090. model.setValue ( strSrc + "[" + sendRow + "]/drugpackflag", bfdrugpackflag );
  1091. model.setValue ( strSrc + "[" + sendRow + "]/erprcpflag", bferprcpflag );
  1092. model.setValue ( strSrc + "[" + sendRow + "]/precureprcpflag", bfprecureprcpflag );
  1093. model.setValue ( strSrc + "[" + sendRow + "]/nigtprcpflag", bfnigtprcpflag );
  1094. model.setValue ( strSrc + "[" + sendRow + "]/portprcpflag", bfportprcpflag );
  1095. model.setValue ( strSrc + "[" + sendRow + "]/fixprcpflag", bffixprcpflag );
  1096. model.setValue ( strSrc + "[" + sendRow + "]/anamneflag", bfanamneflag );
  1097. model.setValue ( strSrc + "[" + sendRow + "]/erreadflag", bferreadflag );
  1098. model.setValue ( strSrc + "[" + sendRow + "]/payflagcd", bfpayflagcd ); // 2011.03.03 마이그된 처방 전처방 복사시 급여도 복사하도록 수정
  1099. }
  1100. }
  1101. }
  1102. //20080917 마정민수정: PRN실처방은 전처방에서 복사되면 안된다.
  1103. if ( model.getValue( strSrc + "[" + sendRow + "]/prcpinptflag" ) == "19" ) {
  1104. messageBox ( "[" + model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ) + "]: PRN 실처방은 처방등록 하실수", "I004" );
  1105. return 0;
  1106. }
  1107. // 전처방에서 복사 시 소아 TPN은 전처방에서 복사 안되도록 요청. - 20090720 by MoonSH
  1108. if( model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "A6" &&
  1109. getArrayData ( model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^", 0, 23 , "^", "|" ) == "B") {
  1110. messageBox ( "[" + model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ) + "]: 소아 TPN 처방은 전처방에서 복사하실수", "I004" );
  1111. return 0;
  1112. }
  1113. // 전처방에서 복사 시 stemcellflag 초기화 요청. - 20081118 by MoonSH
  1114. if ( !isNull(bfstemcellflag) ){
  1115. model.setValue ( strSrc + "[" + sendRow + "]/stemcellflag", "00NNN" );
  1116. }
  1117. // 전처방에서 복사 시 마이그레이션 잘못 들어와서 _0으로 존재 하는 실행부서 -으로 수정. - 20081202 by MoonSH
  1118. if ( bfprcpexecdeptcd == "_0" ) {
  1119. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd", "-" );
  1120. }
  1121. //20091203 by sonjy 전처방 copy시 처방종류가 지시인경우 전처방에 저장된 시행부서를 copy하지 않고 초기화.[요청번호 8711 ]
  1122. //(전실 환자의 경우 이전병동으로 보이는 문제 ) -- V/S(지시), 활동(지시), I/O(지시), 지시 : 식이,BMT제외
  1123. var cur_prcpclscd = model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" );
  1124. if(cur_prcpclscd == "00" || cur_prcpclscd == "01"|| cur_prcpclscd == "02" || cur_prcpclscd == "09") {
  1125. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd", model.getValue( strSrc + "[" + sendRow + "]/tempcol23") );
  1126. }
  1127. }
  1128. //전처방이나 약속처방에서 임상처방체크된 처방을 발행할 경우 임상시험 부유형 자동세팅(subcretno), CHC, 2009-07-22
  1129. if ( prcpInptFlag == "01" || prcpInptFlag == "02" ) {
  1130. if ( model.getValue( strSrc + "[" + sendRow + "]/clincstdyflag" ) == "Y" ) {
  1131. fSubcretnoSet("2", "Y", strSrc, sendRow);
  1132. }
  1133. //전처방이나 약속처방일때 용량/수량 보정 20100209 LYJ
  1134. var prcpclscd = model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" );
  1135. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ){
  1136. if( bfprcpsrchyn == "Y" && model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" ) != "09" && model.getValue( strSrc + "[" + sendRow + "]/prcpinptflag" ) != "35"){ // 자가보유처방은 보정 제외한다. 20100504 LYJ
  1137. var bfprcpvol = model.getValue( strSrc + "[" + sendRow + "]/prcpvol" );
  1138. var bfprcpqty = model.getValue( strSrc + "[" + sendRow + "]/prcpqty" );
  1139. var sdrugmastspec = model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec");
  1140. var orgprcpvol = getArrayData ( sdrugmastspec + "^", 0, 1 , "^", "|" ); //drugcntsvol 함량기준용량
  1141. if ( !isNull(orgprcpvol) && Math.round ( orgprcpvol * bfprcpqty * 1000 ) != bfprcpvol * 1000 ){
  1142. var bfDrprcpetc7 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc7"); //1회용량
  1143. var bfDrprcpetc8 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc8"); //1회수량
  1144. var bfprcptims = model.getValue( strSrc + "[" + sendRow + "]/prcptims" );
  1145. if(!isNull(bfDrprcpetc7) && !isNull(bfDrprcpetc8) && (colHidnValue == "C" || colHidnValue == "G" || colHidnValue == "H") ){
  1146. var orgDrprcpetc7 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc7"); //1회용량
  1147. var orgDrprcpetc8 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc8"); //1회수량
  1148. var orgCalcRate = 0;
  1149. var calcmthdcd = getArrayData ( sdrugmastspec + "^", 0, 26, "^", "|" );
  1150. if( calcmthdcd == "1" ){
  1151. orgCalcRate = (orgDrprcpetc8 * bfDrprcpetc8) * 1000;
  1152. orgCalcRate = Math.round(orgCalcRate);
  1153. orgCalcRate = orgCalcRate / 1000;
  1154. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", orgDrprcpetc7 * bfprcptims) ; //1회용량*횟수
  1155. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc7", orgDrprcpetc7 ) ; //1회용량*횟수
  1156. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc8", bfDrprcpetc8 ) ;
  1157. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", orgDrprcpetc7) ;
  1158. } else {
  1159. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", bfDrprcpetc7 ) ; //1회용량
  1160. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc7", bfDrprcpetc7 ) ; //1회용량*횟수
  1161. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc8", bfDrprcpetc8 ) ;
  1162. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", bfprcpvol) ;
  1163. }
  1164. } else {
  1165. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", bfprcpqty * orgprcpvol) ;
  1166. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", bfprcpvol) ;
  1167. }
  1168. }
  1169. }
  1170. }
  1171. }
  1172. //자가보유 처방일때 처방명 재설정 한다. 20100427 LYJ
  1173. if (model.getValue( strSrc + "[" + sendRow + "]/prcpinptflag") == "35"){
  1174. var selfprcpnm = model.getValue( strSrc + "[" + sendRow + "]/prcpnm" );
  1175. var selflen = selfprcpnm.length;
  1176. if (prcpInptFlag != "35"){
  1177. selfprcpnm1 = selfprcpnm.substring(7, selflen);
  1178. model.setValue ( strSrc + "[" + sendRow + "]/orgprcpnm", selfprcpnm1) ;
  1179. }
  1180. }
  1181. if ( prcpInptFlag == "35" ) { //자가보유
  1182. model.setValue ( strSrc + "[" + sendRow + "]/orgprcpnm", model.getValue( strSrc + "[" + sendRow + "]/prcpnm" )) ;
  1183. }
  1184. var prcpClsCd = model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" );
  1185. var prcpKindCd = model.getValue( strSrc + "[" + sendRow + "]/prcpkindcd" );
  1186. var drugmthdspccd = model.getValue( strSrc + "[" + sendRow + "]/drugmthdspccd" );
  1187. var prcpnm = model.getValue( strSrc + "[" + sendRow + "]/prcpnm" );
  1188. var drugmastspec = model.getValue( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^";
  1189. var hsctflag = "N";
  1190. var cpchk = "";
  1191. var usge = "";
  1192. var prcpgenrflag = "";
  1193. if ( objFlag == "child" ) {
  1194. usge = opener.model.getValue ( "/root/usge" );
  1195. cpchk = opener.model.getValue ( "/root/cp" );
  1196. prcpgenrflag = opener.model.getValue ( "/root/patflag/list/prcpgenrflag" );
  1197. } else {
  1198. usge = model.getValue ( "/root/usge" );
  1199. cpchk = model.getValue ( "/root/cp" );
  1200. prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  1201. }
  1202. if ( usge == "prms" || usge == "direc" || usge == "home" ) {
  1203. prcpInptFlag = "02";
  1204. }
  1205. if ( prcpClsCd == "-" ) {
  1206. messageBox ( prcpnm + " 처방은 처방분류가 없어 처방등록을 하실 수 없습니다.", "E" );
  1207. return 0;
  1208. }
  1209. var iprcpqty = eval(model.getValue( strSrc + "[" + sendRow + "]/prcpqty" ));
  1210. var iprcptims = eval(model.getValue( strSrc + "[" + sendRow + "]/prcptims" ));
  1211. if ( model.getValue( strSrc + "[" + sendRow + "]/tempcol18" ) == "MC" && (iprcpqty != 1 || iprcptims != 1 )) {
  1212. messageBox ( "[" + prcpnm + "] 전환데이터 연속검사처방은 처방복사 하실 수 없습니다. ( 수량:" + iprcpqty + ", 횟수:" + iprcptims + " )" , "E" );
  1213. return 0;
  1214. }
  1215. var addprcpchk = ""
  1216. if ( objFlag == "child" ) {
  1217. addprcpchk = opener.model.getValue ( "/root/addprcp" );
  1218. } else {
  1219. addprcpchk = model.getValue ( "/root/addprcp" );
  1220. }
  1221. if ( addprcpchk == "Y" ){ //시행부서체크
  1222. //시행부서 처방은 마약불가
  1223. var spcldrug = getArrayData ( drugmastspec, 0, 23, "^", "|" );
  1224. //20080721 마정민수정 김민선 선생님의 요청. 의사권한이 있는사람은 처방 가능.
  1225. if ( spcldrug == "M" ) {
  1226. var prcpauthflag = "";
  1227. if ( objFlag == "child" ) {
  1228. prcpauthflag = opener.model.getValue ( "/root/init/prcpauthflag" )
  1229. } else {
  1230. prcpauthflag = model.getValue ( "/root/init/prcpauthflag" )
  1231. }
  1232. if (prcpauthflag != "3" ){
  1233. messageBox ( prcpnm + " 마약처방은 시행부서에서 의사만 등록이 가능한 처방입니다.", "E" );
  1234. return 0;
  1235. }
  1236. }
  1237. }
  1238. //20090302 마정민수정: Irradiation(LBT70010) 단독처방 불가
  1239. if ( objFlag == "child" ) {
  1240. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" ) == opener.model.getValue ( "/root/initsrch/irrprcpcd/trgtcd" )) {
  1241. messageBox ( prcpnm + "는 단독처방이 불가합니다. 수혈상세팝업의 Irr 체크기능을 통해 등록해 주십시오", "E" );
  1242. return 0;
  1243. }
  1244. } else {
  1245. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" ) == model.getValue ( "/root/initsrch/irrprcpcd/trgtcd" )) {
  1246. messageBox ( prcpnm + "는 단독처방이 불가합니다. 수혈상세팝업의 Irr 체크기능을 통해 등록해 주십시오", "E" );
  1247. return 0;
  1248. }
  1249. }
  1250. if ( prcpClsCd == "A2" || prcpClsCd == "A4" || prcpClsCd == "A6" ) {
  1251. if (isNull(model.getValue ( strSrc + "[" + sendRow + "]/prcpvolunitnm"))) {
  1252. messageBox ( model.getValue ( strSrc + "[" + sendRow + "]/prcpnm") + " 처방의 용량단위가", "E014" );
  1253. return 0;
  1254. }
  1255. if ( isNull(model.getValue ( strSrc + "[" + sendRow + "]/prcpqtyunitnm"))) {
  1256. messageBox ( model.getValue ( strSrc + "[" + sendRow + "]/prcpnm") + " 처방의 수량단위가", "E014" );
  1257. return 0;
  1258. }
  1259. }
  1260. //20090903 이윤정 추가: 응급 탭에서 선택된 환자의 경우 심야가산적용 자동 체크
  1261. if ( objFlag == "child" ) {
  1262. var prcpgenrflag = opener.model.getValue ( "/root/patflag/list/prcpgenrflag" );
  1263. if (prcpgenrflag == "E"){
  1264. if ( prcpClsCd == "H2" || prcpClsCd == "H4" ) {
  1265. model.setValue( strSrc + "[" + sendRow + "]/nigtprcpflag","N" );
  1266. var nigtprcptm = opener.model.getValue("/root/initsrch/nigtprcptm/trgtcd");
  1267. var nigtprcpsplit = nigtprcptm.split("|");
  1268. var nigtprcpstart = nigtprcpsplit[0];
  1269. var nigtprcpend = nigtprcpsplit[1];
  1270. var MyTime = getCurrentTime();
  1271. var realtime = MyTime.substr(0,4);
  1272. if ( nigtprcpstart < realtime || realtime < nigtprcpend){
  1273. model.setValue( strSrc + "[" + sendRow + "]/nigtprcpflag","Y" );
  1274. }
  1275. }
  1276. }
  1277. }else{
  1278. var prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  1279. if (prcpgenrflag == "E"){
  1280. if ( prcpClsCd == "H2" || prcpClsCd == "H4" ) {
  1281. model.setValue( strSrc + "[" + sendRow + "]/nigtprcpflag","N" );
  1282. var nigtprcptm = model.getValue("/root/initsrch/nigtprcptm/trgtcd");
  1283. var nigtprcpsplit = nigtprcptm.split("|");
  1284. var nigtprcpstart = nigtprcpsplit[0];
  1285. var nigtprcpend = nigtprcpsplit[1];
  1286. var MyTime = getCurrentTime();
  1287. var realtime = MyTime.substr(0,4);
  1288. if ( nigtprcpstart < realtime || realtime < nigtprcpend){
  1289. model.setValue( strSrc + "[" + sendRow + "]/nigtprcpflag","Y" );
  1290. }
  1291. }
  1292. }
  1293. }
  1294. //-- CP, 항암프로토콜일 경우는 클라이언트에서 품절약체크를 하지 않는다 --//
  1295. if( prcpInptFlag != "05" && prcpInptFlag != "06" && prcpInptFlag != "17" ){
  1296. if ( prcpClsCd == "A2" || prcpClsCd == "A4" || prcpClsCd == "A6" ) {
  1297. //항생제체크
  1298. var returnVal = fGetHardCDList("Y", 233, 3); // 2010. 10. 26. 경북대는 CDSS 추천항생제를 사용하지 않음. 따라서 사용여부를 처방 하드코드 테이블로 설정할 수 있도록 함.
  1299. if (returnVal =="Y") {
  1300. if ( usge == "prcp" && prcpgenrflag != "O" && prcpClsCd == "A6") {
  1301. if ( getArrayData ( drugmastspec + "^", 0, 23, "^", "|" ) == "P" && getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "N" ) {
  1302. if ( objFlag == "child" ) {
  1303. if (opener.javascript.fAntiMicChk ( sendRow, "child", strSrc, prcpInptFlag ) == 0){
  1304. return 0;
  1305. }
  1306. } else {
  1307. if (fAntiMicChk ( sendRow, "1", strSrc, prcpInptFlag ) == 0 ){
  1308. return 0;
  1309. }
  1310. }
  1311. }
  1312. }
  1313. //제한항생제체크
  1314. if ( usge == "prcp" && prcpgenrflag != "O" ) {
  1315. if ( getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "Y" ) {
  1316. if ( objFlag == "child" ) {
  1317. if (opener.javascript.fAntiMicChk ( sendRow, "child", strSrc, prcpInptFlag ) == 0){
  1318. return 0;
  1319. }
  1320. } else {
  1321. if (fAntiMicChk ( sendRow, "1", strSrc, prcpInptFlag ) == 0 ){
  1322. return 0;
  1323. }
  1324. }
  1325. }
  1326. }
  1327. }
  1328. //BY 문세희 20080930 END
  1329. //품절약 체크
  1330. if ( getArrayData (drugmastspec, 0, 10, "^", "|" ) == "Y" ) {
  1331. if ( objFlag == "child" ) {
  1332. opener.javascript.fAltDrug ( sendRow, "child", strSrc, prcpInptFlag );
  1333. } else {
  1334. fAltDrug ( sendRow, "1", strSrc, prcpInptFlag );
  1335. }
  1336. return 0;
  1337. }
  1338. //20090528 마정민 추가. 6세미만 경구약 자동 powdflag전환 때문에 처방복사시 powdflag체크로직 추가. 단 전처방복사는제외.
  1339. var vAge = 99;
  1340. if ( objFlag == "child" ) {
  1341. vAge = parseInt ( opener.model.getValue ( "/root/paminfo/list/age" ));
  1342. } else {
  1343. vAge = parseInt ( model.getValue ( "/root/paminfo/list/age" ));
  1344. }
  1345. if ( vAge < 6 && prcpClsCd == "A2" && prcpInptFlag != "01" ) {
  1346. if ( getArrayData ( drugmastspec + "^", 0, 19, "^", "|" ) == "2" ) { //산제불가
  1347. if ( objFlag == "child" ) {
  1348. opener.javascript.fAltDrug ( sendRow, "child", strSrc, prcpInptFlag, "4" );
  1349. if ( opener.javascript.getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  1350. opener.javascript.clearParameter ( "SPMMB10100_chkyn" );
  1351. return 0; //대체약을 선택했다면 복사시키지 않는다.
  1352. }
  1353. } else {
  1354. fAltDrug ( sendRow, "4", strSrc, prcpInptFlag );
  1355. if ( getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  1356. clearParameter ( "SPMMB10100_chkyn" );
  1357. return 0; //대체약을 선택했다면 복사시키지 않는다.
  1358. }
  1359. }
  1360. //20090602 배성미선생님 요청으로 산제불가 취소해도 복사되게 수정
  1361. } else if ( getArrayData ( drugmastspec + "^", 0, 19, "^", "|" ) == "1" ) { //산제주의
  1362. if ( objFlag == "child" ) {
  1363. opener.javascript.fAltDrug ( sendRow, "child", strSrc, prcpInptFlag, "5" );
  1364. if ( opener.javascript.getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  1365. opener.javascript.clearParameter ( "SPMMB10100_chkyn" );
  1366. return 0; //대체약을 선택했다면 복사시키지 않는다.
  1367. }
  1368. } else {
  1369. fAltDrug ( sendRow, "5", strSrc, prcpInptFlag );
  1370. if ( getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  1371. clearParameter ( "SPMMB10100_chkyn" );
  1372. return 0; //대체약을 선택했다면 복사시키지 않는다.
  1373. }
  1374. }
  1375. }
  1376. }
  1377. }
  1378. //대체처방체크
  1379. var altcdinfo = model.getValue( strSrc + "[" + sendRow + "]/tempcol16" );
  1380. var prcpinptflag = model.getValue( strSrc + "[" + sendRow + "]/prcpinptflag" );
  1381. if ( altcdinfo.substring( 0, 1 ) != "X" && altcdinfo.substring( 0, 1 ) != "A" ) {
  1382. if(altcdinfo.substring( 0, 1 ) == "D") { // 수가 종료 처방 복사 불가 처리 2013.04.18 엄영만
  1383. if(prcpInptFlag == "02") {
  1384. messageBox ( "[" + prcpnm + "]: 수가 또는 검사실 사용종료 되어 처방을 복사 할 수 없습니다.\n\n상단메뉴 기본정보관리->약속Set 메뉴에서 약속처방을 재구성 하시기 바랍니다.", "E999" );
  1385. } else {
  1386. messageBox ( "[" + prcpnm + "]: 수가 또는 검사실 사용종료 되어 처방을 복사", "E001" );
  1387. }
  1388. return 0;
  1389. }
  1390. if (prcpinptflag !="35") { // 자가보유처방은 복사 가능 20100504 by LYJ
  1391. messageBox ( "[" + prcpnm + "]: 수가 또는 검사실 사용종료 되어 처방을 복사", "E001" );
  1392. return 0;
  1393. }
  1394. }
  1395. if (altcdinfo.substring( 0, 1 ) == "X" ) {
  1396. if ( objFlag == "child" ) {
  1397. opener.javascript.fAltPrcpCd ( sendRow, "child", strSrc, prcpInptFlag );
  1398. } else {
  1399. fAltPrcpCd ( sendRow, "1", strSrc, prcpInptFlag );
  1400. }
  1401. return 0;
  1402. }
  1403. }
  1404. //-- CP, 항암프로토콜 처방의 품절약 체크 제외 끝 --//
  1405. if (!fPrmsSaveCheck ( usge, prcpKindCd, prcpnm )) {
  1406. return 0;
  1407. }
  1408. if ( prcpInptFlag == "01" ) { //전회처방
  1409. //반환요청된 처방, D/C된 처방 모두 처방 복사 불가, CHC, 2009-08-03
  1410. //if ( model.getValue ( strSrc + "[" + sendRow + "]/prcphistcd" ) == "E" ) {
  1411. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcphistcd" ) == "E" || model.getValue ( strSrc + "[" + sendRow + "]/prcphistcd" ) == "C") {
  1412. messageBox ( "반납처방은 처방복사", "E001" );
  1413. return 0;
  1414. }
  1415. //종속처방 자처방 복사 불가
  1416. var inclprcpno = model.getValue ( strSrc + "[" + sendRow + "]/inclprcpno" );
  1417. if ( !isNull(inclprcpno) && inclprcpno != "-" ) {
  1418. if ( eval(inclprcpno) > 0 ) {
  1419. if ( model.getValue ( strSrc + "[" + sendRow + "]/grupsnglflag" ) != "M" ) {
  1420. return 0;
  1421. }
  1422. }
  1423. }
  1424. //20080731: 마정민 수정 hsct 자처방 복사 불가
  1425. var hsctlnkno = model.getValue ( strSrc + "[" + sendRow + "]/hsctlnkno" );
  1426. if ( !isNull(hsctlnkno) && hsctlnkno != "-" ) {
  1427. if ( eval(hsctlnkno) > 0 ) {
  1428. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcpsetcd" ) != "-" ) {
  1429. return 0;
  1430. }
  1431. }
  1432. }
  1433. }
  1434. if ( model.getValue( strSrc + "[" + sendRow + "]/grupsnglflag" ) == "M" ) { //그룹코드 M을 찾아낸다. 처방검색일때만 풀린다.
  1435. var grupCond1 = model.getValue( strSrc + "[" + sendRow + "]/prcpcd" );
  1436. var grupCond3 = "";
  1437. var grupCond4 = "";
  1438. var inclprcpno = "";
  1439. if ( objFlag == "child" ) {
  1440. grupCond3 = opener.model.getValue ( "/root/init/prcpdd" );
  1441. grupCond4 = opener.model.getValue ( "/root/paminfo/list/insukind");
  1442. if ( usge == "prcp" ) { //처방화면에만 종속처방이 적용된다.
  1443. inclprcpno = eval(opener.model.getValue ( "/root/init/inclprcpno")) + 1; //종속처방번호를 받아온다.
  1444. }
  1445. } else {
  1446. grupCond3 = model.getValue ( "/root/init/prcpdd" );
  1447. grupCond4 = model.getValue ( "/root/paminfo/list/insukind");
  1448. if ( usge == "prcp" ) {//처방화면에만 종속처방이 적용된다.
  1449. inclprcpno = eval(model.getValue ( "/root/init/inclprcpno")) + 1; //종속처방번호를 받아온다.
  1450. }
  1451. }
  1452. prcpGroupSrch ( grupCond1, grupCond3, grupCond4 );
  1453. if ( grupSrc == null ) grupSrc = "/root/prcpgroup/prcplist";
  1454. var srcNodeList = model.instances(0).selectNodes( grupSrc );
  1455. if ( srcNodeList.length > 0 ) {
  1456. if ( objFlag == "child" ) {
  1457. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1458. model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1459. if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "N", inclprcpno )) {
  1460. return 0;
  1461. }
  1462. } else {
  1463. var destNode = strDest;
  1464. model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1465. if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "N", inclprcpno )) {
  1466. return 0;
  1467. }
  1468. }
  1469. srchRow ++;
  1470. if ( usge == "prcp" ) {
  1471. for (var i=1; i<=srcNodeList.length; i++) {
  1472. if ( objFlag == "child" ) {
  1473. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1474. model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
  1475. if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "N", inclprcpno )) {
  1476. return 0;
  1477. }
  1478. } else {
  1479. var destNode = strDest;
  1480. model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
  1481. if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "N", inclprcpno )) {
  1482. return 0;
  1483. }
  1484. }
  1485. if ( objFlag == "child" ) {
  1486. srchRow = opener.javascript.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1487. } else {
  1488. srchRow = addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1489. }
  1490. srchRow ++;
  1491. }
  1492. }
  1493. }
  1494. } else if ( model.getValue( strSrc + "[" + sendRow + "]/grupsnglflag" ) == "J" ) { //그룹지시처방 J을 찾아낸다.
  1495. //조회조건
  1496. var direcCond1 = model.getValue( strSrc + "[" + sendRow + "]/srchcondcnts" );
  1497. var direcCond5 = model.getValue( strSrc + "[" + sendRow + "]/prcpcd" );
  1498. var direcCond3 = "";
  1499. var direcCond4 = "";
  1500. if ( prcpClsCd == "04" ) {
  1501. hsctflag = "Y";
  1502. }
  1503. if ( objFlag == "child" ) {
  1504. direcCond3 = opener.model.getValue ( "/root/init/prcpdd" );
  1505. direcCond4 = opener.model.getValue ( "/root/paminfo/list/insukind");
  1506. } else {
  1507. direcCond3 = model.getValue ( "/root/init/prcpdd" );
  1508. direcCond4 = model.getValue ( "/root/paminfo/list/insukind");
  1509. }
  1510. prcpDirecSrch ( direcCond1, direcCond3, direcCond4, direcCond5 );
  1511. if ( direcSrc == null ) direcSrc = "/root/prcpdirec/prcplist";
  1512. var srcNodeList = model.instances(0).selectNodes( direcSrc );
  1513. if ( srcNodeList.length > 0 ){ //그룹지시처방 J는 종속하는 수가 코드가 있을 때만 추가.
  1514. //HSCT 모코드는 HSCTTEMPFLAG 가 N이다.
  1515. if ( objFlag == "child" ) {
  1516. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1517. model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1518. //종속처방번호 Setting ( hsctlnkno )
  1519. var hsctlnkno = eval ( opener.model.getValue ( "/root/init/hsctlnkno" )) + 1;
  1520. opener.model.setValue ( "/root/init/hsctlnkno", hsctlnkno );
  1521. if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "M" )) {
  1522. return 0;
  1523. }
  1524. } else {
  1525. var destNode = strDest;
  1526. var hsctlnkno = eval ( model.getValue ( "/root/init/hsctlnkno" )) + 1;
  1527. model.setValue ( "/root/init/hsctlnkno", hsctlnkno );
  1528. model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1529. if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "M" )) {
  1530. return 0;
  1531. }
  1532. }
  1533. //CP 약속셋 생성 시에는 자코드가 풀리면 안된다. CP배치를 통해 실처방 저장시 풀린다! (2008.01.22)
  1534. if( opener.model.getValue("/root/cp") == "S" || model.getValue("/root/cp") == "S" ){
  1535. return;
  1536. }
  1537. if ( objFlag == "child" ) {
  1538. srchRow = opener.javascript.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1539. } else {
  1540. srchRow = addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1541. }
  1542. srchRow ++;
  1543. for (var k=1; k <= srcNodeList.length; k++) {
  1544. if ( objFlag == "child" ) {
  1545. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1546. model.duplicate( destNode, direcSrc + "[" + k + "]", "*[" + srchRow + "]");
  1547. if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, hsctflag )) {
  1548. return 0;
  1549. }
  1550. } else {
  1551. var destNode = strDest;
  1552. model.duplicate( destNode, direcSrc + "[" + k + "]", "*[" + srchRow + "]");
  1553. if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, hsctflag )) {
  1554. return 0;
  1555. }
  1556. }
  1557. if ( objFlag == "child" ) {
  1558. srchRow = opener.javascript.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1559. } else {
  1560. srchRow = addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1561. }
  1562. srchRow ++;
  1563. }
  1564. }
  1565. } else if ( (prcpClsCd == "B2" || prcpClsCd == "B4" || prcpClsCd == "B6") && (getArrayData (drugmastspec, 0, 2, "^", "|" ) == "0" || getArrayData (drugmastspec, 0, 2, "^", "|" ) == "-")){
  1566. //검사대분류유형(testlrgkind) 그룹: 0, 1
  1567. //-일 때는 검체와 상관없는 그룹코드
  1568. var grupCond1 = model.getValue( strSrc + "[" + sendRow + "]/prcpcd" );
  1569. var grupCond3 = "";
  1570. var grupCond4 = "";
  1571. var popflag = "group"
  1572. if ( objFlag == "child" ) {
  1573. popflag = "child";
  1574. grupCond3 = opener.model.getValue ( "/root/init/prcpdd" );
  1575. grupCond4 = opener.model.getValue ( "/root/paminfo/list/insukind");
  1576. } else {
  1577. grupCond3 = model.getValue ( "/root/init/prcpdd" );
  1578. grupCond4 = model.getValue ( "/root/paminfo/list/insukind");
  1579. }
  1580. //구수가코드일 경우
  1581. if ( oldprcpflag == "Y" ) {
  1582. popflag = "oldprcp";
  1583. }
  1584. var drugmthdspccd = model.getValue ( strSrc + "[" + sendRow + "]/drugmthdspccd" );
  1585. var spccd = "";
  1586. var spcnm = "";
  1587. fGetSpc ( sendRow, popflag, objFlag )
  1588. if ( drugmthdspccd == "998" ) {
  1589. if ( getParameter ("SPMMO03500_rtn_useyn") == "Y" ) {
  1590. spccd = getParameter ( "SPMMO03500_rtn_spccd" );
  1591. spcnm = getParameter ( "SPMMO03500_rtn_spcscrnnm" );
  1592. }
  1593. clearParameter ( "SPMMO03500_rtn_useyn" );
  1594. clearParameter ( "SPMMO03500_rtn_spccd" );
  1595. clearParameter ( "SPMMO03500_rtn_spcscrnnm" );
  1596. } else if ( drugmthdspccd == "999" ) {
  1597. if ( getParameter ("SPMMO03400_rtn_useyn") == "Y" ) {
  1598. spccd = getParameter ( "SPMMO03400_rtn_spccd" );
  1599. spcnm = getParameter ("SPMMO03400_rtn_spcscrnnm" );
  1600. }
  1601. clearParameter ( "SPMMO03400_rtn_useyn" );
  1602. clearParameter ( "SPMMO03400_rtn_spccd" );
  1603. clearParameter ( "SPMMO03400_rtn_spcscrnnm" );
  1604. } else { //팝업이 뜨지 않을 때는 본체의 검체코드로 검색한다.
  1605. spccd = drugmthdspccd;
  1606. spcnm = model.getValue ( strSrc + "[" + sendRow + "]/drugmthdspccdnm" );
  1607. }
  1608. prcpGroupSrch ( grupCond1, grupCond3, grupCond4, spccd, getArrayData (drugmastspec, 0, 2, "^", "|" ), "getLisPrcpGroupInfo" );
  1609. if ( objFlag == "child" ) {
  1610. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1611. } else {
  1612. var destNode = strDest;
  1613. }
  1614. if ( grupSrc == null ) grupSrc = "/root/prcpgroup/prcplist";
  1615. var srcNodeList = model.instances(0).selectNodes( grupSrc );
  1616. for (var i=1; i<=srcNodeList.length; i++) {
  1617. if ( objFlag == "child" ) {
  1618. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1619. model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
  1620. if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag )) {
  1621. return 0;
  1622. }
  1623. if (!isNull(spccd)) {
  1624. if ( getArrayData (drugmastspec, 0, 2, "^", "|" ) != "-" ) {
  1625. opener.model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccd", spccd );
  1626. opener.model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccdnm", spcnm );
  1627. }
  1628. }
  1629. } else {
  1630. var destNode = strDest;
  1631. model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
  1632. if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag )) {
  1633. return 0;
  1634. }
  1635. if (!isNull(spccd)) {
  1636. if ( getArrayData (drugmastspec, 0, 2, "^", "|" ) != "-" ) {
  1637. model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccd", spccd );
  1638. model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccdnm", spcnm );
  1639. }
  1640. }
  1641. }
  1642. srchRow ++;
  1643. }
  1644. } else { //그룹코드 M, J 가 아닐 경우
  1645. if ( objFlag == "child" ) {
  1646. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1647. model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1648. //전처방 때문에 duplicate => addPrcpSetValue 하는 것으로 수정
  1649. //먼저 set 하면 전처방 화면 내용이 수정되고 그로인해 처방키 초기화로 인해 D/C 시 에러
  1650. if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag )) {
  1651. return 0;
  1652. }
  1653. } else {
  1654. var destNode = strDest;
  1655. model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1656. //전처방 때문에 duplicate => addPrcpSetValue 하는 것으로 수정 (main에서는 필요없지만 구조를 맞추려 같이 고침)
  1657. //먼저 set 하면 전처방 화면 내용이 수정되고 그로인해 처방키 초기화로 인해 D/C 시 에러
  1658. if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag )) {
  1659. return 0;
  1660. }
  1661. }
  1662. if ( objFlag == "child" ) {
  1663. srchRow = opener.javascript.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1664. } else {
  1665. srchRow = addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1666. }
  1667. srchRow ++;
  1668. }
  1669. //model.addLog(" ***************** End Of addPrcpDetl()");
  1670. return srchRow; //검색 row 값을 넘겨준다.
  1671. }
  1672. /**
  1673. * @desc : 처방main에 넘긴 후에 기본값을 setting한다.
  1674. * @param : objFlag => child or ...
  1675. : strSrc => setting할 source node
  1676. : sendRow => setting할 row
  1677. : prcpInptFlag => 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  1678. : hsctflag => hsct 인지 표시
  1679. : inclprcpcd => 종속처방코드
  1680. * @return : true, false
  1681. * @authur : 마정민 2007. 4. 12
  1682. * @---------------------------------------------------
  1683. */
  1684. function addPrcpSetValue ( objFlag, strSrc , sendRow, prcpInptFlag, hsctflag, inclprcpno ) {
  1685. //model.addLog(" ************* Start Of addPrcpSetValue()");
  1686. var prcpdd = ""; //처방일
  1687. var prcpkindcd = ""; //처방종류변수
  1688. var pamInfoNode = "/root/paminfo/list";
  1689. var pid = ""; //환자번호
  1690. var indd = ""; //진료일자
  1691. var cretno = ""; //생성번호
  1692. var orddeptcd = ""; //담당부서
  1693. var orddrid = ""; //담당교수
  1694. var prcpgenrflag = ""; //외래입원구분
  1695. var prcpclscd = model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" );
  1696. var orddeptcd = "";
  1697. var org_prcpInptFlag = prcpInptFlag;
  1698. if ( isNull(prcpInptFlag)){
  1699. prcpInptFlag = model.getValue ( strSrc + "[" + sendRow + "]/prcpinptflag" );
  1700. }
  1701. if( (org_prcpInptFlag != "05" || (org_prcpInptFlag == "05" && model.getValue(strSrc + "[" + sendRow + "]/prcpinptflag") == "00")) && model.getValue (strSrc + "[" + sendRow + "]/prcpinptflag") != "35"){ //20100426 자가보유약일 때 prcpinptflag 35 로 지정한다 LYJ
  1702. model.setValue ( strSrc + "[" + sendRow + "]/prcpinptflag", prcpInptFlag ); //처방입력구분
  1703. prcpInptFlag = org_prcpInptFlag;
  1704. }
  1705. model.setValue ( strSrc + "[" + sendRow + "]/prcphistcd", "O" ); //처방이력코드:O
  1706. model.setValue ( strSrc + "[" + sendRow + "]/prcpsignflag", "2" ); //처방이력구분:2
  1707. model.setValue ( strSrc + "[" + sendRow + "]/prcprefseq", "0" ); //처방순서(전처방에 넘어올때도 있기때문에 0으로 클리어)
  1708. model.setValue ( strSrc + "[" + sendRow + "]/etcprcpflag", "-" ); //디폴트세팅.
  1709. //-- CP, 항암프로토콜일 경우 추가되는 saveflaginfo 값 셋팅 --//
  1710. if( prcpInptFlag == "05" || prcpInptFlag == "06" ){
  1711. if( model.getValue(strSrc + "[" + sendRow + "]/prcpcd") != "000000000033" ){
  1712. //처방명의 구분이 2개가 중복되어 저장되는 문제 -> 원처방명을 저장, 공통 지시처방의 원처방명은 "전달사항" 이므로, 공통 지시처방만 제외
  1713. model.setValue ( strSrc + "[" + sendRow + "]/prcpnm", model.getValue(strSrc + "[" + sendRow + "]/orgprcpnm") ); //makePrcpNm() 때문에 prcpnm->orgprcpnm
  1714. }
  1715. if( prcpInptFlag == "06" ){
  1716. model.makeValue ( "/root/save/saveflaginfo/cpgappno", appNo_SMMMO00110 ); //CP처방 or 프로토콜처방 no
  1717. model.makeValue ( "/root/save/saveflaginfo/prtlprcpstatus", prtlprcpstatus_SMMMO00110 ); //CP처방 or 프로토콜처방 저장 status
  1718. model.makeValue ( "/root/save/saveflaginfo/prtlflag", "10" ); //프로토콜구분
  1719. }
  1720. }else{
  1721. model.setValue ( strSrc + "[" + sendRow + "]/status", "I" );
  1722. }
  1723. //-- 셋팅 끝 --//
  1724. var drugmastspec = model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec") + "^";
  1725. var usge = model.getValue ( "/root/usge" );
  1726. var spcldrug = getArrayData ( drugmastspec + "^", 0, 23, "^", "|" );
  1727. //가정간호일때 시작일,종료일 바꿔준다.
  1728. if (usge == "home") {
  1729. model.setValue ( strSrc + "[" + sendRow + "]/tempcol6",model.getValue ( "/root/init/prcpfromdd" )); //시작일자
  1730. model.setValue ( strSrc + "[" + sendRow + "]/tempcol7",model.getValue ( "/root/init/prcptodd" )); //종료일자
  1731. //20080825 마정민 수정 가정간호처방 주사일 경우 자동으로 home 체크. 단 마약이 아닐경우. TPN일 경우 추가 20081013 by Moonsh
  1732. if ( prcpclscd == "A6" && spcldrug != "M" && getArrayData (drugmastspec , 0, 14, "^", "|" ) == "Y" ) {
  1733. model.setValue ( strSrc + "[" + sendRow + "]/selfprcpflag","Y"); //종료일자
  1734. }
  1735. }
  1736. model.setValue ( strSrc + "[" + sendRow + "]/prcpauthflag", model.getValue ( "/root/init/prcpauthflag" )); //처방권한구분
  1737. //수술예약번호 setting
  1738. if( !isNull (model.getValue ( "/root/operation/list/oprsrvno"))){
  1739. model.setValue ( strSrc + "[" + sendRow + "]/oprsrvno", model.getValue ( "/root/operation/list/oprsrvno"));
  1740. //by sonjy 20091120 심야가산 check 마취료처방 추가
  1741. if ( prcpclscd == "H2" || model.getValue ( strSrc + "[" + sendRow + "]/tempcol2" ) == "13|01|00" ) { //수술처방인경우
  1742. //응급으로 수술예약정보가 있다면 erprcpflag를 Y로 setting 한다.
  1743. var opflagcd = model.getValue("/root/operation/list/opflagcd"); // opflagcd 1:정규, 2:응급, 3:추가
  1744. if(opflagcd == "2"){
  1745. //model.setValue("/root/main/prcp/prcplist/erprcpflag", "Y");
  1746. model.setValue ( strSrc + "[" + sendRow + "]/erprcpflag", "Y");
  1747. }
  1748. //수술시작시간이 오후 5시 이후에는 야간으로 체크한다.
  1749. var opfromtmcd = model.getValue("/root/operation/list/opfromtmcd"); //opfromtmcd 수술시작시간
  1750. //if(eval(opfromtmcd) > 170000 ) { //야간 시간 기준을 물어볼 것
  1751. //수술및 마취료처방시 심야기준 08시이전, 18시 이후 by sonjy 20081211
  1752. if(eval(opfromtmcd) >= 180000 || eval(opfromtmcd) < 80000 ) {
  1753. model.setValue ( strSrc + "[" + sendRow + "]/nigtprcpflag", "Y");
  1754. }
  1755. //수술액팅일자 = 확정수술일자
  1756. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", model.getValue ( "/root/operation/list/opcnfmdd") );
  1757. }
  1758. } else {
  1759. // CP 에서는 수동으로 수술예약번호를 mapping 한다.
  1760. if( model.getValue ( "/root/cp" ) != "Y" ){
  1761. model.setValue ( strSrc + "[" + sendRow + "]/oprsrvno", "0" );
  1762. }else{
  1763. if( isNull (model.getValue (strSrc + "[" + sendRow + "]/oprsrvno" )))
  1764. model.setValue ( strSrc + "[" + sendRow + "]/oprsrvno", "0" );
  1765. }
  1766. }
  1767. var srcNodeList = model.instances(0).selectNodes( "/root/paminfo" );
  1768. if ( srcNodeList.length == 0 ){
  1769. messageBox ( "환자정보가", "E014" );
  1770. return false;
  1771. }
  1772. prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  1773. pid = model.getValue ( pamInfoNode + "/pid" );
  1774. orddeptcd = model.getValue ( pamInfoNode + "orddeptcd" );
  1775. //by sonjy 2008-08-25 건진일 경우 check추가.
  1776. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ) {
  1777. indd = model.getValue ( pamInfoNode + "/orddd" );
  1778. orddrid = model.getValue ( pamInfoNode + "/orddrid" );
  1779. } else {
  1780. indd = model.getValue ( pamInfoNode + "/indd" );
  1781. orddrid = model.getValue ( pamInfoNode + "/medispclid" );
  1782. }
  1783. cretno = model.getValue ( pamInfoNode + "/cretno" );
  1784. orddeptcd = model.getValue ( pamInfoNode + "/orddeptcd" );
  1785. //2011.11.07 엄영만 선택진료여부 및 선택진료의사 셋팅
  1786. if (prcpclscd != "D2" || usge != "prcp") { // 처방시에 병리처방은 의뢰지 팝업후 검체코드설정되면 선택의사 설정 함.(의뢰지 작성후 팝업 되도록) 2011.11.25 엄영만.
  1787. fSetPrcpSpecValue(strSrc, sendRow, prcpInptFlag);
  1788. }
  1789. //-- CP,항암프로토콜일 경우, 처방일과 처방종류가 일률적으로 입력되지 않는다 --//
  1790. if( prcpInptFlag != "05" && prcpInptFlag != "06" ){
  1791. prcpdd = model.getValue ( "/root/init/prcpdd" ); //처방일
  1792. prcpkindcd = model.getValue ("/root/init/prcpkindcd"); //처방종류(정규,추가...)
  1793. //외래이고 약속 set/전처방 copy시 입원전 검사일 경우 prcpkindcd를 20으로 초기화하지 않는다.
  1794. //by sonjy 김민선 선생님 요청사항 20080925
  1795. if( prcpgenrflag == "O" &&
  1796. (model.getValue ( strSrc + "[" + sendRow + "]/prcpkindcd" ) == "90" ||
  1797. model.getValue ( strSrc + "[" + sendRow + "]/prcpkindcd") == "95" ) ){
  1798. prcpkindcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpkindcd" ) ;
  1799. }
  1800. }else{
  1801. //JJE-
  1802. prcpdd = model.getValue ( strSrc + "[" + sendRow + "]/prcpdd" );
  1803. prcpkindcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpkindcd" );
  1804. if(isNull(prcpdd)){
  1805. prcpdd = model.getValue ( "/root/init/prcpdd" );
  1806. }
  1807. //JJE root/init/prcpdd 를 해당 미래일자로 변경... (2008.09.11)
  1808. if( prcpdd != model.getValue("/root/init/prcpdd") && prcpdd > model.getValue("/root/init/prcpdd") ){
  1809. model.setValue("/root/init/prcpdd", prcpdd);
  1810. cmb_prcpdd.refresh();
  1811. }
  1812. var prcpsetcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpsetcd" );
  1813. if(prcpsetcd != "-"){
  1814. //풀린 자코드에 처방종류 및 처방입력구분을 모코드와 동일하게 넣어줌
  1815. var prcpddNode = instance1.selectSingleNode("/root/main/prcp/prcplist[prcpcd='" + prcpsetcd + "']/prcpdd");
  1816. var prcpkindcdNode = instance1.selectSingleNode("/root/main/prcp/prcplist[prcpcd='" + prcpsetcd + "']/prcpkindcd");
  1817. var etclnkspecNode = instance1.selectSingleNode("/root/main/prcp/prcplist[prcpcd='" + prcpsetcd + "']/etclnkspec");
  1818. var prcpinptflagNode = instance1.selectSingleNode("/root/main/prcp/prcplist[prcpcd='" + prcpsetcd + "']/prcpinptflag");
  1819. if( prcpddNode != null ){
  1820. prcpdd = prcpddNode.text;
  1821. }
  1822. if( prcpkindcdNode != null ) prcpkindcd = prcpkindcdNode.text;
  1823. if( etclnkspecNode != null ){
  1824. model.makeValue ( strSrc + "[" + sendRow + "]/etclnkspec", etclnkspecNode.text );
  1825. }
  1826. if( prcpinptflagNode != null ){
  1827. model.makeValue ( strSrc + "[" + sendRow + "]/prcpinptflag", prcpinptflagNode.text );
  1828. }
  1829. }
  1830. model.makeValue ( strSrc + "[" + sendRow + "]/prcphopedd", prcpdd );
  1831. //-JJE
  1832. }
  1833. //마취기록화면에서 처방화면을 띄우면
  1834. //마취처방일 경우 필수입력구분이 1이면 수술시간과, 수술구분을 넣어준다. 넣어지는 기준은 마취처방상세팝업과 동일하다.
  1835. if ( model.getValue ( "/root/anst/paramyn" ) == "Y" ) {
  1836. model.setValue ( strSrc + "[" + sendRow + "]/prcpinptflag", "27" );
  1837. if ( prcpclscd == "I2" || prcpclscd == "I4" ){ //마취
  1838. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcpessninptflag" ) == "1" ) { // 필수입력구분이 1
  1839. var earncls = model.getValue ( strSrc + "[" + sendRow + "]/tempcol2" );
  1840. if ( earncls != "04|01|00" && earncls != "05|01|00" ) { //마취구분
  1841. model.setValue ( strSrc + "[" + sendRow + "]/opansflagcd", model.getValue ( "/root/anst/opansflagcd" ));
  1842. }
  1843. model.setValue ( strSrc + "[" + sendRow + "]/ansttm", model.getValue ( "/root/anst/ansttm" ));//마취시간
  1844. model.setValue ( strSrc + "[" + sendRow + "]/clinccmtcnts", model.getValue ( "/root/anst/anstfromdt" ) + "|" + model.getValue ( "/root/anst/ansttodt" ));
  1845. }
  1846. }
  1847. } else {
  1848. if ( prcpclscd == "I2" || prcpclscd == "I4" ){ //마취
  1849. model.setValue ( strSrc + "[" + sendRow + "]/clinccmtcnts", "-" );
  1850. }
  1851. }
  1852. model.setValue ( strSrc + "[" + sendRow + "]/prcphopedd",prcpdd); //처방희망일자
  1853. //전처방이나 약속처방에서 시행부서가 현재 존재 하는 부서인지 체크 2012.10.29 엄영만
  1854. if ( prcpInptFlag == "01" || prcpInptFlag == "02" ) {
  1855. var bfprcpexecdeptcd = model.getValue( strSrc + "[" + sendRow + "]/prcpexecdeptcd" );
  1856. var CheckExecdeptcdNode;
  1857. if ( objFlag == "child" ) {
  1858. CheckExecdeptcdNode = opener.model.instance1.selectNodes( "/root/orddept/dept[deptcd='" + bfprcpexecdeptcd + "']" );
  1859. } else {
  1860. CheckExecdeptcdNode = model.instance1.selectNodes( "/root/orddept/dept[deptcd='" + bfprcpexecdeptcd + "']" );
  1861. }
  1862. if(CheckExecdeptcdNode == null || CheckExecdeptcdNode.length == 0) {
  1863. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd", "-" );
  1864. }
  1865. }
  1866. //전처방 clear
  1867. if ( prcpInptFlag == "01" ) {
  1868. // 전처방 복사시 초기화해야 할 것 ( PAMPKSpec, PrcpKindCd 등은 처방 복사시 다시 setting 해줌 )
  1869. if ( prcpclscd == "B2" ) { // 진검 전처방에서 응급 체크되어 있는 것은 복사 시에도 응급 체크되어지도록 요청 - 20081127 by MoonSH
  1870. var erprcpflag = model.getValue ( strSrc + "[" + sendRow + "]/erprcpflag" );
  1871. if ( erprcpflag == "Y") {
  1872. model.setValue ( strSrc + "[" + sendRow + "]/erprcpflag", "Y" );
  1873. } else {
  1874. model.setValue ( strSrc + "[" + sendRow + "]/erprcpflag", "N" );
  1875. }
  1876. } else {
  1877. model.setValue ( strSrc + "[" + sendRow + "]/erprcpflag", "N" ); //2008-01-28 약국요청 응급은 복사되면 안됨
  1878. }
  1879. model.setValue ( strSrc + "[" + sendRow + "]/rgstdt", "" ); //rgstdt: 등록일시
  1880. model.setValue ( strSrc + "[" + sendRow + "]/rgstridnm", "" ); //rgstridnm: 등록자명
  1881. model.setValue ( strSrc + "[" + sendRow + "]/tempprcpflag", "N" ); //tempprcpflag: 임시처방구분
  1882. model.setValue ( strSrc + "[" + sendRow + "]/etcprcpresncd", "-" ); //etcprcpresncd: 응급의학관리료 사유 (코드정의서 M0012 참조), 수혈반납 및 폐기사유코드 (코드정의서 M0037, M0038 참조), 재활처방 마감일자
  1883. model.setValue ( strSrc + "[" + sendRow + "]/ordreqlnkno", "0" ); //ordreqlnkno: 진료의뢰연결번호
  1884. model.setValue ( strSrc + "[" + sendRow + "]/testreqlnkno", "0" ); //testreqlnkno: 검사의뢰연결번호
  1885. model.setValue ( strSrc + "[" + sendRow + "]/prcplnkdd", "00000000" ); //prcplnkdd: 임시처방에 대한 연계 일자
  1886. model.setValue ( strSrc + "[" + sendRow + "]/prcplnkno", "0" ); //prcplnkno: 임시처방에 대한 연계 번호
  1887. model.setValue ( strSrc + "[" + sendRow + "]/prtlno", "0" ); //prtlno: 프로토콜SET에 대한 코드로 일련번호 형태로 관리
  1888. model.setValue ( strSrc + "[" + sendRow + "]/contprcpspec", "-" ); //contprcpspec: 연속처방내역
  1889. model.setValue ( strSrc + "[" + sendRow + "]/etclnkspec", "-" ); //etclnkspec: 항암프로토콜번호|CP번호
  1890. model.setValue ( strSrc + "[" + sendRow + "]/tempcol6", "" ); //전처방 화면 display clear
  1891. model.setValue ( strSrc + "[" + sendRow + "]/tempcol7", "" ); //전처방 화면 display clear
  1892. var antibiotics = getArrayData ( model.getValue ( strSrc + "[" + sendRow + "]/tempcol8" ) + "^", 0, 0, "^", "|" );
  1893. if ( antibiotics != "antibiotics" ){ //20081020: 마정민수정. 전처방에 항생제 값이 setting 되어 있다면 클리어 시키지 않는다.
  1894. model.setValue ( strSrc + "[" + sendRow + "]/tempcol8", "" ); //전처방 화면 display clear
  1895. }
  1896. model.setValue ( strSrc + "[" + sendRow + "]/tempcol9", "" ); //전처방 화면 display clear
  1897. model.setValue ( strSrc + "[" + sendRow + "]/tempcol12", "" ); //전처방 화면 display clear
  1898. model.setValue ( strSrc + "[" + sendRow + "]/tempcol13", "" ); //전처방 화면 display clear
  1899. model.setValue ( strSrc + "[" + sendRow + "]/tempcol14", "" ); //전처방 화면 display clear
  1900. model.setValue ( strSrc + "[" + sendRow + "]/tempcol15", "" ); //전처방 화면 display clear
  1901. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc1", "" ); //건진 SET처방
  1902. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc3", "" ); //OCR출력정보
  1903. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc4", "" ); //귀가유치용물품여부
  1904. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc5", "" ); //multi-day no
  1905. model.setValue ( strSrc + "[" + sendRow + "]/druglnkno", "0" );
  1906. model.setValue ( strSrc + "[" + sendRow + "]/drgacptflag", "-" ); // DRG인정 전처방 복사시 clear
  1907. if ( prcpclscd == "B2" || prcpclscd == "B6") {
  1908. var contyn = getArrayData ( drugmastspec, 0, 5, "^", "|" );
  1909. if ( contyn == "Y" ) {
  1910. var conttestintvlflag = model.getValue ( strSrc + "[" + sendRow + "]/diagtestconttestintvlflag" );
  1911. if ( conttestintvlflag == "N" ) {
  1912. model.setValue ( strSrc + "[" + sendRow + "]/diagtestconttestcdspec", "-" );
  1913. model.setValue ( strSrc + "[" + sendRow + "]/drugrateqty", "-" );
  1914. model.setValue ( strSrc + "[" + sendRow + "]/diagtestconttestorgtims", "1" );
  1915. } else {
  1916. var cdnm = model.getValue ( "/root/init/conttestintvlflag/M0545[cdid=" + conttestintvlflag + "]/cdnm" );
  1917. var diagtestconttestbasetm = model.getValue ( strSrc + "[" + sendRow + "]/diagtestconttestbasetm" );
  1918. model.setValue ( strSrc + "[" + sendRow + "]/diagtestconttestcdspec", diagtestconttestbasetm + cdnm );
  1919. model.setValue ( strSrc + "[" + sendRow + "]/drugrateqty", diagtestconttestbasetm );
  1920. model.setValue ( strSrc + "[" + sendRow + "]/diagtestconttestorgtims", "1" );
  1921. }
  1922. }
  1923. }
  1924. }
  1925. //-- CP,항암프로토콜일 경우 etclnkspec 컬럼 값 셋팅 --//
  1926. else if( prcpInptFlag == "05" ){
  1927. //Hsct 처방일 경우, 조회해 온 자코드들에 값을 setting
  1928. model.setValue(strSrc + "[" + sendRow + "]/status", "I");
  1929. //model.setValue(strSrc + "[" + sendRow + "]/prcphopedd", model.getValue ( "/root/init/prcpdd" )); //JJE(-)
  1930. //cp는 이미 인스턴스에 값이 들어있음
  1931. if( isNull(model.getValue(strSrc + "[" + sendRow + "]/etclnkspec")) ){
  1932. model.makeValue ( strSrc + "[" + sendRow + "]/etclnkspec", "-" ); //CP처방 or 프로토콜처방 no
  1933. }
  1934. }
  1935. else if( prcpInptFlag == "06" ){
  1936. //항암은 이미 인스턴스에 값이 들어있음
  1937. model.makeValue ( strSrc + "[" + sendRow + "]/etclnkspec", etclnkspecValue_SMMMO00110 ); //CP처방 or 프로토콜처방 no
  1938. //model.makeValue ( strSrc + "[" + sendRow + "]/cpno", model.getValue ( strSrc + "[" + sendRow + "]/prtldg") ); //CpNo 에 프로토콜 차수 저장
  1939. }
  1940. else if( prcpInptFlag == "07" ){ //임상시험 프로토콜에서 불러올때.
  1941. if(prcpgenrflag == "I" || prcpgenrflag == "D"){
  1942. model.makeValue ( strSrc + "[" + sendRow + "]/subcretno", model.getValue("/root/init/subjsubcretno") ); // 임상프로토콜에서 처방시 임상유형의 cretno를 subcretno로 세팅
  1943. }
  1944. }
  1945. //-- CP,항암프로토콜일 경우 etclnkspec 컬럼 값 셋팅 끝 --//
  1946. model.setValue ( strSrc + "[" + sendRow + "]/inclprcpcd", "-" ); //종속처방
  1947. model.setValue ( strSrc + "[" + sendRow + "]/inclprcpno", "0" );//종속처방번호
  1948. //20090518 마정민수정. 입원일 경우 전처방, 약속처방 복사처방의 선처치를 제외한다.
  1949. if( prcpgenrflag != "O" && prcpgenrflag != "S" ) {
  1950. if ( prcpInptFlag == "01" || prcpInptFlag == "02" ) {
  1951. if ( model.getValue ( strSrc + "[" + sendRow + "]/precureprcpflag" ) == "Y" ) {
  1952. if( prcpclscd.substring(0,1) == "A" || prcpclscd == "M2" ) model.setValue ( strSrc + "[" + sendRow + "]/precureprcpflag", "N" );
  1953. }
  1954. }
  1955. }
  1956. if ( prcpclscd == "F2" && prcpgenrflag == "O") {
  1957. model.setValue ( strSrc + "[" + sendRow + "]/rehbprcpenddd", prcpdd ); //재활마감일
  1958. } else if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) { //약처방
  1959. // 원내처방사유 SETTING
  1960. fHosinPrcpResncdSed ( objFlag, strSrc, sendRow );
  1961. //2010. 12. 29 김영학 약처방 원외일 경우 시행부서가 셋팅되어 있지 않으면 기본 외래약국으로 셋팅해준다.
  1962. if( prcpgenrflag != "O" && prcpgenrflag != "S" ) {
  1963. if ( model.getValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag" ) == "O"
  1964. && (model.getValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd" ) == "-" || model.getValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd" ) == "D")) {
  1965. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd" , fGetHardCDList("Y", 260, 3))
  1966. }
  1967. }
  1968. //AST 검사 체크
  1969. var astyn = getArrayData ( drugmastspec, 0, 22, "^", "|" );
  1970. if ( astyn == "Y" ) {
  1971. model.setValue ( strSrc + "[" + sendRow + "]/asttestflag", "Y" );
  1972. }
  1973. //응급 flag 가 Y인 경우는 1회만 가능
  1974. if ( model.getValue ( strSrc + "[" + sendRow + "]/erprcpflag" ) == "Y" ||
  1975. model.getValue ( strSrc + "[" + sendRow + "]/prnprcpflag" ) == "Y"
  1976. ) {
  1977. var prcptims = model.getValue ( strSrc + "[" + sendRow + "]/prcptims" );
  1978. if ( prcptims != "1" ) {
  1979. //1이 아닌 경우는 1로 바꿔주고 경구약인 경우는 용법도 바꿔준다.
  1980. model.setValue ( strSrc + "[" + sendRow + "]/prcptims", "1" );
  1981. var prcpqty = model.getValue ( strSrc + "[" + sendRow + "]/prcpqty" );
  1982. var prcpvol = model.getValue ( strSrc + "[" + sendRow + "]/prcpvol" );
  1983. if ( prcpclscd == "A2" ) {
  1984. fBaseMthd(sendRow);
  1985. }
  1986. if ( prcpclscd == "A2" || prcpclscd == "A4" ) {
  1987. if ( prcptims != "0" ) {
  1988. prcpqty = (eval(prcpqty)*1000/eval(prcptims));
  1989. prcpvol = (eval(prcpvol)*1000/eval(prcptims));
  1990. model.setValue ( strSrc + "[" + sendRow + "]/prcpqty", Math.round ( prcpqty ) / 1000);
  1991. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", Math.round ( prcpvol ) / 1000);
  1992. }
  1993. }
  1994. }
  1995. }
  1996. //by sonjy 20081216 외래일경우 전처방/약속처방에서 copy시 약/주사에 한해 수행부서를 마스터의 부서로 초기화
  1997. //영수증의 환자 가야할곳이 병동약국으로 찍혀 나오는 오류 때문.
  1998. //20081230 마정민수정 변환조건을 병동약국으로 축소함
  1999. if( model.getValue( strSrc + "[" + sendRow + "]/prcpexecdeptcd" ) == "3240300000" && prcpgenrflag == "O" && ( prcpInptFlag == "01" || prcpInptFlag == "02" )) {
  2000. var sTmp23 = model.getValue( strSrc + "[" + sendRow + "]/tempcol23" );
  2001. if( !isNull(sTmp23) && sTmp23 != "-" ){
  2002. model.setValue( strSrc + "[" + sendRow + "]/prcpexecdeptcd", sTmp23 );
  2003. }
  2004. }
  2005. } else if ( prcpclscd == "03" ) { //보호자식일 때는 procerdietflag 을 Y로 바꿈
  2006. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" ) == "Q4131004" ) {
  2007. model.setValue ( strSrc + "[" + sendRow + "]/procerdietflag", "Y" );
  2008. }
  2009. } else if ( prcpclscd == "B4" ){
  2010. if ( prcpgenrflag == "O" ) {
  2011. model.setValue ( strSrc + "[" + sendRow + "]/prepprcpflag", "N" );
  2012. } else {
  2013. model.setValue ( strSrc + "[" + sendRow + "]/prepprcpflag", "Y" );
  2014. }
  2015. }
  2016. // hsct 체크
  2017. if ( hsctflag == "Y" ) {
  2018. model.setValue ( strSrc + "[" + sendRow + "]/hsctlnkno", model.getValue ( "/root/init/hsctlnkno" )); //HSCT
  2019. model.setValue ( strSrc + "[" + sendRow + "]/hscttempprcpflag", "Y" ); //HSCT
  2020. } else if ( hsctflag == "M" ){
  2021. model.setValue ( strSrc + "[" + sendRow + "]/hsctlnkno", model.getValue ( "/root/init/hsctlnkno" )); //HSCT
  2022. model.setValue ( strSrc + "[" + sendRow + "]/hscttempprcpflag", "N" ); //HSCT
  2023. }
  2024. if ( !isNull(inclprcpno) && inclprcpno != "0" ) { //종속처방 처리
  2025. var prcpcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" );
  2026. //initsrch에서 가져온 종속처방 instance에 값이 있으면 종속처방 코드와 번호를 박아준다.
  2027. var prcpsetcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpsetcd" );
  2028. var inclprcpcd = model.getValue ( "/root/initsrch/inclprcpcnts[snglcd='" + prcpcd + "' and calcscorcdgrup='" + prcpsetcd + "']/inclprcpcd" );
  2029. var calcscorcdgrup = "";
  2030. if ( isNull(inclprcpcd)) {
  2031. //본체에도 코드를 박아준다.
  2032. calcscorcdgrup = model.getValue ( "/root/initsrch/inclprcpcnts[calcscorcdgrup='" + prcpcd + "']/inclprcpcd" ); // GROUP 처방
  2033. } else {
  2034. if ( prcpgenrflag == "O" ) {
  2035. //외래일경우 약, 주사 에 원내처방사유 검사 수술처리에 사용
  2036. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ){
  2037. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );//원내
  2038. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "55" );//원내처방사유(원내처방사유 검사 수술처리에 사용)
  2039. }
  2040. }
  2041. }
  2042. if ( !isNull(inclprcpcd) || !isNull(calcscorcdgrup)) {
  2043. model.setValue ( strSrc + "[" + sendRow + "]/inclprcpno", inclprcpno ); //종속처방번호
  2044. if ( isNull(inclprcpcd)){
  2045. model.setValue ( strSrc + "[" + sendRow + "]/inclprcpcd", calcscorcdgrup ); //종속처방
  2046. } else {
  2047. model.setValue ( strSrc + "[" + sendRow + "]/inclprcpcd", inclprcpcd ); //종속처방
  2048. }
  2049. model.setValue ( "/root/init/inclprcpno", inclprcpno );
  2050. var remainder = inclprcpno%2;
  2051. if ( objFlag == "child" ){
  2052. if ( remainder == 1 ) {
  2053. model.setValue ( strSrc + "[" + sendRow + "]/tempcol10", "#eaeaea" );
  2054. } else {
  2055. model.setValue ( strSrc + "[" + sendRow + "]/tempcol10", "#ffffcc" );
  2056. }
  2057. } else {
  2058. if ( remainder == 1 ) {
  2059. model.setValue ( strSrc + "[" + sendRow + "]/tempcol10", "#eaeaea" );
  2060. } else {
  2061. model.setValue ( strSrc + "[" + sendRow + "]/tempcol10", "#ffffcc" );
  2062. }
  2063. }
  2064. }
  2065. }
  2066. /* by sonjy 20091019 요청번호:3667
  2067. * 전처방(01)과 약속처방(02)을 복사하여 처방시 처방일수가 1일로 수정이 되도록
  2068. * => 무조건 1로 SETTING처리
  2069. */
  2070. var calcmthdcd = getArrayData ( drugmastspec , 0, 26, "^", "|" );
  2071. if ( //model.getValue(strSrc + "[" + sendRow + "]/prcpinptflag") == "01" && model.getValue(strSrc + "[" + sendRow + "]/prcpinptflag") == "02" &&
  2072. prcpclscd.substring(0,1) == "A" && calcmthdcd == "4" && model.getValue ( strSrc + "[" + sendRow + "]/prcpdayno" ) > 1 ) {
  2073. model.setValue ( strSrc + "[" + sendRow + "]/prcpdayno", "1" );
  2074. }
  2075. /*by sonjy 20091019
  2076. * 외래처방과 퇴원,퇴원호외래,외출외박처방(응급실,DSC 퇴원 포함)에만 해당으로, 4번에 해당하지 않는 약품 (계산법이 1,2,3,5번)을 처방할 때 처방일수가 0 으로 되도록
  2077. * (0 으로 저장시 처방일수를 넣으라는 메시지가 뜨도록 : 현재 되고 있는 기능임)
  2078. * 전처방과 약속처방, 프로토콜처방을 복사하여 처방시에는 제외 => 즉, 처방검색시에만 적용하되 MSET제외
  2079. */
  2080. if ( prcpclscd.substring(0,1) == "A" && calcmthdcd != "4" && prcpInptFlag == "00" &&
  2081. ( model.getValue ( "/root/patflag/list/prcpgenrflag" ) == "O" || model.getValue ( "/root/init/prcpkindcd" ) == "50" ||
  2082. model.getValue ( "/root/init/prcpkindcd" ) == "60" || model.getValue ( "/root/init/prcpkindcd" ) == "70" ) ) {
  2083. if( model.getValue ( strSrc + "[" + sendRow + "]/inclprcpno") == "0" || model.getValue ( strSrc + "[" + sendRow + "]/inclprcpno") == "-" ) {
  2084. model.setValue ( strSrc + "[" + sendRow + "]/prcpdayno", "0" );
  2085. }
  2086. }
  2087. model.setValue ( strSrc + "[" + sendRow + "]/prcpgenrflag", prcpgenrflag ); //처방발생구분
  2088. model.setValue ( strSrc + "[" + sendRow + "]/prcpkindcd", prcpkindcd ); //처방종류
  2089. //20131105 Start 이정택(마취에서 처방이동시에 수익부서와 수익의를 자동으로 세팅하도록 수정)
  2090. if(model.getValue ( strSrc + "[" + sendRow + "]/prcpinptflag")=="27"){
  2091. var orddeptcd = "2090000000";
  2092. var orddrid = model.getValue("/root/anst/anst_drid");
  2093. var anstdrnm = model.getValue("/root/anst/anst_anstdrnm");
  2094. model.setValue ( strSrc + "[" + sendRow + "]/pampkspec", pid + "|" + indd + "|" + cretno + "|" + orddeptcd + "|" + orddrid); //pampkspec : 등록번호|진료일자|생성번호|진료과|담당의 // 원무PK내역
  2095. model.setValue ( strSrc + "[" + sendRow + "]/tempcol20", "[마취통증의학과]["+anstdrnm+"]" ); //처방창의 주진료과/진료의를 세팅
  2096. }else{
  2097. model.setValue ( strSrc + "[" + sendRow + "]/pampkspec", pid + "|" + indd + "|" + cretno + "|" + orddeptcd + "|" + orddrid ); //pampkspec : 등록번호|진료일자|생성번호|진료과|담당의 // 원무PK내역
  2098. }
  2099. // 20131105 End
  2100. //model.setValue ( strSrc + "[" + sendRow + "]/pampkspec", pid + "|" + indd + "|" + cretno + "|" + orddeptcd + "|" + orddrid ); //pampkspec : 등록번호|진료일자|생성번호|진료과|담당의 // 원무PK내역
  2101. model.setValue ( strSrc + "[" + sendRow + "]/prcppkspec", prcpdd + "|0|0|" + getUserInfo("dutplceinstcd")); //처방키: 처방일자|처방번호|처방이력번호|기관코드
  2102. //20081007 마정민 수정
  2103. //원래 회처방 불가
  2104. //수혈, 영상, Angio, 핵의학영상, 병리, 기능, RT, 수술, 마취, 마취약제, 재료, 기타 이고 마이그레이션 데이터는 1로 setting
  2105. //추가 처치 H4
  2106. //20090514 마정민추가 K2 치과
  2107. if ( model.getValue ( strSrc + "[" + sendRow + "]/tempcol20" ) == "Y" && (
  2108. prcpclscd == "B4" || prcpclscd == "C2" || prcpclscd == "C4" || prcpclscd == "C6" ||
  2109. prcpclscd == "D2" || prcpclscd == "E2" || prcpclscd == "G2" || prcpclscd == "H2" ||
  2110. prcpclscd == "I2" || prcpclscd == "I4" || prcpclscd == "M2" || prcpclscd == "Z0" ||
  2111. prcpclscd == "H4" || prcpclscd == "K2")) {
  2112. model.setValue ( strSrc + "[" + sendRow + "]/prcptims", "1" ); //처방발생구분
  2113. }
  2114. //20090122 마정민수정: 변경요청번호 670. 단순 방사선 예약 자동 팝업요청
  2115. //20090709 CHC, 단순방사선예약자동팝업 병원별 적용
  2116. var raypopwndcheckyn = model.getValue ( "/root/initsrch/raypopwndcheckyn/trgtcd" );
  2117. if ( prcpgenrflag == "O" && model.getValue( strSrc + "[" + sendRow + "]/tempcol2" ).length > 2 && model.getValue( strSrc + "[" + sendRow + "]/tempcol2" ).substring( 0, 2 ) == "18" && usge == "prcp" ) {
  2118. var msgTitle = "[영상]" + "[" + model.getValue( strSrc + "[" + sendRow + "]/prcpcd" ) + ":" + model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ) + "]";
  2119. if (raypopwndcheckyn != "Y") {
  2120. if (window.alert( "단순 방사선 검사를 당일 시행 하시겠습니까? [예:당일,아니요:예약]", msgTitle, "36" ) == "7" ){
  2121. model.setValue( strSrc + "[" + sendRow + "]/prcphopedd","99991231" );
  2122. }
  2123. }
  2124. }
  2125. //20090827 차현철, 치료내시경예약 지시처방일 경우 처방명 선택 팝업창 호출
  2126. var escopedirecprcpcd = model.getValue ( "/root/initsrch/escopedirecprcpcd/trgtcd" );
  2127. if ( escopedirecprcpcd == model.getValue( strSrc + "[" + sendRow + "]/prcpcd" )) {
  2128. setParameter ( "SPMMB02200_cond2", "5" );
  2129. fPrcpModal ( "SPMMB02200", 50, 50 );
  2130. model.setValue (strSrc + "[" + sendRow + "]/prcpnm", getParameter ( "SPMMB02200_clinccmt" ));
  2131. clearParameter("SPMMB02200_clinccmt");
  2132. }
  2133. //SON0919 G3아닌 응급일경우 원내사유 PRCPKINDCD에 의해 움직이므로 PRCPKINDCD가 설정된 후 다시 호출 start
  2134. //퇴원처방 전처방에서 추가처방모드에서 복사시 퇴원처방 원내사유가 적용되는것을 막기 위함임.
  2135. var g3flag = "";
  2136. if( objFlag == "child") g3flag = opener.model.getValue ( "/root/init/erresn" );
  2137. else g3flag = model.getValue ( "/root/init/erresn" );
  2138. if( (prcpgenrflag == "E" && g3flag!= "G3") || prcpgenrflag == "D" ){
  2139. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) { //약처방
  2140. // 원내처방사유 SETTING
  2141. fHosinPrcpResncdSed ( objFlag, strSrc, sendRow );
  2142. }
  2143. }
  2144. //SON0919 end
  2145. if ( (prcpkindcd == "50" || prcpkindcd == "60" ) && getArrayData (drugmastspec, 0, 20, "^", "|" ) == "Y" ) {
  2146. //2008-01-18 김은희 약사 모든처방 자가주사가 가능하게 수정
  2147. if ( prcpclscd == "A6") {
  2148. model.setValue ( strSrc + "[" + sendRow + "]/selfprcpflag", "Y" );
  2149. }
  2150. }
  2151. //20080721 마정민 임상처방에서 넘어오는 것은 clincstdyflag를 Y로 처리
  2152. if ( prcpInptFlag == "07" ) {
  2153. model.setValue ( strSrc + "[" + sendRow + "]/clincstdyflag", "Y" ); //
  2154. }
  2155. var chkprcpcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpcd")
  2156. /******************** 선처치, 과내검사 시행부서처리 *******************/
  2157. var iFind = -1;
  2158. var precureexecdeptchk = model.getValue ( "/root/initsrchprcp/prcpetccnts/precureprcpcd" );
  2159. // 기존 search함수에서 무결성이 어긋나 개별 체크 변경 - 20081008 by MoonSH
  2160. var precureprcpflag = "";
  2161. var prcpexecdeptcd = "";
  2162. if( chkprcpcd.charAt(0) != "*" ){
  2163. var firStage = precureexecdeptchk.split("^");
  2164. for( i=0; i<firStage.length; i++ ){
  2165. var secStage = firStage[i].split("|");
  2166. if( chkprcpcd == secStage[0]) {
  2167. iFind = 1 ;
  2168. precureprcpflag = secStage[1] ;
  2169. prcpexecdeptcd = secStage[2] ;
  2170. break ;
  2171. }
  2172. }
  2173. }
  2174. if ( parseInt(iFind) >= 0) {
  2175. var charchk = "";
  2176. var arraychk = "";
  2177. if ( precureprcpflag == "Y" ) {
  2178. if( prcpgenrflag == "I" || prcpgenrflag == "E" || prcpgenrflag == "D" ) {
  2179. //입원일 경우 선처치 적용시 약/재료코드는 제외한다. 정보관리팀 요구변경 요청서 2008-11-08 미액팅 분석 후 액팅시점 변경건
  2180. //by sonjy 20081115
  2181. if( prcpclscd.substring(0,1) != "A" && prcpclscd != "M2" ) model.setValue ( strSrc + "[" + sendRow + "]/precureprcpflag", "Y" );
  2182. } else {
  2183. model.setValue ( strSrc + "[" + sendRow + "]/precureprcpflag", "Y" );
  2184. }
  2185. }
  2186. if ( prcpexecdeptcd != "X" && !isNull ( prcpexecdeptcd ) ) {
  2187. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd", prcpexecdeptcd );
  2188. }
  2189. }
  2190. if ( model.getValue ( "/root/addprcp" ) == "Y" && model.getValue ( strSrc + "[" + sendRow + "]/inclprcpno") == "0" ) {
  2191. //시행부서 수혈, 식이, 재활, 마취, 치과, 방사선치료, 기타를 제외한 처방은 자동 선처치. 단 m-set은 예외
  2192. if ((model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "A2" ||
  2193. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "A4" ||
  2194. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "A6" ||
  2195. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "B2" ||
  2196. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "B6" ||
  2197. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "C2" ||
  2198. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "C4" ||
  2199. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "C6" ||
  2200. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "D2" ||
  2201. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "E2" ||
  2202. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "H2" ||
  2203. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "H4" ||
  2204. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "M2" ) &&
  2205. model.getValue ( "/root/admininfo" ).substring (0,1) != "Y" ) {
  2206. model.setValue ( strSrc + "[" + sendRow + "]/precureprcpflag", "Y" );
  2207. }
  2208. }
  2209. // 시행부서 처방 가퇴원 누락처방 사유 및 일시 셋팅 - 20081221 by MoonSH
  2210. if ( model.getValue ( "/root/addprcp" ) == "Y" && model.getValue ("/root/prcpresn/prcpdd") != "" ) {
  2211. model.setValue ( strSrc + "[" + sendRow + "]/tempcol19", model.getValue ("/root/prcpresn/resncnt") );
  2212. model.setValue ( strSrc + "[" + sendRow + "]/tempcol12", model.getValue ("/root/prcpresn/prcptime") ); // tempcol24를 사용하던것을 tempcol12로 변경 처리 2013.11.28 엄영만
  2213. }
  2214. /******************** 선처치, 과내검사 시행부서 처리 끝 ********************/
  2215. //시행부서, 발행부서 SETTING
  2216. fPrcpExecIssDeptCdSet( strSrc, sendRow )
  2217. if (!isNull(model.getValue ( "/root/init/prcpinptflag" ))){ //27: 마취기록, 28: 시행부서처방
  2218. model.setValue ( strSrc + "[" + sendRow + "]/prcpinptflag", model.getValue ( "/root/init/prcpinptflag" ));
  2219. }
  2220. //추가컬럼 test
  2221. model.setValue ( strSrc + "[" + sendRow + "]/aftcertflag", "-");
  2222. model.setValue ( strSrc + "[" + sendRow + "]/aftcertdrid", "-");
  2223. model.setValue ( strSrc + "[" + sendRow + "]/prcpvalidd", "00000000");
  2224. if ( isNull(model.getValue ( strSrc + "[" + sendRow + "]/anticncrdayno"))) {
  2225. model.setValue ( strSrc + "[" + sendRow + "]/anticncrdayno", "0");
  2226. }
  2227. if ( isNull(model.getValue ( strSrc + "[" + sendRow + "]/druglnkno"))) {
  2228. model.setValue ( strSrc + "[" + sendRow + "]/druglnkno", "0");
  2229. }
  2230. if (model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" ) == "FE6541" ) {
  2231. var prcpdelivefact = model.getValue( strSrc + "[" + sendRow + "]/prcpdelivefact" );
  2232. var iFind1 = prcpdelivefact.search( "Long Stream" );
  2233. var iFind2 = prcpdelivefact.search( "Routine" );
  2234. //전달사항에 값이 있으면 "-" 로처리
  2235. if ( eval( iFind1) <= 0 && eval(iFind2) <= 0 ) {
  2236. if ( prcpdelivefact == "-" ) {
  2237. model.setValue( strSrc + "[" + sendRow + "]/prcpdelivefact", "[Routine]" );
  2238. } else {
  2239. model.setValue( strSrc + "[" + sendRow + "]/prcpdelivefact", "[Routine] " + prcpdelivefact );
  2240. }
  2241. }
  2242. }
  2243. if ( model.getValue ( strSrc + "[" + sendRow + "]/tempcol18" ) == "Y" ) {
  2244. var len = 1;
  2245. if ( !isNull(model.instance1.selectNodes("/root/migdrugmthd/migdrugmthdlist").length)){
  2246. len = model.instance1.selectNodes("/root/migdrugmthd/migdrugmthdlist").length + 1;
  2247. }
  2248. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/prcpcd", model.getValue( strSrc + "[" + sendRow + "]/prcpcd" ));
  2249. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/prcpnm", model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ));
  2250. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/prcpnm", model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ));
  2251. if ( model.getValue ( strSrc + "[" + sendRow + "]/rateprcpflag" ) == "Y" ) {
  2252. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/migdrugmthdspccdnm", "[비율처방불가] 투약량이 다른 처방을 분리해서 처방하셔야 합니다.\n\n" + model.getValue( strSrc + "[" + sendRow + "]/exptmthdfact" ) + ".");
  2253. model.setValue ( strSrc + "[" + sendRow + "]/rateprcpflag", "N" )
  2254. model.setValue ( strSrc + "[" + sendRow + "]/drugrateqty", "-" )
  2255. } else {
  2256. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/migdrugmthdspccdnm", model.getValue( strSrc + "[" + sendRow + "]/exptmthdfact" ));
  2257. }
  2258. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/drugmthdspccd", model.getValue( strSrc + "[" + sendRow + "]/drugmthdspccd" ) );
  2259. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/drugmthdspccdnm", model.getValue( strSrc + "[" + sendRow + "]/drugmthdspccdnm" ) );
  2260. model.setValue ( strSrc + "[" + sendRow + "]/exptmthdfact", "-" );
  2261. }
  2262. //수술예방적 항생제 CHECK SON0926 START 사유입력 대상자일 경우
  2263. //경구약은 cdss항생제 에서 제외. 따라서 외용/주사일 경우 cdss항생제 화면이 뜬 후에 check로직이 뜨도록..
  2264. if ( prcpgenrflag == "I" && usge == "prcp" && ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" )) { //약처방
  2265. if( !fChkOpDrug(objFlag , strSrc , sendRow ) ) return 0;
  2266. }
  2267. //수술예방적 항생제 CHECK SON0926 END
  2268. //20090520 마정민수정
  2269. //저장시 체크하던 ocrprnt 여부를 search 함수의 문제로 처방복사시 tempcol13에 값을 넣어놨다가 저장시 tempcol13을 읽는 방법으로 수정
  2270. var ocrprnt = model.getValue ( "/root/initsrchprcp/prcpetccnts/ocrprnt" );
  2271. if (isNull(ocrprnt)) {
  2272. ocrprnt = model.getValue ( "/root/initsrch/prcpetccnts/ocrprnt" );
  2273. }
  2274. var ocrprntArray = ocrprnt.split("|");
  2275. var ocrprcpcd = "OCR" + model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" );
  2276. for( m=0; m < ocrprntArray.length; m++ ){
  2277. if( ocrprcpcd == ocrprntArray[m]) {
  2278. model.setValue ( strSrc + "[" + sendRow + "]/tempcol13", "Y" );
  2279. break;
  2280. }
  2281. }
  2282. // 20100108 한재상 - 유전자검사 동의서 출력방식 변경 (OCR -> REX)
  2283. var ocrprogprnt = model.getValue ( "/root/initsrchprcp/prcpetccnts/ocrprogprnt" );
  2284. var ocrprogprntArray = ocrprogprnt.split("|");
  2285. var ocrprogprcpcd = "OCRPROG" + model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" );
  2286. for( m=0; m < ocrprogprntArray.length; m++ ){
  2287. if( ocrprogprcpcd == ocrprogprntArray[m]) {
  2288. model.setValue ( strSrc + "[" + sendRow + "]/tempcol13", "A" );
  2289. break;
  2290. }
  2291. }
  2292. //20090521 마정민추가 외래수술프로세스의 추가로 외래수술탭에서 처방을 낼 경우 자동선처치로 수정
  2293. if (!isNull(model.getValue ( "/root/operation/list/oprsrvno")) && prcpgenrflag == "O"
  2294. && model.getValue ( strSrc + "[" + sendRow + "]/prnprcpflag" ) != "Y"
  2295. && model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) != "B4"
  2296. ) {
  2297. model.setValue ( strSrc + "[" + sendRow + "]/precureprcpflag", "Y" ); //
  2298. }
  2299. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcpflag") != "2" ) { //지시처방이 아니면 이름을 다시 만들어 준다.
  2300. makePrcpNm( "/root/main/prcp/prcplist", sendRow );
  2301. }
  2302. // 2010. 10. 19 약속처방이나 전처방에서 처방 복사시 1회 용량에 값이 없을 경우 용량 계산하는 로직 수행
  2303. if ( model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc7") == "-" ) {
  2304. if (fContainsHardCD("420", "Y") && model.getValue ( strSrc + "[" + sendRow + "]/prcpinptflag") == "02") { // 2013.02.21 엄영만 약속처방 1회 용량 없을 시 메세지 팝업.
  2305. var sPrcpcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpcd");
  2306. var sPrcpnm = model.getValue ( strSrc + "[" + sendRow + "]/prcpnm");
  2307. messageBox ( sPrcpnm +"["+ sPrcpcd + "] 처방의 1회용량값이 존재하지 않습니다.\n약속처방 구성을 확인 하시기 바랍니다.", "E999" );
  2308. } else {
  2309. DrugCalc2( "prcpqty" , sendRow);
  2310. }
  2311. }
  2312. // 2011.07.05 엄영만 수익분류 의료영상복사-CD 복사-CD copy 처방, 산재/자보 환자 디폴트 비급여 셋팅 원무 최인영(5069) 요청
  2313. if (model.getValue ( strSrc + "[" + sendRow + "]/tempcol2" ) == "24|01|01" && (model.getValue ( "/root/paminfo/list/insukind" ) == "31" || model.getValue ( "/root/paminfo/list/insukind" ) == "41")) {
  2314. model.setValue ( strSrc + "[" + sendRow + "]/payflagcd", "1" );
  2315. }
  2316. // 2013.09.26 엄영만 수익분류 초음파 처방이고 수가정보의 급비가 급여(0), 급여불가 보조유형일 경우 디폴트 비급여 설정
  2317. if (model.getValue( strSrc + "[" + sendRow + "]/tempcol2" ).length > 2 && model.getValue( strSrc + "[" + sendRow + "]/tempcol2" ).substring( 0, 2 ) == "21" && model.getValue( strSrc + "[" + sendRow + "]/spynpy1" ) == "0" ) {
  2318. if ( (model.getValue("/root/paminfo/list/insukind") != "11" && model.getValue("/root/paminfo/list/insukind") != "21" && model.getValue("/root/paminfo/list/insukind") != "22") // 보험 유형이 건강보험 또는 의료급여 1,2종이 아니면 비급여 처리
  2319. || (!fContainsHardCD("442", model.getValue("/root/paminfo/list/suppkind"))) ) { // 급여가능 보조유형이 아닐경우
  2320. model.setValue ( strSrc + "[" + sendRow + "]/payflagcd", "2" ); // 디폴트 비급여 처리
  2321. }
  2322. }
  2323. //model.addLog(" ************* End Of addPrcpSetValue()");
  2324. return true;
  2325. }
  2326. /**
  2327. * @desc : 처방이 발행될때 set로 같이 나가야할 처방 처리
  2328. * @param : objFlag - child or else
  2329. : strSrc - source node
  2330. : strDest - 목적지 node; child일때는 opener.root.main.prcp, 아니면 "/root/main/prcp" 이다
  2331. : sendRow - 검색된 내용중 메인으로 보내고자 하는 row
  2332. : srchRow - 메인에 들어간 자리. 검색로우(srchRow) 바로 전이다.
  2333. : prcpInptFlag - - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  2334. : groupSrc - 옵션: group처방 검색할 경우 node
  2335. : direcSrc - 옵션: group 지시처방 검색할 경우 node
  2336. : prcpInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  2337. * @return : srchRow 에러시 0
  2338. * @authur : 마정민 2008. 6. 25
  2339. * @---------------------------------------------------
  2340. */
  2341. function fAddSetPrcpChk ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag ) {
  2342. var prcpcd = model.getValue( strSrc + "[" + i + "]/prcpcd" );
  2343. var addprcpcd = "";
  2344. var addprcpcnt = 0;
  2345. // if (prcpcd == "LCT101") addprcpcd = "DDIS50";
  2346. // else if (prcpcd == "LCT001") addprcpcd = "DDIS75";
  2347. // else if (prcpcd == "LCT002") addprcpcd = "DDIS100";
  2348. // else if (prcpcd == "NHC297EG") addprcpcd = "FE654303G"; //by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청
  2349. var iFind = -1;
  2350. var setprcpchk = "";
  2351. if ( objFlag == "child" ) {
  2352. setprcpchk = opener.model.getValue ( "/root/initsrch/setprcplist/setprcp" );
  2353. } else {
  2354. setprcpchk = model.getValue ( "/root/initsrch/setprcplist/setprcp" );
  2355. }
  2356. // 기존 search함수에서 무결성이 어긋나 개별 체크 변경 - 20081008 by MoonSH
  2357. var precureprcpflag = "";
  2358. var calcflag = "";
  2359. var prcpdelivefact = "";
  2360. var firStage = setprcpchk.split("^");
  2361. for( i=0; i<firStage.length; i++ ){
  2362. var secStage = firStage[i].split("|");
  2363. if( prcpcd == secStage[0]) {
  2364. iFind = 1 ;
  2365. calcflag = secStage[1];
  2366. addprcpcd = secStage[2];
  2367. prcpdelivefact = secStage[3];
  2368. break ;
  2369. }
  2370. if ( iFind == 1) break;
  2371. }
  2372. if ( parseInt(iFind) >= 0) {
  2373. var prcpdd = "";
  2374. var insukind = "";
  2375. if ( objFlag == "child" ) {
  2376. prcpdd = opener.model.getValue ( "/root/init/prcpdd" );
  2377. insukind = opener.model.getValue ( "/root/paminfo/list/insukind");
  2378. } else {
  2379. prcpdd = model.getValue ( "/root/init/prcpdd" );
  2380. insukind = model.getValue ( "/root/paminfo/list/insukind");
  2381. }
  2382. //멀티 search 가능함
  2383. model.makeValue("/root/send/addsetprcp[1]/prcpcd",addprcpcd);
  2384. model.makeValue("/root/send/addsetprcp[1]/prcpdd",prcpdd);
  2385. model.makeValue("/root/send/addsetprcp[1]/insukind",insukind);
  2386. model.makeValue("/root/send/addsetprcp[1]/srchkind","B2");
  2387. if ( submit("TRMMO00207",false)) {
  2388. /*
  2389. **by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청 수정 시작.
  2390. ** 처방코드 : NHC297EMG, 자동발생코드 : FE654303G
  2391. ** 자동발생코드는 돈계산에서 제외되어야 함.
  2392. ** 자동발생코드 처방전달사항 자동 생성=>[HEART-SPECT 핵의학검사용]
  2393. */
  2394. //20090420 마정민 수정 HARDCODE 테이블로 분리
  2395. //if( addprcpcd == "FE654303G"){
  2396. var nd = model.instance1.selectNodes("/root/addsetprcp/prcplist");
  2397. if( nd != null && nd.length > 0) {
  2398. model.setValue("/root/addsetprcp/prcplist[1]/prcpdelivefact", prcpdelivefact );
  2399. model.setValue("/root/addsetprcp/prcplist[1]/tempcol17" , calcflag ); //자동발생코드는 돈계산이 되어선 안됨.
  2400. }
  2401. //}
  2402. //by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청 수정 끝
  2403. //serPrcpSrchRow = addPrcpDetl ( objFlag , "root/addsetprcp/prcplist" , strDest , 1 , srchRow, prcpInptFlag );
  2404. //by sonjy 20091031 자동발생 처방 입력 구분 추가
  2405. //SET 처방일 때 약품의 기본 일수는 수가계산법이 어떤 것이든 기본을 1일로 되도록 요청번호:8875
  2406. serPrcpSrchRow = addPrcpDetl ( objFlag , "root/addsetprcp/prcplist" , strDest , 1 , srchRow, "34" );
  2407. if (serPrcpSrchRow != 0 ) srchRow++;
  2408. }
  2409. model.removeNodeset("/root/send/addsetprcp");
  2410. }
  2411. return srchRow;
  2412. }
  2413. /**
  2414. * @desc : 포커스를 메인으로 한다.
  2415. * @param : curRow => 메인의 검색 row
  2416. : flag => child
  2417. : prcpNmClearFlag => 검색명을 클리어 시킬건지 여부
  2418. * @return : void
  2419. * @authur : 마정민 2007. 4. 12
  2420. * @---------------------------------------------------
  2421. */
  2422. function focusMain( curRow, flag, prcpNmClearFlag ) {
  2423. if ( flag == "child" ) {
  2424. if ( prcpNmClearFlag != "N" ) {
  2425. opener.model.setValue( "/root/main/prcp/prcplist[" + curRow + "]/prcpnm", "");
  2426. opener.model.setValue( "/root/main/prcp/prcplist[" + curRow + "]/prcpcd", "");
  2427. }
  2428. opener.model.recalculate();
  2429. var modiflag = model.getValue("/root/init/rowmodify/modiflag");
  2430. if ( modiflag != "Y" ){ // 처방 코드에서 수정 모드가 아닐때만 refresh - 20090630 by Moonsh
  2431. opener.grd_prcplist.refresh();
  2432. }
  2433. var bfRow = curRow - 1 ;
  2434. var sPrcpClsCd = opener.model.getValue( "/root/main/prcp/prcplist[" + bfRow + "]/prcpclscd" );
  2435. if ( sPrcpClsCd == "A2" || sPrcpClsCd == "A4" || sPrcpClsCd == "A6" ){
  2436. opener.grd_prcplist.row = bfRow;
  2437. opener.grd_prcplist.col = opener.grd_prcplist.colref("drprcpetc7");
  2438. } else {
  2439. opener.grd_prcplist.row = curRow;
  2440. if ( model.getValue ( "/root/send/cond99" ) == "getPrcpCdOldSrchInfo" ) {
  2441. opener.grd_prcplist.col = prcpcdCol;
  2442. opener.model.setValue ( "/root/send/cond99", "" );
  2443. } else {
  2444. opener.grd_prcplist.col = prcpnmCol;
  2445. }
  2446. }
  2447. /*
  2448. opener.grd_prcplist.row = curRow ;
  2449. if ( opener.model.getValue ( "/root/send/cond99" ) == "getPrcpCdOldSrchInfo" ) {
  2450. opener.grd_prcplist.col = prcpcdCol;
  2451. opener.model.setValue ( "/root/send/cond99", "" );
  2452. } else {
  2453. opener.grd_prcplist.col = prcpnmCol;
  2454. }
  2455. */
  2456. if( opener.model.getValue("/root/cp") == "Y" ){ //CP에서 저장 시 AddPrcp()를 수행 시, 마지막 라인에 포커스가 남아있는 상태에서 저장 수행 과정에 "onendedit" 이번트 동시 수행하면서 윈도우 에러 발생 -> 이 경우 막음처리 (2008.10.02 JJE)
  2457. if( curSavePrcpFlag_SMMMO00110 == "N" || curSavePrcpFlag_SMMMO00110 == "T" ){
  2458. return;
  2459. }
  2460. }
  2461. // 항생제에서 데이타 추가 후 dispatch 시엔 Focus가 안 가서 setFocus 사용 20080925 by Moonsh
  2462. var cdssFlag = opener.javascript.getParameter( "SPMMD01600_flag");
  2463. var sAltDrugFlag = opener.javascript.getParameter( "SPMMB10100_flag"); // 대체약 선택으로 호출시
  2464. if ( cdssFlag == "Y" ) {
  2465. opener.model.setFocus(opener.grd_prcplist.attribute("id"), true);
  2466. } else if (sAltDrugFlag == "Y") {
  2467. } else {
  2468. //by sonjy 20090923 성공적으로 copy햇을 경우 ...
  2469. //iviewer에서 addprcp호출시 grid edit 안되는 bug 수정
  2470. opener.model.setFocus("grd_prcplist");
  2471. opener.btn_editcell.dispatch("DOMActivate");
  2472. }
  2473. opener.grd_prcplist.allstyle( "all", "font-weight" ) = ""; //기존 focus cell bold체 해제 (2010.01.27 JJE)
  2474. } else {
  2475. model.removeNodeset( "/root/prcpsrch/prcplist");
  2476. model.removeNodeset( "/root/prcpgroup/prcplist");
  2477. model.removeNodeset( "/root/prcpdirec/prcplist");
  2478. if ( prcpNmClearFlag != "N" ) {
  2479. model.setValue( "/root/main/prcp/prcplist[" + curRow + "]/prcpnm", ""); //검색그리드를 클리어 시킨다.
  2480. model.setValue( "/root/main/prcp/prcplist[" + curRow + "]/prcpcd", ""); //검색그리드를 클리어 시킨다.
  2481. }
  2482. model.recalculate();
  2483. var modiflag = model.getValue("/root/init/rowmodify/modiflag");
  2484. if ( modiflag != "Y" ){ // 처방 코드에서 수정 모드가 아닐때만 refresh - 20090630 by Moonsh
  2485. grd_prcplist.refresh();
  2486. }
  2487. var bfRow = curRow - 1 ;
  2488. var sPrcpClsCd = model.getValue( "/root/main/prcp/prcplist[" + bfRow + "]/prcpclscd" );
  2489. if ( sPrcpClsCd == "A2" || sPrcpClsCd == "A4" || sPrcpClsCd == "A6" ){
  2490. grd_prcplist.row = bfRow;
  2491. grd_prcplist.col = grd_prcplist.colref("drprcpetc7");
  2492. } else {
  2493. grd_prcplist.row = curRow;
  2494. if ( model.getValue ( "/root/send/cond99" ) == "getPrcpCdOldSrchInfo" ) {
  2495. grd_prcplist.col = prcpcdCol;
  2496. model.setValue ( "/root/send/cond99", "" );
  2497. } else {
  2498. grd_prcplist.col = prcpnmCol;
  2499. }
  2500. }
  2501. if( model.getValue("/root/cp") == "Y" ){ //CP에서 저장 시 AddPrcp()를 수행 시, 마지막 라인에 포커스가 남아있는 상태에서 저장 수행 과정에 "onendedit" 이번트 동시 수행하면서 윈도우 에러 발생 -> 이 경우 막음처리 (2008.10.02 JJE)
  2502. if( curSavePrcpFlag_SMMMO00110 == "N" || curSavePrcpFlag_SMMMO00110 == "T" ){
  2503. return;
  2504. }
  2505. }
  2506. if( model.getValue ( "/root/cp" ) == "Y" ){
  2507. if (prtlprcpstatus_SMMMO00110 != "U" ) {
  2508. btn_editcell.dispatch("DOMActivate");
  2509. }
  2510. }else{
  2511. btn_editcell.dispatch("DOMActivate");
  2512. }
  2513. grd_prcplist.allstyle( "all", "font-weight" ) = ""; //기존 focus cell bold체 해제 (2010.01.27 JJE)
  2514. }
  2515. }
  2516. /**
  2517. * @desc : appendChild 공통함수로
  2518. * @param : strSrc => 소스 노드
  2519. : strDest => 목적지 노드
  2520. : flag => 같은화면에서 사용하는지 child에서 사용하는지
  2521. : autocheck => 자동체크하려면 체크벨류를 넣는다.
  2522. * @return : void
  2523. * @authur : 마정민 2007. 4. 21
  2524. * @---------------------------------------------------
  2525. */
  2526. function appendChildPrcp ( strSrc, strDest, flag, autocheck ) {
  2527. //* ---2007.11.12 (CP에서 미래처방을 수정하는 경우, 처방상세팝업에서 리턴 받은 값의 상태를 바꾼다) --- *//
  2528. if( opener.model.getValue("/root/cp") == "D" ){
  2529. if(strSrc == "/root/reset/prcplist"){
  2530. return;
  2531. }else{
  2532. if( instance1.selectSingleNode(strSrc + "/status") != null ){
  2533. model.setValue( strSrc + "/status", opener.model.getValue("/root/temp/mstatus") );
  2534. }
  2535. }
  2536. }
  2537. //* --- End --- *//
  2538. var srcNodeList = model.instances(0).selectNodes(strSrc);
  2539. if ( flag == null || flag == "child" )
  2540. var destNode = opener.model.instances(0).selectSingleNode(strDest);
  2541. else {
  2542. var destNode = model.instances(0).selectSingleNode(strDest);
  2543. }
  2544. var currow = 0;
  2545. for ( i=0; i < srcNodeList.length; i++ ){
  2546. if ( !isNull(autocheck)) {
  2547. currow = i + 1;
  2548. model.setValue ( strSrc + "[" + currow + "]/status", autocheck );
  2549. }
  2550. destNode.appendChild(srcNodeList.item(i).cloneNode(true));
  2551. }
  2552. }
  2553. /**
  2554. * @desc : 선택된 진단명을 진단 instance에 맵핑한다.
  2555. * @param : diagInfo: setValue할 진단정보
  2556. * @return : void
  2557. * @authur : 마정민 2007. 4. 21
  2558. * @---------------------------------------------------
  2559. */
  2560. function addDiagSetValue ( diagInfo ) {
  2561. var strSrc = "/root/main/diaginfo/diagcdlist";
  2562. var pamInfoNode = "/root/paminfo/list";
  2563. var prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  2564. var orddd = "";
  2565. if ( prcpgenrflag == "O" || prcpgenrflag == "S") {
  2566. orddd = model.getValue ( pamInfoNode + "/orddd" );
  2567. orddrid = model.getValue ( pamInfoNode + "/orddrid" );
  2568. } else {
  2569. orddd = model.getValue ( pamInfoNode + "/indd" );
  2570. orddrid = model.getValue ( pamInfoNode + "/medispclid" );
  2571. }
  2572. cretno = model.getValue ( pamInfoNode + "/cretno" );
  2573. orddeptcd = model.getValue ( pamInfoNode + "/orddeptcd" );
  2574. var diagRow = diagInfo.split ( "▩" ).length;
  2575. var srchRow = grd_diaglist.rows-1;
  2576. var mdiagcd = model.getValue ( strSrc + "[diagkindcdflag='M']/diagcd" );
  2577. var diagkindcdflag = ""; //주부유형
  2578. for ( var i = 1; i < diagRow-1 ; i++ ) {
  2579. var destNode = model.instances(0).selectSingleNode( "/root/main/diaginfo" );
  2580. model.duplicate( destNode, "/root/reset/diagcdlist", "*[" + srchRow + "]");
  2581. var icd10cd = getArrayData ( diagInfo, i, 8, "▩", "▦" );
  2582. var diagcd = getArrayData ( diagInfo, i, 9, "▩", "▦" );
  2583. var diagengnm = getArrayData ( diagInfo, i, 2, "▩", "▦" );
  2584. var diaghngnm = getArrayData ( diagInfo, i, 3, "▩", "▦" );
  2585. var spclinfo = getArrayData ( diagInfo, i, 5, "▩", "▦" );
  2586. model.setValue ( strSrc + "[" + srchRow + "]/diagkindcdflag", "S" );
  2587. if ( isNull(mdiagcd) && i == 1) {
  2588. model.setValue ( strSrc + "[" + srchRow + "]/diagkindcdflag", "M");
  2589. } else {
  2590. if ( spclinfo == "Y" ) { //산전특례
  2591. //산정특례 처방이면 산전특례이면서 주상병이 있는지 찾는다.
  2592. var spcmdiagcd = model.getValue ( strSrc + "[diagkindcdflag='M' and spclinfo='Y']/diagcd" );
  2593. if (isNull(spcmdiagcd)) { //값이 없으면 주상병으로 할 건지 물어본다.
  2594. if ( messageBox ( "[" + icd10cd + "] 상병은 특례상병입니다. 주상병으로 하시겠습니까?","Q") == "6" ) {
  2595. //하겠다고 하면 주상병으로 고침
  2596. var srcNodeList = model.instances(0).selectNodes ( "/root/main/diaginfo/diagcdlist" );
  2597. for ( var j=1; j <= srcNodeList.length; j++ ) {
  2598. if (srchRow == j) {
  2599. model.setValue ( "/root/main/diaginfo/diagcdlist[" + j + "]/diagkindcdflag", "M" );
  2600. } else {
  2601. if (model.getValue ( "/root/main/diaginfo/diagcdlist[" + j + "]/diagkindcdflag" )=="M") {
  2602. model.setValue ( "/root/main/diaginfo/diagcdlist[" + j + "]/diagkindcdflag", "S" );
  2603. if (model.getValue ( "/root/main/diaginfo/diagcdlist[" + j + "]/status" ) == "-" ) {
  2604. //진단상태가 - 이면 U로 수정함
  2605. model.setValue ( "/root/main/diaginfo/diagcdlist[" + j + "]/status", "U" );
  2606. }
  2607. }
  2608. }
  2609. }
  2610. }
  2611. }
  2612. }
  2613. }
  2614. /*
  2615. var dispdiagcd = getArrayData ( getParameter("diagInfo"), i, 6, "▩", "▦" );
  2616. var orgdiagnm = getArrayData ( getParameter("diagInfo"), i, 7, "▩", "▦" );
  2617. var orgdiagcd = getArrayData ( getParameter("diagInfo"), i, 8, "▩", "▦" );
  2618. var tootfact = getArrayData ( getParameter("diagInfo"), i, 9, "▩", "▦" );
  2619. */
  2620. model.setValue ( strSrc + "[" + srchRow + "]/icd10cd", icd10cd );
  2621. model.setValue ( strSrc + "[" + srchRow + "]/diagcd", diagcd );
  2622. model.setValue ( strSrc + "[" + srchRow + "]/diagengnm", diagengnm );
  2623. model.setValue ( strSrc + "[" + srchRow + "]/diaghngnm", diaghngnm );
  2624. model.setValue ( strSrc + "[" + srchRow + "]/spclinfo", spclinfo );
  2625. model.setValue ( strSrc + "[" + srchRow + "]/status", "I" );
  2626. model.setValue ( strSrc + "[" + srchRow + "]/instcd", getUserInfo("dutplceinstcd"));
  2627. model.setValue ( strSrc + "[" + srchRow + "]/pid", model.getValue ( pamInfoNode + "/pid" ));
  2628. model.setValue ( strSrc + "[" + srchRow + "]/orddd", orddd);
  2629. model.setValue ( strSrc + "[" + srchRow + "]/cretno", cretno);
  2630. model.setValue ( strSrc + "[" + srchRow + "]/orddeptcd", orddeptcd);
  2631. model.setValue ( strSrc + "[" + srchRow + "]/orddrid", orddrid);
  2632. model.setValue ( strSrc + "[" + srchRow + "]/genrflagcd", prcpgenrflag);
  2633. model.setValue ( strSrc + "[" + srchRow + "]/diaghistcd", "O" );
  2634. model.setValue ( strSrc + "[" + srchRow + "]/diagtypecd", "D" );
  2635. model.setValue ( strSrc + "[" + srchRow + "]/diagkindcd", "C" );
  2636. model.setValue ( strSrc + "[" + srchRow + "]/anamneflag", "N" );
  2637. model.setValue ( strSrc + "[" + srchRow + "]/diagsignflag", "2" );
  2638. model.setValue ( strSrc + "[" + srchRow + "]/tootflagcd", "-" );
  2639. model.setValue ( strSrc + "[" + srchRow + "]/tootfact", "-" );
  2640. diagkindcdflag = model.getValue ( "/root/main/diaginfo/diagcdlist[" + srchRow + "]/diagkindcdflag" );
  2641. fCheckDiagHosinpPcp( icd10cd, prcpgenrflag, diagkindcdflag );
  2642. srchRow++;
  2643. /**************************************** 진단추가시 원외처방예외사유 진단인지 check ******************************/
  2644. //치식 상병 입력 시 치식팝업 자동 호출 (2009.10.28 by JJE)
  2645. var tootDiagFromToCd = model.getValue("/root/initsrch/tootdiagcd/trgtcd"); //ex: K01|K10
  2646. if( !isNull(tootDiagFromToCd) ){
  2647. var tootDiagFrCd = tootDiagFromToCd.split("|")[0];
  2648. var tootDiagToCd = tootDiagFromToCd.split("|")[1];
  2649. var tootDiagFrLngth = getStringLength(tootDiagFrCd);
  2650. var tootDiagToLngth = getStringLength(tootDiagToCd);
  2651. if(icd10cd.substring(0, tootDiagFrLngth) >= tootDiagFrCd && icd10cd.substring(0, tootDiagToLngth) <= tootDiagToCd){
  2652. fDentifmla();
  2653. }
  2654. }
  2655. //end 치식팝업 자동 호출
  2656. }
  2657. //검색라인 초기화
  2658. model.setValue ( "/root/main/diaginfo/diagcdlist[" + srchRow + "]/icd10cd", "" );
  2659. model.setValue ( "/root/main/diaginfo/diagcdlist[" + srchRow + "]/diagengnm", "" );
  2660. model.refresh();
  2661. model.setfocus( "grd_diaglist" );
  2662. grd_diaglist.row = grd_diaglist.rows - 1;
  2663. grd_diaglist.col = 4;
  2664. }
  2665. /**
  2666. * @desc : 진단추가시 원내처방예외사유가 있는 진단코드인지 검색후(처방화면초기값) 결과에 따라 처방화면의 원내처방사유를 setting한다.
  2667. * @ :
  2668. * @param : icd10cd, prcpgenrflag
  2669. * @return : void
  2670. * @authur : 마정민 2007. 9. 6
  2671. * @---------------------------------------------------
  2672. */
  2673. function fCheckDiagHosinpPcp( icd10cd, prcpgenrflag, diagkindcdflag ) {
  2674. var inhospappdeptcd = model.getValue ( "/root/initsrch/inhospappdeptcd/trgtcd" ); //F상병원내사유적용 부서:정신과 (2009.06.29 JJE)
  2675. var inhospautoappyn = model.getValue ( "/root/initsrch/inhospautoappyn/trgtcd" ); //F상병원내사유자동적용 여부 (2009.06.29 JJE)
  2676. var insukind = opener.model.getValue ( "/root/paminfo/list/insukind"); //보험유형 (2009.06.29 JJE)
  2677. if (isNull(insukind)) insukind = model.getValue ( "/root/paminfo/list/insukind"); //보험유형 (2009.06.29 JJE)
  2678. if ( prcpgenrflag == "O" || prcpgenrflag == "D" ) { //SON1123 DSC 퇴원처방 처리 by sonjy 20081123
  2679. if ( !isNull(model.getValue ( "/root/initsrch/diagautocnts/trgtcd" ))) {
  2680. if (model.getValue ( "/root/init/hosinprcpresncd" ) == "00" ) { //원내처방 사유가 없을 경우
  2681. var srcNodeList = model.instances(0).selectNodes( "/root/initsrch/diagautocnts" );
  2682. for ( var i=1; i <=srcNodeList.length; i++ ) {
  2683. var trgtcdnmArray = model.getValue ( "/root/initsrch/diagautocnts[" + i + "]/trgtcdnm" );
  2684. var fromTrgtcdnm = getArrayData ( trgtcdnmArray + "^", 0, 0, "^", "|" );
  2685. var toTrgtcdnm = getArrayData ( trgtcdnmArray + "^", 0, 1, "^", "|" );
  2686. var cdlength = fromTrgtcdnm.length;
  2687. var icd10Chck = icd10cd.substring( 0, cdlength );
  2688. if ( icd10Chck >= fromTrgtcdnm && icd10Chck <= toTrgtcdnm ) { //해당 진단검색안에 값이 있다면
  2689. var hosinprcpresncd = model.getValue ( "/root/initsrch/diagautocnts[" + i + "]/trgtcd" );
  2690. //원내처방사유 적용 주상병만 가능 단 23은 부상병도 적용
  2691. if ( diagkindcdflag == "M" || hosinprcpresncd == "23" ) {
  2692. //by sonjy 20081031 F상병일 경우 진료과가 정신과인 경우에 한해서만 원내처방사유 SETTING되도록. 윤영옥ITC 요청. start
  2693. if( icd10Chck.substring( 0,1) == "F" ){
  2694. //if( model.getValue ( "/root/paminfo/list/orddeptcd" ) != "2030000000") break;
  2695. if( model.getValue ( "/root/paminfo/list/orddeptcd" ) != inhospappdeptcd) break; //F상병이면서 진료과가 정신과인지 check (2009.06.29 JJE)
  2696. if( inhospautoappyn != "Y" && (insukind != "21" && insukind != "22") ) break; //원내사유자동적용 N이면 보험유형까지 check - ujb요청 (2009.06.29 JJE)
  2697. }
  2698. //by sonjy end
  2699. model.setValue ( "/root/init/hosinprcpresncd", hosinprcpresncd);
  2700. fChngHosinPrcpResn();
  2701. model.refresh();
  2702. break; //값을 setting 하면 빠져나온다.
  2703. }
  2704. } //icd10cd == trgtcdnm end
  2705. } //진단검색 end
  2706. // model.refresh();
  2707. } //원내처방 사유가 없을 경우 여부
  2708. }//진단초기값 여부 end
  2709. } //외래end
  2710. }
  2711. /**
  2712. * @desc : 그룹코드 M의 싱글코드 검색
  2713. * @ : 검색후 수가코드의 그룹싱글구분이 M 일경우는 그 그룹코드로 다시 SINGLE 코드를 찾아온다.
  2714. * @param : cond1= 처방명, 코드명, 성분명, old수가코드
  2715. * @return : void
  2716. * @authur : 마정민 2007. 4. 12
  2717. * @---------------------------------------------------
  2718. */
  2719. function prcpGroupSrch ( cond1, cond3, cond4, cond5, cond6, cond99 ) {
  2720. if (isNull(cond3)) {
  2721. cond3 = getCurrentDate();
  2722. }
  2723. if (isNull(cond4)) {
  2724. cond4 = "11";
  2725. }
  2726. if (isNull(cond99)) {
  2727. cond99 = "getPrcpGroupInfo";
  2728. }
  2729. var prcpgenrflag = opener.model.getValue ( "/root/patflag/list/prcpgenrflag" );
  2730. if ( isNull(prcpgenrflag) ) {
  2731. prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  2732. if ( isNull(prcpgenrflag) ) {
  2733. prcpgenrflag = "-"
  2734. }
  2735. }
  2736. model.setValue ( "/root/send/cond1", cond1 ); //처방명, 수가코드
  2737. model.setValue ( "/root/send/cond2", prcpgenrflag ); //외래, 입원, 응급 구분
  2738. model.setValue ( "/root/send/cond3", cond3 ); //처방일
  2739. model.setValue ( "/root/send/cond4", cond4 ); //환자보험유형
  2740. model.setValue ( "/root/send/cond5", cond5 ); //진단검사 그룹처방일 때 검체코드정보
  2741. model.setValue ( "/root/send/cond6", cond6 ); //진단검사 검사분류유형
  2742. model.setValue ( "/root/send/cond99", cond99 );
  2743. submit( "TRMMO00101", false );
  2744. // 20090721 한재상 수정. m-set중 특정 signle코드의 default 급비변경.
  2745. var grupSrc = "/root/prcpgroup/prcplist";
  2746. var srcNodeList = model.instances(0).selectNodes( grupSrc );
  2747. var msetpfcspec = model.getValue("/root/initsrch/msetpayflagcd/trgtcd");
  2748. if ( msetpfcspec == "" ) {
  2749. msetpfcspec = opener.model.getValue("/root/initsrch/msetpayflagcd/trgtcd");
  2750. }
  2751. var msetpfcsplit = msetpfcspec.split("^");
  2752. for (var i=1; i<=srcNodeList.length; i++) {
  2753. for (var j=0; j < msetpfcsplit.length-1; j++) {
  2754. var msetpfcitem = msetpfcsplit[j].split("|");
  2755. if ( msetpfcitem[j] == model.getValue(grupSrc+"["+i+"]/prcpcd") ) {
  2756. model.setValue(grupSrc+"["+i+"]/payflagcd", msetpfcitem[1]);
  2757. }
  2758. }
  2759. }
  2760. }
  2761. /**
  2762. * @desc : 지시처방 J의 싱글코드 검색
  2763. * @ : 검색후 수가코드의 그룹싱글구분이 M 일경우는 그 그룹코드로 다시 SINGLE 코드를 찾아온다.
  2764. * @param : cond1= 처방명, 코드명, 성분명, old수가코드
  2765. * @return : void
  2766. * @authur : 마정민 2007. 4. 12
  2767. * @---------------------------------------------------
  2768. */
  2769. function prcpDirecSrch( cond1, cond3, cond4, cond5 ) {
  2770. if (isNull(cond3)) {
  2771. cond3 = getCurrentDate();
  2772. }
  2773. if (isNull(cond4)) {
  2774. cond4 = "11";
  2775. }
  2776. model.setValue ( "/root/send/cond1", cond1 ); //처방명, 수가코드
  2777. model.setValue ( "/root/send/cond2", "-" ); //외래, 입원, 응급 구분
  2778. model.setValue ( "/root/send/cond3", cond3 ); //처방일
  2779. model.setValue ( "/root/send/cond4", cond4 ); //환자보험유형
  2780. model.setValue ( "/root/send/cond5", cond5 );
  2781. model.setValue ( "/root/send/cond99", "getDirecGroupInfo" ); //환자보험유형
  2782. submit( "TRMMO00102" , false );
  2783. }
  2784. /**
  2785. * @desc : 처방내역만들기
  2786. * @param : strSrc: source Node
  2787. : from: 시작 row
  2788. : to: 끝 row
  2789. * @return : void
  2790. * @authur : 마정민 2007. 4. 16
  2791. */
  2792. function makePrcpNm ( strSrc, from, to ) {
  2793. var i = from;
  2794. if ( model.getValue ( strSrc + "[" + i + "]/status" ) == "S" ) return;
  2795. if ( model.getValue ( strSrc + "[" + i + "]/prcpflag" ) == "2" ) return;
  2796. var prcpnmbf = "";
  2797. var prcpnmaft = "";
  2798. var opansflagcd = "";
  2799. var prcpclscd = model.getValue ( strSrc + "[" + i + "]/prcpclscd" ); //처방종류
  2800. var prcpcd = model.getValue ( strSrc + "[" + i + "]/prcpcd" ); //처방코드
  2801. var prcpnm = model.getValue ( strSrc + "[" + i + "]/orgprcpnm" ); //처방명
  2802. var clincstdyflag = model.getValue ( strSrc + "[" + i + "]/clincstdyflag" ); //임상연구
  2803. var erprcpflag = model.getValue ( strSrc + "[" + i + "]/erprcpflag" ); //응급구분
  2804. var prnprcpflag = model.getValue ( strSrc + "[" + i + "]/prnprcpflag" ); //prn
  2805. var prepprcpflag = model.getValue ( strSrc + "[" + i + "]/prepprcpflag" ); //prep
  2806. var selfdrugflag = model.getValue ( strSrc + "[" + i + "]/selfdrugflag" ); //self
  2807. var powdflag = model.getValue ( strSrc + "[" + i + "]/powdflag" ); //powder
  2808. var drugspd = model.getValue ( strSrc + "[" + i + "]/drugspd" ); //gtt
  2809. var tnsfiltflag = model.getValue ( strSrc + "[" + i + "]/tnsfiltflag" ); //filter
  2810. var portprcpflag = model.getValue ( strSrc + "[" + i + "]/portprcpflag" ); //portprcpflag
  2811. //수술유형, 재활치료부위
  2812. if ( prcpclscd == "F2" ) {
  2813. var rehbprcpcurepartcd = model.getValue ( strSrc + "[" + i + "]/rehbprcpcurepartcd" );
  2814. if ( rehbprcpcurepartcd != "-" && !isNull(rehbprcpcurepartcd)) {
  2815. opansflagcd = model.getValue ( "/root/init/rehbprcpcurepartcd/M0046[cdid=" + rehbprcpcurepartcd + "]/cdnm" );
  2816. }
  2817. } else if ( prcpclscd == "H2" ) {
  2818. opansflagcd = model.getValue ( strSrc + "[" + i + "]/opansflagcd" );
  2819. if ( opansflagcd != "-" && !isNull(opansflagcd)) {
  2820. opansflagcd = model.getValue ( "/root/init/opansflagcd/M0007[cdid=" + opansflagcd + "]/cdnm" );
  2821. }
  2822. }
  2823. // var opansflagcd = model.getValue ( strSrc + "[" + i + "]/tempcol1" );
  2824. var dietprcpgenrflag = model.getValue ( strSrc + "[" + i + "]/dietprcpgenrflag" ); //조/중/석
  2825. var mealcalrcnts = model.getValue ( strSrc + "[" + i + "]/mealcalrcnts" ); //열량
  2826. var mealprotcnts = model.getValue ( strSrc + "[" + i + "]/mealprotcnts" ); //단백질
  2827. // var drugpackflag = model.getValue ( strSrc + "[" + i + "]/drugpackflag" ); //보호자식
  2828. var prcpdelivefact = model.getValue ( strSrc + "[" + i + "]/prcpdelivefact" ); //전달사항
  2829. var ansttm = model.getValue ( strSrc + "[" + i + "]/prcprefseq" ); //검사간격
  2830. var drugspd = model.getValue ( strSrc + "[" + i + "]/drugspd" ); //기본시간
  2831. var trnptbftestflag = model.getValue ( strSrc + "[" + i + "]/trnptbftestflag" );
  2832. var prcptims = model.getValue ( strSrc + "[" + i + "]/prcptims" ); //치료횟수
  2833. var prcpdayno = model.getValue ( strSrc + "[" + i + "]/prcpdayno" ); //치료일수
  2834. var etcprcpresncd = model.getValue ( strSrc + "[" + i + "]/etcprcpresncd" ); //마감일
  2835. var irflag = model.getValue ( strSrc + "[" + i + "]/irflag" ); //필터
  2836. var precureprcpflag = model.getValue ( strSrc + "[" + i + "]/precureprcpflag" ); //선처치
  2837. var selfprcpflag = model.getValue ( strSrc + "[" + i + "]/selfprcpflag" ); //자가
  2838. var prcpkindcd = model.getValue ( strSrc + "[" + i + "]/prcpkindcd" ); //처방종류
  2839. var hsctdelivepos = model.getValue ( strSrc + "[" + i + "]/hsctdelivepos" ); //hsct전달부서
  2840. var rehbprcpenddd = model.getValue ( strSrc + "[" + i + "]/rehbprcpenddd" ); //재활치료 마감일
  2841. var cnt = 0;
  2842. if ( erprcpflag == "Y") prcpnmbf = prcpnmbf + "[응급] ";
  2843. if ( clincstdyflag == "Y") prcpnmbf = prcpnmbf + "[임상] ";
  2844. if ( precureprcpflag == "Y") prcpnmbf = prcpnmbf + "[선] ";
  2845. if ( prcpclscd == "A2" || prcpclscd == "A4" ) {
  2846. //약
  2847. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  2848. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  2849. if ( selfprcpflag == "Y") prcpnmbf = prcpnmbf + "[home] ";
  2850. if ( selfdrugflag == "Y") prcpnmbf = prcpnmbf + "[self] ";
  2851. prcpnm = prcpnmbf + prcpnm;
  2852. if ( powdflag == "Y") prcpnm = prcpnm + "[powder] ";
  2853. } else if ( prcpclscd == "A6" ) {
  2854. //주사
  2855. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  2856. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  2857. if ( selfprcpflag == "Y") prcpnmbf = prcpnmbf + "[home] ";
  2858. if ( selfdrugflag == "Y") prcpnmbf = prcpnmbf + "[self] "; // 주사일때도 셀프 표시 2013.07.10 엄영만
  2859. prcpnm = prcpnmbf + prcpnm;
  2860. if ( drugspd != "0" && drugspd != "" ) prcpnm = prcpnm + " [" + drugspd + "] ";
  2861. } else if ( prcpclscd == "D2" ) {
  2862. //주사
  2863. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  2864. prcpnm = prcpnmbf + prcpnm;
  2865. } else if ( prcpclscd == "B4" ) {
  2866. //수혈 (혈액수혈)
  2867. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  2868. // if ( prepprcpflag == "N") prcpnmbf = prcpnmbf + " [T/F] ";
  2869. prcpnm = prcpnmbf + prcpnm;
  2870. if ( tnsfiltflag == "Y") prcpnm = prcpnm + "[Filter] ";
  2871. if ( irflag == "Y") prcpnm = prcpnm + "[Irr] ";
  2872. } else if ( prcpclscd == "C2" || prcpclscd == "C6" || prcpclscd == "E2" || prcpclscd == "G2") {
  2873. //방사선 검사(기능검사, 내시경,천자,생검, 방사선, 핵의학영상, 방사선치료)
  2874. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  2875. if ( portprcpflag == "Y") prcpnmbf = prcpnmbf + "[por] ";
  2876. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  2877. prcpnm = prcpnmbf + prcpnm;
  2878. } else if ( prcpclscd == "H2" || prcpclscd == "H4" || prcpclscd == "K2" || prcpclscd == "C4" ) {
  2879. //수술, 처치, 치과
  2880. prcpnm = prcpnmbf + prcpnm;
  2881. if ( opansflagcd != "" && opansflagcd != "-") prcpnm = prcpnm + " [" + opansflagcd + "] "; //수술마취구분-수술유형
  2882. } else if ( prcpclscd == "B2" || prcpclscd == "B6" ) {
  2883. //진단검사 (검체검사), 핵의학 체외
  2884. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  2885. prcpnm = prcpnmbf + prcpnm;
  2886. // if ( ansttm != "") prcpnm = prcpnm + " [" + ansttm + "] "; //검사간격
  2887. // if ( drugspd != "") prcpnm = prcpnm + " [" + drugspd + "] "; //기본시간
  2888. } else if ( prcpclscd == "03" ) {
  2889. //식이
  2890. if ( dietprcpgenrflag == "1") prcpnmbf = prcpnmbf + "[조식] ";
  2891. if ( dietprcpgenrflag == "2") prcpnmbf = prcpnmbf + "[중식] ";
  2892. if ( dietprcpgenrflag == "3") prcpnmbf = prcpnmbf + "[석식] ";
  2893. prcpnm = prcpnmbf + prcpnm;
  2894. if ( mealcalrcnts != "" && mealcalrcnts != "0" ) prcpnm = prcpnm + "[" + opansflagcd + ":" + mealcalrcnts + "] ";
  2895. var drugmastspec = model.getValue ( strSrc + "[" + i + "]/drugmastspec" ) + "▩";
  2896. var mealprotcntscond = getArrayData (drugmastspec, 0, 3, " ▩", "|" );
  2897. if ( mealprotcnts != "" && mealprotcntscond == "Y" ) prcpnm = prcpnm + "[횟수:" + mealprotcnts + "] ";
  2898. // if ( drugpackflag == "Y") prcpnm = prcpnm + "[보호자식추가] ";
  2899. //if ( prcpdelivefact != "") prcpnm = prcpnm + " [" + prcpdelivefact + "] ";
  2900. } else if ( prcpclscd == "F2" ) { //재활
  2901. prcpnm = prcpnmbf + prcpnm;
  2902. if("HZ272" != prcpcd ) { // 요청번호 20140422010 온열암 치료는 재활표기 따르지 않음. 스크립트 함수도 같이 수정. 2014.04.23 엄영만
  2903. if ( opansflagcd != "" && opansflagcd != "-") {
  2904. //prcpnm = prcpnm + " [치료부위:" + opansflagcd + "] ";
  2905. prcpnmaft = prcpnmaft + " " + opansflagcd + " ";
  2906. cnt++;
  2907. }
  2908. if ( prcptims != "" && prcptims != 0 ) {
  2909. //prcpnm = prcpnm + " [1일치료횟수:" + prcptims + "/1일] ";
  2910. prcpnmaft = prcpnmaft + " " + prcptims + "/1일 ";
  2911. cnt++;
  2912. }
  2913. if ( rehbprcpenddd != "" && rehbprcpenddd != "-" ) {
  2914. //prcpnm = prcpnm + " [마감일:" + etcprcpresncd.substring (0,4) + "-" + etcprcpresncd.substring (4,6) + "-" + etcprcpresncd.substring (6,8) + "] ";
  2915. prcpnmaft = prcpnmaft + " " + rehbprcpenddd.substring (0,4) + "-" + rehbprcpenddd.substring (4,6) + "-" + rehbprcpenddd.substring (6,8) + " ";
  2916. cnt++;
  2917. }
  2918. if ( cnt > 0 ) {
  2919. prcpnm = prcpnm + " [" + prcpnmaft + "]";
  2920. }
  2921. }
  2922. } else {
  2923. prcpnm = prcpnmbf + prcpnm;
  2924. }
  2925. if ( trnptbftestflag == "Y") {
  2926. prcpnm = prcpnm + " [pre-workup]";
  2927. } else if ( trnptbftestflag == "D") {
  2928. prcpnm = prcpnm + " [donor w/u]";
  2929. }
  2930. if ( prcpkindcd == "90") prcpnm = prcpnm + " [입원전검사(당일)] ";
  2931. if ( prcpkindcd == "95") prcpnm = prcpnm + " [입원전검사(전일)] ";
  2932. if ( prcpkindcd == "80") prcpnm = prcpnm + " [예약처방] ";
  2933. if ( hsctdelivepos == "1") prcpnm = prcpnm + " [병동]";
  2934. else if ( hsctdelivepos == "2") prcpnm = prcpnm + " [성분헌혈]";
  2935. else if ( hsctdelivepos == "3") prcpnm = prcpnm + " [세포처리실]";
  2936. if ( model.getValue ( strSrc + "[" + i + "]/drprcpetc2" ) == "Y" ) { // 특수주사실 체크 추가 요청 20081027 by Moonsh
  2937. prcpnm = prcpnm + " [암센터주사실] ";
  2938. } else if ( model.getValue ( strSrc + "[" + i + "]/drprcpetc2" ) == "B" ) {
  2939. prcpnm = prcpnm + " [BMT주사실] ";
  2940. }
  2941. model.setValue ( strSrc + "[" + i + "]/prcpnm", prcpnm );
  2942. model.setValue ( strSrc + "[" + i + "]/prcprefseq","0" );
  2943. }
  2944. /**
  2945. * @desc : 지정일자(연속처방)처리
  2946. * @param : grdObj: DataGrid
  2947. : prcpNode: 값을 세팅할 node
  2948. : flag: main 인지 child 인지
  2949. : endFlag: 마감일 지정을 할지여부
  2950. * @return : void
  2951. * @authur : 마정민 2007. 4. 30
  2952. * @---------------------------------------------------
  2953. */
  2954. function fContPrcpDd( grdObj, prcpNode, flag, endFlag ) {
  2955. //1. 과거일자 불가(달력에서 막음)
  2956. //2. 오늘날짜 처방이 아닐때 해더생성
  2957. //3. 2개이상생성시 해더생성
  2958. //4. 외래에서만 사용
  2959. //5. 상태|Acting진료일자|실시처방상태코드|처방일자|실시처방번호^
  2960. var status = "";
  2961. var actordd = "";
  2962. var prcpdd = "";
  2963. var execprcpstatcd = "";
  2964. var execprcpno = "";
  2965. var curRow = "";
  2966. var contPrcpSpec = "";
  2967. var contPrcpSpecArray1;
  2968. var contPrcpSpecArray2;
  2969. var prcpPKSpecArray;
  2970. var reqparm = "";
  2971. if ( grdObj == null ) grdObj = grd_prcplist; //값이 없으면 메인의 오른쪽 마우스 클릭
  2972. if ( isNull(prcpNode)) prcpNode = "/root/main/prcp/prcplist"; //값이 없으면 메인의 오른쪽 마우스 클릭
  2973. //외래진료일자
  2974. if ( flag == "child" ) {
  2975. if ( opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" ) {
  2976. messageBox ( "지정일은 외래에서만 사용하실 수 있습니다.", "E" );
  2977. return;
  2978. }
  2979. prcpdd = opener.model.getValue ( "/root/paminfo/list/orddd" ); //값이 없으면 메인의 오른쪽 마우스 클릭
  2980. } else {
  2981. if ( model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" ) {
  2982. messageBox ( "지정일은 외래에서만 사용하실 수 있습니다.", "E" );
  2983. return;
  2984. }
  2985. prcpdd = model.getValue ( "/root/paminfo/list/orddd" );
  2986. }
  2987. if ( model.getValue ( prcpNode + "[" + grdObj.row + "]/prcpclscd" ) != "A6" && model.getValue ( prcpNode + "[" + grdObj.row + "]/prcpclscd" ) != "F2" ) {
  2988. messageBox ( "지정일 사용하실 수 없는 처방입니다.", "E" );
  2989. return;
  2990. }
  2991. setParameter ("paramcalflag", "multi");
  2992. setParameter ("defaultday", prcpdd);
  2993. var selectedRows = 0;
  2994. if ( grdObj.selectionMode != "list" ) {
  2995. selectedRows = grdObj.row;
  2996. } else {
  2997. selectedRows = grdObj.selectedRows;
  2998. }
  2999. for (var i=0; i<selectedRows; i++) {
  3000. if ( grdObj.selectionMode != "list" ) {
  3001. curRow = grdObj.row;
  3002. } else {
  3003. curRow = grdObj.selectedrow(i);
  3004. }
  3005. contPrcpSpec = model.getValue ( prcpNode + "[" + curRow + "]/contprcpspec" );
  3006. if ( contPrcpSpec == "-" ) { //처방 당일이었던 지정일 또는 처음검색
  3007. prcpPKSpecArray = model.getValue ( prcpNode + "[" + curRow + "]/prcppkspec" ).split("|");
  3008. if ( !isNull(prcpPKSpecArray[0])) reqparm = prcpPKSpecArray[0]; //처방일자가 있으면
  3009. else reqparm = prcpdd;
  3010. } else {
  3011. contPrcpSpecArray1 = contPrcpSpec.split("^");
  3012. for ( var j=1; j < contPrcpSpecArray1.length; j++ ){
  3013. contPrcpSpecArray2 = contPrcpSpecArray1[j].split("|");
  3014. if ( j == (contPrcpSpecArray1.length-1))
  3015. reqparm = reqparm + contPrcpSpecArray2[1];
  3016. else
  3017. reqparm = reqparm + contPrcpSpecArray2[1] + "▩";//과거에 선택됐던 지정일을 넘긴다.
  3018. }
  3019. }
  3020. setParameter ("reqparam", reqparm);
  3021. fPrcpModal ( "SPMMO10600", 20, 50 );
  3022. if ( isNull(getParameter ( "rtn"))) return; //값이 없으면 return
  3023. var actorddArray = getParameter ( "rtn").split("▩");
  3024. model.setValue ( prcpNode + "[" + curRow + "]/prcpdayno", actorddArray.length );
  3025. status = model.getValue ( prcpNode + "[" + curRow + "]/status" ); //선택된 셀 상태값 가져오기
  3026. contPrcpSpec = "status|actorddd|execprcpstatcd|prcpdd|execprcpno";
  3027. var enddd = "00000000";
  3028. for( i = 0; i < actorddArray.length; i++) { //내용 붙히기
  3029. actordd = actorddArray[i];
  3030. contPrcpSpec = contPrcpSpec + "^" + status + "|" + actordd + "|" + execprcpstatcd + "|" + prcpdd + "|" + execprcpno;
  3031. if ( eval(enddd) < eval(actordd) ) {
  3032. enddd = actordd;
  3033. }
  3034. }
  3035. if ( actorddArray.length == 1 && actordd == prcpdd ) { // 날짜가 1 이고 처방일과 같을 경우는 - 처리
  3036. model.setValue ( prcpNode + "[" + curRow + "]/contprcpspec", "-" );
  3037. } else {
  3038. model.setValue ( prcpNode + "[" + curRow + "]/contprcpspec", contPrcpSpec );
  3039. }
  3040. //재활일 경우 마감일 setting
  3041. var prcpclscd = model.getValue ( prcpNode + "[" + curRow + "]/prcpclscd" );
  3042. if ( prcpclscd == "F2" ) model.setValue ( prcpNode + "[" + curRow + "]/etcprcpresncd", enddd );
  3043. //일수변환
  3044. model.setValue ( prcpNode + "[" + curRow + "]/prcpdayno", actorddArray.length );
  3045. }
  3046. }
  3047. /**
  3048. * @desc : 지정일자초기화
  3049. * @param : contPrcpDdCol: main에서 setting 된 값이 있었다면 화면에 , 구분자로 표시해 준다.
  3050. : grdObj: DataGrid
  3051. * @return : void
  3052. * @authur : 마정민 2007. 4. 30
  3053. * @---------------------------------------------------
  3054. */
  3055. function fContPrcpDdInit( grdObj, contPrcpDdCol ) {
  3056. var prcpNode = "/root/main/prcp/prcplist"
  3057. var prcpdd = opener.model.getValue ( "/root/paminfo/orddd" );
  3058. var contPrcpSpec = model.getValue ( prcpNode + "/contprcpspec" );
  3059. var contPrcpSpecArray1;
  3060. var contPrcpSpecArray2;
  3061. var contPrcpDd = "";
  3062. if ( opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" ) {
  3063. grdObj.valueMatrix ( 1, contPrcpDdCol ) = "-";
  3064. return;
  3065. }
  3066. grdObj.valueMatrix ( 1, contPrcpDdCol ) = "";
  3067. if ( contPrcpSpec == "-" ) { //처방 당일이었던 지정일 또는 처음검색
  3068. prcpPKSpecArray = model.getValue ( prcpNode + "/prcppkspec" ).split("|");
  3069. if ( !isNull(prcpPKSpecArray[0])) contPrcpDd = prcpPKSpecArray[0]; //처방일자가 있으면
  3070. else contPrcpDd = prcpdd;
  3071. contPrcpDd = fDateFormat ( contPrcpDd );
  3072. } else {
  3073. contPrcpSpecArray1 = contPrcpSpec.split("^");
  3074. for ( var j=1; j < contPrcpSpecArray1.length; j++ ){
  3075. contPrcpSpecArray2 = contPrcpSpecArray1[j].split("|");
  3076. if ( j == (contPrcpSpecArray1.length-1))
  3077. contPrcpDd = contPrcpDd + fDateFormat ( contPrcpSpecArray2[1]);//과거에 선택던 지정일을 넘긴다.
  3078. else
  3079. contPrcpDd = contPrcpDd + fDateFormat ( contPrcpSpecArray2[1]) + ",";
  3080. }
  3081. }
  3082. grdObj.valueMatrix ( 1, contPrcpDdCol ) = contPrcpDd;
  3083. }
  3084. /**
  3085. * @desc : 희망일자처리
  3086. * @param : grdObj: Data Grid
  3087. : prcpNode: source Node
  3088. : flag: child
  3089. : inst: 초기값을 가져올 instance
  3090. * @return : void
  3091. * @authur : 마정민 2007. 4. 30
  3092. * @---------------------------------------------------
  3093. */
  3094. function fPrcpHopeDd( grdObj, prcpNode, flag, inst ) {
  3095. //외래진료일자
  3096. if ( flag == "child" ) {
  3097. if ( opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" ) return;
  3098. prcpdd = opener.model.getValue ( "/root/paminfo/list/orddd" );
  3099. } else {
  3100. if ( model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" ) return;
  3101. prcpdd = model.getValue ( "/root/paminfo/list/orddd" );
  3102. }
  3103. if ( grdObj == null ) grdObj = grd_prcplist;
  3104. if ( isNull(prcpNode)) prcpNode = "/root/main/prcp/prcplist";
  3105. if ( isNull(inst)) inst = "prcphopedd";
  3106. setParameter ("defaultday", prcpdd );
  3107. setParameter ("paramcalflag", "sngl");
  3108. setParameter ("reqparam", model.getValue ( prcpNode + "[" + grdObj.row + "]/" + inst ))
  3109. modal ( "SPMMO10600" );
  3110. if ( isNull(getParameter ( "rtn"))) return; //값이 없으면 return
  3111. var selectedRows = grdObj.selectedRows;
  3112. for (var i=0; i<selectedRows; i++) {
  3113. model.setValue ( prcpNode + "[" + grdObj.selectedrow(i) + "]/" + inst, getParameter ( "rtn"));
  3114. }
  3115. }
  3116. /**
  3117. * @desc : 날짜에 - 구분자 두기
  3118. * @param : dd: 모양을 바꿀날짜.
  3119. * @return : yyyy-mm-dd
  3120. * @authur : 마정민 2007. 4. 30
  3121. * @---------------------------------------------------
  3122. */
  3123. function fDateFormat( dd ) {
  3124. var yyyy = dd.substring ( 0, 4 );
  3125. var mm = dd.substring ( 4, 6 );
  3126. var dd = dd.substring ( 6, 8 );
  3127. return yyyy + "-" + mm + "-" + dd;
  3128. }
  3129. /**
  3130. * @desc : split을 이용한 배열값 가져오기
  3131. * @param : pData: split이 포함된 원본데이터
  3132. : pRow: row값
  3133. : pCol: col값
  3134. : pRowSep: row구분자
  3135. : pColSep: col구분자
  3136. * @return : arrCol[pCol]
  3137. * @authur : 마정민 2007. 5. 9
  3138. */
  3139. function getArrayData (pData, pRow, pCol, pRowSep, pColSep ) {
  3140. var pRowSep = (pRowSep == null || pRowSep =="" ? "▩" :pRowSep ); // row 구분자
  3141. var pColSep = (pColSep == null || pColSep =="" ? "▦" :pColSep ); // column 구분자
  3142. var arrRow = pData.split(pRowSep);
  3143. if(arrRow.length <= pRow) return "";
  3144. var arrCol = arrRow[pRow].split(pColSep);
  3145. if(arrCol.length <= pCol) return "";
  3146. return arrCol[pCol];
  3147. }
  3148. /**
  3149. * @desc : 부서에 소속된 의사리스트 조회
  3150. * @param : Ref - 조회조건 instance xPath
  3151. : RsltRef - 데이터결과 instance xPath
  3152. : orddeptcd - 부서코드
  3153. : 추후에 마스터 데이터 작업 이후에 수정될 예정임
  3154. * @return : void
  3155. * @authur : 오지훈 2007. 5. 15
  3156. * @---------------------------------------------------
  3157. */
  3158. function reqGetDrList(ref, rsltRef, orddeptcd, queryflag){
  3159. model.makeValue(ref + "/orddeptcd" , orddeptcd);
  3160. model.makeValue(ref + "/queryflag" , queryflag);
  3161. submit("TRMMO04104", true, ref, rsltRef);
  3162. }
  3163. /**
  3164. * @desc : 부서리스트 조회
  3165. * @param : Ref - request instance xPath
  3166. * : RsltRef - return instance xPath
  3167. * : queryflag - instance에 전체, '-' 추가
  3168. * : dutplceinstcd - 근무지기관코드
  3169. * : dutplceuseyn - 근무지사용여부
  3170. * @return : void
  3171. * @authur : 오지훈 2007. 5. 15
  3172. * @---------------------------------------------------
  3173. */
  3174. function reqGetDeptList(ref, rsltRef, queryflag, dutplceinstcd, dutplceuseyn){
  3175. model.makeValue(ref + "/queryflag", queryflag);
  3176. model.makeValue(ref + "/dutplceinstcd", dutplceinstcd);
  3177. model.makeValue(ref + "/dutplceuseyn", dutplceuseyn);
  3178. submit("TRMMO04103", true, ref, rsltRef);
  3179. }
  3180. /**
  3181. * @desc : 병동리스트 조회
  3182. * @param : Ref - 조회조건 instance xPath
  3183. : RsltRef - 데이터결과 instance xPath
  3184. * @return : void
  3185. * @authur : 오지훈 2007. 5. 15
  3186. * @---------------------------------------------------
  3187. */
  3188. function reqGetWardList(queryflag){
  3189. model.makeValue("root/send/reqdata/queryflag", queryflag);
  3190. submit("TRMMO04106");
  3191. }
  3192. /**
  3193. * @desc : 데이터 한글인지 영문인지 구분해주는 함수
  3194. * @param : pData: 한글여부를 비교할 데이터
  3195. * @return : E: 영문, H: 한글
  3196. * @authur : 마정민 2007. 5. 30
  3197. * @---------------------------------------------------
  3198. */
  3199. function fIsHangul(pData) {
  3200. var sBit = pData.charAt(0);
  3201. if (escape(sBit).length <= 4) return "E";
  3202. return "H";
  3203. }
  3204. /**
  3205. * @desc : 공통 상세보기
  3206. * @param : flag: 상세보기를 호출하는 화면 구분
  3207. * @return : void
  3208. * @authur : 마정민 2007. 6. 12
  3209. * @---------------------------------------------------
  3210. */
  3211. function fIvwDetlVwCom ( grdObj ) {
  3212. var grdLeft = 383;
  3213. var grdWidht = 811;
  3214. var minGrdLeft = 900;
  3215. var minGrdWidht = 290;
  3216. var ivwLeft = 0;
  3217. var ivwWidth = 381;
  3218. var extnIvwLeft = ivwLeft;
  3219. var extnIvwWidth = 900;
  3220. var lineX1 = grdLeft;
  3221. var lineX2 = 1191;
  3222. var minLineX1 = minGrdLeft;
  3223. var minnLineX2 = lineX2;
  3224. var ivwGridWidth = eval ( model.getValue ( "/root/init/grdwd" ));
  3225. var extnIvwGridWidth = eval ( model.getValue ( "/root/init/extngrdwd" ));
  3226. var ivwLineX2 = 380;
  3227. var ivwMinLineX2 = 898;
  3228. var grdnm = model.getValue ( "/root/init/grdnm" );
  3229. var colsize = 100;
  3230. if ( model.getValue( "/root/init/detlvw" ) == "p") {
  3231. if (opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" && !isNull(opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ))){
  3232. opener.grd_prcplist.colHidden(3) = true;
  3233. }
  3234. if (typeof(opener.grd_prcplist) != "unknown" ) {
  3235. opener.grd_prcplist.colHidden(4) = true;
  3236. opener.grd_prcplist.attribute ( "left" ) = minGrdLeft;
  3237. opener.grd_prcplist.attribute ( "width" ) = minGrdWidht;
  3238. }
  3239. if (grdObj == "bf"){
  3240. opener.ivw_prcp3.attribute ( "left" ) = extnIvwLeft;
  3241. opener.ivw_prcp3.attribute ( "width" ) = extnIvwWidth;
  3242. } else {
  3243. opener.ivw_prcp.attribute ( "left" ) = extnIvwLeft;
  3244. opener.ivw_prcp.attribute ( "width" ) = extnIvwWidth;
  3245. }
  3246. if (typeof(opener.line5) != "unknown" ) {
  3247. opener.line5.attribute ( "x1" ) = minLineX1;
  3248. opener.line5.attribute ( "x2" ) = minnLineX2;
  3249. }
  3250. if ( opener.model.getValue ( "/root/cp" ) == "Y" ) {
  3251. opener.ivw_prcp.visible = false;
  3252. if (grdObj == "bf"){
  3253. opener.ivw_prcp3.attribute ( "left" ) = extnIvwLeft;
  3254. opener.ivw_prcp3.attribute ( "width" ) = extnIvwWidth;
  3255. } else {
  3256. opener.ivw_prcp2.attribute ( "left" ) = extnIvwLeft;
  3257. opener.ivw_prcp2.attribute ( "width" ) = extnIvwWidth;
  3258. }
  3259. if (typeof(opener.grd_prcplist) != "unknown" ) {
  3260. opener.grd_prcplist.attribute ( "left" ) = parseInt(minGrdLeft) + 5;
  3261. opener.grd_prcplist.attribute ( "width" ) = parseInt(minGrdWidht) + 10;
  3262. }
  3263. if (typeof(opener.line5) != "unknown" ) {
  3264. opener.line5.attribute ( "x1" ) = parseInt(minLineX1)+5;
  3265. opener.line5.attribute ( "x2" ) = parseInt(minnLineX2)+15;
  3266. }
  3267. }
  3268. model.setValue( "/root/init/detlvw", "m" );
  3269. opener.model.setValue( "/root/init/detlivw", "m" );
  3270. if( document.controls( grdnm ) != null) {
  3271. if (typeof(line8) != "unknown" ) {
  3272. line8.attribute ( "x2" ) = ivwMinLineX2;
  3273. }
  3274. document.controls( grdnm ).attribute ( "width" ) = extnIvwGridWidth;
  3275. if ( grdObj == "bf" ) {
  3276. //20081031 마정민 수정 전처방에 지정일을 추가하면서 상세보기시 word 추가
  3277. for ( var i =1; i <= document.controls( grdnm ).rows ; i++ ){
  3278. document.controls( grdnm ).rowstyle(1, "data", "word-warp") = "word";
  3279. }
  3280. document.controls( grdnm ).colWidth(document.controls( grdnm ).colRef ( "tempcol6" )) = model.getValue ( "/root/init/tempcol6exwd" );
  3281. document.controls( grdnm ).colWidth(document.controls( grdnm ).colRef ( "tempcol7" )) = model.getValue ( "/root/init/tempcol7exwd" );
  3282. //20081031 마정민 수정 전처방에 지정일을 추가하면서 상세보기시 word 추가. word일때는 autoResize = true
  3283. document.controls( grdnm ).autoResize = true ;
  3284. document.controls( grdnm ).rebuild();
  3285. }
  3286. }
  3287. } else {
  3288. if (opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" && !isNull(opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ))){
  3289. opener.grd_prcplist.colHidden(3) = false;
  3290. }
  3291. if (typeof(opener.grd_prcplist) != "unknown" ) {
  3292. opener.grd_prcplist.colHidden(4) = false;
  3293. opener.grd_prcplist.attribute ( "left" ) = grdLeft;
  3294. opener.grd_prcplist.attribute ( "width" ) = grdWidht;
  3295. }
  3296. if (grdObj == "bf"){
  3297. opener.ivw_prcp3.attribute ( "left" ) = ivwLeft;
  3298. opener.ivw_prcp3.attribute ( "width" ) = ivwWidth;
  3299. } else {
  3300. opener.ivw_prcp.attribute ( "left" ) = ivwLeft;
  3301. opener.ivw_prcp.attribute ( "width" ) = ivwWidth;
  3302. }
  3303. if (typeof(opener.line5) != "unknown" ) {
  3304. opener.line5.attribute ( "x1" ) = lineX1;
  3305. opener.line5.attribute ( "x2" ) = lineX2;
  3306. }
  3307. if ( opener.model.getValue ( "/root/cp" ) == "Y" ) {
  3308. opener.ivw_prcp.visible = false;
  3309. if (grdObj == "bf"){
  3310. opener.ivw_prcp3.attribute ( "left" ) = ivwLeft;
  3311. opener.ivw_prcp3.attribute ( "width" ) = ivwWidth;
  3312. } else {
  3313. opener.ivw_prcp2.attribute ( "left" ) = ivwLeft;
  3314. opener.ivw_prcp2.attribute ( "width" ) = ivwWidth;
  3315. }
  3316. if (typeof(opener.grd_prcplist) != "unknown" ) {
  3317. opener.grd_prcplist.attribute ( "left" ) = parseInt(grdLeft) + 2;
  3318. opener.grd_prcplist.attribute ( "width" ) = parseInt(grdWidht) + 7;
  3319. }
  3320. if (typeof(opener.line5) != "unknown" ) {
  3321. opener.line5.attribute ( "x1" ) = parseInt(lineX1)+2;
  3322. opener.line5.attribute ( "x2" ) = parseInt(lineX2)+15;
  3323. }
  3324. }
  3325. model.setValue( "/root/init/detlvw", "p" );
  3326. opener.model.setValue( "/root/init/detlivw", "p" );
  3327. if( document.controls( grdnm ) != null) {
  3328. if (typeof(line8) != "unknown" ) {
  3329. line8.attribute ( "x2" ) = ivwLineX2;
  3330. }
  3331. document.controls( grdnm ).attribute ( "width" ) = ivwGridWidth;
  3332. if ( grdObj == "bf" ) {
  3333. //20081031 마정민 수정 전처방에 지정일을 추가하면서 상세보기시 word 추가. 단 상세보기 취소시 noe으로 바꿈.
  3334. for ( var i =1; i <= document.controls( grdnm ).rows ; i++ ){
  3335. document.controls( grdnm ).rowstyle(1, "data", "word-warp") = "none";
  3336. document.controls( grdnm ).rowHeight(i) ="22" ;
  3337. }
  3338. document.controls( grdnm ).colWidth(document.controls( grdnm ).colRef ( "tempcol6" )) = model.getValue ( "/root/init/tempcol6wd" );
  3339. document.controls( grdnm ).colWidth(document.controls( grdnm ).colRef ( "tempcol7" )) = model.getValue ( "/root/init/tempcol7wd" );
  3340. //20081031 마정민 수정 전처방에 지정일을 추가하면서 상세보기시 word 추가. none일때는 autoResize = false;
  3341. document.controls( grdnm ).autoResize = false ;
  3342. document.controls( grdnm ).rebuild();
  3343. }
  3344. }
  3345. }
  3346. //CP일 경우, viewer안의 컨트롤 height 사이즈를 모두 조정해야 함 (2008.08.28 JJE)
  3347. //전처방 상세보기 모드일 경우 타 버튼 클릭시 전처방 축소시 오류 발생으로 조건 추가(2008.10.21 JJE)
  3348. if ( opener.model.getValue ( "/root/cp" ) == "Y" && grdObj != "bf" ) {
  3349. opener.window.javascript.fResizeControls();
  3350. }
  3351. }
  3352. /**
  3353. * @desc : 두 NodeList와 NodeValue값을 비교 결과에 따라 true, false를 return한다.
  3354. * @param : desNode - 목적노드
  3355. : srcNode - 원본노드
  3356. * @return : true, false
  3357. * @authur : 오지훈 2007. 6. 14
  3358. * @---------------------------------------------------
  3359. */
  3360. function compareNodeVal(desNode, srcNode){
  3361. var node = instance1.selectSingleNode(desNode);
  3362. var node2 = instance1.selectSingleNode(srcNode);
  3363. var nodeList = node.childNodes;
  3364. var nodeList2 = node2.childNodes;
  3365. while(childNode = nodeList.nextNode()){
  3366. childNode2 = nodeList2.nextNode();
  3367. //alert(childNode.NodeValue + "," + childNode2.NodeValue);
  3368. if(childNode.NodeValue != childNode2.NodeValue){
  3369. return true; //값이 다른 경우 true
  3370. }
  3371. }
  3372. return false; //값이 같은 경우 false
  3373. }
  3374. /**
  3375. * @desc : 병실리스트 - 병동에 해당하는 병실코드 조회
  3376. * @param : wardcd - 병동코드
  3377. * @return : void
  3378. * @authur : 오지훈 2007. 6. 14
  3379. */
  3380. function reqGetRoomList(wardcd){
  3381. model.removeNodeset("/root/send/reqdata");
  3382. model.makeValue("/root/send/reqdata/wardcd", wardcd);
  3383. submit("TRMMO04107");
  3384. }
  3385. /**
  3386. * @desc : 환자정보 조회
  3387. * @param : paramFlag - 등록번호/환자명 구분(pid/hngnm)
  3388. * : param - 등록번호/환자명
  3389. : param2 - 외래/입원일자
  3390. * : tblFlag - 테이블구분(환자기본/외래/입원, ptbs/otpt/inpt)
  3391. * @return : void
  3392. * @authur : 오지훈 2007. 6. 14
  3393. */
  3394. function reqPatInfo(paramFlag, tblFlag, param, param2){
  3395. model.removeNodeset("/root/send/reqdata");
  3396. if(paramFlag == "pid"){ //등록번호 검색
  3397. model.makeValue("/root/send/reqdata/pid" , param);
  3398. model.makeValue("/root/send/reqdata/hngnm", "");
  3399. }else if(paramFlag == "hngnm"){ //환자명 검색
  3400. model.makeValue("/root/send/reqdata/pid" , "");
  3401. model.makeValue("/root/send/reqdata/hngnm", param);
  3402. }
  3403. model.makeValue("/root/send/reqdata/orddd" , param2);
  3404. model.makeValue("/root/send/reqdata/queryflag", tblFlag);
  3405. model.makeValue("/root/send/reqdata/srchflag" , paramFlag);
  3406. submit("TRMMO04105");
  3407. var Node = instance1.selectSingleNode("/root/init/patnm/patnm/hngnm");
  3408. if(Node == null && paramFlag == "pid"){
  3409. messageBox("등록번호 [" + param + "] 환자를 찾을 수 ", "I004");
  3410. return false;
  3411. }else if(Node == null && paramFlag == "hngnm"){
  3412. messageBox("환자명 [" + param + "] 환자를 찾을 수 ", "I004");
  3413. return false;
  3414. }
  3415. return true;
  3416. }
  3417. /**
  3418. * @desc : 대체약이 있을경우 팝업처리
  3419. * @param : currow: 대체약을 띄울 팝업
  3420. : flag: 대체약 팝업 flag ( 1:처방복사, 2:대체약일괄변경, 3:대체약폴더내변경 )
  3421. : strSrc: source Node
  3422. * @return : void
  3423. * @authur : 마정민 2007. 6. 21
  3424. */
  3425. function fAltDrug ( currow, flag, strSrc, prcpInptFlag, powdflag ) {
  3426. if (isNull(strSrc)) strSrc = "/root/main/prcp/prcplist";
  3427. var setno = model.getValue ( "/root/hidden/prmsprcpsetinfo/prmsprcpsetlist/setno" );
  3428. var settypecd = model.getValue ( "/root/hidden/prmsprcpsetinfo/prmsprcpsetlist/settypecd" );
  3429. var setkindcd = model.getValue ( "/root/hidden/prmsprcpsetinfo/prmsprcpsetlist/setkindcd" );
  3430. var setclscd = model.getValue ( "/root/hidden/prmsprcpsetinfo/prmsprcpsetlist/setclscd" );
  3431. var settrgtcd = model.getValue ( "/root/hidden/prmsprcpsetinfo/prmsprcpsetlist/settrgtcd" );
  3432. var prcpcd = "";
  3433. var prcpnm = "";
  3434. if ( flag == "child" ) {
  3435. flag = 1;
  3436. //20090528: 6세미만 경구약 자동 powdflag전환 때문에 처방복사시 powdflag 체크로직 추가.
  3437. if ( !isNull(powdflag)) {
  3438. flag = powdflag;
  3439. }
  3440. if ( prcpInptFlag == "01" ) {
  3441. if (typeof(ivw_prcp3) == "object"){
  3442. prcpcd = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  3443. prcpnm = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  3444. }
  3445. } else {
  3446. if (typeof(ivw_prcp) == "object"){
  3447. prcpcd = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  3448. prcpnm = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  3449. }
  3450. }
  3451. }
  3452. if (isNull(prcpcd)) {
  3453. prcpcd = model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  3454. prcpnm = model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  3455. }
  3456. var prcpclscd = model.getValue ( strSrc + "[" + currow + "]/prcpclscd" );
  3457. var erprcpflag = model.getValue ( strSrc + "[" + currow + "]/erprcpflag" );
  3458. var prnprcpflag = model.getValue ( strSrc + "[" + currow + "]/prnprcpflag" );
  3459. var prepprcpflag = model.getValue ( strSrc + "[" + currow + "]/prepprcpflag" );
  3460. var selfdrugflag = model.getValue ( strSrc + "[" + currow + "]/selfdrugflag" );
  3461. var powdflag = model.getValue ( strSrc + "[" + currow + "]/powdflag" );
  3462. var drugspd = model.getValue ( strSrc + "[" + currow + "]/drugspd" );
  3463. var prcpvolunitflag = model.getValue ( strSrc + "[" + currow + "]/prcpvolunitflag" );
  3464. cond1 = prcpcd + "▦" + setno + "▦" + settypecd + "▦" + setkindcd + "▦" + setclscd + "▦" + settrgtcd + "▩";
  3465. cond2 = prcpclscd + "▦" + erprcpflag + "▦" + prnprcpflag + "▦" + prepprcpflag + "▦" + selfdrugflag + "▦" + powdflag + "▦" + drugspd + "▦" + prcpvolunitflag + "▩";
  3466. setParameter ( "SMMMO02300_cond1", cond1 );
  3467. setParameter ( "SMMMO02300_cond2", cond2 );
  3468. setParameter ( "SMMMO02300_cond3", flag );
  3469. setParameter ( "SMMMO02300_cond4", prcpnm );
  3470. fPrcpModal ( "SPMMB10100", "220", "150" );
  3471. clearParameter ( "SMMMO02300_cond1" );
  3472. clearParameter ( "SMMMO02300_cond2" );
  3473. clearParameter ( "SMMMO02300_cond3" );
  3474. clearParameter ( "SMMMO02300_cond4" );
  3475. }
  3476. /**
  3477. * @desc : 화면컬럼 조회 및 설정
  3478. * @param :
  3479. * @return : void
  3480. * @authur : 오지훈 2007. 6. 18
  3481. */
  3482. function initScrnCol(grdObj, scrnID){
  3483. model.removeNodeset("/root/send/reqdata");
  3484. model.makeValue("/root/send/reqdata/scrnid", scrnID);
  3485. submit("TRMMB01103");
  3486. var node = instance1.selectSingleNode("/root/hidden/userscrnenvinfo/gridseq");
  3487. if(node){
  3488. var compscnts = model.getValue("/root/hidden/userscrnenvinfo/gridseq/compscnts");
  3489. var compsrefcnts = model.getValue("/root/hidden/userscrnenvinfo/gridseq/compsrefcnts");
  3490. var compssizecnts = model.getValue("/root/hidden/userscrnenvinfo/gridseq/compssizecnts");
  3491. setScrnEnvEstb(grdObj, compscnts, compsrefcnts, compssizecnts);
  3492. }
  3493. }
  3494. /**
  3495. * @desc : 처방검색
  3496. * @param : prcpnm: 검색할 처방명
  3497. : prcpdd: 처방일자
  3498. : insukind: 보험유형
  3499. : trnm: 트랜젝션 네임
  3500. : ioflag: 외래, 입원, 응급 구분
  3501. : refreshFlag: refresh 여부
  3502. : mthdnm 명
  3503. : containflag : contains사용구분
  3504. * @return : void
  3505. * @authur : 마정민 2007. 6. 21
  3506. */
  3507. function fPrcpSrchCom ( prcpnm, prcpdd, insukind, trnm, ioflag, refreshFlag, mthdnm, isHangul, containflag ) {
  3508. if ( isNull(trnm)) {
  3509. trnm = "TRMMO00100";
  3510. }
  3511. if ( isNull(prcpdd)) {
  3512. prcpdd = getCurrentDate();
  3513. }
  3514. if ( isNull(ioflag)) {
  3515. ioflag = "-";
  3516. }
  3517. if ( isNull(refreshFlag)) {
  3518. refreshFlag = false;
  3519. }
  3520. if ( isNull(mthdnm)) {
  3521. mthdnm = "getPrcpSrchInfo";
  3522. } //getPrcpCdSrchInfo
  3523. //contains사용일 경우, 검색어의 특수기호에 /를 붙인다.
  3524. //ex) high-voltage@avm -> high/-voltage/@avm
  3525. //2008.06.28 오지훈
  3526. if(containflag == true){
  3527. var regular = /[^ A-Za-z0-9]/g;
  3528. var arr = prcpnm.match(regular);
  3529. if(arr != null ){
  3530. for(var i = 0; i <= arr.length-1; i++){
  3531. if (arr[i] != "-" && arr[i] != " " && arr[i] != ".") {
  3532. prcpnm = prcpnm.setReplaceWord( arr[i], "\\".concat(arr[i]) );
  3533. }
  3534. }
  3535. }
  3536. model.setValue("/root/send/cond6", "1");
  3537. }else{
  3538. model.setValue("/root/send/cond6", "2");
  3539. }
  3540. if (ioflag == "" || ioflag == null || ioflag == "undefined" || ioflag == "-") ioflag = getPatientInfoDetail("ioflag");
  3541. model.setValue ( "/root/send/cond1", prcpnm.toUpperCase()); //처방명, 수가코드
  3542. model.setValue ( "/root/send/cond2", ioflag ); //외래, 입원, 응급 구분
  3543. model.setValue ( "/root/send/cond3", prcpdd ); //처방일
  3544. model.setValue ( "/root/send/cond4", insukind ); //환자보험유형
  3545. if ( !isNull( isHangul)) {
  3546. model.setValue ( "/root/send/cond5", isHangul ); //한영구분
  3547. }
  3548. //그리드처방검색일때: 1일때는 첫단어검색, 2일때는 단어검색
  3549. //var srchcond1 = model.getValue ( "/root/prcpsrchcond1" );
  3550. //model.setValue ( "/root/send/cond6", srchcond1 ); //검색조건
  3551. /*20080930 시행부서 건진처방 때문에 추가했으나 시행부서처방에서도 건진처방 건색은 안되야 한다고 해서 주석으로 처리.
  3552. if ( model.getValue ( "/root/addprcp" ) == "Y" || opener.model.getValue ( "/root/addprcp" ) == "Y") {
  3553. model.makeValue ( "/root/send/cond7", "addprcp"); //처방명, 수가코드
  3554. }*/
  3555. model.setValue ( "/root/send/cond99", mthdnm ); //검색구분
  3556. if ( refreshFlag == false ) {
  3557. submit (trnm, false );
  3558. } else {
  3559. submit( trnm );
  3560. }
  3561. }
  3562. /**
  3563. * @desc : 전처방검색
  3564. * @param : pid: 환자ID
  3565. : orddd: 외래:진료일, 입원:입원일
  3566. : prcpdd: 처방일
  3567. : bfflag: 전처방 where 조건 구분자
  3568. : initflag: 최초구분
  3569. : orddrid: 의사ID,외래에서만 필요하다.
  3570. : todd
  3571. : prcpgenrflag: 외래입원구분
  3572. : orddeptcd: 부서코드
  3573. : cretno: 원무생성번호
  3574. : ioflag: 외래, 입원, 응급 구분
  3575. : refreshFlag: refresh 여부
  3576. : followup: 퇴원후 외래처방일과 동일한 처방일이거나 initsrch 와 동일한 날짜가 있을 경우 followdd를 입력한다.
  3577. : bfprcpviewflag : 전처방 조회 조건 개인별 설정기능 추가 by sonjy 20091120
  3578. * @return : void
  3579. * @authur : 마정민 2007. 6. 21
  3580. */
  3581. function fBfPrcpSrchCom ( pid, orddd, prcpdd, bfflag, initflag, orddrid, todd, prcpgenrflag, orddeptcd, cretno, trnm, refreshFlag, prcpauthflag, followup , bfprcpviewflag) {
  3582. if ( isNull(trnm)) {
  3583. trnm = "TRMMO00100";
  3584. }
  3585. if ( isNull(refreshFlag)) {
  3586. refreshFlag = false;
  3587. }
  3588. if ( isNull(prcpauthflag)) {
  3589. prcpauthflag = "0";
  3590. }
  3591. var curprcpdd = opener.model.getValue ( "/root/init/prcpdd" );
  3592. if (isNull(curprcpdd)) {
  3593. curprcpdd = model.getValue ( "/root/init/prcpdd" );
  3594. if (isNull(curprcpdd)){
  3595. curprcpdd = getCurrentDate();
  3596. }
  3597. }
  3598. var oprsrvno = "";
  3599. if (!isNull(opener.model.getValue ( "/root/operation/list/oprsrvno"))) {
  3600. orddd = opener.model.getValue ( "/root/operation/list/oprsrvno");
  3601. if (opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) == "O"){
  3602. prcpgenrflag = "OUTOP";
  3603. } else {
  3604. prcpgenrflag = "OP";
  3605. }
  3606. } else if (!isNull(model.getValue ( "/root/operation/list/oprsrvno"))) {
  3607. orddd = model.getValue ( "/root/operation/list/oprsrvno");
  3608. if (model.getValue ( "/root/patflag/list/prcpgenrflag" ) == "O"){
  3609. prcpgenrflag = "OUTOP";
  3610. } else {
  3611. prcpgenrflag = "OP";
  3612. }
  3613. }
  3614. model.setValue ( "/root/send/cond1", pid); //환자ID
  3615. model.setValue ( "/root/send/cond2", orddd ); //외래:진료일, 입원:입원일
  3616. model.setValue ( "/root/send/cond3", prcpauthflag ); //처방권한 구분
  3617. model.setValue ( "/root/send/cond4", prcpdd ); //처방일자
  3618. model.setValue ( "/root/send/cond5", bfflag ); //전처방 where 조건 구분자
  3619. model.setValue ( "/root/send/cond6", initflag ); //최초구분
  3620. model.setValue ( "/root/send/cond7", orddrid); //의사ID,외래에서만 필요하다.
  3621. model.setValue ( "/root/send/cond8", todd); //todd
  3622. model.setValue ( "/root/send/cond9", prcpgenrflag ); //외래입원구분
  3623. model.setValue ( "/root/send/cond10", orddeptcd ); //부서코드
  3624. model.setValue ( "/root/send/cond11", cretno ); //생성번호
  3625. model.makeValue( "/root/send/cond14", curprcpdd );
  3626. if (!isNull(followup)){
  3627. model.makeValue( "/root/send/cond12", "followup" ); //외래follow up
  3628. }
  3629. var insukind = opener.model.getValue ( "/root/paminfo/list/insukind");
  3630. if (isNull(insukind)) insukind = model.getValue ( "/root/paminfo/list/insukind");
  3631. if (!isNull(insukind)){
  3632. model.makeValue( "/root/send/cond13", insukind ); //외래follow up
  3633. }
  3634. model.setValue ( "/root/send/cond99", "getBfPrcpSrchInfo" );//검색구분
  3635. //by sonjy 전처방 조회모드 설정 20091120
  3636. if( bfflag == "bfprcp" || bfflag == "addprcp" ){
  3637. if(!isNull(bfprcpviewflag) ) model.makeValue( "/root/send/bfprcpviewflag",bfprcpviewflag);
  3638. }
  3639. if ( refreshFlag == false ) {
  3640. if(!submit (trnm, false )) {
  3641. return false;
  3642. } else {
  3643. return true;
  3644. }
  3645. } else {
  3646. if (!submit( trnm )) {
  3647. return false;
  3648. } else {
  3649. return true;
  3650. }
  3651. }
  3652. //CP일 경우, viewer안의 컨트롤 height 사이즈를 모두 조정해야 함 (2008.08.28 JJE)
  3653. if ( opener.model.getValue ( "/root/cp" ) == "Y" ) {
  3654. opener.window.javascript.fResizeControls();
  3655. }
  3656. }
  3657. /**
  3658. * @desc : 약속처방에 등록 가능한지 check
  3659. * @param : usge: 저장화면
  3660. : prcpkindcd: 처방분류
  3661. : prcpnm: 처방명
  3662. * @return : true, false
  3663. * @authur : 마정민 2007. 6. 22
  3664. */
  3665. function fPrmsSaveCheck ( usge, prcpkindcd, prcpnm ) {
  3666. //약속처방, 지시처방에서는 HSCT 처방을 등록할 수 없다.
  3667. if ( prcpkindcd == "04" && usge == "prms" ) {
  3668. messageBox ( "약속처방에는 [" + prcpnm +"] HSCT 처방을 등록", "E001" );
  3669. return false;
  3670. } else if ( prcpkindcd == "04" && usge == "direc" ) {
  3671. messageBox ( "지시처방에는 [" + prcpnm +"] HSCT 처방을 등록", "E001" );
  3672. return false;
  3673. }
  3674. return true;
  3675. }
  3676. /**
  3677. * @desc : 팝업위치가 저장되지 않는 팝업 띄우기
  3678. * @param : screenId: 화면 ID
  3679. : argxpt : x좌표
  3680. : argypt : y좌표
  3681. * @return : void
  3682. * @authur : 마정민 2007. 6. 29
  3683. */
  3684. function fPrcpModal ( screenId, argxpt, argypt ) {
  3685. var xpt = window.screenleft + eval(argxpt);
  3686. var ypt = window.screenTop + eval(argypt);
  3687. var coord = getRelativeCoordinate ( xpt, ypt );
  3688. var mon = coord[0];
  3689. xpt = coord[1];
  3690. ypt = coord[2];
  3691. modal (screenId, mon, xpt, ypt, screenId, "", "", "", false);
  3692. }
  3693. /**
  3694. * @desc : 팝업위치가 저장되지 않는 팝업 모달 띄우기
  3695. * @param : screenId: 화면 ID
  3696. : argxpt : x좌표
  3697. : argypt : y좌표
  3698. * @return : void
  3699. * @authur : 문세희 2008. 9. 25
  3700. */
  3701. function fPrcpOpen ( 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. open (screenId, mon, xpt, ypt, screenId, "", "", "", false);
  3709. }
  3710. /**
  3711. * @desc : 노드리스트를 CSV로 반환한다.
  3712. * @param : nodeList
  3713. : headerFlag : header 정보 필요유무
  3714. * @return : void
  3715. * @authur : 마정민 2007. 6. 30
  3716. */
  3717. function getPrcpNodeListCSV(nodeList, headerFlag ) {
  3718. if( nodeList.length == 0 )
  3719. return "";
  3720. var sColSep = "▦";
  3721. var sRowSep = "▩";
  3722. var rCSV = "";
  3723. var childNodeList = nodeList.item(0).childNodes;
  3724. var childNodeCnt = childNodeList.length;
  3725. if( childNodeCnt == 0 )
  3726. return "";
  3727. var i, j;
  3728. if ( headerFlag != "N" ) {
  3729. for( i = 0; i < childNodeCnt - 1; i++) {
  3730. rCSV += childNodeList.item(i).nodeName + sColSep;
  3731. }
  3732. rCSV += childNodeList.item(i).nodeName + sRowSep;
  3733. }
  3734. var node;
  3735. while( node = nodeList.nextNode() ) {
  3736. childNodeList = node.childNodes;
  3737. for( i = 0; i < childNodeCnt - 1; i++) {
  3738. rCSV += childNodeList.item(i).text + sColSep;
  3739. }
  3740. rCSV += childNodeList.item(i).text + sRowSep;
  3741. }
  3742. return rCSV;
  3743. }
  3744. /**
  3745. * @desc : 수술방 조회(combo 설정)
  3746. * @param : opschedd - 수술예약일자
  3747. * : queryflag - Query구분자(day : 일자, total : 전체, detl :부서, 의사, 일자 )
  3748. * @return :
  3749. * @authur : 오지훈 2007. 6. 30
  3750. */
  3751. function reqOpRoomList(opschedd, desRef, queryflag, perfdeptcd, perfdrid){
  3752. var resultRef = "/root/hidden/mmo/oproomlist";
  3753. model.makeNode(resultRef);
  3754. model.removeNodeset("/root/send/reqdata");
  3755. model.makeValue("/root/send/reqdata/opschedd" , opschedd);
  3756. model.makeValue("/root/send/reqdata/queryflag", queryflag);
  3757. if(queryflag == "detl"){
  3758. model.makeValue("/root/send/reqdata/perfdeptcd", perfdeptcd);
  3759. model.makeValue("/root/send/reqdata/perfdrid" , perfdrid);
  3760. }
  3761. var rtnval = submit("TRMMO05704", false, "/root/send/reqdata", resultRef);
  3762. if(rtnval == true){
  3763. copyNodeType(desRef, resultRef, "replace");
  3764. }
  3765. }
  3766. /**
  3767. * @desc : 그리드 data 엑셀화일로 저장
  3768. * @
  3769. * @param :
  3770. * @event :
  3771. * @return :
  3772. * @---------------------------------------------------
  3773. */
  3774. function saveGridToExcel(grdObj){
  3775. var fileName = window.fileDialog("save", ",", false, "excel", "xls", "Excel Files(*.xls)|*.xls|All Files (*.*)|*.*");
  3776. if (fileName != ""){
  3777. grdObj.saveExcel(fileName, "SheetName", true, true, "", "", true);
  3778. }
  3779. }
  3780. /**
  3781. * @desc : 콤보박스에 원하는 instance node와 value를 설정
  3782. * @
  3783. * @param :
  3784. * @event :
  3785. * @return :
  3786. * @---------------------------------------------------
  3787. */
  3788. function addComboInstance(combopath, nodename, nodeval, parentnode){
  3789. var xmlNode = model.instances(0).selectSingleNode(combopath + "/" + parentnode);
  3790. if(xmlNode == null){
  3791. return;
  3792. }
  3793. nodename = nodename.split("^");
  3794. nodeval = nodeval.split("^");
  3795. if(nodename.length != nodeval.length){
  3796. return;
  3797. }
  3798. var label = model.instances(0).createElement(nodename[0]);
  3799. var val = model.instances(0).createElement(nodename[1]);
  3800. var combo = model.instances(0).createElement(parentnode);
  3801. label.value = "" + nodeval[0] + "";
  3802. val.value = "" + nodeval[1] + "";
  3803. combo.appendChild(label);
  3804. combo.appendChild(val);
  3805. chkNode = model.instances(0).selectSingleNode(combopath);
  3806. if(chkNode == null){
  3807. model.makeNode(combopath);
  3808. srcNode = model.instances(0).selectSingleNode(combopath);
  3809. }else{
  3810. srcNode = model.instances(0).selectSingleNode(combopath);
  3811. }
  3812. desNode = model.instances(0).selectSingleNode(combopath + "/" + parentnode);
  3813. srcNode.insertBefore(combo, desNode);
  3814. model.refresh();
  3815. }
  3816. /**
  3817. * @desc : 콤보박스에 원하는 instance node와 value를 설정
  3818. * @
  3819. * @param : signbfcnts: sign할 데이터
  3820. : signid: sign 할 유저의 id
  3821. : signopt: false 로그인후 한번만 띄움, true: 매번띄움
  3822. : setnode: sign 데이터를 setValue 할 인스턴스 값이 있을 때만 함
  3823. * @event :
  3824. * @return :
  3825. * @---------------------------------------------------
  3826. */
  3827. function fSaveSign ( signbfcnts, signid, signopt, setnode ) {
  3828. var v_stext = "";
  3829. if ( !isNull( signbfcnts )) {
  3830. if (signopt) {
  3831. v_stext = zesfSignData( signbfcnts, signid, signopt );
  3832. } else {
  3833. v_stext = zesfSignData( signbfcnts, signid );
  3834. }
  3835. if ( isNull(v_stext)) {
  3836. return ""; //값이 없을 때는 return 함
  3837. }
  3838. } else {
  3839. return "N"; //인증할 데이터가 없을 때는 N 으로 return
  3840. }
  3841. if ( !isNull (setnode)) { //setnode가 있을경우 setvalue
  3842. model.setValue ( setnode, v_stext );
  3843. }
  3844. return v_stext;
  3845. }
  3846. function fPrcpExecDeptSrch(flag) {
  3847. var prcpcd = model.getValue ( "/root/main/prcp/prcplist/prcpcd" );
  3848. var prcpdd = opener.model.getValue ( "/root/init/prcpdd" );
  3849. if ( isNull(prcpdd)) {
  3850. prcpdd = model.getValue ( "/root/init/prcpdd" );
  3851. if (isNull(prcpdd)) {
  3852. prcpdd = getCurrentDate();
  3853. }
  3854. }
  3855. model.makeValue("/root/send/cond1" , prcpcd);
  3856. model.makeValue("/root/send/cond2" , prcpdd);
  3857. model.makeValue("/root/send/cond3" , flag);
  3858. //KNUH_20110208, 주희경, 진료 속도 개선을 위해 로그인 시 미리 데이터를 조회해 놓고 copy해서 쓰는 방식으로 변경
  3859. //flag가 all이면 이미 조회 해 놓은 데이터 카피
  3860. if ( flag == "all" )
  3861. {
  3862. model.makeNode("/root/orddept");
  3863. var viewerObj = getViewer("sysMessage");
  3864. var srcNodes = viewerObj.window.instance1.selectNodes(gvOrderBasicInfoPath + "/dept");
  3865. var targetNodes = instance1.selectSingleNode("/root/orddept");
  3866. if ( srcNodes.length > 0 )
  3867. {
  3868. for(i=0; i<srcNodes.length; i++)
  3869. {
  3870. targetNodes.appendChild(srcNodes.item(i));
  3871. }
  3872. }
  3873. else //KNUH_20110208, 주희경 복사할 데이터가 없을 시 (비정상 로딩) 강제 로그아웃
  3874. {
  3875. messageBox("현재 프로그램 배포로 인해 진료에 필요한 데이터를 재조회 해야합니다. 죄송하지만 반드시 다시 로그인 해주시기 바랍니다.", "");
  3876. if(submit("TRMMO00116")){
  3877. return true;
  3878. }else{
  3879. return false;
  3880. }
  3881. }
  3882. }
  3883. //all이 아니면 해당 데이터 조회
  3884. else
  3885. {
  3886. if(submit("TRMMO00116")){
  3887. return true;
  3888. }else{
  3889. return false;
  3890. }
  3891. }
  3892. /*
  3893. if(submit("TRMMO00116")){
  3894. return true;
  3895. }else{
  3896. return false;
  3897. }*/
  3898. }
  3899. function fPrcpColor(flag) {
  3900. var rowcolor = "";
  3901. var errcolor = "";
  3902. //처방화면에 색을 칠한다.
  3903. if ( flag == "child"){
  3904. for ( var i=1; i<= opener.grd_prcplist.rows; i++ ) {
  3905. errcolor = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol9" );
  3906. if (!isNull(errcolor)) {
  3907. rowcolor = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol9" );
  3908. } else {
  3909. rowcolor = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol10" );
  3910. if (isNull(rowcolor)) {
  3911. rowcolor = "transparent";
  3912. }
  3913. }
  3914. opener.grd_prcplist.rowstyle(i, "data", "background-color") = rowcolor;
  3915. }
  3916. } else {
  3917. for ( var i=1; i<= grd_prcplist.rows; i++ ) {
  3918. errcolor = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol9" );
  3919. if (!isNull(errcolor)) {
  3920. rowcolor = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol9" );
  3921. } else {
  3922. rowcolor = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol10" );
  3923. if (isNull(rowcolor)) {
  3924. rowcolor = "transparent";
  3925. }
  3926. }
  3927. grd_prcplist.rowstyle(i, "data", "background-color") = rowcolor;
  3928. }
  3929. }
  3930. }
  3931. /**
  3932. * @desc : 감염관리 환자 여부를 확인, 직원감염노출사고 보고서 open
  3933. * @
  3934. * @param :
  3935. * @return :
  3936. * @author : 오지훈
  3937. * @---------------------------------------------------
  3938. */
  3939. function fReqInFecPatList(rgstno, rgstno2){
  3940. model.removeNodeset("/root/send/reqdata");
  3941. model.makeValue("/root/send/reqdata/rgstno" , rgstno);
  3942. model.makeValue("/root/send/reqdata/rgstno2", rgstno2);
  3943. if(submit("TRMMO04108")==true){
  3944. var pflag = model.getValue("/root/main/infecpatlist/infecpatlist/pflag");
  3945. if(pflag == "Y"){
  3946. var infecojb = getOpenWindow("SMASI01000");
  3947. if(infecojb != null){infecojb.javascript.fClose();} //현재 직원감염노출사고 보고서가 있는 경우, close후, 다시 open
  3948. setParameter("sFlag", "P");
  3949. open("SMASI01000");
  3950. }
  3951. }
  3952. }
  3953. /**
  3954. * @desc : EMR부서콤보 조회
  3955. * @
  3956. * @param : ref - reference path
  3957. * rsltref - result reference path
  3958. * orddeptflag- 진료과구분
  3959. * @return :
  3960. * @author : 오지훈
  3961. * @---------------------------------------------------
  3962. */
  3963. function mmbfGetDeptCodeComboList(ref, rsltref, orddeptflag, stnddd){
  3964. var mmb_rsltref = "/root/hidden/mmb/orddept";
  3965. model.removeNode(mmb_rsltref);
  3966. model.makeNode(mmb_rsltref);
  3967. if(stnddd != null && stnddd != "" && stnddd != "undefined" && stnddd.length == 8) { // 기준일자를 입력하는경우 DB에서 신규로 조회 하도록 수정. 2014.04.03 엄영만
  3968. model.removeNode(ref);
  3969. model.makeValue(ref + "/orddeptflag", orddeptflag);
  3970. model.makeValue(ref + "/stnddd", stnddd);
  3971. submit("TRMMB04101", "false", ref, mmb_rsltref);
  3972. } else { // 기준일자가 없는경우 KNUH_20110208, 진료속도개선 수정, TRMMB04101 submit을 안하고 로그인시 가져온 데이터를 copy하는것으로 변경, 주희경
  3973. var srcref = "";
  3974. if ( orddeptflag == "A" || orddeptflag == "" || orddeptflag == null){
  3975. srcref = gvOrderBasicInfoPath + "/alldeptinfo";
  3976. } else if ( orddeptflag == "C"){
  3977. srcref = gvOrderBasicInfoPath + "/centdeptinfo";
  3978. } else if ( orddeptflag == "D"){
  3979. srcref = gvOrderBasicInfoPath + "/dscdeptinfo";
  3980. } else if ( orddeptflag == "W"){
  3981. srcref = gvOrderBasicInfoPath + "/warddeptinfo";
  3982. } else if ( orddeptflag == "O"){
  3983. srcref = gvOrderBasicInfoPath + "/otptdeptinfo";
  3984. } else if ( orddeptflag == "I"){
  3985. srcref = gvOrderBasicInfoPath + "/inptdeptinfo";
  3986. } else if ( orddeptflag == "T" ){
  3987. srcref= gvOrderBasicInfoPath + "/deptinfoinall";
  3988. }
  3989. var viewerObj = getViewer("sysMessage");
  3990. var targetNodes = instance1.selectSingleNode(mmb_rsltref);
  3991. var srcNodes = viewerObj.window.instance1.selectNodes(srcref);
  3992. if ( srcNodes.length > 0 ) { // 복사할 원본 데이터가 존재하면 복사
  3993. for(i=0; i<srcNodes.length; i++){
  3994. var newNode = srcNodes.item(i).cloneNode(true);
  3995. newNode.nodeName = "dept";
  3996. targetNodes.appendChild(newNode);
  3997. }
  3998. } else { //KNUH_20110208, 주희경 복사할 데이터가 없을 시 (비정상 로딩) 강제 로그아웃
  3999. messageBox("현재 프로그램 배포로 인해 진료에 필요한 데이터를 재조회 해야합니다. 죄송하지만 반드시 다시 로그인 해주시기 바랍니다.", "");
  4000. model.removeNode(ref);
  4001. model.makeValue(ref + "/orddeptflag", orddeptflag);
  4002. submit("TRMMB04101", "false", ref, mmb_rsltref);
  4003. }
  4004. }
  4005. model.copyNode(rsltref, mmb_rsltref);
  4006. model.removeNode(mmb_rsltref);
  4007. model.refresh();
  4008. }
  4009. /**
  4010. * @desc : EMR사용자콤보 조회
  4011. * @
  4012. * @param : ref - reference path
  4013. * rsltref - result reference path
  4014. * deptcd - 부서코드
  4015. * jobkindcd - 직종코드
  4016. * jobposcd - 직책코드
  4017. * specordyn - 선택진료여부
  4018. * drflag - 의사구분, 가상사용자 제외
  4019. * nmdispflag - 이름뒤에 특진(Y)표시 할것인지 구분
  4020. * jobflag - 주치의 담당의 조회기준 (JobKindCD, JobPoscd)
  4021. * specdrlist - 선택진료 의사 모두 조회한다.
  4022. * @return :
  4023. * @author : 오지훈
  4024. * @---------------------------------------------------
  4025. */
  4026. function mmbfGetUserComboList(ref, rsltref, deptcd, jobkindcd, specordyn, drflag, standd, nmdispflag, jobflag, specdrchk){
  4027. var mmb_rsltref = "/root/hidden/mmb/userlist";
  4028. model.removeNode(mmb_rsltref);
  4029. model.makeNode(mmb_rsltref);
  4030. model.removeNode(ref);
  4031. model.makeValue(ref + "/deptcd" , deptcd); //부서코드
  4032. model.makeValue(ref + "/jobkindcd", jobkindcd); //직종코드(의사:0330)
  4033. model.makeValue(ref + "/specordyn", specordyn); //선택진료여부
  4034. model.makeValue(ref + "/drflag" , drflag); //주치의 담당의 구분
  4035. model.makeValue(ref + "/standd" , standd); //조회기준일자
  4036. model.makeValue(ref + "/jobflag" , jobflag); //JobKindcd
  4037. model.makeValue(ref + "/specdrchk" , specdrchk); //진료과조건 제외
  4038. if(nmdispflag == "")
  4039. model.makeValue(ref + "/nmdispflag" , "N"); //조회기준일자
  4040. else
  4041. model.makeValue(ref + "/nmdispflag" , nmdispflag); //조회기준일자
  4042. if(submit("TRMMB04102", "false", ref, mmb_rsltref)==true){
  4043. model.copyNode(rsltref, mmb_rsltref);
  4044. model.removeNode(mmb_rsltref);
  4045. }
  4046. model.refresh();
  4047. }
  4048. /**
  4049. * @desc : 하드코드 조회
  4050. * @
  4051. * @param : ref - reference path
  4052. * rsltref - result reference path
  4053. * hardcd - 하드코드
  4054. * @return :
  4055. * @author : 오지훈
  4056. * @---------------------------------------------------
  4057. */
  4058. function reqHardCodeInfo(ref, rsltref, hardcd){
  4059. //KNUH_20110208, 진료속도개선 위해 로그인 시 미리 조회 해 놓은 데이터 복사, 주희경
  4060. fGetHardCDList("N", hardcd, 0, rsltref);
  4061. /*
  4062. var mmb_rsltref = "/root/hidden/mmb/hardcd";
  4063. model.removeNode(mmb_rsltref);
  4064. model.makeNode(mmb_rsltref);
  4065. model.removeNode(ref);
  4066. model.makeValue(ref + "/hardcd", hardcd);
  4067. if(submit("TRMMB04103", "false", ref, mmb_rsltref)==true){
  4068. model.copyNode(rsltref, mmb_rsltref);
  4069. model.removeNode(mmb_rsltref);
  4070. }
  4071. */
  4072. model.refresh();
  4073. }
  4074. /**
  4075. * @desc : 약주사 원내처방 사유 체크
  4076. * @
  4077. * @param : objFlag
  4078. * strDest - 검색노드
  4079. * @return :
  4080. * @author : 마정민
  4081. * @---------------------------------------------------
  4082. */
  4083. function fHosinPrcpResnChk ( objFlag, strDest ) {
  4084. //약주사 원내처방사유 체크
  4085. var prcpclscdchkA2 = "";
  4086. var prcpclscdchkA4 = "";
  4087. var prcpclscdchkA6 = "";
  4088. var prcpclscd = "";
  4089. //SON0919 G3아닌 응급퇴원약 원내외 처리 부분 BY SONJY 20080917 start
  4090. var prcpgenrflag = "";
  4091. var prcpkindcd = "";
  4092. var erflag = "";
  4093. //SON0919 end
  4094. //SON0930 약제원/내외구분 O/I Setting값이 있는 경우 모든 사유처리에서 제외하도록.
  4095. var hosinflag = "";
  4096. var drugmastspec = "";
  4097. if ( objFlag == "child") {
  4098. prcpgenrflag = opener.model.getValue ("/root/patflag/list/prcpgenrflag");
  4099. if( (prcpgenrflag == "E" && opener.model.getValue ( "/root/init/erresn" ) != "G3") || prcpgenrflag == "D" ){ //SON0919 G3아닌 응급퇴원약 원내외 처리 부분 BY SONJY 20080917 start
  4100. erflag = "Y";
  4101. }
  4102. if ( opener.model.getValue ("/root/usge") == "prcp" && (prcpgenrflag =="O" || erflag == "Y" ) ) { //SON0919 G3아닌 응급퇴원약 원내외 처리 부분 BY SONJY
  4103. var srcNodeList;
  4104. if( erflag == "Y") { //원내처방사유가 45 SON0919 start
  4105. srcNodeList = opener.model.instances(0).selectNodes ( strDest + "/prcplist[prcpkindcd='60' and hosinprcpresncd='45']" );
  4106. } else {
  4107. srcNodeList = opener.model.instances(0).selectNodes ( strDest + "/prcplist[hosinprcpresncd='45']" );
  4108. }//SON0919 end
  4109. var prcpclscdNodeValue = "";
  4110. for(var i = 0; i < srcNodeList.length; i++) {
  4111. drugmastspec = srcNodeList.item(i).drugmastspec.value;
  4112. hosinflag = getArrayData ( drugmastspec + "^", 0, 11 , "^", "|" );
  4113. if( hosinflag == "O" ) continue ; //SON0930 start 원외전용약은 예외
  4114. prcpclscdNodeValue = srcNodeList.item(i).prcpclscd.value;
  4115. if ( prcpclscdNodeValue == "A2" ) {
  4116. prcpclscdchkA2 = "A2"
  4117. } else if ( prcpclscdNodeValue == "A4" ){
  4118. prcpclscdchkA4 = "A4"
  4119. } else if ( prcpclscdNodeValue == "A6" ){
  4120. prcpclscdchkA6 = "A6"
  4121. }
  4122. }
  4123. if ( !isNull(prcpclscdchkA2) || !isNull(prcpclscdchkA4) || !isNull(prcpclscdchkA6) ) { //값이 있으면
  4124. var destNodeList = opener.model.instances(0).selectNodes( strDest + "/prcplist" ); //처방화면에 넘어온 것을 모두 찾아서
  4125. for ( var i=1; i <= destNodeList.length; i++ ) { // 처방건별처리
  4126. prcpclscd = opener.model.getValue ( strDest + "/prcplist[" + i + "]/prcpclscd");
  4127. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ; //sonjy 20081012 약/주사일때만 check
  4128. prcpkindcd = opener.model.getValue ( strDest + "/prcplist[" + i + "]/prcpkindcd");
  4129. if( erflag == "Y" && prcpkindcd != "60" ){ //응급 G3가 아니고 퇴원처방이 아닌경우 응급원내사유로 원복
  4130. opener.model.setValue ( strDest + "/prcplist[" + i + "]/hosinhosoutflag", "I" );
  4131. opener.model.setValue ( strDest + "/prcplist[" + i + "]/hosinprcpresncd", model.getValue ( "/root/init/hosinprcpresncd") );
  4132. continue ;
  4133. }
  4134. drugmastspec = opener.model.getValue ( strDest + "/prcplist[" + i + "]/drugmastspec");
  4135. hosinflag = getArrayData ( drugmastspec + "^", 0, 11, "^", "|" );
  4136. if ( prcpclscd != "A6" && hosinflag != "O" ) { //주사제는 예외 , 기본 원외인것도 예외 SON0930
  4137. if ( prcpclscdchkA2 == prcpclscd || prcpclscdchkA4 == prcpclscd || prcpclscdchkA6 == prcpclscd ) {
  4138. var hosinprcpresncd = opener.model.getValue ( strDest + "/prcplist[" + i + "]/hosinprcpresncd");
  4139. if ( hosinprcpresncd != "45" && hosinprcpresncd != "47" && hosinprcpresncd != "57" && hosinprcpresncd != "55" ) { //45, 47이 아니면, 55는 MSET
  4140. opener.model.setValue ( strDest + "/prcplist[" + i + "]/hosinhosoutflag", "I" );
  4141. opener.model.setValue ( strDest + "/prcplist[" + i + "]/hosinprcpresncd", "57" );
  4142. }
  4143. }
  4144. }
  4145. } // End of 처방건별처리
  4146. }// End of 값이 있으면
  4147. } // End of 처방화면에서 외래이고
  4148. } else {
  4149. prcpgenrflag = model.getValue ("/root/patflag/list/prcpgenrflag"); //SON1123 DSC 퇴원처방 처리 by sonjy 20081123
  4150. if( (prcpgenrflag == "E" && model.getValue ( "/root/init/erresn" ) != "G3" ) || prcpgenrflag == "D" ){
  4151. erflag = "Y";
  4152. }
  4153. if ( model.getValue ("/root/usge") == "prcp" && ( prcpgenrflag =="O" || erflag == "Y" ) ) { //처방화면에서 외래이고
  4154. var srcNodeList;
  4155. if( erflag == "Y") { //원내처방사유가 45 SON0919 start
  4156. srcNodeList = model.instances(0).selectNodes ( strDest + "/prcplist[prcpkindcd='60' and hosinprcpresncd='45']" );
  4157. } else {
  4158. srcNodeList = model.instances(0).selectNodes ( strDest + "/prcplist[hosinprcpresncd='45']" );
  4159. }//SON0919 end
  4160. var prcpclscdNodeValue = "";
  4161. for(var i = 0; i < srcNodeList.length; i++) {
  4162. drugmastspec = srcNodeList.item(i).drugmastspec.value;
  4163. hosinflag = getArrayData ( drugmastspec + "^", 0, 11, "^", "|" );
  4164. if( hosinflag == "O" ) continue ; //SON0930 start 원외전용약은 예외
  4165. prcpclscdNodeValue = srcNodeList.item(i).prcpclscd.value;
  4166. if ( prcpclscdNodeValue == "A2" ) {
  4167. prcpclscdchkA2 = "A2"
  4168. } else if ( prcpclscdNodeValue == "A4" ){
  4169. prcpclscdchkA4 = "A4"
  4170. } else if ( prcpclscdNodeValue == "A6" ){
  4171. prcpclscdchkA6 = "A6"
  4172. }
  4173. }
  4174. if ( !isNull(prcpclscdchkA2) || !isNull(prcpclscdchkA4) || !isNull(prcpclscdchkA6) ) { //값이 있으면
  4175. var destNodeList = opener.model.instances(0).selectNodes( strDest + "/prcplist" ); //처방화면에 넘어온 것을 모두 찾아서
  4176. for ( var i=1; i <= destNodeList.length; i++ ) { // 처방건별처리
  4177. prcpclscd = model.getValue ( strDest + "/prcplist[" + i + "]/prcpclscd");
  4178. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ; //sonjy 20081012 약/주사일때만 check
  4179. prcpkindcd = model.getValue ( strDest + "/prcplist[" + i + "]/prcpkindcd"); //SON0919 start
  4180. if( erflag == "Y" && prcpkindcd != "60" ) {
  4181. model.setValue ( strDest + "/prcplist[" + i + "]/hosinhosoutflag", "I" );
  4182. model.setValue ( strDest + "/prcplist[" + i + "]/hosinprcpresncd", model.getValue ( "/root/init/hosinprcpresncd") );
  4183. continue ;
  4184. } //SON0919 end
  4185. drugmastspec = model.getValue ( strDest + "/prcplist[" + i + "]/drugmastspec");
  4186. hosinflag = getArrayData ( drugmastspec + "^", 0, 11, "^", "|" );
  4187. if ( prcpclscd != "A6" && hosinflag != "O" ) { //주사제는 예외 20080930원외전용약은 예외
  4188. if ( prcpclscdchkA2 == prcpclscd || prcpclscdchkA4 == prcpclscd || prcpclscdchkA6 == prcpclscd ) {
  4189. var hosinprcpresncd = model.getValue ( strDest + "/prcplist[" + i + "]/hosinprcpresncd");
  4190. if ( hosinprcpresncd != "45" && hosinprcpresncd != "47" && hosinprcpresncd != "57" && hosinprcpresncd != "55" ) { //45, 47이 아니면, 55는 MSET
  4191. model.setValue ( strDest + "/prcplist[" + i + "]/hosinhosoutflag", "I" );
  4192. model.setValue ( strDest + "/prcplist[" + i + "]/hosinprcpresncd", "57" ); //같은 분류 코드가 있으면 57로 박아준다.
  4193. }
  4194. }
  4195. }
  4196. } // End of 처방건별처리
  4197. } // End of 값이 있으면
  4198. } // End of 처방화면에서 외래이고
  4199. }
  4200. }
  4201. function fHosinPrcpResncdSed ( objFlag, strSrc, sendRow, strSelResn ) {
  4202. //2007-12-13 윤영옥 선생님과 대화
  4203. //종속이 최우선 => 원내처방사유 => 약, 주사
  4204. var prcpgenrflag = "";
  4205. var hosinprcpresncd = "";
  4206. var prcpkindcd = "";
  4207. //SON0919 응급퇴원처방 원내사유 관련 추가 by sonjy start
  4208. var erflag = "";
  4209. var erprcpkindcd = "";
  4210. //SON0919 end
  4211. //SON0930
  4212. var hosinflag = "";
  4213. var drugmastspec = "";
  4214. var iFind = -1;
  4215. var prcpclscd = "";
  4216. var wardcd = "";
  4217. if ( objFlag == "child" ) {
  4218. prcpgenrflag = opener.model.getValue ( "/root/patflag/list/prcpgenrflag" );
  4219. prcpclscd = opener.model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) ;
  4220. prcpkindcd = opener.model.getValue ("/root/init/prcpkindcd");
  4221. erprcpkindcd = opener.model.getValue ( strSrc + "[" + sendRow + "]/prcpkindcd" );
  4222. if( isNull(erprcpkindcd) || erprcpkindcd == "" ) erprcpkindcd = prcpkindcd ;
  4223. if (isNull(strSelResn) || strSelResn == ""){
  4224. if( prcpgenrflag == "E" && erprcpkindcd == "60" && opener.model.getValue ( "/root/init/erresn" ) != "G3") {
  4225. hosinprcpresncd = "00"; // 응급실 G3가 아닌 환자의 퇴원 처방을 원외로 설정 되게 하기 위해 2013.03.27 엄영만
  4226. } else {
  4227. hosinprcpresncd = opener.model.getValue("/root/init/hosinprcpresncd"); //원무의 원내사유 체크
  4228. }
  4229. } else {
  4230. hosinprcpresncd = strSelResn;
  4231. }
  4232. if(prcpgenrflag == "O" || prcpgenrflag == "S"){
  4233. wardcd = "";
  4234. } else {
  4235. wardcd = opener.model.getValue("/root/paminfo/list/wardcd");
  4236. }
  4237. // DSC(일일수술실 2360800000 원외로 되도록 2012.06.11 엄영만)
  4238. if( erprcpkindcd == "60" &&
  4239. ( (prcpgenrflag == "E" && opener.model.getValue ( "/root/init/erresn" ) != "G3")
  4240. || (prcpgenrflag == "D" && wardcd == "2360800000") )) {
  4241. erflag = "Y" ;
  4242. }
  4243. } else {
  4244. prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  4245. prcpclscd = model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) ;
  4246. prcpkindcd = model.getValue ("/root/init/prcpkindcd");
  4247. erprcpkindcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpkindcd" );
  4248. if( isNull(erprcpkindcd) || erprcpkindcd == "" ) erprcpkindcd = prcpkindcd ;
  4249. if (isNull(strSelResn) || strSelResn == ""){
  4250. if( prcpgenrflag == "E" && erprcpkindcd == "60" && model.getValue ( "/root/init/erresn" ) != "G3") {
  4251. hosinprcpresncd = "00"; // 응급실 G3가 아닌 환자의 퇴원 처방을 원외로 설정 되게 하기 위해 2013.03.27 엄영만
  4252. } else {
  4253. hosinprcpresncd = model.getValue("/root/init/hosinprcpresncd"); //원무의 원내사유 체크
  4254. }
  4255. } else {
  4256. hosinprcpresncd = strSelResn;
  4257. }
  4258. if(prcpgenrflag == "O" || prcpgenrflag == "S"){
  4259. wardcd = "";
  4260. } else {
  4261. wardcd = model.getValue("/root/paminfo/list/wardcd");
  4262. }
  4263. // DSC(일일수술실 2360800000 원외로 되도록 2012.06.11 엄영만) 퇴원처방 처리
  4264. if( erprcpkindcd == "60" &&
  4265. ( (prcpgenrflag == "E" && model.getValue ( "/root/init/erresn" ) != "G3")
  4266. || (prcpgenrflag == "D" && wardcd == "2360800000") )) {
  4267. erflag = "Y" ;//SON0919
  4268. }
  4269. }
  4270. /* 종속 원내처방사유 55: 검사, 수술, 처치에 사용하는 의약품
  4271. 마약 45: 조제실제제,임상시험의약품,마약,방사성의약품,투석액,희귀의약품
  4272. 항암 47: 6세이하의 소아에게 투약하는 항암제(경구) */
  4273. /****************************** 원내처방 사유코드 처리 *******************************/
  4274. if ( prcpgenrflag == "O" || erflag == "Y" ) { //SON0919 외래이거나 g3아닌 응급퇴원처방, DSC(일일수술실 2360800000) 퇴원처방 인 경우
  4275. if( objFlag == "child" ) {
  4276. drugmastspec = opener.model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^";
  4277. hosinflag = getArrayData ( drugmastspec , 0, 11 , "^", "|" ); //SON0930 start 원외전용약은 예외
  4278. //********************* 투석원내처방사유처리 **************************//
  4279. var prcpcd = opener.model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" );
  4280. if( hosinflag != "O" ){
  4281. iFind = opener.model.getValue ( "/root/initsrch/prcpetccnts/dialhospinoutcd" ).search( prcpcd );
  4282. }
  4283. if ( iFind >= 0 && erflag != "Y") { //SON0919
  4284. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4285. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "19" );
  4286. var message = "원내지정이 가능한 처방입니다. 전체 약제를 원내로 하시려면 [예], 해당약제만 원내처방하시려면 [아니오]를 선택해주십시오.";
  4287. if (messageBox ( message, "Q" ) == "6" ) {
  4288. opener.model.setValue( "/root/init/hosinprcpresncd", "19" );
  4289. opener.cmb_hosinprcpresn.refresh();
  4290. opener.cmb_hosinprcpresn.dispatch ( "xforms-value-changed" );
  4291. }
  4292. model.setValue ( "/root/initsrch/prcpetccnts/dialhospinoutcd", "" );
  4293. //********************* 투석원내처방사유처리끝 ************************//
  4294. } else {
  4295. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) return ; //약/주사가 아니면 return 20081012
  4296. drugmastspec = opener.model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^";
  4297. var drugmastHosinprcpresncd = getArrayData ( drugmastspec, 0, 12, "^", "|" ); //약품마스터에 있는 원내처방 사유코드 처리
  4298. if( opener.model.getValue ( strSrc + "[" + sendRow + "]/inclprcpno") != "0" ){ //종속처방 처리 추가 by sonjy 2008-09-16
  4299. drugmastHosinprcpresncd = "55";
  4300. drugmastHosinhosoutflag = "I" ;
  4301. }
  4302. if ( drugmastHosinprcpresncd != "00" ) { //SON0826 주사제와 선처치, mset은 환자원내사유에 우선한다.
  4303. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4304. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", drugmastHosinprcpresncd );
  4305. } else {
  4306. if ( hosinprcpresncd != "00" ) { // 환자원내처방사유
  4307. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4308. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", hosinprcpresncd );
  4309. } else {
  4310. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "O" );
  4311. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "00" );
  4312. }
  4313. }
  4314. }
  4315. } else {
  4316. drugmastspec = model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^";
  4317. hosinflag = getArrayData ( drugmastspec , 0, 11 , "^", "|" ); //SON0930 start 원외전용약은 예외
  4318. //********************* 투석원내처방사유처리 **************************//
  4319. var prcpcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" );
  4320. if( hosinflag != "O" ){
  4321. iFind = model.getValue ( "/root/initsrch/prcpetccnts/dialhospinoutcd" ).search( prcpcd );
  4322. }
  4323. if ( iFind >= 0 && erflag != "Y") { //SON0919
  4324. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4325. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "19" );
  4326. var message = "원내지정이 가능한 처방입니다. 전체 약제를 원내로 하시려면 [예], 해당약제만 원내처방하시려면 [아니오]를 선택해주십시오.";
  4327. if (messageBox ( message, "Q" ) == "6" ) {
  4328. model.setValue( "/root/init/hosinprcpresncd", "19" );
  4329. cmb_hosinprcpresn.refresh();
  4330. cmb_hosinprcpresn.dispatch ( "xforms-value-changed" );
  4331. }
  4332. model.setValue ( "/root/initsrch/prcpetccnts/dialhospinoutcd", "" );
  4333. //********************* 투석원내처방사유처리끝 ************************//
  4334. } else {
  4335. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) return ; //약/주사가 아니면 return 20081012
  4336. drugmastspec = model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^"; //약품마스터에 있는 원내외 처리
  4337. var drugmastHosinprcpresncd = getArrayData ( drugmastspec, 0, 12, "^", "|" ); //약품마스터에 있는 원내처방 사유코드 처리
  4338. if( model.getValue ( strSrc + "[" + sendRow + "]/inclprcpno") != "0" ){ //종속처방 처리 추가 by sonjy 2008-09-16
  4339. drugmastHosinprcpresncd = "55";
  4340. drugmastHosinhosoutflag = "I" ;
  4341. }
  4342. if ( drugmastHosinprcpresncd != "00" ) { //SON0826 주사제와 선처치, mset은 환자원내사유에 우선한다.
  4343. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4344. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", drugmastHosinprcpresncd );
  4345. } else {
  4346. if ( hosinprcpresncd != "00") { // 환자원내처방사유 적용
  4347. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4348. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", hosinprcpresncd );
  4349. } else {
  4350. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "O" );
  4351. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "00" );
  4352. }
  4353. }
  4354. }
  4355. }
  4356. } else if ( prcpgenrflag == "E" ) {
  4357. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) return;
  4358. if( objFlag == "child") {
  4359. if ( erprcpkindcd == "60" && hosinprcpresncd == "00") { // 퇴원약 환자원내처방사유 적용
  4360. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "O" );
  4361. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "00" );
  4362. } else {
  4363. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4364. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", hosinprcpresncd );
  4365. }
  4366. } else {
  4367. if ( erprcpkindcd == "60" && hosinprcpresncd == "00") { // 퇴원약 환자원내처방사유 적용
  4368. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "O" );
  4369. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "00" );
  4370. } else {
  4371. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4372. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", hosinprcpresncd );
  4373. }
  4374. }
  4375. } else { //입원, DSC
  4376. if( objFlag == "child") {
  4377. // 3120400000 화학요법실, 3120900000 항암주사실 퇴원약 처방시 원내 예외 사유 설정. "주사제와 같이 투여 하는 경우" 2012.06.11 엄영만
  4378. if ( prcpgenrflag == "D" && erprcpkindcd == "60" && (wardcd == "3120900000" || wardcd == "3120400000")) {
  4379. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4380. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "52" );
  4381. } else {
  4382. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4383. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "00" );
  4384. }
  4385. } else {
  4386. // 3120400000 화학요법실, 3120900000 항암주사실 퇴원약 처방시 원내 예외 사유 설정. "주사제와 같이 투여 하는 경우" 2012.06.11 엄영만
  4387. if (prcpgenrflag == "D" && erprcpkindcd == "60" && (wardcd == "3120900000" || wardcd == "3120400000")) {
  4388. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4389. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "52" );
  4390. } else {
  4391. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4392. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "00" );
  4393. }
  4394. }
  4395. }
  4396. }
  4397. /**
  4398. * @desc : 환자에 해당되는 원내처방사유인지 체크
  4399. * @
  4400. * @param :
  4401. *
  4402. * @return : void
  4403. * @author : 마정민
  4404. * @---------------------------------------------------
  4405. */
  4406. function fPamHosinPrcpResnCdChk ( hosinprcpresncd, objFlag ) {
  4407. var cdnm = "";
  4408. if ( objFlag == "child" ) {
  4409. cdnm = opener.model.getValue ( "/root/init/hosinprcpresncd/P0034[cdid='" + hosinprcpresncd + "']/cdnm" );
  4410. } else {
  4411. cdnm = model.getValue ( "/root/init/hosinprcpresncd/P0034[cdid='" + hosinprcpresncd + "']/cdnm" );
  4412. }
  4413. if (!isNull(cdnm)){
  4414. return true;
  4415. } else {
  4416. //return false;
  4417. if( hosinprcpresncd == "52" || hosinprcpresncd == "55" ) return false ; //SON0826 선처치/주사제는 환자사유에 우선한다.
  4418. else return true ;
  4419. }
  4420. }
  4421. function fPrcpExecIssDeptCdSet ( strSrc, sendRow ) {
  4422. //발행처
  4423. if ( model.getValue ( "/root/addprcp" ) == "Y" ){
  4424. var issdept = model.getValue ( "/root/init/issdept" );
  4425. if ( isNull(issdept)) {
  4426. issdept = getUserInfo( "dutplcecd" );
  4427. }
  4428. model.setValue ( strSrc + "[" + sendRow + "]/issdeptcd", issdept );
  4429. } else {
  4430. var issdept = model.getValue ("/root/issdept");
  4431. if ( isNull(issdept)) {
  4432. issdept = getUserInfo( "dutplcecd" );
  4433. }
  4434. model.setValue ( strSrc + "[" + sendRow + "]/issdeptcd", issdept );
  4435. }
  4436. // 응급실 발행부서 관련 셋팅. 응급실 환자의 경우 센서스에 등록되어 있는 부서코드로 발행부서를 셋팅해준다.2012.04.24 엄영만
  4437. var prcpgenrflag = model.getValue( strSrc + "[" + sendRow + "]/prcpgenrflag");
  4438. var erissdeptcd = model.getValue("/root/paminfo/list/erissdeptcd");
  4439. if (prcpgenrflag == "E" && issdept == "2280200000" && !isNull(erissdeptcd) && erissdeptcd != "-") {
  4440. model.setValue ( strSrc + "[" + sendRow + "]/issdeptcd", erissdeptcd );
  4441. }
  4442. //과내검사 수가코드인 경우는 orddeptcd를 넣어준다. 구현중...
  4443. /*iFind = -1;
  4444. iFind = model.getValue ( "/root/initsrch/prcpetccnts/precureprcpcd" ).search( chkprcpcd + "D" );
  4445. if ( iFind >= 0) {
  4446. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd", orddeptcd );
  4447. }*/
  4448. }
  4449. /**
  4450. * @desc : 원내처방사유변경
  4451. * @
  4452. * @param :
  4453. * @return :
  4454. * @author : 마정민
  4455. * @---------------------------------------------------
  4456. * @ objFlag 추가 by sonjy
  4457. */
  4458. function fChngHosinPrcpResn(objFlag , strSelResn) {
  4459. var hosinprcpresncd = "";
  4460. var prcpclscd = "";
  4461. //SON0919 응급 퇴원약 원내사유 처리 by sonjy start
  4462. //SON1123 DSC 퇴원처방 처리 by sonjy 20081123
  4463. var prcpkindcd = "";
  4464. var erflag = "";
  4465. var erresn = ""; // G3
  4466. var prcpgenrflag = "";
  4467. //SON0930 약제원내외구분 우선 적용
  4468. var hosinflag = "";
  4469. var drugmastspec = "";
  4470. if( objFlag == "child" ) {
  4471. hosinprcpresncd = opener.model.getValue ( "/root/init/hosinprcpresncd" );
  4472. erresn = opener.model.getValue ( "/root/init/erresn" );
  4473. prcpgenrflag = opener.model.getValue ( "/root/patflag/list/prcpgenrflag" );
  4474. } else {
  4475. hosinprcpresncd = model.getValue ( "/root/init/hosinprcpresncd" );
  4476. erresn = model.getValue ( "/root/init/erresn" );
  4477. prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  4478. }
  4479. if( prcpgenrflag == "I" ){ return; }
  4480. if ( (prcpgenrflag == "E" && erresn != "G3") || prcpgenrflag == "D" ) {
  4481. erflag = "Y" ;//SON0919
  4482. }
  4483. if ( hosinprcpresncd != "00") { // 환자별 처방 사유가 존재 할 경우
  4484. if( objFlag == "child" ) {
  4485. for ( var i = 1; i < opener.grd_prcplist.rows; i++ ) { // 처방 건별 처리
  4486. prcpclscd = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpclscd" );
  4487. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ;
  4488. prcpkindcd = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpkindcd" );
  4489. drugmastspec = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/drugmastspec" ) + "^";
  4490. hosinflag = getArrayData ( drugmastspec , 0, 11, "^", "|" );
  4491. if( erflag == "Y" && prcpkindcd == "60" ) { // 응급 DSC 퇴원약 원내사유 처리
  4492. fHosinPrcpResncdSed ( objFlag , "/root/main/prcp/prcplist", i, strSelResn );
  4493. } else if ( prcpgenrflag == "E" || prcpgenrflag == "D" ){ // 응급, DSC
  4494. if( prcpgenrflag == "D" ) {
  4495. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4496. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd","00");
  4497. } else {
  4498. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4499. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd",hosinprcpresncd);
  4500. }
  4501. } else { // 그외 외래
  4502. prcphosinprcpresncd = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd" );
  4503. if (hosinflag != "O" && fPamHosinPrcpResnCdChk (prcphosinprcpresncd, objFlag)) { //환자원내처방사유만 적용
  4504. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4505. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd",hosinprcpresncd);
  4506. }
  4507. }
  4508. } // End of 처방 건별 처리
  4509. } else {
  4510. for ( var i = 1; i < grd_prcplist.rows; i++ ) { // 처방 건별 처리
  4511. prcpclscd = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpclscd" );
  4512. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ;
  4513. prcpkindcd = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpkindcd" );
  4514. drugmastspec = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/drugmastspec" ) + "^";
  4515. hosinflag = getArrayData ( drugmastspec , 0, 11, "^", "|" );
  4516. if( erflag == "Y" && prcpkindcd == "60" ) { // 응급 DSC 퇴원약 원내사유 처리
  4517. fHosinPrcpResncdSed ( objFlag, "/root/main/prcp/prcplist", i, strSelResn ); //SON0826 원복시 기존 약제사유로 원복.
  4518. } else if ( prcpgenrflag == "E" || prcpgenrflag == "D" ){ // 응급, DSC
  4519. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4520. if( prcpgenrflag == "D" ) {
  4521. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4522. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd","00");
  4523. } else {
  4524. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4525. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd",hosinprcpresncd);
  4526. }
  4527. } else { // 그외 외래
  4528. prcphosinprcpresncd = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd" );
  4529. if (hosinflag != "O" && fPamHosinPrcpResnCdChk (prcphosinprcpresncd, objFlag)) { //환자원내처방사유만 적용
  4530. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4531. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd",hosinprcpresncd);
  4532. }
  4533. }
  4534. } // End of 처방 건별 처리
  4535. }
  4536. if( erflag == "Y" ) fHosinPrcpResnChk ( objFlag, "/root/main/prcp" ); //SON0919 원복시 기존 약제사유로 원복 후 동시투여 약제처리....
  4537. } else { // 환자별 처방 사유가 없을 경우
  4538. if( objFlag == "child" ) {
  4539. for ( var i = 1; i < opener.grd_prcplist.rows; i++ ) {
  4540. prcpclscd = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpclscd" );
  4541. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ;
  4542. //SON0919 응급 퇴원약 원내사유 처리 by sonjy start
  4543. prcpkindcd = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpkindcd" );
  4544. if( erflag == "Y" && prcpkindcd == "60" ) {
  4545. fHosinPrcpResncdSed ( objFlag , "/root/main/prcp/prcplist", i, strSelResn );
  4546. } else if ( prcpgenrflag == "E" || prcpgenrflag == "D" ){ //SON1123 DSC퇴원처방 처리
  4547. if( prcpgenrflag == "D" ) {
  4548. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4549. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd","00");
  4550. } else {
  4551. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4552. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd",hosinprcpresncd);
  4553. }
  4554. } else { // 그외 외래
  4555. prcphosinprcpresncd = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd" );
  4556. if (fPamHosinPrcpResnCdChk (prcphosinprcpresncd , objFlag)) { //환자원내처방사유만 적용
  4557. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","O");
  4558. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd","00");
  4559. fHosinPrcpResncdSed (objFlag , "/root/main/prcp/prcplist", i ); //SON0826 원복시 기존 약제사유로 원복.
  4560. }
  4561. }
  4562. } // End of 처방 건별 처리
  4563. } else {
  4564. for ( var i = 1; i < grd_prcplist.rows; i++ ) {
  4565. prcpclscd = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpclscd" );
  4566. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ;
  4567. //SON0919 응급 퇴원약 원내사유 처리 by sonjy start
  4568. prcpkindcd = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpkindcd" );
  4569. if( erflag == "Y" && prcpkindcd == "60" ) {
  4570. fHosinPrcpResncdSed ( objFlag, "/root/main/prcp/prcplist", i, strSelResn );
  4571. } else if ( prcpgenrflag == "E" || prcpgenrflag == "D" ){ //SON1123 DSC퇴원처방 처리
  4572. if( prcpgenrflag == "D" ) {
  4573. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4574. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd","00");
  4575. } else {
  4576. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4577. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd",hosinprcpresncd);
  4578. }
  4579. } else { // 그외 외래
  4580. prcphosinprcpresncd = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd" );
  4581. if (fPamHosinPrcpResnCdChk (prcphosinprcpresncd, objFlag)) { //환자원내처방사유만 적용
  4582. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","O");
  4583. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd","00");
  4584. fHosinPrcpResncdSed ( objFlag, "/root/main/prcp/prcplist", i ); //SON0826 원복시 기존 약제사유로 원복.
  4585. }
  4586. }
  4587. }// End of 처방 건별 처리
  4588. }
  4589. fHosinPrcpResnChk ( objFlag, "/root/main/prcp" ); //SON0826 원복시 기존 약제사유로 원복 후 동시투여 약제처리....
  4590. }
  4591. if( objFlag == "child"){
  4592. opener.model.setValue ( "/root/paminfo/list/hosoutexptresncd" , hosinprcpresncd );
  4593. } else {
  4594. model.setValue ( "/root/paminfo/list/hosoutexptresncd" , hosinprcpresncd );
  4595. }
  4596. }
  4597. function fBundlePrcpDD(status){
  4598. var prcpgenrflag = opener.model.getValue("/root/patflag/list/prcpgenrflag");
  4599. if(prcpgenrflag != "O"){
  4600. messageBox("지정일은 외래가 아니면 사용", "E001");
  4601. return;
  4602. }
  4603. var prcpdd = opener.model.getValue("/root/paminfo/list/orddd");
  4604. var reqparam = getCurrentDate() + "▩";
  4605. setParameter("paramcalflag", "multi");
  4606. setParameter("defaultday" , prcpdd);
  4607. setParameter("reqparam" , reqparam);
  4608. fPrcpModal("SPMMO10600", 20, 50);
  4609. var actordddArray = getParameter("rtn").split("▩");
  4610. var contprcpspec = "status|actorddd|execprcpstatcd|prcpdd|execprcpno";
  4611. for(var i = 0; i < actordddArray.length; i++){
  4612. var actorddd = actordddArray[i];
  4613. contprcpspec = contprcpspec + "^" + status + "|" + actorddd + "|" + "" + "|" + prcpdd + "|" + "";
  4614. }
  4615. var rtnval = "";
  4616. var contprcpspecArray = contprcpspec.split("^");
  4617. for(var i = 1; i < contprcpspecArray.length; i++){
  4618. var tmp = contprcpspecArray[i].split("|");
  4619. rtnval = rtnval + tmp[1] + ",";
  4620. }
  4621. rtnval = rtnval.substring(0, rtnval.length-1);
  4622. if(actordddArray.length == 1 && actorddd == prcpdd){
  4623. model.setValue("/root/main/prcp/prcplist/contprcpspec", "-");
  4624. }else{
  4625. model.setValue("/root/main/prcp/prcplist/contprcpspec", contprcpspec);
  4626. }
  4627. model.setValue("/root/main/prcp/prcplist/prcpdayno", actordddArray.length);
  4628. model.setValue("/root/init/contprcpspec", rtnval);
  4629. model.refresh();
  4630. }
  4631. /**
  4632. * @desc : NodeList sorting
  4633. * : node 구조를 변경하며 정렬을 수행
  4634. * @
  4635. * @param :
  4636. * @return :
  4637. * @author : 오지훈
  4638. * @---------------------------------------------------
  4639. */
  4640. function nodeListSort( nodeset, trgRef, mode ){
  4641. var nodesetCnt = model.getXPathValue("count(" + nodeset + ")");
  4642. if(nodesetCnt == 0) return;
  4643. var tmpVal1, tmpVal2;
  4644. var tmpIndx;
  4645. for(var i = 1; i <= nodesetCnt; i++){
  4646. for(var j = i + 1 ; j <= nodesetCnt; j++){
  4647. tmpVal1 = model.getValue(nodeset + "[" + i + "]/" + trgRef);
  4648. tmpVal2 = model.getValue(nodeset + "[" + j + "]/" + trgRef);
  4649. if(isNumber(tmpVal1)==true){tmpVal1 = Number(tmpVal1);}
  4650. if(isNumber(tmpVal2)==true){tmpVal2 = Number(tmpVal2);}
  4651. if(mode == "desc"){
  4652. if(tmpVal1 < tmpVal2){
  4653. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + j + "]", "*[" + i + "]");
  4654. model.removenode(nodeset + "[" + (j + 1) + "]");
  4655. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + (i + 1) + "]", "*[" + j + "]");
  4656. model.removenode(nodeset + "[" + (i + 1) + "]");
  4657. }
  4658. }else if(mode == "asc"){
  4659. if(tmpVal1 > tmpVal2){
  4660. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + j + "]", "*[" + i + "]");
  4661. model.removenode(nodeset + "[" + (j + 1) + "]");
  4662. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + (i + 1) + "]", "*[" + j + "]");
  4663. model.removenode(nodeset + "[" + (i + 1) + "]");
  4664. }
  4665. }
  4666. }
  4667. }
  4668. }
  4669. /**
  4670. * @desc : 협진분류콤보조회 조회
  4671. * @
  4672. * @param :
  4673. * @return :
  4674. * @author : 오지훈
  4675. * @---------------------------------------------------
  4676. */
  4677. function mmofReqGetCnstTypeComboList(ref, rsltref, orddeptcd){
  4678. var mmo_rsltref = "/root/hidden/mmo/cnsttypecombo";
  4679. model.removeNodeset(mmo_rsltref);
  4680. model.makeNode(mmo_rsltref);
  4681. model.removeNode(ref);
  4682. model.makeValue(ref + "/orddeptcd", orddeptcd);
  4683. if(submit("TRMMO03602", "false", ref, mmo_rsltref)==true){
  4684. model.copyNode(rsltref, mmo_rsltref);
  4685. model.removeNodeset(mmo_rsltref);
  4686. }
  4687. model.refresh();
  4688. }
  4689. /*
  4690. function mmbfPrcpGrdSort( nodeset, mode ){
  4691. var nodesetCnt = model.getXPathValue("count(" + nodeset + ")");
  4692. if(nodesetCnt == 0) return;
  4693. var tmpVal1, tmpVal2;
  4694. var tmpIndx;
  4695. for(var i = 1; i <= nodesetCnt; i++){
  4696. for(var j = i + 1 ; j <= nodesetCnt; j++){
  4697. tmpVal1 = model.getValue(nodeset + "[" + i + "]/prcpclscd") || model.getValue(nodeset + "[" + i + "]/prcpcd");
  4698. tmpVal2 = model.getValue(nodeset + "[" + j + "]/prcpclscd") || model.getValue(nodeset + "[" + j + "]/prcpcd");
  4699. if(mode == "desc"){
  4700. if(tmpVal1 < tmpVal2){
  4701. if(model.getValue(nodeset + "[" + i + "]/status") == 'I') {
  4702. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + j + "]", "*[" + i + "]");
  4703. model.removenode(nodeset + "[" + (j + 1) + "]");
  4704. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + (i + 1) + "]", "*[" + j + "]");
  4705. model.removenode(nodeset + "[" + (i + 1) + "]");
  4706. }
  4707. }
  4708. } else if(mode == "asc"){
  4709. if(tmpVal1 > tmpVal2){
  4710. if(model.getValue(nodeset + "[" + i + "]/status") == 'I') {
  4711. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + j + "]", "*[" + i + "]");
  4712. model.removenode(nodeset + "[" + (j + 1) + "]");
  4713. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + (i + 1) + "]", "*[" + j + "]");
  4714. model.removenode(nodeset + "[" + (i + 1) + "]");
  4715. }
  4716. }
  4717. }
  4718. }
  4719. }
  4720. }*/
  4721. function fAltPrcpCd( currow, flag, strSrc, prcpInptFlag ) {
  4722. var prcpcd = "";
  4723. var prcpnm = "";
  4724. var altcdinfo = "";
  4725. if ( flag == "child" ) {
  4726. if ( prcpInptFlag == "01" ) {
  4727. prcpcd = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  4728. prcpnm = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  4729. altcdinfo = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/tempcol16" );
  4730. } else {
  4731. prcpcd = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  4732. prcpnm = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  4733. altcdinfo = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/tempcol16" );
  4734. }
  4735. } else {
  4736. prcpcd = model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  4737. prcpnm = model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  4738. altcdinfo = model.getValue ( strSrc + "[" + currow + "]/tempcol16" );
  4739. }
  4740. setParameter ( "SPMMO15400_cond1", prcpcd ); //원래처방코드
  4741. setParameter ( "SPMMO15400_cond2", prcpnm ); //처방명
  4742. setParameter ( "SPMMO15400_cond3", altcdinfo ); //대체처방코드
  4743. modal ( "SPMMO15400" );
  4744. clearParameter ( "SPMMO15400_cond1" ); //원래처방코드
  4745. clearParameter ( "SPMMO15400_cond2" ); //처방명
  4746. clearParameter ( "SPMMO15400_cond3" ); //대체처방코드
  4747. return 0;
  4748. }
  4749. /**
  4750. * @desc : 항생제이면서 제한항생자가 아니면 항생제처리
  4751. *
  4752. * @
  4753. * @param :
  4754. * @return :
  4755. * @author : 마정민
  4756. * @---------------------------------------------------
  4757. */
  4758. function fAntiMicChk( currow, flag, strSrc, prcpInptFlag ) {
  4759. //20080725 마정민추가. 항생제이면서 제한항생자가 아니면 항생제처리
  4760. var prcpcd = "";
  4761. var drugmastspec = "";
  4762. var pid = "";
  4763. var prcpdd = "";
  4764. //CP는 CDSS항생제 체크 skip임. (2008.09.29 JJE)
  4765. if( model.getValue("/root/cp") == "Y" ){
  4766. return 1;
  4767. }
  4768. if ( flag == "child" ) {
  4769. if ( prcpInptFlag == "01" ) {
  4770. prcpcd = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  4771. } else {
  4772. prcpcd = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  4773. }
  4774. } else {
  4775. prcpcd = model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  4776. }
  4777. prcpdd = model.getValue ( "/root/init/prcpdd" );
  4778. pid = model.getvalue ( "/root/paminfo/list/pid" );
  4779. model.setValue ( "/root/send/cond1", pid );
  4780. model.setValue ( "/root/send/cond2", prcpcd );
  4781. model.setValue ( "/root/send/cond3", prcpdd );
  4782. if (submit ( "TRMMO01609" )){
  4783. /*var chkAntibio = "20"; // 항생제 antibiotics(20), 제한항생제 restantimic(10) 따로 구분 후 저장 - by Moonsh 20081013
  4784. var getAntibio = model.getValue ( "/root/result/antibiotics/antibioticsinfo" );
  4785. var srchAntibio = getAntibio.split("|");
  4786. if (srchAntibio[1] == "20"){
  4787. chkAntibio = "20";
  4788. } else {
  4789. chkAntibio = "10";
  4790. setParameter ( "SPMMMD00700_chkday", srchAntibio[9] ); //체크일 추가 요청 - by Moonsh 20081021
  4791. }*/
  4792. if (model.getValue ( "/root/result/antibiotics/popyn" )=="Y") {
  4793. // 항생제 검색어 초기화
  4794. var prcplistcnt = grd_prcplist.rows - 1;
  4795. var prcpcd = model.getValue ( "/root/main/prcp/prcplist[" + prcplistcnt + "]/prcpcd" );
  4796. var prcpnm = model.getValue ( "/root/main/prcp/prcplist[" + prcplistcnt + "]/prcpnm" );
  4797. if (prcpcd != "" && prcpnm == "") {
  4798. model.setValue ( "/root/main/prcp/prcplist[" + prcplistcnt + "]/prcpcd", "" );
  4799. }
  4800. fPrcpModal("SPMMD01600", 20, 50);
  4801. return 0;
  4802. } else {
  4803. if ( flag == "child" ) {
  4804. if ( prcpInptFlag == "01" ) {
  4805. ivw_prcp3.model.setValue ( strSrc + "[" + currow + "]/tempcol8", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4806. /*if ( chkAntibio == "20") {
  4807. ivw_prcp3.model.setValue ( strSrc + "[" + currow + "]/tempcol8", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4808. } else {
  4809. ivw_prcp3.model.setValue ( strSrc + "[" + currow + "]/tempcol7", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4810. }*/
  4811. } else {
  4812. ivw_prcp.model.setValue ( strSrc + "[" + currow + "]/tempcol8", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4813. /*if ( chkAntibio == "20") {
  4814. ivw_prcp.model.setValue ( strSrc + "[" + currow + "]/tempcol8", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4815. } else {
  4816. ivw_prcp.model.setValue ( strSrc + "[" + currow + "]/tempcol7", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4817. }*/
  4818. }
  4819. } else {
  4820. model.setValue ( strSrc + "[" + currow + "]/tempcol8", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4821. /*if ( chkAntibio == "20") {
  4822. model.setValue ( strSrc + "[" + currow + "]/tempcol8", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4823. } else{
  4824. model.setValue ( strSrc + "[" + currow + "]/tempcol7", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4825. }*/
  4826. }
  4827. return 1;
  4828. }
  4829. }
  4830. }
  4831. /**
  4832. * @desc : EMR진료 기록지 조정
  4833. * modal로 화면에 숨겨진 팝업을 띄운다. 여러화면 동시에 open되어, submit간의 충돌을 방지한다.
  4834. * @
  4835. * @param : scrnid : 화면ID
  4836. * @return :
  4837. * @author : 오지훈
  4838. * @---------------------------------------------------
  4839. */
  4840. function mmbfOpenEmrWnd(scrnid){
  4841. setParameter("SPMMB08400_scrnid", scrnid);
  4842. modal("SPMMB08400", 1, 0, 0, "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  4843. return true;
  4844. }
  4845. /**
  4846. * @desc : 하드코드 조회
  4847. * @
  4848. * @param : ref - reference path
  4849. * rsltref - result reference path
  4850. * hardcd - 하드코드
  4851. * @return :
  4852. * @author : 오지훈
  4853. * @---------------------------------------------------
  4854. */
  4855. function mmbfGetHardCodeInfo(ref, rsltref, hardcd){
  4856. //KNUH_20110208, 진료속도개선 위해 로그인 시 미리 조회 해 놓은 데이터 복사, 주희경
  4857. fGetHardCDList("N", hardcd, 0, rsltref);
  4858. /*
  4859. var mmb_rsltref = "/root/hidden/mmb/hardcd";
  4860. model.removeNode(mmb_rsltref);
  4861. model.makeNode(mmb_rsltref);
  4862. model.removeNode(ref);
  4863. model.makeValue(ref + "/hardcd", hardcd);
  4864. if(submit("TRMMB04103", "false", ref, mmb_rsltref)==true){
  4865. model.copyNode(rsltref, mmb_rsltref);
  4866. model.removeNode(mmb_rsltref);
  4867. }
  4868. */
  4869. model.refresh();
  4870. }
  4871. /**
  4872. * @desc : 하드코드 조회 (하드코드, 하드코드명)
  4873. * @
  4874. * @param : ref - reference path
  4875. * rsltref - result reference path
  4876. * hardcd - 하드코드
  4877. * @return :
  4878. * @author : 오지훈
  4879. * @---------------------------------------------------
  4880. */
  4881. function mmbfGetHardCodeInfoNm(ref, rsltref, hardcd){
  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("TRMMB04105", "false", ref, mmb_rsltref)==true){
  4888. model.copyNode(rsltref, mmb_rsltref);
  4889. model.removeNode(mmb_rsltref);
  4890. }
  4891. model.refresh();
  4892. }
  4893. /**
  4894. * @desc : 선택진료의 변경 시 호출 .
  4895. 선택진료환자이나 선택한 의사가 특진의가 아닐경우 방사선혈관조영/마취, 수술 처방에 한해 해당 처방의 선택진료여부 = 'N'으로 SETTING
  4896. * @
  4897. * @param : objFlag - child or null
  4898. DrID - 진료의id
  4899. specDrYN- 특진의여부(A-특진/B..)
  4900. * @return :
  4901. * @author : 손주연
  4902. * @---------------------------------------------------
  4903. */
  4904. function fChngSpecDr(objFlag, DrID, specDrYN ){
  4905. //선택진료관련 추가 by sonjy 2008-08-27 start
  4906. if( objFlag == "child"){
  4907. if( opener.model.getValue("/root/main/prcp/prcplist/choiordflag") == "Y" ){
  4908. var tempcol2 = opener.model.getValue("/root/main/prcp/prcplist/tempcol2");
  4909. if( !isNull(tempcol2) ){
  4910. var temparray = tempcol2.split("|");
  4911. //선택진료환자이나 선택한 의사가 특진의가 아닐경우 방사선혈관조영/마취, 수술 처방에 한해 해당 처방의 선택진료여부 = 'N'으로 SETTING
  4912. if( specDrYN!= "A" ){
  4913. /* 2010. 12. 29 선택진료의사면 무조건 선택진료 아니면
  4914. if( (temparray[0] == "15" && temparray[1] == "02") || // 수술
  4915. (temparray[0] == "13") || //마취
  4916. (temparray[0] == "20") //방사선혈관조영술
  4917. ){
  4918. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "N");
  4919. }
  4920. */
  4921. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "N");
  4922. } else {
  4923. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "Y");
  4924. }
  4925. }
  4926. }
  4927. //선택진료환자이나 비특진의 선택으로 인해 선택진료여부가 'N'으로 변경되었으나 다시 선택진료의를 선택한 경우
  4928. else if( opener.model.getValue("/root/paminfo/list/specordyn") == "Y" && opener.model.getValue("/root/main/prcp/prcplist/choiordflag") == "N" ){
  4929. if( specDrYN == "A" ) {
  4930. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "Y");
  4931. }
  4932. } else { // 의사가 찍은대로 선택진료의를 변경한다.
  4933. if( specDrYN == "A" ) {
  4934. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "Y");
  4935. } else {
  4936. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "N");
  4937. }
  4938. }
  4939. }
  4940. else {
  4941. if(model.getValue("/root/main/prcp/prcplist/choiordflag") == "Y" ){
  4942. var tempcol2 = model.getValue("/root/main/prcp/prcplist/tempcol2");
  4943. if( !isNull(tempcol2) ){
  4944. var temparray = tempcol2.split("|");
  4945. //선택진료환자이나 선택한 의사가 특진의가 아닐경우 방사선혈관조영/마취, 수술 처방에 한해 해당 처방의 선택진료여부 = 'N'으로 SETTING
  4946. if( specDrYN != "A" ){
  4947. /*
  4948. if( (temparray[0] == "15" && temparray[1] == "02") || // 수술
  4949. (temparray[0] == "13") || //마취
  4950. (temparray[0] == "20") //방사선혈관조영술
  4951. ){
  4952. model.setValue("/root/main/prcp/prcplist/choiordflag", "N");
  4953. }
  4954. */
  4955. model.setValue("/root/main/prcp/prcplist/choiordflag", "N");
  4956. }else {
  4957. model.setValue("/root/main/prcp/prcplist/choiordflag", "Y");
  4958. }
  4959. }
  4960. }
  4961. //선택진료환자이나 비특진의 선택으로 인해 선택진료여부가 'N'으로 변경되었으나 다시 선택진료의를 선택한 경우
  4962. else if( model.getValue("/root/paminfo/list/specordyn") == "Y" && model.getValue("/root/main/prcp/prcplist/choiordflag") == "N" ){
  4963. if( specDrYN == "A" ) {
  4964. model.setValue("/root/main/prcp/prcplist/choiordflag", "Y");
  4965. }
  4966. } else { // 의사가 찍은대로 선택진료의를 변경한다.
  4967. if( specDrYN == "A" ) {
  4968. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "Y");
  4969. } else {
  4970. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "N");
  4971. }
  4972. }
  4973. }
  4974. //선택진료관련 추가 by sonjy 2008-08-27 end
  4975. }
  4976. /**
  4977. * @desc : 수술 예방적 항생제 투여 관련 체크
  4978. * @
  4979. * @param :
  4980. * @return :
  4981. * @author : 손주연 2008-09-26
  4982. * @---------------------------------------------------
  4983. */
  4984. function fChkOpDrug( objFlag, strSrc , sendRow ){
  4985. //A, 예정수술명 => P, 수술코드 처방 => S, 대상이 아닐 경우 => N
  4986. var resnyn = getPatientInfoDetail("resnyn");
  4987. if( resnyn == "N" || isNull( resnyn ) ) return true ;
  4988. var ndOpDrugList = null;
  4989. var ret = null ;
  4990. var drugmastspec = model.getValue( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^";
  4991. var prcpcd = model.getValue( strSrc + "[" + sendRow + "]/prcpcd" ) ;
  4992. var prcpnm = model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ) ;
  4993. var msg = "[" + prcpcd + ":" + prcpnm + "]";
  4994. if( model.getValue( strSrc + "[" + sendRow + "]/prcpkindcd") == "60" && ( resnyn == "S" || resnyn == "A") ) {
  4995. if ( getArrayData ( drugmastspec, 0, 23, "^", "|" ) == "P" && getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "N") {
  4996. ret = messageBox( "수술시 예방적 항생제 투여 시는 퇴원약을 권장하고 있지 않습니다. " + msg + "처방을 ", "Q001") ;
  4997. }
  4998. } else {
  4999. //3세대 수술 예방적 항생제 여부 check
  5000. if( objFlag == "child") {
  5001. ndOpDrugList = opener.model.instances(0).selectNodes ( "/root/initsrch/opdrugcdlist[opdrugcd='" + opener.model.getValue ( strSrc + "[" + sendRow + "]/prcpcd") + "']" );
  5002. } else {
  5003. ndOpDrugList = model.instances(0).selectNodes ( "/root/initsrch/opdrugcdlist[opdrugcd='" + model.getValue ( strSrc + "[" + sendRow + "]/prcpcd") + "']" );
  5004. }
  5005. if( ndOpDrugList != null && ndOpDrugList.length > 0 && ( resnyn == "P" || resnyn == "A")) {
  5006. ret = messageBox( "수술시 예방적 항생제로 3세대 cephalosporin 또는 aminoglycoside를 권장하고 있지 않습니다." + msg + " 처방을 변경 ", "S004") ;
  5007. } else if ( getArrayData ( drugmastspec, 0, 23, "^", "|" ) == "P" && getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "N" && ( resnyn == "S" || resnyn == "A")) {
  5008. ret = messageBox( "수술시 예방적 항생제 투여 시는 장기투여를 권장하고 있지 않습니다." + msg + " 처방을 ", "Q001") ;
  5009. }
  5010. }
  5011. if( ret == 6 ){ //yes=> 항생제 clear
  5012. if( objFlag == "child") {
  5013. opener.model.removeNode ( strSrc + "[" + sendRow + "]" );
  5014. //opener.model.setValue ( strSrc + "[" + sendRow + "]/tempcol6", "D" );
  5015. //opener.javascript.fDeleteRow ( "noselect" );
  5016. } else {
  5017. model.removeNode ( strSrc + "[" + sendRow + "]" );
  5018. //model.setValue ( strSrc + "[" + sendRow + "]/tempcol6", "D" );
  5019. //fDeleteRow ( "noselect" );
  5020. }
  5021. return false ;
  5022. } else if( ret == 7 ) { //no => 항생제 사유 입력
  5023. if( objFlag == "child") {
  5024. opener.javascript.setParameter ("SPMMO016000_resnflag" , "O" );
  5025. } else {
  5026. setParameter ("SPMMO016000_resnflag" , "O" );
  5027. }
  5028. var xpt = window.screenleft + eval(500);
  5029. var ypt = window.screenTop + eval(400);
  5030. var coord = getRelativeCoordinate ( xpt, ypt );
  5031. var mon = coord[0];
  5032. xpt = coord[1];
  5033. ypt = coord[2];
  5034. modal ("SPMMO16000", mon, xpt, ypt, "SPMMO16000", "", "", "sysmenu:hidden; min:visible; max:visible; icon:visible", false); //사유입력창
  5035. //fPrcpModal ( "SPMMO16000", 400, 100 ); //사유입력창
  5036. var resncnts = "";
  5037. if( objFlag == "child") {
  5038. resncnts = opener.javascript.getParameter ("SPMMO016000_resncnts" );
  5039. opener.model.setValue ( strSrc + "[" + sendRow + "]/tempcol19" ,resncnts );
  5040. } else {
  5041. resncnts = getParameter ("SPMMO016000_resncnts" );
  5042. model.setValue ( strSrc + "[" + sendRow + "]/tempcol19" ,resncnts );
  5043. }
  5044. }
  5045. return true ;
  5046. }
  5047. /**
  5048. * @desc : 화면타이틀을 설정한다
  5049. * @ : 형식 : 기관명 + 화면명 + 로그인과 + 로그인한 사용자 + 로그인일시
  5050. * @param :
  5051. * @return :
  5052. * @author : 김영학 2008-11-19
  5053. * @---------------------------------------------------
  5054. */
  5055. function initWndTitle() {
  5056. if (getGlobalVariable("userinfos") != "") {
  5057. var scrnTitle = getUserInfo("systeminstnm") + " " ;
  5058. scrnTitle += document.title + " " ;
  5059. scrnTitle += getUserInfo("dutplcenm") + " ";
  5060. scrnTitle += getUserName() + " ";
  5061. scrnTitle += getTitleLoginDate() + " ";
  5062. document.title = scrnTitle;
  5063. }
  5064. }
  5065. /**
  5066. * @desc : (입원/응급/DSC)임상연구처방을 위한 subcretno를 세팅한다.
  5067. * @ :
  5068. * @param :
  5069. * @return :
  5070. * @author : 한재상 20090227
  5071. * @---------------------------------------------------
  5072. */
  5073. // 전처방 및 약속처방에서 처방을 넘기는 경우에도 임상연구처방을 위한 subcretno를 세팅하기 위해 strSrc, sendRow 추가, CHC, 2009-07-22
  5074. function fSubcretnoSet(prcpinptflag, ctrlnm, strSrc, sendRow) {
  5075. var sSubcretno = "0";
  5076. if (prcpinptflag == "0" ) { // 상세팝업에서...
  5077. var prcpgenrflag = opener.model.getValue("/root/patflag/list/prcpgenrflag");
  5078. var clincstdyflag = ctrlnm.valueMatrix(1, ctrlnm.colRef("clincstdyflag"));
  5079. if(prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E"){
  5080. if(clincstdyflag == "Y"){ //임상연구가 Y로 처리된 경우에만 보조유형세팅
  5081. var pid = opener.model.getValue("/root/paminfo/list/pid");
  5082. var indd = opener.model.getValue("/root/paminfo/list/indd");
  5083. sSubcretno = fGetSubcretno(pid, indd, "clincstdyflag");
  5084. if ( sSubcretno == "0" ) {
  5085. model.setValue("/root/main/prcp/prcplist/subcretno", "0");
  5086. ctrlnm.valueMatrix(1, ctrlnm.colRef("clincstdyflag")) = 'N';
  5087. messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  5088. } else {
  5089. model.setValue("/root/main/prcp/prcplist/subcretno", sSubcretno);
  5090. }
  5091. }else{ //임상연구가 N로 처리된 경우에는 subcretno 0로 처리
  5092. model.setValue("/root/main/prcp/prcplist/subcretno", "0");
  5093. }
  5094. } else { //외래, 건진의 경우는 subcretno 0로 처리
  5095. model.setValue("/root/main/prcp/prcplist/subcretno", "0");
  5096. if ( clincstdyflag == "Y" && opener.model.getValue("/root/paminfo/list/insukind") != "71") {
  5097. ctrlnm.valueMatrix(1, ctrlnm.colRef("clincstdyflag")) = 'N';
  5098. messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  5099. }
  5100. }
  5101. } else if (prcpinptflag == "1") { // 일괄입력에서...
  5102. var prcpgenrflag = opener.model.getValue("/root/patflag/list/prcpgenrflag");
  5103. var clincstdyflag = model.getValue("/root/chkflag/clincstdyflag");
  5104. if (prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E"){
  5105. if(model.getValue("/root/chkflag/clincstdyflag") == "Y"){
  5106. var pid = opener.model.getValue("/root/paminfo/list/pid");
  5107. var indd = opener.model.getValue("/root/paminfo/list/indd");
  5108. sSubcretno = fGetSubcretno(pid, indd, "clincstdyflag");
  5109. if ( sSubcretno == "0" ) {
  5110. model.setValue("/root/main/prcp/prcplist/subcretno", "0");
  5111. messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  5112. return -1
  5113. } else {
  5114. model.setValue("/root/main/prcp/prcplist/subcretno", sSubcretno);
  5115. }
  5116. }else{ //임상연구가 N로 처리된 경우에는 subcretno 0로 처리
  5117. model.setValue("/root/main/prcp/prcplist/subcretno", "0");
  5118. }
  5119. } else { //외래, 건진의 경우는 subcretno 0로 처리
  5120. model.setValue("/root/main/prcp/prcplist/subcretno", "0");
  5121. if ( clincstdyflag == "Y" && opener.model.getValue("/root/paminfo/list/insukind") != "71") {
  5122. messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  5123. return -1;
  5124. }
  5125. }
  5126. } else if (prcpinptflag == "2") { // 전처방, 약속처방에서, 임상시험 부유형 자동세팅, cHc, 2009-07-21
  5127. var prcpgenrflag = opener.model.getValue("/root/patflag/list/prcpgenrflag");
  5128. var clincstdyflag = ctrlnm;
  5129. if(prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E") {
  5130. if(clincstdyflag == "Y"){ //임상연구가 Y로 처리된 경우에만 보조유형세팅
  5131. var pid = opener.model.getValue("/root/paminfo/list/pid");
  5132. var indd = opener.model.getValue("/root/paminfo/list/indd");
  5133. sSubcretno = fGetSubcretno(pid, indd, "clincstdyflag");
  5134. if ( sSubcretno == "0" ) {
  5135. model.setValue(strSrc + "[" + sendRow + "]/subcretno", "0");
  5136. model.setValue(strSrc + "[" + sendRow + "]/clincstdyflag", "N");
  5137. messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  5138. } else {
  5139. model.setValue(strSrc + "[" + sendRow + "]/subcretno", sSubcretno);
  5140. }
  5141. model.removeNodeset("/root/temp");
  5142. } else{ //임상연구가 N로 처리된 경우에는 subcretno 0로 처리
  5143. opener.model.setValue(strSrc + "[" + sendRow + "]/subcretno", "0");
  5144. }
  5145. } else { //외래, 건진의 경우는 subcretno 0로 처리
  5146. model.setValue(strSrc + "[" + sendRow + "]/subcretno", "0");
  5147. if ( clincstdyflag == "Y" && opener.model.getValue("/root/paminfo/list/insukind") != "71") {
  5148. messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  5149. }
  5150. }
  5151. } else if (prcpinptflag == "3") { // kimsj 임상 일괄입력 팝업 체크
  5152. var prcpgenrflag = model.getValue("/root/patflag/list/prcpgenrflag");
  5153. if (prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E"){
  5154. var pid = model.getValue("/root/paminfo/list/pid");
  5155. var indd = model.getValue("/root/paminfo/list/indd");
  5156. sSubcretno = fGetSubcretno(pid, indd, "clincstdyflag");
  5157. if ( sSubcretno == "0" ) {
  5158. messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  5159. return -1;
  5160. }
  5161. } else { //외래, 건진의 경우는 subcretno 0로 처리
  5162. if (model.getValue("/root/paminfo/list/insukind") != "71") {
  5163. messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  5164. return -1;
  5165. }
  5166. }
  5167. return 0;
  5168. }
  5169. }
  5170. /**
  5171. * @desc : 환자의 부유형 원무접수번호(subcretno)를 조회 한다.
  5172. * @ :
  5173. * @param :
  5174. * @return :
  5175. * @author : 엄영만 2012.05.09
  5176. * @---------------------------------------------------
  5177. */
  5178. function fGetSubcretno(sPid, sIndd, sSrchcls) {
  5179. var sSubcretno = "0";
  5180. if(isNull(sPid)) { messageBox ( "환자번호가 없습니다. 보조유형 조회에 실패 하였습니다. 전산실(6598)로 연락 바랍니다.", "E999" ); return sSubcretno;}
  5181. if(isNull(sIndd)) { messageBox ( "입원일자가 없습니다. 보조유형 조회에 실패 하였습니다. 전산실(6598)로 연락 바랍니다.", "E999" ); return sSubcretno;}
  5182. if(isNull(sSrchcls)) { sSrchcls = ""; }
  5183. model.makeValue("/root/temp/send/pid", sPid);
  5184. model.makeValue("/root/temp/send/indd", sIndd);
  5185. model.makeValue("/root/temp/send/srchcls", sSrchcls);
  5186. if(submit("TRMMO15701")){
  5187. var nodelist = model.instances(0).selectNodes("/root/temp/patsupkind/patsupkind");
  5188. if(nodelist != null) {
  5189. if(sSrchcls == "clincstdyflag") { // 임상시험 유형
  5190. sSubcretno = model.getValue("/root/temp/patsupkind/patsupkind/cretno");
  5191. if(isNull(sSubcretno)) {
  5192. sSubcretno = "0";
  5193. }
  5194. } else { // 기왕증 등 임상시험 이외의 경우
  5195. if(nodelist.length > 1){
  5196. modal("SPMMO15700", "", "", "", "SPMMO15700", "/root/temp/patsupkind", "/root/main/patsupkind");
  5197. sSubcretno = getParameter("SPMMO15700_subcretno");
  5198. }
  5199. }
  5200. }
  5201. } else {
  5202. messageBox ( "보조유형 조회에 실패 하였습니다. 전산실(6598)로 연락 바랍니다.", "E999" );
  5203. }
  5204. model.resetInstanceNode( "/root/temp/send" );
  5205. return sSubcretno;
  5206. }
  5207. /**
  5208. * @desc : 문자열 입력하는 곳에 공백이 있으면 공백을 제거한다.
  5209. * @ :
  5210. * @param :
  5211. * @return :
  5212. * @author : 김영학 2009. 03.03
  5213. * @---------------------------------------------------
  5214. */
  5215. function trim(s) {
  5216. s += ''; // 숫자라도 문자열로 변환
  5217. return s.replace(/^\s*|\s*$/g, '');
  5218. }
  5219. /**
  5220. * @desc : 문자열 입력하는 곳에 공백이 있으면 공백을 제거한다.
  5221. * @ :
  5222. * @param :
  5223. * @return :
  5224. * @author : 김영학 2009. 03.03
  5225. * @---------------------------------------------------
  5226. */
  5227. function fPidTrim(pid_path) {
  5228. var pid = model.getValue(pid_path);
  5229. //pid = trim(pid);
  5230. pid += ''; // 숫자라도 문자열로 변환
  5231. pid = pid.replace(/^\s*|\s*$/g, '');
  5232. model.setValue(pid_path, pid);
  5233. }
  5234. /**
  5235. * @desc : 세부과리스트 조회
  5236. * @
  5237. * @param : ref - reference path
  5238. * rsltref - result reference path
  5239. * orddeptcd - 진료과코드
  5240. * @return :
  5241. * @author : 오지훈
  5242. * @---------------------------------------------------
  5243. */
  5244. function mmbfGetSubDeptComboList(ref, rsltref, orddeptcd){
  5245. var mmb_rsltref = "/root/hidden/mmb/subdeptinfo";
  5246. model.removeNode(mmb_rsltref);
  5247. model.makeNode(mmb_rsltref);
  5248. model.removeNode(ref);
  5249. model.makeValue(ref + "/orddeptcd", orddeptcd);
  5250. if(submit("TRMMB04106", "false", ref, mmb_rsltref)==true){
  5251. model.copyNode(rsltref, mmb_rsltref);
  5252. model.removeNode(mmb_rsltref);
  5253. }
  5254. model.refresh();
  5255. }
  5256. /**
  5257. * @desc : 변경요청(8106), 응급간호에서 삭제처리한 환자 선택 시 blocking 메세지 처리 추가
  5258. * 응급진료대상자 및 처방창에서 호출함
  5259. * @param : pid, orddd, cretno, mode(C:false리턴 시 창을닫음, B:처방저장을 blocking)
  5260. * @return : true, false
  5261. * @author : 전지은
  5262. * @---------------------------------------------------
  5263. */
  5264. function fChkInCnclYN(pid, orddd, cretno, pMode){
  5265. var rstlRef = "/root/hidden/erincnclinfo/info/incnclyn";
  5266. if(isNull(pMode)) pMode = "C";
  5267. model.makeValue("/root/send/reqdata/erincncl_pid" , pid);
  5268. model.makeValue("/root/send/reqdata/erincncl_orddd" , orddd);
  5269. model.makeValue("/root/send/reqdata/erincncl_cretno" , cretno);
  5270. model.makeNode("/root/hidden/erincnclinfo");
  5271. if (submit("TRMMO04404")==true) {
  5272. model.removenode("/root/send/reqdata/erincncl_pid");
  5273. model.removenode("/root/send/reqdata/erincncl_orddd");
  5274. model.removenode("/root/send/reqdata/erincncl_cretno");
  5275. //조회 결과, 삭제처리여부 N이면 처방창 호출 가능, 그 외(삭제처리 했을 경우)에는 blocking
  5276. if( model.getValue(rstlRef) == "N" ){
  5277. return true;
  5278. }else{
  5279. messageBox("삭제 처리 환자입니다.\n처방입력은 불가 합니다.\n\n응급 간호에", "I007");
  5280. if( pMode == "C" ){
  5281. var orgPid = getPatientInfo("pid");
  5282. var orgOrddd = getPatientInfoDetail("indd");
  5283. var orgCretno = getPatientInfoDetail("cretno");
  5284. if( pid == orgPid && orddd == orgOrddd && cretno == orgCretno ){
  5285. var mainObj = getMainViewer();
  5286. var curPrcpObj = mainObj.javascript.getOpenWindow("SMMMO00100"); //활성화된 처방Main 화면 object loading
  5287. var curCpObj = mainObj.javascript.getOpenWindow("SMMMP00800"); //활성화된 CP Main 화면 object loading
  5288. // 처방창이 열려있다면 입력된 처방을 삭제하고 처방창 close
  5289. if(curPrcpObj != null){
  5290. curPrcpObj.model.removeNodeSet ("/root/main/prcp/prcplist");
  5291. curPrcpObj.window.javascript.appendChildPrcp ( "/root/reset/prcplist", "/root/main/prcp", "main" );
  5292. }
  5293. if(curCpObj != null){
  5294. curCpObj.model.removeNodeSet ("/root/main/prcp/prcplist");
  5295. curCpObj.window.javascript.appendChildPrcp ( "/root/reset/prcplist", "/root/main/prcp", "main" );
  5296. }
  5297. }
  5298. } else if ( pMode == "B" ){
  5299. // 저장 blocking, 처방저장 버튼의 상태를 disabled 시킴
  5300. btn_tempsave.disabled = true;
  5301. btn_prcpsave.disabled = true;
  5302. btn_tempsave.hint = "삭제 처리 환자입니다. 처방입력은 불가 합니다. 응급 간호에 확인하십시오.";
  5303. btn_prcpsave.hint = "삭제 처리 환자입니다. 처방입력은 불가 합니다. 응급 간호에 확인하십시오.";
  5304. // 입력된 처방을 삭제시킴 (처방이 남아있으면 창 닫을 때 저장여부를 또 물어봄)
  5305. model.removeNodeSet ("/root/main/prcp/prcplist");
  5306. appendChildPrcp ( "/root/reset/prcplist", "/root/main/prcp", "main" );
  5307. model.refresh();
  5308. model.recalculate();
  5309. }
  5310. if(instance1.selectSingleNode(rstlRef) == null) model.makeValue(rstlRef, "Y");
  5311. return false; //삭제처리 환자인 경우 false
  5312. }
  5313. } else{
  5314. model.removenode("/root/send/reqdata/erincncl_pid");
  5315. model.removenode("/root/send/reqdata/erincncl_orddd");
  5316. model.removenode("/root/send/reqdata/erincncl_cretno");
  5317. if( instance1.selectSingleNode(rstlRef) == null ) model.makeValue(rstlRef, "");
  5318. return false; //submit 실패 시 false
  5319. }
  5320. }
  5321. /**
  5322. * @desc : 선택진료신청관리 팝업 open 여부 체크
  5323. * @param : pid(등록번호), cretno(cretno), stnddd(입원일/진료일), orddeptcd(진료과), orddrid(진료의), ordtype(O:외래진료대상자/I:입원결정서)
  5324. * @return :
  5325. * @author : 전지은 (조영상 제공 2009.10.23)
  5326. * @---------------------------------------------------
  5327. */
  5328. function fSpecOrdPopUpYN(pid, cretno, stnddd, orddeptcd, orddrid, ordtype) {
  5329. //20091007 JJE 추가 : 주진료과 의사가 진료지원과의 선택진료의사 선택 여부(hardcdno:134) 및 원무 팝업 호출
  5330. var selspecordyn = "";
  5331. if( isNull(ordtype) ) ordtype = "O"; //입원장에서 호출 시에는 I로 보냄.. (2009.11.03 추가)
  5332. if(ordtype != "O") selspecordyn = opener.model.getValue("/root/initsrch/selspecordyn[trgtcd = 'Y']/trgtcd");
  5333. else selspecordyn = model.getValue("/root/init/selspecordyn/hardcd[hardcd = 'Y']/hardcd");
  5334. if (!isNull(selspecordyn)){
  5335. model.removenode("/root/smpmc06800");
  5336. model.makeValue("/root/smpmc06800/send/pid" , pid);
  5337. model.makeValue("/root/smpmc06800/send/orddd" , stnddd);
  5338. model.makeValue("/root/smpmc06800/send/orddeptcd" , orddeptcd);
  5339. model.makeValue("/root/smpmc06800/send/orddrid" , orddrid);
  5340. model.makeValue("/root/smpmc06800/send/cretno" , cretno);
  5341. model.makeValue("/root/smpmc06800/send/ordtype" , ordtype);
  5342. if( submit("TRPMC06801") ){
  5343. var saim_pid = getNodesetCount("/root/smpmc06800/hsaim/saim/pid");
  5344. if(saim_pid == 0){
  5345. //Parameter: 진료형태▦환자번호▦입원/진료일▦생성번호▦진료과▦주치의▦등록위치구분 : rgstposflag (I:입원,O:외래,M:진료,N:간호)
  5346. setParameter("SMPMC06800_PARM", ordtype + "▦" + pid + "▦" + stnddd + "▦" + cretno + "▦" + orddeptcd + "▦" + orddrid + "▦" + "M");
  5347. modal("SMPMC06800");
  5348. }
  5349. }
  5350. }
  5351. }
  5352. var hardcdResultRef = "/root/hidden/hardcd/resultref";
  5353. function makeHardCdResultRef(){ model.makeNode(hardcdResultRef); }
  5354. function removeHardCdResultRef(){ model.removeNode(hardcdResultRef); }
  5355. /**
  5356. * @desc : 하드코드 조회 배열을 이용하여 한번의 Submit 이용하기
  5357. * @param : 첫번째 파리미터 : 위치할 최하위 인스턴스명 |(구분자) 하드코드 번호
  5358. 두번째 파라미터 : 하드코드 내용이 위치 할 곳
  5359. Ex) fGethardcdArrayList(new Array(
  5360. "dayaftrcptyn|75",
  5361. "patprotector|95",
  5362. "menu|191",
  5363. "selspecordyn|134",
  5364. "ordordershow|135",
  5365. "reqphardcdno|138"
  5366. ),
  5367. new Array(
  5368. "/root/init",
  5369. "/root/init",
  5370. "/root/popupmenu",
  5371. "/root/init",
  5372. "/root/init",
  5373. "/root/init"
  5374. )
  5375. );
  5376. * @return :
  5377. * @author : 김영학
  5378. * @---------------------------------------------------
  5379. */
  5380. /*
  5381. // 하드코드 리스트가 많을 경우 속도가 느려지는 문제 발생하여 submit을 한번 날려서 가지고 오는 방식으로 변경
  5382. function fGethardcdArrayList(hardcdlist, rslt_ref_list){
  5383. makeHardCdResultRef();
  5384. var bCopy = true;
  5385. for (key in hardcdlist){
  5386. addParameter("hardcdno", hardcdlist[key]);
  5387. //////////////
  5388. //KNUH_20110211, 주희경, 진료속도개선위해 미리 조회해 놓은 hardcd 데이터를 복사
  5389. var target_path = rslt_ref_list[key];
  5390. if(target_path==null){
  5391. target_path = rslt_ref_list[key-1];
  5392. }
  5393. target_path = target_path + "/" + hardcdlist[key].split("|")[0];
  5394. var hardcd = hardcdlist[key].split("|")[1];
  5395. fGetHardCDList("N", hardcd, 0, target_path);
  5396. var destNode = model.instances(0).selectSingleNode(rslt_ref_list);
  5397. if ( destNode.childNodes.length == 0 )
  5398. {
  5399. bCopy = false;
  5400. }
  5401. //////////////
  5402. }
  5403. //KNUH_20110211, 주희경, 복사된 데이터가 없으면 submit
  5404. if (!bCopy)
  5405. {
  5406. var success = submit("TRMMB04107", "false", getParameterPath(), hardcdResultRef);
  5407. for(key in hardcdlist){
  5408. var target_path = rslt_ref_list[key];
  5409. if(target_path==null){
  5410. target_path = rslt_ref_list[key-1];
  5411. }
  5412. var refArray = hardcdlist[key].split("|");
  5413. var nodeitem = refArray[0]
  5414. var sourceNode = instance1.selectNodes(hardcdResultRef + "/" + nodeitem);
  5415. for(i=0; i<sourceNode.length; i++){
  5416. model.duplicate(target_path, sourceNode.item(i));
  5417. }
  5418. }
  5419. }
  5420. removeHardCdResultRef();
  5421. clearParameter("hardcdno");
  5422. }
  5423. */
  5424. function fGethardcdArrayList(hardcdlist, rslt_ref_list){
  5425. makeHardCdResultRef();
  5426. for (key in hardcdlist){
  5427. addParameter("hardcdno", hardcdlist[key]);
  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. removeHardCdResultRef();
  5443. clearParameter("hardcdno");
  5444. }
  5445. /**
  5446. * @desc : 조회된 하드코드 리스트를 조회한다.
  5447. * @param : 첫번째 파리미터 : option : Y : 값을 리턴한다. , N : 리스트를 반환한다.
  5448. * 두번째 파라미터 : 하드코드 번호
  5449. * 세번째 파라미터 : 반환할 instance 주소를 준다.
  5450. * var returnVal = fGetHardCDList("Y", 1, 0);
  5451. * model.makeValue("/root/hidden/returnValue", returnVal) ;
  5452. *
  5453. * fGetHardCDList("N", 6, 0 , "/root/hidden/destnode");
  5454. * @return : option = "Y" 일 경우
  5455. * return hardcd+ "|" + hardcdnm + "|" + cdseqno;
  5456. = "N" 일 경우 노드 복사
  5457. hardcdno = 하드코드 번호
  5458. rtnValue 0 - 리턴값 반환하지 않음 (하드코드 값이 여러개일 때 선택
  5459. 1 - hardcdno를 리턴
  5460. 2 - hardcodenm 을 리턴
  5461. 3 - hardcd 를 리턴
  5462. 4 - hardcdnm를 리턴
  5463. 5 - cdseqno를 리턴
  5464. 9 - hardcd+ "|" + hardcdnm + "|" + cdseqno 형태로 리턴
  5465. rslt_ref_list 목적노드
  5466. * @author : 김영학
  5467. * @---------------------------------------------------
  5468. */
  5469. function fGetHardCDList(option, hardcdno, rtnValue , rslt_ref_list) {
  5470. model.makeNode(rslt_ref_list);
  5471. var destNode = model.instances(0).selectSingleNode(rslt_ref_list);
  5472. var sysMessageobj = getViewer("sysMessage");
  5473. if (sysMessageobj != null) {
  5474. if (option == "Y") {
  5475. try {
  5476. var hardcdno = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='" + hardcdno + "']/hardcdno").text;
  5477. var hardcodenm = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='" + hardcdno + "']/hardcodenm").text;
  5478. var hardcd = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='" + hardcdno + "']/hardcd").text;
  5479. var hardcdnm = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='" + hardcdno + "']/hardcdnm").text;
  5480. var cdseqno = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='" + hardcdno + "']/cdseqno").text;
  5481. } catch(err) {
  5482. model.makeValue("/root/temp/hardcd", hardcdno);
  5483. mmbfGetHardCodeInfo("/root/send/reqdata", "/root/temp/hardcd", hardcdno); //
  5484. var hardcd = model.getValue("/root/temp/hardcd/hardcd");
  5485. var hardcdnm = model.getValue("/root/temp/hardcd/hardcdnm");
  5486. var cdseqno = model.getValue("/root/temp/hardcd/cdseqno");
  5487. }
  5488. if (rtnValue == 1) {
  5489. return hardcdno;
  5490. } else if (rtnValue == 1) {
  5491. return hardcodenm;
  5492. } else if (rtnValue == 2) {
  5493. return hardcdno;
  5494. } else if (rtnValue == 3) {
  5495. return hardcd;
  5496. } else if (rtnValue == 4) {
  5497. return hardcdnm;
  5498. } else if (rtnValue == 5) {
  5499. return cdseqno;
  5500. } else if (rtnValue == 9) {
  5501. return hardcd+ "|" + hardcdnm + "|" + cdseqno;
  5502. }
  5503. } else {
  5504. /*
  5505. //속도 문제로 인덱스를 뒤져서 해당 인덱스에서부터 시작하도록 수정 : 20110428 김영학
  5506. var hardcdPath = sysMessageobj.window.instance1.selectNodes("/root/properties/orderbasicinfo/hardcdlist/hardcd");
  5507. var destListLen = destNode.childNodes.length;
  5508. var hardcdIdxPath = sysMessageobj.window.instance1.selectNodes("/root/properties/orderbasicinfo/hardcdidxlist");
  5509. for (idxno = 1; idxno <= hardcdIdxPath.length; idxno++ ) {
  5510. if (sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdidxlist[" + idxno + "]/hardcdno").text == hardcdno) {
  5511. strtrow = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdidxlist[" + idxno + "]/strtrow").text
  5512. break;
  5513. }
  5514. }
  5515. */
  5516. /*
  5517. if (destListLen < 1 ) { // 한번이라도 복사된 내용이 있으면 다시 안하도록 수정 2011. 01.20 김영학
  5518. model.copyNode( rslt_ref_list+ "/hardcd", "/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='"+hardcdno+"']");
  5519. for (i=strtrow; i<= hardcdPath.length; i++){
  5520. if (sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[" + i + "]/hardcdno").text == hardcdno) {
  5521. destNode.appendChild(hardcdPath.item(i-1).cloneNode(true));
  5522. } else if (parseInt(sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[" + i + "]/hardcdno").text) > parseInt(hardcdno)) {
  5523. break;
  5524. }
  5525. }
  5526. }
  5527. */
  5528. var destListLen = destNode.childNodes.length;
  5529. if (destListLen < 1 ) { // 한번이라도 복사된 내용이 있으면 다시 안하도록 수정 2011. 01.20 김영학
  5530. var destNode = instance1.selectSingleNode(rslt_ref_list);
  5531. var nodes = sysMessageobj.window.instance1.selectNodes("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='"+hardcdno+"']");
  5532. for(i=1; i<= nodes.length; i++) {
  5533. destNode.appendChild(nodes.item(i-1).cloneNode(true));
  5534. }
  5535. }
  5536. }
  5537. }
  5538. }
  5539. /**
  5540. * @desc : 하드코드 리스트에 해당 파라미터의 코드 값이 존재 하는지 여부를 체크 한다.
  5541. * @param : sHardCdNo : 하드코드 번호
  5542. * sCheckCode : 체크 할 하드코드
  5543. * fContainsHardCD("339", "LIR112");
  5544. * @return : true : 값이 존재 함.
  5545. false : 값이 존재하지 않음.
  5546. * @author : 엄영만 2012.11.26
  5547. * @---------------------------------------------------
  5548. */
  5549. function fContainsHardCD(sHardCdNo, sCheckCode) {
  5550. var bRtn = false; // 반환값
  5551. var sChekPath = "/root/temp/mmo001/fcontainshardcd"; // 체크할 임시 노드 경로
  5552. try {
  5553. model.removeNodeset(sChekPath);
  5554. fGetHardCDList("N", sHardCdNo, 0, sChekPath);
  5555. if(!isNull(model.getValue(sChekPath + "/hardcd[hardcd='"+sCheckCode+"']/hardcd"))) {
  5556. bRtn = true;
  5557. } else {
  5558. bRtn = false;
  5559. }
  5560. } catch(err) {
  5561. messageBox ( "fContainsHardCD() 실행 중 오류가 발생 하였습니다. sHardCdNo:" + sHardCdNo + " sCheckCode:"+ sCheckCode, "E" );
  5562. } finally {
  5563. model.removeNodeset(sChekPath);
  5564. }
  5565. return bRtn;
  5566. }
  5567. /**
  5568. * @desc : 의사 직종직위 옵션을 받아서 true, false 값을 리턴한다.
  5569. * @param : 첫번째 파리미터 : option 1: 의사 여부, 2: 주치의 여부 3: 담당의 여부 를 체크한다.
  5570. * 두번째 파라미터 : chkOption : A : 직종으로 체크한다. , B : 직위로 체크한다.
  5571. * 값이 없으면 하드코드번호 255번의 기본값으로 셋팅한다., 하드코드도 없으면 기본값 "B"로 셋팅
  5572. * 세번째 파라미터 : userinfo : 비교할 직종 또는 직위코드(getUserInfo(jobkindcd), getUserInfo("jobposcd") ;
  5573. 값이 없으면 A일 경우는 getUserInfo("jobkindcd") , B일 경우는 getUserInfo("jobposcd")로 셋팅함.
  5574. * model.makeValue("/root/hidden/returnValue", returnVal) ;
  5575. * fGetHardCDList("1");
  5576. * fGetHardCDList("2", "A", getUserInfo("jobkindcd"));
  5577. * @return : true/false;
  5578. * @author : 김영학
  5579. * @---------------------------------------------------
  5580. */
  5581. function mmbfChkDrKindPosYN(option, chkOption, userinfo) {
  5582. if (chkOption == null || chkOption == "" || chkOption == "undefined") {
  5583. chkOption = fGetHardCDList("Y", "255", "3")
  5584. if (chkOption == "" ) chkOption = "B"
  5585. }
  5586. if (option == "1") { // 의사여부를 리턴한다.
  5587. fGetHardCDList("N", 69, 0, "/root/chktmpdrlist");
  5588. if (userinfo == null || userinfo == "" || userinfo == "undefined") userinfo = getUserInfo("jobkindcd") ;
  5589. var jobkindcd = model.getValue("/root/chktmpdrlist/hardcd[hardcd='" + userinfo + "']/hardcd");
  5590. if ( jobkindcd != "") return true;
  5591. else return false;
  5592. } else if (option =="2") { // 주치의 여부를 리턴한다.
  5593. if (chkOption == "A") { // 직종에서 비교한다. (jobkindcd)
  5594. fGetHardCDList("N", 65, 0, "/root/chktmpdrlist") ;
  5595. if (userinfo == null || userinfo == "" || userinfo == "undefined") userinfo = getUserInfo("jobkindcd") ;
  5596. var jobkindcd = model.getValue("/root/chktmpdrlist/hardcd[hardcd='" + userinfo + "']/hardcd");
  5597. if ( jobkindcd != "") return true;
  5598. else return false;
  5599. } else if (chkOption == "B") { // 직위를 비교한다. (jobposcd)
  5600. fGetHardCDList("N", 67, 0, "/root/chktmpdrlist") ;
  5601. if (userinfo == null || userinfo == "" || userinfo == "undefined") userinfo = getUserInfo("jobposcd") ;
  5602. var jobkindcd = model.getValue("/root/chktmpdrlist/hardcd[hardcd='" + userinfo + "']/hardcd");
  5603. if ( jobkindcd != "") return true;
  5604. else return false;
  5605. }
  5606. } else if (option == "3") {
  5607. if (chkOption == "A") { // 직종에서 비교한다. (jobkindcd)
  5608. fGetHardCDList("N", 65, 0, "/root/chktmpdrlist") ;
  5609. if (userinfo == null || userinfo == "" || userinfo == "undefined") userinfo = getUserInfo("jobkindcd") ;
  5610. var jobkindcd = model.getValue("/root/chktmpdrlist/hardcd[hardcd='" + userinfo + "']/hardcd");
  5611. if ( jobkindcd != "") return true;
  5612. else return false;
  5613. } else if (chkOption == "B") { // 직위를 비교한다. (jobposcd)
  5614. fGetHardCDList("N", 67, 0, "/root/chktmpdrlist") ;
  5615. if (userinfo == null || userinfo == "" || userinfo == "undefined") userinfo = getUserInfo("jobposcd") ;
  5616. var jobkindcd = model.getValue("/root/chktmpdrlist/hardcd[hardcd='" + userinfo + "']/hardcd");
  5617. if ( jobkindcd != "") return "Y";
  5618. else return "N";
  5619. }
  5620. }
  5621. }
  5622. /**
  5623. * @desc : 사용자 환경설정의 값을 조회한다.
  5624. * @param : qestcd : 질문값
  5625. * @return : Answcnt ( 답안값)
  5626. */
  5627. function mmbfGetUserEnvQuestValue(qestcd) {
  5628. var sysMessageobj = getViewer("sysMessage");
  5629. if (sysMessageobj != null) {
  5630. var anstcnt = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/envinfo[qestcd='" + qestcd + "']/answcnt").text;
  5631. return anstcnt;
  5632. } else {
  5633. var mmb_rsltref = "/root/userenv/answlist";
  5634. var ref = "/root/userenv/cond"
  5635. var answcnt = "";
  5636. model.removeNode(mmb_rsltref);
  5637. model.makeNode(mmb_rsltref);
  5638. model.makeValue(ref + "/interqestcd", qestcd);
  5639. if(submit("TRMMB01104", "false", ref, mmb_rsltref)==true){
  5640. answcnt = model.getValue("/root/userenv/interface/answcnt")
  5641. model.removeNode(mmb_rsltref);
  5642. return answcnt;
  5643. }
  5644. }
  5645. }
  5646. function fChoiOrdChk() {
  5647. if ( model.getValue ( "/root/main/prcp/prcplist/tempcol24" ) != "Y" ) {
  5648. messageBox ( "선택진료가 불가한 처방입니다.", "E" );
  5649. return false;
  5650. } else {
  5651. return true;
  5652. }
  5653. }
  5654. function fChgChoiDr( mode, currow, sXpt, sYpt ) {
  5655. var xpt = window.screenLeft + 400;
  5656. var ypt = window.screenTop + 60;
  5657. var coord = getRelativeCoordinate(xpt, ypt);
  5658. var mon = coord[0];
  5659. if(!isNull(sXpt) && !isNull(sYpt)) {
  5660. xpt = sXpt;
  5661. ypt = sYpt;
  5662. } else {
  5663. xpt = coord[1];
  5664. ypt = coord[2];
  5665. }
  5666. var ordtype = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  5667. var prcpcd = "";
  5668. var prcpdd = "";
  5669. var prcpnm = "";
  5670. var prcpexecdeptcd = "";
  5671. var prcpclscd = "";
  5672. var drugmthdspccd = "";
  5673. var useyn = "";
  5674. var userid = "";
  5675. //default 선택진료과 설정
  5676. if ( mode == "pop" ) {
  5677. ordtype = model.getValue ( "/root/main/prcp/prcplist/prcpgenrflag" );
  5678. prcpcd = model.getValue ( "/root/main/prcp/prcplist/prcpcd" );
  5679. prcpnm = model.getValue ( "/root/main/prcp/prcplist/prcpnm" );
  5680. prcpexecdeptcd = model.getValue ( "/root/main/prcp/prcplist/prcpexecdeptcd" );
  5681. prcpclscd = model.getValue ( "/root/main/prcp/prcplist/prcpclscd" );
  5682. drugmthdspccd = model.getValue ( "/root/main/prcp/prcplist/drugmthdspccd" );
  5683. } else if ( mode == "auto" ) {
  5684. //ordtype = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/prcpgenrflag" );
  5685. ordtype = model.getValue ( "/root/patflag/list/prcpgenrflag" ); //입력구분
  5686. prcpcd = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/prcpcd" );
  5687. prcpnm = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/prcpnm" );
  5688. prcpexecdeptcd = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/prcpexecdeptcd" );
  5689. prcpclscd = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/prcpclscd" );
  5690. drugmthdspccd = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/drugmthdspccd" );
  5691. } else {
  5692. ordtype = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row + "]/prcpgenrflag" );
  5693. prcpcd = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row + "]/prcpcd" );
  5694. prcpnm = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row + "]/prcpnm" );
  5695. prcpexecdeptcd = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row + "]/prcpexecdeptcd" );
  5696. prcpclscd = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row + "]/prcpclscd" );
  5697. drugmthdspccd = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row + "]/drugmthdspccd" );
  5698. }
  5699. //defalut 선택진료과 설정. 예외
  5700. if ( prcpexecdeptcd == "2010500000" || prcpexecdeptcd == "2010302030" ) { //내시경검사실, 내분비대사내과 일경우 소화기내과
  5701. prcpexecdeptcd = "2010300000";
  5702. } else if ( prcpexecdeptcd == "2220204000" ) { //물리치료실일 경우 재활의학과
  5703. prcpexecdeptcd = "2220000000";
  5704. } else if ( prcpexecdeptcd == "2010402030" || prcpexecdeptcd == "2010402090" ) { //심장혈관촬영실, 심전도검사실 경우 순환기내과
  5705. prcpexecdeptcd = "2010400000";
  5706. } else if ( prcpexecdeptcd == "2200238000" ) { //채혈실일 경우 진단검사의학과
  5707. prcpexecdeptcd = "2200000000";
  5708. }
  5709. // 신규로직 테스트 적용 여부 추후 삭제 필요.
  5710. var sChkNewLogicYn = fGetHardCDList("Y", 400, 3); // 400 처방 관련 신규로직 적용여부
  5711. var orddrid = "";
  5712. if ( mode == "pop" ) {
  5713. if ( ordtype == "O" ) {
  5714. orddrid = opener.model.getValue ( "/root/paminfo/list/orddrid" );
  5715. } else {
  5716. orddrid = opener.model.getValue ( "/root/paminfo/list/medispclid" );
  5717. }
  5718. } else {
  5719. if ( ordtype == "O" ) {
  5720. orddrid = model.getValue ( "/root/paminfo/list/orddrid" );
  5721. } else {
  5722. orddrid = model.getValue ( "/root/paminfo/list/medispclid" );
  5723. }
  5724. }
  5725. fGetHardCDList("N", 402, 0 , "/root/hidden/testcheckspcdrlist"); // 402 신규로직 적용대상 2011.11.19 엄영만 (추후 관련 로직 삭제해야함.)
  5726. // End of 신규로직 테스트 적용 여부 추후 삭제 필요. orddrid 가져 오는 부분도 필요 없음.
  5727. if ( sChkNewLogicYn == "Y"
  5728. || (sChkNewLogicYn == "N" && !isNull(model.getValue("/root/hidden/testcheckspcdrlist/hardcd[hardcd='"+orddrid+"']/hardcd" ))) ) { // 신규로직 적용여부
  5729. if ( mode == "pop" ) {
  5730. prcpdd = opener.model.getValue ( "/root/init/prcpdd" );
  5731. } else {
  5732. prcpdd = model.getValue ( "/root/init/prcpdd" );
  5733. }
  5734. clearParameter ( "SPMMB08600_useyn" );
  5735. clearParameter ( "SPMMB08600_userid" );
  5736. clearParameter ( "SPMMB08600_prcpdd" );
  5737. clearParameter ( "SPMMB08600_prcpcd" );
  5738. clearParameter ( "SPMMB08600_prcpnm" );
  5739. clearParameter ( "SPMMB08600_orddeptcd" );
  5740. clearParameter ( "SPMMB08600_prcpclscd" );
  5741. clearParameter ( "SPMMB08600_drugmthdspccd" );
  5742. clearParameter ( "SPMMB08600_userinfo" );
  5743. setParameter("SPMMB08600_prcpdd", prcpdd);
  5744. setParameter("SPMMB08600_prcpcd", prcpcd);
  5745. setParameter("SPMMB08600_prcpnm", prcpnm);
  5746. setParameter("SPMMB08600_orddeptcd", prcpexecdeptcd);
  5747. setParameter("SPMMB08600_prcpclscd", prcpclscd);
  5748. setParameter("SPMMB08600_drugmthdspccd",drugmthdspccd);
  5749. setParameter("SPMMB0800_ioflag", ordtype);
  5750. // "sysmenu:hidden;" 닫기버튼 삭제
  5751. modal("SPMMB08600", mon, xpt, ypt, null, null, null, "sysmenu:hidden;", false);
  5752. useyn = getParameter("SPMMB08600_useyn");
  5753. userid = getParameter("SPMMB08600_userid");
  5754. } else {
  5755. clearParameter ( "SPMMB08300_flag");
  5756. clearParameter ( "SPMMB08300_useyn" );
  5757. clearParameter ( "SPMMB08300_userid" );
  5758. clearParameter ( "SPMMB08300_orddeptcd" );
  5759. clearParameter ( "SPMMB08300_userinfo" );
  5760. setParameter("SPMMB08300_orddeptcd", prcpexecdeptcd);
  5761. setParameter("SPMMB08300_ioflag", ordtype);
  5762. modal("SPMMB08300", mon, xpt, ypt, null, null, null, "sysmenu:hidden;", false);
  5763. useyn = getParameter("SPMMB08300_useyn");
  5764. userid = getParameter("SPMMB08300_userid");
  5765. }
  5766. if(useyn == "Y"){
  5767. if ( mode == "pop" ) {
  5768. if ( model.getValue ( "/root/main/prcp/prcplist/tempcol24" ) == "Y" ) {
  5769. model.setValue ( "/root/main/prcp/prcplist/choiordflag", "Y" );
  5770. model.setValue ( "/root/main/prcp/prcplist/specdrid", userid );
  5771. } else {
  5772. model.setValue ( "/root/main/prcp/prcplist/choiordflag", "N" );
  5773. model.setValue ( "/root/main/prcp/prcplist/specdrid", "-");
  5774. }
  5775. } else if ( mode == "auto" ) {
  5776. if ( model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/tempcol24" ) == "Y" ) {
  5777. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/choiordflag", "Y" );
  5778. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/specdrid", userid );
  5779. } else {
  5780. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/choiordflag", "N" );
  5781. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/specdrid", "-");
  5782. }
  5783. } else {
  5784. var selectedRows = grd_prcplist.selectedRows;
  5785. for (var i=0; i< selectedRows; i++) {
  5786. if ( model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/tempcol24" ) == "Y" ) {
  5787. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/choiordflag", "Y" );
  5788. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/specdrid", userid );
  5789. } else {
  5790. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/choiordflag", "N" );
  5791. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/specdrid", "-");
  5792. }
  5793. }
  5794. }
  5795. } else {
  5796. if ( mode == "pop" ) {
  5797. model.setValue ( "/root/main/prcp/prcplist/choiordflag", "N" );
  5798. model.setValue ( "/root/main/prcp/prcplist/specdrid", "-");
  5799. } else if ( mode == "auto" ) {
  5800. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/choiordflag", "N" );
  5801. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/specdrid", "-");
  5802. } else {
  5803. var selectedRows = grd_prcplist.selectedRows;
  5804. for (var i=0; i< selectedRows; i++) {
  5805. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/choiordflag", "N" );
  5806. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/specdrid", "-");
  5807. }
  5808. }
  5809. }
  5810. var sysMessageobj = getViewer("sysMessage");
  5811. // 선택진료의사가 아닐 경우 는 기본값으로 셋팅한다.
  5812. if (mode =="pop") {
  5813. var chkChoiSpcldrid = model.getValue ( "/root/main/prcp/prcplist/specdrid" );
  5814. var choiSpclDrid = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/usercombo[userid ='" + chkChoiSpcldrid + "']/userid");
  5815. if ( choiSpclDrid == null) {
  5816. model.setValue ( "/root/main/prcp/prcplist/choiordflag", "N" );
  5817. model.setValue ( "/root/main/prcp/prcplist/specdrid", "-");
  5818. }
  5819. } else if (mode == "auto") {
  5820. var chkChoiSpcldrid = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/specdrid" );
  5821. var choiSpclDrid = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/usercombo[userid ='" + chkChoiSpcldrid + "']/userid");
  5822. if ( choiSpclDrid == null) {
  5823. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/choiordflag", "N" );
  5824. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/specdrid", "-");
  5825. }
  5826. } else {
  5827. var selectedRows = grd_prcplist.selectedRows;
  5828. for (var i=0; i< selectedRows; i++) {
  5829. var chkChoiSpcldrid = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/specdrid");
  5830. var choiSpclDrid = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/usercombo[userid ='" + chkChoiSpcldrid + "']/userid");
  5831. if ( choiSpclDrid == null) {
  5832. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/choiordflag", "N" );
  5833. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/specdrid", "-");
  5834. }
  5835. }
  5836. }
  5837. model.refresh();
  5838. }
  5839. /**
  5840. * @desc : 처방이 발행될때 set로 같이 나가야할 처방 처리
  5841. * @param : objFlag - child or else
  5842. : strSrc - source node
  5843. : strDest - 목적지 node; child일때는 opener.root.main.prcp, 아니면 "/root/main/prcp" 이다
  5844. : sendRow - 검색된 내용중 메인으로 보내고자 하는 row
  5845. : srchRow - 메인에 들어간 자리. 검색로우(srchRow) 바로 전이다.
  5846. : prcpInptFlag - - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  5847. : groupSrc - 옵션: group처방 검색할 경우 node
  5848. : direcSrc - 옵션: group 지시처방 검색할 경우 node
  5849. : prcpInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  5850. * @return : srchRow 에러시 0
  5851. * @authur : 마정민 2008. 6. 25
  5852. * @---------------------------------------------------
  5853. */
  5854. function fAddSetPrcpChkKNUH ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag ) {
  5855. var prcpcd = model.getValue( strSrc + "[" + i + "]/prcpcd" );
  5856. var addprcpcd = "";
  5857. var addprcpcnt = 0;
  5858. // if (prcpcd == "LCT101") addprcpcd = "DDIS50";
  5859. // else if (prcpcd == "LCT001") addprcpcd = "DDIS75";
  5860. // else if (prcpcd == "LCT002") addprcpcd = "DDIS100";
  5861. // else if (prcpcd == "NHC297EG") addprcpcd = "FE654303G"; //by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청
  5862. var iFind = -1;
  5863. var setprcpchk = "";
  5864. var cnts = getNodesetCount("/root/init/autosetprcplist/hardcd");
  5865. if ( objFlag == "child" ) {
  5866. srchPrcpcd = opener.model.getValue ( "/root/init/autosetprcplist/hardcd[hardcd = '" + prcpcd + "']/hardcd" );
  5867. setprcpchk = opener.model.getValue ( "/root/init/autosetprcplist/hardcd[hardcd = '" + prcpcd + "']/hardcdnm" );
  5868. } else {
  5869. srchPrcpcd = model.getValue ( "/root/init/autosetprcplist/hardcd[hardcd = '" + prcpcd + "']/hardcd" );
  5870. setprcpchk = model.getValue ( "/root/init/autosetprcplist/hardcd[hardcd = '" + prcpcd + "']/hardcdnm" );
  5871. }
  5872. // 기존 search함수에서 무결성이 어긋나 개별 체크 변경 - 20081008 by MoonSH
  5873. var precureprcpflag = "";
  5874. var calcflag = "";
  5875. var drprcpetc8 = "";
  5876. if( !isNull(srchPrcpcd)) {
  5877. var secStage = setprcpchk.split("|");
  5878. iFind = 1 ;
  5879. calcflag = secStage[0];
  5880. addprcpcd = secStage[1];
  5881. drprcpetc8 = secStage[2];
  5882. }
  5883. if ( parseInt(iFind) >= 0) {
  5884. var prcpdd = "";
  5885. var insukind = "";
  5886. if ( objFlag == "child" ) {
  5887. prcpdd = opener.model.getValue ( "/root/init/prcpdd" );
  5888. insukind = opener.model.getValue ( "/root/paminfo/list/insukind");
  5889. } else {
  5890. prcpdd = model.getValue ( "/root/init/prcpdd" );
  5891. insukind = model.getValue ( "/root/paminfo/list/insukind");
  5892. }
  5893. //멀티 search 가능함
  5894. model.makeValue("/root/send/addsetprcp[1]/prcpcd",addprcpcd);
  5895. model.makeValue("/root/send/addsetprcp[1]/prcpdd",prcpdd);
  5896. model.makeValue("/root/send/addsetprcp[1]/insukind",insukind);
  5897. model.makeValue("/root/send/addsetprcp[1]/srchkind","B2");
  5898. if ( submit("TRMMO00207",false)) {
  5899. /*
  5900. **by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청 수정 시작.
  5901. ** 처방코드 : NHC297EMG, 자동발생코드 : FE654303G
  5902. ** 자동발생코드는 돈계산에서 제외되어야 함.
  5903. ** 자동발생코드 처방전달사항 자동 생성=>[HEART-SPECT 핵의학검사용]
  5904. */
  5905. //20090420 마정민 수정 HARDCODE 테이블로 분리
  5906. var nd = model.instance1.selectNodes("/root/addsetprcp/prcplist");
  5907. if( nd != null && nd.length > 0) {
  5908. //model.setValue("/root/addsetprcp/prcplist[1]/prcpdelivefact", prcpdelivefact );
  5909. model.setValue("/root/addsetprcp/prcplist[1]/drprcpetc8", drprcpetc8);
  5910. //by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청 수정 끝
  5911. //serPrcpSrchRow = addPrcpDetl ( objFlag , "root/addsetprcp/prcplist" , strDest , 1 , srchRow, prcpInptFlag );
  5912. //by sonjy 20091031 자동발생 처방 입력 구분 추가
  5913. //SET 처방일 때 약품의 기본 일수는 수가계산법이 어떤 것이든 기본을 1일로 되도록 요청번호:8875
  5914. serPrcpSrchRow = addPrcpDetl ( objFlag , "root/addsetprcp/prcplist" , strDest , 1 , srchRow, "34" );
  5915. if (serPrcpSrchRow != 0 ) srchRow++;
  5916. }
  5917. }
  5918. model.removeNodeset("/root/send/addsetprcp");
  5919. }
  5920. return srchRow;
  5921. }
  5922. /**
  5923. * @desc : 처방 코드 정보를 조회 하는 함수 addPrcpSetValue()에서 값을 셋팅 할때 처방 코드별 참조자료를 셋팅 한다.
  5924. * @param : sPrcpCodes - 처방 편집 화면으로 복사되는 처방 코드
  5925. * @return : 처방화면(SMMO00100) /root/prcpcodeinfo 셋팅
  5926. * @authur : 엄영만 2011. 10. 13
  5927. * @---------------------------------------------------
  5928. */
  5929. function fGetPrcpCodeInfo(sPrcpCodes) {
  5930. var pamInfoNode = "/root/paminfo/list";
  5931. var prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" ); //입력구분
  5932. var prcpdd = model.getValue ( "/root/init/prcpdd" ); //처방일
  5933. var pid = model.getValue ( pamInfoNode + "/pid" );
  5934. var ioflag = model.getValue ( pamInfoNode + "/ioflag" );
  5935. var cretno = model.getValue ( pamInfoNode + "/cretno" );
  5936. var orddeptcd = model.getValue ( pamInfoNode + "/orddeptcd" );
  5937. var orddd = "";
  5938. var orddrid = "";
  5939. //건진일 경우 check추가.
  5940. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ) {
  5941. orddd = model.getValue ( pamInfoNode + "/orddd" );
  5942. orddrid = model.getValue ( pamInfoNode + "/orddrid" );
  5943. } else {
  5944. orddd = model.getValue ( pamInfoNode + "/indd" );
  5945. orddrid = model.getValue ( pamInfoNode + "/medispclid" );
  5946. }
  5947. model.resetInstanceNode ( "/root/send" );
  5948. model.resetInstanceNode ( "/root/prcpcodeinfo" );
  5949. if(!isNull(sPrcpCodes)){
  5950. model.setValue( "/root/send/cond1", sPrcpCodes ); //처방코드
  5951. model.setValue( "/root/send/cond2", prcpdd ); //처방일
  5952. model.setValue( "/root/send/cond3", ioflag ); //외래입원구분
  5953. model.setValue( "/root/send/cond4", pid ); //등록번호
  5954. model.setValue( "/root/send/cond5", orddd ); //진료일자
  5955. model.setValue( "/root/send/cond6", cretno ); //생성번호
  5956. model.setValue( "/root/send/cond7", orddeptcd ); //진료과
  5957. model.setValue( "/root/send/cond8", orddrid ); //진료의
  5958. if(!submit("TRMMO00143",false)){
  5959. // 테스트 메세지 팝업 여부 추후 삭제 해야 함. 엄영만 2011.11.19
  5960. var sChkMsgPopYn = fGetHardCDList("Y", 403, 3); // 403 테스트메세지 사용여부
  5961. if (sChkMsgPopYn == "Y"){
  5962. alert("처방정보 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  5963. }
  5964. }
  5965. }
  5966. }
  5967. /**
  5968. * @desc : 선택진료 여부 선택진료의사를
  5969. * addPrcpSetValue()에서 값을 셋팅 선택진료처방 및 선택진료의사를 셋팅 한다..
  5970. * @param : strSrc => setting할 source node
  5971. : sendRow => setting할 row
  5972. : prcpInptFlag => 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  5973. * @return : 선택진료처방여부, 선택진료의사 셋팅
  5974. * @authur : 엄영만 2011. 11. 08
  5975. * @---------------------------------------------------
  5976. */
  5977. function fSetPrcpSpecValue( strSrc, sendRow, prcpInptFlag ) {
  5978. //2011.01.12 MJM수정. 선택진료 가능처방은 일괄위임일 경우 무조건 선택진료처리.
  5979. //2011.10.01 고시관련 수정 일괄위임의 경우 선택진료 처리.
  5980. //선택진료여부처리는 결정(검사,영상진단) 무조건 선택진료가능항목으로 처리
  5981. var pamInfoNode = "/root/paminfo/list";
  5982. var prcpCodeNode = "/root/prcpcodeinfo/prcpcodelist";
  5983. var sChoiordFlag = "N";
  5984. var sOrdDrId = "";
  5985. var sPrcpClsCd = model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ); // 처방종류
  5986. var sPrcpCd = model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" ); // 처방코드
  5987. var sDrugMthdSpcCd = model.getValue ( strSrc + "[" + sendRow + "]/drugmthdspccd" ); // 처방 검체코드(병리 처방은 검체코드가 있을때만 선택진료 설정함.)
  5988. var sPrcpGenrFlag = model.getValue ( "/root/patflag/list/prcpgenrflag" ); // 처방입력구분(외래, 입원, 응급..)
  5989. var sSpecOrdType = model.getValue ( pamInfoNode + "/specordtype" ); // 선택진료 타입 (B:일괄 위임)
  5990. var sSpcspifYn = ""; // 부분 선택진료 위임 여부
  5991. var sSpecCls = ""; // 선택진료처방 분류
  5992. var sTodaySpcDrId = ""; // 오늘 선택진료의
  5993. var sAllSpcDrId = ""; // 가능 선택진료의
  5994. var sPreSpecDrId = ""; // 기존 선택진료의
  5995. var sPrcpSpecDrId = "";
  5996. var sChkSpecDrId = "";
  5997. sSpcspifYn = model.getValue ( prcpCodeNode + "[prcpcd='" + sPrcpCd + "']/spcspifyn" );
  5998. if(isNull(sSpcspifYn)) { // 처방 코드 정보가 없으면 -- App 처방 복사 로직
  5999. sSpcspifYn = model.getValue ( strSrc + "[" + sendRow + "]/spcspifyn" ); // 부분 선택진료 위임 여부
  6000. sSpecCls = model.getValue ( strSrc + "[" + sendRow + "]/speccls" ); // 선택진료처방 분류
  6001. sTodaySpcDrId = model.getValue ( strSrc + "[" + sendRow + "]/todayspcdrid" ); // 오늘 선택진료의
  6002. sAllSpcDrId = model.getValue ( strSrc + "[" + sendRow + "]/allspcdrid" ); // 가능 선택진료의
  6003. } else { // 처방 코드 정보가 있으면 -- Web 처방 복사 로직
  6004. sSpcspifYn = model.getValue ( prcpCodeNode + "[prcpcd='" + sPrcpCd + "']/spcspifyn" ); // 부분 선택진료 위임 여부
  6005. sSpecCls = model.getValue ( prcpCodeNode + "[prcpcd='" + sPrcpCd + "']/speccls" ); // 선택진료처방 분류
  6006. sTodaySpcDrId = model.getValue ( prcpCodeNode + "[prcpcd='" + sPrcpCd + "']/todayspcdrid" ); // 오늘 선택진료의
  6007. sAllSpcDrId = model.getValue ( prcpCodeNode + "[prcpcd='" + sPrcpCd + "']/allspcdrid" ); // 가능 선택진료의
  6008. }
  6009. if (model.getValue ( strSrc + "[" + sendRow + "]/tempcol24" ) == "Y" ) { //선택진료가능처방
  6010. if (sPrcpGenrFlag == "E") { // 응급실에서 발행 하는 처방일경우 선택진료 자동 셋팅 하지 않도록 수정. 심사실 윤순길팀장님 요청. 엄영만 2011.11.23
  6011. if ( sSpecOrdType == "B" || sSpcspifYn == "Y" ) {// 일괄선택진료 위임 일 경우 또는 부분선택진료 위임 일 경우(처방 항목에 위임)
  6012. sChoiordFlag = "Y";
  6013. model.setValue ( strSrc + "[" + sendRow + "]/choiordflag", "Y" );
  6014. }
  6015. } else { // 응급실에서 발행 하는 처방이 아닐 경우
  6016. if ( model.getValue ( pamInfoNode + "/specordyn" ) == "Y" // 선택진료의사(교수님 진료)
  6017. || sSpecOrdType == "B" // 일괄선택진료 위임 일 경우
  6018. || sSpcspifYn == "Y" // 부분선택진료 위임 일 경우(처방 항목에 위임)
  6019. || sSpecCls == "02" // 선택진료 분류가 검사인것
  6020. || sSpecCls == "03" // 선택진료 분류가 영상진단인것
  6021. || (sPrcpClsCd == "C6" && model.getValue ( pamInfoNode + "/insukind" ) == "11" ) // 건강보험이면서 처방분류가 핵의학체내 일 경우는 무조건 선택진료가 발생하도록 수정 (의사가 체크 해제 할 수 있음): 2011. 02.07 김영학
  6022. || (sPrcpClsCd == "D2" && model.getValue ( pamInfoNode + "/insukind" ) == "11" ) // 건강보험이면서 처방분류가 병리 처방은 선택진료 가능 처방은 무조건 선택진료로 한다. 김영학
  6023. || (prcpInptFlag == '02' && model.getValue ( strSrc + "[" + sendRow + "]/choiordflag") == "Y" ) ) { //약속처방이고 선택진료 체크 되어 있는경우
  6024. sChoiordFlag = "Y";
  6025. model.setValue ( strSrc + "[" + sendRow + "]/choiordflag", "Y" );
  6026. }
  6027. }
  6028. }
  6029. if ( sChoiordFlag == "Y" ) {
  6030. if ( sPrcpGenrFlag == "O" ) {
  6031. sOrdDrId = model.getValue ( "/root/paminfo/list/orddrid" );
  6032. } else {
  6033. sOrdDrId = model.getValue ( "/root/paminfo/list/medispclid" );
  6034. }
  6035. sPreSpecDrId = model.getValue ( strSrc + "[" + sendRow + "]/specdrid"); // 기존 선택진료의
  6036. if (sPreSpecDrId == "-") {
  6037. sPreSpecDrId = "";
  6038. }
  6039. if (sPrcpClsCd == "D2" && (!isNull(sDrugMthdSpcCd) || sDrugMthdSpcCd != "-")) { // 병리처방은 검체 코드로 조회 한다.
  6040. var sPrcpDd = model.getValue ( "/root/init/prcpdd" );
  6041. model.resetInstanceNode ( "/root/send" );
  6042. model.resetInstanceNode ( "/root/spcdrinfo" );
  6043. model.setValue( "/root/send/cond1", "G" ); //코드구분(S 수가코드, G 검체)
  6044. model.setValue( "/root/send/cond2", sPrcpDd ); //처방일
  6045. model.setValue( "/root/send/cond3", sDrugMthdSpcCd ); //검체코드
  6046. if(!submit("TRMMO00144",false)){
  6047. alert("병리검체 선택진료의사 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  6048. }
  6049. sTodaySpcDrId = model.getValue ( "/root/spcdrinfo/info/todayspcdrid" ); // 오늘 선택진료의
  6050. sAllSpcDrId = model.getValue ( "/root/spcdrinfo/info/allspcdrid" ); // 가능 선택진료의
  6051. }
  6052. if( prcpInptFlag == '02' && !isNull(sPreSpecDrId) && isSearchString(sAllSpcDrId, sPreSpecDrId)) { // 약속처방 선택의가 가능선택의일 경우 약속처방 선택의 설정
  6053. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", sPreSpecDrId);
  6054. } else if (isSearchString(sAllSpcDrId, sOrdDrId) ){ // 가능선택의에 진료의가 포함 될 경우
  6055. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", sOrdDrId);
  6056. } else {
  6057. switch(sTodaySpcDrId) {
  6058. case "NO_DATA_FOUND": // 오늘 선택진료의사가 없는경우
  6059. if ( sAllSpcDrId == "NO_DATA_FOUND" ) { // 가능한 선택의가 없을경우
  6060. if ( prcpInptFlag == '02' && !isNull(sPreSpecDrId) ) { // 약속처방의사가 있으면
  6061. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", sPreSpecDrId);
  6062. } else if ( model.getValue ( pamInfoNode + "/specordyn" ) == "Y" ) { // 교수진료이고, 시행부서가 없거나 진료과랑 같으면 진료의로 설정
  6063. if ( model.getValue ( pamInfoNode + "/orddeptcd") == model.getValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd")
  6064. || model.getValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd") == ""
  6065. || model.getValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd") == "-") {
  6066. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", sOrdDrId ); // 진료의를 선택의로 설정
  6067. } else {
  6068. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6069. }
  6070. } else {
  6071. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6072. }
  6073. } else if (isSearchString(sAllSpcDrId, ",")) { // 가능의사가 2명 이상일경우
  6074. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6075. } else if (sAllSpcDrId == "ERROR") { // 가능의사 정보 조회시 에러
  6076. alert("선택진료 가능의사 정보 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  6077. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6078. } else { // 가능의사가 1명일 경우
  6079. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", sAllSpcDrId); // 가능의사 셋팅
  6080. }
  6081. break;
  6082. case "TOO_MANY_ROWS": // 오늘 선택진료의사가 2명이상인경우
  6083. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6084. break;
  6085. case "ERROR": // 오늘 선택진료의사정보를 가져오는중 에러
  6086. alert("오늘 선택진료 의사정보 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  6087. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6088. break;
  6089. default: // 오늘 선택진료의사가 1명인경우
  6090. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", sTodaySpcDrId); // 오늘 선택진료의 설정
  6091. break;
  6092. }
  6093. }
  6094. sPrcpSpecDrId = model.getValue ( strSrc + "[" + sendRow + "]/specdrid")
  6095. sChkSpecDrId = model.getValue("/root/init/specdrinfo/usercombo[userid = '" + sPrcpSpecDrId + "']/userid");
  6096. if (isNull(sChkSpecDrId)) {
  6097. model.setValue ( strSrc + "[" + sendRow + "]/choiordflag", "" );
  6098. fChgChoiDr ( "auto", sendRow );
  6099. }
  6100. } else {
  6101. model.setValue ( strSrc + "[" + sendRow + "]/choiordflag", "N" );
  6102. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", "-" );
  6103. }
  6104. //이은영 과장 요청 마취의 setting by sonjy 20081010 start
  6105. if ( model.getValue ( "/root/anst/paramyn" ) == "Y" ) {
  6106. if ( sPrcpClsCd == "I2" || sPrcpClsCd == "I4" ) {
  6107. //마취의 ID가 있을 경우 만 setting
  6108. if( !isNull( model.getValue ( "/root/anst/anst_drid") ) ){
  6109. //특진처방 이나 의사가 특진의사가 아닌경우 일반진료처방으로 설정
  6110. if( sChoiordFlag == "Y" ) {
  6111. if( model.getValue ( "/root/anst/anst_specordflag") != "A" ){
  6112. model.setValue ( strSrc + "[" + sendRow + "]/choiordflag", "N" );
  6113. }
  6114. }
  6115. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", model.getValue ( "/root/anst/anst_drid") ) ;
  6116. }
  6117. }
  6118. }
  6119. //마취의 setting by sonjy 20081010 end
  6120. //20110517_김영학 /선택진료 처방이지만 선택진료의가 비선택진료의 일 경우에는 선택진료여부를 기본값으로 변경한다.
  6121. // 선택진료 체크가 되어 있으면서 의사가 비선택의사 일 경우에는 선택진료 여부를 -으로 처리한다.
  6122. var sysMessageobj = getViewer("sysMessage");
  6123. if (sChoiordFlag == "Y" ) {
  6124. var chkChoiSpcldrid = model.getValue ( strSrc + "[" + sendRow + "]/specdrid" );
  6125. var choiSpclDrid = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/usercombo[userid ='" + chkChoiSpcldrid + "']/userid");
  6126. if ( choiSpclDrid == null) {
  6127. model.setValue ( strSrc + "[" + sendRow + "]/choiordflag", "N" );
  6128. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", "-" );
  6129. }
  6130. }
  6131. //20110517 선택진료 처방이지만 선택진료의가 비선택진료의 일 경우에는 선택진료여부를 기본값으로 변경한다. END
  6132. }
  6133. /**
  6134. * @desc : 서브밋 중인지 체크 함수
  6135. * @param :
  6136. * @return : 서브밋 중이면 true, 아니면 false
  6137. * @authur : 엄영만 2011. 11. 16
  6138. * @---------------------------------------------------
  6139. */
  6140. function fIsOnSubmit(){
  6141. if(!isNull(gvOnSubmit)){
  6142. return gvOnSubmit;
  6143. } else {
  6144. return false;
  6145. }
  6146. }
  6147. /**
  6148. * @desc : 처방화면 검색 Row 리턴 함수
  6149. * @param :
  6150. * @return : 처방화면의 검색 Row를 리턴 한다.
  6151. * @authur : 엄영만 2012. 03. 26
  6152. * @---------------------------------------------------
  6153. */
  6154. function fGetPrcpSrchRow(objFlag, strPrcpPath){
  6155. var srchRow = 0;
  6156. var prcpNodeList;
  6157. if ( objFlag == "child") {
  6158. prcpNodeList = opener.model.instances(0).selectNodes( strPrcpPath + "/prcplist" ); //dest Node에서 prcplist는 약속으로 하자.
  6159. for ( i = destNodeList.length; i>0; i-- ){
  6160. if(opener.model.getValue ( strPrcpPath + "/prcplist[" + i + "]" ) == "S") {
  6161. srchRow = i;
  6162. break;
  6163. }
  6164. }
  6165. } else {
  6166. prcpNodeList = model.instances(0).selectNodes( strPrcpPath + "/prcplist" );
  6167. for ( i = destNodeList.length; i>0; i-- ){
  6168. if(model.getValue ( strPrcpPath + "/prcplist[" + i + "]" ) == "S") {
  6169. srchRow = i;
  6170. break;
  6171. }
  6172. }
  6173. }
  6174. if(srchRow < 1) {
  6175. if(prcpNodeList.length == 0)
  6176. srchRow = 1;
  6177. else
  6178. srchRow = prcpNodeList.length+1;
  6179. }
  6180. return srchRow;
  6181. }
  6182. /**
  6183. * @desc : 전처방검색
  6184. * @param : pid: 환자ID
  6185. : orddd: 외래:진료일, 입원:입원일
  6186. : prcpdd: 처방일
  6187. : bfflag: 전처방 where 조건 구분자
  6188. : initflag: 최초구분
  6189. : orddrid: 의사ID,외래에서만 필요하다.
  6190. : todd
  6191. : prcpgenrflag: 외래입원구분
  6192. : orddeptcd: 부서코드
  6193. : cretno: 원무생성번호
  6194. : ioflag: 외래, 입원, 응급 구분
  6195. : refreshFlag: refresh 여부
  6196. : followup: 퇴원후 외래처방일과 동일한 처방일이거나 initsrch 와 동일한 날짜가 있을 경우 followdd를 입력한다.
  6197. : bfprcpviewflag : 전처방 조회 조건 개인별 설정기능 추가 by sonjy 20091120
  6198. * @return : void
  6199. * @authur : 마정민 2007. 6. 21
  6200. */
  6201. function fBfPrcpSrchCom_New ( pid, orddd, prcpdd, bfflag, initflag, orddrid, todd, prcpgenrflag, orddeptcd, cretno, trnm, refreshFlag, prcpauthflag, followup , bfprcpviewflag) {
  6202. if ( isNull(trnm)) {
  6203. trnm = "TRMMO00100";
  6204. }
  6205. if ( isNull(refreshFlag)) {
  6206. refreshFlag = false;
  6207. }
  6208. if ( isNull(prcpauthflag)) {
  6209. prcpauthflag = "0";
  6210. }
  6211. var curprcpdd = opener.model.getValue ( "/root/init/prcpdd" );
  6212. if (isNull(curprcpdd)) {
  6213. curprcpdd = model.getValue ( "/root/init/prcpdd" );
  6214. if (isNull(curprcpdd)){
  6215. curprcpdd = getCurrentDate();
  6216. }
  6217. }
  6218. var oprsrvno = "";
  6219. if (!isNull(opener.model.getValue ( "/root/operation/list/oprsrvno"))) {
  6220. orddd = opener.model.getValue ( "/root/operation/list/oprsrvno");
  6221. if (opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) == "O"){
  6222. prcpgenrflag = "OUTOP";
  6223. } else {
  6224. prcpgenrflag = "OP";
  6225. }
  6226. } else if (!isNull(model.getValue ( "/root/operation/list/oprsrvno"))) {
  6227. orddd = model.getValue ( "/root/operation/list/oprsrvno");
  6228. if (model.getValue ( "/root/patflag/list/prcpgenrflag" ) == "O"){
  6229. prcpgenrflag = "OUTOP";
  6230. } else {
  6231. prcpgenrflag = "OP";
  6232. }
  6233. }
  6234. model.setValue ( "/root/send/cond1", pid); //환자ID
  6235. model.setValue ( "/root/send/cond2", orddd ); //외래:진료일, 입원:입원일
  6236. model.setValue ( "/root/send/cond3", prcpauthflag ); //처방권한 구분
  6237. model.setValue ( "/root/send/cond4", prcpdd ); //처방일자
  6238. model.setValue ( "/root/send/cond5", bfflag ); //전처방 where 조건 구분자
  6239. model.setValue ( "/root/send/cond6", initflag ); //최초구분
  6240. model.setValue ( "/root/send/cond7", orddrid); //의사ID,외래에서만 필요하다.
  6241. model.setValue ( "/root/send/cond8", todd); //todd
  6242. model.setValue ( "/root/send/cond9", prcpgenrflag ); //외래입원구분
  6243. model.setValue ( "/root/send/cond10", orddeptcd ); //부서코드
  6244. model.setValue ( "/root/send/cond11", cretno ); //생성번호
  6245. model.makeValue( "/root/send/cond14", curprcpdd );
  6246. if (!isNull(followup)){
  6247. model.makeValue( "/root/send/cond12", "followup" ); //외래follow up
  6248. }
  6249. var insukind = opener.model.getValue ( "/root/paminfo/list/insukind");
  6250. if (isNull(insukind)) insukind = model.getValue ( "/root/paminfo/list/insukind");
  6251. if (!isNull(insukind)){
  6252. model.makeValue( "/root/send/cond13", insukind ); //외래follow up
  6253. }
  6254. model.setValue ( "/root/send/cond99", "getBfPrcpSrchInfo" );//검색구분
  6255. opener.ivw_prcp3.src = "SMMMO02100_전회처방.xrw";
  6256. //by sonjy 전처방 조회모드 설정 20091120
  6257. if( bfflag == "bfprcp" || bfflag == "addprcp" ){
  6258. if(!isNull(bfprcpviewflag) ) model.makeValue( "/root/send/bfprcpviewflag",bfprcpviewflag);
  6259. }
  6260. if ( refreshFlag == false ) {
  6261. copyNodeset("root/prcpsrch/prcplist", "root/savertninfo/prcplist", "replace", opener.ivw_prcp3.model, model)
  6262. } else {
  6263. copyNodeset("root/prcpsrch/prcplist", "root/savertninfo/prcplist", "replace", opener.ivw_prcp3.model, model)
  6264. }
  6265. //CP일 경우, viewer안의 컨트롤 height 사이즈를 모두 조정해야 함 (2008.08.28 JJE)
  6266. if ( opener.model.getValue ( "/root/cp" ) == "Y" ) {
  6267. opener.window.javascript.fResizeControls();
  6268. }
  6269. }
  6270. /**
  6271. * @desc : 인증 암호화 전 데이터 생성
  6272. * @param : sFlag: 인증정보 구분 ("1":처방정보, "2":진단정보)
  6273. : sRegpath : 접수정보 인스턴스노드 패스
  6274. : sSrcPath : 정보 인스턴스노드 패스
  6275. * @return : void
  6276. * @authur : 엄영만 2013. 05. 29
  6277. */
  6278. function getSignBfConts (sFlag, sRegpath, sSrcPath) {
  6279. var sRtn = "";
  6280. var sRegConts = ""; // 환자 등록정보
  6281. var sSrcConts = ""; // 처방및 진단 암호화전 데이터
  6282. var regNodeList = model.instances(0).selectNodes(sRegpath);
  6283. var srcNodeList = model.instances(0).selectNodes(sSrcPath);
  6284. if ( !regNodeList.length > 0 || !srcNodeList.length > 0) { return sRtn; }
  6285. var sOrdType = model.getValue( sRegpath + "/ioflag");
  6286. sRegConts = "$환자진료정보";
  6287. sRegConts = sRegConts + "@등록번호:" + model.getValue( sRegpath + "/pid");
  6288. sRegConts = sRegConts + "@이름:" + model.getValue( sRegpath + "/hngnm");
  6289. sRegConts = sRegConts + "@성별/나이:" + model.getValue( sRegpath + "/sex") + "/" + model.getValue( sRegpath + "/age");
  6290. sRegConts = sRegConts + "@진료과:" + model.getValue( sRegpath + "/orddeptnm") + "(" + model.getValue( sRegpath + "/orddeptcd") + ")";
  6291. if ("O" == sOrdType || "S" == sOrdType) { // 외래
  6292. sRegConts = sRegConts + "@진료의:" + model.getValue( sRegpath + "/orddrnm") + "(" + model.getValue( sRegpath + "/orddrid") + ")";
  6293. sRegConts = sRegConts + "@진료일자:" + model.getValue( sRegpath + "/orddd").toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일");
  6294. } else { // 입원
  6295. sRegConts = sRegConts + "@진료의:" + model.getValue( sRegpath + "/orddrnm") + "(" + model.getValue( sRegpath + "/medispclid") + ")";
  6296. sRegConts = sRegConts + "@입원일자:" + model.getValue( sRegpath + "/indd").toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일");
  6297. }
  6298. switch (sFlag) {
  6299. case "1": // 처방정보
  6300. var sStatus = "";
  6301. var sPrcpflag = "";
  6302. var sPrcpclscd = "";
  6303. var sPrcpdd = "";
  6304. sSrcConts = "$환자처방정보";
  6305. for(var i = 1; i <= srcNodeList.length; i++) {
  6306. sStatus = model.getValue( sSrcPath + "[" + i + "]/status");
  6307. sPrcpflag = model.getValue( sSrcPath + "[" + i + "]/prcpflag");
  6308. sPrcpclscd = model.getValue( sSrcPath + "[" + i + "]/prcpclscd");
  6309. sPrcpdd = model.getValue( sSrcPath + "[" + i + "]/prcppkspec").substring(0,8);
  6310. // 20100210 한재상 수정 - 사망환자 사망등록이후 처방시 처방일자를 사망일자로 변경
  6311. if ("I" == sOrdType || "E" == sOrdType || "D" == sOrdType) {
  6312. if ("I" == sStatus || "-" == sStatus || "U" == sStatus) {
  6313. var sDethdd = model.getValue( sRegpath + "/dethdt"); // 사망일자 설정
  6314. if(sDethdd.length >= 8 && sPrcpdd > sDethdd ) {
  6315. sPrcpdd = sDethdd;
  6316. }
  6317. }
  6318. }
  6319. if ("I" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; }
  6320. else if ("-" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; } // 임시저장후 인증저장
  6321. else if ("U" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; } // 임시저장후 수정 인증저장
  6322. else if ("D" == sStatus) { sSrcConts = sSrcConts + "@처리구분:DC(임시저장)"; } // 임시저장후 DC
  6323. else if ("C" == sStatus) { sSrcConts = sSrcConts + "@처리구분:DC"; }
  6324. else if ("S" == sStatus) {
  6325. if ("O" == model.getValue( sSrcPath + "[" + i + "]/prcphistcd")) { sSrcConts = sSrcConts + "@처리구분:후인증"; }
  6326. else if ("D" == model.getValue( sSrcPath + "[" + i + "]/prcphistcd")) { sSrcConts = sSrcConts + "@처리구분:DC 후인증"; }
  6327. } else { continue; }
  6328. if ("1" == sPrcpflag) { sSrcConts = sSrcConts + "@처방구분:수가"; }
  6329. else if ("2" == sPrcpflag) { sSrcConts = sSrcConts + "@처방구분:지시"; }
  6330. else if ("3" == sPrcpflag) { sSrcConts = sSrcConts + "@처방구분:식사"; }
  6331. else { continue; }
  6332. sSrcConts = sSrcConts + "@처방일자:" + sPrcpdd.toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일");
  6333. sSrcConts = sSrcConts + "@처방코드:" + model.getValue( sSrcPath + "[" + i + "]/prcpcd");
  6334. sSrcConts = sSrcConts + "@처방명:" + model.getValue( sSrcPath + "[" + i + "]/prcpnm");
  6335. sSrcConts = sSrcConts + "@처방내역:" + model.getValue( sSrcPath + "[" + i + "]/prcpqty") + " * #" + model.getValue( sSrcPath + "[" + i + "]/prcptims") + " * " + model.getValue( sSrcPath + "[" + i + "]/prcpdayno");
  6336. if ("1" == sPrcpflag && "A" == sPrcpclscd.substring(0,1)) { // 복용방법, 비율처방
  6337. sSrcConts = sSrcConts + "@복용방법:" + model.getValue( sSrcPath + "[" + i + "]/drugmthdspccdnm") + "(" + model.getValue( sSrcPath + "[" + i + "]/drugmthdspccd") + ")";
  6338. if ( "-" != model.getValue( sSrcPath + "[" + i + "]/drugrateqty")) {
  6339. sSrcConts = sSrcConts + "@투여비율적용:" + model.getValue( sSrcPath + "[" + i + "]/drugrateqty").replaceAll("\\|", ",");
  6340. }
  6341. }
  6342. if ("1" == sPrcpflag && ( "B" == sPrcpclscd.substring(0,1) || "D2" == sPrcpclscd)) { // 진단검사, 병리 검체명
  6343. sSrcConts = sSrcConts + "@검체:" + model.getValue( sSrcPath + "[" + i + "]/drugmthdspccdnm") + "(" + model.getValue( sSrcPath + "[" + i + "]/drugmthdspccd") + ")";
  6344. }
  6345. sSrcConts = sSrcConts + "@전달사항:" + model.getValue( sSrcPath + "[" + i + "]/prcpdelivefact");
  6346. if ("1" == sPrcpflag && "C2" == sPrcpclscd) { // 임상소견
  6347. sSrcConts = sSrcConts + "@임상소견:" + model.getValue( sSrcPath + "[" + i + "]/clinccmtcnts")
  6348. }
  6349. if ("I" == sStatus || "-" == sStatus || "U" == sStatus) {
  6350. sSrcConts = sSrcConts + "@등록일시:" + new Date().getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  6351. sSrcConts = sSrcConts + "@등록자:" + getUserInfo("usernm") + "(" + getUserInfo("userid") + ")";
  6352. } else {
  6353. sSrcConts = sSrcConts + "@수정일시:" + new Date().getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  6354. sSrcConts = sSrcConts + "@수정자:" + getUserInfo("usernm") + "(" + getUserInfo("userid") + ")";
  6355. }
  6356. }
  6357. break;
  6358. case "2": // 진단정보
  6359. var sStatus = "";
  6360. var sDiagKindcd = "";
  6361. var sDiagKindcdFlag = "";
  6362. var sDiagHistCd = "";
  6363. sSrcConts = "$환자진단정보";
  6364. for(var i = 1; i <= srcNodeList.length; i++) {
  6365. sStatus = model.getValue( sSrcPath + "[" + i + "]/status");
  6366. sDiagKindcd = model.getValue( sSrcPath + "[" + i + "]/diagkindcd");
  6367. sDiagKindcdFlag = model.getValue( sSrcPath + "[" + i + "]/diagkindcdflag");
  6368. sDiagHistCd = model.getValue( sSrcPath + "[" + i + "]/diaghistcd");
  6369. if ("I" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; }
  6370. else if ("T" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; } // 임시저장후 인증저장
  6371. else if ("U" == sStatus) {
  6372. if ("T" == sDiagHistCd) { sSrcConts = sSrcConts + "@처리구분:신규"; // 임시저장후 수정 인증저장
  6373. } else { sSrcConts = sSrcConts + "@처리구분:수정"; }
  6374. }
  6375. else if ("D" == sStatus) { sSrcConts = sSrcConts + "@처리구분:삭제"; }
  6376. else if ("S" == sStatus) { continue } // 검색
  6377. else { continue; }
  6378. if ("C" == sDiagKindcd) { sSrcConts = sSrcConts + "@종류:확정"; }
  6379. else if ("R" == sDiagKindcd) { sSrcConts = sSrcConts + "@종류:R/O"; }
  6380. else { continue; }
  6381. if ("M" == sDiagKindcdFlag) { sSrcConts = sSrcConts + "@주부구분:주"; }
  6382. else if("S" == sDiagKindcdFlag) { sSrcConts = sSrcConts + "@주부구분:부"; }
  6383. else { continue; }
  6384. sSrcConts = sSrcConts + "@진단코드:" + model.getValue( sSrcPath + "[" + i + "]/diagcd");
  6385. sSrcConts = sSrcConts + "@진단영문명:" + model.getValue( sSrcPath + "[" + i + "]/diagengnm");
  6386. sSrcConts = sSrcConts + "@진단한글명:" + model.getValue( sSrcPath + "[" + i + "]/diaghngnm");
  6387. if ("I" == sStatus || "T" == sStatus || ("U" == sStatus && "T" == sDiagHistCd)) {
  6388. sSrcConts = sSrcConts + "@등록일시:" + new Date().getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  6389. sSrcConts = sSrcConts + "@등록자:" + getUserInfo("usernm") + "(" + getUserInfo("userid") + ")";
  6390. } else {
  6391. sSrcConts = sSrcConts + "@수정일시:" + new Date().getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  6392. sSrcConts = sSrcConts + "@수정자:" + getUserInfo("usernm") + "(" + getUserInfo("userid") + ")";
  6393. }
  6394. }
  6395. break;
  6396. default:
  6397. break;
  6398. }
  6399. if( sSrcConts != "$환자처방정보" && sSrcConts != "$환자진단정보" ) { // 저장할 처방 또는 진단정보가 있을경우만 리턴
  6400. sRtn = sRegConts + sSrcConts;
  6401. }
  6402. return sRtn;
  6403. }
  6404. /**
  6405. * @desc : 속도체크를 위한 모니터링 로그 데이터 생성.
  6406. * @param : sType: 모니터링 타입값
  6407. : sItem01 ~ sItem20 : 모니터링 필드값
  6408. * @return : void
  6409. * @authur : 엄영만 2013. 06. 27
  6410. */
  6411. function reqSetMonitoringLog (sType, sItem01, sItem02, sItem03, sItem04, sItem05, sItem06, sItem07, sItem08, sItem09, sItem10, sItem11, sItem12, sItem13, sItem14, sItem15, sItem16, sItem17, sItem18, sItem19, sItem20) {
  6412. try {
  6413. if(isNull(sType)) { if (0 == sType ) sType = sType.toString(); else sType = "-"; }
  6414. if(isNull(sItem01)) { if (0 == sItem01) sItem01 = sItem01.toString(); else sItem01 = "-"; }
  6415. if(isNull(sItem02)) { if (0 == sItem02) sItem02 = sItem02.toString(); else sItem02 = "-"; }
  6416. if(isNull(sItem03)) { if (0 == sItem03) sItem03 = sItem03.toString(); else sItem03 = "-"; }
  6417. if(isNull(sItem04)) { if (0 == sItem04) sItem04 = sItem04.toString(); else sItem04 = "-"; }
  6418. if(isNull(sItem05)) { if (0 == sItem05) sItem05 = sItem05.toString(); else sItem05 = "-"; }
  6419. if(isNull(sItem06)) { if (0 == sItem06) sItem06 = sItem06.toString(); else sItem06 = "-"; }
  6420. if(isNull(sItem07)) { if (0 == sItem07) sItem07 = sItem07.toString(); else sItem07 = "-"; }
  6421. if(isNull(sItem08)) { if (0 == sItem08) sItem08 = sItem08.toString(); else sItem08 = "-"; }
  6422. if(isNull(sItem09)) { if (0 == sItem09) sItem09 = sItem09.toString(); else sItem09 = "-"; }
  6423. if(isNull(sItem10)) { if (0 == sItem10) sItem10 = sItem10.toString(); else sItem10 = "-"; }
  6424. if(isNull(sItem11)) { if (0 == sItem11) sItem11 = sItem11.toString(); else sItem11 = "-"; }
  6425. if(isNull(sItem12)) { if (0 == sItem12) sItem12 = sItem12.toString(); else sItem12 = "-"; }
  6426. if(isNull(sItem13)) { if (0 == sItem13) sItem13 = sItem13.toString(); else sItem13 = "-"; }
  6427. if(isNull(sItem14)) { if (0 == sItem14) sItem14 = sItem14.toString(); else sItem14 = "-"; }
  6428. if(isNull(sItem15)) { if (0 == sItem15) sItem15 = sItem15.toString(); else sItem15 = "-"; }
  6429. if(isNull(sItem16)) { if (0 == sItem16) sItem16 = sItem16.toString(); else sItem16 = "-"; }
  6430. if(isNull(sItem17)) { if (0 == sItem17) sItem17 = sItem17.toString(); else sItem17 = "-"; }
  6431. if(isNull(sItem18)) { if (0 == sItem18) sItem18 = sItem18.toString(); else sItem18 = "-"; }
  6432. if(isNull(sItem19)) { if (0 == sItem19) sItem19 = sItem19.toString(); else sItem19 = "-"; }
  6433. if(isNull(sItem20)) { if (0 == sItem20) sItem20 = sItem20.toString(); else sItem20 = "-"; }
  6434. model.removeNodeSet("/root/monitoringlog/reqdata");
  6435. model.makeValue("/root/monitoringlog/reqdata/type", sType);
  6436. model.makeValue("/root/monitoringlog/reqdata/item01", sItem01);
  6437. model.makeValue("/root/monitoringlog/reqdata/item02", sItem02);
  6438. model.makeValue("/root/monitoringlog/reqdata/item03", sItem03);
  6439. model.makeValue("/root/monitoringlog/reqdata/item04", sItem04);
  6440. model.makeValue("/root/monitoringlog/reqdata/item05", sItem05);
  6441. model.makeValue("/root/monitoringlog/reqdata/item06", sItem06);
  6442. model.makeValue("/root/monitoringlog/reqdata/item07", sItem07);
  6443. model.makeValue("/root/monitoringlog/reqdata/item08", sItem08);
  6444. model.makeValue("/root/monitoringlog/reqdata/item09", sItem09);
  6445. model.makeValue("/root/monitoringlog/reqdata/item10", sItem10);
  6446. model.makeValue("/root/monitoringlog/reqdata/item11", sItem11);
  6447. model.makeValue("/root/monitoringlog/reqdata/item12", sItem12);
  6448. model.makeValue("/root/monitoringlog/reqdata/item13", sItem13);
  6449. model.makeValue("/root/monitoringlog/reqdata/item14", sItem14);
  6450. model.makeValue("/root/monitoringlog/reqdata/item15", sItem15);
  6451. model.makeValue("/root/monitoringlog/reqdata/item16", sItem16);
  6452. model.makeValue("/root/monitoringlog/reqdata/item17", sItem17);
  6453. model.makeValue("/root/monitoringlog/reqdata/item18", sItem18);
  6454. model.makeValue("/root/monitoringlog/reqdata/item19", sItem19);
  6455. model.makeValue("/root/monitoringlog/reqdata/item20", sItem20);
  6456. if (document.all("TXMMO00120") != null) {
  6457. submit("TXMMO00120",false);
  6458. }
  6459. } catch(err) {
  6460. messageBox ( "reqSetMonitoringLog() 실행 중 오류가 발생 하였습니다.", "E999" );
  6461. }
  6462. }
  6463. /**
  6464. * @---------------------------------------------------
  6465. * @desc : StringBuffer 관련 추가 2013.07.16 엄영만
  6466. * @use it : var sb = new StringBuffer();
  6467. sb.append("Hello ");
  6468. sb.append("Java");
  6469. sb.append("script!");
  6470. document.write(sb.toString());
  6471. * @---------------------------------------------------
  6472. */
  6473. function StringBuffer() { this.buffer = []; }
  6474. StringBuffer.prototype.append = function(str) {
  6475. if (isNull(str)) { str = ""; }
  6476. this.buffer.push(str);
  6477. return this;
  6478. }
  6479. StringBuffer.prototype.toString = function(str) {
  6480. if (isNull(str)) { str = ""; }
  6481. return this.buffer.join(str);
  6482. }
  6483. /**
  6484. * 프로그레스바 생성
  6485. * @param msg
  6486. * @return
  6487. */
  6488. function createLoadingWindow(sMsg, nLeft, nTop){
  6489. body.createChild("xforms:iviewer", "id:ivr_progress; src:../../../com/commonweb/xrw/SPZZZ00400_로딩중화면.xrw; left:"+nLeft+"px; top:"+nTop+"px; width:330px; height:120px;");
  6490. var ivrObjt = document.all("ivr_progress");
  6491. ivrObjt.model.setValue("/root/main/msg", sMsg);
  6492. ivrObjt.model.refresh();
  6493. }
  6494. /**
  6495. * 프로그레스바 삭제
  6496. * @return
  6497. */
  6498. function removeLoadingWindow(){
  6499. body.removeChild("ivr_progress");
  6500. }