MMO999.js 295 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955
  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. */
  43. //변수선언
  44. var prcpnmCol = 5; //처방명 컬럼 index
  45. var prcpcdCol = 4; //처방명 컬럼 index
  46. var diagnmCol = 4; //처방명 컬럼 index
  47. var icd10cdCol = 3; //처방명 컬럼 index
  48. //2012.02.09 교육서버의 htmlwindow.DEVSystem 값을 true로 변경 함에 따라 같이 수정.
  49. //if (htmlwindow.DEVSystem != "true") {
  50. var signyn = "Y"; //전자서명 사용하는 check 서버 에러시 N으로 수정
  51. //} else {
  52. // var signyn = "N"; //전자서명 사용하는 check 서버 에러시 N으로 수정
  53. //}
  54. var volflag = "time"; //1일 총용량 구분
  55. var ocrcalcscorcd = ""; //OCR print
  56. var restantimicyn = ""; //제한항생제 저장
  57. var lglydisprcpyn = "N"; //제한항생제 저장
  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. : prcpInptFlag - 처방입력구분 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, prcpInptFlag ) {
  247. //model.addLog("***************** Start Of addPrcp()");
  248. if ( objFlag == "child") {
  249. opener.model.makeValue("/root/drugcalc/prcpvol", "");
  250. opener.model.makeValue("/root/drugcalc/prcpqty", "");
  251. opener.model.makeValue("/root/drugcalc/prcptims", "");
  252. opener.model.makeValue("/root/drugcalc/drprcpetc7", "");
  253. opener.model.makeValue("/root/drugcalc/drprcpetc8", "");
  254. } else {
  255. model.makeValue("/root/drugcalc/prcpvol", "");
  256. model.makeValue("/root/drugcalc/prcpqty", "");
  257. model.makeValue("/root/drugcalc/prcptims", "");
  258. model.makeValue("/root/drugcalc/drprcpetc7", "");
  259. model.makeValue("/root/drugcalc/drprcpetc8", "");
  260. }
  261. //목적지를 변수로 받고 싶었으나 iviewer에서 문제가 있어 목적지는 프레그를 구분자로 박아 넣음.
  262. var srchRow = 0;
  263. var srcNodeList = model.instances(0).selectNodes(strSrc); //or instance1.selectNodes(strSrc)
  264. //검색Row 찾기
  265. if ( objFlag == "child") {
  266. var destNodeList = opener.model.instances(0).selectNodes( strDest + "/prcplist" ); //dest Node에서 prcplist는 약속으로 하자.
  267. for ( i = destNodeList.length; i>0; i-- ){
  268. opener.model.getValue ( strDest + "/prcplist[" + i + "]" ) == "S";
  269. srchRow = i;
  270. break;
  271. }
  272. } else {
  273. var destNodeList = model.instances(0).selectNodes( strDest + "/prcplist" );
  274. for ( i = destNodeList.length; i >0; i-- ){
  275. model.getValue ( strDest + "prcplist[" + i + "]" ) == "S";
  276. srchRow = i;
  277. break;
  278. }
  279. if(!(srchRow > 0)){
  280. if(destNodeList.length == 0) srchRow = 1;
  281. else srchRow = destNodeList.length+1;
  282. }
  283. }
  284. // 처방 코드정보를 가져온다. (선택진료 자동체크 및 선택진료의사 등의 데이터를 가져오기 위해) 2011.10.13 엄영만
  285. var sPrcpCodes = ""; // 처방코드 정보를 가져오기 위한 처방 코드 셋팅
  286. if ( multiFlag == "Y" ){
  287. for( var i = 1; i <= srcNodeList.length; i++ ) {
  288. if ( model.getValue( strSrc + "[" + i + "]/" + checkNM) == checkFlag ) {
  289. if(sPrcpCodes == ""){
  290. sPrcpCodes = "'" + model.getValue( strSrc + "[" + i + "]/prcpcd") + "'";
  291. } else {
  292. sPrcpCodes = sPrcpCodes + ",'" + model.getValue( strSrc + "[" + i + "]/prcpcd") + "'";
  293. }
  294. }
  295. }
  296. } else {
  297. sPrcpCodes = "'" + model.getValue( strSrc + "[" + grdObj.row + "]/prcpcd") + "'" ;
  298. }
  299. if(!isNull(sPrcpCodes)){ // 조회할 코드가 있을경우에만 실행하도록 수정함.
  300. if ( objFlag == "child") {
  301. opener.javascript.fGetPrcpCodeInfo(sPrcpCodes);
  302. } else {
  303. fGetPrcpCodeInfo(sPrcpCodes);
  304. }
  305. }
  306. var cnt = 0;
  307. if ( multiFlag == "Y" ){
  308. //약속처방일 경우 MIX 가 있으면 번호를 새로 만들어줌
  309. if ( prcpInptFlag == "02") { //약속처방이고
  310. for( var i = 1; i <= srcNodeList.length; i++ ) {
  311. if ( model.getValue( strSrc + "[" + i + "]/" + checkNM) == checkFlag ) {
  312. var prcpmixno = model.getValue( strSrc + "[" + i + "]/prcpmixno" );
  313. if ( prcpmixno != "-" && prcpmixno != "0" ) { //믹스번호가 있다면
  314. if ( model.getValue( strSrc + "[" + i + "]/tempcol8" ) == "-" ) { //새로 번호 딴것은 체크 하지 않는다.
  315. model.setValue( strSrc + "[" + i + "]/tempcol8", "" );
  316. } else {
  317. var mixcnt = 0;
  318. //믹스번호를 하나 증가시켜서 같은 믹스번호가 있는것은 적용한다.
  319. var newprcpmixno = eval(opener.model.getValue ( "/root/init/prcpmixno" )) + 1;
  320. for( var j = 1; j <= srcNodeList.length; j++ ) {
  321. if ( model.getValue( strSrc + "[" + j + "]/" + checkNM) == checkFlag ) {
  322. if ( i != j ) {
  323. if ( prcpmixno == model.getValue( strSrc + "[" + j + "]/prcpmixno" )) {
  324. model.setValue( strSrc + "[" + j + "]/prcpmixno", newprcpmixno );
  325. model.setValue( strSrc + "[" + j + "]/tempcol8", "-" );
  326. mixcnt++;
  327. }
  328. }
  329. }
  330. }
  331. if ( mixcnt == 0 ) { // 같이 적용된것이 하나도 없다면 믹스번호 초기화
  332. model.setValue( strSrc + "[" + i + "]/prcpmixno", "-" );
  333. } else { // 값이 있으면 본인것도 증가시켜주고, 믹스번호 init 값도 증가시켜준다.
  334. model.setValue( strSrc + "[" + i + "]/prcpmixno", newprcpmixno );
  335. opener.model.setValue ( "/root/init/prcpmixno", newprcpmixno );
  336. }
  337. }
  338. }
  339. }
  340. }
  341. } //약속처방 mix no 체크끝
  342. for( var i = 1; i <= srcNodeList.length; i++ ) {
  343. //전처방, 약속처방에서 처방복사 버튼 클릭시...구코드이고 유효하지 않은 코드 일경우 불가처리 조과장님 지시. BY SONJY 2008-09-04
  344. //전처방, 약속처방에서 처방복사 버튼 클릭시 식사처방 복사 불가처리 by sonjy 2008-09-06
  345. //20090409 마정민 수정. 성가병원 구코드 복사 기능 요청
  346. /*if( model.getValue( strSrc + "[" + i + "]/prcpcd").substring( 0, 1 ) == "*" ||
  347. model.getValue( strSrc + "[" + i + "]/prcpcd").substring( 0, 1 ) == "_" ||
  348. model.getValue( strSrc + "[" + i + "]/prcpclscd") == "03" ) {
  349. if ( objFlag == "child" ) {
  350. addprcpchk = opener.model.getValue ( "/root/addprcp" );
  351. } else {
  352. addprcpchk = model.getValue ( "/root/addprcp" );
  353. }
  354. if ( addprcpchk != "Y" ){
  355. continue ;
  356. }
  357. }*/
  358. if ( model.getValue( strSrc + "[" + i + "]/prcpclscd") == "03" ) {
  359. if ( objFlag == "child" ) {
  360. addprcpchk = opener.model.getValue ( "/root/addprcp" );
  361. } else {
  362. addprcpchk = model.getValue ( "/root/addprcp" );
  363. }
  364. if ( addprcpchk != "Y" ){
  365. continue ;
  366. }
  367. }
  368. if ( model.getValue( strSrc + "[" + i + "]/" + checkNM) == checkFlag ) {
  369. srchRow = addPrcpDetl ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag );
  370. if ( srchRow == 0) {
  371. cnt++;
  372. //검색줄 다시검색
  373. if ( objFlag == "child") {
  374. var destNodeList = opener.model.instances(0).selectNodes( strDest + "/prcplist" ); //dest Node에서 prcplist는 약속으로 하자.
  375. for ( j = destNodeList.length; j>0; j-- ){
  376. opener.model.getValue ( strDest + "/prcplist[" + j + "]" ) == "S";
  377. srchRow = j;
  378. break;
  379. }
  380. } else {
  381. var destNodeList = model.instances(0).selectNodes( strDest + "/prcplist" );
  382. for ( j = destNodeList.length; j >0; j-- ){
  383. model.getValue ( strDest + "prcplist[" + j + "]" ) == "S";
  384. srchRow = j;
  385. break;
  386. }
  387. //JJE-
  388. if(!(srchRow > 0)){
  389. srchRow = destNodeList.length;
  390. }
  391. //-JJE
  392. }
  393. } else {
  394. //처방복사에 문제가 없다면 하드코드 set 처방 Chk
  395. //srchRow = fAddSetPrcpChk ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag );
  396. srchrownum = fAddSetPrcpChkKNUH ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag );
  397. if (srchrownum != srchRow) {
  398. srchRow = srchrownum;
  399. if ( objFlag == "child" ) {
  400. opener.javascript.DrugCalc ( "drprcpetc8" , parseInt(srchRow) -1 );
  401. } else {
  402. DrugCalc ( "drprcpetc8" , parseInt(srchRow) -1 );
  403. }
  404. }
  405. }
  406. //if ( objFlag == "child" ) {
  407. // opener.grd_prcplist.refresh();
  408. //} else {
  409. // grd_prcplist.refresh();
  410. //}
  411. }
  412. }
  413. } else { //더블클릭으로 넘길때
  414. //전처방, 약속처방에서 더블 클릭시...구코드이고 유효하지 않은 코드 일경우 불가처리 조과장님 지시. BY SONJY 2008-09-04
  415. //전처방, 약속처방에서 처방복사 버튼 클릭시 식사처방 복사 불가처리 by sonjy 2008-09-06
  416. //20090409 마정민 수정. 성가병원 구코드 복사 기능 요청
  417. /*if( model.getValue( strSrc + "[" + grdObj.row + "]/prcpcd").substring( 0, 1 ) == "*" ||
  418. model.getValue( strSrc + "[" + grdObj.row + "]/prcpcd").substring( 0, 1 ) == "_" ||
  419. model.getValue( strSrc + "[" + grdObj.row + "]/prcpclscd") == "03" ) {
  420. if ( objFlag == "child" ) {
  421. addprcpchk = opener.model.getValue ( "/root/addprcp" );
  422. } else {
  423. addprcpchk = model.getValue ( "/root/addprcp" );
  424. }
  425. if ( addprcpchk != "Y" ){
  426. //20090407 마정민 수정. 성가병원 기능 요청
  427. //return ;
  428. }
  429. }*/
  430. if( model.getValue( strSrc + "[" + grdObj.row + "]/prcpclscd") == "03" ) {
  431. if ( objFlag == "child" ) {
  432. addprcpchk = opener.model.getValue ( "/root/addprcp" );
  433. } else {
  434. addprcpchk = model.getValue ( "/root/addprcp" );
  435. }
  436. if ( addprcpchk != "Y" ){
  437. return ;
  438. }
  439. }
  440. //mix no 초기화
  441. model.setValue( strSrc + "[" + grdObj.row + "]/prcpmixno", "-" );
  442. srchRow = addPrcpDetl ( objFlag , strSrc , strDest , grdObj.row , srchRow, prcpInptFlag );
  443. if ( srchRow == 0) {
  444. cnt++;
  445. } else {
  446. //처방복사에 문제가 없다면 하드코드 set 처방 Chk
  447. //srchRow = fAddSetPrcpChk( objFlag , strSrc , strDest , grdObj.row , srchRow, prcpInptFlag );
  448. var srchrownum = fAddSetPrcpChkKNUH( objFlag , strSrc , strDest , grdObj.row , srchRow, prcpInptFlag );
  449. if (srchrownum != srchRow) {
  450. srchRow = srchrownum;
  451. if ( objFlag == "child" ) {
  452. opener.javascript.DrugCalc ( "drprcpetc8" , parseInt(srchRow) -1 );
  453. } else {
  454. DrugCalc ( "drprcpetc8" , parseInt(srchRow) -1 );
  455. }
  456. }
  457. }
  458. }
  459. fHosinPrcpResnChk (objFlag, strDest );
  460. if ( cnt == 0 ) { // 한번도 에러가 없을 때만 메인으로 포커스가 간다.
  461. focusMain ( srchRow, objFlag, prcpNmClearFlag );
  462. } else {
  463. var modiflag = model.getValue("/root/init/rowmodify/modiflag");
  464. if ( objFlag == "child" ) {
  465. if ( modiflag != "Y" ){ // 처방 코드에서 수정 모드가 아닐때만 refresh - 20090630 by Moonsh
  466. opener.grd_prcplist.rebuild();
  467. opener.model.recalculate();
  468. opener.grd_prcplist.refresh();
  469. }
  470. // opener.model.setfocus( "grd_prcplist" );
  471. // if ( srchRow != 0 ) {
  472. // opener.grd_prcplist.row = srchRow;
  473. // }
  474. } else {
  475. if ( modiflag != "Y" ){ // 처방 코드에서 수정 모드가 아닐때만 refresh - 20090630 by Moonsh
  476. grd_prcplist.rebuild();
  477. model.recalculate();
  478. grd_prcplist.refresh();
  479. }
  480. // model.setfocus( "grd_prcplist" );
  481. // if ( srchRow != 0 ) {
  482. // grd_prcplist.row = srchRow;
  483. // }
  484. }
  485. }
  486. //KNUH, 약속처방 복사 시 치식 팝업이 한번만 뜨고 다른 치과처방에 동일하게 적용되도록 함. 처방복사가 완료되면 임시 instance는 제거함. (2011.03.28 JJE)
  487. if ( objFlag == "child" ) {
  488. opener.model.removeNodeset("/root/main/toot_prcp");
  489. }else{
  490. model.removeNodeset("/root/main/toot_prcp");
  491. }
  492. // 20080925 항생제 추가 시는 그리드 editting을 위해 색 변경 로직 생략 by MoonSH
  493. var cdssFlag = getParameter( "SPMMD01600_flag");
  494. clearParameter( "SPMMD01600_flag", "");
  495. if (cdssFlag != "Y") {
  496. fPrcpColor(objFlag);
  497. }
  498. if ( objFlag != "child") {
  499. //JJE-
  500. if( model.getValue ( "/root/cp" ) == "Y" ){
  501. if (prtlprcpstatus_SMMMO00110 != "U" ) {
  502. import1.visible = false;
  503. }
  504. }else{
  505. import1.visible = false;
  506. }
  507. //-JJE
  508. }
  509. //model.addLog("***************** End Of addPrcp()");
  510. }
  511. /**
  512. * @desc : 검색된 내용중 내릴 처방을 선택하여 전송한다.( double click )
  513. * @param : objFlag - child or else
  514. : strSrc - source node
  515. : strDest - 목적지 node; child일때는 opener.root.main.prcp, 아니면 "/root/main/prcp" 이다
  516. : sendRow - 검색된 내용중 메인으로 보내고자 하는 row
  517. : srchRow - 메인에 들어간 자리. 검색로우(srchRow) 바로 전이다.
  518. : prcpInptFlag - - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  519. : groupSrc - 옵션: group처방 검색할 경우 node
  520. : direcSrc - 옵션: group 지시처방 검색할 경우 node
  521. : prcpInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  522. * @return : srchRow 에러시 0
  523. * @authur : 마정민 2007. 4. 12
  524. * @---------------------------------------------------
  525. */
  526. function addPrcpDetl ( objFlag, strSrc, strDest, sendRow, srchRow, prcpInptFlag, grupSrc, direcSrc ) {
  527. //model.addLog(" *************** Start Of addPrcpDetl() PRCPCLSCD " + model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" ) + " || PRCPCD : " + model.getValue( strSrc + "[" + sendRow + "]/prcpcd" ));
  528. //model.addLog(" PRCPCLSCD : " + model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" ));
  529. //model.addLog(" PRCPCD : " + model.getValue( strSrc + "[" + sendRow + "]/prcpcd" ));
  530. //20091013 by sonjy 성빈센트병원 요청 => mig data 전처방 copy시 신코드일 경우 reset여부
  531. var bfprcpsrchyn = "";
  532. if( objFlag == "child") bfprcpsrchyn = opener.model.getValue("/root/initsrch/bfprcpsrchyn/trgtcd");
  533. else bfprcpsrchyn = model.getValue("/root/initsrch/bfprcpsrchyn/trgtcd");
  534. //20091104 by sonjy 성빈센트 전환 데이터 관련 => mig data 전처방 copy시 약/주사 용량 오류 보정
  535. var migyn = "";
  536. var colHidnValue = grdBaseColHidn("D");
  537. /***************************** 전처방 구수가코드 검색시 신코드로 변환검색 ****************************************/
  538. var oldprcpflag = "";
  539. if ( prcpInptFlag == "01" ) { //전처방이고
  540. var tempcol9 = model.getValue( strSrc + "[" + sendRow + "]/tempcol9" );
  541. var tempcol18 = model.getValue( strSrc + "[" + sendRow + "]/tempcol18" );
  542. if ( tempcol9 == "N" ) {
  543. return 0;
  544. } else {
  545. var bfprcpcd = model.getValue( strSrc + "[" + sendRow + "]/prcpcd" );
  546. //20091104 by sonjy 성빈센트 전환 데이터 관련 => mig data 전처방 copy시 약/주사 용량 오류 보정
  547. migyn = model.getValue( strSrc + "[" + sendRow + "]/tempcol20" );
  548. /**
  549. * 20091013 by sonjy 성빈센트병원 요청 => mig data 전처방 copy시 신코드일 경우 reset
  550. * 단, 지시처방일 경우는 검색 불필요하므로 제외
  551. */
  552. if ( bfprcpcd.substring( 0, 1 ) == "_" || bfprcpcd.substring( 0, 1 ) == "=" ||
  553. ( bfprcpsrchyn == "Y" && migyn == "Y" && model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" ) != "09") ) { //구수가코드이면 신코드로 다시 검색한다. by sonjy20091013
  554. //20090407 마정민수정. tempcol9로 구분되기 때문에 색깔비교 주석처리.
  555. //if ( model.getValue ( strSrc + "[" + sendRow + "]/tempcol10" ) != "#ccffcc" ) { //매핑값이 있으면(색깔은 mgr단에서 박는다)
  556. var bfprcpvol = model.getValue( strSrc + "[" + sendRow + "]/prcpvol" );
  557. var bfprcpqty = model.getValue( strSrc + "[" + sendRow + "]/prcpqty" );
  558. var bfprcptims = model.getValue( strSrc + "[" + sendRow + "]/prcptims" );
  559. var bfprcpdayno = model.getValue( strSrc + "[" + sendRow + "]/prcpdayno" );
  560. var bfprcpdelivefact = model.getValue( strSrc + "[" + sendRow + "]/prcpdelivefact" );
  561. var bfpowdflag = model.getValue( strSrc + "[" + sendRow + "]/powdflag" );
  562. var bfprnprcpflag = model.getValue( strSrc + "[" + sendRow + "]/prnprcpflag" );
  563. var bfprepprcpflag = model.getValue( strSrc + "[" + sendRow + "]/prepprcpflag" );
  564. var bfselfprcpflag = model.getValue( strSrc + "[" + sendRow + "]/selfprcpflag" );
  565. var bfselfdrugflag = model.getValue( strSrc + "[" + sendRow + "]/selfdrugflag" );
  566. var bfdrugpackflag = model.getValue( strSrc + "[" + sendRow + "]/drugpackflag" );
  567. var bferprcpflag = model.getValue( strSrc + "[" + sendRow + "]/erprcpflag" );
  568. var bfprecureprcpflag = model.getValue( strSrc + "[" + sendRow + "]/precureprcpflag" );
  569. var bfnigtprcpflag = model.getValue( strSrc + "[" + sendRow + "]/nigtprcpflag" );
  570. var bfportprcpflag = model.getValue( strSrc + "[" + sendRow + "]/portprcpflag" );
  571. var bffixprcpflag = model.getValue( strSrc + "[" + sendRow + "]/fixprcpflag" );
  572. var bfanamneflag = model.getValue( strSrc + "[" + sendRow + "]/anamneflag" );
  573. var bferreadflag = model.getValue( strSrc + "[" + sendRow + "]/erreadflag" );
  574. var bfstemcellflag = model.getValue( strSrc + "[" + sendRow + "]/stemcellflag" );
  575. var bfprcpexecdeptcd = model.getValue( strSrc + "[" + sendRow + "]/prcpexecdeptcd" );
  576. var bfDrprcpetc7 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc7"); //1회용량
  577. var bfDrprcpetc8 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc8"); //1회수량
  578. var bfDrugmastspec = model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec");
  579. var bfpayflagcd = model.getValue ( strSrc + "[" + sendRow + "]/payflagcd"); // 2011.03.03 마이그된 처방 전처방 복사시 급여도 복사하도록 수정
  580. //20091013 by sonjy 성빈센트병원 요청 => mig data 전처방 copy시 신코드일 경우 reset여부
  581. if(bfprcpcd.substring( 0, 1 ) == "_" || bfprcpcd.substring( 0, 1 ) == "=" ) {
  582. fPrcpSrchCom ( bfprcpcd.substring( 1, bfprcpcd.length ), opener.model.getValue ( "/root/init/prcpdd" ), opener.model.getValue ( "/root/paminfo/list/insukind"), "TRMMO02101", "", false, "getOldPrcpCdChngInfo", "E" );
  583. } else {
  584. fPrcpSrchCom ( bfprcpcd, opener.model.getValue ( "/root/init/prcpdd" ), opener.model.getValue ( "/root/paminfo/list/insukind"), "TRMMO02101", "", false, "getPrcpCdSrchInfo", "E" , false);
  585. }
  586. strSrc = "/root/oldprcpchngsrch/prcplist";
  587. sendRow = 1;
  588. if ( isNull(model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" ))){
  589. return 0;
  590. } else {
  591. oldprcpflag = "Y";
  592. var prcpclscd = model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" );
  593. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ){
  594. if ( prcpclscd == "A2" ) {
  595. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcptims") != bfprcptims ) {
  596. model.setValue ( strSrc + "[" + sendRow + "]/prcptims", bfprcptims );
  597. fBaseMthd("oldprcp");
  598. }
  599. } else {
  600. model.setValue ( strSrc + "[" + sendRow + "]/prcptims", bfprcptims );
  601. }
  602. var chkPrcpVol = model.getValue ( strSrc + "[" + sendRow + "]/prcpvol");
  603. if( bfprcpsrchyn == "Y" && migyn == "Y" && parseInt(chkPrcpVol) < 1 ){
  604. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", 0 );
  605. model.setValue ( strSrc + "[" + sendRow + "]/prcpqty", 0 );
  606. model.setValue ( strSrc + "[" + sendRow + "]/prcpdayno", 0 );
  607. } else {
  608. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", bfprcpvol );
  609. model.setValue ( strSrc + "[" + sendRow + "]/prcpqty", bfprcpqty );
  610. model.setValue ( strSrc + "[" + sendRow + "]/prcpdayno", bfprcpdayno );
  611. }
  612. //model.setValue ( strSrc + "[" + sendRow + "]/drugmthdspccdnm", "-" );
  613. //model.setValue ( strSrc + "[" + sendRow + "]/drugmthdspccd", "-" );
  614. //20091104 by sonjy 성빈센트 전환 데이터 관련 => mig data 전처방 copy시 약/주사 용량 오류 보정
  615. if( bfprcpsrchyn == "Y" && migyn == "Y" ){
  616. var sdrugmastspec = model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec");
  617. var orgprcpvol = getArrayData ( sdrugmastspec + "^", 0, 1 , "^", "|" ); //drugcntsvol 함량기준용량 -> 경북대는 일기준 용량으로 비교
  618. var orgDrprcpetc7 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc7"); //1회용량
  619. var orgDrprcpetc8 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc8"); //1회수량
  620. var orgCalcRate = 0;
  621. //회기준에서는 수가계산구분이 1이면 횟수도 곱 (2011.01.02 전지은)
  622. if(!isNull(bfDrprcpetc7) && !isNull(bfDrprcpetc8) && (colHidnValue == "C" || colHidnValue == "G" || colHidnValue == "H") ){
  623. orgCalcRate = (orgDrprcpetc8 * bfDrprcpetc8) * 1000;
  624. orgCalcRate = Math.round(orgCalcRate);
  625. orgCalcRate = orgCalcRate / 1000;
  626. var calcmthdcd = getArrayData ( bfDrugmastspec + "^", 0, 26, "^", "|" );
  627. if( calcmthdcd == "1" ){
  628. var volRate = orgDrprcpetc7 / bfDrprcpetc7 * 1000;
  629. var qtyRate = orgDrprcpetc8 / bfDrprcpetc8 * 1000;
  630. volRate = Math.round(volRate);
  631. qtyRate = Math.round(qtyRate);
  632. volRate = volRate / 1000;
  633. qtyRate = qtyRate / 1000;
  634. if ( volRate != qtyRate //회 기준 용량 이상 시
  635. || Math.round ( orgDrprcpetc7 * Math.round ( orgDrprcpetc8 / bfDrprcpetc8 ) * bfprcptims * 1000 ) != bfprcpvol * 1000 ){ //1회 용량이 잘못 들어왔을 수 있음(mig) 일 기준 용량 이상 시
  636. if( eval(bfDrprcpetc7) < 1 ){
  637. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", "0") ; //1회용량*횟수
  638. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc7", "0") ; //1회용량*횟수
  639. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc8", "0") ;
  640. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", "0") ;
  641. } else {
  642. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", orgDrprcpetc7 * bfprcptims) ; //1회용량*횟수
  643. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc7", orgDrprcpetc7 * orgCalcRate ) ; //1회용량*횟수
  644. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc8", bfDrprcpetc8 ) ;
  645. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", bfprcpvol) ;
  646. }
  647. }
  648. }else{
  649. if( eval(bfDrprcpetc7) < 1 ){
  650. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", "0" ) ; //1회용량
  651. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc7", "0") ; //1회용량*횟수
  652. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc8", "0") ;
  653. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", "0") ;
  654. } else {
  655. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", bfDrprcpetc7 ) ; //1회용량
  656. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc7", bfDrprcpetc7 ) ; //1회용량*횟수
  657. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc8", bfDrprcpetc8 ) ;
  658. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", bfprcpvol) ;
  659. }
  660. }
  661. } else{//회기준 보정 끝 원래
  662. if ( !isNull(orgprcpvol) && Math.round ( orgprcpvol * bfprcpqty * 1000 ) != bfprcpvol * 1000 ){
  663. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", bfprcpqty * orgprcpvol) ;
  664. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", bfprcpvol) ;
  665. }
  666. }
  667. }
  668. }
  669. model.setValue ( strSrc + "[" + sendRow + "]/prcpdelivefact", bfprcpdelivefact );
  670. model.setValue ( strSrc + "[" + sendRow + "]/powdflag", bfpowdflag );
  671. model.setValue ( strSrc + "[" + sendRow + "]/prnprcpflag", bfprnprcpflag );
  672. model.setValue ( strSrc + "[" + sendRow + "]/prepprcpflag", bfprepprcpflag );
  673. model.setValue ( strSrc + "[" + sendRow + "]/selfprcpflag", bfselfprcpflag );
  674. model.setValue ( strSrc + "[" + sendRow + "]/selfdrugflag", bfselfdrugflag );
  675. model.setValue ( strSrc + "[" + sendRow + "]/drugpackflag", bfdrugpackflag );
  676. model.setValue ( strSrc + "[" + sendRow + "]/erprcpflag", bferprcpflag );
  677. model.setValue ( strSrc + "[" + sendRow + "]/precureprcpflag", bfprecureprcpflag );
  678. model.setValue ( strSrc + "[" + sendRow + "]/nigtprcpflag", bfnigtprcpflag );
  679. model.setValue ( strSrc + "[" + sendRow + "]/portprcpflag", bfportprcpflag );
  680. model.setValue ( strSrc + "[" + sendRow + "]/fixprcpflag", bffixprcpflag );
  681. model.setValue ( strSrc + "[" + sendRow + "]/anamneflag", bfanamneflag );
  682. model.setValue ( strSrc + "[" + sendRow + "]/erreadflag", bferreadflag );
  683. model.setValue ( strSrc + "[" + sendRow + "]/payflagcd", bfpayflagcd ); // 2011.03.03 마이그된 처방 전처방 복사시 급여도 복사하도록 수정
  684. }
  685. }
  686. }
  687. //20080917 마정민수정: PRN실처방은 전처방에서 복사되면 안된다.
  688. if ( model.getValue( strSrc + "[" + sendRow + "]/prcpinptflag" ) == "19" ) {
  689. messageBox ( "[" + model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ) + "]: PRN 실처방은 처방등록 하실수", "I004" );
  690. return 0;
  691. }
  692. // 전처방에서 복사 시 소아 TPN은 전처방에서 복사 안되도록 요청. - 20090720 by MoonSH
  693. if( model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "A6" &&
  694. getArrayData ( model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^", 0, 23 , "^", "|" ) == "B") {
  695. messageBox ( "[" + model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ) + "]: 소아 TPN 처방은 전처방에서 복사하실수", "I004" );
  696. return 0;
  697. }
  698. // 전처방에서 복사 시 stemcellflag 초기화 요청. - 20081118 by MoonSH
  699. if ( !isNull(bfstemcellflag) ){
  700. model.setValue ( strSrc + "[" + sendRow + "]/stemcellflag", "00NNN" );
  701. }
  702. // 전처방에서 복사 시 마이그레이션 잘못 들어와서 _0으로 존재 하는 실행부서 -으로 수정. - 20081202 by MoonSH
  703. if ( bfprcpexecdeptcd == "_0" ) {
  704. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd", "-" );
  705. }
  706. //20091203 by sonjy 전처방 copy시 처방종류가 지시인경우 전처방에 저장된 시행부서를 copy하지 않고 초기화.[요청번호 8711 ]
  707. //(전실 환자의 경우 이전병동으로 보이는 문제 ) -- V/S(지시), 활동(지시), I/O(지시), 지시 : 식이,BMT제외
  708. var cur_prcpclscd = model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" );
  709. if(cur_prcpclscd == "00" || cur_prcpclscd == "01"|| cur_prcpclscd == "02" || cur_prcpclscd == "09") {
  710. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd", model.getValue( strSrc + "[" + sendRow + "]/tempcol23") );
  711. }
  712. }
  713. //전처방이나 약속처방에서 임상처방체크된 처방을 발행할 경우 임상시험 부유형 자동세팅(subcretno), CHC, 2009-07-22
  714. if ( prcpInptFlag == "01" || prcpInptFlag == "02" ) {
  715. if ( model.getValue( strSrc + "[" + sendRow + "]/clincstdyflag" ) == "Y" ) {
  716. fSubcretnoSet("2", "Y", strSrc, sendRow);
  717. }
  718. //전처방이나 약속처방일때 용량/수량 보정 20100209 LYJ
  719. var prcpclscd = model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" );
  720. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ){
  721. if( bfprcpsrchyn == "Y" && model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" ) != "09" && model.getValue( strSrc + "[" + sendRow + "]/prcpinptflag" ) != "35"){ // 자가보유처방은 보정 제외한다. 20100504 LYJ
  722. var bfprcpvol = model.getValue( strSrc + "[" + sendRow + "]/prcpvol" );
  723. var bfprcpqty = model.getValue( strSrc + "[" + sendRow + "]/prcpqty" );
  724. var sdrugmastspec = model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec");
  725. var orgprcpvol = getArrayData ( sdrugmastspec + "^", 0, 1 , "^", "|" ); //drugcntsvol 함량기준용량
  726. if ( !isNull(orgprcpvol) && Math.round ( orgprcpvol * bfprcpqty * 1000 ) != bfprcpvol * 1000 ){
  727. var bfDrprcpetc7 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc7"); //1회용량
  728. var bfDrprcpetc8 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc8"); //1회수량
  729. var bfprcptims = model.getValue( strSrc + "[" + sendRow + "]/prcptims" );
  730. if(!isNull(bfDrprcpetc7) && !isNull(bfDrprcpetc8) && (colHidnValue == "C" || colHidnValue == "G" || colHidnValue == "H") ){
  731. var orgDrprcpetc7 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc7"); //1회용량
  732. var orgDrprcpetc8 = model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc8"); //1회수량
  733. var orgCalcRate = 0;
  734. var calcmthdcd = getArrayData ( sdrugmastspec + "^", 0, 26, "^", "|" );
  735. if( calcmthdcd == "1" ){
  736. orgCalcRate = (orgDrprcpetc8 * bfDrprcpetc8) * 1000;
  737. orgCalcRate = Math.round(orgCalcRate);
  738. orgCalcRate = orgCalcRate / 1000;
  739. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", orgDrprcpetc7 * bfprcptims) ; //1회용량*횟수
  740. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc7", orgDrprcpetc7 ) ; //1회용량*횟수
  741. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc8", bfDrprcpetc8 ) ;
  742. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", orgDrprcpetc7) ;
  743. } else {
  744. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", bfDrprcpetc7 ) ; //1회용량
  745. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc7", bfDrprcpetc7 ) ; //1회용량*횟수
  746. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc8", bfDrprcpetc8 ) ;
  747. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", bfprcpvol) ;
  748. }
  749. } else {
  750. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", bfprcpqty * orgprcpvol) ;
  751. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", bfprcpvol) ;
  752. }
  753. }
  754. }
  755. }
  756. }
  757. //부서별 제한처방 20100416 LYJ
  758. if ( objFlag == "child" ) {
  759. var limitprcpdept = opener.model.getValue ( "/root/initsrchprcp/prcpetccnts/limitprcpdept" );
  760. }else {
  761. var limitprcpdept = model.getValue ( "/root/initsrchprcp/prcpetccnts/limitprcpdept" );
  762. }
  763. if(limitprcpdept != ""){
  764. var limitdeptprcpcd = limitprcpdept.split("^");
  765. for( i=0; i<limitdeptprcpcd.length; i++ ){
  766. var limitdeptprcpuse = limitdeptprcpcd[i].split("|");
  767. if (model.getValue( strSrc + "[" + sendRow + "]/prcpcd") == limitdeptprcpuse[0]){
  768. var limitprcpdeptmsg = limitdeptprcpuse[2];
  769. if ( prcpInptFlag == "01" || prcpInptFlag == "02" ) {
  770. messageBox ( model.getValue( strSrc + "[" + sendRow + "]/prcpcd" ) +" ("+ model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ) +")\n\n"+ limitdeptprcpuse[2]+"\n\n이 약품은 처방이 복사되지 않습니다.","I");
  771. } else if (prcpInptFlag == "00") {
  772. messageBox ( model.getValue( strSrc + "[" + sendRow + "]/prcpcd" ) +" ("+ model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ) +")\n\n"+ limitdeptprcpuse[2],"I");
  773. }
  774. return 0;
  775. }
  776. }
  777. }
  778. //자가보유 처방일때 처방명 재설정 한다. 20100427 LYJ
  779. if (model.getValue( strSrc + "[" + sendRow + "]/prcpinptflag") == "35"){
  780. var selfprcpnm = model.getValue( strSrc + "[" + sendRow + "]/prcpnm" );
  781. var selflen = selfprcpnm.length;
  782. if (prcpInptFlag != "35"){
  783. selfprcpnm1 = selfprcpnm.substring(7, selflen);
  784. model.setValue ( strSrc + "[" + sendRow + "]/orgprcpnm", selfprcpnm1) ;
  785. }
  786. }
  787. if ( prcpInptFlag == "35" ) { //자가보유
  788. model.setValue ( strSrc + "[" + sendRow + "]/orgprcpnm", model.getValue( strSrc + "[" + sendRow + "]/prcpnm" )) ;
  789. }
  790. var prcpClsCd = model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" );
  791. var prcpKindCd = model.getValue( strSrc + "[" + sendRow + "]/prcpkindcd" );
  792. var drugmthdspccd = model.getValue( strSrc + "[" + sendRow + "]/drugmthdspccd" );
  793. var prcpnm = model.getValue( strSrc + "[" + sendRow + "]/prcpnm" );
  794. var drugmastspec = model.getValue( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^";
  795. var hsctflag = "N";
  796. var cpchk = "";
  797. var usge = "";
  798. var prcpgenrflag = "";
  799. if ( objFlag == "child" ) {
  800. usge = opener.model.getValue ( "/root/usge" );
  801. cpchk = opener.model.getValue ( "/root/cp" );
  802. prcpgenrflag = opener.model.getValue ( "/root/patflag/list/prcpgenrflag" );
  803. } else {
  804. usge = model.getValue ( "/root/usge" );
  805. cpchk = model.getValue ( "/root/cp" );
  806. prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  807. }
  808. if ( usge == "prms" || usge == "direc" || usge == "home" ) {
  809. prcpInptFlag = "02";
  810. }
  811. if ( prcpClsCd == "-" ) {
  812. messageBox ( prcpnm + " 처방은 처방분류가 없어 처방등록을 하실 수 없습니다.", "E" );
  813. return 0;
  814. }
  815. var iprcpqty = eval(model.getValue( strSrc + "[" + sendRow + "]/prcpqty" ));
  816. var iprcptims = eval(model.getValue( strSrc + "[" + sendRow + "]/prcptims" ));
  817. if ( model.getValue( strSrc + "[" + sendRow + "]/tempcol18" ) == "MC" && (iprcpqty != 1 || iprcptims != 1 )) {
  818. messageBox ( "[" + prcpnm + "] 전환데이터 연속검사처방은 처방복사 하실 수 없습니다. ( 수량:" + iprcpqty + ", 횟수:" + iprcptims + " )" , "E" );
  819. return 0;
  820. }
  821. var addprcpchk = ""
  822. if ( objFlag == "child" ) {
  823. addprcpchk = opener.model.getValue ( "/root/addprcp" );
  824. } else {
  825. addprcpchk = model.getValue ( "/root/addprcp" );
  826. }
  827. if ( addprcpchk == "Y" ){ //시행부서체크
  828. //시행부서 처방은 마약불가
  829. var spcldrug = getArrayData ( drugmastspec, 0, 23, "^", "|" );
  830. //20080721 마정민수정 김민선 선생님의 요청. 의사권한이 있는사람은 처방 가능.
  831. if ( spcldrug == "M" ) {
  832. var prcpauthflag = "";
  833. if ( objFlag == "child" ) {
  834. prcpauthflag = opener.model.getValue ( "/root/init/prcpauthflag" )
  835. } else {
  836. prcpauthflag = model.getValue ( "/root/init/prcpauthflag" )
  837. }
  838. if (prcpauthflag != "3" ){
  839. messageBox ( prcpnm + " 마약처방은 시행부서에서 의사만 등록이 가능한 처방입니다.", "E" );
  840. return 0;
  841. }
  842. }
  843. }
  844. //20090302 마정민수정: Irradiation(LBT70010) 단독처방 불가
  845. if ( objFlag == "child" ) {
  846. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" ) == opener.model.getValue ( "/root/initsrch/irrprcpcd/trgtcd" )) {
  847. messageBox ( prcpnm + "는 단독처방이 불가합니다. 수혈상세팝업의 Irr 체크기능을 통해 등록해 주십시오", "E" );
  848. return 0;
  849. }
  850. } else {
  851. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" ) == model.getValue ( "/root/initsrch/irrprcpcd/trgtcd" )) {
  852. messageBox ( prcpnm + "는 단독처방이 불가합니다. 수혈상세팝업의 Irr 체크기능을 통해 등록해 주십시오", "E" );
  853. return 0;
  854. }
  855. }
  856. if ( prcpClsCd == "A2" || prcpClsCd == "A4" || prcpClsCd == "A6" ) {
  857. if (isNull(model.getValue ( strSrc + "[" + sendRow + "]/prcpvolunitnm"))) {
  858. messageBox ( model.getValue ( strSrc + "[" + sendRow + "]/prcpnm") + " 처방의 용량단위가", "E014" );
  859. return 0;
  860. }
  861. if ( isNull(model.getValue ( strSrc + "[" + sendRow + "]/prcpqtyunitnm"))) {
  862. messageBox ( model.getValue ( strSrc + "[" + sendRow + "]/prcpnm") + " 처방의 수량단위가", "E014" );
  863. return 0;
  864. }
  865. }
  866. //20090903 이윤정 추가: 응급 탭에서 선택된 환자의 경우 심야가산적용 자동 체크
  867. if ( objFlag == "child" ) {
  868. var prcpgenrflag = opener.model.getValue ( "/root/patflag/list/prcpgenrflag" );
  869. if (prcpgenrflag == "E"){
  870. if ( prcpClsCd == "H2" || prcpClsCd == "H4" ) {
  871. model.setValue( strSrc + "[" + sendRow + "]/nigtprcpflag","N" );
  872. var nigtprcptm = opener.model.getValue("/root/initsrch/nigtprcptm/trgtcd");
  873. var nigtprcpsplit = nigtprcptm.split("|");
  874. var nigtprcpstart = nigtprcpsplit[0];
  875. var nigtprcpend = nigtprcpsplit[1];
  876. var MyTime = getCurrentTime();
  877. var realtime = MyTime.substr(0,4);
  878. if ( nigtprcpstart < realtime || realtime < nigtprcpend){
  879. model.setValue( strSrc + "[" + sendRow + "]/nigtprcpflag","Y" );
  880. }
  881. }
  882. }
  883. }else{
  884. var prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  885. if (prcpgenrflag == "E"){
  886. if ( prcpClsCd == "H2" || prcpClsCd == "H4" ) {
  887. model.setValue( strSrc + "[" + sendRow + "]/nigtprcpflag","N" );
  888. var nigtprcptm = model.getValue("/root/initsrch/nigtprcptm/trgtcd");
  889. var nigtprcpsplit = nigtprcptm.split("|");
  890. var nigtprcpstart = nigtprcpsplit[0];
  891. var nigtprcpend = nigtprcpsplit[1];
  892. var MyTime = getCurrentTime();
  893. var realtime = MyTime.substr(0,4);
  894. if ( nigtprcpstart < realtime || realtime < nigtprcpend){
  895. model.setValue( strSrc + "[" + sendRow + "]/nigtprcpflag","Y" );
  896. }
  897. }
  898. }
  899. }
  900. //-- CP, 항암프로토콜일 경우는 클라이언트에서 품절약체크를 하지 않는다 --//
  901. if( prcpInptFlag != "05" && prcpInptFlag != "06" && prcpInptFlag != "17" ){
  902. if ( prcpClsCd == "A2" || prcpClsCd == "A4" || prcpClsCd == "A6" ) {
  903. //항생제체크
  904. var returnVal = fGetHardCDList("Y", 233, 3); // 2010. 10. 26. 경북대는 CDSS 추천항생제를 사용하지 않음. 따라서 사용여부를 처방 하드코드 테이블로 설정할 수 있도록 함.
  905. if (returnVal =="Y") {
  906. if ( usge == "prcp" && prcpgenrflag != "O" && prcpClsCd == "A6") {
  907. if ( getArrayData ( drugmastspec + "^", 0, 23, "^", "|" ) == "P" && getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "N" ) {
  908. if ( objFlag == "child" ) {
  909. if (opener.javascript.fAntiMicChk ( sendRow, "child", strSrc, prcpInptFlag ) == 0){
  910. return 0;
  911. }
  912. } else {
  913. if (fAntiMicChk ( sendRow, "1", strSrc, prcpInptFlag ) == 0 ){
  914. return 0;
  915. }
  916. }
  917. }
  918. }
  919. //제한항생제체크
  920. if ( usge == "prcp" && prcpgenrflag != "O" ) {
  921. if ( getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "Y" ) {
  922. if ( objFlag == "child" ) {
  923. if (opener.javascript.fAntiMicChk ( sendRow, "child", strSrc, prcpInptFlag ) == 0){
  924. return 0;
  925. }
  926. } else {
  927. if (fAntiMicChk ( sendRow, "1", strSrc, prcpInptFlag ) == 0 ){
  928. return 0;
  929. }
  930. }
  931. }
  932. }
  933. }
  934. //BY 문세희 20080930 END
  935. //품절약 체크
  936. if ( getArrayData (drugmastspec, 0, 10, "^", "|" ) == "Y" ) {
  937. if ( objFlag == "child" ) {
  938. opener.javascript.fAltDrug ( sendRow, "child", strSrc, prcpInptFlag );
  939. } else {
  940. fAltDrug ( sendRow, "1", strSrc, prcpInptFlag );
  941. }
  942. return 0;
  943. }
  944. //20090528 마정민 추가. 6세미만 경구약 자동 powdflag전환 때문에 처방복사시 powdflag체크로직 추가. 단 전처방복사는제외.
  945. var vAge = 99;
  946. if ( objFlag == "child" ) {
  947. vAge = parseInt ( opener.model.getValue ( "/root/paminfo/list/age" ));
  948. } else {
  949. vAge = parseInt ( model.getValue ( "/root/paminfo/list/age" ));
  950. }
  951. if ( vAge < 6 && prcpClsCd == "A2" && prcpInptFlag != "01" ) {
  952. if ( getArrayData ( drugmastspec + "^", 0, 19, "^", "|" ) == "2" ) { //산제불가
  953. if ( objFlag == "child" ) {
  954. opener.javascript.fAltDrug ( sendRow, "child", strSrc, prcpInptFlag, "4" );
  955. if ( opener.javascript.getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  956. opener.javascript.clearParameter ( "SPMMB10100_chkyn" );
  957. return 0; //대체약을 선택했다면 복사시키지 않는다.
  958. }
  959. } else {
  960. fAltDrug ( sendRow, "4", strSrc, prcpInptFlag );
  961. if ( getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  962. clearParameter ( "SPMMB10100_chkyn" );
  963. return 0; //대체약을 선택했다면 복사시키지 않는다.
  964. }
  965. }
  966. //20090602 배성미선생님 요청으로 산제불가 취소해도 복사되게 수정
  967. } else if ( getArrayData ( drugmastspec + "^", 0, 19, "^", "|" ) == "1" ) { //산제주의
  968. if ( objFlag == "child" ) {
  969. opener.javascript.fAltDrug ( sendRow, "child", strSrc, prcpInptFlag, "5" );
  970. if ( opener.javascript.getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  971. opener.javascript.clearParameter ( "SPMMB10100_chkyn" );
  972. return 0; //대체약을 선택했다면 복사시키지 않는다.
  973. }
  974. } else {
  975. fAltDrug ( sendRow, "5", strSrc, prcpInptFlag );
  976. if ( getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  977. clearParameter ( "SPMMB10100_chkyn" );
  978. return 0; //대체약을 선택했다면 복사시키지 않는다.
  979. }
  980. }
  981. }
  982. }
  983. }
  984. //대체처방체크
  985. var altcdinfo = model.getValue( strSrc + "[" + sendRow + "]/tempcol16" );
  986. var prcpinptflag = model.getValue( strSrc + "[" + sendRow + "]/prcpinptflag" );
  987. if ( altcdinfo.substring( 0, 1 ) != "X" && altcdinfo.substring( 0, 1 ) != "A" ) {
  988. if(altcdinfo.substring( 0, 1 ) == "D") { // 수가 종료 처방 복사 불가 처리 2013.04.18 엄영만
  989. if(prcpInptFlag == "02") {
  990. messageBox ( "[" + prcpnm + "]: 수가 또는 검사실 사용종료 되어 처방을 복사 할 수 없습니다.\n\n상단메뉴 기본정보관리->약속Set 메뉴에서 약속처방을 재구성 하시기 바랍니다.", "E999" );
  991. } else {
  992. messageBox ( "[" + prcpnm + "]: 수가 또는 검사실 사용종료 되어 처방을 복사", "E001" );
  993. }
  994. return 0;
  995. }
  996. if (prcpinptflag !="35") { // 자가보유처방은 복사 가능 20100504 by LYJ
  997. messageBox ( "[" + prcpnm + "]: 수가 또는 검사실 사용종료 되어 처방을 복사", "E001" );
  998. return 0;
  999. }
  1000. }
  1001. if (altcdinfo.substring( 0, 1 ) == "X" ) {
  1002. if ( objFlag == "child" ) {
  1003. opener.javascript.fAltPrcpCd ( sendRow, "child", strSrc, prcpInptFlag );
  1004. } else {
  1005. fAltPrcpCd ( sendRow, "1", strSrc, prcpInptFlag );
  1006. }
  1007. return 0;
  1008. }
  1009. }
  1010. //-- CP, 항암프로토콜 처방의 품절약 체크 제외 끝 --//
  1011. if (!fPrmsSaveCheck ( usge, prcpKindCd, prcpnm )) {
  1012. return 0;
  1013. }
  1014. if ( prcpInptFlag == "01" ) { //전회처방
  1015. //반환요청된 처방, D/C된 처방 모두 처방 복사 불가, CHC, 2009-08-03
  1016. //if ( model.getValue ( strSrc + "[" + sendRow + "]/prcphistcd" ) == "E" ) {
  1017. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcphistcd" ) == "E" || model.getValue ( strSrc + "[" + sendRow + "]/prcphistcd" ) == "C") {
  1018. messageBox ( "반납처방은 처방복사", "E001" );
  1019. return 0;
  1020. }
  1021. //종속처방 자처방 복사 불가
  1022. var inclprcpno = model.getValue ( strSrc + "[" + sendRow + "]/inclprcpno" );
  1023. if ( !isNull(inclprcpno) && inclprcpno != "-" ) {
  1024. if ( eval(inclprcpno) > 0 ) {
  1025. if ( model.getValue ( strSrc + "[" + sendRow + "]/grupsnglflag" ) != "M" ) {
  1026. return 0;
  1027. }
  1028. }
  1029. }
  1030. //20080731: 마정민 수정 hsct 자처방 복사 불가
  1031. var hsctlnkno = model.getValue ( strSrc + "[" + sendRow + "]/hsctlnkno" );
  1032. if ( !isNull(hsctlnkno) && hsctlnkno != "-" ) {
  1033. if ( eval(hsctlnkno) > 0 ) {
  1034. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcpsetcd" ) != "-" ) {
  1035. return 0;
  1036. }
  1037. }
  1038. }
  1039. }
  1040. if ( model.getValue( strSrc + "[" + sendRow + "]/grupsnglflag" ) == "M" ) { //그룹코드 M을 찾아낸다. 처방검색일때만 풀린다.
  1041. var grupCond1 = model.getValue( strSrc + "[" + sendRow + "]/prcpcd" );
  1042. var grupCond3 = "";
  1043. var grupCond4 = "";
  1044. var inclprcpno = "";
  1045. if ( objFlag == "child" ) {
  1046. grupCond3 = opener.model.getValue ( "/root/init/prcpdd" );
  1047. grupCond4 = opener.model.getValue ( "/root/paminfo/list/insukind");
  1048. if ( usge == "prcp" ) { //처방화면에만 종속처방이 적용된다.
  1049. inclprcpno = eval(opener.model.getValue ( "/root/init/inclprcpno")) + 1; //종속처방번호를 받아온다.
  1050. }
  1051. } else {
  1052. grupCond3 = model.getValue ( "/root/init/prcpdd" );
  1053. grupCond4 = model.getValue ( "/root/paminfo/list/insukind");
  1054. if ( usge == "prcp" ) {//처방화면에만 종속처방이 적용된다.
  1055. inclprcpno = eval(model.getValue ( "/root/init/inclprcpno")) + 1; //종속처방번호를 받아온다.
  1056. }
  1057. }
  1058. prcpGroupSrch ( grupCond1, grupCond3, grupCond4 );
  1059. if ( grupSrc == null ) grupSrc = "/root/prcpgroup/prcplist";
  1060. var srcNodeList = model.instances(0).selectNodes( grupSrc );
  1061. if ( srcNodeList.length > 0 ) {
  1062. if ( objFlag == "child" ) {
  1063. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1064. model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1065. if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "N", inclprcpno )) {
  1066. return 0;
  1067. }
  1068. } else {
  1069. var destNode = strDest;
  1070. model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1071. if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "N", inclprcpno )) {
  1072. return 0;
  1073. }
  1074. }
  1075. srchRow ++;
  1076. if ( usge == "prcp" ) {
  1077. for (var i=1; i<=srcNodeList.length; i++) {
  1078. if ( objFlag == "child" ) {
  1079. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1080. model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
  1081. if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "N", inclprcpno )) {
  1082. return 0;
  1083. }
  1084. } else {
  1085. var destNode = strDest;
  1086. model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
  1087. if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "N", inclprcpno )) {
  1088. return 0;
  1089. }
  1090. }
  1091. if ( objFlag == "child" ) {
  1092. srchRow = opener.javascript.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1093. } else {
  1094. srchRow = addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1095. }
  1096. srchRow ++;
  1097. }
  1098. }
  1099. }
  1100. } else if ( model.getValue( strSrc + "[" + sendRow + "]/grupsnglflag" ) == "J" ) { //그룹지시처방 J을 찾아낸다.
  1101. //조회조건
  1102. var direcCond1 = model.getValue( strSrc + "[" + sendRow + "]/srchcondcnts" );
  1103. var direcCond5 = model.getValue( strSrc + "[" + sendRow + "]/prcpcd" );
  1104. var direcCond3 = "";
  1105. var direcCond4 = "";
  1106. if ( prcpClsCd == "04" ) {
  1107. hsctflag = "Y";
  1108. }
  1109. if ( objFlag == "child" ) {
  1110. direcCond3 = opener.model.getValue ( "/root/init/prcpdd" );
  1111. direcCond4 = opener.model.getValue ( "/root/paminfo/list/insukind");
  1112. } else {
  1113. direcCond3 = model.getValue ( "/root/init/prcpdd" );
  1114. direcCond4 = model.getValue ( "/root/paminfo/list/insukind");
  1115. }
  1116. prcpDirecSrch ( direcCond1, direcCond3, direcCond4, direcCond5 );
  1117. if ( direcSrc == null ) direcSrc = "/root/prcpdirec/prcplist";
  1118. var srcNodeList = model.instances(0).selectNodes( direcSrc );
  1119. if ( srcNodeList.length > 0 ){ //그룹지시처방 J는 종속하는 수가 코드가 있을 때만 추가.
  1120. //HSCT 모코드는 HSCTTEMPFLAG 가 N이다.
  1121. if ( objFlag == "child" ) {
  1122. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1123. model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1124. //종속처방번호 Setting ( hsctlnkno )
  1125. var hsctlnkno = eval ( opener.model.getValue ( "/root/init/hsctlnkno" )) + 1;
  1126. opener.model.setValue ( "/root/init/hsctlnkno", hsctlnkno );
  1127. if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "M" )) {
  1128. return 0;
  1129. }
  1130. } else {
  1131. var destNode = strDest;
  1132. var hsctlnkno = eval ( model.getValue ( "/root/init/hsctlnkno" )) + 1;
  1133. model.setValue ( "/root/init/hsctlnkno", hsctlnkno );
  1134. model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1135. if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "M" )) {
  1136. return 0;
  1137. }
  1138. }
  1139. //CP 약속셋 생성 시에는 자코드가 풀리면 안된다. CP배치를 통해 실처방 저장시 풀린다! (2008.01.22)
  1140. if( opener.model.getValue("/root/cp") == "S" || model.getValue("/root/cp") == "S" ){
  1141. return;
  1142. }
  1143. if ( objFlag == "child" ) {
  1144. srchRow = opener.javascript.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1145. } else {
  1146. srchRow = addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1147. }
  1148. srchRow ++;
  1149. for (var k=1; k <= srcNodeList.length; k++) {
  1150. if ( objFlag == "child" ) {
  1151. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1152. model.duplicate( destNode, direcSrc + "[" + k + "]", "*[" + srchRow + "]");
  1153. if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, hsctflag )) {
  1154. return 0;
  1155. }
  1156. } else {
  1157. var destNode = strDest;
  1158. model.duplicate( destNode, direcSrc + "[" + k + "]", "*[" + srchRow + "]");
  1159. if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, hsctflag )) {
  1160. return 0;
  1161. }
  1162. }
  1163. if ( objFlag == "child" ) {
  1164. srchRow = opener.javascript.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1165. } else {
  1166. srchRow = addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1167. }
  1168. srchRow ++;
  1169. }
  1170. }
  1171. } else if ( (prcpClsCd == "B2" || prcpClsCd == "B4" || prcpClsCd == "B6") && (getArrayData (drugmastspec, 0, 2, "^", "|" ) == "0" || getArrayData (drugmastspec, 0, 2, "^", "|" ) == "-")){
  1172. //검사대분류유형(testlrgkind) 그룹: 0, 1
  1173. //-일 때는 검체와 상관없는 그룹코드
  1174. var grupCond1 = model.getValue( strSrc + "[" + sendRow + "]/prcpcd" );
  1175. var grupCond3 = "";
  1176. var grupCond4 = "";
  1177. var popflag = "group"
  1178. if ( objFlag == "child" ) {
  1179. popflag = "child";
  1180. grupCond3 = opener.model.getValue ( "/root/init/prcpdd" );
  1181. grupCond4 = opener.model.getValue ( "/root/paminfo/list/insukind");
  1182. } else {
  1183. grupCond3 = model.getValue ( "/root/init/prcpdd" );
  1184. grupCond4 = model.getValue ( "/root/paminfo/list/insukind");
  1185. }
  1186. //구수가코드일 경우
  1187. if ( oldprcpflag == "Y" ) {
  1188. popflag = "oldprcp";
  1189. }
  1190. var drugmthdspccd = model.getValue ( strSrc + "[" + sendRow + "]/drugmthdspccd" );
  1191. var spccd = "";
  1192. var spcnm = "";
  1193. fGetSpc ( sendRow, popflag, objFlag )
  1194. if ( drugmthdspccd == "998" ) {
  1195. if ( getParameter ("SPMMO03500_rtn_useyn") == "Y" ) {
  1196. spccd = getParameter ( "SPMMO03500_rtn_spccd" );
  1197. spcnm = getParameter ( "SPMMO03500_rtn_spcscrnnm" );
  1198. }
  1199. clearParameter ( "SPMMO03500_rtn_useyn" );
  1200. clearParameter ( "SPMMO03500_rtn_spccd" );
  1201. clearParameter ( "SPMMO03500_rtn_spcscrnnm" );
  1202. } else if ( drugmthdspccd == "999" ) {
  1203. if ( getParameter ("SPMMO03400_rtn_useyn") == "Y" ) {
  1204. spccd = getParameter ( "SPMMO03400_rtn_spccd" );
  1205. spcnm = getParameter ("SPMMO03400_rtn_spcscrnnm" );
  1206. }
  1207. clearParameter ( "SPMMO03400_rtn_useyn" );
  1208. clearParameter ( "SPMMO03400_rtn_spccd" );
  1209. clearParameter ( "SPMMO03400_rtn_spcscrnnm" );
  1210. } else { //팝업이 뜨지 않을 때는 본체의 검체코드로 검색한다.
  1211. spccd = drugmthdspccd;
  1212. spcnm = model.getValue ( strSrc + "[" + sendRow + "]/drugmthdspccdnm" );
  1213. }
  1214. prcpGroupSrch ( grupCond1, grupCond3, grupCond4, spccd, getArrayData (drugmastspec, 0, 2, "^", "|" ), "getLisPrcpGroupInfo" );
  1215. if ( objFlag == "child" ) {
  1216. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1217. } else {
  1218. var destNode = strDest;
  1219. }
  1220. if ( grupSrc == null ) grupSrc = "/root/prcpgroup/prcplist";
  1221. var srcNodeList = model.instances(0).selectNodes( grupSrc );
  1222. for (var i=1; i<=srcNodeList.length; i++) {
  1223. if ( objFlag == "child" ) {
  1224. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1225. model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
  1226. if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag )) {
  1227. return 0;
  1228. }
  1229. if (!isNull(spccd)) {
  1230. if ( getArrayData (drugmastspec, 0, 2, "^", "|" ) != "-" ) {
  1231. opener.model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccd", spccd );
  1232. opener.model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccdnm", spcnm );
  1233. }
  1234. }
  1235. } else {
  1236. var destNode = strDest;
  1237. model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
  1238. if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag )) {
  1239. return 0;
  1240. }
  1241. if (!isNull(spccd)) {
  1242. if ( getArrayData (drugmastspec, 0, 2, "^", "|" ) != "-" ) {
  1243. model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccd", spccd );
  1244. model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccdnm", spcnm );
  1245. }
  1246. }
  1247. }
  1248. srchRow ++;
  1249. }
  1250. } else { //그룹코드 M, J 가 아닐 경우
  1251. if ( objFlag == "child" ) {
  1252. var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1253. model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1254. //전처방 때문에 duplicate => addPrcpSetValue 하는 것으로 수정
  1255. //먼저 set 하면 전처방 화면 내용이 수정되고 그로인해 처방키 초기화로 인해 D/C 시 에러
  1256. if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag )) {
  1257. return 0;
  1258. }
  1259. } else {
  1260. var destNode = strDest;
  1261. model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1262. //전처방 때문에 duplicate => addPrcpSetValue 하는 것으로 수정 (main에서는 필요없지만 구조를 맞추려 같이 고침)
  1263. //먼저 set 하면 전처방 화면 내용이 수정되고 그로인해 처방키 초기화로 인해 D/C 시 에러
  1264. if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag )) {
  1265. return 0;
  1266. }
  1267. }
  1268. if ( objFlag == "child" ) {
  1269. srchRow = opener.javascript.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1270. } else {
  1271. srchRow = addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1272. }
  1273. srchRow ++;
  1274. }
  1275. //model.addLog(" ***************** End Of addPrcpDetl()");
  1276. return srchRow; //검색 row 값을 넘겨준다.
  1277. }
  1278. /**
  1279. * @desc : 처방main에 넘긴 후에 기본값을 setting한다.
  1280. * @param : objFlag => child or ...
  1281. : strSrc => setting할 source node
  1282. : sendRow => setting할 row
  1283. : prcpInptFlag => 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  1284. : hsctflag => hsct 인지 표시
  1285. : inclprcpcd => 종속처방코드
  1286. * @return : true, false
  1287. * @authur : 마정민 2007. 4. 12
  1288. * @---------------------------------------------------
  1289. */
  1290. function addPrcpSetValue ( objFlag, strSrc , sendRow, prcpInptFlag, hsctflag, inclprcpno ) {
  1291. //model.addLog(" ************* Start Of addPrcpSetValue()");
  1292. var prcpdd = ""; //처방일
  1293. var prcpkindcd = ""; //처방종류변수
  1294. var pamInfoNode = "/root/paminfo/list";
  1295. var pid = ""; //환자번호
  1296. var indd = ""; //진료일자
  1297. var cretno = ""; //생성번호
  1298. var orddeptcd = ""; //담당부서
  1299. var orddrid = ""; //담당교수
  1300. var prcpgenrflag = ""; //외래입원구분
  1301. var prcpclscd = model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" );
  1302. var orddeptcd = "";
  1303. var org_prcpInptFlag = prcpInptFlag;
  1304. if ( isNull(prcpInptFlag)){
  1305. prcpInptFlag = model.getValue ( strSrc + "[" + sendRow + "]/prcpinptflag" );
  1306. }
  1307. if( (org_prcpInptFlag != "05" || (org_prcpInptFlag == "05" && model.getValue(strSrc + "[" + sendRow + "]/prcpinptflag") == "00")) && model.getValue (strSrc + "[" + sendRow + "]/prcpinptflag") != "35"){ //20100426 자가보유약일 때 prcpinptflag 35 로 지정한다 LYJ
  1308. model.setValue ( strSrc + "[" + sendRow + "]/prcpinptflag", prcpInptFlag ); //처방입력구분
  1309. prcpInptFlag = org_prcpInptFlag;
  1310. }
  1311. model.setValue ( strSrc + "[" + sendRow + "]/prcphistcd", "O" ); //처방이력코드:O
  1312. model.setValue ( strSrc + "[" + sendRow + "]/prcpsignflag", "2" ); //처방이력구분:2
  1313. model.setValue ( strSrc + "[" + sendRow + "]/prcprefseq", "0" ); //처방순서(전처방에 넘어올때도 있기때문에 0으로 클리어)
  1314. model.setValue ( strSrc + "[" + sendRow + "]/etcprcpflag", "-" ); //디폴트세팅.
  1315. //-- CP, 항암프로토콜일 경우 추가되는 saveflaginfo 값 셋팅 --//
  1316. if( prcpInptFlag == "05" || prcpInptFlag == "06" ){
  1317. if( model.getValue(strSrc + "[" + sendRow + "]/prcpcd") != "000000000033" ){
  1318. //처방명의 구분이 2개가 중복되어 저장되는 문제 -> 원처방명을 저장, 공통 지시처방의 원처방명은 "전달사항" 이므로, 공통 지시처방만 제외
  1319. model.setValue ( strSrc + "[" + sendRow + "]/prcpnm", model.getValue(strSrc + "[" + sendRow + "]/orgprcpnm") ); //makePrcpNm() 때문에 prcpnm->orgprcpnm
  1320. }
  1321. if( prcpInptFlag == "06" ){
  1322. model.makeValue ( "/root/save/saveflaginfo/cpgappno", appNo_SMMMO00110 ); //CP처방 or 프로토콜처방 no
  1323. model.makeValue ( "/root/save/saveflaginfo/prtlprcpstatus", prtlprcpstatus_SMMMO00110 ); //CP처방 or 프로토콜처방 저장 status
  1324. model.makeValue ( "/root/save/saveflaginfo/prtlflag", "10" ); //프로토콜구분
  1325. }
  1326. }else{
  1327. model.setValue ( strSrc + "[" + sendRow + "]/status", "I" );
  1328. }
  1329. //-- 셋팅 끝 --//
  1330. var drugmastspec = model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec") + "^";
  1331. var usge = model.getValue ( "/root/usge" );
  1332. var spcldrug = getArrayData ( drugmastspec + "^", 0, 23, "^", "|" );
  1333. //가정간호일때 시작일,종료일 바꿔준다.
  1334. if (usge == "home") {
  1335. model.setValue ( strSrc + "[" + sendRow + "]/tempcol6",model.getValue ( "/root/init/prcpfromdd" )); //시작일자
  1336. model.setValue ( strSrc + "[" + sendRow + "]/tempcol7",model.getValue ( "/root/init/prcptodd" )); //종료일자
  1337. //20080825 마정민 수정 가정간호처방 주사일 경우 자동으로 home 체크. 단 마약이 아닐경우. TPN일 경우 추가 20081013 by Moonsh
  1338. if ( prcpclscd == "A6" && spcldrug != "M" && getArrayData (drugmastspec , 0, 14, "^", "|" ) == "Y" ) {
  1339. model.setValue ( strSrc + "[" + sendRow + "]/selfprcpflag","Y"); //종료일자
  1340. }
  1341. }
  1342. model.setValue ( strSrc + "[" + sendRow + "]/prcpauthflag", model.getValue ( "/root/init/prcpauthflag" )); //처방권한구분
  1343. //수술예약번호 setting
  1344. if( !isNull (model.getValue ( "/root/operation/list/oprsrvno"))){
  1345. model.setValue ( strSrc + "[" + sendRow + "]/oprsrvno", model.getValue ( "/root/operation/list/oprsrvno"));
  1346. //by sonjy 20091120 심야가산 check 마취료처방 추가
  1347. if ( prcpclscd == "H2" || model.getValue ( strSrc + "[" + sendRow + "]/tempcol2" ) == "13|01|00" ) { //수술처방인경우
  1348. //응급으로 수술예약정보가 있다면 erprcpflag를 Y로 setting 한다.
  1349. var opflagcd = model.getValue("/root/operation/list/opflagcd"); // opflagcd 1:정규, 2:응급, 3:추가
  1350. if(opflagcd == "2"){
  1351. //model.setValue("/root/main/prcp/prcplist/erprcpflag", "Y");
  1352. model.setValue ( strSrc + "[" + sendRow + "]/erprcpflag", "Y");
  1353. }
  1354. //수술시작시간이 오후 5시 이후에는 야간으로 체크한다.
  1355. var opfromtmcd = model.getValue("/root/operation/list/opfromtmcd"); //opfromtmcd 수술시작시간
  1356. //if(eval(opfromtmcd) > 170000 ) { //야간 시간 기준을 물어볼 것
  1357. //수술및 마취료처방시 심야기준 08시이전, 18시 이후 by sonjy 20081211
  1358. if(eval(opfromtmcd) >= 180000 || eval(opfromtmcd) < 80000 ) {
  1359. model.setValue ( strSrc + "[" + sendRow + "]/nigtprcpflag", "Y");
  1360. }
  1361. //수술액팅일자 = 확정수술일자
  1362. model.setValue ( strSrc + "[" + sendRow + "]/tempcol22", model.getValue ( "/root/operation/list/opcnfmdd") );
  1363. }
  1364. } else {
  1365. // CP 에서는 수동으로 수술예약번호를 mapping 한다.
  1366. if( model.getValue ( "/root/cp" ) != "Y" ){
  1367. model.setValue ( strSrc + "[" + sendRow + "]/oprsrvno", "0" );
  1368. }else{
  1369. if( isNull (model.getValue (strSrc + "[" + sendRow + "]/oprsrvno" )))
  1370. model.setValue ( strSrc + "[" + sendRow + "]/oprsrvno", "0" );
  1371. }
  1372. }
  1373. var srcNodeList = model.instances(0).selectNodes( "/root/paminfo" );
  1374. if ( srcNodeList.length == 0 ){
  1375. messageBox ( "환자정보가", "E014" );
  1376. return false;
  1377. }
  1378. prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  1379. pid = model.getValue ( pamInfoNode + "/pid" );
  1380. orddeptcd = model.getValue ( pamInfoNode + "orddeptcd" );
  1381. //by sonjy 2008-08-25 건진일 경우 check추가.
  1382. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ) {
  1383. indd = model.getValue ( pamInfoNode + "/orddd" );
  1384. orddrid = model.getValue ( pamInfoNode + "/orddrid" );
  1385. } else {
  1386. indd = model.getValue ( pamInfoNode + "/indd" );
  1387. orddrid = model.getValue ( pamInfoNode + "/medispclid" );
  1388. }
  1389. cretno = model.getValue ( pamInfoNode + "/cretno" );
  1390. orddeptcd = model.getValue ( pamInfoNode + "/orddeptcd" );
  1391. //2011.11.07 엄영만 선택진료여부 및 선택진료의사 셋팅
  1392. if (prcpclscd != "D2" || usge != "prcp") { // 처방시에 병리처방은 의뢰지 팝업후 검체코드설정되면 선택의사 설정 함.(의뢰지 작성후 팝업 되도록) 2011.11.25 엄영만.
  1393. fSetPrcpSpecValue(strSrc, sendRow, prcpInptFlag);
  1394. }
  1395. //-- CP,항암프로토콜일 경우, 처방일과 처방종류가 일률적으로 입력되지 않는다 --//
  1396. if( prcpInptFlag != "05" && prcpInptFlag != "06" ){
  1397. prcpdd = model.getValue ( "/root/init/prcpdd" ); //처방일
  1398. prcpkindcd = model.getValue ("/root/init/prcpkindcd"); //처방종류(정규,추가...)
  1399. //외래이고 약속 set/전처방 copy시 입원전 검사일 경우 prcpkindcd를 20으로 초기화하지 않는다.
  1400. //by sonjy 김민선 선생님 요청사항 20080925
  1401. if( prcpgenrflag == "O" &&
  1402. (model.getValue ( strSrc + "[" + sendRow + "]/prcpkindcd" ) == "90" ||
  1403. model.getValue ( strSrc + "[" + sendRow + "]/prcpkindcd") == "95" ) ){
  1404. prcpkindcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpkindcd" ) ;
  1405. }
  1406. }else{
  1407. //JJE-
  1408. prcpdd = model.getValue ( strSrc + "[" + sendRow + "]/prcpdd" );
  1409. prcpkindcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpkindcd" );
  1410. if(isNull(prcpdd)){
  1411. prcpdd = model.getValue ( "/root/init/prcpdd" );
  1412. }
  1413. //JJE root/init/prcpdd 를 해당 미래일자로 변경... (2008.09.11)
  1414. if( prcpdd != model.getValue("/root/init/prcpdd") && prcpdd > model.getValue("/root/init/prcpdd") ){
  1415. model.setValue("/root/init/prcpdd", prcpdd);
  1416. cmb_prcpdd.refresh();
  1417. }
  1418. var prcpsetcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpsetcd" );
  1419. if(prcpsetcd != "-"){
  1420. //풀린 자코드에 처방종류 및 처방입력구분을 모코드와 동일하게 넣어줌
  1421. var prcpddNode = instance1.selectSingleNode("/root/main/prcp/prcplist[prcpcd='" + prcpsetcd + "']/prcpdd");
  1422. var prcpkindcdNode = instance1.selectSingleNode("/root/main/prcp/prcplist[prcpcd='" + prcpsetcd + "']/prcpkindcd");
  1423. var etclnkspecNode = instance1.selectSingleNode("/root/main/prcp/prcplist[prcpcd='" + prcpsetcd + "']/etclnkspec");
  1424. var prcpinptflagNode = instance1.selectSingleNode("/root/main/prcp/prcplist[prcpcd='" + prcpsetcd + "']/prcpinptflag");
  1425. if( prcpddNode != null ){
  1426. prcpdd = prcpddNode.text;
  1427. }
  1428. if( prcpkindcdNode != null ) prcpkindcd = prcpkindcdNode.text;
  1429. if( etclnkspecNode != null ){
  1430. model.makeValue ( strSrc + "[" + sendRow + "]/etclnkspec", etclnkspecNode.text );
  1431. }
  1432. if( prcpinptflagNode != null ){
  1433. model.makeValue ( strSrc + "[" + sendRow + "]/prcpinptflag", prcpinptflagNode.text );
  1434. }
  1435. }
  1436. model.makeValue ( strSrc + "[" + sendRow + "]/prcphopedd", prcpdd );
  1437. //-JJE
  1438. }
  1439. //마취기록화면에서 처방화면을 띄우면
  1440. //마취처방일 경우 필수입력구분이 1이면 수술시간과, 수술구분을 넣어준다. 넣어지는 기준은 마취처방상세팝업과 동일하다.
  1441. if ( model.getValue ( "/root/anst/paramyn" ) == "Y" ) {
  1442. model.setValue ( strSrc + "[" + sendRow + "]/prcpinptflag", "27" );
  1443. if ( prcpclscd == "I2" || prcpclscd == "I4" ){ //마취
  1444. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcpessninptflag" ) == "1" ) { // 필수입력구분이 1
  1445. var earncls = model.getValue ( strSrc + "[" + sendRow + "]/tempcol2" );
  1446. if ( earncls != "04|01|00" && earncls != "05|01|00" ) { //마취구분
  1447. model.setValue ( strSrc + "[" + sendRow + "]/opansflagcd", model.getValue ( "/root/anst/opansflagcd" ));
  1448. }
  1449. model.setValue ( strSrc + "[" + sendRow + "]/ansttm", model.getValue ( "/root/anst/ansttm" ));//마취시간
  1450. model.setValue ( strSrc + "[" + sendRow + "]/clinccmtcnts", model.getValue ( "/root/anst/anstfromdt" ) + "|" + model.getValue ( "/root/anst/ansttodt" ));
  1451. }
  1452. }
  1453. } else {
  1454. if ( prcpclscd == "I2" || prcpclscd == "I4" ){ //마취
  1455. model.setValue ( strSrc + "[" + sendRow + "]/clinccmtcnts", "-" );
  1456. }
  1457. }
  1458. model.setValue ( strSrc + "[" + sendRow + "]/prcphopedd",prcpdd); //처방희망일자
  1459. //전처방이나 약속처방에서 시행부서가 현재 존재 하는 부서인지 체크 2012.10.29 엄영만
  1460. if ( prcpInptFlag == "01" || prcpInptFlag == "02" ) {
  1461. var bfprcpexecdeptcd = model.getValue( strSrc + "[" + sendRow + "]/prcpexecdeptcd" );
  1462. var CheckExecdeptcdNode;
  1463. if ( objFlag == "child" ) {
  1464. CheckExecdeptcdNode = opener.model.instance1.selectNodes( "/root/orddept/dept[deptcd='" + bfprcpexecdeptcd + "']" );
  1465. } else {
  1466. CheckExecdeptcdNode = model.instance1.selectNodes( "/root/orddept/dept[deptcd='" + bfprcpexecdeptcd + "']" );
  1467. }
  1468. if(CheckExecdeptcdNode == null || CheckExecdeptcdNode.length == 0) {
  1469. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd", "-" );
  1470. }
  1471. }
  1472. //전처방 clear
  1473. if ( prcpInptFlag == "01" ) {
  1474. // 전처방 복사시 초기화해야 할 것 ( PAMPKSpec, PrcpKindCd 등은 처방 복사시 다시 setting 해줌 )
  1475. if ( prcpclscd == "B2" ) { // 진검 전처방에서 응급 체크되어 있는 것은 복사 시에도 응급 체크되어지도록 요청 - 20081127 by MoonSH
  1476. var erprcpflag = model.getValue ( strSrc + "[" + sendRow + "]/erprcpflag" );
  1477. if ( erprcpflag == "Y") {
  1478. model.setValue ( strSrc + "[" + sendRow + "]/erprcpflag", "Y" );
  1479. } else {
  1480. model.setValue ( strSrc + "[" + sendRow + "]/erprcpflag", "N" );
  1481. }
  1482. } else {
  1483. model.setValue ( strSrc + "[" + sendRow + "]/erprcpflag", "N" ); //2008-01-28 약국요청 응급은 복사되면 안됨
  1484. }
  1485. model.setValue ( strSrc + "[" + sendRow + "]/rgstdt", "" ); //rgstdt: 등록일시
  1486. model.setValue ( strSrc + "[" + sendRow + "]/rgstridnm", "" ); //rgstridnm: 등록자명
  1487. model.setValue ( strSrc + "[" + sendRow + "]/tempprcpflag", "N" ); //tempprcpflag: 임시처방구분
  1488. model.setValue ( strSrc + "[" + sendRow + "]/etcprcpresncd", "-" ); //etcprcpresncd: 응급의학관리료 사유 (코드정의서 M0012 참조), 수혈반납 및 폐기사유코드 (코드정의서 M0037, M0038 참조), 재활처방 마감일자
  1489. model.setValue ( strSrc + "[" + sendRow + "]/ordreqlnkno", "0" ); //ordreqlnkno: 진료의뢰연결번호
  1490. model.setValue ( strSrc + "[" + sendRow + "]/testreqlnkno", "0" ); //testreqlnkno: 검사의뢰연결번호
  1491. model.setValue ( strSrc + "[" + sendRow + "]/prcplnkdd", "00000000" ); //prcplnkdd: 임시처방에 대한 연계 일자
  1492. model.setValue ( strSrc + "[" + sendRow + "]/prcplnkno", "0" ); //prcplnkno: 임시처방에 대한 연계 번호
  1493. model.setValue ( strSrc + "[" + sendRow + "]/prtlno", "0" ); //prtlno: 프로토콜SET에 대한 코드로 일련번호 형태로 관리
  1494. model.setValue ( strSrc + "[" + sendRow + "]/contprcpspec", "-" ); //contprcpspec: 연속처방내역
  1495. model.setValue ( strSrc + "[" + sendRow + "]/etclnkspec", "-" ); //etclnkspec: 항암프로토콜번호|CP번호
  1496. model.setValue ( strSrc + "[" + sendRow + "]/tempcol6", "" ); //전처방 화면 display clear
  1497. model.setValue ( strSrc + "[" + sendRow + "]/tempcol7", "" ); //전처방 화면 display clear
  1498. var antibiotics = getArrayData ( model.getValue ( strSrc + "[" + sendRow + "]/tempcol8" ) + "^", 0, 0, "^", "|" );
  1499. if ( antibiotics != "antibiotics" ){ //20081020: 마정민수정. 전처방에 항생제 값이 setting 되어 있다면 클리어 시키지 않는다.
  1500. model.setValue ( strSrc + "[" + sendRow + "]/tempcol8", "" ); //전처방 화면 display clear
  1501. }
  1502. model.setValue ( strSrc + "[" + sendRow + "]/tempcol9", "" ); //전처방 화면 display clear
  1503. model.setValue ( strSrc + "[" + sendRow + "]/tempcol12", "" ); //전처방 화면 display clear
  1504. model.setValue ( strSrc + "[" + sendRow + "]/tempcol13", "" ); //전처방 화면 display clear
  1505. model.setValue ( strSrc + "[" + sendRow + "]/tempcol14", "" ); //전처방 화면 display clear
  1506. model.setValue ( strSrc + "[" + sendRow + "]/tempcol15", "" ); //전처방 화면 display clear
  1507. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc1", "" ); //건진 SET처방
  1508. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc3", "" ); //OCR출력정보
  1509. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc4", "" ); //귀가유치용물품여부
  1510. model.setValue ( strSrc + "[" + sendRow + "]/drprcpetc5", "" ); //multi-day no
  1511. model.setValue ( strSrc + "[" + sendRow + "]/druglnkno", "0" );
  1512. model.setValue ( strSrc + "[" + sendRow + "]/drgacptflag", "-" ); // DRG인정 전처방 복사시 clear
  1513. if ( prcpclscd == "B2" || prcpclscd == "B6") {
  1514. var contyn = getArrayData ( drugmastspec, 0, 5, "^", "|" );
  1515. if ( contyn == "Y" ) {
  1516. var conttestintvlflag = model.getValue ( strSrc + "[" + sendRow + "]/diagtestconttestintvlflag" );
  1517. if ( conttestintvlflag == "N" ) {
  1518. model.setValue ( strSrc + "[" + sendRow + "]/diagtestconttestcdspec", "-" );
  1519. model.setValue ( strSrc + "[" + sendRow + "]/drugrateqty", "-" );
  1520. model.setValue ( strSrc + "[" + sendRow + "]/diagtestconttestorgtims", "1" );
  1521. } else {
  1522. var cdnm = model.getValue ( "/root/init/conttestintvlflag/M0545[cdid=" + conttestintvlflag + "]/cdnm" );
  1523. var diagtestconttestbasetm = model.getValue ( strSrc + "[" + sendRow + "]/diagtestconttestbasetm" );
  1524. model.setValue ( strSrc + "[" + sendRow + "]/diagtestconttestcdspec", diagtestconttestbasetm + cdnm );
  1525. model.setValue ( strSrc + "[" + sendRow + "]/drugrateqty", diagtestconttestbasetm );
  1526. model.setValue ( strSrc + "[" + sendRow + "]/diagtestconttestorgtims", "1" );
  1527. }
  1528. }
  1529. }
  1530. }
  1531. //-- CP,항암프로토콜일 경우 etclnkspec 컬럼 값 셋팅 --//
  1532. else if( prcpInptFlag == "05" ){
  1533. //Hsct 처방일 경우, 조회해 온 자코드들에 값을 setting
  1534. model.setValue(strSrc + "[" + sendRow + "]/status", "I");
  1535. //model.setValue(strSrc + "[" + sendRow + "]/prcphopedd", model.getValue ( "/root/init/prcpdd" )); //JJE(-)
  1536. //cp는 이미 인스턴스에 값이 들어있음
  1537. if( isNull(model.getValue(strSrc + "[" + sendRow + "]/etclnkspec")) ){
  1538. model.makeValue ( strSrc + "[" + sendRow + "]/etclnkspec", "-" ); //CP처방 or 프로토콜처방 no
  1539. }
  1540. }
  1541. else if( prcpInptFlag == "06" ){
  1542. //항암은 이미 인스턴스에 값이 들어있음
  1543. model.makeValue ( strSrc + "[" + sendRow + "]/etclnkspec", etclnkspecValue_SMMMO00110 ); //CP처방 or 프로토콜처방 no
  1544. //model.makeValue ( strSrc + "[" + sendRow + "]/cpno", model.getValue ( strSrc + "[" + sendRow + "]/prtldg") ); //CpNo 에 프로토콜 차수 저장
  1545. }
  1546. else if( prcpInptFlag == "07" ){ //임상시험 프로토콜에서 불러올때.
  1547. if(prcpgenrflag == "I" || prcpgenrflag == "D"){
  1548. model.makeValue ( strSrc + "[" + sendRow + "]/subcretno", model.getValue("/root/init/subjsubcretno") ); // 임상프로토콜에서 처방시 임상유형의 cretno를 subcretno로 세팅
  1549. }
  1550. }
  1551. //-- CP,항암프로토콜일 경우 etclnkspec 컬럼 값 셋팅 끝 --//
  1552. model.setValue ( strSrc + "[" + sendRow + "]/inclprcpcd", "-" ); //종속처방
  1553. model.setValue ( strSrc + "[" + sendRow + "]/inclprcpno", "0" );//종속처방번호
  1554. //20090518 마정민수정. 입원일 경우 전처방, 약속처방 복사처방의 선처치를 제외한다.
  1555. if( prcpgenrflag != "O" && prcpgenrflag != "S" ) {
  1556. if ( prcpInptFlag == "01" || prcpInptFlag == "02" ) {
  1557. if ( model.getValue ( strSrc + "[" + sendRow + "]/precureprcpflag" ) == "Y" ) {
  1558. if( prcpclscd.substring(0,1) == "A" || prcpclscd == "M2" ) model.setValue ( strSrc + "[" + sendRow + "]/precureprcpflag", "N" );
  1559. }
  1560. }
  1561. }
  1562. if ( prcpclscd == "F2" && prcpgenrflag == "O") {
  1563. model.setValue ( strSrc + "[" + sendRow + "]/rehbprcpenddd", prcpdd ); //재활마감일
  1564. } else if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) { //약처방
  1565. // 원내처방사유 SETTING
  1566. fHosinPrcpResncdSed ( objFlag, strSrc, sendRow );
  1567. //2010. 12. 29 김영학 약처방 원외일 경우 시행부서가 셋팅되어 있지 않으면 기본 외래약국으로 셋팅해준다.
  1568. if( prcpgenrflag != "O" && prcpgenrflag != "S" ) {
  1569. if ( model.getValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag" ) == "O"
  1570. && (model.getValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd" ) == "-" || model.getValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd" ) == "D")) {
  1571. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd" , fGetHardCDList("Y", 260, 3))
  1572. }
  1573. }
  1574. //AST 검사 체크
  1575. var astyn = getArrayData ( drugmastspec, 0, 22, "^", "|" );
  1576. if ( astyn == "Y" ) {
  1577. model.setValue ( strSrc + "[" + sendRow + "]/asttestflag", "Y" );
  1578. }
  1579. //응급 flag 가 Y인 경우는 1회만 가능
  1580. if ( model.getValue ( strSrc + "[" + sendRow + "]/erprcpflag" ) == "Y" ||
  1581. model.getValue ( strSrc + "[" + sendRow + "]/prnprcpflag" ) == "Y"
  1582. ) {
  1583. var prcptims = model.getValue ( strSrc + "[" + sendRow + "]/prcptims" );
  1584. if ( prcptims != "1" ) {
  1585. //1이 아닌 경우는 1로 바꿔주고 경구약인 경우는 용법도 바꿔준다.
  1586. model.setValue ( strSrc + "[" + sendRow + "]/prcptims", "1" );
  1587. var prcpqty = model.getValue ( strSrc + "[" + sendRow + "]/prcpqty" );
  1588. var prcpvol = model.getValue ( strSrc + "[" + sendRow + "]/prcpvol" );
  1589. if ( prcpclscd == "A2" ) {
  1590. fBaseMthd(sendRow);
  1591. }
  1592. if ( prcpclscd == "A2" || prcpclscd == "A4" ) {
  1593. if ( prcptims != "0" ) {
  1594. prcpqty = (eval(prcpqty)*1000/eval(prcptims));
  1595. prcpvol = (eval(prcpvol)*1000/eval(prcptims));
  1596. model.setValue ( strSrc + "[" + sendRow + "]/prcpqty", Math.round ( prcpqty ) / 1000);
  1597. model.setValue ( strSrc + "[" + sendRow + "]/prcpvol", Math.round ( prcpvol ) / 1000);
  1598. }
  1599. }
  1600. }
  1601. }
  1602. //by sonjy 20081216 외래일경우 전처방/약속처방에서 copy시 약/주사에 한해 수행부서를 마스터의 부서로 초기화
  1603. //영수증의 환자 가야할곳이 병동약국으로 찍혀 나오는 오류 때문.
  1604. //20081230 마정민수정 변환조건을 병동약국으로 축소함
  1605. if( model.getValue( strSrc + "[" + sendRow + "]/prcpexecdeptcd" ) == "3240300000" && prcpgenrflag == "O" && ( prcpInptFlag == "01" || prcpInptFlag == "02" )) {
  1606. var sTmp23 = model.getValue( strSrc + "[" + sendRow + "]/tempcol23" );
  1607. if( !isNull(sTmp23) && sTmp23 != "-" ){
  1608. model.setValue( strSrc + "[" + sendRow + "]/prcpexecdeptcd", sTmp23 );
  1609. }
  1610. }
  1611. //평생제한처방체크(B형간염치료제)
  1612. var iFind3 = model.getValue ( "/root/initsrch/prcpetccnts/limprcpcd" ).search( prcpcd );
  1613. if ( iFind3 >= 0 ) {
  1614. model.setValue ( strSrc + "[" + sendRow + "]/tempcol25", "Y" );
  1615. }
  1616. } else if ( prcpclscd == "03" ) { //보호자식일 때는 procerdietflag 을 Y로 바꿈
  1617. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" ) == "Q4131004" ) {
  1618. model.setValue ( strSrc + "[" + sendRow + "]/procerdietflag", "Y" );
  1619. }
  1620. } else if ( prcpclscd == "B4" ){
  1621. if ( prcpgenrflag == "O" ) {
  1622. model.setValue ( strSrc + "[" + sendRow + "]/prepprcpflag", "N" );
  1623. } else {
  1624. model.setValue ( strSrc + "[" + sendRow + "]/prepprcpflag", "Y" );
  1625. }
  1626. }
  1627. // hsct 체크
  1628. if ( hsctflag == "Y" ) {
  1629. model.setValue ( strSrc + "[" + sendRow + "]/hsctlnkno", model.getValue ( "/root/init/hsctlnkno" )); //HSCT
  1630. model.setValue ( strSrc + "[" + sendRow + "]/hscttempprcpflag", "Y" ); //HSCT
  1631. } else if ( hsctflag == "M" ){
  1632. model.setValue ( strSrc + "[" + sendRow + "]/hsctlnkno", model.getValue ( "/root/init/hsctlnkno" )); //HSCT
  1633. model.setValue ( strSrc + "[" + sendRow + "]/hscttempprcpflag", "N" ); //HSCT
  1634. }
  1635. if ( !isNull(inclprcpno) && inclprcpno != "0" ) { //종속처방 처리
  1636. var prcpcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" );
  1637. //initsrch에서 가져온 종속처방 instance에 값이 있으면 종속처방 코드와 번호를 박아준다.
  1638. var prcpsetcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpsetcd" );
  1639. var inclprcpcd = model.getValue ( "/root/initsrch/inclprcpcnts[snglcd='" + prcpcd + "' and calcscorcdgrup='" + prcpsetcd + "']/inclprcpcd" );
  1640. var calcscorcdgrup = "";
  1641. if ( isNull(inclprcpcd)) {
  1642. //본체에도 코드를 박아준다.
  1643. calcscorcdgrup = model.getValue ( "/root/initsrch/inclprcpcnts[calcscorcdgrup='" + prcpcd + "']/inclprcpcd" ); // GROUP 처방
  1644. } else {
  1645. if ( prcpgenrflag == "O" ) {
  1646. //외래일경우 약, 주사 에 원내처방사유 검사 수술처리에 사용
  1647. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ){
  1648. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );//원내
  1649. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "55" );//원내처방사유(원내처방사유 검사 수술처리에 사용)
  1650. }
  1651. }
  1652. }
  1653. if ( !isNull(inclprcpcd) || !isNull(calcscorcdgrup)) {
  1654. model.setValue ( strSrc + "[" + sendRow + "]/inclprcpno", inclprcpno ); //종속처방번호
  1655. if ( isNull(inclprcpcd)){
  1656. model.setValue ( strSrc + "[" + sendRow + "]/inclprcpcd", calcscorcdgrup ); //종속처방
  1657. } else {
  1658. model.setValue ( strSrc + "[" + sendRow + "]/inclprcpcd", inclprcpcd ); //종속처방
  1659. }
  1660. model.setValue ( "/root/init/inclprcpno", inclprcpno );
  1661. var remainder = inclprcpno%2;
  1662. if ( objFlag == "child" ){
  1663. if ( remainder == 1 ) {
  1664. model.setValue ( strSrc + "[" + sendRow + "]/tempcol10", "#eaeaea" );
  1665. } else {
  1666. model.setValue ( strSrc + "[" + sendRow + "]/tempcol10", "#ffffcc" );
  1667. }
  1668. } else {
  1669. if ( remainder == 1 ) {
  1670. model.setValue ( strSrc + "[" + sendRow + "]/tempcol10", "#eaeaea" );
  1671. } else {
  1672. model.setValue ( strSrc + "[" + sendRow + "]/tempcol10", "#ffffcc" );
  1673. }
  1674. }
  1675. }
  1676. }
  1677. /* by sonjy 20091019 요청번호:3667
  1678. * 전처방(01)과 약속처방(02)을 복사하여 처방시 처방일수가 1일로 수정이 되도록
  1679. * => 무조건 1로 SETTING처리
  1680. */
  1681. var calcmthdcd = getArrayData ( drugmastspec , 0, 26, "^", "|" );
  1682. if ( //model.getValue(strSrc + "[" + sendRow + "]/prcpinptflag") == "01" && model.getValue(strSrc + "[" + sendRow + "]/prcpinptflag") == "02" &&
  1683. prcpclscd.substring(0,1) == "A" && calcmthdcd == "4" && model.getValue ( strSrc + "[" + sendRow + "]/prcpdayno" ) > 1 ) {
  1684. model.setValue ( strSrc + "[" + sendRow + "]/prcpdayno", "1" );
  1685. }
  1686. /*by sonjy 20091019
  1687. * 외래처방과 퇴원,퇴원호외래,외출외박처방(응급실,DSC 퇴원 포함)에만 해당으로, 4번에 해당하지 않는 약품 (계산법이 1,2,3,5번)을 처방할 때 처방일수가 0 으로 되도록
  1688. * (0 으로 저장시 처방일수를 넣으라는 메시지가 뜨도록 : 현재 되고 있는 기능임)
  1689. * 전처방과 약속처방, 프로토콜처방을 복사하여 처방시에는 제외 => 즉, 처방검색시에만 적용하되 MSET제외
  1690. */
  1691. if ( prcpclscd.substring(0,1) == "A" && calcmthdcd != "4" && prcpInptFlag == "00" &&
  1692. ( model.getValue ( "/root/patflag/list/prcpgenrflag" ) == "O" || model.getValue ( "/root/init/prcpkindcd" ) == "50" ||
  1693. model.getValue ( "/root/init/prcpkindcd" ) == "60" || model.getValue ( "/root/init/prcpkindcd" ) == "70" ) ) {
  1694. if( model.getValue ( strSrc + "[" + sendRow + "]/inclprcpno") == "0" || model.getValue ( strSrc + "[" + sendRow + "]/inclprcpno") == "-" ) {
  1695. model.setValue ( strSrc + "[" + sendRow + "]/prcpdayno", "0" );
  1696. }
  1697. }
  1698. model.setValue ( strSrc + "[" + sendRow + "]/prcpgenrflag", prcpgenrflag ); //처방발생구분
  1699. model.setValue ( strSrc + "[" + sendRow + "]/prcpkindcd", prcpkindcd ); //처방종류
  1700. model.setValue ( strSrc + "[" + sendRow + "]/pampkspec", pid + "|" + indd + "|" + cretno + "|" + orddeptcd + "|" + orddrid ); //pampkspec : 등록번호|진료일자|생성번호|진료과|담당의 // 원무PK내역
  1701. model.setValue ( strSrc + "[" + sendRow + "]/prcppkspec", prcpdd + "|0|0|" + getUserInfo("dutplceinstcd")); //처방키: 처방일자|처방번호|처방이력번호|기관코드
  1702. //20081007 마정민 수정
  1703. //원래 회처방 불가
  1704. //수혈, 영상, Angio, 핵의학영상, 병리, 기능, RT, 수술, 마취, 마취약제, 재료, 기타 이고 마이그레이션 데이터는 1로 setting
  1705. //추가 처치 H4
  1706. //20090514 마정민추가 K2 치과
  1707. if ( model.getValue ( strSrc + "[" + sendRow + "]/tempcol20" ) == "Y" && (
  1708. prcpclscd == "B4" || prcpclscd == "C2" || prcpclscd == "C4" || prcpclscd == "C6" ||
  1709. prcpclscd == "D2" || prcpclscd == "E2" || prcpclscd == "G2" || prcpclscd == "H2" ||
  1710. prcpclscd == "I2" || prcpclscd == "I4" || prcpclscd == "M2" || prcpclscd == "Z0" ||
  1711. prcpclscd == "H4" || prcpclscd == "K2")) {
  1712. model.setValue ( strSrc + "[" + sendRow + "]/prcptims", "1" ); //처방발생구분
  1713. }
  1714. //20090122 마정민수정: 변경요청번호 670. 단순 방사선 예약 자동 팝업요청
  1715. //20090709 CHC, 단순방사선예약자동팝업 병원별 적용
  1716. var raypopwndcheckyn = model.getValue ( "/root/initsrch/raypopwndcheckyn/trgtcd" );
  1717. if ( prcpgenrflag == "O" && model.getValue( strSrc + "[" + sendRow + "]/tempcol2" ).length > 2 && model.getValue( strSrc + "[" + sendRow + "]/tempcol2" ).substring( 0, 2 ) == "18" && usge == "prcp" ) {
  1718. var msgTitle = "[영상]" + "[" + model.getValue( strSrc + "[" + sendRow + "]/prcpcd" ) + ":" + model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ) + "]";
  1719. if (raypopwndcheckyn != "Y") {
  1720. if (window.alert( "단순 방사선 검사를 당일 시행 하시겠습니까? [예:당일,아니요:예약]", msgTitle, "36" ) == "7" ){
  1721. model.setValue( strSrc + "[" + sendRow + "]/prcphopedd","99991231" );
  1722. }
  1723. }
  1724. }
  1725. //20090827 차현철, 치료내시경예약 지시처방일 경우 처방명 선택 팝업창 호출
  1726. var escopedirecprcpcd = model.getValue ( "/root/initsrch/escopedirecprcpcd/trgtcd" );
  1727. if ( escopedirecprcpcd == model.getValue( strSrc + "[" + sendRow + "]/prcpcd" )) {
  1728. setParameter ( "SPMMB02200_cond2", "5" );
  1729. fPrcpModal ( "SPMMB02200", 50, 50 );
  1730. model.setValue (strSrc + "[" + sendRow + "]/prcpnm", getParameter ( "SPMMB02200_clinccmt" ));
  1731. clearParameter("SPMMB02200_clinccmt");
  1732. }
  1733. //SON0919 G3아닌 응급일경우 원내사유 PRCPKINDCD에 의해 움직이므로 PRCPKINDCD가 설정된 후 다시 호출 start
  1734. //퇴원처방 전처방에서 추가처방모드에서 복사시 퇴원처방 원내사유가 적용되는것을 막기 위함임.
  1735. var g3flag = "";
  1736. if( objFlag == "child") g3flag = opener.model.getValue ( "/root/init/erresn" );
  1737. else g3flag = model.getValue ( "/root/init/erresn" );
  1738. if( (prcpgenrflag == "E" && g3flag!= "G3") || prcpgenrflag == "D" ){
  1739. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) { //약처방
  1740. // 원내처방사유 SETTING
  1741. fHosinPrcpResncdSed ( objFlag, strSrc, sendRow );
  1742. }
  1743. }
  1744. //SON0919 end
  1745. if ( (prcpkindcd == "50" || prcpkindcd == "60" ) && getArrayData (drugmastspec, 0, 20, "^", "|" ) == "Y" ) {
  1746. //2008-01-18 김은희 약사 모든처방 자가주사가 가능하게 수정
  1747. if ( prcpclscd == "A6") {
  1748. model.setValue ( strSrc + "[" + sendRow + "]/selfprcpflag", "Y" );
  1749. }
  1750. }
  1751. //20080721 마정민 임상처방에서 넘어오는 것은 clincstdyflag를 Y로 처리
  1752. if ( prcpInptFlag == "07" ) {
  1753. model.setValue ( strSrc + "[" + sendRow + "]/clincstdyflag", "Y" ); //
  1754. }
  1755. var chkprcpcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpcd")
  1756. /******************** 선처치, 과내검사 시행부서처리 *******************/
  1757. var iFind = -1;
  1758. var precureexecdeptchk = model.getValue ( "/root/initsrchprcp/prcpetccnts/precureprcpcd" );
  1759. // 기존 search함수에서 무결성이 어긋나 개별 체크 변경 - 20081008 by MoonSH
  1760. var precureprcpflag = "";
  1761. var prcpexecdeptcd = "";
  1762. if( chkprcpcd.charAt(0) != "*" ){
  1763. var firStage = precureexecdeptchk.split("^");
  1764. for( i=0; i<firStage.length; i++ ){
  1765. var secStage = firStage[i].split("|");
  1766. if( chkprcpcd == secStage[0]) {
  1767. iFind = 1 ;
  1768. precureprcpflag = secStage[1] ;
  1769. prcpexecdeptcd = secStage[2] ;
  1770. break ;
  1771. }
  1772. }
  1773. }
  1774. if ( parseInt(iFind) >= 0) {
  1775. var charchk = "";
  1776. var arraychk = "";
  1777. if ( precureprcpflag == "Y" ) {
  1778. if( prcpgenrflag == "I" || prcpgenrflag == "E" || prcpgenrflag == "D" ) {
  1779. //입원일 경우 선처치 적용시 약/재료코드는 제외한다. 정보관리팀 요구변경 요청서 2008-11-08 미액팅 분석 후 액팅시점 변경건
  1780. //by sonjy 20081115
  1781. if( prcpclscd.substring(0,1) != "A" && prcpclscd != "M2" ) model.setValue ( strSrc + "[" + sendRow + "]/precureprcpflag", "Y" );
  1782. } else {
  1783. model.setValue ( strSrc + "[" + sendRow + "]/precureprcpflag", "Y" );
  1784. }
  1785. }
  1786. if ( prcpexecdeptcd != "X" && !isNull ( prcpexecdeptcd ) ) {
  1787. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd", prcpexecdeptcd );
  1788. }
  1789. }
  1790. if ( model.getValue ( "/root/addprcp" ) == "Y" && model.getValue ( strSrc + "[" + sendRow + "]/inclprcpno") == "0" ) {
  1791. //시행부서 수혈, 식이, 재활, 마취, 치과, 방사선치료, 기타를 제외한 처방은 자동 선처치. 단 m-set은 예외
  1792. if ((model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "A2" ||
  1793. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "A4" ||
  1794. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "A6" ||
  1795. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "B2" ||
  1796. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "B6" ||
  1797. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "C2" ||
  1798. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "C4" ||
  1799. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "C6" ||
  1800. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "D2" ||
  1801. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "E2" ||
  1802. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "H2" ||
  1803. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "H4" ||
  1804. model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) == "M2" ) &&
  1805. model.getValue ( "/root/admininfo" ).substring (0,1) != "Y" ) {
  1806. model.setValue ( strSrc + "[" + sendRow + "]/precureprcpflag", "Y" );
  1807. }
  1808. }
  1809. // 시행부서 처방 가퇴원 누락처방 사유 및 일시 셋팅 - 20081221 by MoonSH
  1810. if ( model.getValue ( "/root/addprcp" ) == "Y" && model.getValue ("/root/prcpresn/prcpdd") != "" ) {
  1811. model.setValue ( strSrc + "[" + sendRow + "]/tempcol19", model.getValue ("/root/prcpresn/resncnt") );
  1812. model.setValue ( strSrc + "[" + sendRow + "]/tempcol24", model.getValue ("/root/prcpresn/prcptime") );
  1813. }
  1814. /******************** 선처치, 과내검사 시행부서 처리 끝 ********************/
  1815. //시행부서, 발행부서 SETTING
  1816. fPrcpExecIssDeptCdSet( strSrc, sendRow )
  1817. if (!isNull(model.getValue ( "/root/init/prcpinptflag" ))){ //27: 마취기록, 28: 시행부서처방
  1818. model.setValue ( strSrc + "[" + sendRow + "]/prcpinptflag", model.getValue ( "/root/init/prcpinptflag" ));
  1819. }
  1820. //추가컬럼 test
  1821. model.setValue ( strSrc + "[" + sendRow + "]/aftcertflag", "-");
  1822. model.setValue ( strSrc + "[" + sendRow + "]/aftcertdrid", "-");
  1823. model.setValue ( strSrc + "[" + sendRow + "]/prcpvalidd", "00000000");
  1824. if ( isNull(model.getValue ( strSrc + "[" + sendRow + "]/anticncrdayno"))) {
  1825. model.setValue ( strSrc + "[" + sendRow + "]/anticncrdayno", "0");
  1826. }
  1827. if ( isNull(model.getValue ( strSrc + "[" + sendRow + "]/druglnkno"))) {
  1828. model.setValue ( strSrc + "[" + sendRow + "]/druglnkno", "0");
  1829. }
  1830. if (model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" ) == "FE6541" ) {
  1831. var prcpdelivefact = model.getValue( strSrc + "[" + sendRow + "]/prcpdelivefact" );
  1832. var iFind1 = prcpdelivefact.search( "Long Stream" );
  1833. var iFind2 = prcpdelivefact.search( "Routine" );
  1834. //전달사항에 값이 있으면 "-" 로처리
  1835. if ( eval( iFind1) <= 0 && eval(iFind2) <= 0 ) {
  1836. if ( prcpdelivefact == "-" ) {
  1837. model.setValue( strSrc + "[" + sendRow + "]/prcpdelivefact", "[Routine]" );
  1838. } else {
  1839. model.setValue( strSrc + "[" + sendRow + "]/prcpdelivefact", "[Routine] " + prcpdelivefact );
  1840. }
  1841. }
  1842. }
  1843. if ( model.getValue ( strSrc + "[" + sendRow + "]/tempcol18" ) == "Y" ) {
  1844. var len = 1;
  1845. if ( !isNull(model.instance1.selectNodes("/root/migdrugmthd/migdrugmthdlist").length)){
  1846. len = model.instance1.selectNodes("/root/migdrugmthd/migdrugmthdlist").length + 1;
  1847. }
  1848. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/prcpcd", model.getValue( strSrc + "[" + sendRow + "]/prcpcd" ));
  1849. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/prcpnm", model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ));
  1850. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/prcpnm", model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ));
  1851. if ( model.getValue ( strSrc + "[" + sendRow + "]/rateprcpflag" ) == "Y" ) {
  1852. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/migdrugmthdspccdnm", "[비율처방불가] 투약량이 다른 처방을 분리해서 처방하셔야 합니다.\n\n" + model.getValue( strSrc + "[" + sendRow + "]/exptmthdfact" ) + ".");
  1853. model.setValue ( strSrc + "[" + sendRow + "]/rateprcpflag", "N" )
  1854. model.setValue ( strSrc + "[" + sendRow + "]/drugrateqty", "-" )
  1855. } else {
  1856. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/migdrugmthdspccdnm", model.getValue( strSrc + "[" + sendRow + "]/exptmthdfact" ));
  1857. }
  1858. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/drugmthdspccd", model.getValue( strSrc + "[" + sendRow + "]/drugmthdspccd" ) );
  1859. model.makeValue ( "/root/migdrugmthd/migdrugmthdlist[" + len + "]/drugmthdspccdnm", model.getValue( strSrc + "[" + sendRow + "]/drugmthdspccdnm" ) );
  1860. model.setValue ( strSrc + "[" + sendRow + "]/exptmthdfact", "-" );
  1861. }
  1862. //수술예방적 항생제 CHECK SON0926 START 사유입력 대상자일 경우
  1863. //경구약은 cdss항생제 에서 제외. 따라서 외용/주사일 경우 cdss항생제 화면이 뜬 후에 check로직이 뜨도록..
  1864. if ( prcpgenrflag == "I" && usge == "prcp" && ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" )) { //약처방
  1865. if( !fChkOpDrug(objFlag , strSrc , sendRow ) ) return 0;
  1866. }
  1867. //수술예방적 항생제 CHECK SON0926 END
  1868. //20090520 마정민수정
  1869. //저장시 체크하던 ocrprnt 여부를 search 함수의 문제로 처방복사시 tempcol13에 값을 넣어놨다가 저장시 tempcol13을 읽는 방법으로 수정
  1870. var ocrprnt = model.getValue ( "/root/initsrchprcp/prcpetccnts/ocrprnt" );
  1871. if (isNull(ocrprnt)) {
  1872. ocrprnt = model.getValue ( "/root/initsrch/prcpetccnts/ocrprnt" );
  1873. }
  1874. var ocrprntArray = ocrprnt.split("|");
  1875. var ocrprcpcd = "OCR" + model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" );
  1876. for( m=0; m < ocrprntArray.length; m++ ){
  1877. if( ocrprcpcd == ocrprntArray[m]) {
  1878. model.setValue ( strSrc + "[" + sendRow + "]/tempcol13", "Y" );
  1879. break;
  1880. }
  1881. }
  1882. // 20100108 한재상 - 유전자검사 동의서 출력방식 변경 (OCR -> REX)
  1883. var ocrprogprnt = model.getValue ( "/root/initsrchprcp/prcpetccnts/ocrprogprnt" );
  1884. var ocrprogprntArray = ocrprogprnt.split("|");
  1885. var ocrprogprcpcd = "OCRPROG" + model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" );
  1886. for( m=0; m < ocrprogprntArray.length; m++ ){
  1887. if( ocrprogprcpcd == ocrprogprntArray[m]) {
  1888. model.setValue ( strSrc + "[" + sendRow + "]/tempcol13", "A" );
  1889. break;
  1890. }
  1891. }
  1892. //20090521 마정민추가 외래수술프로세스의 추가로 외래수술탭에서 처방을 낼 경우 자동선처치로 수정
  1893. if (!isNull(model.getValue ( "/root/operation/list/oprsrvno")) && prcpgenrflag == "O"
  1894. && model.getValue ( strSrc + "[" + sendRow + "]/prnprcpflag" ) != "Y"
  1895. && model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) != "B4"
  1896. ) {
  1897. model.setValue ( strSrc + "[" + sendRow + "]/precureprcpflag", "Y" ); //
  1898. }
  1899. if ( model.getValue ( strSrc + "[" + sendRow + "]/prcpflag") != "2" ) { //지시처방이 아니면 이름을 다시 만들어 준다.
  1900. makePrcpNm( "/root/main/prcp/prcplist", sendRow );
  1901. }
  1902. // 2010. 10. 19 약속처방이나 전처방에서 처방 복사시 1회 용량에 값이 없을 경우 용량 계산하는 로직 수행
  1903. if ( model.getValue ( strSrc + "[" + sendRow + "]/drprcpetc7") == "-" ) {
  1904. if (fContainsHardCD("420", "Y") && model.getValue ( strSrc + "[" + sendRow + "]/prcpinptflag") == "02") { // 2013.02.21 엄영만 약속처방 1회 용량 없을 시 메세지 팝업.
  1905. var sPrcpcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpcd");
  1906. var sPrcpnm = model.getValue ( strSrc + "[" + sendRow + "]/prcpnm");
  1907. messageBox ( sPrcpnm +"["+ sPrcpcd + "] 처방의 1회용량값이 존재하지 않습니다.\n약속처방 구성을 확인 하시기 바랍니다.", "E999" );
  1908. } else {
  1909. DrugCalc2( "prcpqty" , sendRow);
  1910. }
  1911. }
  1912. // // 2011.07.05 엄영만 수익분류 의료영상복사-CD 복사-CD copy 처방, 산재/자보 환자 디폴트 비급여 셋팅 원무 최인영(5069) 요청
  1913. if (model.getValue ( strSrc + "[" + sendRow + "]/tempcol2" ) == "24|01|01" && (model.getValue ( "/root/paminfo/list/insukind" ) == "31" || model.getValue ( "/root/paminfo/list/insukind" ) == "41")) {
  1914. model.setValue ( strSrc + "[" + sendRow + "]/payflagcd", "1" );
  1915. }
  1916. //model.addLog(" ************* End Of addPrcpSetValue()");
  1917. return true;
  1918. }
  1919. /**
  1920. * @desc : 처방이 발행될때 set로 같이 나가야할 처방 처리
  1921. * @param : objFlag - child or else
  1922. : strSrc - source node
  1923. : strDest - 목적지 node; child일때는 opener.root.main.prcp, 아니면 "/root/main/prcp" 이다
  1924. : sendRow - 검색된 내용중 메인으로 보내고자 하는 row
  1925. : srchRow - 메인에 들어간 자리. 검색로우(srchRow) 바로 전이다.
  1926. : prcpInptFlag - - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  1927. : groupSrc - 옵션: group처방 검색할 경우 node
  1928. : direcSrc - 옵션: group 지시처방 검색할 경우 node
  1929. : prcpInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  1930. * @return : srchRow 에러시 0
  1931. * @authur : 마정민 2008. 6. 25
  1932. * @---------------------------------------------------
  1933. */
  1934. function fAddSetPrcpChk ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag ) {
  1935. var prcpcd = model.getValue( strSrc + "[" + i + "]/prcpcd" );
  1936. var addprcpcd = "";
  1937. var addprcpcnt = 0;
  1938. // if (prcpcd == "LCT101") addprcpcd = "DDIS50";
  1939. // else if (prcpcd == "LCT001") addprcpcd = "DDIS75";
  1940. // else if (prcpcd == "LCT002") addprcpcd = "DDIS100";
  1941. // else if (prcpcd == "NHC297EG") addprcpcd = "FE654303G"; //by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청
  1942. var iFind = -1;
  1943. var setprcpchk = "";
  1944. if ( objFlag == "child" ) {
  1945. setprcpchk = opener.model.getValue ( "/root/initsrch/setprcplist/setprcp" );
  1946. } else {
  1947. setprcpchk = model.getValue ( "/root/initsrch/setprcplist/setprcp" );
  1948. }
  1949. // 기존 search함수에서 무결성이 어긋나 개별 체크 변경 - 20081008 by MoonSH
  1950. var precureprcpflag = "";
  1951. var calcflag = "";
  1952. var prcpdelivefact = "";
  1953. var firStage = setprcpchk.split("^");
  1954. for( i=0; i<firStage.length; i++ ){
  1955. var secStage = firStage[i].split("|");
  1956. if( prcpcd == secStage[0]) {
  1957. iFind = 1 ;
  1958. calcflag = secStage[1];
  1959. addprcpcd = secStage[2];
  1960. prcpdelivefact = secStage[3];
  1961. break ;
  1962. }
  1963. if ( iFind == 1) break;
  1964. }
  1965. if ( parseInt(iFind) >= 0) {
  1966. var prcpdd = "";
  1967. var insukind = "";
  1968. if ( objFlag == "child" ) {
  1969. prcpdd = opener.model.getValue ( "/root/init/prcpdd" );
  1970. insukind = opener.model.getValue ( "/root/paminfo/list/insukind");
  1971. } else {
  1972. prcpdd = model.getValue ( "/root/init/prcpdd" );
  1973. insukind = model.getValue ( "/root/paminfo/list/insukind");
  1974. }
  1975. //멀티 search 가능함
  1976. model.makeValue("/root/send/addsetprcp[1]/prcpcd",addprcpcd);
  1977. model.makeValue("/root/send/addsetprcp[1]/prcpdd",prcpdd);
  1978. model.makeValue("/root/send/addsetprcp[1]/insukind",insukind);
  1979. model.makeValue("/root/send/addsetprcp[1]/srchkind","B2");
  1980. if ( submit("TRMMO00207",false)) {
  1981. /*
  1982. **by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청 수정 시작.
  1983. ** 처방코드 : NHC297EMG, 자동발생코드 : FE654303G
  1984. ** 자동발생코드는 돈계산에서 제외되어야 함.
  1985. ** 자동발생코드 처방전달사항 자동 생성=>[HEART-SPECT 핵의학검사용]
  1986. */
  1987. //20090420 마정민 수정 HARDCODE 테이블로 분리
  1988. //if( addprcpcd == "FE654303G"){
  1989. var nd = model.instance1.selectNodes("/root/addsetprcp/prcplist");
  1990. if( nd != null && nd.length > 0) {
  1991. model.setValue("/root/addsetprcp/prcplist[1]/prcpdelivefact", prcpdelivefact );
  1992. model.setValue("/root/addsetprcp/prcplist[1]/tempcol17" , calcflag ); //자동발생코드는 돈계산이 되어선 안됨.
  1993. }
  1994. //}
  1995. //by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청 수정 끝
  1996. //serPrcpSrchRow = addPrcpDetl ( objFlag , "root/addsetprcp/prcplist" , strDest , 1 , srchRow, prcpInptFlag );
  1997. //by sonjy 20091031 자동발생 처방 입력 구분 추가
  1998. //SET 처방일 때 약품의 기본 일수는 수가계산법이 어떤 것이든 기본을 1일로 되도록 요청번호:8875
  1999. serPrcpSrchRow = addPrcpDetl ( objFlag , "root/addsetprcp/prcplist" , strDest , 1 , srchRow, "34" );
  2000. if (serPrcpSrchRow != 0 ) srchRow++;
  2001. }
  2002. model.removeNodeset("/root/send/addsetprcp");
  2003. }
  2004. return srchRow;
  2005. }
  2006. /**
  2007. * @desc : 포커스를 메인으로 한다.
  2008. * @param : curRow => 메인의 검색 row
  2009. : flag => child
  2010. : prcpNmClearFlag => 검색명을 클리어 시킬건지 여부
  2011. * @return : void
  2012. * @authur : 마정민 2007. 4. 12
  2013. * @---------------------------------------------------
  2014. */
  2015. function focusMain( curRow, flag, prcpNmClearFlag ) {
  2016. if ( flag == "child" ) {
  2017. if ( prcpNmClearFlag != "N" ) {
  2018. opener.model.setValue( "/root/main/prcp/prcplist[" + curRow + "]/prcpnm", "");
  2019. opener.model.setValue( "/root/main/prcp/prcplist[" + curRow + "]/prcpcd", "");
  2020. }
  2021. opener.model.recalculate();
  2022. var modiflag = model.getValue("/root/init/rowmodify/modiflag");
  2023. if ( modiflag != "Y" ){ // 처방 코드에서 수정 모드가 아닐때만 refresh - 20090630 by Moonsh
  2024. opener.grd_prcplist.refresh();
  2025. }
  2026. //opener.model.setfocus( "grd_prcplist" );
  2027. opener.grd_prcplist.row = curRow ;
  2028. if ( opener.model.getValue ( "/root/send/cond99" ) == "getPrcpCdOldSrchInfo" ) {
  2029. opener.grd_prcplist.col = prcpcdCol;
  2030. opener.model.setValue ( "/root/send/cond99", "" );
  2031. } else {
  2032. opener.grd_prcplist.col = prcpnmCol;
  2033. }
  2034. if( model.getValue("/root/cp") == "Y" ){
  2035. //CP에서 저장 시 AddPrcp()를 수행 시, 마지막 라인에 포커스가 남아있는 상태에서 저장 수행 과정에 "onendedit" 이번트 동시 수행하면서 윈도우 에러 발생 -> 이 경우 막음처리 (2008.10.02 JJE)
  2036. if( curSavePrcpFlag_SMMMO00110 == "N" || curSavePrcpFlag_SMMMO00110 == "T" ){
  2037. return;
  2038. }
  2039. }
  2040. // 항생제에서 데이타 추가 후 dispatch 시엔 Focus가 안 가서 setFocus 사용 20080925 by Moonsh
  2041. var cdssFlag = getParameter( "SPMMD01600_flag");
  2042. if ( cdssFlag == "Y" ) {
  2043. opener.model.setFocus(opener.grd_prcplist.attribute("id"), true);
  2044. } else {
  2045. //by sonjy 20090923 성공적으로 copy햇을 경우 ...
  2046. //iviewer에서 addprcp호출시 grid edit 안되는 bug 수정
  2047. opener.model.setFocus("grd_prcplist");
  2048. opener.btn_editcell.dispatch("DOMActivate");
  2049. }
  2050. //기존 focus cell bold체 해제 (2010.01.27 JJE)
  2051. opener.grd_prcplist.allstyle( "all", "font-weight" ) = "";
  2052. } else {
  2053. model.removeNodeset( "/root/prcpsrch/prcplist");
  2054. model.removeNodeset( "/root/prcpgroup/prcplist");
  2055. model.removeNodeset( "/root/prcpdirec/prcplist");
  2056. if ( prcpNmClearFlag != "N" ) {
  2057. model.setValue( "/root/main/prcp/prcplist[" + curRow + "]/prcpnm", ""); //검색그리드를 클리어 시킨다.
  2058. model.setValue( "/root/main/prcp/prcplist[" + curRow + "]/prcpcd", ""); //검색그리드를 클리어 시킨다.
  2059. }
  2060. model.recalculate();
  2061. var modiflag = model.getValue("/root/init/rowmodify/modiflag");
  2062. if ( modiflag != "Y" ){ // 처방 코드에서 수정 모드가 아닐때만 refresh - 20090630 by Moonsh
  2063. grd_prcplist.refresh();
  2064. }
  2065. // model.setfocus( "grd_prcplist" );
  2066. var bfRow = curRow - 1 ;
  2067. var sPrcpClsCd = model.getValue( "/root/main/prcp/prcplist[" + bfRow + "]/prcpclscd" );
  2068. if ( sPrcpClsCd == "A2" || sPrcpClsCd == "A4" || sPrcpClsCd == "A6" ){
  2069. grd_prcplist.row = bfRow;
  2070. /**
  2071. *<standard>
  2072. *개발일시: 2010.09.14
  2073. *개발자: 마정민
  2074. *요청병원: 경북대
  2075. *요청파트: 진료
  2076. *개발내용: 일회용량표시
  2077. *</standard>
  2078. */
  2079. if ( volflag == "time" ) {
  2080. grd_prcplist.col = grd_prcplist.colref("drprcpetc7");
  2081. } else {
  2082. grd_prcplist.col = grd_prcplist.colref("prcpvol");
  2083. }
  2084. } else {
  2085. grd_prcplist.row = curRow;
  2086. if ( model.getValue ( "/root/send/cond99" ) == "getPrcpCdOldSrchInfo" ) {
  2087. grd_prcplist.col = prcpcdCol;
  2088. model.setValue ( "/root/send/cond99", "" );
  2089. } else {
  2090. grd_prcplist.col = prcpnmCol;
  2091. }
  2092. }
  2093. /*
  2094. grd_prcplist.row = curRow;
  2095. if ( model.getValue ( "/root/send/cond99" ) == "getPrcpCdOldSrchInfo" ) {
  2096. grd_prcplist.col = prcpcdCol;
  2097. model.setValue ( "/root/send/cond99", "" );
  2098. } else {
  2099. grd_prcplist.col = prcpnmCol;
  2100. }
  2101. */
  2102. if( model.getValue("/root/cp") == "Y" ){
  2103. //CP에서 저장 시 AddPrcp()를 수행 시, 마지막 라인에 포커스가 남아있는 상태에서 저장 수행 과정에 "onendedit" 이번트 동시 수행하면서 윈도우 에러 발생 -> 이 경우 막음처리 (2008.10.02 JJE)
  2104. if( curSavePrcpFlag_SMMMO00110 == "N" || curSavePrcpFlag_SMMMO00110 == "T" ){
  2105. return;
  2106. }
  2107. }
  2108. //JJE-
  2109. if( model.getValue ( "/root/cp" ) == "Y" ){
  2110. if (prtlprcpstatus_SMMMO00110 != "U" ) {
  2111. btn_editcell.dispatch("DOMActivate");
  2112. }
  2113. }else{
  2114. btn_editcell.dispatch("DOMActivate");
  2115. }
  2116. //-JJE
  2117. //기존 focus cell bold체 해제 (2010.01.27 JJE)
  2118. grd_prcplist.allstyle( "all", "font-weight" ) = "";
  2119. }
  2120. }
  2121. /**
  2122. * @desc : appendChild 공통함수로
  2123. * @param : strSrc => 소스 노드
  2124. : strDest => 목적지 노드
  2125. : flag => 같은화면에서 사용하는지 child에서 사용하는지
  2126. : autocheck => 자동체크하려면 체크벨류를 넣는다.
  2127. * @return : void
  2128. * @authur : 마정민 2007. 4. 21
  2129. * @---------------------------------------------------
  2130. */
  2131. function appendChildPrcp ( strSrc, strDest, flag, autocheck ) {
  2132. //* ---2007.11.12 (CP에서 미래처방을 수정하는 경우, 처방상세팝업에서 리턴 받은 값의 상태를 바꾼다) --- *//
  2133. if( opener.model.getValue("/root/cp") == "D" ){
  2134. if(strSrc == "/root/reset/prcplist"){
  2135. return;
  2136. }else{
  2137. if( instance1.selectSingleNode(strSrc + "/status") != null ){
  2138. model.setValue( strSrc + "/status", opener.model.getValue("/root/temp/mstatus") );
  2139. }
  2140. }
  2141. }
  2142. //* --- End --- *//
  2143. var srcNodeList = model.instances(0).selectNodes(strSrc);
  2144. if ( flag == null || flag == "child" )
  2145. var destNode = opener.model.instances(0).selectSingleNode(strDest);
  2146. else {
  2147. var destNode = model.instances(0).selectSingleNode(strDest);
  2148. }
  2149. var currow = 0;
  2150. for ( i=0; i < srcNodeList.length; i++ ){
  2151. if ( !isNull(autocheck)) {
  2152. currow = i + 1;
  2153. model.setValue ( strSrc + "[" + currow + "]/status", autocheck );
  2154. }
  2155. destNode.appendChild(srcNodeList.item(i).cloneNode(true));
  2156. }
  2157. }
  2158. /**
  2159. * @desc : 선택된 진단명을 진단 instance에 맵핑한다.
  2160. * @param : diagInfo: setValue할 진단정보
  2161. * @return : void
  2162. * @authur : 마정민 2007. 4. 21
  2163. * @---------------------------------------------------
  2164. */
  2165. function addDiagSetValue ( diagInfo ) {
  2166. var strSrc = "/root/main/diaginfo/diagcdlist";
  2167. var pamInfoNode = "/root/paminfo/list";
  2168. var prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  2169. var orddd = "";
  2170. if ( prcpgenrflag == "O" || prcpgenrflag == "S") {
  2171. orddd = model.getValue ( pamInfoNode + "/orddd" );
  2172. orddrid = model.getValue ( pamInfoNode + "/orddrid" );
  2173. } else {
  2174. orddd = model.getValue ( pamInfoNode + "/indd" );
  2175. orddrid = model.getValue ( pamInfoNode + "/medispclid" );
  2176. }
  2177. cretno = model.getValue ( pamInfoNode + "/cretno" );
  2178. orddeptcd = model.getValue ( pamInfoNode + "/orddeptcd" );
  2179. var diagRow = diagInfo.split ( "▩" ).length;
  2180. var srchRow = grd_diaglist.rows-1;
  2181. var mdiagcd = model.getValue ( strSrc + "[diagkindcdflag='M']/diagcd" );
  2182. var diagkindcdflag = ""; //주부유형
  2183. for ( var i = 1; i < diagRow-1 ; i++ ) {
  2184. var destNode = model.instances(0).selectSingleNode( "/root/main/diaginfo" );
  2185. model.duplicate( destNode, "/root/reset/diagcdlist", "*[" + srchRow + "]");
  2186. var icd10cd = getArrayData ( diagInfo, i, 8, "▩", "▦" );
  2187. var diagcd = getArrayData ( diagInfo, i, 9, "▩", "▦" );
  2188. var diagengnm = getArrayData ( diagInfo, i, 2, "▩", "▦" );
  2189. var diaghngnm = getArrayData ( diagInfo, i, 3, "▩", "▦" );
  2190. var spclinfo = getArrayData ( diagInfo, i, 5, "▩", "▦" );
  2191. model.setValue ( strSrc + "[" + srchRow + "]/diagkindcdflag", "S" );
  2192. if ( isNull(mdiagcd) && i == 1) {
  2193. model.setValue ( strSrc + "[" + srchRow + "]/diagkindcdflag", "M");
  2194. } else {
  2195. if ( spclinfo == "Y" ) { //산전특례
  2196. //산정특례 처방이면 산전특례이면서 주상병이 있는지 찾는다.
  2197. var spcmdiagcd = model.getValue ( strSrc + "[diagkindcdflag='M' and spclinfo='Y']/diagcd" );
  2198. if (isNull(spcmdiagcd)) { //값이 없으면 주상병으로 할 건지 물어본다.
  2199. if ( messageBox ( "[" + icd10cd + "] 상병은 특례상병입니다. 주상병으로 하시겠습니까?","Q") == "6" ) {
  2200. //하겠다고 하면 주상병으로 고침
  2201. var srcNodeList = model.instances(0).selectNodes ( "/root/main/diaginfo/diagcdlist" );
  2202. for ( var j=1; j <= srcNodeList.length; j++ ) {
  2203. if (srchRow == j) {
  2204. model.setValue ( "/root/main/diaginfo/diagcdlist[" + j + "]/diagkindcdflag", "M" );
  2205. } else {
  2206. if (model.getValue ( "/root/main/diaginfo/diagcdlist[" + j + "]/diagkindcdflag" )=="M") {
  2207. model.setValue ( "/root/main/diaginfo/diagcdlist[" + j + "]/diagkindcdflag", "S" );
  2208. if (model.getValue ( "/root/main/diaginfo/diagcdlist[" + j + "]/status" ) == "-" ) {
  2209. //진단상태가 - 이면 U로 수정함
  2210. model.setValue ( "/root/main/diaginfo/diagcdlist[" + j + "]/status", "U" );
  2211. }
  2212. }
  2213. }
  2214. }
  2215. }
  2216. }
  2217. }
  2218. }
  2219. /*
  2220. var dispdiagcd = getArrayData ( getParameter("diagInfo"), i, 6, "▩", "▦" );
  2221. var orgdiagnm = getArrayData ( getParameter("diagInfo"), i, 7, "▩", "▦" );
  2222. var orgdiagcd = getArrayData ( getParameter("diagInfo"), i, 8, "▩", "▦" );
  2223. var tootfact = getArrayData ( getParameter("diagInfo"), i, 9, "▩", "▦" );
  2224. */
  2225. model.setValue ( strSrc + "[" + srchRow + "]/icd10cd", icd10cd );
  2226. model.setValue ( strSrc + "[" + srchRow + "]/diagcd", diagcd );
  2227. model.setValue ( strSrc + "[" + srchRow + "]/diagengnm", diagengnm );
  2228. model.setValue ( strSrc + "[" + srchRow + "]/diaghngnm", diaghngnm );
  2229. model.setValue ( strSrc + "[" + srchRow + "]/spclinfo", spclinfo );
  2230. model.setValue ( strSrc + "[" + srchRow + "]/status", "I" );
  2231. model.setValue ( strSrc + "[" + srchRow + "]/instcd", getUserInfo("dutplceinstcd"));
  2232. model.setValue ( strSrc + "[" + srchRow + "]/pid", model.getValue ( pamInfoNode + "/pid" ));
  2233. model.setValue ( strSrc + "[" + srchRow + "]/orddd", orddd);
  2234. model.setValue ( strSrc + "[" + srchRow + "]/cretno", cretno);
  2235. model.setValue ( strSrc + "[" + srchRow + "]/orddeptcd", orddeptcd);
  2236. model.setValue ( strSrc + "[" + srchRow + "]/orddrid", orddrid);
  2237. model.setValue ( strSrc + "[" + srchRow + "]/genrflagcd", prcpgenrflag);
  2238. model.setValue ( strSrc + "[" + srchRow + "]/diaghistcd", "O" );
  2239. model.setValue ( strSrc + "[" + srchRow + "]/diagtypecd", "D" );
  2240. model.setValue ( strSrc + "[" + srchRow + "]/diagkindcd", "C" );
  2241. model.setValue ( strSrc + "[" + srchRow + "]/anamneflag", "N" );
  2242. model.setValue ( strSrc + "[" + srchRow + "]/diagsignflag", "2" );
  2243. model.setValue ( strSrc + "[" + srchRow + "]/tootflagcd", "-" );
  2244. model.setValue ( strSrc + "[" + srchRow + "]/tootfact", "-" );
  2245. diagkindcdflag = model.getValue ( "/root/main/diaginfo/diagcdlist[" + srchRow + "]/diagkindcdflag" );
  2246. fCheckDiagHosinpPcp( icd10cd, prcpgenrflag, diagkindcdflag );
  2247. srchRow++;
  2248. /**************************************** 진단추가시 원외처방예외사유 진단인지 check ******************************/
  2249. //치식 상병 입력 시 치식팝업 자동 호출 (2009.10.28 by JJE)
  2250. var tootDiagFromToCd = model.getValue("/root/initsrch/tootdiagcd/trgtcd"); //ex: K01|K10
  2251. if( !isNull(tootDiagFromToCd) ){
  2252. var tootDiagFrCd = tootDiagFromToCd.split("|")[0];
  2253. var tootDiagToCd = tootDiagFromToCd.split("|")[1];
  2254. var tootDiagFrLngth = getStringLength(tootDiagFrCd);
  2255. var tootDiagToLngth = getStringLength(tootDiagToCd);
  2256. if(icd10cd.substring(0, tootDiagFrLngth) >= tootDiagFrCd && icd10cd.substring(0, tootDiagToLngth) <= tootDiagToCd){
  2257. fDentifmla();
  2258. }
  2259. }
  2260. //end 치식팝업 자동 호출
  2261. }
  2262. //검색라인 초기화
  2263. model.setValue ( "/root/main/diaginfo/diagcdlist[" + srchRow + "]/icd10cd", "" );
  2264. model.setValue ( "/root/main/diaginfo/diagcdlist[" + srchRow + "]/diagengnm", "" );
  2265. model.refresh();
  2266. model.setfocus( "grd_diaglist" );
  2267. grd_diaglist.row = grd_diaglist.rows - 1;
  2268. grd_diaglist.col = 4;
  2269. }
  2270. /**
  2271. * @desc : 진단추가시 원내처방예외사유가 있는 진단코드인지 검색후(처방화면초기값) 결과에 따라 처방화면의 원내처방사유를 setting한다.
  2272. * @ :
  2273. * @param : icd10cd, prcpgenrflag
  2274. * @return : void
  2275. * @authur : 마정민 2007. 9. 6
  2276. * @---------------------------------------------------
  2277. */
  2278. function fCheckDiagHosinpPcp( icd10cd, prcpgenrflag, diagkindcdflag ) {
  2279. var inhospappdeptcd = model.getValue ( "/root/initsrch/inhospappdeptcd/trgtcd" ); //F상병원내사유적용 부서:정신과 (2009.06.29 JJE)
  2280. var inhospautoappyn = model.getValue ( "/root/initsrch/inhospautoappyn/trgtcd" ); //F상병원내사유자동적용 여부 (2009.06.29 JJE)
  2281. var insukind = opener.model.getValue ( "/root/paminfo/list/insukind"); //보험유형 (2009.06.29 JJE)
  2282. if (isNull(insukind)) insukind = model.getValue ( "/root/paminfo/list/insukind"); //보험유형 (2009.06.29 JJE)
  2283. if ( prcpgenrflag == "O" || prcpgenrflag == "D" ) { //SON1123 DSC 퇴원처방 처리 by sonjy 20081123
  2284. if ( !isNull(model.getValue ( "/root/initsrch/diagautocnts/trgtcd" ))) {
  2285. if (model.getValue ( "/root/init/hosinprcpresncd" ) == "00" ) { //원내처방 사유가 없을 경우
  2286. var srcNodeList = model.instances(0).selectNodes( "/root/initsrch/diagautocnts" );
  2287. for ( var i=1; i <=srcNodeList.length; i++ ) {
  2288. var trgtcdnmArray = model.getValue ( "/root/initsrch/diagautocnts[" + i + "]/trgtcdnm" );
  2289. var fromTrgtcdnm = getArrayData ( trgtcdnmArray + "^", 0, 0, "^", "|" );
  2290. var toTrgtcdnm = getArrayData ( trgtcdnmArray + "^", 0, 1, "^", "|" );
  2291. var cdlength = fromTrgtcdnm.length;
  2292. var icd10Chck = icd10cd.substring( 0, cdlength );
  2293. if ( icd10Chck >= fromTrgtcdnm && icd10Chck <= toTrgtcdnm ) { //해당 진단검색안에 값이 있다면
  2294. var hosinprcpresncd = model.getValue ( "/root/initsrch/diagautocnts[" + i + "]/trgtcd" );
  2295. //원내처방사유 적용 주상병만 가능 단 23은 부상병도 적용
  2296. if ( diagkindcdflag == "M" || hosinprcpresncd == "23" ) {
  2297. //by sonjy 20081031 F상병일 경우 진료과가 정신과인 경우에 한해서만 원내처방사유 SETTING되도록. 윤영옥ITC 요청. start
  2298. if( icd10Chck.substring( 0,1) == "F" ){
  2299. //if( model.getValue ( "/root/paminfo/list/orddeptcd" ) != "2030000000") break;
  2300. if( model.getValue ( "/root/paminfo/list/orddeptcd" ) != inhospappdeptcd) break; //F상병이면서 진료과가 정신과인지 check (2009.06.29 JJE)
  2301. if( inhospautoappyn != "Y" && (insukind != "21" && insukind != "22") ) break; //원내사유자동적용 N이면 보험유형까지 check - ujb요청 (2009.06.29 JJE)
  2302. }
  2303. //by sonjy end
  2304. model.setValue ( "/root/init/hosinprcpresncd", hosinprcpresncd);
  2305. fChngHosinPrcpResn();
  2306. model.refresh();
  2307. break; //값을 setting 하면 빠져나온다.
  2308. }
  2309. } //icd10cd == trgtcdnm end
  2310. } //진단검색 end
  2311. // model.refresh();
  2312. } //원내처방 사유가 없을 경우 여부
  2313. }//진단초기값 여부 end
  2314. } //외래end
  2315. }
  2316. /**
  2317. * @desc : 그룹코드 M의 싱글코드 검색
  2318. * @ : 검색후 수가코드의 그룹싱글구분이 M 일경우는 그 그룹코드로 다시 SINGLE 코드를 찾아온다.
  2319. * @param : cond1= 처방명, 코드명, 성분명, old수가코드
  2320. * @return : void
  2321. * @authur : 마정민 2007. 4. 12
  2322. * @---------------------------------------------------
  2323. */
  2324. function prcpGroupSrch ( cond1, cond3, cond4, cond5, cond6, cond99 ) {
  2325. if (isNull(cond3)) {
  2326. cond3 = getCurrentDate();
  2327. }
  2328. if (isNull(cond4)) {
  2329. cond4 = "11";
  2330. }
  2331. if (isNull(cond99)) {
  2332. cond99 = "getPrcpGroupInfo";
  2333. }
  2334. var prcpgenrflag = opener.model.getValue ( "/root/patflag/list/prcpgenrflag" );
  2335. if ( isNull(prcpgenrflag) ) {
  2336. prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  2337. if ( isNull(prcpgenrflag) ) {
  2338. prcpgenrflag = "-"
  2339. }
  2340. }
  2341. model.setValue ( "/root/send/cond1", cond1 ); //처방명, 수가코드
  2342. model.setValue ( "/root/send/cond2", prcpgenrflag ); //외래, 입원, 응급 구분
  2343. model.setValue ( "/root/send/cond3", cond3 ); //처방일
  2344. model.setValue ( "/root/send/cond4", cond4 ); //환자보험유형
  2345. model.setValue ( "/root/send/cond5", cond5 ); //진단검사 그룹처방일 때 검체코드정보
  2346. model.setValue ( "/root/send/cond6", cond6 ); //진단검사 검사분류유형
  2347. model.setValue ( "/root/send/cond99", cond99 );
  2348. submit( "TRMMO00101", false );
  2349. // 20090721 한재상 수정. m-set중 특정 signle코드의 default 급비변경.
  2350. var grupSrc = "/root/prcpgroup/prcplist";
  2351. var srcNodeList = model.instances(0).selectNodes( grupSrc );
  2352. var msetpfcspec = model.getValue("/root/initsrch/msetpayflagcd/trgtcd");
  2353. if ( msetpfcspec == "" ) {
  2354. msetpfcspec = opener.model.getValue("/root/initsrch/msetpayflagcd/trgtcd");
  2355. }
  2356. var msetpfcsplit = msetpfcspec.split("^");
  2357. for (var i=1; i<=srcNodeList.length; i++) {
  2358. for (var j=0; j < msetpfcsplit.length-1; j++) {
  2359. var msetpfcitem = msetpfcsplit[j].split("|");
  2360. if ( msetpfcitem[j] == model.getValue(grupSrc+"["+i+"]/prcpcd") ) {
  2361. model.setValue(grupSrc+"["+i+"]/payflagcd", msetpfcitem[1]);
  2362. }
  2363. }
  2364. }
  2365. }
  2366. /**
  2367. * @desc : 지시처방 J의 싱글코드 검색
  2368. * @ : 검색후 수가코드의 그룹싱글구분이 M 일경우는 그 그룹코드로 다시 SINGLE 코드를 찾아온다.
  2369. * @param : cond1= 처방명, 코드명, 성분명, old수가코드
  2370. * @return : void
  2371. * @authur : 마정민 2007. 4. 12
  2372. * @---------------------------------------------------
  2373. */
  2374. function prcpDirecSrch( cond1, cond3, cond4, cond5 ) {
  2375. if (isNull(cond3)) {
  2376. cond3 = getCurrentDate();
  2377. }
  2378. if (isNull(cond4)) {
  2379. cond4 = "11";
  2380. }
  2381. model.setValue ( "/root/send/cond1", cond1 ); //처방명, 수가코드
  2382. model.setValue ( "/root/send/cond2", "-" ); //외래, 입원, 응급 구분
  2383. model.setValue ( "/root/send/cond3", cond3 ); //처방일
  2384. model.setValue ( "/root/send/cond4", cond4 ); //환자보험유형
  2385. model.setValue ( "/root/send/cond5", cond5 );
  2386. model.setValue ( "/root/send/cond99", "getDirecGroupInfo" ); //환자보험유형
  2387. submit( "TRMMO00102" , false );
  2388. }
  2389. /**
  2390. * @desc : 처방내역만들기
  2391. * @param : strSrc: source Node
  2392. : from: 시작 row
  2393. : to: 끝 row
  2394. * @return : void
  2395. * @authur : 마정민 2007. 4. 16
  2396. */
  2397. function makePrcpNm ( strSrc, from, to ) {
  2398. var i = from;
  2399. if ( model.getValue ( strSrc + "[" + i + "]/status" ) == "S" ) return;
  2400. if ( model.getValue ( strSrc + "[" + i + "]/prcpflag" ) == "2" ) return;
  2401. var prcpnmbf = "";
  2402. var prcpnmaft = "";
  2403. var opansflagcd = "";
  2404. var prcpclscd = model.getValue ( strSrc + "[" + i + "]/prcpclscd" ); //처방종류
  2405. var prcpnm = model.getValue ( strSrc + "[" + i + "]/orgprcpnm" ); //처방명
  2406. var clincstdyflag = model.getValue ( strSrc + "[" + i + "]/clincstdyflag" ); //임상연구
  2407. var erprcpflag = model.getValue ( strSrc + "[" + i + "]/erprcpflag" ); //응급구분
  2408. var prnprcpflag = model.getValue ( strSrc + "[" + i + "]/prnprcpflag" ); //prn
  2409. var prepprcpflag = model.getValue ( strSrc + "[" + i + "]/prepprcpflag" ); //prep
  2410. var selfdrugflag = model.getValue ( strSrc + "[" + i + "]/selfdrugflag" ); //self
  2411. var powdflag = model.getValue ( strSrc + "[" + i + "]/powdflag" ); //powder
  2412. var drugspd = model.getValue ( strSrc + "[" + i + "]/drugspd" ); //gtt
  2413. var tnsfiltflag = model.getValue ( strSrc + "[" + i + "]/tnsfiltflag" ); //filter
  2414. var portprcpflag = model.getValue ( strSrc + "[" + i + "]/portprcpflag" ); //portprcpflag
  2415. //수술유형, 재활치료부위
  2416. if ( prcpclscd == "F2" ) {
  2417. var rehbprcpcurepartcd = model.getValue ( strSrc + "[" + i + "]/rehbprcpcurepartcd" );
  2418. if ( rehbprcpcurepartcd != "-" && !isNull(rehbprcpcurepartcd)) {
  2419. opansflagcd = model.getValue ( "/root/init/rehbprcpcurepartcd/M0046[cdid=" + rehbprcpcurepartcd + "]/cdnm" );
  2420. }
  2421. } else if ( prcpclscd == "H2" ) {
  2422. opansflagcd = model.getValue ( strSrc + "[" + i + "]/opansflagcd" );
  2423. if ( opansflagcd != "-" && !isNull(opansflagcd)) {
  2424. opansflagcd = model.getValue ( "/root/init/opansflagcd/M0007[cdid=" + opansflagcd + "]/cdnm" );
  2425. }
  2426. }
  2427. // var opansflagcd = model.getValue ( strSrc + "[" + i + "]/tempcol1" );
  2428. var dietprcpgenrflag = model.getValue ( strSrc + "[" + i + "]/dietprcpgenrflag" ); //조/중/석
  2429. var mealcalrcnts = model.getValue ( strSrc + "[" + i + "]/mealcalrcnts" ); //열량
  2430. var mealprotcnts = model.getValue ( strSrc + "[" + i + "]/mealprotcnts" ); //단백질
  2431. // var drugpackflag = model.getValue ( strSrc + "[" + i + "]/drugpackflag" ); //보호자식
  2432. var prcpdelivefact = model.getValue ( strSrc + "[" + i + "]/prcpdelivefact" ); //전달사항
  2433. var ansttm = model.getValue ( strSrc + "[" + i + "]/prcprefseq" ); //검사간격
  2434. var drugspd = model.getValue ( strSrc + "[" + i + "]/drugspd" ); //기본시간
  2435. var trnptbftestflag = model.getValue ( strSrc + "[" + i + "]/trnptbftestflag" );
  2436. var prcptims = model.getValue ( strSrc + "[" + i + "]/prcptims" ); //치료횟수
  2437. var prcpdayno = model.getValue ( strSrc + "[" + i + "]/prcpdayno" ); //치료일수
  2438. var etcprcpresncd = model.getValue ( strSrc + "[" + i + "]/etcprcpresncd" ); //마감일
  2439. var irflag = model.getValue ( strSrc + "[" + i + "]/irflag" ); //필터
  2440. var precureprcpflag = model.getValue ( strSrc + "[" + i + "]/precureprcpflag" ); //선처치
  2441. var selfprcpflag = model.getValue ( strSrc + "[" + i + "]/selfprcpflag" ); //자가
  2442. var prcpkindcd = model.getValue ( strSrc + "[" + i + "]/prcpkindcd" ); //처방종류
  2443. var hsctdelivepos = model.getValue ( strSrc + "[" + i + "]/hsctdelivepos" ); //hsct전달부서
  2444. var rehbprcpenddd = model.getValue ( strSrc + "[" + i + "]/rehbprcpenddd" ); //재활치료 마감일
  2445. var cnt = 0;
  2446. if ( erprcpflag == "Y") prcpnmbf = prcpnmbf + "[응급] ";
  2447. if ( clincstdyflag == "Y") prcpnmbf = prcpnmbf + "[임상] ";
  2448. if ( precureprcpflag == "Y") prcpnmbf = prcpnmbf + "[선] ";
  2449. if ( prcpclscd == "A2" || prcpclscd == "A4" ) {
  2450. //약
  2451. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  2452. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  2453. if ( selfprcpflag == "Y") prcpnmbf = prcpnmbf + "[home] ";
  2454. if ( selfdrugflag == "Y") prcpnmbf = prcpnmbf + "[self] ";
  2455. prcpnm = prcpnmbf + prcpnm;
  2456. if ( powdflag == "Y") prcpnm = prcpnm + "[powder] ";
  2457. } else if ( prcpclscd == "A6" ) {
  2458. //주사
  2459. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  2460. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  2461. if ( selfprcpflag == "Y") prcpnmbf = prcpnmbf + "[home] ";
  2462. prcpnm = prcpnmbf + prcpnm;
  2463. if ( drugspd != "0" && drugspd != "" ) prcpnm = prcpnm + " [" + drugspd + "] ";
  2464. } else if ( prcpclscd == "D2" ) {
  2465. //주사
  2466. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  2467. prcpnm = prcpnmbf + prcpnm;
  2468. } else if ( prcpclscd == "B4" ) {
  2469. //수혈 (혈액수혈)
  2470. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  2471. // if ( prepprcpflag == "N") prcpnmbf = prcpnmbf + " [T/F] ";
  2472. prcpnm = prcpnmbf + prcpnm;
  2473. if ( tnsfiltflag == "Y") prcpnm = prcpnm + "[Filter] ";
  2474. if ( irflag == "Y") prcpnm = prcpnm + "[Irr] ";
  2475. } else if ( prcpclscd == "C2" || prcpclscd == "C6" || prcpclscd == "E2" || prcpclscd == "G2") {
  2476. //방사선 검사(기능검사, 내시경,천자,생검, 방사선, 핵의학영상, 방사선치료)
  2477. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  2478. if ( portprcpflag == "Y") prcpnmbf = prcpnmbf + "[por] ";
  2479. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  2480. prcpnm = prcpnmbf + prcpnm;
  2481. } else if ( prcpclscd == "H2" || prcpclscd == "H4" || prcpclscd == "K2" || prcpclscd == "C4" ) {
  2482. //수술, 처치, 치과
  2483. prcpnm = prcpnmbf + prcpnm;
  2484. if ( opansflagcd != "" && opansflagcd != "-") prcpnm = prcpnm + " [" + opansflagcd + "] "; //수술마취구분-수술유형
  2485. } else if ( prcpclscd == "B2" || prcpclscd == "B6" ) {
  2486. //진단검사 (검체검사), 핵의학 체외
  2487. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  2488. prcpnm = prcpnmbf + prcpnm;
  2489. // if ( ansttm != "") prcpnm = prcpnm + " [" + ansttm + "] "; //검사간격
  2490. // if ( drugspd != "") prcpnm = prcpnm + " [" + drugspd + "] "; //기본시간
  2491. } else if ( prcpclscd == "03" ) {
  2492. //식이
  2493. if ( dietprcpgenrflag == "1") prcpnmbf = prcpnmbf + "[조식] ";
  2494. if ( dietprcpgenrflag == "2") prcpnmbf = prcpnmbf + "[중식] ";
  2495. if ( dietprcpgenrflag == "3") prcpnmbf = prcpnmbf + "[석식] ";
  2496. prcpnm = prcpnmbf + prcpnm;
  2497. if ( mealcalrcnts != "" && mealcalrcnts != "0" ) prcpnm = prcpnm + "[" + opansflagcd + ":" + mealcalrcnts + "] ";
  2498. var drugmastspec = model.getValue ( strSrc + "[" + i + "]/drugmastspec" ) + "▩";
  2499. var mealprotcntscond = getArrayData (drugmastspec, 0, 3, " ▩", "|" );
  2500. if ( mealprotcnts != "" && mealprotcntscond == "Y" ) prcpnm = prcpnm + "[횟수:" + mealprotcnts + "] ";
  2501. // if ( drugpackflag == "Y") prcpnm = prcpnm + "[보호자식추가] ";
  2502. //if ( prcpdelivefact != "") prcpnm = prcpnm + " [" + prcpdelivefact + "] ";
  2503. } else if ( prcpclscd == "F2" ) { //재활
  2504. prcpnm = prcpnmbf + prcpnm;
  2505. if ( opansflagcd != "" && opansflagcd != "-") {
  2506. //prcpnm = prcpnm + " [치료부위:" + opansflagcd + "] ";
  2507. prcpnmaft = prcpnmaft + " " + opansflagcd + " ";
  2508. cnt++;
  2509. }
  2510. if ( prcptims != "" && prcptims != 0 ) {
  2511. //prcpnm = prcpnm + " [1일치료횟수:" + prcptims + "/1일] ";
  2512. prcpnmaft = prcpnmaft + " " + prcptims + "/1일 ";
  2513. cnt++;
  2514. }
  2515. if ( rehbprcpenddd != "" && rehbprcpenddd != "-" ) {
  2516. //prcpnm = prcpnm + " [마감일:" + etcprcpresncd.substring (0,4) + "-" + etcprcpresncd.substring (4,6) + "-" + etcprcpresncd.substring (6,8) + "] ";
  2517. prcpnmaft = prcpnmaft + " " + rehbprcpenddd.substring (0,4) + "-" + rehbprcpenddd.substring (4,6) + "-" + rehbprcpenddd.substring (6,8) + " ";
  2518. cnt++;
  2519. }
  2520. if ( cnt > 0 ) {
  2521. prcpnm = prcpnm + " [" + prcpnmaft + "]";
  2522. }
  2523. } else {
  2524. prcpnm = prcpnmbf + prcpnm;
  2525. }
  2526. if ( trnptbftestflag == "Y") {
  2527. prcpnm = prcpnm + " [pre-workup]";
  2528. } else if ( trnptbftestflag == "D") {
  2529. prcpnm = prcpnm + " [donor w/u]";
  2530. }
  2531. if ( prcpkindcd == "90") prcpnm = prcpnm + " [입원전검사(당일)] ";
  2532. if ( prcpkindcd == "95") prcpnm = prcpnm + " [입원전검사(전일)] ";
  2533. if ( prcpkindcd == "80") prcpnm = prcpnm + " [예약처방] ";
  2534. if ( hsctdelivepos == "1") prcpnm = prcpnm + " [병동]";
  2535. else if ( hsctdelivepos == "2") prcpnm = prcpnm + " [성분헌혈]";
  2536. else if ( hsctdelivepos == "3") prcpnm = prcpnm + " [세포처리실]";
  2537. if ( model.getValue ( strSrc + "[" + i + "]/drprcpetc2" ) == "Y" ) { // 특수주사실 체크 추가 요청 20081027 by Moonsh
  2538. prcpnm = prcpnm + " [암센터주사실] ";
  2539. } else if ( model.getValue ( strSrc + "[" + i + "]/drprcpetc2" ) == "B" ) {
  2540. prcpnm = prcpnm + " [BMT주사실] ";
  2541. }
  2542. model.setValue ( strSrc + "[" + i + "]/prcpnm", prcpnm );
  2543. model.setValue ( strSrc + "[" + i + "]/prcprefseq","0" );
  2544. }
  2545. /**
  2546. * @desc : 지정일자(연속처방)처리
  2547. * @param : grdObj: DataGrid
  2548. : prcpNode: 값을 세팅할 node
  2549. : flag: main 인지 child 인지
  2550. : endFlag: 마감일 지정을 할지여부
  2551. * @return : void
  2552. * @authur : 마정민 2007. 4. 30
  2553. * @---------------------------------------------------
  2554. */
  2555. function fContPrcpDd( grdObj, prcpNode, flag, endFlag ) {
  2556. //1. 과거일자 불가(달력에서 막음)
  2557. //2. 오늘날짜 처방이 아닐때 해더생성
  2558. //3. 2개이상생성시 해더생성
  2559. //4. 외래에서만 사용
  2560. //5. 상태|Acting진료일자|실시처방상태코드|처방일자|실시처방번호^
  2561. var status = "";
  2562. var actordd = "";
  2563. var prcpdd = "";
  2564. var execprcpstatcd = "";
  2565. var execprcpno = "";
  2566. var curRow = "";
  2567. var contPrcpSpec = "";
  2568. var contPrcpSpecArray1;
  2569. var contPrcpSpecArray2;
  2570. var prcpPKSpecArray;
  2571. var reqparm = "";
  2572. if ( grdObj == null ) grdObj = grd_prcplist; //값이 없으면 메인의 오른쪽 마우스 클릭
  2573. if ( isNull(prcpNode)) prcpNode = "/root/main/prcp/prcplist"; //값이 없으면 메인의 오른쪽 마우스 클릭
  2574. //외래진료일자
  2575. if ( flag == "child" ) {
  2576. if ( opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" ) {
  2577. messageBox ( "지정일은 외래에서만 사용하실 수 있습니다.", "E" );
  2578. return;
  2579. }
  2580. prcpdd = opener.model.getValue ( "/root/paminfo/list/orddd" ); //값이 없으면 메인의 오른쪽 마우스 클릭
  2581. } else {
  2582. if ( model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" ) {
  2583. messageBox ( "지정일은 외래에서만 사용하실 수 있습니다.", "E" );
  2584. return;
  2585. }
  2586. prcpdd = model.getValue ( "/root/paminfo/list/orddd" );
  2587. }
  2588. if ( model.getValue ( prcpNode + "[" + grdObj.row + "]/prcpclscd" ) != "A6" && model.getValue ( prcpNode + "[" + grdObj.row + "]/prcpclscd" ) != "F2" ) {
  2589. messageBox ( "지정일 사용하실 수 없는 처방입니다.", "E" );
  2590. return;
  2591. }
  2592. setParameter ("paramcalflag", "multi");
  2593. setParameter ("defaultday", prcpdd);
  2594. var selectedRows = 0;
  2595. if ( grdObj.selectionMode != "list" ) {
  2596. selectedRows = grdObj.row;
  2597. } else {
  2598. selectedRows = grdObj.selectedRows;
  2599. }
  2600. for (var i=0; i<selectedRows; i++) {
  2601. if ( grdObj.selectionMode != "list" ) {
  2602. curRow = grdObj.row;
  2603. } else {
  2604. curRow = grdObj.selectedrow(i);
  2605. }
  2606. contPrcpSpec = model.getValue ( prcpNode + "[" + curRow + "]/contprcpspec" );
  2607. if ( contPrcpSpec == "-" ) { //처방 당일이었던 지정일 또는 처음검색
  2608. prcpPKSpecArray = model.getValue ( prcpNode + "[" + curRow + "]/prcppkspec" ).split("|");
  2609. if ( !isNull(prcpPKSpecArray[0])) reqparm = prcpPKSpecArray[0]; //처방일자가 있으면
  2610. else reqparm = prcpdd;
  2611. } else {
  2612. contPrcpSpecArray1 = contPrcpSpec.split("^");
  2613. for ( var j=1; j < contPrcpSpecArray1.length; j++ ){
  2614. contPrcpSpecArray2 = contPrcpSpecArray1[j].split("|");
  2615. if ( j == (contPrcpSpecArray1.length-1))
  2616. reqparm = reqparm + contPrcpSpecArray2[1];
  2617. else
  2618. reqparm = reqparm + contPrcpSpecArray2[1] + "▩";//과거에 선택됐던 지정일을 넘긴다.
  2619. }
  2620. }
  2621. setParameter ("reqparam", reqparm);
  2622. fPrcpModal ( "SPMMO10600", 20, 50 );
  2623. if ( isNull(getParameter ( "rtn"))) return; //값이 없으면 return
  2624. var actorddArray = getParameter ( "rtn").split("▩");
  2625. model.setValue ( prcpNode + "[" + curRow + "]/prcpdayno", actorddArray.length );
  2626. status = model.getValue ( prcpNode + "[" + curRow + "]/status" ); //선택된 셀 상태값 가져오기
  2627. contPrcpSpec = "status|actorddd|execprcpstatcd|prcpdd|execprcpno";
  2628. var enddd = "00000000";
  2629. for( i = 0; i < actorddArray.length; i++) { //내용 붙히기
  2630. actordd = actorddArray[i];
  2631. contPrcpSpec = contPrcpSpec + "^" + status + "|" + actordd + "|" + execprcpstatcd + "|" + prcpdd + "|" + execprcpno;
  2632. if ( eval(enddd) < eval(actordd) ) {
  2633. enddd = actordd;
  2634. }
  2635. }
  2636. if ( actorddArray.length == 1 && actordd == prcpdd ) { // 날짜가 1 이고 처방일과 같을 경우는 - 처리
  2637. model.setValue ( prcpNode + "[" + curRow + "]/contprcpspec", "-" );
  2638. } else {
  2639. model.setValue ( prcpNode + "[" + curRow + "]/contprcpspec", contPrcpSpec );
  2640. }
  2641. //재활일 경우 마감일 setting
  2642. var prcpclscd = model.getValue ( prcpNode + "[" + curRow + "]/prcpclscd" );
  2643. if ( prcpclscd == "F2" ) model.setValue ( prcpNode + "[" + curRow + "]/etcprcpresncd", enddd );
  2644. //일수변환
  2645. model.setValue ( prcpNode + "[" + curRow + "]/prcpdayno", actorddArray.length );
  2646. }
  2647. }
  2648. /**
  2649. * @desc : 지정일자초기화
  2650. * @param : contPrcpDdCol: main에서 setting 된 값이 있었다면 화면에 , 구분자로 표시해 준다.
  2651. : grdObj: DataGrid
  2652. * @return : void
  2653. * @authur : 마정민 2007. 4. 30
  2654. * @---------------------------------------------------
  2655. */
  2656. function fContPrcpDdInit( grdObj, contPrcpDdCol ) {
  2657. var prcpNode = "/root/main/prcp/prcplist"
  2658. var prcpdd = opener.model.getValue ( "/root/paminfo/orddd" );
  2659. var contPrcpSpec = model.getValue ( prcpNode + "/contprcpspec" );
  2660. var contPrcpSpecArray1;
  2661. var contPrcpSpecArray2;
  2662. var contPrcpDd = "";
  2663. if ( opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" ) {
  2664. grdObj.valueMatrix ( 1, contPrcpDdCol ) = "-";
  2665. return;
  2666. }
  2667. grdObj.valueMatrix ( 1, contPrcpDdCol ) = "";
  2668. if ( contPrcpSpec == "-" ) { //처방 당일이었던 지정일 또는 처음검색
  2669. prcpPKSpecArray = model.getValue ( prcpNode + "/prcppkspec" ).split("|");
  2670. if ( !isNull(prcpPKSpecArray[0])) contPrcpDd = prcpPKSpecArray[0]; //처방일자가 있으면
  2671. else contPrcpDd = prcpdd;
  2672. contPrcpDd = fDateFormat ( contPrcpDd );
  2673. } else {
  2674. contPrcpSpecArray1 = contPrcpSpec.split("^");
  2675. for ( var j=1; j < contPrcpSpecArray1.length; j++ ){
  2676. contPrcpSpecArray2 = contPrcpSpecArray1[j].split("|");
  2677. if ( j == (contPrcpSpecArray1.length-1))
  2678. contPrcpDd = contPrcpDd + fDateFormat ( contPrcpSpecArray2[1]);//과거에 선택던 지정일을 넘긴다.
  2679. else
  2680. contPrcpDd = contPrcpDd + fDateFormat ( contPrcpSpecArray2[1]) + ",";
  2681. }
  2682. }
  2683. grdObj.valueMatrix ( 1, contPrcpDdCol ) = contPrcpDd;
  2684. }
  2685. /**
  2686. * @desc : 희망일자처리
  2687. * @param : grdObj: Data Grid
  2688. : prcpNode: source Node
  2689. : flag: child
  2690. : inst: 초기값을 가져올 instance
  2691. * @return : void
  2692. * @authur : 마정민 2007. 4. 30
  2693. * @---------------------------------------------------
  2694. */
  2695. function fPrcpHopeDd( grdObj, prcpNode, flag, inst ) {
  2696. //외래진료일자
  2697. if ( flag == "child" ) {
  2698. if ( opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" ) return;
  2699. prcpdd = opener.model.getValue ( "/root/paminfo/list/orddd" );
  2700. } else {
  2701. if ( model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" ) return;
  2702. prcpdd = model.getValue ( "/root/paminfo/list/orddd" );
  2703. }
  2704. if ( grdObj == null ) grdObj = grd_prcplist;
  2705. if ( isNull(prcpNode)) prcpNode = "/root/main/prcp/prcplist";
  2706. if ( isNull(inst)) inst = "prcphopedd";
  2707. setParameter ("defaultday", prcpdd );
  2708. setParameter ("paramcalflag", "sngl");
  2709. setParameter ("reqparam", model.getValue ( prcpNode + "[" + grdObj.row + "]/" + inst ))
  2710. modal ( "SPMMO10600" );
  2711. if ( isNull(getParameter ( "rtn"))) return; //값이 없으면 return
  2712. var selectedRows = grdObj.selectedRows;
  2713. for (var i=0; i<selectedRows; i++) {
  2714. model.setValue ( prcpNode + "[" + grdObj.selectedrow(i) + "]/" + inst, getParameter ( "rtn"));
  2715. }
  2716. }
  2717. /**
  2718. * @desc : 날짜에 - 구분자 두기
  2719. * @param : dd: 모양을 바꿀날짜.
  2720. * @return : yyyy-mm-dd
  2721. * @authur : 마정민 2007. 4. 30
  2722. * @---------------------------------------------------
  2723. */
  2724. function fDateFormat( dd ) {
  2725. var yyyy = dd.substring ( 0, 4 );
  2726. var mm = dd.substring ( 4, 6 );
  2727. var dd = dd.substring ( 6, 8 );
  2728. return yyyy + "-" + mm + "-" + dd;
  2729. }
  2730. /**
  2731. * @desc : split을 이용한 배열값 가져오기
  2732. * @param : pData: split이 포함된 원본데이터
  2733. : pRow: row값
  2734. : pCol: col값
  2735. : pRowSep: row구분자
  2736. : pColSep: col구분자
  2737. * @return : arrCol[pCol]
  2738. * @authur : 마정민 2007. 5. 9
  2739. */
  2740. function getArrayData (pData, pRow, pCol, pRowSep, pColSep ) {
  2741. var pRowSep = (pRowSep == null || pRowSep =="" ? "▩" :pRowSep ); // row 구분자
  2742. var pColSep = (pColSep == null || pColSep =="" ? "▦" :pColSep ); // column 구분자
  2743. var arrRow = pData.split(pRowSep);
  2744. if(arrRow.length <= pRow) return "";
  2745. var arrCol = arrRow[pRow].split(pColSep);
  2746. if(arrCol.length <= pCol) return "";
  2747. return arrCol[pCol];
  2748. }
  2749. /**
  2750. * @desc : 부서에 소속된 의사리스트 조회
  2751. * @param : Ref - 조회조건 instance xPath
  2752. : RsltRef - 데이터결과 instance xPath
  2753. : orddeptcd - 부서코드
  2754. : 추후에 마스터 데이터 작업 이후에 수정될 예정임
  2755. * @return : void
  2756. * @authur : 오지훈 2007. 5. 15
  2757. * @---------------------------------------------------
  2758. */
  2759. function reqGetDrList(ref, rsltRef, orddeptcd, queryflag){
  2760. model.makeValue(ref + "/orddeptcd" , orddeptcd);
  2761. model.makeValue(ref + "/queryflag" , queryflag);
  2762. submit("TRMMO04104", true, ref, rsltRef);
  2763. }
  2764. /**
  2765. * @desc : 부서리스트 조회
  2766. * @param : Ref - request instance xPath
  2767. * : RsltRef - return instance xPath
  2768. * : queryflag - instance에 전체, '-' 추가
  2769. * : dutplceinstcd - 근무지기관코드
  2770. * : dutplceuseyn - 근무지사용여부
  2771. * @return : void
  2772. * @authur : 오지훈 2007. 5. 15
  2773. * @---------------------------------------------------
  2774. */
  2775. function reqGetDeptList(ref, rsltRef, queryflag, dutplceinstcd, dutplceuseyn){
  2776. model.makeValue(ref + "/queryflag", queryflag);
  2777. model.makeValue(ref + "/dutplceinstcd", dutplceinstcd);
  2778. model.makeValue(ref + "/dutplceuseyn", dutplceuseyn);
  2779. submit("TRMMO04103", true, ref, rsltRef);
  2780. }
  2781. /**
  2782. * @desc : 병동리스트 조회
  2783. * @param : Ref - 조회조건 instance xPath
  2784. : RsltRef - 데이터결과 instance xPath
  2785. * @return : void
  2786. * @authur : 오지훈 2007. 5. 15
  2787. * @---------------------------------------------------
  2788. */
  2789. function reqGetWardList(queryflag){
  2790. model.makeValue("root/send/reqdata/queryflag", queryflag);
  2791. submit("TRMMO04106");
  2792. }
  2793. /**
  2794. * @desc : 데이터 한글인지 영문인지 구분해주는 함수
  2795. * @param : pData: 한글여부를 비교할 데이터
  2796. * @return : E: 영문, H: 한글
  2797. * @authur : 마정민 2007. 5. 30
  2798. * @---------------------------------------------------
  2799. */
  2800. function fIsHangul(pData) {
  2801. var sBit = pData.charAt(0);
  2802. if (escape(sBit).length <= 4) return "E";
  2803. return "H";
  2804. }
  2805. /**
  2806. * @desc : 공통 상세보기
  2807. * @param : flag: 상세보기를 호출하는 화면 구분
  2808. * @return : void
  2809. * @authur : 마정민 2007. 6. 12
  2810. * @---------------------------------------------------
  2811. */
  2812. function fIvwDetlVwCom ( grdObj ) {
  2813. var grdLeft = 383;
  2814. var grdWidht = 811;
  2815. var minGrdLeft = 900;
  2816. var minGrdWidht = 290;
  2817. var ivwLeft = 0;
  2818. var ivwWidth = 381;
  2819. var extnIvwLeft = ivwLeft;
  2820. var extnIvwWidth = 900;
  2821. var lineX1 = grdLeft;
  2822. var lineX2 = 1191;
  2823. var minLineX1 = minGrdLeft;
  2824. var minnLineX2 = lineX2;
  2825. var ivwGridWidth = eval ( model.getValue ( "/root/init/grdwd" ));
  2826. var extnIvwGridWidth = eval ( model.getValue ( "/root/init/extngrdwd" ));
  2827. var ivwLineX2 = 380;
  2828. var ivwMinLineX2 = 898;
  2829. var grdnm = model.getValue ( "/root/init/grdnm" );
  2830. var colsize = 100;
  2831. if ( model.getValue( "/root/init/detlvw" ) == "p") {
  2832. if (opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" && !isNull(opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ))){
  2833. opener.grd_prcplist.colHidden(3) = true;
  2834. }
  2835. if (typeof(opener.grd_prcplist) != "unknown" ) {
  2836. opener.grd_prcplist.colHidden(4) = true;
  2837. opener.grd_prcplist.attribute ( "left" ) = minGrdLeft;
  2838. opener.grd_prcplist.attribute ( "width" ) = minGrdWidht;
  2839. }
  2840. if (grdObj == "bf"){
  2841. opener.ivw_prcp3.attribute ( "left" ) = extnIvwLeft;
  2842. opener.ivw_prcp3.attribute ( "width" ) = extnIvwWidth;
  2843. } else {
  2844. opener.ivw_prcp.attribute ( "left" ) = extnIvwLeft;
  2845. opener.ivw_prcp.attribute ( "width" ) = extnIvwWidth;
  2846. }
  2847. if (typeof(opener.line5) != "unknown" ) {
  2848. opener.line5.attribute ( "x1" ) = minLineX1;
  2849. opener.line5.attribute ( "x2" ) = minnLineX2;
  2850. }
  2851. if ( opener.model.getValue ( "/root/cp" ) == "Y" ) {
  2852. opener.ivw_prcp.visible = false;
  2853. if (grdObj == "bf"){
  2854. opener.ivw_prcp3.attribute ( "left" ) = extnIvwLeft;
  2855. opener.ivw_prcp3.attribute ( "width" ) = extnIvwWidth;
  2856. } else {
  2857. opener.ivw_prcp2.attribute ( "left" ) = extnIvwLeft;
  2858. opener.ivw_prcp2.attribute ( "width" ) = extnIvwWidth;
  2859. }
  2860. if (typeof(opener.grd_prcplist) != "unknown" ) {
  2861. opener.grd_prcplist.attribute ( "left" ) = parseInt(minGrdLeft) + 5;
  2862. opener.grd_prcplist.attribute ( "width" ) = parseInt(minGrdWidht) + 10;
  2863. }
  2864. if (typeof(opener.line5) != "unknown" ) {
  2865. opener.line5.attribute ( "x1" ) = parseInt(minLineX1)+5;
  2866. opener.line5.attribute ( "x2" ) = parseInt(minnLineX2)+15;
  2867. }
  2868. }
  2869. model.setValue( "/root/init/detlvw", "m" );
  2870. opener.model.setValue( "/root/init/detlivw", "m" );
  2871. if( document.controls( grdnm ) != null) {
  2872. if (typeof(line8) != "unknown" ) {
  2873. line8.attribute ( "x2" ) = ivwMinLineX2;
  2874. }
  2875. document.controls( grdnm ).attribute ( "width" ) = extnIvwGridWidth;
  2876. if ( grdObj == "bf" ) {
  2877. //20081031 마정민 수정 전처방에 지정일을 추가하면서 상세보기시 word 추가
  2878. for ( var i =1; i <= document.controls( grdnm ).rows ; i++ ){
  2879. document.controls( grdnm ).rowstyle(1, "data", "word-warp") = "word";
  2880. }
  2881. document.controls( grdnm ).colWidth(document.controls( grdnm ).colRef ( "tempcol6" )) = model.getValue ( "/root/init/tempcol6exwd" );
  2882. document.controls( grdnm ).colWidth(document.controls( grdnm ).colRef ( "tempcol7" )) = model.getValue ( "/root/init/tempcol7exwd" );
  2883. //20081031 마정민 수정 전처방에 지정일을 추가하면서 상세보기시 word 추가. word일때는 autoResize = true
  2884. document.controls( grdnm ).autoResize = true ;
  2885. document.controls( grdnm ).rebuild();
  2886. }
  2887. }
  2888. } else {
  2889. if (opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) != "O" && !isNull(opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ))){
  2890. opener.grd_prcplist.colHidden(3) = false;
  2891. }
  2892. if (typeof(opener.grd_prcplist) != "unknown" ) {
  2893. opener.grd_prcplist.colHidden(4) = false;
  2894. opener.grd_prcplist.attribute ( "left" ) = grdLeft;
  2895. opener.grd_prcplist.attribute ( "width" ) = grdWidht;
  2896. }
  2897. if (grdObj == "bf"){
  2898. opener.ivw_prcp3.attribute ( "left" ) = ivwLeft;
  2899. opener.ivw_prcp3.attribute ( "width" ) = ivwWidth;
  2900. } else {
  2901. opener.ivw_prcp.attribute ( "left" ) = ivwLeft;
  2902. opener.ivw_prcp.attribute ( "width" ) = ivwWidth;
  2903. }
  2904. if (typeof(opener.line5) != "unknown" ) {
  2905. opener.line5.attribute ( "x1" ) = lineX1;
  2906. opener.line5.attribute ( "x2" ) = lineX2;
  2907. }
  2908. if ( opener.model.getValue ( "/root/cp" ) == "Y" ) {
  2909. opener.ivw_prcp.visible = false;
  2910. if (grdObj == "bf"){
  2911. opener.ivw_prcp3.attribute ( "left" ) = ivwLeft;
  2912. opener.ivw_prcp3.attribute ( "width" ) = ivwWidth;
  2913. } else {
  2914. opener.ivw_prcp2.attribute ( "left" ) = ivwLeft;
  2915. opener.ivw_prcp2.attribute ( "width" ) = ivwWidth;
  2916. }
  2917. if (typeof(opener.grd_prcplist) != "unknown" ) {
  2918. opener.grd_prcplist.attribute ( "left" ) = parseInt(grdLeft) + 2;
  2919. opener.grd_prcplist.attribute ( "width" ) = parseInt(grdWidht) + 7;
  2920. }
  2921. if (typeof(opener.line5) != "unknown" ) {
  2922. opener.line5.attribute ( "x1" ) = parseInt(lineX1)+2;
  2923. opener.line5.attribute ( "x2" ) = parseInt(lineX2)+15;
  2924. }
  2925. }
  2926. model.setValue( "/root/init/detlvw", "p" );
  2927. opener.model.setValue( "/root/init/detlivw", "p" );
  2928. if( document.controls( grdnm ) != null) {
  2929. if (typeof(line8) != "unknown" ) {
  2930. line8.attribute ( "x2" ) = ivwLineX2;
  2931. }
  2932. document.controls( grdnm ).attribute ( "width" ) = ivwGridWidth;
  2933. if ( grdObj == "bf" ) {
  2934. //20081031 마정민 수정 전처방에 지정일을 추가하면서 상세보기시 word 추가. 단 상세보기 취소시 noe으로 바꿈.
  2935. for ( var i =1; i <= document.controls( grdnm ).rows ; i++ ){
  2936. document.controls( grdnm ).rowstyle(1, "data", "word-warp") = "none";
  2937. document.controls( grdnm ).rowHeight(i) ="22" ;
  2938. }
  2939. document.controls( grdnm ).colWidth(document.controls( grdnm ).colRef ( "tempcol6" )) = model.getValue ( "/root/init/tempcol6wd" );
  2940. document.controls( grdnm ).colWidth(document.controls( grdnm ).colRef ( "tempcol7" )) = model.getValue ( "/root/init/tempcol7wd" );
  2941. //20081031 마정민 수정 전처방에 지정일을 추가하면서 상세보기시 word 추가. none일때는 autoResize = false;
  2942. document.controls( grdnm ).autoResize = false ;
  2943. document.controls( grdnm ).rebuild();
  2944. }
  2945. }
  2946. }
  2947. //CP일 경우, viewer안의 컨트롤 height 사이즈를 모두 조정해야 함 (2008.08.28 JJE)
  2948. //전처방 상세보기 모드일 경우 타 버튼 클릭시 전처방 축소시 오류 발생으로 조건 추가(2008.10.21 JJE)
  2949. if ( opener.model.getValue ( "/root/cp" ) == "Y" && grdObj != "bf" ) {
  2950. opener.window.javascript.fResizeControls();
  2951. }
  2952. }
  2953. /**
  2954. * @desc : 두 NodeList와 NodeValue값을 비교 결과에 따라 true, false를 return한다.
  2955. * @param : desNode - 목적노드
  2956. : srcNode - 원본노드
  2957. * @return : true, false
  2958. * @authur : 오지훈 2007. 6. 14
  2959. * @---------------------------------------------------
  2960. */
  2961. function compareNodeVal(desNode, srcNode){
  2962. var node = instance1.selectSingleNode(desNode);
  2963. var node2 = instance1.selectSingleNode(srcNode);
  2964. var nodeList = node.childNodes;
  2965. var nodeList2 = node2.childNodes;
  2966. while(childNode = nodeList.nextNode()){
  2967. childNode2 = nodeList2.nextNode();
  2968. //alert(childNode.NodeValue + "," + childNode2.NodeValue);
  2969. if(childNode.NodeValue != childNode2.NodeValue){
  2970. return true; //값이 다른 경우 true
  2971. }
  2972. }
  2973. return false; //값이 같은 경우 false
  2974. }
  2975. /**
  2976. * @desc : 병실리스트 - 병동에 해당하는 병실코드 조회
  2977. * @param : wardcd - 병동코드
  2978. * @return : void
  2979. * @authur : 오지훈 2007. 6. 14
  2980. */
  2981. function reqGetRoomList(wardcd){
  2982. model.removeNodeset("/root/send/reqdata");
  2983. model.makeValue("/root/send/reqdata/wardcd", wardcd);
  2984. submit("TRMMO04107");
  2985. }
  2986. /**
  2987. * @desc : 환자정보 조회
  2988. * @param : paramFlag - 등록번호/환자명 구분(pid/hngnm)
  2989. * : param - 등록번호/환자명
  2990. : param2 - 외래/입원일자
  2991. * : tblFlag - 테이블구분(환자기본/외래/입원, ptbs/otpt/inpt)
  2992. * @return : void
  2993. * @authur : 오지훈 2007. 6. 14
  2994. */
  2995. function reqPatInfo(paramFlag, tblFlag, param, param2){
  2996. model.removeNodeset("/root/send/reqdata");
  2997. if(paramFlag == "pid"){ //등록번호 검색
  2998. model.makeValue("/root/send/reqdata/pid" , param);
  2999. model.makeValue("/root/send/reqdata/hngnm", "");
  3000. }else if(paramFlag == "hngnm"){ //환자명 검색
  3001. model.makeValue("/root/send/reqdata/pid" , "");
  3002. model.makeValue("/root/send/reqdata/hngnm", param);
  3003. }
  3004. model.makeValue("/root/send/reqdata/orddd" , param2);
  3005. model.makeValue("/root/send/reqdata/queryflag", tblFlag);
  3006. model.makeValue("/root/send/reqdata/srchflag" , paramFlag);
  3007. submit("TRMMO04105");
  3008. var Node = instance1.selectSingleNode("/root/init/patnm/patnm/hngnm");
  3009. if(Node == null && paramFlag == "pid"){
  3010. messageBox("등록번호 [" + param + "] 환자를 찾을 수 ", "I004");
  3011. return false;
  3012. }else if(Node == null && paramFlag == "hngnm"){
  3013. messageBox("환자명 [" + param + "] 환자를 찾을 수 ", "I004");
  3014. return false;
  3015. }
  3016. return true;
  3017. }
  3018. /**
  3019. * @desc : 대체약이 있을경우 팝업처리
  3020. * @param : currow: 대체약을 띄울 팝업
  3021. : flag: 대체약 팝업 flag ( 1:처방복사, 2:대체약일괄변경, 3:대체약폴더내변경 )
  3022. : strSrc: source Node
  3023. * @return : void
  3024. * @authur : 마정민 2007. 6. 21
  3025. */
  3026. function fAltDrug ( currow, flag, strSrc, prcpInptFlag, powdflag ) {
  3027. if (isNull(strSrc)) strSrc = "/root/main/prcp/prcplist";
  3028. var setno = model.getValue ( "/root/hidden/prmsprcpsetinfo/prmsprcpsetlist/setno" );
  3029. var settypecd = model.getValue ( "/root/hidden/prmsprcpsetinfo/prmsprcpsetlist/settypecd" );
  3030. var setkindcd = model.getValue ( "/root/hidden/prmsprcpsetinfo/prmsprcpsetlist/setkindcd" );
  3031. var setclscd = model.getValue ( "/root/hidden/prmsprcpsetinfo/prmsprcpsetlist/setclscd" );
  3032. var settrgtcd = model.getValue ( "/root/hidden/prmsprcpsetinfo/prmsprcpsetlist/settrgtcd" );
  3033. var prcpcd = "";
  3034. var prcpnm = "";
  3035. if ( flag == "child" ) {
  3036. flag = 1;
  3037. //20090528: 6세미만 경구약 자동 powdflag전환 때문에 처방복사시 powdflag 체크로직 추가.
  3038. if ( !isNull(powdflag)) {
  3039. flag = powdflag;
  3040. }
  3041. if ( prcpInptFlag == "01" ) {
  3042. if (typeof(ivw_prcp3) == "object"){
  3043. prcpcd = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  3044. prcpnm = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  3045. }
  3046. } else {
  3047. if (typeof(ivw_prcp) == "object"){
  3048. prcpcd = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  3049. prcpnm = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  3050. }
  3051. }
  3052. }
  3053. if (isNull(prcpcd)) {
  3054. prcpcd = model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  3055. prcpnm = model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  3056. }
  3057. var prcpclscd = model.getValue ( strSrc + "[" + currow + "]/prcpclscd" );
  3058. var erprcpflag = model.getValue ( strSrc + "[" + currow + "]/erprcpflag" );
  3059. var prnprcpflag = model.getValue ( strSrc + "[" + currow + "]/prnprcpflag" );
  3060. var prepprcpflag = model.getValue ( strSrc + "[" + currow + "]/prepprcpflag" );
  3061. var selfdrugflag = model.getValue ( strSrc + "[" + currow + "]/selfdrugflag" );
  3062. var powdflag = model.getValue ( strSrc + "[" + currow + "]/powdflag" );
  3063. var drugspd = model.getValue ( strSrc + "[" + currow + "]/drugspd" );
  3064. var prcpvolunitflag = model.getValue ( strSrc + "[" + currow + "]/prcpvolunitflag" );
  3065. cond1 = prcpcd + "▦" + setno + "▦" + settypecd + "▦" + setkindcd + "▦" + setclscd + "▦" + settrgtcd + "▩";
  3066. cond2 = prcpclscd + "▦" + erprcpflag + "▦" + prnprcpflag + "▦" + prepprcpflag + "▦" + selfdrugflag + "▦" + powdflag + "▦" + drugspd + "▦" + prcpvolunitflag + "▩";
  3067. setParameter ( "SMMMO02300_cond1", cond1 );
  3068. setParameter ( "SMMMO02300_cond2", cond2 );
  3069. setParameter ( "SMMMO02300_cond3", flag );
  3070. setParameter ( "SMMMO02300_cond4", prcpnm );
  3071. fPrcpModal ( "SPMMB10100", "220", "150" );
  3072. clearParameter ( "SMMMO02300_cond1" );
  3073. clearParameter ( "SMMMO02300_cond2" );
  3074. clearParameter ( "SMMMO02300_cond3" );
  3075. clearParameter ( "SMMMO02300_cond4" );
  3076. }
  3077. /**
  3078. * @desc : 화면컬럼 조회 및 설정
  3079. * @param :
  3080. * @return : void
  3081. * @authur : 오지훈 2007. 6. 18
  3082. */
  3083. function initScrnCol(grdObj, scrnID){
  3084. model.removeNodeset("/root/send/reqdata");
  3085. model.makeValue("/root/send/reqdata/scrnid", scrnID);
  3086. submit("TRMMB01103");
  3087. var node = instance1.selectSingleNode("/root/hidden/userscrnenvinfo/gridseq");
  3088. if(node){
  3089. var compscnts = model.getValue("/root/hidden/userscrnenvinfo/gridseq/compscnts");
  3090. var compsrefcnts = model.getValue("/root/hidden/userscrnenvinfo/gridseq/compsrefcnts");
  3091. var compssizecnts = model.getValue("/root/hidden/userscrnenvinfo/gridseq/compssizecnts");
  3092. setScrnEnvEstb(grdObj, compscnts, compsrefcnts, compssizecnts);
  3093. }
  3094. }
  3095. /**
  3096. * @desc : 처방검색
  3097. * @param : prcpnm: 검색할 처방명
  3098. : prcpdd: 처방일자
  3099. : insukind: 보험유형
  3100. : trnm: 트랜젝션 네임
  3101. : ioflag: 외래, 입원, 응급 구분
  3102. : refreshFlag: refresh 여부
  3103. : mthdnm 명
  3104. : containflag : contains사용구분
  3105. * @return : void
  3106. * @authur : 마정민 2007. 6. 21
  3107. */
  3108. function fPrcpSrchCom ( prcpnm, prcpdd, insukind, trnm, ioflag, refreshFlag, mthdnm, isHangul, containflag ) {
  3109. if ( isNull(trnm)) {
  3110. trnm = "TRMMO00100";
  3111. }
  3112. if ( isNull(ioflag)) {
  3113. ioflag = "-";
  3114. }
  3115. if ( isNull(refreshFlag)) {
  3116. refreshFlag = false;
  3117. }
  3118. if ( isNull(mthdnm)) {
  3119. mthdnm = "getPrcpSrchInfo";
  3120. } //getPrcpCdSrchInfo
  3121. //contains사용일 경우, 검색어의 특수기호에 /를 붙인다.
  3122. //ex) high-voltage@avm -> high/-voltage/@avm
  3123. //2008.06.28 오지훈
  3124. if(containflag == true){
  3125. var regular = /[^ A-Za-z0-9]/g;
  3126. var arr = prcpnm.match(regular);
  3127. if(arr != null ){
  3128. for(var i = 0; i <= arr.length-1; i++){
  3129. if (arr[i] != "-" && arr[i] != " " && arr[i] != ".") {
  3130. prcpnm = prcpnm.setReplaceWord( arr[i], "\\".concat(arr[i]) );
  3131. }
  3132. }
  3133. }
  3134. model.setValue("/root/send/cond6", "1");
  3135. }else{
  3136. model.setValue("/root/send/cond6", "2");
  3137. }
  3138. if (ioflag == "" || ioflag == null || ioflag == "undefined" || ioflag == "-") ioflag = getPatientInfoDetail("ioflag");
  3139. model.setValue ( "/root/send/cond1", prcpnm.toUpperCase()); //처방명, 수가코드
  3140. model.setValue ( "/root/send/cond2", ioflag ); //외래, 입원, 응급 구분
  3141. model.setValue ( "/root/send/cond3", prcpdd ); //처방일
  3142. model.setValue ( "/root/send/cond4", insukind ); //환자보험유형
  3143. if ( !isNull( isHangul)) {
  3144. model.setValue ( "/root/send/cond5", isHangul ); //한영구분
  3145. }
  3146. //그리드처방검색일때: 1일때는 첫단어검색, 2일때는 단어검색
  3147. //var srchcond1 = model.getValue ( "/root/prcpsrchcond1" );
  3148. //model.setValue ( "/root/send/cond6", srchcond1 ); //검색조건
  3149. /*20080930 시행부서 건진처방 때문에 추가했으나 시행부서처방에서도 건진처방 건색은 안되야 한다고 해서 주석으로 처리.
  3150. if ( model.getValue ( "/root/addprcp" ) == "Y" || opener.model.getValue ( "/root/addprcp" ) == "Y") {
  3151. model.makeValue ( "/root/send/cond7", "addprcp"); //처방명, 수가코드
  3152. }*/
  3153. model.setValue ( "/root/send/cond99", mthdnm ); //검색구분
  3154. if ( refreshFlag == false ) {
  3155. submit (trnm, false );
  3156. } else {
  3157. submit( trnm );
  3158. }
  3159. }
  3160. /**
  3161. * @desc : 전처방검색
  3162. * @param : pid: 환자ID
  3163. : orddd: 외래:진료일, 입원:입원일
  3164. : prcpdd: 처방일
  3165. : bfflag: 전처방 where 조건 구분자
  3166. : initflag: 최초구분
  3167. : orddrid: 의사ID,외래에서만 필요하다.
  3168. : todd
  3169. : prcpgenrflag: 외래입원구분
  3170. : orddeptcd: 부서코드
  3171. : cretno: 원무생성번호
  3172. : ioflag: 외래, 입원, 응급 구분
  3173. : refreshFlag: refresh 여부
  3174. : followup: 퇴원후 외래처방일과 동일한 처방일이거나 initsrch 와 동일한 날짜가 있을 경우 followdd를 입력한다.
  3175. : bfprcpviewflag : 전처방 조회 조건 개인별 설정기능 추가 by sonjy 20091120
  3176. * @return : void
  3177. * @authur : 마정민 2007. 6. 21
  3178. */
  3179. function fBfPrcpSrchCom ( pid, orddd, prcpdd, bfflag, initflag, orddrid, todd, prcpgenrflag, orddeptcd, cretno, trnm, refreshFlag, prcpauthflag, followup , bfprcpviewflag) {
  3180. if ( isNull(trnm)) {
  3181. trnm = "TRMMO00100";
  3182. }
  3183. if ( isNull(refreshFlag)) {
  3184. refreshFlag = false;
  3185. }
  3186. if ( isNull(prcpauthflag)) {
  3187. prcpauthflag = "0";
  3188. }
  3189. var curprcpdd = opener.model.getValue ( "/root/init/prcpdd" );
  3190. if (isNull(curprcpdd)) {
  3191. curprcpdd = model.getValue ( "/root/init/prcpdd" );
  3192. if (isNull(curprcpdd)){
  3193. curprcpdd = getCurrentDate();
  3194. }
  3195. }
  3196. var oprsrvno = "";
  3197. if (!isNull(opener.model.getValue ( "/root/operation/list/oprsrvno"))) {
  3198. orddd = opener.model.getValue ( "/root/operation/list/oprsrvno");
  3199. if (opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) == "O"){
  3200. prcpgenrflag = "OUTOP";
  3201. } else {
  3202. prcpgenrflag = "OP";
  3203. }
  3204. } else if (!isNull(model.getValue ( "/root/operation/list/oprsrvno"))) {
  3205. orddd = model.getValue ( "/root/operation/list/oprsrvno");
  3206. if (model.getValue ( "/root/patflag/list/prcpgenrflag" ) == "O"){
  3207. prcpgenrflag = "OUTOP";
  3208. } else {
  3209. prcpgenrflag = "OP";
  3210. }
  3211. }
  3212. model.setValue ( "/root/send/cond1", pid); //환자ID
  3213. model.setValue ( "/root/send/cond2", orddd ); //외래:진료일, 입원:입원일
  3214. model.setValue ( "/root/send/cond3", prcpauthflag ); //처방권한 구분
  3215. model.setValue ( "/root/send/cond4", prcpdd ); //처방일자
  3216. model.setValue ( "/root/send/cond5", bfflag ); //전처방 where 조건 구분자
  3217. model.setValue ( "/root/send/cond6", initflag ); //최초구분
  3218. model.setValue ( "/root/send/cond7", orddrid); //의사ID,외래에서만 필요하다.
  3219. model.setValue ( "/root/send/cond8", todd); //todd
  3220. model.setValue ( "/root/send/cond9", prcpgenrflag ); //외래입원구분
  3221. model.setValue ( "/root/send/cond10", orddeptcd ); //부서코드
  3222. model.setValue ( "/root/send/cond11", cretno ); //생성번호
  3223. model.makeValue( "/root/send/cond14", curprcpdd );
  3224. if (!isNull(followup)){
  3225. model.makeValue( "/root/send/cond12", "followup" ); //외래follow up
  3226. }
  3227. var insukind = opener.model.getValue ( "/root/paminfo/list/insukind");
  3228. if (isNull(insukind)) insukind = model.getValue ( "/root/paminfo/list/insukind");
  3229. if (!isNull(insukind)){
  3230. model.makeValue( "/root/send/cond13", insukind ); //외래follow up
  3231. }
  3232. model.setValue ( "/root/send/cond99", "getBfPrcpSrchInfo" );//검색구분
  3233. //by sonjy 전처방 조회모드 설정 20091120
  3234. if( bfflag == "bfprcp" || bfflag == "addprcp" ){
  3235. if(!isNull(bfprcpviewflag) ) model.makeValue( "/root/send/bfprcpviewflag",bfprcpviewflag);
  3236. }
  3237. if ( refreshFlag == false ) {
  3238. if(!submit (trnm, false )) {
  3239. return false;
  3240. } else {
  3241. return true;
  3242. }
  3243. } else {
  3244. if (!submit( trnm )) {
  3245. return false;
  3246. } else {
  3247. return true;
  3248. }
  3249. }
  3250. //CP일 경우, viewer안의 컨트롤 height 사이즈를 모두 조정해야 함 (2008.08.28 JJE)
  3251. if ( opener.model.getValue ( "/root/cp" ) == "Y" ) {
  3252. opener.window.javascript.fResizeControls();
  3253. }
  3254. }
  3255. /**
  3256. * @desc : 약속처방에 등록 가능한지 check
  3257. * @param : usge: 저장화면
  3258. : prcpkindcd: 처방분류
  3259. : prcpnm: 처방명
  3260. * @return : true, false
  3261. * @authur : 마정민 2007. 6. 22
  3262. */
  3263. function fPrmsSaveCheck ( usge, prcpkindcd, prcpnm ) {
  3264. //약속처방, 지시처방에서는 HSCT 처방을 등록할 수 없다.
  3265. if ( prcpkindcd == "04" && usge == "prms" ) {
  3266. messageBox ( "약속처방에는 [" + prcpnm +"] HSCT 처방을 등록", "E001" );
  3267. return false;
  3268. } else if ( prcpkindcd == "04" && usge == "direc" ) {
  3269. messageBox ( "지시처방에는 [" + prcpnm +"] HSCT 처방을 등록", "E001" );
  3270. return false;
  3271. }
  3272. return true;
  3273. }
  3274. /**
  3275. * @desc : 팝업위치가 저장되지 않는 팝업 띄우기
  3276. * @param : screenId: 화면 ID
  3277. : argxpt : x좌표
  3278. : argypt : y좌표
  3279. * @return : void
  3280. * @authur : 마정민 2007. 6. 29
  3281. */
  3282. function fPrcpModal ( screenId, argxpt, argypt ) {
  3283. var xpt = window.screenleft + eval(argxpt);
  3284. var ypt = window.screenTop + eval(argypt);
  3285. var coord = getRelativeCoordinate ( xpt, ypt );
  3286. var mon = coord[0];
  3287. xpt = coord[1];
  3288. ypt = coord[2];
  3289. modal (screenId, mon, xpt, ypt, screenId, "", "", "", false);
  3290. }
  3291. /**
  3292. * @desc : 팝업위치가 저장되지 않는 팝업 모달 띄우기
  3293. * @param : screenId: 화면 ID
  3294. : argxpt : x좌표
  3295. : argypt : y좌표
  3296. * @return : void
  3297. * @authur : 문세희 2008. 9. 25
  3298. */
  3299. function fPrcpOpen ( screenId, argxpt, argypt ) {
  3300. var xpt = window.screenleft + eval(argxpt);
  3301. var ypt = window.screenTop + eval(argypt);
  3302. var coord = getRelativeCoordinate ( xpt, ypt );
  3303. var mon = coord[0];
  3304. xpt = coord[1];
  3305. ypt = coord[2];
  3306. open (screenId, mon, xpt, ypt, screenId, "", "", "", false);
  3307. }
  3308. /**
  3309. * @desc : 노드리스트를 CSV로 반환한다.
  3310. * @param : nodeList
  3311. : headerFlag : header 정보 필요유무
  3312. * @return : void
  3313. * @authur : 마정민 2007. 6. 30
  3314. */
  3315. function getPrcpNodeListCSV(nodeList, headerFlag ) {
  3316. if( nodeList.length == 0 )
  3317. return "";
  3318. var sColSep = "▦";
  3319. var sRowSep = "▩";
  3320. var rCSV = "";
  3321. var childNodeList = nodeList.item(0).childNodes;
  3322. var childNodeCnt = childNodeList.length;
  3323. if( childNodeCnt == 0 )
  3324. return "";
  3325. var i, j;
  3326. if ( headerFlag != "N" ) {
  3327. for( i = 0; i < childNodeCnt - 1; i++) {
  3328. rCSV += childNodeList.item(i).nodeName + sColSep;
  3329. }
  3330. rCSV += childNodeList.item(i).nodeName + sRowSep;
  3331. }
  3332. var node;
  3333. while( node = nodeList.nextNode() ) {
  3334. childNodeList = node.childNodes;
  3335. for( i = 0; i < childNodeCnt - 1; i++) {
  3336. rCSV += childNodeList.item(i).text + sColSep;
  3337. }
  3338. rCSV += childNodeList.item(i).text + sRowSep;
  3339. }
  3340. return rCSV;
  3341. }
  3342. /**
  3343. * @desc : 수술방 조회(combo 설정)
  3344. * @param : opschedd - 수술예약일자
  3345. * : queryflag - Query구분자(day : 일자, total : 전체, detl :부서, 의사, 일자 )
  3346. * @return :
  3347. * @authur : 오지훈 2007. 6. 30
  3348. */
  3349. function reqOpRoomList(opschedd, desRef, queryflag, perfdeptcd, perfdrid){
  3350. var resultRef = "/root/hidden/mmo/oproomlist";
  3351. model.makeNode(resultRef);
  3352. model.removeNodeset("/root/send/reqdata");
  3353. model.makeValue("/root/send/reqdata/opschedd" , opschedd);
  3354. model.makeValue("/root/send/reqdata/queryflag", queryflag);
  3355. if(queryflag == "detl"){
  3356. model.makeValue("/root/send/reqdata/perfdeptcd", perfdeptcd);
  3357. model.makeValue("/root/send/reqdata/perfdrid" , perfdrid);
  3358. }
  3359. var rtnval = submit("TRMMO05704", false, "/root/send/reqdata", resultRef);
  3360. if(rtnval == true){
  3361. copyNodeType(desRef, resultRef, "replace");
  3362. }
  3363. }
  3364. /**
  3365. * @desc : 그리드 data 엑셀화일로 저장
  3366. * @
  3367. * @param :
  3368. * @event :
  3369. * @return :
  3370. * @---------------------------------------------------
  3371. */
  3372. function saveGridToExcel(grdObj){
  3373. var fileName = window.fileDialog("save", ",", false, "excel", "xls", "Excel Files(*.xls)|*.xls|All Files (*.*)|*.*");
  3374. if (fileName != ""){
  3375. grdObj.saveExcel(fileName, "SheetName", true, true, "", "", true);
  3376. }
  3377. }
  3378. /**
  3379. * @desc : 콤보박스에 원하는 instance node와 value를 설정
  3380. * @
  3381. * @param :
  3382. * @event :
  3383. * @return :
  3384. * @---------------------------------------------------
  3385. */
  3386. function addComboInstance(combopath, nodename, nodeval, parentnode){
  3387. var xmlNode = model.instances(0).selectSingleNode(combopath + "/" + parentnode);
  3388. if(xmlNode == null){
  3389. return;
  3390. }
  3391. nodename = nodename.split("^");
  3392. nodeval = nodeval.split("^");
  3393. if(nodename.length != nodeval.length){
  3394. return;
  3395. }
  3396. var label = model.instances(0).createElement(nodename[0]);
  3397. var val = model.instances(0).createElement(nodename[1]);
  3398. var combo = model.instances(0).createElement(parentnode);
  3399. label.value = "" + nodeval[0] + "";
  3400. val.value = "" + nodeval[1] + "";
  3401. combo.appendChild(label);
  3402. combo.appendChild(val);
  3403. chkNode = model.instances(0).selectSingleNode(combopath);
  3404. if(chkNode == null){
  3405. model.makeNode(combopath);
  3406. srcNode = model.instances(0).selectSingleNode(combopath);
  3407. }else{
  3408. srcNode = model.instances(0).selectSingleNode(combopath);
  3409. }
  3410. desNode = model.instances(0).selectSingleNode(combopath + "/" + parentnode);
  3411. srcNode.insertBefore(combo, desNode);
  3412. model.refresh();
  3413. }
  3414. /**
  3415. * @desc : 콤보박스에 원하는 instance node와 value를 설정
  3416. * @
  3417. * @param : signbfcnts: sign할 데이터
  3418. : signid: sign 할 유저의 id
  3419. : signopt: false 로그인후 한번만 띄움, true: 매번띄움
  3420. : setnode: sign 데이터를 setValue 할 인스턴스 값이 있을 때만 함
  3421. * @event :
  3422. * @return :
  3423. * @---------------------------------------------------
  3424. */
  3425. function fSaveSign ( signbfcnts, signid, signopt, setnode ) {
  3426. var v_stext = "";
  3427. if ( !isNull( signbfcnts )) {
  3428. if (signopt) {
  3429. v_stext = zesfSignData( signbfcnts, signid, signopt );
  3430. } else {
  3431. v_stext = zesfSignData( signbfcnts, signid );
  3432. }
  3433. if ( isNull(v_stext)) {
  3434. return ""; //값이 없을 때는 return 함
  3435. }
  3436. } else {
  3437. return "N"; //인증할 데이터가 없을 때는 N 으로 return
  3438. }
  3439. if ( !isNull (setnode)) { //setnode가 있을경우 setvalue
  3440. model.setValue ( setnode, v_stext );
  3441. }
  3442. return v_stext;
  3443. }
  3444. function fPrcpExecDeptSrch(flag) {
  3445. var prcpcd = model.getValue ( "/root/main/prcp/prcplist/prcpcd" );
  3446. var prcpdd = opener.model.getValue ( "/root/init/prcpdd" );
  3447. if ( isNull(prcpdd)) {
  3448. prcpdd = model.getValue ( "/root/init/prcpdd" );
  3449. if (isNull(prcpdd)) {
  3450. prcpdd = getCurrentDate();
  3451. }
  3452. }
  3453. model.makeValue("/root/send/cond1" , prcpcd);
  3454. model.makeValue("/root/send/cond2" , prcpdd);
  3455. model.makeValue("/root/send/cond3" , flag);
  3456. //KNUH_20110208, 주희경, 진료 속도 개선을 위해 로그인 시 미리 데이터를 조회해 놓고 copy해서 쓰는 방식으로 변경
  3457. //flag가 all이면 이미 조회 해 놓은 데이터 카피
  3458. if ( flag == "all" )
  3459. {
  3460. model.makeNode("/root/orddept");
  3461. var viewerObj = getViewer("sysMessage");
  3462. var srcNodes = viewerObj.window.instance1.selectNodes(gvOrderBasicInfoPath + "/dept");
  3463. var targetNodes = instance1.selectSingleNode("/root/orddept");
  3464. if ( srcNodes.length > 0 )
  3465. {
  3466. for(i=0; i<srcNodes.length; i++)
  3467. {
  3468. targetNodes.appendChild(srcNodes.item(i));
  3469. }
  3470. }
  3471. else //KNUH_20110208, 주희경 복사할 데이터가 없을 시 (비정상 로딩) 강제 로그아웃
  3472. {
  3473. messageBox("현재 프로그램 배포로 인해 진료에 필요한 데이터를 재조회 해야합니다. 죄송하지만 반드시 다시 로그인 해주시기 바랍니다.", "");
  3474. if(submit("TRMMO00116")){
  3475. return true;
  3476. }else{
  3477. return false;
  3478. }
  3479. }
  3480. }
  3481. //all이 아니면 해당 데이터 조회
  3482. else
  3483. {
  3484. if(submit("TRMMO00116")){
  3485. return true;
  3486. }else{
  3487. return false;
  3488. }
  3489. }
  3490. /*
  3491. if(submit("TRMMO00116")){
  3492. return true;
  3493. }else{
  3494. return false;
  3495. }*/
  3496. }
  3497. function fPrcpColor(flag) {
  3498. var rowcolor = "";
  3499. var errcolor = "";
  3500. //처방화면에 색을 칠한다.
  3501. if ( flag == "child"){
  3502. for ( var i=1; i<= opener.grd_prcplist.rows; i++ ) {
  3503. errcolor = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol9" );
  3504. if (!isNull(errcolor)) {
  3505. rowcolor = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol9" );
  3506. } else {
  3507. rowcolor = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol10" );
  3508. if (isNull(rowcolor)) {
  3509. rowcolor = "transparent";
  3510. }
  3511. }
  3512. opener.grd_prcplist.rowstyle(i, "data", "background-color") = rowcolor;
  3513. }
  3514. } else {
  3515. for ( var i=1; i<= grd_prcplist.rows; i++ ) {
  3516. errcolor = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol9" );
  3517. if (!isNull(errcolor)) {
  3518. rowcolor = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol9" );
  3519. } else {
  3520. rowcolor = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol10" );
  3521. if (isNull(rowcolor)) {
  3522. rowcolor = "transparent";
  3523. }
  3524. }
  3525. grd_prcplist.rowstyle(i, "data", "background-color") = rowcolor;
  3526. }
  3527. }
  3528. }
  3529. /**
  3530. * @desc : 감염관리 환자 여부를 확인, 직원감염노출사고 보고서 open
  3531. * @
  3532. * @param :
  3533. * @return :
  3534. * @author : 오지훈
  3535. * @---------------------------------------------------
  3536. */
  3537. function fReqInFecPatList(rgstno, rgstno2){
  3538. model.removeNodeset("/root/send/reqdata");
  3539. model.makeValue("/root/send/reqdata/rgstno" , rgstno);
  3540. model.makeValue("/root/send/reqdata/rgstno2", rgstno2);
  3541. if(submit("TRMMO04108")==true){
  3542. var pflag = model.getValue("/root/main/infecpatlist/infecpatlist/pflag");
  3543. if(pflag == "Y"){
  3544. var infecojb = getOpenWindow("SMASI01000");
  3545. if(infecojb != null){infecojb.javascript.fClose();} //현재 직원감염노출사고 보고서가 있는 경우, close후, 다시 open
  3546. setParameter("sFlag", "P");
  3547. open("SMASI01000");
  3548. }
  3549. }
  3550. }
  3551. /**
  3552. * @desc : EMR부서콤보 조회
  3553. * @
  3554. * @param : ref - reference path
  3555. * rsltref - result reference path
  3556. * orddeptflag- 진료과구분
  3557. * @return :
  3558. * @author : 오지훈
  3559. * @---------------------------------------------------
  3560. */
  3561. function mmbfGetDeptCodeComboList(ref, rsltref, orddeptflag, stnddd){
  3562. var mmb_rsltref = "/root/hidden/mmb/orddept";
  3563. model.removeNode(mmb_rsltref);
  3564. model.makeNode(mmb_rsltref);
  3565. /*
  3566. model.removeNode(ref);
  3567. model.makeValue(ref + "/orddeptflag", orddeptflag);
  3568. if(stnddd != ""){
  3569. model.makeValue(ref + "/stnddd", stnddd);
  3570. }
  3571. if(submit("TRMMB04101", "false", ref, mmb_rsltref)==true){
  3572. model.copyNode(rsltref, mmb_rsltref);
  3573. model.removeNode(mmb_rsltref);
  3574. }*/
  3575. /////////////////
  3576. //KNUH_20110208, 진료속도개선 수정, TRMMB04101 submit을 안하고 로그인시 가져온 데이터를 copy하는것으로 변경, 주희경
  3577. var srcref="";
  3578. if ( orddeptflag == "A" || orddeptflag == "" || orddeptflag == null)
  3579. {
  3580. srcref= gvOrderBasicInfoPath + "/alldeptinfo";
  3581. }
  3582. else if ( orddeptflag == "D")
  3583. {
  3584. srcref= gvOrderBasicInfoPath + "/dscdeptinfo";
  3585. }
  3586. else if ( orddeptflag == "W")
  3587. {
  3588. srcref= gvOrderBasicInfoPath + "/warddeptinfo";
  3589. }
  3590. else if ( orddeptflag == "O")
  3591. {
  3592. srcref= gvOrderBasicInfoPath + "/otptdeptinfo";
  3593. }else if ( orddeptflag == "I")
  3594. {
  3595. srcref= gvOrderBasicInfoPath + "/inptdeptinfo";
  3596. }
  3597. var viewerObj = getViewer("sysMessage");
  3598. var targetNodes = instance1.selectSingleNode(mmb_rsltref);
  3599. var srcNodes = viewerObj.window.instance1.selectNodes(srcref);
  3600. if ( srcNodes.length > 0 ) // 복사할 원본 데이터가 존재하면 복사
  3601. {
  3602. for(i=0; i<srcNodes.length; i++)
  3603. {
  3604. var newNode = srcNodes.item(i).cloneNode(true);
  3605. newNode.nodeName = "dept";
  3606. targetNodes.appendChild(newNode);
  3607. }
  3608. }
  3609. else //KNUH_20110208, 주희경 복사할 데이터가 없을 시 (비정상 로딩) 강제 로그아웃
  3610. {
  3611. messageBox("현재 프로그램 배포로 인해 진료에 필요한 데이터를 재조회 해야합니다. 죄송하지만 반드시 다시 로그인 해주시기 바랍니다.", "");
  3612. model.removeNode(ref);
  3613. model.makeValue(ref + "/orddeptflag", orddeptflag);
  3614. if(stnddd != ""){
  3615. model.makeValue(ref + "/stnddd", stnddd);
  3616. }
  3617. submit("TRMMB04101", "false", ref, mmb_rsltref);
  3618. }
  3619. model.copyNode(rsltref, mmb_rsltref);
  3620. model.removeNode(mmb_rsltref);
  3621. //////////////////
  3622. model.refresh();
  3623. }
  3624. /**
  3625. * @desc : EMR사용자콤보 조회
  3626. * @
  3627. * @param : ref - reference path
  3628. * rsltref - result reference path
  3629. * deptcd - 부서코드
  3630. * jobkindcd - 직종코드
  3631. * jobposcd - 직책코드
  3632. * specordyn - 선택진료여부
  3633. * drflag - 의사구분, 가상사용자 제외
  3634. * nmdispflag - 이름뒤에 특진(Y)표시 할것인지 구분
  3635. * jobflag - 주치의 담당의 조회기준 (JobKindCD, JobPoscd)
  3636. * specdrlist - 선택진료 의사 모두 조회한다.
  3637. * @return :
  3638. * @author : 오지훈
  3639. * @---------------------------------------------------
  3640. */
  3641. function mmbfGetUserComboList(ref, rsltref, deptcd, jobkindcd, specordyn, drflag, standd, nmdispflag, jobflag, specdrchk){
  3642. var mmb_rsltref = "/root/hidden/mmb/userlist";
  3643. model.removeNode(mmb_rsltref);
  3644. model.makeNode(mmb_rsltref);
  3645. model.removeNode(ref);
  3646. model.makeValue(ref + "/deptcd" , deptcd); //부서코드
  3647. model.makeValue(ref + "/jobkindcd", jobkindcd); //직종코드(의사:0330)
  3648. model.makeValue(ref + "/specordyn", specordyn); //선택진료여부
  3649. model.makeValue(ref + "/drflag" , drflag); //주치의 담당의 구분
  3650. model.makeValue(ref + "/standd" , standd); //조회기준일자
  3651. model.makeValue(ref + "/jobflag" , jobflag); //JobKindcd
  3652. model.makeValue(ref + "/specdrchk" , specdrchk); //진료과조건 제외
  3653. if(nmdispflag == "")
  3654. model.makeValue(ref + "/nmdispflag" , "N"); //조회기준일자
  3655. else
  3656. model.makeValue(ref + "/nmdispflag" , nmdispflag); //조회기준일자
  3657. if(submit("TRMMB04102", "false", ref, mmb_rsltref)==true){
  3658. model.copyNode(rsltref, mmb_rsltref);
  3659. model.removeNode(mmb_rsltref);
  3660. }
  3661. model.refresh();
  3662. }
  3663. /**
  3664. * @desc : 하드코드 조회
  3665. * @
  3666. * @param : ref - reference path
  3667. * rsltref - result reference path
  3668. * hardcd - 하드코드
  3669. * @return :
  3670. * @author : 오지훈
  3671. * @---------------------------------------------------
  3672. */
  3673. function reqHardCodeInfo(ref, rsltref, hardcd){
  3674. //KNUH_20110208, 진료속도개선 위해 로그인 시 미리 조회 해 놓은 데이터 복사, 주희경
  3675. fGetHardCDList("N", hardcd, 0, rsltref);
  3676. /*
  3677. var mmb_rsltref = "/root/hidden/mmb/hardcd";
  3678. model.removeNode(mmb_rsltref);
  3679. model.makeNode(mmb_rsltref);
  3680. model.removeNode(ref);
  3681. model.makeValue(ref + "/hardcd", hardcd);
  3682. if(submit("TRMMB04103", "false", ref, mmb_rsltref)==true){
  3683. model.copyNode(rsltref, mmb_rsltref);
  3684. model.removeNode(mmb_rsltref);
  3685. }
  3686. */
  3687. model.refresh();
  3688. }
  3689. /**
  3690. * @desc : 약주사 원내처방 사유 체크
  3691. * @
  3692. * @param : objFlag
  3693. * strDest - 검색노드
  3694. * @return :
  3695. * @author : 마정민
  3696. * @---------------------------------------------------
  3697. */
  3698. function fHosinPrcpResnChk ( objFlag, strDest ) {
  3699. //약주사 원내처방사유 체크
  3700. var prcpclscdchkA2 = "";
  3701. var prcpclscdchkA4 = "";
  3702. var prcpclscdchkA6 = "";
  3703. var prcpclscd = "";
  3704. //SON0919 G3아닌 응급퇴원약 원내외 처리 부분 BY SONJY 20080917 start
  3705. var prcpgenrflag = "";
  3706. var prcpkindcd = "";
  3707. var erflag = "";
  3708. //SON0919 end
  3709. //SON0930 약제원/내외구분 O/I Setting값이 있는 경우 모든 사유처리에서 제외하도록.
  3710. var hosinflag = "";
  3711. var drugmastspec = "";
  3712. if ( objFlag == "child") {
  3713. prcpgenrflag = opener.model.getValue ("/root/patflag/list/prcpgenrflag");
  3714. if( (prcpgenrflag == "E" && opener.model.getValue ( "/root/init/erresn" ) != "G3") || prcpgenrflag == "D" ){ //SON0919 G3아닌 응급퇴원약 원내외 처리 부분 BY SONJY 20080917 start
  3715. erflag = "Y";
  3716. }
  3717. if ( opener.model.getValue ("/root/usge") == "prcp" && (prcpgenrflag =="O" || erflag == "Y" ) ) { //SON0919 G3아닌 응급퇴원약 원내외 처리 부분 BY SONJY
  3718. var srcNodeList;
  3719. if( erflag == "Y") { //원내처방사유가 45 SON0919 start
  3720. srcNodeList = opener.model.instances(0).selectNodes ( strDest + "/prcplist[prcpkindcd='60' and hosinprcpresncd='45']" );
  3721. } else {
  3722. srcNodeList = opener.model.instances(0).selectNodes ( strDest + "/prcplist[hosinprcpresncd='45']" );
  3723. }//SON0919 end
  3724. var prcpclscdNodeValue = "";
  3725. for(var i = 0; i < srcNodeList.length; i++) {
  3726. drugmastspec = srcNodeList.item(i).drugmastspec.value;
  3727. hosinflag = getArrayData ( drugmastspec + "^", 0, 11 , "^", "|" );
  3728. if( hosinflag == "O" ) continue ; //SON0930 start 원외전용약은 예외
  3729. prcpclscdNodeValue = srcNodeList.item(i).prcpclscd.value;
  3730. if ( prcpclscdNodeValue == "A2" ) {
  3731. prcpclscdchkA2 = "A2"
  3732. } else if ( prcpclscdNodeValue == "A4" ){
  3733. prcpclscdchkA4 = "A4"
  3734. } else if ( prcpclscdNodeValue == "A6" ){
  3735. prcpclscdchkA6 = "A6"
  3736. }
  3737. }
  3738. if ( !isNull(prcpclscdchkA2) || !isNull(prcpclscdchkA4) || !isNull(prcpclscdchkA6) ) { //값이 있으면
  3739. var destNodeList = opener.model.instances(0).selectNodes( strDest + "/prcplist" ); //처방화면에 넘어온 것을 모두 찾아서
  3740. for ( var i=1; i <= destNodeList.length; i++ ) { // 처방건별처리
  3741. prcpclscd = opener.model.getValue ( strDest + "/prcplist[" + i + "]/prcpclscd");
  3742. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ; //sonjy 20081012 약/주사일때만 check
  3743. prcpkindcd = opener.model.getValue ( strDest + "/prcplist[" + i + "]/prcpkindcd");
  3744. if( erflag == "Y" && prcpkindcd != "60" ){ //응급 G3가 아니고 퇴원처방이 아닌경우 응급원내사유로 원복
  3745. opener.model.setValue ( strDest + "/prcplist[" + i + "]/hosinhosoutflag", "I" );
  3746. opener.model.setValue ( strDest + "/prcplist[" + i + "]/hosinprcpresncd", model.getValue ( "/root/init/hosinprcpresncd") );
  3747. continue ;
  3748. }
  3749. drugmastspec = opener.model.getValue ( strDest + "/prcplist[" + i + "]/drugmastspec");
  3750. hosinflag = getArrayData ( drugmastspec + "^", 0, 11, "^", "|" );
  3751. if ( prcpclscd != "A6" && hosinflag != "O" ) { //주사제는 예외 , 기본 원외인것도 예외 SON0930
  3752. if ( prcpclscdchkA2 == prcpclscd || prcpclscdchkA4 == prcpclscd || prcpclscdchkA6 == prcpclscd ) {
  3753. var hosinprcpresncd = opener.model.getValue ( strDest + "/prcplist[" + i + "]/hosinprcpresncd");
  3754. if ( hosinprcpresncd != "45" && hosinprcpresncd != "47" && hosinprcpresncd != "57" && hosinprcpresncd != "55" ) { //45, 47이 아니면, 55는 MSET
  3755. opener.model.setValue ( strDest + "/prcplist[" + i + "]/hosinhosoutflag", "I" );
  3756. opener.model.setValue ( strDest + "/prcplist[" + i + "]/hosinprcpresncd", "57" );
  3757. }
  3758. }
  3759. }
  3760. } // End of 처방건별처리
  3761. }// End of 값이 있으면
  3762. } // End of 처방화면에서 외래이고
  3763. } else {
  3764. prcpgenrflag = model.getValue ("/root/patflag/list/prcpgenrflag"); //SON1123 DSC 퇴원처방 처리 by sonjy 20081123
  3765. if( (prcpgenrflag == "E" && model.getValue ( "/root/init/erresn" ) != "G3" ) || prcpgenrflag == "D" ){
  3766. erflag = "Y";
  3767. }
  3768. if ( model.getValue ("/root/usge") == "prcp" && ( prcpgenrflag =="O" || erflag == "Y" ) ) { //처방화면에서 외래이고
  3769. var srcNodeList;
  3770. if( erflag == "Y") { //원내처방사유가 45 SON0919 start
  3771. srcNodeList = model.instances(0).selectNodes ( strDest + "/prcplist[prcpkindcd='60' and hosinprcpresncd='45']" );
  3772. } else {
  3773. srcNodeList = model.instances(0).selectNodes ( strDest + "/prcplist[hosinprcpresncd='45']" );
  3774. }//SON0919 end
  3775. var prcpclscdNodeValue = "";
  3776. for(var i = 0; i < srcNodeList.length; i++) {
  3777. drugmastspec = srcNodeList.item(i).drugmastspec.value;
  3778. hosinflag = getArrayData ( drugmastspec + "^", 0, 11, "^", "|" );
  3779. if( hosinflag == "O" ) continue ; //SON0930 start 원외전용약은 예외
  3780. prcpclscdNodeValue = srcNodeList.item(i).prcpclscd.value;
  3781. if ( prcpclscdNodeValue == "A2" ) {
  3782. prcpclscdchkA2 = "A2"
  3783. } else if ( prcpclscdNodeValue == "A4" ){
  3784. prcpclscdchkA4 = "A4"
  3785. } else if ( prcpclscdNodeValue == "A6" ){
  3786. prcpclscdchkA6 = "A6"
  3787. }
  3788. }
  3789. if ( !isNull(prcpclscdchkA2) || !isNull(prcpclscdchkA4) || !isNull(prcpclscdchkA6) ) { //값이 있으면
  3790. var destNodeList = opener.model.instances(0).selectNodes( strDest + "/prcplist" ); //처방화면에 넘어온 것을 모두 찾아서
  3791. for ( var i=1; i <= destNodeList.length; i++ ) { // 처방건별처리
  3792. prcpclscd = model.getValue ( strDest + "/prcplist[" + i + "]/prcpclscd");
  3793. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ; //sonjy 20081012 약/주사일때만 check
  3794. prcpkindcd = model.getValue ( strDest + "/prcplist[" + i + "]/prcpkindcd"); //SON0919 start
  3795. if( erflag == "Y" && prcpkindcd != "60" ) {
  3796. model.setValue ( strDest + "/prcplist[" + i + "]/hosinhosoutflag", "I" );
  3797. model.setValue ( strDest + "/prcplist[" + i + "]/hosinprcpresncd", model.getValue ( "/root/init/hosinprcpresncd") );
  3798. continue ;
  3799. } //SON0919 end
  3800. drugmastspec = model.getValue ( strDest + "/prcplist[" + i + "]/drugmastspec");
  3801. hosinflag = getArrayData ( drugmastspec + "^", 0, 11, "^", "|" );
  3802. if ( prcpclscd != "A6" && hosinflag != "O" ) { //주사제는 예외 20080930원외전용약은 예외
  3803. if ( prcpclscdchkA2 == prcpclscd || prcpclscdchkA4 == prcpclscd || prcpclscdchkA6 == prcpclscd ) {
  3804. var hosinprcpresncd = model.getValue ( strDest + "/prcplist[" + i + "]/hosinprcpresncd");
  3805. if ( hosinprcpresncd != "45" && hosinprcpresncd != "47" && hosinprcpresncd != "57" && hosinprcpresncd != "55" ) { //45, 47이 아니면, 55는 MSET
  3806. model.setValue ( strDest + "/prcplist[" + i + "]/hosinhosoutflag", "I" );
  3807. model.setValue ( strDest + "/prcplist[" + i + "]/hosinprcpresncd", "57" ); //같은 분류 코드가 있으면 57로 박아준다.
  3808. }
  3809. }
  3810. }
  3811. } // End of 처방건별처리
  3812. } // End of 값이 있으면
  3813. } // End of 처방화면에서 외래이고
  3814. }
  3815. }
  3816. function fHosinPrcpResncdSed ( objFlag, strSrc, sendRow, strSelResn ) {
  3817. //2007-12-13 윤영옥 선생님과 대화
  3818. //종속이 최우선 => 원내처방사유 => 약, 주사
  3819. var prcpgenrflag = "";
  3820. var hosinprcpresncd = "";
  3821. var prcpkindcd = "";
  3822. //SON0919 응급퇴원처방 원내사유 관련 추가 by sonjy start
  3823. var erflag = "";
  3824. var erprcpkindcd = "";
  3825. //SON0919 end
  3826. //SON0930
  3827. var hosinflag = "";
  3828. var drugmastspec = "";
  3829. var iFind = -1;
  3830. var prcpclscd = "";
  3831. var wardcd = "";
  3832. if ( objFlag == "child" ) {
  3833. prcpgenrflag = opener.model.getValue ( "/root/patflag/list/prcpgenrflag" );
  3834. prcpclscd = opener.model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) ;
  3835. prcpkindcd = opener.model.getValue ("/root/init/prcpkindcd");
  3836. erprcpkindcd = opener.model.getValue ( strSrc + "[" + sendRow + "]/prcpkindcd" );
  3837. if( isNull(erprcpkindcd) || erprcpkindcd == "" ) erprcpkindcd = prcpkindcd ;
  3838. if (isNull(strSelResn) || strSelResn == ""){
  3839. if( prcpgenrflag == "E" && erprcpkindcd == "60" && opener.model.getValue ( "/root/init/erresn" ) != "G3") {
  3840. hosinprcpresncd = "00"; // 응급실 G3가 아닌 환자의 퇴원 처방을 원외로 설정 되게 하기 위해 2013.03.27 엄영만
  3841. } else {
  3842. hosinprcpresncd = opener.model.getValue("/root/init/hosinprcpresncd"); //원무의 원내사유 체크
  3843. }
  3844. } else {
  3845. hosinprcpresncd = strSelResn;
  3846. }
  3847. if(prcpgenrflag == "O" || prcpgenrflag == "S"){
  3848. wardcd = "";
  3849. } else {
  3850. wardcd = opener.model.getValue("/root/paminfo/list/wardcd");
  3851. }
  3852. // DSC(일일수술실 2360800000 원외로 되도록 2012.06.11 엄영만)
  3853. if( erprcpkindcd == "60" &&
  3854. ( (prcpgenrflag == "E" && opener.model.getValue ( "/root/init/erresn" ) != "G3")
  3855. || (prcpgenrflag == "D" && wardcd == "2360800000") )) {
  3856. erflag = "Y" ;
  3857. }
  3858. } else {
  3859. prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  3860. prcpclscd = model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ) ;
  3861. prcpkindcd = model.getValue ("/root/init/prcpkindcd");
  3862. erprcpkindcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpkindcd" );
  3863. if( isNull(erprcpkindcd) || erprcpkindcd == "" ) erprcpkindcd = prcpkindcd ;
  3864. if (isNull(strSelResn) || strSelResn == ""){
  3865. if( prcpgenrflag == "E" && erprcpkindcd == "60" && model.getValue ( "/root/init/erresn" ) != "G3") {
  3866. hosinprcpresncd = "00"; // 응급실 G3가 아닌 환자의 퇴원 처방을 원외로 설정 되게 하기 위해 2013.03.27 엄영만
  3867. } else {
  3868. hosinprcpresncd = model.getValue("/root/init/hosinprcpresncd"); //원무의 원내사유 체크
  3869. }
  3870. } else {
  3871. hosinprcpresncd = strSelResn;
  3872. }
  3873. if(prcpgenrflag == "O" || prcpgenrflag == "S"){
  3874. wardcd = "";
  3875. } else {
  3876. wardcd = model.getValue("/root/paminfo/list/wardcd");
  3877. }
  3878. // DSC(일일수술실 2360800000 원외로 되도록 2012.06.11 엄영만) 퇴원처방 처리
  3879. if( erprcpkindcd == "60" &&
  3880. ( (prcpgenrflag == "E" && model.getValue ( "/root/init/erresn" ) != "G3")
  3881. || (prcpgenrflag == "D" && wardcd == "2360800000") )) {
  3882. erflag = "Y" ;//SON0919
  3883. }
  3884. }
  3885. /* 종속 원내처방사유 55: 검사, 수술, 처치에 사용하는 의약품
  3886. 마약 45: 조제실제제,임상시험의약품,마약,방사성의약품,투석액,희귀의약품
  3887. 항암 47: 6세이하의 소아에게 투약하는 항암제(경구) */
  3888. /****************************** 원내처방 사유코드 처리 *******************************/
  3889. if ( prcpgenrflag == "O" || erflag == "Y" ) { //SON0919 외래이거나 g3아닌 응급퇴원처방, DSC(일일수술실 2360800000) 퇴원처방 인 경우
  3890. if( objFlag == "child" ) {
  3891. drugmastspec = opener.model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^";
  3892. hosinflag = getArrayData ( drugmastspec , 0, 11 , "^", "|" ); //SON0930 start 원외전용약은 예외
  3893. //********************* 투석원내처방사유처리 **************************//
  3894. var prcpcd = opener.model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" );
  3895. if( hosinflag != "O" ){
  3896. iFind = opener.model.getValue ( "/root/initsrch/prcpetccnts/dialhospinoutcd" ).search( prcpcd );
  3897. }
  3898. if ( iFind >= 0 && erflag != "Y") { //SON0919
  3899. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  3900. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "19" );
  3901. var message = "원내지정이 가능한 처방입니다. 전체 약제를 원내로 하시려면 [예], 해당약제만 원내처방하시려면 [아니오]를 선택해주십시오.";
  3902. if (messageBox ( message, "Q" ) == "6" ) {
  3903. opener.model.setValue( "/root/init/hosinprcpresncd", "19" );
  3904. opener.cmb_hosinprcpresn.refresh();
  3905. opener.cmb_hosinprcpresn.dispatch ( "xforms-value-changed" );
  3906. }
  3907. model.setValue ( "/root/initsrch/prcpetccnts/dialhospinoutcd", "" );
  3908. //********************* 투석원내처방사유처리끝 ************************//
  3909. } else {
  3910. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) return ; //약/주사가 아니면 return 20081012
  3911. drugmastspec = opener.model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^";
  3912. var drugmastHosinprcpresncd = getArrayData ( drugmastspec, 0, 12, "^", "|" ); //약품마스터에 있는 원내처방 사유코드 처리
  3913. if( opener.model.getValue ( strSrc + "[" + sendRow + "]/inclprcpno") != "0" ){ //종속처방 처리 추가 by sonjy 2008-09-16
  3914. drugmastHosinprcpresncd = "55";
  3915. drugmastHosinhosoutflag = "I" ;
  3916. }
  3917. if ( drugmastHosinprcpresncd != "00" ) { //SON0826 주사제와 선처치, mset은 환자원내사유에 우선한다.
  3918. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  3919. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", drugmastHosinprcpresncd );
  3920. } else {
  3921. if ( hosinprcpresncd != "00" ) { // 환자원내처방사유
  3922. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  3923. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", hosinprcpresncd );
  3924. } else {
  3925. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "O" );
  3926. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "00" );
  3927. }
  3928. }
  3929. }
  3930. } else {
  3931. drugmastspec = model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^";
  3932. hosinflag = getArrayData ( drugmastspec , 0, 11 , "^", "|" ); //SON0930 start 원외전용약은 예외
  3933. //********************* 투석원내처방사유처리 **************************//
  3934. var prcpcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" );
  3935. if( hosinflag != "O" ){
  3936. iFind = model.getValue ( "/root/initsrch/prcpetccnts/dialhospinoutcd" ).search( prcpcd );
  3937. }
  3938. if ( iFind >= 0 && erflag != "Y") { //SON0919
  3939. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  3940. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "19" );
  3941. var message = "원내지정이 가능한 처방입니다. 전체 약제를 원내로 하시려면 [예], 해당약제만 원내처방하시려면 [아니오]를 선택해주십시오.";
  3942. if (messageBox ( message, "Q" ) == "6" ) {
  3943. model.setValue( "/root/init/hosinprcpresncd", "19" );
  3944. cmb_hosinprcpresn.refresh();
  3945. cmb_hosinprcpresn.dispatch ( "xforms-value-changed" );
  3946. }
  3947. model.setValue ( "/root/initsrch/prcpetccnts/dialhospinoutcd", "" );
  3948. //********************* 투석원내처방사유처리끝 ************************//
  3949. } else {
  3950. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) return ; //약/주사가 아니면 return 20081012
  3951. drugmastspec = model.getValue ( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^"; //약품마스터에 있는 원내외 처리
  3952. var drugmastHosinprcpresncd = getArrayData ( drugmastspec, 0, 12, "^", "|" ); //약품마스터에 있는 원내처방 사유코드 처리
  3953. if( model.getValue ( strSrc + "[" + sendRow + "]/inclprcpno") != "0" ){ //종속처방 처리 추가 by sonjy 2008-09-16
  3954. drugmastHosinprcpresncd = "55";
  3955. drugmastHosinhosoutflag = "I" ;
  3956. }
  3957. if ( drugmastHosinprcpresncd != "00" ) { //SON0826 주사제와 선처치, mset은 환자원내사유에 우선한다.
  3958. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  3959. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", drugmastHosinprcpresncd );
  3960. } else {
  3961. if ( hosinprcpresncd != "00") { // 환자원내처방사유 적용
  3962. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  3963. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", hosinprcpresncd );
  3964. } else {
  3965. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "O" );
  3966. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "00" );
  3967. }
  3968. }
  3969. }
  3970. }
  3971. } else if ( prcpgenrflag == "E" ) {
  3972. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) return;
  3973. if( objFlag == "child") {
  3974. if ( erprcpkindcd == "60" && hosinprcpresncd == "00") { // 퇴원약 환자원내처방사유 적용
  3975. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "O" );
  3976. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "00" );
  3977. } else {
  3978. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  3979. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", hosinprcpresncd );
  3980. }
  3981. } else {
  3982. if ( erprcpkindcd == "60" && hosinprcpresncd == "00") { // 퇴원약 환자원내처방사유 적용
  3983. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "O" );
  3984. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "00" );
  3985. } else {
  3986. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  3987. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", hosinprcpresncd );
  3988. }
  3989. }
  3990. } else { //입원, DSC
  3991. if( objFlag == "child") {
  3992. // 3120400000 화학요법실, 3120900000 항암주사실 퇴원약 처방시 원내 예외 사유 설정. "주사제와 같이 투여 하는 경우" 2012.06.11 엄영만
  3993. if ( prcpgenrflag == "D" && erprcpkindcd == "60" && (wardcd == "3120900000" || wardcd == "3120400000")) {
  3994. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  3995. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "52" );
  3996. } else {
  3997. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  3998. opener.model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "00" );
  3999. }
  4000. } else {
  4001. // 3120400000 화학요법실, 3120900000 항암주사실 퇴원약 처방시 원내 예외 사유 설정. "주사제와 같이 투여 하는 경우" 2012.06.11 엄영만
  4002. if (prcpgenrflag == "D" && erprcpkindcd == "60" && (wardcd == "3120900000" || wardcd == "3120400000")) {
  4003. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4004. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "52" );
  4005. } else {
  4006. model.setValue ( strSrc + "[" + sendRow + "]/hosinhosoutflag", "I" );
  4007. model.setValue ( strSrc + "[" + sendRow + "]/hosinprcpresncd", "00" );
  4008. }
  4009. }
  4010. }
  4011. }
  4012. /**
  4013. * @desc : 환자에 해당되는 원내처방사유인지 체크
  4014. * @
  4015. * @param :
  4016. *
  4017. * @return : void
  4018. * @author : 마정민
  4019. * @---------------------------------------------------
  4020. */
  4021. function fPamHosinPrcpResnCdChk ( hosinprcpresncd, objFlag ) {
  4022. var cdnm = "";
  4023. if ( objFlag == "child" ) {
  4024. cdnm = opener.model.getValue ( "/root/init/hosinprcpresncd/P0034[cdid='" + hosinprcpresncd + "']/cdnm" );
  4025. } else {
  4026. cdnm = model.getValue ( "/root/init/hosinprcpresncd/P0034[cdid='" + hosinprcpresncd + "']/cdnm" );
  4027. }
  4028. if (!isNull(cdnm)){
  4029. return true;
  4030. } else {
  4031. //return false;
  4032. if( hosinprcpresncd == "52" || hosinprcpresncd == "55" ) return false ; //SON0826 선처치/주사제는 환자사유에 우선한다.
  4033. else return true ;
  4034. }
  4035. }
  4036. function fPrcpExecIssDeptCdSet ( strSrc, sendRow ) {
  4037. //발행처
  4038. if ( model.getValue ( "/root/addprcp" ) == "Y" ){
  4039. var issdept = model.getValue ( "/root/init/issdept" );
  4040. if ( isNull(issdept)) {
  4041. issdept = getUserInfo( "dutplcecd" );
  4042. }
  4043. model.setValue ( strSrc + "[" + sendRow + "]/issdeptcd", issdept );
  4044. } else {
  4045. var issdept = model.getValue ("/root/issdept");
  4046. if ( isNull(issdept)) {
  4047. issdept = getUserInfo( "dutplcecd" );
  4048. }
  4049. model.setValue ( strSrc + "[" + sendRow + "]/issdeptcd", issdept );
  4050. }
  4051. // 응급실 발행부서 관련 셋팅. 응급실 환자의 경우 센서스에 등록되어 있는 부서코드로 발행부서를 셋팅해준다.2012.04.24 엄영만
  4052. var prcpgenrflag = model.getValue( strSrc + "[" + sendRow + "]/prcpgenrflag");
  4053. var erissdeptcd = model.getValue("/root/paminfo/list/erissdeptcd");
  4054. if (prcpgenrflag == "E" && issdept == "2280200000" && !isNull(erissdeptcd) && erissdeptcd != "-") {
  4055. model.setValue ( strSrc + "[" + sendRow + "]/issdeptcd", erissdeptcd );
  4056. }
  4057. //과내검사 수가코드인 경우는 orddeptcd를 넣어준다. 구현중...
  4058. /*iFind = -1;
  4059. iFind = model.getValue ( "/root/initsrch/prcpetccnts/precureprcpcd" ).search( chkprcpcd + "D" );
  4060. if ( iFind >= 0) {
  4061. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd", orddeptcd );
  4062. }*/
  4063. }
  4064. /**
  4065. * @desc : 원내처방사유변경
  4066. * @
  4067. * @param :
  4068. * @return :
  4069. * @author : 마정민
  4070. * @---------------------------------------------------
  4071. * @ objFlag 추가 by sonjy
  4072. */
  4073. function fChngHosinPrcpResn(objFlag , strSelResn) {
  4074. var hosinprcpresncd = "";
  4075. var prcpclscd = "";
  4076. //SON0919 응급 퇴원약 원내사유 처리 by sonjy start
  4077. //SON1123 DSC 퇴원처방 처리 by sonjy 20081123
  4078. var prcpkindcd = "";
  4079. var erflag = "";
  4080. var erresn = ""; // G3
  4081. var prcpgenrflag = "";
  4082. //SON0930 약제원내외구분 우선 적용
  4083. var hosinflag = "";
  4084. var drugmastspec = "";
  4085. if( objFlag == "child" ) {
  4086. hosinprcpresncd = opener.model.getValue ( "/root/init/hosinprcpresncd" );
  4087. erresn = opener.model.getValue ( "/root/init/erresn" );
  4088. prcpgenrflag = opener.model.getValue ( "/root/patflag/list/prcpgenrflag" );
  4089. } else {
  4090. hosinprcpresncd = model.getValue ( "/root/init/hosinprcpresncd" );
  4091. erresn = model.getValue ( "/root/init/erresn" );
  4092. prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  4093. }
  4094. if( prcpgenrflag == "I" ){ return; }
  4095. if ( (prcpgenrflag == "E" && erresn != "G3") || prcpgenrflag == "D" ) {
  4096. erflag = "Y" ;//SON0919
  4097. }
  4098. if ( hosinprcpresncd != "00") { // 환자별 처방 사유가 존재 할 경우
  4099. if( objFlag == "child" ) {
  4100. for ( var i = 1; i < opener.grd_prcplist.rows; i++ ) { // 처방 건별 처리
  4101. prcpclscd = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpclscd" );
  4102. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ;
  4103. prcpkindcd = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpkindcd" );
  4104. drugmastspec = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/drugmastspec" ) + "^";
  4105. hosinflag = getArrayData ( drugmastspec , 0, 11, "^", "|" );
  4106. if( erflag == "Y" && prcpkindcd == "60" ) { // 응급 DSC 퇴원약 원내사유 처리
  4107. fHosinPrcpResncdSed ( objFlag , "/root/main/prcp/prcplist", i, strSelResn );
  4108. } else if ( prcpgenrflag == "E" || prcpgenrflag == "D" ){ // 응급, DSC
  4109. if( prcpgenrflag == "D" ) {
  4110. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4111. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd","00");
  4112. } else {
  4113. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4114. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd",hosinprcpresncd);
  4115. }
  4116. } else { // 그외 외래
  4117. prcphosinprcpresncd = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd" );
  4118. if (hosinflag != "O" && fPamHosinPrcpResnCdChk (prcphosinprcpresncd, objFlag)) { //환자원내처방사유만 적용
  4119. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4120. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd",hosinprcpresncd);
  4121. }
  4122. }
  4123. } // End of 처방 건별 처리
  4124. } else {
  4125. for ( var i = 1; i < grd_prcplist.rows; i++ ) { // 처방 건별 처리
  4126. prcpclscd = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpclscd" );
  4127. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ;
  4128. prcpkindcd = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpkindcd" );
  4129. drugmastspec = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/drugmastspec" ) + "^";
  4130. hosinflag = getArrayData ( drugmastspec , 0, 11, "^", "|" );
  4131. if( erflag == "Y" && prcpkindcd == "60" ) { // 응급 DSC 퇴원약 원내사유 처리
  4132. fHosinPrcpResncdSed ( objFlag, "/root/main/prcp/prcplist", i, strSelResn ); //SON0826 원복시 기존 약제사유로 원복.
  4133. } else if ( prcpgenrflag == "E" || prcpgenrflag == "D" ){ // 응급, DSC
  4134. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4135. if( prcpgenrflag == "D" ) {
  4136. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4137. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd","00");
  4138. } else {
  4139. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4140. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd",hosinprcpresncd);
  4141. }
  4142. } else { // 그외 외래
  4143. prcphosinprcpresncd = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd" );
  4144. if (hosinflag != "O" && fPamHosinPrcpResnCdChk (prcphosinprcpresncd, objFlag)) { //환자원내처방사유만 적용
  4145. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4146. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd",hosinprcpresncd);
  4147. }
  4148. }
  4149. } // End of 처방 건별 처리
  4150. }
  4151. if( erflag == "Y" ) fHosinPrcpResnChk ( objFlag, "/root/main/prcp" ); //SON0919 원복시 기존 약제사유로 원복 후 동시투여 약제처리....
  4152. } else { // 환자별 처방 사유가 없을 경우
  4153. if( objFlag == "child" ) {
  4154. for ( var i = 1; i < opener.grd_prcplist.rows; i++ ) {
  4155. prcpclscd = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpclscd" );
  4156. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ;
  4157. //SON0919 응급 퇴원약 원내사유 처리 by sonjy start
  4158. prcpkindcd = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpkindcd" );
  4159. if( erflag == "Y" && prcpkindcd == "60" ) {
  4160. fHosinPrcpResncdSed ( objFlag , "/root/main/prcp/prcplist", i, strSelResn );
  4161. } else if ( prcpgenrflag == "E" || prcpgenrflag == "D" ){ //SON1123 DSC퇴원처방 처리
  4162. if( prcpgenrflag == "D" ) {
  4163. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4164. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd","00");
  4165. } else {
  4166. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4167. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd",hosinprcpresncd);
  4168. }
  4169. } else { // 그외 외래
  4170. prcphosinprcpresncd = opener.model.getValue ( "/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd" );
  4171. if (fPamHosinPrcpResnCdChk (prcphosinprcpresncd , objFlag)) { //환자원내처방사유만 적용
  4172. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","O");
  4173. opener.model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd","00");
  4174. fHosinPrcpResncdSed (objFlag , "/root/main/prcp/prcplist", i ); //SON0826 원복시 기존 약제사유로 원복.
  4175. }
  4176. }
  4177. } // End of 처방 건별 처리
  4178. } else {
  4179. for ( var i = 1; i < grd_prcplist.rows; i++ ) {
  4180. prcpclscd = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpclscd" );
  4181. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ;
  4182. //SON0919 응급 퇴원약 원내사유 처리 by sonjy start
  4183. prcpkindcd = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpkindcd" );
  4184. if( erflag == "Y" && prcpkindcd == "60" ) {
  4185. fHosinPrcpResncdSed ( objFlag, "/root/main/prcp/prcplist", i, strSelResn );
  4186. } else if ( prcpgenrflag == "E" || prcpgenrflag == "D" ){ //SON1123 DSC퇴원처방 처리
  4187. if( prcpgenrflag == "D" ) {
  4188. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4189. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd","00");
  4190. } else {
  4191. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","I");
  4192. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd",hosinprcpresncd);
  4193. }
  4194. } else { // 그외 외래
  4195. prcphosinprcpresncd = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd" );
  4196. if (fPamHosinPrcpResnCdChk (prcphosinprcpresncd, objFlag)) { //환자원내처방사유만 적용
  4197. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinhosoutflag","O");
  4198. model.setValue("/root/main/prcp/prcplist[" + i + "]/hosinprcpresncd","00");
  4199. fHosinPrcpResncdSed ( objFlag, "/root/main/prcp/prcplist", i ); //SON0826 원복시 기존 약제사유로 원복.
  4200. }
  4201. }
  4202. }// End of 처방 건별 처리
  4203. }
  4204. fHosinPrcpResnChk ( objFlag, "/root/main/prcp" ); //SON0826 원복시 기존 약제사유로 원복 후 동시투여 약제처리....
  4205. }
  4206. if( objFlag == "child"){
  4207. opener.model.setValue ( "/root/paminfo/list/hosoutexptresncd" , hosinprcpresncd );
  4208. } else {
  4209. model.setValue ( "/root/paminfo/list/hosoutexptresncd" , hosinprcpresncd );
  4210. }
  4211. }
  4212. function fBundlePrcpDD(status){
  4213. var prcpgenrflag = opener.model.getValue("/root/patflag/list/prcpgenrflag");
  4214. if(prcpgenrflag != "O"){
  4215. messageBox("지정일은 외래가 아니면 사용", "E001");
  4216. return;
  4217. }
  4218. var prcpdd = opener.model.getValue("/root/paminfo/list/orddd");
  4219. var reqparam = getCurrentDate() + "▩";
  4220. setParameter("paramcalflag", "multi");
  4221. setParameter("defaultday" , prcpdd);
  4222. setParameter("reqparam" , reqparam);
  4223. fPrcpModal("SPMMO10600", 20, 50);
  4224. var actordddArray = getParameter("rtn").split("▩");
  4225. var contprcpspec = "status|actorddd|execprcpstatcd|prcpdd|execprcpno";
  4226. for(var i = 0; i < actordddArray.length; i++){
  4227. var actorddd = actordddArray[i];
  4228. contprcpspec = contprcpspec + "^" + status + "|" + actorddd + "|" + "" + "|" + prcpdd + "|" + "";
  4229. }
  4230. var rtnval = "";
  4231. var contprcpspecArray = contprcpspec.split("^");
  4232. for(var i = 1; i < contprcpspecArray.length; i++){
  4233. var tmp = contprcpspecArray[i].split("|");
  4234. rtnval = rtnval + tmp[1] + ",";
  4235. }
  4236. rtnval = rtnval.substring(0, rtnval.length-1);
  4237. if(actordddArray.length == 1 && actorddd == prcpdd){
  4238. model.setValue("/root/main/prcp/prcplist/contprcpspec", "-");
  4239. }else{
  4240. model.setValue("/root/main/prcp/prcplist/contprcpspec", contprcpspec);
  4241. }
  4242. model.setValue("/root/main/prcp/prcplist/prcpdayno", actordddArray.length);
  4243. model.setValue("/root/init/contprcpspec", rtnval);
  4244. model.refresh();
  4245. }
  4246. /**
  4247. * @desc : 특진료 설정
  4248. * @
  4249. * @param :
  4250. * @return :
  4251. * @author : 오지훈
  4252. * @---------------------------------------------------
  4253. */
  4254. function fSetSpecOrd(){
  4255. var tempcol2 = model.getValue("/root/main/prcp/prcplist/tempcol2");
  4256. var temparray = tempcol2.split("|");
  4257. //by sonjy 2008-08-29 진료과, 진료의id setting start
  4258. var orddeptcd = opener.model.getValue("/root/paminfo/list/orddeptcd");
  4259. model.makeValue("/root/paminfo/list/specordyn", opener.model.getValue("/root/paminfo/list/specordyn") ); //by sonjy 2008-08-28 진료의선택창에서 사용.
  4260. //by sonjy 2008-08-29 진료과, 진료의id setting end
  4261. var choiordflag = model.getValue("/root/main/prcp/prcplist/choiordflag");
  4262. var tempcol12 = model.getValue("/root/main/prcp/prcplist/tempcol12"); //선택진료과가 있는 경우, 조회해서 사용자를 grid에 보여줌
  4263. if( isNull(tempcol12) ) tempcol12 = orddeptcd ; //by sonjy 20081014
  4264. if(tempcol12 != ""){
  4265. mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", tempcol12);
  4266. btn_specdrid.disabled=false;
  4267. model.refresh();
  4268. return;
  4269. }
  4270. var orddrid = "";
  4271. var ioflag = opener.model.getValue("/root/patflag/list/prcpgenrflag");
  4272. if(ioflag == "I" || ioflag == "D" || ioflag == "E"){ //입원, DSC,응급
  4273. orddeptcd = opener.model.getValue("/root/paminfo/list/orddeptcd");
  4274. orddrid = opener.model.getValue("/root/paminfo/list/medispclid");
  4275. mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", orddeptcd);
  4276. if(getUserInfo("dutplcecd") == orddeptcd){ //로그인 의사가 동일한 과인 경우
  4277. model.setValue("/root/main/prcp/prcplist/specdrid", orddrid); //입원과의 주치의 설정
  4278. btn_specdrid.disabled = false;
  4279. } else { //타과의 경우 ,default없음
  4280. if(temparray[0] == "15" && temparray[1] == "02"){ //분류 1 : 수술
  4281. var operation = getGlobalVariable("operation");
  4282. if(operation.length > 0){
  4283. setCSVToNode("/root/init/operation", operation);
  4284. var perfdeptcd = model.getValue("/root/init/operation/list/perfdeptcd");
  4285. var perfdrid = model.getValue("/root/init/operation/list/perfdrid");
  4286. mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", perfdeptcd);
  4287. model.setValue("/root/main/prcp/prcplist/specdrid", perfdrid); //집도의 설정
  4288. }else{
  4289. btn_specdrid.disabled = false;
  4290. btn_specdrid.dispatch("DOMActivate");
  4291. }
  4292. }else if(temparray[0] == "13"){ //분류 2 : 마취, 마취의 '1'을 기본 default
  4293. var operation = getGlobalVariable("operation");
  4294. if(operation != null || operation != ""){
  4295. setCSVToNode("/root/init/operation", operation);
  4296. var anstdrid = model.getValue("/root/init/operation/list/anstdrid");
  4297. mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", "2090000000"); //마취통증의학과 의사조회
  4298. //이은영 과장 요청 마취의 setting by sonjy 20080925 start
  4299. if ( opener.model.getValue ( "/root/anst/paramyn" ) == "Y" ) {
  4300. //마취의 ID가 있고 선택진료일 경우 특진의 선택진료가 아닐경우 일반의 일 경우만 SETTING
  4301. if( !isNull( opener.model.getValue ( "/root/anst/anst_drid") ) ){
  4302. //선택진료이고 일반의인 경우 선택진료처방여부 'N'처리
  4303. if ( model.getValue("/root/paminfo/list/specordyn") == "Y" ){
  4304. if( opener.model.getValue ( "/root/anst/anst_specordflag") != "A" ) {
  4305. model.setValue("/root/main/prcp/prcplist/choiordflag" , "N");
  4306. } else {
  4307. model.setValue("/root/main/prcp/prcplist/choiordflag" , "Y");
  4308. }
  4309. } else {
  4310. model.setValue("/root/main/prcp/prcplist/choiordflag" , "N");
  4311. }
  4312. anstdrid = opener.model.getValue ( "/root/anst/anst_drid") ;
  4313. }
  4314. //바뀐대로 보여야 함 by sonjy 20081010
  4315. btn_specdrid.disabled = false;
  4316. if( isNull( model.getValue("/root/main/prcp/prcplist/specdrid" )) ||
  4317. model.getValue("/root/main/prcp/prcplist/specdrid") == "-" ) {
  4318. model.setValue("/root/main/prcp/prcplist/specdrid", anstdrid); //마취의1 설정
  4319. }
  4320. }
  4321. //마취의 setting by sonjy 20080925 end
  4322. else {
  4323. model.setValue("/root/main/prcp/prcplist/specdrid", anstdrid); //마취의1 설정
  4324. }
  4325. }else{
  4326. btn_specdrid.disabled = false;
  4327. btn_specdrid.dispatch("DOMActivate");
  4328. }
  4329. }else if(temparray[0] == "10" || temparray[1] == "13"){ //분류3 : 위장관검사
  4330. btn_specdrid.disabled = false;
  4331. btn_specdrid.dispatch("DOMActivate");
  4332. }else if(temparray[0] == "10" || temparray[1] == "06"){ //분류4 : 기관지검사
  4333. btn_specdrid.disabled = false;
  4334. btn_specdrid.dispatch("DOMActivate");
  4335. }else if(temparray[0] == "12" || temparray[1] == "02"){ //분류 5: 방사선혈관조영
  4336. btn_specdrid.disabled = false;
  4337. btn_specdrid.dispatch("DOMActivate");
  4338. }else if(temparray[0] == "20"){ // 방사선혈관조영술 추가. by sonjy 2008-08-29
  4339. btn_specdrid.disabled = false;
  4340. btn_specdrid.dispatch("DOMActivate");
  4341. }else{ //그 이외의 경우, 입원과의 주치의 설정
  4342. model.setValue("/root/main/prcp/prcplist/specdrid", orddrid);
  4343. }
  4344. }
  4345. model.refresh();
  4346. }
  4347. }
  4348. /**
  4349. * @desc : NodeList sorting
  4350. * : node 구조를 변경하며 정렬을 수행
  4351. * @
  4352. * @param :
  4353. * @return :
  4354. * @author : 오지훈
  4355. * @---------------------------------------------------
  4356. */
  4357. function nodeListSort( nodeset, trgRef, mode ){
  4358. var nodesetCnt = model.getXPathValue("count(" + nodeset + ")");
  4359. if(nodesetCnt == 0) return;
  4360. var tmpVal1, tmpVal2;
  4361. var tmpIndx;
  4362. for(var i = 1; i <= nodesetCnt; i++){
  4363. for(var j = i + 1 ; j <= nodesetCnt; j++){
  4364. tmpVal1 = model.getValue(nodeset + "[" + i + "]/" + trgRef);
  4365. tmpVal2 = model.getValue(nodeset + "[" + j + "]/" + trgRef);
  4366. if(isNumber(tmpVal1)==true){tmpVal1 = Number(tmpVal1);}
  4367. if(isNumber(tmpVal2)==true){tmpVal2 = Number(tmpVal2);}
  4368. if(mode == "desc"){
  4369. if(tmpVal1 < tmpVal2){
  4370. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + j + "]", "*[" + i + "]");
  4371. model.removenode(nodeset + "[" + (j + 1) + "]");
  4372. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + (i + 1) + "]", "*[" + j + "]");
  4373. model.removenode(nodeset + "[" + (i + 1) + "]");
  4374. }
  4375. }else if(mode == "asc"){
  4376. if(tmpVal1 > tmpVal2){
  4377. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + j + "]", "*[" + i + "]");
  4378. model.removenode(nodeset + "[" + (j + 1) + "]");
  4379. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + (i + 1) + "]", "*[" + j + "]");
  4380. model.removenode(nodeset + "[" + (i + 1) + "]");
  4381. }
  4382. }
  4383. }
  4384. }
  4385. }
  4386. /**
  4387. * @desc : 협진분류콤보조회 조회
  4388. * @
  4389. * @param :
  4390. * @return :
  4391. * @author : 오지훈
  4392. * @---------------------------------------------------
  4393. */
  4394. function mmofReqGetCnstTypeComboList(ref, rsltref, orddeptcd){
  4395. var mmo_rsltref = "/root/hidden/mmo/cnsttypecombo";
  4396. model.removeNodeset(mmo_rsltref);
  4397. model.makeNode(mmo_rsltref);
  4398. model.removeNode(ref);
  4399. model.makeValue(ref + "/orddeptcd", orddeptcd);
  4400. if(submit("TRMMO03602", "false", ref, mmo_rsltref)==true){
  4401. model.copyNode(rsltref, mmo_rsltref);
  4402. model.removeNodeset(mmo_rsltref);
  4403. }
  4404. model.refresh();
  4405. }
  4406. /*
  4407. function mmbfPrcpGrdSort( nodeset, mode ){
  4408. var nodesetCnt = model.getXPathValue("count(" + nodeset + ")");
  4409. if(nodesetCnt == 0) return;
  4410. var tmpVal1, tmpVal2;
  4411. var tmpIndx;
  4412. for(var i = 1; i <= nodesetCnt; i++){
  4413. for(var j = i + 1 ; j <= nodesetCnt; j++){
  4414. tmpVal1 = model.getValue(nodeset + "[" + i + "]/prcpclscd") || model.getValue(nodeset + "[" + i + "]/prcpcd");
  4415. tmpVal2 = model.getValue(nodeset + "[" + j + "]/prcpclscd") || model.getValue(nodeset + "[" + j + "]/prcpcd");
  4416. if(mode == "desc"){
  4417. if(tmpVal1 < tmpVal2){
  4418. if(model.getValue(nodeset + "[" + i + "]/status") == 'I') {
  4419. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + j + "]", "*[" + i + "]");
  4420. model.removenode(nodeset + "[" + (j + 1) + "]");
  4421. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + (i + 1) + "]", "*[" + j + "]");
  4422. model.removenode(nodeset + "[" + (i + 1) + "]");
  4423. }
  4424. }
  4425. } else if(mode == "asc"){
  4426. if(tmpVal1 > tmpVal2){
  4427. if(model.getValue(nodeset + "[" + i + "]/status") == 'I') {
  4428. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + j + "]", "*[" + i + "]");
  4429. model.removenode(nodeset + "[" + (j + 1) + "]");
  4430. model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + (i + 1) + "]", "*[" + j + "]");
  4431. model.removenode(nodeset + "[" + (i + 1) + "]");
  4432. }
  4433. }
  4434. }
  4435. }
  4436. }
  4437. }*/
  4438. function fAltPrcpCd( currow, flag, strSrc, prcpInptFlag ) {
  4439. var prcpcd = "";
  4440. var prcpnm = "";
  4441. var altcdinfo = "";
  4442. if ( flag == "child" ) {
  4443. if ( prcpInptFlag == "01" ) {
  4444. prcpcd = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  4445. prcpnm = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  4446. altcdinfo = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/tempcol16" );
  4447. } else {
  4448. prcpcd = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  4449. prcpnm = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  4450. altcdinfo = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/tempcol16" );
  4451. }
  4452. } else {
  4453. prcpcd = model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  4454. prcpnm = model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  4455. altcdinfo = model.getValue ( strSrc + "[" + currow + "]/tempcol16" );
  4456. }
  4457. setParameter ( "SPMMO15400_cond1", prcpcd ); //원래처방코드
  4458. setParameter ( "SPMMO15400_cond2", prcpnm ); //처방명
  4459. setParameter ( "SPMMO15400_cond3", altcdinfo ); //대체처방코드
  4460. modal ( "SPMMO15400" );
  4461. clearParameter ( "SPMMO15400_cond1" ); //원래처방코드
  4462. clearParameter ( "SPMMO15400_cond2" ); //처방명
  4463. clearParameter ( "SPMMO15400_cond3" ); //대체처방코드
  4464. return 0;
  4465. }
  4466. /**
  4467. * @desc : 항생제이면서 제한항생자가 아니면 항생제처리
  4468. *
  4469. * @
  4470. * @param :
  4471. * @return :
  4472. * @author : 마정민
  4473. * @---------------------------------------------------
  4474. */
  4475. function fAntiMicChk( currow, flag, strSrc, prcpInptFlag ) {
  4476. //20080725 마정민추가. 항생제이면서 제한항생자가 아니면 항생제처리
  4477. var prcpcd = "";
  4478. var drugmastspec = "";
  4479. var pid = "";
  4480. var prcpdd = "";
  4481. //CP는 CDSS항생제 체크 skip임. (2008.09.29 JJE)
  4482. if( model.getValue("/root/cp") == "Y" ){
  4483. return 1;
  4484. }
  4485. if ( flag == "child" ) {
  4486. if ( prcpInptFlag == "01" ) {
  4487. prcpcd = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  4488. } else {
  4489. prcpcd = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  4490. }
  4491. } else {
  4492. prcpcd = model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  4493. }
  4494. prcpdd = model.getValue ( "/root/init/prcpdd" );
  4495. pid = model.getvalue ( "/root/paminfo/list/pid" );
  4496. model.setValue ( "/root/send/cond1", pid );
  4497. model.setValue ( "/root/send/cond2", prcpcd );
  4498. model.setValue ( "/root/send/cond3", prcpdd );
  4499. if (submit ( "TRMMO01609" )){
  4500. /*var chkAntibio = "20"; // 항생제 antibiotics(20), 제한항생제 restantimic(10) 따로 구분 후 저장 - by Moonsh 20081013
  4501. var getAntibio = model.getValue ( "/root/result/antibiotics/antibioticsinfo" );
  4502. var srchAntibio = getAntibio.split("|");
  4503. if (srchAntibio[1] == "20"){
  4504. chkAntibio = "20";
  4505. } else {
  4506. chkAntibio = "10";
  4507. setParameter ( "SPMMMD00700_chkday", srchAntibio[9] ); //체크일 추가 요청 - by Moonsh 20081021
  4508. }*/
  4509. if (model.getValue ( "/root/result/antibiotics/popyn" )=="Y") {
  4510. // 항생제 검색어 초기화
  4511. var prcplistcnt = grd_prcplist.rows - 1;
  4512. var prcpcd = model.getValue ( "/root/main/prcp/prcplist[" + prcplistcnt + "]/prcpcd" );
  4513. var prcpnm = model.getValue ( "/root/main/prcp/prcplist[" + prcplistcnt + "]/prcpnm" );
  4514. if (prcpcd != "" && prcpnm == "") {
  4515. model.setValue ( "/root/main/prcp/prcplist[" + prcplistcnt + "]/prcpcd", "" );
  4516. }
  4517. fPrcpModal("SPMMD01600", 20, 50);
  4518. return 0;
  4519. } else {
  4520. if ( flag == "child" ) {
  4521. if ( prcpInptFlag == "01" ) {
  4522. ivw_prcp3.model.setValue ( strSrc + "[" + currow + "]/tempcol8", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4523. /*if ( chkAntibio == "20") {
  4524. ivw_prcp3.model.setValue ( strSrc + "[" + currow + "]/tempcol8", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4525. } else {
  4526. ivw_prcp3.model.setValue ( strSrc + "[" + currow + "]/tempcol7", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4527. }*/
  4528. } else {
  4529. ivw_prcp.model.setValue ( strSrc + "[" + currow + "]/tempcol8", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4530. /*if ( chkAntibio == "20") {
  4531. ivw_prcp.model.setValue ( strSrc + "[" + currow + "]/tempcol8", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4532. } else {
  4533. ivw_prcp.model.setValue ( strSrc + "[" + currow + "]/tempcol7", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4534. }*/
  4535. }
  4536. } else {
  4537. model.setValue ( strSrc + "[" + currow + "]/tempcol8", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4538. /*if ( chkAntibio == "20") {
  4539. model.setValue ( strSrc + "[" + currow + "]/tempcol8", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4540. } else{
  4541. model.setValue ( strSrc + "[" + currow + "]/tempcol7", model.getValue ( "/root/result/antibiotics/antibioticsinfo" ));
  4542. }*/
  4543. }
  4544. return 1;
  4545. }
  4546. }
  4547. }
  4548. /**
  4549. * @desc : EMR진료 기록지 조정
  4550. * modal로 화면에 숨겨진 팝업을 띄운다. 여러화면 동시에 open되어, submit간의 충돌을 방지한다.
  4551. * @
  4552. * @param : scrnid : 화면ID
  4553. * @return :
  4554. * @author : 오지훈
  4555. * @---------------------------------------------------
  4556. */
  4557. function mmbfOpenEmrWnd(scrnid){
  4558. setParameter("SPMMB08400_scrnid", scrnid);
  4559. modal("SPMMB08400", 1, 0, 0, "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  4560. return true;
  4561. }
  4562. /**
  4563. * @desc : 하드코드 조회
  4564. * @
  4565. * @param : ref - reference path
  4566. * rsltref - result reference path
  4567. * hardcd - 하드코드
  4568. * @return :
  4569. * @author : 오지훈
  4570. * @---------------------------------------------------
  4571. */
  4572. function mmbfGetHardCodeInfo(ref, rsltref, hardcd){
  4573. //KNUH_20110208, 진료속도개선 위해 로그인 시 미리 조회 해 놓은 데이터 복사, 주희경
  4574. fGetHardCDList("N", hardcd, 0, rsltref);
  4575. /*
  4576. var mmb_rsltref = "/root/hidden/mmb/hardcd";
  4577. model.removeNode(mmb_rsltref);
  4578. model.makeNode(mmb_rsltref);
  4579. model.removeNode(ref);
  4580. model.makeValue(ref + "/hardcd", hardcd);
  4581. if(submit("TRMMB04103", "false", ref, mmb_rsltref)==true){
  4582. model.copyNode(rsltref, mmb_rsltref);
  4583. model.removeNode(mmb_rsltref);
  4584. }
  4585. */
  4586. model.refresh();
  4587. }
  4588. /**
  4589. * @desc : 하드코드 조회 (하드코드, 하드코드명)
  4590. * @
  4591. * @param : ref - reference path
  4592. * rsltref - result reference path
  4593. * hardcd - 하드코드
  4594. * @return :
  4595. * @author : 오지훈
  4596. * @---------------------------------------------------
  4597. */
  4598. function mmbfGetHardCodeInfoNm(ref, rsltref, hardcd){
  4599. var mmb_rsltref = "/root/hidden/mmb/hardcd";
  4600. model.removeNode(mmb_rsltref);
  4601. model.makeNode(mmb_rsltref);
  4602. model.removeNode(ref);
  4603. model.makeValue(ref + "/hardcd", hardcd);
  4604. if(submit("TRMMB04105", "false", ref, mmb_rsltref)==true){
  4605. model.copyNode(rsltref, mmb_rsltref);
  4606. model.removeNode(mmb_rsltref);
  4607. }
  4608. model.refresh();
  4609. }
  4610. /**
  4611. * @desc : 선택진료의 변경 시 호출 .
  4612. 선택진료환자이나 선택한 의사가 특진의가 아닐경우 방사선혈관조영/마취, 수술 처방에 한해 해당 처방의 선택진료여부 = 'N'으로 SETTING
  4613. * @
  4614. * @param : objFlag - child or null
  4615. DrID - 진료의id
  4616. specDrYN- 특진의여부(A-특진/B..)
  4617. * @return :
  4618. * @author : 손주연
  4619. * @---------------------------------------------------
  4620. */
  4621. function fChngSpecDr(objFlag, DrID, specDrYN ){
  4622. //선택진료관련 추가 by sonjy 2008-08-27 start
  4623. if( objFlag == "child"){
  4624. if( opener.model.getValue("/root/main/prcp/prcplist/choiordflag") == "Y" ){
  4625. var tempcol2 = opener.model.getValue("/root/main/prcp/prcplist/tempcol2");
  4626. if( !isNull(tempcol2) ){
  4627. var temparray = tempcol2.split("|");
  4628. //선택진료환자이나 선택한 의사가 특진의가 아닐경우 방사선혈관조영/마취, 수술 처방에 한해 해당 처방의 선택진료여부 = 'N'으로 SETTING
  4629. if( specDrYN!= "A" ){
  4630. /* 2010. 12. 29 선택진료의사면 무조건 선택진료 아니면
  4631. if( (temparray[0] == "15" && temparray[1] == "02") || // 수술
  4632. (temparray[0] == "13") || //마취
  4633. (temparray[0] == "20") //방사선혈관조영술
  4634. ){
  4635. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "N");
  4636. }
  4637. */
  4638. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "N");
  4639. } else {
  4640. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "Y");
  4641. }
  4642. }
  4643. }
  4644. //선택진료환자이나 비특진의 선택으로 인해 선택진료여부가 'N'으로 변경되었으나 다시 선택진료의를 선택한 경우
  4645. else if( opener.model.getValue("/root/paminfo/list/specordyn") == "Y" && opener.model.getValue("/root/main/prcp/prcplist/choiordflag") == "N" ){
  4646. if( specDrYN == "A" ) {
  4647. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "Y");
  4648. }
  4649. } else { // 의사가 찍은대로 선택진료의를 변경한다.
  4650. if( specDrYN == "A" ) {
  4651. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "Y");
  4652. } else {
  4653. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "N");
  4654. }
  4655. }
  4656. }
  4657. else {
  4658. if(model.getValue("/root/main/prcp/prcplist/choiordflag") == "Y" ){
  4659. var tempcol2 = model.getValue("/root/main/prcp/prcplist/tempcol2");
  4660. if( !isNull(tempcol2) ){
  4661. var temparray = tempcol2.split("|");
  4662. //선택진료환자이나 선택한 의사가 특진의가 아닐경우 방사선혈관조영/마취, 수술 처방에 한해 해당 처방의 선택진료여부 = 'N'으로 SETTING
  4663. if( specDrYN != "A" ){
  4664. /*
  4665. if( (temparray[0] == "15" && temparray[1] == "02") || // 수술
  4666. (temparray[0] == "13") || //마취
  4667. (temparray[0] == "20") //방사선혈관조영술
  4668. ){
  4669. model.setValue("/root/main/prcp/prcplist/choiordflag", "N");
  4670. }
  4671. */
  4672. model.setValue("/root/main/prcp/prcplist/choiordflag", "N");
  4673. }else {
  4674. model.setValue("/root/main/prcp/prcplist/choiordflag", "Y");
  4675. }
  4676. }
  4677. }
  4678. //선택진료환자이나 비특진의 선택으로 인해 선택진료여부가 'N'으로 변경되었으나 다시 선택진료의를 선택한 경우
  4679. else if( model.getValue("/root/paminfo/list/specordyn") == "Y" && model.getValue("/root/main/prcp/prcplist/choiordflag") == "N" ){
  4680. if( specDrYN == "A" ) {
  4681. model.setValue("/root/main/prcp/prcplist/choiordflag", "Y");
  4682. }
  4683. } else { // 의사가 찍은대로 선택진료의를 변경한다.
  4684. if( specDrYN == "A" ) {
  4685. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "Y");
  4686. } else {
  4687. opener.model.setValue("/root/main/prcp/prcplist/choiordflag", "N");
  4688. }
  4689. }
  4690. }
  4691. //선택진료관련 추가 by sonjy 2008-08-27 end
  4692. }
  4693. /**
  4694. * @desc : 수술 예방적 항생제 투여 관련 체크
  4695. * @
  4696. * @param :
  4697. * @return :
  4698. * @author : 손주연 2008-09-26
  4699. * @---------------------------------------------------
  4700. */
  4701. function fChkOpDrug( objFlag, strSrc , sendRow ){
  4702. //A, 예정수술명 => P, 수술코드 처방 => S, 대상이 아닐 경우 => N
  4703. var resnyn = getPatientInfoDetail("resnyn");
  4704. if( resnyn == "N" || isNull( resnyn ) ) return true ;
  4705. var ndOpDrugList = null;
  4706. var ret = null ;
  4707. var drugmastspec = model.getValue( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^";
  4708. var prcpcd = model.getValue( strSrc + "[" + sendRow + "]/prcpcd" ) ;
  4709. var prcpnm = model.getValue( strSrc + "[" + sendRow + "]/prcpnm" ) ;
  4710. var msg = "[" + prcpcd + ":" + prcpnm + "]";
  4711. if( model.getValue( strSrc + "[" + sendRow + "]/prcpkindcd") == "60" && ( resnyn == "S" || resnyn == "A") ) {
  4712. if ( getArrayData ( drugmastspec, 0, 23, "^", "|" ) == "P" && getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "N") {
  4713. ret = messageBox( "수술시 예방적 항생제 투여 시는 퇴원약을 권장하고 있지 않습니다. " + msg + "처방을 ", "Q001") ;
  4714. }
  4715. } else {
  4716. //3세대 수술 예방적 항생제 여부 check
  4717. if( objFlag == "child") {
  4718. ndOpDrugList = opener.model.instances(0).selectNodes ( "/root/initsrch/opdrugcdlist[opdrugcd='" + opener.model.getValue ( strSrc + "[" + sendRow + "]/prcpcd") + "']" );
  4719. } else {
  4720. ndOpDrugList = model.instances(0).selectNodes ( "/root/initsrch/opdrugcdlist[opdrugcd='" + model.getValue ( strSrc + "[" + sendRow + "]/prcpcd") + "']" );
  4721. }
  4722. if( ndOpDrugList != null && ndOpDrugList.length > 0 && ( resnyn == "P" || resnyn == "A")) {
  4723. ret = messageBox( "수술시 예방적 항생제로 3세대 cephalosporin 또는 aminoglycoside를 권장하고 있지 않습니다." + msg + " 처방을 변경 ", "S004") ;
  4724. } else if ( getArrayData ( drugmastspec, 0, 23, "^", "|" ) == "P" && getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "N" && ( resnyn == "S" || resnyn == "A")) {
  4725. ret = messageBox( "수술시 예방적 항생제 투여 시는 장기투여를 권장하고 있지 않습니다." + msg + " 처방을 ", "Q001") ;
  4726. }
  4727. }
  4728. if( ret == 6 ){ //yes=> 항생제 clear
  4729. if( objFlag == "child") {
  4730. opener.model.removeNode ( strSrc + "[" + sendRow + "]" );
  4731. //opener.model.setValue ( strSrc + "[" + sendRow + "]/tempcol6", "D" );
  4732. //opener.javascript.fDeleteRow ( "noselect" );
  4733. } else {
  4734. model.removeNode ( strSrc + "[" + sendRow + "]" );
  4735. //model.setValue ( strSrc + "[" + sendRow + "]/tempcol6", "D" );
  4736. //fDeleteRow ( "noselect" );
  4737. }
  4738. return false ;
  4739. } else if( ret == 7 ) { //no => 항생제 사유 입력
  4740. if( objFlag == "child") {
  4741. opener.javascript.setParameter ("SPMMO016000_resnflag" , "O" );
  4742. } else {
  4743. setParameter ("SPMMO016000_resnflag" , "O" );
  4744. }
  4745. var xpt = window.screenleft + eval(500);
  4746. var ypt = window.screenTop + eval(400);
  4747. var coord = getRelativeCoordinate ( xpt, ypt );
  4748. var mon = coord[0];
  4749. xpt = coord[1];
  4750. ypt = coord[2];
  4751. modal ("SPMMO16000", mon, xpt, ypt, "SPMMO16000", "", "", "sysmenu:hidden; min:visible; max:visible; icon:visible", false); //사유입력창
  4752. //fPrcpModal ( "SPMMO16000", 400, 100 ); //사유입력창
  4753. var resncnts = "";
  4754. if( objFlag == "child") {
  4755. resncnts = opener.javascript.getParameter ("SPMMO016000_resncnts" );
  4756. opener.model.setValue ( strSrc + "[" + sendRow + "]/tempcol19" ,resncnts );
  4757. } else {
  4758. resncnts = getParameter ("SPMMO016000_resncnts" );
  4759. model.setValue ( strSrc + "[" + sendRow + "]/tempcol19" ,resncnts );
  4760. }
  4761. }
  4762. return true ;
  4763. }
  4764. /**
  4765. * @desc : 화면타이틀을 설정한다
  4766. * @ : 형식 : 기관명 + 화면명 + 로그인과 + 로그인한 사용자 + 로그인일시
  4767. * @param :
  4768. * @return :
  4769. * @author : 김영학 2008-11-19
  4770. * @---------------------------------------------------
  4771. */
  4772. function initWndTitle() {
  4773. if (getGlobalVariable("userinfos") != "") {
  4774. var scrnTitle = getUserInfo("systeminstnm") + " " ;
  4775. scrnTitle += document.title + " " ;
  4776. scrnTitle += getUserInfo("dutplcenm") + " ";
  4777. scrnTitle += getUserName() + " ";
  4778. scrnTitle += getTitleLoginDate() + " ";
  4779. document.title = scrnTitle;
  4780. }
  4781. }
  4782. /**
  4783. * @desc : (입원/응급/DSC)임상연구처방을 위한 subcretno를 세팅한다.
  4784. * @ :
  4785. * @param :
  4786. * @return :
  4787. * @author : 한재상 20090227
  4788. * @---------------------------------------------------
  4789. */
  4790. // 전처방 및 약속처방에서 처방을 넘기는 경우에도 임상연구처방을 위한 subcretno를 세팅하기 위해 strSrc, sendRow 추가, CHC, 2009-07-22
  4791. function fSubcretnoSet(prcpinptflag, ctrlnm, strSrc, sendRow) {
  4792. var sSubcretno = "0";
  4793. if (prcpinptflag == "0" ) { // 상세팝업에서...
  4794. var prcpgenrflag = opener.model.getValue("/root/patflag/list/prcpgenrflag");
  4795. var clincstdyflag = ctrlnm.valueMatrix(1, ctrlnm.colRef("clincstdyflag"));
  4796. if(prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E"){
  4797. if(clincstdyflag == "Y"){ //임상연구가 Y로 처리된 경우에만 보조유형세팅
  4798. var pid = opener.model.getValue("/root/paminfo/list/pid");
  4799. var indd = opener.model.getValue("/root/paminfo/list/indd");
  4800. sSubcretno = fGetSubcretno(pid, indd, "clincstdyflag");
  4801. if ( sSubcretno == "0" ) {
  4802. model.setValue("/root/main/prcp/prcplist/subcretno", "0");
  4803. ctrlnm.valueMatrix(1, ctrlnm.colRef("clincstdyflag")) = 'N';
  4804. messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  4805. } else {
  4806. model.setValue("/root/main/prcp/prcplist/subcretno", sSubcretno);
  4807. }
  4808. }else{ //임상연구가 N로 처리된 경우에는 subcretno 0로 처리
  4809. model.setValue("/root/main/prcp/prcplist/subcretno", "0");
  4810. }
  4811. } else { //외래, 건진의 경우는 subcretno 0로 처리
  4812. model.setValue("/root/main/prcp/prcplist/subcretno", "0");
  4813. if ( clincstdyflag == "Y" && opener.model.getValue("/root/paminfo/list/insukind") != "71") {
  4814. ctrlnm.valueMatrix(1, ctrlnm.colRef("clincstdyflag")) = 'N';
  4815. messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  4816. }
  4817. }
  4818. } else if (prcpinptflag == "1") { // 일괄입력에서...
  4819. var prcpgenrflag = opener.model.getValue("/root/patflag/list/prcpgenrflag");
  4820. var clincstdyflag = model.getValue("/root/chkflag/clincstdyflag");
  4821. if (prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E"){
  4822. if(model.getValue("/root/chkflag/clincstdyflag") == "Y"){
  4823. var pid = opener.model.getValue("/root/paminfo/list/pid");
  4824. var indd = opener.model.getValue("/root/paminfo/list/indd");
  4825. sSubcretno = fGetSubcretno(pid, indd, "clincstdyflag");
  4826. if ( sSubcretno == "0" ) {
  4827. model.setValue("/root/main/prcp/prcplist/subcretno", "0");
  4828. messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  4829. return -1
  4830. } else {
  4831. model.setValue("/root/main/prcp/prcplist/subcretno", sSubcretno);
  4832. }
  4833. }else{ //임상연구가 N로 처리된 경우에는 subcretno 0로 처리
  4834. model.setValue("/root/main/prcp/prcplist/subcretno", "0");
  4835. }
  4836. } else { //외래, 건진의 경우는 subcretno 0로 처리
  4837. model.setValue("/root/main/prcp/prcplist/subcretno", "0");
  4838. if ( clincstdyflag == "Y" && opener.model.getValue("/root/paminfo/list/insukind") != "71") {
  4839. messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  4840. return -1;
  4841. }
  4842. }
  4843. } else if (prcpinptflag == "2") { // 전처방, 약속처방에서, 임상시험 부유형 자동세팅, cHc, 2009-07-21
  4844. var prcpgenrflag = opener.model.getValue("/root/patflag/list/prcpgenrflag");
  4845. var clincstdyflag = ctrlnm;
  4846. if(prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E") {
  4847. if(clincstdyflag == "Y"){ //임상연구가 Y로 처리된 경우에만 보조유형세팅
  4848. var pid = opener.model.getValue("/root/paminfo/list/pid");
  4849. var indd = opener.model.getValue("/root/paminfo/list/indd");
  4850. sSubcretno = fGetSubcretno(pid, indd, "clincstdyflag");
  4851. if ( sSubcretno == "0" ) {
  4852. model.setValue(strSrc + "[" + sendRow + "]/subcretno", "0");
  4853. model.setValue(strSrc + "[" + sendRow + "]/clincstdyflag", "N");
  4854. messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  4855. } else {
  4856. model.setValue(strSrc + "[" + sendRow + "]/subcretno", sSubcretno);
  4857. }
  4858. model.removeNodeset("/root/temp");
  4859. } else{ //임상연구가 N로 처리된 경우에는 subcretno 0로 처리
  4860. opener.model.setValue(strSrc + "[" + sendRow + "]/subcretno", "0");
  4861. }
  4862. } else { //외래, 건진의 경우는 subcretno 0로 처리
  4863. model.setValue(strSrc + "[" + sendRow + "]/subcretno", "0");
  4864. if ( clincstdyflag == "Y" && opener.model.getValue("/root/paminfo/list/insukind") != "71") {
  4865. messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  4866. }
  4867. }
  4868. } else if (prcpinptflag == "3") { // kimsj 임상 일괄입력 팝업 체크
  4869. var prcpgenrflag = model.getValue("/root/patflag/list/prcpgenrflag");
  4870. if (prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E"){
  4871. var pid = model.getValue("/root/paminfo/list/pid");
  4872. var indd = model.getValue("/root/paminfo/list/indd");
  4873. sSubcretno = fGetSubcretno(pid, indd, "clincstdyflag");
  4874. if ( sSubcretno == "0" ) {
  4875. messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  4876. return -1;
  4877. }
  4878. } else { //외래, 건진의 경우는 subcretno 0로 처리
  4879. if (model.getValue("/root/paminfo/list/insukind") != "71") {
  4880. messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  4881. return -1;
  4882. }
  4883. }
  4884. return 0;
  4885. }
  4886. }
  4887. /**
  4888. * @desc : 환자의 부유형 원무접수번호(subcretno)를 조회 한다.
  4889. * @ :
  4890. * @param :
  4891. * @return :
  4892. * @author : 엄영만 2012.05.09
  4893. * @---------------------------------------------------
  4894. */
  4895. function fGetSubcretno(sPid, sIndd, sSrchcls) {
  4896. var sSubcretno = "0";
  4897. if(isNull(sPid)) { messageBox ( "환자번호가 없습니다. 보조유형 조회에 실패 하였습니다. 전산실(6598)로 연락 바랍니다.", "E999" ); return sSubcretno;}
  4898. if(isNull(sIndd)) { messageBox ( "입원일자가 없습니다. 보조유형 조회에 실패 하였습니다. 전산실(6598)로 연락 바랍니다.", "E999" ); return sSubcretno;}
  4899. if(isNull(sSrchcls)) { sSrchcls = ""; }
  4900. model.makeValue("/root/temp/send/pid", sPid);
  4901. model.makeValue("/root/temp/send/indd", sIndd);
  4902. model.makeValue("/root/temp/send/srchcls", sSrchcls);
  4903. if(submit("TRMMO15701")){
  4904. var nodelist = model.instances(0).selectNodes("/root/temp/patsupkind/patsupkind");
  4905. if(nodelist != null) {
  4906. if(sSrchcls == "clincstdyflag") { // 임상시험 유형
  4907. sSubcretno = model.getValue("/root/temp/patsupkind/patsupkind/cretno");
  4908. if(isNull(sSubcretno)) {
  4909. sSubcretno = "0";
  4910. }
  4911. } else { // 기왕증 등 임상시험 이외의 경우
  4912. if(nodelist.length > 1){
  4913. modal("SPMMO15700", "", "", "", "SPMMO15700", "/root/temp/patsupkind", "/root/main/patsupkind");
  4914. sSubcretno = getParameter("SPMMO15700_subcretno");
  4915. }
  4916. }
  4917. }
  4918. } else {
  4919. messageBox ( "보조유형 조회에 실패 하였습니다. 전산실(6598)로 연락 바랍니다.", "E999" );
  4920. }
  4921. model.resetInstanceNode( "/root/temp/send" );
  4922. return sSubcretno;
  4923. }
  4924. /**
  4925. * @desc : 문자열 입력하는 곳에 공백이 있으면 공백을 제거한다.
  4926. * @ :
  4927. * @param :
  4928. * @return :
  4929. * @author : 김영학 2009. 03.03
  4930. * @---------------------------------------------------
  4931. */
  4932. function trim(s) {
  4933. s += ''; // 숫자라도 문자열로 변환
  4934. return s.replace(/^\s*|\s*$/g, '');
  4935. }
  4936. /**
  4937. * @desc : 문자열 입력하는 곳에 공백이 있으면 공백을 제거한다.
  4938. * @ :
  4939. * @param :
  4940. * @return :
  4941. * @author : 김영학 2009. 03.03
  4942. * @---------------------------------------------------
  4943. */
  4944. function fPidTrim(pid_path) {
  4945. var pid = model.getValue(pid_path);
  4946. //pid = trim(pid);
  4947. pid += ''; // 숫자라도 문자열로 변환
  4948. pid = pid.replace(/^\s*|\s*$/g, '');
  4949. model.setValue(pid_path, pid);
  4950. }
  4951. /**
  4952. * @desc : 세부과리스트 조회
  4953. * @
  4954. * @param : ref - reference path
  4955. * rsltref - result reference path
  4956. * orddeptcd - 진료과코드
  4957. * @return :
  4958. * @author : 오지훈
  4959. * @---------------------------------------------------
  4960. */
  4961. function mmbfGetSubDeptComboList(ref, rsltref, orddeptcd){
  4962. var mmb_rsltref = "/root/hidden/mmb/subdeptinfo";
  4963. model.removeNode(mmb_rsltref);
  4964. model.makeNode(mmb_rsltref);
  4965. model.removeNode(ref);
  4966. model.makeValue(ref + "/orddeptcd", orddeptcd);
  4967. if(submit("TRMMB04106", "false", ref, mmb_rsltref)==true){
  4968. model.copyNode(rsltref, mmb_rsltref);
  4969. model.removeNode(mmb_rsltref);
  4970. }
  4971. model.refresh();
  4972. }
  4973. /**
  4974. * @desc : 변경요청(8106), 응급간호에서 삭제처리한 환자 선택 시 blocking 메세지 처리 추가
  4975. * 응급진료대상자 및 처방창에서 호출함
  4976. * @param : pid, orddd, cretno, mode(C:false리턴 시 창을닫음, B:처방저장을 blocking)
  4977. * @return : true, false
  4978. * @author : 전지은
  4979. * @---------------------------------------------------
  4980. */
  4981. function fChkInCnclYN(pid, orddd, cretno, pMode){
  4982. var rstlRef = "/root/hidden/erincnclinfo/info/incnclyn";
  4983. if(isNull(pMode)) pMode = "C";
  4984. model.makeValue("/root/send/reqdata/erincncl_pid" , pid);
  4985. model.makeValue("/root/send/reqdata/erincncl_orddd" , orddd);
  4986. model.makeValue("/root/send/reqdata/erincncl_cretno" , cretno);
  4987. model.makeNode("/root/hidden/erincnclinfo");
  4988. if (submit("TRMMO04404")==true) {
  4989. model.removenode("/root/send/reqdata/erincncl_pid");
  4990. model.removenode("/root/send/reqdata/erincncl_orddd");
  4991. model.removenode("/root/send/reqdata/erincncl_cretno");
  4992. //조회 결과, 삭제처리여부 N이면 처방창 호출 가능, 그 외(삭제처리 했을 경우)에는 blocking
  4993. if( model.getValue(rstlRef) == "N" ){
  4994. return true;
  4995. }else{
  4996. messageBox("삭제 처리 환자입니다.\n처방입력은 불가 합니다.\n\n응급 간호에", "I007");
  4997. if( pMode == "C" ){
  4998. var orgPid = getPatientInfo("pid");
  4999. var orgOrddd = getPatientInfoDetail("indd");
  5000. var orgCretno = getPatientInfoDetail("cretno");
  5001. if( pid == orgPid && orddd == orgOrddd && cretno == orgCretno ){
  5002. var mainObj = getMainViewer();
  5003. var curPrcpObj = mainObj.javascript.getOpenWindow("SMMMO00100"); //활성화된 처방Main 화면 object loading
  5004. var curCpObj = mainObj.javascript.getOpenWindow("SMMMP00800"); //활성화된 CP Main 화면 object loading
  5005. // 처방창이 열려있다면 입력된 처방을 삭제하고 처방창 close
  5006. if(curPrcpObj != null){
  5007. curPrcpObj.model.removeNodeSet ("/root/main/prcp/prcplist");
  5008. curPrcpObj.window.javascript.appendChildPrcp ( "/root/reset/prcplist", "/root/main/prcp", "main" );
  5009. }
  5010. if(curCpObj != null){
  5011. curCpObj.model.removeNodeSet ("/root/main/prcp/prcplist");
  5012. curCpObj.window.javascript.appendChildPrcp ( "/root/reset/prcplist", "/root/main/prcp", "main" );
  5013. }
  5014. }
  5015. } else if ( pMode == "B" ){
  5016. // 저장 blocking, 처방저장 버튼의 상태를 disabled 시킴
  5017. btn_tempsave.disabled = true;
  5018. btn_prcpsave.disabled = true;
  5019. btn_tempsave.hint = "삭제 처리 환자입니다. 처방입력은 불가 합니다. 응급 간호에 확인하십시오.";
  5020. btn_prcpsave.hint = "삭제 처리 환자입니다. 처방입력은 불가 합니다. 응급 간호에 확인하십시오.";
  5021. // 입력된 처방을 삭제시킴 (처방이 남아있으면 창 닫을 때 저장여부를 또 물어봄)
  5022. model.removeNodeSet ("/root/main/prcp/prcplist");
  5023. appendChildPrcp ( "/root/reset/prcplist", "/root/main/prcp", "main" );
  5024. model.refresh();
  5025. model.recalculate();
  5026. }
  5027. if(instance1.selectSingleNode(rstlRef) == null) model.makeValue(rstlRef, "Y");
  5028. return false; //삭제처리 환자인 경우 false
  5029. }
  5030. } else{
  5031. model.removenode("/root/send/reqdata/erincncl_pid");
  5032. model.removenode("/root/send/reqdata/erincncl_orddd");
  5033. model.removenode("/root/send/reqdata/erincncl_cretno");
  5034. if( instance1.selectSingleNode(rstlRef) == null ) model.makeValue(rstlRef, "");
  5035. return false; //submit 실패 시 false
  5036. }
  5037. }
  5038. /**
  5039. * @desc : 선택진료신청관리 팝업 open 여부 체크
  5040. * @param : pid(등록번호), cretno(cretno), stnddd(입원일/진료일), orddeptcd(진료과), orddrid(진료의), ordtype(O:외래진료대상자/I:입원결정서)
  5041. * @return :
  5042. * @author : 전지은 (조영상 제공 2009.10.23)
  5043. * @---------------------------------------------------
  5044. */
  5045. function fSpecOrdPopUpYN(pid, cretno, stnddd, orddeptcd, orddrid, ordtype) {
  5046. //20091007 JJE 추가 : 주진료과 의사가 진료지원과의 선택진료의사 선택 여부(hardcdno:134) 및 원무 팝업 호출
  5047. var selspecordyn = "";
  5048. if( isNull(ordtype) ) ordtype = "O"; //입원장에서 호출 시에는 I로 보냄.. (2009.11.03 추가)
  5049. if(ordtype != "O") selspecordyn = opener.model.getValue("/root/initsrch/selspecordyn[trgtcd = 'Y']/trgtcd");
  5050. else selspecordyn = model.getValue("/root/init/selspecordyn/hardcd[hardcd = 'Y']/hardcd");
  5051. if (!isNull(selspecordyn)){
  5052. model.removenode("/root/smpmc06800");
  5053. model.makeValue("/root/smpmc06800/send/pid" , pid);
  5054. model.makeValue("/root/smpmc06800/send/orddd" , stnddd);
  5055. model.makeValue("/root/smpmc06800/send/orddeptcd" , orddeptcd);
  5056. model.makeValue("/root/smpmc06800/send/orddrid" , orddrid);
  5057. model.makeValue("/root/smpmc06800/send/cretno" , cretno);
  5058. model.makeValue("/root/smpmc06800/send/ordtype" , ordtype);
  5059. if( submit("TRPMC06801") ){
  5060. var saim_pid = getNodesetCount("/root/smpmc06800/hsaim/saim/pid");
  5061. if(saim_pid == 0){
  5062. //Parameter: 진료형태▦환자번호▦입원/진료일▦생성번호▦진료과▦주치의▦등록위치구분 : rgstposflag (I:입원,O:외래,M:진료,N:간호)
  5063. setParameter("SMPMC06800_PARM", ordtype + "▦" + pid + "▦" + stnddd + "▦" + cretno + "▦" + orddeptcd + "▦" + orddrid + "▦" + "M");
  5064. modal("SMPMC06800");
  5065. }
  5066. }
  5067. }
  5068. }
  5069. var hardcdResultRef = "/root/hidden/hardcd/resultref";
  5070. function makeHardCdResultRef(){ model.makeNode(hardcdResultRef); }
  5071. function removeHardCdResultRef(){ model.removeNode(hardcdResultRef); }
  5072. /**
  5073. * @desc : 하드코드 조회 배열을 이용하여 한번의 Submit 이용하기
  5074. * @param : 첫번째 파리미터 : 위치할 최하위 인스턴스명 |(구분자) 하드코드 번호
  5075. 두번째 파라미터 : 하드코드 내용이 위치 할 곳
  5076. Ex) fGethardcdArrayList(new Array(
  5077. "dayaftrcptyn|75",
  5078. "patprotector|95",
  5079. "menu|191",
  5080. "selspecordyn|134",
  5081. "ordordershow|135",
  5082. "reqphardcdno|138"
  5083. ),
  5084. new Array(
  5085. "/root/init",
  5086. "/root/init",
  5087. "/root/popupmenu",
  5088. "/root/init",
  5089. "/root/init",
  5090. "/root/init"
  5091. )
  5092. );
  5093. * @return :
  5094. * @author : 김영학
  5095. * @---------------------------------------------------
  5096. */
  5097. /*
  5098. // 하드코드 리스트가 많을 경우 속도가 느려지는 문제 발생하여 submit을 한번 날려서 가지고 오는 방식으로 변경
  5099. function fGethardcdArrayList(hardcdlist, rslt_ref_list){
  5100. makeHardCdResultRef();
  5101. var bCopy = true;
  5102. for (key in hardcdlist){
  5103. addParameter("hardcdno", hardcdlist[key]);
  5104. //////////////
  5105. //KNUH_20110211, 주희경, 진료속도개선위해 미리 조회해 놓은 hardcd 데이터를 복사
  5106. var target_path = rslt_ref_list[key];
  5107. if(target_path==null){
  5108. target_path = rslt_ref_list[key-1];
  5109. }
  5110. target_path = target_path + "/" + hardcdlist[key].split("|")[0];
  5111. var hardcd = hardcdlist[key].split("|")[1];
  5112. fGetHardCDList("N", hardcd, 0, target_path);
  5113. var destNode = model.instances(0).selectSingleNode(rslt_ref_list);
  5114. if ( destNode.childNodes.length == 0 )
  5115. {
  5116. bCopy = false;
  5117. }
  5118. //////////////
  5119. }
  5120. //KNUH_20110211, 주희경, 복사된 데이터가 없으면 submit
  5121. if (!bCopy)
  5122. {
  5123. var success = submit("TRMMB04107", "false", getParameterPath(), hardcdResultRef);
  5124. for(key in hardcdlist){
  5125. var target_path = rslt_ref_list[key];
  5126. if(target_path==null){
  5127. target_path = rslt_ref_list[key-1];
  5128. }
  5129. var refArray = hardcdlist[key].split("|");
  5130. var nodeitem = refArray[0]
  5131. var sourceNode = instance1.selectNodes(hardcdResultRef + "/" + nodeitem);
  5132. for(i=0; i<sourceNode.length; i++){
  5133. model.duplicate(target_path, sourceNode.item(i));
  5134. }
  5135. }
  5136. }
  5137. removeHardCdResultRef();
  5138. clearParameter("hardcdno");
  5139. }
  5140. */
  5141. function fGethardcdArrayList(hardcdlist, rslt_ref_list){
  5142. makeHardCdResultRef();
  5143. for (key in hardcdlist){
  5144. addParameter("hardcdno", hardcdlist[key]);
  5145. }
  5146. var success = submit("TRMMB04107", "false", getParameterPath(), hardcdResultRef);
  5147. for(key in hardcdlist){
  5148. var target_path = rslt_ref_list[key];
  5149. if(target_path==null){
  5150. target_path = rslt_ref_list[key-1];
  5151. }
  5152. var refArray = hardcdlist[key].split("|");
  5153. var nodeitem = refArray[0]
  5154. var sourceNode = instance1.selectNodes(hardcdResultRef + "/" + nodeitem);
  5155. for(i=0; i<sourceNode.length; i++){
  5156. model.duplicate(target_path, sourceNode.item(i));
  5157. }
  5158. }
  5159. removeHardCdResultRef();
  5160. clearParameter("hardcdno");
  5161. }
  5162. /**
  5163. * @desc : 조회된 하드코드 리스트를 조회한다.
  5164. * @param : 첫번째 파리미터 : option : Y : 값을 리턴한다. , N : 리스트를 반환한다.
  5165. * 두번째 파라미터 : 하드코드 번호
  5166. * 세번째 파라미터 : 반환할 instance 주소를 준다.
  5167. * var returnVal = fGetHardCDList("Y", 1, 0);
  5168. * model.makeValue("/root/hidden/returnValue", returnVal) ;
  5169. *
  5170. * fGetHardCDList("N", 6, 0 , "/root/hidden/destnode");
  5171. * @return : option = "Y" 일 경우
  5172. * return hardcd+ "|" + hardcdnm + "|" + cdseqno;
  5173. = "N" 일 경우 노드 복사
  5174. hardcdno = 하드코드 번호
  5175. rtnValue 0 - 리턴값 반환하지 않음 (하드코드 값이 여러개일 때 선택
  5176. 1 - hardcdno를 리턴
  5177. 2 - hardcodenm 을 리턴
  5178. 3 - hardcd 를 리턴
  5179. 4 - hardcdnm를 리턴
  5180. 5 - cdseqno를 리턴
  5181. 9 - hardcd+ "|" + hardcdnm + "|" + cdseqno 형태로 리턴
  5182. rslt_ref_list 목적노드
  5183. * @author : 김영학
  5184. * @---------------------------------------------------
  5185. */
  5186. function fGetHardCDList(option, hardcdno, rtnValue , rslt_ref_list) {
  5187. model.makeNode(rslt_ref_list);
  5188. var destNode = model.instances(0).selectSingleNode(rslt_ref_list);
  5189. var sysMessageobj = getViewer("sysMessage");
  5190. if (sysMessageobj != null) {
  5191. if (option == "Y") {
  5192. try {
  5193. var hardcdno = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='" + hardcdno + "']/hardcdno").text;
  5194. var hardcodenm = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='" + hardcdno + "']/hardcodenm").text;
  5195. var hardcd = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='" + hardcdno + "']/hardcd").text;
  5196. var hardcdnm = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='" + hardcdno + "']/hardcdnm").text;
  5197. var cdseqno = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='" + hardcdno + "']/cdseqno").text;
  5198. } catch(err) {
  5199. model.makeValue("/root/temp/hardcd", hardcdno);
  5200. mmbfGetHardCodeInfo("/root/send/reqdata", "/root/temp/hardcd", hardcdno); //
  5201. var hardcd = model.getValue("/root/temp/hardcd/hardcd");
  5202. var hardcdnm = model.getValue("/root/temp/hardcd/hardcdnm");
  5203. var cdseqno = model.getValue("/root/temp/hardcd/cdseqno");
  5204. }
  5205. if (rtnValue == 1) {
  5206. return hardcdno;
  5207. } else if (rtnValue == 1) {
  5208. return hardcodenm;
  5209. } else if (rtnValue == 2) {
  5210. return hardcdno;
  5211. } else if (rtnValue == 3) {
  5212. return hardcd;
  5213. } else if (rtnValue == 4) {
  5214. return hardcdnm;
  5215. } else if (rtnValue == 5) {
  5216. return cdseqno;
  5217. } else if (rtnValue == 9) {
  5218. return hardcd+ "|" + hardcdnm + "|" + cdseqno;
  5219. }
  5220. } else {
  5221. /*
  5222. //속도 문제로 인덱스를 뒤져서 해당 인덱스에서부터 시작하도록 수정 : 20110428 김영학
  5223. var hardcdPath = sysMessageobj.window.instance1.selectNodes("/root/properties/orderbasicinfo/hardcdlist/hardcd");
  5224. var destListLen = destNode.childNodes.length;
  5225. var hardcdIdxPath = sysMessageobj.window.instance1.selectNodes("/root/properties/orderbasicinfo/hardcdidxlist");
  5226. for (idxno = 1; idxno <= hardcdIdxPath.length; idxno++ ) {
  5227. if (sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdidxlist[" + idxno + "]/hardcdno").text == hardcdno) {
  5228. strtrow = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdidxlist[" + idxno + "]/strtrow").text
  5229. break;
  5230. }
  5231. }
  5232. */
  5233. /*
  5234. if (destListLen < 1 ) { // 한번이라도 복사된 내용이 있으면 다시 안하도록 수정 2011. 01.20 김영학
  5235. model.copyNode( rslt_ref_list+ "/hardcd", "/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='"+hardcdno+"']");
  5236. for (i=strtrow; i<= hardcdPath.length; i++){
  5237. if (sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[" + i + "]/hardcdno").text == hardcdno) {
  5238. destNode.appendChild(hardcdPath.item(i-1).cloneNode(true));
  5239. } else if (parseInt(sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[" + i + "]/hardcdno").text) > parseInt(hardcdno)) {
  5240. break;
  5241. }
  5242. }
  5243. }
  5244. */
  5245. var destListLen = destNode.childNodes.length;
  5246. if (destListLen < 1 ) { // 한번이라도 복사된 내용이 있으면 다시 안하도록 수정 2011. 01.20 김영학
  5247. var destNode = instance1.selectSingleNode(rslt_ref_list);
  5248. var nodes = sysMessageobj.window.instance1.selectNodes("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='"+hardcdno+"']");
  5249. for(i=1; i<= nodes.length; i++) {
  5250. destNode.appendChild(nodes.item(i-1).cloneNode(true));
  5251. }
  5252. }
  5253. }
  5254. }
  5255. }
  5256. /**
  5257. * @desc : 하드코드 리스트에 해당 파라미터의 코드 값이 존재 하는지 여부를 체크 한다.
  5258. * @param : sHardCdNo : 하드코드 번호
  5259. * sCheckCode : 체크 할 하드코드
  5260. * fContainsHardCD("339", "LIR112");
  5261. * @return : true : 값이 존재 함.
  5262. false : 값이 존재하지 않음.
  5263. * @author : 엄영만 2012.11.26
  5264. * @---------------------------------------------------
  5265. */
  5266. function fContainsHardCD(sHardCdNo, sCheckCode) {
  5267. var bRtn = false; // 반환값
  5268. var sChekPath = "/root/temp/mmo001/fcontainshardcd"; // 체크할 임시 노드 경로
  5269. try {
  5270. model.removeNodeset(sChekPath);
  5271. fGetHardCDList("N", sHardCdNo, 0, sChekPath);
  5272. if(!isNull(model.getValue(sChekPath + "/hardcd[hardcd='"+sCheckCode+"']/hardcd"))) {
  5273. bRtn = true;
  5274. } else {
  5275. bRtn = false;
  5276. }
  5277. } catch(err) {
  5278. messageBox ( "fContainsHardCD() 실행 중 오류가 발생 하였습니다. sHardCdNo:" + sHardCdNo + " sCheckCode:"+ sCheckCode, "E" );
  5279. } finally {
  5280. model.removeNodeset(sChekPath);
  5281. }
  5282. return bRtn;
  5283. }
  5284. /**
  5285. * @desc : 의사 직종직위 옵션을 받아서 true, false 값을 리턴한다.
  5286. * @param : 첫번째 파리미터 : option 1: 의사 여부, 2: 주치의 여부 3: 담당의 여부 를 체크한다.
  5287. * 두번째 파라미터 : chkOption : A : 직종으로 체크한다. , B : 직위로 체크한다.
  5288. * 값이 없으면 하드코드번호 255번의 기본값으로 셋팅한다., 하드코드도 없으면 기본값 "B"로 셋팅
  5289. * 세번째 파라미터 : userinfo : 비교할 직종 또는 직위코드(getUserInfo(jobkindcd), getUserInfo("jobposcd") ;
  5290. 값이 없으면 A일 경우는 getUserInfo("jobkindcd") , B일 경우는 getUserInfo("jobposcd")로 셋팅함.
  5291. * model.makeValue("/root/hidden/returnValue", returnVal) ;
  5292. * fGetHardCDList("1");
  5293. * fGetHardCDList("2", "A", getUserInfo("jobkindcd"));
  5294. * @return : true/false;
  5295. * @author : 김영학
  5296. * @---------------------------------------------------
  5297. */
  5298. function mmbfChkDrKindPosYN(option, chkOption, userinfo) {
  5299. if (chkOption == null || chkOption == "" || chkOption == "undefined") {
  5300. chkOption = fGetHardCDList("Y", "255", "3")
  5301. if (chkOption == "" ) chkOption = "B"
  5302. }
  5303. if (option == "1") { // 의사여부를 리턴한다.
  5304. fGetHardCDList("N", 69, 0, "/root/chktmpdrlist");
  5305. if (userinfo == null || userinfo == "" || userinfo == "undefined") userinfo = getUserInfo("jobkindcd") ;
  5306. var jobkindcd = model.getValue("/root/chktmpdrlist/hardcd[hardcd='" + userinfo + "']/hardcd");
  5307. if ( jobkindcd != "") return true;
  5308. else return false;
  5309. } else if (option =="2") { // 주치의 여부를 리턴한다.
  5310. if (chkOption == "A") { // 직종에서 비교한다. (jobkindcd)
  5311. fGetHardCDList("N", 65, 0, "/root/chktmpdrlist") ;
  5312. if (userinfo == null || userinfo == "" || userinfo == "undefined") userinfo = getUserInfo("jobkindcd") ;
  5313. var jobkindcd = model.getValue("/root/chktmpdrlist/hardcd[hardcd='" + userinfo + "']/hardcd");
  5314. if ( jobkindcd != "") return true;
  5315. else return false;
  5316. } else if (chkOption == "B") { // 직위를 비교한다. (jobposcd)
  5317. fGetHardCDList("N", 67, 0, "/root/chktmpdrlist") ;
  5318. if (userinfo == null || userinfo == "" || userinfo == "undefined") userinfo = getUserInfo("jobposcd") ;
  5319. var jobkindcd = model.getValue("/root/chktmpdrlist/hardcd[hardcd='" + userinfo + "']/hardcd");
  5320. if ( jobkindcd != "") return true;
  5321. else return false;
  5322. }
  5323. } else if (option == "3") {
  5324. if (chkOption == "A") { // 직종에서 비교한다. (jobkindcd)
  5325. fGetHardCDList("N", 65, 0, "/root/chktmpdrlist") ;
  5326. if (userinfo == null || userinfo == "" || userinfo == "undefined") userinfo = getUserInfo("jobkindcd") ;
  5327. var jobkindcd = model.getValue("/root/chktmpdrlist/hardcd[hardcd='" + userinfo + "']/hardcd");
  5328. if ( jobkindcd != "") return true;
  5329. else return false;
  5330. } else if (chkOption == "B") { // 직위를 비교한다. (jobposcd)
  5331. fGetHardCDList("N", 67, 0, "/root/chktmpdrlist") ;
  5332. if (userinfo == null || userinfo == "" || userinfo == "undefined") userinfo = getUserInfo("jobposcd") ;
  5333. var jobkindcd = model.getValue("/root/chktmpdrlist/hardcd[hardcd='" + userinfo + "']/hardcd");
  5334. if ( jobkindcd != "") return "Y";
  5335. else return "N";
  5336. }
  5337. }
  5338. }
  5339. /**
  5340. * @desc : 사용자 환경설정의 값을 조회한다.
  5341. * @param : qestcd : 질문값
  5342. * @return : Answcnt ( 답안값)
  5343. */
  5344. function mmbfGetUserEnvQuestValue(qestcd) {
  5345. var sysMessageobj = getViewer("sysMessage");
  5346. if (sysMessageobj != null) {
  5347. var anstcnt = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/envinfo[qestcd='" + qestcd + "']/answcnt").text;
  5348. return anstcnt;
  5349. } else {
  5350. var mmb_rsltref = "/root/userenv/answlist";
  5351. var ref = "/root/userenv/cond"
  5352. var answcnt = "";
  5353. model.removeNode(mmb_rsltref);
  5354. model.makeNode(mmb_rsltref);
  5355. model.makeValue(ref + "/interqestcd", qestcd);
  5356. if(submit("TRMMB01104", "false", ref, mmb_rsltref)==true){
  5357. answcnt = model.getValue("/root/userenv/interface/answcnt")
  5358. model.removeNode(mmb_rsltref);
  5359. return answcnt;
  5360. }
  5361. }
  5362. }
  5363. function fChoiOrdChk() {
  5364. if ( model.getValue ( "/root/main/prcp/prcplist/tempcol24" ) != "Y" ) {
  5365. messageBox ( "선택진료가 불가한 처방입니다.", "E" );
  5366. return false;
  5367. } else {
  5368. return true;
  5369. }
  5370. }
  5371. function fChgChoiDr( mode, currow ) {
  5372. var xpt = window.screenLeft + 400;
  5373. var ypt = window.screenTop + 60;
  5374. var coord = getRelativeCoordinate(xpt, ypt);
  5375. var mon = coord[0];
  5376. xpt = coord[1];
  5377. ypt = coord[2];
  5378. var ordtype = model.getValue ( "/root/patflag/list/prcpgenrflag" );
  5379. var prcpcd = "";
  5380. var prcpdd = "";
  5381. var prcpnm = "";
  5382. var prcpexecdeptcd = "";
  5383. var prcpclscd = "";
  5384. var drugmthdspccd = "";
  5385. var useyn = "";
  5386. var userid = "";
  5387. //default 선택진료과 설정
  5388. if ( mode == "pop" ) {
  5389. ordtype = model.getValue ( "/root/main/prcp/prcplist/prcpgenrflag" );
  5390. prcpcd = model.getValue ( "/root/main/prcp/prcplist/prcpcd" );
  5391. prcpnm = model.getValue ( "/root/main/prcp/prcplist/prcpnm" );
  5392. prcpexecdeptcd = model.getValue ( "/root/main/prcp/prcplist/prcpexecdeptcd" );
  5393. prcpclscd = model.getValue ( "/root/main/prcp/prcplist/prcpclscd" );
  5394. drugmthdspccd = model.getValue ( "/root/main/prcp/prcplist/drugmthdspccd" );
  5395. } else if ( mode == "auto" ) {
  5396. //ordtype = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/prcpgenrflag" );
  5397. ordtype = model.getValue ( "/root/patflag/list/prcpgenrflag" ); //입력구분
  5398. prcpcd = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/prcpcd" );
  5399. prcpnm = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/prcpnm" );
  5400. prcpexecdeptcd = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/prcpexecdeptcd" );
  5401. prcpclscd = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/prcpclscd" );
  5402. drugmthdspccd = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/drugmthdspccd" );
  5403. } else {
  5404. ordtype = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row + "]/prcpgenrflag" );
  5405. prcpcd = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row + "]/prcpcd" );
  5406. prcpnm = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row + "]/prcpnm" );
  5407. prcpexecdeptcd = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row + "]/prcpexecdeptcd" );
  5408. prcpclscd = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row + "]/prcpclscd" );
  5409. drugmthdspccd = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row + "]/drugmthdspccd" );
  5410. }
  5411. //defalut 선택진료과 설정. 예외
  5412. if ( prcpexecdeptcd == "2010500000" || prcpexecdeptcd == "2010302030" ) { //내시경검사실, 내분비대사내과 일경우 소화기내과
  5413. prcpexecdeptcd = "2010300000";
  5414. } else if ( prcpexecdeptcd == "2220204000" ) { //물리치료실일 경우 재활의학과
  5415. prcpexecdeptcd = "2220000000";
  5416. } else if ( prcpexecdeptcd == "2010402030" || prcpexecdeptcd == "2010402090" ) { //심장혈관촬영실, 심전도검사실 경우 순환기내과
  5417. prcpexecdeptcd = "2010400000";
  5418. } else if ( prcpexecdeptcd == "2200238000" ) { //채혈실일 경우 진단검사의학과
  5419. prcpexecdeptcd = "2200000000";
  5420. }
  5421. // 신규로직 테스트 적용 여부 추후 삭제 필요.
  5422. var sChkNewLogicYn = fGetHardCDList("Y", 400, 3); // 400 처방 관련 신규로직 적용여부
  5423. var orddrid = "";
  5424. if ( mode == "pop" ) {
  5425. if ( ordtype == "O" ) {
  5426. orddrid = opener.model.getValue ( "/root/paminfo/list/orddrid" );
  5427. } else {
  5428. orddrid = opener.model.getValue ( "/root/paminfo/list/medispclid" );
  5429. }
  5430. } else {
  5431. if ( ordtype == "O" ) {
  5432. orddrid = model.getValue ( "/root/paminfo/list/orddrid" );
  5433. } else {
  5434. orddrid = model.getValue ( "/root/paminfo/list/medispclid" );
  5435. }
  5436. }
  5437. fGetHardCDList("N", 402, 0 , "/root/hidden/testcheckspcdrlist"); // 402 신규로직 적용대상 2011.11.19 엄영만 (추후 관련 로직 삭제해야함.)
  5438. // End of 신규로직 테스트 적용 여부 추후 삭제 필요. orddrid 가져 오는 부분도 필요 없음.
  5439. if ( sChkNewLogicYn == "Y"
  5440. || (sChkNewLogicYn == "N" && !isNull(model.getValue("/root/hidden/testcheckspcdrlist/hardcd[hardcd='"+orddrid+"']/hardcd" ))) ) { // 신규로직 적용여부
  5441. if ( mode == "pop" ) {
  5442. prcpdd = opener.model.getValue ( "/root/init/prcpdd" );
  5443. } else {
  5444. prcpdd = model.getValue ( "/root/init/prcpdd" );
  5445. }
  5446. clearParameter ( "SPMMB08600_useyn" );
  5447. clearParameter ( "SPMMB08600_userid" );
  5448. clearParameter ( "SPMMB08600_prcpdd" );
  5449. clearParameter ( "SPMMB08600_prcpcd" );
  5450. clearParameter ( "SPMMB08600_prcpnm" );
  5451. clearParameter ( "SPMMB08600_orddeptcd" );
  5452. clearParameter ( "SPMMB08600_prcpclscd" );
  5453. clearParameter ( "SPMMB08600_drugmthdspccd" );
  5454. clearParameter ( "SPMMB08600_userinfo" );
  5455. setParameter("SPMMB08600_prcpdd", prcpdd);
  5456. setParameter("SPMMB08600_prcpcd", prcpcd);
  5457. setParameter("SPMMB08600_prcpnm", prcpnm);
  5458. setParameter("SPMMB08600_orddeptcd", prcpexecdeptcd);
  5459. setParameter("SPMMB08600_prcpclscd", prcpclscd);
  5460. setParameter("SPMMB08600_drugmthdspccd",drugmthdspccd);
  5461. setParameter("SPMMB0800_ioflag", ordtype);
  5462. modal("SPMMB08600", mon, xpt, ypt, null, null, null, null, false);
  5463. useyn = getParameter("SPMMB08600_useyn");
  5464. userid = getParameter("SPMMB08600_userid");
  5465. } else {
  5466. clearParameter ( "SPMMB08300_flag");
  5467. clearParameter ( "SPMMB08300_useyn" );
  5468. clearParameter ( "SPMMB08300_userid" );
  5469. clearParameter ( "SPMMB08300_orddeptcd" );
  5470. clearParameter ( "SPMMB08300_userinfo" );
  5471. setParameter("SPMMB08300_orddeptcd", prcpexecdeptcd);
  5472. setParameter("SPMMB08300_ioflag", ordtype);
  5473. modal("SPMMB08300", mon, xpt, ypt, null, null, null, null, false);
  5474. useyn = getParameter("SPMMB08300_useyn");
  5475. userid = getParameter("SPMMB08300_userid");
  5476. }
  5477. if(useyn == "Y"){
  5478. if ( mode == "pop" ) {
  5479. if ( model.getValue ( "/root/main/prcp/prcplist/tempcol24" ) == "Y" ) {
  5480. model.setValue ( "/root/main/prcp/prcplist/choiordflag", "Y" );
  5481. model.setValue ( "/root/main/prcp/prcplist/specdrid", userid );
  5482. } else {
  5483. model.setValue ( "/root/main/prcp/prcplist/choiordflag", "N" );
  5484. model.setValue ( "/root/main/prcp/prcplist/specdrid", "-");
  5485. }
  5486. } else if ( mode == "auto" ) {
  5487. if ( model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/tempcol24" ) == "Y" ) {
  5488. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/choiordflag", "Y" );
  5489. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/specdrid", userid );
  5490. } else {
  5491. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/choiordflag", "N" );
  5492. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/specdrid", "-");
  5493. }
  5494. } else {
  5495. var selectedRows = grd_prcplist.selectedRows;
  5496. for (var i=0; i< selectedRows; i++) {
  5497. if ( model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/tempcol24" ) == "Y" ) {
  5498. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/choiordflag", "Y" );
  5499. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/specdrid", userid );
  5500. } else {
  5501. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/choiordflag", "N" );
  5502. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/specdrid", "-");
  5503. }
  5504. }
  5505. }
  5506. } else {
  5507. if ( mode == "pop" ) {
  5508. model.setValue ( "/root/main/prcp/prcplist/choiordflag", "N" );
  5509. model.setValue ( "/root/main/prcp/prcplist/specdrid", "-");
  5510. } else if ( mode == "auto" ) {
  5511. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/choiordflag", "N" );
  5512. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/specdrid", "-");
  5513. } else {
  5514. var selectedRows = grd_prcplist.selectedRows;
  5515. for (var i=0; i< selectedRows; i++) {
  5516. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/choiordflag", "N" );
  5517. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/specdrid", "-");
  5518. }
  5519. }
  5520. }
  5521. var sysMessageobj = getViewer("sysMessage");
  5522. // 선택진료의사가 아닐 경우 는 기본값으로 셋팅한다.
  5523. if (mode =="pop") {
  5524. var chkChoiSpcldrid = model.getValue ( "/root/main/prcp/prcplist/specdrid" );
  5525. var choiSpclDrid = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/usercombo[userid ='" + chkChoiSpcldrid + "']/userid");
  5526. if ( choiSpclDrid == null) {
  5527. model.setValue ( "/root/main/prcp/prcplist/choiordflag", "N" );
  5528. model.setValue ( "/root/main/prcp/prcplist/specdrid", "-");
  5529. }
  5530. } else if (mode == "auto") {
  5531. var chkChoiSpcldrid = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/specdrid" );
  5532. var choiSpclDrid = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/usercombo[userid ='" + chkChoiSpcldrid + "']/userid");
  5533. if ( choiSpclDrid == null) {
  5534. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/choiordflag", "N" );
  5535. model.setValue ( "/root/main/prcp/prcplist[" + currow + "]/specdrid", "-");
  5536. }
  5537. } else {
  5538. var selectedRows = grd_prcplist.selectedRows;
  5539. for (var i=0; i< selectedRows; i++) {
  5540. var chkChoiSpcldrid = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/specdrid");
  5541. var choiSpclDrid = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/usercombo[userid ='" + chkChoiSpcldrid + "']/userid");
  5542. if ( choiSpclDrid == null) {
  5543. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/choiordflag", "N" );
  5544. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/specdrid", "-");
  5545. }
  5546. }
  5547. }
  5548. model.refresh();
  5549. }
  5550. /**
  5551. * @desc : 처방이 발행될때 set로 같이 나가야할 처방 처리
  5552. * @param : objFlag - child or else
  5553. : strSrc - source node
  5554. : strDest - 목적지 node; child일때는 opener.root.main.prcp, 아니면 "/root/main/prcp" 이다
  5555. : sendRow - 검색된 내용중 메인으로 보내고자 하는 row
  5556. : srchRow - 메인에 들어간 자리. 검색로우(srchRow) 바로 전이다.
  5557. : prcpInptFlag - - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  5558. : groupSrc - 옵션: group처방 검색할 경우 node
  5559. : direcSrc - 옵션: group 지시처방 검색할 경우 node
  5560. : prcpInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  5561. * @return : srchRow 에러시 0
  5562. * @authur : 마정민 2008. 6. 25
  5563. * @---------------------------------------------------
  5564. */
  5565. function fAddSetPrcpChkKNUH ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag ) {
  5566. var prcpcd = model.getValue( strSrc + "[" + i + "]/prcpcd" );
  5567. var addprcpcd = "";
  5568. var addprcpcnt = 0;
  5569. // if (prcpcd == "LCT101") addprcpcd = "DDIS50";
  5570. // else if (prcpcd == "LCT001") addprcpcd = "DDIS75";
  5571. // else if (prcpcd == "LCT002") addprcpcd = "DDIS100";
  5572. // else if (prcpcd == "NHC297EG") addprcpcd = "FE654303G"; //by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청
  5573. var iFind = -1;
  5574. var setprcpchk = "";
  5575. var cnts = getNodesetCount("/root/init/autosetprcplist/hardcd");
  5576. if ( objFlag == "child" ) {
  5577. srchPrcpcd = opener.model.getValue ( "/root/init/autosetprcplist/hardcd[hardcd = '" + prcpcd + "']/hardcd" );
  5578. setprcpchk = opener.model.getValue ( "/root/init/autosetprcplist/hardcd[hardcd = '" + prcpcd + "']/hardcdnm" );
  5579. } else {
  5580. srchPrcpcd = model.getValue ( "/root/init/autosetprcplist/hardcd[hardcd = '" + prcpcd + "']/hardcd" );
  5581. setprcpchk = model.getValue ( "/root/init/autosetprcplist/hardcd[hardcd = '" + prcpcd + "']/hardcdnm" );
  5582. }
  5583. // 기존 search함수에서 무결성이 어긋나 개별 체크 변경 - 20081008 by MoonSH
  5584. var precureprcpflag = "";
  5585. var calcflag = "";
  5586. var drprcpetc8 = "";
  5587. if( !isNull(srchPrcpcd)) {
  5588. var secStage = setprcpchk.split("|");
  5589. iFind = 1 ;
  5590. calcflag = secStage[0];
  5591. addprcpcd = secStage[1];
  5592. drprcpetc8 = secStage[2];
  5593. }
  5594. if ( parseInt(iFind) >= 0) {
  5595. var prcpdd = "";
  5596. var insukind = "";
  5597. if ( objFlag == "child" ) {
  5598. prcpdd = opener.model.getValue ( "/root/init/prcpdd" );
  5599. insukind = opener.model.getValue ( "/root/paminfo/list/insukind");
  5600. } else {
  5601. prcpdd = model.getValue ( "/root/init/prcpdd" );
  5602. insukind = model.getValue ( "/root/paminfo/list/insukind");
  5603. }
  5604. //멀티 search 가능함
  5605. model.makeValue("/root/send/addsetprcp[1]/prcpcd",addprcpcd);
  5606. model.makeValue("/root/send/addsetprcp[1]/prcpdd",prcpdd);
  5607. model.makeValue("/root/send/addsetprcp[1]/insukind",insukind);
  5608. model.makeValue("/root/send/addsetprcp[1]/srchkind","B2");
  5609. if ( submit("TRMMO00207",false)) {
  5610. /*
  5611. **by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청 수정 시작.
  5612. ** 처방코드 : NHC297EMG, 자동발생코드 : FE654303G
  5613. ** 자동발생코드는 돈계산에서 제외되어야 함.
  5614. ** 자동발생코드 처방전달사항 자동 생성=>[HEART-SPECT 핵의학검사용]
  5615. */
  5616. //20090420 마정민 수정 HARDCODE 테이블로 분리
  5617. //if( addprcpcd == "FE654303G"){
  5618. var nd = model.instance1.selectNodes("/root/addsetprcp/prcplist");
  5619. if( nd != null && nd.length > 0) {
  5620. //model.setValue("/root/addsetprcp/prcplist[1]/prcpdelivefact", prcpdelivefact );
  5621. model.setValue("/root/addsetprcp/prcplist[1]/drprcpetc8", drprcpetc8);
  5622. }
  5623. //}
  5624. //by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청 수정 끝
  5625. //serPrcpSrchRow = addPrcpDetl ( objFlag , "root/addsetprcp/prcplist" , strDest , 1 , srchRow, prcpInptFlag );
  5626. //by sonjy 20091031 자동발생 처방 입력 구분 추가
  5627. //SET 처방일 때 약품의 기본 일수는 수가계산법이 어떤 것이든 기본을 1일로 되도록 요청번호:8875
  5628. serPrcpSrchRow = addPrcpDetl ( objFlag , "root/addsetprcp/prcplist" , strDest , 1 , srchRow, "34" );
  5629. if (serPrcpSrchRow != 0 ) srchRow++;
  5630. }
  5631. model.removeNodeset("/root/send/addsetprcp");
  5632. }
  5633. return srchRow;
  5634. }
  5635. /**
  5636. * @desc : 처방 코드 정보를 조회 하는 함수 addPrcpSetValue()에서 값을 셋팅 할때 처방 코드별 참조자료를 셋팅 한다.
  5637. * @param : sPrcpCodes - 처방 편집 화면으로 복사되는 처방 코드
  5638. * @return : 처방화면(SMMO00100) /root/prcpcodeinfo 셋팅
  5639. * @authur : 엄영만 2011. 10. 13
  5640. * @---------------------------------------------------
  5641. */
  5642. function fGetPrcpCodeInfo(sPrcpCodes) {
  5643. var pamInfoNode = "/root/paminfo/list";
  5644. var prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" ); //입력구분
  5645. var prcpdd = model.getValue ( "/root/init/prcpdd" ); //처방일
  5646. var pid = model.getValue ( pamInfoNode + "/pid" );
  5647. var ioflag = model.getValue ( pamInfoNode + "/ioflag" );
  5648. var cretno = model.getValue ( pamInfoNode + "/cretno" );
  5649. var orddeptcd = model.getValue ( pamInfoNode + "/orddeptcd" );
  5650. var orddd = "";
  5651. var orddrid = "";
  5652. //건진일 경우 check추가.
  5653. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ) {
  5654. orddd = model.getValue ( pamInfoNode + "/orddd" );
  5655. orddrid = model.getValue ( pamInfoNode + "/orddrid" );
  5656. } else {
  5657. orddd = model.getValue ( pamInfoNode + "/indd" );
  5658. orddrid = model.getValue ( pamInfoNode + "/medispclid" );
  5659. }
  5660. model.resetInstanceNode ( "/root/send" );
  5661. model.resetInstanceNode ( "/root/prcpcodeinfo" );
  5662. if(!isNull(sPrcpCodes)){
  5663. model.setValue( "/root/send/cond1", sPrcpCodes ); //처방코드
  5664. model.setValue( "/root/send/cond2", prcpdd ); //처방일
  5665. model.setValue( "/root/send/cond3", ioflag ); //외래입원구분
  5666. model.setValue( "/root/send/cond4", pid ); //등록번호
  5667. model.setValue( "/root/send/cond5", orddd ); //진료일자
  5668. model.setValue( "/root/send/cond6", cretno ); //생성번호
  5669. model.setValue( "/root/send/cond7", orddeptcd ); //진료과
  5670. model.setValue( "/root/send/cond8", orddrid ); //진료의
  5671. if(!submit("TRMMO00143",false)){
  5672. // 테스트 메세지 팝업 여부 추후 삭제 해야 함. 엄영만 2011.11.19
  5673. var sChkMsgPopYn = fGetHardCDList("Y", 403, 3); // 403 테스트메세지 사용여부
  5674. if (sChkMsgPopYn == "Y"){
  5675. alert("처방정보 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  5676. }
  5677. }
  5678. }
  5679. }
  5680. /**
  5681. * @desc : 선택진료 여부 선택진료의사를
  5682. * addPrcpSetValue()에서 값을 셋팅 선택진료처방 및 선택진료의사를 셋팅 한다..
  5683. * @param : strSrc => setting할 source node
  5684. : sendRow => setting할 row
  5685. : prcpInptFlag => 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  5686. * @return : 선택진료처방여부, 선택진료의사 셋팅
  5687. * @authur : 엄영만 2011. 11. 08
  5688. * @---------------------------------------------------
  5689. */
  5690. function fSetPrcpSpecValue( strSrc, sendRow, prcpInptFlag ) {
  5691. //2011.01.12 MJM수정. 선택진료 가능처방은 일괄위임일 경우 무조건 선택진료처리.
  5692. //2011.10.01 고시관련 수정 일괄위임의 경우 선택진료 처리.
  5693. //선택진료여부처리는 결정(검사,영상진단) 무조건 선택진료가능항목으로 처리
  5694. var pamInfoNode = "/root/paminfo/list";
  5695. var prcpCodeNode = "/root/prcpcodeinfo/prcpcodelist";
  5696. var choiordflag = "N";
  5697. var orddrid = "";
  5698. var prcpclscd = model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd" ); // 처방종류
  5699. var prcpcd = model.getValue ( strSrc + "[" + sendRow + "]/prcpcd" ); // 처방코드
  5700. var drugmthdspccd = model.getValue ( strSrc + "[" + sendRow + "]/drugmthdspccd" ); // 처방 검체코드(병리 처방은 검체코드가 있을때만 선택진료 설정함.)
  5701. var prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" ); // 처방입력구분(외래, 입원, 응급..)
  5702. var todayspcdrid = ""; // 오늘 선택진료의
  5703. var allspcdrid = ""; // 가능 선택진료의
  5704. var prespecdrid = ""; // 기존 선택진료의
  5705. var prcpSpecdrid = "";
  5706. var chkSpecdrid = "";
  5707. // 응급실 선택진료적용 여부 추후 삭제 필요.
  5708. var sChkErSpecLogicYn = fGetHardCDList("Y", 90001, 3); // 90001 처방 관련 신규로직 적용여부
  5709. if (model.getValue ( strSrc + "[" + sendRow + "]/tempcol24" ) == "Y" ) { //선택진료가능처방
  5710. if (sChkErSpecLogicYn == "Y" && prcpgenrflag == "E") { // 응급실에서 발행 하는 처방일경우 선택진료 자동 셋팅 하지 않도록 수정. 심사실 윤순길팀장님 요청. 엄영만 2011.11.23
  5711. if ( model.getValue ( pamInfoNode + "/specordtype" ) == "B" // 일괄선택진료 위임 일 경우
  5712. || model.getValue ( prcpCodeNode + "[prcpcd='" + prcpcd + "']/spcspifyn" ) == "Y" ) {// 부분선택진료 위임 일 경우(처방 항목에 위임)
  5713. choiordflag = "Y";
  5714. model.setValue ( strSrc + "[" + sendRow + "]/choiordflag", "Y" );
  5715. }
  5716. } else { // 응급실에서 발행 하는 처방일경우
  5717. if ( model.getValue ( pamInfoNode + "/specordyn" ) == "Y" // 선택진료의사(교수님 진료)
  5718. || model.getValue ( pamInfoNode + "/specordtype" ) == "B" // 일괄선택진료 위임 일 경우
  5719. || model.getValue ( prcpCodeNode + "[prcpcd='" + prcpcd + "']/spcspifyn" ) == "Y" // 부분선택진료 위임 일 경우(처방 항목에 위임)
  5720. || model.getValue ( prcpCodeNode + "[prcpcd='" + prcpcd + "']/speccls" ) == "02" // 선택진료 분류가 검사인것
  5721. || model.getValue ( prcpCodeNode + "[prcpcd='" + prcpcd + "']/speccls" ) == "03" // 선택진료 분류가 영상진단인것
  5722. || (model.getValue ( prcpCodeNode + "[prcpcd='" + prcpcd + "']/prcpclscd" ) == "C6" && model.getValue ( pamInfoNode + "/insukind" ) == "11" ) // 건강보험이면서 처방분류가 핵의학체내 일 경우는 무조건 선택진료가 발생하도록 수정 (의사가 체크 해제 할 수 있음): 2011. 02.07 김영학
  5723. || (model.getValue ( prcpCodeNode + "[prcpcd='" + prcpcd + "']/prcpclscd" ) == "D2" && model.getValue ( pamInfoNode + "/insukind" ) == "11" ) // 건강보험이면서 처방분류가 병리 처방은 선택진료 가능 처방은 무조건 선택진료로 한다. 김영학
  5724. || (prcpInptFlag == '02' && model.getValue ( strSrc + "[" + sendRow + "]/choiordflag") == "Y" ) ) { //약속처방이고 선택진료 체크 되어 있는경우
  5725. choiordflag = "Y";
  5726. model.setValue ( strSrc + "[" + sendRow + "]/choiordflag", "Y" );
  5727. }
  5728. }
  5729. }
  5730. if ( choiordflag == "Y" ) {
  5731. if ( prcpgenrflag == "O" ) {
  5732. orddrid = model.getValue ( "/root/paminfo/list/orddrid" );
  5733. } else {
  5734. orddrid = model.getValue ( "/root/paminfo/list/medispclid" );
  5735. }
  5736. fGetHardCDList("N", 402, 0 , "/root/hidden/testcheckspcdrlist"); // 402 신규로직 적용대상 2011.11.19 엄영만 (추후 관련 로직 삭제해야함.)
  5737. if ( model.getValue ( prcpCodeNode + "[prcpcd='" + prcpcd + "']/newlogicyn" ) == "Y"
  5738. || (model.getValue ( prcpCodeNode + "[prcpcd='" + prcpcd + "']/newlogicyn" ) == "N" && !isNull(model.getValue("/root/hidden/testcheckspcdrlist/hardcd[hardcd='"+orddrid+"']/hardcd" ))) ) { // 신규로직 적용여부
  5739. prespecdrid = model.getValue ( strSrc + "[" + sendRow + "]/specdrid"); // 기존 선택진료의
  5740. if (prespecdrid == "-") {
  5741. prespecdrid = "";
  5742. }
  5743. if (prcpclscd == "D2" && (!isNull(drugmthdspccd) || drugmthdspccd != "-")) { // 병리처방은 검체 코드로 조회 한다.
  5744. var prcpdd = model.getValue ( "/root/init/prcpdd" );
  5745. model.resetInstanceNode ( "/root/send" );
  5746. model.resetInstanceNode ( "/root/spcdrinfo" );
  5747. model.setValue( "/root/send/cond1", "G" ); //코드구분(S 수가코드, G 검체)
  5748. model.setValue( "/root/send/cond2", prcpdd ); //처방일
  5749. model.setValue( "/root/send/cond3", drugmthdspccd ); //검체코드
  5750. if(!submit("TRMMO00144",false)){
  5751. // 테스트 메세지 팝업 여부 추후 삭제 해야 함. 엄영만 2011.11.19
  5752. var sChkMsgPopYn = fGetHardCDList("Y", 403, 3); // 403 테스트메세지 사용여부
  5753. if (sChkMsgPopYn == "Y"){
  5754. alert("병리검체 선택진료의사 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  5755. }
  5756. }
  5757. todayspcdrid = model.getValue ( "/root/spcdrinfo/info/todayspcdrid" ); // 오늘 선택진료의
  5758. allspcdrid = model.getValue ( "/root/spcdrinfo/info/allspcdrid" ); // 가능 선택진료의
  5759. } else { // 병리처방 이외에는 처방정보에서 조회한 수가코드로 조회 한다.
  5760. todayspcdrid = model.getValue ( prcpCodeNode + "[prcpcd='" + prcpcd + "']/todayspcdrid" ); // 오늘 선택진료의
  5761. allspcdrid = model.getValue ( prcpCodeNode + "[prcpcd='" + prcpcd + "']/allspcdrid" ); // 가능 선택진료의
  5762. }
  5763. if( prcpInptFlag == '02' && !isNull(prespecdrid) && isSearchString(allspcdrid, prespecdrid)) { // 약속처방 선택의가 가능선택의일 경우 약속처방 선택의 설정
  5764. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", prespecdrid);
  5765. } else if (isSearchString(allspcdrid, orddrid) ){ // 가능선택의에 진료의가 포함 될 경우
  5766. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", orddrid);
  5767. } else {
  5768. switch(todayspcdrid) {
  5769. case "NO_DATA_FOUND": // 오늘 선택진료의사가 없는경우
  5770. if ( allspcdrid == "NO_DATA_FOUND" ) { // 가능한 선택의가 없을경우
  5771. if ( prcpInptFlag == '02' && !isNull(prespecdrid) ) { // 약속처방의사가 있으면
  5772. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", prespecdrid);
  5773. } else if ( model.getValue ( pamInfoNode + "/specordyn" ) == "Y" ) { // 교수진료이고, 시행부서가 없거나 진료과랑 같으면 진료의로 설정
  5774. if ( model.getValue ( pamInfoNode + "/orddeptcd") == model.getValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd")
  5775. || model.getValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd") == ""
  5776. || model.getValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd") == "-") {
  5777. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", orddrid ); // 진료의를 선택의로 설정
  5778. } else {
  5779. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  5780. }
  5781. } else {
  5782. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  5783. }
  5784. } else if (isSearchString(allspcdrid, ",")) { // 가능의사가 2명 이상일경우
  5785. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  5786. } else if (allspcdrid == "ERROR") { // 가능의사 정보 조회시 에러
  5787. alert("선택진료 가능의사 정보 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  5788. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  5789. } else { // 가능의사가 1명일 경우
  5790. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", allspcdrid); // 가능의사 셋팅
  5791. }
  5792. break;
  5793. case "TOO_MANY_ROWS": // 오늘 선택진료의사가 2명이상인경우
  5794. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  5795. break;
  5796. case "ERROR": // 오늘 선택진료의사정보를 가져오는중 에러
  5797. alert("오늘 선택진료 의사정보 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  5798. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  5799. break;
  5800. default: // 오늘 선택진료의사가 1명인경우
  5801. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", todayspcdrid); // 오늘 선택진료의 설정
  5802. break;
  5803. }
  5804. }
  5805. } else { // 선택진료의사 설정 기존 로직 추후 삭제 필요.
  5806. // 처방복사시에 선택진료의에 대한 기본값이 없을때만 복사하도록 프로그램 수정 : 2011. 01. 30
  5807. // 선택진료의값이 null 일 경우에
  5808. if (model.getValue ( strSrc + "[" + sendRow + "]/specdrid") == "" || model.getValue ( strSrc + "[" + sendRow + "]/specdrid") == "-") {
  5809. if ( model.getValue ("/root/paminfo/list/orddeptcd") == model.getValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd")
  5810. || model.getValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd") == ""
  5811. || model.getValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd") == "-") {
  5812. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", orddrid );
  5813. }
  5814. }
  5815. //2011.01.27 선택진료처방중 핵의학체내 처방은 선택진료 관련하여 특정인으로 자동 셋팅한다. - by 김영학
  5816. // 홀수일은 안병철 짝수일은 이재태 교수님으로 셋팅한다.
  5817. // 하드코드 테이블에 등록된 값으로 설정하게 하고 해당일을 하드코드의 노드수로 나눠서 값을 구하도록 한다.
  5818. if (model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd") == "C6") { // 핵의학 체외일 경우에는 자동으로 의사를 셋팅해준다.
  5819. var date = getCurrentDate() ;
  5820. var day = date.substr(7, 1);
  5821. var cnts = getNodesetCount("/root/hidden/c6specdrlist/hardcd");
  5822. var chkDay = day % cnts;
  5823. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", model.getValue("/root/hidden/c6specdrlist/hardcd[cdseqno= '"+ chkDay +"']/hardcd"));
  5824. }
  5825. // 영상의학과는 선택진료의사를 처방코드에 따라 자동매핑한다.
  5826. if (model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd") == "C2") {
  5827. prcpSpecdrid = model.getValue ( strSrc + "[" + sendRow + "]/specdrid");
  5828. var specprcpdrid1 = model.getValue("/root/hidden/specprcpdrinfo/hardcd[hardcd= '"+ prcpcd +"']/cdseqno");
  5829. var specprcpdrid2 = model.getValue("/root/hidden/specprcpdrinfo/hardcd[hardcd= '"+ prcpcd +"']/hardcdnm");
  5830. if (prcpSpecdrid == specprcpdrid1 || prcpSpecdrid == specprcpdrid2) {
  5831. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", prcpSpecdrid );
  5832. } else {
  5833. if(specprcpdrid1 != null && specprcpdrid1 != ""&& specprcpdrid1 != "0") {
  5834. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", specprcpdrid1);
  5835. }
  5836. }
  5837. }
  5838. // 병리 처방은 선택진료의를 자동배정한다.
  5839. if (model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd") == "D2") {
  5840. var sOrddeptcd = model.getValue("/root/paminfo/list/orddeptcd");
  5841. var sCentcd = model.getValue("/root/paminfo/list/centcd");
  5842. var sOrdSpecdrid = model.getValue("/root/hidden/d2specdrlist/hardcd[hardcd= '"+ sOrddeptcd +"']/hardcdnm");
  5843. var sCentSpecdrid = model.getValue("/root/hidden/d2specdrlist/hardcd[hardcd= '"+ sCentcd +"']/hardcdnm");
  5844. if (sOrdSpecdrid != null && sOrdSpecdrid != "") {
  5845. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", sOrdSpecdrid);
  5846. }
  5847. if (sCentSpecdrid != null && sCentSpecdrid != "" & sCentSpecdrid != "-") {
  5848. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", sCentSpecdrid);
  5849. }
  5850. }
  5851. // 진검처방 선택진료 의사를 자동배정한다.
  5852. if (model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd") == "B2" || model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd") == "B4" || model.getValue ( strSrc + "[" + sendRow + "]/prcpclscd") == "B6") {
  5853. var specprcpdrid = model.getValue("/root/hidden/b2specdrlist/hardcd[hardcd= '"+ prcpcd +"']/hardcdnm");
  5854. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", specprcpdrid);
  5855. }
  5856. }
  5857. prcpSpecdrid = model.getValue ( strSrc + "[" + sendRow + "]/specdrid")
  5858. chkSpecdrid = model.getValue("/root/init/specdrinfo/usercombo[userid = '" + prcpSpecdrid + "']/userid");
  5859. if ( chkSpecdrid == "" || chkSpecdrid == null) {
  5860. model.setValue ( strSrc + "[" + sendRow + "]/choiordflag", "" );
  5861. fChgChoiDr ( "auto", sendRow );
  5862. }
  5863. } else {
  5864. model.setValue ( strSrc + "[" + sendRow + "]/choiordflag", "N" );
  5865. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", "-" );
  5866. }
  5867. //이은영 과장 요청 마취의 setting by sonjy 20081010 start
  5868. if ( model.getValue ( "/root/anst/paramyn" ) == "Y" ) {
  5869. if ( prcpclscd == "I2" || prcpclscd == "I4" ) {
  5870. //마취의 ID가 있을 경우 만 setting
  5871. if( !isNull( model.getValue ( "/root/anst/anst_drid") ) ){
  5872. //특진처방 이나 의사가 특진의사가 아닌경우 일반진료처방으로 설정
  5873. if( choiordflag == "Y" ) {
  5874. if( model.getValue ( "/root/anst/anst_specordflag") != "A" ){
  5875. model.setValue ( strSrc + "[" + sendRow + "]/choiordflag", "N" );
  5876. }
  5877. }
  5878. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", model.getValue ( "/root/anst/anst_drid") ) ;
  5879. }
  5880. }
  5881. }
  5882. //마취의 setting by sonjy 20081010 end
  5883. //20110517_김영학 /선택진료 처방이지만 선택진료의가 비선택진료의 일 경우에는 선택진료여부를 기본값으로 변경한다.
  5884. // 선택진료 체크가 되어 있으면서 의사가 비선택의사 일 경우에는 선택진료 여부를 -으로 처리한다.
  5885. var sysMessageobj = getViewer("sysMessage");
  5886. if (choiordflag == "Y" ) {
  5887. var chkChoiSpcldrid = model.getValue ( strSrc + "[" + sendRow + "]/specdrid" );
  5888. var choiSpclDrid = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/usercombo[userid ='" + chkChoiSpcldrid + "']/userid");
  5889. if ( choiSpclDrid == null) {
  5890. model.setValue ( strSrc + "[" + sendRow + "]/choiordflag", "N" );
  5891. model.setValue ( strSrc + "[" + sendRow + "]/specdrid", "-" );
  5892. }
  5893. }
  5894. //20110517 선택진료 처방이지만 선택진료의가 비선택진료의 일 경우에는 선택진료여부를 기본값으로 변경한다. END
  5895. }
  5896. /**
  5897. * @desc : 서브밋 중인지 체크 함수
  5898. * @param :
  5899. * @return : 서브밋 중이면 true, 아니면 false
  5900. * @authur : 엄영만 2011. 11. 16
  5901. * @---------------------------------------------------
  5902. */
  5903. function fIsOnSubmit(){
  5904. if(!isNull(gvOnSubmit)){
  5905. return gvOnSubmit;
  5906. } else {
  5907. return false;
  5908. }
  5909. }
  5910. /**
  5911. * @desc : 처방화면 검색 Row 리턴 함수
  5912. * @param :
  5913. * @return : 처방화면의 검색 Row를 리턴 한다.
  5914. * @authur : 엄영만 2012. 03. 26
  5915. * @---------------------------------------------------
  5916. */
  5917. function fGetPrcpSrchRow(objFlag, strPrcpPath){
  5918. var srchRow = 0;
  5919. var prcpNodeList;
  5920. if ( objFlag == "child") {
  5921. prcpNodeList = opener.model.instances(0).selectNodes( strPrcpPath + "/prcplist" ); //dest Node에서 prcplist는 약속으로 하자.
  5922. for ( i = destNodeList.length; i>0; i-- ){
  5923. if(opener.model.getValue ( strPrcpPath + "/prcplist[" + i + "]" ) == "S") {
  5924. srchRow = i;
  5925. break;
  5926. }
  5927. }
  5928. } else {
  5929. prcpNodeList = model.instances(0).selectNodes( strPrcpPath + "/prcplist" );
  5930. for ( i = destNodeList.length; i>0; i-- ){
  5931. if(model.getValue ( strPrcpPath + "/prcplist[" + i + "]" ) == "S") {
  5932. srchRow = i;
  5933. break;
  5934. }
  5935. }
  5936. }
  5937. if(srchRow < 1) {
  5938. if(prcpNodeList.length == 0)
  5939. srchRow = 1;
  5940. else
  5941. srchRow = prcpNodeList.length+1;
  5942. }
  5943. return srchRow;
  5944. }
  5945. /**
  5946. * @desc : 전처방검색
  5947. * @param : pid: 환자ID
  5948. : orddd: 외래:진료일, 입원:입원일
  5949. : prcpdd: 처방일
  5950. : bfflag: 전처방 where 조건 구분자
  5951. : initflag: 최초구분
  5952. : orddrid: 의사ID,외래에서만 필요하다.
  5953. : todd
  5954. : prcpgenrflag: 외래입원구분
  5955. : orddeptcd: 부서코드
  5956. : cretno: 원무생성번호
  5957. : ioflag: 외래, 입원, 응급 구분
  5958. : refreshFlag: refresh 여부
  5959. : followup: 퇴원후 외래처방일과 동일한 처방일이거나 initsrch 와 동일한 날짜가 있을 경우 followdd를 입력한다.
  5960. : bfprcpviewflag : 전처방 조회 조건 개인별 설정기능 추가 by sonjy 20091120
  5961. * @return : void
  5962. * @authur : 마정민 2007. 6. 21
  5963. */
  5964. function fBfPrcpSrchCom_New ( pid, orddd, prcpdd, bfflag, initflag, orddrid, todd, prcpgenrflag, orddeptcd, cretno, trnm, refreshFlag, prcpauthflag, followup , bfprcpviewflag) {
  5965. if ( isNull(trnm)) {
  5966. trnm = "TRMMO00100";
  5967. }
  5968. if ( isNull(refreshFlag)) {
  5969. refreshFlag = false;
  5970. }
  5971. if ( isNull(prcpauthflag)) {
  5972. prcpauthflag = "0";
  5973. }
  5974. var curprcpdd = opener.model.getValue ( "/root/init/prcpdd" );
  5975. if (isNull(curprcpdd)) {
  5976. curprcpdd = model.getValue ( "/root/init/prcpdd" );
  5977. if (isNull(curprcpdd)){
  5978. curprcpdd = getCurrentDate();
  5979. }
  5980. }
  5981. var oprsrvno = "";
  5982. if (!isNull(opener.model.getValue ( "/root/operation/list/oprsrvno"))) {
  5983. orddd = opener.model.getValue ( "/root/operation/list/oprsrvno");
  5984. if (opener.model.getValue ( "/root/patflag/list/prcpgenrflag" ) == "O"){
  5985. prcpgenrflag = "OUTOP";
  5986. } else {
  5987. prcpgenrflag = "OP";
  5988. }
  5989. } else if (!isNull(model.getValue ( "/root/operation/list/oprsrvno"))) {
  5990. orddd = model.getValue ( "/root/operation/list/oprsrvno");
  5991. if (model.getValue ( "/root/patflag/list/prcpgenrflag" ) == "O"){
  5992. prcpgenrflag = "OUTOP";
  5993. } else {
  5994. prcpgenrflag = "OP";
  5995. }
  5996. }
  5997. model.setValue ( "/root/send/cond1", pid); //환자ID
  5998. model.setValue ( "/root/send/cond2", orddd ); //외래:진료일, 입원:입원일
  5999. model.setValue ( "/root/send/cond3", prcpauthflag ); //처방권한 구분
  6000. model.setValue ( "/root/send/cond4", prcpdd ); //처방일자
  6001. model.setValue ( "/root/send/cond5", bfflag ); //전처방 where 조건 구분자
  6002. model.setValue ( "/root/send/cond6", initflag ); //최초구분
  6003. model.setValue ( "/root/send/cond7", orddrid); //의사ID,외래에서만 필요하다.
  6004. model.setValue ( "/root/send/cond8", todd); //todd
  6005. model.setValue ( "/root/send/cond9", prcpgenrflag ); //외래입원구분
  6006. model.setValue ( "/root/send/cond10", orddeptcd ); //부서코드
  6007. model.setValue ( "/root/send/cond11", cretno ); //생성번호
  6008. model.makeValue( "/root/send/cond14", curprcpdd );
  6009. if (!isNull(followup)){
  6010. model.makeValue( "/root/send/cond12", "followup" ); //외래follow up
  6011. }
  6012. var insukind = opener.model.getValue ( "/root/paminfo/list/insukind");
  6013. if (isNull(insukind)) insukind = model.getValue ( "/root/paminfo/list/insukind");
  6014. if (!isNull(insukind)){
  6015. model.makeValue( "/root/send/cond13", insukind ); //외래follow up
  6016. }
  6017. model.setValue ( "/root/send/cond99", "getBfPrcpSrchInfo" );//검색구분
  6018. opener.ivw_prcp3.src = "SMMMO02100_전회처방.xrw";
  6019. //by sonjy 전처방 조회모드 설정 20091120
  6020. if( bfflag == "bfprcp" || bfflag == "addprcp" ){
  6021. if(!isNull(bfprcpviewflag) ) model.makeValue( "/root/send/bfprcpviewflag",bfprcpviewflag);
  6022. }
  6023. if ( refreshFlag == false ) {
  6024. copyNodeset("root/prcpsrch/prcplist", "root/savertninfo/prcplist", "replace", opener.ivw_prcp3.model, model)
  6025. } else {
  6026. copyNodeset("root/prcpsrch/prcplist", "root/savertninfo/prcplist", "replace", opener.ivw_prcp3.model, model)
  6027. }
  6028. //CP일 경우, viewer안의 컨트롤 height 사이즈를 모두 조정해야 함 (2008.08.28 JJE)
  6029. if ( opener.model.getValue ( "/root/cp" ) == "Y" ) {
  6030. opener.window.javascript.fResizeControls();
  6031. }
  6032. }
  6033. /**
  6034. * @desc : 인증 암호화 전 데이터 생성
  6035. * @param : sFlag: 인증정보 구분 ("1":처방정보, "2":진단정보)
  6036. : sRegpath : 접수정보 인스턴스노드 패스
  6037. : sSrcPath : 정보 인스턴스노드 패스
  6038. * @return : void
  6039. * @authur : 엄영만 2013. 05. 29
  6040. */
  6041. function getSignBfConts (sFlag, sRegpath, sSrcPath) {
  6042. var sRtn = "";
  6043. var sRegConts = ""; // 환자 등록정보
  6044. var sSrcConts = ""; // 처방및 진단 암호화전 데이터
  6045. var regNodeList = model.instances(0).selectNodes(sRegpath);
  6046. var srcNodeList = model.instances(0).selectNodes(sSrcPath);
  6047. if ( !regNodeList.length > 0 || !srcNodeList.length > 0) { return sRtn; }
  6048. var sOrdType = model.getValue( sRegpath + "/ioflag");
  6049. sRegConts = "$환자진료정보";
  6050. sRegConts = sRegConts + "@등록번호:" + model.getValue( sRegpath + "/pid");
  6051. sRegConts = sRegConts + "@이름:" + model.getValue( sRegpath + "/hngnm");
  6052. sRegConts = sRegConts + "@성별/나이:" + model.getValue( sRegpath + "/sex") + "/" + model.getValue( sRegpath + "/age");
  6053. sRegConts = sRegConts + "@진료과:" + model.getValue( sRegpath + "/orddeptnm") + "(" + model.getValue( sRegpath + "/orddeptcd") + ")";
  6054. if ("O" == sOrdType || "S" == sOrdType) { // 외래
  6055. sRegConts = sRegConts + "@진료의:" + model.getValue( sRegpath + "/orddrnm") + "(" + model.getValue( sRegpath + "/orddrid") + ")";
  6056. sRegConts = sRegConts + "@진료일자:" + model.getValue( sRegpath + "/orddd").toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일");
  6057. } else { // 입원
  6058. sRegConts = sRegConts + "@진료의:" + model.getValue( sRegpath + "/orddrnm") + "(" + model.getValue( sRegpath + "/medispclid") + ")";
  6059. sRegConts = sRegConts + "@입원일자:" + model.getValue( sRegpath + "/indd").toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일");
  6060. }
  6061. switch (sFlag) {
  6062. case "1": // 처방정보
  6063. var sStatus = "";
  6064. var sPrcpflag = "";
  6065. var sPrcpclscd = "";
  6066. var sPrcpdd = "";
  6067. sSrcConts = "$환자처방정보";
  6068. for(var i = 1; i <= srcNodeList.length; i++) {
  6069. sStatus = model.getValue( sSrcPath + "[" + i + "]/status");
  6070. sPrcpflag = model.getValue( sSrcPath + "[" + i + "]/prcpflag");
  6071. sPrcpclscd = model.getValue( sSrcPath + "[" + i + "]/prcpclscd");
  6072. sPrcpdd = model.getValue( sSrcPath + "[" + i + "]/prcppkspec").substring(0,8);
  6073. // 20100210 한재상 수정 - 사망환자 사망등록이후 처방시 처방일자를 사망일자로 변경
  6074. if ("I" == sOrdType || "E" == sOrdType || "D" == sOrdType) {
  6075. if ("I" == sStatus || "-" == sStatus || "U" == sStatus) {
  6076. var sDethdd = model.getValue( sRegpath + "/dethdt"); // 사망일자 설정
  6077. if(sDethdd.length >= 8 && sPrcpdd > sDethdd ) {
  6078. sPrcpdd = sDethdd;
  6079. }
  6080. }
  6081. }
  6082. if ("I" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; }
  6083. else if ("-" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; } // 임시저장후 인증저장
  6084. else if ("U" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; } // 임시저장후 수정 인증저장
  6085. else if ("C" == sStatus) { sSrcConts = sSrcConts + "@처리구분:DC"; }
  6086. else if ("S" == sStatus) {
  6087. if ("O" == model.getValue( sSrcPath + "[" + i + "]/prcphistcd")) { sSrcConts = sSrcConts + "@처리구분:후인증"; }
  6088. else if ("D" == model.getValue( sSrcPath + "[" + i + "]/prcphistcd")) { sSrcConts = sSrcConts + "@처리구분:DC 후인증"; }
  6089. } else { continue; }
  6090. if ("1" == sPrcpflag) { sSrcConts = sSrcConts + "@처방구분:수가"; }
  6091. else if ("2" == sPrcpflag) { sSrcConts = sSrcConts + "@처방구분:지시"; }
  6092. else if ("3" == sPrcpflag) { sSrcConts = sSrcConts + "@처방구분:식사"; }
  6093. else { continue; }
  6094. sSrcConts = sSrcConts + "@처방일자:" + sPrcpdd.toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일");
  6095. sSrcConts = sSrcConts + "@처방코드:" + model.getValue( sSrcPath + "[" + i + "]/prcpcd");
  6096. sSrcConts = sSrcConts + "@처방명:" + model.getValue( sSrcPath + "[" + i + "]/prcpnm");
  6097. sSrcConts = sSrcConts + "@처방내역:" + model.getValue( sSrcPath + "[" + i + "]/prcpqty") + " * #" + model.getValue( sSrcPath + "[" + i + "]/prcptims") + " * " + model.getValue( sSrcPath + "[" + i + "]/prcpdayno");
  6098. if ("1" == sPrcpflag && "A" == sPrcpclscd.substring(0,1)) { // 복용방법, 비율처방
  6099. sSrcConts = sSrcConts + "@복용방법:" + model.getValue( sSrcPath + "[" + i + "]/drugmthdspccdnm") + "(" + model.getValue( sSrcPath + "[" + i + "]/drugmthdspccd") + ")";
  6100. if ( "-" != model.getValue( sSrcPath + "[" + i + "]/drugrateqty")) {
  6101. sSrcConts = sSrcConts + "@투여비율적용:" + model.getValue( sSrcPath + "[" + i + "]/drugrateqty").replaceAll("\\|", ",");
  6102. }
  6103. }
  6104. if ("1" == sPrcpflag && ( "B" == sPrcpclscd.substring(0,1) || "D2" == sPrcpclscd)) { // 진단검사, 병리 검체명
  6105. sSrcConts = sSrcConts + "@검체:" + model.getValue( sSrcPath + "[" + i + "]/drugmthdspccdnm") + "(" + model.getValue( sSrcPath + "[" + i + "]/drugmthdspccd") + ")";
  6106. }
  6107. sSrcConts = sSrcConts + "@전달사항:" + model.getValue( sSrcPath + "[" + i + "]/prcpdelivefact");
  6108. if ("1" == sPrcpflag && "C2" == sPrcpclscd) { // 임상소견
  6109. sSrcConts = sSrcConts + "@임상소견:" + model.getValue( sSrcPath + "[" + i + "]/clinccmtcnts")
  6110. }
  6111. if ("I" == sStatus || "-" == sStatus || "U" == sStatus) {
  6112. sSrcConts = sSrcConts + "@등록일시:" + new Date().getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  6113. sSrcConts = sSrcConts + "@등록자:" + getUserInfo("usernm") + "(" + getUserInfo("userid") + ")";
  6114. } else {
  6115. sSrcConts = sSrcConts + "@수정일시:" + new Date().getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  6116. sSrcConts = sSrcConts + "@수정자:" + getUserInfo("usernm") + "(" + getUserInfo("userid") + ")";
  6117. }
  6118. }
  6119. break;
  6120. case "2": // 진단정보
  6121. var sStatus = "";
  6122. var sDiagKindcd = "";
  6123. var sDiagKindcdFlag = "";
  6124. var sDiagHistCd = "";
  6125. sSrcConts = "$환자진단정보";
  6126. for(var i = 1; i <= srcNodeList.length; i++) {
  6127. sStatus = model.getValue( sSrcPath + "[" + i + "]/status");
  6128. sDiagKindcd = model.getValue( sSrcPath + "[" + i + "]/diagkindcd");
  6129. sDiagKindcdFlag = model.getValue( sSrcPath + "[" + i + "]/diagkindcdflag");
  6130. sDiagHistCd = model.getValue( sSrcPath + "[" + i + "]/diaghistcd");
  6131. if ("I" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; }
  6132. else if ("T" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; } // 임시저장후 인증저장
  6133. else if ("U" == sStatus) {
  6134. if ("T" == sDiagHistCd) { sSrcConts = sSrcConts + "@처리구분:신규"; // 임시저장후 수정 인증저장
  6135. } else { sSrcConts = sSrcConts + "@처리구분:수정"; }
  6136. }
  6137. else if ("D" == sStatus) { sSrcConts = sSrcConts + "@처리구분:삭제"; }
  6138. else if ("S" == sStatus) { continue } // 검색
  6139. else { continue; }
  6140. if ("C" == sDiagKindcd) { sSrcConts = sSrcConts + "@종류:확정"; }
  6141. else if ("R" == sDiagKindcd) { sSrcConts = sSrcConts + "@종류:R/O"; }
  6142. else { continue; }
  6143. if ("M" == sDiagKindcdFlag) { sSrcConts = sSrcConts + "@주부구분:주"; }
  6144. else if("S" == sDiagKindcdFlag) { sSrcConts = sSrcConts + "@주부구분:부"; }
  6145. else { continue; }
  6146. sSrcConts = sSrcConts + "@진단코드:" + model.getValue( sSrcPath + "[" + i + "]/diagcd");
  6147. sSrcConts = sSrcConts + "@진단영문명:" + model.getValue( sSrcPath + "[" + i + "]/diagengnm");
  6148. sSrcConts = sSrcConts + "@진단한글명:" + model.getValue( sSrcPath + "[" + i + "]/diaghngnm");
  6149. if ("I" == sStatus || "T" == sStatus || ("U" == sStatus && "T" == sDiagHistCd)) {
  6150. sSrcConts = sSrcConts + "@등록일시:" + new Date().getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  6151. sSrcConts = sSrcConts + "@등록자:" + getUserInfo("usernm") + "(" + getUserInfo("userid") + ")";
  6152. } else {
  6153. sSrcConts = sSrcConts + "@수정일시:" + new Date().getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  6154. sSrcConts = sSrcConts + "@수정자:" + getUserInfo("usernm") + "(" + getUserInfo("userid") + ")";
  6155. }
  6156. }
  6157. break;
  6158. default:
  6159. break;
  6160. }
  6161. if( sSrcConts != "$환자처방정보" && sSrcConts != "$환자진단정보" ) { // 저장할 처방 또는 진단정보가 있을경우만 리턴
  6162. sRtn = sRegConts + sSrcConts;
  6163. }
  6164. return sRtn;
  6165. }